明天你会感谢今天奋力拼搏的你。ヾ(o◕∀◕)ノヾ
一、阻塞与非阻塞、同步与异步 阻塞与非阻塞是描述进程在访问某个资源时,数据是否准备就绪的的一种处理方式。 阻塞式:当我们没有获取到数据的时候,整个应用可能产生阻塞,放弃CPU执行,无法去做其他事情。应用场景:悲观锁 非阻塞式:不管是否有获取到数据,都立马告诉一
一、OSI七层模式 OSI 七层模型是由国际标准化组织(ISO)在 1984 年提出的开放式系统互联通信参考模型,是一个逻辑上的网络通信架构模型。 应用层:为用户提供各种网络服务和应用接口,如 HTTP 协议用于网页浏览、SMTP 协议用于电子邮件发送、FTP
RPC(Remote Procedure Call Protocol)远程过程调用协议,允许本地程序像调用本地函数一样调用远程服务器上的函数或方法,而无需关心底层网络通信细节和远程服务器的具体实现,为分布式系统中不同节点间的通信提供了一种简单、高效、透明的方式
一、ZooKeeper入门 ZooKeeper是一个分布式的,开源的协调服务,是Hadoop的重要组件之一,用于维护配置信息、命名、提供分布式同步和组服务等。ZooKeeper通常被用作构建大型分布式系统的基础工具,例如Kafka、HBase等知名项目都在内部
一、类图结构 从下图可以看出,ReentrantReadWriterLock内部维护了一个读锁和写锁,并提供了公平锁和非公平锁的实现。 二、构造函数源码解读 如下图所示,可以看出默认读锁和写锁都是非公平锁,也可以通过构造函数传入fair字段来指定公平和非公平锁
sun.misc.Unsafe:在早期的JDK中,许多框架和库(如juc包中的类)依赖于sun.misc.Unsafe来实现高效的并发控制和内存操作。它提供一些低级别的操作,如直接内存访问、线程调度、CAS(Compare-And-Swap)操作等。功能强大,
一、读写锁ReentrantReadWriteLock的原理 解决线程安全问题使用ReentrantLock就可以了,但是ReentrantLock是独占锁,某一时刻只有一个线程可以获取该锁,而实际中会有写少读多的场景,显然ReentrantLock满足不了这
一、用AQS手写信号量 package demo.aqs; import java.util.concurrent.locks.AbstractQueuedSynchronizer; /** * 自定义的信号量类,基于AQS实现。 */ public
首先对锁的各种类型做个介绍: 独占锁:同一时间,一把锁只能被一个线程获取; 共享锁:同一时间,一把锁可以被多个线程获取。 公平锁:按照申请锁的时间先后,进行锁的再分配工作,这种锁往往性能稍差,因为要保证申请时间上的顺序性。 非公平锁: 锁被释放后,后续线程获得
在此先抛出结果:Java中i++不是原子操作,存在竞态条件,线程不安全。 这是为何? 在回答这个问题之前,先了解一个指令:javap -v -p Counter.class javap是JDK自带的反编译工具,反解析出当前类对应的code区(汇编指令)、本地变