- 博客(6)
- 收藏
- 关注
原创 redis的缓存穿透和雪崩效应
缓存穿透:在redis中一般用key去缓存中查询所对应的value值,如果不存在则去后端系统(入DB),一些恶意的请求会故意查询不存在的key,请求量很大,对后台系统的造成很大的压力,这就是缓存穿透;如何避免:1.对查询结果为null的key进行缓存,缓存时间稍短了一些,或者该key对应的数据insert后再进行清理缓存;2.对一定不存在的key进行过滤,把所有可能存在的key放到一个大的b...
2019-07-30 22:15:55 93
原创 Redis为什么能实现分布式锁
1.redis对于多实例的分布式服务应用程序,它是可共全局的,每个实例都可以访问同一个redis服务;2.redis的操作都是原子性的;3.redis的setnx;命令指定的key不存在时,则key设定值。如果key存在,则查询该key所对应的value返回剩余的时间;...
2019-07-30 17:04:49 474
原创 java虚拟机内存模型
java虚拟机内存模型总共有5个区域:1.程序计数器,2.java堆,3.虚拟机栈,4.本地方法栈,5.方法区。虚拟机栈:线程的私有空间,它是和java线程同时创建,它保存了局部变量,部分结果,并参与方法的调用和返回。本地方法栈:本地方法栈用于管理本地方法的调用,本地方式是C实现的。java堆:所有的对象和数组都在java堆中分配内存。方法区:类信息(即加载类时需要加载的信息,包括版本、f...
2019-07-29 22:07:47 55
原创 Map的实现类
1.Map的实现类有HashMap,LinkedHashMap,TreeMap。2.HashMap是无序的,LinkedHashMap,TreeMap是有序的(LinkedHashMap记录了添加数据的顺序,TreeMap默认是自然升序)3.LinkedHashMap的底层数据结构是哈希表+链表,链表记录了添加数据的顺序。4.TreeMap的底层实现是从过二叉树,二叉树的中序遍历保证了数据的...
2019-07-29 20:36:38 475
原创 多线程占用锁情况
@多线程占用锁情况在对象加锁的过程中,调用的notify 或者 notifyall 不会释放锁;在调用wait()会释放锁以方便其他线程调用;import java.util.List;public class HelloWorld { static Object object=new Object(); public static void main(String[] a...
2019-07-22 20:55:21 204
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人