Skip to content

Instantly share code, notes, and snippets.

View hubenchang0515's full-sized avatar
:octocat:
写呀写呀写代码

Plan C hubenchang0515

:octocat:
写呀写呀写代码
View GitHub Profile
@hubenchang0515
hubenchang0515 / APT 更新时忽略指定的包.md
Created April 28, 2024 08:07
APT 更新时忽略指定的包

APT 更新时忽略指定的包

保持包版本不更新:

sudo apt-mark hold <package>

取消保持包版本:

@hubenchang0515
hubenchang0515 / QMenu 的坐标问题.md
Last active April 27, 2024 16:05
QMenu 的坐标问题

QMenu 的坐标问题

QMenu 的坐标是全局坐标系中的坐标

QMenu 继承自 QWidget,根据文档 QWidget::pos 中描述,坐标为相对父对象的坐标。

QMenu::pos 没有单独的文档描述,理应根据父类 QWidget::pos 来理解。

但实际上 QMenu 的坐标为全局坐标系中的坐标,这一点在 QMenu::exec 中有描述。

@hubenchang0515
hubenchang0515 / Linux 中文字体设置.md
Last active June 6, 2025 14:33
Linux 中文字体设置

字体设置

下载字体文件:

安装到用户目录

将字体文件复制到用户字体目录 ~/.local/share/fonts/

@hubenchang0515
hubenchang0515 / Golang JSON 序列化时动态忽略字段.md
Created April 11, 2024 03:44
Golang JSON 序列化时动态忽略字段

Golang JSON 序列化时动态忽略字段

在使用 JSON 时经常遇到需要忽略字段的情况,例如返回用户信息时不能返回密码,通常将注解 TAG 设为 json:"-" 即可:

type User struct {
	Account  string `json:"account"`
	Password string `json:"-"`
	Nickname string `json:"nickname"`
}
@hubenchang0515
hubenchang0515 / CMake 子目录依赖处理.md
Created March 29, 2024 06:34
CMake 子目录依赖处理

CMake 子目录依赖处理

最近开发的一个项目依赖 libgeotiff,同时 libgeotiff 又依赖 libtiff,我将他们都加入 thirdparty 中,通过 add_subdirectory 添加进项目中。

  • thirdparty
    • CMakeLists.txt
    • libgeotiff
    • libtiff
@hubenchang0515
hubenchang0515 / C 语言简易日志库.md
Last active March 26, 2024 06:55
C 语言简易日志库

C 语言简易日志库

#ifndef LOG_H
#define LOG_H

#include <stdio.h>


// Log Tag
@hubenchang0515
hubenchang0515 / Windows 上 CMake 找不到 CUDA 工具集的问题.md
Created March 2, 2024 13:34
Windows 上 CMake 找不到 CUDA 工具集的问题

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 的目录中:

@hubenchang0515
hubenchang0515 / Caller Saved Register & Callee Saved Register.md
Created February 22, 2024 01:16
Caller Saved Register & Callee Saved Register

Caller Saved Register & Callee Saved Register

在使用汇编编程时,调用间需要保存与恢复寄存器,这些寄存器可以由调用者保存恢复(Caller Saved Register)也可以由被调用者保存恢复(Callee Saved Register)。

由于调用者不知道哪些寄存器会被修改,因此只能将所有 Caller Saved Register 进行保存恢复,但这样做效率低下。

因此使用 Callee Saved Register 由被调用者根据需要保存和恢复会被改变的寄存器更常用。需要保存的寄存器如下:

架构 被调用者保存的寄存器
@hubenchang0515
hubenchang0515 / Linux Hook 技术.md
Last active February 20, 2024 02:58
Linux Hook 技术

Linux Hook 技术

Hook 是一种覆盖重写进程中符号的技术,在 Linux 中,通过环境变量 LD_PRELOAD 预加载包含同名符号的动态库即可实现。

覆盖 malloc 和 free 检查内存泄漏

// 文件名: memcheck.c
// 编译命令: gcc -o memcheck.so memcheck.c --shared -fPIC
#define _GNU_SOURCE
@hubenchang0515
hubenchang0515 / Rust 多线程下载.md
Created January 12, 2024 15:54
Rust 多线程下载

Rust 多线程下载

use std::{
    env, 
    error::Error, 
    str::FromStr, 
    fs::File, 
    io::{Write, Seek, SeekFrom::Start}, 
    path::Path,