Maven 核心概念
Maven 核心概念是开发者需要掌握的知识点。本文从基础概念开始结合实际案例详细讲解帮助读者深入理解并应用到实际开发中。
Maven 实战指南
Maven 实战指南是开发者需要掌握的知识点。本文从基础概念开始结合实际案例详细讲解帮助读者深入理解并应用到实际开发中。
Maven 入门教程
Maven 入门教程是开发者需要掌握的知识点。本文从基础概念开始结合实际案例详细讲解帮助读者深入理解并应用到实际开发中。
Maven 优化技巧
Maven 优化技巧是开发者需要掌握的知识点。本文从基础概念开始结合实际案例详细讲解帮助读者深入理解并应用到实际开发中。
Maven 常见问题
Maven 常见问题是开发者需要掌握的知识点。本文从基础概念开始结合实际案例详细讲解帮助读者深入理解并应用到实际开发中。
Zstandard 实时压缩算法
Zstd 是 Facebook 开源的实时压缩算法压缩比接近 zlib 速度快数倍。压缩级别控制速度/大小。Kafka 和 RocksDB 用 Zstd。本文对比 Zstd gzip zlib 压缩速度。
RISC-V 工具链搭建
RISC-V 工具链包括 GCC 交叉编译器和 QEMU 模拟器。编译裸机程序不需要硬件。本文搭建 RV64 工具链并运行 Hello World。
Google Protobuf Any 和 Oneof
Protobuf Any 封装未知消息类型实现多态Oneof 确保多个字段最多一个被设置。Any 跨语言发包场景常用。本文用 Any 传递不同类型的消息体。
Mermaid.js 图表和流程图
Mermaid 用文本语法生成流程图时序图和甘特图。嵌入 Markdown 自动渲染。GitHub 原生支持。本文绘制一个系统架构流程图。
Git LFS 大文件存储
Git LFS 用文本指针替代大文件在仓库中实际存远端。pull 时下载真正文件。避免仓库膨胀。适合游戏资源和数据集。本文配置 LFS 管理设计素材。
Unified Modeling Language UML 类图
UML 类图描述系统的静态结构类之间有关联聚合组合和继承等关系。绘制类图指导数据库设计和代码结构。本文用电商系统画出完整的类图。
MkDocs 文档站点快速搭建
MkDocs 从 Markdown 生成文档站点 Material 主题美观。配置导航和搜索。GitHub Pages 自动部署。本文搭建项目文档并配置自动部署。
Bazel 构建系统
Bazel 是 Google 的构建系统增量构建和远程缓存加速。多语言支持。BUILD 文件定义规则。适合大型 Monorepo。本文用 Bazel 构建 Go 和 Python 项目。
MessagePack 比 JSON 更紧凑的序列化
MessagePack 二进制序列化格式比 JSON 更紧凑解析更快。支持 JSON 相同的类型。适合带宽有限的 IoT 和微服务场景。本文对比 MsgPack 和 JSON 的序列化大小。
ProtoBuf 编码原理
Protobuf 用 Varint 编码节省整数空间TLV 格式紧凑。相比 JSON 体积小 3-10 倍。Schema 定义数据格式。本文分析 Protobuf 的二进制编码形状。
MPI 并行计算消息传递接口
MPI(消息传递接口)是 HPC 领域的并行编程标准。MPI_Send/MPI_Recv 传递数据。适合集群上的大规模科学计算。本文写一个矩阵乘法的 MPI 程序。
PDF 文档解析提取表格数据
PDF 中的表格提取使用 Camelot 或 Tabula 库。Camelot 用 Lattice 和 Stream 两种模式解析。本文从发票 PDF 中提取表格数据存为 CSV。
YAML 多文件组织和管理
YAML 文件过长时拆分多文件用锚点和合并语法复用。K8s 用 kustomize 管理多 YAML。本文展示大型 YAML 配置的组织方式。
Top K 问题堆排序解法
Top K 问题求最大 K 个元素用最小堆遍历时维护堆大小不超过 K。堆化复杂度 O(log K)。比全排序快。本文对比堆排序和快速选择算法的性能。
Merge Sort 归并排序原理和复杂度
归并排序用分治法将数组不断二分然后合并两个有序子数组。时间复杂度稳定 O(n log n)额外空间 O(n)。适合外部排序。本文用图示解释归并过程。
Sphinx 和 Read the Docs 文档托管
Sphinx 从 rst 生成文档 Read the Docs 免费托管。自动 API 文档。本文配置 Python 项目文档并部署。
Turborepo 单体仓库任务编排
Turborepo 加速 monorepo 的构建和测试。缓存任务结果避免重复执行。依赖拓扑自动安排并行。本文用前后端仓库展示 Turborepo 的配置。
语义化版本 SemVer 规范
语义化版本 MAJOR.MINOR.PATCH。MAJOR 不兼容 API 变更MINOR 新增功能向后兼容PATCH Bug 修复。预发布版本用 -alpha 后缀。本文解释 SemVer 的完整规范。
Maven 生命周期和插件机制
Maven 的生命周期由 phase 组成compile/test/package。插件绑定到 phase 执行 goal。理解生命周期才能灵活定制构建流程。本文解释 Maven 的三套生命周期。
正则表达式在文本处理中的高效用法
正则表达式是文本处理的利器。捕获组提取子串非贪婪匹配防止性能问题。回溯过多会导致灾难性回溯。本文用日志解析和数据清洗展示正则的实战技巧。
Git 中的 notes 给提交添加注释
git notes add -m "reviewed by Alice" 给提交添加附加注释不影响提交本身。notes 存储在 refs/notes/ 中。适合补充代码审查记录。
Git 中的 clean 清除未跟踪文件
git clean -n 预览会删除的文件git clean -f 删除未跟踪文件git clean -fd 包括目录。删除前一定要先预览不然后悔莫及。
Git 中 stash apply 和 stash pop 的差异
stash pop 应用并删除存储stash apply 只应用不删除。多次 stash 后用 stash apply 可以选择性地应用而不影响其他存储。
Git 中 diff 查看不同版本的文件差异
git diff 查看工作区和暂存区的差异git diff --cached 查看暂存区和上次提交的差异git diff branch1 branch2 比较两个分支的差异。
Git 中 bisect 二分查找引入 bug 的提交
git bisect start 标记当前 badgit bisect good known-good-commit。Git 自动二分查找帮你定位哪个提交引入了 Bug。本文展示 bisect 的完整流程。
Git 换行符 LF 和 CRLF 的自动转换
Windows 用 CRLFLinux/macOS 用 LF。git config core.autocrlf true 帮你在检出时转 CRLF 提交时转 LF。本文解释不同操作系统的换行符配置。
Git 中的 origin 和 upstream 区别
origin 是 fork 过来的自己的仓库upstream 是原作者的仓库。fork 后需要加 upstream 才能拉取原仓库的更新。本文解释两个远程仓库各自的用途。
Git pull 强制覆盖本地修改
git reset --hard origin/main 强制让本地分支和远程一致丢弃所有本地差异。如果有未提交的修改需要先 stash 或 reset HEAD。本文解释强制覆盖的几种方式及其后果。
Git 查看某个文件的修改历史
git log --follow file 查看文件的所有修改记录包括重命名后。git blame file 逐行显示每行最后一个修改人和版本。本文给出文件历史追踪的常用命令。
Git SSH 和 HTTPS 两种协议切换远程仓库地址
Git 远程仓库的 SSH 和 HTTPS 协议各有优劣。SSH 不需要每次输密码但需要配置密钥。HTTPS 适合防火墙背后的环境。git remote set-url 可以切换。
Git cherry-pick 把其他分支的提交捡到当前分支
git cherry-pick commitHash 把另一个分支的某个提交应用到当前分支而不是合并整个分支。适合紧急修复要在多个分支上生效的场景。本文演示 cherry-pick 多个提交。
Git 提交 GPG 签名配置
Git 提交用 GPG 签名可以验证提交人身份防止伪造。git commit -S 签名提交git tag -s 签名标签。本文介绍 GPG 密钥生成配置和在 GitHub 上显示 Verified 的过程。
Git 恢复被删除的分支 reflog 找回
git branch -D 删除了分支但 Git 不会立即删除提交对象。git reflog 可以找到被删分支最后一次指向的 commit hash。本文展示 reflog 中恢复的完整命令。
Git 忽略已经跟踪的文件变更但不删除
git update-index --assume-unchanged file 让 Git 暂时忽略已跟踪文件的变更适合本地配置不想提交的场景。想恢复用 --no-assume-unchanged。
Git 将多个提交合并成一个用 squash
git rebase -i HEAD~3 然后在交互界面把 pick 改成 squash 可以把最后三个提交合并成一个。合并后提交历史更加清晰适合在推送 PR 前整理提交记录。
Git rebase 过程中冲突了怎么退出
git rebase 遇到冲突时可以用 git rebase --abort 恢复到 rebase 之前的状态。git rebase --skip 跳过当前提交git rebase --continue 解决完冲突后继续。
Git stash 暂存后别忘了清理
git stash 暂存当前修改但不清理 stash 列表会越积越多。pop 同时恢复并删除记录drop 只删除不恢复。本文建议不要让 stash 超过五条。
Git 合并冲突 HEAD 和 incoming 分别是谁的
Git 合并冲突 HEAD 和 incoming 分别是谁的是开发中经常遇到的问题。本文从实际场景出发分析原因并给出可操作的解决方案适合正在排查这个问题的开发者参考。
GitHub fork 的项目怎么和原仓库同步
GitHub fork 的项目怎么和原仓库同步是开发中经常遇到的问题。本文从实际场景出发分析原因并给出可操作的解决方案适合正在排查这个问题的开发者参考。
npm 装包报 EACCES 权限错误不是 Node.js 的问题
npm 装包报 EACCES 权限错误不是 Node.js 的问题是开发中经常遇到的问题。本文从实际场景出发分析原因并给出可操作的解决方案适合正在排查这个问题的开发者参考。
npm 装包时 EINTEGRITY 完整性校验失败
EINTEGRITY 错误说明下载的包内容和 registry 记录的 shasum 不一致可能是网络传输损坏或 registry 数据异常。清缓存 npm cache clean --force 重装可以解决。如果持续出现考虑切换 npm registry 源。
常规提交 Conventional Commits
编写 feat/fix/chore 等前缀的提交信息,自动化版本发布和 CHANGELOG 生成。
MkDocs 文档生成
结合 Markdown 和 Material for MkDocs 主题,快速生成带搜索功能的项目文档。