自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(112)
  • 资源 (3)
  • 问答 (5)
  • 收藏
  • 关注

转载 php内置函数大全

php内置函数大全第2章 Apache函数 152.1 Apache信息获取类函数 152.1.1 apache_child_terminate函数:在本次请求结束后终止Apache进程 152.1.2 apache_get_modules函数:获取Apache的模块列表 162.1.3 apache_get_version函数:获取Apache的版本 162.1.4 apache_getenv函数:获取Apache的环境变量 172.1.5 apache_lookup_uri函数:获取特定的

2022-03-08 13:28:08 1996

原创 无锁 Reactor 网络模型与 gnet / evio 架构拆解

本文剖析无锁Reactor模型在Go中的应用,指出多数场景下goroutine-per-connection已足够,仅在超大规模长连接、低延迟场景(如IM、游戏服)才需引入gnet等框架。核心优势在于降低每连接开销、避免调度器介入、实现锁-free状态管理,代价是协议与超时需自研。通过对比gnet与evio架构,揭示其多loop+SO_REUSEPORT分发、环形缓冲、协程池解耦等设计,并强调其适用边界:自定义协议、高吞吐转发,而非通用HTTP/gRPC服务。

2026-10-21 09:23:28 406

原创 Linux 网络 IO 模型演进与 Epoll 内部机制

本文系统解析 Linux 网络 IO 模型演进,重点剖析 epoll 机制:从阻塞、非阻塞到 IO 多路复用,揭示就绪通知(如 epoll)与完成通知(如 io_uring)的本质差异。深入对比 select/poll/epoll 在数据结构、性能与触发模式上的区别,详解红黑树与就绪链表的高效设计。指出 Go 运行时采用边沿触发(ET)并借助 eventfd 实现无锁唤醒,实现高并发下的低延迟网络处理。同时阐明文件 IO 不走 netpoller 的工程考量,以及 io_uring 因范式冲突与环境限制暂未

2026-10-21 09:23:14 89

原创 逃逸分析、栈分配与 sync.Pool 对象池

Go 通过逃逸分析决定对象分配于栈或堆,近年版本优化使常量及部分运行期容量切片可栈分配,显著降低小对象开销。sync.Pool 非缓存,仅提供机会型复用,对象可能被随时清除。编译器基于 SSA 图与保守传播判定逃逸,关键影响因素包括返回指针、接口装箱、闭包捕获等。栈分配受尺寸限制,超限则回退堆。sync.Pool 采用本地+共享+代际淘汰机制,提升局部性,但不保证存活。实测应以 allocs/op 为准,避免误判。

2026-10-12 14:28:22 332

原创 GC Pacer 调优算法:GOGC、GOMEMLIMIT 与容器 OOM 防御

Go 1.25 起,GC Pacer 通过 GOGC 与 GOMEMLIMIT 双重机制实现容器内存与性能平衡。GOGC 控制堆增长比例,而 GOMEMLIMIT 提供软内存上限,二者取小决定目标堆大小。Pacer 基于分配/标记速率动态计算触发点(trigger)与跑道长度(runway),避免过早或过晚触发 GC。运行时还引入 GC CPU limiter 与 scavenger 机制,防止资源失控。gctrace 输出揭示了真实耗时与资源占用,调优需结合 memoryLimitHeapGoal、con

2026-10-12 14:26:18 332

原创 Execution Trace 深入实战:可视化调度与系统停顿分析

本文深入解析 Go Execution Trace 的实战应用,揭示其在排查高 p99 延迟、偶发卡顿等疑难问题中的核心价值。通过对比 pprof 与 trace 的差异,阐述 trace 如何记录 goroutine 状态变迁、调度延迟、GC STW 及 syscall 时长等细粒度信息。重点介绍从 Go 1.21 起的性能优化(帧指针栈回溯、按代切分)及 Go 1.25 引入的飞行记录仪机制,实现低开销常驻监控与异常快照捕获。结合可运行 Demo 展示如何用 trace.NewFlightRecorde

2026-10-10 09:18:50 226

原创 Go 性能分析工具 pprof:CPU、Heap 与 Goroutine 实战

pprof 是 Go 语言性能分析的核心工具,通过采样机制实时追踪 CPU、内存、goroutine 等资源消耗。其核心优势在于低开销、可长期运行,适用于线上问题定位。本文详解 CPU、Heap、Goroutine 等 profile 采集原理,揭示 Block 与 Mutex profile 的差异,强调标签(labels)在业务维度分析中的价值,并提供可运行的实战代码,演示如何精准定位高频分配、锁竞争与 CPU 热点问题,助力高效优化 Go 服务性能。

2026-10-10 09:17:38 568

原创 pprof 火焰图(Flame Graph)阅读与热点代码重构实战

本文通过实战演示如何使用 pprof 火焰图定位 Go 程序性能瓶颈。结合 BuildReportV1 中的三处问题——频繁 fmt.Sprintf、重复排序与错误对象拼接,利用火焰图识别热点,最终重构为 BuildReportV2:改用 strings.Builder 预分配、手写浮点格式化、复用排序结果,显著降低 CPU 与内存开销。关键在于理解火焰图宽度(资源消耗)、高度(调用深度)及 Flat/Cumulative 差异,辅以 alloc_objects 与 inuse_space 视图交叉验证,实

2026-10-09 09:15:48 271

原创 atomic 原子操作原理与 CPU 锁总线/缓存一致性(MESI)

原子操作是 Go 并发基石,以 atomic.Int64 等类型化 API 提升安全与性能。底层依赖 CPU 的 LOCK 指令与 MESI 缓存一致性协议,实现读-改-写原子性。x86 用缓存锁定,ARM 用 LL/SC 循环重试。缓存行粒度导致 false sharing 问题,需通过填充规避。运行时广泛使用 atomic 实现信号量、状态切换等机制。相比 Mutex,原子操作在无竞争场景下开销更低(5~7ns),适用于计数器、标志位等细粒度共享数据。

2026-10-09 09:14:34 228

原创 sync.Map 源码剖析:read/dirty 读写分离与 misses 击穿

sync.Map 适用于读多写少、键集稳定的场景,通过 read/dirty 双 map 实现无锁读。read 为只读快照,dirty 持锁写,misses 计数触发 dirty 晋升为新 read。entry 三种状态(正常/nil/expunged)避免删除竞态。旧版在读写均衡下性能差,因频繁重建 dirty;Go 1.24 引入 HashTrieMap,写争用大幅降低,删除可收缩内存,性能分界线前移,选型需重新 benchmark。

2026-10-08 11:31:08 437

原创 sync.RWMutex 读写锁源码:写优先与无锁并发计数

sync.RWMutex 通过 readerCount 的负值编码实现写优先,确保写者不被无限拖延。读锁依赖原子自增,多核争抢时缓存行频繁同步,导致读多写少场景下性能可能劣于 Mutex。其核心机制在保证写优先的同时,以两次原子操作为代价,适用于读临界区长、并发可控的场景。

2026-10-08 11:28:29 345

原创 sync.Mutex 源码深度拆解:正常模式(自旋)与饥饿模式

sync.Mutex 通过状态位压缩(state)实现高效同步,结合正常模式(自旋)与饥饿模式(公平交接)的动态切换。无竞争时快速路径仅需一次 CAS;竞争时自旋最多 4 次,避免调度开销;若等待超 1ms 则进入饥饿模式,由 Unlock 直接移交锁所有权,确保公平性。饥饿模式自限:交接后若无后续等待者即退回正常模式。Go 1.23+ 实现移至 internal/sync,死锁栈中出现该路径属正常现象。

2026-10-02 22:11:05 192

原创 sync.Once 与 sync.Cond 源码与并发控制陷阱

sync.Once 保证操作仅执行一次,通过原子读实现高性能 fast-path,panic 后不重试;sync.Cond 实现条件等待,依赖 notifyList 精确唤醒,但通知无记忆,必须用 for 循环重检条件,且先改条件再 Signal。两者均需严格遵循源码设计逻辑,否则易引发并发陷阱。

2026-09-28 12:27:44 242

原创 GC 触发时机与调优

Go 的 GC 触发模型从 1.18 起引入了,目标不再是"堆翻倍才 GC",而是(默认约 25% viaGOGC1.19 又加入GOMEMLIMIT,让 GC 在"接近容器内存上限"时主动加速。两条线共同决定了 GC 触发频率。

2026-09-24 10:42:07 337

原创 写屏障机制原理

写屏障是并发垃圾回收的核心机制,用于防止对象丢失。其核心原理是在指针赋值时维护“黑不能直指白”的不变性。Dijkstra插入屏障通过涂灰新指针对象确保可达;Yuasa删除屏障则在覆盖旧指针时涂灰原对象,避免遗漏。Go 1.8+采用混合屏障,结合两者优势,配合栈预涂灰,实现近乎完全并发的标记过程,将GC暂停从毫秒级降至百微秒级,显著提升延迟敏感应用性能。尽管带来1–5%吞吐损耗,但对现代系统而言是值得的权衡。

2026-09-24 10:40:48 456

原创 三色标记并发 GC 原理

Go 语言采用三色标记-清除算法实现高效并发垃圾回收,通过白、灰、黑三色划分对象状态,确保“黑色不指向白色”的不变性,避免对象丢失。GC 分为四阶段:短暂停的标记准备与终止,以及与用户程序并发的标记和清扫,显著降低延迟。尽管真实实现复杂(如写屏障、本地工作队列),但核心逻辑与模拟一致,是 Go 高性能低延迟的关键。

2026-09-22 09:29:12 249

原创 栈空间管理与逃逸分析

Go 通过连续栈与逃逸分析实现高效并发:每个 goroutine 初始仅 2 KiB 栈,自动扩容至需求数量;编译器基于变量使用场景决定栈/堆分配。-gcflags=-m 可查看逃逸决策,runtime.MemStats.StackInuse 监控栈内存。深递归与大量 goroutine 演示了栈自动扩容与低开销特性。逃逸虽不必然性能瓶颈,但高频创建可结合 sync.Pool 复用对象以降低 GC 压力。

2026-09-22 09:27:26 432

原创 抢占式调度实现细节

Go抢占式调度机制解析 本文深入剖析了Go语言抢占式调度的实现机制,重点对比了协作式抢占(Go 1.13及之前)与异步抢占(Go 1.14+)的区别: 核心原理 协作式抢占:依赖函数调用处的栈检查指令,通过morestack触发抢占检查 异步抢占:通过sysmon线程定期检测,发送SIGURG信号强制中断执行 关键特性 Go 1.14+能处理纯死循环,保证公平调度 协作式抢占开销更低,但存在无法抢占的场景 异步抢占存在"禁区",如系统调用、持有锁等情况会推迟抢占 验证实验 通过单核环境下的纯死循环测试,证明

2026-09-21 09:20:26 277

原创 系统调用与 M/P 解绑

当一个 goroutine 执行read()write()或accept()等阻塞式系统调用时,线程(M)会从用户态陷入内核态。如果这时 M 仍然霸占着 Processor(P),那么 P 上的其他 goroutine 就会集体"干等"——这是对 CPU 资源的极大浪费。。

2026-09-21 09:19:06 432

原创 Work Stealing 工作窃取算法

摘要:Work Stealing是Go语言GMP调度模型的核心负载均衡机制,当处理器(P)本地任务队列(LRQ)为空时,会从其他P的LRQ尾部窃取一半任务。这种策略通过分布式队列和"按需窃取"优化了多核CPU利用率,避免了中央调度器的锁竞争问题。关键设计包括:优先从本地LRQ获取任务,随机化遍历顺序避免冲突,保留受害者队列头部任务的缓存局部性。文中还提供了Go代码模拟这一过程,展示了初始负载不均衡时各处理器如何通过窃取任务实现负载均衡。

2026-09-16 23:54:36 227

原创 Go 内存分配器概览:从 TCMalloc 到三级缓存架构

本文概述了Go语言内存分配器的核心设计,从TCMalloc借鉴的三级缓存架构到具体实现细节。主要内容包括: Go采用mcache(P本地无锁)、mcentral(全局按Size Class)和mheap(全局管理)的三级架构,平衡分配速度与内存碎片。 定义了67个Size Class管理小对象分配,包括微对象优化(Tiny Allocator)和大对象直接分配机制。 通过四组实验演示不同场景下的内存分配行为: 不同大小对象(8B/512B/64KB)的分配路径 有无指针微对象的内存占用对比 sync.Poo

2026-09-09 09:24:20 603

原创 Golang Channel 底层:hchan、环形队列与等待队列的精准握手

Go语言的Channel底层实现基于hchan结构体,包含环形队列和等待队列机制。缓冲Channel通过buf实现环形队列高效存取(O(1)操作),无缓冲Channel则直接进行数据拷贝实现同步握手。两种场景共用同一hchan结构,仅通过dataqsiz区分。当操作受阻时,goroutine会被挂起到对应等待队列(sendq/recvq)。关闭Channel会唤醒等待者并标记关闭状态,后续发送将触发panic。Select通过随机化case顺序保证公平性。该设计完美实现了CSP模型的通信原语,兼顾性能和安全

2026-09-09 09:23:37 389

原创 Golang 调度循环:Go runtime 如何永不停歇地找人干活

Go语言运行时通过调度循环机制高效管理goroutine的执行。调度循环以runtime.schedule()为核心,每个OS线程(M)启动后会持续执行以下流程:查找可运行goroutine(G)→执行→返回循环。调度器按优先级从多个来源获取任务:GC任务→本地队列→全局队列→网络轮询→任务窃取。通过execute()和gogo()完成上下文切换,利用每个goroutine栈底的goexit实现自动回收。这种设计使少量线程能服务大量goroutine,体现了"能本地不全局,能偷则偷"的调度哲学。文中还提供了

2026-09-08 17:54:47 251

原创 Golang 系统监控 sysmon:GMP 背后的后台管家

本文深入解析了Go语言运行时中的系统监控线程sysmon的核心机制。作为GMP调度模型的补充,sysmon主要负责四类后台监管工作:1)网络轮询就绪事件唤醒;2)通过SIGURG信号实现10ms级的异步抢占调度;3)基于堆增长的GC触发;4)定时器到期检查。文章通过两个代码实验验证了其关键功能:在单P场景下,sysmon能中断死循环goroutine保证公平调度;同时演示了timer依赖sysmon唤醒的机制。选择SIGURG作为抢占信号因其默认不被用户程序处理且无业务语义干扰。sysmon以20μs-10

2026-09-08 17:52:58 377

原创 Golang 网络轮询器 netpoll:把阻塞 IO 变成事件通知

本文介绍了Go语言中netpoll的工作原理及其在网络高并发场景下的重要性。netpoll通过将阻塞I/O转换为事件通知机制,利用操作系统的多路复用接口(如epoll、kqueue、IOCP)实现高效网络处理。文章详细解析了netpoll的工作流程,包括goroutine挂起、事件注册与唤醒机制,并通过代码示例演示了网络I/O的等待过程。关键点包括:1)pollDesc结构体维护socket与goroutine的关联;2)调度循环适时调用netpoll处理就绪事件;3)少量OS线程(M)即可支撑海量并发连接

2026-09-07 09:56:27 339

原创 Golang 函数调用的瞬间:栈帧、拷贝栈与逃逸分析

本文深入解析了Go语言函数调用时的栈帧结构和工作机制。主要内容包括: 栈帧布局:包含调用方参数、返回值槽位(由调用方预留)、返回地址和局部变量,解释了Go多返回值零开销的实现原理。 Go栈管理特性:初始8KB、按需倍增扩容(上限1GB)、采用连续栈+整体拷贝策略,分析了拷贝栈对指针稳定性的影响。 逃逸分析机制:区分栈分配(零GC成本)和堆分配(需GC管理)的条件,列举常见逃逸场景,并提供了诊断工具。 实践建议:减少指针返回、避免深递归、监控栈扩容热点等优化方向。 通过实验代码验证了递归调用与栈帧的对应关系,

2026-09-07 09:55:21 457

原创 拆开 Go 字符串:16 字节背后的设计哲学

本文深入剖析了 Go 语言字符串的底层实现与设计哲学。字符串本质是一个 16 字节的结构体(指针+长度),具有不可变性和共享特性。文章通过示例代码演示了字符串的存储结构、子串共享、UTF-8 处理、转换机制和高效拼接等关键特性,并总结了字符串操作的性能优化技巧。重点包括:字符串的零拷贝传参机制、不可变性带来的安全保证与内存泄漏风险、字节与字符的长度差异、常规转换与零拷贝转换的取舍,以及 strings.Builder 的高效使用方式。这些设计体现了 Go 在性能与安全性之间的权衡。

2026-09-04 09:45:49 342

原创 Golang 接口的两副面孔:eface、iface 与动态派发之谜

本文深入解析了Go语言接口的两种底层实现机制:eface(空接口)和iface(非空接口)。通过代码示例展示了它们的16字节内存布局,揭示了动态派发通过itab缓存和方法表实现的原理。重点剖析了常见的"nil接口不等于nil"陷阱及其解决方案,并解释了值类型赋接口时的装箱行为对性能的影响。文章最后总结了接口使用的最佳实践,包括优先传指针、正确处理nil返回值等关键认知点。

2026-09-04 09:44:38 345

原创 GMP 调度器:Go 并发的心脏是如何跳动的

Go语言的GMP调度器是其高并发能力的核心,通过三级模型实现高效的任务调度:G(goroutine)是任务执行流,M(OS线程)负责实际执行,P(Processor)作为调度上下文管理本地队列。P的数量(GOMAXPROCS)决定并行度,M可多于P以应对系统调用。调度器采用本地优先的无锁队列设计,结合定期检查全局队列和工作窃取(Work Stealing)策略保证负载均衡。Go 1.14引入异步抢占机制(SIGURG信号)解决长时间计算阻塞问题,网络I/O通过netpoll实现用户态异步化,系统调用时M与P

2026-09-04 09:42:54 349

原创 Golang Map 哈希表实现

Go 语言中的 Map 实现基于精心设计的 hmap 和 bmap 多层结构。hmap 包含桶数量、哈希种子等元信息,底层是 bmap 数组,每个桶存储8个键值对,key和value分开存储以减少内存浪费。采用 tophash 快速过滤和拉链法处理冲突,哈希函数针对不同类型优化。Map 具有遍历随机化、值不可寻址、并发写检测等特性,通过 hash0 种子防止哈希攻击。整体设计兼顾性能与安全,是 Go 高效运行时的关键组件之一。

2026-09-02 09:32:36 495

原创 Golang 切片扩容策略

切片扩容策略摘要(150字) Go切片扩容在append超出容量时触发,涉及内存分配与数据拷贝。1.18+版本采用平滑增长策略:小切片近2倍扩容,大切片渐近1.25倍,中间平滑过渡。实际容量还需按元素大小内存对齐,可能导致不同类型切片扩容结果不同。扩容后底层数组指针变更,会断开与原切片的共享关系。预分配(make([]T,0,n))可避免频繁扩容开销。关键点:扩容策略平衡性能与内存,1.18+取消1024硬阈值,对齐规则影响最终容量,扩容可能隐式解除数据共享。

2026-09-02 09:31:04 726

原创 Golang 切片底层结构

Go 切片底层结构分析摘要(148字) 切片本质是数组的引用描述符,由24字节的SliceHeader(Data指针、Len、Cap)组成。关键特性: 多切片可共享底层数组,修改会相互影响 切片操作会继承原始切片的容量范围 nil切片(Data=nil)与空切片(Data≠nil)在JSON序列化时表现不同 通过unsafe包可验证切片头结构和指针算术关系 切片传参仅拷贝描述符,高效但需注意共享修改问题。三段式切片表达式可精确控制新切片的容量边界。 (注:实际运行时会显示具体内存地址,示例中用"..."替代

2026-09-01 09:10:05 317

原创 Golang Map 扩容与渐进式迁移

本文深入解析了Go语言中map的扩容机制与渐进式迁移策略。主要内容包括: 扩容触发条件:负载因子超过6.5时增量扩容(桶数翻倍);溢出桶过多时等量扩容(碎片整理) 渐进式迁移实现:扩容时分配新桶数组并保留旧桶,通过nevacuate记录迁移进度,将扩容开销分摊到后续写入操作 优化建议:预分配hint避免频繁扩容,碎片化严重时重建map提升性能 其他要点:扩容期间的双桶查找机制、B值计算方式、内存占用分析及并发安全方案 特点:详细对比了两种扩容方式,揭示了Go通过负载因子6.5和渐进迁移实现高性能map的设计

2026-09-01 09:09:48 698

原创 Golang 词法分析深入:Token 体系与 Scanner

本文深入解析了Go语言词法分析的核心机制。词法分析作为编译第一步,负责将字符流转换为Token流,标准库go/token定义了完整的Token类型体系。文章详细介绍了Token的四大分类(特殊符号、字面量、运算符和分隔符)及其位置信息表示,并通过go/scanner包的实例演示了词法分析过程,包括自动分号插入等关键特性。最后通过一个简化版Scanner实现,揭示了底层扫描原理,帮助读者理解从字符到Token的转换过程。

2026-08-31 09:15:24 349

原创 Golang 类型检查机制:go/types 与类型推导

本文介绍了Go语言中的类型检查机制,重点解析了go/types包的工作原理和核心功能。主要内容包括: 类型检查器的三大职责:符号解析、类型推导和接口验证 go/types包的核心结构:Config配置类型检查环境,Info保存检查结果 类型检查流程:从AST解析到最终类型推导的完整步骤 Object系统:标识符的类型身份识别机制 Type接口体系:Go语言类型系统的实现方式 接口实现验证:如何检查类型是否满足接口要求 go/types包提供了编译器级别的类型分析能力,可用于构建代码分析工具、IDE插件等需要

2026-08-31 09:13:19 475

原创 Golang 语法分析与 AST:Parser 与 go/ast

语法分析与 AST 摘要 语法分析将 Token 流转换为抽象语法树(AST),赋予代码层次结构。Go 的 go/ast 包定义了 AST 节点体系,分为表达式(Expr)、语句(Stmt)和声明(Decl)三大类。go/parser 包提供源码解析功能,生成包含文件结构的 ast.File。可通过 ast.Inspect 和 ast.Walk 遍历 AST,支持代码分析工具开发,如统计函数调用、提取类型定义等。AST 是编译器理解代码的基础,也是静态分析工具的核心数据结构。

2026-08-26 09:30:11 319

原创 Go 编译过程全景

Go 编译过程全景解析:从go build到可执行文件的完整流程分为8个阶段:词法分析(字符流→Token)、语法分析(Token→AST)、类型检查、IR构建、中端优化(内联/逃逸分析等)、SSA生成与优化(关键优化阶段)、机器码生成和链接。Go编译器采用务实设计,平衡编译速度与代码质量,并提供GOSSAFUNC等工具让开发者观察内部优化过程。理解编译原理可帮助开发者编写更高效的代码,如利用逃逸分析优化内存分配、通过边界检查消除提升性能等。

2026-08-26 09:28:34 431

原创 Golang Redis 分布式锁

本文介绍了Redis分布式锁的实现方案与演进过程。首先分析了分布式锁的三大核心要求:互斥性、避免死锁和身份验证。然后分四个版本逐步完善:从基础的SETNX(存在原子性问题),到使用SET+EX+NX原子命令,再到引入唯一令牌和Lua脚本确保安全释放,最后加入重试机制。针对锁过期问题,提出了看门狗自动续期和栅栏令牌两种解决方案。文章还介绍了Redlock多节点算法以解决单点故障问题,并推荐使用成熟的redsync库。最终总结了分布式锁的关键实现要点,强调Lua脚本和看门狗机制的重要性。

2026-08-25 09:48:13 611

原创 Golang Redis 发布订阅(Pub/Sub)

Redis 发布订阅(Pub/Sub)是一种轻量级的实时消息广播机制,核心思想是解耦发布者和订阅者。发布者向频道发送消息,订阅者通过订阅频道或通配符模式接收消息。Redis不持久化消息,适合对实时性要求高但允许少量消息丢失的场景。Go语言实现包含专用TCP连接、模式订阅等功能。相比其他消息系统,Pub/Sub延迟极低但缺乏可靠性保障,常与Stream组合使用以兼顾实时和可靠。典型应用包括缓存失效通知、WebSocket推送等场景。

2026-08-25 09:46:41 319

原创 Golang 数据库连接池深度调优

本文深入解析数据库连接池调优策略,主要涵盖以下核心要点: 连接池原理:复用以避免频繁建连/断连,通过sql.DB维护长连接池 四个关键参数调优: MaxOpenConns(活跃连接上限)= QPS × P99耗时 × 1.2 MaxIdleConns(空闲连接数)= MaxOpenConns × 0.7 ConnMaxLifetime(连接寿命)设为5-15分钟 ConnMaxIdleTime(空闲超时)设为1-3分钟 常见问题处理: 必须使用context.Timeout避免连接池饥饿 必须defer r

2026-08-24 09:17:35 434

Golang-Go语言高性能编程

原文:https://geektutu.com/post/high-performance-go.html

2026-07-09

Golang-Go语言设计与实现

原文:https://draven.co/golang/

2026-07-09

thinkphp8图形验证码修改,以接口获取图形验证码图片[可以post方式获取]

thinkphp8图形验证码修改,以接口获取图形验证码图片[可以post方式获取]

2024-10-10

基于swow的tp8应用代码

基于swow的tp代码

2024-10-08

基于swow的tp代码

基于swow的tp代码

2024-10-08

windows redis RedisServer.zip

windows操作系统中使用的redis服务包。 不需要安装,解压之后放到非系统盘,然后使用命令行模式 进入目录 执行 redis-server.exe redis.windows.conf 可以按照配置文件启动redis服务。

2019-12-18

thinkphp6 tp6.zip

官方文档:https://www.kancloud.cn/manual/thinkphp6_0/1037481 由于引入了一些新特性,ThinkPHP6.0运行环境要求PHP7.1+(推荐PHP7.3+),不支持5.1的无缝升级 主要特性: 采用PHP7强类型(严格模式) 支持更多的PSR规范 多应用支持 ORM组件独立 改进的中间件机制 核心架构服务化 全新的事件系统 容器功能增强 模板引擎组件独立 内部功能中间件化 SESSION机制改进 缓存及日志支持多通道 引入Filesystem组件 对Swoole以及协程支持改进 对IDE更加友好 统一和精简大量用法

2019-12-18

UltraViewer_setup_6.2_cn.exe

远程控制软件,windows 版本远程控制软件。类似与teamviewer的一款远程操作软件。 方便实用

2020-02-24

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除