- 博客(8)
- 收藏
- 关注
原创 什么是AQS?
AQS其实就是一个同步器,在java.util .concurrent包下的类都是基于AQS实现的。 AQS的内部实现是先通过使用CAS获取锁,如果获取到了,就更新state值,如果没获取到,AQS会再使用CAS获取一次,如果还是没获取到,那么就通过自旋,让当前线程进入循环状态,不断地尝试获取锁,直到获取成功后退出循环。 ...
2020-06-08 21:55:12
374
原创 Hibernate相关知识点
最近在复习Hibernate框架的时候,发现有一些细节忘记了,所以写一篇总结下重要的几个知识点。 ORM思想 ORM指的是Object Relation Mapping对象关系映射,它可以让我们以面向对象的方式操作数据库,具体点就是操作实体类即是操作数据库表,操作类的属性即是操作数据库字段。 Session 此Session应该与WEB的四大域对象的Session区分开,这个是Hibernate与数据库进行交互的核心对象。首先Session是线程不安全的,所以在程序中应该避免多个线程共用一个Session。
2020-05-17 12:12:13
167
原创 java中的四种引用
java中的对象分为四种引用,由强到弱依次是:强引用、软引用、弱引用、虚引用。 一、强引用 在我们日常编写程序中,所写的代码基本都是强引用。对于一个强引用的对象,即便抛出OutOfMemoryError,GC也不会强引用的对象进行回收操作,可谓与天同寿。 二、软引用 如果一个对象拥有软引用,内存足够的情况下并不会被GC回收,当内存不足时,GC会扫描然后回收软引用对象的内存,软引用可以用来实现内存敏...
2020-04-26 22:46:47
930
原创 栈和堆的区别
一、申请方式 stack:由系统自动分配。例如声明一个变量int a后,系统自动在栈开辟内存。 heap:需要手动申请,并指明分配的内存大小,在java中主要是通过new的方式。 二、申请大小的限制 stack:栈的容量是系统预先规划好的,通常为1M或2M,如果申请的空间超过了栈中的剩余空间,就会导致StackOverFlowError,能从栈获得的空间较小。 heap:堆的容量和系统有效的虚拟内...
2020-04-25 22:56:18
148
原创 ArrayList源码解析
ArrayList 内部是用 Object[]实现的。接下来我们分别分析 ArrayList 的构造、 add、 remove、 clear 方法的实现原理。 一、 构造函数 1)空参构造 /** * Constructs a new {@code ArrayList} instance with zero initial capacity. */ public ArrayList() { ar...
2020-04-21 14:11:18
163
原创 java通过对象序列化和反序列化实现克隆
java通过对象序列化和反序列化实现克隆总结 在JAVA中,我们想要实现对一个对象的克隆主要有两种方式 实现Cloneable接口并重写clone()方法; 实现Serializable接口,然后通过对象的序列化和反序列化操作实现真正的深度克隆。 我们首先写一个工具类,里面的代码即是我们通过序列化和反序列化实现克隆的核心代码: import java.io.ByteArrayInputStre...
2020-04-20 14:31:11
699
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅