自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 kafka

如数据库、Redis,由用户自己管理。适合需要精确控制的场景。

2025-06-18 16:16:12 937

原创 redis高可用- Redis Sentinel(哨兵模式)

主从架构,不数据分片,管理简单,适合中小场景。

2025-06-17 16:57:29 429

原创 redis高可用- Redis Cluster(原生集群模式)

Redis 集群的高可用部署方式主要依赖于或两种方案,分别适用于不同的场景。使用数据分片,更适合大规模分布式场景。是简单的主从架构,更适合中小规模地业务场景。

2025-06-17 16:12:01 421

原创 常用垃圾回收器记录

吞吐量优先垃圾回收器,年轻代回收器,复制算法。垃圾回收器使用可达性算法标记需要回收的垃圾,可达性算法以root对象为起点,标记所有能够走到的对象,剩余不可达的对象即为垃圾回收的目标。root对象包括类静态属性的对象,本地方法栈的对象,虚拟机栈的对象(相当于当前正在执行的方法中用到的对象),常量的对象。全能回收器,保留了老年代和年轻代的说法,但是不再简单划分老年代和年轻代,它将区域分成连续的小块(Region),每一块都可以作为老年代或者年轻代使用。年轻代回收器,复制算法,serial回收器的并行并行版本。

2024-08-26 16:37:35 354

原创 记录一次java性能压测

使用promethus和grafana观察了jvm的表现后,发现当前项目对于老年代的利用率极低,绝大多数对象都是使用后立即销毁,压测过程中所有的gc都在年轻代。既然应用基本不使用老年代,所有的gc都在年轻代发生,不妨扩大年轻代,降低年轻代gc的频率。尝试后发现性能表现有略微提升,启动时的full gc不再出现。-XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps :打 印gc详细信息以及时间。

2024-07-30 18:15:52 350

原创 记录一个使用两个类加载器加载同一个类导致的问题

True,表示tomcat将遵循JVM的delegate机制,即一个WebAppClassLoader在加载类文件时,会先递交给SharedClassLoader加载,SharedClassLoader无法加载成功,会继续向自己的父类委托,一直到BootstarpClassLoader,如果都没有加载成功,则最后由WebAppClassLoader自己进行加载。仔细排查代码发现,这个类被加载了两次,两次分别使用了两个不同的类加载器。如果加载优先级相同,使用先加载的类。

2024-02-06 15:04:31 985 1

原创 排序算法记录

构建最大堆(根节点大于左右子节点)或最小堆(根节点小于左右子节点),每次获取堆的根节点(将根接点和最后一个叶子节点交换),然后忽略原根节点,把剩余节点重新构建堆。

2023-08-17 18:09:20 109 1

原创 记录压测时阿里druid获取数据源连接阻塞的bug

查找到druid mysqlUtis类后发现。出现阻塞原因在于版本不匹配,低版本的driud加载的是com.mysql.jdbc.MySQLConnection,而8.0版本的mysql-connector用的是com.mysql.cj.jdbc.ConnectionImpl。升级druid到1.2以上版本问题解决。使用的druid版本为1.1.9,mysql-connector版本为8.0.19。低版本druid mysqlUtis类代码。

2023-08-11 17:14:40 585 1

原创 环形链表的快慢指针

由于快指针速度是慢指针的两倍,所以x+k+ny = 2(x+k)。从公式可以看出,一个指针a从头结点开始移动,另一个指针b从k位置开始移动,当a移动x步到达环形入口,b正好与a相遇。由此可以算出环形入口的位置。快指针一次两步,慢指针一次一步,当快慢指针相遇时,设慢指针在环内走了k步(慢指针在绕环一圈前就会被快指针追上),块指针在环内绕了n圈。那么此时慢指针走了x+k步,快指针走了x+k+ny。定义两个指针指向头结点,慢指针一次走一步,快指针一次走两步,再次相遇时,快慢指针相差的步数就是环形链表的节点数。

2023-05-06 18:17:16 240 1

原创 Java单链表反转

本文遇到的记录链表反转的问题结点类public class ListNode { public int val; public ListNode next;}最简单的反转public ListNode reverse(ListNode head) { if(head==null){ return head; } ListNode cur = head.next; ListNode p

2021-11-17 14:06:07 282

原创 Java合并链表

升序合并两个链表(链表本身已经升序排列,下同)合并两个链表比较简单,需要注意的是要预先定义一个head,以及尽量代码写的优雅一些public static ListNode merge2List(ListNode listNode1, ListNode listNode2) { if (listNode1 == null) { return listNode2; } else if (listNode2 == null) {

2021-11-15 17:36:00 2053

空空如也

空空如也

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

TA关注的人

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