- 博客(19)
- 收藏
- 关注
原创 【Java-EE进阶】代理模式详解
代理模式是一种通过代理对象访问真实对象的设计模式,可在不修改原对象的基础上扩展功能。分为静态代理和动态代理两种。静态代理需要为每个目标类手动创建代理类,灵活性差;动态代理则更灵活,包括JDK动态代理(基于接口)和CGLIB动态代理(基于继承)。JDK动态代理通过InvocationHandler接口实现方法拦截,而CGLIB通过MethodInterceptor接口实现。两者相比,JDK代理效率更高,但CGLIB能代理未实现接口的类。动态代理在运行时生成字节码,比静态代理的编译时生成更灵活。
2025-06-12 11:36:57
543
原创 LRU LFU FIFO缓存以及代码实现
介绍了三种常见缓存策略的实现方法。LRU缓存通过哈希表+双向链表实现,将最新访问数据移至头部,淘汰尾部数据;LFU缓存优化版采用频率哈希表+双向链表结构,按使用频率维护节点;FIFO缓存借助LinkedHashMap的插入顺序特性自动淘汰最早数据。各策略均提供Java实现代码,其中LRU和优化LFU实现O(1)时间复杂度,而基础LFU使用优先队列实现O(logN)复杂度。文章对比了三种策略的数据结构选择和操作流程,并针对LFU基础实现的缺陷给出了优化方案。
2025-06-11 10:59:52
808
原创 SpringAOP详细解读
Spring Aop(Aspect-Oriented Programming,面向切面编程)是一个Spring框架中的一个核心模块,主要用于处理横切关注点。
2025-06-10 11:42:19
578
原创 【Java-EE初阶】synchronized详解
1.AQS是多线程中的队列同步器。2.AQS的内部是一个先进先出的双向队列,线程在队列中进行排队。3.AQS中的属性state为0时就是无锁状态(默认),当一个线程将state设置为1的时候就获取了该锁。4.state属性的修改主要使用CAS,保证多线程数据修改的原子性。
2025-06-09 11:21:45
707
原创 【Java-EE初阶】序列化和反序列化
在进行反序列化时,Jvm会把传来的字节流中的serialVersionUID与本地实体类中serialVersionUID进 行比较,如果相同则认为是一致的,便可以进行反序列化,否则就会报序列化版本不一致的异常。使用单利模式时,通常希望这个对象是唯一的,但是如果该类是可序列化的,单例模式初始化的对象不一致,可以。父类实现了序列化,子类没有,他的子类都将自动的实现序列化,不需要显示实现序列化接口。序列化保存的是对象的状态,而静态变量属于类的状态,因此,序列化并不保存静态变量。
2025-04-03 10:57:38
846
原创 c语言-联合体和枚举
像结构体一样,联合体也是由一个或者多个成员构成。这些成员可以不同的类型。但是编译器只为最大的成员分配足够的内存空间。联合体的特点就是所有成员共用一块空间。所以联合体也叫:共用体。给联合体其中一个成员赋值,其他成员的值也跟着变化。首先我们先计算联合体的大小可以看出来这个联合体的大小个为4个字节,同时呢也能看出来这两个公用一块空间。
2025-03-29 10:57:51
766
原创 C语言-结构体内存对齐
我们要想掌握内存对齐,首先得先知道对齐规则1.结构体的第一个成员对齐和结构体变量起始位置偏移量为0的地址处2.其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处对齐数=编译器默认的一个对齐数与该成员变量大小的较小值-VS中默认的值为8-Linux中gcc没有默认对其书,对齐数就是成员自身的大小。3.结构体总大小为最大对齐数(结构体中每个成员变量都有一个对齐数,所有对齐数中最大)的整数倍。(所以结构体中开辟的空间有的不一定能够用到)
2025-03-29 09:30:56
878
原创 【网络原理】Tcp相关的一些机制
Tcp的相关特性:1.有链接 2.可靠传输 3.面向字节流 4.全双工其中可靠传输是重中之重,是tcp最核心的特性,所谓的可靠传输不是说100%能够将数据传输到对方,而是退而求其次,1.发送方将数据发出去之后,能够知道接收方是否收到数据。2.一旦发现对方没有收到,就可以通过一系列的手段来进行“补救”。1.确认应答发送方,把数据给接收方之后,接收方收到数据就会给发送方返回一个应答报文。发送方,如果收到了这个应答报文,就知道自己的数据是否发送成功了。
2024-11-23 10:49:45
2052
原创 LeetCode和牛客网有关列表题目总结—Java
举个例子,有一段路程一个人的速度是另一个人的速度的两倍,当快的走完全程的时候,慢的正好走到中间,这里也是一样的。head的指向无非就是这两个链表其中的一个,在第一次比较的时候就出现了,head等于list1或等于list2,而cur也需要这样赋值,之后就是来比较list1和list2的val值,小的链接在cur的后面。在进行回文结构的判断的时候,我们先想到的是让一个引用在前面一个引用在后面,分别进行遍历。相交链表一定是Y字型的,而不是X字型的,因为相交链表是两个链表的其中一个节点的next域相同。
2024-10-11 22:05:10
1938
原创 Java中的多态
1.静态为什么不能重写,是因为静态的方法不属于对象,而重写的目的是满足子类自己的需要,并且进行调用的,这一过程必须有对象的实例化,所以静态的方法不能重写。向下转型用的少,一旦转换失败就是抛异常,就引入了instanceof,如果表达式为true,就会安全转换。B的构造方法中调用了func方法,此时会触动发生动态绑定,会调用到D中的func。通过父类引用,调用这个父类和子类重写的方法,结果是调用了子类的方法。所谓的向下转型就是父类的引用,去调用子类特有方法。也就是通过父类的引用来调用重写的方法。
2024-10-02 17:42:30
936
原创 Java中的继承
在我们的身边一直会听继承这个概念和多态这个概念,那么继承和多态到底是什么呢?在我们的生活中会发现许多有关联的事物,而在编程中也是这样,所谓的继承就是对多个事物进行共性抽取,实现代码的复用。面这两个类成员变量和方法都十分类似,我们写两个类是不是有点浪费时间呢?我们可以通过继承写一个Animal类,让这两个类继承Animal类中成员变量和方法,达到代码的效果。
2024-10-01 19:01:45
1050
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人