cartoony

导航

2025年7月14日 #

对 JVM 垃圾收集器的理解

摘要: 前言 最近在研究 JVM 相关的知识点,对垃圾收集器有一些自己的看法,所以就记录下来。 垃圾收集器 定义 顾名思义,垃圾收集器就是清理程序运行过程中产生的垃圾,防止对象膨胀导致应用程序 OOM。 而垃圾指的是当前时刻下程序不再需要使用的对象,即不可达对象。 作用过程 根据定义,垃圾收集器过程分为两大 阅读全文

posted @ 2025-07-14 01:19 cartoony 阅读(11) 评论(0) 推荐(0)

2025年2月5日 #

synchronized, volatile 在 DCL 的作用

摘要: 背景 最近在看设计模式,在单例模式的 Double Check Lock(DCL)中,存在两个关键字:volatile & synchronized。 之前都知道 DCL 怎么写,直接套娃。但是这两关键字在单例里面的作用还没深究过,于是就自言自语一篇文章。 单例模式代码 public class S 阅读全文

posted @ 2025-02-05 23:42 cartoony 阅读(24) 评论(0) 推荐(0)

2025年1月5日 #

ThreadPoolExecutor keepAliveTime 含义

摘要: 现象 在线上环境排查问题时,某个线程池在某个时间点新建线程达到设定的最大线程数 maximumPoolSize,后续流量降低后当前线程数仍未回落,仍然为最大线程数,阻塞队列中有任务,但是活跃线程数显著减少。 之前的认知 固有的认知中,线程池运行原理:java.util.concurrent.Thre 阅读全文

posted @ 2025-01-05 17:11 cartoony 阅读(86) 评论(0) 推荐(0)

2023年11月7日 #

Redis 的三种部署模式

摘要: 提前叠个 buff:这个文章不涉及图(画起来比较麻烦),只是记录我的胡思乱想。 redis 从单点 -> 集群总共有三个部署模式:单机模式,主从模式,哨兵模式,集群模式 单机模式 新手入门模式。单机模式意味着 Redis 是单点的,部署在一台服务器,挂了就挂了,用在本地测试还可以,但是生产环境就算了 阅读全文

posted @ 2023-11-07 08:46 cartoony 阅读(194) 评论(0) 推荐(0)

2023年6月10日 #

老话新谈之缓存一致性

摘要: ### 前言 缓存一致性常见的更新策略也比较多,如先更新数据库再更新缓存,先删缓存再更新数据库等等,我在理解的时候有些混乱,所以这个文章提供了一些理解上的技巧去理解缓存一致性。 ### 为什么会有缓存一致性的问题 1. 缓存与数据库是两套中间件,存在网络抖动之类的原因导致没有更新任一方的可能 2. 阅读全文

posted @ 2023-06-10 17:30 cartoony 阅读(47) 评论(0) 推荐(0)

2023年4月30日 #

kafka 不支持读写分离的原因

摘要: 前段时间在看 kafka 相关内容,发现 kafka “所有的”读写流量都在主 partition 上,从 partition 只负责备份数据。 那么为什么 kafka 从 partition 不跟其他中间件一样承接读流量? 读写分离的初衷 读写分离的初衷我觉得是利用读流量 & 写流量不同的特性做针 阅读全文

posted @ 2023-04-30 16:53 cartoony 阅读(110) 评论(0) 推荐(0)

2022年11月15日 #

对JVM G1的理解

摘要: NOTICE:本文仅记录本人对 JVM G1 的小小理解,没有详细记录每个点,若有误可指出 内存区域 G1 将堆分为各个 region,大小通过 G1HeapRegionSize 指定 region 分类 按 region 大小分 普通 region,存放大小小于普通 refion 容量的一半的对象 阅读全文

posted @ 2022-11-15 00:44 cartoony 阅读(55) 评论(0) 推荐(0)

2022年6月6日 #

缓冲更新策略

摘要: 近段时间在学习缓存相关知识的时候,看到了缓存更新策略,于是就根据自己的理解,写下这篇文章 分类 Cache Aside Read / Write Though Write Behind Cache Aside 步骤 读请求未命中缓存,取数据库数据,并回写缓存 写请求先更新数据库,再让缓存失效 优点 阅读全文

posted @ 2022-06-06 22:55 cartoony 阅读(47) 评论(0) 推荐(0)

2022年5月18日 #

Linux新增swap分区

摘要: 近段时间在服务器搭建中间件,发现物理内存不足,因为对性能要求不高,所以就求助 swap 了。 下面是 ubuntu 的 swap 构建的步骤 新建 swap 文件(/root/swapfile) dd if=/dev/zero of=/root/swapfile bs=1M count=8192 s 阅读全文

posted @ 2022-05-18 22:37 cartoony 阅读(36) 评论(0) 推荐(0)

2022年3月8日 #

Spring 获取配置的三种方式

摘要: 前言 最近在写框架时遇到需要根据特定配置(可能不存在)加载 bean 的需求,所以就学习了下 Spring 中如何获取配置的几种方式。 Spring 中获取配置的三种方式 通过 @Value 方式动态获取单个配置 通过 @ConfigurationProperties + 前缀方式批量获取配置 通过 阅读全文

posted @ 2022-03-08 00:56 cartoony 阅读(862) 评论(0) 推荐(0)