自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 【redis】3.2.8rehash存在的隐患,最新5.0+版本的改进-源码分析

此文链接至美团

2021-01-29 08:56:29 48

原创 【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

原创 【不懂就画一千零一夜】iftop 网络量分析利器

2021-01-08 18:06:32 32

原创 【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

原创 【分布式技术】--分布式事务Seata

2021-01-03 10:24:29 167

原创 【成长】---总路线

2021-01-03 09:40:52 29

原创 【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

整理流程.png.zip

喜欢dubbo等rpc框架的伙伴

2021-02-07

Memory Management in the Java HotSpot™ Virtual Machine.

15年最新

2016-12-28

zookeeper快速指导

zookeeper快速指导

2017-04-07

平静不绝望的留言板

发表于 2020-01-02 最后回复 2020-01-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除