自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 资源 (1)
  • 收藏
  • 关注

原创 现代C++ 文件系统库

C++17标准引入的std::filesystem库为文件系统操作提供了跨平台解决方案。该库源自Boost.Filesystem,实现了路径处理(path类)、文件属性查询、目录遍历等核心功能,支持自动路径标准化、递归目录扫描和文件操作。通过RAII机制和系统API封装,既保证了安全性又提升了性能。使用中需注意:1)路径分隔符的跨平台适配;2)异常处理;3)性能优化如状态缓存。典型案例包括构建安全路径、递归搜索文件、统计目录大小等,显著简化了原有依赖平台API的复杂操作。

2025-06-29 17:45:11 153

原创 现代 C++ 并发编程

C++并发编程从传统多线程到现代协程的演进历程:C++11标准化了线程管理、同步原语和原子操作,解决了传统API的平台依赖问题;C++17引入读写锁优化并发访问;C++20协程提供了轻量级并发方案。文章详细介绍了线程创建/管理、同步机制(互斥锁、条件变量)、无锁编程(原子操作)、线程池实现及协程应用,并给出最佳实践建议:避免共享状态、细粒度锁设计、异常安全和性能调优。现代C++已形成包含线程管理、同步机制、无锁编程和协程的完整并发体系,为开发者提供了丰富的工具选择。

2025-06-28 15:47:02 571

原创 现代 C++ 智能指针与内存管理

摘要:本文系统讲解了C++智能指针的核心概念与应用。首先分析了裸指针的内存泄漏、双重释放等风险,引出基于RAII原则的智能指针解决方案。重点剖析了三种智能指针:独占所有权的unique_ptr、共享所有权的shared_ptr及其引用计数机制,以及解决循环引用的weak_ptr。文章详细说明了各种智能指针的创建方式、所有权转移、自定义删除器等实用技巧,同时对比了它们的性能差异和适用场景。最后给出多线程环境下的使用建议和C++20新增功能,强调智能指针对提升代码健壮性和可维护性的重要意义。

2025-06-27 10:19:57 883

原创 现代 C++ 容器深度解析及实践

C++11引入的新容器特性摘要:std::array融合C数组效率与STL接口,适合固定长度场景;std::forward_list采用单向链表降低存储开销。无序容器基于哈希表实现O(1)复杂度查找,需注意哈希函数定制与负载因子优化。std::tuple支持多类型聚合,配合结构化绑定简化操作。建议根据场景选择容器:有序遍历用map/set,高频查找用unordered_map,固定数组用array,频繁头部操作用forward_list。

2025-06-26 11:32:00 673

原创 Go 语言并发模式实践

本文深入解析Go语言三种典型并发模式:1. runner模式通过通道机制实现任务生命周期管理,支持超时控制和中断信号处理,适用于定时任务场景;2. pool模式采用缓冲通道管理可复用资源,有效减少资源创建销毁开销,常用于数据库连接池等场景;3. work模式通过固定数量的goroutine池处理任务,控制并发量,适合批量任务处理。每种模式都通过核心代码示例展示实现原理,并分析其适用场景和特性。文章还对比了三种模式的应用差异,提出最佳实践建议:根据场景选择合适模式、遵循接口抽象原则、确保资源释放完善。

2025-06-25 15:40:51 594

原创 Go 语言并发编程

Go 语言的并发模型以简洁高效的方式解决了现代软件开发中的高并发需求,通过 goroutine 和通道的组合,开发者可以轻松构建复杂的并发系统。掌握并发编程不仅能充分利用多核处理器性能,还能简化异步任务的处理逻辑。在实际开发中,需要根据具体场景选择合适的并发模式,合理处理资源竞争和任务协调,才能发挥 Go 并发模型的最大优势。随着 Go 生态的不断发展,并发编程也将在微服务、云计算等领域发挥更加重要的作用。

2025-06-25 10:08:03 808

原创 C++ 中使用 SQLite 数据库深度解析

本文介绍了在C++项目中高效使用SQLite数据库的完整指南。主要内容包括:SQLite环境搭建、基础操作(数据库连接、SQL执行、数据查询)、预处理语句优化、事务处理机制、错误资源管理、性能优化技巧(索引/缓存配置)、自定义函数扩展以及多线程安全配置。文章通过代码示例详细演示了关键API的使用方法,并强调预处理语句防注入、事务批量操作、RAII资源管理等最佳实践。针对不同应用场景,提供了从基础到高级的全面技术方案,帮助开发者在C++项目中充分发挥SQLite轻量高效的优势。

2025-06-24 09:18:21 1041

原创 Go 语言使用 excelize 库操作 Excel 的方法

Go 语言使用 excelize 库操作 Excel 的方法

2025-06-23 11:27:58 572

原创 深入探究 Go 语言中使用 SQLite 数据库

摘要:本文详细介绍了在Go语言中使用SQLite数据库的方法。首先阐述了SQLite作为轻量级嵌入式数据库的优势及Go语言对其的良好支持。主要内容包括:1)通过go-sqlite3库进行环境准备;2)创建数据库文件和表格的操作流程;3)实现增删改查(CRUD)的具体代码示例;4)优化操作的方法如事务处理和索引创建。文章通过实际代码演示了SQLite与Go的集成方式,并提供了性能优化的实用建议。

2025-06-23 10:34:26 656

原创 c++中左值与右值

C++中的左值(lvalue)和右值(rvalue)是区分表达式属性的关键概念。左值表示具名的持久对象,可以赋值和取地址(如变量);右值表示临时对象,只能出现在赋值右侧(如字面值或表达式结果)。C++11进一步将右值分为纯右值(prvalue)和将亡值(xvalue),后者通过std::move实现移动语义。左值引用(T&)只能绑定左值,右值引用(T&&)专门处理右值,而const T&可以绑定两者。正确理解这些概念对实现移动语义、完美转发和优化资源管理至关重要。

2025-06-22 14:55:26 901

原创 c++中auto与decltype使用

C++11类型推导特性对比摘要:auto用于变量类型推导,忽略顶层const和引用;decltype精确获取表达式类型,保留所有类型信息;decltype(auto)结合两者优势。auto简化代码,decltype适用于模板编程,decltype(auto)适合精确转发。使用时需注意:auto需初始化,decltype区分变量名和表达式,decltype(auto)保留引用特性。三者各有所长,应根据场景选择使用。

2025-06-22 10:10:09 178

原创 STL 容器迭代器失效问题分析与解决方案

C++ STL容器迭代器失效问题解析:本文详细分析了vector和map两种容器删除元素时的迭代器失效机制。vector因连续内存特性,删除元素会使其后所有迭代器失效,需利用erase返回值更新迭代器;map因红黑树结构,仅被删除节点的迭代器失效,可采用先递增再删除或后置递增方式处理。文章通过代码示例对比了错误和正确的删除方法,为有效避免迭代器失效问题提供了实用解决方案,对提升程序健壮性具有重要参考价值。

2025-06-21 20:11:19 360

原创 Go 语言 GMP 调度模型解析

轻量级协程,是 Go 并发的基本执行单元。每个 Goroutine 拥有自己的栈空间、程序计数器和状态信息,初始栈大小仅 2KB,可动态扩缩容。M(Machine):对应操作系统线程,负责执行 Goroutine 的代码。每个 M 必须关联一个 P 才能执行 G,M 的数量通常由系统自动调整。:逻辑处理器,持有执行 Goroutine 所需的资源,包括本地运行队列(LRQ)、G 上下文缓存等。

2025-06-21 17:13:48 1428

原创 C++ 单例模式一种实现方式

摘要:单例模式是一种确保类只有一个实例并提供全局访问点的设计模式。其实现关键包括:私有构造函数、静态成员变量存储实例、静态方法获取实例。文章以C++为例展示了线程安全的单例实现,采用双重检查锁定机制保证多线程环境下的安全性,同时优化了性能。代码包含实例创建、销毁方法,并通过保护构造函数防止外部实例化。该实现兼顾线程安全和效率,适用于配置管理、日志记录等需要全局唯一实例的场景。

2025-06-20 19:34:32 454

原创 VC++ 与 Golang 的协作:实现 HTTP 文件传输服务

本文介绍了如何通过VC++调用Golang构建的HTTP文件传输服务实现跨语言协作。Golang部分提供了文件上传下载功能,通过导出函数StartHTTPServer、StopHTTPServer和UpdateDownFileMap供VC++调用。VC++通过动态链接库方式加载Golang服务,使用互斥锁确保线程安全。项目采用Golang编译为动态链接库(set CGO_ENABLED=1 go build -buildmode=c-shared)后,由VC++程序LoadLibrary加载调用的技术方案,

2025-06-20 09:58:16 1743

原创 Golang 与 C/C++ 交互实践

golang与c/c++交互

2025-06-19 16:38:15 1429

原创 Alpine Docker 容器中安装包缓存与 C/C++ 运行问题

Alpine Docker 容器中安装包缓存与 C/C++ 运行问题

2025-06-18 10:05:58 385

原创 CMake 交叉编译

cmake交叉编译

2025-06-18 09:44:27 1046

原创 深入理解 Docker 及常用命令

深入理解 Docker 及常用命令

2025-06-17 14:55:06 746

原创 巧用 Python:将 A3 作业 PDF 轻松转为 A4 可打印格式

将 A3 作业 PDF 轻松转为 A4 可打印格式

2025-06-17 11:41:51 314

原创 Git 常用命令与技巧

git常用命令及技巧

2025-06-17 09:38:50 174

原创 git配置多个仓库方法

git配置多个仓库的方法

2025-06-16 15:26:18 365

原创 Go 语言条件编译

golang条件编译方法

2025-06-16 10:17:25 893

原创 解决 Golang 下载golang.org/x包失败方案

解决 Golang 下载golang.org/x包失败的问题

2025-06-16 09:59:23 238

原创 Go 语言跨平台编译方法

golang跨平台编译方法

2025-06-15 16:18:49 350

原创 golang 一种并发安全 map 的实现

golang 一种并发安全 map 的实现

2025-06-14 20:25:09 230

原创 OpenSSL 1.1.1q 交叉编译

OpenSSL 1.1.1q 交叉编译

2025-06-14 15:44:35 289

原创 SQLite3 性能优化

sqlite3性能优化

2025-06-14 09:47:24 1171

原创 mosquitto-2.0.14 交叉编译

mosquitto-2.0.14 交叉编译

2025-06-13 16:16:15 527

原创 Linux bin 包制作方法

linux 下bin安装包制作

2025-06-13 09:50:57 721

原创 TCP 与 UDP 端口连通性测试

nc命令测试端口连通性

2025-06-12 15:18:22 259

原创 git将master合并到其他分支

git 合并操作

2025-06-12 15:02:18 351

原创 busybox支持中文详解

busybox支持中文详解

2025-06-12 10:44:12 634

原创 开源软件 ARM 平台交叉编译通用步骤

开源软件ARM 平台移植库进行交叉编译通用步骤

2025-06-11 16:06:39 798

原创 全志 T3 开发板适配移远 4G 模组(EC800)的驱动调试

全志 T3 开发板适配移远 4G 模组的问题。永久修改内核源码的方法适合正式项目,一劳永逸;而手动写入 VID/PID 的方法适合临时调试,方便快捷。

2025-06-11 15:13:35 1421

原创 Macbook Pro 下 VirtualBox 中 Ubuntu 18.04 扩容

在MacBook Pro上使用VirtualBox时遇到Ubuntu虚拟机磁盘空间不足的问题。发现原VDI磁盘为固定大小格式,无法直接扩容。解决方案包括:1)使用VBoxManage命令克隆并转换为动态格式磁盘;2)在图形界面调整新磁盘容量。关键点在于固定格式需先转为动态格式才能扩容,操作前建议备份数据。该过程适用于解决类似VirtualBox磁盘扩容问题。

2025-06-11 10:53:45 861 1

配电物联网信息模型规范

配电物联网智能终端及主站模型规范及协议

2025-06-19

c++用于内存池管理类

c++用于管理内存池的封装类,简单好用,但只能用于类或自定义结构,不能用语基本类型管理

2009-04-06

空空如也

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

TA关注的人

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