PunchCode

以终为始

重读Java多线程

在上半年我完成了《Java并发编程的艺术》的学习, 尽管一直没有写博客总结. 在这篇文章中, 我将挑战用一篇文章横扫Java多线程中, 我们必须了解

plantUML画架构图

写文档总是要画各种图, 不管是软件工程师需要的流程图/架构图, PM的甘特图等等. 市面上也有很多工具支持, 微软的Visio, 集成在conflue

几行代码解释Java的虚拟线程并不是万能解药

在JEP 444中, 对虚拟线程进行了第一次正式的介绍, 并且提供了preview api. 虚拟线程在JDK19中已经被发布, 并且预计在JDK21中发布最

Java中toMap与asList的坑

工作中遇到了两个坑, 讲述一下心路历程. toMap 写stream的时候有时会用到toMap来把某个实体的两个字段做一个映射关系. 简单的模拟如下, 没有任

ajax的发post请求的坑

在前端通过ajax请求向服务端发送请求是非常常见的场景, 在Java Web开发中, 通常用SpringMVC去取得请求体的数据. 而用ajax做p

润一润我们的Java代码

作为一个代码强迫症加代码外貌协会, 写代码的时候总会想提高代码可读性, 不管性能怎么样, 至少要长得好看. 后来又看到有推友的mentor说: &ld

Java String

在面试中遇到了一个问题: Java String是线程安全的吗? 我刚开始回答它是不安全的, 因为方法都没有加synchronized, 后来被面试官引导到

LRU与LFU

146. LRU缓存机制 双向链表(存储结构) + 哈希表(快速索引). key为node的一部分, 也是用来索引的标志. class LRUCache { HashMap<Integer, Node> map; DoubleList cache; int capacity; public LRUCache(int capacity) { this.capacity = capacity; map

数据结构与算法-并查集

框架 照搬的参考3. class UF { private int count; //记录连通分量个数 private int[] parent; //存储若干棵树 private int[] size; //记录树的大小 public UF(int n) { this.count = n; parent = new int[n]; size = new int[n]; for (int i = 0; i < n;

数据结构与算法-位运算

面试题05.07. 配对交换 提取奇数位左移1位, 或上偶数位右移1位. class Solution { public int exchangeBits(int num) { return (((num & 0x55555555) << 1) | ((num & 0xaaaaaaaa) >> 1)); } } 参考 labuladong算法 L