随笔分类 - 学习
摘要:之前一直是将这类开发环境配置步骤记录在GitHub的一个repo上,考虑将这类非频繁使用但又偶尔配置一次的事务做成一个repo知识库,但是GitHub经常打不开,访问起来又麻烦,而且修改起来还需要git管理,做一些图文交叉的blog也不方便。所以2024年开始还是在博客园更新吧,也方便随时索引浏览。
阅读全文
摘要:卷积如何加速? img2col和winograd算法。img2col将卷积转化为矩阵乘,通过重排内存,用空间换时间。wingrad是考虑到卷积运算的卷积核固定,通过算法降低计算量提高效率。 卷积和反卷积的原理 卷积就是正常的滑窗求和计算输出,在步长大于1时会降低输入特征图分辨率。反卷积也就是转置卷积
阅读全文
摘要:问题: gcc/g++是c/c++使用最广泛的编译器,也是linux默认自带的编译套件,但在vscode上,也可通过微软官方提供的C/C++插件很便捷进行c/c++代码编译调试,但是该插件的自动补全和代码提示等功能很差,经常给不出合理的候选项。 另外一套C/C++代码编译套件是基于LLVM的clan
阅读全文
摘要:下载clang-format apt install clang-format, 默认会安装在usr/local/clang-format 下载vscode插件clang-format并配置为默认代码格式化器 在``.vscode/settings.json中添加: "editor.formatOn
阅读全文
摘要:备份一下opencv编译指令: tar -xzvf opencv-3.4.16.tar.gz cd opencv-3.4.16 mkdir build && cd build cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/opt
阅读全文
摘要:gcc是linux机器上的默认编译工具,但在有些时候版本不符合开发需求,就需要从源码编译相应版本的gcc,但是如果在离线断网环境下,需要修改一下默认的编译步骤,下面总结了整个编译步骤。 首先你得有一个编译器才能编译编译器 1. 下载GCC源码并解压 wget https://mirrors.tuna
阅读全文
摘要:问题:换了一台新机器,pull了源码进行了更新,然后配置了github的ssh key,但在push时还是提示要输入密码,但我已经在github上关闭了密码提交权限(出于安全和便捷考虑)。然后就提交失败了。 分析:可能是我是先pull的代码,然后才去设置的ssk key,导致本地仓库并没有同步到这个
阅读全文
摘要:在C/C++代码内捕获异常信号发出时的调用栈信息。 函数实现 #include <signal.h> #include <execinfo.h> static void backtrace_handler_V1(int sig) { void *array[128]; size_t size; //
阅读全文
摘要:1. 简单介绍 三月份的一个主要任务是学一门计算机科班的基础课程————《计算机组成原理》,在学之前对这部分的知识似懂非懂,没系统学过所以也不清楚它到底包含哪些知识点,但学完之后又能和本科时期学过的一些课程有了联系,比如最基础的模电和数电,想起之前课设的时候大家熬夜在宿舍做LED时钟显示器的情形,那
阅读全文
摘要:VSCode其实是一款编辑器,再加上一系列的扩展之后,就可以作为IDE使用了,而且很多轻量方便的扩展非常有用,特别是remote-SSH,已经成为远程开发linux程序必不可少的工具,我是用VSCode一般主要是写C++和Python,主要还是C++,所以相应的一些配置文件一直在用,但并没有仔细研究
阅读全文
摘要:0. 前言 八月份快要结束了,这个月也没有啥输出,今天下班较早,赶一篇学了一年多C++后的一些思考,关于修Bug的一些想法和思路。 平时工作中,如果写代码花费一天时间,那调试解决Bug可能有时候会花好几天、或许更长。此外,线上部署的服务如果出现崩溃或者返回异常的问题,也会反馈给相应的开发负责人,毕竟
阅读全文
摘要:## 第六章 继承与面向对象设计 32. 确定你的public继承塑模出is-a关系 public继承意味着要塑模出is-a的关系,所以每一个子类对象也是相应的父类对象,故适用于父类对象的每一个操作也都适用于子类对象。 33. 避免遮掩继承而来的名称 派生类中的名称(包括数据名称和函数名称(不考虑不
阅读全文
摘要:第四章: 设计与声明 ###18. 让接口更容易被正确使用,不易被误用 将你的class的public接口设计的符合class所扮演的角色,必要时不仅对传参类型限制,还对传参的值域进一步限制。 ###19. 设计class犹如设计type 内置类型如int、float等,本质也是一个class,用户
阅读全文
摘要:第三章 资源管理 C++中的资源管理非常重要,在将资源加载到内存后,便可以使用资源了,当我们不再需要资源时,我们要保证其正确的释放,才能将其占用的内存空间归还给操作系统,不正确的释放很容易造成内存泄漏。本章以资源管理类为基础,提出了以下几条准则,这章内容比较简单,大概总结一下: 13. 以对象管理资
阅读全文
摘要:第二章 类的构造、析构和赋值<、center> 今天是周六早上,但很不幸待会儿还是要去公司,本月kpi还剩一些工作要做,这个月计划的Effective C++学习,也基本完成了,最后一章节模板相关那部分还看不太懂,就大概过了一遍。现在是收尾总结阶段了。这本书的准则在这里我想尽量精简化,本篇主要是第二
阅读全文
摘要:
在做算法部署的过程中,我们一般都是用C++开发,主要原因是C++的高效性,而构建维护一个大型C++工程的过程中,如何管理不同子模块之间的依赖、外部依赖库、头文件和源文件如何隔离、编译的时候又该如何相互依赖这些问题,直接用Makefile实现是比较麻烦的。这个时候,CMake的优势就显现出来了,简洁的
阅读全文

摘要:第一章 让自己习惯C++ 4月份的任务之一是《Effective C++》这本书看完,这是22年的第二本书籍阅读计划,但最终只看到第30讲,五月份继续看,这里先对前面的内容做一些总结。这篇总结第一章节的内容——让自己习惯C++ 01:视C++为一个语言联邦 这个条款的意思是,c包含很多内容,是一个支
阅读全文
摘要:这部分是四月份的安排,拖到五一放假了,主要是对源码编译过程的一次总结,总的来说,大致可分为预编译、编译、汇编和链接四部分。这里简单记录一下: 一 概述 1、预处理 或者说是预编译,指的是在编译前需要做的一些处理,如宏替换、include替换等等,这部分没什么东西 每一个.c或.cpp源代码文件会生成
阅读全文
摘要:接上一篇在Python端的onnx模型验证结果,上一篇在Pytorch和onnxruntime-gpu推理库上分别进行效果效率统计分析,结论要比最初设置的50ms高很多,这一篇我将在C端写个测试代码进行推理验证。 ##一、onnxruntime的C库 AI模型部署肯定是要用C的,这是毋庸置疑的,目前
阅读全文
摘要:接上一篇完成的pytorch模型训练结果,模型结构为ResNet18+fc,参数量约为11M,最终测试集Acc达到94.83%。接下来有分两个部分:导出onnx和使用onnxruntime推理。 ##一、pytorch导出onnx 直接放函数吧,这部分我是直接放在test.py里面的,直接从data
阅读全文