通过环境变量 PS1 配置命令提示符 以 Ubuntu 24.04 的默认值为例: \[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ 它分为两个部分。
QMenu 的坐标问题 QMenu 的坐标是全局坐标系中的坐标 QMenu 继承自 QWidget,根据文档 QWidget::pos 中描述,坐标为相对父对象的坐标。 而 QMenu::pos 没有单独的文档描述,理应根据父类 QWidget::pos 来理解。 但实际上 QMenu 的坐标为全局坐标系中的坐标,这一点在 QMenu::exec 中有描述。
Golang JSON 序列化时动态忽略字段 在使用 JSON 时经常遇到需要忽略字段的情况,例如返回用户信息时不能返回密码,通常将注解 TAG 设为 json:"-" 即可: type User struct { Account string `json:"account"` Password string `json:"-"` Nickname string `json:"nickname"` }
CMake 子目录依赖处理 最近开发的一个项目依赖 libgeotiff,同时 libgeotiff 又依赖 libtiff,我将他们都加入 thirdparty 中,通过 add_subdirectory 添加进项目中。 thirdparty CMakeLists.txt libgeotiff libtiff
Windows 上 CMake 找不到 CUDA 工具集的问题 问题1 CMake Error at C:/Program Files/CMake/share/cmake-3.22/Modules/CMakeDetermineCompilerId.cmake:470 (message): No CUDA toolset found. 需要将 CUDA 目录里的 MSBuildExtensions 赋值 Visual Studio 的目录中:
Caller Saved Register & Callee Saved Register 在使用汇编编程时,调用间需要保存与恢复寄存器,这些寄存器可以由调用者保存恢复(Caller Saved Register)也可以由被调用者保存恢复(Callee Saved Register)。 由于调用者不知道哪些寄存器会被修改,因此只能将所有 Caller Saved Register 进行保存恢复,但这样做效率低下。 因此使用 Callee Saved Register 由被调用者根据需要保存和恢复会被改变的寄存器更常用。需要保存的寄存器如下: 架构 被调用者保存的寄存器
Linux Hook 技术 Hook 是一种覆盖重写进程中符号的技术,在 Linux 中,通过环境变量 LD_PRELOAD 预加载包含同名符号的动态库即可实现。 覆盖 malloc 和 free 检查内存泄漏 // 文件名: memcheck.c // 编译命令: gcc -o memcheck.so memcheck.c --shared -fPIC #define _GNU_SOURCE