javase
文章平均质量分 75
愛沢かりん
为什么要讨厌我们这些懒人,明明我们什么都没做
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java树化省市区等
一.在实际业务中常常需要将多级数据树化,传递给前端。 递归:资源消耗过大 多重循环:慢的很 stack:简单明了,消耗小,利用他的弹栈优点 二.省市区表 三.代码 (1)实体 (2)vo实体 (3)service业务代码 /** * 所有查询地区 */ @Override public List<AreaVo> selectAll() { //1.查询地区 List<Area> list = this.li原创 2021-12-25 14:03:20 · 707 阅读 · 0 评论 -
HashMap源码分析1.7和1.8
一.什么是HashMap 一·特性 HashMap基于Map接口实现,元素以键值对的方式存储,允许键和值为null,因为key不允许重复,因此只能有一个键为null。它是无序的。HashMap是线程不安全的。 二.jdk1.7 一.数据结构 jdk1.7hashmap是一个“链表散列”的数据结构,数组+单向链表。 Entry类是一个HashMap的静态内部类。 static class Entry<K,V> implements Map.Entry<K,V> {原创 2021-11-09 04:04:33 · 486 阅读 · 0 评论 -
JAVA内存模型JVM
1.堆(Heep):运行时的数据区,在运行时动态分配内存大小,垃圾收集器会自动收集不再使用的数据,由于要在运行时动态分配数据,存取速度较慢。 2.栈(Stack):栈数据是共享的,大小和生存期必须是确定的,缺乏灵活性。栈数据是共享的,存取速度较快,仅次于cpu寄存器。 详情:java内存模型要求调用栈和本地变量存放在线程栈(ThreadStack)中,对象存放在堆中。 本地变量可能是一个对象的引用,引用本地变量在线程栈中,对象在堆中,一个对象可能包含方法,这些方法可能包含本地变量,但也存放在线程栈中.原创 2021-10-03 00:24:23 · 248 阅读 · 0 评论 -
volatile关键字
1.保证内存可见性 先来看java内存模型图: 线程的共享变量都存储在主内存中,每个线程都有自己的工作内存,线程操作数据会先将主内存的数据加载到自己的工作空间,然后进行数据操作,最后写回到主内存。 多线程情况下,线程1拿到data=0,然后进行自增操作。在线程1没有将数据刷回主内存的情况下,线程2拿到了脏数据,然后进行自增操作。最后都刷回了主内存,结果是data只进行了一次自增操作。 在加上volatile关键字后,可以保证可见性。 线程1修改数据后,会立...原创 2021-09-28 13:40:21 · 186 阅读 · 0 评论
分享