- 博客(29)
- 资源 (7)
- 收藏
- 关注
原创 一文读懂C++中vector和list的区别
vector和list都是C++STL标准模板库中的容器;一、vector 向量(vector)是一个封装了动态大小数组的顺序容器。是一个连续存储的容器,在堆上分配空间。拥有一段连续的空间,并且起始地址不变。可以简单的认为,vector就是一个能够存放任意类型的动态数组。 vector底层以数组的方式实现。以两倍容量增长方式实现容量增长。 vector 增加(插入)新元素时,如果未超过当时的容量,则还有剩余空间,那么直接添加到最后(插入指定位置),然后...
2021-05-06 18:09:30
2566
1
原创 mips工具链编译 undefined reference to `__ctype_b_loc‘
使用mips-linux-gnu-工具链编译代码时,遇到错误:undefined reference to `__ctype_b_loc'undefined reference to `__ctype_tolower_loc'undefined reference to `__assert_fail'undefined reference to `uselocale'undefined reference to `duplocale'undefined reference to `newl
2020-10-21 15:39:47
2261
原创 libcurl POST请求返回28
libcurl 正常情况下返回28,即为请求超时,排查网络环境;项目中使用 libcurl post图片文件,头部要求使用 application/x-www-from-urlencoded,代码使用 curl_formadd 方式添加表单;但是发post请求时,一直是返回28超时,然而使用postman发请求时却是成功的,很困惑。抓包!wireshark看确实是post成功,并收到了response,但是libcurl 的curl_easy_perform为什么一直返回超时呢???...
2020-09-23 13:54:23
5609
原创 ONVIF开发(1)开发环境搭建
自己使用Ubuntu18.04;1、安装flex下载地址:https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz命令:# sudo ./configure# sudo make# sudo make install2、安装bison下载地址: ftp://ftp.gnu.org/gnu/bison/bison-2.7.tar.gz命令:# sudo ./configure.
2020-09-03 17:29:42
583
原创 SQLite快速上手(c语言代码调用)
1、下载:https://www.sqlite.org/download.html2、安装:$ tar xvzf sqlite-autoconf-3071502.tar.gz$ cd sqlite-autoconf-3071502$ ./configure --prefix=/usr/local$ make$ make install3、创建数据库:$sqlite3 DatabaseName.db创建成功之后可以使用.databases来检查他是否在数据库列表中
2020-09-03 11:34:56
285
原创 字符集和字符编码(附c语言判断utf8编码)
1.基础知识1.1.字符集字符(Character)是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。字符集(Character set)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,常见字符集有:ASCII字符集、GB2312字符集、BIG5字符集、 GB18030字符集、Unicode字符集等。那么为什么会有那么多字符集标准呢?这是因为,很多规...
2020-01-07 16:26:54
6664
1
原创 判断字符串是否为utf-8编码(c语言)
先上代码,实测有效:bool utf8_check(const char* str,size_t length){ size_t i = 0; int nBytes = 0;////UTF8可用1-6个字节编码,ASCII用一个字节 unsigned char ch = 0; while(i < length) { ch = *...
2020-01-07 16:18:52
3590
1
原创 wolfSSL_connect失败错误码-188
记录:wolfssl使用过程中遇到,调用wolfSSL_connect返回值小于0,wolfSSL_get_error得到错误码为-188;wolfcrypt/error_crypt.h中对错误码定义为: ASN_NO_SIGNER_E = -188, /* ASN no signer to confirm failure */查找网上资料比较少,官方论坛解答...
2020-01-07 16:10:56
1465
原创 wolfSSL_get_error错误码-397
记录:使用wolfssl时遇到wolfSSL_read读数据错误,wolfSSL_get_error得到错误码为-397。同一个局域网下,设备的ip和另一个设备的ip重复导致。
2020-01-07 16:03:33
1099
原创 XMPP协议详解
1、XMPP的基本网络结构是怎样?xmpp中定义了三个角色,客户端、服务器和网关;通讯可以在这三者之间的任意两者中进行双向进行。服务器同时承担了客户端的信息记录,连接管理和信息的路由功能。网关承担着与异构即时通信系统的互联互通,异构系统可以包括SMS(短信),MSN,ICQ等。基本的网络形式是单客户端通过TCP/IP连接到单服务器,然后在之上传输XML。2、XMPP协议的网络架构:...
2019-04-20 17:42:18
7674
原创 从标准输入读命令并执行
实例最好用#include <stdio.h>#include <unistd.h>#include <sys/wait.h>#define MAXLEN 4096int main(void){ char buf[MAXLEN]; pid_t pid; int status; printf("%%")...
2019-03-10 09:21:13
272
原创 常见设备在liunx中的文件名
在linux中,每个设备都被当成一个文件对待。列出几个常用的设备对应的文件名一杯查用。设备 设备对应的文件名 IDE硬盘 /dev/hd[a~d] SCSI/SATA/USB /dev/sd[a~p] U盘 /dev/sd[a~p] 软驱 /dev/fd[0-1] 打印机 25针:/dev/lp[0-2] USB:/dev...
2019-02-16 19:23:20
142
原创 netstat命令
常见参数:-a (all)显示所有选项,默认不显示LISTEN相关-t (tcp)仅显示tcp相关选项-u (udp)仅显示udp相关选项-n 拒绝显示别名,能显示数字的全部转化成数字。-l 仅列出有在 Listen (监听) 的服務状态-p 显示建立相关链接的程序名-r 显示路由信息,路由表-e 显示扩展信息,例如uid等-s 按各个协议进行统计-c 每隔一个固定时间,执...
2018-11-06 16:39:17
162
原创 ubuntu 下安装gimp
GIMP是一款免费开源的Photoshop替代工具。虽然它缺少Adobe的一些比较花哨的功能,但是GIMP在常用功能方面与Adobe不相上下,有些方面甚至更胜一筹!1. 添加 GIMP PPAsudo add-apt-repository ppa:otto-kesselgulasch/gimp2. 安装或升级编辑器sudo apt-get updatesudo apt-get ...
2018-11-04 20:57:13
2535
原创 理解oom_killer备忘
原理: OOM发生的条件一般有两个: 1. VM里面分配不出更多的page 2. 用户地址空间不足 按照资料,找到了oom_kill.c文件中的out_of_memory() pagefault_out_of_memory()及调用函数__out_of_memory() 1:”找到一个需要被kill的进程“ 策略:跳过kernel thread、没有...
2018-10-12 17:42:22
174
原创 undefined reference to `clock_gettime’/undefined reference to `__res_query' 链接错误解决
1、undefined reference to `clock_gettime’clock_gettime在实时库(real time)里面,编译的时候加上-lrt即可。2、undefined reference to `__res_query'编译时加上-lresolv即可。 ...
2018-10-10 20:44:55
1845
原创 网络地址的初始化与分配
将字符串信息转化为网络字节序的整数型sockaddr_in中保存的地址信息的成员为32位整型,因此,为了分配IP地址,需要将其表示为32位整数型数据,这对于只熟悉字符串信息的我们来说并非易事。幸运的是,有个函数,会帮我们将字符串形式的IP地址转换成32位整数型数据。此函数在转换类型的同时进行网络字节序的转换。#include <apra/inet.h>in_addr_t ...
2018-08-12 20:09:19
951
原创 feek()、ftell()和rewind()用法
长时间没用这几个函数了,今天用到,有些陌生,回忆后记录一下加深印象。1、int fseek(FILE *stream, long offset, int fromwhere);作用:重定位流(数据流/文件)上的文件内部位置指针;参数:stream为文件打开后的流指针(FILE*); offset为偏移量(正数为从文件头向文件尾的偏移方向,负数相反,0...
2018-07-09 22:52:30
2317
原创 c++中文件输入/输出简单示例
下边的程序演示了用户输入信息,然后将信息显示到屏幕上,再将这些信息写到文件中,读者可以使用文本编辑器来查看该输出文件中的内容。#include <iostream>#include <fstream>int main(){ using namespace std; char automobile[50]; int year; double a_price...
2018-07-04 23:28:59
734
原创 字符函数库cctype
函数名称返回值isalnum()如果参数是字母数字,即字母或者数字,该函数返回tureisalpha()如果参数是字母,该函数返回trueiscntrl()如果参数是控制字符,该函数返回trueisdigit()如果参数是数字(0~9),该函数返回trueisgraph()如果参数是除空格之外的打印字符,该函数返回trueislower()如果参数是小写字母,该函数返回trueisprint()如...
2018-07-03 22:37:43
176
原创 文件尾条件
检测文件尾(EOF)-----在c++中,假设将一个文件内容输入到cin中,cin检测到EOF即文件结尾时,cin将eofbit和failbit都设置为1,可以通过成员函数eof()来查看eofbit是否被设置;如果检测到EOF,则cin.eof()将返回bool值ture,否则返回false。failbit和eofbit相同,成员函数为cin.fail()。有的系统支持键盘模拟EOF,下边使用键...
2018-07-02 21:51:15
432
原创 比较数组,模板array和模板vector
先上简单的一个实例: #include <iostream>#include <vector>#include <array>int main(){ using namespace std; //C,original C++ double a1[4] = {1.2,2.4,3.6,4.8}; //C++98 STL vector<do...
2018-07-01 19:02:32
243
原创 内存泄漏
关于内存泄漏的概念,这里做一些阐述。如果在一个程序中,使用了new后没有delete,将会发生什么情况呢?如果没有调用delete,则即使包含指针的内存由于作用域规则和对象生命周期的原因而被释放,在自由存储空间上动态分配的变量或者结构也将继续存在。实际上,将会无法访问自由存储空间中的结构,因为只想这些内存的指针无效。这就导致了内存泄漏。那么内存泄漏会导致什么情况呢?被泄露的内存将会在程序的...
2018-07-01 18:03:39
121
原创 new和delete的使用规则
1、不要使用delete来释放不是new分配的内存;2、不要使用delete释放同一块内存两次3、如果使用new[]为数组分配内存,则应使用delete来释放;4、如果使用new为一个实体分配内存,则应使用delete来释放;5、对空指针应用delete是安全的。...
2018-06-18 23:57:38
749
原创 静态联编和动态联编
如果通过声明来创建数组,则在程序被编译时将为它分配内存空间。不管程序最终是否使用数组,数组都在那里,它占用了内存。在编译的时候给数组分配内存被称为静态联编(static binding),意味着数组是在编译时加入到程序中的。但是使用new时,如果在运行阶段使用数组,则创建它;如果不需要数组,则不创建。还可以在程序运行的时候选择数组的长度。这被称为动态联编(dynamic binding),意味着数...
2018-06-18 23:32:06
322
原创 c++中new对象的时候内存被耗尽?
c++中new对象时分配的内存块与常规变量声明的分配的内存块不同,new是从被称为堆或者自由存储区的内存区域分配空间,但是计算机可能会由于没有足够的内存而无法满足new的请求,在这种情况下,new将会返回0,在c++中,值为0的指针通常被称为空指针(null pointer)。...
2018-06-18 23:07:36
1567
原创 apt-get update和upgrade的区别
前者是更新整个仓库的版本信息,后者是升级软件包;apt-get是某些linux发行版使用的一个“包管理器”。软件包列表是不会被自动下载的,需要用户使用apt-get update更新,这样,apt-get才能知道每个软件包的最新信息,从而正确地下载最新版本的软件。apt-get upgrade,则是对已经安装的软件包本身进行更新的过程。...
2018-05-10 00:20:15
809
ezxml-0.8.6.tar.gz
2023-12-06
第三方开源库,包括curl、cjson、pcap、wolfssl、zlib、iconv
2020-08-17
C语言实现队列,可做基础库
2020-08-17
VNC-5.3.3-Windows.exe
2019-02-16
c primer plus
2018-07-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人