- 博客(663)
- 资源 (3)
- 问答 (3)
- 收藏
- 关注
原创 Python容器类型差异操作
操作类别列表字典集合元组备注增appendinsertextendupdateaddupdate不可变字典的“增”同时也是“改”删removepopdelpoppopitemremovediscardpop不可变改索引赋值键赋值不可改元素不可变集合元素不可变,但可增删查索引、切片、in键、getin、子集判断索引、切片、in运算(拼接),(重复)(合并, 3.9+)(并),(交),(差),(对称差)集合运算与数值加减含义不同其他sortreverse, 推导式推导式,keys。
2026-03-14 23:52:00
408
原创 ASAN_OPTIONS和UBSAN_OPTIONS支持的运行时flag
想快速查阅:运行得到当前实际支持的 flag。想理解每个 flag 的用途:阅读 LLVM 官方文档(链接如上)。想看源码定义:浏览 compiler-rt 仓库中的对应.inc文件。
2026-02-24 15:20:00
50
原创 Undefined Behavior Sanitizer之UBSAN_OPTIONS
这一点与 ASAN 不同,ASAN 检测到错误后默认会终止程序。通过。
2026-02-24 15:13:16
49
原创 AddressSanitizer之ASAN_OPTIONS
是一个环境变量,用于在配置 AddressSanitizer (ASan) 的行为。它允许你调整 ASan 的各种参数,从而影响内存错误的检测方式、报告格式、性能开销等。下面我会详细解释它的用法、常见选项以及注意事项。
2026-02-24 15:00:49
74
原创 深入理解 AddressSanitizer 的 Redzone 和 Shadow Memory
问题答案Redzone 大小由谁控制?运行时(非编译器),通过配置配置方式左右 redzone 可独立配置吗?否,两者共享同一配置为什么左侧是 8 个 fa?8 个 fa = 64 字节(因为 1 shadow byte = 8 字节)为什么是 64 字节而不是 16?ASan 自适应策略:分配越大,redzone 越大(malloc(100) → 64 字节)Shadow memory 的作用跟踪每个 8 字节内存单元的可访问性。
2026-02-23 23:37:09
61
原创 Python argparse 参数解析用法详解
argparse 是 Python 标准库中用于解析命令行参数的模块,它使得编写用户友好的命令行界面变得简单。位置参数是指在命令行中必须按特定顺序提供的参数,它们不依赖于或--前缀来识别,而是通过它们在命令行中的位置来识别。位置参数:通过位置识别,必须提供,顺序固定help:针对单个参数的说明epilog:整个程序的补充说明,显示在帮助信息末尾可以混合顺序:argparse 通常能正确处理可选参数在前的情况潜在风险:当可选参数需要值时,可能会与位置参数混淆最佳实践位置参数在前,可选参数在后。
2025-11-30 23:59:30
572
原创 Python相对导入用法详解
Python的import系统非常强大和灵活,正确使用它对于编写可维护的代码至关重要。优先使用绝对导入,它们更清晰明确遵循PEP8导入顺序,提高代码可读性避免循环导入,它们会导致难以调试的问题使用合适的错误处理,特别是对于可选依赖了解模块搜索路径,这在部署时很重要掌握这些导入技巧将帮助你构建更加模块化、可维护和Pythonic的代码库。
2025-10-28 00:19:19
863
原创 CMake中add_custom_target和add_custom_command用法详解
使用ALL需要每次构建时自动执行的任务(如代码生成、资源处理)。统一构建入口,简化用户操作(如编译、测试、打包一步完成)。强制某些任务作为构建流程的一部分(例如清理临时文件)。是 CMake 中用于在构建过程中添加自定义命令的工具。它通常用于生成文件或在构建特定目标前后执行操作。其行为和执行时机取决于具体使用场景。主要用法理解和**使用**当需要生成文件或添加构建步骤到现有目标时,它集成到CMake的依赖系统中**使用**当需要创建可单独执行的命名目标时,它提供手动调用的入口点结合使用。
2025-04-12 23:07:32
1642
原创 python argparse模块nargs用法
表示该参数最多接收一个值。如果提供了值,则使用该值;如果没有提供值,则使用默认值或。:表示该参数可以接收零个或多个值,并将这些值作为一个列表。:表示该参数必须接收一个或多个值,并将这些值作为一个列表。:表示该参数必须接收指定数量的值,并将这些值作为一个列表。(默认值):表示该参数只能接收一个值。模块中用来指定参数的数量的属性。
2024-07-06 22:35:44
2711
原创 Python开启Http Server
用 Python 部署了一个具有 FTP 功能的服务器,电脑在局域网内通过 FTP 下载想要传输的文件。
2023-07-09 21:34:23
3630
翻译 开源代码授权Licence说明
BSD开源协议BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。但”为所欲为”的前提当你发布使用了BSD协议的代码,或则以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。不可以用开源代码的作者/机构名字和
2021-04-07 23:46:04
2326
原创 git生成patch和打patch
在程序员的日常开发与合作过程中,对于code的生成patch和打patch(应用patch)成为经常需要做的事情。使用方法(直接给一些examples):1.生成patch1.1 git diff > xxx.patch#只想 patch Test.java 文件git diff Test.java > test.patch# 把所有的修改文件打成 patchgit diff > test.patch1.2.git format-patch$ git format-pa
2021-03-16 00:40:36
148178
4
原创 Git 分支切换
remotes是 Git 存放远程分支信息的目录,不用管它推荐用git switch代替,语义更清晰切分支时,直接写分支名就行(如只有多个远程有同名分支时,才需要加远程名(如用查看你的远程仓库叫什么名字。
2026-03-28 23:59:51
378
原创 Claude Code 核心概念终极指南:Agents、Commands、Skills 全面解析
Agents、Commands、Skills 构成了 Claude Code 强大的可扩展体系。Agents 是执行者,Commands 是快捷键,Skills 是工具箱——理解它们的分工,就能像搭积木一样灵活构建自己的自动化工作流。
2026-03-28 22:15:41
46
原创 Linux rsync使用教程
明确你的意图如果你想同步目录本身 → 源路径不要加尾斜杠。如果你想同步目录内容 → 源路径加上尾斜杠。在脚本中使用前先--dry-run尤其当使用--delete时,先用-n模拟运行,确认结果符合预期。保持一致性对于目标路径,尾斜杠通常不影响最终结果(但推荐不加,以避免歧义),重点在于源路径。结合--delete格外小心如果不想删除目标中的额外文件,不要使用--delete;如果使用,务必确认源路径的写法正确。多用-av组合-a保留了大部分重要属性,-v。
2026-03-20 17:15:09
521
原创 GCC选项 -frecord-gcc-switches:记录编译选项的利器
是一个小巧但非常实用的 GCC 选项,它把编译选项嵌入到生成的二进制中,为后续的调试、分析和重现提供了极大的便利。虽然平时可能用不到,但在需要追溯构建信息时,它能成为救命稻草。建议在开发、测试和发布流程中酌情启用,让每个二进制都自带“身份信息”。
2026-03-20 14:21:08
402
原创 Python epilog用法介绍
epilog是argparse提供的一个简单而实用的功能,让你能够优雅地在帮助信息末尾添加额外内容。通过合理使用格式化类,你还可以控制文本的显示方式,使帮助信息更加专业和易读。下面通过一个实际的命令行工具来演示epilog的用法。假设我们编写一个简单的图片压缩脚本,它接受输入文件、输出文件,并允许用户选择压缩质量。我们希望在帮助信息的末尾添加版权声明使用示例以及联系方式,让用户一目了然。%(prog)s是argparse提供的一个便捷的占位符,用于在帮助信息中动态插入程序名,让帮助文本更加通用和整洁。
2026-03-16 10:12:07
420
原创 解决brew安装慢问题
用 brew 安装软件慢,通常是因为默认的官方源服务器在国外。解决的核心思路就是。对于2025年的新版 Homebrew,有一个关键的新步骤需要留意。
2026-03-14 21:53:38
693
原创 Claude Code 中的 agents 目录详解:自定义子代理完全指南
你想要…用什么设置全局编码规范CLAUDE.md定义项目构建命令CLAUDE.md创建专门的 crash 分析助手agents/创建并行工作的代码审查员agents/保存用户偏好设置CLAUDE.md隔离复杂任务避免上下文溢出agents/~/.claude/CLAUDE.md 是记忆,agents 是能力。理解这个区别,才能更好地定制你的 Claude Code 工作流。
2026-03-13 22:01:01
1744
原创 SSH免密登录配置指南
每次 SSH 登录都要输入密码,确实很影响效率。解决这个问题的核心方法,就是。简单来说,就是让你的电脑(客户端)和远程服务器(服务端)通过一对“钥匙”来互相确认身份,从而省去手动输入密码的步骤。针对你提到的“Mac远程登录Linux”和“Linux远程登录Mac”这两种情况,配置方法基本相同,但有几个关键点需要留意。
2026-03-13 10:19:25
429
原创 Python Path用法介绍
root_path.resolve()..例如,如果root_path是,经过.resolve()后会变成类似这样的完整绝对路径。在check.py中,这行代码出现在函数里,目的是确保后续的文件扫描和相对路径计算()都基于一个规范化的绝对路径,避免路径比较时出现歧义。是 Python 3.4+ 引入的面向对象的路径操作库,功能非常丰富。
2026-03-12 10:09:23
226
原创 C语言函数声明参数名省略
函数定义时,必须提供参数的类型,参数的名字原则上也可以省略(如果函数体内确实不需要使用该参数)。但为了代码可读性和可维护性,通常都会给参数起一个有意义的名字。带参数名的定义// 函数体,可以使用 filp、buf、count、datareturn 0;省略参数名的定义// 这里可能只用到了 filp 和 data,未使用 buf 和 count// 编译时可能会产生“未使用参数”警告,可以通过 (void)buf;消除return 0;
2026-03-06 14:59:40
558
原创 CMake二进制目录变量解释
就是cmake -B后面跟的那个路径。它是只读的,由你运行 CMake 时指定。现代 CMake 强烈推荐用-B显式指定构建目录,实现源外构建。想改变它?重新运行cmake -B <新路径>即可。希望通过这篇博客,你能彻底理解的来龙去脉,并在日常开发中用好-B这个好习惯。
2026-03-05 21:21:14
353
原创 Ubuntu zip压缩文件夹操作
这些信息表明你已成功将压缩为1.zip,压缩率高达98.8%,大幅节省了存储空间。zipinfo提供了压缩包内部文件的详细元数据,方便你验证压缩前后的属性。在 Ubuntu 中,解压.zip文件可以使用unzip命令。
2026-03-05 09:41:14
715
原创 Ubuntu minicom隐藏状态栏
在 Ubuntu 系统中,minicom 底部显示的状态栏(通常包含帮助提示、连接状态、波特率等信息)可以通过配置选项来隐藏或调整大小。
2026-03-04 12:15:28
253
原创 python json tool命令解释
是一个用于格式化(美化)和验证 JSON 数据的 Python 命令行工具。它通过 Python 内置的json模块提供,可以接受 JSON 输入(从文件或标准输入),然后输出结构清晰、易于阅读的格式化 JSON。
2026-03-02 16:13:13
364
原创 C/C++ Weak Symbol
/ 声明一个weak函数// 测试函数,调用weak函数有强符号时:链接器会优先使用强符号b.cpp中定义的强函数被调用无强符号时:链接器会使用 weak 符号a.c中定义的 weak 函数被调用(名称修饰)是 C++ 编译器为了支持函数重载等特性而对函数名进行编码的技术。简单来说,编译器会将人类可读的函数名转换成机器可识别的唯一标识符,这个标识符包含了函数的签名信息。特性CC++❌ 否✅ 是符号名称原始名称编码后的名称函数重载❌ 不支持✅ 支持命名空间。
2026-02-28 15:52:21
61
原创 cmake path 功能详解
将 CMake 中繁琐且易出错的路径字符串操作,变成了清晰、可靠且跨平台的命令。它极大地提升了 CMake 脚本处理路径时的可读性和健壮性,是现代 CMake 项目(3.20+)推荐使用的路径操作方式。注意:如果你的项目CMake版本较低,则需要使用旧命令(如)实现类似的功能。和都是 CMake 中用于处理路径的命令,但它们在设计理念、功能范围以及对文件系统的访问方式上有显著区别。是 CMake 3.20 引入的纯语法路径处理工具,功能全面、安全、现代。是传统命令,混合了语法操作和文件系统访问。
2026-02-26 10:19:50
347
原创 RAG概念通俗解释
RRetrieval(检索):去知识库里找相关的信息片段。AAugmented(增强):把找到的信息和原始问题拼在一起,给模型提供上下文。GGeneration(生成):模型根据这些信息生成最终的答案。所以,下次你听到 RAG,就可以想象一个聪明的学生正在一边翻书一边回答你的问题,既准确又可靠。
2026-02-25 14:12:59
425
原创 Python参数解析默认True变False
在 Python 的argparse中,如果要设置一个默认值为True的参数,并允许通过命令行将其改为False,应使用。这样,当命令行中指定该选项时,参数值会被设为False;不指定时,则保持默认的True。
2026-02-17 22:50:11
194
原创 OpenCode 配置默认模型指南
全局配置:修改中的model字段插件覆盖:如果使用 oh-my-opencode,需要同时修改中的 agents 和 categories 配置模型选择是一个性价比很高的选择希望这篇文章能帮助到你!如果有任何问题,欢迎留言交流。
2026-02-17 22:47:16
2677
原创 Python执行的原理和过程
当你执行时,Python 并不是像 C 语言那样直接生成由 CPU 执行的二进制机器码,而是经历了一个“编译 + 解释”的过程。下面我简单梳理一下它的执行原理,以及与 C 语言编译的区别。
2026-02-16 00:13:44
165
原创 解决vscode code命令找不到问题
你在终端里找不到code命令,确实是因为环境变量没配置好。VS Code 需要手动把它的命令行工具所在路径添加到系统的PATH中。解决这个问题主要有两种方法,都很简单。
2026-02-13 23:59:28
625
原创 git跟踪空文件夹
把这个空目录提交到仓库(比如为了保持项目结构),常见的做法是在目录里放一个。规则反向保留空目录,但远不如直接放个文件直观,不推荐。不是 Git 官方的特性,只是一个约定俗成的占位符。这时目录因为包含文件而被 Git 识别,就可以正常。,都不会有任何效果,Git 会直接忽略它。,这是它的设计原则——版本控制关注的是。,目录本身只是文件的路径容器。所以你在一个空文件夹上执行。
2026-02-12 15:43:17
227
原创 AI与AGI的区别及未来展望
你可以把AI 看作今天我们已经拥有的强大工具,比如超级计算器、超级翻译机、超级识别仪。它们在某些方面远超人类,但本质上仍是“工具”。而AGI 是一个蓝图中的“智能体”,它更像一个“合作伙伴”或“新物种”,拥有自主的、通用的、类人的智能。从AI到AGI的跨越,被认为是技术上的“最后一公里”,也是最艰难的一步,其实现可能带来人类社会的根本性变革。因此,当我们谈论ChatGPT的突破时,我们是在现有AI范畴内讨论其能力的飞跃,但它距离真正的AGI还有本质上的差距。
2026-02-08 22:05:35
1132
原创 Git 2.23新增命令switch使用指南
为了拆分这个“多功能”命令,使其更安全、语义更清晰,Git 在git switch和。简单来说,git switch使用新命令可以避免因文件和分支同名导致的误操作,也更符合“一个命令只做一件事”的原则。
2026-02-04 10:27:41
442
C语言标准演化:C89、C99与C11的关键变化
2025-02-05
AppleNotificationCenterServiceSpecification.pdf
2021-08-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅