
C/C++
围绕c,c++为主的各种知识技能
WenCoo
擅长linux下软件开发,qt,ffmpeg音视频二次开发。
展开
-
MQ-AMQP协议细则
通过图片可以看到,class和method是分开的两个字段,都有不同的定义,关于这两个字段,目前没有在协议中找到其具体定义,这作为开发的一个难点。虽然没有在rabbitmq官网找到这两个字段定义的值文档数据,但是在rabbitmq-c项目中,找到该项目对这些字段的定义,在文件。这个示例有一个问题数recv内容无法打印出来,看不到具体的回复数据,但是通过抓包工具,可以看到服务端是正确返回了。将文本转换成十六进制后,进行传输,通过抓包发现,如果按字符串传输,版本号。,如果按byte传输,则是。原创 2024-08-14 17:49:20 · 713 阅读 · 0 评论 -
wencoo个人的博客目录索引-更新
精简软件开发,电脑性能越来越好,打出的程序安装包越来越大,磁盘,内存越吃越多,这不是好现象,大家觉得呢,欢迎发表看法,各抒己见。欢迎各位叨扰作者,如果有什么项目合作,创业合伙需要研发,网站推广等等,尽管来联系,对于能挣钱的事,作者可是很感兴趣的哦。前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。欢迎加微信,搜索"wencoo824",进行技术交流,备注”博客音视频技术交流“劝大家一句,不要内卷,内卷只能害了别人,害了自己。原创 2024-04-02 11:02:25 · 1103 阅读 · 2 评论 -
详解C语言中的位操作运算符可以怎么用?
C语言提供了6个位运算操作符,这些运算符只能用于char、short、int、long类型。以下单引号里面的符号即为所提的6个位操作运算符。‘&’:按位与操作,按二进制位进行"与"运算;‘|’:按位或操作,按二进制位进行"或"运算;‘^’:按位异或操作,按二进制位进行"异或"运算;‘~’:按位取反操作,按二进制位进行"取反"运算;‘转载 2023-05-16 10:11:56 · 198 阅读 · 0 评论 -
go报错之被多次定义,使用阿里云与亚马逊云SDK中报错
在项目中,我使用到了阿里云的存储,亚马逊的存储,分国内国外版本,对接sdk是go版本的sdk,所以我将阿里云的go的sdk封装成一个c静态库,将aws的sdk封装成一个静态库,然后在业务程序中调用这两个静态库,然后报错如上。基于以上猜测,将阿里云的go的sdk和aws的go的sdk进行统一封装,在外部到处为一个静态库,这样就不会存在多次定义的问题了。猜想,是因为阿里云的sdk和aws的sdk,使用了go中同样的底层内容,然后加载两个静态库以后,造成了重复定义的错误。经过测试,问题解决。原创 2023-03-27 14:23:55 · 205 阅读 · 0 评论 -
【报错Error disabling address space randomization Operation not permitted】
百度查询,说是docker容器构建问题,需要加参数重新创建容器,确实,我的程序是在docker中运行的,同时也准备使用gpu,但是还没有接入相关代码,所以我觉得不是这个问题。在试试的状态下解决这个问题,没有线索进行分析我的vscode打开的文件夹是a,a/b文件夹下是源码,顶层CMakeLists.txt在b目录下重新vscode打开文件夹b,编译代码,使用gdb正常。原创 2023-03-11 17:26:32 · 796 阅读 · 0 评论 -
cmake-报错对abi cxx11char const未定义的引用
cmake代码报错内容如下产生此错误的原因之一是cmake中的子项目未加载成功。原创 2023-03-11 13:49:00 · 931 阅读 · 0 评论 -
MQ-8.AMQP 消费者消费数据实际应用中的一些问题
背景是这样的,使用amqp库,不光要消费,在消费之后,需要将消费结果上传到另一个队列,这个时候就需要一个生产者,将结果上传,所以一个业务流程中,会即有消费者,也有生产者,这个时候当调用到生产者的。为了解决该错误,同时使用,想了个临时解决办法,即使用rabbitmq-c的生产者来代替amqpcpp的生产者,经过测试,此时不会发生段错误。通过上述代码,我是没有看出来问题在哪里,消费者,生产者都是单独的实例,也用了锁,保证线程安全,不知为什么还会报段错误。原创 2022-12-16 11:43:20 · 440 阅读 · 0 评论 -
MQ-6.AMQP 消费者消费数据示例
直接上代码。原创 2022-12-16 11:42:33 · 334 阅读 · 0 评论 -
MQ-5.AMQP 生产者发布数据示例
生产者一项很重要的工作是创建队列,然后发布数据,在生产者代码中,函数的第二个参数需要着重了解一下,当参数为autodelete时,消费者的连接断开,则在服务端维持的通道则断开了,即使生产者的代码依旧在运行,没有报错,这个现象可以通过web的管理页面观察到。这个示例代码参考sdk中自带的libev示例代码修改而来。原创 2022-12-16 11:42:04 · 223 阅读 · 0 评论 -
MQ-3.AMQP server服务器搭建ubuntu20.04
在ubuntu16上搭建rabbitMQ环境安装rabbitMQ使web管理插件生效查看端口号创建账户使用浏览器访问rabbitmqctl 命令行操作用户相关权限相关虚拟环境相关命令状态信息查看相关列出服务状态报告report。原创 2022-12-16 11:40:30 · 229 阅读 · 0 评论 -
libcurl库的使用--使用https发送post数据 c++实现
使用curl库post数据,不加ssl证书验证的话,只需要加两行参数即可Http.h#ifndef _HTTP_H_#define _HTTP_H_#include <curl/curl.h>#include <string>#include <iostream>//#include "CJsonObject.hpp"using namespace std;//using namespace neb;struct MemoryStruct {原创 2021-06-07 22:04:45 · 2920 阅读 · 0 评论 -
交叉编译automake
交叉编译automake$ wget https://ftp.gnu.org/gnu/automake/automake-1.15.tar.gz$ tar -zxvf automake-1.15.tar.gz$ cd automake-1.15$ ./configure$ make -j8 $ sudo make install$ /usr/local/bin/automake-1.15 --version$ sudo ln -s /usr/local/bin/automa原创 2021-05-21 23:41:31 · 334 阅读 · 0 评论 -
交叉编译zlib glibc glib gettext
交叉编译zlib源码交叉编译zlib生成,方法如下:$ wget http://www.zlib.net/zlib-1.2.11.tar.gz$ tar -zxvf zlib-1.2.11.tar.gz$ cd zlib-1.2.11/$ export PATH=$PATH:/usr/aarch64-linux-gnu$ export CC=aarch64-linux-gnu-gcc$ export AR=aarch64-linux-gnu-ar$ export RANLIB=aarch64原创 2021-05-21 23:39:31 · 2424 阅读 · 12 评论 -
交叉编译dbus
交叉编译dbus1. 下载dbus和expat源码dbus: http://dbus.freedesktop.org/releases/dbus/expat: http://sourceforge.net/projects/expat/2. 交叉编译expat#./configure --host=armv6-rpi-linux-gnueabi --prefix=/opt/Rasp/expat$ ./configure --prefix=/usr/aarch64-linux-gnu --h原创 2021-05-21 23:37:26 · 2115 阅读 · 5 评论 -
交叉编译linevent
交叉编译linevent$ wget https://github.com/libevent/libevent/releases/download/release-2.0.22-stable/libevent-2.0.22-stable.tar.gz$ tar -zxvf libevent-2.0.22-stable.tar.gz$ cd libevent-2.0.22-stable/$ ./configure --prefix=/usr/aarch64-linux-gnu --host=aarch原创 2021-05-21 23:36:11 · 299 阅读 · 0 评论 -
C语言隐式函数声明带来的错误实例(当隐式声明遇到printf)
关于C语言隐式函数声明的基本问题,请参见我的博文万恶之源:C语言中的隐式函数声明。 下面是最近遇到的一个实例之一。 client_sock = accept(server_sock, (struct sockaddr*)&client_name, &client_name_len); printf("from %s:%d\n", inet_ntoa(client_name.sin_addr), client_name.sin_port);12上述代码段摘自一个网络侦听转载 2020-06-18 09:53:11 · 2667 阅读 · 0 评论 -
libcurl库的使用--使用http的post发送二进制数据文件
书接上文使用libcurl进行文件上传文件有几种不同的方式都可以实现,鉴于和后台对接是采用的http的post方式进行上传,因为要做断点续传啊。问题来了:上传文本文件,多大都没有问题,能够上传,然后上传一个tar.gz的压缩文件,就无法上传,能够正常发送的数据只有3B,难道是这种格式的数据无法上传???不科学啊,人家别人都用的好好的,没有这个问题,所以一定还是我的问题,那么就从自己身上找问题...原创 2020-03-16 17:05:11 · 5066 阅读 · 1 评论 -
Libcurl库的架构思考
一个好的架构会让程序清晰明了,逻辑条理清楚,不会写着写着自己都懵逼了,根据最近自己做的一个项目,现总结一个基于libcurl库的通讯架构。架构分层如下:=====================================================Libcurl库报错层=====================================================Da...原创 2020-03-15 11:21:32 · 206 阅读 · 0 评论 -
ctags的使用--只需要三步
cd 项目目录ctags -R * //在当前目录下生成tags文件vim ~/.vimrcset tags=/项目路径/tags //增加此行后保存原创 2020-03-10 16:39:29 · 420 阅读 · 0 评论 -
信息安全--LD_PRELOAD无法捕获网络数据问题
问题:做物理机操作行为捕获,使用LD_PRELOAD,目前,对机器操作的捕获有如下接口:int (*realopen)(const char *pathname, int flags, int mode);int (*realrename)(const char *oldname, const char *newname);int (*realunlinkat)(int dfd, con...原创 2020-02-21 10:41:11 · 590 阅读 · 0 评论 -
toroisesSVN源码阅读分析--mkdir
toroisesSvn源码阅读分析此次源码阅读想要弄清楚的问题是这个小乌龟软件(toroisesSvn)在上传文件的时候,做了哪些操作?问题分析:通过我之前的记录知道,采用http方式上传文件,采用了http的标准协议,所以,我们重点查看,是如何使用post或者put进行文件上传的。博客链接:https://blog.youkuaiyun.com/bootleader/article/details/9...原创 2020-02-19 12:34:43 · 742 阅读 · 0 评论 -
ipv6系列--本机ipv6环境搭建
系统环境:centos7.5 kernel:3.10.0-862.el7.x86_64Note:centos的最小化安装没有ipv6的内核模块,需要自己加载模块,所以我重新装了系统,选择的开发系统,其中勾选了网络相关的所有组件,ipv6也在其中。查看服务器是否加载ipv6模块lsmod | grep ipv6如没有任何回显,则说明没有加载加载ipv6模块...原创 2019-12-14 01:23:37 · 1341 阅读 · 0 评论 -
c语言-单项链表
一直以来,工作也3年多了,链表这个东西感觉上是比较难的,之前都是做c++,qt什么的,也用不到,有现成的list,自己也是几乎用不到就不去写,现在用c开发,就很常见了,这个一定要学会的,下面是自己写的一个单项链表,还算比较顺手,特此记录,这里要说一下,网上的链表节点查找都是查找某一特定位置的节点信息函数,而不是根据某一值,获取其节点的函数,所以现在我自己做了改良.cvoid ftplis...原创 2019-12-09 10:32:50 · 261 阅读 · 0 评论 -
c语言可变数组char[]的使用
看到同事一段接口代码,一脸懵逼,有这样一个结构体typedef struct cache_rsp{int ret;unsigned int len;char data[0];}cache_rsp_t;这个结构体的设计是用来接收服务器报文回复数据的,接收的数据存放在data这个字段中,我是小白,不能理解,怎么都看不懂。终于在一番百度之后,查找的到了这种结构...转载 2019-11-14 14:46:38 · 2057 阅读 · 0 评论 -
Libcurl库的使用
Libcurl库的使用简单的概念,具体的使用就不细说了了,网上有一大堆,自行参考,下面记录一些使用中的注意的点,以免下次踩坑常用的curl_easy_setopt设置使用http的post发送数据需要设置如下参数:curl_easy_setopt(curl,CURLOPT_URL,url);curl_easy_setopt(curl,CURLOPT_POST,1);cu...原创 2019-10-10 18:35:29 · 846 阅读 · 0 评论 -
简小的C++基础--重载运算符2
#include #include #include #include using namespace std;class String{public: String(){p = NULL;} String(char *str){p = str;} friend bool operator>(String &string1,String &string2原创 2017-05-21 21:45:41 · 210 阅读 · 0 评论 -
strcmp was not declared in this scope(转)
As detailed in the Header dependency streamlining, originally found here, many of the standard C++ library include files have been edited to only include the smallest possible number of additional fil转载 2017-05-21 19:14:37 · 2316 阅读 · 0 评论 -
简小的C++基础--重载运算符1
#include using namespace std;class Complex{public: Complex(){real = 0;imag = 0;} Complex(double r,double i){real = r;imag = i;} friend Complex operator+(Complex &c1,Complex &c2); void display();privat原创 2017-05-18 21:19:47 · 379 阅读 · 0 评论 -
Qt---log日志框架(2)从性能考虑文件操作
做了一个小的测试工具,可以查看log,点击查看log,会选择系统默认的编辑器打开log,同时就问了我一个问题,为什么打开log后,删除文件内的日志,在产生的日志就不能写到日志里了?对于这个问题,是由于在写入日志的时候,只打开了一次log,对log做操作,破换了log,所以不能继续写入。要解决这个问题,只需要在写入log时,每次打开一次文件即可。但是,随之而来的问题便是频繁的对文件执行打开操作与只打原创 2017-05-09 22:04:32 · 2908 阅读 · 0 评论 -
QML中的JavaScript用法详解(一)-----在qml中将字符串类型数据转换为整型数据
在c++中,context下发一组数据,是字符串型的,但是我需要在qml中进行判断,所以要将字符型数据转换为整型。查找js中将字符串转换为整型的方法,参照js的方法,使用Numbwe()函数,强制类型转换,实现了该需求。 //交易记录中的交易类型判断 function tradeRecordTradeType(type) { var typeNum原创 2017-05-11 16:46:23 · 13174 阅读 · 0 评论 -
Qt错误锦集--Cannot retrieve debugging output
描述:Qt Creator的问题,两个IDE同时打开,后打开的会出现这个情况解决方案:只打开一个IDE。转载 2017-04-17 22:12:44 · 988 阅读 · 0 评论 -
Qt错误锦集--Connection refused
照着书上的例程敲了一个文件传输的tcp程序,但是却出现了Connection refused这个错误,我使用的环境是win7+qt mingw server.cpp#include "server.h"#include "ui_server.h"#include Server::Server(QWidget *parent) : QMainWindow(par原创 2017-04-17 22:10:05 · 5948 阅读 · 4 评论 -
Qt---log日志框架(1)
打印log经常会用到,这是架构中的一部分,也必须要掌握。做一个良好的架构。.h文件#include #include #include #include #include class Log : public QObject{ Q_OBJECTpublic: explicit Log(QObject *parent = 0); void原创 2017-04-17 16:50:11 · 7710 阅读 · 0 评论 -
Qt--QWebSocket判断是否连接成功
使用QWebsocket去连接server,首先在构造函数中做槽连接HMWebSocket::HMWebSocket(QObject *parent) : QObject(parent){ connect(&socketClient,SIGNAL(connected()),this,SLOT(onConnected())); connect(&socketClient,SIG原创 2017-04-09 22:04:06 · 13450 阅读 · 4 评论 -
状态机思路在程序设计中的应用
状态机思路在单片机程序设计中的应用状态机的概念状态机是软件编程中的一个重要概念。比这个概念更重要的是对它的灵活应用。在一个思路清晰而且高效的程序中,必然有状态机的身影浮现。比如说一个按键命令解析程序,就可以被看做状态机:本来在A状态下,触发一个按键后切换到了B状态;再触发另一个键后切换到C状态,或者返回到A状态。这就是最简单的按键状态机例子。实际的按键解析程序会比这更复杂些转载 2017-06-09 14:35:12 · 1135 阅读 · 0 评论 -
读取身份证
这份代码,主要是根据api文档来写的,文档上提供了各个方法的使用说明,并且有一个示例代码。以及网上找到的代码。 首先,需要2个dll,sdtapi.dll,用来读取身份证上的基本信息;WltRS.dll,用来解析照片,身份证上的照片。这两个文件放在bin目录的debug中,或者release中。然后对于sdtapi.dll该动态链接库,若用的是2004年左右的,需要一个temp.li转载 2017-07-17 17:21:34 · 4176 阅读 · 0 评论 -
opencv 自学日记4-像素操作例程Demo
前期的学习应该多学习一些东西,尽管初期的人脸识别应该用不到像素级的操作,但还是是要了解一下,并无坏处。直接上代码:#include "mainwindow.h"#include <QApplication>#include <iostream>#include <stdio.h>#include "opencv2/opencv.hpp"...原创 2018-07-09 21:49:36 · 297 阅读 · 0 评论 -
深入理解汉字编码问题---解决为编码而头疼
本文参考引用的其他博主的段落,均归其原创作者。背景:在做网络通信的时候,总是会遇到各种样的编码格式问题,头疼不已,这次,为了一个中文的unicode转utf-8而头疼了两天,算是弄懂了其中的一部分理解吧。首先我们要区分清楚很多概念,才不至于迷惑,才能理清楚这个问题,否则,我的脑袋就是一团浆糊。1. 什么是utf-8?UTF-8(8位元,Universal Character ...原创 2019-09-27 19:17:28 · 1378 阅读 · 0 评论 -
比较优秀的C/C++开源框架
本文转载至百度,其中介绍了一些c++的框架,觉得很齐全,特此发个博客进行记录。其中我用过qt,感觉很不错,但不能将qt的单个模块提取出来,当作一个库的融入自己的c++程序中,可能是自己实力不够吧。看到此文的大牛们,对于将qt的单个模块提取融入c++程序,你们有什么想法,欢迎留言交流。原文链接:http://baijiahao.baidu.com/s?id=159609639323135...转载 2019-07-13 00:10:15 · 2187 阅读 · 0 评论 -
automake创建c项目,python项目的makefile
目录入门教程(c/c++,bin) 2进阶教程(python,bin): 4编译生成so(c/c++,so) 5入门教程(c/c++)环境:centos7.5安装automake创建hello word程序执行autoscanmv configure.scan configure.ac修改configure.ac内容添加AM...原创 2019-05-16 22:35:46 · 548 阅读 · 0 评论