<?xml version="1.0" encoding="utf-8"?><rss version="2.0">
<channel>
<title><![CDATA[davy]]></title>
<link>http://blog.pfan.cn/daweizhao</link>
<description>编程爱好者博客</description>
<language>zh-cn</language>
			<item>
		<title><![CDATA[HashSet]]></title>
		<link>http://blog.pfan.cn/daweizhao/53508.html</link>
		<description><![CDATA[HashSet学习：


	HashMap和HashTable及HashSet的区别：


	http://www.blogjava.net/fisher/archive/2006/12/13/87398.html 


	Java中HashSet详解：


	http://alex09.iteye.com/blog/539549 


	比较分析Vector、ArrayList和HashTable HaspMap数据结构 ：


	http://blog.csdn.net/lhooouuu/article/details/6116174]]></description>
		<author><![CDATA[davidbreathe]]></author>
		<pubDate>2012-06-08 10:25:00</pubDate>
		</item>
				<item>
		<title><![CDATA[ifconfig]]></title>
		<link>http://blog.pfan.cn/daweizhao/38372.html</link>
		<description><![CDATA[ifconfig | sed -ne 's/ *inet addr:\([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\) *B.*/Your IP is:\1/p'
大家都知道ifconfig是查看IP地址的，但是上面的命令行还是第一次看到，运行一下出来的结果是：
Your IP is:110.22.62.22
论坛上的东西很多啊
不过，SED还不是很通透，上面的命令还得分析一下]]></description>
		<author><![CDATA[davidbreathe]]></author>
		<pubDate>2008-09-19 15:32:00</pubDate>
		</item>
				<item>
		<title><![CDATA[发觉逛技术论坛也是有好处的]]></title>
		<link>http://blog.pfan.cn/daweizhao/38371.html</link>
		<description><![CDATA[好多问题是在chinaunix的论坛上找到的。之前很久已经注册了一个，今天上来看看。没想到也收获了技术之外的。
事情是这样的：
一个楼主发帖子说linux无用，他是这样描述的：有个叫朱评温的人、前去拜支离益为老师、潜心学习杀龙的本领。他耗尽了千金的家产，苦心花费了3年时间，终于学成回来。然而，他寻来找去连龙的影子也没见到。他化费了昂贵代价学来的本领，竟没有丝毫用处。然后说自己从大一时开始学，一直没有找到真正的用处。
一楼的只回复了一句：不龟手之药，用之异也。
什么意思，俺不懂。去GOOGLE了，才知道是庄子的一篇文章：有一宋国人，他的家族世世代代漂洗丝絮；祖上传下了这份职业，还有一个药方子，全家就靠这药方子谋生。所谓的“不龟手之药”，大概类似于现在的雪花膏之类，可以防止手被冻皲裂（龟，通“皲”）。一个外地人听说了，便找到他，要以“百金”买下那方子。那宋国人觉得买卖值得做，于是召集全族人商议道：“我们家世世代代漂洗丝絮，没赚几个子儿，现在有人愿意花百金买下药方，咱们把它卖了吧。”那外地人得了那方子，便带着它去游说吴王。也该他走运：那年冬天越国来侵，吴王命他率军迎战。那人靠了“不龟手之药”，在水战中大败越军，于是他得到了封地的大利益。在庄周寓言中，这是个成功的典型。出于庄子&lt;逍遥游&gt;
嘿嘿，够绝吧。问与答都够智慧。
附：龟音为JUN]]></description>
		<author><![CDATA[davidbreathe]]></author>
		<pubDate>2008-09-19 15:15:00</pubDate>
		</item>
				<item>
		<title><![CDATA[线性回归]]></title>
		<link>http://blog.pfan.cn/daweizhao/38285.html</link>
		<description><![CDATA[已经很久没有看算法了，了解一下线性回归：
http://cs.nju.edu.cn/yangxc/dcc2003.files/matlab1/matlabcomplex/chapter7/ch7_3_1.htm
下一篇有最小二乘法的介绍：
http://www.programfan.com/blog/article.asp?id=5187]]></description>
		<author><![CDATA[davidbreathe]]></author>
		<pubDate>2008-09-16 11:08:00</pubDate>
		</item>
				<item>
		<title><![CDATA[PHP的open_basedir设置]]></title>
		<link>http://blog.pfan.cn/daweizhao/38283.html</link>
		<description><![CDATA[运行PHP脚本时出现了如下错误：
&nbsp; Warning: &nbsp; file_exists(): &nbsp; open_basedir &nbsp; restriction &nbsp; in &nbsp; effect. &nbsp; File(/home/mainwebsite_html/cache/also_purchased-english.cache11548) &nbsp; is &nbsp; not &nbsp; within &nbsp; the &nbsp; allowed &nbsp; path(s): &nbsp; (/var/web/w0895/:/tmp:/usr/lib/php) &nbsp; in &nbsp; /var/web/w0895/html/includes/functions/cache.php &nbsp; on &nbsp; line &nbsp; 47
首先在脚本里加上open_basedir设置：#!/home/y/bin/php -d open_basedir=　仍不行
在网上搜查，有三种解决方法，选取了最简单的一种，修改PHP.ini文件中的open_basedir设置
在/home/y下搜索php.ini文件
find ./ -name php.ini
修改open_basedir=./:/tmp,第一个意为在PHP脚本所在的路径和/tmp路径下
运行脚本，OK
&nbsp;其它三种解决方法如下：http://help.shopex.cn/doc-view-260.html]]></description>
		<author><![CDATA[davidbreathe]]></author>
		<pubDate>2008-09-16 10:56:00</pubDate>
		</item>
				<item>
		<title><![CDATA[AWK&nbsp;网址]]></title>
		<link>http://blog.pfan.cn/daweizhao/38223.html</link>
		<description><![CDATA[http://www.adp-gmbh.ch/unix/awk/index.html
刚刚发现的一个AWK很好的网页]]></description>
		<author><![CDATA[davidbreathe]]></author>
		<pubDate>2008-09-12 10:06:00</pubDate>
		</item>
				<item>
		<title><![CDATA[SH脚本文件产生错误]]></title>
		<link>http://blog.pfan.cn/daweizhao/38157.html</link>
		<description><![CDATA[运行脚本文件产生如下错误：: bad interpreter: No such file or directory
解决方法如下：
出现bad interpreter:No such file or directory的原因是文件格式的问题。这个文件是在Windows下编写的。换行的方式与Unix不一样，但是在VI下面如果不Set一下又完全看不出来。
解决方法：1、上传到linux主机运行
&nbsp;&nbsp;&nbsp;&nbsp; chmod +x back
&nbsp;&nbsp;&nbsp;&nbsp; ./back
&nbsp;&nbsp;&nbsp; 错误提示如下：&nbsp;&nbsp;&nbsp; bash: ./back : bad interpreter:No such file or directory
2、错误分析：
因为操作系统是windows，在windows下编辑的脚本，所以有可能有不可见字符。
从你的脚本及报告的错误看来, 很有可能是你的脚本文件是DOS格式的, 即每一行的行尾以\r\n来标识, 其ASCII码分别是0x0D, 0x0A.可以有很多种办法看这个文件是DOS格式的还是UNIX格式的, 还是MAC格式的（1）. vi filename然后用命令:set ff?可以看到dos或unix的字样. 如果的确是dos格式的, 那么你可以用set ff=unix把它强制为unix格式的, 然后存盘退出. 再运行一遍看.（2）. 用joe filename如果是DOS格式的, 那么行尾会有很多绿色的^M字样出现. 你也可以用上述办法把它转为UNIX格式的.（3）. 用od -t x1 filename如果你看到有0d 0a 这样的字符, 那么它是dos格式的, 如果只有0a而没有0d, 那么它是UNIX格式的, 同样可以用上述方法把它转为UNIX格式的.
转换不同平台的文本文件格式可以用1. unix2dos或dos2unix这两个小程序来做. 很简单. 在djgpp中这两个程序的名字叫dtou和utod, u代表unix, d代表dos2. 也可以用sed 这样的工具来做:sed 's/^M//' filename &gt; tmp_filenamemv -f tmp_filename filename来做特]]></description>
		<author><![CDATA[davidbreathe]]></author>
		<pubDate>2008-09-08 17:47:00</pubDate>
		</item>
				<item>
		<title><![CDATA[测试感悟]]></title>
		<link>http://blog.pfan.cn/daweizhao/38153.html</link>
		<description><![CDATA[测试感悟
1 从哪里来，到哪里去
&nbsp; 我们测试的时候，要记得每一步从哪里来，到哪里去。站在现在这个点上，向前看知道来路，向后看晓得去处。否则即使发现了问题，还要回想。即使没有问题，也要记得正确结果是什么。否则会一团乱
2 要晓得数据的结果
&nbsp; 对于每一次测试，测试数据是最关键的。要知道错有错的原因，对有对的逻辑，这些东西，要在造测试数据的时候已经想好。不可抓瞎，一团乱
3 要争取流程自动
&nbsp; 对每一次测试，最好的是在测试之前测试脚本、数据、逻辑已经清楚，最中的是在测试过程中边测试边准备脚本、数据，最一般的是在测试完成后补充测试脚本、数据，最差的是一个测试做完就做完了，却不总结，导致下次再测试时，还是从头开始
4 文档要及时
&nbsp; 人的大脑的存储是有限的，而文字的记录却是永恒的。每一次测试后应该整理文档，哪怕开发有自己的开发设计文档，对测试来说，也要自己整理。因为只有自己整理了，才能明白理解的更深透。
5 多多询问
&nbsp; 人都是不完美的。一个人的思路很有限，而多个人的思路是很开放的。因此，自己遇到了什么问题，思路也好，技术也罢，多多问问身边的人。不管是谁，没准谁的哪句话就让你茅塞顿开受益匪浅呢]]></description>
		<author><![CDATA[davidbreathe]]></author>
		<pubDate>2008-09-08 16:37:00</pubDate>
		</item>
				<item>
		<title><![CDATA[PHP读取文件操作]]></title>
		<link>http://blog.pfan.cn/daweizhao/38027.html</link>
		<description><![CDATA[PHP读取文件，在google上用此关键字搜索，找到一好文章，CP这里：
传统的 fopen 方法
fopen 方法可能是以前的 C 和 C++ 程序员最熟悉的，因为如果您使用过这些语言，那么它们或多或少都是您已掌握多年的工具。对于这些方法中的任何一种，通过使用 fopen（用于读取数据的函数）的标准方法打开文件，然后使用 fclose 关闭文件，如清单 1 所示。
清单 1. 用 fgets 打开并读取文件



				
$file_handle = fopen("myfile", "r");
while (!feof($file_handle)) {
   $line = fgets($file_handle);
   echo $line;
}
fclose($file_handle);

虽然大多数具有多年编程经验的程序员都熟悉这些函数，但是让我对这些函数进行分解。有效地执行以下步骤：

打开文件。$file_handle 存储了一个对文件本身的引用。 
检查您是否已到达文件的末尾。 
继续读取文件，直至到达文件末尾，边读取边打印每行。 
关闭文件。 
记住这些步骤，我将回顾在这里使用的每个文件函数。
fopen
fopen 函数将创建与文件的连接。我之所以说“创建连接”，是因为除了打开文件之外，fopen 还可以打开一个 URL：




$fh = fopen("http://127.0.0.1/", "r");

这行代码将创建一个与以上页面的连接，并允许您开始像读取一个本地文件一样读取它。
注： fopen 中使用的 "r" 将指示文件以只读方式打开。由于将数据写入文件不在本文的讨论范围内，因此我将不列出所有其他选项。但是，如果是从二进制文件读取以获得跨平台兼容性，则应当将 "r" 更改为 "rb"。稍后您将看到这样的示例。
feof
feof 命令将检测您是否已经读到文件的末尾并返回 True 或 False。清单 1 中的循环将继续执行，直至您达到文件“myfile”的末尾。注：如果读取的是 URL 并且套接字由于不再有任何数据可以读取而超时，则 feof 也将返回 False。
fclose
向前跳至清单 1 的末尾，fclose 将实现与 fopen 相反的功能：它将关闭]]></description>
		<author><![CDATA[davidbreathe]]></author>
		<pubDate>2008-09-02 16:39:00</pubDate>
		</item>
				<item>
		<title><![CDATA[PHP执行外部命令]]></title>
		<link>http://blog.pfan.cn/daweizhao/37996.html</link>
		<description><![CDATA[出处：http://www.enet.com.cn/article/2004/0928/A20040928348185.shtml
PHP作为一种服务器端的脚本语言，象编写简单，或者是复杂的动态网页这样的任务，它完全能够胜任。但事情不总是如此，有时为了实现某个功能，必须借助于操作系统的外部程序（或者称之为命令），这样可以做到事半功倍。 　　那么，是否可以在PHP脚本中调用外部命令呢？如果能，如何去做呢？有些什么方面的顾虑呢？相信你看了本文后，肯定能够回答这些问题了。 　　是否可以？ 　　答案是肯定的。PHP和其它的程序设计语言一样，完全可以在程序内调用外部命令，并且是很简单的：只要用一个或几个函数即可。 　　前提条件 　　由于PHP基本是用于WEB程序开发的，所以安全性成了人们考虑的一个重要方面。于是PHP的设计者们给PHP加了一个门：安全模式。如果运行在安全模式下，那么PHP脚本中将受到如下四个方面的限制： 　　执行外部命令 　　在打开文件时有些限制 　　连接MySQL数据库 　　基于HTTP的认证 　　在安全模式下，只有在特定目录中的外部程序才可以被执行，对其它程序的调用将被拒绝。这个目录可以在php.ini文件中用safe_mode_exec_dir指令，或在编译PHP是加上--with-exec-dir选项来指定，默认是/usr/local/php/bin。 　　如果你调用一个应该可以输出结果的外部命令（意思是PHP脚本没有错误），得到的却是一片空白，那么很可能你的网管已经把PHP运行在安全模式下了。 　　如何做？ 　　在PHP中调用外部命令，可以用如下三种方法来实现： 　　1） 用PHP提供的专门函数 　　PHP提供共了3个专门的执行外部命令的函数：system()，exec()，passthru()。 　　system() 　　原型：string system (string command [, int return_var]) 　　system()函数很其它语言中的差不多，它执行给定的命令，输出和返回结果。第二个参数是可选的，用来得到命令执行后的状态码。 　　例子： 　　]]></description>
		<author><![CDATA[davidbreathe]]></author>
		<pubDate>2008-09-01 15:00:00</pubDate>
		</item>
				<item>
		<title><![CDATA[selenium&nbsp;server的一些option]]></title>
		<link>http://blog.pfan.cn/daweizhao/37995.html</link>
		<description><![CDATA[Usage: java -jar selenium-server.jar [-interactive] [options] 

-port &lt;nnnn&gt;: the port number the selenium server should use (default 4444) 
-timeout &lt;nnnn&gt;: an integer number of seconds before we should give up 
-interactive: puts you into interactive mode. See the tutorial for more details 
-multiWindow: puts you into a mode where the test web site executes in a separate window, and selenium supports frames 
-forcedBrowserMode &lt;browser&gt;: sets the browser mode (e.g. "*iexplore" for all sessions, no matter what is passed to getNewBrowserSession 
-userExtensions &lt;file&gt;: indicates a JavaScript file that will be loaded into selenium 
-browserSessionReuse: stops re-initialization and spawning of the browser between tests 
-avoidProxy: By default, we proxy every browser request; set this flag to make the browser use our proxy only for URLs containing '/selenium-server' 
-firefoxProfileTemplate &lt;dir&gt;: normally, we generate a fresh empty Firefox profile]]></description>
		<author><![CDATA[davidbreathe]]></author>
		<pubDate>2008-09-01 13:51:00</pubDate>
		</item>
				<item>
		<title><![CDATA[PHP删除文件夹下的内容]]></title>
		<link>http://blog.pfan.cn/daweizhao/37994.html</link>
		<description><![CDATA[PHP删除文件是unlink('filename')
但是没有删除文件夹的专门函数，有代码如下：
&nbsp;function removeDir($dirName) &nbsp;{ &nbsp;&nbsp;$result = false; &nbsp;&nbsp;if(! is_dir($dirName)) &nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;trigger_error("目录名称错误", E_USER_ERROR); &nbsp;&nbsp; } &nbsp;&nbsp;$handle = opendir($dirName); &nbsp;&nbsp;while(($file = readdir($handle)) !== false) &nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;if($file != '.' &amp;&amp; $file != '..') &nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp; $dir = $dirName . DIRECTORY_SEPARATOR . $file; &nbsp;&nbsp;&nbsp;&nbsp; is_dir($dir) ? removeDir($dir) : unlink($dir); &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;} &nbsp;&nbsp; closedir($handle); &nbsp;&nbsp;$result = rmdir($dirName) ? true : false; &nbsp;&nbsp;return $result; &nbsp;}
在网上找的，确实很精简]]></description>
		<author><![CDATA[davidbreathe]]></author>
		<pubDate>2008-09-01 12:25:00</pubDate>
		</item>
				<item>
		<title><![CDATA[删除flash&nbsp;cookie]]></title>
		<link>http://blog.pfan.cn/daweizhao/37903.html</link>
		<description><![CDATA[http://cn.ghacks.net/2008/07/30/%E5%88%A0%E9%99%A4flash-cookies/
除一些正常的cookie外，上一些视频网站时，也会有flash-cookie产生，这种cookie与正常的cookie是不同的存储位置，在FF下，可以用上面的插件删除
flash cookie所在位置：C:\Documents and Settings\dawei.zhao\Application Data\Macromedia\Flash Player]]></description>
		<author><![CDATA[davidbreathe]]></author>
		<pubDate>2008-08-27 14:20:00</pubDate>
		</item>
				<item>
		<title><![CDATA[flash&nbsp;switch]]></title>
		<link>http://blog.pfan.cn/daweizhao/37902.html</link>
		<description><![CDATA[http://www.sephiroth.it/firefox/flash_switcher/#install
此是FF下的插件，可以在不同的flash player之间进行切换]]></description>
		<author><![CDATA[davidbreathe]]></author>
		<pubDate>2008-08-27 11:37:00</pubDate>
		</item>
				<item>
		<title><![CDATA[vmware虚拟机问题]]></title>
		<link>http://blog.pfan.cn/daweizhao/37898.html</link>
		<description><![CDATA[最近用虚拟机vmware的东西比较多，把遇到的问题记录下来：
vmware，虚拟机，所谓虚拟机，说白了，就是可在虚拟机上安装多个操作系统，你的本机是MS，但在虚拟机上你可以任意装操作系统，linux,unix,MS的各个版本，随意。
1　将VMWARE安装后，在vmware workstation上，新建virtual machine即是新建操作系统的第一步，然后按时提示一步步来就好了，这一步步的过程即是配置你要安装的虚拟机的‘硬件’环境。注意的是，在这个过程中，要避开我们通常选择的‘typical’而是要选择'customer'，因为在典型设置中的硬盘为SCSI的格式，当系统安装到一半的时候就会提示找不到硬件的情况。而在customer中的可将硬盘设置为IDE，则可避免这咱情况。
2　硬件设置好之后，要用在光驱中引入ISO文件，即可安装，然后按照平时的操作系统安装即可
3　简便方法：已经在VM上安装了一个操作系统，难道要按照12的步骤再来安装一次不成？也必。我们将C:\Documents and Settings\dawei.zhao\My Documents\My Virtual Machines下的Windows 2000 Professional文件夹再复制到此目录下为Windows 2000 Professional(2)，然后在VM中File-&gt;open打开Windows 2000 Professional(2)下的VMX文件，然后VM会提供给你四个选项来选择，只要选择create，则会有新的和之前的操作系统完全相同的OS产生了。很是方便。
4　在安装完之后，发现用鼠标在本机和VM的OS间切换，要用热銉，安装vm tools即可解决这个问题。]]></description>
		<author><![CDATA[davidbreathe]]></author>
		<pubDate>2008-08-27 10:45:00</pubDate>
		</item>
				<item>
		<title><![CDATA[sh脚本判断文件大小]]></title>
		<link>http://blog.pfan.cn/daweizhao/37851.html</link>
		<description><![CDATA[#!/bin/bash
for i in `find /home/zhaodw -type f `dol=`du -k $i|awk '{print $1}'`if [ $l -gt 100 ]thenecho $i,"davy" elseecho $i &gt; backfidone
为此补充一下，SHELL脚本中IF的知识：
前言:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 无论什么编程语言都离不开条件判断。SHELL也不例外。
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if list then &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do something here &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; elif list then &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do another thing here &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do something else here &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fi &nbsp;&nbsp;&nbsp;
EX1:
#!/bin/sh
SYSTEM=`uname -s`&nbsp;&nbsp;&nbsp; #获取操作系统类型，我本地是linux
if [ $SYSTEM = "Linux" ] ; then&nbsp;&nbsp;&nbsp;&nbsp; #如果是linux的话打印linux字符串echo "Linux" elif [ $SYSTEM = "FreeBSD" ] ; then&nbsp;&nbsp;&nbsp;echo "FreeBSD" elif [ $SYSTEM = "Solaris" ] ; then echo "Solaris" else echo "What?" fi&nbsp;&nbsp;&nbsp;&nbsp; #ifend
基本上和其他脚本语言一样。没有太大区别。不过值得注意的是]]></description>
		<author><![CDATA[davidbreathe]]></author>
		<pubDate>2008-08-25 14:10:00</pubDate>
		</item>
				<item>
		<title><![CDATA[虚拟机简介]]></title>
		<link>http://blog.pfan.cn/daweizhao/37784.html</link>
		<description><![CDATA[在测试的时候，一台测试机被分成了N多的虚拟机供向个测试人员使用。对本机来说，不同的配置可在测试的时候有帮助，因此特意查找了虚拟机的资料，放在这里：
比较通俗的回答（适合没有电脑基础的朋友）虚拟机，顾名思义就是虚拟出来的电脑，这个虚拟出来的电脑和真实的电脑几乎完全一样，所不同的是他的硬盘是在一个文件中虚拟出来的，所以你可以随意修改虚拟机的设置，而不用担心对自己的电脑造成损失，因此可以用来做试验什么的，呵呵，差不多就是这样了，不知道我说的能明白不^_^，简单说就是一句话，虚拟出来的电脑，你干什么都行。 现在说一下虚拟机的软件，主要是两中，Virtual PC和VMware。软件的选择也是有门道滴，嘿嘿，简单来说，VPC的设置很简单，一路next就行了，VM设置相对麻烦一些，不过也不是麻烦很多，但是VM拥有更好的性能，可以说和真实的电脑性能完全一样，还可以用桥接的方式和现在的电脑互连^_^，可以研究的东西就更多了，呵呵比较专业的回答（适合有一点电脑基础的朋友）在一台电脑上将硬盘和内存的一部分拿出来虚拟出若干台机器，每台机器可以运行单独的操作系统而互不干扰，这些“新”机器各自拥有自己独立的CMOS、硬盘和操作系统，你可以像使用普通机器一样对它们进行分区、格式化、安装系统和应用软件等操作，还可以将这几个操作系统联成一个网络。在虚拟系统崩溃之后可直接删除不影响本机系统，同样本机系统崩溃后也不影响虚拟系统，可以下次重装后再加入以前做的虚拟系统。同时它也是唯一的能在Windows和Linux主机平台上运行的虚拟计算机软件。虚拟机软件不需要重开机，就能在同一台电脑使用好几个OS，不但方便，而且安全。虚拟机在学习技术方面能够发挥很大的作用。 虚拟机（virtual machine） 虚拟机（VM）是支持多操作系统并行运行在单个物理服务器上的一种系统，能够提供更加有效的底层硬件使用。在虚拟机中，中央处理器芯片从系统其它部分划分出一段存储区域，操作系统和应用程序运行在“保护模式”环境下。如果在某虚拟机中出现程序冻结现象，这并不会影响运行在虚拟机外的程序操作和操作系统的正常工作。虚拟机具有四种体系结构。第一种为“一对一映射”，其中以 IBM 虚拟机最为典型。第二种由机器虚拟指令映射构成，其中以 Java 虚拟机最为典型。Unix 虚拟机模型和 OSI 虚拟机模型可以直接映射部分指令，而其它]]></description>
		<author><![CDATA[davidbreathe]]></author>
		<pubDate>2008-08-22 09:45:00</pubDate>
		</item>
				<item>
		<title><![CDATA[sudo是linux下常用的允许普通用户使用超级用户权限的工具。]]></title>
		<link>http://blog.pfan.cn/daweizhao/37775.html</link>
		<description><![CDATA[它的主要配置文件是sudoers,linux下通常在/etc目录下，如果是solaris，缺省不装sudo的，编译安装后通常在安装目录的etc目录下，不过不管sudoers文件在哪儿，sudo都提供了一个编辑该文件的命令：visudo来对该文件进行修改。强烈推荐使用该命令修改sudoers，因为它会帮你校验文件配置是否正确，如果不正确，在保存退出时就会提示你哪段配置出错的。言归正传，下面介绍如何配置sudoers首先写sudoers的缺省配置：##############################################################&nbsp;sudoers&nbsp;file.##&nbsp;This&nbsp;file&nbsp;MUST&nbsp;be&nbsp;edited&nbsp;with&nbsp;the&nbsp;'visudo'&nbsp;command&nbsp;as&nbsp;root.##&nbsp;See&nbsp;the&nbsp;sudoers&nbsp;man&nbsp;page&nbsp;for&nbsp;the&nbsp;details&nbsp;on&nbsp;how&nbsp;to&nbsp;write&nbsp;a&nbsp;sudoers&nbsp;file.##&nbsp;Host&nbsp;alias&nbsp;specification#&nbsp;User&nbsp;alias&nbsp;specification#&nbsp;Cmnd&nbsp;alias&nbsp;specification#&nbsp;Defaults&nbsp;specification#&nbsp;User&nbsp;privilege&nbsp;specificationroot&nbsp;&nbsp;&nbsp;&nbsp;ALL=(ALL)&nbsp;ALL#&nbsp;Uncomment&nbsp;to&nbsp;allow&nbsp;people&nbsp;in&nbsp;group&nbsp;wheel&nbsp;to&nbsp;run&nbsp;all&nbsp;commands#&nbsp;%wheel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n]]></description>
		<author><![CDATA[davidbreathe]]></author>
		<pubDate>2008-08-21 18:20:00</pubDate>
		</item>
				<item>
		<title><![CDATA[hadoop平台详解]]></title>
		<link>http://blog.pfan.cn/daweizhao/37774.html</link>
		<description><![CDATA[Map Reduce - the Free Lunch is not over?

微软著名的C++大师Herb Sutter在2005年初的时候曾经写过一篇重量级的文章：”The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software“，预言OO之后软件开发将要面临的又一次重大变革-并行计算。
摩尔定律统制下的软件开发时代有一个非常有意思的现象：”Andy giveth, and Bill taketh away.”。不管CPU的主频有多快，我们始终有办法来利用它，而我们也陶醉在机器升级带来的程序性能提高中。
我记着我大二的时候曾经做过一个五子棋的程序，当时的算法就是预先设计一些棋型（有优先级），然后扫描棋盘，对形势进行分析，看看当前走哪部对自己最重要。当然下棋还要堵别人，这就需要互换双方的棋型再计算。如果只算一步，很可能被狡猾的对手欺骗，所以为了多想几步，还需要递归和回朔。在当时的机器上，算3步就基本上需要3秒左右的时间了。后来大学毕业收拾东西的时候找到这个程序，试了一下，发现算10步需要的时间也基本上感觉不出来了。
不知道你是否有同样的经历，我们不知不觉的一直在享受着这样的免费午餐。可是，随着摩尔定律的提前终结，免费的午餐终究要还回去。虽然硬件设计师还在努力：Hyper Threading CPU（多出一套寄存器，相当于一个逻辑CPU）使得Pipeline尽可能满负荷，使多个Thread的操作有可能并行，使得多线程程序的性能有5%-15%的提升；增加Cache容量也使得包括Single-Thread和Multi-Thread程序都能受益。也许这些还能帮助你一段时间，但问题是，我们必须做出改变，面对这个即将到来的变革，你准备好了么？
Concurrency Programming != Multi-Thread Programming。很多人都会说MultiThreading谁不会，问题是，你是为什么使用/如何使用多线程的？我从前做过一个类似AcdSee一样的图像查看/处理程序，我通常用它来处理我的数码照片。我在里面用了大量的多线程，不过主要目的是在图像处理的时候不要Block住UI，所以将CPU Intensive的计算部分用后台线程进行处理。而并没有把对图像矩阵的]]></description>
		<author><![CDATA[davidbreathe]]></author>
		<pubDate>2008-08-21 18:17:00</pubDate>
		</item>
				<item>
		<title><![CDATA[稀奇事]]></title>
		<link>http://blog.pfan.cn/daweizhao/37707.html</link>
		<description><![CDATA[用JOIN命令，join -t "^B" -1 1 -2 1 -a1 1 2，
其中，1和2 文件内容分别如下：
1^A2^B31^A2^B41^A0^B2&nbsp;&nbsp; 
1^A2^B21^A2^B2
应该运行出的正确内容为：
1232123212421242102
但却一直为：
1^A2^B31^A2^B41^A0^B2
似乎是没有join的样子，但是，这是在linux上，在freebsd上则运行良好。最后无法，在开发那里去看，却能运行出正确结果。然后再返回到自己的机子上，仍是错误结果。最后无法重新登录再次运行，才能达到正确结果。
为什么会这样？同样的命令为什么重新登录后会有不同的运行结果？session问题？不应该啊，是linux自带的命令，不能运行结果不同啊
幸亏有文件3来证明，否则都要怀疑自己是不是真的看错了
稀奇事
去重复命令：uniq
join -t "^B" -1 1 -2 1 -a1 1 2 | uniq，运行结果为：
12321242102]]></description>
		<author><![CDATA[davidbreathe]]></author>
		<pubDate>2008-08-19 11:32:00</pubDate>
		</item>
		</channel>
</rss>