- 博客(20)
- 收藏
- 关注
原创 线程设计模式-Latch设计模式
Latch设计模式提供了等待所有子任务完成,然后继续接下来工作的一种设计方法,自JDK所提供的,当await超时的时候,已完成任务的线程自然正常结束,但是未完成的则不会被中断还会继续执行下去,也就是说CountDownLatch只提供了门阀的功能,并不负责对线程的管理控制,对线程的控制还需要程序员自己控制。
2026-01-22 09:41:25
593
原创 一次线上节点“CPU 爆满/卡死”的真实排查:复盘
线上突然出现一串典型“雪崩式告警”:服务响应变慢、Pod 重启、节点 NotReady,第一眼看上去像是 CPU 爆满把机器打挂了。但真正的根因并不是 CPU 算力不够,而是容器未设置 requests/limits 导致内存无限增长,触发严重换页(page reclaim)、I/O 等待飙升,最终引发内核 OOM Killer 杀进程,Kubernetes 组件与业务容器连锁故障。
2026-01-22 09:20:52
811
原创 Docker Compose 一键启动 MySQL 一主二从(GTID)实战:配置、原理与踩坑记录
本文以 Windows + Docker Desktop 环境为背景,给出一套可复现的 MySQL 8.0 一主二从(GTID)复制集群“一键启动”方案
2026-01-12 23:44:12
839
原创 数据迁移怎么选:停机、双写、增量同步的利弊
不改或少改业务写入链路。同时把旧系统发生的每一次数据变化“记录下来”,再异步同步到新系统。历史数据先搬一次,之后靠“变化同步”追上。在迁移期间,系统的每次写入(新增/修改)都同时写到旧系统和新系统。等新系统稳定后,再逐步把用户切过去。先暂停系统写入(不让数据再变化),把旧系统里的数据整体搬到新系统,再把用户切到新系统。
2026-01-07 06:04:50
896
原创 多线程设计模式-读锁分离设计模式
/获取显示锁,没有获得锁的线程将阻塞//释放获取的锁Lock接口定义了锁的基本操作,加锁和解锁,显示锁的操作强烈建议与 try finally语句快仪器室哟哦那个,加锁和解锁说明如下。.lock():当前线程尝试获得锁的拥有权,在此期间有可能进入阻塞.unlock: 释放锁,其主要目的就是为了减少reader或者writer的数量ReadWriter接口定义的代码//创建reader锁//创建write锁//获取当前有多少线程正在执行写操作。
2026-01-05 18:57:48
837
原创 Active Objects设计模式
定义了业务接口。提供了实际的业务逻辑。作为代理将接口方法转化为消息并提交到队列。处理异步结果。抽象类是消息的基类。和处理特定的接口方法。维护消息队列。是用于实际执行异步方法的守护线程。是一个工厂类,简化了的创建过程。
2026-01-02 18:23:53
1061
原创 oAuth2获取访问令牌底层逻辑
首先找到了AbstractAuthenticationProcessingFilter这个类,发现它继承了 GenericFilterBean,而GenericFilterBean 是 spring 框架中的过滤器,里面实现了javax.servlet.Filter。
2025-12-27 19:47:05
1012
原创 Thread-Per-Message设计模式(聊天室)
Thread.-Per-Message的意思是每一个消息的处理开辟一个线程使得消息能够以兵法的方式进行处理,从而提高系统整体的吞吐能力。客户端提交的任何业务受理请求都会被封装成Request对象TaskHandler代表了每一个工作人员接受任务后的处理逻辑Operator代表了接线员,当有电话打进来时,话务员会将客户的请求封装成一个Requeat,客户开普一个线程去处理。
2025-12-25 09:45:07
385
原创 线程设计模式-Balking模式(文档编辑用)
Balking模式在日常的开发中很常见,比如在系统资源的加在活着某些数据的初始化时,在整个系统中生命周期中kennel植被加载一次,我们就可以采用balking模式加以解决。
2025-12-24 09:39:49
275
原创 线程设计模式-Thread-Per-Message设计模式
Thread-Per-Message设计模式在日常的开发中非常常见,但是也要灵活使用,比如为了避免频繁创建线程带来的系统开销,可以用线程池来代替.
2025-12-22 16:21:00
385
原创 线程设计模式-Event Bus设计模式
消息中间件提供了系统之间的异步处理机制,比如在某电商网站上支付订单之后,会触发库存计算,物流调度计算,甚至是营销人员绩效计算,报表统计等,诸如此类的操作一般会耗费比订单购买本身更多的时间,加之这样的操作没有即时的时效性要求,用户在下单之后完全没有必要等待电商后端昨晚所有的操作才算成功。
2025-12-18 11:10:38
559
原创 读取锁分离设计模
/获取显示锁,没有获得锁的线程将阻塞//释放获取的锁Lock接口定义了锁的基本操作,加锁和解锁,显示锁的操作强烈建议与 try finally语句快仪器室哟哦那个,加锁和解锁说明如下。.lock():当前线程尝试获得锁的拥有权,在此期间有可能进入阻塞.unlock: 释放锁,其主要目的就是为了减少reader或者writer的数量ReadWriter接口定义的代码//创建reader锁//创建write锁//获取当前有多少线程正在执行写操作。
2023-11-01 17:49:38
118
原创 java八种排序算法-基数排序
基数排序(桶排序)介绍:1)基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是通过键值的各个位的值,将要排序的元素分配至某些“桶”中,达到排序的作用2)基数排序法是属于稳定性的排序,基数排序法的是效率高的稳定性排序法3)基数排序(Radix Sort)是桶排序的扩展4)基数排序...
2019-11-04 13:18:19
221
原创 java八种排序算法-选择排序
选择排序( select sorting )介绍选择式排序也属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素, 再依规定交换位置后达到排序的目的。举个例子:[8 , 3 , 2 , 1 , 7 , 4 ,6 , 5]1.从 arr[0],arr[n- 1]中选取最小值,与arr[0]交换,2. 从ar[1]ar[n- 1]中选取最小值...
2019-11-02 10:18:24
183
原创 java八种排序算法-快速排序
快速排序(Quicksort)快速排序思想快速排序(Quicksort)是对冒泡排序的一种改进。快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序分析(1)快速...
2019-10-30 06:59:13
240
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅