feisky

云计算、虚拟化与Linux技术笔记
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 66 下一页

2013年1月14日

摘要: sync,fsync,fdatasync,fflush之间的区别在 大多数的unix/linux对磁盘io的写操作都是通过缓存来完成的,基本的原理如下:当将数据写入文件时,内核通常先将该数据复制到其中一个缓冲区 中,如果该缓冲区尚未写满,则并不将其排入输出队列,而是等待其写满或者当内核需要重用该缓冲区以便存放其他磁盘块数据时,再将该缓冲排入输出队列,然后 待其到达队首时,才进行实际的I/O操作。 我们称之为延迟写,极大的减少了写磁盘的次数。但是在没写特殊的应用中我们需要实时的将应用层数据写入到磁盘上 特别是一些高可靠性要求的系统中 数据需要及时的写入磁盘 即便是瞬时系统故障 数据也可以安全恢复 阅读全文

posted @ 2013-01-14 21:19 feisky 阅读(1546) 评论(0) 推荐(0) 编辑

2013年1月9日

摘要: 这篇文章来源于Quroa的一个问答《What are some time-saving tips that every Linux user should know?》—— Linux用户有哪些应该知道的提高效率的技巧。我觉得挺好的,总结得比较好,把其转过来,并加了一些自己的理解。首先,我想告诉大家,在Unix/Linux下,最有效率技巧的不是操作图形界面,而是命令行操作,因为命令行意味着自动化。如果你看过《你可能不知道的Shell》以及《28个Unix/Linux的命令行神器》你就会知道Linux有多强大,这个强大完全来自于命令行,于是,就算你不知道怎么去做一个环保主义的程序员,至少他们可以 阅读全文

posted @ 2013-01-09 12:26 feisky 阅读(1486) 评论(0) 推荐(2) 编辑

2013年1月7日

摘要: 相信mstsc这个命令大家都不陌生(XP自带的远程桌面连接嘛,还要你说),对,就是远程桌面。但是不知道各位有没去留意过,当在XP运行里面打上mstsc命令并连接上另外一台机子,用任务管理器查看里面的进程的时候,你是否会发现里面有点光秃秃的感觉,少了些进程捏?我今天也是因为这个问题才纳闷,因为那台机子上我明明还挂着个程序在运行捏,但为什么进程里面没有,而且任务栏也没看到这个程序在运行(为什么我今天才会注意到呢?那是因为之前,那些程序都是开机自启的,今天重新安装了下程序在那机子上试跑),于是马上跑到那台机子上去看。咦?不是在运行吗?然后任务管理器,唉…不是那么少耶,于是纳闷了…… 接着百度啊goo 阅读全文

posted @ 2013-01-07 17:56 feisky 阅读(2443) 评论(0) 推荐(0) 编辑

2012年12月7日

摘要: chardet可以来帮助我们检测字符串的编码类型,使用如下:s ="utf-8 字符串"chardet.detect(s)得到的结果如:{'confidence':0.87624999999999997,'encoding':'utf-8'}这里需要提醒一下,因为字符串本身就有可能包含多种编码,因此chardet给出一个可信度(confidence),需要用户自己去判断和使用。但不管怎么,有总比没有强。 阅读全文

posted @ 2012-12-07 12:18 feisky 阅读(1878) 评论(0) 推荐(0) 编辑

摘要: import tracebacktry: raise ValueErrorexcept: tb = traceback.format_exc()else: tb = "No error"finally: print tbOriginal:http://stackoverflow.com/questions/4564559/get-exception-description-and-stack-trace-which-caused-an-exception-all-as-a-st 阅读全文

posted @ 2012-12-07 12:18 feisky 阅读(252) 评论(0) 推荐(0) 编辑

2012年12月6日

摘要: 字符串内码的转换,是开发中经常遇到的问题。在Java中,我们可以先对某个String调用getByte(),由结果生成新String的办法来转码,也可以用NIO包里面的Charset来实现。在Python中,可以对String调用decode和encode方法来实现转码。比如,若要将某个String对象s从gbk内码转换为UTF-8,可以如下操作s.decode(‘gbk’).encode(‘utf-8′)可是,在实际开发中,我发现,这种办法经常会出现异常:UnicodeDecodeError: ‘gbk’ codec can’t decode bytes in position 30664- 阅读全文

posted @ 2012-12-06 21:49 feisky 阅读(1195) 评论(0) 推荐(0) 编辑

摘要: root@ubuntu:~# echo '{"foo": "lorem", "bar": "ipsum"}'| json_pp { "bar" : "ipsum", "foo" : "lorem"}root@ubuntu:~# echo '{"foo": "lorem", "bar": "ipsum"}'| python -m 阅读全文

posted @ 2012-12-06 16:19 feisky 阅读(388) 评论(0) 推荐(0) 编辑

摘要: 比较容易记忆的是用内置的setl1 = ['b','c','d','b','c','a','a']l2 = list(set(l1))print l2 还有一种据说速度更快的,没测试过两者的速度差别l1 = ['b','c','d','b','c','a','a']l2 = {}.fromkeys(l1).keys()print l2 这两种都有个缺点,祛除重复元素后排序变 阅读全文

posted @ 2012-12-06 16:16 feisky 阅读(15326) 评论(0) 推荐(0) 编辑

2012年10月27日

摘要: 1. telnet是标准的提供远程登录功能的应用,一个简单的telnat示意图如下: 注意: 1)Telnet客户进程同时和终端用户和TCP/IP协议模块进行交互。通常我们所键入的任何信息的传输是通过TCP连接,连接的任何返回信息都输出到终端上。 2)Telnet服务器进程经常要和一种叫做“伪终端设备”(pseudo-terminaldevice)打交道,至少在Unix系统下是这样的。这就使... 阅读全文

posted @ 2012-10-27 22:33 feisky 阅读(1581) 评论(1) 推荐(0) 编辑

2012年10月24日

摘要: 1. TCP的路径MTU探测(1)根据自身MTU及对方SYN中携带的MSS确定发送报文数据部分的最大容量(如果对方没有指定MSS,则默认为536); (2)在IP头部打开DF标志位; (3)如果收到ICMP错误信息告知需要分片, 如果ICMP信息中包含下一跳MTU的信息, 那么根据这个值调整数据的最大容量, 如果ICMP信息中不支持这种新协议(下一跳MTU值为0), 那么调整数据的最大容量至下一个可能的大小; (4)DF标志位会一直打开, 以保证能够测量得到正确的Path MTU; (5)超时后会重新探询Path MTU以保证链路改变也能用到正确的Path MTU.TCP Path MTU探询 阅读全文

posted @ 2012-10-24 21:37 feisky 阅读(1876) 评论(0) 推荐(0) 编辑

2012年10月23日

摘要: 1. 滑动窗口协议允许发送方在停止并等待确认前可以连续发送多个分组,由于发送方不必每发一个分组就停下来等待确认,因此该方法可以加速数据的传输。2. 滑动窗口窗口大小表示接收端的TCP协议缓存中还有多少剩余空间,用于接收端的流量控制特点:(1)发送方不必发送一个全窗口的大小(2)来自接收方的一个报文段确认数据并把窗口向右滑动(窗口大小是相对于确认序号的)(3)窗口的大小可以减小,但窗口的右边不能向左移动(4)接收方在发送一个ACK前不必等待窗口被填满 窗口更新:一个ACK分组,但不确认任何数据(分组中的序号已被前面的ACK确认),只是通知对方窗口大小已变化 3. PUSH标志发送方使... 阅读全文

posted @ 2012-10-23 20:28 feisky 阅读(510) 评论(0) 推荐(0) 编辑

摘要: 1. 对每个连接,TCP管理4个定时器:(1)重传定时器:用于等待另一端的确认;(2)persist定时器:用于使窗口大小信息保持不断流动,即使另一端关闭了其接收窗口;(3)keepalive定时器:用于检测空闲连接的另一端是否崩溃或重启;(4)2MSL定时器:用于测量一个处于TIME_WAIT状态连接的时间2. 超时与重传递时间间隔超时时间可以应用程序设置(SO_RCVTIMEO,SO_SNDTIMEO),而重试的时间采用指数退避的方式,即每次重试的时间间隔为上次的2倍。在目前的实现中,首次分组传输与复位信号传输的时间间隔为9分钟。3. 往返时间RTT的测量平滑的RTT估计器:R=alpha 阅读全文

posted @ 2012-10-23 20:28 feisky 阅读(2646) 评论(0) 推荐(0) 编辑

摘要: persist定时器1. 使用persist定时器的原因ACK的传输不可靠,TCP并不对ACK报文进行确认,TCP只确认哪些那些包含了数据的ACK报文段。这样,如果一个ACK丢失了,就会因双方相互等待而导致连接终止:接收方等待接收数据(它已经通告了一个非0的窗口),发送方在等待允许它继续发生数据的窗口更新。2. persist定时器:发送方使用一个persist定时器来定期的向接收方查询窗口是否增大,这些从发送方发出的报文段称为窗口探查。窗口探查包含一个字节的数据,即序号。这些探查每隔60s发送一次,直到窗口被打开或者连接被终止。3. 糊涂窗口综合症糊涂窗口综合症的产生考虑以下两种情况: (1 阅读全文

posted @ 2012-10-23 20:28 feisky 阅读(482) 评论(0) 推荐(0) 编辑

摘要: 1. Keepalive定时器用于用于检测空闲连接的另一端是否崩溃或重启。2. 设置SO_KEEPALIVE选项后,如果2小时内在此套接口的任一方向都没有数据交换,TCP就自动给对方 发一个保持存活探测报文段,客户主机处于以下4种状态之一:(1)客户主机接收一切正常,服务器收到期望的ACK响应,并将keepalive定时器复位。(2)客户主机已崩溃,并且关闭或者正在重启。此时,服务器无法收到相应,在75s后超时。服务器=总共发出10个这样的探查,每个间隔75秒。如果一个响应都没有收到,则终止连接。(3)客户主机已重启,此时服务器将收到一个复位响应,终止连接。(4)客户主机正常运行,但服务不可达 阅读全文

posted @ 2012-10-23 20:28 feisky 阅读(692) 评论(0) 推荐(0) 编辑

2012年10月21日

摘要: TCP的数据流可以大致分为两类:交互数据流和成块数据流。交互数据流通常很小,而成块数据流通常是满长度的(512字节)。TCP在处理两类数据的时候,其算法有所不同。 数据捎带ACK 对于交互式输入,一种可能的按键回显方法如下: 图中,中间的数据字节的确认和数据字节的回显可以合并发送,即通过经受时延的确认(数据捎带ACK)来合并。 数据捎带ACK:TCP在收到数据的时候并不立即发送ACK,而是推迟发... 阅读全文

posted @ 2012-10-21 23:34 feisky 阅读(1874) 评论(1) 推荐(0) 编辑

上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 66 下一页
无觅相关文章插件,快速提升流量