物理内存也称为主存,大多数计算机用的主存都是动态随机访问内存(DRAM)。只有内核才可以直接访问物理内存。那么,进...[作者空间]
CS架构Android 平台第一个想到的就是 ContentProvider:一个单独进程管理数据,数据同步不易出...[作者空间]
1.读写形式通过 mmap 内存映射文件,提供一段可供随时写入的内存块,App 只管往里面写数据,由操作系统负责将...[作者空间]
当评估利弊时,架构师必须保证联系上下文来做决策。不然,外部因素会不合时宜地影响到分析。经常,一个解决方案有很多有利...[作者空间]
用一句简单的话来说就是:Netty封装了JDK的NIO,让你用得更方便,不用再写一大堆复杂的代码了。 Netty作...[作者空间]
说到缓存,你应该不陌生。相对于磁盘操作,基于内存的缓存对耗时敏感的高并发应用来说,在性能方面的提升是非常明显的。同样是 1MB 的数据读取,从磁盘读取的耗时,比从内存读取的耗...[作者空间]
两阶段提交第一,2PC 是一个阻塞式协议。当 2PC 的一个参与者,在阶段 1 做出了“是”的回复后,参与者将不能单方面放弃,它必须等待协调者的决定,也就意味着参与者所有占用...[作者空间]
Raft算法Raft 把这个一致性的算法分解成了几个部分,一个是领导选举(Leader Selection),一个是日志复制(Log Replication),一个是安全性(...[作者空间]
分布式锁的本质是在独立集群外的一个存储系统,设置一个值,并标记所有权,表明这个资源我占用了。 在分布式锁的场景中,部分失败和异步网络这两个问题是同时存在的。如果一个进程获得了...[作者空间]
Actor 使用单线程处理消息,所以不会出现并发问题。你可以把 Actor 内部的工作模式想象成只有一个消费者线程的生产者 - 消费者模式。所以,在 Actor 模型里,发送...[作者空间]
线程池有两个线程数的设置,一个为核心线程数,一个为最大线程数。在创建完线程池之后,默认情况下,线程池中并没有任何线程,等到有任务来才创建线程去执行任务。但有一种情况排除在外,...[作者空间]
ThreadLocal顾名思义,就是每个线程保存一份只有自己能访问的对象,避免了不同线程对同一个线程的竞争。所以核心在于如何隐藏一个对象的可见性,来保证只有指定的线程能访问到...[作者空间]
为了实现一把具有阻塞或唤醒功能的锁,需要解决几个核心问题:1.需要底层支持对一个线程进行阻塞或唤醒操作。2.需要有...[作者空间]
乐观锁如果并发产生冲突的概率很低,就不必使用悲观锁,而是使用乐观锁。所谓“乐观”,就是假定冲突的概率很低,所以它采...[作者空间]