[{"title":"Go 语言代码安全指南","url":"/posts/go/2021-12-01-go%E5%AE%89%E5%85%A8%E8%A7%84%E8%8C%83/","description":"覆盖输入校验、内存安全、文件与命令操作、网络请求等场景的 Go 安全编码检查清单。","date":"2021-12-01","tags":["Go"]},{"title":"聊聊 22 届秋招的体验","url":"/posts/interview/2021-12-interview/","description":"复盘 2022 届后端校招经历，记录投递结果、准备策略、开源经历与个人选择。","date":"2021-11-21","tags":["面经","秋招"]},{"title":"最近两个月及远程实习半个月小记","url":"/posts/chore/2021-06-19-recent-life/","description":"记录 2021 年实习、开源贡献和校招准备阶段的经历与反思。","date":"2021-06-19","tags":["实习"]},{"title":"面试官：如何只使用一个指针域实现双向链表","url":"/posts/interview/2021-06-05-%E5%A6%82%E4%BD%95%E5%8F%AA%E4%BD%BF%E7%94%A8%E4%B8%80%E4%B8%AA%E6%8C%87%E9%92%88%E5%9F%9F%E5%AE%9E%E7%8E%B0%E5%8F%8C%E5%90%91%E9%93%BE%E8%A1%A8/","description":"解释 XOR Linked List 如何用前后节点地址异或，在单一指针域中实现双向遍历。","date":"2021-06-05","tags":["算法"]},{"title":"正/反向代理与科学上网","url":"/posts/2021-05-31-%E6%AD%A3%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%E4%B8%8E%E7%A7%91%E5%AD%A6%E4%B8%8A%E7%BD%91/","description":"解释正向代理与反向代理的角色差异，并从请求路径理解常见代理工具和网络访问场景。","date":"2021-05-31","tags":["代理"]},{"title":"极客时间专栏《RPC实战与核心原理》读后笔记","url":"/posts/rpc/geektime-rpc/","description":"围绕 RPC 架构、服务发现、连接管理、序列化与治理，整理课程阅读笔记。","date":"2021-05-14","tags":["RPC"]},{"title":"MIT 6.828 课程学习记录","url":"/posts/os/mitos/","description":"记录 MIT 6.828 操作系统课程的学习起点、参考资料与后续计划。","date":"2021-04-25","tags":["OS","MIT"]},{"title":"Go 使用的 plan9 汇编语言初探","url":"/posts/go/2021-03-20-go-%E4%BD%BF%E7%94%A8%E7%9A%84-plan9-%E6%B1%87%E7%BC%96%E8%AF%AD%E8%A8%80%E5%88%9D%E6%8E%A2/","description":"从伪寄存器、指令格式和函数调用约定入门 Go 使用的 Plan 9 汇编。","date":"2021-04-04","tags":["Go","汇编"]},{"title":"大三上学期好未来字节腾讯实习面经","url":"/posts/interview/2021-3-nowcoder/","description":"记录大三阶段好未来、字节、腾讯等公司的 Go 后端实习面试过程与反思。","date":"2021-03-30","tags":["面经"]},{"title":"Go unsafe.Pointer、uintptr、Pointer 之间的区别与联系","url":"/posts/go/2021-03-14-go-unsafe.pointeruintptr%E4%B8%8E%E6%8C%87%E9%92%88/","description":"解释 Go 指针、unsafe.Pointer 与 uintptr 的语义边界、转换规则和内存安全风险。","date":"2021-03-14","tags":["Go","源码"]},{"title":"深入理解 Go channel","url":"/posts/go/2021-02-22-%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3go-channel/","description":"从 hchan 数据结构和运行时源码理解 Go channel 的发送、接收、阻塞与调度机制。","date":"2021-02-25","tags":["Go","源码"]},{"title":"记 MySQL 5.7.5 及以上实现的功能检测依赖报错分析","url":"/posts/chore/2021-02-24-%E8%AE%B0-mysql-5.7.5-%E5%8F%8A%E4%BB%A5%E4%B8%8A%E5%AE%9E%E7%8E%B0%E7%9A%84%E5%8A%9F%E8%83%BD%E6%A3%80%E6%B5%8B%E4%BE%9D%E8%B5%96/","description":"从 ONLY_FULL_GROUP_BY 报错出发，分析 MySQL 5.7.5 之后函数依赖检测与 GROUP BY 行为变化。","date":"2021-02-24","tags":["MySQL","数据库"]},{"title":"深入理解 Go string 与 slice","url":"/posts/go/2021-02-20-%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3go-string-slice/","description":"结合源码和内存布局分析 Go string 与 slice 的数据结构、转换、扩容及常见性能问题。","date":"2021-02-15","tags":["Go","源码"]},{"title":"https 为什么安全","url":"/posts/https/","description":"通过证书、非对称加密、密钥协商和 Wireshark 抓包理解 HTTPS 如何抵御窃听与中间人攻击。","date":"2021-01-27","tags":["HTTPS","安全"]},{"title":"深入理解 Go defer 版本差异与底层特性","url":"/posts/go/2021-01-25-%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3go-defer%E7%89%88%E6%9C%AC%E5%B7%AE%E5%BC%82%E4%B8%8E%E5%BA%95%E5%B1%82%E7%89%B9%E6%80%A7/","description":"梳理 Go defer 的执行规则、编译器实现和不同版本中的性能演进。","date":"2021-01-25","tags":["Go","源码"]},{"title":"深入理解 Go map","url":"/posts/go/2021-02-22-%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3go-map/","description":"从哈希表结构、桶与溢出桶出发，分析 Go map 的创建、访问、扩容、删除和并发限制。","date":"2021-01-22","tags":["Go","源码"]},{"title":"在线博客的图床解决方案","url":"/posts/chore/blog_imgs/","description":"比较 GitHub/Gitee、OSS、SM.MS 等图床方案，并记录 PicGo 自动上传与编辑器协作流程。","date":"2021-01-20","tags":["杂谈","博客"]},{"title":"谈谈最常见的 HTTP","url":"/posts/http/","description":"从请求语义、版本演进和实际通信过程理解 HTTP，而不止停留在常见面试结论。","date":"2021-01-15","tags":["HTTP"]},{"title":"一些常见 Go 语言及面试问题的整理","url":"/posts/interview/somequestions/","description":"整理 Go make/new、map、channel 等常见面试问题及其底层实现思路。","date":"2021-01-15","tags":["杂谈","Go","面试"]},{"title":"几经周折的博客变迁史","url":"/posts/chore/blog_journey/","description":"记录个人博客从静态页面、Hexo 到 Hugo 与 GitHub Pages 的迁移过程。","date":"2021-01-06","tags":["博客","CDN","杂谈"]},{"title":"记人生中前几次面试及思考","url":"/posts/interview/2020-12-interview/","description":"复盘早期几次实习面试，从简历、技术表达和算法准备三个方面总结经验。","date":"2021-01-03","tags":["面试"]},{"title":"手写一个RPCg（上）","url":"/posts/rpc/rpcg/","description":"通过简化的 Go RPC 框架，理解网络传输、服务注册与注册中心的基本结构。","date":"2020-11-28","tags":["Go","RPC","框架"]},{"title":"你觉得HTTP最香是因为你还不知道RPC","url":"/posts/rpc/rpcvshttp/","description":"从调用模型、资源模型和 API 设计目标出发比较 RPC 与 REST，而不是简单判断孰优孰劣。","date":"2020-11-10","tags":["REST","RPC"]},{"title":"Linux du/df 命令总结","url":"/posts/chore/linux_df_du/","description":"比较 Linux 中 df 与 du 的统计口径、常用参数以及磁盘占用结果不一致的原因。","date":"2020-11-04","tags":["Linux","杂谈"]},{"title":"一文搞懂 ASCII、Unicode与UTF 编码","url":"/posts/ascii-unicode-utf/","description":"从字符集与编码的区别出发，梳理 ASCII、Unicode、UTF-8、UTF-16 以及 Go rune 的关系。","date":"2020-09-18","tags":["字符集"]},{"title":"StarUML3.x 版本解包分析","url":"/posts/chore/staruml-3.2.x/","description":"记录 StarUML 3.2.2 的 Electron 与 asar 包结构分析，以及当时环境中的问题排查。","date":"2020-05-20","tags":["UML","工具"]},{"title":"OBS/Bilibili 直播姬的显示器捕获黑屏解决方案","url":"/posts/chore/obs/","description":"记录 Windows 10 双显卡环境下 OBS 与 Bilibili 直播姬捕获桌面黑屏的排查方法。","date":"2020-04-26","tags":["踩坑"]},{"title":"Go+QML构建桌面应用","url":"/posts/chore/go+qamel/","description":"比较 Go 桌面 GUI 技术方案，并记录使用 qamel 连接 Go 后端与 QML 界面的实践。","date":"2020-03-23","tags":["QML","Go","GUI"]},{"title":"优化一个 Golang 服务减少 40% 以上的CPU","url":"/posts/translation/20200303-optimizing-a-golang-service-to-reduce-over-40-cpu/","description":"通过升级 Go、调整 GOGC 和分析内存分配，复盘生产服务降低 CPU 使用率的过程。","date":"2020-03-16","tags":["翻译","优化","Go"]},{"title":"Go+QML开发的跨平台桌面直播助手[下]","url":"/posts/b%E7%AB%99%E7%9B%B4%E6%92%AD%E5%8A%A9%E6%89%8B%E5%BC%80%E5%8F%91%E4%B8%8B/","description":"使用 Go、WebSocket 和 QML 实现桌面直播助手，记录消息处理、协程池和界面通信方案。","date":"2020-03-13","tags":["WebSocket","Go"]},{"title":"Go语言net/url包源码初探","url":"/posts/chore/go-net-url%E5%8C%85%E6%BA%90%E7%A0%81%E5%88%9D%E6%8E%A2/","description":"结合中文查询参数导致的 400 错误，阅读 Go net/url 源码并理解 URL 转义规则。","date":"2020-03-11","tags":["Go","源码","官方库"]},{"title":"Go+QML开发的跨平台桌面直播助手[上]","url":"/posts/b%E7%AB%99%E7%9B%B4%E6%92%AD%E5%8A%A9%E6%89%8B%E5%BC%80%E5%8F%91%E4%B8%8A/","description":"通过浏览器抓包分析 Bilibili 直播弹幕 WebSocket 协议、握手流程与二进制消息结构。","date":"2020-03-05","tags":["抓包","协议","WebSocket"]},{"title":"超越代码的贡献:对于每一个人的开源","url":"/posts/translation/20191204-contribute-beyond-code-open-source--for--everyone/","description":"介绍代码之外参与开源社区的方式，包括文档、设计、测试、项目管理和社区协作。","date":"2020-02-14","tags":["翻译"]},{"title":"Go语言内存管理与内存清理","url":"/posts/translation/20191109-go-memory-management-and-memory-sweep/","description":"从 span、allocBits 和后台 sweeper 出发，理解 Go 1.13 的内存清理流程。","date":"2020-02-14","tags":["翻译","Go"]},{"title":"Go的GC是怎样监听你的应用的？","url":"/posts/translation/20191002-go-how-does-the-garbage-collector-watch-your-application/","description":"结合运行时追踪图理解 Go 1.13 垃圾收集器的标记阶段、后台 worker 与 mutator assist。","date":"2020-01-01","tags":["翻译"]},{"title":"Go的随机数是怎样产生的？","url":"/posts/translation/20191202-go-how-are-random-numbers-generated/","description":"从启动时随机源和运行时实现出发，解释 Go 1.13 中伪随机数生成的性能设计。","date":"2019-12-29","tags":["翻译","Go"]}]