- 博客(602)
- 资源 (10)
- 问答 (1)
- 收藏
- 关注
原创 C++11 并发指南九(综合运用 C++11 多线程下生产者消费者模型详解)
前面八章介绍了 C++11 并发编程的基础(抱歉哈,第五章-第八章还在草稿中),本文将综合运用 C++11中的新的基础设施(主要是多线程、锁、条件变量)来阐述一个经典问题——,并给出完整的解决方案。
2023-01-29 13:07:15
4286
原创 C++11 并发指南六(atomic 类型详解四 C 风格原子操作介绍)
前面三篇文章《C++11 并发指南六(atomic 类型详解一 atomic_flag 介绍)》、《C++11 并发指南六( 类型详解二 std::atomic )》、《C++11 并发指南六(atomic 类型详解三 std::atomic (续))》都是采用 C++ 的方式介绍原子对象,本节我会给大家介绍 C++11 原子操作中 C 风格的 API。
2023-01-29 13:04:50
4658
1
原创 C++多线程07:thread_local
thread-local storage 和static(或者说global) 存储很类似,每一个线程都将拥有一份这个数据的拷贝,对象的生命周期从线程开始时开始(对于全局变量),或者首先分配空间。当线程退出的时候对象析构;一般在声明时赋值,在本thread中只执行一次。当用于类成员变量时,必须是static的。C++11 thread_local用法 - 知乎 (zhihu.com)存储类说明符 - cppreference.com。
2023-01-20 15:47:40
3215
原创 使用PDFium创建空白文档
这段C++代码演示了如何使用PDFium库创建和保存PDF文件。代码首先初始化PDFium库,然后创建一个新的PDF文档并添加一个空白页面(1200x800尺寸)。通过自定义的WriteBlock回调函数,将生成的PDF数据写入到指定路径的二进制文件中。最后完成文档保存并释放资源。程序会在"C:\Code\outpdf.pdf"路径下生成一个空白的PDF文件,若操作成功会输出成功信息,失败则显示错误提示。
2026-01-03 13:01:33
65
原创 顺时针/螺旋规则 | 彻底弄懂复杂C/C++嵌套声明 const常量声明
本文介绍了螺旋规则解析复杂C/C++声明的方法,通过七步法从内向外顺时针解析嵌套声明。核心思想是从标识符出发,按照右→下→左→上的顺序逐步解析符号含义,最终组合成完整声明。文章通过ASCII图解详细演示了数组指针、函数指针和复杂嵌套声明的解析过程,并提供了通用解析流程表。这种方法能帮助开发者准确理解const常量声明等复杂嵌套的C/C++语法结构。
2025-12-28 19:14:34
411
原创 文件系统管理器代码使用说明文档
本文档介绍了一个C++实现的虚拟文件系统管理器,支持完整的文件目录管理功能。该系统采用树形结构组织文件,包含文件属性管理(大小、权限、所有者等)、二进制数据存储、递归操作等功能。核心类包括FileAttributes(属性管理)、FileSystemNode(基础节点)、File(文件类)和Directory(目录类)。系统提供ID标识、权限枚举(只读/读写/可执行/全访问)、数据持久化等特性,支持从磁盘加载/保存文件。使用示例展示了文件/目录的创建、查找、删除等操作,以及复杂目录结构的构建方法。该系统设计
2025-12-27 18:15:13
954
原创 文件树遍历类
DirectoryTree是一个跨平台目录树扫描与导出工具库,支持Windows/macOS/Linux系统。核心功能包括多格式导出(文本/JSON/CSV/XML/Markdown/ASCII树形图)、智能过滤搜索、大文件检测和空目录查找等。该库提供丰富的API用于目录树构建、节点查询、路径操作和统计分析,并支持高性能递归遍历。使用示例展示了从设置解析选项、排除特定内容到构建目录树、导出多种格式的完整工作流程。开发者可通过简单的C++17代码快速集成该工具,实现项目目录结构的可视化分析和数据导出。
2025-12-27 15:38:23
983
原创 在 IDA Pro 9.1 和 x64dbg 同时调试同一个程序时,最方便、最准确的 地址对应方法。
本文介绍了在同时使用IDA Pro和x64dbg调试程序时的地址对齐方法。主要推荐两种方案:1)实时调试工作流,通过获取x64dbg中的运行时基址并在IDA中重定位实现地址同步;2)长期分析时关闭程序ASLR,使用editbin工具或CFF Explorer修改PE头,使静态和动态地址永久一致。文章还提供了手动计算偏移的备选方案,但指出其效率较低。建议根据调试需求选择相应方法,其中关闭ASLR的方案适合长期分析,能显著提升工作效率。
2025-12-26 11:29:44
391
原创 6.6.ADC指令 代码示例
摘要:本文通过x86汇编程序演示了64位多精度加法运算中正确使用ADC指令的重要性。程序对比了仅使用ADD指令的错误方法与使用ADC指令的正确方法,展示了进位标志在多精度运算中的关键作用。测试案例包括基本64位加法、边界值测试和三个64位数相加的场景,结果表明忽略进位会导致计算结果错误。当处理0xFFFFFFFFFFFFFFFF+1时,错误方法会丢失进位得到0xFFFFFFFF00000000,而正确方法通过ADC指令传递进位,得到正确结果0x0000000000000000(CF=1)。程序强调了在多精度
2025-12-22 12:16:48
888
原创 6.5.ADC指令介绍
摘要:ADC指令是解决多精度算术运算中进位传递问题的关键指令。它通过自动处理加法进位,简化了大数运算的代码复杂度,提高了运算效率。ADC指令在密码学、高精度计算等场景中尤为重要,能够实现64位以上的大数运算。相比手动处理进位,ADC指令具有原子性操作优势,避免了条件判断和竞态条件问题。现代应用中,虽然CPU位宽增加,但ADC仍是实现任意精度算术的基础指令,与SBB等指令共同构成了完整的多精度运算指令集。
2025-12-22 12:15:40
939
原创 MASM 中的 ADD 指令详解
本文详细解析了x86汇编中ADD指令的用法及其对标志位的影响。ADD指令支持寄存器、内存和立即数之间的多种操作数组合,但禁止内存到内存的操作。指令执行后会更新所有状态标志:CF(无符号溢出)、PF(奇偶)、AF(辅助进位)、ZF(零)、SF(符号)和OF(有符号溢出)。文章通过具体示例展示了不同场景下的ADD运算,包括寄存器与立即数相加、多精度加法等,并比较了有符号数溢出(OF标志)和无符号数进位(CF标志)的区别。最后提供了常见错误示例和性能优化建议,强调正确理解ADD指令对编写可靠汇编代码的重要性。
2025-12-22 12:14:45
683
原创 6.2.在汇编层面,数据本身没有类型
在汇编语言中,数据的类型由后续操作决定。数据本身只是二进制位,其类型取决于程序员如何使用这些数据。例如,ADD指令会同时设置所有相关标志位(如CF、OF、SF等),而后续的跳转指令(如JO/JC、JL/JB等)通过选择性检查特定标志位,实际上"声明"了数据的类型。同一段数据可被解释为有符号数(检查OF标志)或无符号数(检查CF标志),关键在于后续操作如何解读这些标志位。这种机制体现了汇编层面"数据类型是操作符语义而非数据属性"的本质特征。
2025-12-22 12:09:52
913
1
原创 6.1.OF = 最高位的进位 XOR 次高位的进位
有符号数溢出检测公式OF=最高位进位XOR次高位进位的工作原理是:通过比较最高位(符号位)和次高位的进位状态差异来判断溢出。当两者相同时表示运算正常,不同时则发生溢出。具体表现为正数相加得负数(正溢出)或负数相加得正数(负溢出)时,两个进位位必然不同。该公式的优势在于不依赖操作数符号,仅需简单XOR运算即可统一检测各种溢出情况,且适用于任意位宽。硬件实现仅需一个XOR门电路,体现了计算机体系结构中用简单逻辑解决复杂问题的设计智慧。
2025-12-22 12:08:20
609
原创 0.CF(进位标志)、最高有效位(MSB)和OF(溢出标志)的联系
本文通过汇编程序演示了进位标志(CF)、最高有效位(MSB)和溢出标志(OF)的联系。CF反映无符号数运算的进位/借位,OF表示有符号数溢出,MSB则是符号位。通过具体示例分析了加法/减法运算中标志位的产生机制,包括四种典型情况:无符号和有符号同时溢出、仅无符号溢出、仅符号溢出以及两者都不溢出。重点说明了MSB作为符号位的作用,以及ADC指令如何利用CF实现多精度运算。最后展示了减法中CF和OF的不同含义,验证了这些标志在数值运算中的关键作用。
2025-12-22 12:06:32
240
原创 31.汇编语言MOV指令内存访问方式
本文展示了一个x86汇编语言程序,演示了三种基本内存寻址方式:直接寻址、寄存器间接寻址和基址+偏移寻址。程序包含精心设计的数据结构(标量变量、数组、结构体、指针和链表),并提供了每种寻址方式的典型用法示例,包括不同数据类型访问、数组元素操作、结构体成员访问等。代码还演示了非对齐访问、指针解引用、字符串操作等高级特性,为理解汇编语言内存访问机制提供了实用参考。
2025-12-22 12:04:41
934
原创 vcpkg自动化安装库的界面程序
Vcpkg库自动安装器是一个图形化工具,用于批量安装和管理Vcpkg库。该工具提供库搜索筛选、批量选择、可视化安装进度和日志记录等功能,支持Windows/Linux/macOS多平台。主要特点包括:自动检测Vcpkg路径和目标三元组,支持静态/动态链接库安装,提供右键菜单查看库信息和依赖关系。用户可通过文本文件批量加载库列表,或手动搜索选择需要安装的库。安装过程中实时显示进度和日志,支持中断操作。系统要求Python 3.6+和Tkinter环境,使用前需确保已安装vcpkg工具。
2025-12-21 09:40:39
788
原创 spdlog 库下载,编译,并使用的例子
摘要 本文详细介绍了spdlog日志库的下载、编译和使用方法。主要内容包括: 下载方式:推荐使用包管理器(vcpkg/Conan/APT)或手动下载源码 编译方法:spdlog是header-only库,也可通过CMake编译为动态/静态库,支持Debug/Release版本和多平台编译 项目集成:提供多种CMake集成方案(find_package/子模块/FetchContent)和简单使用示例 编译示例:展示完整的CMake项目配置和编译流程 注意事项:说明依赖要求、跨平台支持和性能优化建议 文章还特
2025-12-15 12:11:53
608
原创 性能检测日志系统
本文介绍了基于spdlog的高性能C++日志系统,专为PDF处理应用设计。系统提供模块化日志控制、多级别日志输出、性能分析工具(包括作用域分析和累积统计)、日志频率控制等核心功能。支持异步日志、多输出目标、滚动文件等高级特性,具有线程安全和跨平台能力。文档详细说明了系统架构、快速使用方法、模块化日志示例、多线程支持以及性能优化技巧,包括编译期开关和运行时配置选项。该系统通过RAII设计和单例模式实现工程化支持,适用于需要高性能日志记录的PDF处理场景。
2025-12-15 12:00:12
1103
原创 编写 CMakeLists查找库的findxxx.cmake文件
CMake Find模块模板摘要 该模板提供了标准化的CMake Find模块实现方案,包含以下核心功能: 基础配置:定义模块基本信息、用户可配置变量和环境变量支持 平台检测:自动识别Windows/macOS/Linux/Android/iOS平台及x86/x64/ARM等架构 路径搜索:支持用户自定义路径和默认搜索路径配置 文件查找: 多格式头文件查找(支持不同命名风格) 多版本库文件查找(Release/Debug/静态库) 结果处理:使用标准方法验证查找结果并设置输出变量 模板采用分层结构设计,支持
2025-12-10 10:28:21
440
原创 Jbig2Dec 项目的 CMakeLists.txt
本文展示了Jbig2Dec项目的CMake构建配置文件(CMakeLists.txt),该文件用于构建JBIG2解码器库和可执行文件。配置内容包括:版本号设置、平台检测(特别针对Windows和MSVC编译器)、编译选项配置、输出目录设置、调试/发布标志定义、config.h文件处理、libpng支持检测、源文件和头文件列表定义等。文件提供了灵活的构建选项,支持静态/动态库构建、可执行文件生成以及跨平台兼容性处理,特别是对Windows平台的特殊配置进行了详细设置。
2025-12-10 09:58:20
423
原创 JBIG2解码器
本文介绍了一个JBIG2图像解码类的实现,该类支持从文件或内存解码JBIG2格式图像,并能将解码结果转换为JPEG格式。主要功能包括:1) 使用jbig2库解码JBIG2图像数据;2) 通过TurboJPEG库实现图像压缩;3) 提供图像质量等级设置(LOW/MEDIUM/HIGH/MAX);4) 支持单色和彩色格式转换。类设计采用RAII管理资源,禁用拷贝但支持移动语义,包含错误处理机制。核心方法是decodeFromFile/decodeFromMemory实现解码,encodeToJpeg完成JPEG
2025-12-09 12:27:38
205
原创 JBIG2 图像编码器
JBIG2Encoder是一个用于将图像编码为JBIG2格式的C++类库。头文件定义了核心接口,包括PageData结构体存储页面信息,Options结构体配置编码参数,支持单页和多页文档编码。实现文件使用libjbig2enc和Leptonica库进行实际编码,提供通用区域和符号模式两种编码方式,支持错误处理、图像验证和多种编码选项。该库封装了底层细节,提供了简单的API接口,便于将图像高效压缩为JBIG2格式。
2025-12-09 12:21:43
431
原创 Python 推导式详细教程
Python推导式是一种高效简洁的数据序列创建方法,主要包括四种类型:列表推导式([表达式 for 变量 in 可迭代对象 if 条件])、字典推导式({键:值 for 变量 in 可迭代对象 if 条件})、集合推导式(自动去重)和生成器表达式(惰性求值)。推导式可以包含条件过滤、函数应用和多变量操作,适合数据处理但需注意保持简洁性(避免嵌套过深)。典型应用包括数据转换、过滤和组合,相比传统循环更高效。使用时需根据需求选择合适类型,并考虑内存使用情况,特别在处理大数据时生成器表达式能显著节省内存。
2025-12-08 12:09:58
501
原创 Python 海象运算符
Python 3.8引入的海象运算符(:=)允许在表达式中进行变量赋值,能有效减少重复代码。它特别适用于循环条件、列表推导式等场景,如while (line := file.readline()):可简化文件读取操作。使用时需注意:必须加括号,避免在复杂表达式中过度使用以免降低可读性。虽然该特性能精简代码,但应遵循团队约定,在保持代码清晰的前提下合理使用。
2025-12-08 12:04:40
693
原创 Python模块和包详解
本文详细介绍了Python模块和包的使用方法。主要内容包括:1)模块的基本概念和创建方式,通过calculator.py示例展示了模块定义和多种导入方法;2)常用内置模块的使用示例,如os、sys、math、random、datetime、json和collections模块的功能演示;3)模块的组织结构,包含版本信息、作者声明和测试代码。文章通过丰富代码示例,帮助开发者掌握Python模块化编程技巧,提高代码复用性和可维护性。
2025-12-08 09:49:54
1094
原创 Python异常处理介绍及代码示例
本文介绍了Python异常处理的基本概念和常见用法。主要内容包括:1) 异常的基本概念和常见内置异常类型;2) 基本异常处理结构(try-except、try-except-else、try-except-finally);3) 自定义异常的实现方法;4) 抛出异常和异常链式传播;5) 异常处理的最佳实践,如具体异常优先捕获、提供有用错误信息、确保资源清理等。文中通过多个代码示例展示了不同场景下的异常处理方式,并强调了异常处理的重要原则。
2025-12-08 09:25:05
983
原创 Python 目录操作详解
Python提供了多种目录操作方法,主要使用os、os.path和pathlib模块。本文详细介绍了目录的基本操作,包括获取当前目录(os.getcwd()/Path.cwd())、更改工作目录(os.chdir())、列出目录内容(os.listdir()/Path.iterdir())、创建目录(os.mkdir()/Path.mkdir())和删除目录(os.rmdir()/shutil.rmtree())。此外还涵盖了目录重命名(os.rename())、路径检查(os.path.exists()/
2025-12-08 09:24:43
1195
原创 Python 文件操作详解与代码示例
Python文件操作摘要 本文详细介绍了Python文件操作的基础知识和常用方法。主要内容包括: 文件打开与关闭:使用open()函数和with语句管理文件资源,介绍不同模式(r/w/a/x/b/t/+)的区别及使用场景。 文件读写操作:演示了write()写入内容,以及多种读取方法(read()、read(size)、readline()、readlines()和遍历文件对象)。 文件状态检查:通过os模块检查文件是否存在、获取文件大小和修改时间等属性。 异常处理:展示如何安全处理文件操作中可能出现的错误
2025-12-07 22:59:11
753
原创 Python容器转换与共有函数详解
本文详细介绍了Python中主要容器类型的相互转换方法。内容涵盖列表、元组、集合、字典等基本容器类型的转换操作,包括列表转元组、元组转集合、字符串转列表等常见转换。同时展示了高级转换技巧,如使用推导式生成新容器、map函数转换数据、filter过滤元素等。文章还提供了嵌套容器展平、多重转换等实用示例,帮助开发者掌握Python容器间的灵活转换技巧。所有示例均配有详细注释和输出结果展示,便于理解不同容器类型间的转换效果。
2025-12-07 22:41:56
778
原创 Python 可变参数详解与代码示例
Python可变参数使用指南 Python可变参数允许函数接受不定数量的参数,包括*args(位置参数)和**kwargs(关键字参数)。基本语法中,*args收集所有位置参数为元组,**kwargs收集关键字参数为字典。两者可组合使用,但必须遵循*args在前,**kwargs在后的顺序。 实际应用中,可变参数非常灵活,如构建通用日志函数可接收任意消息和元数据,或创建SQL查询构建器动态生成查询语句。典型场景包括:日志记录、数据库操作、装饰器实现等,能极大提高代码的通用性和可扩展性。
2025-12-07 22:17:34
718
原创 Python 字典介绍与代码示例
Python字典是一种存储键值对的可变容器,具有键唯一、键不可变、值可变等特点。本文介绍了字典的创建、访问、修改、删除、遍历等基本操作,并提供了字典推导式、常用方法和实际应用示例。代码示例包括创建字典、访问元素、修改添加元素、删除元素、遍历字典、字典推导式、常用方法以及单词统计和学生成绩管理系统等实际应用场景,全面展示了Python字典的功能和使用方法。
2025-12-07 21:47:54
576
原创 Python 集合详解
本文详细介绍了Python集合的基本特性与使用方法。集合是一种无序、不重复元素组成的数据结构,基于哈希表实现,具有高效的成员检测功能。主要内容包括:集合的创建(使用花括号或set()函数)、基本操作(添加/删除元素)、集合运算(并集、交集、差集等)、集合推导式以及实际应用场景(如数据去重、共同元素查找)。文章还比较了集合与列表的性能差异,并指出集合在元素查找方面的显著优势。最后强调了集合在数据去重和快速查询中的实用价值,是Python中处理无序不重复数据的高效工具。
2025-12-07 18:41:04
755
原创 Python 切片操作全面解析
本文全面解析了Python中的切片操作,涵盖基本语法、索引规则和高级应用技巧。切片语法为sequence[start:stop:step],支持正负索引和步长,能灵活处理字符串、列表、元组等序列类型。文章详细介绍了边界处理、负步长反向切片、切片对象创建等特性,并展示了多维切片、奇偶位置元素提取等实用技巧。切片会
2025-12-07 17:26:11
584
原创 Python 字符串全面解析
本文全面解析Python字符串操作,涵盖字符串创建、基本操作、常用方法和格式化技巧。内容包括:使用单引号、双引号和三引号创建字符串;索引访问、切片、拼接和重复等基本操作;查找替换、大小写转换、空白处理等字符串方法;f-string、format()和%三种格式化方式;转义字符和原始字符串的使用;字符串编码转换;以及字符串检查处理方法。文章提供了丰富的代码示例,帮助掌握Python字符串的各种操作技巧,适用于Python 3.x版本,特别推荐使用f-string进行字符串格式化。
2025-12-07 17:20:09
1100
原创 “元组“名称的由来
摘要:"元组"(tuple)源自数学中的n元组概念,表示有序元素集合。词源上,"tuple"来自拉丁语"-plus",中文译为"元素的组合"。在数学中,元组指笛卡尔积的元素;在数据库中表示表的行;在编程中作为固定大小的异构容器。与列表不同,元组强调结构性而非可变性,常用于坐标、记录等场景。该术语在1950年代出现,1970年代随关系数据库普及,现被多数编程语言采用,体现了"有序有限元素序列"的数学本质。
2025-12-07 16:38:23
872
原创 Python元组(Tuple)详解
Python元组(Tuple)详解摘要: 元组是Python中不可变的有序序列,与列表相似但创建后无法修改。主要特性包括有序性、不可变性、支持多种数据类型、元素可重复以及可哈希性(可用作字典键)。文章详细介绍了元组的创建、访问、操作方法,包括索引访问、切片、合并、重复、解包等操作。特别讲解了命名元组(NamedTuple)的使用,以及元组与列表的相互转换。还展示了元组的高级应用,如变量交换、函数多值返回等。元组因其不可变性,适合存储不应修改的数据,且在性能上优于列表。
2025-12-07 16:37:44
626
原创 Python列表(List)介绍
Python列表是一种有序可变的数据结构,可以存储不同类型的元素。本文介绍了列表的基本特性、创建方式、元素访问和修改方法,以及常用操作如合并、重复、排序等。还讲解了列表推导式、嵌套列表、复制机制和解包技巧。列表是Python编程中最常用的数据结构之一,适用于存储有序集合、频繁修改数据以及实现各种数据聚合需求。
2025-12-07 16:08:22
690
原创 C++ vs Python 参数传递方式对比
C++和Python参数传递机制对比摘要(148字): C++支持值传递(创建副本)、引用传递(直接操作原变量)和移动传递(C++11转移所有权)。Python采用对象引用传递,对不可变对象(如int)的修改会创建新对象,而对可变对象(如list)的修改会影响原对象。C++需要显式指定传递方式,值传递可能带来拷贝开销;Python统一采用引用传递,但行为因对象可变性而异。C++通过引用和移动语义实现高效参数传递,Python则依靠对象的可变性决定修改是否影响原数据。两者机制差异反映了静态类型与动态类型语言的
2025-12-06 18:02:02
832
原创 Python 函数
本文详细介绍了Python函数的使用方法,主要包括三部分内容:1.函数定义基础,包括简单函数、带参数函数和返回值函数的基本语法和示例;2.参数类型,详细讲解了位置参数、关键字参数、默认参数、可变参数(*args)和关键字可变参数(**kwargs)的使用方法及组合规则;3.返回值处理,包括返回单个值、多个值(元组)以及None的情况。文章通过大量代码示例展示了各种函数定义和调用方式,涵盖了Python函数编程的核心概念,适合初学者学习和参考。
2025-12-06 17:56:16
888
vcpkg 文档 vcpkg是一款免费的C/C++包管理器,用于获取和管理库 从1500多个开源库中进行选择,只需一步即可下载和
2024-07-20
SELinux:为任何Linux环境带来世界级的安全性! SELinux为Linux/UNIX集成商、管理员和开发人员提供了最
2024-01-16
SELinux by Example
2024-01-16
SELinux Notebook 是一本关于 SELinux 的开源书籍,最初由 Richard Haines创建并捐赠给 SE
2024-01-15
python Django web 实训项目的实验报告
2023-06-16
python Django web 联通用户管理系统实训代码
2023-06-16
《C++17 完全指南》
2023-01-21
C# Asp MVC 五层 .net 学生管理系统main.tar
2022-09-13
网二维数组的动态创建和释放.pdf 网负号重载(1).pdf 网负号重载pdf 赋值号“==“重载(1).pdf 赋值号"==
2022-07-21
git reset 的三个参数.pdf
2022-06-13
C#实现的学生管理系统,期末实训报告
2022-05-15
在派生类的构造函数的初始化列表中,为什么不能包含对基类子对象的初始化。
2021-07-30
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅