- 博客(69)
- 资源 (9)
- 收藏
- 关注
原创 linux cpu隔离
内核启动参数,指定从多核负载均衡算法隔离的CPU,内核会存在一些per-cpu进程(rcu/%u,ksoftirqd/%u等),不过测试过程可以忽略,大家也可自行去修改另外的参数rcu_nocbs之类的。isolcpus=<CPU 编号>,….,<CPU 编号>对应字段添加cpu 隔离参数。正常核心占用应该如图。
2025-08-12 14:07:20
195
原创 如何评估cpu的理论FLOPS能力
FLOPS,即每秒浮点运算次数, 是每秒所执行的浮点运算次数(Floating-point operations per second;缩写:FLOPS)的简称。当然浮点精度不同,单精度,双精度,对应的FLOPS能力也不一样,这里我们以单精度浮点FP32为例。当然理论性能只是理论,以上数据都是无依赖情况下的运算,实际场景中,仍被业务逻辑依赖,内存吞图带宽,发热降频等种种原因所影响。理论值只能给予初步参考,实际场景仍需实测评估。
2025-04-15 17:19:25
1125
原创 模型部署详解与ncnn实例
另外模型训练只是训练出一个模型权重,我们模型部署到生产环境形成产品级别的产物,我们仍需要一些软件上的设计,让模型可以真正应用到具体场景中形成实时推理系统,考虑系统的稳定性,易用性,可用性,拓展性,低延迟响应等方面。这其实就是算法工程化的概念,模型部署通常作为算法工程化的一部分。然而,生产端的性能是比训练平台弱很多的,生产环境如果是云端,性能宽裕,为了快速开发可python推理,一般训练框架都是训练+推理一体的,但是若是边缘端资源往往是不够的,移动端甚至还有功耗等额外限制,因此产生了模型部署的概念。
2025-04-11 09:33:28
1133
原创 CyberRT(apollo) 定时器模块简述及bug分析
timer的定义,cyberrt中timer模块用于设置定时器任务,字面意思,设置设置定时周期及出发频次(周期 or oneshot),到达指定时间时间触发callback。
2025-03-03 16:21:56
1125
原创 C++ 名称查找(Name lookup)与参数依赖查找ADL(Argument-dependent lookup)
限定作用符限定名值指出现在::(限定作用符)右侧的名字,他可以是无限定作用域及,没有限定作用符在左侧的名字。
2023-08-15 02:58:43
754
原创 enable_shared_from_this 典型使用场景
从以上例子我们也可以得出结论:保活对象保活对象异步调用保活虽然c++在一些现代化版本(11+)已经提供了shared_ptr/unique_ptr智能指针极大的降低了C++er操作指针的心智负担。但是在一个异步调用时仍然存在问题;
2023-07-10 18:15:09
711
原创 安卓 JNI crash 日志分析 及问题定位 方法
目录标题例子抓取crash 日志日志分析例子void crash_test_func() { int* ptr = nullptr; // 行号173 *ptr = 99; // 行号174}// net 在 jni中调用void Net::initEngine(const char* data) { crash_test_func(); // 行号179}以上程序,对一个空指针解引用做赋值操作,会抛出一个S异常。抓取crash 日志对于SIGSEGV等错
2021-12-02 18:33:50
4715
1
原创 GIT LFS 原理杂谈
这里写目录标题例子不开LFS二级目录三级目录例子这里做些例子展示,方便理解。不开LFSgit init: 创建大文件fsutil file createnew isbin.bin 102400000: 提交文件git add isbin.bingit commit -m "初始化": --------------- 大小 98.5 MB ---------------: 修改文件echo a > isbin.bingit add isbin.bingit commit
2021-11-19 15:27:45
3295
5
原创 GIT仓库瘦身及GIT LFS迁移说明
目录标题背景GIT LFS (Large File Storage)迁移GIT LFS 服务端配置GIT LFS 客户端安装迁移本地历史仓库迁移一些补充说明清理前后仓库对比背景之前一些git项目上 CI/CD,发现jenkins git clone失败,设置depth及clone时间之类的无果。只能考虑仓库瘦身之类的策略。发现仓库有不少的二进制文件,且这些二进制文件变更还挺频繁,这种操作会导致git仓库成倍增长极速膨胀,git本身只适合管理文本文件。另外说一则有趣的往事,之前有个同事是图形编程,这个语
2021-11-17 20:26:18
5908
原创 半年随笔杂谈
目录标题前言工作上smart原则不要轻易重构现行代码向上管理生活上家人定期体检买保险前言失眠,想着很久没好好写过博客了,半年来也发生了许多事,也有些特别想说的,就记录下吧。工作上入职新公司也半年多了,也刚好前段转正了,除了专业技能上的提升,但更多想说的还是如何工作。感觉码农这种工种,包括我自己,感觉很多人不知道如何管理好自己的工作,如何将自己的产出进行好的包装呈现。smart原则在团队分配任务时,个人要应当积极主动选择任务。首先,机会永远是留给积极主动的人,这种主动承担任务也其实也是在领导
2021-10-09 02:16:49
303
1
原创 git仓库慎重重命名文件夹
git对于重命名后的这种历史呈现支持还是很差的。虽然对于单文件可以可以通过以下命令,将重命名前后的历史给连接起来,但是对于重命名文件夹后文件夹的提交历史就无能为力了。git log --follow /path_to_filegit log默认不带 follow也可能就是基于这样的考虑,git log往往是针对整体的提交历史记录而不是单文件。顺带一提,vscode的gitlens插件的file view 也可以支持跟踪重命名前后(不过只能选择only current branch),之前一直没
2021-09-16 15:00:53
886
原创 c++跨平台软件 vscode 各个平台下的debug教程
目录标题相关概念日志调试实操windows平台相关概念一般来说我们分析BUG,大概分为两种根据软件内部已有的插桩日志,记录关键节点信息、重要函数的输入输出,根据这些信息判断bug调试(Debug),让代码一步一步执行,跟踪程序的运行过程。比如,可以让程序停在某个地方,查看当前所有变量的值,或者内存中的数据,根据这些信息分析bug。日志日志这种方式,优点在于离线,但更多基于完备的日志信息,依赖代码内部的插桩日志的详尽程度,如果现存日志未捕获bug信息的日志的话,那么bug分析的形式就变成了如下
2021-08-31 14:26:55
1747
原创 windows平台 cmake release版本进行debug
目录标题背景需求问题解决cmake 设置背景项目中,通过ExternalProject_Add引入的一些第三方库。需求项目debug时,不需要第三方库的debug版本,只要主source debug,而第三方库release优化拉满。问题linux 平台下允许这种方式,release和debug 混用。windows平台exe与dll 存在限制,不能release与debug混用。但是我们软件对于一些导入第三方的库没有debug需求,而统一debug导致第三方库运行速度慢,反而影响整体软件的调
2021-08-23 15:36:17
1400
原创 CMAKE 里PRIVATE、PUBLIC、INTERFACE属性示例详解
闲扯cmake 里面target_include_directories,target_link_libraries这两个命令里面有三种属性PRIVATE、PUBLIC、INTERFACE。cmake PRIVATE、PUBLIC、INTERFACE的讲解网络上很多,但是总觉得太过偏概念了,看完并没有让人有深入细节的了解。于是动手做个示例,就有了本杂文。这三种属性,从根本上来讲属于cmake里面传播特性的三种等级。实例既然传播特性,那么我们肯定需要多个target来演示传播。testCMake
2021-08-17 20:18:13
15444
8
原创 正确使用git flow及commit message 规范指南
目录标题一级目录二级目录三级目录Git Flow主要分支masterdevelop支撑性分支featurereleasehotfix小结规范化提交commit message格式Commit Message HeaderCommit Message Body(可选)Commit Message Footer(可选)好处一级目录二级目录三级目录Git Flow就像代码需要代码规范一样,代码管理同样需要一个清晰的流程及规范。如何开始一个新特性的开发,而不影响阻塞其他特性开发?分支多了如何管理
2021-08-13 09:17:36
1775
原创 vscode 添加代码命名规范检查
目录前言clang三级目录前言前文简单提到clang-tidy提供命名规范检查,由于篇幅,没有详细讲解。正好最近有分了个旧项目代码规范整改的杂活,就补充描述下在vscode中如何使用clang-tidy进行静态检查。clang三级目录...
2021-08-04 22:13:07
6855
9
原创 vscode + clangd 开发 c\c++
目录标题背景发现clangd三级目录背景vscode c++开大家一般用 巨硬 自家出品的c++插件,如下网络大部分的vcscode c++ 环境搭建也都是讲这个插件的配置,用于提供悬浮提示,代码补全,错误提示,定义声明实现之间的项目跳转等等功能。我之前也是用这个插件开发,总体还好,至少比在我之前用的一些keil之类的IDE好用很多,但是和IDEA这种更现代化的IDEA有不小差距。先不说导航找实现找引用这种语义分析的基本功能有时候都没办法正确找到实现,错误和警告也只是有提示,没有quick f
2021-08-01 12:16:05
30662
14
原创 使用 VSCode 远程 图形化 GDB 调试 嵌入式linux
目录标题引言环境步骤vscode remote ssh 配置Linux编译机配置设备板端配置vscode launch设置调试引言之前说了,通过core dump找程序bug,但是有些时候排查问题的还是不够高效,命令行形式gdb还是太简陋了,在IDE debug代码打断点,查堆栈变量那些习以为常的东西,在gdb这里怎么用怎么不习惯,可视化操作不比敲命令行来的香吗?最近正好研究了下vscode remote ssh + gdbserver 调试。相对来说体验比较像IDE了,基本的单步,直接代码上打断点
2021-06-07 16:46:04
2319
4
原创 linux 程序crash 调试、原因分析及问题定位
linux 程序崩溃,如果能根据已有的插桩日志能排查出来自然好,但是往往日志未全覆盖,这时候排查起来还是比较麻烦的。一般来说有以下这几种方法获取崩溃现场数据。core dumpcore dump是linux原生自带的一个异常分析工具,当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件中。注意程序编译 需要带 -g。开启core dumplinux 默认是关闭的。开启ulimit -c unlimited此时,运行程序发生sigsegv之类的异常时
2021-05-26 09:42:37
10247
5
原创 c++ 有返回值函数 ,但未返回值时的情况具体分析
具体业务代码遇到一个函数代码块无返回值导致bug的问题warning: control reaches end of non-void function [-Wreturn-type]测试代码//不存在存在内部调用int test1(int i){ if (i == 0 ) { return 0; }}int test3(int i){ return i;}//存在内部调用int test(int i){ if (i =
2021-05-25 11:31:52
4163
原创 加快gcc编译速度
前情之前一直在windows平台下使用ide开发,idea有热加载,而keil,ccs之类的单片机ide由于固件大小原因,编译速度都还凑合。等到新公司项目都是linux平台下用的交叉编译器开发,写的makefile也不咋地,一段时间玩下来,编译速度慢的简直不能忍受。网上一通搜索,基本上通过以下几点尝试优化PIMPL(放弃)使用pimpl(Pointer to Implementation),effective stl 很多书都有介绍,这玩意通过结构体或者类隐藏内部私有数据成员,使用前置声明和指
2021-05-22 11:29:19
5774
2
原创 vscode #ifdef编译开关关闭时不显示灰的问题
敲着敲着不知道手贱碰哪了,突然关的的编译开关不显示灰了。正常情况下开:关:现在突然,所有预编译控制块全是活动状态。网上说的,都是vscode #ifdef 区域变暗,跟我不是一个问题最后发现是手贱点了这个配置的问题。如果你不手贱不点编辑,默认是有一个值的,但是如果跟我一样纯手贱点了没细看选项就傻了,在settings.json会生成一个字段,并且默认值就被改成null,然后就没有非活动编译块暗色处理了,蛋疼。“C_Cpp.inactiveRegionOpacity”: null,
2021-04-25 09:30:54
8395
12
原创 OOP面向对象程序设计的理解
这里写目录标题软件设计六大原则基本概念如何设计高可用,高复用,易拓展的软件高可复用性一个简单的例子嵌入式软件如何实现硬件无关控制反转易用性类的易用性组件的易用性可拓展性业务可拓展性接口可拓展性不要过度设计软件设计六大原则基本概念最少依赖(迪米特)任何一个类只能使用本身的方法和属性及根据参数传递进来的值,每一个类尽量减少对其他类的依赖,减少类藕合,高内聚,利于提高代码复用。迪米特栗子单一职责一个类应只负责一个职责,各个职责变动不应影响其他职责,提高代码可读性(责任链完美诠释)接口隔离即接口
2021-04-20 09:44:38
394
原创 21年年后离职找工作的随笔杂谈
目录标题前言忙碌而又焦虑的面试阶段个人反思前言21年,向上司提了离职流程,从学校毕业也三年半了,并且在厦门这座城市也三年多了,厦门这座城市也是着实令人无奈,真不知道宜居在哪。。。。当前公司也工作三年了,只是工作上挑战性愈发不足,顺风顺水,每天敲代码都在做一些小调整的。哪怕是新产品的开发,对个人能力的考验实在有限,个人提升全靠自学。但这种模式还是不太满足吧,技术的深度更多需要项目中遇到的问题来考验。如果完全胜任且没有被安排更有挑战性的工作,要么自己找事情做,要么跳槽转岗。网上看到的别人的一句话
2021-03-12 10:08:20
2280
2
原创 嵌入式项目 lua 的一些简要说明
lua简介,易于与C\C++相互调用,执行效率高。嵌入式项目lua移植上难度不大,打包进项目,实现printf和fopen之类函数底层实现重定向即可但MCU选型上,对于lua的硬件占用还是需要注意下,对照参考选型以下是5.4.2最新版本未经过裁剪优化的基础要求。堆:32K,lua分配内存用的是realloc,部分芯片需要自行实现,可能有碎片问题,lua脚本里面程序栈:2KROM: 132K网上资料旧版本对于硬件的要求要似乎少很多,未做验证。github有elua这个专门为嵌入式设备优化的
2021-02-02 11:15:42
1480
1
原创 结构体偏移计算
很早以前遇到的一道面试题,最近突然有类似需要突然想起来。#define offset_of(type, memb) \ ((unsigned long)(&((type *)0)->memb))
2020-12-28 19:29:37
175
f429 freertos+ LVGL.rar
2020-10-14
lv_sim_visual_studio_sdl-master.zip
2020-09-26
test_Project_mdk - 副本.rar
2020-08-29
lv_examples-master.zip
2020-09-26
lv_drivers-master.zip
2020-09-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人