自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 Java并发编程的艺术-读书笔记

实现原理是:操作系统层面的缓存一致性协议(锁总线或锁缓存行两种方式),CPU的高速缓存行(工作内存)变更时,会确保独占更新内存数据,同时在总线上发布lock信号通知别的处理器将对应这个内容的缓存行置为失效。锁对象时MonitorEnter,释放锁对象是MonitorExist,任何对象都可以是锁,锁依赖的是对象头上的MarkWord区域的信息(包含分代信息、hashcode、锁等级等)1、底层,使用锁总线或锁缓存保证原子性,锁总线影响大,锁缓存影响小。3、使用锁机制实现原子操作。

2025-03-04 14:45:00 242

原创 算法题-链表

Override。

2025-03-03 16:47:16 226

原创 使用koupleless实现模块化开发与多模块静态合并部署

koupleless是蚂蚁开源的基于sofa-ark的模块化研发框架GitHub - koupleless/koupleless: 模块化研发框架,运维调度系统,帮助应用解决研发运维系列痛点问题,省资源、秒级启动、灵活部署、快速需求交付等,并帮助存量应用低成本演进到 Serverless 模式;问题表象:在模块中rpc泛化调用时登录人信息没有传递下去,使用ServiceConfig动态暴漏rpc服务时也有这个问题。

2025-02-18 15:57:49 1152

原创 XXL系列框架

很早之前接触过xxl系列的一些框架,其实除了xxl-job比较常用外,别的框架不是特别热门,但是这一系列框架优点是简单易学习特别适合新人体验源码阅读的乐趣。以下就是我对这些框架的学习分析。

2025-01-26 16:50:31 857

原创 JDK各版本特性

由于内存的不断分配回收会产生大量的内存碎片空间,因此需要整理策略防止内存空间碎片化,在整理期间需要将对于内存引用的线程逻辑暂停,这个过程被称为"Stop the world"。ZGC优化:增强 ZGC 释放未使用内存,将标记长时间空闲的堆内存空间返还给操作系统,保证堆大小不会小于配置的最小堆内存大小,如果堆最大和最小内存大小设置一样,则不会释放内存还给操作系统。G1收集器的优化,将GC的垃圾分为强制部分和可选部分,强制部分会被回收,可选部分可能不会被回收,提高GC的效率。

2025-01-24 14:49:30 382

原创 Java线程状态和状态之间转换

Java线程状态和状态之间转换

2025-01-20 09:49:41 108

原创 多线程顺序打印的问题

最近在网上看到很多人遇到多个线程打印,但是要求打印结果按照固定顺序输出的问题,想用这篇文章彻底详细的分析一下这个问题。

2024-12-02 11:07:15 447

原创 Dubbo调用如何实现异步转同步

dubbo调用有三种方式oneway、async、sync,dubbo3中triple还增加了类似grpc的双向流的响应式编程方式,这篇主要说明平时最常用的sync方式下,基于netty实现的dubbo协议中是如何把netty的异步请求响应转成同步调用的效果。

2024-09-29 11:46:52 796

原创 饥饿的线程池

但是这样改写queue会导致一个副作用就是在offer内return false后,addWorker(command, false)时此时线程数达到了Max,那么线程池就会拒绝这个任务,所以还需要。这种线程池可以提高处理速度和效率,特别适合用在非CPU密集型的处理场景下延迟更低响应更快,提高吞吐量,而且空闲时还不占用max线程。这种线程池可以比喻成饥饿的线程池,因为不管提交多少任务,都是尽其所能的先分配线程执行,尽快消费。线程池运行的基本逻辑是C->Q->M,有没有办法把执行逻辑改成C->M->Q呢?

2024-09-08 22:17:29 369

原创 Java连接SQLServer报服务端仅支持TLS10

通过查阅网上资料大部分说原因是Java认为TLSv1不太安全所以在java.security中通过jdk.tls.disabledAlgorithms配置禁用了TLSv1, TLSv1.1,导致Java应用作为SQLServer客户端连接服务时使用的TLS13, TLS12协议,但是SQLServer服务端可能版本比较老或者配置了仅支持TLS10导致报上述错误。修改基础镜像中的/usr/java/latest/jre/lib/security/java.security文件内容,替换成之前的内容。

2024-08-14 18:25:23 900

原创 ES查询报错ContentTooLongException排查过程

(因为这里使用es的方式不是直接使用spring原生方式,而是自己包装了一层,根本原因可能还是自己的包装的实现里面有一些不合适的地方,用search去做searchAggregationsCount,search内就会走上兜底size为10000的逻辑,当然直接使用开源的spring方式集成可能也会有类似的问题)到这里问题其实比较清晰了,经过对比我手动请求es的命令里面没有带size,而程序请求es的报文里面带了size,导致将文档内容在hits中响应了回来,导致响应超大。

2024-07-17 17:48:00 671

原创 应用定时主动触发FGC问题排查

2、还是看不到具体来源,基于10小时这个数字太特殊直接在网上搜索看到是cxf-core三方依赖会主动触发,查看服务确实引用cxf依赖,可以通过参数org.apache.cxf.JDKBugHacks.gcRequestLatency=true关闭固定Full GC的逻辑。发现服务启动后会立刻主动触发一次,就服务重启时立马开始监听System.gc方法的调用堆栈,发现调用来源是sun.misc.GC$Daemon.run(GC.java:109)

2024-07-03 10:52:21 476

原创 ThreadPoolExecutor

可以把线程池理解成一个黑心工厂,工厂老板只顾了5个核心常驻员工,当工作任务不多时让这5个员工来处理,处理不过来的任务就先堆放到仓库里面等后面有人力了慢慢处理,如果仓库也堆满了,就雇一些临时员工来帮忙处理,等任务处理完了,仓库也没有积压了就干掉临时员工,核心worker加上临时worker一共不会超过max。2、当allowCoreThreadTimeOut为false时,在ThreadPoolExecutor#getTask()中会判断线程数量大于code时才会return null去销毁线程。

2024-07-02 15:27:08 381

原创 使用ApacheHttClient时偶现异常ConnectionPoolTimeoutException

当使用HttpClientBuilder创建自定义的HttpClient的时候没有主动setConnectionManager导致org.apache.http.impl.client.HttpClientBuilder#build内兜底使用默认逻辑创建connectionManager的defaultMaxPerRoute只有2,maxTotal也只有20。当请求量稍一大且响应慢时连接池就会不够用,进而报错ConnectionPoolTimeoutException。

2024-07-01 21:05:40 261

空空如也

空空如也

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

TA关注的人

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