Appearance
归档
一份源于一线开发的 Golang 工程实践笔记。按时间归档本站所有技术文章,涵盖 Golang、Kubernetes、Linux、CI/CD、安全等方向,方便查阅历史文章。
一份源于一线开发的 Golang 工程实践笔记。按时间归档本站所有技术文章,涵盖 Golang、Kubernetes、Linux、CI/CD、安全等方向,方便查阅历史文章。
不仅解决子域名泛滥和 HTTPS 服务路由,更进一步:通过 Nginx Stream 模块 + SNI 路由,实现多个 SSH 主机的统一接入与智能分发。一套架构,覆盖所有内网服务的远程访问需求。
在 VMware 虚拟机中为 Rocky Linux 9.6 添加第二块网卡,从网卡识别到静态 IP 配置的完整实战记录。涵盖 NetworkManager 连接创建、配置文件详解、临时连接清理、避坑指南,适合服务器多网卡部署场景。
无需公网 IP,无需开放端口,通过 Cloudflare Tunnel 安全访问家中 ESXi、vCenter 及任何内网服务。完整记录从 cloudflared 安装、隧道创建到多服务路由配置的全过程,附带极简与高级两种配置路径。
记录一次 VitePress 博客在 Google 搜索结果中不显示 favicon 的排查与解决过程。涵盖 favicon 文件生成、public 目录放置、config.mts 配置 head 引用,以及在 Google Search Console 中验证配置生效的完整实战指南。
记录一次在 Cloudflare R2 中遭遇无法删除的灰色 Ongoing Multipart Upload 幽灵文件的排查过程。从 rclone 删除无效到通过配置 Object Lifecycle Rules 强制清理的实战指南。
记录一次因家庭断电导致的 Homelab 服务器异常关机,以及随后自动关机、无法开机、vCenter 服务启动失败的完整修复过程。包含硬件排查、CMOS 重置、服务手动恢复等实战步骤。
手把手教你为 Go 项目配置 GitHub Actions 测试工作流,支持 go.mod 自动读取版本、私有依赖拉取、竞态检测。代码推送和 PR 自动触发,告别手动测试。
像 curl 测试 HTTP 接口一样测试 gRPC 服务——grpcurl 命令行工具完整教程,涵盖安装、基本用法、Unix Socket 调试、高级技巧及常见问题。从零开始快速上手 gRPC 服务调试。
journalctl 是 systemd 日志系统的核心工具,本文从基础查看、时间过滤、单元过滤到持久化配置,涵盖服务故障排查、OOM 分析、SSH 登录失败等真实场景,提供一套完整的日志管理实战指南。
从 DHCP 到静态 IP 的完整配置过程,基于 NetworkManager 配置文件详解。含配置前后对比、操作步骤、避坑指南,手把手带你搞定 Rocky 9.6 的网络设置。
基于 CentOS 7,手把手教你从已部署的 Kubernetes 集群中导出所有镜像、RPM 包和二进制文件,制作成完整的离线部署包。适用于政府内网、金融专网等无互联网环境,一套脚本搞定离线安装。
还在忍受 CentOS 7 默认 YUM 源的龟速下载?手把手教你更换为阿里云国内镜像,提供一键脚本和分步详解,下载速度从 KB/s 提升到 MB/s,软件包安装效率提升 10 倍以上。
被 KubeKey 折磨到崩溃?从系统准备到集群上线,15 分钟手动完成 Kubernetes v1.31.2 安装。containerd + kubeadm + Calico,每一步都透明可控,附常见问题排查与 KubeKey 对比分析。
一个月前提交文章需要等 7 天才能被 Google 收录,一个月后只需 24 分钟。这不是运气,而是站点信誉度提升的自然结果。一份真实的技术博客 SEO 成长记录,分享收录速度变化的观察节点与实用建议。
无需记忆 GNU tar 和 BSD tar 的差异,一招搞定跨平台目录重命名打包。先重命名、再打包、最后恢复,简单可靠,适用所有环境。
深入剖析 CSI 与内核模块(.ko)的协作原理:从架构设计到生产环境三大踩坑实战,一篇搞懂容器化存储的底层依赖与部署最佳实践。
解决 VitePress 表格内容换行后影响美感的痛点,通过 OverflowTable 组件让宽表格保持整洁不换行,按需使用,互不影响。
从一次 Gin 框架项目实践出发,深入探讨 oneof 验证标签中单引号使用的误区。通过 gin-binding-oops 和 gin-binding-grace 两个对比示例,揭示单引号写法在运行时虽然能被正确解析,却严重影响代码可读性和可维护性的问题。文章涵盖 oneof 标签的正确写法、空值处理策略、枚举值常量管理,以及如何写出优雅且易于维护的参数验证代码。
一份完整的 Kubernetes Dashboard 生产级部署指南。涵盖 YAML 部署、Docker/containerd 容器运行时支持、admin-user 最小权限配置、多方式访问(Proxy/NodePort/Port Forward)、Token 认证及生产环境安全配置建议,适用于各类 Kubernetes 集群环境。
Ubuntu 22.04 + containerd 环境,完整覆盖离线包制作、镜像拉取、集群初始化、网络插件配置全流程,附带大量避坑提示和验证命令。
还在重复安装操作系统?本文手把手教你使用 vCenter 模板克隆功能,从黄金镜像到批量部署,5 分钟搞定 5 台虚拟机,效率提升 20 倍!附踩坑避坑指南,运维新手也能轻松上手。
手把手带你绕过 GitLab 安装中的各种坑,包括镜像源选择、Let's Encrypt 证书问题、以及用户权限最佳实践。基于真实踩坑记录整理,所有命令均经过验证。
从零到一掌握 go-i18n 库,结合 Gin 框架实现 Go 项目多语言国际化。涵盖核心概念、命令行工具工作流、翻译文件管理和实战代码,帮你快速为 Go 应用添加多语言支持。
在离线开发环境中,使用 Golang 和 Gin 构建轻量级 Slack Webhook Mock 服务器,支持 Payload 可视化调试、Systemd 部署,彻底解决离线环境下的 Webhook 集成调试痛点。
一文掌握 Git 配置的查看、删除与修复技巧。涵盖三级配置结构解析、--show-origin 排查无效配置、git config 增删改查全操作,附完整速查表,适合所有 Git 开发者收藏查阅。
使用 license 和 addlicense 两个强大的工具,为任何编程语言的开源项目建立完整的许可证管理体系。从生成 LICENSE 文件到为所有代码文件添加头部注释,再到 CI/CD 集成,一篇搞定开源项目许可证管理。适用于 Python、JavaScript、Go、Java、Rust 等所有编程语言项目。
深入对比Go语言中http.NewRequest和http.Client.Post的核心差异,涵盖Context支持、连接池优化、自定义Header、请求拦截与中间件等关键特性。这是所有Go HTTP客户端开发都必须掌握的最佳实践,适用于REST API、微服务调用、文件上传等广泛场景。
全面解析 Go 语言 Option 设计模式,深入对比附加类型与原有类型两种实现方式,附带完整代码示例和生产环境最佳实践建议,助你写出更优雅的 Go 代码。
开发中最烦人的细节之一:每次打开 IDEA 文件,方法体总是默认折叠。本文提供一份完整的 Code Folding 配置指南,包含全局设置步骤、快捷键速查表、自定义折叠区域技巧,让你彻底掌控代码折叠行为。
从零开始配置 Slack Incoming Webhook 的完整实操指南。详细讲解 Scope 权限配置、OAuth Token 安装、激活 Incoming Webhook、重新安装应用、获取 Webhook URL 的全流程,并附赠踩坑经验与常见问题解答。
一文搞懂 Webhook 的核心概念、与 API 的本质区别、IETF 规范草案(SWT/PCRP),以及用 Go 语言实现发送和接收 Webhook 的完整代码示例。包含最佳实践清单和常见问题解答,适合新手入门和开发者快速上手。
从零开始在三台机器上部署 Keepalived,配置 VRRP 主备切换,实现 VIP 自动漂移。包含完整的安装步骤、配置详解、健康检查脚本整合,以及故障切换验证。
详细记录在 macOS 中使用 balenaEtcher 制作 ESXi 8.0 启动 U 盘的完整流程。从 Broadcom 官网下载 ISO、处理"找不到分区表"警告,到最终烧录成功。一份适合 Homelab 新手和开发者的实践指南。
解决 Ubuntu 22.04 中 cloud-init 覆盖 Netplan 静态 IP 配置的常见问题。通过禁用 cloud-init 网络管理模块,让静态 IP 在重启后依然生效。包含完整排错步骤、99-disable-network-config.cfg 配置文件详解、Netplan 配置示例与安全最佳实践。
从入门到生产实践,全面解读 HAProxy 核心概念、负载均衡算法、健康检查配置、ACL 七层路由、会话保持、Keepalived 高可用方案及性能调优,附完整配置示例与常见问题排查,助力构建高可用反向代理基础设施。
从 1 行危险的复制命令开始,逐步重构为支持参数化、自动备份、状态检查、快速回滚的生产级通用部署脚本。涵盖 Bash 脚本设计思维、5 个演进版本对比、软链接零停机切换方案,附完整源码开箱即用。
深入拆解 MinIO 纠删码(Erasure Code)的核心机制:Reed-Solomon 编码数学原理、k+m 模型解析、存储空间利用率计算、多盘/多节点部署实战、磁盘故障模拟与数据自动恢复验证。彻底搞懂 MinIO 高性能高可用的底层密码。
深入剖析 MinIO 的架构精髓:纠删码设计、无元数据单点瓶颈、S3 完美兼容。结合 Go SDK 从安装部署到生产级实践,涵盖预签名 URL、桶事件监听、性能调优等高级特性,全方位构建云原生存储基础设施。
全面掌握 Go 项目构建优化技巧:使用 -v 查看实时编译进度、-mod=vendor 固定依赖版本、time 统计构建耗时、理解增量编译机制。包含 Makefile 封装、CI/CD 集成和完整的自动化脚本,让大型 Go 项目的构建过程清晰可控。
在 vSphere 环境中克隆 CentOS 虚拟机后,使用 uuidgen 命令快速解决网卡 UUID 重复问题,通过 network 服务管理网卡配置。
手写生产级 Nginx 配置,实现 upstream 动态摘除故障节点、主动健康检查、被动熔断机制。包含完整的配置模板和验证命令,可直接用于你的高可用入口架构。
手把手教你为 VitePress 博客配置完整的 SEO 方案,包括 meta 标签、Open Graph、Twitter Cards、文章结构化数据,以及如何通过 Facebook Debugger 验证配置是否生效。
从 npm audit 报警告,到执行 --force 降级 VitePress 导致项目崩溃,再到发现死循环的真相。一篇帮你避开 npm audit 常见坑的经验分享。
深入解析 npm scripts 中 && 命令分隔符在不同操作系统 Shell 下的行为差异,以及如何使用 npm-run-all 实现跨平台的任务执行。以 VitePress 项目构建流程为实战案例。
解决公司和个人Git账号在同一台电脑上混用的SSH配置问题,覆盖macOS/Linux/Windows三平台,包含密钥生成、config配置、ssh-agent管理、项目级用户信息设置等全流程。
从零开始,用 Go 语言和 Gin 框架实现一个能汇报本机身份的健康检查服务。包含三节点模拟、Docker Compose 环境搭建,代码可直接用于生产环境。
深入讲解 VRRP(虚拟路由冗余协议)的核心原理:心跳广播、优先级抢占、MAC 地址迁移。结合 Keepalived 的配置示例,彻底搞懂虚拟 IP 为什么能“漂移”,为后续的实战部署打下坚实的理论基础。
深入分析直连 Master IP 架构的单点故障问题,逐步引入虚拟 IP(VIP)概念,演进到完整的 VIP + Nginx 高可用入口架构。本文是《分布式高可用入口架构实战系列》的开篇,为后续的 Keepalived 部署、Nginx 配置、故障演练打下理论基础。
vSphere 克隆 Ubuntu/CentOS 虚拟机后启动卡住?Gave up waiting for root device 错误的元凶是 Linux 设备名漂移(/dev/sda 变 /dev/sdb)。本文详解 disk.EnableUUID 参数原理、vSphere Web Console 开启步骤,以及通过 /dev/disk/by-uuid/ 验证和 fstab 配置模板,3 分钟彻底解决问题。
一篇让零基础读者彻底搞懂 Ansible 的入门指南。从自动化运维的痛点场景出发,用通俗易懂的类比和实战案例,讲解 Ansible 的核心概念、工作原理、快速上手指南。无需任何前置知识,读完即可明白这个自动化工具能做什么、怎么用。
深入对比 POSIX 接口标准、NFS 协议和 SMB 协议的核心定位、性能特点与适用场景,帮助你在不同业务需求下做出正确的存储方案选型。
深入解析 VictoriaMetrics 企业级时序数据库:与 Exporter 的本质区别、核心特性、架构组件、应用场景及 Prometheus 对比。帮你正确选型监控方案。
分布式系统入门系列教程第一篇:从 CAP 定理出发,理解分布式系统的核心权衡,搭建整体架构蓝图。
从本地文件系统的inode概念出发,深入剖析HDFS、Ceph等分布式存储系统中元数据的设计演进,理解数据块指针、元数据节点等核心概念的演变。
从分布式、高并发、轻量级、跨平台编译到云原生生态,深度解析 Go 语言为何成为云原生基础设施的首选语言。
Ubuntu 20.04 + containerd 环境,完整覆盖离线包制作、镜像拉取、集群初始化、网络插件配置全流程,附带大量避坑提示和验证命令。
解决 Ubuntu 20.04 系统上 kubeadm 初始化时提示 cgroups v1 维护模式的警告。包含 cgroups v1/v2 状态解析、影响分析、保持 v1 或切换到 v2 的完整方案。
解决 kubeadm 初始化时检测到 pause:3.8 与 pause:3.10 不一致的警告。包含 containerd 配置修改、kubelet 重启、kubeadm 配置文件覆盖等完整解决方案。
从 0 到 1 为 VitePress 博客添加归档页面:构建脚本提取文章元数据、按年份分组、自动排序。一份完整的 VitePress 主题扩展实战指南。
从bg-clip-text核心原理到Vue组件封装,再到Hypercolor专业配色参考。一篇带你彻底掌握Tailwind CSS渐变文字效果的完整指南。
上线快一年,Google 搜索几乎零曝光?本文记录了一次完整的博客 SEO 实战:从发现 Cloudflare AI 爬虫屏蔽、解决 robots.txt 问题,到重构目录结构、配置 Nginx 301 重定向,最终让 Google 重新信任你的技术博客。一份 VitePress + Cloudflare 站长的避坑指南。
现代 Linux 同时存在两套日志系统,安全产品如何适配?对比存储、查询、安全特性,提供 Golang 统一日志读取层及 CGO 高性能调用实现。
深入理解 syslog 协议格式、Facility/Priority 含义、rsyslog 配置实战。安全日志采集的第一课,掌握 Golang 解析底层协议的能力。
从零搭建 syslog 日志收集服务:TLS 证书生成、TCP/TLS 接收端实现、SIEM 对接。包含完整可运行的 Golang demo,安全开发者的实操手册。
CSI 是 K8s 给存储厂商定的统一接口标准。本文深入解析 CSI 核心组件(Controller/Node)、完整挂载流程(PVC→PV→Pod)、存储厂商实现原理,以及卷残留处理、ReadWriteMany 支持、教学级 demo 实现思路。一篇讲清 CSI 从原理到实践。
手动访问能看到恶意内容,自动化工具却什么都检测不到?本文记录一次真实的域名劫持分析,揭示恶意站点的“变脸”对抗行为,并提供一套基于 Golang 的多策略检测方案:多 User-Agent 轮询、混淆代码特征识别、可疑度评分机制,以及 chromedp 浏览器自动化进阶方案。
为 CI/CD 流水线配置邮件通知,实现构建和部署状态的实时感知。涵盖 Gmail SMTP 配置、应用专用密码生成、成功/失败邮件区分、多收件人支持,让团队第一时间获知部署状态。
承接上文,详解如何将构建产物自动部署到远程服务器。涵盖 artifact 下载解压、SCP 文件传输、SSH 远程命令执行、PM2 服务重启,实现一键式自动化部署。
详解 Nuxt.js 项目配置 GitHub Actions 实现创建 Release 时自动构建、打包并上传到 GitHub Release。包含 pnpm 依赖管理、代码检查、版本号自动更新、压缩包创建等完整流程,踩坑记录与解决方案。
深入解析 PostgreSQL 用户管理、认证配置、密码策略,揭秘感叹号导致认证失败的真相。包含 pg_hba.conf 配置详解、.pgpass 文件使用、Go 语言连接示例,以及完整的故障排查清单。
告别 Nginx 基础认证与 Token 认证的冲突问题。使用 Cloudflare Access 零信任架构,在边缘节点建立认证墙,实现一键切换的灰度发布模式。Free 计划完全够用,Service Token 让服务间调用无感认证。
遵循 Linux FHS 标准,从源码编译到服务器部署:Systemd 服务管理、Nginx 反向代理、Cloudflare 全栈集成(DNS + Origin CA 证书 + 基础认证),一套完整的 Go 应用上线流程。
可执行文件放 /usr/bin、配置文件放 /etc、日志放 /var/log... 深入理解 Linux 文件系统层次标准,从源码编译到打包部署,彻底搞懂软件文件应该"住"在哪里。
使用 apache2-utils 生成密码文件,通过 Nginx 基础认证保护预发布环境,结合 IP 白名单实现「密码 + 白名单」双重保护,零代码改动的灰度发布策略。
从构建产物到线上服务:PM2 进程管理、Nginx 反向代理、防火墙配置,以及 Let's Encrypt 和 Cloudflare 两种 SSL 证书方案选型。
从零开始购买 Vultr VPS、部署 Ubuntu 22.04、安装配置 PostgreSQL 和 Redis,并解决防火墙、远程连接等实际问题的完整踩坑指南。
还在手写 "update"、"fix" 当 commit message?把 Git reset、restore、diff 和 AI 组合起来,自动生成规范、详细、带 type 和 scope 的专业提交信息。
Base64 让代码膨胀了几千个字符,浏览器还无法缓存。本文分享如何用 Cloudflare R2 免费对象存储 + 自定义域名,3 分钟实现无需备案、自动 TLS、全球 CDN 加速的优雅图片存储方案。
从"map 是不是并发安全的"疑问入手,通过函数栈帧图解,彻底理解局部变量为什么天然隔离、什么情况才真的需要加锁
在当今多云AI服务时代,如何优雅地管理多个厂商的AI大模型配置?传统的按厂商硬编码的方式已经不再适用。本文将介绍一个面向模型而非厂商的可扩展配置方案,并分享完整的Go语言实现。
一套能在30秒内,将任意表格调整为专业、整洁、与页面和谐统一的标准工作流。直击三大痛点:边框冗余、文字对不齐、宽度失调。
在 Golang 中,通过合理的使用结构体标签可以起到附加语言特性的相关处理,通过 json:",string" 可以在编码或解码时将数字转为字符串;通过 json:",omitempty" 当字段值为零值时可以在编码之后忽略该字段,在 json 数据中你压根就看到到该字段,它好像没有来过一样!
在 macOS 环境使用 Docker 开启单节点 Kubernetes 环境时,通过 kubectl 获取节点状态时响应 Unable to connect to the server: EOF 咦!Docker Desktop 显示 Kubernetes 服务已正在启动没有任何问题,就是通过终端 kubectl 与 kube-apiserver 无法交互!
在实际开发中,我们经常会遇到客户端传递字符串格式的数字数组,而服务端需要将其绑定到 int64 类型切片的情况。本文将详细介绍如何使用 Gin 框架优雅地解决这个问题。
在 Golang 中定义数据模型结构体字段时可以通过类型指针来控制字段在数据非零值,例如,定义一个布尔指针类型的 IsCompleted 字段,在更新时可以通过指定一个 *false 指针即可正常的将原有的 true 值,修改为 false,当然指定 gorm 字段定义时您可以指定为 gorm:tinyint(1),但是,如果您指定的是布尔类型,通过指定指定字段值为 false 将,无法进行更新,这是因为 gorm 会将所有的类型零值视为该字段未更新所以也就无法从 false 修改为 true, 必须将其指定为布尔指针。
在 Windows 系统中可以通过 Win + L 快捷键进行快速的锁屏操作, 当然在 macOS 系统中也可以通过 ⌃ Control + ⌘ Command + Q 进行快速锁屏,不过,MacOS 系统有更好的操作方式来实现这个锁屏需求,但是,在 MacOS 系统 Ventura 版本触发角的设置真是不太好找!
将 Nuxt.js CI/CD 实践思想迁移到 VitePress 文档项目。涵盖构建输出路径调整、验证文件变更、Nginx 重载服务、npm ci 优化,实现文档站点的自动化构建、部署与通知。
