<?xml version="1.0" encoding="utf-8"?><rss version="2.0">
<channel>
<title><![CDATA[110]]></title>
<link>http://blog.pfan.cn/lqf110</link>
<description>编程爱好者博客</description>
<language>zh-cn</language>
			<item>
		<title><![CDATA[自动为C++类生成luabind&nbsp;api(转)]]></title>
		<link>http://blog.pfan.cn/lqf110/54369.html</link>
		<description><![CDATA[自动为C++类生成luabind api


	发表于2012 年 7 月 24 日由kid 

			 

	
		在我的上一篇日志中提到使用luabind来导出C++类会很方便，但是通常来说，一个类中都会有几十个函数需要被导出，而我们手头上往往有几十个这样的类。如果要人工去一个一个为它们写导出API，那将会是一件十分令人崩溃的事情！对于boost::python来说，有一个现成的工具(具体叫什么名字请询问亮哥…)。但luabind就没有这般幸运了~所以我决定自己写一个。
	
	
		我最初的做法是完全使用正则表达式来匹配各种类和函数，花了一整天时间做出来一个有着许多错误，但经过人手动修改修改也勉勉强强能用的版本。在这个过程中我深深地了解到了从“还不错”到“完美”之间存在着多大的鸿沟。这让我下定决心要用词法分析的做法重新写一个。但是C++的词法何其复杂，如果要自己手写一个那就实在是太浪费时间了！经过亮哥指点，我使用clang作为词法分析器，并使用其python包装，完成了为C++自动生成luabind api的第一个版本。
	
	
		工具github地址：https://github.com/kidsang/LuabindAutoWrap
因为我已经把clang的dll也放在了仓库里，所以理论上来说，只要下载下来就可以用了。这是个使用python写成的工具，所以为了使用它你首先需要下载安装python2.7
	
	
		源码主要有三个文件，其中parse.py负责调用clang的函数对文件进行分析，construct.py负责输出格式化后的api代码，autowrap.py是一个调用工具进行api包装的例子。
	
	
		目前版本为0.1，主要的功能是为C++的类导出luabind api。其中包含了以下缺陷：
	
	
		
			不支持静态成员函数，事实上，它会把它们当做非静态的函数导出，需要手动去删……
		
		
			不支持运算符重载，并且不会进行导出。
		
		
			不支持成员函数重载，会导出多个重复的api，需要手动去删……
		
	
	
		这些缺陷我会慢慢地改进。之所以是“慢慢地”，主要原因是这个工具主要是我写给自己用，为了辅助SaberCore开发的。目前的程度已经]]></description>
		<author><![CDATA[lqflyc]]></author>
		<pubDate>2013-12-23 11:25:00</pubDate>
		</item>
				<item>
		<title><![CDATA[游戏参考]]></title>
		<link>http://blog.pfan.cn/lqf110/54279.html</link>
		<description><![CDATA[http://blog.sina.com.cn/u/3629839257]]></description>
		<author><![CDATA[lqflyc]]></author>
		<pubDate>2013-07-29 10:43:00</pubDate>
		</item>
				<item>
		<title><![CDATA[地形]]></title>
		<link>http://blog.pfan.cn/lqf110/54270.html</link>
		<description><![CDATA[http://download.csdn.net/detail/ben_shan_/2151970

	http://download.csdn.net/detail/nhewrc/2676560


	http://blog.csdn.net/nasi00/article/details/335474


	http://dev.gameres.com/Program/Visual/3D/SceneDesign.mht


	http://download.csdn.net/detail/niyongfu14/3442975


	http://blog.csdn.net/pizi0475/article/details/6445087


	http://blog.csdn.net/qq18052887/article/details/9139553


	http://download.csdn.net/detail/ZeewenDotNet/728361


	好


	http://bbs.csdn.net/topics/390340232


	http://download.csdn.net/detail/yibing55555/2684398


	http://download.csdn.net/detail/zddmail/4264810


	http://download.csdn.net/download/zddmail/4309418]]></description>
		<author><![CDATA[lqflyc]]></author>
		<pubDate>2013-07-19 11:13:00</pubDate>
		</item>
				<item>
		<title><![CDATA[32位和64位系统区别及int字节数(转)]]></title>
		<link>http://blog.pfan.cn/lqf110/54227.html</link>
		<description><![CDATA[一）64位系统和32位有什么区别？

	1、64bit CPU拥有更大的寻址能力，最大支持到16GB内存，而32bit只支持4G内存


	2、64位CPU一次可提取64位数据，比32位提高了一倍，理论上性能会提升1倍。但这是建立在64bit操作系统，64bit软件的基础上的。


	


	什么是64位处理器？


	之所以叫做“64位处理器”，是因为电脑内部都是实行2进制运算，处理器（CPU）一次处理数据的能力也是2的倍数。8位处理器、16位处理器、32位处理器和64位处理器，其计数都是2的倍数。一次处理的数据越大，该电脑处理信息的能力越来越大；因此64位处理在先天就比32位处理器具有快速的能力。那为什么不用更高级的128位处理器呢？因为位数越高，处理器芯片的设计也就越复杂，目前的技术水平暂时无法制造这么复杂的芯片。


	


	64位处理器之失


	※硬件———缺乏驱动程序，很多现有硬件无法使用


	※软件———操作系统不是问题，但是软件出现不兼容难题


	


	64位处理器之得


	※硬件———更快的执行速度，更大的内存管理


	※软件———最新的尖端软件首先出现在64位平台


	


	（二）数据类型对应字节数


	程序运行平台
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不同的平台上对不同数据类型分配的字节数是不同的。
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 个人对平台的理解是CPU+OS+Compiler，是因为： 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1、64位机器也可以装32位系统（x64装XP）； 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2、32位机器上可以有16/32位的编译器（XP上有tc是16位的，其他常见的是32位的）； 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3、即使是32位的编译器也可以弄出64位的integer来（int64）。 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以上这些是基于常见的wintel平台，加上我们可能很少机会接触的其它平台（其它的CPU和OS），所以个人认为]]></description>
		<author><![CDATA[lqflyc]]></author>
		<pubDate>2013-05-23 15:14:00</pubDate>
		</item>
				<item>
		<title><![CDATA[用宏区分操作系统和编译器(转)]]></title>
		<link>http://blog.pfan.cn/lqf110/54226.html</link>
		<description><![CDATA[原文地址: http://blog.chinaunix.net/uid-24520020-id-2976765.html


	&nbsp;


	编码的时候经常要用到条件编译，每次都到网上去查比较浪费时间，今天总结一下以备后用


	


	
		编译器
	
	
		
			
				GCC
#ifdef __GNUC__
				
					
						#if __GNUC__ &gt;= 3 // GCC3.0以上
					
				
			
			
				Visual C++
#ifdef _MSC_VER（非VC编译器很多地方也有定义）
				
					
						#if _MSC_VER &gt;=1000 // VC++4.0以上
					
					
						#if _MSC_VER &gt;=1100 // VC++5.0以上
					
					
						#if _MSC_VER &gt;=1200 // VC++6.0以上
					
					
						#if _MSC_VER &gt;=1300 // VC2003以上
					
					
						#if _MSC_VER &gt;=1400 // VC2005以上
					
				
			
			
				Borland C++
#ifdef __BORLANDC__
			
		
	
	
		UNIX
		
			
				UNIX
#ifdef __unix
or
#ifdef __unix__
			
			
				Linux
#ifdef __linux
or
#ifdef __linux__
			
			
				FreeBSD
#ifdef __FreeBSD__
			
			
				NetBSD
#ifdef __NetBSD__
			
		
	
	
		Windows
		
			
				32bit
#ifdef _WIN32（或者WIN32）
			
			
				64bit
#ifdef _WIN64
			
			
				GUI&]]></description>
		<author><![CDATA[lqflyc]]></author>
		<pubDate>2013-05-23 14:48:00</pubDate>
		</item>
				<item>
		<title><![CDATA[非阻塞Connect对于select时应注意问题(转)]]></title>
		<link>http://blog.pfan.cn/lqf110/53862.html</link>
		<description><![CDATA[对于面向连接的socket类型(SOCK_STREAM,SOCK_SEQPACKET)在读写数据之前必须建立连接，首先服务器端socket必须在一个客户端知道的地址进行监听,也就是创建socket之后必须调用bind绑定到一个指定的地址，然后调用int listen(int sockfd, int backlog);进行监听。此时服务器socket允许客户端进行连接，backlog提示没被accept的客户连接请求队列的大小，系统决定实际的值，最大值定义为SOMAXCONN在头文件&lt;sys/socket.h&gt;里面。如果某种原因导致服务器端进程未及时accpet客户连接而导致此队列满了的话则新的客户端连接请求被拒绝(在工作中遇到过此情况，IONA ORBIX(CORBA中间件)由于没有配置超时时间结果在WIFI网络中传输数据出现异常情况一直阻塞而无机会调用accept接受新的客户请求，于是最终队列满导致新的客户连接被拒绝)。

　　调用listen之后当有客户端连接到达的时候调用int accept(int sockfd, struct sockaddr *restrict addr, socklen_t *restrict len);接受客户端连接建立起连接返回用于连接数据传送的socket描述符，进行监听的socket可以用于继续监听客户端的连接请求，返回的socket描述符跟监听的socket类型一致。如果addr不为NULL,则客户端发起连接请求的socket地址信息会通过addr进行返回。如果监听的socket描述符为阻塞模式则accept一直会阻塞直到有客户发起连接请求，如果监听的socket描述符为非阻塞模式则如果当前没有可用的客户连接请求，则返回-1(errno设置为EAGAIN)。可以使用select函数对监听的socket描述符进行多路分离，如果有客户连接请求则select将监听的socket描述符设置为可读(注意，如果监听的socket为阻塞模式而使用select进行多路分离则可能造成select返回可读但是调用accept会被阻塞住的情况，原因是在调用accept之前客户端可能主动关闭连接或者发送RST异常关闭连接，因此select最好跟非阻塞socket搭配使用)。

　　客户端调用int connect(int sock]]></description>
		<author><![CDATA[lqflyc]]></author>
		<pubDate>2012-11-01 12:09:00</pubDate>
		</item>
				<item>
		<title><![CDATA[C++&nbsp;反射]]></title>
		<link>http://blog.pfan.cn/lqf110/53703.html</link>
		<description><![CDATA[C++ 的“反射”技术 


	Lit Window Library 


	来自http://sourceforge.net/projects/litwindow&nbsp;大概看了一下，使用了宏建立了一个比较复杂的数据结构，用来提供成员反查以及成员访问。


	
		&nbsp;
	
	
		tinybind 
	
	
		来自http://sourceforge.net/projects/tinybind/&nbsp; 这个应该不算是反射，不过通过了定义一个Binding函数实现成员和XML的Element之间的绑定，自动实现了XML&lt;-&gt;class，对实现C++的“反射”也有一定的参考作用。
	
	
		
			&nbsp;
		
		
			
				OODBC 
			
			
				来自http://www.garret.ru/~knizhnik/cpp.html&nbsp; 这个也应该不算是反射，也是通过宏建立一个记录成员变量在类中的偏移位置的链表。自动实现数据库字段与成员的绑定，有点Hibernate的味道。呵呵。同时，作者提供的另外几个例如FastDB、GigaBase、goods、POST++都使用了类似的技术。

				
					http://www.codeproject.com/library/libreflection.asp&nbsp;
				
				
					&nbsp;
				
				
					AGM::LibReflection: A reflection library for C++.
				
				
					&nbsp;
				
				
					用的是宏，不过实现出来的东西比较有“反射”的味道，而且只需要一个头文件就足够了。不知道g++下表现如何，有空要研究研究。
				
				
					&nbsp;
				
				
					&nbsp;
				
				
					boost出了1.32，去 http://boost.c-view.org/&nbsp;可以找到。
				
				
					其中新增加的部分有：]]></description>
		<author><![CDATA[lqflyc]]></author>
		<pubDate>2012-08-09 17:21:00</pubDate>
		</item>
				<item>
		<title><![CDATA[windows下vim和Doxygen自动生成代码文档(转)]]></title>
		<link>http://blog.pfan.cn/lqf110/53667.html</link>
		<description><![CDATA[本文转自：http://blog.ixpub.net/597712/viewspace-423724
	
	
		
			1. &nbsp;下载DoxygenToolkit&nbsp;下载地址：http://www.vim.org/scripts/script.php?script_id=987
		
		
			2. &nbsp;把DoxygenToolkit.vim放入../Vim/vim72/plugin
		
		
			3. &nbsp;修改_vimrc的配置,我的配置是
		
		
			let g:DoxygenToolkit_paramTag_pre="@param "&nbsp;
		
		
			let g:DoxygenToolkit_returnTag="@returns &nbsp; "&nbsp;
		
		
			let g:DoxygenToolkit_blockHeader="--------------------------------------------------------------------------"&nbsp;
		
		
			let g:DoxygenToolkit_blockFooter="----------------------------------------------------------------------------"&nbsp;
		
		
			let g:DoxygenToolkit_authorName="Leon Lee" &nbsp;
		
		
			4. &nbsp;使用命令
		
		
			DoxAuthor:将文件名，作者，时间等关键字自动填好
		
		
			DoxLic:license注释
		
		
			Dox：函数及类注释&nbsp;
		
		
			&nbsp;
		
		
			5、使用Doxygen的一般步骤
		
		
			a)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;下载&nbsp;Doxygen软件(本人Cygwin自带该软件)
		
		
			b)&]]></description>
		<author><![CDATA[lqflyc]]></author>
		<pubDate>2012-07-24 09:55:00</pubDate>
		</item>
				<item>
		<title><![CDATA[linux下递归删除目录下所有指定类型文件]]></title>
		<link>http://blog.pfan.cn/lqf110/53637.html</link>
		<description><![CDATA[find  . -name  '*.exe' -type  f -print -exec  rm -rf  {} \;
	


	(1) "."&nbsp;&nbsp;&nbsp; 表示从当前目录开始递归查找


	(2) “ -name '*.exe' "根据名称来查找，要查找所有以.exe结尾的文件夹或者文件


	(3) " -type&nbsp;f "查找的类型为文件


	(4) "-print" 输出查找的文件目录名


	(5) 最主要的是是-exec了，-exec选项后边跟着一个所要执行的命令，表示将find出来的文件或目录执行该命令。


	&nbsp;&nbsp;&nbsp;&nbsp; exec选项后面跟随着所要执行的命令或脚本，然后是一对儿{}，一个空格和一个\，最后是一个分号]]></description>
		<author><![CDATA[lqflyc]]></author>
		<pubDate>2012-07-07 17:38:00</pubDate>
		</item>
				<item>
		<title><![CDATA[AI网站]]></title>
		<link>http://blog.pfan.cn/lqf110/53636.html</link>
		<description><![CDATA[http://www.aisharing.com/]]></description>
		<author><![CDATA[lqflyc]]></author>
		<pubDate>2012-07-07 09:31:00</pubDate>
		</item>
				<item>
		<title><![CDATA[distcc]]></title>
		<link>http://blog.pfan.cn/lqf110/53551.html</link>
		<description><![CDATA[ttp://forums.gentoo.org/viewtopic.php?t=66930]]></description>
		<author><![CDATA[lqflyc]]></author>
		<pubDate>2012-07-04 19:33:00</pubDate>
		</item>
				<item>
		<title><![CDATA[cygwin&nbsp;下如何建立用户账户]]></title>
		<link>http://blog.pfan.cn/lqf110/53550.html</link>
		<description><![CDATA[cygwin 下如何建立用户账户.(域环境)
1. 在域里建立一个账户123456
2. 在需要ssh登录的主机上,配置好cygwin和sshd.
3.使用mkpasswd -l &gt; /etc/passwd 来建立local password条目,别忘记先备份一下.
3.是用mkpasswd -d -u 123456 &gt;&gt; /etc/passwd 在passwd里追加一个域用户. -d 表示domain
4.如果这个时候登录,不会成功,因为里面gid还不在group文件里呢.需要这样mkgroup -d &gt;&gt; /etc/group,把用户所在的组gid也添加进去.
5.其实意思就是,利用mkpasswd来添加用户,可以是本地的也可以是域里的,利用mkgroup添加用户相应的组信息能识别.
6.域用户如果在本地组里,也就是说混合用也可以.]]></description>
		<author><![CDATA[lqflyc]]></author>
		<pubDate>2012-07-04 17:28:00</pubDate>
		</item>
				<item>
		<title><![CDATA[分布式编译(转)]]></title>
		<link>http://blog.pfan.cn/lqf110/53549.html</link>
		<description><![CDATA[http://blog.chinaunix.net/uid-9012903-id-2011523.html


	http://blog.csdn.net/chenee543216/article/details/4339577

http://wenku.baidu.com/view/79925c36f111f18583d05a29.html 

	&nbsp;]]></description>
		<author><![CDATA[lqflyc]]></author>
		<pubDate>2012-07-04 16:15:00</pubDate>
		</item>
				<item>
		<title><![CDATA[分布式编译(转)]]></title>
		<link>http://blog.pfan.cn/lqf110/53548.html</link>
		<description><![CDATA[今天写netsurf的一篇blog，顺便把之前做的的一个东西给写了，写blog真的是蛮辛苦的一件事。。。就都今天苦了吧，呵呵

用distcc，ccache是两年前，项目结束的空隙，自己拿来玩的。当时是在arm上做的一个很大的工程，当时的PC，只编UI部分就需要3个小时，这也是为什么后来我用分布式编译的原因。那个项目是c++加adobe的flash，仿iphone做一款很炫的手机，其中UI全部用flash做，效果很炫，速度就比较差了。后来，我也试过在arm9261（200MHz）上用gnash播放flash，效果确实比较一般。言归正传，还是来说下分布式编译，其实它的原理很简单，把c文件在本机预编译，然后发到其他主机进行编译，编译的后的o文件再传回本机，最后在本机进行链接。没有看过代码，猜测对于每个编译的c文件对应产生一个编译任务，下发到其他机器或本机，最终完成编译。

我们的环境是ADS1.2+cygwin，用tcc，tcpp进行编译。distcc，ccache本来是在cygwin上直接装的的，但后来在使用时发现会碰到一些问题。所以从源码编译了。distcc产生的中间文件是.i的格式，tcc无法识别该文件类型，需要修改源码。就一句话，网上可以搜到的。if(dcc_getenv_bool("DISTCC_KEEP_FILETYPE", 1)).然后，./configure; make; make install。ccache问题是一样的，无法识别.i文件，修改ccache.c，把中间文件i/ii改为c/cpp，一样的方式安装。

然后要对安装的东西进行配置，我当时的配置如下，10.19.5.0网段的主机都可以做协同编译的主机，当然ads的licence只有20个啦。此处目录设置至关重要，tcc无法识别cygwin环境，tcc -c /cygdriver/c/a.c,&nbsp; tcc无法读取文件，错误码为C3052E。利用了cygwin既可以win32的路径，又可以识别posix路径。
export DISTCC_LOG='/var/log/distcc.log'
export DISTCC_HOSTS='localhost 10.19.5.0/24'
export DISTCC_VERBOSE=1
export DISTCC_SAVE_T]]></description>
		<author><![CDATA[lqflyc]]></author>
		<pubDate>2012-07-04 16:02:00</pubDate>
		</item>
				<item>
		<title><![CDATA[打开21端口]]></title>
		<link>http://blog.pfan.cn/lqf110/53545.html</link>
		<description><![CDATA[1。安装vsftp，启动ftp服务即可以开放21端口。
&nbsp;&nbsp; yum install vsftpd

&nbsp; /etc/init.d/vsftpd start

2。修改vsftp的配置文件
&nbsp; vi /etc/vsftpd/vsftpd.conf
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; anonymous_enable=YES
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; anon_upload_enable=YES
&nbsp; 添加以上选项即可使服务支持匿名上传

3。修改文件系统权限
&nbsp;&nbsp; chmod 777 /var/ftp/pub/

4。重启服务即可。]]></description>
		<author><![CDATA[lqflyc]]></author>
		<pubDate>2012-07-02 16:06:00</pubDate>
		</item>
				<item>
		<title><![CDATA[A*]]></title>
		<link>http://blog.pfan.cn/lqf110/53542.html</link>
		<description><![CDATA[http://www.cnblogs.com/gzwlj/archive/2011/02/24/1963760.html


	&nbsp;


	一种高效的寻路算法 - B*寻路算法 


	
		
			　　在此把这个算法称作B* 寻路算法（Branch Star 分支寻路算法，且与A*对应），本算法适用于游戏中怪物的自动寻路，其效率远远超过A*算法，经过测试，效率是普通A*算法的几十上百倍。
		
		
			
　　通过引入该算法，一定程度上解决了游戏服务器端无法进行常规寻路的效率问题，除非服务器端有独立的AI处理线程，否则在服务器端无法允许可能消耗大量时间的寻路搜索，即使是业界普遍公认的最佳的A*，所以普遍的折中做法是服务器端只做近距离的寻路，或通过导航站点缩短A*的范围。
		
		
			
算法原理 
　　本算法启发于自然界中真实动物的寻路过程，并加以改善以解决各种阻挡问题。 
　　前置定义： 
　　1、探索节点：为了叙述方便，我们定义在寻路过程中向前探索的节点（地图格子）称为探索节点，起始探索节点即为原点。（探索节点可以对应为A*中的开放节点） 
　　2、自由的探索节点：探索节点朝着目标前进，如果前方不是阻挡，探索节点可以继续向前进入下一个地图格子，这种探索节点我们称为自由探索节点； 
　　3、绕爬的探索节点：探索节点朝着目标前进，如果前方是阻挡，探索节点将试图绕过阻挡，绕行中的探索节点我们成为绕爬的探索节点；
		
		
			
算法过程 
　　1、起始，探索节点为自由节点，从原点出发，向目标前进； 
　　2、自由节点前进过程中判断前面是否为障碍，&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp; 　　a、不是障碍，向目标前进一步，仍为自由节点；&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp; 　　b、是障碍，以前方障碍为界，分出左右两个分支，分别试图绕过障碍，这两个分支节点即成为两个绕爬的探索节点； 
　　3、绕爬的探索节点绕过障碍后，又成为自由节点，回到2）； 
　　4、探索节点前进后，判断当前地图格子是否为目标格子，如果是则寻路成功，根据寻路过程构造完整路径； 
　　5、寻路过程中，如果探索节点没有了，则寻路结束，表明没有目标格子不可达；]]></description>
		<author><![CDATA[lqflyc]]></author>
		<pubDate>2012-06-28 20:10:00</pubDate>
		</item>
				<item>
		<title><![CDATA[游戏代码下载]]></title>
		<link>http://blog.pfan.cn/lqf110/53528.html</link>
		<description><![CDATA[http://www.89ye.com/forum.php


	http://www.discuz.net/forum.php?mod=forumdisplay&amp;fid=32

http://www.webgamei.com/ 

	&nbsp;]]></description>
		<author><![CDATA[lqflyc]]></author>
		<pubDate>2012-06-19 19:55:00</pubDate>
		</item>
				<item>
		<title><![CDATA[递归删除目录]]></title>
		<link>http://blog.pfan.cn/lqf110/53525.html</link>
		<description><![CDATA[递归删除目录下的VC临时文件


	发表于 2010 年 10 月 22 日 由 oldBlog 



	
		从网上找来的bat命令：
	
	
		&nbsp;
	
@echo off @echo SDK开发包瘦身批处理 del *.pch /q /s del *.obj /q /s del *.ilk /q /s del *.exp /q /s del *.pdb /q /s del *.idb /q /s del *.ncb /q /s del *.opt /q /s  rem 删除浏览信息文件 del *.sbr /q /s  rem Build Log文件 rem del *.plg /q /s  rem del *.aps /q /s  rem 删除临时文件 rem del *.tmp /q /s  rem 删除项目中存在的超大cache文件 del *cache.dat /q /s
&nbsp; rd *debug* /q /s rd *release* /q /s @echo 瘦身完成,请使用windows查找方法删除debug和release目录！ @pause
	
	
	
		将以上命令复制到文本文件中，重命名为clear.bat，放到需要清除的目录下。然后在命令行下运行即可。
	
	
		大家可根据需要增加或删除命令。比如需要删除所有该目录及子目录下的exe文件，可增加一条语句del *.exe /q /s
	
	
		其中del命令的作用是删除文件 /q 选项指定为安静模式，删除时不需要确认，/s 选项指定递归删除，删除该目录及所有子目录下的exe文件。
	
	
		rem命令指定该行是注释行
	
	
		rd命令作用为删除目录]]></description>
		<author><![CDATA[lqflyc]]></author>
		<pubDate>2012-06-18 11:28:00</pubDate>
		</item>
				<item>
		<title><![CDATA[存储过程执行sql语句]]></title>
		<link>http://blog.pfan.cn/lqf110/53494.html</link>
		<description><![CDATA[SET&nbsp;@xx="name,bm"; &nbsp;&nbsp;
	
	
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SET&nbsp;@sql1&nbsp;=&nbsp;CONCAT('select&nbsp;',@xx,'&nbsp;from&nbsp;people'); &nbsp;&nbsp;
	
	
		prepare&nbsp;s1&nbsp;from&nbsp;&nbsp;@sql1; &nbsp;&nbsp;
	
	
		execute&nbsp;s1; &nbsp;&nbsp;
	
	
		deallocate&nbsp;prepare&nbsp;s1;&nbsp;&nbsp;]]></description>
		<author><![CDATA[lqflyc]]></author>
		<pubDate>2012-05-29 19:51:00</pubDate>
		</item>
				<item>
		<title><![CDATA[mysql配置(转)]]></title>
		<link>http://blog.pfan.cn/lqf110/53484.html</link>
		<description><![CDATA[Shell代码 &nbsp;

	##################################################### mysql 性能提高配置 Begin##################################################### &nbsp;


	skip-name-resolve &nbsp;


	#禁止MySQL对外部连接进行DNS解析!!所有远程主机连接授权都要使用IP地址方式 &nbsp;


	back_log = 384 &nbsp;


	#back_log参数的值指出在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中。 &nbsp;&nbsp;


	key_buffer_size = 256M &nbsp;


	#key_buffer_size指定用于索引的缓冲区大小，增加它可得到更好的索引处理性能。对于内存在4GB左右的服务器该参数可设置为256M或384M。 &nbsp;


	max_allowed_packet = 4M &nbsp;


	thread_stack = 256K &nbsp;


	table_cache = 128K &nbsp;


	sort_buffer_size = 6M &nbsp;


	#查询排序时所能使用的缓冲区大小。所以，对于内存在4GB左右的服务器推荐设置为6-8M。 &nbsp;


	read_buffer_size = 4M &nbsp;


	#读查询操作所能使用的缓冲区大小。和sort_buffer_size一样，该参数对应的分配内存也是每连接独享。 &nbsp;


	join_buffer_size = 8M &nbsp;


	#联合查询操作所能使用的缓冲区大小，和sort_buffer_size一样，该参数对应的分配内存也是每连接独享。 &nbsp;


	myisam_sort_buffer_size = 64M &nbsp;


	table_cache = 512 &nbsp;


	thread_cache_size = 64 &nbsp;


	query_cache_size]]></description>
		<author><![CDATA[lqflyc]]></author>
		<pubDate>2012-05-24 13:30:00</pubDate>
		</item>
		</channel>
</rss>