自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(118)
  • 收藏
  • 关注

原创 std::enable_shared_from_this 模板类的作用是什么?

我们以Connection类的shared智能指针为例说明,是一个标准库模板类,它的作用是让一个类的对象能够安全地生成指向自身的,即使该对象最初是通过普通指针或其他方式创建的。

2025-04-14 23:15:35 435

原创 x86 保护模式中的GDT表是什么?

GDT(全局描述符表,Global Descriptor Table)是 x86 保护模式下用于描述不同类型内存段的一个重要数据结构。在保护模式下,GDT 用于管理和保护系统内存,它通过提供一组段描述符来定义内存的访问权限、大小、类型等属性。

2025-04-14 23:12:50 343

原创 C++编译期反射的案例和场景

序列化是将对象转换为可存储或传输的格式(如JSON、XML等),反序列化则是从这种格式恢复对象。传统上需要手写大量代码,而通过编译期反射,可以自动生成这些代码。处理枚举类型时,经常需要将枚举值映射为字符串(如日志打印)或从字符串恢复枚举值(如配置解析)。通过编译期反射,可以轻松实现这些功能。编译期反射可以帮助在编译阶段验证类型是否符合要求,避免运行时错误。通过编译期反射,可以自动生成这些代码,减少重复劳动。在元编程中,利用编译期反射可以生成复杂的模板化代码,适用于需要高性能和强抽象的场景。

2025-04-13 16:11:47 520

原创 Visual Studio Code 在.S汇编文件中添加调试断点及功能简介

Visual Studio Code(VS Code)提供了强大的调试功能,下面简单讲讲 VS Code 断点功能。

2025-04-13 16:08:23 1104

原创 UNIX域套接字(Unix Domain Sockets, UDS) 的两种接口

(File Descriptor Passing),这是其独特优势。虽然 UNIX 域套接字在本地通信,但。UNIX 域套接字的流式套接字支持。

2025-04-11 09:38:16 663

原创 VS Code 的 .S 汇编文件里面的注释不显示绿色

VS Code 默认可能不支持完整的汇编语法高亮。如果扩展安装后仍无法识别,手动关联。

2025-04-11 00:06:15 282

原创 Linux 递归查找并删除目录下的文件

在 Linux 中,可以使用 find 命令递归查找并删除目录下的文件。如果需要删除目录本身,可以使用 -type d 或结合 rm -r。

2025-04-07 23:35:22 336

原创 关于计算机网络的一些疑问

队头阻塞(Head-of-Line Blocking, HOL Blocking)是指一个连接中的请求因为前面的请求没有完成而被阻塞的情况。HTTP/1.x 中,主要有两种形式的队头阻塞:HTTP 层的队头阻塞:在 HTTP/1.1 中,虽然引入了“持久连接”(Persistent Connection)和“管道化”(Pipelining),但同一条 TCP 连接只能按顺序处理请求。如果一个请求因为某些原因(如服务器响应延迟)没有完成,后续请求就必须等待,无法越过前面的请求。这就导致了“队头阻塞”。

2025-04-06 09:37:19 1059

原创 USB传输结构结构与类型简介

Transfer(传输)├─ Transaction(事务)│ ├─ Packet(数据包)│ └─ Packet(数据包)└─ Transaction(事务)从大到小:传输 → 事务 → 数据包,层层细化。

2025-04-06 09:30:44 855

原创 USB传输(Transaction)过程简介

快递单(Token):说明要寄什么、给谁。包裹(Data Packet):实际物品。签收单(Handshake):确认是否收到。

2025-04-04 14:55:30 920

原创 深度探索C++对象模型 - 位逐次拷贝语义

位逐次拷贝语义”(bitwise copy semantics)指的是,对象的复制可以通过直接复制其在内存中的原始字节来实现。这种复制方式简单且高效,适用于结构简单的类,例如那些不包含指针、需要特殊拷贝处理的资源或复杂继承结构的类。对于这类简单的类,复制其内存布局就相当于创建了一个完全相同的副本。当一个类包含一个成员对象,而该成员对象所属的类定义了拷贝构造函数时(无论是显式声明还是由编译器合成),该类就不能简单地依赖位逐次拷贝。

2025-04-04 14:54:32 462

原创 USB(通用串行总线)数据传输机制和包结构简介

USB的主机(如电脑)和设备(如鼠标、键盘)之间通过。

2025-04-03 21:25:52 547

原创 C 预处理器、编译器和链接器的理解与说明

阶段选项作用示例预处理器-E仅预处理,输出结果-I指定头文件路径-D定义宏编译器-c生成目标文件(.o-S生成汇编代码(.s-O2优化级别 2-g生成调试符号链接器-o指定可执行文件名-L指定库搜索路径-l指定链接的库。

2025-04-03 11:58:15 1156

原创 解决双系统(ubuntu与windows)中的时间同步问题

我在同一台机器上同时运行Ubuntu和其他操作系统(如Windows),遇到由于不同的RTC处理方式导致的时间不同步问题使用下面的指令查看系统时间状态,Local time实际上是RTC timeWindows默认假设RTC是以本地时间为基准设置的,而大多数Linux发行版(包括Ubuntu)则通常配置成认为RTC保存的是UTC协调世界时15。这种差异会导致每次切换操作系统后看到的时间不一致。

2025-03-30 13:47:29 603

原创 开源项目里的 autogen.sh 是做什么?

脚本用于在特定系统上配置软件的构建过程。它会检查系统特性、已安装的库和头文件,并根据这些信息生成适合的。是一个在基于 Autotools 构建系统的开源项目中常见的脚本。是 Autotools 的一个组件,它会根据项目根目录下的。脚本中添加额外的自定义步骤,以完成特定的初始化或准备工作。是 Autotools 的另一个组件,它会根据项目中的。它会检查系统中是否安装了构建项目所需的工具,例如。如果缺少必要的工具,脚本可能会报错并提示安装。,或者在项目的构建相关文件(例如。因此,通常会在克隆源代码后。

2025-03-29 18:19:59 518

原创 libimobiledevice项目中各个库的作用

这是一个基于 FUSE (Filesystem in Userspace) 的工具,允许您像挂载普通文件系统一样挂载 iOS 设备的文件系统。这是一个后台守护进程(daemon),负责管理通过 USB 连接的 iOS 设备的 socket 连接。这是一个用于与处于恢复模式(Recovery Mode)或设备固件升级模式(DFU Mode)的 iOS 设备进行通信的库。这是一个命令行工具,也是一个库,用于在已越狱和未越狱的 iOS 设备上安装、卸载和管理应用程序(.ipa 文件)。守护进程的客户端库。

2025-03-29 17:14:28 440

原创 std::unordered_map和 std::map的区别

最近在做程序能行分析,发现。

2025-03-25 21:07:07 234

原创 Boost无锁队列简介

无锁队列(Lock-Free Queue)是一种在多线程环境中非常高效的队列实现,其最大优势在于避免了传统的锁机制(如互斥锁mutex)带来的性能开销。它们通过特定的算法和原子操作保证多线程访问时,不需要锁定资源,因此提高了并发执行效率。以Boost库中的无锁队列和分析其中的一些关键点,理解无锁队列的实现原理。

2025-03-25 11:12:37 371

原创 SQLite优化实践

通过将多个插入操作包装在一个事务中,可以显著减少每次写入数据库时的磁盘I/O操作。减少磁盘I/O、提高插入速度,并在牺牲一些内存和CPU使用的情况下优化数据库性能。

2025-03-25 11:08:57 811

原创 C++中的SSO(小字符串优化)是什么

SSO(Small String Optimization)是一种优化技术,旨在提高小字符串的性能。在传统的实现中,字符串通常会在堆上分配内存,这意味着每次创建或操作字符串时,都会涉及到动态内存分配,这对小字符串来说是低效的。为了解决这个问题,SSO 将短字符串直接存储在对象本身的内存中,而不需要额外的堆内存分配。这样可以大幅降低小字符串操作的开销,避免频繁的内存分配和指针访问。

2025-03-24 22:23:38 429

原创 notify_one() 会阻塞吗?

时,如果有线程在等待条件变量,它会被唤醒并开始检查条件。如果没有线程在等待,调用。唤醒线程后,这个线程并不会立刻继续执行,它必须先重新获取锁并检查条件是否满足。会使一个处于等待状态的线程被唤醒并继续执行,但它本身并不会阻塞。它是用于唤醒一个等待中的线程,通常是通过条件变量(

2025-03-24 22:19:18 240

原创 SQLite 查询数据库属性

在 SQLite 命令行工具中,没有直接查看数据库文件大小的指令,但你可以通过操作系统的命令来查看。例如,在 Linux 或者 macOS 系统中,你可以使用。表存储着数据库的元数据,其中包含了所有表、视图、索引等的定义信息。若要查看某个表的结构,也就是表的列名、数据类型等信息,可以使用。在 Windows 系统中,你可以使用。若要查看数据库里的所有表名,可以借助。替换成你实际要查看的表名。

2025-03-21 09:59:27 556

原创 C++使用Minizip实现目录压缩

最近有相关业务需求,使用到了minizip,特此记录。

2025-03-21 09:51:25 597

原创 Windows 格式化磁盘

7、输入 “format fs=ntfs quick” 命令,将指定分区格式化为 NTFS 文件系统。6、输入 “select partition #” 命令(# 为要格式化的分区号),精准选定要进行格式化操作的分区。点击 “开始” 菜单,输入 “cmd”,右键单击并选择 “以管理员身份运行”。3、输入 “list disk” 命令,查看当前计算机中所有的磁盘,找到装有 Ubuntu 系统的磁盘编号。4、输入 “select disk #” 命令(# 为要格式化的分区所在的硬盘号),选中目标磁盘。

2025-03-21 09:39:41 407

原创 mingw-builds-binaries release不同版本区分

这些文件名包含了关于处理器架构、运行时库、调试信息格式等多方面的信息。

2025-03-20 10:33:34 354

原创 Android Shell上执行可执行文件报错:Permission denied

文件系统挂载为SELinux安全策略限制Android中以下目录通常允许执行文件:

2025-03-19 21:54:18 437

原创 Vim每行末尾添加字符方法

【代码】Vim每行末尾添加字符方法。

2025-03-19 21:37:02 462

原创 飞牛系统(FnOS)笔记本设置合盖不熄屏

飞牛OS是基于Linux开发的,因此如下方案适用于飞牛OS。

2025-03-18 15:00:22 1680 1

原创 Mac下查看dylib库的版本信息

在macOS系统里,otool是一个实用的命令行工具,可用于查看 Mach-O 文件(如可执行文件、动态链接库等)的相关信息。若要查看动态链接库(.dylib)的版本,可借助otool -L命令。

2025-03-18 14:57:12 525

转载 epoll的原理

如果这篇文章说不清epoll的本质,那就过来掐死我吧!

2025-03-09 20:58:40 44

原创 Linux的水平触发 和 边缘触发,为什么要取这两个名字?

这两个名字来源于数字电路中的电平触发和边沿触发概念。

2025-03-09 16:24:24 412

原创 Win10 访问 Ubuntu 18 硬盘

Samba 是在 Linux 和 Unix 系统上实现 SMB/CIFS 协议的一个免费软件,可让 Windows 系统方便地访问 Linux 共享资源。在 Ubuntu 上搭建 FTP 服务器,让 Windows 10 通过 FTP 客户端访问。SSHFS 允许你通过 SSH 协议挂载远程文件系统。请替换为你实际的用户主目录。

2025-03-08 22:14:30 1189

原创 Ubuntu18使用Samba共享服务

Samba 是在 Linux 和 Unix 系统上实现 SMB/CIFS 协议的一个免费软件,可让 Windows 系统方便地访问 Linux 共享资源。

2025-02-22 23:29:17 537

原创 Linux 多进程生产者消费者模型实现

生产者消费者模型是并发编程中的经典案例,本文通过一个具体的C++示例,演示如何在Linux环境下使用System V IPC机制实现跨进程的生产者消费者模型。(此处插入用户提供的完整生产者/消费者代码)

2025-02-18 23:24:38 1002

原创 Linux 信号量

信号量作为经典的进程同步工具,在系统级编程中仍具有重要地位。理解其底层机制并结合现代编程范式,能够帮助开发者构建更健壮的并发系统。在实际应用中,需要根据具体场景选择最合适的同步策略,平衡性能与安全性。在多进程/多线程编程中,当多个执行单元需要访问共享资源时,必须引入同步机制来保证数据一致性。信号量(Semaphore)正是解决这一问题的经典方案。

2025-02-17 23:58:44 930

原创 Linux 基于共享内存的循环队列实现

特殊处理原因:共享内存对象不会自动调用构造函数。

2025-02-16 23:40:30 857

原创 Git 修改或删除某次提交信息

如果要修改或删除的提交已经推送到远程仓库,在修改本地提交信息后,还需要强制推送到远程仓库。强制推送可能会影响其他团队成员的工作,因此在多人协作的项目中,建议先与团队成员沟通协调。步骤与修改历史提交信息类似,只是在输入新的提交信息时将内容清空,然后保存并关闭编辑器。如果你要修改或删除的提交是最新的一次提交(即 HEAD 指向的提交),可以使用。的缩写,表示强制推送,会覆盖远程仓库上的提交历史,请谨慎使用。如果你想要修改或删除的不是最新的提交,而是历史提交,可以使用。执行该命令后,提交信息会被替换为空字符串。

2025-02-15 17:09:18 685

原创 C# 调用 C++ 动态库接口

在 C# 中调用 C++ 动态库接口,通常需要通过 P/Invoke (Platform Invocation Services) 来与 C++ 代码交互。

2025-02-15 15:33:14 336

原创 CMake 判断 Mac编译环境是Intel的还是Arm的?

在 CMake 中判断 Mac 是 Intel 架构还是 ARM 架构,可以通过检测变量。这个变量返回的是系统的处理器架构信息,可以根据它的值来区分 Intel 和 ARM。"x86_64""arm64"可以在文件中使用这个信息来执行不同的逻辑。

2025-02-15 15:29:03 383

原创 Swift 的 KeyPath 是什么?

构建数据驱动的声明式 UI实现类型安全的动态属性访问减少模板代码,提升代码复用性。

2025-02-14 16:36:49 1287

iOS逆向-基础内容-iOS体系结构-iOS安全体系-iOS Media Layer-iOS Core OS Layer-iOS 应用程序结构-iOS 进程间通信

这是一份 iOS 基础学习资料,内容丰富全面。其详细介绍了 iOS 的架构,包括 Core OS、Core Services、Media、Cocoa Touch 四层架构的功能与组件,如 Core OS 层的内核及安全框架等。 在安全特性上,从硬件、软件、隐私与用户控制、应用和系统安全四个维度展开,像 Secure Enclave、App Sandbox 等机制均有涉及,还提及 App Store 审核流程。 应用结构部分解析了 IPA 文件、App Bundle、Info.plist 等的作用,涵盖应用生命周期、框架库使用、资源本地化、创建方法及扩展等内容。进程间通信列举了 URL Schemes 等多种机制。应用发布则说明了从开发者注册到应用审核管理的一系列步骤。 它适用于 iOS 开发新手、安全研究人员等群体,在 iOS 应用开发、安全防护、系统学习研究场景中作用显著。旨在帮助读者深入理解 iOS 系统基础,助力开发者规范开发与顺利发布应用,为安全从业者提供系统安全分析参考,是一份极具价值的学习指南。

2025-01-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除