??xml version="1.0" encoding="utf-8" standalone="yes"?>久久亚洲高清观看,欧美日韩精品久久久免费观看,精品无码久久久久久国产 http://www.shnenglu.com/sigepluto/archive/2010/03/26/110622.htmlJakcie Jakcie Fri, 26 Mar 2010 14:15:00 GMT http://www.shnenglu.com/sigepluto/archive/2010/03/26/110622.html http://www.shnenglu.com/sigepluto/comments/110622.html http://www.shnenglu.com/sigepluto/archive/2010/03/26/110622.html#Feedback 4 http://www.shnenglu.com/sigepluto/comments/commentRss/110622.html http://www.shnenglu.com/sigepluto/services/trackbacks/110622.html
上次说日本v啸警报的时候,E序出错。在解析代码的时候,发现了MFC中的一个Bug?/p>
一。问题的产生?/p>
q个E序Q用来处理日本各U天气预报数据,包括灑֮的预报。如果地震,台风之类的自然灾宛_来,E序会把预报数据q行处理Q生成相应的警报信息Qƈ在电视上面显C滚动的字幕来提C。程序本w,是几q前公司的其他h写的。里面有涉及到文件读写的地方Q有很多地方Q用了MFC中自带的文gdcCStdioFile?/p>
CStdioFileq个文gdc,估计大家都不陌生。这个类的父c,是CFilecRCStdioFilecLw的功能也很单。CStdioFilecL一个成员函数是ReadStringQ函数的定义如下Q?/p>
virtual LPTSTR ReadString(__out_ecount_z(nMax) LPTSTR lpsz, __in UINT nMax);
virtual BOOL ReadString(CString& rString); MSDN定义如下http://msdn.microsoft.com/library/x5t0zfyf(VS.80).aspx Q?pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; height: 118px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px">BOOL ReadString(CString& rString);
throw ( CFileException );
Return Value
A pointer to the buffer containing the text data. NULL if end-of-file was reached without reading any data; or if boolean, FALSE if end-of-file was reached without reading any data.
ReadString函数能直接读取文本中的一行数据到CString中,很方ѝ读到文件结,没有dM数据的时候,q回FALSE。很单的函数Q但恰恰是这个函数有Bug?/p>
E序在处理数据的时候,会生成一些时文Ӟ然后会读取这些时文件中的数据,d操作Q正是用的CStdioFile的ReadString函数。读取流E很单:
while (dFile.ReadString(Str_temp))
{
doSomething();
}
当时的现象ؓQ读取到最后一行,L直接q回FALSEQ怎么也读不出最后一行来。看了看文g的最后一行,包含2176个字W的数据Q没有换行符。没有Q何异常啊。当时没惛_是MFC的BugQ因Z前有q样那样的毛病,多数是预报数据本w有问题Q所以这ơ也是先分析数据了。分析来分析去,没发现这ơ的数据有什么异常。后来发现如果最后一行的文g不是2176个字W,p正常d来。奇了怪了Q?176也不是什么特D长度啊。实验了几次后,觉的是在不对劌Ӏ莫非是MFC的BugQ?/p>
二。发现问题所?/p>
军_看看MFC的代码再说。做了个单的试E序Q跟到MFC代码里一看,果然是MFC的问题!试代码如下Q?/p>
CStdioFile dFile;
dFile.Open("text.txt ",CFile::modeRead);
CString str;
while (dFile.ReadString(str) != FALSE )
{
printf("%s ", str);
}
dFile.Close();
试代码很简单,读text.txt文g中的每一行,然后打印出来。还?176个字W就不行。确定了不是数据的问题,是MFC代码本n的Bug?/p>
MFC的ReadString代码如下Q(中文是我加的注释Q?/p>
BOOL CStdioFile::ReadString(CString& rString)
{
ASSERT_VALID(this );
rString = &afxChNil; // empty string without deallocating
const int nMaxSize = 128; //临时字符串的长度
LPTSTR lpsz = rString.GetBuffer(nMaxSize); //保存每次d到的字符串到CString?/span>
LPTSTR lpszResult; //指向每次d的字W串
int nLen = 0;
for (;;)
{
lpszResult = _fgetts(lpsz, nMaxSize+1, m_pStream); //d操作
rString.ReleaseBuffer();
// handle error/eof case
if (lpszResult == NULL && !feof(m_pStream))
{
clearerr(m_pStream);
AfxThrowFileException(CFileException::generic, _doserrno,
m_strFileName);
}
// if string is read completely or EOF
if (lpszResult == NULL ||
(nLen = lstrlen(lpsz)) < nMaxSize ||
lpsz[nLen-1] == '\n')
break ;
nLen = rString.GetLength();
lpsz = rString.GetBuffer(nMaxSize + nLen) + nLen; //位置后移
}
// remove '\n' from end of string if present
lpsz = rString.GetBuffer(0);
nLen = rString.GetLength();
if (nLen != 0 && lpsz[nLen-1] == '\n') // 最后结果中Q去掉回车符
rString.GetBufferSetLength(nLen-1);
return lpszResult != NULL; // q里是Bug的关键。返回g对!
}
可以看到QReadString的底层,是用fgets来读取文件的。在内部Q每ơ读?28个字W到CString中,然后位置后移Q反复读?28个字W,直到遇到回RW或者文件结束。最后把回RW去掉,q回一个CString。其中,lpszResult也指向每ơ读出的字符丌Ӏ?/p>
q里q出问题所在了Q?176个字W,正好?28?7倍!也就是说Q?font color="#ff0000">只要文g最后一行是128倍数个字W,׃定会q回FALSE?/strong>
Z么会q样呢,因ؓReadString在每ơ读?28个字W的时候,用lpszResult指向d到的字符丌Ӏ如果读满了128个字W,ql读Q如果读到的字符不够128个,那么q束读取?/font>
当一行数据正好ؓ128的倍数Q又没有回RW的时候,会发生什么呢Q比如最后一行数据是128个,那么Q读一?28个字W,会l读下一ơ,但是下一ơ的dQ什么也没有dQlpszResult指向NULLQ最后的q回|是return lpszResult != NULL; 所以返回FALSE?/font>
但之前读到的128个字W,已经在CString里面了?/font>也就是说实际上读取已l成功了Q但q是q回了FALSE。返回g恰当Q?/font>
Bug的描qͼ当文件的最后一行数据,正好?28的倍数个字W的时候,?/font>ReadStringdQ一定会q回FALSE。但实际上读取是成功的,q回的CString中的数据是正的Q(VC6.0中存在这个BugQVS2005中,没有q个BugQ?/font>
q个BugQ只会媄响到最后一行数据。因为如果有换行W的存在QlpszResult׃会ؓNULL?/font>
三。解x?/font>
要解册个问题,也简单,修改一下判断ReadString成功与否的语句:
while (dFile.ReadString(str) != FALSE || str.GetLength() != 0)
在返回FALSE的情况下QCString的长度不?Q就不算dp|。或者这?
if (!dFile.ReadString(str) && str.GetLength() == 0)
在返回FALSEq且CString的长度ؓ0Q则读取失败,否则是d成功?/p>
q个E序Q是用VC6.0做的Q我有看了看VC2005中的代码Q发现这个Bug被修复了Q代码如下:
BOOL CStdioFile::ReadString(CString& rString)
{
ASSERT_VALID(this );
rString = _T(" "); // empty string without deallocating
const int nMaxSize = 128;
LPTSTR lpsz = rString.GetBuffer(nMaxSize);
LPTSTR lpszResult;
int nLen = 0;
for (;;)
{
lpszResult = _fgetts(lpsz, nMaxSize+1, m_pStream);
rString.ReleaseBuffer();
// handle error/eof case
if (lpszResult == NULL && !feof(m_pStream))
{
Afx_clearerr_s(m_pStream);
AfxThrowFileException(CFileException::genericException, _doserrno,
m_strFileName);
}
// if string is read completely or EOF
if (lpszResult == NULL ||
(nLen = (int )lstrlen(lpsz)) < nMaxSize ||
lpsz[nLen-1] == '\n')
break ;
nLen = rString.GetLength();
lpsz = rString.GetBuffer(nMaxSize + nLen) + nLen;
}
// remove '\n' from end of string if present
lpsz = rString.GetBuffer(0);
nLen = rString.GetLength();
if (nLen != 0 && lpsz[nLen-1] == '\n')
rString.GetBufferSetLength(nLen-1);
return nLen != 0; //q回值变了!
}
我们看到QVC2005中,d部分的代码与VC6.0中的代码完全一栗不一L地方只是q回值的部分。VC2005的ReadString中,q回gؓ
return nLen != 0;
也就是说Q只要读出的CString的长度不?׃ؓd成功。与我修改后的方法完全一致。就q样向客戯释,然后修改了。悲剧的是,几年前所有程序中所有用ReadString函数的地方,都要q行修改。。?/p>
MFC的这个Bug比较隐蔽Q^怸Ҏ发现Q但一旦遇到特D长度的数据Q就会表现异常。所以,在用VC6.0开发的时候,量避免使用ReadStringQ或者在使用中,多判断一步读取出来的CString长度。避开q个Bug?/p>
]]>虚惊一场的啸 http://www.shnenglu.com/sigepluto/archive/2010/03/08/109161.htmlJakcie Jakcie Sun, 07 Mar 2010 18:07:00 GMT http://www.shnenglu.com/sigepluto/archive/2010/03/08/109161.html http://www.shnenglu.com/sigepluto/comments/109161.html http://www.shnenglu.com/sigepluto/archive/2010/03/08/109161.html#Feedback 1 http://www.shnenglu.com/sigepluto/comments/commentRss/109161.html http://www.shnenglu.com/sigepluto/services/trackbacks/109161.html 2?7日,智利发生8.8U特大地震,1个世U以来最强的地震Q全球都在关注。其中,日本的反应尤其大。日本本w自然灾害特别多。火山,地震Qv啸,以及z水。所以,对这U自然灾宛_然的比较敏感。最主要的原因,在于智利的地震,会媄响到日本Q这是有前R之鉴的?/p> 1960q智利v域发生了9.5U(太恐怖了。。。)地震。引起了啸Q一直穿q整个太qxQ从南美Q一直到东亚。日本,夏威P菲律N?00多hM。所以,q次8.8U地震,如果再来一ơv啸,那可不得了啊。这ơ智利爆发的地震Q引发了剧烈的v啸。如今,啸的巨正在横q太qxQ直奔日本v岸而来。估计到达日本时Q浪高依然可以达?0-20英尺?/p>
日本全国都在紧急动员防范v啸,电视台在电视屏幕一角实时展CZq日本地图,所有专安会遭到啸袭击的地区都被标记出来,如今Q从北v?到冲lI整个日本东v岸几乎都变成了一片红艌Ӏ屏q上方则在滚动播出沿各地发布的遉K通知Q例如,青森县已l有一万九千多戯要求dq入公用遉K?施。日本全国到现在为止已有40万hd家园。整个流E顺畅,井然有序。这一切,一斚w反映了日本在自然灑֮面前的准备工作,另一斚w也反映了日本?间的恐惧?/p>
q播员在不断在播报各地vq面的增高情况,镜头不时切换到沿岸各圎ͼ报道当地状况和抢险准备的情况Q很多沿公路如东名高速公路已l关闭,h公园停止营业Q船舶纷U入避难\Uѝ经常有dx断播韛_的播报,紧急通报某地^面出现异常增高。{眼间有了一U陷入某场战争的感觉?/p>
发个图,看的比较清楚。整个日本靠太^z的一边,全部是v啸警报?/p>
公司做的目Q正好是l各个电视台做的天气预报目Q地震台风v啸的预报Q也包含在内。关键时刻,日本电视台打电话_预报图显C的有误Q只能看到大阪的高Q其他地Ҏ有浪高。导致只能显C部分的警报图。东京电视台也打电话说电视上滚动昄的警报文字,用我们的E序处理不了Q显C出不来。马上ؕ套了Q当天公司几个h都通宵在处理。最后强制显C全国的警报图?/p>
最后发玎ͼ日本电视台预报图昄有误Q其实是正确的,本来其他地方没有浪高。ؓ什么呢Q因为根本就没那么大的浪Q?/p>
日本气象厅在3??0?5分全面解除太qx沿岸啸警报? 气象厅负责地震v啸检的N在记者会见中谢罪Uͼ“对于啸预测大大过了实际情况,以及警报旉q长表示歉意?#8221;
Z么这ơ的地震Q没有引起很大的啸呢?
智利此次地震所引发的v怹h很强的方向性,英国威尔士大学新港学院(University of Wales, NewportQ的Simon Haslett ?#8220;q回的v啔R常有方向性,而不是那U均匀向四周传播的‘往池塘里扔矛_’似的波浪”。他表示震中最q的岸Q以及胡安费南h岛QJuan Fernandez IslandsQv啔R常强Q但是其他方向的啸能量和高度迅速减退?
而且Q地震震源的相对深度?5公里—可能也减小了v床的上升Q而正是v床的上升排挤了v水。英国u敦大学学院Bill McGuire表示“相比?004q的印度z地震,智利地震要更深,释放到地表的能量也更?#8221;?
虚惊一场啊?
至于东京电视台的预报文字处理不出来,l过我一步步DebugQ最后发玎ͼ是MFC的一个Bug造成的!气死我了。导致所有代码涉及这个Bug的地斚w要修攏V下日志,详细说说q个Bug?/p>
]]> 快速扩展文件大?/title> http://www.shnenglu.com/sigepluto/archive/2010/03/03/108814.htmlJakcie Jakcie Wed, 03 Mar 2010 09:57:00 GMT http://www.shnenglu.com/sigepluto/archive/2010/03/03/108814.html http://www.shnenglu.com/sigepluto/comments/108814.html http://www.shnenglu.com/sigepluto/archive/2010/03/03/108814.html#Feedback 0 http://www.shnenglu.com/sigepluto/comments/commentRss/108814.html http://www.shnenglu.com/sigepluto/services/trackbacks/108814.html 具体Ҏ有:lseek或?truncateQ在Windows中,可以选择 _lseek 或?SetEndOfFile?nbsp; 阅读全文 ]]> Linux中的旉 http://www.shnenglu.com/sigepluto/archive/2009/11/25/101927.htmlJakcie Jakcie Wed, 25 Nov 2009 12:27:00 GMT http://www.shnenglu.com/sigepluto/archive/2009/11/25/101927.html http://www.shnenglu.com/sigepluto/comments/101927.html http://www.shnenglu.com/sigepluto/archive/2009/11/25/101927.html#Feedback 0 http://www.shnenglu.com/sigepluto/comments/commentRss/101927.html http://www.shnenglu.com/sigepluto/services/trackbacks/101927.html 在Windwos中,pȝ旉的设|很单,界面操作Q通俗易懂。而且讄后,重启Q关机都没关pR系l时间会自动保存在Bios的时钟里面,启动计算机的时候,pȝ会自动在Bios里面取硬件时_以保证时间的不间断?/p> 但在Linux下,默认情况下,pȝ旉和硬件时_q不会自动同步。在Linuxq行q程中,pȝ旉和硬件时间以异步的方式运行,互不q扰。硬件时间的q行Q是靠Bios甉|来维持,而系l时_是用CPU tick来维持的?/p>
在系l开机的时候,会自动从Bios中取得硬件时_讄为系l时间?/p>
一.Linuxpȝ旉的设|?/strong>
在Linux中设|系l时_可以用date命oQ?/p>
//查看旉
[root@localhost ~]# date 2008q?12?12?星期?14:44:12 CST
//修改旉 [root@localhost ~]# date --set "1/1/09 00:01" <== Q月/?q时:?U) 2009q?01?01?星期?00:01:00 CST
//date 有几U时间格式可接受Q这样也可以讄旉Q?
[root@localhost ~]# date 012501012009.30 <== 月日时分q?U?br>2009q?01?25?星期?01:01:30 CST
?Linuxg旉的设|?/strong>
g旉的设|,可以用hwclock或者clock命o。其中,clock和hwclock用法相近Q只用一个就 行,只不qclock命o除了支持x86g体系外,q支持Alphag体系?/p>
//查看g旉 可以是用 hwclock Qhwclock --show 或?hwclock -r
[root@localhost ~]# hwclock --show 2008q?2?2?星期?06?2?7U?nbsp; -0.376932 seconds //讄g旉
[root@localhost ~]# hwclock --set --date="1/25/09 00:00" <== ??q时:?U?br>[root@localhost ~]# hwclock 2009q?1?5?星期?00?0?6U?nbsp; -0.870868 seconds
?pȝ旉和硬件时间的同步
同步pȝ旉和硬件时_可以使用hwclock命o?/p>
//以系l时间ؓ基准Q修改硬件时?/p>
[root@localhost ~]# hwclock --systohc <== sysQ系l时_toQ写刎ͼhcQHard ClockQ?br>[root@localhost ~]# hwclock -w
//以硬件时间ؓ基准Q修改系l时?/p>
[root@localhost ~]# hwclock --hctosys [root@localhost ~]# hwclock -s
?不同机器之间的时间同?/strong>
Z避免L旉因ؓ长期q作下所D的时间偏差,q行旉同步(synchronize)的工作是非常必要的。Linuxpȝ下,一般用ntp服务器来同步不同机器的时间。一台机器,可以同时是ntp服务器和ntp客户机。在|络中,推荐使用像DNS服务器一样分层的旉服务器来同步旉?
同步旉Q可以用ntpdate命oQ也可以使用ntpd服务?
使用ntpdate比较单。格式如下:
[root@linux ~]# ntpdate [-nv] [NTP IP/hostname] [root@linux ~]# ntpdate 192.168.0.2 [root@linux ~]# ntpdate time.ntp.org
但这L同步Q只是强制性的系l时间设|ؓntp服务器时间。如果cpu tick有问题,只是L不治本。所以,一般配合cron命oQ来q行定期同步讄。比如,在crontab中添加:
0 12 * * * * /usr/sbin/ntpdate 192.168.0.1
q样Q会在每天的12ҎQ同步一ơ时间。ntp服务器ؓ192.168.0.1?
使用ntpd服务Q要好于ntpdate加cron的组合。因为,ntpdate同步旉Q会造成旉的蟩跃,对一些依赖时间的E序和服务会造成影响。比如sleepQtimer{。而且Qntpd服务可以在修正时间的同时Q修正cpu tick。理想的做法为,在开机的时候,使用ntpdate强制同步旉Q在其他时候用ntpd服务来同步时间?
要注意的是,ntpd 有一个自我保护设|? 如果本机与上源时间相差太? ntpd 不运? 所以新讄的时间服务器一定要?ntpdate 从上源取得时间初? 然后启动 ntpd服务。ntpd服务 q行? 先是?4U与上源服务器同步一? Ҏ每次同步时测得的误差值经复杂计算逐步调整自己的时? 随着误差减小, 逐步增加同步的间? 每次跛_, 都会重复q个调整的过E?
?ntpd服务的设|?/strong>
ntpd服务的相兌|文件如下:
1./etc/ntp.confQ这个是NTP daemon的主要设文gQ也?NTP 唯一的设定文件?
2./usr/share/zoneinfo/:在这个目录下的文件其实是规定了各主要时区的时间设定文Ӟ例如北京地区的时定文件在 /usr/share/zoneinfo/Asia/Beijing 是了。这个目录里面的文g与底下要谈的两个文g(clock 与localtime)是有关系的?
3./etc/sysconfig/clockQ这个文件其实也不包含在NTP ?daemon 当中Q因个是 linux 的主要时定文件。每ơ开机后QLinux 会自动的dq个文g来设定自ql所默认要显C的旉?
4./etc/localtimeQ这个文件就?#8220;本地端的旉配置文g”。刚刚那个clock 文g里面规定了用的旉讄文g(ZONE) ?/usr/share/zoneinfo/Asia/Beijing Q所以说Q这是本地端的旉了,此时Q?Linuxpȝ׃Beijing那个文g另存Z?/etc/localtime文gQ所以未来我们的旉昄׃以Beijing那个旉讑֮文g为准?
5. /etc/timezoneQ系l时区文?
下面重点说说 /etc/ntp.conf文g的设|。在 NTP Server 的设定上面,其实最好不要对 Internet 无限制的开放,量仅提供您自己内部?Client 端联行网l校时就好。此外, NTP Server M是需要网l上面较为准的L来自行更新自q旉啊,所以在我们?NTP Server 上面也要找一部最靠近自己?Time Server 来进行自我校正。事实上Q?NTP q个服务也是 Server/Client 的一U模式?
[root@linux ~]# vi /etc/ntp.conf # 1. 关于权限讑֮部分 # 权限的设定主要以 restrict q个参数来设定,主要的语法ؓQ? # restrict IP mask netmask_IP parameter # 其中 IP 可以是Y件地址Q也可以?default Qdefault q?0.0.0.0 # 至于 paramter 则有Q? # ignore Q关闭所有的 NTP 联机服务 # nomodifyQ表C?Client 端不能更?Server 端的旉参数Q不q,
# Client 端仍然可以透过 Server 端来q行|络校时? # notrust Q该 Client 除非通过认证Q否则该 Client 来源被视ؓ不信ȝ? # noquery Q不提供 Client 端的旉查询
# notrap Q不提供trapq个q程事gd
# 如果 paramter 完全没有讑֮Q那pC IP (或网?“没有M限制”
restrict default nomodify notrap noquery # 关闭所有的 NTP 要求包 restrict 127.0.0.1 #q是允许本查询 restrict 192.168.0.1 mask 255.255.255.0 nomodify #?92.168.0.1/24|段内的服务器就可以通过q台NTP Serverq行旉同步? # 2. 上层L的设? # 要设定上层主Z要以 server q个参数来设定,语法为: # server [IP|HOST Name] [prefer] # Server 后面接的是我们上层 Time Server 啎ͼ而如?Server 参数 # 后面加上 perfer 的话Q那表示我们?NTP L主要以该部主机来作ؓ # 旉校正的对应。另外,Z解决更新旉包的传送gq动作, # 所以可以?driftfile 来规定我们的L # 在与 Time Server 沟通时所p的时_可以记录?driftfile # 后面接的文g内,例如下面的范例中Q我们的 NTP server ?nbsp; # cn.pool.ntp.org联机时所p的时间会记录?/etc/ntp/drift文g? server 0.pool.ntp.org
server 1.pool.ntp.org
server 2.pool.ntp.org
server cn.pool.ntp.org prefer
#其他讄|以系l默认值即?
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
driftfile /var/lib/ntp/drift broadcastdelay 0.008 keys /etc/ntp/keys
ȝ一下,restrict用来讄讉K权限Qserver用来讄上层旉服务器,driftfile用来讄保存漂移旉的文件?
?ntp服务的启动与观察
在启动NTP服务前,先对提供服务的这C机手动的校正一ơ时间咯。(因ؓ启动服务器,端口会被服务端占用,׃能手动同步时间了Q?
[root@linux ~] # ntpdate cn.pool.ntp.org
25 Apr 14:33:51 ntpdate[8310]: step time server 80.85.129.2 offset 6.655976 sec
然后Q启动ntpd服务Q?
[root@linux ~] # service ntpd start
?[root@linux ~] # /etc/init.d/ntpd start
查看端口Q?
[root@linux ~] # netstat -ln|grep 123
udp 0 0 192.168.228.153:123 0.0.0.0:*
udp 0 0 127.0.0.1:123 0.0.0.0:*
udp 0 0 0.0.0.0:123 0.0.0.0:*
udp 0 0 :::123 :::*
如何认我们的NTP服务器已l更C自己的时间呢Q?
[root@linux ~] # ntpstat
synchronized to NTP server(127.127.1.0) at stratum 11
time correct to within 950ms
polling server every 64 s
#Ҏ令可列出NTP服务器是否与上层联机。由上述输出l果可知Q时间校正约
#?50*10(-6)U。且每隔64U会d更新旉?
常见的错误:
25 Apr 15:30:17 ntpdate[11520]: no server suitable for synchronization found
其实Q这不是一个错误。而是׃每次重启NTP服务器之后大U要3Q?分钟客户端才能与server建立正常的通讯q接。当此时用客Lq接服务端就会报q样的信息。一般等待几分钟可以了?
[root@linux ~] # ntptrace –n 127.0.0.1
127.0.0.1:stratum 11, offset 0.000000Qsynch distance 0.950951
222.73.214.125Qstratum 2Qoffset –0.000787Qsynch distance 0.108575
209.81.9.7:stratum 1Qoffset 0.000028Qsynch distance 0.00436Qrefid ‘GPS’
#q个指o可以列出目前NTP服务器(W一层)与上层NTP服务器(W二层)彼此之间?
#关系
[root@linux ~] # ntpq –p
指o“ntpq -p”可以列出目前我们的NTP与相关的上层NTP的状态,以上的几个字D늚意义如下Q?
remoteQ即NTPL的IP或主机名U。注意最左边的符P如果?#8220;+”则代表目前正在作用钟的上层NTPQ如果是“*”则表CZ有连上线Q不q是作ؓơ要联机的NTPL?
refidQ参考的上一层NTPL的地址
stQ即stratum阶层
whenQ几U前曑ցq时间同步更新的操作
pollQ下ơ更新在几秒之后
reachQ已l向上层NTP服务器要求更新的ơ数
delayQ网l传输过E钟延迟的时?
offsetQ时间补偿的l果
jitterQLinuxpȝ旉与BIOSg旉的差异时?
最后提及一点,ntp服务Q默认只会同步系l时间。如果想要让ntp同时同步g旉Q可以设|?etc/sysconfig/ntpd 文g?
?etc/sysconfig/ntpd文g中,d SYNC_HWCLOCK=yes q样Q就可以让硬件时间与pȝ旉一起同步?/p>
]]> Windwos7初体?/title> http://www.shnenglu.com/sigepluto/archive/2008/11/11/66622.htmlJakcie Jakcie Tue, 11 Nov 2008 09:50:00 GMT http://www.shnenglu.com/sigepluto/archive/2008/11/11/66622.html http://www.shnenglu.com/sigepluto/comments/66622.html http://www.shnenglu.com/sigepluto/archive/2008/11/11/66622.html#Feedback 0 http://www.shnenglu.com/sigepluto/comments/commentRss/66622.html http://www.shnenglu.com/sigepluto/services/trackbacks/66622.html 今天图个新鲜Q在虚拟机里面安装了Windwos7玩了玩,说说感受?br>
虚拟机我用的是Vmware Workstation6.5Q官方下载可以试?0天。其实现在Vmware Server和Vmware Player都可以免费用,方便的很。设|了1Gb的内存,16Gb的硬盘,我这里,用的是SCSI的硬盘,但在|上看到有h安装不了Q必选择IDE的才能安装。也许是VMware的版本问题吧?br>
Windows7的安装过E比Vista和XP化了不少Q速度也不慢,我开q一堆东西,同时安装的,也没觉的{太久?br>
W一感觉Q很像VistaQ但去除了Vista的UACQ很多地方,虽然有那个安全标志(那个黄色的小盄Q,但ƈ不要用户再次认。而且Q去除一些警告也方便了很多。看来微软也吸取教训了。M感觉不错Q是个Vista++?img height=768 alt="" src="http://www.shnenglu.com/images/cppblog_com/sigepluto/windows7.jpg" width=1024 border=0>
值得一提的是,Windows7里面的PowerShellQ真的很强大Q而且貌似qlinux下的命o也全包括q去了。有前途!
安装完成后,Vmware Tools也可以顺利安装。所有硬仉没有问题。兼Ҏ不错?br>
在安装快l束的时候会遇到要求输入序列PProduct KeyQ的一步。在q里什么也不填Q直接nextQ应该也可以安装。进pȝ后,在用|上传的激zL法激zR但在网上看到有些h在这一步进不了pȝQ这P需要一个可以安装的序列受需要的朋友Q给我写mailQ我发给你们。不q尽如此,也只?0天的试用期。(之后可以l?ơ)
M感觉Windows7q是很不错的Q吸收了Vista的优点,Ҏ了用不方便的缺炏V值得一提的是,Windows7的硬仉求相当低Q未来还面向于NetBook。我在虚拟机下一路默认安装下来,只占?.2Gb的空间。非怸错?/p>
]]> 转蝲QC++库大?/title> http://www.shnenglu.com/sigepluto/archive/2008/07/31/57568.htmlJakcie Jakcie Wed, 30 Jul 2008 16:30:00 GMT http://www.shnenglu.com/sigepluto/archive/2008/07/31/57568.html http://www.shnenglu.com/sigepluto/comments/57568.html http://www.shnenglu.com/sigepluto/archive/2008/07/31/57568.html#Feedback 0 http://www.shnenglu.com/sigepluto/comments/commentRss/57568.html http://www.shnenglu.com/sigepluto/services/trackbacks/57568.html 转蝲QC++库大?br> 基础c?br>1?Dinkumware C++ Library 参考站点:[url=http://www.dinkumware.com/]http://www.dinkumware.com[/url] P.J. Plauger~写的高品质的标准库。P.J. Plauger博士是Dr. Dobb'sE序设计杰出奖的获得者。其~写的库长期被Microsoft采用Qƈ且最qBorland也取得了其OEM的licenseQ在其C/C+ +的品中采用Dinkumware的库? 2?RogueWave Standard C++ Library 参考站点:[url=http://www.roguewave.com/]http://www.roguewave.com[/url] q个库在Borland C++ Builder的早期版本中曄被采用,后来被其他的库给替换了。笔者不推荐使用? 3、SGI STL 参考站点:[url=http://www.roguewave.com/]http://www.roguewave.com[/url] SGI公司的C++标准模版库? 4、STLport 参考站点:[url=http://www.stlport.org/]http://www.stlport.org[/url] SGI STL库的跨^台可UL版本? 5、准标准库——Boost Boost 库是一个经q千锤百点{可UL、提供源代码的C++库,作ؓ标准库的后备Q是C++标准化进E的发动Z一?Boost库由C++标准委员会库工作l成员发P在C++C中媄响甚大,其成员已q?000人?Boost库ؓ我们带来了最新、最酗最实用的技术,是不折不扣的"?标准库? Boost中比较有名气的有q么几个库: Regex 正则表达式库 Spirit LL parser frameworkQ用C++代码直接表达EBNF Graph 囄件和法 Lambda 在调用的地方定义短小匿名的函数对象,很实用的functional功能 Concept check 查泛型编E中的concept MPL 用模板实现的元编E框? Thread 可移植的C++多线E库 Python 把C++cd函数映射到Python之中 Pool 内存池管? Smart_ptr 5个智能指针,学习指针必读Q一份不错的参考是来自CUJ的文章: Smart Pointers in Boost,哦,q篇文章可以查到QCUJ是提供在U浏览的。中文版见笔者在《Dr. Dobb's Journal软g研发杂志》第7辑上的译文? Boost M来说是实用h值很高,质量很高的库。ƈ且由于其对跨q_的强调,Ҏ准C++的强调,是编写^台无养ICC++的开发者必备的工具。但是Boost 中也有很多是实验性质的东西,在实际的开发中实用需要}慎。ƈ且很多Boost中的库功能堪U对语言功能的扩展,其构造用精巧的手法Q不要N然的p?间研诅RBoost另外一面,比如Graphq样的库则是h工业强度Q结构良好,非常值得研读的精品代码,q且也可以放心的在品代码中多多利用? 参考站点:[url=http://www.boost.org/]http://www.boost.org[/url]Q国内镜像: [url=http://www.c-view.org/tech/lib/boost/index.htm]http://www.c- view.org/tech/lib/boost/index.htm[/url]Q? GUI 在众多C++的库中,GUI部分的库是比较J荣Q也比较引h注目的。在实际开发中QGUI库的选择也是非常重要的一件事情,下面我们lD一下可选择的GUI库,各自的特点以及相兛_L支持? 1) MFC 大名鼎鼎的微软基cdQMicrosoft Foundation ClassQ。大凡学qVC++的h都应该知道这个库。虽然从技术角度讲QMFC是不大漂亮的Q但是它构徏于Windows API 之上Q能够ɽE序员的工作更容?~程效率高,减少了大量在建立 Windows E序时必ȝ写的代码Q同时它q提供了所有一?C++ ~程的优点,例如l承和封装。MFC ~写的程序在各个版本的Windows操作pȝ上是可移植的Q例如,?Windows 3.1下编写的代码可以很容易地UL?Windows NT ?Windows 95 上。但是在最q发展以及官Ҏ持上日渐势微? 2) QT 参考网站:[url=http://www.trolltech.com/]http://www.trolltech.com[/url] Qt 是Trolltech公司的一个多q_的C++囑Ş用户界面应用E序框架。它提供l应用程序开发者徏立艺术的图形用L面所需的所用功能。Qt是完全面 向对象的很容易扩展,q且允许真正地组件编E。自?996q早些时候,Qtq入商业领域Q它已经成ؓ全世界范围内数千U成功的应用E序的基。Qt也是 行的Linux桌面环境KDE 的基Q同时它q支持Windows、Macintosh、Unix/X11{多U^台? 3) WxWindows 参考网站:[url=http://www.wxwindows.org/]http://www.wxwindows.org[/url] 跨^台的GUI库。因为其cdơ极像MFCQ所以有文章介绍从MFC到WxWindows的代码移植以实现跨^台的功能。通过多年的开发也是一个日完??GUI库,支持同样不弱于前面两个库。ƈ且是完全开放源代码的。新q的C++ Builder X的GUI设计器就是基于这个库的? 4) Fox 开放源代码的GUI库。作者从自己亲n的开发经验中得出了一个理想的GUI库应该是什么样子的感受出发Q从而开始了对这个库的开发。有兴趣的可以尝试一下? 参考网站:[url=http://www.fox-toolkit.org/]http://www.fox-toolkit.org/[/url] 5) WTL ZATL的一个库。因Z用了大量ATL的轻量手法Q模板等技术,在代码尺寸,以及速度优化斚w做得非常C。主要面向的使用体是开发COM轻量U供|络下蝲的可视化控g的开发者? 6) GTK 参考网站:[url=http://gtkmm.sourceforge.net/]http://gtkmm.sourceforge.net/[/url] GTK是一个大名鼎鼎的C的开源GUI库。在Linux世界中有Gnomeq样的杀手应用。而GTK是q个库的C++装版本? |络通信 1) ACE 参考网站:[url=http://www.cs.wustl.edu/~schmidt/ACE.html]http://www.cs.wustl.edu/~schmidt/ACE.html[/url] C++库的代表Q超重量U的|络通信开发框架。ACE自适配通信环境QAdaptive Communication EnvironmentQ是可以自由使用、开放源代码的面向对象框Ӟ在其中实C许多用于q发通信软g的核心模式。ACE提供了一l丰富的可复用C++ 包装外观QWrapper FacadeQ和框架lgQ可跨越多种q_完成通用的通信软gdQ其中包括:事g多\分离和事件处理器分派、信号处理、服务初始化、进E间通信、共享内 存管理、消息\由、分布式服务动态(重)配置、ƈ发执行和同步Q等{? 2) StreamModule 参考网站:[url=http://www.omnifarious.org/StrMod/]http://www.omnifarious.org/StrMod/[/url] 设计用于化编写分布式E序的库。尝试着使得~写处理异步行ؓ的程序更ҎQ而不是用同步的外壛_起异步的本质? 3) SimpleSocket 参考网站:[url=http://home.hetnet.nl/~lcbokkers/simsock.htm]http://home.hetnet.nl/~lcbokkers/simsock.htm[/url] q个cd让编写基于socket的客?服务器程序更加容易? 4) A Stream Socket API for C++ 参考网站:[url=http://www.pcs.cnu.edu/~dgame/sockets/socketsC++ /sockets.html]http://www.pcs.cnu.edu/~dgame/sockets/socketsC++/sockets.html[/url] 又一个对Socket的封装库? XML 1) Xerces 参考网站:[url=http://xml.apache.org/xerces-c/]http://xml.apache.org/xerces-c/[/url] Xerces-C++ 是一个非常健壮的XML解析器,它提供了验证Q以及SAX和DOM API。XML验证在文档类型定?Document Type DefinitionQDTD)斚w有很好的支持Qƈ且在2001q?2月增加了支持W3C XML Schema 的基本完整的开放标准? 2) XMLBooster 参考网站:[url=http://www.xmlbooster.com/]http://www.xmlbooster.com/[/url] q个库通过产生特制的parser的办法极大的提高了XML解析的速度Qƈ且能够生相应的GUIE序来修改这个parser。在DOM和SAX两大LXML解析办法之外提供了另外一个可行的解决Ҏ? 3) Pull Parser 参考网站:[url=http://www.extreme.indiana.edu/xgws/xsoap/xpp/]http://www.extreme.indiana.edu/xgws/xsoap/xpp/[/url] q个库采用pullҎ的parser。在每个SAX的parser底层都有一个pull的parserQ这个xpp把这层暴露出来直接给大家使用。在要充分考虑速度的时候值得试? 4) Xalan 参考网站:[url=http://xml.apache.org/xalan-c/]http://xml.apache.org/xalan-c/[/url] Xalan是一个用于把XML文档转换为HTMLQ纯文本或者其他XMLcd文档的XSLT处理器? 5) CMarkup 参考网站:[url=http://www.firstobject.com/xml.htm'>[url]http: //www.firstobject.com/xml.htm[/url]]http://www.firstobject.com/xml.htm'>[url]http://www.firstobject.com/xml.htm[/url][/url] q是一U用EDOM的XML解析器。在很多思\上面非常灉|实用。值得大家在DOM和SAX之外L一点灵感? 6) libxml++ [url=http://libxmlplusplus.sourceforge.net/]http://libxmlplusplus.sourceforge.net/[/url] libxml++是对著名的libxml XML解析器的C++装版本 U学计算 1) Blitz++ 参考网站:[url=http://www.oonumerics.org/blitz/]http://www.oonumerics.org/blitz/[/url] Blitz++ 是一个高效率的数D函数库Q它的设计目的是希望建立一套既具像C++ 一h便,同时又比Fortran速度更快的数D环境。通常Q用C++所写出的数值程序,?Fortran?0%左右Q因此Blitz++正是要改掉这个缺炏V方法是利用C++的template技术,E序执行甚至可以比Fortran更快?Blitz++目前仍在发展中,对于常见的SVDQFFTsQQMRES{常见的U性代数方法ƈ不提供,不过使用者可以很Ҏ地利用Blitz++所提供 的函数来构徏? 2) POOMA 参考网站:[url=http://www.codesourcery.com/pooma/pooma]http://www.codesourcery.com/pooma/pooma[/url] POOMA是一个免费的高性能的C++库,用于处理q行式科学计。POOMA的面向对象设计方便了快速的E序开发,对ƈ行机器进行了优化以达到最高的效率Q方便在工业和研I环境中使用? 3) MTL 参考网站:[url=http://www.osl.iu.edu/research/mtl/]http://www.osl.iu.edu/research/mtl/[/url] Matrix Template Library(MTL)是一个高性能的泛型组件库Q提供了各种格式矩阵的大量线性代数方面的功能。在某些应用使用高性能~译器的情况下,比如Intel的编译器Q从产生的汇~代码可以看出其与手写几乎没有两L效能? 4) CGAL 参考网站:[url=http://www.cgal.org/]www.cgal.org[/url] Computational Geometry Algorithms Library的目的是把在计算几何斚w的大部分重要的解x案和Ҏ以C++库的形式提供l工业和学术界的用户? 游戏开? 1) Audio/Video 3D C++ Programming Library 参考网站:[url=http://www.galacticasoftware.com/products/av/]http://www.galacticasoftware.com/products/av/[/url] AV3D是一个跨q_Q高性能的C++库。主要的Ҏ是提供3D囑ŞQ声效支持(SB,以及S3MQ,控制接口Q键盘,鼠标和遥感)QXMS? 2) KlayGE 参考网站:[url=http://home.g365.net/enginedev/]http://home.g365.net/enginedev/[/url] 国内游戏开发高手自qC++开发的游戏引擎。KlayGE是一个开放源代码、跨q_的游戏引擎,q用Python作脚本语a。KlayGE在LGPL协议下发行。感谢龚敏敏先生Z国游戏开发事业所做出的A献? 3) OGRE 参考网站:[url=http://www.ogre3d.org/]http://www.ogre3d.org[/url] OGRE Q面向对象的囑Ş渲染引擎Q是用C++开发的Q用灵zȝ面向对象3D引擎。它的目的是让开发者能更方便和直接地开发基?Dg讑֤的应用程序或游戏?引擎中的cdҎ底层的系l库Q如QDirect3D和OpenGLQ的全部使用l节q行了抽象,q提供了Z现实世界对象的接口和其它cR? U程 1) C++ Threads 参考网站:[url=http://threads.sourceforge.net/]http://threads.sourceforge.net/[/url] q个库的目标是给E序员提供易于用的c,q些c被l承以提供在Linux环境中很隄到的大量的线E方面的功能? 2) ZThreads 参考网站:[url=http://zthread.sourceforge.net/]http://zthread.sourceforge.net/[/url] 一个先q的面向对象Q跨q_的C++U程和同步库? 序列? 1) s11n 参考网站:[url=http://s11n.net/]http://s11n.net/[/url] 一个基于STL的C++库,用于序列化PODQSTL容器以及用户定义的类型? 2) Simple XML Persistence Library 参考网站:[url=http://sxp.sourceforge.net/]http://sxp.sourceforge.net/[/url] q是一个把对象序列化ؓXML的轻量的C++库? 字符? 1) C++ Str Library 参考网站:[url=http://www.utilitycode.com/str/]http://www.utilitycode.com/str/[/url] 操作字符串和字符的库Q支持Windows和支持gcc的多U^台。提供高度优化的代码Qƈ且支持多U程环境和UnicodeQ同时还有正则表辑ּ的支持? 2) Common Text Transformation Library 参考网站:[url=http://cttl.sourceforge.net/]http://cttl.sourceforge.net/[/url] q是一个解析和修改STL字符串的库。CTTL substringcd以用来比较,插入Q替换以及用EBNF的语法进行解析? 3) GRETA 参考网站:[url=http://research.microsoft.com/projects/greta/]http://research.microsoft.com/projects/greta/[/url] q是由微软研I的研Ih员开发的处理正则表达式的库。在型匚w的情况下有非怼U的表现? l合 1) P::Classes 参考网站:[url=http://pclasses.com/]http://pclasses.com/[/url] 一个高度可UL的C++应用E序框架。当前关注类型和U程安全的signal/slot机制Qi/opȝ包括Z插g的网l协议透明的i/o架构Q基于插件的应用E序消息日志框架Q访问sql数据库的cȝ{? 2) ACDK - Artefaktur Component Development Kit 参考网站:[url=http://acdk.sourceforge.net/]http://acdk.sourceforge.net/[/url] q是一个^台无关的C++lg框架Q类gJava或?NET中的框架Q反机ӞU程QUnicodeQ废料收集,I/OQ网l,实用工具QXMLQ等{)Q以及对Java, Perl, Python, TCL, Lisp, COM ?CORBA的集成? 3) dlib C++ library 参考网站:[url=http://www.cis.ohio-state.edu/~kingd/dlib/]http://www.cis.ohio-state.edu/~kingd/dlib/[/url] 各种各样的类的一个综合。大整数QSocketQ线E,GUIQ容器类,以及览目录的API{等? 4) Chilkat C++ Libraries 参考网站:[url=http://www.c'>[url]http://www.c[/url]'>[url]http: //www.c[/url]'>[url]http://www.chilkatsoft.com/cpp_libraries.asp[/url]]http://www.c'>[url]http://www.c[/url]'>[url]http://www.c[/url]'>[url]http://www.chilkatsoft.com/cpp_libraries.asp[/url][/url] q是提供zipQe-mailQ编码,S/MIMEQXML{方面的库? 5) C++ Portable Types Library (PTypes) ?考网站:[url=http://www.melikyan.com/ptypes/'>[url]http: //www.melikyan.com/ptypes/[/url]]http://www.melikyan.com/ptypes/'>[url]http://www.melikyan.com/ptypes/[/url][/url] q是STL的比较简单的替代品,以及可移植的多线E和|络库? 6) LFC 参考网站:[url=http://lfc.sourceforge.net/]http://lfc.sourceforge.net/[/url] 哦,q又是一个尝试提供一切的C++? 其他? 1) Loki 参考网站:[url=http://www.moderncppdesign.com/]http://www.moderncppdesign.com/[/url] 哦,你可能抱怨我早该和Boost一起介l它Q一个实验性质的库。作者在loki中把C++模板的功能发挥到了极致。ƈ且尝试把cM设计模式q样思想层面的东襉K过库来提供。同时还提供了智能指针这h较实用的功能? 2) ATL ATL(Active Template Library)是一l小巧、高效、灵zȝc,q些cMؓ创徏可互操作的COMlg提供了基本的设施? 3) FC++: The Functional C++ Library q?个库提供了一些函数式语言中才有的要素。属于用库来扩充语言的一个代表作。如果想要在OOP之外L另一分的乐趣Q可以去看看函数式程序设计的世界。大?Peter Norvig?"Teach Yourself Programming in Ten Years"一文中将函数式语a列ؓ臛_应当学习?cȝE语a之一? 4) FACT! 参考网站:[url=http://www.kfa-juelich.de/zam/FACT/start/index.html]http://www.kfa-juelich.de/zam/FACT/start/index.html[/url] 另外一个实现函数式语言Ҏ的? 5) Crypto++ 提供处理密码Q消息验证,单向hashQ公匙加密系l等功能的免费库? q有很多非常Ȁ动h心或者是极其实用的C++库,限于我们的水q以及文章的幅不能包括q来。在对于q些已经包含q来的库的介l中Q由于ƈ不是每一个我们都使用q,所以难免有偏颇之处Q请读者见谅? 6) Managed C++ wrapper for ZLib 压羃lgZlib的C++cd 7) CppSQLite - C++ Wrapper for SQLite SQLite C++装?br>8)CxImage 囑փ格式转换 资源|站 正如我们可以通过计算机历史上的重要h物了解计机史的发展QC++相关人物的网站也可以使我们得到最有h值的参考与借鉴Q下面的人物我们认ؓ没有介绍?必要Q只因下面的人物在C++领域的地位众所周知Q我们只相关的资源q行|列以供读者学习,他们有的工作于贝实验室Q有的工作于知名~译器厂商,有的 在不断推q语a的标准化Q有的ؓ读者撰写了多部千古奇作...... Bjarne Stroustrup [url=http://www.research.att.com/~bs/]http://www.research.att.com/~bs/[/url] Stanley B. Lippman http: //blogs.msdn.com/slippman/(中文版[url=http://www.zengyihome.net/slippman /index.htm]http://www.zengyihome.net/slippman/index.htm[/url]) Scott Meyers [url=http://www.aristeia.com/]http://www.aristeia.com/[/url] David Musser [url=http://www.cs.rpi.edu/~musser/]http://www.cs.rpi.edu/~musser/[/url] Bruce Eckel [url=http://www.bruceeckel.com/]http://www.bruceeckel.com[/url] Nicolai M. Josuttis [url=http://www.josuttis.com/]http://www.josuttis.com/[/url] Herb Sutter [url=http://www.gotw.ca/]http://www.gotw.ca/[/url] Andrei Alexandrescu [url=http://www.moderncppdesign.com/]http://www.moderncppdesign.com/[/url] ]]>
һɫþ99һۺ |
žžþ99ۺһ |
ŷ鶹þþþþ |
þþƷĻ23ҳ |
ŷþþþƷ |
ƷѸþ |
þٸ۲AV |
ۺϾþһ |
רþۺϾĻ |
þþƷֻоƷ2020 |
þþۺ |
bƷþþþþþ |
ƷþSM |
þþƷ72 |
þAV˳ |
þþƷһ
|
999þþùƷ |
þþþþþþƷɫ |
9191ƷѾþ |
ɫۺϾþþĻ |
?Vþò |
Ʒþһ |
˾þþƷһ |
þþƷһ |
99þ99þþþƷ |
99ξþþŷƷվ |
þþþþavѿƬ |
99þùѸ |
97þþƷҹһ |
ŷƷþþavӰ |
ŷպƷþ |
Ʒþþwww |
һAëƬѹۿþþƷ |
þùҹaӰԺ |
þþۺվ |
þþžоƷ23ٻӰԺ |
Ļþҹ |
þþþþþĻ |
7777Ʒþþô߽ |
ŷۺ997þ |
99þҹɫƷվ |