工程实践¶
C++ 字符串与二进制串相互转换
两份实现相同功能的代码——把字符串展成二进制串,再从二进制串还原。一份硬编码 64 位、只认 8 字符;另一份用 vector<bool> 动态扩容、支持任意长度。
MkDocs Material 部署导致 .git 膨胀的排查与解决
CI 中用了 --no-history 避免 gh-pages 历史膨胀,但本地 .git/objects/pack 仍然每次 commit 后恶性增大。SpaceSniffer 锁定膨胀源是 pack 文件。
C++ 通过 JNI 调用 Java
JNI(Java Native Interface)最常见的用法是从 Java 调用 C/C++ 原生代码。反向操作——从 C++ 主动创建 JVM 并调用 Java 方法——虽然不常见,但在某些场景下很有用,比如已有的 C++ 应用需要复用 Java 生态的库。
下面记录一个完整的 C++ 调用 Java 的例子。
C++ 嵌入 Python 调用
CPython 提供了 C API,让 C++ 程序可以直接嵌入 Python 解释器,执行 Python 代码、调用 Python 函数、获取返回值。这在需要利用 Python 生态库的 C++ 项目中非常实用。
下面从"执行简单语句 → 获取变量值 → 调用自定义模块函数"三步,记录 C++ 嵌入 Python 的基本用法。