hang.li Blog

「离开世界之前 一切都是过程」

redis一些学习笔记

安装 如果遇到环境没有安装,先安装环境 下载安装包 wget http://download.redis.io/releases/redis-4.0.0.tar.gz 解压 tar -xvf redis-4.0.0.tar.gz 进入redis解压的目录,编译 make 或 (make MALLOC=libc) 安装 make install 持久化 快照 RDB 手动快...

类的加载过程

类的加载阶段 此时jvm会选用类加载器(ClassLoader)进行加载我们的类,通常将class文件以二进制流的方式读入到内存当中,生成Class对象 类的连接阶段 此阶段又分为3个小阶段 1)验证:启动项目时,遇到的java版本不匹配的的问题都是在此过程出现的;还会检验二进制流是否已魔数咖啡宝贝开始(0xCAFEBABE);还有常量池中的常量类型等其他信息。 2)准备:主要作...

类加载器,双亲委派模型java9之前之后的区别

jdk8以及以前的类的加载机制,主要依托双亲委派模型对类进行加载 启动类加载器 负责加载目录(\lib)下或者被-Xbootclasspath参数所指定的路径中存放的, 制定包名文件名的类(jdk内置的包名)。该加载器属于jvm,使用c语言编写,如果使用该加载器的类获取其加载器会出现null情况,如: ![img.png](/img/in-post/java/see-cla...

布隆过滤器的实现

BloomFilter 请求到达正式业务之前, 判断该请求是否有效 维护一个大的bit数组, 把有效key的一次或多次的hash索引位置标志已存在. 当有请求进来时, 计算进来的key的hash索引, 判断每一个索引的值是否为true. 常用于处理==缓存穿透==问题 选用redis实现的好处 部署高可用节点时, 减少每一个节点的开销 redis可以持久化...

垃圾收集器(四) CMS收集器

常见组合 Serial + CMS + SerialOld(jdk8废弃) ParNew + CMS + SerialOld ((jdk9不推荐使用,随着jdk14CMS的废弃,此方案废弃) 特点 第一款能和用户线程并发执行的垃圾收集器 作用在老年代 标记清除算法 注重低延迟 在cpu核心数较少的机器上效率低下 碎片化严重,或OOM前触发Se...

垃圾收集器(五) G1收集器

特点 优先处理回收价值收益最大的Region(Garbage First) 逻辑分代,物理不分代 既可以回收年轻代,又可以回收老年代 保证低延迟的前提下,尽量提高吞吐量 维护一个价值列表(价值:回收所获得的空间大小以及回收所需时间的加权值) jdk9默认收集器 Region 将堆内存划分为多个Region,每个Region大小在1MB~32MB,并...

垃圾收集器(二) ParNew收集器

常见组合 ParNew + CMS(jdk9不推荐使用,随着jdk14CMS的废弃,此方案废弃) ParNew + SerialOld(jdk8废弃) 特点 Serial的多线程并行版本(在垃圾收集时间有多个线程进行垃圾收集) 作用在新生代 采用标记复制算法 在单核心机器上效率低(涉及到多个线程争抢cpu,切换线程上下文降低效率) 运行图 ...

垃圾收集器(三) Parallel收集器

常见组合 Parallel Scanvege + ServialOld(jdk14废弃此方案) Parallel Scanvege + Parallel Old(jdk8默认方案,jdk14现役) 特点 多线程并行收集 Parallel Scanvege标记复制算法 ,Parallel Old标记整理算法 注重吞吐量的方案 自适应策略 PP组合...

垃圾收集器(一) Serial收集器

常见组合 Serial+SerialOld(jdk14现役) Serial+CMS 特点 单线程(进行gc时只有gc线程运行,所有其他线程停在安全点,STW) java client模式下的默认垃圾收集器(windows 32位默认模式) 对于单核处理 器或处理器核心数较少的环境来说,Serial收集器由于没有线程交互的开销,专心做垃圾收集自然可以 获得最...

双向链表LinkedList 关键方法源码解读

1.LinkedList 头结点,尾结点 1 2 3 4 5 6 7 8 9 10 11 12 13 14 /** * 首个节点 * 恒定:first节点是null,last节点必是null * 恒定:如果first节点不是null,first的前驱节点必是null * 所有的添加修改删除操作都要保持恒定 */ transient Node&...