- 博客(61)
- 资源 (1)
- 收藏
- 关注
原创 tcp SACK选择确认位
场景考虑一个场景,tcp发动端连续发送了4个包1-200,201-300,301-400,401-500. 接收端接收了1-200, 201-300,401-500。由于301-400没有收到,所以接收端只能发送一个ack 301给发送端,以确认1-300都收到,而401-500无法给发送端确认。这时发送端不知道301-400和401-500这两个包是否到达接收端。解决办法处理这...
2016-09-07 13:43:10
322
原创 timeout的一些常规解决办法
一般来说timeout并不会对服务器造成什么大的影响,但如果timeout过多导致进程文件描述符不够用或服务器端口不够用就需要注意了。下面是一些常规的timeout解决办法。注意:不是长久之计/etc/sysctl.confnet.ipv4.tcp_tw_reuse = 1表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;(安全)ne...
2016-08-24 15:18:07
12009
原创 http长连接的一些点
http短连接,一般是服务器端主动关闭连接(历史原因 https://www.zhihu.com/question/24338653)http 请求header头中通过Connection: 头字段来指定是否需要keep-alive。 其中http1.0和http1.1关于Connection头又有不同点http1.0不支持keepalive,所以发送头为Connection默认为c...
2016-08-24 15:17:10
194
原创 重走历史
1. 50岁之前走一遍丝绸之路,体验东西历史文化交流中的物是人非2. 去一趟中东,踏上人类文明的起源地。感受古文明的征服与被征服,文化的传播与互相影响。 路线-》波斯-伊拉克-叙利亚-埃及-突尼斯-希腊-意大利待续...
2016-08-24 15:11:52
145
原创 socket 连接复位情况
在如下几种情况会产生连接复位1. 在另一端已经关闭连接的情况下,本端还往这个连接上(fd)读写数据2. 一端奔溃并重新启动,另一端过来的请求会收到连接复位...
2014-06-25 11:11:40
853
原创 linux优先级
进程调度优先级中PR 和NI的含义,用TOP可以看到PR 进程的优先级。在[b]Linux 2.6.23[/b]之前的版本中PR是一个动态值,在运行的过程中可能出现变化。大体策略是:如果一个进程sleep了比较多的时间,PR值会降低(即优先级提高);如果一个进程占用了大量的CPU时间,PR值会升高(即优先级降低)。在2.6.23版本之后,由于引进了CFS调度策略,不再简单根据一个进程sle...
2014-01-20 18:56:48
171
原创 C++ 一些小点
一些小的点,防止忘了再查资料1.类的所有对象共享虚函数表。只不过每个对象保存一份虚函数表地址的指针2.非虚函数在编译期就静态绑定了。
2014-01-14 15:29:33
110
原创 创建动态链接是链接静态库报错
创建一个动态库时报错,如下relocation R_X86_64_32 against `vtable for Base' can not be used when making a shared object; recompile with -fPIC../sdk/lib/libbase.a: could not read symbols: Bad value因为其中链接了一个静...
2014-01-03 14:06:07
297
原创 tcp连接关闭
tcp连接主动关闭的一方会有三个状态,fin_wait1, fin_wait2, time_wait发送fin后进入fin_wait1收到ack后进入fin_wait2收到被动一方的fin并发送完ack后进入time_wait主要有两个原因1。防止上一次连接中的包,迷路后重新出现,影响新连接(经过2MSL,上一次连接中所有的重复包都会消失)2。可靠的关闭TCP连接在...
2013-12-30 17:53:36
157
原创 c++ 虚函数 const等的一些小问题记录
class Base{public: void test(int a); void test(const int a);//error,不属于重载的范畴,函数名冲突.而且这么定义没意义,本来传值就不会改变原值。}class Base{public: void test(int &a); void test(const int &a);//...
2013-11-14 16:14:34
535
原创 c++ protected误区
发现以前对protected的用法一直是错误的。protected的继承的访问权限其实是相对于类的,而不是对象。这么说可能无法理解。看例子:class Base{protected: int a;public: Base();};class Child{public: Child(); test(Child &c){...
2013-11-14 15:11:01
147
原创 c++动态陷阱
记录以防忘记class base{public: ........};class derive:public base{public: void test();};intmain(){ derive child; base *father = &child; father->test();//error...
2013-11-14 14:35:01
93
原创 c 指针陷阱
void test(char ***s, int x, int y){ printf("%p\n", s); printf("%p\n", s + 1); printf("%p\n", (char *s) + 1);}如果s的地址是0xbfe83210,则s + 1的地址是0xbfe83214, (char *s) + 1的地址是0xbfe83211....
2013-10-08 20:00:50
150
原创 使用ltrace跟踪PHP库函数调用
可能大家已经很熟悉使用strace来跟踪系统调用,今天介绍一个跟踪库函数的利器ltrace比如我有这么一段PHP代码test.phpltrace -c /usr/local/php/bin/php test.php (-c表示汇总)会看到输出如下:% time seconds usecs/call calls function--...
2013-09-06 15:42:09
123
原创 php unserialize_callback_func
PHP的unserialize()方法会返回反序列化的值,如果该值为类,PHP在下面两种情况下会试图自动加载该类 1.你实现了__autoload()方法 2.设置php.ini ini_set('unserialize_callback_func','mycallback'); 当反序列化后,PHP会寻找mycallback这个方法来include这个类文件,如果你没...
2013-09-06 15:10:52
675
原创 php url_rewrite后cookie问题
项目使用了url rewrite 隐藏了index.php后,设置cookie必须加上根路径才可全站获取。
2013-08-13 17:01:08
150
原创 php path_info orig_path_info
php 环境变量里有一个orig_path_info.事实它是原始的path_info(即未经过php处理过的).一般来说php会处理path_info,如果它无法解析,则会取消path_info,转而直接将path_info信息赋值给orig_path_info...
2013-06-05 15:36:15
234
原创 c实现bitmap
直接上代码.[code="java"]#include #include #include #define MAX 8972654 //随便设定的数#define SHIFT 5int bitmap[1 + MAX/32];int setbit(unsigned int x);int clearbit(unsigned int x);void print...
2013-05-14 14:34:23
142
原创 子shell 进程ID($$)
shell脚本中$$指当前进程ID,而调用$()执行命令时会生成子shell,按理说$()中用$$获取到的进程号是子shell的进程ID,但shell的规则是它获取到的是current shell的pid,而current_shell的进程id在这表现为派生子shell的shell进程ID#!/bin/bashecho $$test(){ echo $$}...
2013-04-26 18:35:23
511
原创 rsync invalid gid
执行rsync时经常会遇到invalid gid ***,或invalid uid ***的问题这是因为服务器端没有这个用户组或者用户,但你在配置文件里写了该用户组或用户.比如我的报错invalid gid nobody我用id命令id nobody 显示如下uid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup)...
2013-04-22 16:18:50
769
原创 可重入内核与可重入函数
所有的内核都是可重入的.但可重入内核不只是包含可重入函数.也可以包含不可重入函数,这时候信号量,自旋锁之类的同步机制就派上用场了.
2013-04-12 16:04:52
164
原创 自旋锁 死锁
以前在看linux操作系统时始终理解不了单CPU自旋锁导致死锁的问题.今天在网上搜了一下总算是理解了.摘录如下想象你的内核代码请求到一个自旋锁并且在它的临界区里做它的事情,在中间某处,你的代码失去了处理器。或许它已调用了一个函数(copy_from_user,假设)使进程进入睡眠。也或许,内核抢占发威,一个更高优先级的进程将你的代码推到了一边(注意,这都是假设,自旋锁其实不允许这些操作)。...
2013-04-12 14:21:36
285
原创 linux查看raid信息
有时我们需要看一下服务器的raid信息.1.软件raid的话可以通过 cat /proc/mdstat md1 : active raid1 sdb3[1] sda3[0] 480572352 blocks [2/2] [UU] md3 : active raid1 sdb2[1] sda2[0] 1952704 blocks [2/2]...
2013-04-10 15:42:47
447
原创 linux LVM分区 查看dm设备
在linux中iostat -d查看磁盘状态时,有的会有如下dm-0,dm-1的条目.Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtnsda 0.19 0.57 2.92 341228 1753052dm-0 ...
2013-04-10 15:00:07
2163
原创 mysql重启失败 ib_logfile
重启mysql主库时遇到 log file /data1/webserver/mysql/data/ib_logfile0 is of different size 0 5242880 bytes只要rm ib_logfile*即可。ib_logfile类文件是innodb引擎的事务日志文件。看mysql文档The ib_logfile's hold statements affe...
2013-04-08 13:34:11
395
原创 mysql监听多个端口的两种方式
有两种方式。1.利用MYSQL的mysqld_multi,在my.cnf中配置多个[mysqldN],比如[mysqld0],[mysqld1]。2.创建多个配置文件和相应目录,如my.3306.cnf,my.3307.cnf.两种方式差不多。第一种方式优点在于集中管理一个配置文件就可以(但一般不会在同一个服务器上监听三个以上端口吧)。但定制每个端口实例不太方便(毕竟改的是同一...
2013-04-08 11:15:44
619
原创 makefile中的CFLAGS与LDFLAGS
在configure时我们经常会遇到明明已经指令了目录但有时就是链接不了的情况,解决方法及原因如下(引用自http://www.cnblogs.com/taskiller/archive/2012/12/14/2817650.html)CFLAGS: 指定头文件(.h文件)的路径,如:CFLAGS=-I/usr/include -I/path/include。同样地,安装一个包时会在安...
2013-04-02 12:17:27
344
原创 linux修改进程打开文件数限制
有几种方法,但效果各不相同。1.修改/etc/security/limits.conf 添加如下两行 * soft nofile 65536 * hard nofile 65536 这种方法仅对当前配置有限,重启系统后就失效了。2.在/etc/rc.local中添加 ulimit -SHn 65536 可以保证重启系统仍然生效。注:直接ul...
2013-03-31 17:02:50
1183
原创 shell xargs
目录下有以下文件和目录examples.desktop kobe.txt test.jpg Music Public现在我需要把examples.desktop 和 kobe.txt移到Music里,一条命令处理完成.find -type f -maxdepth 1 | grep -v "test.jpg" | xargs -i mv {} Music其中xargs -i...
2013-03-29 18:24:48
95
原创 linux top部分列详解
linux TOP按f键可以出来显示条目选项.按p可以调出SWAP列.SWAP列相对于进程来说其实就是保存在该进程对应的文件中(而非保留在SWAP分区中).大小等于VIRT-RES的大小.VIRT为进程申请的虚拟内存大小(但不会全用),如MYSQL为了以后的运行可能申请1G的虚拟内存,但只会将最常用的和正在使用的驻留在内存中.RES即是真正驻留的物理内存大小(即算作真正的内存消耗)....
2013-03-28 17:40:31
518
原创 内存对齐
看书看到内存对齐一段时,突然想研究一下内存对齐最底层的原理.查找资料后总结如下.先用一句话来概括:“[color=darkred][b]数据项只能存储在地址是数据项大小的整数倍的内存位置上[/b][/color]” 例如int是4个字节,则只能在地址是0,4,8等位置上(即最后字节可以整除4).不同的系统有不同的对齐系数(一般32位系统是4字节(正好是32位数据线宽度),64位...
2013-03-28 14:27:14
86
原创 nginx hash源码分析
HASH是NGINX核心数据结构之一.见几个链接.分析的很详细1.http://www.linuxidc.com/Linux/2012-08/67040.htm2.http://www.oschina.net/question/234345_420653.http://blog.youkuaiyun.com/lifeibo/article/details/58971264.http://cod...
2013-02-05 19:05:55
143
原创 贪心算法与动态规划的区别
1.贪心算法和动态规划区别 贪心算法是自顶向下的,它会先做在当时看起来最优的选择. 而动态规划则自底向上的,先寻找子问题的最优解,然后再选择.以矩阵链相乘举例.A0A1A2A3A4动态规划会先把问题支解到最小,然后一步步向上选择最优的子问题.而动态规划会先算A0-A4的最好选择.比如是2,则再分别选择A0-A2,A3-A4的最优解...
2012-11-24 21:07:13
532
fgetc read缓冲机制区别
read属于系统调用,它的缓存是基于内核的缓冲,是记在内核空间的.而fgetc是标准函数, 是在用户空间I/O缓冲区的比如用fgetc读一个字节,fgetc有可能从内核中预读1024个字节到I/O缓冲区中,再返回第一个字节,这时该文件在内核中记录的读写位置是1024,而在FILE结构体中记录的读写位置是1.所以如果read一次读取的缓冲大小是1个字节,则1K的文件,read需要...
2012-11-13 22:02:08
175
原创 IPC及主频
IPC代表一个时钟周期内指令的执行条数.主频代表单位时间内的时钟周期数.所以两者共同决定了CPU的效率.即主频*IPC,单位时间内指令执行数....
2012-11-05 12:04:35
649
原创 条件传送与分支预测.
传统的CPU会利用分支预测来保持指令执行序列的流水线(即执行当前指令的同时取下一条指令).但如果预测失败则代价太大.新一代的CPU采用了条件传送指令.该方法预先计算出所有分支的结果以保持流水线指令序列.最后用一句cmovl(根据条件判断选择执行或跳过,一条指令内完成)指令来结束...
2012-11-05 12:04:14
209
原创 LINUX 删除特殊符号文件名文件
有时我们建了一些特殊符号的文件。导致rm不能删除该文件。如我建了一个文件.touch ’如果你要用rm直接删除’这个文件是不可能的。有两种办法。1:用转义符号。rm \’2:根据文件的inode号码删除, ls -bi;//列出文件的node号码 find -inum "ls出来的inode码" -exec rm -i {} \;...
2011-12-31 15:27:33
237
原创 MYSQL 索引 插入时 关闭索引
转载:http://hi.baidu.com/enkili/blog/item/296a4af9dd5e4ec4b48f31ce.html
2011-12-16 18:35:01
1080
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人