拂去尘世尘_个人页

拂去尘世尘
个人头像照片
32
1
0

个人介绍

嵌入式Linux C/C++5年应用/驱动开发经验程序员。个人微信公众号: 《开源519》,更多总结文章、学习资料,私信获取。

擅长的技术

  • C++
  • 开发框架
  • 设计模式
  • 应用服务中间件
  • 业务中间件
  • 中间件
  • Linux
  • 智能硬件
获得更多能力
通用技术能力:

暂时未有相关通用技术能力~

云产品技术能力:

暂时未有相关云产品技术能力~

阿里云技能认证

详细说明
暂无更多信息

2025年07月

  • 07.09 06:27:53
    发表了文章 2025-07-09 06:27:53

    【实战指南】C++ lambda表达式使用总结

    Lambda表达式是C++11引入的特性,简洁灵活,可作为匿名函数使用,支持捕获变量,提升代码可读性与开发效率。本文详解其基本用法与捕获机制。
  • 07.09 06:26:40
    发表了文章 2025-07-09 06:26:40

    【实战指南】 C/C++ 枚举转字符串实现

    本文介绍了在C/C++中实现枚举转字符串的实用技巧,通过宏定义与统一管理枚举名,提升代码调试效率并减少维护错误。
  • 07.09 06:24:00
    发表了文章 2025-07-09 06:24:00

    【实战指南】 CMake搭建编译环境总结

    本文总结了使用CMake搭建编译环境的技巧,涵盖单个及多个源文件的编译、CMakeLists嵌套管理、变量设置、交叉编译配置、常用编译选项及警告处理等内容。通过实例说明了如何高效组织工程结构,并利用CMake灵活控制编译流程,适用于嵌入式开发场景。
  • 07.09 06:20:35
    发表了文章 2025-07-09 06:20:35

    【实战指南】记一次定位fd泄漏问题

    本文记录了一次文件描述符(fd)泄漏问题的排查过程。在项目压测中,进程因打开过多文件导致fd资源耗尽,最终无法创建新文件。通过分析错误码、查看/proc/pid/fd路径下的文件句柄信息,定位到临时文件未正确关闭的问题根源,并修复代码中遗漏的close调用。同时总结了Linux下进程资源限制的相关知识点,强调开发中应关注资源使用情况,避免类似问题发生。
  • 07.09 06:19:16
    发表了文章 2025-07-09 06:19:16

    【实战指南】守护进程服务实现

    本文介绍了在Linux系统中实现守护进程异常重启的几种方案。通过理解僵死进程和信号处理机制,提出了基于SIGCHLD信号监听、轮询proc文件系统及waitpid接口的三种方法,并给出了C++实现代码。最终选择轮询方式以提升稳定性,确保服务进程在崩溃后能自动重启,保障系统可靠性。
  • 07.09 06:00:22
    发表了文章 2025-07-09 06:00:22

    【实战指南】设计模式 - 工厂模式

    工厂模式是一种面向对象设计模式,通过定义“工厂”来创建具体产品实例。它包含简单工厂、工厂方法和抽象工厂三种形式,分别适用于不同复杂度的场景。简单工厂便于理解但扩展性差;工厂方法符合开闭原则,适合单一类型产品创建;抽象工厂支持多类型产品创建,但不便于新增产品种类。三者各有优缺点,适用于不同设计需求。
  • 07.08 06:20:39
    发表了文章 2025-07-08 06:20:39

    历史文章导航

    本目录涵盖Linux系统开发、驱动、C语言、C++、Android及经验总结,内容包括进程通信、网络编程、实战开发技巧、设计模式、并发编程以及嵌入式开发等核心技术,适合开发者深入学习与实践。
  • 07.08 06:16:44
    发表了文章 2025-07-08 06:16:44

    单例模式中的隐藏陷阱:你真的了解单例吗?

    本文通过一个实际案例揭示了单例模式中常见的隐藏陷阱——在析构函数中调用其他单例对象导致程序崩溃的问题。代码示例展示了因单例析构顺序不确定而引发的 `crash`,并结合 AI 的分析提出两种规避策略:一是避免析构、二是通过全局状态检测对象存活。文章指出,依赖不确定的语言特性并非良策,真正的解决之道在于合理设计,确保程序行为可预期、可控制。

2025年06月

  • 06.15 15:14:45
    发表了文章 2025-06-15 15:14:45

    【实战指南】不到100行代码,封装一个通用毫秒级计时器(基于RAII思想)

    本文介绍了一款基于RAII思想封装的通用毫秒级计时器,代码不到100行,简洁高效。通过C++的RAII(资源获取即初始化)原则,计时器在对象构造时自动记录起始时间,析构或调用接口时返回时间差,支持秒级和毫秒级精度。该设计减少了重复代码,提升了复用性和可维护性,适用于性能分析、超时检测等场景。使用时仅需定义对象并调用获取时间间隔的接口,极大简化了开发流程。
  • 06.10 19:02:50
    发表了文章 2025-06-10 19:02:50

    一文掌握软件分支管理

    本文详细介绍了软件分支管理的实践经验,结合具体项目案例,从版本号、分支命名、标签管理到合并策略等方面展开。通过清晰的规则和流程图示,帮助团队避免版本混乱,提升研发效率。强调主干与开发分支的核心作用,同时提醒合理控制分支数量,确保协作顺畅。适用于不同类型的项目,助力团队建立适合自身的版本管理体系。

2025年05月

  • 05.21 07:04:50
    发表了文章 2025-05-21 07:04:50

    程序又崩了?一招精准定位段错误!

    在C/C++开发中,程序崩溃(如段错误)是常见问题,但快速定位崩溃原因却颇具挑战。本文介绍了一种精准定位崩溃问题的方法:通过捕获异常信号(如SIGSEGV),结合`backtrace()`和`abi::__cxa_demangle()`打印堆栈信息,从而快速定位问题接口。相比增加日志或生成coredump文件,此方法更高效且无副作用。实现时需注意编译选项(如`-O0 -g -rdynamic`)以保留符号信息,并处理C++名称修饰问题。

2025年03月

  • 03.14 15:31:48
    发表了文章 2025-03-14 15:31:48

    【实战经验】C/C++右移高位补0还是1?

    本文探讨了C/C++中右移运算时高位补0还是补1的问题。通过示例代码分析,揭示了右移规则:无符号类型高位补0;有符号类型根据正负决定(正数补0,负数补1)。文中列举了可能导致错误的场景,并提供了两种规避措施——使用无符号类型和掩码校正,确保结果符合预期。最后总结指出,右移运算虽常见,但若处理不当易引发隐晦Bug,需谨慎对待。
  • 03.14 15:30:51
    发表了文章 2025-03-14 15:30:51

    # 2个类轻松构建高效Socket通信库

    本文介绍了一种通过两个类`EpollEventHandler`和`IEpollEvent`构建高效Socket通信库的方法。该库支持TCP、UDP和Unix域套接字,采用I/O多路复用技术(如epoll),提升并发处理能力。通过抽象基类和具体事件类的设计,简化了API使用,便于开发者快速上手。文章还提供了服务端与客户端的实例代码,展示其在实际项目中的应用效果。此Socket库适应嵌入式环境,功能定制性强,有助于减少外部依赖并提升维护效率。
  • 03.14 15:28:16
    发表了文章 2025-03-14 15:28:16

    4步实现状态机驱动的MQTT客户端,快速接入OneNet (1)

    本文介绍了基于状态机驱动的MQTT客户端快速接入OneNet平台的实现方法,通过4步完成模块设计。文章以开源项目`Sparrow`为基础,引入`OneNetMqtt`业务模块,采用事件驱动模型和双层状态机设计,实现设备状态管理、消息处理及定时任务等功能。模块分为三层:`OneNetManager`负责核心逻辑,`OneNetDevice`管理设备信息,`OneNetDriver`处理Socket与MQTT通信。验证结果显示设备连接、数据上报及下线功能正常,稳定性良好。该设计简化了复杂条件判断,增强了系统灵活性与可扩展性,适用于实际项目参考。文末提供源码获取方式,助力读者实践与学习。
  • 03.14 15:26:43
    发表了文章 2025-03-14 15:26:43

    【实战指南】7个设置/获取接口了解Linux时间管理

    本文系统介绍了Linux时间管理中的7个关键设置/获取接口,涵盖时间获取(如`time`、`gettimeofday`、`clock_gettime`)、时间设置(如`stime`、`settimeofday`、`clock_settime`)以及时间转换和格式化等内容。文章详细解析了绝对时间和相对时间的概念,包括GMT、UTC及本地时间的区别,并通过实例测试展示了各接口的使用方法与特性。此外,还探讨了时区设置对时间计算的影响,强调在实际开发中推荐使用UTC作为基准时间以避免时区变化带来的问题。总结部分结合项目经验,提醒开发者注意时间服务的重要性及潜在风险,例如时间跳跃可能引发的应用故障。
  • 03.14 15:25:34
    发表了文章 2025-03-14 15:25:34

    【实战指南】4步实现C++插件化编程,轻松实现功能定制与扩展(2)

    本文是《4步实现C++插件化编程》的延伸,重点介绍了新增的插件“热拔插”功能。通过`inotify`接口监控指定路径下的文件变动,结合`epoll`实现非阻塞监听,动态加载或卸载插件。核心设计包括`SprDirWatch`工具类封装`inotify`,以及`PluginManager`管理插件生命周期。验证部分展示了插件加载与卸载的日志及模块状态,确保功能稳定可靠。优化过程中解决了动态链接库句柄泄露问题,强调了采纳用户建议的重要性。

2024年10月

  • 10.22 19:05:48
    发表了文章 2024-10-22 19:05:48

    【开源指南】用二叉树实现高性能共享内存管理

    本文介绍了一种使用C++实现的共享内存管理方案,通过借鉴Android property的设计思路,采用二叉树结构存储键值对,提高了数据检索效率。该方案包括设置和获取接口,支持多进程/线程安全,并提供了一个简单的测试示例验证其有效性。
  • 10.22 19:03:30
    发表了文章 2024-10-22 19:03:30

    【实战指南】用最小堆实现通用的高效定时器组件

    本文介绍了如何使用最小堆实现高效的定时器组件,以解决Linux应用开发中定时器资源有限的问题。文章详细描述了最小堆方式的实现原理,包括系统定时器、定时器任务和定时器任务管理三个类的设计与源码实现。测试结果显示,该方法能够准确触发定时任务,有效利用系统资源。总结部分强调了使用最小堆的优势,以及通过抽象类实现清晰的业务逻辑。
  • 10.22 19:01:30
    发表了文章 2024-10-22 19:01:30

    【实战指南】深入了解23种设计模式

    《深入了解23种设计模式:程序员必读指南》旨在帮助程序员理解和应用设计模式,以解决常见编程问题。书中介绍了设计模式的起源、目的及其在提高代码复用性、质量和团队沟通中的作用。涵盖创建型、结构型和行为型三大类共23种设计模式,每种模式均附有详细解析与C++实现示例,适合初学者和有经验的开发者学习参考。
  • 10.22 18:59:46
    发表了文章 2024-10-22 18:59:46

    【实战经验】17个C++编程常见错误及其解决方案

    想必不少程序员都有类似的经历:辛苦敲完项目代码,内心满是对作品品质的自信,然而当静态扫描工具登场时,却揭示出诸多隐藏的警告问题。为了让自己的编程之路更加顺畅,也为了持续精进技艺,我想借此机会汇总分享那些常被我们无意间忽视却又导致警告的编程小细节,以此作为对未来的自我警示和提升。
  • 10.17 07:05:41
    发表了文章 2024-10-17 07:05:41

    【实战指南】从零构建嵌入式远程Shell,提升跨地域协作效率(2)

    本文《从零构建嵌入式远程Shell》的第二部分,介绍了如何通过模块化设计和功能增强来优化远程Shell,包括支持阻塞命令、增加用户主动结束Shell进程的能力等,提升了跨地域协作效率。文中提供了详细的代码示例和验证步骤,适合开发者深入学习。
  • 10.17 07:04:26
    发表了文章 2024-10-17 07:04:26

    【实战指南】4步实现C++插件化编程,轻松实现功能定制与扩展

    本文介绍了如何通过四步实现C++插件化编程,实现功能定制与扩展。主要内容包括引言、概述、需求分析、设计方案、详细设计、验证和总结。通过动态加载功能模块,实现软件的高度灵活性和可扩展性,支持快速定制和市场变化响应。具体步骤涉及配置文件构建、模块编译、动态库入口实现和主程序加载。验证部分展示了模块加载成功的日志和配置信息。总结中强调了插件化编程的优势及其在多个方面的应用。

2024年07月

  • 07.14 20:26:53
    发表了文章 2024-07-14 20:26:53

    【实战经验】记录项目开发常见的8个难题

    风沙席地起,战马踏风归!
  • 07.01 21:41:34
    发表了文章 2024-07-01 21:41:34

    【实战技巧】使用inotify实现实时文件监控

    `inotify`是Linux内核提供的文件系统监控机制,用于实时捕获文件和目录的创建、删除、移动和修改等事件。通过`inotify_init`初始化,`inotify_add_watch`添加监视点,如`. IN_ACCESS`, `. IN_MODIFY`等,及`inotify_rm_watch`移除监视。示例代码展示了监听指定路径下文件修改事件,当事件发生时打印信息。使用`inotify`能高效地构建实时应用,如文件同步和日志监控,简化系统编程。

2024年06月

  • 06.26 21:38:55
    发表了文章 2024-06-26 21:38:55

    【实战指南】嵌入式RPC框架设计实践:六大核心类构建高效RPC框架

    在先前的文章基础上,本文讨论如何通过分层封装提升一个针对嵌入式Linux的RPC框架的易用性。设计包括自动服务注册、高性能通信、泛型序列化和简洁API。框架分为6个关键类:BindingHub、SharedRingBuffer、Parcel、Binder、IBinder和BindInterface。BindingHub负责服务注册,SharedRingBuffer实现高效数据传输,Parcel处理序列化,而Binder和IBinder分别用于服务端和客户端交互。BindInterface提供简单的初始化接口,简化应用集成。测试案例展示了客户端和服务端的交互,验证了RPC功能的有效性。
  • 06.26 21:34:59
    发表了文章 2024-06-26 21:34:59

    【编程技巧】 C++11智能指针

    C++11引入了智能指针以自动管理内存,防止内存泄漏和悬挂指针: - `shared_ptr`:引用计数,多所有权,适用于多个对象共享资源。 - `unique_ptr`:独占所有权,更轻量级,适用于单一对象所有者。 - `weak_ptr`:弱引用,不增加引用计数,解决`shared_ptr`循环引用问题。 ## shared_ptr - 支持引用计数,所有者共同负责资源释放。 - 创建方式:空指针、new操作、拷贝构造/移动构造,以及自定义删除器。 - 提供`operator*`和`operator->`,以及`reset`、`swap`等方法。 ## unique_ptr
  • 06.16 22:34:55
  • 06.16 22:03:38
    发表了文章 2024-06-16 22:03:38

    【常用技巧】C++ STL容器操作:6种常用场景算法

    STL在Linux C++中使用的非常普遍,掌握并合适的使用各种容器至关重要!
  • 06.16 21:58:48
    发表了文章 2024-06-16 21:58:48

    【干货总结】Linux C/C++面试知识点

    Linux C/C++基础与进阶知识点,不仅用于面试,平时开发也用得上!
  • 06.16 17:19:38
    发表了文章 2024-06-16 17:19:38

    【实战指南】从零构建嵌入式远程Shell,提升跨地域协作效率

    构建嵌入式远程Shell的文章概述: - 目标:解决嵌入式软件测试中的远程调试难题,提供轻量级解决方案。 - 功能:包括远程交互、命令执行与反馈,强调多客户端并发连接和稳定性。 - 设计:基于Socket服务端架构,使用I/O多路复用和popen函数,确保命令执行与结果反馈。 - 需求:支持命令解析、执行和结果回传,考虑网络不稳定情况下的连接保持。 - 安全性:仅限内部调试,未详细讨论加密等安全措施。 - 实现:关注点在Socket服务端程序,包括监听、数据过滤和命令处理。 - 测试:通过 Telnet 和Windows网络助手验证连接和命令执行功能。
  • 06.11 21:08:59
    发表了文章 2024-06-11 21:08:59

    实战Linux I/O多路复用:借助epoll,单线程高效管理10,000+并发连接

    本文介绍了如何使用Linux的I/O多路复用技术`epoll`来高效管理超过10,000个并发连接。`epoll`允许单线程监控大量文件描述符,显著提高了资源利用率。文章详细阐述了`epoll`的几个关键接口,包括`epoll_create`、`epoll_ctl`和`epoll_wait`,以及它们在处理并发连接中的作用。此外,还探讨了`epoll`在高并发TCP服务场景的应用,展示了如何通过`epoll`和线程/协程池来构建服务框架。
  • 06.11 14:38:31
    发表了文章 2024-06-11 14:38:31

    实战高效RPC方案在嵌入式环境中的应用与揭秘

    该文介绍了在嵌入式环境中应用和设计高效RPC方案的过程。作者参考了Android的Binder机制,采用共享环形缓冲区来解决进程间同步返回值的问题。选择共享内存是因为其零拷贝、低延迟和灵活访问模式的优势,而环形缓冲区则提供了FIFO特性,便于数据有序传输并优化内存管理。文中提到了关键接口`write`和`read`的实现,以及一个简单的`CalculateSum`接口调用示例,展示了RPC方案的实际效果。该方案旨在提供一种轻量级、高性能的嵌入式RPC通信方法。
  • 06.04 05:55:21
    发表了文章 2024-06-04 05:55:21

    【实战指南】轻松自研嵌入式日志框架,6大功能亮点一文读懂

    本文介绍了如何自研一个嵌入式日志框架,涵盖了6大功能亮点:日志分级管理、异步处理与并发安全性、详尽上下文信息记录、滚动日志归档策略、高效资源利用和便捷API接口。设计上,通过日志过滤器、共享环形缓冲区和独立的日志管理进程实现日志管理。在并发环境下,使用信号量保证线程安全。日志文件按大小滚动并有序归档,同时考虑了资源效率。对外提供简洁的API接口,便于开发人员使用。文章还简述了实现细节,包括实时存储、日志滚动和共享内存管理。测试部分验证了日志回滚和实时打印功能的正确性。
  • 发表了文章 2025-07-09

    【实战指南】C++ lambda表达式使用总结

  • 发表了文章 2025-07-09

    【实战指南】设计模式 - 工厂模式

  • 发表了文章 2025-07-09

    【实战指南】记一次定位fd泄漏问题

  • 发表了文章 2025-07-09

    【实战指南】守护进程服务实现

  • 发表了文章 2025-07-09

    【实战指南】 C/C++ 枚举转字符串实现

  • 发表了文章 2025-07-09

    【实战指南】 CMake搭建编译环境总结

  • 发表了文章 2025-07-08

    单例模式中的隐藏陷阱:你真的了解单例吗?

  • 发表了文章 2025-07-08

    历史文章导航

  • 发表了文章 2025-06-10

    一文掌握软件分支管理

  • 发表了文章 2025-03-14

    【实战经验】C/C++右移高位补0还是1?

  • 发表了文章 2025-03-14

    4步实现状态机驱动的MQTT客户端,快速接入OneNet (1)

  • 发表了文章 2025-03-14

    # 2个类轻松构建高效Socket通信库

  • 发表了文章 2025-03-14

    【实战指南】4步实现C++插件化编程,轻松实现功能定制与扩展(2)

  • 发表了文章 2025-03-14

    【实战指南】7个设置/获取接口了解Linux时间管理

  • 发表了文章 2024-10-22

    【开源指南】用二叉树实现高性能共享内存管理

  • 发表了文章 2024-10-22

    【实战指南】用最小堆实现通用的高效定时器组件

  • 发表了文章 2024-10-22

    【实战指南】深入了解23种设计模式

  • 发表了文章 2024-10-22

    【实战经验】17个C++编程常见错误及其解决方案

  • 发表了文章 2024-10-17

    【实战指南】4步实现C++插件化编程,轻松实现功能定制与扩展

  • 发表了文章 2024-10-17

    【实战指南】从零构建嵌入式远程Shell,提升跨地域协作效率(2)

正在加载, 请稍后...
滑动查看更多
  • 回答了问题 2024-06-16

    在做程序员的道路上,你掌握了什么关键的概念或技术让你感到自身技能有了显著飞跃?

    前言 对于题目的问题,我想结合自己自身的经历谈一下。我曾经在一个非常优秀的团队开发,团队中每个人都很优秀,开发氛围相当融洽。这一方面是领导带的好,另一方面是领导愿意以统一流程去解决暴露的问题,不把问题强留在员工身上。 团队中对我个人帮助很大的概念 不要担心暴露问题,想办法用流程解决问题  这一点完全提升了我个人的境界。怎么理解“用流程解决问题”,其实就是领导在看到员工或者组织暴露出的问题时,愿意去提出一个较为宽容的统一流程去解决这些问题。不把问题归结与某个人身上,而是是否可以从流程上去解决这些问题;如果没有解决,那是否可以优化这些流程,让流程去辅助员工解决这些问题。  这一点上可以体现出领导是百分之百相信的他的下属,出现问题是正常的,我们应该针对这些问题去想一些统一的办法去规避。这样一来,员工就不会因为担心犯错误而束手束脚。有问题就暴露出来,大家一起想办法解决。正式因为这个概念,我个人也变得宽容无论是生活还是工作中,能够理性的看待问题。出现问题是很正常的,我们要坦然的去面对和解决掉问题就可以了。权力适当下放,团队各成员明确自身职责,成为各自领域的管家  一个团队的协作中,有方方面面的事务需要处理,而这些事务往往需要一定有权威的人,因此这些事情都堆到领导身上。而聪明的领导,明白适当下放一些权力,慢慢让团队的成员承担起一定范围的领导职责,负责把关各自所属领域的事务。这样领导可以轻松一些,成员的集体荣誉感也会提升,当家负责各自领域的事务,劲往一处使。 以上,便是我在曾经团队中学习到最重要的一些概念,这些概念不仅在工作中对我有所帮助;毫不客气的说,对我的人生价值观都有一些改善。
    踩0 评论0
正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息