Appearance
归档
一份源于一线开发的 Golang 工程实践笔记。按时间归档本站所有技术文章,涵盖 Golang、Kubernetes、Linux、CI/CD、安全等方向,方便查阅历史文章。
一份源于一线开发的 Golang 工程实践笔记。按时间归档本站所有技术文章,涵盖 Golang、Kubernetes、Linux、CI/CD、安全等方向,方便查阅历史文章。
从 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,安全开发者的实操手册。
journalctl 是 systemd 日志系统的核心工具,本文从基础查看、时间过滤、单元过滤到持久化配置,涵盖服务故障排查、OOM 分析、SSH 登录失败等真实场景,提供一套完整的日志管理实战指南。
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 优化,实现文档站点的自动化构建、部署与通知。
