自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

muyuyuzhong的专栏

专注于多媒体开发和架构设计

  • 博客(157)
  • 资源 (15)
  • 收藏
  • 关注

原创 校招C++20并发系列07-保障线程公平性:Ticket Spinlock手写与吞吐权衡

虽然票据锁引入了额外的原子操作和严格的排队逻辑,可能在极端高竞争下略微降低绝对吞吐量,但它成功消除了线程饥饿现象。对于对响应时间一致性要求较高的应用场景(如实时交易系统或交互式服务),这种公平性保障至关重要。易错点提示:在实现票据锁时,务必注意内存序的选择。lock中的比较应使用acquire语义以确保看到最新的serving值,而unlock应使用release语义以正确发布临界区内的数据修改。

2026-05-06 13:35:36 27

原创 校招C++20并发系列08-安全生产多线程队列:并发容器替代STL实战

当然,这并不意味着在所有应用中都能获得 50% 的提升,因为大多数业务逻辑受限于 I/O 或其他瓶颈,不会在紧密循环中进行海量元素的推送。本期教程将对比“基于互斥锁保护的 STL 容器”与“原生支持并发的 TBB 容器”,深入探讨为何专用的并发容器能带来巨大的性能提升。虽然逻辑正确,但在高并发场景下,大量线程竞争同一把锁会导致严重的上下文切换和等待时间,这就是所谓的“锁竞争瓶颈”。这种写法不仅代码更简洁,消除了显式的锁管理负担,更重要的是,它利用了底层优化过的并发原语,避免了粗粒度锁带来的性能损耗。

2026-05-06 13:32:48 84

原创 校招C++20并发系列09-识别阻塞风险:死锁排查与线程推进保障实战

在编写高并发 C++ 程序时,识别潜在的阻塞点是优化性能的第一步。避免持锁休眠:永远不要在持有互斥锁时执行可能阻塞的操作。优先使用原子操作:对于简单的计数器、标志位等场景,配合 CAS 是实现无锁并发的首选方案。理解缓存一致性:虽然无锁避免了线程阻塞,但频繁的 CAS 重试可能导致缓存行在不同核心间频繁迁移(Cache Line Bouncing),这在极高竞争场景下仍需注意。权衡复杂度:无锁编程增加了代码复杂度,仅在性能敏感且竞争激烈的场景下推荐使用。

2026-05-06 13:30:00 70

原创 校招C++20并发系列11-榨干单核算力:SIMD向量化入门与自动优化实战

向量化是单线程性能优化的利器。编译器自动向量化在处理简单、规则的数据访问模式时表现优异,尤其是配合使用时,能充分挖掘硬件潜力。然而,当循环结构复杂(如存在分支、不规则内存访问)时,编译器可能无法自动向量化。在这种情况下,开发者需要借助 SIMD 内建函数(Intrinsics)手动编写优化代码,这也是后续进阶课程的重点。易错点提示自动向量化并非万能,复杂的循环依赖会导致编译器放弃优化。生成的代码仅在相同架构的机器上高效且兼容,跨平台分发时需慎用。务必使用perf。

2026-05-06 13:26:57 88

原创 校招C++20并发系列12-突破编译器限制:手写AVX2 Intrinsics向量化实战

然而,面对复杂的算法或特定的硬件指令集时,编译器往往无法生成最优代码。本节将通过一个具体的点积运算案例,深入探讨如何使用 Intel AVX2 内在函数(Intrinsics)手动编写 SIMD 代码,以突破编译器的性能瓶颈。此外,内存对齐是 AVX 编程的前提,未对齐的访问可能导致性能下降甚至运行时异常。时,务必注意其返回的是“部分归约”结果,而非最终标量和。是一条单指令完成多步操作的专用指令,极大地减少了指令数量和执行周期。为了验证手动优化的效果,我们使用相同的编译标志进行构建,并通过。

2026-05-06 13:23:53 134

原创 校招C++20并发系列13-权衡精度与性能:-ffast-math向量化取舍指南

GCC 和 Clang 等主流编译器提供了一系列针对浮点运算的优化标志。其中,是一个关键选项,它在任何默认的优化级别(如-O1-O2-O3)下都不会自动启用。参数有效性:假设输入参数和结果都是有效的数字,忽略 NaN(非数字)或 Inf(无穷大)的特殊情况。标准合规性豁免:假设程序不依赖 IEEE 或 ANSI 标准的精确实现细节。这意味着编译器可以打破浮点运算的结合律和分配律。例如,它可以将重新排列为,或者将乘法与加法合并。

2026-05-06 13:20:52 153

原创 校招C++20并发系列14-消除调度抖动:线程亲和性手动绑定CPU核心实战

当多个线程频繁访问同一块内存区域时,如果它们被调度到不同的核心,会导致严重的缓存一致性开销(Cache Coherence Overhead),即“调度抖动”。通过线程亲和性,我们可以强制让处理相同数据的线程运行在同一核心(或同一物理核心的超线程对)上,从而避免跨核心的缓存同步开销。相反,如果将这两个线程分别绑定到同一个物理核心的两个逻辑线程上,有时反而能利用空闲的执行端口,提高吞吐率。如果两个竞争激烈的线程被分配给同一个物理核心的两个逻辑线程,它们会共享该核心的执行单元和缓存资源,可能导致资源争用。

2026-05-06 13:17:41 159

原创 校招C++20并发系列15-规避重排序Bug:x86内存序与Fence指令实战

虽然 x86 不允许“写-读”重排序(即 Store-Load 重排序受限),但它允许“读-写”重排序(Load-Store Reordering),即 Load 可以越过之前的 Store。随着频率提升和多核技术的发展,严格的顺序执行成为性能瓶颈。本文将深入探讨 x86 处理器的内存模型,解析为何“先写后读”在硬件底层可能变成“先读后写”,并通过实际的 Litmus Test(极限测试)和。在早期的 Pentium 4 或 P6 系列处理器中,执行的是所谓的**强有序(Strongly Ordered)

2026-05-06 13:14:31 158

原创 校招C++20并发系列16-3步定位数据竞争:ThreadSanitizer编译运行实战

两个或多个线程并发访问同一内存位置,且至少有一个访问是写操作,同时这些访问没有通过同步机制(如锁、原子操作)进行保护。需要注意的是,如果多个线程仅对同一变量进行读取操作,通常不会构成数据竞争。然而,一旦涉及修改,若缺乏适当的同步手段,多个线程可能会互相覆盖写入,导致最终结果不可预测。这种 Bug 往往不会导致程序立即崩溃,而是在逻辑校验阶段(如assert)失败,这使得排查难度极大。

2026-05-06 13:11:42 236

原创 校招C++20并发系列10-理解线程安全等级:Lock-Free与Wait-Free实战辨析

在任何时刻,至少有一个线程能成功完成其有效工作。这意味着,虽然单个线程可能会因为竞争失败而反复重试,甚至陷入死循环空转,但整个系统不会停滞。只要有一个线程在推进,系统的整体进度就在向前发展。这是无锁算法的最低保障。无等待是比无锁更严格的约束。每个线程都能在有限步骤内完成其操作,无论其他线程如何调度或干扰。在无等待算法中,没有任何一个线程会被迫无限期地等待或重试。每个线程都能独立、确定性地取得进展。这通常意味着更高的实时性保证,但也往往伴随着更复杂的实现难度。

2026-05-06 13:08:41 247

原创 ROS2 C++开发系列19-枚举定义机器人状态机|随机数生成仿真测试数据流

在传统的 C 语言风格中,我们常使用宏或普通整数常量来表示状态,但这容易导致命名冲突且缺乏类型检查。C++ 引入了enum class(强类型枚举),它不仅能提供命名常量,还能确保类型安全,防止不同枚举类型的值被意外比较。掌握枚举类和随机数生成是提升 C++ 机器人开发质量的关键一步。枚举类通过强类型约束消除了魔法数字带来的隐患,使状态机逻辑一目了然;而高质量的随机数生成器则为仿真环境注入了真实感,帮助我们在部署前发现潜在问题。

2026-05-03 00:19:07 211

原创 ROS2 C++开发系列18-STL容器实战:deque缓存激光雷达数据|priority_queue调度任务

默认情况下,是大顶堆(最大值优先)。为了实现自定义优先级(如整数越小优先级越高,或字符串特定含义),通常需要定义结构体并重载运算符。#include <functional> // 用于 greater 等函数对象// 定义任务结构体// 优先级数值,假设数值越小优先级越高(或根据需求定义)// 重载 < 运算符以定义优先级顺序// 注意:priority_queue 默认是最大堆,即 a < b 为真时 b 排在前面// 如果我们希望 priority 小的排前面,需要反转比较逻辑。

2026-05-03 00:16:10 506

原创 ROS2 C++开发系列17-多线程驱动多传感器|chrono高精度计时实现机器人同步控制

首先,我们需要定义模拟传感器和控制任务的函数。这些函数接收参数(如传感器名称和执行时长),并演示基本的休眠逻辑。// 传感器任务函数:模拟特定传感器的数据采集过程// 1. 打印任务开始信息// 2. 模拟耗时操作:让当前线程休眠指定秒数// 3. 打印任务完成信息// 控制器任务函数:模拟运动控制逻辑用于挂起当前线程,模拟 I/O 等待或计算耗时。使用或值传递均可,此处为了简化示例采用值传递。通过结合多线程与高精度计时,我们可以构建出既高效又可观测的机器人软件架构。

2026-05-03 00:13:13 367

原创 ROS2 C++开发系列16-智能指针管理传感器句柄|告别ROS2节点内存泄漏与野指针

掌握智能指针的使用是编写健壮 ROS2 C++ 代码的关键。它不仅能消除手动delete带来的隐患,还能通过明确的所有权语义提高代码的可读性和可维护性。在实际开发中,请遵循以下原则:默认使用unique_ptr,仅在必要时使用shared_ptr,并利用weak_ptr解决循环依赖问题。

2026-05-03 00:10:35 321

原创 ROS2 C++开发系列15-模板实现通用算法|宏定义ROS2调试开关|一次编码适配多平台

宏是 C++ 预处理器指令,允许在编译前进行文本替换。虽然现代 C++ 更推崇使用const变量、内联函数或模板,但在某些场景下(如条件编译或快速原型开发),宏依然有其用武之地。理解宏有助于阅读遗留代码或处理特定配置需求。通过本教程,我们掌握了 C++ 中宏与模板的基本用法。宏适用于简单的文本替换和常量定义,但需注意其潜在风险;模板则提供了强大的泛型编程能力,无论是函数还是类,都能通过模板适应多种数据类型,从而显著提升代码的复用性和灵活性。

2026-05-03 00:07:59 403

原创 ROS2 C++开发系列14-Lambda表达式处理传感器数据流|文件IO保存机器人实验日志

通过本教程,我们掌握了 C++ 中两个提升开发效率的关键技术。Lambda 表达式让数据操作变得简洁直观,特别是结合 STL 算法如sort和for_each时,能够大幅减少样板代码。同时,掌握fstream的基本用法是构建可靠机器人软件的基础,它确保了实验数据的安全留存。将这些技巧结合起来,你可以轻松构建出既高效又具备数据持久化能力的机器人节点。

2026-05-03 00:05:11 380

原创 ROS2 C++开发系列13-运算符重载让ROS2消息处理更自然

C++ 提供了两种强大的机制来优化自定义数据类型的处理:结构体(Struct)用于逻辑分组,运算符重载(Operator Overloading)用于行为扩展。在机器人项目中,我们常需要处理包含多个属性的对象,例如机器人的配置参数、传感器读数或控制指令。使用结构体可以将这些相关字段捆绑在一起,使代码结构更加清晰,避免使用分散的全局变量或复杂的数组索引。当你对自定义类型执行操作时,其行为应符合数学或物理上的直觉,从而降低其他开发者的理解成本。该类表示以米为单位的距离,重载后的加法运算会自动返回一个新的。

2026-05-03 00:02:19 361

原创 ROS2 C++开发系列12-用多态与虚函数构建可扩展的ROS2机器人行为模块

封装:通过 Getter/Setter 保护数据完整性。静态方法:用于无状态的工具函数,提升代码组织效率。虚函数与多态:实现运行时多态,支持模块化扩展,是构建灵活机器人架构的基础。this 指针:解决命名冲突,增强代码可读性。指针与引用:优化内存使用,提升大数据量处理性能。纯虚函数:定义标准接口,强制派生类实现特定行为。掌握这些概念,你将能够编写出更健壮、更易维护且高性能的 ROS2 C++ 节点。

2026-05-02 23:59:33 289

原创 ROS2 C++开发系列11-VS Code一键生成Doxygen注释|让ROS2节点文档自动跟上代码迭代

通过安装 Visual Studio Code (VS Code) 的特定扩展,我们可以实现“一键生成”注释模板的功能,从而将精力集中在内容本身而非格式排版上。:Doxygen 注释的核心在于结构化信息的提取,而非单纯的文本堆砌。:务必确认安装的是 Christoph Schlosser 开发的版本,其他同名或类似功能的插件可能在快捷键绑定或标签解析上存在差异。在该文件中,我们需要定义一个基础的机器人控制器类,包含私有成员变量和公有成员函数,以便展示不同可见性下的注释写法。Doxygen 使用以。

2026-05-02 23:54:25 327

原创 ROS2 C++开发系列10-写成模块化+可维护代码的ROS2项目代码,C++面向对象编程入门

在机器人系统开发中,代码的可维护性、模块化以及清晰的架构设计至关重要。C++ 作为 ROS2 的核心语言之一,其强大的面向对象编程(OOP)特性能够很好地支持这些需求。本教程将从基础类定义出发,深入探讨头文件组织、访问控制、静态成员、构造函数与析构函数,以及函数重载等核心概念,帮助你构建结构严谨的 C++ 机器人应用代码。

2026-05-02 23:51:42 318

原创 ROS2 C++开发系列09-写出更高效、可复用的机器人控制代码之函数与指针实战

随着机器人功能复杂度的增加,将所有逻辑写在main函数中会导致代码难以阅读和维护。通过定义独立的函数,我们可以实现代码的复用和解耦。例如,计算两点间的欧几里得距离是机器人路径规划中的常见需求。

2026-05-02 23:48:55 308

原创 ROS2 C++开发系列08-传感器数据缓存与指令解析方式之数组、向量与字符串实战

在机器人 C++ 开发中,高效地管理传感器读数、电机指令以及文本配置是基础且核心的技能。本教程将深入探讨三种最常用的数据结构:固定大小的、动态灵活的。我们将通过具体的代码示例,展示如何声明、初始化、访问和修改这些数据,并介绍相关的字符处理函数。

2026-05-02 23:46:09 374

原创 ROS2 C++开发系列07-高效构建机器人决策逻辑,运算符与控制流实战

掌握运算符和控制流是编写高质量 C++ 机器人代码的前提。算术运算:熟练掌握加减乘除及取模运算,注意整数除法截断问题,合理使用类型转换。逻辑决策:利用&&||!组合条件,构建清晰的if-else分支,确保覆盖所有可能的状态组合。循环选择for:用于已知次数的遍历(如数组扫描)。while:用于依赖状态变化的动态循环(如等待传感器就绪)。do-while:用于必须至少执行一次的初始化或采集任务。简洁表达:简单赋值优先使用三元运算符,提升代码可读性。流程控制:谨慎使用break和continue。

2026-05-02 23:43:15 406

原创 ROS2 C++开发系列06:变量、数据类型与IO实战

变量是程序中存储数据的容器。在机器人应用中,我们需要处理整数计数、浮点传感器读数、字符指令以及布尔状态标志。正确声明和使用这些变量,能够确保程序逻辑清晰地映射物理世界的状态。

2026-05-02 00:07:47 402

原创 ROS2 C++开发系列05:机器人启动如何传递命令行参数实战

函数不仅是 C++ 程序的入口点,更是配置系统启动行为的关键枢纽。通过解析命令行参数,开发者可以在不重新编译代码的情况下,灵活切换机器人的运行模式、加载不同的配置文件或指定测试场景。这种设计允许机器人系统在启动时接收动态指令,例如指定传感器端口、调整控制频率或选择仿真环境,极大地提升了系统的灵活性。这一机制使得用户可以通过简单的命令行输入,向机器人节点传递复杂的配置信息。是一个以空指针结尾的字符串数组,但在实际使用中,依赖。的工作机制,是构建健壮机器人节点的基础。,并引入必要的头文件。在机器人软件工程中,

2026-05-01 23:54:13 196

原创 B站最强的GPT 5.5与Opus 4.7对比测试,重点评估GPT-5.5与Opus 4.7在性能、价格和响应速度等方面的差异

其特色在于包含一个“验证循环”模块,展示了“重证据轻感觉”、“运行渲染”、“读取差异”等逻辑步骤,体现了模型对自身推理过程的可视化表达。然而,其画面长宽比失调,显得扁平,且太阳周围出现了一个异常的方框,视觉美感不足。虽然音效略显怪异,但整体可玩性高,包含完整的生命值条和得分系统,几乎没有明显的 Bug。虽然在某些静态视觉生成上表现优异,但在动态逻辑和实时交互构建上略显吃力,往往需要更多的人工干预和迭代,从而推高了隐性成本。生成的版本在控制上显得笨拙,鼠标吸附难以控制,存在明显的操作延迟感。

2026-05-01 23:51:08 354

原创 ROS2 C++开发系列04:如何有效输出机器人状态

对于需要实时反馈的机器人日志系统,确保消息及时可见是非常必要的。提供了强大的输入输出功能,是调试和显示数据的核心工具。本教程将演示如何在 Visual Studio Code 中编写 C++ 程序,通过控制台输出机器人的状态、坐标及初始化信息。在编写过程中,需注意语法的完整性。起到连接作用,它将左侧的输出流与右侧的字符串或变量串联起来。这种链式调用允许在同一行代码中混合输出文本标签和变量值,极大地提高了代码的可读性。在机器人软件开发中,实时监控机器人的运行状态至关重要。确保了输出的即时性和格式整洁。

2026-05-01 23:32:29 230

原创 ROS2 C++开发系列03-如何编写更精简的ROS2 C++代码

保存文件后,在编辑器中右键点击运行或通过命令行编译执行。在 C++ 开发中,合理使用命名空间是提升代码可读性与编写效率的关键技巧。能有效减少代码冗余,但需注意在大型项目中可能引发的命名冲突风险,建议在小型文件或局部作用域中谨慎使用。这种写法显著减少了视觉噪音,使核心逻辑更加突出,特别适合初学者或小型脚本文件。虽然这种方式明确指出了来源,但在频繁调用标准库函数时,会导致代码显得冗长且杂乱。将这两个变量的值打印到终端,并返回 0 表示正常退出。标准命名空间来简化代码结构,避免重复书写前缀。

2026-05-01 23:25:38 144

原创 ROS2 C++开发系列02-掌握机器人高频矩阵运算/坐标变换必备的Eigen库

Eigen 是一个高性能的 C++ 模板库,专为线性代数设计,广泛应用于 ROS 及机器人领域。由于 Eigen 是纯头文件库(Header-only),安装后无需链接额外的二进制库文件,只需在编译时指定头文件路径即可。:Eigen 采用模板元编程技术,编译期确定矩阵大小,因此运行效率极高。方法,可以轻松获取行向量或列向量的转置,这在坐标系转换中极为常见。,这是 Eigen 中最常用的模块,涵盖了向量、矩阵及基本运算。的输出,说明环境配置正确,Eigen 库已正常工作。类型,若需单精度可使用。

2026-05-01 23:23:29 182

原创 ROS2 C++开发系列01:在ROS2上编写第一个C++ hello word

📺。

2026-05-01 23:16:31 480

原创 初学者必学的Cursor AI编程速成课,覆盖完整项目的开发,无需经验,边学边练,快速提升编码效率。

Cursor 的强大之处在于其灵活性和深度集成。日常编码:利用 Tab 补全和行内编辑处理细节,保持代码整洁。快速原型:通过自然语言描述快速生成落地页或工具,专注于产品逻辑。大型项目:借助上下文文件和规则系统,确保 AI 生成的代码符合架构规范和技术标准。无论使用哪种方式,核心原则始终是**“人在回路”**(Human-in-the-loop)。AI 是强大的副驾驶,但驾驶员必须始终清楚代码的含义和走向。定期审查 AI 生成的代码,理解其背后的逻辑,才能避免技术债务的积累,真正掌握 AI 编程的艺术。

2026-05-01 00:03:29 374

原创 Jazzy ROS2入门指南系列05-配置VsCode实现ROS2项目开发

在 ROS 2 开发中,正确的环境配置能显著减少后续调试设置错误或缺失工具的时间成本。遵循“慢即是稳”的原则,通过系统化的安装与配置步骤,可以为长期的机器人软件开发奠定坚实基础。本教程将详细拆解如何在 Ubuntu 系统上安装 VS Code,并配置适用于 ROS 2 开发的扩展插件与编辑器设置。至此,一个功能完备、配置规范的 ROS 2 开发环境已搭建完成,可以着手进行具体的机器人程序开发了。在 VS Code 中,可以将默认缩进调整为两个空格,这符合许多现代开源项目的规范。目录,再启动编辑器。

2026-04-30 19:53:11 414

原创 Jazzy ROS2入门指南系列04-如何在ROS2中创建工作空间,怎么编译ROS2项目

在 ROS 2 开发体系中,工作空间(Workspace)是组织机器人软件的核心目录结构。它集中管理项目所需的所有源代码、数据文件及配置脚本,确保开发环境的整洁与可维护性。理解并正确创建工作空间,是进行任何 ROS 2 项目开发的第一步。是 ROS 2 默认的构建工具,负责将分散的代码模块整合成可执行的机器人软件。工作空间的建立始于标准的 Linux 目录操作。构建完成后,为了让系统能够识别新安装的包,必须加载。如果路径错误,终端将无法找到自定义的功能包。的子目录,用于存放所有的功能包源码。

2026-04-30 19:49:16 279

原创 Jazzy ROS2入门指南系列03-理解DDS与ROS_DOMAIN_ID变量

在实际操作中,修改域 ID 主要依赖环境变量。设置域 IDexport ROS_DOMAIN_ID=<数字>将<数字>替换为你选择的 ID(如 42)。注意,此设置仅对当前终端窗口有效。若需永久生效,需将其添加到~/.bashrc文件中。查看当前域 ID如果未设置过,输出通常为空,代表使用默认值 0。重要原则若希望同一 Wi-Fi 网络下的多个机器人相互通信,必须确保它们的完全相同。若希望它们互不干扰,则必须分配不同的 ID。

2026-04-30 19:35:18 298

原创 Jazzy ROS2入门指南系列02-如何安装 ROS2 Jazzy

ROS 2 Jazzy Jalisco 是 ROS 2 的最新长期支持(LTS)版本之一,专为 Ubuntu 系统优化。我们将不仅安装软件,还会配置必要的语言环境、添加官方软件源、设置环境变量,并运行经典的“发布者-订阅者”示例来验证安装的正确性。在安装 ROS 2 之前,必须确保系统的区域设置(Locale)正确。为了支持机器人仿真,我们还需要安装 Gazebo Harmonic(ROS 2 Jazzy 对应的仿真版本)以及 Python 科学计算库。接下来,添加 ROS 2 的 GPG 密钥。

2026-04-30 16:21:13 391

原创 Jazzy ROS2入门指南系列01-安装Ubuntu 24.04虚拟机+VirtualBox

在机器人开发领域,选择合适的操作系统是构建稳定开发环境的第一步。尽管 Windows 和 macOS 普及率极高,但 Linux 发行版 Ubuntu 凭借其免费、开源以及对 ROS 2(Robot Operating System)的原生支持,成为了机器人编程的事实标准。对于初学者而言,直接在物理机上安装 Linux 存在风险,因此使用 VirtualBox 创建隔离的虚拟机环境,既能保证宿主机的安全,又能模拟真实的嵌入式开发场景。

2026-04-30 16:20:37 414

原创 油管最好的Cursor AI编程实战教程,30分钟上手AI写代码,从0造轮子,让你快速掌握AI编程

高质量的输出依赖于详细的提示,包括引用代码库中的现有模式、提供日志信息或明确的设计约束。在对话过程中,发送的消息、Agent 的工具调用记录以及读取的文件内容共同构成了“上下文”。此外,支持多模态输入,如截图粘贴,要求 Agent 调整 UI 细节(如图标、颜色),甚至使用语音指令微调设计风格。该框架由三部分构成:指导模型行为的系统提示(指令)、赋予模型能力的工具集(如文件编辑、代码搜索、终端命令),以及底层的大语言模型。通过先制定可验证的步骤,再逐步执行和迭代,能显著降低大规模重构或新功能开发的风险。

2026-04-30 00:47:36 409

原创 Vim入门基础

文章目录1\. 简介2\. 编辑模式2.1 跳转2.2 搜索匹配2.3 替换和删除2.4 复制粘贴2.5 撤销和重复3\. 插入模式3.1 进入插入模式3.2 退出插入模式4\. 命令模式4.1 打开、保存、退出4.2 行号与文件4.3 字符串搜索4.4 Vim中的正则表达式4.5 正文替换4.6 删除正文4.7 恢复文件4.8 选项设置4.9 Shell切换4.10 分屏与标签页分屏标签页4.1...

2018-10-30 11:36:17 800

原创 ubuntu16.04 更新源详细操作步骤

由于linux系统自带的镜像源都在国外,国内用户下载或更新软件会比较慢,有时是非常慢,所以国内某些机构,如大学,研究院所,就在国内建了linux的镜像源服务器供国内linux用户使用,而我们要使用这些源,就要更改自己linux系统的更新源配置文件,接下来详述更新源操作步骤。1 首先我们要找到国内的镜像源路径我选择了清华的镜像源,链接如下:https://mirrors.tuna.tsingh...

2018-10-30 11:30:24 877

原创 Linux网络编程:socket文件传输范例

基于TCP流协议的socket网络文件传输Demo:实现:C语言功能:文件传输(可以传任何格式的文件)/************************************************************************* &gt; File Name: Server.c &gt; Author: SongLee &gt; E-mail: lisong.sh...

2018-10-30 11:24:03 3524 2

C99RationaleV5.10

介绍标准C99,此文档为英文

2007-07-17

设计模式笔记

Gof 23种设计模式的C++源码实现,带讲解

2011-09-25

高可信嵌入式操作系统体系架构研究

高可信嵌入式操作系统体系架构研究,主要讲述可信嵌入式系统的设计,包含系统的分层设计.

2013-03-09

ffmpeg+qt的简单播放器

Windows环境下使用Ffmpeg+Qt Creator开发的简单播放器: (1)声音输出使用PortAudio; (2)视频显示使用SDL2; (3)具备音视频同步; (4)使用QT开发,便于Debug运行查看Ffmpeg各个结构体的变量是如何变化。

2018-03-06

ffplay+qt播放器

在Windows环境使用QT Creator 4.4.1编译ffplay(Ffmpeg3.3.3版本): (1)去掉了参数的解析,目前只支持内部写死文件路径; (2)支持按键事件,比如左右箭头seek,空格键暂停等; (3)在QT编译ffplay的目的是为了方便debug,以方便观察AVPacket、AVFrame等结构体的变量。

2018-03-06

屏幕录制screencapture

使用DXGI录制屏幕,工程基于VS2015,可以正常保存图片

2018-08-21

ffmpeg之AVBuffer测试

FFMPEG关于AVBuffer的测试,具体见http://blog.csdn.net/muyuyuzhong/article/details/79380592

2018-02-26

MultimediaAnalyzer-01

MultimediaAnalyzer项目实战-启动项目 项目的初始工程。

2017-10-15

Linux设备驱动开发详解-第6章字符设备驱动(一)-globalmem

Linux设备驱动开发详解-第6章字符设备驱动(一)-globalmem http://blog.csdn.net/muyuyuzhong/article/details/6902251

2011-10-26

Linux设备驱动开发详解-第6章字符设备驱动(二)-支持2个globalmem

Linux设备驱动开发详解-第6章字符设备驱动(二)-支持2个globalmem

2011-10-26

FPGA开发全攻略(上册)

第一章、为什么工程师要掌握FPGA开发知识? 第二章、FPGA基本知识与发展趋势 第四章、FPGA开发基本流程 第五章、FPGA实战开发技巧 ISE与EDK开发技巧之时序篇

2011-02-28

C++ GUI Programming with Qt 4_CH

C++ GUI Programming with Qt 4_CH

2008-10-25

S3C2440 FAT

里面包含了ZLGGUI 和FAT32以及SD卡的驱动. FAT32能准确地处理长文件名. 里面还有很多要改进的地方.望大家一起交流去改进.

2009-03-28

空空如也

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

TA关注的人

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