自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

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

2025-04-11 00:06:15 64

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

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

2025-04-07 23:35:22 149

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

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

2025-04-06 09:37:19 1042

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

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

2025-04-06 09:30:44 823

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

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

2025-04-04 14:55:30 898

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

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

2025-04-04 14:54:32 455

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

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

2025-04-03 21:25:52 532

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

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

2025-04-03 11:58:15 1143

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

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

2025-03-30 13:47:29 398

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

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

2025-03-29 18:19:59 504

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

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

2025-03-29 17:14:28 430

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

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

2025-03-25 21:07:07 191

原创 Boost无锁队列简介

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

2025-03-25 11:12:37 342

原创 SQLite优化实践

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

2025-03-25 11:08:57 786

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

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

2025-03-24 22:23:38 404

原创 notify_one() 会阻塞吗?

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

2025-03-24 22:19:18 223

原创 SQLite 查询数据库属性

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

2025-03-21 09:59:27 471

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

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

2025-03-21 09:51:25 574

原创 Windows 格式化磁盘

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

2025-03-21 09:39:41 207

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

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

2025-03-20 10:33:34 318

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

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

2025-03-19 21:54:18 398

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

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

2025-03-19 21:37:02 357

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

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

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

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

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

2025-03-18 14:57:12 507

转载 epoll的原理

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

2025-03-09 20:58:40 37

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

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

2025-03-09 16:24:24 399

原创 Win10 访问 Ubuntu 18 硬盘

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

2025-03-08 22:14:30 1176

原创 Ubuntu18使用Samba共享服务

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

2025-02-22 23:29:17 497

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

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

2025-02-18 23:24:38 986

原创 Linux 信号量

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

2025-02-17 23:58:44 899

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

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

2025-02-16 23:40:30 837

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

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

2025-02-15 17:09:18 627

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

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

2025-02-15 15:33:14 313

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

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

2025-02-15 15:29:03 364

原创 Swift 的 KeyPath 是什么?

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

2025-02-14 16:36:49 1274

原创 解析vCard 3.0:提取电子名片中的姓名

N:LastName;FirstName;;;END:VCARD和END:VCARD标记数据块的开始和结束。N字段存储结构化姓名(分号分隔)。FN字段为直接可读的显示名称。其他字段如TELEMAIL等保存联系信息。

2025-02-13 14:49:41 419

原创 SQL CASE表达式的用法

当遇到更为复杂的条件判断时,可以使用嵌套CASE表达式。比如,在统计员工绩效时,先判断是否完成基本任务量,再根据完成的超额比例进行细分。今天在也无力用到了CASE表达式,于是有了这篇博客,CASE表达式是一个极为实用的工具,能帮助开发者实现复杂的条件逻辑判。利用搜索CASE表达式,依据不同的薪资条件判断出薪资等级。中结合CASE表达式,实现了对不同薪资等级员工人数的统计。表为例,这次我们想根据员工的薪资范围来划分薪资等级。同样可选,当所有条件都为假时返回,省略时默认返回。等是当对应条件为真时返回的结果。

2025-02-12 23:04:47 531

原创 iTunes 不能读取iPhone的内容

iPhone 连接Windows电脑,打开iTunes后弹窗:iTunes不能读取iPhone的内容,请前往iPhone“偏好设置”的“摘要”选项卡,然后单击“恢复”以将此iPhone恢复为出厂设置。打开手机数据管理助手(Dr.Fone、爱思都可以),在文件管理中找到iTunes_Control文件夹。手机与电脑连接后打开iTunes后,直接关闭弹窗与iTunes软件,不要点恢复出厂设置。之后便可以正常使用iTunes管理iPhone啦!此时其实可以不必重置iPhone。全选,删除,即可解决问题。

2025-02-12 14:37:40 886

原创 Linux 共享内存

而共享内存要求数据存储在连续的物理内存中,因此在定义共享内存中的结构体时,需要使用固定大小的字符数组(如 char[])来存储字符串。Redis 的持久化模块使用共享内存来映射内存数据到磁盘文件,这大大提升了 RDB 快照生成的效率,减少了数据持久化过程中的 I/O 操作时间。传统的 IPC 方式如管道、消息队列等,在数据传输时都需要内核参与复制操作,而共享内存通过直接内存访问的方式,将通信性能提升了数量级。将共享内存映射到自己的虚拟地址空间,这样进程就可以直接读写共享内存中的数据。

2025-02-12 00:19:31 1251

原创 SwiftUI 中 .overlay 两种写法的区别及拓展

overlay是 SwiftUI 中的一个视图修饰符,它允许你在另一个视图之上添加额外的视图。这个额外的视图可以是任何 SwiftUI 视图,包括形状、文本、图像、按钮或它们的组合,并且可以根据需要进行布局、样式和动画的设置。当你使用.overlay时,添加的元素会显示在原始视图的上方,就像是覆盖在上面一样。这种叠加的效果可以用于添加装饰元素、强调信息、显示状态指示或创建复杂的组合视图。

2025-02-11 23:59:40 925

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关注的人

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