自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 (Java基础篇)八、Java中的两种代理(JDK与CGLib)

代理模式可以避免对象直接暴露,静态代理每次需要新的业务均需要预添加额外的代理类。动态代理则是在编译或运行生成的,大大降低了代理类与被代理类的耦合,提高扩展性和复用性。首先用一段代码先看看JDK动态代理的用法。

2023-06-20 22:03:05 665

原创 (Java基础篇)七、Java关于Class类的理解

其中Type比较简单,只有一个默认方法,获取类型名(全程),但是Class也重写了它,作用是如果是数组类型,根据维度再添加一些细节(如果是二维,那就后面加两个"[][]")。有一点需要注意的是,无论是用Field的get和set方法还是Method的invoke方法,都需要传入具体实例对象,因为在获取Field或Method的时候,获取的是Class的而非Instance的。这里面有三大关键类,第一个是Class类,第二个是Field类,第三个是Method类,着三种类分别对应:类名、属性、方法。

2023-06-19 15:54:42 75

原创 (Java基础篇)六、Java理解强引用和弱引用,以及ThreadLocal的value是强引用的原因

最近在学习SpringSecurity,结合SecurityContextHolder也明白了value必须是强引用,否则鉴权完之后,value就不存在强引用会被回收的。强引用和弱引用主要区别在于什么时候被垃圾回收,强引用就是我们最常使用的类型,在垃圾回收的时候,如果一个对象仅仅存在它的弱引用,那么它会被无情的回收掉。在上一节中的源码深入,我发现ThreadLocalMap的key是弱引用,但是value却是个强引用,当时没想明白就没写了,现在想明白了。上面实线代表强引用,虚线弱引用。

2023-06-15 17:27:07 265 1

原创 (Java基础篇)五、Java中的ThreadLocal类

多线程编程中往往可能需要专门为一个线程维护独有的数据,例如一场考试中,有100个人在做题,每个人虽然都是同一个试卷,但是作答的结果肯定有不同,那么就需要有一个线程隔离的变量保存每个人的答案。首先看Thread源码。

2023-06-15 15:49:10 134 1

原创 (Java基础篇)四、Java源码理解String、StringBuffer和StringBuilder

String特性不做具体分析,主要关注一下具体的源码以及有关于hash碰撞的问题。上图为String类结构图,Comparable接口主要要求实现类能够被Arrays.sort(),具体怎么实现可以看看源码1153行,核心代码就是比较每一个字符的大小。String还实现了CharSequence接口,该接口是char值的可读序列,提供对许多不同类型的字符序列的统一只读访问。

2023-06-14 21:44:23 35

原创 (Java基础篇)三、Java引用拷贝、浅拷贝、深拷贝

其次在浅拷贝中,name和tree都创建了新的引用,虽然在创建之初指向的地址还是相同的,但是后续修改的时候会指向新的地址。例如new了一棵香蕉树,因为香蕉是浅拷贝,内部的tree在是新创建的,引用指向香蕉树的时候并不会影响苹果。首先在引用拷贝中,添加了一个新的苹果(apple1),它由用引用拷贝创建,当修apple1.tree时由于是引用复制,导致apple.tree也被修改。引用拷贝是拷贝变量的引用,浅拷贝在堆中创建一个新的对象,但是对象内部的引用还是指向同一个地址。深拷贝就是完全全新的变量。

2023-06-14 19:52:13 134

原创 (Java基础篇)二、Java堆内存和栈内存

堆内存和栈内存是Java在Ram中存储数据的空间。通过new得到的的对象和数组都存于堆中,遵循先进先出原则,允许动态分配内存(但是会造成效率低的问题)。Java虚拟机的垃圾回收会自动管理堆内存,不需要用户进行操作。栈内存主要用来执行程序,栈内存存储基本类型的变量和引用。栈执行先进后出的原则,效率更高。

2023-06-14 16:53:13 215

原创 (Java基础篇)一、Java语言特点

本专栏主要学习Java基础和Spring以及开发的一些其他工具等,三个月内迅速通过冲刺offer。

2023-06-14 15:58:58 54

空空如也

空空如也

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

TA关注的人

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