自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(6)
  • 收藏
  • 关注

转载 缓存穿透,缓存雪崩,缓存击穿解决方案分析

缓存穿透,缓存雪崩,缓存击穿解决方案分析前言设计一个缓存系统,不得不要考虑的问题就是:缓存穿透、缓存击穿与失效时的雪崩效应。缓存穿透缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。在流量大时,可能DB就挂掉了,要是有人利用不存在的key频繁攻击我们的应用,这就是漏洞。解决方案有很多种方法可以有效地解决缓存穿透问题,最常见的则是采用布隆过滤器,将所有可能存在

2021-04-27 12:11:48 111 1

原创 Linux常用命令总结

Linux常用命令总结head (用于查看文件的开头部分的内容,有一个常用的参数 **-n **用于显示行数,默认为 10,即显示 10 行的内容)(1) 查看文件的开头 10 行 : head filename(2) 查看文件的开头 5 行 : head -n 5 filenametail (用于查看文件的结尾部分的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件)(1) 显示文件的最后 10 行 : tail filename(2) 跟踪文件的增长情况 : tai

2021-04-14 22:43:15 1066 3

原创 二叉树的遍历(递归与非递归实现)

二叉树的遍历(递归与非递归实现)先序遍历(1)递归实现List<Integer> res = new ArrayList<>();public List<Integer> preorderTraversal(TreeNode root) { if (root != null) { res.add(root.val); preorderTraversal(root.left); preorderTraversal(ro

2021-04-12 09:52:01 56

原创 写一个固定容量的同步容器

使用wait和notifyAll来实现public class MyContainer1<T> { final private LinkedList<T> list = new LinkedList<>(); final private int MAX = 10; // 容器最大容量 private int count = 0; public synchronized void put(T t) { while (lis

2021-04-08 23:45:46 136 3

原创 JVM内存模型

JVM内存模型JVM回顾JVM = 类加载器(classloader) + 执行引擎(execution engine) + 运行时数据区域(runtime data area)运行时数据区域Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则是依赖用户线程的启动和结束而建立和销毁。程序计数器(Program Counter Register)线程私有,它的生命周期

2021-04-08 11:26:39 80

原创 单例的几种实现方式

使用单例需要注意的关键点将构造函数访问修饰符设置为private通过一个静态方法或者枚举返回单例类对象确保单例类的对象有且只有一个,特别是在多线程环境下确保单例类对象在反序列化时不会重新构建对象单例模式的几种写法饿汉式(静态常量)class Singleton{ //1.构造器私有化,外部不能new private Singleton(){ } //2.本类内部创建对象实例 private final static Singleton ins

2021-04-08 11:11:15 2291 11

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除