前提 并发编程大师Doug Lea在编写JUC(java.util.concurrent)包的时候引入了java.util.concurrent.locks.AbstractQueuedSynchronizer,其实是Abstract Queued Synchronizer,也就是"基于队列实现的抽象同步器",一般我们称之为AQS.其实Doug Lea大神编写AQS是有严谨的理论基础的,他的个人博客上有一篇论文<The java.util.concurrent Synchroni…
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是周五分布式系统的第八篇文章,核心内容是B+树的原理. 今天的文章是上周B树的延伸,所以新关注的或者是有所遗忘的同学建议先从下方链接回顾之前的内容. 硬核挑战--从零开始动手图解B树 B+树的特性 B+树和B树一样都是多路平衡树,也叫多叉树.两者的性质也基本一致,在具体来看详细内容之前,我们先来总体看下B+树的特性,先有个大概的印象. 我个人认为B+树大部分特性都和B树一样,唯一不同的只有以下几点: 所有的数据都存储在叶子节点,中间…
原理: Redis集群采用一致性哈希槽的方式将集群中每个主节点都分配一定的哈希槽,对写入的数据进行哈希后分配到某个主节点进行存储. 集群使用公式(CRC16 key)& 16384计算键key数据那个槽. 16384个slot均匀分布在各个节点上. 集群中每个主节点将承担一部分槽点的维护,而槽点中存储着数据,每个主节点都有至少一个从节点用于高可用. 节点通信方式: 开启一个端口 设置的端口号+10000,用于集群之间节点通信交换信息. 每个节点默认每秒10次选择随机5个节点发送ping消息,将自…
前提 很早之前就打算看一次JUC线程池ThreadPoolExecutor的源码实现,由于近段时间比较忙,一直没有时间整理出源码分析的文章.之前在分析扩展线程池实现可回调的Future时候曾经提到并发大师Doug Lea在设计线程池ThreadPoolExecutor的提交任务的顶层接口Executor只有一个无状态的执行方法: public interface Executor { void execute(Runnable command); } 而ExecutorService提供了很多扩…
目录:老少皆宜.超长干货文警告 1.快速入门创建产品 -- 小白,打包带走去吹牛 2.代码分析 -- 老炮,快速了解能用上 2.1 从start.sh分析开发环境如何自动构建 2.2 从sample.c分析程序流程 2.3 数据下发流程分析 2.4 数据读取与上报流程分析 3.移植到ESP32上搞IOT -- 二营长,把老子的意大利炮拿上来 3.1 搭建ESP32全自动命令行开发环境 3.2 基于ESP32移植并编译阿里iotkit-embedded成lib 3.3 基于esp-aliyun和i…
前言 程序员对待IDE都是虔诚的,经常因为谁是最好的IDE而在江湖上掀起波澜,曾经我也是. 后来我遇到了IDEA,从此是它,余生都是它. IDEA 毫无疑问是目前最强大的Java开发工具了,但是大部分的人并没有将它用到极致,很多实用的配置,插件,小技巧被忽视.就像JDK8的新特性一样,你知道它在且坚持不用,但是只要用过一次就知道什么是真滴香. 以下所有常见配置的思维导图,内容丰富,思维导图配合 Ctrl+F 搜索食用风味儿更佳.先赞后看,养成习惯 IDEA 软件设置Settings页面 Sett…
目录 关于小猿 如何找资料 自我定位 岗位需求 学习路线及时间安排 资料获取方式 C++语言在历史舞台上出现了不短的时间,虽然一直面临着Python,Go等新语言的挑战,但它在基础架构和大型软件上的优势并没有被取代,相反,更加验证了C++的优势所在. 关于小猿 985研究生 2020秋招提前批 C/C++相关开发 拿到腾讯.华为等offer 如何找资料 指导思想 学习路线真实.详细且友好 资料不在多,一套即可 现有资料 大部分的文章或是培训班的软文,或是搬运糅合 套路满满,强制分享朋友圈后下载一…
2020秋招提前批 C/C++相关开发 拿到腾讯.华为等offer 学习路线及时间安排 推荐时间为4个月,包括四部分:语言,计算机基础知识,项目基础知识,项目实践. 语言 推荐学习1个月 学习方针:视频为主,书籍为辅. 配套视频:C语言,C++语言 C++ Primer Plus 集中学习该书的1~8章,涉及C语言基础语法及指针.结构体的使用. C和指针 该书全面深入的剖析了指针的概念与使用,是C语言的进阶. C++ Primer 作为C++查询的工具书,相当于新华词典,里面会涉及C++的很多技…
1.数据库启动的时候,是如何初始化Buffer Pool的? 现在我们已经搞明白一件事儿了,那就是数据库的Buffer Pool到底长成个什么样,大家想必都是理解了 其实说白了,里面就是会包含很多个缓存页,同时每个缓存页还有一个描述数据,也可以叫做是控制数据,但是我个人是比较倾向于叫做描述数据,或者缓存页的元数据,都是可以的.那么在数据库启动的时候,他是如何初始化Buffer Pool的呢? 其实这个也很简单,数据库只要一启动,就会按照你设置的Buffer Pool大小,稍微再加大一点,去找操作…
明晚8:30,k3s实战课程开启!将由Rancher研发总监带你畅游k3s与边缘AI的奇妙世界.课程内容完全由实际使用场景中总结而来,别错过啦~!访问以下链接即可传送到课程现场: http://z-mz.cn/PmxF 如果你正在使用Kubernetes,那么kubectl一定是你最常使用的工具.无论你需要学习任何工具,都应该先提前了解kubectl并有效地使用它.本文包含了一系列技巧,可以让你更高效而且有效地使用kubectl.同时,可以加深你对Kubernetes各个方面工作方式的理解. 本…