- 博客(27)
- 资源 (3)
- 论坛 (1)
- 收藏
- 关注
原创 [AQS]AQS 中断响应和不可中断 CLH 队列 对比
1 AQS 中断响应和不可中断 CLH 队列变化对比2 模拟第二种情况,中断响应public boolean tryLock(long timeout, TimeUnit unit) throws InterruptedException以java.util.concurrent.locks.AbstractQueuedSynchronizer#doAcquireNanos 为例,响应中断方式获取时.如果超时返回false,并执行java.util.concurrent.locks.Abst
2021-01-31 15:35:07
45
原创 【线程池】java 1.8 ThreadPoolExecutor 类源码解读
1 线程池:why?主要解决1 异步任务 2 生产者消费者场景2 参数详解2.1 核心线程数// 小于核心线程数:任务提交时创建新的线程,即使其他线程空闲;When a new task is submitted in method {@link #execute(Runnable)}, and fewer than corePoolSize threads are running, a new thread is created to handle the request, eve..
2021-01-30 16:52:59
58
2
原创 【jvm】中断深入理解,线程池,AQS都在使用的利器
1 线程中断:java中对于中断的大部分操作无外乎以下两点:设置或者清除中断标志位(对运行状态线程需要自检,堵塞状态会抛出异常) 抛出InterruptedException2 设置中断直接看源码 :对上面的两个操作说的很清晰了 /** * Interrupts this thread. * * <p> Unless the current thread is interrupting itself, which is * al
2021-01-30 12:38:30
57
原创 【volatile】Java内存模型-volatile型变量的特殊规则
1 是什么?关键字volatile可以说是Java虚拟机提供的最轻量级的同步机制2 特征是什么?什么功能?使用场景?业务上怎么用?当一个变量被定义成volatile之后,它将具备两项特性: 第一项是保证此变量对所有线程的可见性,这里的“可见性”是指当一条线程修改了这个变量的值,新值对于其他线程来说是可以立即得知 的。而普通变量并不能做到这一点,普通变量的值在线程间传递时均需要通过主内存来完成。比如, 线程A修改一个普通变量的值,然后向主内存进行回写,另外一条线程B在线程A回写完成了...
2021-01-30 02:20:20
46
原创 【jvm】HotSpot的算法细节实现
1根节点枚举 我们以可达性分析算法中从GC Roots集合找引用链这个操作作为介绍虚拟机高效实现的第一个例 子。固定可作为GC Roots的节点主要在全局性的引用(例如常量或类静态属性)与执行上下文(例如 栈帧中的本地变量表)中,尽管目标明确,但查找过程要做到高效并非一件容易的事情。现在可达性分析算法耗时 最长的查找引用链的过程已经可以做到与用户线程一起并发。但根节点枚举始终还 是必须在一个能保障一致性的快照中才得以进行——这里“一致性”的意思是整个枚举期间执行子系统 看起来就像被冻结在某个时...
2021-01-30 01:50:43
44
原创 【jvm】垃圾收集算法
1分代收集理论当前商业虚拟机的垃圾收集器,大多数都遵循了“分代收集”(Generational Collection) 的理论进 行设计,分代收集名为理论,实质是一套符合大多数程序运行实际情况的经验法则,它建立在两个分 代假说之上:1)弱分代假说(Weak Generational Hypothesis):绝大多数对象都是朝生夕灭的。 2)强分代假说(Strong Generational Hypothesis):熬过越多次垃圾收集过程的对象就越难以消 亡。 3)跨代引用假说(Intergen.
2021-01-30 01:32:25
44
原创 【jvm】Java内存区域与内存溢出异常
1概述C、C++程序开发的开发人员来说,在内存管理领域,他们既是拥有最高权力的“皇帝”, 又是从事最基础工作的劳动人民——既拥有每一个对象的“所有权”,又担负着每一个对象生命从开始 到终结的维护责任。对于Java程序员来说,在虚拟机自动内存管理机制的帮助下,不再需要为每一个new操作去写配对 的delete/free代码,不容易出现内存泄漏和内存溢出问题,看起来由虚拟机管理内存一切都很美好。不 过,也正是因为Java程序员把控制内存的权力交给了Java虚拟机,一旦出现内存泄漏和溢出方面的问 题,如.
2021-01-30 01:15:16
42
原创 【CMS】垃圾收集-经典垃圾收集器Concurrent Mark Sweep 详解
1. 介绍CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器。目前很 大一部分的Java应用集中在互联网网站或者基于浏览器的B/S系统的服务端上,这类应用通常都会较为 关注服务的响应速度,希望系统停顿时间尽可能短,以给用户带来良好的交互体验。CMS收集器就非 常符合这类应用的需求。从名字(包含“Mark Sweep”)上就可以看出CMS收集器是基于标记-清除算法实现的,它的运作 过程相对于前面几种收集器来说要更复杂一些,整个过程分为四个步骤,包括..
2021-01-30 00:47:36
48
原创 【一千零一夜,不懂就画】redis 5.0 List 内存结构图
对应源码 struct redisCommand { char *name; // "lrange" redisCommandProc *proc; // lrangeCommand int arity; ..
2021-01-29 15:34:30
45
原创 【Nacos】nacos @NacosValue 动态配置刷新 源码解析
1 原理思想Nacos 采用的是 Pull 模式,但并不是简单的 Pull,而是一种长轮训机制,它结合 Push 和 Pull 两者的优势。客户端采用长轮训的方式定时发起 Pull 请求,去检查服务端配置信息是否发生了变更,如果发生了变更,则客户端会根据变更的数据获得最新的配置。所谓的长轮训,是客户端发起轮训请求之后,服务端如果有配置发生变更,就直接返回,如图所示。如果客户端发起 Pull 请求后,发现服务端的配置和客户端的配置是保持一致的,那么服务端会先 “Hold” 住这个请求,也就是服务端拿到
2021-01-28 01:04:28
93
原创 【Hash】loadbalance 一致性hash算法线上应用
1 小结:小心处理链接泄露问题 listener 监听更新要可能早于注入更新(可能是一定) 权重每次重分布都要更新2 源码:import com.alibaba.nacos.api.NacosFactory;import com.alibaba.nacos.api.config.ConfigService;import com.alibaba.nacos.api.config.annotation.NacosValue;import com.alibaba.nacos...
2021-01-26 20:15:08
35
原创 【mysql】Innodb B+树如何保证数据不丢失?可靠性
In order to make the database resilient to crashes, it is common for B-tree implementations to include an additional data structure on disk: a write-ahead log (WAL, also known as a redo log WAL 保证了可靠性). This is an append-only file to which every B-tree mod
2021-01-22 21:22:07
31
原创 【mysql】 SQLException: Unable to load authentication plugin ‘caching_sha2_password‘.
Exception in thread "main" java.sql.SQLException: Unable to load authentication plugin 'caching_sha2_password'.如果是mysql 8.0<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</arti.
2021-01-22 14:22:22
33
原创 【ACID】C不属于ACID,一致性不属于ACID,为什么?
1 C 的含义The word consistency is terribly overloaded:重载含义四个• Replica consistency and the issue of eventual consistency that arises in asynchronously replicated systems . • Consistent hashing is an approach to partitioning that some systems use for rebal
2021-01-21 09:12:10
53
1
原创 【JVM】JDK 15 Disable and Deprecate Biased Locking 禁用和弃用偏向锁(终于废弃了偏向锁)
Disable and Deprecate Biased Locking 禁用和弃用偏向锁定1 结论Disable biased locking by default, and deprecate all related command-line options.默认情况下禁用偏向锁定,并弃用所有相关的命令行选项。2 GoalsDetermine the need for continued support of the legacy(传统) synchronization optim
2021-01-19 19:43:10
56
原创 【分布式技术】--分布式事务Seata-2
1 分布式事务seata just do it by yourself, keep in mind.https://github.com/seata/seata-samples/tree/master/springboot-dubbo-seata2 部署结果// http://172.16.208.224:8848/nacos/index.html#/serviceManagement?serverId=center&group=&dataId=&namesp
2021-01-19 07:15:37
128
原创 【思考】HashMap<Long,Long>存储效率为什么不到20%?
1 准确解释一个Long对象占内存计算:在HashMap<Long,Long>结构中,只有Key和Value所存放的两个长整型数据是有效数据,共16字节(2×8字节)。这两个长整型数据包装成java.lang.Long对象之后,就分别具有8字节的MarkWord、8字节的Klass指针,再加8字节存储数据的long值(一个包装对象占24字节)。然后这2个Long对象组成Map.Entry之后,又多了16字节的对象头(8字节MarkWord+8字节Klass指针=16字节),然后一个8字节的
2021-01-14 21:36:10
46
原创 【Https】如何实现安全传输的?
1 术语解释HTTPS协议引入了CA和数字证书来解决安全性数字证书:包含签发机构、有效期、申请人公钥、证书所有者、证书签名算法、证书指纹以及指纹算法等信息。CA:数字证书签发机构,权威CA是受操作系统信任的,安装操作系统就会内置。数字签名:用Hash算法对数据进行计算得到Hash值,利用私钥对该Hash加密得到签名。只有匹配的公钥才能解密出签名,来保证签名是本人私钥签发的证书。2 数字证书签发过程1 网站生成密钥对,将私钥自己保存,公钥和网站域名等信息提交给CA2 CA把证书签发机构(也就是自
2021-01-13 21:53:58
79
原创 【nacos】springboot @Value @NacosValue 使用时可能无效
1 @NacosValue 自动刷新环境依赖版本<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.4.RELEASE</version> <relativeP
2021-01-13 08:16:22
464
9
原创 【ZGC】G1停顿40ms很不错了?NO ZGC 10ms内! 厉害
1 系统环境os centos 8.1, jvm jdk hotspot 11, kernel (yum info kernel -q) Version : 4.18.0 2 最终配置流程: A:openjdk 11 install sudo yum install java-11-openjdk-devel sudo alternatives --config java B: 设置环境变量 cat > /etc/profile.d/java...
2021-01-06 14:47:35
48
原创 【JVM】线上用户线程执行SQL停顿的5点猜想,并最终解决
1 现象正常应用,出现某个sql偶尔卡顿,而sql都是根据Id主键查询的不会因为索引误用等引起。排除:Sql 索引没有用上或者选择错误的索引。 函数操作导致索引失效。 表过大,多表多库联合查询。 2 偶尔慢的原因:猜想 2.1 数据库在刷新脏页。------通过监控看到mysql集群的磁盘刷新次数都是平稳的-排除。 猜想 2.2 数据库的自然数连接占满了。------ 通过druid 监控排除。 猜想 2.3 拿不到锁。排除--- 都是查...
2021-01-05 19:36:36
55
2
翻译 【思考】Why do hash functions use prime numbers? 为啥都用31素数做系数?
In aprevious posti pointed out how questions posted in reward based discussions sites likestackoverflow.comnever gets answered satisfactorily. This post is a look atone such feeble answerand makes an effort to explain in more detail a basic question ...
2021-01-05 17:53:19
49
原创 【ES】 查询优化实践3点小结
1 去掉ES 部分查询条件(对结果集的影响较小,但是增加es的计算代价),到应用内存中进行看样子{"term":{"join_state":{"value":1,"boost":1.0}}} 去掉更快,这个状态的过滤完全可以放内存中计算。去掉条件之后:2 启用停用词 比如ik的热更新一个"的"查询好点了73%的资源,但是对结果集的价值确实微乎其微使用ik停用词后:3 控制写入速度平稳性瞬时写入增加,造成gc overhead,导致业务延迟...
2021-01-02 11:21:49
32
平静不绝望的留言板
发表于 2020-01-02 最后回复 2020-01-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人 TA的粉丝