- 博客(268)
- 资源 (10)
- 问答 (1)
- 收藏
- 关注
原创 C++11 并发指南九(综合运用 C++11 多线程下生产者消费者模型详解)
前面八章介绍了 C++11 并发编程的基础(抱歉哈,第五章-第八章还在草稿中),本文将综合运用 C++11中的新的基础设施(主要是多线程、锁、条件变量)来阐述一个经典问题——,并给出完整的解决方案。
2023-01-29 13:07:15 4099
原创 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 4344 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 2921
原创 mupdf流程
这个函数的核心目的是管理PDF处理过程中的资源环境,确保资源在处理期间的正确分配和释放。它通过使用资源栈来暂存当前的资源环境,处理新的资源字典,并在处理完成后恢复之前的资源环境。在任何情况下(无论处理成功还是失败)都能正确管理资源,从而避免资源泄漏或状态不一致的现象。
2024-09-18 00:16:44 839
原创 为libpng不同架构创建构建目录、编译、安装以及合并库文件的所有步骤。
这个脚本将处理从构建到合并的所有步骤,确保 libpng 的 x86_64 和 arm64 架构版本被正确编译和合并。目录下生成包含通用库的。执行完之后,脚本会在。
2024-09-07 18:39:31 245
原创 CMake 为 macOS 平台生成适用于两个不同架构的 Zlib 库,
【代码】CMake 为 macOS 平台生成适用于两个不同架构的 Zlib 库,
2024-09-07 17:58:18 159
原创 对mozjpeg中的函数名进行替换
获取到函数列表到指定文件后,删去simd相关的内容。进行第一次替换,替换所有的函数名称。第二次替换是替换def目录导出的函数。
2024-08-30 19:35:16 312
原创 C++泛型编程指南之函数模板优先级匹配
完美匹配 (1):参数类型与函数参数类型完全相同,或者参数是左值引用且指向相同类型的对象。匹配需要微调 (2):数组变量衰减为指针,或添加const限定符以匹配参数类型。类型提升匹配 (3):小整型和浮点型的自动提升。标准转换匹配 (4):标准转换或派生类到基类的转换。用户定义的转换匹配 (5):通过构造函数或转换运算符进行的转换。省略号匹配 (6):省略号参数可以匹配多种类型,但对于某些类型可能有限制。
2024-08-10 23:17:12 821
原创 C++ 泛型编程指南之函数模板
在C++中,模板是一种强大的机制,它允许你编写泛型代码,即可以处理多种数据类型的代码。通过使用模板,你可以编写灵活且可重用的函数和类,而不需要为每种数据类型都重复相同的逻辑。在C++17之前,模板参数类型`T`通常需要满足可复制的要求,这是因为模板中的函数如果返回`T`类型的值,那么这个值就需要能够被复制。但是,有时候我们可能想要使用不可复制的类型作为模板参数,例如`std::unique_ptr`这样的独占所有权智能指针。为了支持不可复制类型的使用,C++17引入了结构化绑定和`std::optio
2024-08-10 17:48:19 1182
原创 简化cjpeg
jpeg-一种影像有损压缩标准方法后缀jpg/jpegJPEG(Joint Photographic Experts Group联合图像专家小组)是一种针对照片影像而广泛使用的有损压缩标准方法,面向连续色调静止图像的一种压缩标准。1992年发布了JPEG的标准而在1994年获得了工S010918-1的认定。和相同图像质量的其它常用文件格式(C如GIF,TIFF,PCX)相比,JPEG是目前静态图像中压缩比最高的。JPEG格式是最常用的图像文件格式,后缀名为.jpg或.jPeg。JF工F一JPEG文件交换
2024-08-09 09:54:27 196
原创 Libharu实现子集化和字体内嵌流程
展开 HPDF_LoadTTFontFromFile//完成初始化动作展开 HPDF_FileReader_New// 该函数创建并初始化一个用于读取文件的流对象。展开 LoadTTFontFromStream//增加 字体定义到pdf内部的字体定义列表,这一步,和之后的 HPDF_GetFont内的 HPDF_GetFontDef 有关展开 HPDF_TTFontDef_Load展开 LoadFontData。
2024-08-08 08:46:25 753
原创 C++泛型编程指南==》模板重载决议
重载解析仅应用于命名函数的调用。通过函数指针或指向成员函数的指针进行的调用不适用重载解析。类函数宏不支持重载,因此不需要进行重载解析。重载解析的目标是确定最佳匹配的函数,以便于正确地调用。完美匹配 (1):参数类型与函数参数类型完全相同,或者参数是左值引用且指向相同类型的对象。匹配需要微调 (2):数组变量衰减为指针,或添加const限定符以匹配参数类型。类型提升匹配 (3):小整型和浮点型的自动提升。标准转换匹配 (4):标准转换或派生类到基类的转换。用户定义的转换匹配 (5)
2024-08-08 01:17:37 540
原创 现代泛型编程指南==》函数模板
当参数按引用声明时,所有实参必须具有相同的类型。当参数按值声明时,允许进行简单的转换,但转换后的类型必须匹配。如果实参的类型不兼容,或者不能通过简单的转换匹配,那么调用将导致编译错误。方法1:适用于你想要显式指定返回类型的情况。方法2:适用于你想让编译器推导返回类型的情况。方法3:适用于你想自动选择两个类型之间的公共类型作为返回类型的情况。方法二的局限性[[#方法二的局限性]]方法三的注意事项使用b < a?a : b更加稳健,因为它不依赖于运算符的存在。
2024-08-07 00:59:53 845
原创 python 模块 包 库 框架
将测试代码放在块内是一个快速简便的方法,适用于小型模块或简单的测试。使用单元测试框架(如unittest或pytest)可以更好地组织和管理测试代码,适用于大型项目或复杂的测试场景。希望这些信息对你有所帮助!如果你有任何具体问题或需要进一步的帮助,请随时提问。
2024-08-04 11:48:07 800
原创 python 容器
在 Python 中,序列类型(如列表、元组和字符串)支持一系列通用的操作。下面是一些常见的序列操作,这些操作通常适用于大多数序列类型,无论是可变类型还是不可变类型:下面是针对这些操作的一些示例代码:请注意,对于可变序列(如列表),还有一些额外的方法可用,如 , , , , , , 等。而对于不可变序列(如元组和字符串),则无法直接修改其内容,但可以通过切片和其他操作来创建新的序列。您提到的这两个方法是序列类型(如列表和字符串)中常用的,用于获取元素的位置和计数。下面是这两个方法的具体说明及示例:以下是
2024-08-04 00:46:10 794
原创 python函数
关键字参数:通过指定参数名和对应的值来传递参数。位置参数:按照函数定义的顺序传递参数。混合使用:可以同时使用位置参数和关键字参数。使用关键字参数的一个主要优点是可以提高代码的可读性,特别是在函数有许多参数的情况下。你还可以使用关键字参数来更改默认参数值而不需要修改所有参数。def create_user(username, email, age=18): # 年龄设为默认值18'age': age# 使用关键字参数覆盖默认值。
2024-08-03 20:49:19 899
原创 libharu维基页面
在Windows环境中,如果将Haru构建为共享库,错误处理函数的定义需要使用__stdcall调用约定。LibHaru 定义了一系列错误代码来指示可能遇到的各种错误情况。这些错误代码覆盖了从内存分配问题、文件I/O错误、无效的参数设置到不支持的功能或格式等。了解这些错误代码及其含义对于调试和解决使用 LibHaru 库时遇到的问题至关重要。如果遇到未定义的错误代码,可能需要查阅库的文档或源代码以获取更多信息。在LibHaru中,绘制矢量图形涉及到设置图形状态、构造路径、以及对路径进行填充或描边的操作。
2024-06-16 19:39:15 747
原创 编译 libpng zlib mozjpeg libjpeg-turbo 失败的解决方法
在使用vcpkg安装这些库之前,请确保你已经正确安装并配置了vcpkg。以下是在Windows环境下,使用vcpkg安装libpngzlibmozjpeg, 和的命令序列。这些命令假设你已经在命令行中进入了vcpkg的根目录。由于libpng依赖于zlib,vcpkg在安装libpng时会自动处理zlib的依赖关系。mozjpeg是一个JPEG库,提供更好的压缩效率。libjpeg-turbo是另一个JPEG库,以其高速度而闻名。
2024-06-01 21:49:49 412
原创 cjpeg
前一行通过函数指针调用错误管理器的重置函数,确保错误状态被清空。后一行则初始化输出目标,准备接收压缩后的数据。标志决定压缩的起始状态:如果是处理原始数据输入(即无须颜色转换或下采样的数据),则状态设为。函数来根据当前的压缩参数选择和初始化所有需要的压缩模块,这包括编码器、系数处理器等。方法,为压缩的第一遍处理做准备,这可能包括设置内部状态变量、初始化工作内存等。最终,该函数完成了JPEG压缩过程的初始化,使得应用程序可以通过调用如。计数器重置为0,表示从图像的第一行开始处理。只能在压缩开始状态被调用。
2024-05-29 01:03:43 556
原创 libjpeg_example.txt
******************** JPEG 压缩示例接口 ********************//******************** JPEG解压样本接口 ********************//* cinfo->err 实际上指向 my_error_mgr 结构,因此强制指针 */(void)jpeg_read_scanlines(cinfo, 缓冲区, 1);/* 步骤3:使用jpeg_read_header()读取文件参数 *//* 返回给调用者 */
2024-05-26 23:10:11 279
原创 2C++类和对象(二)
/类体:由成员变量和成员函数组成 };//注意后面的分号其中class为定义类的关键字,className为类的名字,{}中为类的主体,注意定义结束时加上后面的分号。类中的元素称为类的成员:类中的数据称为类的属性或者成员变量,类中的函数称为类的方法或者成员函数。1、声明和定义全部放在类体中。需要注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。2、声明放在头文件(.h)中,定义放在源文件(.cpp)中。注意:一般情况下,更期望采用第二种方式。
2024-04-07 22:42:31 1079
原创 1C++入门基础(一)
C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机,20世纪80年代,计算机界提出了OOP(object oriented programming:面向对象)思想,支持面向对象的程序设计语言应运而生。1982年,Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了一种新的程序语言。为了表达该语言与C语言的渊源关系,命名为C++。因此,C++是基于C语言而产生的,它既可以进行。
2024-04-07 22:41:54 744
原创 kylin v10 配置 rime 输入法
找到 ibus 首选项,选择 输入法 ————》 添加 ————》 中文 ——————》 rime .网上选择 一个 rime 方案(雾凇 rime)将文件全部复制到这个rime 文件夹下。
2024-02-20 16:44:07 406
原创 Linux Rootkit实验|0201 基本功能之Root后门
内核中的事情,真的是要细心。顺着FreeBuf的文章往下看时,这个地方少分配了一个尾零。事实上应该是另外注意,是:个人以为rootkit应该提供一个能够远程连接的root shell(对于内网的机器,用reverse shell是不是更好),并具备痕迹清理、自我删除甚至更强的反取证功能(另外,是否需要隐藏当前登录用户?
2024-02-03 10:59:16 883
原创 Linux Rootkit实验|0200 基本功能之阻止模块加载
感觉Linux kernel虽然是用C写的,但有很鲜明的面向对象的特点。尤其是在结构体中嵌入函数指针作为成员,几乎就是类+方法的翻版。带着这种背景观点去探索源码可能会好一些,你看到某些结构体,可以猜测它们会不会有对应的一些方法。从探索模块加载过程的旅程来看,阅读内核源码没有想象中的难,也并非枯燥,而是充满了乐趣,也许是因为带着问题去探索吧。我们注意到,上面的通知处理函数使用了锁机制。这是内核编程中经常需要注意的。
2024-02-03 10:57:59 1211
原创 Linux Rootkit实验|01 基于修改系统调用表的Hook
配合着源码在线阅览,边做边能查到内核代码的感觉非常棒。本次实验中的比第一次实验中的grep要方便许多。实验过程中深感自己学识浅薄,静水流深呐。一个朋友在FreeBuf文章下评论说:“写得不错。但获取sys_call_table的地址对hook这一大目标并没有起到多大作用,甚至是多余的。”后来他又说:“回复有所歧义,说不需要知道sys_call_table的地址是针对2.6以前的内核版本,之前的版本可以直接引用sys_call_table变量,多谢提醒!
2024-02-03 10:56:08 1085
原创 Linux Rootkit:内核 5.7+ 的新方法
我们无法轻松地将符号名称解析为内存地址,这意味着我们无法使用 ftrace 挂钩函数(回想一下,我们使用 ftrace 来注册当等于。,他们可以随心所欲地使用任何其他导出的内核函数。获取我们想要挂钩的函数的地址。这是一个非常简单的修复,但说明了一种在不破坏现有支持的情况下处理此类更改的好方法。尽管共享相同的名称,但存储库中实际上有两个略有不同的文件。值得注意的是,截至撰写本文时,可用于 Ubuntu 20.04 的最新内核是。当然,如果我们不是在内核 5.7+ 上进行编译,那么这些都不会触发,并且。
2024-02-03 10:55:20 870
原创 Fancy Bear 是一名伐木工人,没关系 - 深入了解 Drovorub 的内核组件
我认为这是一个广泛的、内核范围的决定,如果采取不同的做法,将会产生很多影响(如果您知道确切的原因,请告诉我!示例中所做的那样) - 尽管我将内核对象硬编码为可执行文件中的数组,但没有理由不能通过相反,这样就不会在文件系统上的任何地方留下内核模块的残余。可悲的是,这只是我的猜测。用户态进程的 PID 很可能作为附加数据的一部分传递给任何需要某种输出的命令(至少在我看来这是有意义的,但我在这里完全猜测)。在这篇文章中,我想介绍一下该内核模块使用的一些技术,以及它与我们在其他文章中已经介绍过的技术的关系。
2024-02-03 01:01:53 626
原创 9隐藏登录用户(无需接触磁盘即可修改文件内容)_Linux_Rootkit.md
通常,每个用户只有其中一个(尽管不一定),并且仅真正用于生成显示驱动程序(X、Wayland 等),或者如果您实际位于服务器上,则仅用于登录会话本身。如果我们得到匹配,那么我们可以继续分配一个内核缓冲区,调用真正的系统调用,并将填充的用户空间缓冲区复制到内核缓冲区中。在直接开始编写内核模块之前(此时,我仍然不确定如何在不覆盖此文件的情况下隐藏用户),我决定编写一个用户空间工具来解析此文件以掌握它的含义布局。(最后一个参数是一个偏移量,我们可以在上面看到它从(文件的开头)开始,并在每次读取时递增。
2024-02-03 00:57:29 1103
原创 8隐藏开放端口_Linux_Rootkit.md
完成上述所有内容的目的是为了说明了解如何构建这些模块所需的内核源代码的研究。源代码告诉我们,这个特定的结构是“套接字的网络层表示”——这听起来就像我们所追求的!并不是真正的文件,而是由内核中分配给不同 IO 操作(打开/关闭/读/写/等)的函数定义的。我们的钩子需要做的就是检查监听端口是否等于我们想要隐藏的端口,如果是则返回,如果不是则。这成为我们的目标,因为如果我们可以控制它,那么我们就可以控制(以及其他类似的)请注意,我们实际上并没有触及内核中的内部套接字表,因此连接的功能完全没有受到损害!
2024-02-03 00:53:52 878
原创 7隐藏进程_Linux_Rootkit.md
因此,我们需要想出一种方法来告诉我们的模块我们想要隐藏哪个 PID。一旦我们将内核模块的其余部分(Ftrace 等)放在一起,我们就可以构建它并尝试它。因此,如果我们隐藏带有我们想要保密的 PID 名称的目录,那么这些用户空间工具将不会注意到该进程的存在!希望您喜欢这个 - 它比平常短一点,但这只是因为这里没有太多新内容,只是我们已经介绍过的技术的巧妙组合。现在我们可以告诉 rootkit 我们想要隐藏哪个 PID,我们必须真正隐藏它!具有我们要隐藏的 PID 名称的文件或目录。),我们还可以隐藏进程!
2024-02-03 00:51:54 605
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关注的人