自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

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

2026-07-08 16:25:11 3

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

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

2026-05-30 15:08:18 35

转载 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 30

转载 从飞思卡尔到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 75

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

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

2026-05-09 13:40:19 40

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

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

2026-05-08 16:35:52 34

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

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

2026-05-08 16:29:44 37

转载 Mutex和内存可见性

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

2026-05-07 16:39:22 32

转载 揭秘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 24

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

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

2026-05-07 13:51:26 24

转载 std::string的底层实现

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

2026-05-07 13:50:11 32

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

在计算参数的样本选取中,为了尽可能的提高精度,我们在靠近基准面的样本中选取的计算组合分别为(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 629

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

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

2026-05-06 16:18:32 39

转载 什么是桩代码(Stub)

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

2026-05-06 16:17:31 45

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

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

2026-05-06 16:16:22 134

转载 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 35

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

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

2026-04-30 11:19:33 155

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

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

2026-04-30 10:40:53 241

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

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

2026-04-27 11:22:19 60

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

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

2026-04-24 16:56:22 75

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

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

2026-04-24 16:54:59 169

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

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

2026-04-24 16:50:15 53

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

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

2026-04-18 15:54:04 34

转载 继承中耦合性强的问题以及解决方案

在面向对象编程中,耦合性(coupling)是指模块或组件之间相互连接的紧密度,也就是说,耦合性越强,各模块之间的依赖关系就越紧密。而在继承关系中,子类继承了父类的属性和方法,因此子类与父类之间存在一定的耦合性。当类之间的耦合强度很高时,代码可读性和可维护性都会受到影响。继承是面向对象编程中常用的特性,但是它也会带来问题。为了解决继承导致的耦合性强问题,我们可以采取组合关系代替继承、使用接口以及将子类的共性抽象成父类等解决方案。通过这些措施,可以提高代码的可读性和可维护性,从而更加高效地开发应用程序。

2026-04-18 15:48:34 26

转载 34. 组合与继承的对比

组合(Composition)是一种面向对象编程的设计原则,指一个类通过持有其他类的实例(作为成员变量)来复用其功能。组合体现的是“has-a”Carhas-aEngine(汽车拥有引擎)Computerhas-aCPU(电脑拥有处理器)继承(Inheritance)是面向对象编程(OOP)的核心概念之一,它允许一个类(子类/派生类)基于另一个类(父类/基类)来构建。子类会自动获得父类的属性和方法,同时可以扩展或修改这些属性和方法。

2026-04-18 15:26:01 29

转载 从prctl函数开始学习沙箱规则

prctl函数是最原始的,建立沙箱规则的函数。后面出现的seccomp.h对prctl函数进行了封装,有了seccomp_init(),seccomp_rule_add(),seccomp_load()函数来进行沙箱规则的设置。seccomp_rule_add函数负责添加规则,函数原型如下:/***/第二个参数如下所示,表示对某个系统调用要进行的操作:/**//***//***//***//***//***//***/

2026-04-14 13:41:06 24

转载 hiredis: 一个轻量级、高性能的 C 语言 Redis 客户端库

hiredis是一个轻量级、高性能的 C 语言 Redis 客户端库,用于与 Redis 数据库进行通信。它提供了简洁的 API,支持同步 / 异步操作、管道(pipelining)、事务(transactions)等特性,被广泛应用于需要与 Redis 交互的 C/C++ 项目中。计算机科学轻量级:仅包含几个源文件和头文件,无外部依赖,易于集成。高性能:基于非阻塞 I/O,支持批量操作(管道)和异步回调。完整的 Redis 协议实现:支持所有 Redis 命令和数据类型。线程安全。

2026-04-14 11:31:30 85

转载 Linux网络编程errno的EAGAIN和EINTR

在Linux环境下开发经常会碰到很多错误(设置errno),其中EAGAIN是其中比较常见的一个错误(比如用在非阻塞操作中)。EAGAIN和 EWOULDBLOCK等效!从字面上来看,是提示再试一次。这个错误经常出现在当应用程序进行一些非阻塞(non-blocking)操作(对文件或socket)的时候。例如,以O_NONBLOCK的标志打开文件/socket/FIFO,如果你连续做read操作而没有数据可读。

2026-04-13 10:10:53 67

转载 epoll_event数据结构及使用案例详解

是关键的数据结构,用于描述文件描述符(fd)上的 事件 和关联数据。:ET 模式 + 非阻塞 I/O 是 epoll 高性能的关键组合,适合高并发场景。在 Linux 的 I/O 多路复用机制。

2026-04-13 09:47:13 43

转载 Intel VT-x 处于禁用状态【各电脑进入方法】

之前安装过一个VM,但是一直没有启用过,今天本来做个eNSP的教程,打开后发现Intel VT-x 处于禁用状态,就先做处理方法吧。

2026-03-19 16:53:27 200

转载 故事+动图,让PID知识通俗易懂!

第一部分啥是PID?PID,就是“比例(proportional)、积分(integral)、微分(derivative)”,是一种很常见的控制算法。PID已经有107年的历史了。它并不是什么很神圣的东西,大家一定都见过PID的实际应用。比如四轴飞行器,再比如平衡小车......还有汽车的定速巡航、3D打印机上的温度控制器....就是类似于这种:需要将某一个物理量“保持稳定”的场合(比如维持平衡,稳定温度、转速等),PID都会派上大用场。那么问题来了:比如,我想控制一个“热得快”,让一锅水的温度保持在50℃

2026-02-06 16:23:16 148

转载 UDP 协议解析(理论+抓包解析)

UDP(User Datagram Protocol,用户数据报协议)是传输层协议之一,与TCP不同,它提供无连接、不可靠、轻量高效的数据传输服务,适用于实时性要求高但对可靠性要求较低的场景(如游戏、视频流、DNS查询等)。通信前无需建立连接(对比TCP需要进行“三次握手”)无确认机制,无重传机制。发出的数据,不关心对方是否收到UDP的头部开销仅8个字节(对比TCP需要至少20个字节)

2026-02-06 16:18:48 230

转载 ZeroTier 使用教程

ZeroTier是一款强大的 P2P VPN 工具,它能让你在互联网上搭建属于自己的虚拟局域网。通过它,你可以轻松实现远程访问家中设备的需求 - 比如在公司用手机直接访问家里的 NAS。最重要的是,设备之间是点对点直连的,无需经过中转服务器,既保证了速度,又提升了安全性。

2026-01-31 14:22:55 1469

转载 浅谈三大组网神器PK:Tailscale、ZeroTier还是Cloudflare Tunnel?告别中继依赖

Tailscale适合需要强大网络管理和安全性的场景,ZeroTier适用于需要高性能数据传输的场景,而Cloudflare Tunnel则适合需要将本地服务暴露给互联网的用户。考虑到入手难度和灵活性,Tailscale和ZeroTier可能是更好的选择,特别是考虑到它们可以自己搭建国内中继服务器,并且得到了许多路由器的支持。:Tailscale和ZeroTier采用加密通信和身份验证,Cloudflare Tunnel则利用Cloudflare的安全体系。:需要公网IP和开通端口,适合有公网IP的用户。

2026-01-31 14:20:13 688

转载 Linux echo 命令与变量输出全解析:从基础到高级实践

在 Linux 系统中,echo是最基础且高频使用的命令之一,主要功能是在终端输出文本或变量值。而变量则是 Shell 中存储数据的容器,用于简化重复操作、传递参数或动态配置。将echo与变量结合,能极大提升 Shell 脚本的灵活性和自动化能力。本文将从echo命令的基础语法出发,详细讲解 Linux 变量的定义与使用,结合大量实例演示如何通过echo输出变量,并深入探讨高级技巧、常见实践及最佳实践,帮助读者彻底掌握这一核心技能。变量是 Shell 中存储数据的命名空间,本质是“键值对”(变量名=值。

2026-01-30 17:08:38 116

转载 彻底搞懂size_t与ssize_t:从标准定义到实际应用场景

在C和C++语言中,size_t和ssize_t是用于表示内存大小和有符号尺寸的关键类型。它们的引入源于跨平台开发中对可移植性的需求。不同架构下的指针和整型长度存在差异,直接使用int或long可能导致不可预知的行为。为此,C标准库在<stddef.h>和中定义了这些类型以确保一致性。size_t被定义为无符号整数类型,通常由sizeof操作符返回。它在所有主流平台上都能容纳最大可能的对象尺寸。其对应的有符号版本是ssize_t,常用于系统调用如read()和write()

2026-01-20 17:13:32 153

转载 工业通讯协议(二)- EtherCAT

EtherCAT(Ethernet for Control Automation Technology)是一种在工业自动化中广泛使用的高性能以太网通信协议。它由德国的Beckhoff Automation公司在2003年开发,目的是用于控制系统中实现更快的数据交换。EtherCAT符合IEEE 802.3标准,并且是国际电工委员会(IEC)的公开标准,即IEC 61158和IEC 61784。高性能:EtherCAT协议设计用于高速数据交换,具有很低的通信延迟和高数据吞吐量。

2026-01-09 14:32:50 941

转载 EtherCAT (学习笔记)

运动控制系统处理机械系统中一个或多个坐标上的运动以及运动之间的协调,实现精确的位置控制、速度和加速度控制、转矩和力的控制等。单轴的运动控制系统可分为开环、半闭环和闭环伺服系统。多轴运动控制系统可以分成点位控制、连续轨迹控制和同步控制。EtherCAT从站设备在报文经过其节点时读取相应的数据报文,同样输入数据也是在报文经过时插入到报文中。整个过程报文只有几纳秒的时间延迟,实时性获得极大提高EtherCAT作为一种工业以太网总线,充分利用了以太网的全双工特性。

2026-01-09 14:31:39 540

转载 EtherCAT 的寻址方法: 顺序寻址(Positional Addressing)、节点寻址(Node Addressing)

EtherCAT 的寻址方法: 顺序寻址(Positional Addressing)、节点寻址(Node Addressing)_ecat的位置寻址原理-CSDN博客

2026-01-09 14:28:20 182

转载 在for循环中为STL容器插入与删除元素的注意事项

push_back() 存在类似的问题,那就是如果存储空间不够了,STL是完全有可能将数组拷贝到另外一个更大的空间的,这种情况下,原先的迭代器将毫无意义!这和集合的红黑树存储结构有关,有的情况下恰好不会报错,但如果A={1,2,3,4,5}A=\{1,2,3,4,5\}A={1,2,3,4,5},则会报错。前三次循环依次删除了1,3,51,3,51,3,5三个元素,因此可以推测出,该用法forforfor循环实际上记录了当前迭代元素的物理位置,当前的第0,1,20, 1, 20,1,2位置;

2026-01-06 15:34:11 57

空空如也

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

TA关注的人

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