自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++11 学习笔记(入门版)

掌握C++11核心特性需以「痛点→药方→机制」三段式理解。C++98因无右值引用、移动语义、智能指针与lambda等,导致资源管理低效、内存泄漏频发、并发无标准支持。C++11通过右值引用实现移动语义(T&&),使临时对象资源可“偷取”,避免深拷贝;引入unique_ptr、shared_ptr等智能指针,自动管理生命周期;lambda以仿函数形式实现闭包,配合auto与decltype简化类型推导;nullptr与enum class解决旧有类型歧义问题;并建立原子操作与内存模型,奠定并发安全基础。真正掌

2026-10-26 11:23:21 304

原创 gRPC 学习笔记(从零基础到实战)

gRPC 是 Google 开源的高性能 RPC 框架,基于 Protobuf 序列化和 HTTP/2 传输,支持跨语言、跨进程调用。其核心由 Service(服务)、Server(服务器)、Channel(通道)、Stub(客户端代理)和 ClientContext(上下文)构成,实现类似本地调用的远程通信。通过 .proto 文件定义接口与数据结构,支持四种通信模式:一元、服务端流、客户端流及双向流,适用于微服务架构中的高效交互。

2026-09-30 17:36:41 194

原创 《GDBus 进阶手册:断线重连、GVariant、ObjectManager》(三部曲 03 · 疑难)

GDBus 通过事件循环机制实现进程间通信,核心为 GSource、GMainContext 与 GMainLoop 三层结构。服务端开发按六步走:定义接口(XML)、解析接口、编写回调表、获取连接、注册对象路径、占名并运行主循环。关键在于连接创建时绑定线程的 context,所有回调均在该线程串行执行,需避免阻塞。消息收发由底层 fd/source 管理,确保方法调用与信号广播高效可靠。

2026-09-18 15:45:01 288

原创 《GDBus C 语言开发实战:从一份 XML 到一个能跑的服务》(三部曲 02 · 实战)

GDBus(C语言)开发需建立三大认知:通信经dbus-daemon中转,Skeleton(服务端骨架)与Proxy(客户端代理)为高层接口,区分GObject信号与D-Bus信号。流程为:①定义XML接口契约;②用gdbus-codegen生成代码;③服务端实现Skeleton回调,注册方法/信号/属性;④客户端通过Proxy调用方法或监听信号。关键点:接口统一源于XML,生成代码勿手动修改;方法调用与信号广播由GDBus库自动处理,开发者只需关注业务逻辑。

2026-09-10 11:09:03 116

原创 OpenSpec:AI辅助开发的规约驱动框架

文章摘要:OpenSpec是一种规约驱动的AI辅助变更管理框架,核心思想是"先写规约,再写代码",通过标准化文档和工作流实现AI开发全链路可控。它属于Harness Engineering范式,通过权限、流程、规约和规则四重约束确保模型行为可控。标准文件结构包括提案、设计、规格和任务清单等文档,配合/opsx系列命令管理变更全生命周期。相比纯指令(Prompt)和上下文(Context)范式,Harness范式能有效解决模型行为不可控的痛点,提供三大核心价值:产出可控、可追溯性强、对齐效率高,代表AI辅助开

2026-08-20 18:17:41 308

原创 Protobuf基础知识

本文系统介绍了Google Protocol Buffers(Protobuf)的核心概念和使用方法。主要内容包括:Protobuf的跨平台数据序列化特性,通过.proto文件定义数据结构,使用protoc编译器生成目标语言代码的基本流程。详细讲解了.proto文件的语法规则、常用数据类型、复杂结构定义方法,以及如何在C++中序列化和反序列化数据。文章还提供了从环境安装(Ubuntu/Debian/CentOS)、编写.proto文件、生成代码到实际应用开发的完整示例,特别适合Linux环境下进行C++开发

2026-07-24 10:30:47 254

原创 Vim 文件对比与合并:快速查找并替换差异

Vimdiff 文件对比与合并指南 摘要: Vimdiff 是 Vim 内置的文件对比工具,可用于比较并合并两个文件。启动方式为 vimdiff file1 file2 或 vim -d file1 file2。主要操作包括:使用 ]c/[c 跳转差异点,:diffget 获取另一侧内容合并到当前文件,:diffput 将当前内容推送到另一侧。推荐流程:跳转到差异点 → 在被修改侧执行 :diffget → 重复处理所有差异 → :wqa 保存退出。注意缓冲区编号(1/2)不固定对应左右窗口,建议使用无参版

2026-07-23 15:53:54 374

原创 自动命令(autocmd):让 Vim 根据事件自动执行命令

在 Vim 里,自动命令(autocmd,autocommand)可以在某些事件发生时,自动执行指定的 Vim 命令。

2026-07-23 14:04:55 376

原创 《D-Bus 进程间通信原理详解:总线、寻址与消息模型》(三部曲 01 · 理论)

本文详解 D-Bus 进程间通信的核心原理,涵盖总线类型(Session/System Bus)、连接机制、命名体系(Well-known/Unique Name)、对象路径、接口与方法调用模型,以及信号广播机制。重点解析了 D-Bus 的核心概念与设计思想,适用于桌面应用与系统服务间的控制命令、状态同步与事件通知,不适用于高频或大数据传输场景。为后续 GDBus 实战开发奠定理论基础。

2026-07-21 16:23:39 247

原创 高效嵌入式开发的Vim终极配置方案

Vim 配置摘要 (149字) 本文提供了一份专为嵌入式Linux/C++开发优化的Vim配置方案,具有以下特点: 基础优化:支持UTF-8编码、自动读写、禁用备份文件 编辑增强:语法高亮、智能缩进(4空格)、代码折叠、括号匹配 专业支持:针对C/C++/CMake/JSON/Makefile的特定配置 高效操作:增量搜索、Leader键快捷操作、终端适配 开发友好:行号显示、状态栏、代码导航(tags) 环境适配:SSH远程、串口终端、纯终端环境兼容 配置强调稳定性与轻量化,适合嵌入式Linux开发场景,

2026-07-17 15:46:43 301

原创 Vim离线安装NERDTree文件树插件指南

本文介绍了如何在Vim/Neovim中离线安装和配置NERDTree文件树插件。主要内容包括: 安装步骤: 下载源码并解压 创建插件目录并拷贝文件 生成帮助文档索引 详细配置: 设置界面参数(窗口大小、位置、显示行号等) 配置文件过滤规则(忽略版本控制文件、编译文件等) 设置快捷键(Leader键+ n/f 切换/查找文件树) 使用说明: 常用操作命令 文件树面板快捷键 安装验证方法 常见问题解决方案 该配置实现了简洁高效的文件树管理功能,适合在内网开发环境中使用。

2026-07-17 14:50:37 266

原创 Vim .vimrc 配置指南:从基础设置到 C/C++ 开发环境

本文介绍了Vim进阶配置技巧,重点包括.vimrc持久化配置和Leader键映射。主要内容:.vimrc配置文件的作用和基础配置示例(行号、主题、缩进等)按键映射的核心概念,强调使用非递归映射(*noremap)避免冲突Leader键的配置和使用方法,推荐将空格设为Leader前缀工程实用示例:保存/退出、宏等常见操作的Leader映射ctags配置:通过生成tags文件实现代码跳转(Ctrl-])和返回(Ctrl-t)功能这些技巧能显著提升Vim使用效率,将编辑器从基础使用升级为高效开发工具

2026-07-06 18:16:52 303

原创 Vim基础操作

Vim 高效开发速查手册 (Linux 开发者版)本手册为 Linux 开发者提供 Vim 核心操作指南,分为六大模块:基础与模式:介绍 Vim 哲学和四大模式(Normal/Insert/Visual/Command-line)代码导航:包含文件跳转(gg/G)、搜索(/*/#)、函数跳转(gd/Ctrl+])等高频操作代码编辑:涵盖文本对象(ci"/diw)、可视模式、批量替换(:%s)等生产力技巧多文件管理:详解 Buffer/Window/Tab 的区别及分屏操作(Ctrl+w v/s)

2026-06-25 20:07:11 189

原创 C++智能指针介绍

C++智能指针总结:unique_ptr - 独占所有权指针,不可拷贝但支持移动语义,确保资源唯一管理。通过make_unique创建,可用std::move转移所有权。shared_ptr - 共享所有权指针,通过引用计数管理资源。支持拷贝,计数归零时自动释放资源。推荐用make_shared创建,函数传参时值传递会增加计数。关键区别:unique_ptr轻量高效,适合单一所有权场景shared_ptr允许共享,但需注意循环引用问题两者都支持->和*操作,能获取原始指针(get(

2025-02-13 20:10:55 450

原创 string 容器成员函数

本文总结了C++字符串(std::string)的核心用法与常见陷阱。首先介绍了基础构造和常用接口,包括初始化、长度获取和c_str()的使用注意事项。重点分析了字符访问(operator[]与at)的安全性与性能取舍,以及查找功能(find/rfind)的正确使用方式,强调npos的处理要点。详细讲解了字符串修改操作(assign/append/replace)和增删操作(insert/erase)的各类重载形式及其使用场景,并指出迭代器失效等潜在问题。

2025-01-22 17:02:18 245

原创 掌握libcurl:从GET请求到HTTPS验证全解析

本文介绍了使用libcurl库进行网络请求的基本步骤,包括初始化libcurl、创建CURL对象、设置请求URL、处理响应数据等关键操作。主要内容: 全局初始化和清理:使用curl_global_init()和curl_global_cleanup() 创建CURL对象:通过curl_easy_init()创建,完成后用curl_easy_cleanup()释放 设置请求选项:包括URL、回调函数、超时设置、重定向和HTTPS验证等 响应数据处理:通过设置写回调函数处理服务器返回的数据 执行请求:使用cur

2025-01-22 16:13:32 291

原创 vector 容器成员函数学习笔记

本文系统介绍了C++中vector容器的核心知识点与使用技巧。主要内容包括:1)vector的构造与赋值方法;2)大小容量管理(size/capacity/resize/reserve);3)增删改查操作(push_back/insert/erase等);4)元素访问方式及边界安全;5)迭代器失效规则与内存管理机制。重点强调了vector作为动态连续容器的特性,详细分析了可能导致迭代器失效的操作场景,并提供了避免常见陷阱的工程实践建议,如预分配内存、批量操作等优化技巧。文章最后总结了Linux开发中的典型使

2025-01-22 15:27:43 220

原创 用指针函数封装strcpy

本文详细介绍了自定义字符串拷贝函数 MyStrcpy 的 C 语言实现,包括其函数原型、逐字符拷贝的逻辑、返回值设计以及安全性注意事项。通过对比标准库 strcpy,分析了二者在函数名、参数、返回值、溢出保护和标准符合性上的异同。文章指出 MyStrcpy 适用于学习字符串拷贝底层原理,但在生产环境中应优先使用标准库函数或更安全的替代方案,并提供了使用 fgets 替换不安全 gets 函数的建议。

2023-07-31 21:41:51 170 1

原创 C语言指针介绍

c语言指针随堂笔记

2023-07-31 21:22:29 135 1

原创 生成随机数

time(NULL)计算从1979年到现在的秒数。srand根据种子生成随机数。

2023-07-31 20:29:17 112 1

原创 申请堆区空间

malloc申请堆区空间

2023-07-31 20:22:57 215 1

原创 求任意个数的平均数

【代码】求任意个数的平均数。

2023-07-22 10:56:28 323 1

空空如也

空空如也

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

TA关注的人

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