/android-chrome-192x192.png

ImCBC

自由 分享 合作

  

轻量级参数解析库-tiny_cmdline

本文介绍了作者开发的轻量级命令行参数解析库tiny_cmdline,其目标是提供一个易于阅读、定制且现代化的C++11工具。基于getopt_long实现,tiny_cmdline通过简洁的接口支持有值参数、无值参数以及自定义解析函数,满足大多数命令行解析需求。文章详细阐述了接口设计、实现细节及代码示例,包括参数存储、类型转换和帮助信息生成等功能。作者强调减少复杂需求,用户可通过特化convert类实现自定义类型转换。该库代码量少于200行,适合需要轻量化解决方案的开发者。

C++标签派发技术

本文介绍了C++中的标签派发技术,并通过实现一个函数耗时计算接口展示其应用。作者设计了costTimeMs函数,使用标签类型区分有返回值和无返回值的函数,并通过重载实现不同的处理逻辑。文章详细讲解了标签派发的关键点,包括定义标签类型、获取标签接口、函数重载及用户接口封装。此外,作者比较了标签派发与if constexpr、SFINAE等技术的优劣,并提供了更简洁的实现方式。本文适用于C++11及以上版本,提供了代码示例和参考链接,具有较高的学习价值。

栈buffer对比堆buffer

本文通过实验和benchmark分析了栈内存与堆内存在C++中用作buffer时的性能差异,探讨了栈内存并不总是比堆内存快的观点。文章详细比较了不同访问方式(如指针访问、下标访问)对性能的影响,并通过汇编代码分析了性能差异的原因。结论指出,栈内存适合小且不频繁分配的场景,而堆内存在频繁分配时性能会受影响,建议根据实际需求选择内存分配方式,同时强调实验验证的重要性。

clockdiff时间差测量原理

本文详细解析了clockdiff工具的时间差测量原理,重点介绍了其基于ICMP协议的实现方式。通过分析ICMP报文的Type和Code字段,作者解释了clockdiff如何发送ICMP Timestamp Request报文并处理回复,进而计算两台设备的时间差。文章还探讨了clockdiff的网络异常处理机制以及如何通过多次测量提高精度。此外,代码片段展示了报文构造、时间戳更新和延迟计算的具体实现,帮助读者深入理解clockdiff的工作原理。

十亿行挑战-C++

本文介绍了使用C++17版本实现十亿行数据处理挑战的优化方法,目标是计算每个站点的平均值、最大值和最小值,并以字典序输出。作者详细阐述了性能优化的思路,包括数据切块、字符串视图、惰性计算、预取和缓存命中等技术,并通过多线程实现高效处理。代码实现部分涵盖了文件读取、数据结构设计、线程分工和结果合并等内容,同时探讨了mmap与直接内存加载、栈内存与堆内存的性能差异。最终,作者通过工具分析和多种优化尝试,显著提升了程序性能。

时间同步概述

本文概述了时间同步的基本概念、必要性及NTP和PTP协议的原理。时间同步用于校准设备间的时间,解决时钟偏差问题。NTP通过客户端主动请求服务器,计算网络延迟和时间偏差,适用于大规模网络,精度为毫秒级。PTP通过主从模式和链路层时间戳,提供更高精度的同步,适用于工业场景。文章详细分析了两种协议的同步步骤、计算公式及假设条件,并对比了其适用场景和实现差异,帮助读者理解时间同步的核心原理。

日志透传工具-channel

本文介绍了日志透传工具channel的设计与实现,旨在解决嵌入式系统中长时间日志采集的内存瓶颈问题。工具通过管道与TCP结合,实现嵌入式设备到外部机器的实时日志传输,支持本地和远程使用。文章详细描述了channel的使用方法,包括日志分享和实时处理场景,并提供了C++代码片段展示其核心逻辑。channel专注于字符透传,避免了文件传输的复杂性,是一种高效的日志采集与共享工具。

2023年终总结

本文是作者对2023年的年度总结,围绕裁员、买车、结婚等重要事件展开。作者分享了在裁员后的反思与成长,强调选择工作时应尊重内心感受;买车的决定源于生活便利和家庭需求,购入第一辆家用车后提升了幸福感;结婚带来了内心的安定与美好感受。在工作方面,作者从外企转入初创公司,尽管工作强度大,但更愿意接受体力上的压力,同时意识到个人提升的重要性。总结最后,作者表达了对未来的不确定性和对当下的积极态度。

扫墓

本文记录了作者在老家扫墓的经历,描述了南方农村的扫墓习俗及对先人的敬畏之情。文章通过爷爷在扫墓时的情感流露,展现了家族记忆与亲情的深刻联系,同时反思了对亲人尽孝的意义。作者感慨时间流逝,提醒读者珍惜与家人相处的时光。

Work Monitor 视频监控工具

本文介绍了一个基于Python的Work Monitor视频监控工具,支持通过延时摄影记录环境变化。作者详细描述了工具的安装、使用方法及代码实现,包括服务端与客户端通信、视频生成策略和配置管理。工具可用于监控电脑使用情况,并计划加入人脸检测等功能以提升实用性。源码已开源,便于用户扩展和改进。