随笔 - 313
文章 - 29
评论 - 32
阅读 -
124万
随笔分类 - Linux C++
Linux C++相关的知识
使用epoll实现异步的tcp请求客户端
摘要:公司有一个需求,要求客户端能够单线程异步发送请求到服务端。 当在不引入过多第三方库的情况下,可以使用下列的方式发送请求。 当然,C11有很多异步的库,代码示例用的C11仅是为了简化线程模型,省去自己封装线程池的麻烦。 #include <stdio.h> #include <string.h> #i
阅读全文
libcurl异步访问示例
摘要:libcurl异步访问示例 用同步阻塞的方式跑单线程效率太低,每次开新线程去跑curl太浪费资源,没有必要。 有没有办法用IO复用的方式跑单线程?libcurl自带的curl_multi_wait(封装了IO复用)可以完成这个工作。 参考地址: https://www.cnblogs.com/hel
阅读全文
如何获取客户端的WAN口IP
摘要:通常情况下,我们在路由器下根本取不到本机的外网出口IP。 那么就需要写一个服务部署在公网上,然后通过客户端访问,就知道自己的外网出口IP是啥了。 代码很简单,如下: /* * 环境:Centos7 * 作者:bugutian */ #include <stdio.h> #include <strin
阅读全文
valgrind总是在vsscanf的地方报读写越界
摘要:stackoverflow上有这样一个问题,有人使用valgrind检测程序时总在sscanf上报读写越界 详情 Valgrind Invalid read of size 1 (sscanf) Somehow Valgrind shows an error at the first lines o
阅读全文
map中insert和用=赋值时调用的构造函数详情
摘要:网上大把的map把结构体作为key的博客,但是对于结构体作为值,说明的就很少了。 一个测试用例来说明insert和用等号赋值的区别。 #include <iostream> #include <string> #include <map> #include <stdio.h> #include <s
阅读全文
boost中async_read和async_read_some的区别
摘要:boost中async_read和async_read_some的区别 假设原型如下 async_read( socket_, boost::asio::buffer(read_msg_.data(),512), readHandler ) 和 socket_.async_read_some( bo
阅读全文
ENET程序实例
摘要:ENet的目的是提供一个相对轻量、简单、稳定的基于UDP的网络通信。 主要特色就是提供了可选的、可靠的、顺序传送的数据包。 准备 下载:http://enet.bespin.org/Downloads.html 编译安装 ./configure --prefix=/usr/local/enet ma
阅读全文
如何让ffmpeg+ nginx_http_flv(flv,hls,rtmp)这套组合支持H265(HEVC)
摘要:如何让ffmpeg-flv支持H265(HEVC) 背景 Adobe不支持flash了,rtmp之前是为flash设计的,所以协议也不更新了作为FLV相关技术的所有者,Adobe估计也没动力更新规范来支持H265; 外加H265标准的一些专利所有者的授权方案被指抢钱,更加打击了很多软件厂商的积极性。
阅读全文
验证c++11里面的future是否是新开一个线程实现的异步
摘要:开玩笑了,因为在async和future的解释中是写了会新开一个线程去执行任务的。 那我们在不看源代码的情况下怎么验证这个事? 源码 // async example 02.cpp #include <iostream> // std::cout #include <future> // std::
阅读全文
C++如何对接sqlitepp
摘要:sqlitepp是一个用C++封装的操作sqlite的工具 ###使用方法 示例(example.cpp): #include <iostream> #include <sstream> #include <string> #include <stdio.h> #include <stdlib.h>
阅读全文
C++11中令人吐血的"移动语义"和"新的右值引用"
摘要:本文转载自:https://blog.csdn.net/xuwqiang1994/article/details/79924310 1.概述 没有C++11之前我都这样写代码的 Class* ptr = new Class(xxx); 感觉指针用的挺好的,逻辑清晰,很容易理解。 C++11出来之后,
阅读全文
C++ UTF-8和GBK相互转化
摘要:转载自:https://blog.csdn.net/yfw418/article/details/1654652 一、利用iconv命令进行编码转换 iconv命令用于转换指定文件的编码,默认输出到标准输出设备,亦可指定输出文件。 用法: iconv [选项...] [文件...] 有如下选项可用:
阅读全文
C++如何对接JOSN(如何使用jsoncpp)?
摘要:如何对接jsoncpp? 参考:https://www.cnblogs.com/cuish/p/3888657.html 下载源码 https://sourceforge.net/projects/jsoncpp/files/latest/download https://sourceforge.n
阅读全文
C++加线程锁相比不加线程锁的性能到底损耗了多少
摘要:测试结果 我们日常多线程编程一定用到锁,那是不是锁不冲突就不耗时了呢? 如果锁耗时,那么具体会让性能减多少呢? 经过测试,结果如下: 运行10s如下: 不加锁:303637450 加锁:171365749 比值:1.8 也就是说不加锁比加锁快了近1倍。 PS: 本人的CPU型号是:CPU型号:Int
阅读全文
C++编译出现错误(.text+0x20): undefined reference to `main'
摘要:# ./configure # make .....省略中间打印..... /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/crt1.o: In function `_start': (.text+0x20): undefined r
阅读全文
C++ std::map如何插入自定义的KEY
摘要:初学C++的小伙伴会问如果std::map中要使用自定义的key怎么办? 答案重载描述符 "<",重载时请注意,当元素相等的时候要返回false.否则,插入相同的元素后,会生成多条记录。而且使用find函数找不到自己的之前插入的key。 #include <stdio.h> #include <ma
阅读全文
维护TCP长连接时系统配置的参数net.ipv4.tcp_keepalive_time不生效
摘要:背景 项目中经常使用LVS做负载,当一个长连接过段时间不发消息时,LVS之后就不会再转发这个长连接的TCP数据包。 使用TCP长连接的场景 一种情况:为了节省TCP连接时间,我们选择建立几个固定的TCP长连接,然后把所有的消息平均分配的这几个TCP通道上传送给对方。 另一种情况:客户端和服务端之间是
阅读全文
valgrind的使用方法
摘要:valgrind每次使写在脚本里,下次使用都要去搜索半天命令,现在记在这里。 valgrind --leak-check=full --trace-children=yes --undef-value-errors=no --track-fds=yes --num-callers=50 --log-
阅读全文
新建一个线程作为服务端
摘要:新建一个线程跑服务端,并且设置stacksize的示例代码 #include <stdio.h> #include <pthread.h> #include <string.h> #include <arpa/inet.h> #include <netinet/in.h> #include <sys
阅读全文
libevent2.0.22备忘录
摘要:libevent2.0.22使用笔记: (1)event_set 关联事件、描述符、回调函数; (2)event_base_set 关联事件和event_base; (3)event_add 添加事件 (2)event_base_loopexit会在超时或有事件触发时退出;(已经写程序验证过了) (
阅读全文