- 博客(15)
- 收藏
- 关注
原创 11.6八股
对比如果先写 Bin Log 再写 Redo Log:若 Bin Log 写成功后宕机,Redo Log 未记录,重启后无法恢复数据,导致 Bin Log 有记录但数据未修改,主从复制时从库会执行该 Bin Log,造成主从数据不一致。最终状态:Redo Log(commit)、Bin Log 均完整,数据页(用户 1=400,用户 2=400)持久化到磁盘,事务一致性保障完成。此时:Redo Log(prepare)和 Bin Log 均已持久化,数据页仍在内存(未刷盘,不影响一致性)。
2025-11-10 11:43:15
708
原创 本地缓存怎么在分布式环境下保持一致性
通过消息队列(如 Kafka、RabbitMQ)广播 “数据更新事件”,所有节点监听事件,收到后删除 / 更新本地缓存。:基于 Redis 的发布 / 订阅功能,更新节点发布 “缓存更新消息”,其他节点订阅消息并更新缓存。:为每个缓存 key 关联一个 “版本号”,查询时先对比版本号,不一致则更新缓存。节点 B 查询时,先查缓存的版本号(3),再查数据库的版本号(4);:每个节点的缓存仅存储本地访问的数据,无法感知其他节点的更新;:多节点同时更新同一数据,可能导致 “部分节点缓存未更新”;
2025-10-13 17:23:28
776
原创 Linux 查看 CPU 相关参数的命令
想知道某个进程的内核态 CPU 占比,用 pidstat -u -p 进程 ID,能明确看到 % sys 列;,显示进程内每个线程的 PID(LWP 列)、CPU 占用率(% CPU)、优先级(NI),适合定位线程级 CPU 高耗问题。,能区分用户态(% usr)和内核态(% sys)占比,比如看某个 Java 进程在内核态消耗的 CPU;如果要定位进程内哪个线程耗 CPU,用 ps -L -p 进程 ID,能看到每个线程的 CPU 占用。查 CPU 硬件信息,比如核心数、主频,用 lscpu 最直观;
2025-10-05 00:50:15
202
原创 零拷贝(这里的sendfile也可应用于kafka、Netty、Nginx;mmap应用于RocketMQ)
零拷贝指在进行数据 IO 时,数据在用户态下经历了零次 CPU 拷贝,并非不拷贝数据。通过减少数据传输过程中 内核缓冲区和用户进程缓冲区间不必要的CPU数据拷贝 与 用户态和内核态的上下文切换次数,降低 CPU 在这两方面的开销,释放 CPU 执行其他任务,更有效的利用系统资源,提高传输效率,同时还减少了内存的占用,也提升应用程序的性能。由于零拷贝在内核空间中完成所有的内存拷贝,可以最大化使用 socket 缓冲区的可用空间,从而提高了一次系统调用中处理的数据量,进一步降低了上下文切换次数。
2025-10-01 10:21:58
665
原创 sql中exists和in的区别
小用 IN,大用 EXISTS:子查询数据量小用IN,子查询数据量大用EXISTS;空值用 EXISTS:子查询可能含NULL,或需要 “排除集合”(NOT场景),优先用EXISTS;索引不能少:无论用哪个,关联字段(如o.user_idu.user_id)必须加索引,否则性能差。
2025-09-28 17:26:35
394
原创 三种 I/O 编程模型BIO、NIO、AIO及I/O 多路复用实现方式select、poll、epoll
select/poll/epoll 不是 I/O 模型,它们是实现 “非阻塞 I/O” 的手段,NIO 模型是编程语义,epoll 是系统内核行为。如果你面试中被问“五种 I/O 模型”,推荐这样回答:严格来说,I/O 编程模型应分为 BIO、NIO 和 AIO 三种;select、poll、epoll 是 Linux 下多路复用的三种实现方式,本质是支撑 NIO 的机制;实际开发中,我们常说五种是因为把模型和机制合在一起讲。
2025-09-27 17:01:07
938
原创 每日十题(1)
Spring Boot 启动的核心可以归纳为: 👉通过 @SpringBootApplication 入口触发 → 构建运行环境 → 创建并刷新 ApplicationContext → 自动配置按需装配 → 启动内置 Web 容器 → 应用就绪对外服务。入口触发:通过 @SpringBootApplication 主类的 main 方法调用 SpringApplication.run()。环境准备:加载配置、激活 Profile,确定应用运行环境。上下文创建。
2025-09-26 17:37:13
671
原创 订单到期关闭如何实现
笔记基于hollis,如有侵权,可联系删除在电商、支付等系统中,一般都是先创建订单(支付单),再给用户一定的时间进行支付,如果没有按时支付的话,就需要把之前的订单(支付单)取消掉。这种类似的场景有很多,还有比如到期自动收货、超时自动退款、下单后自动发送短信等等都是类似的业务问题。订单的到期关闭的实现有很多种方式,分别有:1、被动关闭(不推荐)2、定时任务(,适合时间精确度要求不高的场景)3、DelayQueue(不推荐,基于内存,无法持久化)4、时间轮(不推荐,基于内存,无法持久化)
2025-09-26 17:12:53
698
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
2