- 博客(246)
- 收藏
- 关注
原创 Shell的Here Document语法
目录一个例子语句结构1. cat > ./afile2. <<'EOF'3. 中间的内容4. EOF执行结果关键点Here Document 的作用:单引号的作用:重定向符号 >:总结这条 Shell 语句的作用是将一段内容写入文件 中。下面是逐步的解释:1. 是一个 Shell 命令,通常用于显示文件内容,但这里配合重定向符号 ,它的作用是将输入内容写入指定文件。 表示将内容写入文件 。 如果文件 不存在,会创建它。 如果文件已经存在,会覆盖其内容(清空原内容并写
2026-02-07 00:13:40
412
原创 什么是自动驾驶地图的物理层、逻辑层、拓扑层、经验层?
在自动驾驶地图(高精度地图,HD Map)中,为了更好地描述和组织道路及周围环境的信息,通常会将地图数据分成不同的层级结构。这些层级结构分别表示从底层的物理信息到更高层次的逻辑、拓扑和经验信息。通过这些层次的划分,自动驾驶系统能够以多维度的方式理解和利用高精度地图信息,从而实现定位、路径规划、行为决策和动态适应等功能。
2026-01-07 14:09:02
693
原创 set -o pipefail 的作用
即使管道中的前面某些命令失败(非零退出状态),只要最后一个命令成功(退出状态为 0),整个管道的退出状态也会被认为是成功的。,即使管道中的某些命令失败,脚本仍可能继续执行,这可能导致意外的错误或数据损坏。是编写可靠脚本的重要工具,尤其是在管道中可能包含多个命令时。默认情况下,在 Bash 中,管道命令的退出状态(可以通过以下命令检查当前 shell是否启用了。是一个选项,它用于改变管道命令(,而不是最后一个命令的退出状态。
2026-01-06 17:25:56
526
原创 gettimeofday函数
在Linux系统中,函数是一个常用于获取当前时间的函数,它可以计算出从1970年1月1日00:00(UTC)到当前时间的时间跨度。这个函数的使用非常广泛,尤其是在需要进行时间计算或者性能测试时。
2025-10-24 17:47:39
1165
原创 time.h简介
静态内存是程序运行时提前分配、固定存在、生命周期贯穿整个程序的内存区域,主要用于存储全局变量、静态变量(static修饰)和字符串常量,无需开发者手动申请或释放。POSIX 扩展是指遵循POSIX 标准对操作系统功能进行的扩展,主要用于增强跨 Unix 类系统(如 Linux、macOS、BSD 等)的兼容性和功能丰富性。在 C 语言标准(如 C89、C99)或基础系统调用之外,符合 POSIX 标准的系统会额外提供一些超出基础标准、但符合 POSIX 规范的功能,这些功能就被称为 “POSIX 扩展”。
2025-10-24 16:58:56
1107
原创 std::chrono::duration和std::chrono::time_point
Rep:存储时间间隔的数值类型(如intlong long,通常是整数或浮点数)。Period:时间单位(以秒为基准的比例,由std::ratio定义)。例如::1 秒(单位s:1/1000 秒 = 1 毫秒(单位ms:1 微秒(us:60 秒 = 1 分钟(min为简化使用,标准库定义了常用时间单位的duration类型含义(单位)Period 定义纳秒(ns)微秒(μs)毫秒(ms)seconds秒(s)minutes分钟(min)hours小时(h)Clock:关联的时钟(如。
2025-10-21 20:07:03
1158
原创 c++中的steady_clock、system_clock、high_resolution_clock
它可能是 std::chrono::system_clock 或 std::chrono::steady_clock 的别名,或者是第三种独立的时钟。随着物理时间的流逝,这个时钟的时间点不会减少,并且该时钟的滴答时间间隔是恒定的。类 std::chrono::system_clock 表示系统范围的实时时钟。system_clock 的纪元未指定,但大多数实现使用 Unix 时间(即自协调世界时(UTC)1970 年 1 月 1 日星期四 00:00:00 起的时间,不包括闰秒)。的使用一直存在一些争议。
2025-10-21 16:57:03
1009
原创 ~/.conan/profiles目录的作用
目录Profiles 的作用~/.conan/profiles 的作用Profiles 的结构示例:~/.conan/profiles/gcc_debug配置段说明:如何使用 Profiles1. 列出现有 Profiles2. 创建新的 Profiles3. 编辑 Profiles4. 使用 Profiles5. 查看 Profiles 的内容总结 目录是 Conan 包管理器中用于存储 构建配置文件(Profiles) 的默认位置。它的主要作用是管理和保存不同的构建配置,以便在使用 Conan 构建或安
2025-10-11 13:58:20
974
翻译 6. Programming Interface
其值为 1000。使用驱动 API 的应用程序必须将代码编译到单独的文件中,并在运行时显式加载和执行最合适的文件。
2025-07-13 21:43:03
200
原创 https和http有什么区别
HTTPS 是 HTTP 的安全增强版,通过加密和身份验证解决了 HTTP 的安全漏洞,已成为现代网络通信的主流协议。两者的核心差异在于安全性设计,而应用场景的选择则取决于对数据保护的需求。
2025-07-03 10:38:31
1035
1
原创 TCP三次握手四次挥手的过程
因 TCP 是全双工通信(双方可同时发送数据),服务器收到客户端的 FIN 后,可能还需发送剩余数据,因此需先回复 ACK(确认客户端关闭),待数据发送完成后再发送 FIN(自身关闭),这两步无法合并,故需四次交互。通过这两个过程,TCP 实现了 “可靠连接” 的基础:连接建立时确保双方通信能力正常,连接释放时确保资源不泄露,为后续的可靠数据传输(重传、拥塞控制等)提供了前提。当数据传输完成,需通过四次挥手释放连接(全双工连接需双方分别关闭读写通道)。(避免历史报文干扰)。
2025-07-03 10:25:48
1144
原创 TCP和UDP的区别
TCP(Transmission Control Protocol,传输控制协议)和 UDP(User Datagram Protocol,用户数据报协议)是 TCP/IP 协议栈中两种核心的传输层协议,它们在设计目标、工作原理和适用场景上有显著区别。这种组合兼顾了实时性和关键数据的可靠性。
2025-07-03 10:09:01
1249
原创 std::aligned_storage 和std::aligned_storage_t
目录std::aligned_storage 和 std::aligned_storage_t 详解一、概述二、std::aligned_storage语法三、std::aligned_storage_t语法四、核心功能与应用场景1. 创建对齐内存缓冲区2. 自定义内存池3. 类型擦除(Type Erasure)4. 实现 placement new五、使用示例六、注意事项七、与其他对齐工具的对比总结 和 是 C++ 标准库中用于创建对齐内存缓冲区的工具,主要用于实现自定义内存管理、类型擦除(Type E
2025-06-29 18:13:49
1006
原创 std::align函数
std::align是 C++11 标准库中用于内存对齐的重要函数,主要用于在未对齐的内存块中找到符合特定对齐要求的地址。它在内存分配、自定义内存管理以及高性能编程中有着重要应用。基本功能与原型std::align参数说明alignment:所需的对齐字节数,必须是 2 的幂(如 4、8、16 等)。size:需要分配的对象大小(字节数)。ptr:指向内存块起始地址的指针(引用类型,会被函数修改)。space:内存块的剩余可用空间(引用类型,会被函数修改)。返回值。
2025-06-29 17:52:21
627
原创 实现make_power_of_two函数
函数通过精妙的位运算,在常数时间内将任意正整数转换为大于等于它的最小 2 的幂。这种算法在需要 2 的幂容量的数据结构(如哈希表、内存池)中广泛应用,兼具效率和简洁性,是位运算优化的经典案例。
2025-06-29 16:55:57
1170
原创 如何理解c++的LegacyInputIterator
(旧版输入迭代器)是一种迭代器概念(Iterator Concept),定义了迭代器的最基本能力。它是所有迭代器类型的基础,为更高级的迭代器(如前向迭代器、双向迭代器等)提供了必要的接口规范。LegacyInputIterator 是 C++ 迭代器的基础接口,定义了单向、单次遍历的最小能力集。C++20 引入了基于概念(Concepts)的新迭代器模型,替代了旧的迭代器标签(如。在实际开发中,应根据需求选择合适的迭代器类型,避免因使用低级迭代器导致功能不足或性能问题。输入迭代器的操作(如。
2025-06-28 18:10:49
622
原创 std::pre和std::advance等<iterator>中的常用迭代器操作函数
是两个常用的迭代器操作函数,用于移动迭代器位置。此外,该头文件还提供了许多其他实用的迭代器工具。返回两个迭代器之间的元素个数。对于随机访问迭代器,复杂度为 O (1);否则为 O (n)。这些函数提供了强大而灵活的迭代器操作能力,是 C++ 标准库中处理容器和算法的重要工具。返回容器的开始和结束迭代器,支持普通数组和标准容器。),复杂度为 O (1);否则为 O (n)。创建一个反向迭代器,用于从后向前遍历容器。返回一个迭代器,指向原迭代器的前。),但对于随机访问迭代器(如。在容器的指定位置插入元素。
2025-06-28 17:15:09
863
原创 [[maybe_unused]] 的作用
是 C++17 引入的一个实用属性,用于显式声明 “未使用的代码是有意为之”,避免编译器警告干扰开发。合理使用该属性可提高代码的可读性和可维护性,尤其在库开发、接口实现和模板编程中具有重要价值。,用于告诉编译器某个变量、函数、类等实体可能不会被使用,但这是开发者的有意设计,不需要发出警告。部分 IDE(如 CLion)会识别该属性并调整代码提示(如不再标记为灰色)。当变量、参数或类型未被使用时,编译器通常会发出警告(如 GCC 的。仅在明确需要抑制警告时使用,过度使用可能掩盖真正的逻辑错误。
2025-06-28 16:04:16
880
原创 用pthread_setschedparam设置调度策略
函数用于设置线程的调度策略和优先级。POSIX 标准定义了三种基本调度策略,不同操作系统可能会扩展额外的策略。合理选择调度策略和优先级是实现高性能、高可靠性多线程应用的关键。实时策略应谨慎使用,避免影响系统整体稳定性。不当使用高优先级实时线程可能导致系统响应变慢甚至无响应(如所有 CPU 时间被高优先级线程占用)。)通常需要特权权限(如 root 或 CAP_SYS_NICE 能力)。实时策略的优先级范围为 1~99,数值越高优先级越高;POSIX 标准定义的三种调度策略通过。)可能降低代码的可移植性。
2025-06-26 19:14:27
1136
原创 cudaStreamCreateWithPriority和cudaDeviceGetStreamPriorityRange
在x86 3060显卡、JetsonOrin、DriveOrin上面输出的都是0到5.
2025-06-26 18:37:10
419
原创 浅析std::atomic<T>::compare_exchange_weak和std::atomic<T>::compare_exchange_strong
某些硬件(如 ARM)的 CAS 操作可能因缓存一致性协议(如 MESI)或线程调度导致虚假失败,但硬件实现更高效。:整个操作是原子的(不可中断),用于实现无锁数据结构(如队列、栈)。操作,属于无锁编程的基础操作。:传入期望值,失败时会被更新为原子变量的当前值。:自旋锁、无锁队列等需反复重试的操作。(如实现无锁栈/队列),非循环场景用。:单次检查或无需重试的逻辑。:交换成功时设置的目标值。(成功时的内存序)和。(失败时的内存序)。
2025-06-23 21:51:58
692
原创 leetcode 530. Minimum Absolute Difference in BST和783. Minimum Distance Between BST Nodes
【代码】leetcode 530. Minimum Absolute Difference in BST和783. Minimum Distance Between BST Nodes。
2025-06-18 21:18:22
391
原创 leetcode 98. Validate Binary Search Tree和700. Search in a Binary Search Tree
【代码】leetcode 98. Validate Binary Search Tree和700. Search in a Binary Search Tree。
2025-06-18 20:53:42
294
原创 leetcode 101. Symmetric Tree\100. Same Tree\572. Subtree of Another Tree
【代码】leetcode 101. Symmetric Tree\100. Same Tree\572. Subtree of Another Tree。
2025-06-17 16:34:26
495
原创 c++类型擦除
类型擦除是 C++ 中实现 “运行时泛型” 的强大技术,通过隐藏具体类型信息,提供统一接口,使代码更灵活、更具扩展性。选择合适的实现方式(继承、
2025-06-15 22:37:19
1594
1
原创 std::shared_ptr引起内存泄漏的例子
是 C++ 中用于管理动态内存的智能指针,通过引用计数机制自动释放对象。但在某些场景下,它仍可能导致内存泄漏。可有效避免这些问题。在实际开发中,应尽量避免手动管理原始指针,确保所有动态内存都由智能指针统一管理。,常见于循环引用和错误的指针管理。内存泄漏的核心原因是。
2025-06-14 21:41:59
698
原创 968. Binary Tree Cameras
如果不判断整个树的根节点是否被覆盖,则无法通过下面这种情形。要从下往上处理,所以框架是后序遍历。
2025-06-12 23:59:14
676
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅