解压 zip 文件到内存
TODO。 TODO
TODO。 TODO
在 c/c++ 编程中常常需要执行一些系统命令,可以使用 system 函数,也可以采用 popen 的方式来实现,本文介绍 popen 的使用方法及优势。 system vs popen 特性 system popen 获取输出 ❌ 无法获取 ✅ 可实时读取 ...
在设计 c++ sdk 时,我们常常会隐藏大部分接口,只保留要暴露给客户的那部分接口,但是如果 我们的 sdk 依赖了第三方库,第三库编译时如果不带 hidden 属性,第三方库的函数签名就会被导出,如果客户刚好有同名的函数,就有可能会链接到我们引入的第三方库,从而出现一些未知的问题。下面记录一下我是如何发现这个问题并解决的。 问题发现 在下面的伪代码中,客户在 func 函数中调用了 ...
一般情况下, GNSS 的周内秒是来自于原子时的不断累加, 而 UTC 则是天文时间,和地球的自转时间有关,由于地球的自转时间不规则,UTC 时间和原子时之间存在一个误差,截至目前,UTC 时间比原子时慢了 18 秒,所以在使用 GNSS 的周内秒时,常常需要将其转换为 UTC 时间,下面有一个很简单的例子,可以按照这种思维方式来实现转换。 引子 小熊有两块秒表 A,B;A 秒表从 0...
在嵌入式软件开发中,常常需要对一些 demo 快速验证,我常常使用树莓派来搭建环境,因为便宜、社区活跃、简单方便 😂,下面记录我搭建环境的过程,涉及制作系统、配置网络、配置硬件端口等。 安装镜像工具 sudo apt update sudo apt install rpi-imager 制卡 启动 rpi-imager; 选择设备,是 PI5 就选择 PI5,是 PI...
想要规范每个人的 commit 习惯,光靠文档是不行的, 得强制执行, 有的人选择使用 git template 来规范队友的行为,其实之前我们团队也试过,最后的结果是: 并不是每个人都依照模板上的来, 这和文档约束没有啥区别,后来我们采用了 git hook 的方式,只要你不按照规定提交,就无法 commit,成效甚佳, 下面分享一下我自己平时使用的 hook。 安装 hook ...
刚工作那会,我写代码几乎都是用 source insight 或者 vimplus, 后来偶遇 vscode,如获至宝,然后就放弃 SI 和 vimplus 啦,但是最近很让我头大,由于只能使用公司的电脑开发,公司的电脑配置有点一言难尽,打开两个 vscode 实例就卡掉牙,但是我又不太想用回 vimplus,毕竟是旧时代的产物了,所幸我发现了个开源项目 lazyvim, 于是就基于它配置了...
默认的 vim 配置看着影响情绪,所以配了一个,记录一下。 安装 vim sudo apt update sudo apt install vim 添加配置 vim ~/.vimrc " 基础设置 set nocompatible " 禁用兼容模式 (启用 Vim 特性) set encoding=utf-8 " 使用 UTF-8 编码 s...
我们在使用安卓手机的时候,上划屏幕打开的任务栏中,排最前面的后台任务永远是最近我们使用过的, 而那些很久没被使用的后台任务会被放到最后,这种功能就可以使用 LRU 算法来实现。 什么是 LRU 算法? LRU(Least Recently Used)是一种缓存淘汰策略,其核心思想是移除最近最少使用的数据,保留最近访问的数据。 代码实现 #include <list> #i...
在 Linux 应用开发中常常会用到定时器,其实定时器的实现方式有五六种,但是好多定时器的使用容易破坏 c++ 的封装,举个例子,你无法把一个类的非静态成员函数赋值给一个 struct sigaction 的成员 sa_handler 指针,如果你非要这样,只能采用静态成员函数,如果这个函数里要访问到类的多个成员变量,这些成员变量全部得改成静态成员变量,天哪,这违背了我的初心,我仅仅是想执行...