-
Java 中的 InheritableThreadLocal
使用场景 父子线程中传递数据的方式。 示例代码 main线程中设置了abc,之后再new一个child线程,在child线程中使用inheritableThre
-
Java 中的 ThreadLocal
说明 这里的内存泄露指的是:Thread长时间运行,尤其是线程池中的线程,由于Thread中的threadLocals中的Entry数组包含了关联ThreadL
-
Java 中 Thread 的中断方法
interrupt() 给线程设置一个中断状态,线程仍会继续运行。 但如果线程正好处于等待状态(如:调用wait()、sleep()、join()方法),此时调
-
Java 中 Thread 的 join 方法
介绍 Waits for this thread to die. join()方法上的注释是等待该线程销毁。 t1.join()表示等待t1线程执行完成,继
-
Java 中 Thread 的状态
示意图 NEW 初始化状态 new一个Thread(Runnable)或Thread子类等(不调用start()方法),线程就进入NEW状态。 Thread
-
Java 中的强引用、软引用、弱引用、虚引用、引用队列
强引用 不会被垃圾回收,OOM也不会对该对象进行回收。因此强引用也是造成Java内存泄漏的主要原因之一。 new出来的对象为强引用,obj2指向obj1后obj
-
Java 中的动态代理
Java 内置 API 使用Proxy类代理一个对象,该对象必须实现一个接口。故Java内置的API只能代理实现了接口的对象。 private static c
-
Java FutureTask 源码解析
说明 本文基于Java8。 构造方法 传入Callable对象,使用成员变量接收,并将状态改为NEW。 private Callable<V> ca
-
尾部延迟是什么?如何避免尾部延迟?
概念 有1%的请求耗时高于99%的请求耗时,影响用户体验,甚至拖垮服务。 可能原因 磁盘空间不足/老化 负载高/过载 频繁垃圾回收 请求数据库或第三方资源超时
-
惊群效应是什么?如何避免惊群效应?
线程惊群 惊群效应(thundering herd)是指多进程(多线程)在同时阻塞等待同一个事件的时候(休眠状态),如果等待的这个事件发生,那么他就会唤醒等待的
-
Java 使用 FutureTask 解决缓存击穿(缓存踩踏)问题
缓存击穿 也叫缓存踩踏。 当缓存中无数据时,所有请求都在数据库访问,到时候数据库压力倍增。 自旋锁方案存在的问题 前一篇文章使用了自旋锁来防止缓存击穿问题,但因
-
缓存穿透、缓存雪崩、缓存击穿、缓存污染
缓存穿透 场景描述 缓存和数据库中都没有的数据,用户不断发起请求。如发起id=-1等不合理数据,导致数据库压力过大。 解决方法 增加传参校验,如Validat
-
Redis 使用 hotkeys 查看热点数据
前置要求 Redis 4.0.3中新增查看热点数据命令行,使用热点数据必须将内存策略修改为LFU算法。 查看内存策略 config get maxmemory-
-
为什么 Redis 的 hash slot 设置为 16384
问题 Redis使用CRC16算法(CRC16(key) % 16384)可以产生2^16-1=65535个值,但为什么哈希槽设置成了16384? 原因 htt
-
Redis 使用 hash tag 插入到同一个哈希槽
hash tag 使用{}大括号,指定key只计算大括号内字符串的哈希,从而将不同key名词的键插入到同一个哈希槽。 查看 key 对应的 hash slot
-
MySQL 的四种事务隔离级别
事务的基本要素(ACID) 原子性(Atomicity) 事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务
-
MySQL 中的乐观锁和悲观锁
创建测试表 创建product表: CREATE TABLE `product` ( `id` int(11) NOT NULL, `name` var
-
MySQL 中的覆盖索引
索引覆盖 Extra字段显示Using index,索引处取得的数据即是要求的数据,则不会再回数据文件再查询,直接返回了。 explain select id
-
Java 中 null == 和 == null 判断是否为 null 的区别
C 在C语言中可以在if中可以赋值判断。 if (obj = null) { ... } Java Java中,if中不支持给对象赋值(Boolean情
-
设计模式之原型模式 - 深拷贝和浅拷贝
作用 用原型实例指定创建对象的种类,并且通过拷贝这些原型来创建新的对象。 案例 浅拷贝 实现Cloneable 重写clone方法 能拷贝基础类型及Strin