
java
KlayLee
软件工程学生
展开
-
谈一谈Java中的深拷贝和浅拷贝
在 Java 开发中,对象拷贝或者说对象克隆是常有的事,对象克隆最终都离不开直接赋值、浅拷贝、深拷贝 这三种方式,其中直接赋值应该是我们最常用的一种方式吧,对于浅拷贝和深拷贝可能用的少,所以或多或少存在一些误区,这篇文章会详细的介绍这三种对象克隆方式。 前置知识 值类型:Java 的基本数据类型,例如 int、float 引用类型:自定义类和 Java 包装类(String、Integer) 直接赋值:直接赋值是我们最常用的方式,在我们代码中的体现是Persona = new Person();原创 2020-08-14 10:38:58 · 295 阅读 · 0 评论 -
一次对AQS和ReetrantLock的源码理解和解析
AQS简介 AQS在jdk1.8中全称为AbstractQueuedSynchronizer,中文翻译为同步器,是各种锁比如ReetrantLock、CountDownLatch、Semaphore的基础,AQS实现了锁、排队、锁队列这些框架但是对于tryAcquire、tryRelease、tryAcquireShared、tryReleaseShared、isHeldExclusively这些方法就需要子类比如之前的ReetrantLock等去实现。所以在了解ReetrantLock的底层原理之前,我们原创 2020-08-03 10:52:34 · 180 阅读 · 0 评论 -
从HashMap到ConcurrentHashmap(jdk1.7到1.8)源码解析
HashMap jdk1.8源码解析 HashMap 底层的数据结构是:数组 + 链表 + 红黑树。如下: 其中当链表的长度大于等于 8 时,链表会转化成红黑树,当红黑树的大小小于等于 6 时,红黑树会转化成链表。 HashMap的特性: static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16); }原创 2020-07-24 01:36:24 · 123 阅读 · 0 评论 -
简单工厂和工厂方法模式的代码实现和区别联系
简单工厂 简单工厂的定义是:由一个工厂对象决定创建出哪一种产品类的实例。 需要注意的是,简单工厂属于创建型,但是却不属于GOF23种设计模式 它的适用场景是: 工厂类负责创建的对象比较少 应用层只知道传入工厂类的参数,对于如何创建对象并不关心 所以简单工厂方法也有对应的优点和缺点: 优点:它只需要传入一个正确的参数就能获取对应的对象,而不需要知道其创建的细节 缺点:它的职责相对过重,增加新的产品需要修改工厂类的判断逻辑,违背类开闭的原则 简单工厂实现过程 为了实现简单工厂,我们需要建立一个抽象类,然原创 2020-07-23 14:39:12 · 219 阅读 · 0 评论 -
观察者模式——设计模式实现以及源码解析
观察者模式概念 观察者模式(Observer),又叫发布-订阅模式(Publish/Subscribe),定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新。 这种设计模式在很多的中间价中都有具体的实现,比如在Redis的主从服务器中,当从服务器完成了各种步骤进入与主服务器命令传播的步骤之后,每次主服务器接收到一次外部命令写入,都会把该命令广播给所有的从服务器。这种一对多的关系就是观察者模式,其中观察者是各个从服务器,被观察者是主服务器。下面我们就通过jav原创 2020-07-23 00:35:54 · 347 阅读 · 0 评论