摘要:
之前一直是将这类开发环境配置步骤记录在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; // 阅读全文
摘要:
昨天在安卓设备上运行在服务器上交叉编译的代码时,在初始化时崩溃,逐层printf后发现在一个类实例调用初始化函数后崩溃。函数很简单,只是将两个float成员变量赋值。返回类型被设置为int,但忘记在函数体最后写return 0;了。加上之后,崩溃未出现了。 如下列函数: int init(float 阅读全文
摘要:
1. JNI原理概述 通常为了更加灵活高效地实现计算逻辑,我们一般使用C/C++实现,编译为动态库,并为其设置C接口和C++接口。用C++实现的一个库其实是一个或多个类的简单编译链接产物。然后暴露其实现类构造方法和纯虚接口类。这样就可以通过多态调用到库内部的实现类及其成员方法。进一步地,为了让不同库 阅读全文