- 博客(21)
- 收藏
- 关注

原创 分布式事务(定理-刚性事务-柔性事务)
大家都知道事务有四大特性(ACID) ,原子性、一致性、隔离性、持久性。那么什么是分布式事务呢?就是从单机变成多个机器。那么这个时候问题就出现了,比如你要吃饭,自已怎么点什么都行,想吃什么点什么,但是此时不是你自已了,就可能会出现意见的分歧等等。分布式事务确保所有参与的数据库或服务要么全部成功提交,要么全部回滚,以保证数据的一致性。分布式事务的实现和管理比单一数据库的事务要复杂得多。
2025-04-28 17:56:52
1081

原创 Raft一致性算法,绝对好理解!!!
如图所示,这就是Raft的初次选举,在最开始的时候所有节点都是Follower,每个Follower都有一个定时器,当收到Leader的信息之后会更新定时器,当定时器结束时没有收到Leader发来消息,证明Leader已经死亡或者根本不存在,这个时候该节点就会变成Candidate,通过投票选举(该节点向其他节点发出投票信息,如果超过一半以上即通过选举,该节点成为Leader),成功成为Leader之后,新的Leader会向其他Follower发送心跳信息,方式其他节点成为Leader节点。
2025-04-27 18:45:01
1241
1
原创 JavaSE知识总结(集合篇) ~个人笔记以及不断思考~持续更新
Java集合框架概述 Java集合框架分为单列集合(List、Set)和双列集合(Map)。List是有序、可重复的集合,主要实现类包括ArrayList(基于动态数组)、LinkedList(基于双向链表)和线程安全的Vector。Set是无序、不重复的集合,主要实现类有HashSet(哈希表)、TreeSet(红黑树)和LinkedHashSet(链表+哈希表)。Map是键值对集合,包含HashMap、LinkedHashMap和TreeMap等实现。不同集合在数据结构、性能特征(如查询、插入效率)和线
2025-06-02 22:29:46
918
原创 JavaSE知识总结 ~个人笔记以及不断思考~持续更新
字符串常量池在JDK7之前字符串常量池在运行时常量池(方法区),JDK7之后字符串常量池移动到堆中,字符串常量池的作用是在定义一个字符串的值时候会在字符串常量池中创建对象用于复用。首先我们要清楚局部变量是在一个代码块里面,所以我们必须要给他赋值,因为,局部变量的生命周期是很短的,其实作用域范围也很小,编译器无法确定局部变量的初始值,所以必须要赋值。这个要和类加载有关了,静态方法的初始化是在类加载的时候初始化的,而非静态成员是在new 出来的他们的时候创建的,你用存在的去调用一个当前不存在的,这是不合理的!
2025-06-02 18:53:27
912
原创 Leetcode (力扣)做题记录 hot100(49,136,169,20)
本文介绍了力扣(LeetCode)上的四道经典算法题的解法。第一题是“滑动窗口最大值”,通过使用双端队列来维护窗口内的最大值。第二题是“除自身以外数组的乘积”,通过左右乘积数组来计算每个位置的结果。第三题是“缺失的第一个正数”,通过标记法找到缺失的最小正整数。第四题是“矩阵置零”,通过标记行和列来将矩阵中的零元素所在的行和列全部置零。这些题目涵盖了滑动窗口、数组操作、标记法等常见算法技巧,适合算法学习者参考。
2025-05-19 11:05:57
240
原创 Leetcode (力扣)做题记录 hot100(49,136,169,20)
遍历数组,将每一个字符串变成char数组 然后排序,如果map里面有则将他的值返回来(key是排序好的字符串)本文相关图片资源来自于网络中,如有侵权请联系删除!
2025-05-13 19:04:13
264
原创 Leetcode (力扣)做题记录 hot100(34,215,912,121)
34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣(LeetCode)temp --;temp = mid;temp ++;return arr;
2025-05-12 21:55:55
658
原创 Leetcode (力扣)做题记录 hot100(543,102,35,101)
本文介绍了力扣平台上的四道经典算法题及其解法。第一题是二叉树的直径,通过深度优先搜索(DFS)计算二叉树中任意两节点之间的最长路径。第二题是二叉树的层序遍历,使用队列实现按层次遍历二叉树节点。第三题是搜索插入位置,通过二分查找确定目标值在有序数组中的插入位置。第四题是爬楼梯问题,使用动态规划计算到达第n阶楼梯的不同方法数。这些题目涵盖了二叉树、二分查找和动态规划等常见算法思想,适合算法学习者练习和掌握。
2025-05-10 16:53:14
318
原创 Leetcode (力扣)做题记录 hot100(42,104,226,101)
本文介绍了力扣平台上的四道经典算法题及其解法。第42题“接雨水”通过左右遍历记录最大值,最后计算每个位置的积水量。第104题“二叉树的最大深度”使用递归方法计算二叉树的最大深度。第226题“翻转二叉树”通过递归交换左右子树实现翻转。第101题“对称二叉树”通过递归比较左右子树的对称性。每道题均提供了详细的代码实现,帮助理解算法思路。
2025-05-09 17:36:49
327
原创 Java中类初始化和类加载的过程、双亲委派机制
初始化之后,我们要对对象头进行设置,我们需要在对象头当中设置(当前对象属于哪个类),另外,根据虚拟机当前运行状态的不同,如是否启用偏向锁等,对象头会有不同的设置方式。类加载检查完之后,我们要在jvm的堆里面为对象分配内存,新生代,一般在新生代的Eden园区,随着GC不断洗礼剩下的会逐步转移。构造函数,即class文件中的方法还没有执行,所有的字段都还为零,对象需要的其他资源和状态信息还没有按照预定的意图构造好。在类加载过程时,现委托父级检查依次向上,当父级无法完成加载时候,当前类才开始加载。
2025-05-08 18:53:51
2216
原创 Leetcode (力扣)做题记录 hot100(2,19,24,94)
两个链表相加 ,创建两个链表,一个用于返回,一个用于操作(指向返回的链表),唯一需要判断的就是进位问题,我们用sum/10的结果给carry进行判断,>0即进位。首先获取链表长度,然后让链表的next指向next.next即可。本文相关图片资源来自于网络中,如有侵权请联系删除!
2025-05-08 16:52:56
258
原创 Leetcode (力扣)做题记录 hot100(141,234,142,21)
判断环形链表,用兔子乌龟思想,一个走得快一个走得慢,能碰上就证明是个环形。把链表里面的值放到一个数组里面,然后双指针(前后指针)进行判断即可。把所有节点放到哈希表里面,如果出现重复的节点就证明有环。本文相关图片资源来自于网络中,如有侵权请联系删除!
2025-05-07 19:32:10
235
原创 JAVA虚拟机(JVM)总结,很清晰,很好理解!!
大家都知道计算机只知道0100101010101这种二进制,那么我们的代码是怎么运行的呢??当然和编译有关,当我们写完aaa.java文件之后,我们需要通过javac来进行编译,编译成.class文件。因为JVM只认识.class文件。
2025-05-06 18:29:51
2105
原创 Leetcode (力扣)做题记录 hot100(15,53,56,189)
三数之和,先排序,方便使用双指针和排除重复元素。三个指针,最外面指针i用于等left和right指针循环完在动。i + left + right =0 那么就可以转化为 left + right = -i。如果第一个数字就>0,那么就直接终止。先排序,保证每个二维数组的顺序是有序的,然后创建一个新的合并数组。合并思路:首先判断是否是空数组或者合并数组的第二位大于当前数组的第一位,这就不用合并了,直接添加到合并数组就可以了。然后合并是如何合并,直接把合并数组里面的最后一位改成最大值就可以了。
2025-05-06 16:26:00
327
原创 MySQL的所有锁,按粒度、兼容、实现策略
间隙锁锁前一个记录的间隙和后一个记录的间隙,比如id1 3 5 ,1和3有间隙 ,3和5之间有间隙,防止幻读,在事务 A 提交之前,事务 B 插入了一条。插入意向锁通常搭配间隙锁使用,在间隙之中添加数据的时候,可以申请插入意向锁,在同一时刻如果插入的位置不一样是可以允许的。Mysql的锁主要是为了解决并发问题,在并发的情况下保证数据的安全性。元数据锁的目的是保证整个表在操作的时候,不能被其他事务对表的结构进行修改。全局锁指的是锁住该数据库的所有表,所有表只能读不能操作。和间隙锁差不多,把自已也锁住了。
2025-05-05 22:41:29
497
原创 Leetcode (力扣)做题记录 hot100(3,560,160,206)
当时想的是,兔子乌龟相遇的想法,后面发现是错误的,那是看是否有环,然后看了题解,写的确实nb!循环A链表,到达null循环B B同理,两个链表要么一起到达同一个节点,要么同时到达null!双指针,遍历字符串,我们主要需要关注找到map里面有的时候如何更新慢指针,注意+1和防止指针回退就好。本文相关图片资源来自于网络中,如有侵权请联系删除!双指针,慢指针调整位置,快指针做计算。
2025-05-05 19:45:43
288
原创 Leetcode (力扣)做题记录 hot100(1,128,283,11)
首先使用hashset进行去重,然后把nums里面数添加到hashset里面,之后循环该set先判断该数字-1是否在set里面,如果在设置好该序列的首个数字,然后设置好序列长度,最后不断寻找 +1。循环nums了,弄错了,这样set的去重效果没用到,超出时间限制了。两次循环,第一次把零移除覆盖,第二循环找到有几个0,之后赋值。本文相关图片资源来自于网络中,如有侵权请联系删除!哈希表key为值 val为索引。经过修改,力扣上面可以过。
2025-05-04 15:09:15
217
原创 Java中的原子内置锁-synchronized
Synchoronized是Java实现线程同步中一个很关键的机制之一,它用于一个共享数据不能被多个线程同时访问,防止出现数据不一致等风险。Synchronized可以作用于代码块和方法,保证在同一时刻只能有一个线程执行代码块或方法。
2025-05-03 17:38:31
725
原创 Redis个人笔记(二)高可用、缓存、功能篇
高可用主从复制为什么Redis需要主从复制?主从复制实现方式主从复制具体操作全量同步主节点如何判断是不是第一次增量同步哨兵机制哨兵的作用监控自动故障恢复通知缓存 什么是缓存?缓存穿透缓存雪崩缓存击穿功能 过期删除策略定期定时惰性内存淘汰策略
2025-05-02 15:51:11
663
原创 Redis个人笔记(一) 基础篇
Redis诞生于2009年全称是RemoteDictionaryServer,远程词典服务器/是一个基于内存的键值型NoSQL数据库。特征.键值(key-value)型/va[ue支持多种不同数据结构,功能丰富.单线程/每个命令具备原子性.低延迟/速度快(基于内存、℃多路复用、良好的编码)。.支持数据持久化.支持主从集群、分片集群.支持多语言客户端
2025-04-29 15:45:40
867
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人