并发
leogreat110
这个作者很懒,什么都没留下…
展开
-
泛型
泛型-接口-继承-多态 转自https://www.cnblogs.com/coprince/p/8603492.html转载 2021-04-07 15:20:54 · 58 阅读 · 0 评论 -
分布式Session的几种实现方式
https://blog.csdn.net/u011213044/article/details/80525997转载 2021-04-07 09:48:00 · 75 阅读 · 0 评论 -
JDK源码直击
JDK源码其实没什么好总结的,纯粹看个人,总结一下比较重要的源码: (1)List、Map、Set实现类的源代码 (2)ReentrantLock、AQS的源代码 (3)AtomicInteger的实现原理,主要能说清楚CAS机制并且AtomicInteger是如何利用CAS机制实现的 (4)线程池的实现原理 (5)Object类中的方法以及每个方法的作用 转自作者:Java黎先生 链接:https://www.jianshu.com/p/83e4c4fdd6eb ReentrantLoc...原创 2021-04-06 10:47:58 · 80 阅读 · 0 评论 -
常见的数据结构
数组 链表 双向链表 二叉树 平衡二叉树 b+ 红黑树 1.Hash索引 Hash索引把数据以hash形式组织起来,因此查找某一条记录的时候,速度非常快。同时.hash算法的索引有个缺点,因为它不是按照大小排序的。所以,它无法按照范围进行查找。 ———————————————— 2.二叉树结构索引二叉树的定义:1.任意节点左子树不为空,则左子树的值均小于根节点的值;2.任意节点右子树不为空,则右子树的值均大于于根节点的值;3.任意节点的左右子树也分别是二叉查找树;4.没有键值相等..原创 2021-04-01 16:03:48 · 80 阅读 · 0 评论 -
volatile
本文主要为摘抄拼凑 Java中volatile的作用:1、Java提供了volatile关键字来保证可见性;2、保证有序性,代码为【context = loadContext();inited = true;】;3、提供double check。(摘抄) 如何理解: Java编程语言允许线程访问共享变量,那么为了确保共享变量能被准确和一致的更新,线程应该确保通过排他锁单独获得这个变量,或者把这个变量声明成volatile,可以理解volatile是轻量级的synchronized。 使用volati原创 2021-04-01 10:13:20 · 59 阅读 · 0 评论 -
hashmap、hashtable和concurrenthashmap原理
hashmap: HashMap就是数组+链表(哈希表或者散列函数)+红黑树的组合实现,每个数组元素存储一个链表的头结点,本质上来说是哈希表“拉链法”的实现。 主干是数组,entry的value是链表,链表>8个后转红黑树。普通时间复杂度就是hash, 一般时间复杂度O(logn) 主要有put和get方法,put的原理是,通过hash&length-1计算index,此时记作Entry[index]=该元素。如果index相同就是新入的元素放置到Entry[index],原先的元素记作原创 2021-04-01 09:43:46 · 59 阅读 · 0 评论 -
缓存穿透、缓存雪崩和缓存击穿
1.缓存穿透 定义:查询不存在的值,缓存中没有,直接去查数据库,失去了缓存的意义。大并发下,利用此漏洞造成数据库挂掉。 解决方法: 最常见的则是采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被 这个bitmap拦截掉,从而避免了对底层存储系统的查询压力。 另外也有一个更为简单粗暴的方法(我们采用的就是这种),如果一个查询返回的数据为空(不管是数 据不存在,还是系统故障),我们仍然把这个空结果进行缓存,但它的过期时间会很短,最长不超过五分钟。 2....原创 2021-03-31 09:14:13 · 58 阅读 · 0 评论