随笔 - 313
文章 - 29
评论 - 32
阅读 -
124万
随笔分类 - 基本功
使用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
阅读全文
Make automake 1.14 shut-up about subdir-objects
摘要:使用automake 1.14,发现老项目在编译过程中会报警告: source/Makefile.am:45: warning: source file 'zz/xx.cpp' is in a subdirectory, source/Makefile.am:45: but option 'subd
阅读全文
如何解决因为墙的问题golong的包没办法下载的问题
摘要:如何解决因为墙的问题golong的包没办法下载的问题? 访问: https://github.com/goproxy/goproxy.cn/blob/master/README.zh-CN.md Linux # 配置 GOPROXY 环境变量 export GOPROXY=https://gopro
阅读全文
如何获取客户端的WAN口IP
摘要:通常情况下,我们在路由器下根本取不到本机的外网出口IP。 那么就需要写一个服务部署在公网上,然后通过客户端访问,就知道自己的外网出口IP是啥了。 代码很简单,如下: /* * 环境:Centos7 * 作者:bugutian */ #include <stdio.h> #include <strin
阅读全文
python3 http.server作为服务端,h5作为网页实现手机传输文件到PC
摘要:一、背景 把手机上的文件传到PC; 原因:手机存储太小 矛盾: 1.不想安装乱七八糟的软件; 2.不想安装手机助手,不想插USB; 3.不想用社交软件QQ、微信、钉钉等传文件; 那么能不能自己做一个简单工具呢 答案:可以,正好PC有python3环境作为服务端,手机端使用浏览器访问html上传文件。
阅读全文
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
阅读全文
C++11用boost::asio做一个定时器
摘要:示例代码如下: #include <iostream> #include <boost/asio/io_service.hpp> #include <boost/asio/steady_timer.hpp> #include <boost/asio.hpp> #include <thread> ty
阅读全文
UPNP报文示例
摘要:经常用到内网穿透,对UPNP也有所了解,但是具体的报文每次都去抓显然浪费时间。因此记录在下面。 报文是开启BitComet时抓取的,前面的python代码是自己用来获取NOTIFY消息的代码。 连接到组播地址接收NOTIFY消息 import socket import re ANY = "0.0.
阅读全文
MySQL中数据类型宽度有什么用, INT(11)有什么意义?
摘要:结论 从下文的测试结果中得出结论 类型长度对于字段的取值范围毫无影响; 在设置ZEROFILL的情况下,类型长度决定显示结果值的长度; 在设置ZEROFILL的情况下,显示时,宽度不足左边补0,宽度超过限制按实际值显示; 举例说明: int(11)和int(20)在取值范围上并无不同,都是-2147
阅读全文
用华为的鲲鹏镜像安装RabbitMQ
摘要:下载地址为:https://obs-mirror-ftp4.obs.cn-north-4.myhuaweicloud.com/middleware/rabbitmq-server-3.7.4-1.el7.noarch.rpm 1.安装依赖软件 yum install socat 2.下载安装erla
阅读全文
C++如何对接sqlitepp
摘要:sqlitepp是一个用C++封装的操作sqlite的工具 ###使用方法 示例(example.cpp): #include <iostream> #include <sstream> #include <string> #include <stdio.h> #include <stdlib.h>
阅读全文
c++11中的condition_variable和之前的pthread_cond_timedwait的不同之处
摘要:不同点: pthread_cond_timedwait需要在调用前自己调用mtx.lock(); condition_variable.wait_for调用前unique_lock lck(mtx);加锁的事wait_for里面实现了。 共同点: 运行时会mtx.unlock(),检查条件时,mtx
阅读全文
wireshark查看包显示:Packet size limitedduring capture
摘要:###问题 使用tcpdump抓包之后之后用wireshark查看显示:Packet size limitedduring capture 解决方法: tcpdump抓包时添加 -s0选项 备注 用Tcpdump进行抓包时,没有用-s参数指定抓取数据的长度,采用了默认长度为68或96字节;-s0则表
阅读全文
raid卡的结构示意图
摘要:raid卡的结构示意图,取自《大话存储》第124页 ROM:一般用FLash芯片做ROM,存放着初始化RAID卡必须的代码以及实现RAID功能所需的代码; XOR芯片:专门用来做RAID 3、5、6等这类校验型RAID的校验数据计算用的。 SCSI总线:目前SCSI RAID卡最高有4通道的,其后端
阅读全文
CRC校验码原理、实例、手动计算
摘要:目录一、CRC16实现代码二、CRC32编码字符表三、CRC校验码的手动计算示例四、CRC校验原理五、CRC的生成多项式参考 一、CRC16实现代码 思路:取一个字符(8bit),逐位检查该字符,如果为1,crc^crc_mul;同时,如果原本crc最高位是1,那么crc^crc_mul后左移1位,
阅读全文
Linux解压命令大全
摘要:引用网址: http://www.cnblogs.com/eoiioe/archive/2008/09/20/1294681.html .tar 解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)———————
阅读全文
分布式中一些关键概念的解释
摘要:分布式要弄清楚的几大问题:(1)数据分布:哈希分布还是顺序分布简单地说,相当于比较哈希函数和B+树树的优劣。哈希分布,首先找一个散列性比较好的哈希函数(非常难),并且不支持顺序扫描,但是随机存取的速度都很快。顺序分布,一般的都会采用B+树的方式存储。支持顺序扫描,很容易让数据分布均匀,但相应的随机存
阅读全文