- 博客(84)
- 收藏
- 关注
原创 C++ <type_traits> 应用详解
它广泛应用于模板元编程(Template Metaprogramming)、SFINAE(Substitution Failure Is Not An Error)、类型推导优化等场景。SFINAE(Substitution Failure Is Not An Error)是一种。是 C++ 标准库中的一个头文件,提供了。可以写出更高效、更灵活的模板代码!
2025-08-03 19:12:07
328
原创 /usr/bin/ld: 找不到 -lev
是一个高性能的事件循环库,常用于网络编程(如。并正确指定路径后,重新编译即可解决问题。如果编译成功但运行时提示。安装在非标准路径(如。
2025-08-03 12:13:59
188
原创 fatal error: gdal_priv.h: 没有那个文件或目录
GDAL 是一个用于处理地理空间数据的开源库,常用于 GIS(地理信息系统)相关项目。某些项目可能需要特定版本的 GDAL。或者(如果 GDAL 安装在。这个错误表明你的系统缺少。
2025-08-03 11:52:12
174
原创 fatal error: libaio.h: 没有那个文件或目录 #include <libaio.h>
是 Linux 异步 I/O(AIO)的库,某些高性能 I/O 操作(如 Redis、数据库等)可能会依赖它。如果安装后仍然报错,可能是编译器找不到。如果头文件在非标准路径(如。如果存在,重新编译项目即可。这个错误表明你的系统缺少。头文件),导致编译失败。),可以在编译时添加。
2025-08-03 11:45:37
262
原创 C++ 设计模式综合实例
下面是一个综合使用工厂模式、适配器、装饰器、代理和外观模式的完整C++示例。适配器模式使不兼容的LegacyGraphics类能够与系统一起工作。// 创建并添加一个装饰后的复杂形状。外观模式提供简化的接口来管理复杂的图形系统。装饰器模式动态地为形状添加颜色和边框。// 使用工厂创建基本形状。工厂模式用于创建不同类型的形状对象。// 第三方图形类(不兼容接口)// 使用外观的便捷方法。// 具体装饰器 - 添加颜色。// 具体装饰器 - 添加边框。// 代理 - 延迟加载。代理模式实现延迟加载。
2025-08-03 10:36:16
798
原创 微波辐射计(Microwave Radiometer)
微波辐射计是一种被动式微波遥感仪器,通过接收地物自然发射的微波辐射能量来获取目标特征信息。工作频段通常为1-300GHz(波长30cm-1mm),属于非接触式遥感设备。
2025-08-02 09:54:48
595
原创 星载遥感领域知识
星载遥感是指利用安装在卫星平台上的传感器对地球表面及大气进行远距离探测的技术。其主要特点包括:大范围覆盖能力周期性重复观测不受地面条件限制多光谱/多时相数据获取。
2025-08-02 09:42:36
245
原创 大小端字节序详解
/ 小端存储的 0x1234。不同硬件(如 x86 是小端,网络协议通常用大端)可能导致数据解析错误。文件、网络数据流可能采用小端/大端存储,需按约定解析。小端字节序(Little-Endian)是一种。:处理二进制数据、网络协议、跨平台数据交换。是一个指向小端存储的 2 字节数组(如。),方法类似,但需调整移位位数(如。如果需要处理更长的数据类型(如。:高字节左移 + 低字节合并。:低字节在前,高字节在后。
2025-07-31 18:48:53
355
原创 学习Redis源码路径
学习 Redis 源码并剖析其技术栈是一个深入理解分布式系统、高性能网络编程和内存管理的绝佳途径。Redis 虽然代码量不大(约 10 万行 C 代码),但设计精妙,涵盖了事件驱动、内存管理、数据结构、持久化、集群协议等多个核心系统技术。
2025-07-31 10:30:35
995
原创 Redis安装
brew services start redis # 后台运行。在 WSL 中按上述 Linux 步骤安装。(注意:非官方最新版,仅用于开发测试)。,说明 Redis 正常运行。允许远程访问(需谨慎):修改。
2025-07-30 20:27:58
288
原创 Redis实现数据传输简介
Redis 可以通过其内置的数据结构和消息机制实现高效的数据传输,尤其适合跨进程、跨服务的实时通信。以下是详细的使用方法和示例,涵盖。根据业务需求选择合适的模式,并结合错误处理和性能优化,即可高效使用 Redis 进行数据传输!需要轮询,实际项目中建议使用异步库(如。三种主要模式,并附上。
2025-07-30 20:14:33
356
原创 Linux 中,命令查看系统版本和内核信息
cat /etc/centos-release # CentOS 专用。arch # 显示系统架构(如 x86_64、arm64)cat /proc/cpuinfo # CPU 详情。uname -r # 只显示内核版本。free -h # 内存。
2025-07-30 20:10:15
231
原创 Keil_v5\ARM\PACK\Keil\MDK-Middleware\7.10.0\USB\Include\usbd_config_def_0.h(4202): error: #35:
被多次分配给了不同的功能或接口,导致冲突。这个错误表明在 USB 配置中,如果问题仍然存在,可以提供您的。),我可以进一步帮您分析!
2025-07-29 09:24:02
234
原创 Stm32中USB 对时钟的要求
/ 倍频系数(最终输出 48MHz)// 使用 HSE(外部晶振) + PLL 生成 48MHz 供 USB 使用。如果 USB 只需要 48MHz,而 CPU 不需要高频运行,可以直接用。如果 USB 通信不稳定(如枚举失败、数据传输错误),可能需要改用。(锁相环,例如从 HSI/HSE 倍频得到 48MHz),精度(通常 ±1%~2%)比外部晶振(±0.1%)差。(HSE + PLL 分频/倍频)
2025-07-28 20:58:51
334
1
原创 SystemClock_Config 函数解析
这个配置将系统设置为:使用内部HSI时钟作为系统时钟源所有总线时钟都不分频工作在低电压模式(Scale3)不使用PLL,因此系统时钟频率就是HSI的原始频率(通常是16MHz或更低,取决于具体芯片)这是一个相对低功耗的基本时钟配置。
2025-07-28 20:50:57
613
原创 STM32中集成USB驱动
确认STM32型号支持USB(如STM32F103、STM32F4、STM32H7等)。// 回传数据到PC。// 初始化USB设备。如果使用HSE(外部晶振)→ 配置PLL输出48MHz。// 数据接收回调(PC → STM32)// 处理接收到的数据(例如回传)// 发送数据(STM32 → PC)(适用于STM32F4/F7/H7)。
2025-07-28 19:03:49
863
原创 快速梳理遗留项目
确认语言(Python/Java/Go等)、框架(Spring/Django/React等)、数据库(MySQL/MongoDB等)。背景调研 → 结构分析 → 依赖安装 → 入口跟踪 → 调试运行 → 测试验证 → 记录总结。:与产品经理或前任开发者沟通,明确项目用途(如电商系统、数据分析工具等)。├── package.json/pom.xml # 依赖管理。├── src/ # 主要代码。├── docs/ # 文档。
2025-07-23 22:17:39
1233
原创 /usr/bin/ld:找不到 -lssl
某些自定义安装的 OpenSSL 可能不在标准路径,需手动指定。某些系统可能同时存在多个 OpenSSL 版本(如。说明库已安装,但可能需要调整链接方式(见下一步)。:指定 OpenSSL 头文件路径(如果仍有。安装开发库并正确指定路径后,问题应该解决!# 查看当前链接的 openssl 版本。:如果系统是 64 位,但编译选项用了。虽然 OpenSSL 可能已安装()可能未安装,或者库路径未正确配置。:链接 OpenSSL 库。,需安装 32 位库(如。能运行),但开发库(:指定库文件路径(如。
2025-07-22 16:06:28
891
原创 find / -name “ssl.h“ 2>/dev/null
ls /usr/local/opt/openssl/include/openssl/ssl.h # macOS Homebrew 路径。ls /usr/include/openssl/ssl.h # 常见系统路径。,并过滤掉错误信息,只显示有效结果。如果无输出,说明未找到文件(可能未安装开发包)。全盘搜索可能较慢,可以限定范围(如只搜。的实用方法,常用于排查开发环境配置问题。是一个黑洞设备,丢弃所有写入它的内容。如果普通用户权限不足,部分目录(如。按文件名搜索,区分大小写。等错误(避免刷屏)。
2025-07-22 15:56:35
346
原创 ADC和DMA简述
ADC:属于模拟信号采集的外设,但需依赖其他接口(如GPIO)与外部连接。DMA:是数据传输的加速模块,服务于外设,非接口本身。外设接口:需明确区分具体的通信协议(如I2C、SPI等)。若问题中的“外设接口”指广义的外设相关功能模块,可以认为它们属于外设系统的一部分;若严格指通信接口协议,则不属于。
2025-07-20 21:09:59
167
原创 1个月学习C++网络编程
通过这个路径,你可以在1个月内建立从底层Socket到分布式数据分发的完整知识链,并产出可展示的项目代码。数据序列化:JSON(RapidJSON)、Protocol Buffers(选学)视频:TheCherno的C++网络编程系列(YouTube/B站)库选型:直接使用原生Socket API 或 Asio(1天基础)选择开发环境:Linux(推荐)或Windows + WSL2。:避免陷入协议细节(如手写HTTP解析),先用现成库。负载均衡:轮询/一致性哈希(理论+简单实现)
2025-07-17 11:49:37
362
原创 STM32 DMA通信详解
STM32的DMA功能为高效数据搬运提供了强大支持,合理使用DMA可以:显著降低CPU负载,提高系统整体性能实现更高带宽的数据传输改善实时性,使CPU能更专注于关键任务降低功耗,特别适合电池供电设备通过STM32CubeMX工具和HAL库,开发者可以快速实现各种DMA应用场景,从简单的内存拷贝到复杂的外设数据流处理。
2025-07-17 11:45:11
519
原创 轻量级消息总线实现 (C++)
消息总线是一种用于组件间通信的架构模式,它允许系统中的不同部分通过发布/订阅机制进行松耦合的交互。下面是一个轻量级的C++消息总线实现。:对于频繁创建销毁的消息对象,可以使用对象池减少内存分配开销。// 订阅AnotherMessage。// ... 其他成员函数同上 ...// ... 其他成员变量同上 ...:在高并发场景下,考虑使用无锁队列替代互斥锁。// 删除拷贝构造函数和赋值运算符。// ... 其他成员变量 ...// 订阅TestMessage。线程安全的发布/订阅机制。
2025-07-16 19:10:34
783
原创 模板类继承工厂模板基类
/ 输出: Derived2 processing: 100。// 输出: Derived1 processing: 42。// 输出: Derived1 processing。// 输出: Derived2 processing。// 输出: Derived1 processing。// 输出: Derived2 processing。// 基类模板(CRTP 风格)如果不需要运行时多态,可以用。仍然支持运行时多态(虚函数)// 基类模板(工厂接口)通过虚函数实现运行时多态。可以是模板类或非模板类。
2025-07-16 11:44:25
768
原创 C++ 中两个类之间的通信方式
/ 可以访问 ClassB 的私有成员。// 声明 ClassA 为友元。// 调用 ClassB 的方法。在 C++ 中,两个类之间可以通过多种方式进行通信。// ClassA 包含 ClassB 对象。每种方法都有其适用场景,应根据具体需求选择最合适的通信方式。对于复杂通信或解耦需求,考虑观察者或中介者模式。需要访问私有成员时考虑友元(但应谨慎使用)避免过度使用友元,因为它会破坏封装性。对于简单关系,使用组合或参数传递。
2025-07-15 22:29:08
557
原创 C++11 std::async使用
头文件中,它是 C++11 引入的并发编程工具,用于异步执行任务并获取结果。#include <future> // 必须包含 <future>// 使用 std::async 异步执行 compute()// 获取异步任务的结果(如果未完成,会阻塞等待)),由实现决定是立即启动还是延迟执行。:立即在新线程中执行(默认)。,用于获取异步任务的结果(:延迟执行,直到调用。:如果任务抛出异常,
2025-07-15 09:53:04
370
原创 “找到一个或多个多重定义的符号“(LNK2005 或 LNK1169)
/ ❌ 错误(应仅在头文件声明,在 .cpp 定义)// 声明// 定义。
2025-07-13 17:10:15
550
原创 C++ 单例模式实现
在现代C++中,推荐使用局部静态变量的实现方式,它简洁且线程安全(C++11保证局部静态变量的初始化是线程安全的)。违反单一职责原则(既管理实例又包含业务逻辑)// 删除拷贝构造函数和赋值运算符。// 私有构造函数防止外部实例化。避免频繁创建和销毁对象,节省系统资源。// 在程序开始前就初始化。在多线程环境下需要特殊处理。需要频繁创建和销毁的对象。创建对象耗时或资源消耗大。确保一个类只有一个实例。访问数据库或文件的对象。// 初始化静态成员。可能导致代码耦合度高。
2025-07-13 11:45:04
801
原创 C++ 右值引用和移动语义的应用场景
/ 传统方式 - 拷贝构造// 调用拷贝构造函数// 移动语义方式 - 更高效// 调用移动构造函数// 注意:此后 name2 处于有效但未定义状态。
2025-07-13 11:31:53
870
原创 C++ Lambda 表达式详解
Lambda 表达式是 C++11 引入的一项重要特性,它允许在代码中内联定义匿名函数对象。Lambda 极大地简化了代码编写,特别是在使用 STL 算法时。
2025-07-10 23:11:19
960
原创 cJSON 使用方法详解
c// 自定义malloc/free函数free(ptr);// 设置自定义内存管理函数// 现在cJSON会使用自定义的内存管理。
2025-06-29 18:04:34
685
原创 CMakeLists修改生成两个动态库
{CMAKE_CURRENT_SOURCE_DIR}/include/subsystemlib # 假设头文件在 include/subsystemlib。│ │ └── my_lib.h # 第一个库的头文件。│ └── SubSystem.h # 第二个库的头文件。│ ├── my_lib.cpp # 第一个库的源文件。│ └── SubSystem.cpp # 第二个库的源文件。# 设置第一个库的头文件路径。
2025-06-29 14:24:57
858
原创 编译生成动态库,函数未定义错误排查
include_directories(${PROJECT_SOURCE_DIR}/include) # 替换为实际路径。grep "simInit" /path/to/project/include/sim_api.h # 查看声明是否匹配。find /path/to/project -name "sim_api.h" # 查找头文件位置。#include "sim_api.h" // 或实际声明 simInit 的头文件。// 示例:检查头文件中的声明是否如下。// 在头文件中声明为导出函数。
2025-06-29 13:33:01
819
原创 C++子类继承父类方式总结
/ ✅ 可以访问(因为是 public 继承)// 输出 "Derived::show"virtual void show() { // virtual 允许子类覆盖。// 输出 "Base::show"// privateFunc();// ❌ 编译错误,无法访问。Derived() : Base(42) { // 显式调用父类构造函数。// ✅ 调用子类方法。void show() override { // 明确表示覆盖。// 显式调用父类方法。
2025-06-29 11:34:42
955
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人