- 博客(411)
- 资源 (1)
- 收藏
- 关注
原创 Rocky_Linux_9.8_安装_PostgreSQL_16
在 Rocky Linux 9.8 上自定义数据目录安装 PostgreSQL 16,将数据目录设为 /data/app/postgresql,需手动初始化、覆盖 systemd 的 PGDATA 环境变量,并处理 SELinux 权限问题。通过 PGDG 官方源安装,禁用系统自带模块,使用 initdb 初始化后配置 override.conf 实现 systemd 管理,确保服务启动成功。确认端口监听与数据目录路径正确,最终实现远程访问。全程注意权限、SELinux 标签及配置覆盖,避免常见启动失败问题
2026-09-20 21:00:00
382
原创 Supervisor exit status 143
摘要: 某生产环境Ubuntu服务器上的Java服务凌晨自动重启,排查发现并非服务器或应用自身问题,而是系统自动更新机制导致。Ubuntu的unattended-upgrades服务自动升级glibc组件后,触发systemd重新加载服务,使Supervisor管理的Java进程收到SIGTERM信号优雅退出(状态码143)。该案例揭示了Linux系统自动更新可能间接影响业务服务的隐患,建议生产环境关闭自动更新、设置维护窗口,并完善进程状态监控体系,避免类似隐蔽问题发生。完整的日志分析链路展现了系统组件间的
2026-07-28 21:00:00
344
原创 JumpServer 管理员账号密码忘记怎么办?基于 Django Shell 的生产环境恢复实践
摘要:本文记录了在生产环境中因JumpServer管理员账号密码遗忘而进行的恢复实践。通过进入JumpServer Core容器的Django Shell,查询用户信息并重置密码。关键步骤包括确认部署方式、进入Django Shell(使用/opt/py3/bin/python3.6 manage.py shell)、查询用户(User.objects.all())及安全重置密码(set_password())。文中强调避免直接修改数据库密码(因Django使用哈希存储),并提醒操作前备份数据库、维护默认账
2026-07-27 20:30:00
395
原创 使用 Go 快速验证 RocketMQ 是否正常:从 TCP 连通到生产消费闭环
最近需要验证一套 RocketMQ 环境是否可用。最开始的诉求很简单:我有一个 RocketMQ NameServer 地址,端口是默认端口9876,想确认它到底是不是正常。很多时候我们会先用 telnet、nc 或者简单的 TCP 脚本测一下端口。这个动作当然有价值,但它只能说明:当前机器到 RocketMQ NameServer 的网络是通的。它不能证明 broker 正常、topic 可用,也不能证明消息真的可以成功生产和消费。TCP 连通性测试发送一条消息。
2026-06-27 02:00:00
220
原创 企业办公电脑生命周期管理指南
企业办公电脑生命周期管理指南摘要 本文针对企业IT设备管理中的常见问题,提出了一套办公电脑维修、升级、更换的标准化管理方案。主要内容包括: 管理原则:建立"维修优先→升级其次→更换最后"的流程,避免员工随意申请换机造成资源浪费。 三类处理标准: 维修:电池老化、风扇损坏、键盘故障等硬件问题 升级:内存不足、SSD容量不足等性能瓶颈 更换:达到生命周期(5-7年)、升级无效、业务需求变化等 量化评估方法:通过检查CPU负载、内存占用、磁盘空间、SSD健康度等6项指标数据化评估设备状态。 配置建议:针对不同岗位
2026-06-11 20:15:00
358
原创 45 - Go 排序算法与 sort 包:从业务需求到源码设计,彻底理解 Go 的排序机制
本文深入解析Go语言中的排序机制,从业务需求到源码设计。主要内容包括: 排序的核心价值:建立数据顺序关系,解决业务问题如排行榜、日志分析等场景。 sort包的设计思想:分离排序规则与算法实现,让开发者专注业务逻辑而非底层算法。 实践应用: 基础类型直接使用sort.Ints()等API 自定义类型通过sort.Slice()定义排序规则 多字段排序等复杂场景的实现 常见错误: 比较函数逻辑不一致 排序过程中修改数据 误用非稳定排序 底层原理:sort.Interface通过Len/Less/Swap三方法实
2026-06-07 22:00:00
337
原创 44 - Go 代码调试技巧:从 fmt.Println 到 Delve构建工程级问题排查体系
文章摘要:构建Go代码调试体系:从基础打印到Delve深度调试 本文系统介绍Go语言调试技术演进,从初级的fmt.Println打印调试到专业的Delve工具使用。首先分析调试的本质是解决程序执行流、运行时状态和分支逻辑三大问题,指出日志调试在复杂场景下的局限性。重点讲解Delve调试器的安装、基础用法和实战技巧,包括断点设置、变量查看、并发问题排查等。通过配置加载失败、死锁等真实案例,展示Delve的高效问题定位能力。同时剖析常见调试陷阱如版本不一致、优化导致变量消失等问题,对比日志与调试器在不同场景的适
2026-06-04 22:00:00
311
原创 43 - Go 单元测试与基准测试实战指南:不仅会写 Test更要会验证质量与性能
Go 单元测试与基准测试实战指南 本文介绍了 Go 语言中单元测试和基准测试的核心概念与实践方法。主要内容包括: 单元测试:验证最小功能单元的正确性,通过 go test 命令执行,测试文件需以 _test.go 结尾。表驱动测试是 Go 推荐模式,能有效分离测试数据与逻辑。 基准测试:量化代码性能,通过 testing.B 进行性能测量,避免凭感觉优化。基准测试可以比较不同实现的性能差异。 实战场景:展示了密码校验、配置加载和缓存服务等常见场景的测试方法,强调依赖注入和 Mock 对象的重要性。 性能对比
2026-06-03 23:00:00
911
原创 42 - Go Gin 框架入门与实战:从 Web 路由到底层原理
Gin 是 Go 生态中最流行的 Web 框架之一,以高性能、简洁易用和优秀的工程化能力著称。本文从 Gin 的核心设计思想出发,深入讲解 Gin 解决的问题及其本质——基于 Handler 链和 Context 的 HTTP 请求生命周期管理机制。通过路由定义、参数解析、JSON 绑定、中间件开发、路由分组等实战示例,帮助读者快速掌握 Gin 的常用开发方式。
2026-06-03 20:00:00
365
原创 41 - Go HTTP 服务端详解:从 net/http 到高性能 Web 服务
本文深入解析Go语言中net/http标准库构建HTTP服务端的核心机制。从最简单的Hello World示例入手,逐步展示GET/POST请求处理、JSON解析等实战场景,揭示Go HTTP服务天然高并发的设计原理。重点剖析了标准库如何封装TCP连接管理、协议解析和goroutine调度等底层复杂度,让开发者只需专注业务逻辑。最后给出生产级推荐方案——自定义http.Server实现超时控制和优雅关闭,为构建高性能Web服务提供完整解决方案。全文通过代码示例和设计思考,帮助开发者真正理解Go HTTP服务
2026-05-26 00:30:00
367
原创 40 - Go HTTP 客户端:从 http.Get 到高性能连接池
Go HTTP 客户端:从基础到高性能连接池 本文深入探讨 Go 语言中 HTTP 客户端的使用与优化。主要内容包括: 核心概念:揭示 HTTP Client 本质是"面向连接复用"的请求调度器,重点分析 Transport 层的作用和连接复用机制 基础使用:展示简单 GET 请求示例,强调必须关闭响应体的重要性,否则会导致连接泄漏 进阶优化: 自定义超时控制(默认无超时是常见事故根源) 高性能连接池配置(MaxIdleConns、MaxIdleConnsPerHost等参数) POST JSON 请求示例
2026-05-25 21:30:00
621
原创 39 - Go 信号捕获与处理:优雅退出、进程控制
文章摘要 本文深入探讨Go语言中的信号处理机制,重点讲解如何实现优雅退出和进程控制。主要内容包括: 信号基础:介绍Linux/Unix系统中的信号机制,常见信号类型(SIGINT、SIGTERM等)及其作用。 Go信号处理:解析os/signal包的核心API,包括signal.Notify()的工作原理和信号转发机制。 优雅退出实践:通过HTTP服务示例展示如何实现Graceful Shutdown,包括停止接收新连接、等待请求完成等关键步骤。 进阶技巧:演示双次Ctrl+C强制退出模式和Go 1.16+
2026-05-25 20:00:00
493
原创 38 - Go 命令行参数处理:从 os.Args 到 flag 的底层设计
本文介绍了Go语言中命令行参数处理的两种主要方式:os.Args和flag标准库。os.Args提供最基础的参数访问,适合简单场景但缺乏高级功能。flag库则提供了完整的参数解析方案,包括类型转换、默认值、帮助文档等功能。文章详细讲解了flag的使用方法、设计原理(注册+延迟解析模式),并通过多个示例展示了布尔参数、子命令处理、自定义参数类型等进阶用法。最后指出了常见错误(如忘记调用flag.Parse())及其原因,帮助开发者避免实际工程中的常见问题。
2026-05-22 01:00:00
361
原创 37 - Go env 环境变量:配置管理与运行时控制
文章摘要 Go语言环境变量(env)是进程级别的Key-Value配置机制,用于实现代码与配置解耦。标准库通过os包提供操作接口,包括Getenv、Setenv等函数。env在现代云原生系统中广泛应用,满足容器动态注入、多环境部署等需求。使用时需注意:Getenv无法区分空值与不存在,应优先使用LookupEnv;Setenv不是并发安全的配置中心,不适合作为热更新机制。工程实践中,配置应提供默认值,通过env实现动态覆盖,这是现代服务的标准配置方式。env本质是操作系统特性,Go只是提供访问接口。
2026-05-21 22:00:00
446
原创 36 - Go exec 执行命令
Go exec 命令执行详解 摘要: 本文深入讲解Go语言中os/exec包的核心用法,涵盖命令执行、进程管理、输入输出控制等关键知识点。主要内容包括: exec本质是进程控制封装,涉及fork/execve系统调用 核心Cmd结构体详解,包含Path、Args、Env等关键字段 基础用法示例:执行ls命令并获取输出 实时输出处理:通过Pipe实现命令执行日志实时显示 Shell命令执行正确方式:必须通过bash -c调用 进程间通信:演示向grep命令写入数据的完整流程 重要设计原则:Go默认拒绝隐式sh
2026-05-21 21:00:00
473
原创 35 - Go 文件操作:读写与临时文件
这篇文章深入探讨了Go语言文件操作的核心机制与最佳实践。主要内容包括: 文件操作本质:Go文件操作是用户态程序与操作系统文件系统之间的桥梁,通过syscall封装系统调用实现。 核心设计:Go采用io.Reader/Writer接口实现统一的流式处理,支持文件、网络、内存等多种数据源的互操作。 基础用法:介绍了os.ReadFile/WriteFile等基本文件操作方法,并解释了0644权限位的具体含义。 进阶技巧: 使用bufio处理大文件流式读写 日志追加写入的正确方式 OpenFile各参数的实际作用
2026-05-20 22:30:00
525
原创 34 - Go 二进制处理(编码/解码)深度解析
Go 二进制处理深度解析 本文深入探讨了 Go 语言中的二进制编码与解码技术,主要内容包括: 二进制处理的必要性:相比字符串传输,二进制编码更节省空间(示例中从5字节减少到4字节)、处理更快、更适合机器解析且不依赖字符编码。 核心概念: 二进制编码本质是将内存数据转换为字节流 关键挑战包括字节顺序、类型长度、数据边界等跨平台问题 Go 通过 encoding/binary 包统一处理这些问题 字节序问题: 大端序(网络协议常用)和小端序(CPU常用)的区别 Go 通过 binary.BigEndian/Li
2026-05-20 22:00:00
668
原创 33 - Go 文本模板 template:从入门到原理深挖
本文介绍了Go标准库中的text/template模块,这是一个功能强大的文本渲染引擎。文章从基础用法入手,讲解了模板语法、数据绑定、条件判断、循环等核心功能,并通过实际示例展示了如何生成配置文件、使用自定义函数和嵌套模板。同时,文章深入分析了模板的工作原理,指出其本质是"数据驱动的文本渲染引擎",而非简单的字符串拼接。最后,文章总结了常见错误场景,如未导出字段访问和range上下文修改等陷阱,帮助开发者避免实际应用中的常见问题。
2026-05-19 21:30:00
572
原创 32 - Go 正则表达式:从匹配字符串到理解 RE2 引擎
本文介绍了Go语言中正则表达式的核心概念与实用技巧。文章首先指出正则表达式在Go开发中的广泛应用场景,强调理解RE2引擎的重要性。Go采用RE2引擎的设计哲学是"宁可少功能,也绝不允许正则失控",因此放弃了回溯引用等高级特性,换取线性时间复杂度和稳定性。 文章详细讲解了Go正则的基础语法和常用方法,包括字符串匹配、日志提取、参数校验和文本替换等实用示例。特别强调了MustCompile和MatchString等核心方法的使用要点,以及全局复用正则对象的重要性。 最后,文章指出了常见错误模式,如重复编译正则表
2026-05-19 20:00:00
501
原创 31 - Go url 解析:从字符串到结构化请求的完整路径
本文深入解析了Go语言中net/url包的URL处理机制。URL作为互联网资源访问的核心标识,net/url将其从字符串转换为结构化对象,实现安全编解码和规范化处理。文章通过基础解析、Query参数处理、URL构建等示例,展示了标准使用方法,并指出手动拼接、Path误用等常见错误。底层原理部分揭示了状态机解析和RFC规范实现的设计思想,强调结构化处理带来的安全性、组合性和标准化优势。最后对比不同处理方式的差异,说明net/url在语义化URL处理中的不可替代性。该包通过"字符流解析+规则校验+结构化建模"的
2026-05-18 23:00:00
728
原创 30 - Go 随机数与 UUID 生成:原理、陷阱与工程实践
Go 随机数与 UUID 生成实践指南 本文深入探讨 Go 语言中随机数和 UUID 生成的原理与应用。主要内容包括: 随机数类型对比 math/rand:伪随机,适合普通业务场景 crypto/rand:真随机,适用于安全场景 核心原理 随机数本质是基于种子推导的序列 Go 1.20+ 自动初始化随机种子 推荐使用独立随机源避免全局状态污染 UUID 应用 分布式唯一标识方案 适合微服务场景但存在索引性能问题 实际工程中常采用"时间戳+随机数"的折中方案 常见陷阱 安全场景错误使用伪随机数 并发环境下的随
2026-05-18 20:00:00
664
原创 29 - Go time 时间模块详解:时间处理、定时控制与底层设计
本文深入解析Go语言time模块的核心功能与设计原理,涵盖时间处理、定时控制和常见陷阱。主要内容包括: 核心概念:time.Time表示时间点,time.Duration表示时间间隔(纳秒数) 基础使用: 获取当前时间(time.Now)和时间戳 特殊的时间格式化方式(2006-01-02格式) 进阶场景: 接口耗时统计(time.Since) 超时控制(time.After) 定时任务(Ticker) 常见陷阱: time.After导致的内存泄漏问题 Ticker不Stop引发的goroutine泄漏
2026-05-15 23:00:00
490
原创 28 - Go JSON 数据操作
Go JSON 数据操作指南 本文深入讲解 Go 语言中的 JSON 数据处理,涵盖核心概念和实用技巧: 核心要点 JSON 是跨语言数据交换格式,Go 标准库提供强大支持 本质是通过反射实现结构体与文本数据的相互映射 使用 json.Marshal 和 json.Unmarshal 进行序列化/反序列化 关键技巧 结构体标签控制字段名、忽略字段和空值处理 指针类型解决 omitempty 的零值陷阱 嵌套结构体的 JSON 解析方法 动态 JSON 使用 map[string]interface{} 的注
2026-05-15 21:00:00
484
原创 27 - Go string 字符串处理与格式化:从底层原理到工程实践
Go字符串处理与格式化:核心原理与实践要点 本文深入解析Go语言字符串的核心设计原理与工程实践: 底层原理: Go字符串本质是只读字节序列,采用data *byte和len int结构 不可变性设计实现内存共享和零拷贝能力 默认UTF-8编码但不关心具体编码 关键特性: 使用strings包而非对象方法扩展功能 len()返回字节数而非字符数 rune类型处理Unicode字符 最佳实践: 使用strings.Builder进行高性能字符串拼接 utf8.RuneCountInString统计中文字符 fm
2026-05-14 23:00:00
424
原创 26 - Go recover 捕获错误:优雅恢复的真正意义
文章摘要 Go语言中的recover机制并非传统意义上的异常捕获,而是程序崩溃前的最后防线。本文深入探讨了recover的本质、使用场景和最佳实践: 设计哲学:Go区分错误(error)和异常(panic),recover是崩溃恢复机制而非业务控制流 核心要点: 必须配合defer使用 只能在当前goroutine中生效 返回值就是panic(x)中的x 典型应用场景: HTTP服务兜底(中间件模式) Goroutine崩溃隔离 框架级容错处理 防止进程意外退出 工程实践: 建议在框架层/边界层使用 配合d
2026-05-14 20:00:00
436
原创 24 - Go defer 语句:执行顺序与坑
Go语言中的defer语句是一个看似简单但容易踩坑的特性。它主要用于延迟执行函数调用,常用于资源释放(如关闭文件、解锁互斥锁)和异常处理(如recover panic)。defer的本质是将函数调用压入当前goroutine的栈中,在函数退出时按照后进先出(LIFO)顺序执行。
2026-05-12 00:30:00
392
原创 25 - Go panic 机制:程序崩溃的本质
本文深入解析Go语言中的panic机制,指出其本质是程序进入不可恢复状态后的崩溃控制机制,而非业务异常处理。文章从使用场景、执行原理、runtime行为等方面详细剖析panic的工作机制,包括栈展开过程、recover拦截点等核心概念。通过典型示例展示了panic的正确用法,如HTTP服务中的recover保护、goroutine崩溃处理等。同时重点分析了常见错误用法,如recover位置错误、滥用panic替代业务error等,并给出正确实践建议。最后强调panic应仅用于处理不可恢复错误,业务逻辑错误应
2026-05-12 00:30:00
493
原创 23 - Go 错误处理:error 设计哲学
Go错误处理哲学与最佳实践 本文深入探讨Go语言的错误处理机制,揭示了其背后的设计哲学: 显式错误处理:Go采用if err != nil的显式方式,避免异常带来的隐式控制流问题,使错误成为业务流程的一部分而非意外。 错误即值:通过error接口和双返回值设计,强制调用方主动处理错误状态,特别适合大型工程和分布式系统。 错误包装:使用fmt.Errorf和%w保留错误上下文链,配合errors.Is/As实现错误类型判断和提取。 自定义错误:通过实现error接口创建包含业务状态码等丰富信息的错误类型。
2026-05-11 01:00:00
473
原创 22 - Go 定时器与打点器:Timer vs Ticker 深度剖析
本文深入剖析Go语言中的定时器(Timer)与打点器(Ticker)的使用与原理。Timer用于一次性触发事件,Ticker用于周期性任务,二者本质都是基于时间驱动的事件通知机制。文章通过基础示例展示了Timer和Ticker的基本用法,并提供了超时控制、周期任务等进阶使用场景。重点分析了常见错误:忘记Stop导致内存泄漏,以及Reset误用引发的立即触发或死锁问题。最后给出了正确使用建议,强调Ticker必须手动Stop,并指出Timer.Reset更适合空闲超时检测、防抖等场景。
2026-05-11 00:30:00
912
原创 21 - Go 超时控制:context 与 timeout(从实战到原理)
Go 并发编程中的超时控制是确保系统健壮性的关键,context 包提供了标准解决方案。本文从实战出发,解析 context 的核心概念:它本质是一个控制信号传播机制,用于管理 goroutine 生命周期。通过 HTTP 请求、goroutine 退出和多层调用链等示例,展示了 context 的基础和进阶用法。重点剖析了三个常见陷阱:忘记调用 cancel 导致资源泄露、不使用传入的 context 造成失控、循环中错误创建 context 的性能问题。
2026-04-29 00:15:00
438
原创 从一次 Kafka 启动失败,深挖本地服务间通信的“隐形陷阱”
本文通过一个Kafka启动失败的典型案例,揭示了本地服务间通信的关键优化点。当配置使用内网IP连接ZooKeeper时,会出现20秒以上的延迟,而改用localhost后响应时间缩短到10毫秒。根本原因在于:使用内网IP时数据包会经过完整网络协议栈处理,可能触发反向DNS查询和防火墙检查;而localhost通信通过操作系统环回接口直接转发,避免了这些开销。文章深入分析了三种常见配置误区,包括DNS解析延迟、容器网络隔离和0.0.0.0地址误用,并对比了四种本地连接方式的性能差异.
2026-04-28 23:00:00
1091
原创 20 - Go 互斥锁:Mutex 与并发安全
Go语言中的互斥锁(Mutex)是解决并发安全问题的关键机制。文章从基础概念出发,解释了Mutex的核心作用——通过排他访问控制确保共享资源在并发环境下的数据一致性。通过计数器示例演示了Mutex的基本用法,强调必须成对使用Lock/Unlock,推荐使用defer确保解锁。进阶部分展示了如何构建线程安全的Map结构体,并指出原生map并发写会panic的问题。最后重点分析了常见错误场景,特别是忘记Unlock导致的死锁问题。
2026-04-28 21:00:00
449
原创 19 - Go 并发限制:限流与控制并发数
本文深入探讨了Go语言中的并发控制技术,从基础到进阶实践全面解析。主要内容包括: 并发控制的核心概念:通过channel控制并发数(信号量模型)和限流控制(令牌桶算法) 三种典型实现方式: 使用带缓冲channel实现并发限制 采用worker pool模型构建生产级并发系统 结合context实现超时/取消控制 常见陷阱与解决方案: goroutine泄漏问题及context的正确使用 channel死锁问题及缓冲区的合理设置 工程实践要点: 并发控制本质是通过阻塞/排队保证系统稳定性 典型应用场景包括A
2026-04-22 22:30:00
554
原创 18 - Go 等待协程:WaitGroup 使用与坑
本文深入解析 Go 语言中 sync.WaitGroup 的使用方法与常见陷阱。WaitGroup 是用于等待一组 goroutine 执行完成的轻量级工具,通过计数器机制实现主协程的阻塞等待。文章详细介绍了 WaitGroup 的基本用法、与 channel 的配合使用方式,并重点剖析了四个常见坑点:Add 调用时机错误、Done 重复调用、WaitGroup 值传递问题以及重用风险。此外,还从底层原理层面解释了 WaitGroup 的原子操作和信号量机制,对比了 WaitGroup、channel 和
2026-04-22 21:00:00
633
原创 goroutine 为什么没有返回值?(Go 并发核心设计思想)
摘要:goroutine作为Go语言的并发执行单元,其设计目标为轻量、高并发和无阻塞调用,因此不支持直接返回值。与普通函数不同,goroutine是异步执行的独立执行流,不存在明确的调用者等待结果的语义。Go语言推荐使用channel进行goroutine间的通信和结果传递,避免共享内存带来的数据竞争问题。这种设计体现了"通过通信共享内存"的并发哲学,与传统的线程模型形成鲜明对比。文章还介绍了多种替代方案,如channel、WaitGroup、结构体封装和context等,以满足不同场景
2026-04-20 21:05:59
592
原创 17 - Go 通道 Channel 底层原理 + 实战详解
Go 语言中的 Channel 是并发模型的核心组件,既是通信工具也是同步原语。文章详细解析了 Channel 的底层原理和实战应用:1)Channel 分为无缓冲(同步)和有缓冲(异步)两种类型;2)底层采用环形队列和阻塞队列实现,通过互斥锁保证并发安全;3)核心流程包括发送/接收时的阻塞与唤醒机制。实战部分展示了 goroutine 通信、worker pool 和 pipeline 三种经典模式。文章还对比了 Channel 与 Mutex 的差异,并总结了使用原则:适合 goroutine 通信和任
2026-04-18 17:00:00
400
原创 Go channel 阻塞与死锁完整分析
本文深入分析了Go语言中channel阻塞与死锁机制。阻塞是channel的正常行为,当发送/接收条件不满足时goroutine会被挂起;而死锁则是所有goroutine都阻塞且无法恢复的异常状态。文章详细列举了无缓冲/有缓冲channel的阻塞场景、典型死锁案例,并提供了避免死锁的实用技巧(如使用buffer、WaitGroup、select等)。同时揭示了阻塞的底层原理(goroutine进入等待队列)和死锁检测机制。最后强调阻塞是设计特性,而死锁是需要避免的程序错误,并总结了相关面试高频问题。
2026-04-18 11:00:00
385
原创 16 - Go 协程(goroutine):从基础到实战
Go 协程(goroutine)是 Go 语言实现高并发的核心机制,具有轻量级、低成本和高效调度的特点。本文从基础到实战全面介绍了 goroutine 的使用: 基础概念:goroutine 是用户态线程,初始仅占用 2KB 内存,由 Go runtime 调度而非操作系统 执行机制:通过 GMP 模型实现高效调度,相比传统线程具有更低的内存占用和切换成本 核心组合:goroutine 配合 channel 实现"通过通信共享内存"的并发模式 实战场景:包括并发任务处理、WaitGrou
2026-04-17 22:30:00
440
原创 15 - Go 泛型(Generics):从入门到实战
Go 1.18引入泛型特性,彻底改变了Go语言的类型抽象能力。本文从基础到实战全面讲解Go泛型,包括基本语法、类型约束、泛型函数实现、泛型结构体设计等核心概念。通过多个实用案例(如查找元素、获取最大值、泛型容器封装等)展示泛型在实际开发中的应用。同时深入解析泛型底层原理,对比传统interface{}方案,并给出最佳实践建议:优先使用具体类型、仅在重复逻辑时使用泛型、保持约束精确性等。帮助开发者合理利用泛型提升代码复用性和类型安全性。
2026-04-17 22:00:00
424
原创 14 - Go 结构体(struct):从基础到高级实战
Go 结构体(struct)摘要 Go 语言中的结构体(struct)是核心数据结构,用于表示对象或实体。本文从基础到高级讲解了 struct 的使用: 基础定义:struct 是字段集合,类似其他语言的类或字典 创建方式:推荐使用字段名初始化,避免顺序依赖 本质特性:struct 是值类型,赋值会进行值拷贝 指针使用:通过指针避免拷贝,直接修改原对象 方法定义:通过接收者(receiver)为类型添加方法 接收者类型:值接收者不修改原数据,指针接收者可修改 文中包含大量代码示例,展示了 struct 的定
2026-04-16 22:00:00
602
fastdfs6.11.0+docker+k8s
2025-07-22
ktctl-0.3.7.zip
2025-03-31
fastdfs6.06+nginx1.26.2所需的包
2024-08-27
process-exporter-0.7.10.linux-amd64.tar.gzprocess-exporter
2022-10-08
kafka_exporter-1.6.0.linux-amd64.tar.gz
2022-09-06
alertmanager grafana node_exporter prometheus
2022-09-06
elk7.9.2 kafka_2.12-2.2.2 kibana logstas elasticsearch
2022-08-29
Dockerfile RUN无法执行
2024-10-31
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅