Apple Clangd 掉坑记

Apple Clangd 掉坑记

clangd 是 llvm 项目推出的 C/C++ 语言服务器,通过 LSP(Language Server Protocal)协议向编辑器如 vscode/vim/emacs 提供语法补全、错误检测、跳转、格式化等等功能。据说是比 vscode 自己的 IntelliSense 更好一些,我开始用 clangd 的时候 IntelliSense 貌似还不支持使用 compile_commands.js 文件辅助代码分析,因此并没有具体对比过两者的差异。

macOS 上附带的 llvm 是 Apple 自己管理的,属于 Xcode 的一部分,这个版本其实是落后于主线版本很多的。理论上来说这种等待上游稳定后再选择使用的版本稳定性更好,问题会比较少,然而意外的这次在更新了 Xcode 后 clangd 就翻车了。

阅读更多
Linux 内核网络中的 sk_buff 数据结构

Linux 内核网络中的 sk_buff 数据结构

本文转载自 houmin.cc,原文已被删除,但因为之前阅读此文感觉说明较为清楚(后来查了下主要参考的是 Understanding Linux Network Internals 这本书),因此为方便今后查看,从 wayback machine 找到并转载了这篇文章。文章内容可能有补充修正。

在 Linux 内核的网络代码中,sk_buff 或许是最重要的数据结构,用来表示已接收或将要传输的数据。 sk_buff 定义在 include/linux/skbuff.h 中,它由许多变量组成,目标就是满足所有网络协议的需要。随着数据包在内核协议栈不同层次传递时,Linux 内核不是通过层与层之间的数据拷贝,而是通过追加头信息的方式,这即是 sk_buff 被使用的典型场景:在不同网络协议层之间移动,通过添加数据头的形式传递数据。本文分析采用的是 2.6.35 版本内核。

阅读更多
CFS调度器、权重、优先级与虚拟时钟
nvdimm 技术与编程模型概览

nvdimm 技术与编程模型概览

nvdimm,即非易失性双列直插式内存模块(non-volatile DIMM),相对于传统的易失性内存,nvdimm 在断电后其中的内容也不会消失。

施工中!!!

咕咕咕!

阅读更多
小探 GI global-metadata

小探 GI global-metadata

算是博客的第一篇正式文章。

最近尝试了一下原神私服,在弄模型替换的时候出了点问题,正好借此机会对游戏做一点探索。

内容已过时!

距本文撰写时已过去较长时间,最新版本的游戏保护方式已经升级,且这篇文章主要是我自己鼓捣的记录,目前已经没有什么价值了。

阅读更多
序

总之是本博客的第一篇文章。

阅读更多
Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×