Java基础
文章平均质量分 67
weixin_52039716
这个作者很懒,什么都没留下…
展开
-
【Java基础】由Shiro自定义Realm引出的abstract类的相关知识
背景最近在学Shiro,学到自定义Realm这里的时候,追源码,追到SimpleAccountRealm这个类:由上面的继承图可以看出来,SimpleAccountRealm是一个实现类,它继承了AuthorizingRealm。AuthorinzingRealm抽象类中有一个抽象方法:SimpleAccountRealm实现了doGetAuthorizationInfo抽象方法,当我们使用subject.login(token)来登录用户的时候,SimpleAccountRealm类调用了它的原创 2021-03-10 06:02:47 · 132 阅读 · 0 评论 -
【Java基础】ConcurrentHashMap是个啥子?
HashMap是非线程安全的,如果我们在多线程并发环境下想安全的使用Map,就用concurrent包下的ConcurrentHashMap。底层数据结构与HashMap类似,ConcurrentHashMap的底层数据结构在JDK1.8起也发生了改动,由Segment数组+Entry数组+链表变为数组+链表/红黑树 。ConcurrentHashMap与HashTable一样,键和值都不能存null,因为当调用get(key)返回null时,无法判断key不存在还是key是null值。JDK 1.7原创 2021-01-28 09:20:52 · 81 阅读 · 0 评论 -
【Java基础】HashMap七进七出
目录简介底层数据结构链表什么时候转为红黑树?为什么不一开始就用红黑树?链表使用头插还是尾插?HashMap类的几个重要属性加入元素时的流程图简介HashMap继承了AbstractMap抽象类,实现了Map接口。用来存放键值对。与HashTable不同,HashMap不是线程安全的(HashTable 线程安全),而且键和值都可以存放null(HashTable键和值都不能存null): Map<Integer, Integer> hashMap = new HashMap原创 2021-01-27 12:52:15 · 132 阅读 · 2 评论 -
【Java基础】LinkedList解读(已经有ArrayList了,还要LinkedList作甚?)
简介LinkedList是一个双端链表,实现了List接口和Deque接口。因为底层的链表结构,它支持高效的插入删除操作,不需要进行数据平移。LinkedList的查询效率没有ArrayList高,查询需要一个一个的遍历节点。与ArrayList需要连续的内存空间存储数据不同,LinkedList通过将零散的内存使指针串联起来使用。LinkedList不是线程安全的,如果想变成线程安全,可以调用静态类Collections类中的synchronizedList方法。List<> sy原创 2021-01-26 12:23:18 · 90 阅读 · 0 评论 -
【Java基础】ArrayList核心源码详解
ArrayList核心源码详解概览ArrayList与Vector的区别ArrayList与LinkedList的区别扩容机制ensureCapacity方法核心源码解读概览ArrayList 继承了 AbstractList, 实现了 List, RandomAccess, Cloneable, java.io.Serializable 接口。ArrayList 的迭代器为 fail-fast - 除迭代器自带的remove,add方法外,任何产生迭代器之后的对数组的修改都会使迭代器报错(Conc原创 2021-01-25 13:33:58 · 86 阅读 · 0 评论 -
【Java基础】数据类型
【Java基础】数据类型数据类型拆箱装箱总结数据类型基本类型包装类型byte (8bits 取值范围 -128 ~ 127)ByteshortShortintIntegerlongLongfloatFloatdoubleDoublecharCharacterbooleanBoolean拆箱装箱自动拆箱装箱的原理:// 所有基本类型都对应有其包装类型Integer x = 2; // 装箱 实际是Inte原创 2021-01-10 05:26:03 · 135 阅读 · 0 评论 -
【Java基础】String类详细指南
String类详细指南源码不可变性StringBuffer 和 StringBuilder字符串缓存池intern方法new String("abc")字符串拼接源码下面是JDK15的String的源码:分析源码可以得出:String是一个final修饰的类,不能被继承。String基于用final修饰的byte数组实现,不可被修改。JDK1.8 使用char数组实现,一个char为2字节,一个byte为1字节,为了节省空间,JDK1.8之后将char数组改为byte数组。不可变性原创 2021-01-13 07:43:55 · 65 阅读 · 0 评论