JDK源码学习
JDK源码学习
雕爷的架构之路
前美团外卖系统核心参与者,创过业,干过老板,码过代码,撸过一点儿运维,现在是独立开发者,专注分享Java技术栈,偶尔也讲讲互联网面试那点事儿
展开
-
聊聊经典数据结构HashMap,逐行分析每一个关键点
#本文基于JDK-8u261源码分析1 简介HashMap是一个使用非常频繁的键值对形式的工具类,其使用起来十分方便。但是需要注意的是,HashMap不是线程安全的,线程安全的是ConcurrentHashMap(Hashtable这种过时的工具类就不要再提了),在Spring框架中也会用到HashMap和ConcurrentHashMap来做各种缓存。从Java 8开始,HashMap的源码做了一定的修改,以此来提升其性能。首先来看一下HashMap的数据结构:整体上可以看作是数组+链表的形式。数原创 2020-09-29 22:32:58 · 379 阅读 · 0 评论 -
腾讯一面!说说ArrayList的遍历foreach与iterator时remove的区别,我一脸懵逼
本文基于JDK-8u261源码分析1 简介 ArrayList作为最基础的集合类,其底层是使用一个动态数组来实现的,这里“动态”的意思是可以动态扩容(虽然ArrayList可以动态扩容,但却不会动态缩容)。但是与HashMap不同的是,ArrayList使用的是1.5的扩容策略,而HashMap使用的是2的方式。还有一点与HashMap不同:ArrayList的默认初始容量为10,而HashMap为16。有意思的一点是:在Java 7之前的版本中,ArrayList的无参构造器是在构造器阶段完原创 2020-09-27 20:31:53 · 141 阅读 · 0 评论 -
使用Lock与ReentrantLock模拟消息队列阻塞,生产与消费问题模拟
//测试结果package com.cn.test.queue;public class EggTest { /** * @param args */ public static void main(String[] args) { //创建一个鸡蛋篮子,实现阻塞队列 EggBlockingQueue eggs=new EggBlockingQueue(); in原创 2017-06-12 20:47:05 · 459 阅读 · 0 评论 -
java按指定的字节Byte的起始位置截取长度截取字符串
java按指定的字节Byte的起始位置截取长度截取字符串,自动舍弃超出字节长度的汉字package com.cn.util;import java.io.UnsupportedEncodingException;/** * @author Administrator * */public class StringUtil { /** * 判断是否是一个原创 2017-06-11 16:16:56 · 14638 阅读 · 0 评论