编程语言
代码不好读啊
不擅长编码还硬要挤进软件行业的呆子
展开
-
webrtc 国内镜像编译
https://blog.csdn.net/freeabc/article/details/106451174转载 2021-02-09 13:47:11 · 427 阅读 · 0 评论 -
ffmpeg rtp转rtmp仿真
ffmpeg -re -i ~/test.webm -vcodec copy -an -f rtp rtp://233.233.233.223:11111 -vn -acodec copy -f rtp rtp://233.233.233.223.11112 > test.sdpffplay -protocol_whitelist "file,http,https,rtp,udp,tcp,tls" test.sdp原创 2021-02-03 21:09:33 · 673 阅读 · 0 评论 -
nats streaming 消息队列实践(一)
为了保证信息队列的可靠性,nats集群部署,并且在nats集群的基础上部署nats-streaming集群,确保消息不会被漏掉相关部署配置放在https://github.com/lmxlmx/nats-streaming-cluster相关配置参考:(1)https://hub.docker.com/_/nats-streaming/(2)https://docs.nats.io/nats-streaming-concepts/intro这些配置都是英文的,可能需要反复琢磨...原创 2020-11-30 11:04:09 · 750 阅读 · 0 评论 -
x86+nvidia 到 Arm+Atlas适配流程
目前流程已被我发布在华为开发者论坛上请参考博客:https://bbs.huaweicloud.com/blogs/194511转载 2020-08-18 13:44:04 · 599 阅读 · 0 评论 -
aggregate std::ostringstream os has incomplete type and cannot be defined
aggregate 'std::ostringstream os' has incomplete type and cannot be defined编译代码时,对于iostream类型,可能会出现类似的问题这时我们只需要在添加头文件引用 #include <sstream>就可以了原因:iosfwd中ostringstream的定义如下:typedef basic_ostringstream<char> ostringstream;而basic_o...原创 2020-06-19 14:23:49 · 7708 阅读 · 0 评论 -
基于arm64 docker的华为Atlas软件运行,Atlas device映射
对于Atlas软件的编译环境的构建方法已在我之前的博客中介绍了https://blog.csdn.net/u011337602/article/details/103909620仅仅是编译还不能满足我们的需求,因为我们还希望能将软件完整部署到华为泰山服务器上,但是有一个问题就是docker如何访问atlas的硬件设备。对于atlas来说,驱动安装成功后,会在服务器/dev目录下找到...原创 2020-01-09 17:27:17 · 1546 阅读 · 0 评论 -
基于arm64v8/ubuntu:18.04搭建华为ATLAS软件编译运行环境
之前介绍了x86上搭建arm64代码编译环境的方法具体如下https://blog.csdn.net/u011337602/article/details/103810657如果还需要做华为ATLAS的代码工程编译,还需要在容器内添加ATLAS host侧lib库1、获取Atlas300-ARM-Ubuntu18.04-V2.0.0.102.020.zip包,可以在华为官网上找到,不...原创 2020-01-09 15:52:09 · 1388 阅读 · 0 评论 -
在x86服务器上 搭建基于docker的arm64程序编译和运行环境
docker 镜像:multiarch/qemu-user-static:registerarm64v8/ubuntu:18.04必要的组件:qemuhttps://github.com/multiarch/qemu-user-static 下载qemu-aarch64-static通常在x86环境上运行arm64的docker是会报错的:报错信息如下st...原创 2020-01-02 20:27:29 · 6809 阅读 · 1 评论 -
C++循环创建文件所在文件夹
bool ImgprocTask::CheckPathExist(std::string path){ if(access(path.c_str(),0) == -1) { return false; } return true;}void ImgprocTask::CreateDir(std::string filepath){ ...原创 2019-10-22 17:56:32 · 630 阅读 · 0 评论 -
【待完成】python中IPC通信库sysv_ipc
安装 pip3 install sysv_ipc先写标题,等研究后再写具体的使用方法具体可参考http://semanchuk.com/philip/sysv_ipc/另外作者还写了posix_ipc,与sysv_ipc类似,可以都尝试一下...原创 2019-08-09 16:26:03 · 1621 阅读 · 0 评论 -
【待完成】python插件化开发
https://blog.csdn.net/python_lqx/article/details/90737076https://www.jianshu.com/p/6fd5b540418b最近项目中有不少接口一样但实现逻辑各不相同的组件,想着吧组件搞成插件一样的,这样可以方便编排先写个名字吧,提醒自己需要学习,等有一些成果了,再把心得贴上来...原创 2019-08-13 20:30:07 · 322 阅读 · 0 评论 -
【待完成】pybind11资料
pybind11资料如下,后期我学习有一定心得的时候会推出相关资料总结https://pybind11.readthedocs.io/en/latest/原创 2019-08-16 14:47:24 · 393 阅读 · 0 评论 -
python 浮点数数组和二进制文件互转
我们拿一张图片的宽、高以及缩放比例的数组来举例 [562,1000,1](1)python读取二进制文件,并将文件中数据转成浮点数数组 import struct f=open('im_info.bin','rb+') str=f.read() len_s = len(st) data = struct.unpack(('...原创 2018-11-22 19:52:28 · 5257 阅读 · 0 评论 -
union 联合体在数据转换中的妙用
union(联合体)有点类似struct(结构体),但union内存使用方式与struct有很大的区别,从而决定了它的功能也是有很大的区别struct的内存分配方式是最长成员对齐方式分配的,struct的成员都占用内存空间。union的成员是共用内存空间的,因此union的成员在内存上的表现形式实际上是同一个东西,这样也为不同数据之间转换提供了方便。如下是一种union定义,通过这个u...原创 2018-11-27 11:11:56 · 2389 阅读 · 0 评论 -
C/C++获取文件大小并读取文件所有内容
FILE *f = fopen( path, "rb" );size_t size = 0;fseek(f,0L,SEEK_END);size=ftell(f);fseek(f,0L,SEEK_SET);void *buf = malloc( size );fread( buf, 1, size, f ) == size原创 2018-12-06 10:20:44 · 4345 阅读 · 0 评论 -
git pull -r 后后悔更新,希望回到原来的状态
本地改动后,改动本地commit后,执行git pull -r 后可能会引入其他人的改动,但是又不希望别人的改动对你的测试有所影响,所以希望能将中间的一些commit 给drop掉操作步骤:git log 查看commit id 信息git rebase -i commit_id commit_id为要drop掉的commit的前一次的commit id进入GNU编辑界面查...原创 2019-08-27 14:35:06 · 4306 阅读 · 0 评论 -
pybind11中文资料(第五章 面向对象的代码)
在此我要特别感谢pybind11项目创立者Wenzel Jakob以及众多项目参与者5面向对象的代码5.1创建自定义类型的绑定现在来看一个更复杂的例子,这个例子为名为Pet的自定义数据结构创建绑定。Pet定义如下:struct Pet { Pet(const std::string &name) : name(name) { } void setNa...翻译 2019-08-19 23:32:00 · 3039 阅读 · 0 评论 -
pybind11中文资料(第四章 第一步)
在此我要特别感谢pybind11项目创立者Wenzel Jakob以及众多项目参与者4 第一步本节演示了pybind11的基本功能。在开始之前,请确保已设置开发环境并编译测试用例集。4.1 编译测试用例4.1.1Linux/MacOSLinux系统,需要安装python-dev或python3-dev软件包以及cmake。Mac OS,包含的python版本可直接使用,但仍然...翻译 2019-08-17 22:04:31 · 3761 阅读 · 2 评论 -
pybind11中文资料(目录+第一章 关于本项目 第二章、第三章)
之前给了自己立下了目标,要把pybind11资料整理一下,我就把英文的资料翻译一下,当然了,限于本人英语水平,肯定是需要百度翻译和谷歌翻译等翻译工具的帮助的,我尽量将我理解的意思翻译下来,如果有一些翻译不当的地方也欢迎大家斧正。今天我们就先翻译目录和第一章,通过目录我们可以看到pybind11资料整体内容,第一章虽对我们的实践影响不大,但可以通过第一章可以了解pybind11为我们提供了哪些特...翻译 2019-08-17 17:34:27 · 2644 阅读 · 0 评论 -
hostname转ip功能
bool hostname2ip(const std::string hostname, std::string &ip){ struct hostent * hptr; struct in_addr * addr_list; hptr=gethostbyname(hostname.c_str()); if(hptr==NULL) { ...原创 2019-08-16 11:53:27 · 1426 阅读 · 0 评论 -
共享内存
共享内存头文件为shm.h共享内存可以视为进程间通信速度最快的方式共享内存实现函数非常简单,shmctlshmgetshmatshmdt 这四个函数是共享内存功能的核心函数# define __pid_t_defined# endif#endif /* X/Open */__BEGIN_DECLS/* The following System V style...原创 2019-08-06 18:45:19 · 178 阅读 · 0 评论 -
手动加载动态链接库
手动加载动态链接库常用于插件式架构开发dlfcn.h头文件提供了api以下我们给出常用的4个函数/* Open the shared object FILE and map it in; return a handle that can be passed to `dlsym' to get symbol values from it. */extern void *dlop...原创 2019-08-02 11:41:35 · 881 阅读 · 0 评论 -
cython 使用cmake管理
我喜欢给自己开发的C++组件写个python接口,这样我可以利用python来直接对写的组件做一些简单测试。C++程序的python接口有很多实现方式ctypes、Boost.Python、SWIG、cython等,都挺不错的,我比较熟悉cython,因为已经入坑了,暂时还是用熟悉的吧,等把cython用透了,在实践的基础上发现其局限性,再考虑使用其他的方式吧。废话不多说,咱们直接聊聊c...原创 2019-07-24 11:28:13 · 1366 阅读 · 0 评论 -
cuda lib64和stubs目录下存在同名so 引起cmake错误
错误提示CMake Warning at cmake/FindCUDA.cmake:1649 (add_library): Cannot generate a safe runtime search path for target test because files in some directories may conflict with libraries in implicit...原创 2019-07-19 16:48:59 · 3034 阅读 · 4 评论 -
学习人工智能代码的利器 nsight
前两天看到有人为学人工智能专门用pycharm和docker搭建了一个独立的环境,恩,想法相当不错,这样学习者就可以在docker里随便玩了。但是这个环境看python的代码比较友好一点,要看一些例如cuda的代码,还是不太友好。作为小白,一个良好的IDE是极为重要的。本博客向大家推荐nsight 这个IDE,nsight是nvidia基于eclipse推出的专门用于cuda代码编辑的IDE,...原创 2019-03-01 16:34:21 · 1400 阅读 · 1 评论 -
段错误(核心已转存)问题定位手段积累
最近在跟同事一起联调多线程的软件,联调过程中出现很多段错误的问题,以前很傻很天真以为用打印就可以定位问题了,到实际问题中,还得使用一些专业的工具才能提高定位问题的效率。以下是使用ulimit定位段错误问题的方法ulimit -c或者ulimit -a 查看core file 文件大小,如果为0表示core dump功能关闭需要使用ulimit -c unlimited 来打开使用...原创 2018-12-11 14:46:49 · 2302 阅读 · 2 评论 -
递归锁 std::recursive_mutex和std::lock_guard结合使用
最近做redis连接池的时候,需要加锁保证redisContext在同一时刻只能被一个线程使用但是在加锁的时候头疼了,有一些针对redisContext的操作是相互调用的,而这些操作也都是需要可以独立进行的。简单来说,问题就是:加锁的操作需要相互嵌套,如果使用std::mutex 肯定会导致死锁,而重构代码,提取出共用部分的工作量又很大。这个时候我发现了好东西std::recursi...原创 2019-08-28 11:13:04 · 11563 阅读 · 4 评论