- 博客(17)
- 收藏
- 关注
原创 通俗易懂的同余定理解释
两个数如果除以同一个数(比如12)后余数相同,它们就是“同余”的。:你要快速判断一个大数是否能被3整除(比如123456789)。就像钟表转一圈回到原点,同余帮我们找到数学中的“循环规律”!,它能让复杂的问题变简单(比如避免大数计算、优化算法)。:计算数组中多少个连续子数组的和是K的倍数?
2025-04-02 15:22:09
658
原创 LinkedList集合-源码解读
节点中,包含当前元素值(item)、前驱节点指针(prev)和后继节点指针(next)。链表通过头节点(first)和尾节点(last)指针维护整体结构,支持双向遍历。这种设计使得在头部和尾部插入/删除元素的时间复杂度为O(1),但随机访问需要遍历链表,时间复杂度为O(n)。相比数组实现的ArrayList,LinkedList更擅长频繁的增删操作,但牺牲了随机访问性能,且每个元素需要额外存储前后节点的引用,内存开销更大。底层采用双向链表结构实现,每个元素被封装在。不需要扩容,这是它与。
2025-03-30 11:53:43
358
原创 docker环境运行redis
创建一个redis文件夹,里面用于存放redsi的配置文件和持久化的数据,在linux中创建,用于和docker中的redis容器进行数据卷挂载。我这里在windows用Another Redis Desktop Manager连接redis看看外部连接是否能够成功连接。你的云服务器/虚拟机的linux系统里面已经有docker环境。redis容器内配置文件的地址可以到dockerhub上查看。复制对应的命令到linux中拉取镜像,这里我以。找到自己想要使用的redis镜像版本。到这里镜像就拉取成功了。
2025-03-29 12:50:45
492
原创 Java模拟双向链表
双向链表(Doubly Linked List) 是一种链式数据结构,每个节点包含数据部分和两个指针:一个指向前驱节点,另一个指向后继节点。与单向链表相比,双向链表可以从任何节点向前或向后遍历。2. 创建几个示例节点,模拟链表运行结果:3. 实现链表的插入运行结果:4. 为什么链表的插入效率要高于数组的?因为链表在插入的时候只需要改变前驱和后序的指向,数组的插入需要遍历找到指定位置然后将后面的元素依次向后移动再插入数据,造成很大的开销。
2025-03-22 16:15:18
323
原创 Vector集合-源码解读
是线程安全的,在开发中,需要线程同步安全时,推荐使用。底层也是一个对象数组 elementData。默认容量是指定容量,容量不足需要扩容时每次按照。默认容量是10,容量不足需要扩容时每次按照。2.容量不足需要扩容时,扩容为原来的2倍。1.初始化集合容量为10。
2025-03-22 15:08:52
218
原创 ArrayList集合-源码解读
基本等同于 ArrayList ,所以在多线程情况下,推荐使用 Vector,因为Vector是线程安全的集合。类型的数组elementData,因为数据的类型是Object的,使用ArrayList可以存储任意类型的变量。来修饰控制线程安全, 所以ArrayList集合是线程不安全的,而。容量为指定大小,如果需要扩容,则直接扩容为。由源码可以看到add()方法并没有使用。对象时,如果使用的是无参构造器,则初始。如果使用的是指定大小的构造器,则初始化。容量为0,第一次添加,则扩容。表示该属性不会被序列化。
2025-03-22 14:13:27
411
原创 Redis实现消息队列
Redis Stream 的消费者组模式是一种高级消息队列实现方式,允许多个消费者以组的形式协同消费 Stream 中的消息。mygroup:消费者组的名称。Redis 的 Pub/Sub 模式允许生产者将消息发布到频道,所有订阅该频道的消费者都会收到消息。如果消费者未确认消息,消息会一直留在 Pending 列表中,其他消费者可以重新处理这些消息。消费者处理完消息后,使用 XACK 确认消息,确认后消息会从 Pending 列表中移除。:Redis 会记录每个消费者组的消费进度,确保消息不会被重复消费。
2025-03-21 17:51:51
2213
原创 Spring boot 自动配置原理(易理解)
自定义redis-starter,要求当导入redis坐标时,SpringBooot自动创建Jedis的Bean.1.创建初始化Jedis的Bean的配置类用于标记一个类为配置类。配置类的作用是定义 Spring 容器中的 Bean是将配置属性类(使用 @ConfigurationProperties 注解的类)注册为 Spring Bean,从而使配置属性可以被注入到组件中。是一个条件注解,它的作用是:当 Spring 容器中不存在名为 jedis 的 Bean 时,才会创建和注册当前的 Bean。
2025-03-20 19:28:01
1520
原创 Redisson分布式锁
可重入锁的主要意义在于防止死锁,特别是在嵌套调用或递归调用的情况下。Java 中的和Lock都支持可重入性,确保线程在持有锁的情况下可以再次获取同一个锁,从而避免阻塞自身。超时释放机制虽然能有效防止死锁,但也可能带来安全隐患,主要体现在误删锁、锁失效后的并发问题以及超时时间难以确定等方面。为了缓解这些问题,可以使用唯一标识防止误删锁、实现锁的续期机制、合理设置超时时间,或使用更高级的分布式锁。在实际应用中,需要根据具体场景选择合适的解决方案,在安全性和性能之间进行权衡。
2025-03-19 14:21:13
1140
原创 java中动态代理
Java动态代理通过运行时生成代理类实现功能扩展,核心基于InvocationHandler接口定义增强逻辑(如日志/权限),利用Proxy.newProxyInstance()动态创建实现指定接口的代理对象。仅支持接口代理,通过反射调用目标方法,实现业务逻辑与横切关注点解耦,广泛应用于Spring AOP、RPC调用等场景,相比CGLIB更轻量但无法代理类,是面向接口编程的典型实践。
2025-03-12 16:18:22
917
原创 学生成绩管理系统
基于mysql数据库实现的学生成绩管理系统,主要实现技术为:vue+element-plus+python-flask以上就是学生成绩管理系统的内容。
2024-06-25 12:04:13
2243
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅