摘要: 1.引言 并发编程中synchronized是重量级锁,但随着JVM1.6对synchronized进行优化后,有些情况下它并不那么重,本文介绍了Java SE1.6中为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和轻量级锁,以及锁的存储结构和升级过程。 2.术语定义 CAS(Compare a 阅读全文
posted @ 2020-05-05 19:45 heapStark 阅读(630) 评论(0) 推荐(0) 编辑
摘要: 写在前面的话: 不要求每个人一定理解 联表查询(join/left join/inner join等)时的mysql运算过程; 不要求每个人一定知道线上(现在或未来)哪张表数据量大,哪张表数据量小; 但把mysql客户端(如SQLyog,如HeidiSQL)放在桌面上,时不时拿出来 explain 阅读全文
posted @ 2020-05-02 18:09 heapStark 阅读(432) 评论(0) 推荐(0) 编辑
摘要: 最近工作中讨论到了Raft协议相关的一些问题,正好之前读过多次Raft协议的那paper,所以趁着讨论做一次总结整理。 我会将Raft协议拆成四个部分去总结: 算法基础 选举和日志复制 安全性 节点变更 这是第一篇:《解读Raft(一 算法基础)》 什么是RAFT 分布式系统除了提升整个体统的性能外 阅读全文
posted @ 2020-04-30 18:52 heapStark 阅读(230) 评论(0) 推荐(0) 编辑
摘要: CAP CAP定理是分布式领域当中非常著名的定理,也是大家津津乐道的一个分布式定理。有些人这么理解CAP定理:在分布式系统中,- C代表一致性- A代表可用性,- P代表网络分区。因为,分布式环境中,P不不可避免的,分布式系统要么选择一致性放弃可用性,要么选择可用性放弃一致性。 在一个shared- 阅读全文
posted @ 2020-04-29 21:24 heapStark 阅读(433) 评论(0) 推荐(0) 编辑
摘要: happens-before是JMM最核心的概念,理解happens-before是理解JMM的关键。 一.JMM的设计 首先,让我们先分析一下JMM的设计意图。从JMM的设计者的角度,在设计JMM的时候要考虑一下两个关键因素: 1.程序员对内存模型的使用。程序员希望内存模型易于理解、易于编程。程序 阅读全文
posted @ 2018-07-31 22:17 heapStark 阅读(339) 评论(0) 推荐(0) 编辑
摘要: 参考链接:https://blog.csdn.net/rebirth_love/article/details/51954836 比较实用的RejectedExecutionHandler实现,丢弃最老的任务 第一部分:ThreadPoolExecutor的继承结构 根据上图可以知道,ThreadP 阅读全文
posted @ 2018-07-31 21:43 heapStark 阅读(248) 评论(0) 推荐(0) 编辑
摘要: 数据库篇 int类型用字符串类型查询是否会走索引 准备语句: 1 2 3 4 5 DROP TABLE ix_test; CREATE TABLE ix_test (id_1 varchar(20) NOT NULL, PRIMARY KEY(id_1)); INSERT INTO ix_test  阅读全文
posted @ 2018-07-17 22:27 heapStark 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 一、死锁的定义 多线程以及多进程改善了系统资源的利用率并提高了系统 的处理能力。然而,并发执行也带来了新的问题——死锁。所谓死锁是指多个线程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。下面我们通过一些实例来说明死锁现象。先看生活中的一个实例,2个人一起吃饭但是只有 阅读全文
posted @ 2018-07-17 08:18 heapStark 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 并发包中的原子类可以解决类似num++这样的复合类操作的原子性问题,相比锁机制,使用原子类更精巧轻量,性能开销更小,下面就一起来分析下原子类的实现机理。 悲观的解决方案(阻塞同步) 我们知道,num++看似简单的一个操作,实际上是由1.读取 2.加一 3.写入 三步组成的,这是个复合类的操作(所以我 阅读全文
posted @ 2018-07-16 21:16 heapStark 阅读(466) 评论(0) 推荐(0) 编辑
摘要: 参考:https://blog.csdn.net/zjf280441589/article/details/52716720 从 2.6版本 起, Redis 开始支持 Lua 脚本 让开发者自己扩展 Redis. 本篇博客主要介绍了 Lua 语言不一样的设计模型(相比于Java/C/C++、JS、 阅读全文
posted @ 2018-07-06 21:27 heapStark 阅读(340) 评论(0) 推荐(0) 编辑