自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(2048)
  • 问答 (2)
  • 收藏
  • 关注

转载 glibc源码下载&在线阅读地址

第二个 链接 也可以在线阅读Linux内核源码。glibc源码 下载 地址。

2026-09-29 09:41:22 12

转载 Linux下struct input_event结构体详解

连接操作系统的输入设备,可不止一种,也许是一个标准 PS/2 键盘,也许是一个 USB鼠标,或者是一块触摸屏,甚至是一个游戏机摇杆, Linux 在处理这些纷繁各异的输入设备的时候,采用的办法还是找中间层来屏蔽各种细节,请看下图:在 Linux 的内核中,对输入设备的使用,实际上运用了 3 大块来管理,他们分别是所谓的输入设备驱动层输入子系统核心层,以及事件触发层。

2026-09-23 17:47:50 7

转载 Linux 中的 diff 命令详解:从基础到高级应用

diff(差异,Difference)是 Unix/Linux 系统中一款核心的命令行工具,用于比较两个文件或目录的内容差异,并以特定格式输出结果。它是diffutils软件包的一部分,几乎所有类 Unix 系统(如 Linux、macOS、FreeBSD)都预装了该工具。-q仅输出“文件是否不同”,不显示具体差异,适合快速检查。示例diff -q file1.txt file2.txt # 输出:Files file1.txt and file2.txt differ。

2026-08-21 17:25:28 39

转载 单片机中使用 LQR 控制算法入门教程:从 PID 到现代控制

LQR 在单片机中的实现并没有想象中复杂。u = -Kx建立模型计算 K 矩阵选择 Q 和 R实物调试而单片机实时运行时,只需要做简单的乘法和加法。可以这样理解:PID 是根据误差进行控制。LQR 是根据多个状态综合控制。PID 更适合简单系统。LQR 更适合状态较多、耦合较强的系统。对于平衡车、倒立摆、机器人底盘、云台控制、电机控制等项目来说,LQR 是一个非常值得学习的控制算法。上位机负责计算 K单片机负责执行 u = -Kx。

2026-08-10 15:32:09 28

转载 mbed介绍

mbed是什么?mbed是一个面向ARM处理器的原型开发平台,它具体包括免费的软件库(SDK), 硬件参考设计 (HDK)和在线工具(Web)三部分内容,各个部分的具体介绍如下:SDK:mbed设计了一个硬件抽象层,从而屏蔽了不同mcu厂商提供了微处理之间的差异,对于用户来说,他只需要和这个硬件抽象层打交道即可,也就是说,用户基于mbed开发的应用可以很方便地更换使用不同厂商的arm微处理器,从而留给用户更多的选择。

2026-07-28 17:26:37 33

转载 最完整mbedtls入门指南:从安装到实现第一个TLS连接

mbedtls为嵌入式设备提供了安全可靠的TLS解决方案。通过本文学习,你已掌握从库编译到实现加密通信的全流程。始终验证服务器证书(生产环境中禁用VERIFY_OPTIONAL)正确管理随机数生成器确保安全性根据目标设备资源情况优化配置使用调试功能快速定位连接问题DTLS协议在UDP通信中的应用证书链构建与OCSP staplingPSA Crypto API的安全密钥管理下期将介绍mbedtls在STM32平台的硬件加速实现。

2026-07-28 17:25:05 51

转载 正则表达式的语法及匹配规则(基础

正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。学习正则首要了解的是基本的元字符。以下是完整的元字符列表(参考菜鸟教程)在这些元字符中,有一部分并不常用,常用的也不过是其中的一部分而已。所以掌握基础的元字符,就可以用于简单基础的正则匹配了。我把常用的用红色标注出来了将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。'\n' 匹配一个换行符。序列 '\\' 匹配 "\" 而 "\(" 则匹配 "("。

2026-07-28 16:55:51 47

转载 详细介绍:正则表达式超详细版

预定义类等价于功能说明\d[0-9]匹配任意数字(digit)。\D[^0-9]匹配任意非数字。\w匹配字母、数字、下划线(word 字符,注意不包含空格和特殊字符)。\W匹配非字母、数字、下划线。\s匹配任意空白字符(space:空格、制表符\t、换行符\n等)。\S匹配任意非空白字符。\b匹配单词边界(单词与非单词的分隔处,如中的空格两侧)。\B匹配非单词边界(如中两个单词的连接处)。\n匹配换行符(部分语言支持\r\n匹配 Windows 换行)。\t匹配制表符。

2026-07-27 17:38:51 94

转载 告别阻塞:Python select.poll() 异步编程实践与 epoll/asyncio 选型指南

是 Python 中用于 I/O 多路复用 (I/O Multiplexing) 的工具之一,主要应用于高性能。中,它可以高效地监控多个文件描述符(如网络套接字、管道、文件等)上的 I/O 事件,并在事件发生时通知程序。强大,但在现代 Python 异步编程中,通常会使用更高级、更易用的工具。确保在事件处理循环中,要么完全处理完 I/O,要么准备好处理下一轮的通知。),在某些系统上可能会收到重复的事件通知,或者导致性能问题(尽管这在。程序会在此处阻塞,直到有注册的事件发生,或者等待超时。

2026-07-23 13:23:51 20

转载 Python中的多路复用 (select、poll 和 epoll)

它的好处就是并发性高,上面都是依赖于loop函数这个事件循环,它知道我们应该去调用哪个代码,去执行什么方法,这里面不会去阻塞我们建立连接或者是等待的过程,实际上是在不停的请求哪些socket已经准备好了,一旦某个socket准备好,就立马执行回调函数,在回调函数中没有处理一些与IO操作相关的逻辑,都是CPU操作,CPU操作效率是远远超过IO操作,特别是网络IO,它们不在一个单位级上面。这才是真正意义上的异步IO,但是它的编码难度很大,比IO多复用高很多,因此平常使用的框架都是在大量使用IO多复用技术。

2026-07-23 13:23:13 18

转载 告别危险!C++ 类型转换(reinterpret_cast)的常见错误和最佳实践

它的主要目的是将一种类型的位模式(bits)直接解释成另一种类型,通常用于进行不相关的指针类型之间的转换,或者指针与整。使用 reinterpret_cast 时,最常见的麻烦和陷阱在于它绕过了 C++ 的类型安全检查,导致潜在的、难以发现的运行时错误和未定义行为 (Undefined Behavior)。据逐字节地复制到另一个不相关的类型的存储空间,或者从那里读取,最好的方法是使用标准库函数 std::memcpy,它专门用于处理原始内存块的复制,且是定义良好的。如果你需要将一个对象的。

2026-07-23 13:19:46 23

转载 ‌C++内存对齐实战:揭秘结构体大小的计算逻辑‌

内存对齐是计算机底层硬件高效、安全访问数据的基石。深入理解其原理(硬件要求、性能优势)和规则(有效对齐值 n、成员放置、整体补齐),对于编写高性能、可移植且内存高效的 C/C++ 代码至关重要。可以通过 alignas (C++11)、#pragma pack、__attribute__ 等工具干预对齐,但必须清醒认识其带来的空间开销和潜在的 ABI 兼容性风险,尤其是在跨模块或跨编译器协作时。优化结构体成员顺序是减少填充浪费最直接有效的手段。

2026-07-23 13:18:41 15

转载 C++专题:如何写好一个类

模型int(I)long(L)指针(P)典型应用场景LP3216位32位32位早期16位系统(如MS-DOS)ILP3232位32位32位32位操作系统(如x86 Linux/Windows)LLP6432位32位64位64位Windows系统LP6432位64位64位64位类Unix系统(如Linux、macOS)智能指针所有权核心特性适用场景auto_ptr独占(有缺陷)已弃用,复制会转移所有权导致悬空指针禁止使用unique_ptr独占。

2026-07-23 13:17:18 21

转载 告别阻塞:Python select.poll() 异步编程实践与 epoll/asyncio 选型指南

是 Python 中用于 I/O 多路复用 (I/O Multiplexing) 的工具之一,主要应用于高性能网络编程中,它可以高效地监控多个文件描述符(如网络套接字、管道、文件等)上的 I/O 事件,并在事件发生时通知程序。之前完全消耗掉所有的 I/O (例如只读取了一部分数据),在某些系统上可能会收到重复的事件通知,或者导致性能问题(尽管这在。强大,但在现代 Python 异步编程中,通常会使用更高级、更易用的工具。确保在事件处理循环中,要么完全处理完 I/O,要么准备好处理下一轮的通知。

2026-07-13 21:08:14 21

转载 Python中的多路复用 (select、poll 和 epoll)

Python中的多路复用 (select、poll 和 epoll)-腾讯云开发者社区-腾讯云

2026-07-13 21:07:20 17

转载 两种方式自建Tailscale的 DERP 中继教程

至此,两种自建DERP中继服务的教程已经搞定了,限于水平有限,tailscale的使用和服务器的基础的相关知识不能一一列举。如果你有更好的关于自建DERP中继的方法,欢迎评论区讨论。

2026-07-13 21:05:32 189

转载 解决Tailscale打洞: Derp/UPnP/全锥NAT

UPnP: 通用即插即用,这是一个大的协议框架,目标是让网络里的各种设备能自动发现和通信。它下面包含了很多针对不同设备类型的具体规范。IGD: 这是的缩句,中文意思就是“互联网网关设备在绝大多数家庭和办公网络中,这个设备就是你的路由器。尽管STUN和基本的“打洞”技术在许多情况下有效,但它们面对更严格的NAT类型(如对称NAT)时,成功率会下降。在对称NAT环境下,路由器为每个不同的目标地址和端口都会分配一个新的、随机的外部端口,这使得对等方很难预测应该向哪个端口发送数据。

2026-07-13 20:58:02 74

转载 再生龙(Clonezilla)磁盘克隆和备份工具详解

Clonezilla(再生龙)是一款​​强大、灵活且免费​​的磁盘克隆和系统部署工具,尤其适合​​有技术背景的用户​​、​​系统管理员​​和需要​​进行批量系统部署的IT环境​​。虽然它的文本界面可能对初学者有些挑战,并且不支持增量备份或在线操作,但其在数据备份、系统迁移和大规模部署方面的可靠性、高效性和广泛兼容性,使其成为该领域一款不可或缺的经典工具。希望以上信息能帮助你全面了解 Clonezilla。如果你有更具体的用例或操作细节问题,我很乐意提供进一步的信息。

2026-07-08 16:25:11 164

转载 qDebug:调试利器还是性能陷阱?

通过命令行参数控制,实现灵活的日志开关。使用重定向日志输出到文件、网络、GUI 窗口等,统一管理日志级别和内容。qDebug()是 Qt C++ 中极为便利的调试工具,在默认 Release 构建下是不会影响性能的。真正的性能问题往往来自开发者误将调试机制保留在发布版本中。只要理解其底层机制,并合理控制输出方式,就能做到“开发时调试利器,发布时毫无负担”。qDebug:调试利器还是性能陷阱?

2026-05-30 15:08:18 48

转载 QT : 屏蔽qDebug调试信息

在VC项目配置里C/C++ /Preprocessor /Preprocessor Definitions属性里面加入宏定义:QT_NO_DEBUG_OUTPUT。方法1:直接在main函数之前加入宏定义。注意,这种方法,好像无法保证全局所有类中的qDebug被屏蔽。最好还是用第二种或第三种方法。然后clear项目重新编译即可屏蔽qDebug()的输出.在Qt工程文件.pro里面添加。

2026-05-30 14:55:56 39

转载 从飞思卡尔到NXP,经久不衰的i.MX系列产品背后的“成功学”

其中,i.MX 9是在i.MX 8系列基础上构建的新一代产品,NPU(网络神经加速器)的融入使得其在边缘端的AI计算能力进一步加强,内置的MCU内核能够实现实时响应,并对整个器件的功耗进行控制。创新的高效节能技术是恩智浦产品的另一个亮点。另外,i.MX RT在语音识别方面也具备不少优势——在安静的情况下,依靠软件的配合可以达到99%的识别率,即使是嘈杂的环境下也有80%的识别率。比如,汽车信息娱乐系统方面,i.MX的口碑那在业界是杠杠的,据悉,全球前十名的OEM汽车原厂都使用了飞思卡尔i.MX应用处理器。

2026-05-18 17:09:42 113

转载 localtime和gmtime获取的时间不可靠

然而,一个设备在预定关机后,意外地提前开机然后再次关机,这引起了我们的注意。通过代码审查和日志分析,我们发现设备在定时检测到当前时间符合条件后,会执行关机操作。为了进一步诊断问题,我们在代码中增加了打印时间戳的日志,并进行了长时间的挂测。在多线程环境中,为了避免全局指针被篡改的风险,建议使用线程安全的函数,如。这不仅可以避免潜在的线程安全问题,还可以确保程序的健壮性和可靠性。这与glibc的行为不同,可能是问题的关键所在。的结果篡改,这是一个严重的线程安全问题。是非线程安全的,我们将其替换为线程安全的。

2026-05-09 13:40:19 51

转载 Linux文件锁学习-flock, lockf, fcntl

这三个函数的作用都是给文件加锁,那它们有什么区别呢?首先flock和fcntl是系统调用,而lockf是库函数。lockf实际上是fcntl的封装,所以lockf和fcntl的底层实现是一样的,对文件加锁的效果也是一样的。后面分析不同点时大多数情况是将fcntl和lockf放在一起的。下面首先看每个函数的使用,从使用的方式和效果来看各个函数的区别。

2026-05-08 16:35:52 42

转载 Linux 中的文件锁定命令:flock、fcntl、lockfile、flockfile

文件锁定是保证系统稳定性和安全性的一种重要方法,在 Linux 系统中,我们可以使用 flock、fcntl、lockfile、flockfile 等命令来实现文件锁定操作。在使用这些命令时,需要注意锁定类型、命令参数、常见问题等内容,以保证锁定操作的正确性和可靠性。Linux 中的文件锁定命令:flock、fcntl、lockfile、flockfile-腾讯云开发者社区-腾讯云。

2026-05-08 16:29:44 49

转载 Mutex和内存可见性

POSIX线程遵守共享内存模型[1],此模型各线程可以访问一组共享对象。多个并发的线程需要协同访问共享对象。为此该模型引入了以下两个属性来简化程序设计:原子访问:避免线程在访问数据对象时,另一线程正在修改它。内存可见性:一旦线程修改数据对象,其它线程在修改行为发生之后马上能看见此对象的新状态,如图1所示。Mutex通常被引进作为实现原子访问的手段,但它的作用不仅仅是用来控制对象访问,还解决内存可见性问题。接下来将看到,某些场景下,并不需要关心原子访问题,往往内存可见性才是问题所在。

2026-05-07 16:39:22 39

转载 揭秘C++线程安全陷阱:std::mutex与lock_guard你真的用对了吗?

《C++线程安全陷阱解析:从std::mutex到lock_guard的实践指南》 本文深入探讨C++多线程编程中的核心挑战与解决方案。文章首先通过典型竞争条件案例(如共享计数器问题)揭示了非原子操作导致的数据不一致风险,指出互斥锁(std::mutex)在保护临界区时的基础作用。第二章重点解析std::mutex的内存模型保障机制及其典型误用场景,包括死锁成因、重复加锁问题和移动/拷贝限制。 文章详细对比了不同同步原语特性,强调RAII机制在异常安全中的关键价值,通过std::lock_guard实现构造

2026-05-07 15:41:28 37

转载 C++ GCC STL std::string实现 (短字符串优化)

本笔记介绍了C++11之后的GCCstring的核心数据成员,以及短字符串的栈上优化。

2026-05-07 13:51:26 36

转载 std::string的底层实现

综合考虑所有情况之后,facebook开源的folly库中,实现了一个fbstring, 它根据字符串的不同长度使用不同的拷贝策略, 最终每个fbstring对象占据的空间大小都是24字节。这样做的好处是,当字符串较小时,直接拷贝字符串,放在 string内部,不用获取堆空间,开销小。—— 思路:创建一个CowString类的内部类,让CowString的operator[]函数返回是这个新类型的对象,然后在这个新类型中对<<和=进行重载,让这两个运算符能够处理新类型对象,从而分开了处理逻辑。

2026-05-07 13:50:11 38

转载 线扫激光算法原理「建议收藏」

在计算参数的样本选取中,为了尽可能的提高精度,我们在靠近基准面的样本中选取的计算组合分别为(1mm,2mm),(1mm,3mm),(1mm,4mm),(1mm,5mm),(1mm,6mm),(1mm,7mm),(1mm,8mm),(1mm,9mm),(1mm,10mm),总共9组数据。在实际的测量过程中我们观测到0.1mm的位移,通常对应的是0.6左右个像素。在中期的试验中,我们改进镜头和相机的结构,来改善景深,但是后来我们通过试验发现原有的结构景深也是足够用的,所以后面的试验还是按照原来的结构来。

2026-05-07 13:48:22 644

转载 (翻译)测试替身— Fakes, Mocks 和 Stubs

自动化测试中,我们常会使用一些经过简化的,行为与表现类似于生产环境下的对象的复制品。引入这样的复制品能够降低构建测试用例的复杂度,允许我们独立而解耦地测试某个模块,不再担心受到系统中其他部分的影响;这类型对象也就是所谓的 Test Double。实际上对于 Test Double 的定义与阐述也是见仁见智,Gerard Meszaros 在这篇文章:http://xunitpatterns.com/Test%20Double.html 中就介绍了五个不同的 Double 类型;

2026-05-06 16:18:32 49

转载 什么是桩代码(Stub)

桩代码(Stub)是程序开发中一种常见的技术,用于模拟或代替某个模块的功能。它是一个简单的替代代码,通常只包含返回固定值或模拟预期行为的逻辑。桩代码常用于以下情况:对于还未实现的函数或模块进行测试、模拟不可用的外部依赖、加速开发过程、验证函数的调用等。

2026-05-06 16:17:31 81

转载 一文讲清楚什么是基准测试(Benchmark)

基准测试,指的是:在可控、稳定、可复现的条件下,测量系统在正常工作状态下的性能表现,并作为后续对比的“基准线”。基准测试 = 性能标尺它不是为了“把系统打崩”,而是为了回答一个更基础的问题:在理想/标准条件下,我的系统能跑多快?当前实现的性能处在什么水平?优化前后,有没有真的变好?测试类型核心目标是否追极限是否模拟真实基准测试性能基线❌❌压力测试系统极限✅❌负载测试业务验证❌✅基准测试不是为了“测崩系统”,而是为了“建立信心”它回答的是:我现在的性能处在哪个水平。

2026-05-06 16:16:22 228

转载 linux下getrlimit()与setrlimit()函数说明及使用

事实上,并不是只有SIGSEGV信号产生coredump,还有下面一些信号也产生coredump:SIGABRT(异常终止)、SIGBUS(硬件故障)、SIGEMT(硬件故障)、SIGFPE(算术异常)、SIGILL(非法硬件指令)、SIGIOT(硬件故障),SIGQUIT,SIGSYS(无效系统调用),SIGTRAP(硬件故障)等。获取或设置资源使用限制, linux 下每种资源都有相关的软硬限制,软限制是内核强加给相应资源的限制值,硬限制是软限制的最大值。ulimit -c -n -s -H 硬限制。

2026-05-06 16:14:29 44

转载 引言:为什么需要虚拟网络设备——TUN/TAP?

TUN/TAP 设备是操作系统内核中的虚拟网络设备,是用软件模拟的网络设备,提供与硬件网络设备完全相同的功能。主要用于用户空间和内核空间传递报文。TUN/TAP设备巧妙地利用Linux“一切皆文件”的哲学,通过一个字符设备文件/dev/net/tun,在内核网络协议栈和用户态程序之间架起了一座桥梁。它们虽然纯粹由软件实现,但在内核看来,其行为与物理网卡无异。其核心价值在于将网络数据包的处理能力开放给了用户空间。这种设计带来了极大的灵活性,催生了从VPN、虚拟化网络到云原生基础设施等诸多强大应用。

2026-04-30 11:19:33 184

转载 再生龙(Clonezilla)系统备份与还原全指南:从准备到实践

在当今 数据 至上的时代,系统备份与还原是保障设备稳定运行的重要环节。本文将详细介绍如何使用再生龙(Clonezilla)工具进行系统的完整备份与还原,帮助你轻松应对系统故障、升级迁移等场景。

2026-04-30 10:40:53 362

转载 《UNIX网络编程》阅读笔记:inet_aton、inet_addr、inet_ntoa和inet_pton、inet_ntop函数

【注】参考《UNIX网络编程》

2026-04-27 11:22:19 67

转载 UML一一 类图关系 (泛化、实现、依赖、关联、聚合、组合)[通俗易懂]

设计一个类中的信息和行为要高内聚设计多个类, 类之间要低耦合面向对象是符合人们对现实世界的思维模式,利用面向对象设计,特别是采用各种设计模式来解决问题时,会设计多个类,然后创建多个对象,一个设计良好的类,应该是兼顾信息和行为并且高内聚。而不同的类之间,应该做到松耦合。当面对应用系统或者需要解决的问题经常是复杂的、高度抽象的,我们 创建的多个对象往往是有联系的泛化关系实现关系依赖关系关联关系聚合关系组合关系对于继承(泛化)、实现(实现)

2026-04-24 16:56:22 83

转载 UML 类图及六大关系详解:继承、实现、依赖、关联、聚合、组合(Java+类图)

在软件工程中,UML类图是描述 系统 静态结构的标准建模语言,而类之间的六种关系是理解系统设计意图的关键。无论是阅读现有系统源码,还是进行新功能的设计开发,准确识别类之间的关系都能显著提升代码质量和可维护性。抽象类是一种不能被实例化的类,通常作为父类,被子类继承。它可以包含普通方法,也可以包含抽象方法。UML类图示例Java代码示例在 UML 类图中,六种关系从 弱到强 的顺序通常为:依赖 → 关联 → 聚合 → 组合 → 泛化(继承) → 实现。

2026-04-24 16:54:59 203

转载 深入解析网络层与数据链路层

主域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称 .比如www.baidu.com域名使用.连接com: 一级域名. 表示这是一个企业域名. 同级的还有 "net"(网络提供商), "org"(非盈利组织) 等.baidu: 二级域名, 公司名.www: 只是一种习惯用法. 之前人们在使用域名时, 往往命名成类似于ftp.xxx.xxx/这样的格式, 来表示主机支持的协议.www:提供网页浏览服务ftp:提供文件传输服务api:提供接口服务mail:提供邮件服务。

2026-04-24 16:50:15 63

转载 组合与继承、内聚与耦合、接口设计原则

但这会带来一个明显的问题:类的数量急剧增多,这样就导致了其它类的耦合特别多,于是整个设计就变成了“高内聚高耦合”了。是一个类将所有的函数都包含了,这样类完全不依赖其它类,耦合性是最低的。3 标记耦合: 指两个模块之间传递的是数据结构,如高级语言中的数组名、记录名、 文件名 等这些名字即标记,其实传递的是这个数据结构的地址;4 控制耦合: 指一个模块调用另一个模块时,传递的是控制变量(如开关、标志等),被调模块通过该控制变量的值有选择地执行块内某一功能;6 内容耦合: 这是最高程度的耦合,也是最差的耦合。

2026-04-18 15:54:04 40

空空如也

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

TA关注的人

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