﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-Kyle's Space</title><link>http://www.blogjava.net/xiaodong0417/</link><description>Java Study</description><language>zh-cn</language><lastBuildDate>Mon, 06 Apr 2026 13:57:29 GMT</lastBuildDate><pubDate>Mon, 06 Apr 2026 13:57:29 GMT</pubDate><ttl>60</ttl><item><title>Linux 查看系统信息常用命令</title><link>http://www.blogjava.net/xiaodong0417/archive/2013/11/21/406619.html</link><dc:creator>王树东</dc:creator><author>王树东</author><pubDate>Thu, 21 Nov 2013 03:21:00 GMT</pubDate><guid>http://www.blogjava.net/xiaodong0417/archive/2013/11/21/406619.html</guid><wfw:comment>http://www.blogjava.net/xiaodong0417/comments/406619.html</wfw:comment><comments>http://www.blogjava.net/xiaodong0417/archive/2013/11/21/406619.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaodong0417/comments/commentRss/406619.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaodong0417/services/trackbacks/406619.html</trackback:ping><description><![CDATA[<span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"># uname -a # 查看内核/操作系统/CPU信息&nbsp;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"># head -n 1 /etc/issue # 查看操作系统版本&nbsp;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"># cat /proc/cpuinfo # 查看CPU信息&nbsp;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"># hostname # 查看计算机名&nbsp;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"># lspci -tv # 列出所有PCI设备&nbsp;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"># lsusb -tv # 列出所有USB设备&nbsp;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"># lsmod # 列出加载的内核模块&nbsp;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"># env # 查看环境变量资源&nbsp;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"># free -m # 查看内存使用量和交换区使用量&nbsp;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"># df -h # 查看各分区使用情况&nbsp;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"># du -sh &lt;目录名&gt; # 查看指定目录的大小&nbsp;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"># grep MemTotal /proc/meminfo # 查看内存总量&nbsp;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"># grep MemFree /proc/meminfo # 查看空闲内存量&nbsp;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"># uptime # 查看系统运行时间、用户数、负载&nbsp;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"># cat /proc/loadavg # 查看系统负载磁盘和分区&nbsp;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"># mount | column -t # 查看挂接的分区状态&nbsp;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"># fdisk -l # 查看所有分区&nbsp;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"># swapon -s # 查看所有交换分区&nbsp;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"># hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)&nbsp;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"># dmesg | grep IDE # 查看启动时IDE设备检测状况网络&nbsp;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"># ifconfig # 查看所有网络接口的属性&nbsp;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"># iptables -L # 查看防火墙设置&nbsp;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"># route -n # 查看路由表&nbsp;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"># netstat -lntp # 查看所有监听端口&nbsp;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"># netstat -antp # 查看所有已经建立的连接&nbsp;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"># netstat -s # 查看网络统计信息进程&nbsp;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"># ps -ef # 查看所有进程&nbsp;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"># top # 实时显示进程状态用户&nbsp;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"># w # 查看活动用户&nbsp;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"># id &lt;用户名&gt; # 查看指定用户信息&nbsp;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"># last # 查看用户登录日志&nbsp;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"># cut -d: -f1 /etc/passwd # 查看系统所有用户&nbsp;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"># cut -d: -f1 /etc/group # 查看系统所有组&nbsp;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"># crontab -l # 查看当前用户的计划任务服务&nbsp;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"># chkconfig &#8211;list # 列出所有系统服务&nbsp;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"># chkconfig &#8211;list | grep on # 列出所有启动的系统服务程序&nbsp;</span><br style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;" /><span style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"># rpm -qa # 查看所有安装的软件包</span><img src ="http://www.blogjava.net/xiaodong0417/aggbug/406619.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaodong0417/" target="_blank">王树东</a> 2013-11-21 11:21 <a href="http://www.blogjava.net/xiaodong0417/archive/2013/11/21/406619.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转：UML中几种类间关系：继承、实现、依赖、关联、聚合、组合的联系与区别 </title><link>http://www.blogjava.net/xiaodong0417/archive/2013/05/25/399754.html</link><dc:creator>王树东</dc:creator><author>王树东</author><pubDate>Sat, 25 May 2013 08:12:00 GMT</pubDate><guid>http://www.blogjava.net/xiaodong0417/archive/2013/05/25/399754.html</guid><wfw:comment>http://www.blogjava.net/xiaodong0417/comments/399754.html</wfw:comment><comments>http://www.blogjava.net/xiaodong0417/archive/2013/05/25/399754.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaodong0417/comments/commentRss/399754.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaodong0417/services/trackbacks/399754.html</trackback:ping><description><![CDATA[<blockquote style="margin-right: 0px;" dir="ltr"><h3>这篇文章转自：<a href="http://blog.csdn.net/sfdev/article/details/3906243">http://blog.csdn.net/sfdev/article/details/3906243</a></h3><h3>这篇文章清晰的讲述了继承， 实现， 依赖， 关联，组合的概念及他们之间的关系，以下是原文内容：</h3></blockquote><h3>这是一堂关于UML基础知识的补习课；现在我们做项目时间都太紧了，基本上都没有做过真正的class级别的详细设计，更别提使用UML来实现规范建模了；本篇主要就以前自己一直感觉很迷糊的几种class之间的关系进行整理，让我们在真正用UML进行比如类图设计时能够更加清晰明了；以下就分别介绍这几种关系：</h3><h3>&nbsp;</h3><h3>继承</h3><p>指的是一个类（称为子类、子接口）继承另外的一个类（称为父类、父接口）的功能，并可以增加它自己的新功能的能力，继承是类与类或者接口与接口之间最常见的关系；在Java中此类关系通过关键字extends明确标识，在设计时一般没有争议性；<br /><img width="293" height="204" alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/sfdev/EntryImages/20090218/Generalization.jpg" /></p><h3><a name="t1"></a>实现</h3><p>指的是一个class类实现interface接口（可以是多个）的功能；实现是类与接口之间最常见的关系；在Java中此类关系通过关键字implements明确标识，在设计时一般没有争议性；<br /><img width="121" height="203" alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/sfdev/EntryImages/20090218/Realization.jpg" /></p><h3><a name="t2"></a>依赖</h3><p>可以简单的理解，就是一个类A使用到了另一个类B，而这种使用关系是具有偶然性的、、临时性的、非常弱的，但是B类的变化会影响到A；比如某人要过河，需要借用一条船，此时人与船之间的关系就是依赖；表现在代码层面，为类B作为参数被类A在某个method方法中使用；<br /><img width="430" height="97" alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/sfdev/EntryImages/20090218/Dependence.jpg" /></p><h3><a name="t3"></a>关联</h3><p>他体现的是两个类、或者类与接口之间语义级别的一种强依赖关系，比如我和我的朋友；这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的，一般是长期性的，而且双方的关系一般是平等的、关联可以是单向、双向的；表现在代码层面，为被关联类B以类属性的形式出现在关联类A中，也可能是关联类A引用了一个类型为被关联类B的全局变量；<br /><img width="430" height="105" alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/sfdev/EntryImages/20090218/Association.jpg" /></p><h3><a name="t4"></a>聚合</h3><p>聚合是关联关系的一种特例，他体现的是整体与部分、拥有的关系，即has-a的关系，此时整体与部分之间是可分离的，他们可以具有各自的生命周期，部分可以属于多个整体对象，也可以为多个整体对象共享；比如计算机与CPU、公司与员工的关系等；表现在代码层面，和关联关系是一致的，只能从语义级别来区分；<br /><img width="430" height="108" alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/sfdev/EntryImages/20090218/Aggregation.jpg" /></p><h3><a name="t5"></a>组合</h3><p>组合也是关联关系的一种特例，他体现的是一种contains-a的关系，这种关系比聚合更强，也称为强聚合；他同样体现整体与部分间的关系，但此时整体与部分是不可分的，整体的生命周期结束也就意味着部分的生命周期结束；比如你和你的大脑；表现在代码层面，和关联关系是一致的，只能从语义级别来区分；<br /><img width="430" height="106" alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/sfdev/EntryImages/20090218/Composition.jpg" /></p><p>对于继承、实现这两种关系没多少疑问，他们体现的是一种类与类、或者类与接口间的纵向关系；其他的四者关系则体现的是类与类、或者类与接口间的引用、横向关系，是比较难区分的，有很多事物间的关系要想准确定位是很难的，前面也提到，这几种关系都是语义级别的，所以从代码层面并不能完全区分各种关系；但总的来说，后几种关系所表现的强弱程度依次为：组合&gt;聚合&gt;关联&gt;依赖；</p><img src ="http://www.blogjava.net/xiaodong0417/aggbug/399754.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaodong0417/" target="_blank">王树东</a> 2013-05-25 16:12 <a href="http://www.blogjava.net/xiaodong0417/archive/2013/05/25/399754.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>The Key of Grails Custom Validator</title><link>http://www.blogjava.net/xiaodong0417/archive/2013/04/03/397376.html</link><dc:creator>王树东</dc:creator><author>王树东</author><pubDate>Wed, 03 Apr 2013 15:03:00 GMT</pubDate><guid>http://www.blogjava.net/xiaodong0417/archive/2013/04/03/397376.html</guid><wfw:comment>http://www.blogjava.net/xiaodong0417/comments/397376.html</wfw:comment><comments>http://www.blogjava.net/xiaodong0417/archive/2013/04/03/397376.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaodong0417/comments/commentRss/397376.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaodong0417/services/trackbacks/397376.html</trackback:ping><description><![CDATA[<div>当我们使用静态的Scaffolding的时候， 我们经常会用到一些自定义的validator, 那么我们怎样自定义国际化的message呢？<br />或者说我们定义怎样的一个key， Grails能查到它呢？<br /><br />这里，用户自定义Validator的key的pattern是：<div style="padding: 4px 5px 4px 4px; border: 1px solid rgb(204, 204, 204); width: 98%; font-size: 13px; word-break: break-all; background-color: rgb(238, 238, 238);"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: rgb(0, 0, 0);">[Class&nbsp;Name].[Property&nbsp;Name].validator.invalid</span></div><br /><br /></div> <img src ="http://www.blogjava.net/xiaodong0417/aggbug/397376.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaodong0417/" target="_blank">王树东</a> 2013-04-03 23:03 <a href="http://www.blogjava.net/xiaodong0417/archive/2013/04/03/397376.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>中文和ASCII互转</title><link>http://www.blogjava.net/xiaodong0417/archive/2013/04/03/397375.html</link><dc:creator>王树东</dc:creator><author>王树东</author><pubDate>Wed, 03 Apr 2013 13:16:00 GMT</pubDate><guid>http://www.blogjava.net/xiaodong0417/archive/2013/04/03/397375.html</guid><wfw:comment>http://www.blogjava.net/xiaodong0417/comments/397375.html</wfw:comment><comments>http://www.blogjava.net/xiaodong0417/archive/2013/04/03/397375.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaodong0417/comments/commentRss/397375.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaodong0417/services/trackbacks/397375.html</trackback:ping><description><![CDATA[<p style="margin: 0cm 0cm 0pt; text-indent: 24pt;"><span style="font-size: 12px;"><span style="font-size: 12px;"><span>我们在开发使时常会用到资源文件，这可能是为了多语言、国际化的需要，也可能是使用了国外开源项目的原因，这就需要中文转ascii将中文转换为</span><span>ASCII</span> <span>编码，或者将</span> <span>ASCII</span> <span>转换为中文，那么我们就可以使用</span> <span>JDK</span> <span>自带的转换工具</span> <span>native2ascii</span> <span>。</span> </span></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 24pt;"><span style="font-size: 12px;"><span style="font-size: 12px;"><span>for example</span><span>：</span> </span></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 24pt;"><span style="font-size: 12px;"><span style="font-size: 12px;"><span>No1</span><span>、中文转换为</span> <span>ASCII</span> <span>编码</span> </span></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 24pt;"><span style="font-size: 12px;"><span style="font-size: 12px;"><span>步骤：</span><span>1</span> <span>、在</span> <span>D</span> <span>盘新建</span><span> </span> <span>chinese.txt<span>&nbsp; </span></span><span>文件，内容为：</span></span></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 24pt;"><span style="font-size: 12px;"><span style="font-size: 12px;"><span>parameter.project.title=</span><span>这是中文</span> </span></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 24pt;"><span style="font-size: 12px;"><span style="font-size: 12px;"><span>2</span><span>、在环境变量中设置好</span> <span>JDK</span> <span>路径</span> </span></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 24pt;"><span style="font-size: 12px;"><span style="font-size: 12px;"><span>3</span><span>、进入</span> <span>dos</span> <span>控制台，并进入</span> <span>D</span> <span>盘目录</span> </span></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 24pt;"><span style="font-size: 12px;"><span style="font-size: 12px;"><span>4</span><span>、输入命令：</span> <span>native2ascii <span> </span> -encoding <span> </span> gb2312 <span> </span> chinese.txt<span>&nbsp; </span>ascii.txt<span>&nbsp; </span></span><span>回车</span> </span></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 24pt;"><span style="font-size: 12px;"><span style="font-size: 12px;"><span>那么在</span><span>D</span> <span>盘目录下生成</span> <span>ascii.txt </span><span>文件，内容为：</span></span></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 24pt;"><span style="font-size: 12px;"><span style="font-size: 12px;">parameter.project.title=\u8fd9\u662f\u4e2d\u6ascii码 中文587</span></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 24pt;"><span style="font-size: 12px;"><span style="font-size: 12px;"> </span></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 24pt;"><span style="font-size: 12px;"><span style="font-size: 12px;"><span>No1</span><span>、</span> <span>ASCII</span> <span>编码转换为中文</span> </span></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 24pt;"><span style="font-size: 12px;"><span style="font-size: 12px;"><span>步骤：</span><span>1</span> <span>、在</span> <span>D</span> <span>盘新建</span><span> </span> <span>ascii.txt<span>&nbsp; </span></span><span>文件，内容为：</span></span></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 24pt;"><span style="font-size: 12px;"><span style="font-size: 12px;">parameter.project.title=\u8fd9\u662f\u4e2d\u6ascii码 中文587</span></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 24pt;"><span style="font-size: 12px;"><span style="font-size: 12px;"><span>2</span><span>、在环境变量中设置好</span> <span>JDK</span> <span>路径</span> </span></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 24pt;"><span style="font-size: 12px;"><span style="font-size: 12px;"><span>3</span><span>、进入</span> <span>dos</span> <span>控制台，并进入</span> <span>D</span> <span>盘目录</span> </span></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 24pt;"><span style="font-size: 12px;"><span style="font-size: 12px;"><span>4</span><span>、输入命令：</span> <span>native2ascii <span> </span> -reverse <span> </span> -encoding <span> </span> UTF8 <span> </span> ascii.txt<span>&nbsp; </span>chinese.txt<span> </span></span><span>回车</span> </span></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 24pt;"><span style="font-size: 12px;"><span style="font-size: 12px;"><span>那么在</span><span>D</span> <span>盘目录下生成</span> <span>chinese.txt </span><span>文件，内容为：</span></span></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 24pt;"><span style="font-size: 12px;"><span style="font-size: 12px;"><span>parameter.project.title=</span><span>这是中文</span> </span></span></p> <img src ="http://www.blogjava.net/xiaodong0417/aggbug/397375.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaodong0417/" target="_blank">王树东</a> 2013-04-03 21:16 <a href="http://www.blogjava.net/xiaodong0417/archive/2013/04/03/397375.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux 上服务的安装以及示例：Apache服务的安装（转）</title><link>http://www.blogjava.net/xiaodong0417/archive/2013/01/17/394342.html</link><dc:creator>王树东</dc:creator><author>王树东</author><pubDate>Thu, 17 Jan 2013 02:23:00 GMT</pubDate><guid>http://www.blogjava.net/xiaodong0417/archive/2013/01/17/394342.html</guid><wfw:comment>http://www.blogjava.net/xiaodong0417/comments/394342.html</wfw:comment><comments>http://www.blogjava.net/xiaodong0417/archive/2013/01/17/394342.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaodong0417/comments/commentRss/394342.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaodong0417/services/trackbacks/394342.html</trackback:ping><description><![CDATA[<div>1. chkconfig脚本格式：</div> <div>#!/bin/sh <br />#chkconfig 2345 55 45  <br />#上面为固定格式：2345 表示运行级别，55表示开机执行顺序，45为关机顺序 <br />#description：this is just a demo  of chkconfig script <br />case &#8220;$1&#8221; in <br />start)</div> <div>&lt;start-script&gt;</div> <div>;;</div> <div>Stop)</div> <div>&lt;stop-script&gt;</div> <div>;;</div> <div>Status)</div> <div>Echo &lt;the information you want to display&gt;</div> <div>;;</div> <div>*)</div> <div>Echo &#8220;the usage of the script&#8221;</div> <div>Case</div> <div>2. 然后将脚本保存,并赋予执行权限,再复制到/etc/init.d目录 <br />#chmod a+x &lt;myscript&gt;  <br />#copy &lt;myscript&gt; /etc/init.d</div> <div>3. 使用chkconfig命令添加成服务 <br />#chkconfig --add &lt;myscript&gt; <br />#chkconfig  --level 35 &lt;myscript &gt; on <br />#chkconfig --list &lt;myscript&gt;</div> <div>4. 然后就可以通过service命令管理了 <br />#service &lt;myscript&gt; start | stop |  status</div> <div>5. 下面是我写的一个实例脚本，大家可以参考一些格式：</div> <div>#!/bin/sh</div> <div>#chkconfig: 2345 99 99</div> <div>#description:the script to set the network at run level 2345</div> <div>IN=eth0</div> <div>OUT=eth1</div> <div>HOST_NAME=cluster1.yang.com</div> <div>INIP=192.168.10.10</div> <div>OUTIP=192.168.136.10</div> <div>MASK=255.255.255.0</div> <div>IP=/sbin/ip</div> <div>IFC=/sbin/ifconfig</div> <div>ROUTE=/sbin/route</div> <div>#flush the address</div> <div>case "$1" in</div> <div>start)</div> <div>#echo "flush the address..."</div> <div>#$IP addr flush dev eth0</div> <div>#$IP addr flush dev eth1</div> <div>echo "set the address..."</div> <div>$IFC $IN $INIP netmask $MASK up</div> <div>$IFC $OUT $OUTIP netmask $MASK up</div> <div>echo "set the hostname..."</div> <div>hostname $HOST_NAME</div> <div>echo "set the default gateway..."</div> <div>$IP route flush all</div> <div>$ROUTE add default gw 192.168.136.2</div> <div>echo "finshed!!!"</div> <div>;;</div> <div>stop)</div> <div>echo "flush the network setting..."</div> <div>$IP addr flush dev eth0</div> <div>$IP addr flush dev eth1</div> <div>echo "flush finshed!!!"</div> <div>;;</div> <div>status)</div> <div>echo "hostname is $HOST_NAME"</div> <div>$IFC eth0</div> <div>$IFC eth1</div> <div>;;</div> <div>*)</div> <div>echo "requires start,stop or status"</div> <div>;;</div> <div>esac</div> <div>--------------------------------------------------------------------------------------------</div> <div>--------------------------------------------------------------------------------------------</div> <div> <p>在Linux中chkconfighttpd任务添加，Apache服务器的最新稳定发布版本是httpd-2.2..0,官方下载地址是：http://httpd.apache.org/download.cgi。我们通过下面的步骤来快速的搭建一个web服务器。</p> <p>1、下载源码文件httpd-2.2.0.tar.gz 到linux服务器的某个目录。<br />2、解压文件 # tar zxvf  httpd-2.2.0.tar.gz .<br />3、配置 # ./configure &#8211;refix=/usr/local/apache  //指定安装目录，以后要删除安装就只需删除这个目录。<br />4、编译和安装。 # make ; make install  .<br />5、编写启动脚本，把它放到目录 /etc/rc.d/init.d/里，这里取名为httpd,其内容如下：<br />&nbsp;</p><pre><ol><li>#!/bin/bash &nbsp;</li><li>#description:http&nbsp;server &nbsp;</li><li>#chkconfig:&nbsp;235&nbsp;98&nbsp;98 &nbsp;</li><li>case&nbsp;"$1"&nbsp;in &nbsp;</li><li>start) &nbsp;</li><li>echo&nbsp;"Starting&nbsp;Apache&nbsp;daemon..." &nbsp;</li><li>/usr/local/apache2/bin/apachectl&nbsp;-k&nbsp;start &nbsp;</li><li>;; &nbsp;</li><li>stop) &nbsp;</li><li>echo&nbsp;"Stopping&nbsp;Apache&nbsp;daemon..." &nbsp;</li><li>/usr/local/apache2/bin/apachectl&nbsp;-k&nbsp;stop &nbsp;</li><li>;; &nbsp;</li><li>restart) &nbsp;</li><li>echo&nbsp;"Restarting&nbsp;Apache&nbsp;daemon..." &nbsp;</li><li>/usr/local/apache2/bin/apachectl&nbsp;-k&nbsp;restart &nbsp;</li><li>;; &nbsp;</li><li>status) &nbsp;</li><li>statusproc&nbsp;/usr/local/apache2/bin/httpd &nbsp;</li><li>;; &nbsp;</li><li>*) &nbsp;</li><li>echo&nbsp;"Usage:&nbsp;$0&nbsp;{start|stop|restart|status}" &nbsp;</li><li>exit&nbsp;1 &nbsp;</li><li>;; &nbsp;</li><li>Esac &nbsp;</li></ol></pre> <p>&nbsp;</p> <p><strong>注意：#description:http server  这一行必须加上</strong>，否则在执行命令</p> <p>&nbsp;# chkconfig &#8211;add httpd </p> <p>时会出现&#8220;service apache does not support chkconfig&#8221;的错误报告。</p> <p>#chkconfig: 2345 98 98 表示在执行命令</p> <p>&nbsp;# chkconfig &#8211;add httpd 时会在目录 /etc/rc2.d/ 、/etc/rc3.d/ /etc/rc5.d 分别生成文件  S98httpd和 K98httpd。这个数字可以是别的。</p> <p>6、执行命令 # chkconfig &#8211;add httpd ，进入目录/etc/rc3.d/检查是否生成文件  S98httpd及K98httpd.<br />7、启动服务 # service httpd start .</p></div><img src ="http://www.blogjava.net/xiaodong0417/aggbug/394342.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaodong0417/" target="_blank">王树东</a> 2013-01-17 10:23 <a href="http://www.blogjava.net/xiaodong0417/archive/2013/01/17/394342.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java编程技巧之final</title><link>http://www.blogjava.net/xiaodong0417/archive/2012/10/15/389614.html</link><dc:creator>王树东</dc:creator><author>王树东</author><pubDate>Mon, 15 Oct 2012 14:23:00 GMT</pubDate><guid>http://www.blogjava.net/xiaodong0417/archive/2012/10/15/389614.html</guid><wfw:comment>http://www.blogjava.net/xiaodong0417/comments/389614.html</wfw:comment><comments>http://www.blogjava.net/xiaodong0417/archive/2012/10/15/389614.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaodong0417/comments/commentRss/389614.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaodong0417/services/trackbacks/389614.html</trackback:ping><description><![CDATA[<hr style="font-family: 微软雅黑; font-size: 18px; line-height: normal; " /><div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;关键词final在Java中有多重用途，既可被用于instance变量、static变量</div><div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; ">也可用于classes或methods，表示不允许客户覆写它们。</div><div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; "></div><div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; ">&nbsp; &nbsp; &nbsp; &nbsp; 当一个方法被声明成final，在两个领域中显得有位重要：</div><div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; "><ol><li>class设计</li><li>运行期性能</li></ol><div>&nbsp; &nbsp; &nbsp; &nbsp; 在程序设计里，有时我们不希望我们的方法被重写或覆盖，final关键字保证了这一点。</div></div><div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; ">final关键字是怎么影响性能的呢？</div><div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; ">&nbsp; &nbsp; &nbsp; &nbsp; 当我们的方法被声明成static，final和private， 此方法将成为Inlining（内联函数)的候选者。此类方法可以在编译期被静态决议（staticallyresolved），而不需要动态决议(dynamicResolution)。以方法本体（methodbody）替换方法调用（methodcall）会使代码执行速度更快。</div><div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; "></div><div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; ">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;将方法声明为static、final和private会带来一些缺点：这样的方法无法通过Subclassing(子类化)进行扩展。这就束缚了derived class通过class函数做事情的机会。inlined方法只有在被多次调用的情况下，才会获得令人侧目的性能提升。这是因为当一个方法被inline后，就不再需要负担方法调用的额外开销。因此，方法被调用愈多次，节省就愈多。</div><div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; "></div><div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;不过inlining也可能使你的代码体积变大。如果这个方法有许多调用点，.class文件的体积便会膨胀，这是因为原本只需存储一份的函数码，由于inline而在所有调用点被复制了一份。</div><img src ="http://www.blogjava.net/xiaodong0417/aggbug/389614.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaodong0417/" target="_blank">王树东</a> 2012-10-15 22:23 <a href="http://www.blogjava.net/xiaodong0417/archive/2012/10/15/389614.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java NIO 简单经典示例</title><link>http://www.blogjava.net/xiaodong0417/archive/2012/09/26/388634.html</link><dc:creator>王树东</dc:creator><author>王树东</author><pubDate>Wed, 26 Sep 2012 14:40:00 GMT</pubDate><guid>http://www.blogjava.net/xiaodong0417/archive/2012/09/26/388634.html</guid><wfw:comment>http://www.blogjava.net/xiaodong0417/comments/388634.html</wfw:comment><comments>http://www.blogjava.net/xiaodong0417/archive/2012/09/26/388634.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaodong0417/comments/commentRss/388634.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaodong0417/services/trackbacks/388634.html</trackback:ping><description><![CDATA[Java NIO 主要是Channel， SelectionKey, Selector 三个类之间的关系，下面的例子就是演示如果使用NIO来处理请求的：<span style="color: #008000; background-color: #eeeeee; font-size: 13px; ">/**</span><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><font color="#008000">&nbsp;*&nbsp;</font><br /><font color="#008000">&nbsp;</font><span style="color: #008000; ">*/</span><br /><span style="color: #0000FF; ">package</span>&nbsp;dongzi.nio.exercise.nio;<br /><br /><span style="color: #0000FF; ">import</span>&nbsp;java.io.IOException;<br /><span style="color: #0000FF; ">import</span>&nbsp;java.net.InetSocketAddress;<br /><span style="color: #0000FF; ">import</span>&nbsp;java.net.ServerSocket;<br /><span style="color: #0000FF; ">import</span>&nbsp;java.nio.ByteBuffer;<br /><span style="color: #0000FF; ">import</span>&nbsp;java.nio.channels.ClosedChannelException;<br /><span style="color: #0000FF; ">import</span>&nbsp;java.nio.channels.SelectionKey;<br /><span style="color: #0000FF; ">import</span>&nbsp;java.nio.channels.Selector;<br /><span style="color: #0000FF; ">import</span>&nbsp;java.nio.channels.ServerSocketChannel;<br /><span style="color: #0000FF; ">import</span>&nbsp;java.nio.channels.SocketChannel;<br /><span style="color: #0000FF; ">import</span>&nbsp;java.util.Iterator;<br /><br /><span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;*&nbsp;</span><span style="color: #808080; ">@author</span><span style="color: #008000; ">&nbsp;kyle<br />&nbsp;*&nbsp;<br />&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;SelectSockets&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">final</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;PORT_NUMBER&nbsp;=&nbsp;1234;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">&nbsp;args<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;main(String[]&nbsp;args)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;SelectSockets().go(args);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;go(String[]&nbsp;args)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;port&nbsp;=&nbsp;PORT_NUMBER;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(args.length&nbsp;&gt;&nbsp;0)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;port&nbsp;=&nbsp;Integer.parseInt(args[0]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(Exception&nbsp;e)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("Listening&nbsp;port:&nbsp;"&nbsp;+&nbsp;PORT_NUMBER);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Selector&nbsp;selector&nbsp;=&nbsp;Selector.open();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;startServer(port,&nbsp;selector);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>&nbsp;(<span style="color: #0000FF; ">true</span>)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;n&nbsp;=&nbsp;selector.select();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(n&nbsp;==&nbsp;0)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">continue</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Iterator&nbsp;it&nbsp;=&nbsp;selector.selectedKeys().iterator();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>&nbsp;(it.hasNext())&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SelectionKey&nbsp;key&nbsp;=&nbsp;(SelectionKey)&nbsp;it.next();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(key.isAcceptable())&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ServerSocketChannel&nbsp;server&nbsp;=&nbsp;(ServerSocketChannel)&nbsp;key<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.channel();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SocketChannel&nbsp;channel&nbsp;=&nbsp;server.accept();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;registerChannel(selector,&nbsp;channel,&nbsp;SelectionKey.OP_READ);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sayHello(channel);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(key.isReadable())&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readDataFromChannel(key);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;it.remove();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(IOException&nbsp;e)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;ByteBuffer&nbsp;buffer&nbsp;=&nbsp;ByteBuffer.allocate(1024);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;readDataFromChannel(SelectionKey&nbsp;key)&nbsp;<span style="color: #0000FF; ">throws</span>&nbsp;IOException&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;count&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SocketChannel&nbsp;channel&nbsp;=&nbsp;(SocketChannel)&nbsp;key.channel();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buffer.clear();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>&nbsp;((count&nbsp;=&nbsp;channel.read(buffer))&nbsp;&gt;&nbsp;0)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buffer.flip();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>&nbsp;(buffer.hasRemaining())&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(buffer.get());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buffer.clear();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(count&nbsp;&lt;&nbsp;0)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;channel.close();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;sayHello(SocketChannel&nbsp;channel)&nbsp;<span style="color: #0000FF; ">throws</span>&nbsp;IOException&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(channel&nbsp;==&nbsp;<span style="color: #0000FF; ">null</span>)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buffer.clear();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ByteBuffer&nbsp;buffer&nbsp;=&nbsp;ByteBuffer.wrap("Hi,&nbsp;there&nbsp;\r\n".getBytes());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buffer.flip();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;channel.write(buffer);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;registerChannel(Selector&nbsp;selector,&nbsp;SocketChannel&nbsp;channel,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;opRead)&nbsp;<span style="color: #0000FF; ">throws</span>&nbsp;IOException&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(channel&nbsp;==&nbsp;<span style="color: #0000FF; ">null</span>)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;channel.configureBlocking(<span style="color: #0000FF; ">false</span>);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;channel.register(selector,&nbsp;opRead);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;startServer(<span style="color: #0000FF; ">int</span>&nbsp;port,&nbsp;Selector&nbsp;selector)&nbsp;<span style="color: #0000FF; ">throws</span>&nbsp;IOException,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ClosedChannelException&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ServerSocketChannel&nbsp;serverChannel&nbsp;=&nbsp;ServerSocketChannel.open();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;serverChannel.configureBlocking(<span style="color: #0000FF; ">false</span>);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ServerSocket&nbsp;serverSocket&nbsp;=&nbsp;serverChannel.socket();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;serverSocket.bind(<span style="color: #0000FF; ">new</span>&nbsp;InetSocketAddress(port));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;serverChannel.register(selector,&nbsp;SelectionKey.OP_ACCEPT);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}</div><img src ="http://www.blogjava.net/xiaodong0417/aggbug/388634.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaodong0417/" target="_blank">王树东</a> 2012-09-26 22:40 <a href="http://www.blogjava.net/xiaodong0417/archive/2012/09/26/388634.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>The lifecycle of a software product</title><link>http://www.blogjava.net/xiaodong0417/archive/2012/09/26/388559.html</link><dc:creator>王树东</dc:creator><author>王树东</author><pubDate>Wed, 26 Sep 2012 01:37:00 GMT</pubDate><guid>http://www.blogjava.net/xiaodong0417/archive/2012/09/26/388559.html</guid><wfw:comment>http://www.blogjava.net/xiaodong0417/comments/388559.html</wfw:comment><comments>http://www.blogjava.net/xiaodong0417/archive/2012/09/26/388559.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaodong0417/comments/commentRss/388559.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaodong0417/services/trackbacks/388559.html</trackback:ping><description><![CDATA[There are 5 different steps or milestones in a <span cs4-visible"="" id="lw_1348622914_0">products</span> lifecycle from beginning to release.  These are:<br />Stage 1 - First Cycle - <span cs4-visible"="" id="lw_1348622914_1">QA</span> Handoff/Acceptance - This is the milestone that determines if a <span cs4-visible"="" id="lw_1348622914_2">product</span>  is stable enough to be tested against.  When a product reaches this  stage, it is generally released to QA Testers to begin the testing stage  of the produt.  <br /> Stage 2 - Alpha phase The product is still in QA review, but the testing  scenarios are a little more destructive in nature, in an attempt to  start shaking out most of the bugs in a product.<br /> Stage 3 - Beta phase- the product is at a stability level that it can be  released to select customers in the customer base for further testing  in the 'real world'.  This usually shakes out more bugs in a product.<br /> Stage 4 - Release Candidate - This stage is towards the end of the cycle  - The product has gone through its testing paces, and is being  certified as ready for release.<br /> Stage 5 - GA -The product is ready for the world!<br /><br /><br />Reference:&nbsp;<a href="http://answers.yahoo.com/question/index?qid=1006020204792">http://answers.yahoo.com/question/index?qid=1006020204792</a><img src ="http://www.blogjava.net/xiaodong0417/aggbug/388559.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaodong0417/" target="_blank">王树东</a> 2012-09-26 09:37 <a href="http://www.blogjava.net/xiaodong0417/archive/2012/09/26/388559.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(转)Windows Server 2003 中寻找端口与进程的关联</title><link>http://www.blogjava.net/xiaodong0417/archive/2012/01/30/368992.html</link><dc:creator>王树东</dc:creator><author>王树东</author><pubDate>Mon, 30 Jan 2012 01:31:00 GMT</pubDate><guid>http://www.blogjava.net/xiaodong0417/archive/2012/01/30/368992.html</guid><wfw:comment>http://www.blogjava.net/xiaodong0417/comments/368992.html</wfw:comment><comments>http://www.blogjava.net/xiaodong0417/archive/2012/01/30/368992.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaodong0417/comments/commentRss/368992.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaodong0417/services/trackbacks/368992.html</trackback:ping><description><![CDATA[@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
<div> Q：Windows Server 2003 中寻找端口与进程的关联 &nbsp;  A：如果发现一些从没见过的端口号，你怎么分辩出该端口是不是木马开放的端口？或者在进程列表中发现陌生的进程时，是否想知道该进程在你的系统中开了什么 端口？ 一，根据进程查端口号首先在开始菜单的&#8220;运行&#8221;框中输入&#8220;cmd.exe&#8221;进入命令提示符窗口，先键入&#8220;tasklist&#8221;命令将列出系统正在运行的进程 列表，把你要查的进程所对应的&#8220;PID&#8221;号记下或复制。把进程的PID好记下后，接下来就用这个PID号把该进程所开的端口显示出来了。在当前的命令符下 继续键入&#8220;netstat -ano | find 1140&#8221;命令，其中&#8220;netstat  -ano&#8221;参数表示以数字形式显示所有活动的TCP连接以及计算机正在侦听的TCP、UDP端口，并且显示查找进程ID(PID)号；&#8220;|find  1140&#8221;表示查找进程PID为&#8220;1140&#8221;的TCP连接以及TCP、UDP端口的侦听情况（在实际应用中，需要把你刚才记下或复制的PID号替换掉这里 的1140）。按&#8220;回车&#8221;键后，就会显示出该进程所开的端口号。 二，根据端口号查进程&nbsp;&nbsp; 在命令提示符窗口中输入&#8220;netstat  -ano&#8221;命令，列出系统当前的端口列表，该命令的作用已在上面提过了。-o参数的作用主要是显示各端口对应的进程PID号，现在把你要查的端口对应的进 程PID号记下或复制。然后在命令提示符下继续输入tasklist /fi&#8220;PID eq  788&#8221;(在实际应用中，需要把你复制或记下的PID号替换掉这里的788)，这行语句/fi参数表示在&#8220;tasklist&#8221;中筛选，而&#8220;ID eq  788&#8221;则是指定筛选的条件，按&#8220;回车&#8221;键后，就会显示出端口对应的进程。 三，查出进程对应的程序&nbsp;&nbsp;  知道了端口和进程的关联后，如何再进一步查出该进程是那个软件或程序的进程呢？下面的操作就需要用到Windows2000(Server或 Professional版都可以)安装光盘中的一个工具。首先在安装光盘的&#8220;Support\Tools\&#8221;目录下，用解压软件打开 &#8220;support.cab&#8221;压缩包，找到&#8220;tlist.exe&#8221;文件，将此文件释放到任一目录，如&#8220;D:\Support&#8221;。然后在命令提示符窗口中切换 到此目录，运行&#8220;tlist.exe&#8221;命令，把要查的进程对应的PID号记下或复制（第一列就是进程的PID号），然后继续输入&#8220;tlist.exe  2012&#8221;命令（你输入的时候，需要将刚才记下的PID号替换掉这里的2012），&#8220;CmdLine:&#8221;后面显示的就是该进程对应的软件所在的目录。除此 之外，返回信息中还列出了该进程所调用的文件，得到了这些信息就可以很容易查出进程对应的程序了。假如想关闭某个进程，可把该进程的PID号记下，在命令 提示符下输入&#8220;taskkill/pid  2400&#8221;(2400是PID号)就可以将PID号为2400的进程关闭，如果要强制关闭该进程，只须在这条命令的后面加个&#8220;/f&#8221;参数即可。</div>
来源：<a href="http://www.cn6154.com/ask/question.php?id=2623">http://www.cn6154.com/ask/question.php?id=2623</a><img src ="http://www.blogjava.net/xiaodong0417/aggbug/368992.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaodong0417/" target="_blank">王树东</a> 2012-01-30 09:31 <a href="http://www.blogjava.net/xiaodong0417/archive/2012/01/30/368992.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ubuntu 25个快捷键</title><link>http://www.blogjava.net/xiaodong0417/archive/2011/12/14/366380.html</link><dc:creator>王树东</dc:creator><author>王树东</author><pubDate>Wed, 14 Dec 2011 14:58:00 GMT</pubDate><guid>http://www.blogjava.net/xiaodong0417/archive/2011/12/14/366380.html</guid><wfw:comment>http://www.blogjava.net/xiaodong0417/comments/366380.html</wfw:comment><comments>http://www.blogjava.net/xiaodong0417/archive/2011/12/14/366380.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaodong0417/comments/commentRss/366380.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaodong0417/services/trackbacks/366380.html</trackback:ping><description><![CDATA[@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
<p><span style="color: #000000">1. <strong>Win+E </strong>- 显示所有桌面，方便的左右选择。</span></p>
<p><span style="color: #000000">2.<strong> Alt+Ctrl+Left/Right Arrow</strong> -切换桌面</span></p>
<p><span style="color: #000000">3. <strong>Alt+Ctrl+Shift+Left/Right Arrow</strong> &#8211; 移动当前窗口到其他桌面</span></p>
<p><span style="color: #000000">4.<strong> Alt + Shift+ Up Arrow</strong> &#8211; 以很酷的方式显示当前窗口</span></p>
<p><span style="color: #000000">5. <strong>Alt+F9/F10</strong> &#8211; 最小化/最大化当前窗口</span></p>
<p><span style="color: #000000">6. <strong>Alt+F5</strong> -不最大化当前窗口</span></p>
<p><span style="color: #000000">7.<strong> Alt+F7</strong> &#8211; 激活当前窗口的移动选项，你可以使用方向键移动当前窗口，甚至移动到其他桌面。</span></p>
<p><span style="color: #000000">8.<strong> Alt+F8</strong> &#8211; 用方向键调整当前窗口大小</span></p>
<p><span style="color: #000000"><span id="more-2994"></span><br />
</span></p>
<p><span style="color: #000000">9. <strong>Ctrl + Alt + D</strong> &#8211; 显示桌面/恢复当前窗口</span></p>
<p><span style="color: #000000">10. <strong>Alt+ Tab</strong> &#8211; 切换窗口</span></p>
<h3><span style="color: #000000">Nautilus</span></h3>
<p><span style="color: #000000">11. <strong>Shift+Ctrl+N</strong> &#8211; 新建文件夹, 很有用</span></p>
<p><span style="color: #000000">12. <strong>Alt + Enter</strong> &#8211; 查看选择文件/文件夹的属性，代替单击右键选择属性</span></p>
<p><span style="color: #000000">13. <strong>Ctrl + 1/2</strong> &#8211; 改变文件夹视图查看方式，图标视图/列表视图</span></p>
<p><span style="color: #000000">14. <strong>Ctrl + W</strong> &#8211; 关闭当前Nautilus窗口</span></p>
<p><span style="color: #000000">15. <strong>Ctrl + Shift + W</strong> &#8211; 关闭所有Nautilus窗口</span></p>
<p><span style="color: #000000">16. <strong>Ctrl+T</strong> &#8211; 在Nautilus中新建一个标签</span></p>
<p><span style="color: #000000">17. <strong>Alt + Up/Down Arrow</strong> &#8211; 移动到父文件夹/选择的文件夹</span></p>
<p><span style="color: #000000">18. <strong>Alt + Left/Right Arrow</strong> &#8211; 后退/前进</span></p>
<p><span style="color: #000000">19. <strong>Alt + Home</strong> -直接移动到主文件夹</span></p>
<p><span style="color: #000000">20. <strong>F9</strong> &#8211; 开关显示Nautilus侧边栏</span></p>
<p><span style="color: #000000">21. <strong>Ctrl + H</strong> -开关显示隐藏文件夹</span></p>
<p><span style="color: #000000">22.<strong> Ctrl + Alt + L </strong>-锁屏</span></p>
<p><span style="color: #000000">23. <strong>Alt + F1</strong> &#8211; 打开应用程序菜单</span></p>
<p><span style="color: #000000">24.<strong> Alt + F2</strong> &#8211; 打开运行应用程序对话框</span></p>
<p><span style="color: #000000">25. <strong>Win + 鼠标滚轮</strong> &#8211; 放大/缩小屏幕<!--more--></span></p><img src ="http://www.blogjava.net/xiaodong0417/aggbug/366380.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaodong0417/" target="_blank">王树东</a> 2011-12-14 22:58 <a href="http://www.blogjava.net/xiaodong0417/archive/2011/12/14/366380.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>