为什么需要channel? channel 是用于不同 goroutine 间通信和同步的核心机制。 Q:不是可以共享内存进行通信吗? A: 直接共享内存(如多个 goroutine 直接读写同一变量)会引发竞态条件,需要加锁(mutex)保护,容易出错且难以维护。 Go channel 的设计灵感来源于 CSP(Com…
本文接续上篇,介绍GC全过程,Go GC采用增量并发三色标记,短暂停顿,自动与手动触发,分四阶段高效回收内存。
本文介绍了Golang的垃圾回收策略的发展、垃圾回收的关键知识:STW、常见垃圾回收策略以及核心的三色标记法
被废弃的golang调度器 在2012年之前,用的是P不存在的GM调度器 线程M 想要执行、放回 协程G 都必须访问全局 G 队列,并且 M 有多个,即多线程访问同一资源需要加锁进行保证互斥 / 同步,所以全局 G 队列是有互斥锁进行保护的。 这样明显会发现一个问题,当M空闲都申请G时,形成锁竞争;甚至M0申请G、M1放回G都会形成竞争,效…
1.使用container/list实现 首先,我们要了解标准库中的双向链表list 标准库list详解 list.go源文件https://cs.opensource.google/go/go/+/refs/tags/go1.24.2:src/container/list/list.go 在 Go 语言的 contai…
redis5.0.7的配置文件详解,包含includes、network、general等全部模块
官方文档:https://grpc.org.cn/docs 中文文档:https://doc.oschina.net/grpc 什么是gRPC 在 gRPC 里客户端应用可以像调用本地对象一样直接调用另一台不同的机器上服务端应用的方法,使得您能够更容易地创建分布式应用和服务。 与许多 RPC 系统类似,gRPC 也是基于以下理念:定义一个服…
DFS,深度优先搜索是一种用于遍历或搜索图、树或其他数据结构的算法。 工作原理:从起始节点开始,沿着一条路径尽可能深地探索,直到不能继续为止,然后回溯并探索其他路径。它使用栈来记录遍历的顺序,以便在回溯时回到之前的节点继续搜索。 应用场景:在图算法中,可用于寻找路径、检测环、拓扑排序等;在人工智能中,可用于解决迷宫问题、八皇后问题等;在编译器和语法…
存在问题 后台编写代码块没有问题,但发布文章后出现html转义字符,如图 在排除掉主题和插件影响后,发现是wordpress自动转义了 解决方案 来源:https://www.cnblogs.com/lmlblogs/p/17871572.html 进入wordpress仪表盘->外观->主题文件编辑器 找到functions.php …
在分布式系统的世界里,RPC(远程过程调用)和HTTP(超文本传输协议)是两种最常见的通信方式。它们看似不同,但本质上都是基于底层的TCP/IP协议发展而来。本文将从网络通信的底层逻辑出发,梳理两者的演进历程、核心区别以及适用场景。 什么是RPC RPC,全程Remote Procedure Calls远程程序调用,是一种方法,并不是和http一样…