- 博客(7)
- 问答 (1)
- 收藏
- 关注
原创 垃圾回收(GC)机制详解
混合写屏障结合了插入屏障和删除屏障的优点,既避免了黑色对象直接引用白色对象导致的误回收,又解决了栈重扫和延迟回收等问题。时(写操作),执行一段特殊的代码(屏障),根据设定的规则(强/弱不变式)将相关对象标记为灰色,确保不变式不被破坏。:通过减少写屏障的开销和优化并发标记过程,混合写屏障在高并发场景下能够高效地回收垃圾对象,保持了程序的高性能。,重新扫描栈空间,确保栈上引用的白色对象被正确标记保护(因为栈写没有屏障保护)。自动识别并回收程序中不再被引用的对象(即“不可达”对象)所占用的内存资源。
2025-06-05 20:44:19
751
原创 缓存异常的三个问题及解决方案
缓存雪崩是指当大量缓存数据在同一时间过期,或者 Redis 故障宕机时,大量用户请求无法直接在 Redis 中处理,从而直接访问数据库,导致数据库压力骤增,甚至宕机。:热点数据不设置过期时间,由后台异步更新缓存,或者在热点数据即将过期前,提前通知后台线程更新缓存及重新设置过期时间。:当发现缓存穿透时,可以在缓存中设置一个空值或默认值,后续请求可以直接从缓存中读取,而不会继续查询数据库。缓存穿透是指用户访问的数据既不在缓存中,也不在数据库中,导致请求直接访问数据库,增加数据库的压力。
2025-06-04 20:00:00
211
原创 TCP三次握手与四次挥手详解及异常情况分析
TIME_WAIT 的持续时间通常为两倍的最大报文存活时间(MSL,Maximum Segment Lifetime),这是因为可能会出现服务器没有收到最后一段 ACK 报文的情况,也就是 ACK 报文丢包了。此时会触发超时重传,服务器会再次发送 FIN 报文,客户端再次收到 FIN 报文,就知道刚发送的 ACK 丢失,需要再次发送。通过等待两倍 MSL 的时间,可以确保网络中所有的报文都已经失效,从而避免旧报文对新连接造成干扰。
2025-06-04 15:32:16
616
原创 Go 语言中的通道(Channel)
通过通道,可以安全地在协程之间传递数据,并确保数据的顺序性。通道的使用需要注意其状态(正常、nil、关闭),以及发送和接收操作的阻塞行为。- 使用select时,如果所有通道都是nil,select会阻塞。但如果select中有其他非nil的通道,则会正常工作。- 关闭后的通道不为 nil,如果通道中有数据,仍然可以被正常读取。:通道是一种队列,遵循先进先出(FIFO)的原则,确保数据的顺序性。- 对nil通道进行接收操作也会阻塞,但不会引发恐慌错误。接收数据:如果通道中无数据,接收方会阻塞。
2025-06-03 18:39:23
485
原创 简析MVC模式
可以降低代码的耦合性,在mvc模式中,三层代码各司其职,具体表现为由模型层提供数据给视图,视图层表示用户交互的界面,控制器层调用模型层与视图层来满足用户请求,当某一层代码需要修改时,不会影响到其它层的代码。mvc模式的全称是model-view-controller(模型—视图—控制器)模式,是一种软件架构模式,可以实现用户界面与业务逻辑的分离,提高代码的可复用性和灵活性。之后controller层根据model层处理后得到的结果找到对应的view层。controller层接收服务器接收到的请求。
2025-02-21 19:58:57
152
原创 并查集的小见解
(树形数据结构)(树形数据结构)虽然是树形结构,但只用数组就能实现开始时让每个元素构成一个单元素的集合,然后按照一定规则进行集合间的合并,期间要反复查找一个元素在哪个集合中。(刚开始都是只有一个节点的树,在合并过程中组合成一棵大树)顾名思义,并查集支持两个操作:合并,查询。
2024-11-24 21:52:17
385
原创 虚拟存储器的基本认识
虚拟内存会在程序装入的时候将很快需要用到的程序装入内存,将暂时用不到的留在外存,在程序执行的时候,如果访问的信息在内存中不存在,会由操作系统将信息调入内存(调页)。当用户看到自己的程序在内存中正常运行时,可能会以为自己看到的内存比实际内存要大,但用户所看到的大内存实际上是一种错觉,是虚的,是由一种特殊的存储器实现了在逻辑上增加了系统容量的功能,人们把这种存储器叫做虚拟存储器。最大容量是由地址结构决定的,即CPU寻址范围,而实际容量则是取CPU寻址范围与内存加外存之和两个值中的较小值。
2024-10-31 21:13:21
420
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人