
笔记
文章平均质量分 83
李有乾
劝君须惜少年时
展开
-
Mysql MHA搭建
Mysql MHA搭建过程记录原创 2023-02-17 10:19:25 · 1024 阅读 · 1 评论 -
Mysql双主整理
双主原创 2022-12-15 17:25:20 · 1785 阅读 · 0 评论 -
Redis整理-未完成
redis整理原创 2022-12-15 17:00:23 · 1609 阅读 · 0 评论 -
CVE-2022-40664 ShiroFilter1.7和1.10对于forward请求的处理
shiroFilter拦截forward、include请求原创 2022-10-14 17:08:52 · 4439 阅读 · 0 评论 -
Ribbon自定义配置--RibbonClientSpecification
ribbon自定义配置原创 2022-08-26 00:11:17 · 1448 阅读 · 0 评论 -
application.properties和bootstrap.properties的加载时机
application.properties和bootstrap.properties的加载时机原创 2022-08-23 11:12:50 · 1641 阅读 · 0 评论 -
SpringBoot Actuator监控组件笔记
SpringBoot Actuator监控组件记录原创 2022-08-17 22:41:09 · 3365 阅读 · 0 评论 -
RocketMQ源码阅读(十五)事务消息
事务消息实现笔记原创 2022-08-16 01:25:27 · 542 阅读 · 0 评论 -
RocketMQ源码阅读(十四)延迟消息
当消息写入到Broker后,需要等待指定的时长后才可被消费处理的消息,称为延时消息,本文记录延迟消息在RocketMQ的实现原创 2022-08-14 00:25:47 · 906 阅读 · 0 评论 -
RocketMQ源码阅读(十三)Consumer-消息消费
Consumer-消息消费原创 2022-08-09 20:00:59 · 814 阅读 · 0 评论 -
RocketMQ源码阅读(十二)Consumer-消息拉取
消费端消息拉取的源码注释原创 2022-08-09 14:44:57 · 272 阅读 · 0 评论 -
RocketMQ源码阅读(十一)AllocateMessageQueueConsistentHash一致性hash
AllocateMessageQueueConsistentHash原创 2022-08-08 23:21:55 · 442 阅读 · 0 评论 -
RocketMQ源码阅读(十)Consumer-消息队列负载均衡
简要流程原创 2022-08-08 19:03:15 · 414 阅读 · 0 评论 -
RocketMQ源码阅读(九)DefaultMQProducer消息发送
RocketMQ.Producer同步消息发送代码笔记原创 2022-08-03 23:42:02 · 1713 阅读 · 0 评论 -
RocketMQ源码阅读(七)ConsumeQueue和IndexFile
消费队列和索引文件原创 2022-06-22 17:24:43 · 586 阅读 · 0 评论 -
RocketMQ源码阅读(六)CommitLog
commitLog原创 2022-06-22 10:11:18 · 377 阅读 · 0 评论 -
RocketMQ源码阅读(五)MappedFileQueue
mappedFileQueue原创 2022-06-22 10:10:36 · 360 阅读 · 0 评论 -
RocketMQ源码阅读(四)MappedFile
mappedFile原创 2022-06-22 10:09:53 · 394 阅读 · 0 评论 -
synchronized锁膨胀笔记
synchronized原创 2022-05-03 16:27:29 · 361 阅读 · 0 评论 -
CGLIB分析
cglib代理类分析原创 2022-04-23 16:47:05 · 857 阅读 · 1 评论 -
Spring三级缓存解决循环依赖
对于没有循环依赖的场景下的bean创建过程如下,直接看核心代码(隐掉了部分循环依赖的代码) protected <T> T doGetBean( String name, @Nullable Class<T> requiredType, @Nullable Object[] args, boolean typeCheckOnly) throws BeansException { // 分别从三级缓存中查询是否已经有该bean Object sh.原创 2022-04-17 01:59:54 · 660 阅读 · 0 评论 -
SpringMVC源码笔记(三) DispatcherServlet.service
DispatcherServlet.service()原创 2022-03-13 21:21:46 · 1146 阅读 · 0 评论 -
SpringMVC源码笔记(二) HandlerExceptionResolver
HandlerExceptionResolver原创 2022-03-06 18:36:47 · 1690 阅读 · 0 评论 -
SpringMVC源码笔记(一) DispatcherServlet.init
SpringMVC的核心就是DispatcherServlet,本质还是一个Servlet,用于分发HTTP请求,调用相应的Handler处理请求。Servlet的生命周期是初始化init(),处理请求service(),销毁destroy(),挨个学习之原创 2022-03-03 00:12:58 · 618 阅读 · 0 评论 -
分布式事务解决方案简述
分布式事务常用解决思路有2PC、3PC、TCC、saga、消息等目录2PC2PC参考实现3PCTCCTCC参考实现SAGA实现saga事务的两种思路消息事务2PC两阶段提交,引入一个第三方协调者来管理整个分布式事务,各系统本地事务为参与者。将分布式事务分为两个阶段,一阶段Prepare,二阶段Commit/Rollback。一阶段执行各参与者的本地事务,执行完后向协调者反馈执行成功/失败情况,但事务不提交。协调者判断若所有反馈都是成功,会进入二阶段向所有参原创 2021-12-29 22:49:09 · 565 阅读 · 0 评论 -
Tomcat源码笔记(七)Engine
StandardEngine原创 2021-12-27 00:02:00 · 693 阅读 · 0 评论 -
Tomcat源码笔记(八)Context
StandardContext的启动步骤原创 2021-12-27 00:00:18 · 1100 阅读 · 0 评论 -
RedisTemplate.execute执行lua脚本踩坑记录
一波三折目录EvalSha is not supported in cluster environmentNo way to dispatch this command to Redis Cluster because keys have different slotsJedis does not support password protected Redis Cluster configurations!背景:最近项目新引入redis,代码中为了保证redis原子操作,大部分操作原创 2021-09-27 17:06:56 · 12278 阅读 · 0 评论 -
怎样实现Redis分布式锁
对于某个JVM进程,要保证某个操作的唯一执行,可以使用synchronized关键字或ReentrantLock在执行前加锁,对于多个JVM进程,要保证这个操作在多个进程中的唯一执行,那就需要依赖第三方系统,例如DB,for update nowait等,除此之外,还可以借助redis、zookeeper实现分布式锁。Redis锁实现思路业务操作会有编号m,线程1往redis中set一个key是m的数据,表示m操作已经加锁,别的线程判断如果redis中已经有了key为m的数据,不再执行操作,原创 2021-09-19 18:04:26 · 521 阅读 · 0 评论 -
ScheduledThreadPoolExecutor源码跟踪分析
JDK版本1.6目录Demo代码示例ScheduledThreadPoolExecutor源码分析PriorityQueueofferpollDelayQueuetakepollofferScheduledThreadPoolExecutorScheduledFutureTaskDemo代码示例示例了三种调度定时任务的apipublic class Main{ static ScheduledThreadPoolExecutor ...原创 2021-09-18 23:24:22 · 191 阅读 · 0 评论 -
Tomcat源码笔记(五)Connector
Connector原创 2021-09-05 11:03:17 · 229 阅读 · 0 评论 -
Tomcat源码笔记(六)Connector--Endpoint
Endpoint端点,在Tomcat中也就是接收socket连接和处理连接的地(ServerSocket.accept())。AbstractEndpoint声明了三个组件,Accepter,SocketProcessor,以及一个Handler接口。Accepter 顾名思义,ServerSocket.accept()接收socket连接 SocketProcessor 模板方法,子类实现具体的SocketProcessor类,处理接收到的socket,SocketProcessor处...原创 2021-09-05 11:02:40 · 437 阅读 · 0 评论 -
TCP、TLS\SSL、JSSE、HTTPS杂烩笔记
以目前我的理解以及这两天的各种百度写个总结笔记,有不对的请指正TCP简介全名Transmission Control Protocol,传输控制协议,是网络层IP协议和链路层Ethernet协议之上,Ethernet协议实现链路层的数据传输和地址封装(源方和目标方的MAC地址),解决局域网的点对点通信,而不同局域网之间的两台机子则需要IP协议进行地址的路由中转,TCP则面向的是端口到端口,保证数据传输的完整和可靠,包括数据包的确认、失败重发、流量控制,数据量大的情况TCP会将数据拆分为有原创 2021-09-04 13:55:47 · 2033 阅读 · 1 评论 -
负载均衡超时重发HTTP请求
nginx失败重试的测试原创 2021-08-27 23:33:45 · 1582 阅读 · 2 评论 -
Tomcat源码笔记(四)StandardService
上节看了容器的初始化和启动,知道了Tomcat初始化和启动都是由Server.init(),Server.start(),层层向下依次触发各个组件的initInternal(),startInternal()方法进行初始化和启动,从本片开始,就从各组件的初始化和启动开始读源码。本文的Service实现类是StandardService,内部从配置文件中看到,内部是多个Connector和一个Engine组成,来看代码initInternal() / startInternal()就是调用各子原创 2021-09-05 11:01:48 · 1069 阅读 · 0 评论 -
Tomcat源码笔记(三)容器初始化和启动
上节看到bootstrap.java 在启动时调用了Catalina.load 和 Catallina.start方法if (command.equals("start")) { daemon.setAwait(true); daemon.load(args); daemon.start(); if (null == daemon.getServer()) { System.exit(1);}load()内部大致为解析conf/server.xml文件并初原创 2021-07-11 12:43:31 · 347 阅读 · 1 评论 -
Java序列化Serializable源码
Java序列化Serializable 示例分析和源码跟踪原创 2021-07-06 22:54:09 · 469 阅读 · 1 评论 -
JDK动态代理源码跟踪
写了个简单的JDK动态代理Demo,在IDEA Debug执行时发现了新大陆,特此记录一下Demo代码如下public interface MyInterface { void print();}public class MyClass implements MyInterface { @Override public void print() { System.out.println("主方法啦啦啦啦啦"); }}public cla原创 2021-06-30 15:56:27 · 168 阅读 · 0 评论 -
JVM笔记(六)堆外内存导致OOM
在垃圾回收时,对于Direct Memory虚拟机虽然会执行回收,但是不受JVM直接管理,不能发现空间不足了就通知收集器回收,而是等待FullGC时,JVM会顺带清除直接内存的废弃对象。原创 2021-06-20 19:13:01 · 997 阅读 · 1 评论 -
最长子序列DP和二分法
输入一串数字例如: 5 6 8 1 3 4 9输出最长递增子序列长度,示例中即 1 3 4 9 ,zui'da'chan原创 2021-06-18 20:36:07 · 4739 阅读 · 1 评论