- 博客(91)
- 资源 (3)
- 收藏
- 关注
原创 libco
1.libco协程客户端场景如下:tcp_sever:接受客户端连接,处理客户端请求,5s后回包,模拟rpc阻塞式调用服务tcp_client:连接tcp服务器,发送请求,等待回包,这里qps! 0.2/slibco_echocli:连接tcp服务器,起n个协程,qps! 0.2*n/s注意:1)这里把tcp_server的处理时间设置为了5分钟,所以libco库的读写超时...
2019-08-03 11:12:40
377
原创 keepalived简单测下
keepalived的简单使用,自动failover安装1.keepalived下载:http://keepalived.org/ 下载自己喜欢的版本2../configure && make && maake install3.安装以及配置开机启动: cp ./keepalived /usr/sbin/ cp ./keepalived/etc/rc.d/init.
2017-06-10 15:42:31
5527
原创 inotify结合select监控目录下文件变动
#include #include #include #include #include #include #include #define EVENT_SIZE ( sizeof (struct inotify_event) )#define BUF_LEN ( 1024 * ( EVENT_SIZE + 16 ) )#define MAXLEN 1024c
2016-11-01 10:37:21
3530
原创 redis_主从配置以及自动切换
3台虚拟机192.168.1.52192.168.1.53192.168.1.54上来做这个操作:1.机器上编译安装(3.0.7版本)redis->wget http://download.redis.io/releases/redis-3.0.7.tar.gz2.配置:主:192.168.1.52从192.168.1.53 192.168.1.54配置文件
2016-04-16 02:37:26
6274
原创 VMware中虚拟机复制的问题
流程:选择已安装虚拟机->管理->克隆->最后每个搞一个完整的快照克隆机遇到的问题:不能联网,多了个eth1解决办法:1.root权限切换到/etc/udev/rules.d删除70-persistent-net.rules文件2. 点击左面右上角Network Connections删除System eth0和下面的ech1 -->http://359611946.blog
2016-03-06 00:53:00
621
原创 tcp连接断开的一些面试常识
在三次握手阶段,主动连接方式依次经历: SYN_SENT ESTABLISHED状态,被动连接依次经历:SYN_RECEIVED ESTABLISHED状态,主动连接放发送同步SYN报文后会进入STNC_SENT状态,被动连接方收到SYN报文后会发送SYN和 ACK报文并进入SYN_RECEIVED状态,等主动连接方收到这个SYNACK确认报文后会再次返回一个 ACK报文,使得双方建立起连接,
2016-02-28 20:51:24
603
原创 linux下删去文件中包含某个字符串的行
删除文件中带有某个字符串的所有行a.txtsed -e '/xxx/d' a.txt -->打印出来 文件中包含xxx的行都不会显示 使用-i参数的话就直接修改文件了修改指定字符串sed -e 's/aaa/bbb/g' 全局aaa替换为bbb打印指定行cat a.txt | sed -n '1,3p' 打印文件a.txt的1到3行
2016-02-15 14:24:08
22423
原创 linux下awk的关联数组
昨天看了同事的一个shell脚本,如下:awk 'NR==FNR{++a[$1]}a[$1]==0{print $1,a[$1]}' ./a.txt ./b.txt作用是:打印出b.txt第一列中不在a中行,初一看,不是很懂,shell脚本没有系统的学过,平时用也只是一些简单的执行下可执行程序,跑下定时任务NR和FNR,NR打印行数,FNR同样是打印行数,区别是后者每次打开一个文件时都
2016-02-14 22:29:23
1241
原创 20150310的一些总结
1.今天被朋友问了一个问题:#include #include #include #include using namespace std;class father{ public: void run() { start(); } protected: virtual void
2015-03-11 00:35:42
437
原创 popen在程序内调用可执行程序
一般有3种方法:1.exec函数 2.system函数 3. popenint xpipe(char *cmdname, char *outbuf, int outlen){ int ret = 0; FILE *pf; pf = popen(cmdname, "r"); if( !pf ) return -1; if(outbu
2015-01-13 14:55:32
1302
原创 tinyxml的使用以及示例
1.下载xml源代码:github上面 clone地址:https://github.com/aughey/tinyxml/2.下来以后自己make一下主要的就几个头文件和源文件3.测试案例4.编译成静态库: ar rv libxml.a *.o5. 测试案例运行: g++ -o test test.o -L./ -lxml6.问题:对于main程序,先编译成目标文件,最
2014-12-29 20:40:58
667
原创 构造xls表格
#include #include using namespace std;int main(int argc, char **argv){ ofstream inf; string filename = string(argv[1]) + ".xls"; inf.open( filename.c_str(), ofstream::out | ofstream:
2014-12-24 11:11:31
403
转载 awk基本用法
简介awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本。awk其名称得自于它的创始人 Alfred Aho
2014-11-13 16:48:07
432
原创 从日志中找出资产限制出错的并处理
#!/bin/bashexport LD_LIBRARY_PATH=/home/server/lib:$LD_LIBRARY_PATHcd /home/server/tools/unfreeze_fund/shell/dateDate=$(date +%Y%m%d)grep "UnFreezeAccount fail" "/home/server/tongxin_srv/log/to
2014-11-11 20:13:13
682
转载 linux下的时间戳
Linux时间戳和标准时间的互转在LINUX系统中,有许多场合都使用时间戳的方式表示时间,即从1970年1月1日起至当前的天数或秒数。如/etc/shadow里的密码更改日期和失效日期,还有代理服务器的访问日志对访问时间的记录等等。 下面介绍几种时间戳格式和标准时间格式转换的方法:1、分别以标准格式和时间戳来显示当前时间[root@365linux
2014-11-11 20:09:21
688
原创 epoll的echo程序(待修改)
#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;#define MAX_EVENTS 500int g_epollFd;struct m
2014-11-02 22:37:38
671
原创 curl的简单使用
1.命令行模式: curl -d "附加信息" url curl -v "url"2.通过程序调用static size_t process_data(void *buf, size_t size, size_t nmemb, void *str){ std::string &content = *(std::string *)str; std
2014-10-23 20:09:35
988
原创 svn的简单使用
1.建立svn库syswjdeMacBook-Air:~ syswj$ mkdir svnsyswjdeMacBook-Air:~ syswj$ lsDesktop Downloads Movies Pictures solarizedDocuments Library Music Public svnsyswjdeMacBook-Air:~ syswj$
2014-10-22 20:44:08
894
原创 linux中的__builtin_except()函数
在看代码的时候看到两个宏函数:likely() unlikely()#define likely(x) __builtin_expect(!!(x), 1)#define unlikely(x) __builtin_expect(!!(x), 0) __builtin_expect()大致作用是处理分支预测,让编译器编译的时候可以做一些优化,优化可能性大的分支程序if( like
2014-10-19 15:36:33
1736
原创 mysql下面c连接mysql数据库
1.安装sudo yum install mysql-devel 安装组件和库2.#include #include #include #include int main(int argc, const char *argv[]){ MYSQL mysql; MYSQL_RES *result; MYSQL_ROW row; mysql_in
2014-10-11 01:47:42
711
原创 mysql的表的导入与导出
1.linux下面mysql的导入与导出: 导出: 在linux命令行下:mysqldump -u 用户名 -p 数据库名 表名 > 存入的文件名 [syswj@host ~]$ sudo mysqldump -u syswj -p sysDB stu > stu.sqlEnter password: [syswj@host ~]$ lsc++_primer
2014-10-10 19:12:45
632
原创 tcpdump抓包以及端口查看的一些操作
1.tcpdump; nginx开启后会占用80端口,此时执行命令:tcpdump tcp port 80 结果如下:[syswj@host ~]$ sudo tcpdump tcp port 80[sudo] password for syswj: tcpdump: verbose output suppressed, use -v or -vv f
2014-10-10 14:10:08
23026
原创 nginx的安装
安装过程见:http://www.21ops.com/ops/8960.html 流程: 1.前序必须安装的 :gcc pcre zlib openssl 等库和工具 2.wget http://nginx.org/download/nginx-1.5.4.tar.gz 下载 解压 进入目录./config --prex=/usr/lo
2014-10-10 10:59:28
748
转载 非阻塞connect
步骤1: 设置非阻塞,启动连接实现非阻塞 connect ,首先把 sockfd 设置成非阻塞的。这样调用 connect 可以立刻返回,根据返回值和 errno 处理三种情况:(1) 如果返回 0,表示 connect 成功。(2) 如果返回值小于 0, errno 为 EINPROGRESS, 表示连接 建立已经启动但是尚未完成。这是期望的结果,不是真正
2014-10-10 00:28:06
542
原创 局部变量地址的返回
char *fun(){char str[] = "hello";return str;}这个函数的返回值?以及这个函数在栈上的存储布局#include #include #include char *fun(){ char ptr[] = "fda"; int a = 3; int b = 4;
2014-10-09 21:07:01
1531
原创 SIGPIPE信号的产生以及处理
看了TCP的一些东西,知道服务器往以及关闭了的sockfd中写两次时,会产生SIGPIPE信号,如果不处理,默认会挂掉服务器弄个小例子测试一下:#include #include #include #include #include #include #include #include #include #include #include #include #inc
2014-10-07 15:05:39
1791
原创 EBP ESP 以及进程的切换
EIP,EBP,ESP都是系统的寄存器,里面存的都是些地址。 为什么要说这三个指针,是因为我们系统中栈的实现上离不开他们三个。 我们DC上讲过栈的数据结构,主要有以下特点: 后进先处。(这个强调过多)其实它还有以下两个作用: 1.栈是用来存储临时变量,函数传递的中间结果。 2.操作系统维护的,对于程序员是透明的。我们可能只强调了它的后进先出的特
2014-10-06 22:08:48
741
原创 C++11的function bind回调机制
#include using namespace std::placeholders;1.可以提前声明函数类型:function 函数名; function fn 也可以不用声明类型直接bind前面:auto fn = bind( ....) 函数参数的对应: 以实际函数的参数对应声明的位置
2014-10-06 14:04:07
4402
1
转载 C++中priority_queue的实现
优先级队列相对于普通队列,提供了插队功能,每次最先出队的不是最先入队的元素,而是优先级最高的元素。它的实现采用了标准库提供的heap算法。该系列算法一共提供了四个函数。使用方式如下:首先,建立一个容器,放入元素:vectorint> coll;insertNums(coll, 3, 7);insertNums(coll, 5, 9);insertNums(coll, 1, 4
2014-10-05 22:04:42
1456
转载 c++中queue的实现
本文实现了STL中stack的大部分功能,同时添加了一些功能。注意以下几点:1.Stack是一种适配器,底层以vector、list、deque等实现2.Stack不含有迭代器在本例中,我添加了几项功能,包括不同类型stack之间的复制和赋值功能,可以实现诸如Stack >和Stack >之间的复制和赋值,这主要依靠成员函数模板来实现。为了更方便的实现以上功能,我添加了
2014-10-05 20:28:17
2304
转载 C++中stack的deque实现
本文实现了STL中stack的大部分功能,同时添加了一些功能。注意以下几点:1.Stack是一种适配器,底层以vector、list、deque等实现2.Stack不含有迭代器在本例中,我添加了几项功能,包括不同类型stack之间的复制和赋值功能,可以实现诸如Stack >和Stack >之间的复制和赋值,这主要依靠成员函数模板来实现。为了更方便的实现以上功能,
2014-10-05 00:43:57
1347
原创 字典树的实现
字典树常用于前缀匹配[syswj@host 0813]$ cat dic_tree.cpp#include #include #define MAX 26usingnamespace std; typedefstruct TrieNode{ intncount; structTrieNode *next[MA
2014-10-04 13:20:51
822
原创 几种并发服务器模型的实现
客户端使用select模型: 1 #include 2 #include 3 #include string.h> 4 #include 5 #include 6 #include 7 #include in.h> 8 #include 9 #include select.h> 10 #include 11 12 #
2014-10-04 13:12:06
1625
原创 搜索引擎源码及流程
对从网络上抓取到的网页进行处理:建立网络库,分词,去重,if-tdf计算权重,归一化,然后根据查询词将文本相似度从高到低的依次返回给客户第一阶段:python网络爬虫抓取网页,并存盘第二阶段:对磁盘上的网页文件建立网页库,将全部网页写入网页库,并建立相应网页的偏移量索引文件(1 23 100)-->(dofid, offset, size),以便读取网页内容
2014-10-04 13:11:39
1461
原创 exception类的实现
1) 函数后面声明 throw() 只是接口的提供者和接口的使用者间的默契或称协议。2) 这种协议不影响正常的异常处理流程。
2014-10-04 00:42:44
852
转载 进程间IPC机制
Linux进程间通信类型:1.信号机制 发送信号2.管道机制 读者-写者3.消息队列 消息缓冲队列通信机制,传送小量数据4 .共享内存 传送大量数据,锁机制5.信号量 P、V操作,进程间同步互斥,生产者-消费者,哲学家进餐等。 现在linux使用的进程间通信方式:(1) 管道
2014-10-03 23:37:22
488
转载 TCP的RST攻击详解
在谈RST攻击前,必须先了解TCP:如何通过三次握手建立TCP连接、四次握手怎样把全双工的连接关闭掉、滑动窗口是怎么传输数据的、TCP的flag标志位里RST在哪些情况下出现。下面我会画一些尽量简化的图来表达清楚上述几点,之后再了解下RST攻击是怎么回事。 1、TCP是什么?TCP是在IP网络层之上的传输层协议,用于提供port到port面向连接的可靠的字节流传输。我来用土语解
2014-10-03 20:53:10
3508
原创 c++运算符重载以及一些基本概念
c++primer第四版4351.赋值( = ), 下标( [ ] ) ,调用 ( ( ) ), 成员访问箭头 (->)等操作符必须定义为成员,定义为非成员时,编译器报错2. 像赋值一样,符合赋值操作符通常应定义为类的成员,但是定义为非成员的复合赋值操作符时不会出现编译错误3.改变对象状态或给定类型紧密联系的其他一些操作符,如自增,自减和解引用,通常应定义为类的成员4.对称操作
2014-10-03 14:58:30
898
原创 C++中priority_queue的比较函数重载的两种方式
1.定义比较函数,以函数对象形式 这种方式使用时,需要把函数加入priority_queue的声明中去 struct com{ bool operator()( T &t1, T &t2) { }};priority_queue, com> que;2.在结构体中重载class T{public:friend bool o
2014-10-03 14:30:46
5877
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人