C/C++
文章平均质量分 60
帅得不敢出门
省略1万字
展开
-
记录ssl epoll的tcp socket服务端在客户端断开时崩溃的问题
记录ssl epoll的tcp socket服务端在客户端断开时崩溃的问题.流程:在linux服务器上跑socke服务, 客户端连接后发送数据,服务端回复, 客户端接收到回复后关闭.原创 2024-09-05 16:29:56 · 702 阅读 · 0 评论 -
ESP32-IDF http请求崩溃问题分析与解决
ESP32S3板子, 一运行http请求百度网站的例子, 就会panic死机, 记录下过程.原创 2024-08-29 10:45:48 · 843 阅读 · 0 评论 -
Qt QTextEdit调用append数据重复的问题
使用QTextEdit写了个串口工具, 当串口有数据时通过一个signal传给slot,在 slot中调用QTextEdit的append(text)来增量显示串口数据,当串口关闭时调用clear()来清空显示。结果发现append调用后显示的数据会有重复。原创 2024-08-20 11:32:11 · 394 阅读 · 0 评论 -
ESP32代码开发入门
esp-idf esp-adf环境搭建, 开发注意事项CMakeLists.txt中加REQUIRES pthread进行库连接。.c文件中#include 进行头引用。esp_http_client是httl库。用到哪个component就加上.以线程库pthread为例。mbedtls是ssl库.json是cJSON库。原创 2024-06-27 11:33:17 · 347 阅读 · 0 评论 -
mfc使用gsoap访问python端webservice服务及中文乱码问题
客户端用MFC加gsoap实现,服务端用python用spyne库实现, 解决mfc转中文给python后python端显示乱码问题。原创 2024-04-28 15:15:36 · 1231 阅读 · 1 评论 -
HMAC-SHA1加密算法c++与java的实现
HMAC-SHA1是日常用的比较多的一种加密算法,比如与https服务器交互时,数据会使用此方法进行加密,有时候客户端与服务器用的是不同语言实现的,单方面不好验证,故找了多语言的实现。那么对应的客户端多数用的是c++或java。后面可能还有其他附加算法,忽略不讨论。比如服务器是Apache,两种实现,输出结果一样。原创 2023-02-04 16:42:15 · 1723 阅读 · 0 评论 -
Makefile c与c++多后缀自动推导
假设目录中有b.cpp, main.cppMakefile可为如下:.PHONY : all cleanCC = g++TARGET = test.outCFLAGS = -O2# 代表所有的.cpp文件src_cpp := $(wildcard *.cpp)# 代表.cpp文件对应的.o文件objects_cpp := $(src_cpp:.cpp=.o)objects := $(objects_cpp)# .o依赖对应的.cpp%.o : %.cpp $(CC) -c原创 2021-09-09 18:26:18 · 196 阅读 · 0 评论 -
算法-最长公共前缀
题目编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入:strs = [“flower”,“flow”,“flight”]输出:“fl”示例 2:输入:strs = [“dog”,“racecar”,“car”]输出:""解释:输入不存在公共前缀。提示:0 <= strs.length <= 2000 <= strs[i].length <= 200strs[i] 仅由小写英文字母组成来源:力扣(LeetC原创 2021-05-13 20:01:41 · 151 阅读 · 0 评论 -
算法-整数转罗马数字
题目罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通原创 2021-05-13 17:49:03 · 130 阅读 · 0 评论 -
c++对yuv图片缩放
代码image_convert.cpp, 使用ffmpeg库extern "c"{#include "libavcodec/avcodec.h"#include "libavformat/avformat.h"#include "libavutil/avutil.h"#include "libswscale/swscale.h"#include "libavutil/imgutils.h"}#include <stdint.h>//g++ ./image_convert.翻译 2021-04-26 11:37:16 · 1121 阅读 · 0 评论 -
c++万能但释放内存时痛苦的void *指针及替代方案
void *在c/c++中可以说是万金油的存在,无论什么类型的数据都可以塞给它,但是释放的时候,却需要知道具体的类型,才能调用delete去释放,直接delete void *的指针是未定义的有可能会导致内存泄露。如果编译器支持c++17, 可用std::any来代替void *, 如果编译器只支持c++ 11可以用shared_ptr来替代。下面以shared_ptr来做为例子释放void *要知道原来申请的对象是什么类型,伪代码如下:void *p = new xx;if p is A:原创 2020-11-11 18:14:50 · 2322 阅读 · 0 评论 -
linux进程间通信unix socket示例代码(绑定本地文件到套接字,无端口)
进程间通信,双向通信,1. 管道,使用管道需要开两个,一个用于收,一个用于发,另外就是需要设置成非阻塞,不然read, write函数都会挂住等待对方读或写,还有数据无法清空,如果有数据未读完,读进程一启动就会收到旧的数据。2.dbus通信,也是要开两路,还有就是与环境相关,遇到过在pc端正常通信,在arm端无法通信的问题,可能是某些配置文件需要修改最后找到了unix domin socket来进行进程间IPC通信,与网络socket不同,它不需要占用端口,只需绑定一个文件NAME(名称)..原创 2020-09-12 01:17:51 · 1212 阅读 · 0 评论 -
dbus双向通信示例c代码
网上大部分都只有单向转输的例子,双向通信对busname, interface, path等赋值有些讲究,不然容易出现初始化失败,或者无法收发的,源码如下:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <dbus/dbus.h>#include <pthread.h>struct DBus{原创 2020-09-11 23:41:47 · 1777 阅读 · 3 评论 -
c/c++静态代码检查未使用函数
简介检查unused的代码没有完美的解决方案,介绍比较多的是代码覆盖率检查工具,不能通过直接分析代码得到,需要代码运行起来。静态代码检查的方式介绍比较少,这里推荐一种,那就是使用cppcheck工具代码test.h#ifndef __TEST_H__#define __TEST_H__void Test();int Func();#endif /*__TEST_H__*/...原创 2020-04-05 10:09:51 · 3049 阅读 · 0 评论 -
交叉编译zint并在qt中显示条码
下载源码 https://sourceforge.net/projects/zint/tar -xvf zint-2.6.7.tar.gzcd zint-2.6.7/backend_qt/若不依赖png,则编辑backend_qt.pro DEFINES += ZINT_VERSION="\\\"2.6.7\\\"" 改成 DEFINES += NO_PNG ZIN...原创 2019-11-28 09:50:00 · 1007 阅读 · 2 评论 -
rapidjson简单封装
rapidjson是腾讯开源的解析json的高效c++库,这里做个简单的封装,除去每次解析时都要先判断结点是否存在再读取的麻烦github地址因为是封装,所以依赖rapidjson,请自行下载rapidjson源码,使用示例如下const char *JSON = "{" ""double":100.11," ""int":200," ""str":"Hello World"," "...原创 2019-11-23 12:51:46 · 420 阅读 · 0 评论 -
vector test(4)为什么会调用type的默认构造
/*作者:帅得不敢出门 *出处:C++爱好者灌水天堂 群号3503799 */问题出自群里,vector test(4)为什么会调用type的默认构造,调用4次挎贝构造不就结了? 分析如下调试过程 从1开始 看//注释后面标号vector test(4)为什么会调用type的默认构造#include #include #include using namespace s原创 2010-05-21 23:59:00 · 755 阅读 · 0 评论 -
修改vim插件xptemplate自动生成代码的格式
主要讲下c/c++的,xptemplate c++会有些代码会帮你自动完成,但是代码格式可能并不是我们想要的,怎么办,可以通过修改配置解决1)修改()中的空格假设是c++(只针对c++)则在ftplugin/cpp下新建个.vim文件 .vim/ftplugin/cpp/zm.vim添加如下内容:XPTemplate priority=personalXPTvar $SPa原创 2018-05-10 09:45:11 · 447 阅读 · 0 评论 -
google测试框架gtest编译与示例
环境linuxgit clone https://github.com/google/googletestcd googletestmkdir buildcd build默认是生成静态库执行cmake ../-- The CXX compiler identification is GNU 4.8.5-- The C compiler identificatio原创 2018-05-10 09:45:14 · 2361 阅读 · 0 评论 -
c++超级好用的回调signal slot
用过Qt的应该都知道,signal slot,用来做解耦及回调超级好用,如果没有Qt怎么办,可以用c++11的功能实现,当然网络上已经有许多实现,可以直接用的。比如:https://github.com/pbhogan/Signals示例代码:// Using Delegate.hvoid MyFunc( int x ){ printf( "MyFunc( %d )...原创 2018-09-13 14:49:09 · 2246 阅读 · 0 评论 -
c++ 容器中管理存放继承类对象的智能指针
需求:多种继承类/子类 对象共同存放于容器中, 要求能push进不同对象,pop出来后能实现多态。实现分析:这种情况就得容器中存放基类指针,但是存放指针就意味着得自己管理内存,主动释放。 有没有方法让c++自己去管理呢,答案是用智能指针。示例代码: 容器中存放的是unique_ptr, pop出来后可以转成shared_ptr给外界去调用。超级方便#include <s...原创 2018-09-21 12:24:07 · 2346 阅读 · 0 评论 -
std::list为空时调用pop_front的访问越界问题
std::list为empty时调用pop_front导致程序崩溃如果list中装的是指针,当其为empty时,再调用pop_front可能会返回一个非NULL的值,此时直接使用这个返回的指针会导致内存越界。#include <stdio.h>#include <stdlib.h>#include <iostream>#include <list...原创 2019-05-23 10:53:21 · 2728 阅读 · 0 评论 -
Binary String Matching
Binary String Matching 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 Given two strings A and B, whose alphabet consist only ‘0’ and ‘1’. Your task is only to tell how many tim原创 2018-05-10 09:45:03 · 142 阅读 · 0 评论 -
mqtt的开源实现mosquitto的交叉编译与使用
mqtt协议是最近比较流行的即时推送的协议到 http://mosquitto.org/download/ 下载源码或者跟我一样我直接下git$ git clone git://git.eclipse.org/gitroot/mosquitto/org.eclipse.mosquitto.git$ cd org.eclipse.mosquitto/ 编译pc平台的$ ma原创 2018-05-10 09:44:39 · 5891 阅读 · 0 评论 -
gsoap:import: Cannot open file "stlvector.h" for reading
soapcpp2 -i bike.h 问题:** The gSOAP code generator for C and C++, soapcpp2 release 2.8.17r** Copyright (C) 2000-2013, Robert van Engelen, Genivia Inc.** All Rights Reserved. This product is原创 2018-05-10 09:44:36 · 690 阅读 · 0 评论 -
程序猿飞机加油绕地球题目
老题目了,经过群友变种后成这样:每个飞机只有一个油箱,飞机之间可以相互加油(注意是相互,没有加油机),一箱油可供一架飞机绕地球飞半圈。 问:为使至少一架飞机绕地球一圈回到起飞时的飞机场,至少需要出动几架飞机? (所有飞机从同一机场起飞,而且必须安全返回机场,不允许中途降落,中间没有飞机场)俺的解法:1.三架飞机ABC起飞,1/8处,每机用油2/8箱,C留2/原创 2012-02-20 14:53:40 · 1093 阅读 · 0 评论 -
不错的c/c++静态检查工具cppcheck
作者:帅得不敢出门 C++哈哈堂群31843264 转载请保留此信息CppcheckCppcheck is an analysis tool for C/C++ code. Unlike C/C++ compilers and many other analysis tools, we don't detect syntax errors. Cppcheck only dete原创 2010-12-24 15:16:00 · 2337 阅读 · 1 评论 -
valgrind试用手记
作者:帅得不敢出门 C++哈哈堂群31843264 转载请保留此信息valgrindValgrind is an instrumentation framework for building dynamic analysis tools. There are Valgrind tools that can automatically detect many memory manag原创 2010-12-24 15:32:00 · 1668 阅读 · 0 评论 -
mupdf源码分析
作者:帅得不敢出门 C++哈哈堂 群31843264 转载请保留此信息只是粗略地说了下,其实谈上不分析,先列几个比较主要的结构体struct fz_obj_s{ int refs; fz_objkind kind; union { int b; int i; float f;原创 2010-12-17 10:49:00 · 7150 阅读 · 13 评论 -
交叉编译fbv图片浏览器
作者:帅得不敢出门 C++哈哈堂群31843264 转载请保留此信息到官网http://freshmeat.net/projects/fbv/下载最新的fbv源码,fbv-0.99.tar.gz http://sourceforge.net/projects/giflib/下载giflibhttp://www.libpng.org/pub/png/libpng.html下载原创 2010-12-21 11:03:00 · 2395 阅读 · 0 评论 -
最"小"的程序--内嵌汇编实现的hello world
/*作者:帅得不敢出门 程序群 3503799 看了程序员的自我修养 --链接 装载 与库 后写的直接使用系统调用实现打印hello world kernel 2.6.23原理:写stdout来实现输出 stdout对应fd是1不是0 这个书中有误 smlinkage ssize_t sys_write(unsigned int fd, const char __user原创 2010-04-04 20:04:00 · 1063 阅读 · 0 评论 -
程序员的自我修养:链接、装载与库读后所感
作者:帅得不敢出门 程序群 3503799 一次在图书馆书架间穿梭,在新书书架上看到这本书,承认当时只是被>中的程序员的自我修养这几个字所吸引,副标题在黑色封面下显得力不从心。 匆匆翻看了下,描述的内容是以前从未在书上看过的链接与装载,许多平常无法理解的东西它描述了,由于书借满了,后来隔三差五到图书馆找这本书,都被借走了。后来有幸抱得一读,如久旱逢甘霖,难得国人写(两原创 2010-03-24 23:41:00 · 1075 阅读 · 0 评论 -
xml格式的汉等字符解析
作者:帅得不敢出门 C++爱好者灌水天堂群 3503799 转载请保留此信息 由于要解析fb2电子书文本,这方面似乎俄文资料比较多啊,没办法,摸着石头过河吧利用网上的一个软件any2fb2把一段文本转换成fb2,用editplus直接打开fb2文本内容:汉 fb2 测试fb2内容:http://www.w3.org/1999/xlink" xmlns="http://www原创 2009-08-22 17:50:00 · 2827 阅读 · 5 评论 -
提取xpdf中的PDFTOTEXT到vc工程中
作者:帅得不敢出门 C++爱好者灌水天堂群 3503799 转载请保留此信息提取xpdf中的PDFTOTEXT到vc工程中首先从http://www.foolabs.com/xpdf/download.html下载xpdf-3.02.tar.gz新建一个vc工程mymypdftotext方法一:拷贝xpdf-3.02/xpdf与xpdf-3.02下的源文件(.h原创 2009-08-19 18:15:00 · 2294 阅读 · 5 评论 -
c实现的Flickr API库Flickcurl介绍
api介绍http://www.flickr.com/services/api/Flickcurl: C library for the Flickr APIhttp://librdf.org/flickcurl/Register application to get API Key and Shared Secrethttp://librdf.org/flickcur原创 2012-06-30 13:45:50 · 1870 阅读 · 0 评论 -
html解析利器Html Tidy-附示例与交叉编译方式
最近用curl模拟一些网站的登录要对html进行解析,而libxml2要求比较严格,很多html页面无法正确解析,为此才接触到一个c库Html Tidy,故引出本文。此库官方:http://tidy.sourceforge.net/libintro.html最新代码可通过cvs下载cvs -d:pserver:anonymous@tidy.cvs.sourceforge.net:/cv原创 2012-07-01 13:39:41 · 2572 阅读 · 0 评论 -
linux下c/c++程序重启自己
在程序自动升级的时候需要自己重新启动自己示例代码: 点击(此处)折叠或打开 #include unistd.h> #include stdio.h> #include stdlib.h> int原创 2018-05-10 09:44:33 · 7865 阅读 · 0 评论 -
c++库cxxtools解析json
官网可下载源码,http://www.tntnet.org/也可以直接通过git下载源码git clone https://github.com/maekitalo/cxxtools进入目录编译cd cxxtools/autoreconf -i./configuremake直接在cxxtools目录下写个测试程序:test.cpp源码原创 2018-05-10 09:44:02 · 221 阅读 · 0 评论 -
gsoap编译及使用例子
http://sourceforge.net/projects/gsoap2/下载gsoap源码解压:$ unzip gsoap_2.8.17.zip编译:$ cd gsoap-2.8/$ configure$ make$ sudo make installadd.h文件点击(此处)折叠或打开//gsoap ns serv原创 2015-01-22 16:26:32 · 2227 阅读 · 0 评论 -
c语言使用freetds连接ms sql server
首先编译安装freetds这部分就省略了,直接上代码:#include stdio.h>#include stdlib.h>#include string.h>#include iostream>#include sybfront.h>#include sybdb.h>bool ConnectDataBase(DBPROC原创 2015-01-22 16:40:37 · 1672 阅读 · 1 评论