摘要:
前言 之前在项目中使用到了并发队列,场景为多写多读,查阅资料推荐使用ConcurretLinkedQueue,但不知道为什么。这里对并发队列ConcurrentLinkedQueue与LinkedBlockingQueue的源码做一个简单分析,比较一下两者差别,并测试在不同并发请求下读写的性能差异。 阅读全文
摘要:
ThreadLocal类 该类主要用于不同线程存储自己的线程本地变量。本文先通过一个示例简单介绍该类的使用方法,然后从ThreadLocal类的初始化、存储结构、增删数据和hash值计算等几个方面,分析对应源码。采用的版本为jdk1.8。 ThreadLocal-使用方法 ThreadLocal对象 阅读全文
摘要:
二叉搜索树的最近公共祖先 对于二叉搜索树,设两个节点的最近公共祖先为节点X,那么必有X的值介于两个节点的值之间,而且仅有一个节点满足条件。 基于这个条件,我们可以从根节点开始往下查找,思路就和二叉搜索树查找节点的思路类似。如果当前节点值比两个节点都大,则进入左子树,如果当前节点值比两个节点都小,则进 阅读全文
摘要:
本文将从ArrayList类的存储结构、初始化、增删数据、扩容处理以及元素迭代等几个方面,分析该类常用方法的源码。 数据存储设计 该类用一个Object类型的数组存储容器的元素。对于容量为空的情况,提供了两个成员变量来表示。 // 用于存储容器元素的数组,数组长度不小于容器内元素个数 transie 阅读全文
摘要:
介绍 AVL是一颗二叉查找树,每个节点的平衡因子定义为这个节点两颗子树的高度差,这个值要么是0,要么是1或-1。其查询的最差时间复杂度为O(lgn)。 AVL树在构造和后续增删节点的过程中一直保持着其特性,但是维持平衡的开销比较大。 红黑树对平衡的要求条件没有AVL树那么苛刻。红黑树是一种确保拥有对 阅读全文
摘要:
LRU概述 LRU算法,即最近最少使用算法。其使用场景非常广泛,像我们日常用的手机的后台应用展示,软件的复制粘贴板等。 本文将基于算法思想手写一个具有LRU算法功能的Java工具类。 结构设计 在插入数据时,需要能快速判断是否已有相同数据。为实现该目的,可以使用hash表结构。 同时根据LRU的规则 阅读全文
摘要:
引用官网介绍: Hessian is a dynamically-typed, binary serialization and Web Services protocol designed for object-oriented transmission. Hessian 是动态类型、二进制、紧凑 阅读全文
摘要:
常见的Json转换工具有google的gson和阿里的fastgson。目前主流策略:POJO序列化成JSON字符串用Gson库,JSON字符串反序列化为POJO,用fastJson库。 Netty中JSON编码和解码原理 JSON格式仅仅是字符串的一种组织形式。所以,传输JSON的所用到的协议与传 阅读全文
摘要:
如下代码示例:实现了Serializable接口(强制)的类,可以通过ObjectOutputStream的writeObject()方法转为字节流。 字节流通过ObjectInputStream的readObject方法可以逆序列化为对象。 1 @Data 2 static class Simpl 阅读全文