深圳幻海软件技术有限公司 欢迎您!

  • 面试回答 CopyOnWrite 的三重境界,1%的人能答到最后

    今天聊一个非常硬核的技术知识,给大家分析一下CopyOnWrite思想是什么,以及在Java并发包中的具体体现,包括在Kafka内核源码中是如何运用这个思想来优化并发性能的。这个CopyOnWrite在面试的时候,很可能成为面试官的一个杀手锏把候选人给一击必杀,也很有可能成为候选人拿下Offer的独

  • 通俗易懂读写锁ReentrantReadWriteLock的使用

    ​概述ReentrantReadWriteLock不知道大家熟悉吗?其实在实际的项目中用的比较少,反正我所在的项目没有用到过。ReentrantReadWriteLock称为读写锁,它提供一个读锁,支持多个线程共享同一把锁。它也提供了一把写锁,是独占锁,和其他读锁或者写锁互斥,表明只有一个线程能持有

  • 再续如何防止接口重复提交?

    ​一、摘要在上一篇文章中,我们详细的介绍了对于下单流量不算高的系统,可以通过​请求唯一ID​+​数据表增加唯一索引约束​这种方案来实现防止接口重复提交!随着业务的快速增长,每一秒的下单请求次数,可能从几十上升到几百甚至几千。面对这种下单流量越来越高的场景,此时数据库的访问压力会急剧上升,上面这套方案

  • 关于多线程同步的一切:lock-free/wait-free

    锁是操作系统提供的一种同步原语,通过在访问共享资源前加锁,结束访问共享资源后解锁,让任何时刻只有一个线程访问共享,本质是做串行化。程序对共享资源的访问任务,一般包括三步骤,读原值,修改值,将新值写回,用锁同步的话,就是在确保这三个步骤,不会被打断,访问共享资源的临近代码区只有一个线程在同时运行,第一

  • Python包管理工具之Pipenv

    ​前言传统的成熟方案中,我们为了避免包版本的管理混乱,通常我们是依赖于当前的Python版本创建一个虚拟环境,并在虚拟环境中使用pip进行包管理。现在有一个好用的工具叫pipenv来帮助我们更方便的管理包。一、pipenv是什么以及它有什么作用?pipenv是一个Python的包管理工具。它是req

  • 面试突击:公平锁和非公平锁有什么区别?

    作者|磊哥来源|Java面试真题解析(ID:aimianshi666)转载请联系授权(微信ID:GG_Stone)从公平的角度来说,Java中的锁总共可分为两类:公平锁和非公平锁。但公平锁和非公平锁有哪些区别?孰优孰劣呢?在Java中的应用场景又有哪些呢?接下来我们一起来看。正文公平锁:每个线程获取

  • 四个Java死锁检测工具

    线程竞争的资源可以是:锁、网络连接、通知事件,磁盘、带宽,以及一切可以被称作“资源”的东西。在程序执行的时候,难免会遇到死锁的情况。下面介绍一下如何排查Java中的死锁线程。先来个死锁的例子:复制importjava.util.concurrent.TimeUnit;importjava.util.

  • 分布式锁常见的解决方案,你知道几种

    前言1、什么是分布式锁要介绍分布式锁,首先要知道与分布式锁相对应的是线程锁、进程锁。1.线程锁主要用来给方法、代码块加锁。当某个方法或代码使用锁,在同一时刻仅有一个线程执行该方法或该代码段。线程锁只在同一JVM中有效果,因为线程锁的实现在根本上是依靠线程之间共享内存实现的,比如Synchronize

  • 不懂什么是锁?看看这篇你就明白了

     Java锁分类Java中的锁有很多,可以按照不同的功能、种类进行分类,下面是我对Java中一些常用锁的分类,包括一些基本的概述。 从线程是否需要对资源加锁可以分为悲观锁和乐观锁从资源已被锁定,线程是否阻塞可以分为自旋锁从多个线程并发访问资源,也就是Synchronized可以分

  • 不懂什么是锁?看看这篇你就明白了

     Java锁分类Java中的锁有很多,可以按照不同的功能、种类进行分类,下面是我对Java中一些常用锁的分类,包括一些基本的概述: 从线程是否需要对资源加锁可以分为悲观锁和乐观锁 从资源已被锁定,线程是否阻塞可以分为自旋锁 从多个线程并发访问资源,也就是Syn

  • 分布式锁用Redis还是Zookeeper?

    为什么用分布式锁?在讨论这个问题之前,我们先来看一个业务场景。图片来自Pexels为什么用分布式锁?系统A是一个电商系统,目前是一台机器部署,系统中有一个用户下订单的接口,但是用户下订单之前一定要去检查一下库存,确保库存足够了才会给用户下单。由于系统有一定的并发,所以会预先将商品的库存保存在Redi

  • 事务系统实现模式很简单?你确定没忽视这些差异?

     本文试图讨论这几个问题:MySQL的redolog和binlog为什么要用XA?MongoDB的oplog是按照什么顺序复制?Raft真的只能串行Apply吗?数据库的复制和事务是完全独立的两回事?为什么MySQL不早点做一个Raft插件,直接用Raft实现高可用?本文旨在阐述Fault

推荐阅读