﻿<?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-一只灰机-随笔分类-java技术</title><link>http://www.blogjava.net/noaso/category/46958.html</link><description>蓝色</description><language>zh-cn</language><lastBuildDate>Wed, 01 Dec 2010 14:33:24 GMT</lastBuildDate><pubDate>Wed, 01 Dec 2010 14:33:24 GMT</pubDate><ttl>60</ttl><item><title>要读的书</title><link>http://www.blogjava.net/noaso/archive/2010/12/01/339472.html</link><dc:creator>noaso</dc:creator><author>noaso</author><pubDate>Wed, 01 Dec 2010 02:19:00 GMT</pubDate><guid>http://www.blogjava.net/noaso/archive/2010/12/01/339472.html</guid><wfw:comment>http://www.blogjava.net/noaso/comments/339472.html</wfw:comment><comments>http://www.blogjava.net/noaso/archive/2010/12/01/339472.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/noaso/comments/commentRss/339472.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/noaso/services/trackbacks/339472.html</trackback:ping><description><![CDATA[一、基础类<br />
1、《Thinking in java》，入门第一位是建立正确的概念。<br />
2、《Core Java》，我没系统读过，这本书更贴近实践，更多API的介绍，同样，更新也更频繁。<br />
<br />
二、进阶类<br />
1、《Effective Java》，在熟悉语法、API之后，你需要知道最佳实践和陷阱，没有比这本更好的。<br />
2、《<span class="pl2">Java Puzzlers》，通过谜题介绍一些你可能没有注意到的边角料，作为趣味读物也不错<br />
3、《深入Java虚拟机》，翻译一般，但不可不读，最好结合最新的JVM规范来读。<br />
<br />
三、特定领域<br />
1、网络编程：<br />
（1）</span> O'Reilly的《Java nio》，很多人都推荐，我个人觉的一般，基本上只是个API更详细的说明文档,O'reilly的java系列很多都是这样。<br />
（2）我更推荐这本《Fundamental networking in java》，由浅入深教你怎么做java网络编程，并且介绍很多背景知识，甚至介绍了各种最佳实践、网络编程模型以及Java socket在不同平台之间的差异等等。<br />
<br />
2、并发编程：<br />
（1）《<span class="pl2">Java Concurrency in Practic》，并发领域必读经典。<br />
（2）《Java并发编程：设计原则与模式》，同样是Doug lea的作品。<br />
（3) 《java threads》，入门读物。<br />
<br />
3、web编程，这块我许久未接触了，就不推荐了，有兴趣的朋友可以补充下。<br />
<br />
四、模式与设计<br />
<br />
1、《设计模式》，GOF的经典。<br />
2、《设计模式精解》，应该有最新版，个人认为更适合入门。<br />
3、《Head first设计模式》，更轻松的入门读物。<br />
4、《企业应用架构模式》<br />
5、《分析模式——可复用对象模型》<br />
6、《面向模式的软件体系结构》，国内貌似翻译了3卷，绝对经典，可惜翻译较差。<br />
7、《重构——改善既有代码设计》,想写好代码必读。<br />
8、《重构与模式》，给我印象很深的 xml构建的例子，在我的代码里应用到了。<br />
<br />
五、方法论<br />
1、《敏捷软件开发》<br />
2、《测试驱动开发》，你不一定要TDD，但是你一定要学会做单元测试。<br />
3、《Agile Java》，也可以作为java入门读物。<br />
4、《快速软件开发》<br />
5、《面向对象分析与设计》，OO设计必读。<br />
6、《Unix编程艺术》，打开你的眼界。<br />
<br />
六、Java之外<br />
0、《代码大全》，编程的百科全书，必读。<br />
1、《unix网络编程》，学习网络编程必读书。<br />
2、《C++网络编程》上下两卷，介绍ACE的，但是其中对各种模式运用的介绍非常值的一读。<br />
3、《Joel说软件》，编程文化<br />
4、《人月神话》、《人件》<br />
5、《卓有成效的程序员》，给我很大启发的一本书。<br />
6、《程序员修炼之道》<br />
7、《计算机程序的构造与解释》，必读<br />
8、《算法导论》，可以作为参考书<br />
9、《深入理解计算机系统》<br />
10、《编译原理》龙书，最新版用java解释，我没有读完，顺便提下。<br />
<br />
</span>
<img src ="http://www.blogjava.net/noaso/aggbug/339472.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/noaso/" target="_blank">noaso</a> 2010-12-01 10:19 <a href="http://www.blogjava.net/noaso/archive/2010/12/01/339472.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FCKeditor api 详解</title><link>http://www.blogjava.net/noaso/archive/2010/11/24/338874.html</link><dc:creator>noaso</dc:creator><author>noaso</author><pubDate>Wed, 24 Nov 2010 00:42:00 GMT</pubDate><guid>http://www.blogjava.net/noaso/archive/2010/11/24/338874.html</guid><wfw:comment>http://www.blogjava.net/noaso/comments/338874.html</wfw:comment><comments>http://www.blogjava.net/noaso/archive/2010/11/24/338874.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/noaso/comments/commentRss/338874.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/noaso/services/trackbacks/338874.html</trackback:ping><description><![CDATA[<div class="cnt" id="blog_text">
<div class="cnt">
<p><font style="background-color: #c8e7cc">利用Javascript取和设FCKeditor值也是非常容易的，如下：</font></p>
<p><font style="background-color: #c8e7cc">// 获取编辑器中HTML内容<br />
function getEditorHTMLContents(EditorName) { <br />
&nbsp;&nbsp;&nbsp; var oEditor = FCKeditorAPI.GetInstance(EditorName); <br />
&nbsp;&nbsp;&nbsp; return(oEditor.GetXHTML(true)); <br />
}</font></p>
<p><font style="background-color: #c8e7cc">// 获取编辑器中文字内容<br />
function getEditorTextContents(EditorName) { <br />
&nbsp;&nbsp;&nbsp; var oEditor = FCKeditorAPI.GetInstance(EditorName); <br />
&nbsp;&nbsp;&nbsp; return(oEditor.EditorDocument.body.innerText); <br />
}</font></p>
<p><font style="background-color: #c8e7cc">// 设置编辑器中内容<br />
function SetEditorContents(EditorName, ContentStr) { <br />
&nbsp;&nbsp;&nbsp; var oEditor = FCKeditorAPI.GetInstance(EditorName) ; <br />
&nbsp;&nbsp;&nbsp; oEditor.SetHTML(ContentStr) ; <br />
}</font></p>
<p><font style="background-color: #c8e7cc">FCKeditorAPI是FCKeditor加载后注册的一个全局对象，利用它我们就可以完成对编辑器的各种操作。</font></p>
<p><font style="background-color: #c8e7cc">在当前页获得 FCK 编辑器实例：<br />
var Editor = FCKeditorAPI.GetInstance('InstanceName');</font></p>
<p><font style="background-color: #c8e7cc">从 FCK 编辑器的弹出窗口中获得 FCK 编辑器实例：<br />
var Editor = window.parent.InnerDialogLoaded().FCK;</font></p>
<p><font style="background-color: #c8e7cc">从框架页面的子框架中获得其它子框架的 FCK 编辑器实例：<br />
var Editor = window.FrameName.FCKeditorAPI.GetInstance('InstanceName');</font></p>
<p><font style="background-color: #c8e7cc">从页面弹出窗口中获得父窗口的 FCK 编辑器实例： <br />
var Editor = opener.FCKeditorAPI.GetInstance('InstanceName');</font></p>
<p><font style="background-color: #c8e7cc">获得 FCK 编辑器的内容：<br />
oEditor.GetXHTML(formatted); // formatted 为：true|false，表示是否按HTML格式取出<br />
也可用： <br />
oEditor.GetXHTML();</font></p>
<p><font style="background-color: #c8e7cc">设置 FCK 编辑器的内容：<br />
oEditor.SetHTML("content", false); // 第二个参数为：true|false，是否以所见即所得方式设置其内容。此方法常用于"设置初始值"或"表单重置"哦作。</font></p>
<p><font style="background-color: #c8e7cc">插入内容到 FCK 编辑器：<br />
oEditor.InsertHtml("html"); // "html"为HTML文本</font></p>
<p><font style="background-color: #c8e7cc">检查 FCK 编辑器内容是否发生变化：<br />
oEditor.IsDirty();</font></p>
<p><font style="background-color: #c8e7cc">在 FCK 编辑器之外调用 FCK 编辑器工具条命令：<br />
命令列表如下：<br />
DocProps, Templates, Link, Unlink, Anchor, BulletedList, NumberedList, About, Find, Replace, Image, Flash, SpecialChar, Smiley, Table, TableProp, TableCellProp, UniversalKey, Style, FontName, FontSize, FontFormat, Source, Preview, Save, NewPage, PageBreak, TextColor, BGColor, PasteText, PasteWord, TableInsertRow, TableDeleteRows, TableInsertColumn, TableDeleteColumns, TableInsertCell, TableDeleteCells, TableMergeCells, TableSplitCell, TableDelete, Form, Checkbox, Radio, TextField, Textarea, HiddenField, Button, Select, ImageButton, SpellCheck, FitWindow, Undo, Redo</font></p>
<p><font style="background-color: #c8e7cc">使用方法如下：<br />
oEditor.Commands.GetCommand('FitWindow').Execute();</font></p>
<p><font style="background-color: #c8e7cc">= FCKConfig.BasePath + 'plugins/' <br />
// FCKConfig.Plugins.Add( 'placeholder', 'en,it' ) ; </font></p>
<font style="background-color: #c8e7cc">
<p><br />
去掉//后，就相当于把placeholder这个插件功能加上了，fckeditor的插件文件都在/editor/plugins/文件夹下分类按文件夹放置的，对于fckeditor2.0来说，里面有两个文件夹，也就是有两个官方插件，placeholder这个文件夹就是我们刚才加上去的，主要用于多参数或单参数自定义标签的匹配，这个在制作编辑模板时非常管用，要想看具体实例的话，大家可以去下载acms 这个系统查看学习，另一个文件夹tablecommands就是编辑器里的表格编辑用到的了。当然，如果你想制作自己其它用途的插件，那就只要按照 fckeidtor插件的制作规则制作完放置在/editor/plugins/下就行，然后再在fckeidtor.js里再添加 FCKConfig.Plugins.Add('Plugin Name',',lang,lang');就可以了。</p>
<p>第二部分 ，如何让编辑器一打开的时候，编辑工具条不出现，等点&#8220;展开工具栏&#8221;时才出现？Easy，FCKeditor本身提供了这个功能啦，打开fckconfig.js，找到</p>
<p>FCKConfig.ToolbarStartExpanded = true ;<br />
改成<br />
FCKConfig.ToolbarStartExpanded = false ;<br />
就可以啦！</p>
<p>第三部分，使用自己的表情图标，同样打开fckcofnig.js到最底部那一段</p>
<p><br />
FCKConfig.SmileyPath = FCKConfig.BasePath + 'images/smiley/msn/' ;<br />
FCKConfig.SmileyImages = ['regular_smile.gif','sad_smile.gif','wink_smile.gif'] ;<br />
FCKConfig.SmileyColumns = 8 ;<br />
FCKConfig.SmileyWindowWidth&nbsp;&nbsp;&nbsp; = 320 ;<br />
FCKConfig.SmileyWindowHeight = 240 ;</p>
<p>上面这段已经是我修改过的了，为了我发表此文的版面不会被撑得太开，我把FCKConfig.SmileyImages那一行改得只有三个表情图了。</p>
<p>第一行，当然是表情图标路径的设置，第二行是相关表情图标文件名的一个List，第三行是指弹出的表情添加窗口最每行的表情数，下面两个参数是弹出的模态窗口的宽和高喽。</p>
<p>第四部分，文件上传管理部分</p>
<p>此部分可能是大家最为关心的，上一篇文章简单的讲了如何修改来上传文件以及使用fckeidtor2.0才提供的快速上传功能。再我们继续再深层次的讲解上传功能</p>
<p>FCKConfig.LinkBrowser = true ;<br />
FCKConfig.ImageBrowser = true ;<br />
FCKConfig.FlashBrowser = true ;在fckconfig.js找到这三句，这三句不是连着的哦，只是我把他们集中到这儿来了，设置为true的意思就是允许使用fckeditor来浏览服务器端的文件图像以及flash等，这个功能是你插入图片时弹出的窗口上那个&#8220;浏览服务器&#8221;按钮可以体现出来，如果你的编辑器只用来自己用或是只在后台管理用，这个功能无疑很好用，因为他让你很直观地对服务器的文件进行上传操作。但是如果你的系统要面向前台用户或是像blog这样的系统要用的话，这个安全隐患可就大了哦。于是我们把其一律设置为false;如下</p>
<p>FCKConfig.LinkBrowser = false ;<br />
FCKConfig.ImageBrowser = false ;<br />
FCKConfig.FlashBrowser = false ;</p>
<p>这样一来，我们就只有快速上传可用了啊，好！接下来就来修改，同样以asp为范例进行，进入/editor/filemanager/upload/asp/打开config.asp，修改<br />
ConfigUserFilesPath = "/UserFiles/"这个设置是上传文件的总目录，我这里就不动了，你想改自己改了</p>
<p>好，再打开此目录下的upload.asp文件，找到下面这一段</p>
<p><br />
Dim resourceType<br />
If ( Request.QueryString("Type") <br />
&amp;lt;&amp;gt;"" ) Then<br />
resourceType = Request.QueryString("Type")<br />
Else<br />
resourceType = "File"<br />
End If <br />
然后再在其后面添加</p>
<p><br />
ConfigUserFilesPath = ConfigUserFilesPath &amp; resourceType &amp;"/"&amp; Year(Date()) &amp;"/"&amp; Month(Date()) &amp;"/" <br />
这样的话，上传的文件就进入&#8220;/userfiles/文件类型（如image或file或flash)/年/月/&#8221;这样的文件夹下了，这个设置对单用户来用已经足够了，如果你想给多用户系统用，那就这样来改</p>
<p><br />
ConfigUserFilesPath = ConfigUserFilesPath &amp; Session("username") &amp; resourceType &amp;"/"&amp; Year(Date()) &amp;"/"&amp; Month(Date()) &amp;"/" <br />
这样上传的文件就进入&#8220;/userfiles/用户目录/文件类型/年/月/&#8221;下了，当然如果你不想这么安排也可以修改成别的，比如说用户目录再深一层等，这里的Session("username")请根据自己的需要进行修改或换掉。</p>
<p>上传的目录设置完了，但是上传程序还不会自己创建这些文件夹，如果不存在的话，上传不会成功的，那么我们就得根据上面的上传路径的要求进行递归来生成目录了。</p>
<p>找到这一段</p>
<p><br />
Dim sServerDir<br />
sServerDir = Server.MapPath( ConfigUserFilesPath )<br />
If ( Right( sServerDir, 1 ) <br />
&amp;lt;&amp;gt;"\" ) Then<br />
&nbsp;&nbsp;&nbsp; sServerDir = sServerDir &amp; "\"<br />
End If</p>
<p>把它下面的这两行</p>
<p><br />
Dim oFSO<br />
Set oFSO = Server.CreateObject( "Scripting.FileSystemObject" ) <br />
用下面这一段代码来替换</p>
<p><br />
dim arrPath,strTmpPath,intRow<br />
strTmpPath = ""<br />
arrPath = Split(sServerDir, "\") <br />
Dim oFSO<br />
Set oFSO = Server.CreateObject( "Scripting.FileSystemObject" )<br />
for intRow = 0 to Ubound(arrPath)<br />
&nbsp;&nbsp;&nbsp; strTmpPath = strTmpPath &amp; arrPath(intRow) &amp; "\"<br />
&nbsp;&nbsp;&nbsp; if oFSO.folderExists(strTmpPath)=false then<br />
&nbsp;&nbsp;&nbsp;&nbsp; oFSO.CreateFolder(strTmpPath)<br />
&nbsp;&nbsp;&nbsp; end if<br />
next <br />
用这段代码就可以生成你想要的文件夹了，在上传的时候自动生成。</p>
<p>好了，上传文件的修改到现在可以暂时告一段落了，但是，对于中文用户还存在这么个问题，就是fckeditor的文件上传默认是不改名的，同时还不支持中文文件名，这样一来是上传的文件会变成&#8220;.jpg&#8221;这样的无法读的文件，再就是会有重名文件，当然重名这点倒没什么，因为fckeditor会自动改名，会在文件名后加（1）这样来进行标识。但是，我们通常的习惯是让程序自动生成不重复的文件名</p>
<p>在刚才那一段代码的下面紧接着就是<br />
' Get the uploaded file name.<br />
sFileName = oUploader.File( "NewFile" ).Name<br />
看清楚了，这个就是文件名啦，我们来把它改掉，当然得有个生成文件名的函数才行，改成下面这样</p>
<p>'//取得一个不重复的序号<br />
Public Function GetNewID()<br />
dim ranNum<br />
dim dtNow<br />
randomize<br />
dtNow=Now()<br />
ranNum=int(90000*rnd)+10000<br />
GetNewID=year(dtNow) &amp; right("0" &amp; month(dtNow),2) &amp; right("0" &amp; day(dtNow),2) &amp; right("0" &amp; hour(dtNow),2) &amp; right("0" &amp; minute(dtNow),2) &amp; right("0" &amp; second(dtNow),2) &amp; ranNum<br />
End Function</p>
<p>' Get the uploaded file name.<br />
sFileName = GetNewID() &amp;"."&amp; split(oUploader.File( "NewFile" ).Name,".")(1)</p>
<p>这样一来，上传的文件就自动改名生成如20050802122536365.jpg这样的文件名了，是由年月日时分秒以及三位随机数组成的文件名了</p>
<p><br />
利用Javascript取和设FCKeditor值也是非常容易的，如下：</p>
<p>// 获取编辑器中HTML内容<br />
function getEditorHTMLContents(EditorName) { <br />
&nbsp;&nbsp;&nbsp; var oEditor = FCKeditorAPI.GetInstance(EditorName); <br />
&nbsp;&nbsp;&nbsp; return(oEditor.GetXHTML(true)); <br />
}</p>
<p>// 获取编辑器中文字内容<br />
function getEditorTextContents(EditorName) { <br />
&nbsp;&nbsp;&nbsp; var oEditor = FCKeditorAPI.GetInstance(EditorName); <br />
&nbsp;&nbsp;&nbsp; return(oEditor.EditorDocument.body.innerText); <br />
}</p>
<p>// 设置编辑器中内容<br />
function SetEditorContents(EditorName, ContentStr) { <br />
&nbsp;&nbsp;&nbsp; var oEditor = FCKeditorAPI.GetInstance(EditorName) ; <br />
&nbsp;&nbsp;&nbsp; oEditor.SetHTML(ContentStr) ; <br />
}</p>
<p>FCKeditorAPI是FCKeditor加载后注册的一个全局对象，利用它我们就可以完成对编辑器的各种操作。</p>
<p>在当前页获得 FCK 编辑器实例：<br />
var Editor = FCKeditorAPI.GetInstance('InstanceName');</p>
<p>从 FCK 编辑器的弹出窗口中获得 FCK 编辑器实例：<br />
var Editor = window.parent.InnerDialogLoaded().FCK;</p>
<p>从框架页面的子框架中获得其它子框架的 FCK 编辑器实例：<br />
var Editor = window.FrameName.FCKeditorAPI.GetInstance('InstanceName');</p>
<p>从页面弹出窗口中获得父窗口的 FCK 编辑器实例： <br />
var Editor = opener.FCKeditorAPI.GetInstance('InstanceName');</p>
<p>获得 FCK 编辑器的内容：<br />
oEditor.GetXHTML(formatted); // formatted 为：true|false，表示是否按HTML格式取出<br />
也可用： <br />
oEditor.GetXHTML();</p>
<p>设置 FCK 编辑器的内容：<br />
oEditor.SetHTML("content", false); // 第二个参数为：true|false，是否以所见即所得方式设置其内容。此方法常用于"设置初始值"或"表单重置"哦作。</p>
<p>插入内容到 FCK 编辑器：<br />
oEditor.InsertHtml("html"); // "html"为HTML文本</p>
<p>检查 FCK 编辑器内容是否发生变化：<br />
oEditor.IsDirty();</p>
<p>在 FCK 编辑器之外调用 FCK 编辑器工具条命令：<br />
命令列表如下：<br />
DocProps, Templates, Link, Unlink, Anchor, BulletedList, NumberedList, About, Find, Replace, Image, Flash, SpecialChar, Smiley, Table, TableProp, TableCellProp, UniversalKey, Style, FontName, FontSize, FontFormat, Source, Preview, Save, NewPage, PageBreak, TextColor, BGColor, PasteText, PasteWord, TableInsertRow, TableDeleteRows, TableInsertColumn, TableDeleteColumns, TableInsertCell, TableDeleteCells, TableMergeCells, TableSplitCell, TableDelete, Form, Checkbox, Radio, TextField, Textarea, HiddenField, Button, Select, ImageButton, SpellCheck, FitWindow, Undo, Redo</p>
<p>使用方法如下：<br />
oEditor.Commands.GetCommand('FitWindow').Execute();</p>
</font></div>
<br />
</div>
<img src ="http://www.blogjava.net/noaso/aggbug/338874.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/noaso/" target="_blank">noaso</a> 2010-11-24 08:42 <a href="http://www.blogjava.net/noaso/archive/2010/11/24/338874.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate 中createQuery与createSQLQuery两者区别</title><link>http://www.blogjava.net/noaso/archive/2010/11/09/337652.html</link><dc:creator>noaso</dc:creator><author>noaso</author><pubDate>Tue, 09 Nov 2010 09:42:00 GMT</pubDate><guid>http://www.blogjava.net/noaso/archive/2010/11/09/337652.html</guid><wfw:comment>http://www.blogjava.net/noaso/comments/337652.html</wfw:comment><comments>http://www.blogjava.net/noaso/archive/2010/11/09/337652.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/noaso/comments/commentRss/337652.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/noaso/services/trackbacks/337652.html</trackback:ping><description><![CDATA[<p><br />
前者用的hql语句进行查询，后者可以用sql语句查询<br />
前者以hibernate生成的Bean为对象装入list返回<br />
后者则是以对象数组进行存储<br />
所以使用createSQLQuery有时候也想以hibernate生成的Bean为对象装入list返回，就不是很方便<br />
突然发现createSQLQuery有这样一个方法可以直接转换对象<br />
Query query = session.createSQLQuery(sql).addEntity(XXXXXXX.class);<br />
XXXXXXX 代表以hibernate生成的Bean的对象，也就是数据表映射出的Bean。<br />
呵呵以后多注意，还是时不时的要看看hibernate各个对象方法的使用。</p>
<p>还有另外一个相关的小细节应注意：<br />
比如有这样一个po<br />
PO: User.class<br />
properties: userId,userName<br />
DDL: create table tuser (userid varchar(10),username varchar(20));<br />
当执行：<br />
&nbsp;&nbsp;&nbsp;  session.createQuery("from User u").list()时生成的SQL：<br />
select userid,username from tuser;<br />
当执行：<br />
&nbsp;&nbsp;  <br />
session.createQuery("from User u").iterator()时生成的SQL：<br />
<br />
select userid from tuser;<br />
<br />
可以看出list()一次将数据从数据库中读出直接填充到List中<br />
<br />
iterator()将数据的主键从数据库中读出，当循环这个Iterator时才添加执行：<br />
<br />
select userid,username from user where userid=?;把数据读出。<br />
在不同的应用范围使用不同的方法，具体在hibernate应用中应当注意。</p>
<p><font color="#ff0000">另外涉及到hibernate 的一级缓存 二级缓存 以后再研究。</font></p>
<img src ="http://www.blogjava.net/noaso/aggbug/337652.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/noaso/" target="_blank">noaso</a> 2010-11-09 17:42 <a href="http://www.blogjava.net/noaso/archive/2010/11/09/337652.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>正则匹配端口表达式</title><link>http://www.blogjava.net/noaso/archive/2010/11/09/337640.html</link><dc:creator>noaso</dc:creator><author>noaso</author><pubDate>Tue, 09 Nov 2010 08:31:00 GMT</pubDate><guid>http://www.blogjava.net/noaso/archive/2010/11/09/337640.html</guid><wfw:comment>http://www.blogjava.net/noaso/comments/337640.html</wfw:comment><comments>http://www.blogjava.net/noaso/archive/2010/11/09/337640.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/noaso/comments/commentRss/337640.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/noaso/services/trackbacks/337640.html</trackback:ping><description><![CDATA[<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;"> <br />
<br />
<br />
String&nbsp;regex&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">^([1-9]|[1-9]\\d{1,3}|[1-6][0-5][0-5][0-3][0-5])$</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;
<br />
<br />
<br />
</span><span style="color: #000000;"><br />
</span></div>
<img src ="http://www.blogjava.net/noaso/aggbug/337640.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/noaso/" target="_blank">noaso</a> 2010-11-09 16:31 <a href="http://www.blogjava.net/noaso/archive/2010/11/09/337640.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>