自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ConcurrentHashMap源码剖析

ConcurrentHashMap与HashTable类似,都是为了解决并发情况下HashMap的不安全问题,不过ConcurrentHashMap与HashTable比起来效率会更高一些。这里先说明Jdk8之后的ConcurrentHashMap源码。成员变量public class ConcurrentHashMap<K,V> extends AbstractMap<K,V> implements ConcurrentMap<K,V>...

2021-07-27 13:52:22 223

原创 AES算法demo(Java实现)

目录引言Cipher工具类简介 AES对称加密算法demoAES算法流程图字节代换/逆字节代换行移位/行移位逆变换列混合/逆列混合轮秘钥加秘钥扩展算法加/解密最终代码AESUtilUnicodeCNUtil引言最近使用到了AES算法实现了加解密操作。通过查看源码得知使用的是javax.crypto中的Cipher类,于是想研究下AES算法底层是如何实现的。Cipher工具类简介这里我直接贴出源码中关于Cipher的说...

2021-07-25 17:17:45 1352 2

原创 ReentrantLock可重入锁源码剖析

有了AQS的基础后(AQS(AbstractQueuedSynchronizer)源码初识),可以进一步分析基于AQS独占模式实现的Reentrantlock。首先来看看成员变量成员变量public class ReentrantLock implements Lock, java.io.Serializable { private static final long serialVersionUID = 7373984872572414699L; /** 提供所有实现机制..

2021-07-21 10:12:24 237

原创 AQS(AbstractQueuedSynchronizer)源码初识

前几天在对比Synchronized和ReentrantLock的关系和区别时,以及学习使用Semaphore、CountDownLatch和CyclicBarrier时,发现里面底层都有这样一个同步器。这让我觉得学习它们的底层原理,就不得不学习AQS自身的底层原理,那么,我们就来吧。这里参考了队列同步器(AQS)详解和这才是图文并茂:我写了1万多字,就是为了让你了解AQS是怎么运行的目录成员变量Node独占式同步组件的设计同步器提供的模板方法供子类重写的...

2021-07-18 16:14:37 365

原创 Java线程的基础同步策略介绍

关于线程中的同步策略,或者说是线程之间的协作,如何去进行? 关于这个问题,我们自然想到Java中线程之间能够共享的在堆区和方法区,应该从这里入手比较好。而具体工具我们能想到啥呢?利用 锁、信号量、条件变量,CAS?具体如何做呢?我们这里从一个常见的问题来入手解决,进而了解在Java中线程的常见同步策略有哪些。目录问题描述问题思考问题解决问题描述 使用两个线程交替打印出0-99的数字。问题思考 两个线程交替打印0-9...

2021-07-16 15:23:48 169

原创 基础线程池介绍(基于ThreadPoolExecutor类)

CachedThreadPool缓存线程池:使用方式ExecutorService cT= Executors.newCachedThreadPool(); /** 创建一个线程池,根据需要创建新线程,但在可用时将重用先前构造的线程。 这些池通常会提高执行许多短期异步任务的程序的性能。 如果可用,调用execute将重用先前构造的线程。 如果没有可用的现有线程,则会创建一个新线程并将其添加到池中。 60 秒内未使用的线程将被终止并从缓存中删除。 因此,保持空闲足够长时间的池不..

2021-07-16 14:23:56 337

原创 Netty模型讲解-通过TCP服务Demo

首先我在这列出Netty线程模型,我们的程序也会在此基础上进行:Demo:TCP服务要求:Netty 服务器在 6668 端口监听,Netty客户端能发送消息给服务器 "hello, 服务器~" 服务器可以回复消息给客户端 "hello, 客户端~"。代码:服务器端:主类:public class MyServer { public static void main(String[] args) throws InterruptedExceptio...

2021-07-16 08:48:50 912

原创 Java线程池ThreadPoolExecutor源码解析

它也处于JUC并发包中,是我们并发开发中的名器。线程池为什么出现?可以说这是一个帮我们管理程序中运行的多个线程,避免多个线程使用时的混乱,减少不必要的线程创建或线程销毁带来的开销。成员变量/*Since:1.5Author:Doug Lea*/public class ThreadPoolExecutor extends AbstractExecutorService { //int型32位来表示线程的状态(左3位)和线程数量(右29位) priva...

2021-07-15 16:41:21 346

原创 CopyOnWriteArrayList源码剖析

这JUC包里最典型的解决ArrayList线程不安全问题的数据结构,读写分离的思想,比Vector和Collections.synchronizedList高效。目录成员变量构造函数添加更改操作查询删除成员变量public class CopyOnWriteArrayList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable { ...

2021-07-14 16:04:09 114

原创 TreeSet源码剖析

成员变量public class TreeSet<E> extends AbstractSet<E> implements NavigableSet<E>, Cloneable, java.io.Serializable{ /** * The backing map. */ private transient NavigableMap<E,Object> m; // Dummy value t..

2021-07-14 11:04:25 277

原创 TreeMap源码剖析

目录成员变量构造函数添加查找删除成员变量public class TreeMap<K,V> extends AbstractMap<K,V> implements NavigableMap<K,V>, Cloneable, java.io.Serializable{ /** 用于维护此树映射中顺序的比较器,如果使用其键的自然顺序,则为 null。 * @serial */ priva

2021-07-13 17:10:59 245

原创 LinkedHashSet源码剖析

成员变量public class LinkedHashSet<E> extends HashSet<E> implements Set<E>, Cloneable, java.io.Serializable { private static final long serialVersionUID = -2851667679971038690L;} LinkedHashSet继承HashSet,其中只有序列化ID不一...

2021-07-13 13:22:58 194

原创 HashSet源码剖析

目录成员变量构造函数添加查询删除 提前说明下,HashSet的底层基于HashMap,理解HashMap底层思想后,再看HashSet底层会容易很多->HashMap源码剖析(Jdk1.8) 对比1.7成员变量public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable...

2021-07-12 18:50:07 167

原创 PriorityQueue源码剖析

成员变量public class PriorityQueue<E> extends AbstractQueue<E> implements java.io.Serializable { private static final long serialVersionUID = -7720805057305804111L; private static final int DEFAULT_INITIAL_CAPACITY = 11; /**..

2021-07-12 15:43:11 278

原创 Netty简介

Netty是什么Netty中的技术1. 一个Java开源框架,现为Github的独立项目2. 一个**异步的、基于事件驱动的**网络应用框架,用以快速开发高性能、高可靠性的网络 IO 程序。3. 主要针对TCP协议下,面向Clients端的高并发应用,或者P2P场景下的大量数据持续传输的应用。4. 本质是一个NIO框架,适用于服务器通讯相关的多种应用场景。为什么出现Netty其实Java是有自己的原生NIO库的,不过存在以下问题1)NIO 的类库和 API 繁杂,使用麻..

2021-07-11 19:47:30 368

原创 LinkedHashMap源码剖析

成员变量public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V>{ /** * 普通 LinkedHashMap 条目的 HashMap.Node 子类。 */ static class Entry<K,V> extends HashMap.Node<K,V> { //重新定义:为双链表 ..

2021-07-09 15:10:52 219

原创 HashMap源码剖析(Jdk1.8) 对比1.7

目录成员变量构造函数添加/修改扩容 (resize方法)查询删除序列化/反序列化成员变量public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable { private static final long serialVersionUID = 362498820763181265L;

2021-07-08 16:25:21 448

原创 LinkedList源码剖析

目录成员变量成员变量public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializable{ transient int size = 0; /** 指向第一个节点的指针。 不变式:(first == null &&am

2021-07-07 20:54:21 182

原创 ArrayList源码剖析

目录成员变量构造函数添加(尾插法)查询删除插入更新序列化与反序列化成员变量public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable{ private static final long serialVersionUID = 868

2021-07-06 15:29:21 629

原创 Spring IOC demo实现(单例模式)

这里写自定义目录标题Spring IOC demo实现(单例模式)Spring IOC demo实现(单例模式)IOC和AOP为Spring框架的核心,其中IOC主要利用了反射的思想, 能够反序列化出对象,存在IOC容器中,"new对象"的操作数量大大减少,对象的创建属性赋值工作也从研发转移到客户本身,这里假设我们能够从本地获取序列化信息,模拟IOC如何通过反射进行反序列化操作。首先我们建立实体类(Pojo)public class Car { private String name;

2021-07-05 09:51:50 594

空空如也

空空如也

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

TA关注的人

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