置顶文章
精选分类
JDK源码
git系列
文章列表
单元测试
# 写在前面
从去年开始,就没静下心来去写点东西了。今天来叨叨一下单元测试。
这篇文章,算我是心血来潮想重新开始写点什么的开始。虽然不知道下篇会说些什么,那就直接进入正题吧。
JUnit.
写 Java 的同学对这个 JUnit 肯定是熟悉的。嗯,大概也就是熟悉 @Test .
本着务实的态度,作为 JUnit 的第一篇文章,先不说 JUnit 的辉煌历史。兵出奇招,直接看 JUnit 5.
# JUnit 5
JUnit 5 不是 JUnit 5.x 版本。JUnit 5 其实是 Junit 的一个代号,可以理解为 JUnit 的第 5 代。
JUnit 5 有三个组件 JUnit...
more...
深入解析 Huffman 编码:原理与应用
Huffman 编码,作为一种高效的前缀编码方式,由美国计算机科学家 戴维·A·哈夫曼 于 1952 年提出。它在数据压缩领域具有重要地位,尤其适用于文本、音频、视频等数据的压缩处理,其核心优势在于能够根据字符出现频率动态生成最优的编码方案。
# Huffman 编码原理
Huffman 编码的基本思想是基于字符出现的频率来构造一种变长编码。对于出现频率高的字符,赋予较短的编码;反之,对出现频率低的字符赋予较长的编码。这种策略确保了整体编码长度最小化,从而实现高效的数据压缩。
具体实现步骤如下:
计算每个字符的出现频率。
将每个字符及对应的频率视为一个节点,构建一颗赫夫曼树( Huffman...
more...
JVM GC 分析
# 频繁 GC
今天分享一个面试题,频繁 GC 怎么处理…
且不说为什么频繁 GC , 先聊聊你怎么发现 JVM 频繁 GC 的呢?
告警啊!对的。
第一种就是 FullGC 的告警,
第二种就是 机器 CPU 的负载过高
第三种就是 大面积的接口超时,无法处理请求。
那就好说了,咱们分析下什么地方可以进行 GC ?
堆! 但不仅仅是堆,还是堆外内存也会进行 GC 。
当然我们主要说堆!
先看一下常用的名词.
# YoungGC
YoungGC 指发生在新生代的垃圾收集动作,新生代中的对象朝生夕死,所以 Minor GC 非常频繁,回收速度也比较快。频繁的 YoungGC 是正常的,要看下...
more...
Https连接过程
# Https 的连接过程
Https 全称是 Hypertext Transfer Protocol Secure ,超文本传输安全协议.
Https 相比 Http 是在 TCP 与 HTTP 之间多加了一层 SSL ( Secure Socket Layer 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持)/ TLS ( Transport Layer Security ,安全传输层协议)
Http 协议采用明文传输信息,存在信息窃听、信息篡改和信息劫持的风险,而协议 TLS/SSL 具有身份验证、信息加密和完整性校验的功能,可以避免此类问题发生,所以 HTTP...
more...
JUC的线程同步类
Juc 提供了很多关于线程安全的类,比如:
线程池相关的: ThreadPoolExecutor 、 Executors 等;
锁相关的,如 Lock 、 ReadWriteLock 、 ReentrantLock , ReentrantReadWriteLock 等;
线程安全的数据结构,应用于线程安全的集合中,如 ConcurrentHashMap 、 LinkedBlockingQueue 、 DelayQueue 等;
还有高级的线程同步的类,如 CountDownLatch 、 CyclicBarrier 、 Semaphore , Phaser 等。
还有一些原子类。如...
more...