- 博客(12)
- 收藏
- 关注
原创 ConcurrentHashMap 源码解析(四):put()方法超硬核源码解析
ConcurrentHashMap中的put()方法是其中一个比较复杂的方法,其中涉及到了很多的知识点。比如,迁移时的多线程协助、桶位树化、多线程累加等等。下面我将详细解析put()方法和所涉及到的所有子方法的源码。put()方法中其实是调用了putVal()来实现的。/** * Maps the specified key to the specified value in this table. * Neither the key nor the value can be null..
2020-05-20 17:09:37
363
2
原创 ConcurrentHashMap 源码解析(三):get()
本文重点解析ConcurrentHashMap.get()方法,及其代码中包含的所有涉及到的子方法。其中,spread()和find()是比较复杂的两个方法,下面会重点讲解。/** * Returns the value to which the specified key is mapped, * or {@code null} if this map contains no mapping for the key. * * <p>More formally, if th.
2020-05-19 15:50:22
245
原创 ConcurrentHashMap 源码解析(二):ConcurrentHashMap初始化
ConcurrentHashMap有5种初始化方法。其中,ConcurrentHashMap()是个无参构造,里面没有任何代码,不需要理会;ConcurrentHashMap(int initialCapacity, float loadFactor)是个套娃的方法,只需要理解ConcurrentHashMap(int initialCapacity, float loadFactor, int concurrencyLevel)就可以了。因此下面就详细解析剩下的3种初始化方法。1、Concurren.
2020-05-18 18:17:55
1197
原创 ConcurrentHashMap 源码解析(一):解析定义的常量
在解析ConcurrentHashMap源码之前首先需要先弄懂这些常量的定义,这将会对接下来看源码有很大的帮助。这里要注意一点,ConcurrentHashMap1.8中会保留1.7的常量,但是并不会参与到1.8的逻辑计算中。/** * The largest possible table capacity. This value must be * exactly 1<<30 to stay within Java array allocation and indexing .
2020-05-18 14:53:12
181
原创 面试必问--手撕FutureTask源码
FutureTask作为面试必问的知识,重要性可想而知。因此,下面给大家逐条分析Doug Lea大神的源码。首先是介绍下FutureTask类中的变量//表示当前task的状态 private volatile int state; //表示当前task尚未执行 //场景:1、任务刚新建还未入队列 // 2、任务刚新建已入队列,还未被线程执行 /...
2020-04-28 21:16:33
227
原创 手撕LongAdder-add()源码
/** * Adds the given value. * * @param x the value to add */ public void add(long x) { //as: 表示cells引用 //b: 表示获取的base值 //v: 表示 期望值 //m: 表示cells数...
2020-04-27 15:59:10
259
原创 mysql编写规范
DML语句规范【强制】select语句必须指定具体字段名称,禁止写成*。因为select*会将不该读的数据也从MySQL里读出来,造成网卡压力。且表字段一旦更新,但model层没有来得及更新的话,系统会报错。【强制】insert语句指定具体字段名称,不要写成insert into t1 values(…),道理同上。【建议】insertinto…values(XX),(XX),...
2020-04-24 15:47:52
259
原创 mysql数据库设计规范
库名规范【强制】库的名称必须控制在32个字符以内,相关模块的表名与表名之间尽量提现join的关系,如user表和user_login表。【强制】库的名称格式:业务系统名称_子系统名,同一模块使用的表名尽量使用统一前缀。【强制】一般分库名称命名格式是库通配名_编号,编号从0开始递增,比如wenda_001以时间进行分库的名称格式是“库通配名_时间”【强制】创建数据库时必须显式指...
2020-04-24 15:46:18
204
1
原创 使用docker-compose搭建elk 日志分析系统
文件目录这是我放配置信息的文件目录[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t9hdYxLI-1587713880460)(http://blog.supert.vip:8090/upload/2020/1/image-56a87ca7a89a4d9d86e3f456b455d44b.png)]创建docker-compose文件#author terr...
2020-04-24 15:40:29
1286
原创 GitFlow工作流
GitFlow的分支1.Production 分支也就是我们经常使用的Master分支,这个分支最近发布到生产环境的代码,最近发布的Release, 这个分支只能从其他分支合并,不能在这个分支直接修改2.Develop 分支这个分支是我们是我们的主开发分支,包含所有要发布到下一个Release的代码,这个主要合并与其他分支,比如Feature分支3.Feature 分支这个分...
2020-04-24 15:32:34
661
原创 学习笔记(01):k8s与SpringCloud分布式服务架构-3.1如何配置镜像的加速器?
1.spring cloud 如何部署在docker容器上? 2.spring cloud 基于swarm 如何集群搭建? 3.采用jenkins集群部署springcloud 的docke..
2019-12-19 18:01:02
126
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人