<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[tedious的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/tedious</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; tedious]]></copyright><item><title><![CDATA[expect一些资料]]></title><link>https://blog.youkuaiyun.com/tedious/article/details/51280409</link><guid>https://blog.youkuaiyun.com/tedious/article/details/51280409</guid><author>tedious</author><pubDate>Fri, 29 Apr 2016 15:28:50 +0800</pubDate><description><![CDATA[在expect中通过exec cmd 来执行系统命令。







1

2

3

4

5




% exec date

2014年
 04月 22日 星期二 16:00:39 CST

% exec date > date.txt

% exec cat  date.txt

2014年
 04月 22日 星期二 16:00]]></description><category></category></item><item><title><![CDATA[CMake 学习]]></title><link>https://blog.youkuaiyun.com/tedious/article/details/47730853</link><guid>https://blog.youkuaiyun.com/tedious/article/details/47730853</guid><author>tedious</author><pubDate>Mon, 17 Aug 2015 20:05:42 +0800</pubDate><description><![CDATA[CMake PROJECT_BINARY_DIR和PROJECT_SOURCE_DIR区别


看了好多网上的文章，都说PROJECT_BINARY_DIR和PROJECT_SOURCE_DIR是等价的。

实际不然。

一般来说，都是这样用 

cmake ./

这样PROJECT_BINARY_DIR和PROJECT_SOURCE_DIR是等价的。也就是当前源码的目录。]]></description><category></category></item><item><title><![CDATA[逻辑地址、线性地址、物理地址和虚拟地址]]></title><link>https://blog.youkuaiyun.com/tedious/article/details/42134371</link><guid>https://blog.youkuaiyun.com/tedious/article/details/42134371</guid><author>tedious</author><pubDate>Thu, 25 Dec 2014 00:55:49 +0800</pubDate><description><![CDATA[一、概念

　　物理地址(physical address)

　　用于内存芯片级的单元寻址，与处理器和CPU连接的地址总线相对应。

　　——这个概念应该是这几个概念中最好理解的一个，但是值得一提的是，虽然可以直接把物理地址理解成插在机器上那根内存本身，把内存看成一个从0字节一直到最大空量逐字节的编号的大数组，然后把这个数组叫做物理地址，但是事实上，这只是一个硬件提供给软件的抽像，内]]></description><category></category></item><item><title><![CDATA[Python使用struct处理二进制(pack和unpack用法)]]></title><link>https://blog.youkuaiyun.com/tedious/article/details/42123707</link><guid>https://blog.youkuaiyun.com/tedious/article/details/42123707</guid><author>tedious</author><pubDate>Wed, 24 Dec 2014 14:41:15 +0800</pubDate><description><![CDATA[转载自：http://www.cnblogs.com/gala/archive/2011/09/22/2184801.html

这篇文章写的很好，所以无耻的转了。。

有的时候需要用python处理二进制数据，比如，存取文件，socket操作时.这时候，可以使用python的struct模块来完成.可以用 struct来处理c语言中的结构体.

struct模块中最重要的三个函数是p]]></description><category></category></item><item><title><![CDATA[Linux 信号]]></title><link>https://blog.youkuaiyun.com/tedious/article/details/42120907</link><guid>https://blog.youkuaiyun.com/tedious/article/details/42120907</guid><author>tedious</author><pubDate>Wed, 24 Dec 2014 10:50:18 +0800</pubDate><description><![CDATA[最常见的一句话就是“信号是中断机制的一种模拟”。

中断和异常


 

l  中 断（也称硬件中断）

定义 ：中断是由其他硬件设备依照CPU 时钟周期信号随机产生的。

分类 ： 可屏蔽中断

非可屏蔽中断

来源： 间隔定时器和I/O

 

l  异 常（也称软件中断）

定义 ：当指令执行时由 CPU控制单元 产生的，异常也称为“异步中断”是因为]]></description><category></category></item><item><title><![CDATA[day3]]></title><link>https://blog.youkuaiyun.com/tedious/article/details/42078187</link><guid>https://blog.youkuaiyun.com/tedious/article/details/42078187</guid><author>tedious</author><pubDate>Mon, 22 Dec 2014 14:39:51 +0800</pubDate><description><![CDATA[tcpdump ip host 192.168.119.131 -vc10    host主机  -v显示详细信息 -c统计多少条后停止
tcpdump -i eth0  -vc10    -i指定网卡的数据

tcpdump tcp port 23  tcp协议，port端口号


 否定操作 (`!' 或 `not')
 与操作(`&&' 或 `and')
 或操作(`||' 或]]></description><category></category></item><item><title><![CDATA[排序算法的稳定性]]></title><link>https://blog.youkuaiyun.com/tedious/article/details/42030075</link><guid>https://blog.youkuaiyun.com/tedious/article/details/42030075</guid><author>tedious</author><pubDate>Fri, 19 Dec 2014 17:34:16 +0800</pubDate><description><![CDATA[//////////////////////////////////////////////稳定性分析////////////////////////////////////////////////

排序算法的稳定性，通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。

稳定性的好处：若排序算法如果是稳定的，那么从一个键上排序，然后再从另一个键]]></description><category></category></item><item><title><![CDATA[dayreading2]]></title><link>https://blog.youkuaiyun.com/tedious/article/details/42029557</link><guid>https://blog.youkuaiyun.com/tedious/article/details/42029557</guid><author>tedious</author><pubDate>Fri, 19 Dec 2014 16:59:34 +0800</pubDate><description><![CDATA[udp connect:
标准的udp客户端开了套接口后，一般使用sendto和recvfrom函数来发数据，实际上，udp发送数据有两种方法供大家选用的：
方法一： 
socket----->sendto()或recvfrom() 
方法二： 
socket----->connect()----->send()或recv().(此时sendto,recvfrom仍可用)
从定义可以看]]></description><category></category></item><item><title><![CDATA[内存分配的原理__进程分配内存有两种方式]]></title><link>https://blog.youkuaiyun.com/tedious/article/details/42008707</link><guid>https://blog.youkuaiyun.com/tedious/article/details/42008707</guid><author>tedious</author><pubDate>Thu, 18 Dec 2014 18:21:23 +0800</pubDate><description><![CDATA[如何查看进程发生缺页中断的次数？

         用ps -o majflt,minflt -C program命令查看。

          majflt代表major fault，中文名叫大错误，minflt代表minor fault，中文名叫小错误。

          这两个数值表示一个进程自启动以来所发生的缺页中断的次数。

发成缺页中断后，执行了那些操作？
]]></description><category></category></item><item><title><![CDATA[对libevent+多线程服务器模型的C++封装类]]></title><link>https://blog.youkuaiyun.com/tedious/article/details/41877203</link><guid>https://blog.youkuaiyun.com/tedious/article/details/41877203</guid><author>tedious</author><pubDate>Thu, 11 Dec 2014 22:07:39 +0800</pubDate><description><![CDATA[原文http://blog.youkuaiyun.com/aaa20090987/article/details/8595499


http://www.tuicool.com/articles/QBj2ma


最近在看memcached的源码，觉得它那种libevent+多线程的服务器模型真的很不错，我将这个模型封装成一个C++类，根据我的简单测试，这个模型的效率真的很不错，欢迎大家试用。]]></description><category></category></item><item><title><![CDATA[虚析构函数和protected析构函数]]></title><link>https://blog.youkuaiyun.com/tedious/article/details/39964881</link><guid>https://blog.youkuaiyun.com/tedious/article/details/39964881</guid><author>tedious</author><pubDate>Fri, 10 Oct 2014 16:38:05 +0800</pubDate><description><![CDATA[一、虚析构函数
类型需要虚析构函数的另外一个特征 是该类型具有指针成员或引用成员。如果有指针成员和引用成员，则该类型通常需要实现析构函数以及拷贝操作。
 
通常，一个实现了析构函数的类型同时也需要实现拷贝构造函数与拷贝复制函数。
 
作为一个经验法则：
如果你有一个带有虚函数功能的类，则它需要一个虚析构函数，原因如下：
 
1. 如果一个类有虚函数功能，它经常作为一个基类使用。
]]></description><category></category></item><item><title><![CDATA[SVN 操作不当]]></title><link>https://blog.youkuaiyun.com/tedious/article/details/37568759</link><guid>https://blog.youkuaiyun.com/tedious/article/details/37568759</guid><author>tedious</author><pubDate>Tue, 08 Jul 2014 18:13:31 +0800</pubDate><description><![CDATA[随意修改了subversion 中 xx/db/revprops/里面的一个日志信息内容，结果导致svn版本报错，不能下载和]]></description><category></category></item><item><title><![CDATA[“惊群”，看看nginx是怎么解决它的]]></title><link>https://blog.youkuaiyun.com/tedious/article/details/25327397</link><guid>https://blog.youkuaiyun.com/tedious/article/details/25327397</guid><author>tedious</author><pubDate>Thu, 08 May 2014 17:43:30 +0800</pubDate><description><![CDATA[在说nginx前，先来看看什么是“惊群”？简单说来，多线程/多进程（linux下线程进程也没多大区别）等待同一个socket事件，当这个事件发生时，这些线程/进程被同时唤醒，就是惊群。可以想见，效率很低下，许多进程被内核重新调度唤醒，同时去响应这一个事件，当然只有一个进程能处理事件成功，其他的进程在处理该事件失败后重新休眠（也有其他选择）。这种性能浪费现象就是惊群。




惊群通常发生]]></description><category></category></item><item><title><![CDATA[vi编辑器中的匹配搜索操作]]></title><link>https://blog.youkuaiyun.com/tedious/article/details/19990021</link><guid>https://blog.youkuaiyun.com/tedious/article/details/19990021</guid><author>tedious</author><pubDate>Wed, 26 Feb 2014 17:11:42 +0800</pubDate><description><![CDATA[玩转VIM编辑器-强力搜索
搜索导航




导航键


描述




/


向前搜索，前向




?


向后搜索，反向












n


跳转到下一个搜索词所在位置




N


跳转到前一个搜索词所在位置




//或??


重复前面的搜索或反向搜索
]]></description><category></category></item><item><title><![CDATA[关于socket阻塞与非阻塞情况下的recv、send、read]]></title><link>https://blog.youkuaiyun.com/tedious/article/details/14519023</link><guid>https://blog.youkuaiyun.com/tedious/article/details/14519023</guid><author>tedious</author><pubDate>Fri, 08 Nov 2013 11:06:30 +0800</pubDate><description><![CDATA[1、阻塞模式与非阻塞模式下recv的返回值各代表什么意思？有没有区 别？（就我目前了解阻塞与非阻塞recv返回值没有区分，都是 0接收到数据大小，特别：返回值 <0时并且(errno == EINTR || errno
 == EWOULDBLOCK || errno == EAGAIN)的情况下认为连接是正常的，继续接收。只是阻塞模式下recv会阻塞着接收数据，非阻塞模式下如果没有数据会返回，]]></description><category></category></item><item><title><![CDATA[redis]]></title><link>https://blog.youkuaiyun.com/tedious/article/details/10963355</link><guid>https://blog.youkuaiyun.com/tedious/article/details/10963355</guid><author>tedious</author><pubDate>Tue, 03 Sep 2013 10:41:09 +0800</pubDate><description><![CDATA[Rdis和JQuery一样是纯粹为应用而产生的，这里记录的是在CentOS 5.7上学习入门文章：
1.Redis简介
 Redis是一个key-value存储系统。和Memcached类似，但是解决了断电后数据完全丢失的情况，而且她支持更多无化的value类型，除了和string外，还支持lists（链表）、sets（集合）和zsets（有序集合）几种数据类型。这些数据类型都支持push/p]]></description><category></category></item><item><title><![CDATA[memcheck]]></title><link>https://blog.youkuaiyun.com/tedious/article/details/9980847</link><guid>https://blog.youkuaiyun.com/tedious/article/details/9980847</guid><author>tedious</author><pubDate>Thu, 15 Aug 2013 11:47:19 +0800</pubDate><description><![CDATA[常用选项: 
valgrind --tool=memcheck --leak-check=full --xml=yes --xml-file=test.xml yourprog
--leak-check=：如果设为yes或full，在被调程序结束后，valgrind会详细叙述每一个内存泄露情况，默认是summary，只报道发生了几次内存泄露。
--show-possibly-lost=：默认]]></description><category></category></item><item><title><![CDATA[keepalive总结]]></title><link>https://blog.youkuaiyun.com/tedious/article/details/9374107</link><guid>https://blog.youkuaiyun.com/tedious/article/details/9374107</guid><author>tedious</author><pubDate>Thu, 18 Jul 2013 22:27:09 +0800</pubDate><description><![CDATA[服务器端和客户端的Socket都设定了keepalive属性。
服务器端设定了探测次数等参数，客户端、服务器只是打开了keepalive机能
服务器端起了一个监视线程，利用select来检测socket是否被关闭。。。

下面这是我的一点肤浅理解。

1.关于keep alive

无论windows,还是linux,keepalive就三个参数：


sk->keepali]]></description><category></category></item><item><title><![CDATA[内存管理]]></title><link>https://blog.youkuaiyun.com/tedious/article/details/9364603</link><guid>https://blog.youkuaiyun.com/tedious/article/details/9364603</guid><author>tedious</author><pubDate>Thu, 18 Jul 2013 10:54:59 +0800</pubDate><description><![CDATA[首先介绍概念：
页框：通俗的说就是物理内存上的单元。请注意与“页”的区别。页有两重意思，不过最多的用法是指线性地址的单元。所以一个是实际物理内存的单元，一个是线性地址/虚拟内存的单元。在大多数情况下，页框大小等于页的大小，为4KB，使得一个页框恰好可以容纳一个页的数据。
（1）为什么要进行内存管理？
内存管理的目的总体上说无非是两点：提高时间效率和提高空间效率。时间效率也就是尽量使寻找到空闲]]></description><category></category></item><item><title><![CDATA[共享内存]]></title><link>https://blog.youkuaiyun.com/tedious/article/details/9352127</link><guid>https://blog.youkuaiyun.com/tedious/article/details/9352127</guid><author>tedious</author><pubDate>Wed, 17 Jul 2013 10:59:43 +0800</pubDate><description><![CDATA[共享内存可以说是最有用的进程间通信方式，也是最快的IPC形式, 因为进程可以直接读写内存，而不需要任何

数据的拷贝。对于像管道和消息队列等通信方式，则需要在内核和用户空间进行四次的数据拷贝，而共享内存则

只拷贝两次数据: 一次从输入文件到共享内存区，另一次从共享内存区到输出文件。实际上，进程之间在共享内

存时，并不总是读写少量数据后就解除映射，有新的通信时，再重新建立共享内存区域]]></description><category></category></item></channel></rss>