??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲色大成网站www永久,亚洲欧洲日韩极速播放,亚洲精品无码午夜福利中文字幕 http://www.tkk7.com/rosial/lost memoryzh-cnSun, 11 May 2025 06:08:01 GMTSun, 11 May 2025 06:08:01 GMT60安装j2ee找不到jre的解军_?/title><link>http://www.tkk7.com/rosial/archive/2012/07/07/382478.html</link><dc:creator>rosial</dc:creator><author>rosial</author><pubDate>Sat, 07 Jul 2012 14:07:00 GMT</pubDate><guid>http://www.tkk7.com/rosial/archive/2012/07/07/382478.html</guid><wfw:comment>http://www.tkk7.com/rosial/comments/382478.html</wfw:comment><comments>http://www.tkk7.com/rosial/archive/2012/07/07/382478.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/rosial/comments/commentRss/382478.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/rosial/services/trackbacks/382478.html</trackback:ping><description><![CDATA[换了新本Q又惌机换个新的IDEQ结果?zhn)剧出来?#8230;…<br />居然L装不了J2EEQ说找不到JRE= =<br /><br />解决Ҏ(gu)Q?br />1. 装了jdkjre之后Q设好参敎ͼ你的javahome假设是:D:\Java\jre7;<br />2. 把下载好的j2ee攑֜某个地方如d盘下Q?br />3. 在d盘下toDosQ键入:j2ee安装文g名带点exe -j "D:\Java\jre7" 回R<br /><br />q样可以成功安装了?img src ="http://www.tkk7.com/rosial/aggbug/382478.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/rosial/" target="_blank">rosial</a> 2012-07-07 22:07 <a href="http://www.tkk7.com/rosial/archive/2012/07/07/382478.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>zz - JDK 环境变量如何讄http://www.tkk7.com/rosial/articles/382475.htmlrosialrosialSat, 07 Jul 2012 12:17:00 GMThttp://www.tkk7.com/rosial/articles/382475.htmlhttp://www.tkk7.com/rosial/comments/382475.htmlhttp://www.tkk7.com/rosial/articles/382475.html#Feedback0http://www.tkk7.com/rosial/comments/commentRss/382475.htmlhttp://www.tkk7.com/rosial/services/trackbacks/382475.htmlJDK 环境变量如何讄

 

原文地址Q?/p>

http://www.cnblogs.com/pricks/archive/2009/05/28/1491346.html

 

q是讲基配置最清楚的一,适合拿来发给新新手看Q不用再多花一U钟教啦~

  首先右键Ҏ(gu)的电(sh)脑。打开属性。然后选择“高”里面?#8220;环境变量”Q在新的打开界面中的pȝ变量里需要设|?/span>
三个属?#8220;java_home”?#8220;path”?#8220;classpath”,其中在没安装qjdk的环境下Qpath属性是本来存在的。?/span>
java_home和classpath是不存在的?/span>
首先?#8220;新徏”Q然后在变量名写上java_homeQ顾名其意该变量的含义就是java的安装\径,呵呵Q?/span>
然后在变量值写入刚才安装的路径“E:\Java\jdk1.6.0_02”Q?/span>
其次在系l变量里面找到pathQ然后点~辑Qpath变量的含义就是系l在M路径下都可以识别java命oQ则变量gؓ
“%java_home%\bin;%java_home%\jre\bin”Q?其中“%java_home%”的意思ؓ刚才讄java_home的|Q也可以直接?/span>
?#8220;E:\Java\jdk1.6.0_02”Q?/span>
最后再?#8220;新徏”Q然后在变量名上写classpath,该变量的含义是ؓjava加蝲c?class or lib)路径Q只有类
在classpath中,java命o才能识别。其gؓ“.;%java_home%\lib;%java_home%\lib\tools.jar (要加.表示当前路径)”Q?/span>
?#8220;%java_home%有相同意?#8221;

以上三个变量讄完毕Q则?#8220;定”直至属性窗口消失,下来是验证看看安装是否成功。先打开“开?#8221;->“q行”Q?/span>
打入“cmd”Q进入dospȝ界面。然后打“java -version”Q如果安装成功。系l会昄java的版本信息?/span>

  另外安装javaӞ安装jdk ?jre要有两个目录Q安装时都选择在同一目录会出现bin和lib文g覆盖现象Q从而出?/span>
无lib\tools.jar文g的现象,到时即正确讄了环境变量后javac也不可用Q!因此安装jdk后一定要看下在jdk\lib下是
否有tools.jar文gQ有的话按照上面的方法设|环境变量就ok?


1?变量名ؓJAVA_HOMEQ内容ؓ"q里面写你的jdk的安装后的绝对\?
2?变量名ؓCLASSQ内容ؓ".;%JAVA_HOME%\jib\tools.jar" 注意Q内定w面的那个是分P不是冒号Q它前面的是炏V?
3? 变量名ؓPathQ?内容?;%JAVA_HOME%\bin" 注意Q内定w面的那个是分Pq有q个变量名已l存在,你只需在内容的最后面d卛_Q也是_q个环境你只需~辑Q而不用像前面那样新增Q;q且q个 变量你一定不要改动里面原先存在的内容Q动了的话,有可能系l启动不了,也有可能你的某个软g不能启动?/div>
http://www.cnblogs.com/chenzhao/articles/2090322.html


所谓环境变量可以这L(fng)解,把操作系l理解ؓ一个^常的pȝQ它当调用一个api接口的时候,需要输入参敎ͼ像我们写java代码一栗?br />
但我们也知道Q一个功能不可能只有一U方法。除了设|环境变量来传递参C外,q可以有其他的办法,Jdk5及以后的版本采取了其它的做法?br />
当然Q你不是安装的JDK,而是拯的别人已安装好的Q就需要配|环境变量了?br />
如果你^旉是用eclipse{IDE来写代码Q而不是文本文Ӟ只需要在eclipse里面配置p了?br />
再说说JDK与JRE的却别,很多人都不知道?br />
JDK是用来编译是用来调用的库Q比如java.lang,java.util{都在JDK里面?br />JRE是用来解释的调用的。如果你是一个用P你只需要安装JREp?br />如果你是开发者,你只需要安装JDK?br />JDK里面包含了jre,你可以去JDK的目录下面看看,不是有个JRE吗?

那你_你配|环境变量是~译的时候用Q还是用来解释的时候用的?



rosial 2012-07-07 20:17 发表评论
]]>
zz - 4用戶端安?4-3偉|Ҏ(gu)與工?分析Ҏ(gu):webscarab介紹http://www.tkk7.com/rosial/articles/381628.htmlrosialrosialWed, 27 Jun 2012 08:39:00 GMThttp://www.tkk7.com/rosial/articles/381628.htmlhttp://www.tkk7.com/rosial/comments/381628.htmlhttp://www.tkk7.com/rosial/articles/381628.html#Feedback0http://www.tkk7.com/rosial/comments/commentRss/381628.htmlhttp://www.tkk7.com/rosial/services/trackbacks/381628.html
原文地址Q?/span>
http://knowledge.twisc.ntust.edu.tw/doku.php?id=4%E7%94%A8%E6%88%B6%E7%AB%AF%E5%AE%89%E5%85%A8:4-3%E5%81%B5%E6%B8%AC%E6%96%B9%E6%B3%95%E8%88%87%E5%B7%A5%E5%85%B7:%E5%88%86%E6%9E%90%E6%96%B9%E6%B3%95:webscarab%E4%BB%8B%E7%B4%B9

WebScarab
  • 象Q?/strong> E式a計?資訊安全人員
  • 難易度: ★★★☆☆
  • 技術新舊: 2010q?/div>
  • p時間Q?/strong> 30分鐘

預備知識

  • HTTP通訊協定

  WebScarab是個分析用HTTP和HTTPS通訊協定的應用程式。允a׃用者檢查和修改瀏覽器發?Request)iServer的請求和Server回傳(Responses)i瀏覽器的a息?/p>

說明

  WebScarab有許多的功能Q先單介紹WebScarab如何攔截和修改經由HTTP/S所發送的Requests和Response?nbsp;
(圖一)

  上圖?span style="padding: 0px; margin: 0px; background-color: #ffff99; ">WebScarab開啟後的畫面Q首先介紹Summary。Summary分成兩個部分,上半部䆾會以樹狀示a問的站點有哪些。下半部份是以表格呈N過WebScarab所有的會話內容Q通常以ID遞減排列Q所以靠q表格頂部的是最q的會話?br style="padding: 0px; margin: 0px; " />  Z要?span style="padding: 0px; margin: 0px; background-color: #ffff99; ">WebScarabQ需要到IE的網際網路選項,M改Proxy的設定。點選「網際網路選項?#8594;「連線?#8594;「區域網路設定」,N使用Proxy伺服器,在位址輸入“localhost”Q連接埠?#8220;8008”?span style="padding: 0px; margin: 0px; background-color: #ffff99; ">WebScarab預設使用localhost?008port做為其ProxyQ此a定會讓IErequests傳送到WebScarab?br style="padding: 0px; margin: 0px; " />  接著回到IE瀏覽器,並開?span style="padding: 0px; margin: 0px; background-color: #ffff99; ">WebScarabQ連接CQ一E站Q就可看到圖一的畫面。你可以看到URL樹,以顯C曾E過WebScarab的所有會話。點擊下方窗口資料表的Q一行,會彈Z個視H,示此會p細的資料?br style="padding: 0px; margin: 0px; " />


(圖二)

  接下來介?span style="padding: 0px; margin: 0px; background-color: #ffff99; ">WebScarab如例攔截請求並在它們發送Server前對光行修改?br style="padding: 0px; margin: 0px; " />  點選WebScarab上Proxy頁面Q選擇Manual Edit頁面Q勾選「Intercept Requests」,然後選擇要攔截的項目Q先?#8220;POST”做為例?br style="padding: 0px; margin: 0px; " />
(圖三)

  然後回到瀏覽器,隨便點擊M按鍵Q例如在Gmail的登入畫面按d。這時可以看?span style="padding: 0px; margin: 0px; background-color: #ffff99; ">WebScarab在工作列閃爍Q顯C有新視H產生。點選新視窗會看到以下畫面?nbsp;

(圖四)

  你可以看到剛才入的使用者名E及密碼Q接著,可以在此視H編輯此Request的Q何部份了。編輯完畢後Q點?#8220;Accept changes”會?yu)修改後的Request傳送到Server。若是希望取消此ơ編輯,點?#8220;Cancel changes”。若是不惛_送此一Request到ServerQ就點擊“Abort request”。或是想一ơ將全部的攔截視H都關閉Q可選擇“Cancel All intercepts”?br style="padding: 0px; margin: 0px; " />  WebScarab會一直攔截所有符合指定方式的RequestQ直到取消「Intercept Requests」?br style="padding: 0px; margin: 0px; " />

作?/a>

2011/03/014 江E?整理 

參考資?/a>



rosial 2012-06-27 16:39 发表评论
]]>
zz - 六种异常处理的陋?/title><link>http://www.tkk7.com/rosial/articles/371337.html</link><dc:creator>rosial</dc:creator><author>rosial</author><pubDate>Tue, 06 Mar 2012 06:51:00 GMT</pubDate><guid>http://www.tkk7.com/rosial/articles/371337.html</guid><wfw:comment>http://www.tkk7.com/rosial/comments/371337.html</wfw:comment><comments>http://www.tkk7.com/rosial/articles/371337.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/rosial/comments/commentRss/371337.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/rosial/services/trackbacks/371337.html</trackback:ping><description><![CDATA[<div><p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; margin-bottom: 14px; color: #000000; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 19px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: #ffffff; "><br /></p><p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; margin-bottom: 14px; color: #000000; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 19px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: #ffffff; ">你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机Ӟ在下面这D代码中Q你能够q速找出异常处理的六个问题吗? <br /><br /></p><table style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: #ffffff; " align="center" bgcolor="#dadacf" border="1" width="90%"><tbody><tr><td style="font-size: 12px; ">1 OutputStreamWriter out = ... <br />2 java.sql.Connection conn = ... <br />3 try { // ⑸ <br />4  Statement stat = conn.createStatement(); <br />5  ResultSet rs = stat.executeQuery( <br />6   "select uid, name from user"); <br />7  while (rs.next()) <br />8  { <br />9   out.println("IDQ? + rs.getString("uid") // ⑹ <br />10    "Q姓名:" + rs.getString("name")); <br />11  } <br />12  conn.close(); // ⑶ <br />13  out.close(); <br />14 } <br />15 catch(Exception ex) // ⑵ <br />16 { <br />17  ex.printStackTrace(); //⑴Q?#9335; <br />18 }</td></tr></tbody></table><p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; margin-bottom: 14px; color: #000000; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 19px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: #ffffff; "><br />  作ؓ一个JavaE序员,你至应该能够找Z个问题。但是,如果你不能找出全部六个问题,L(fng)l阅L文?nbsp;<br /><br />  本文讨论的不是Java异常处理的一般性原则,因ؓq些原则已经被大多数人熟知。我们要做的是分析各U可UCؓ“反例”Qanti-patternQ的q背优秀~码规范的常见坏习惯Q帮助读者熟(zhn)这些典型的反面例子Q从而能够在实际工作中敏锐地察觉和避免这些问题?nbsp;<br /><br />  <strong>反例之一Q丢弃异?nbsp;</strong><br /><br />  代码Q?5?18行?nbsp;<br /><br />  q段代码捕获了异常却不作M处理Q可以算得上Java~程中的杀手。从问题出现的频J程度和害E度来看Q它也许可以和C/C++E序的一个恶名远播的问题相提q论??不检查缓冲区是否已满。如果你看到了这U丢弃(而不是抛出)异常的情况,可以癑ֈ之九(ji)十九(ji)地肯定代码存在问题(在极数情况下,q段代码有存在的理由Q但最好加上完整的注释Q以免引起别解)?nbsp;<br /><br />  q段代码的错误在于,异常Q几乎)L意味着某些事情不对劲了Q或者说臛_发生了某些不d的事情,我们不应该对E序发出的求救信号保持沉默和无动于衷。调用一下printStackTrace不?#8220;处理异常”。不错,调用printStackTrace对调试程序有帮助Q但E序调试阶段l束之后QprintStackTrace׃应再在异常处理模块中担负主要责Q了?nbsp;<br /><br />  丢弃异常的情形非常普遍。打开JDK的ThreadDeathcȝ文档Q可以看C面这D说明:“特别圎ͼ虽然出现ThreadDeath是一U?#8216;正常的情?#8217;Q但ThreadDeathcLError而不是Exception的子c,因ؓ许多应用会捕h有的Exception然后丢弃它不再理睬?#8221;q段话的意思是Q虽然ThreadDeath代表的是一U普通的问题Q但鉴于许多应用会试图捕h有异常然后不予以适当的处理,所以JDK把ThreadDeath定义成了Error的子c,因ؓErrorcM表的是一般的应用不应该去捕获的严重问题。可见,丢弃异常q一坏习惯是如此常见Q它甚至已经影响CJava本n的设计?nbsp;<br /><br />  那么Q应该怎样Ҏ(gu)呢?主要有四个选择Q?nbsp;<br /><br />  1、处理异常。针对该异常采取一些行动,例如修正问题、提醒某个h或进行其他一些处理,要根据具体的情Ş定应该采取的动作。再ơ说明,调用printStackTrace不上已l?#8220;处理好了异常”?nbsp;<br /><br />  2、重新抛出异常。处理异常的代码在分析异怹后,认ؓ自己不能处理它,重新抛出异常也不׃ؓ一U选择?nbsp;<br /><br />  3、把该异常{换成另一U异常。大多数情况下,q是指把一个低U的异常转换成应用的异常(其含义更Ҏ(gu)被用户了解的异常Q?nbsp;<br /><br />  4、不要捕获异常?nbsp;<br /><br />  l论一Q既然捕获了异常Q就要对它进行适当的处理。不要捕获异怹后又把它丢弃Q不予理睬?nbsp;<br /><br />  <strong>反例之二Q不指定具体的异?nbsp;</strong><br /><br />  代码Q?5行?nbsp;<br /><br />  许多时候h们会被这样一U?#8220;妙?#8221;x吸引Q用一个catch语句捕获所有的异常。最常见的情形就是用catch(Exception ex)语句。但实际上,在绝大多数情况下Q这U做法不值得提倡。ؓ什么呢Q?nbsp;<br /><br />  要理解其原因Q我们必d一下catch语句的用途。catch语句表示我们预期会出现某U异常,而且希望能够处理该异常。异常类的作用就是告诉Java~译器我们想要处理的是哪一U异常。由于绝大多数异帔R直接或间接从java.lang.ExceptionzQcatch(Exception ex)q当于说我们想要处理几乎所有的异常?nbsp;<br /><br />  再来看看前面的代码例子。我们真正想要捕L(fng)异常是什么呢Q最明显的一个是SQLExceptionQ这是JDBC操作中常见的异常。另一个可能的异常是IOExceptionQ因为它要操作OutputStreamWriter。显Ӟ在同一个catch块中处理q两U截然不同的异常是不合适的。如果用两个catch块分别捕获SQLException和IOExceptionp好多了。这是_catch语句应当量指定具体的异常类型,而不应该指定늛范围太广的ExceptioncR?nbsp;<br /><br />  另一斚wQ除了这两个特定的异常,q有其他许多异常也可能出现。例如,如果׃某种原因QexecuteQueryq回了nullQ该怎么办?{案是让它们l箋抛出Q即不必捕获也不必处理。实际上Q我们不能也不应该去捕获可能出现的所有异常,E序的其他地方还有捕获异常的Z??直至最后由JVM处理?nbsp;<br /><br />  l论二:在catch语句中尽可能指定具体的异常类型,必要时用多个catch。不要试囑֤理所有可能出现的异常?nbsp;<br /><br />  <strong>反例之三Q占用资源不释放 </strong><br /><br />  代码Q??14行?nbsp;<br /><br />  异常改变了程序正常的执行程。这个道理虽然简单,却常常被Z忽视。如果程序用C文g、Socket、JDBCq接之类的资源,即遇到了异常,也要正确释放占用的资源。ؓ此,Java提供了一个简化这cL作的关键词finally?nbsp;<br /><br />  finally是样好东西:不管是否出现了异常,Finally保证在try/catch/finally块结束之前,执行清理d的代码L有机会执行。遗憄是有些h却不习惯使用finally?nbsp;<br /><br />  当然Q编写finally块应当多加小心,特别是要注意在finally块之内抛出的异常??q是执行清理d的最后机会,量不要再有难以处理的错误?nbsp;<br /><br />  l论三:保证所有资源都被正释放。充分运用finally关键词?/p><p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; margin-bottom: 14px; color: #000000; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 19px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: #ffffff; "><strong>反例之四Q不说明异常的详l信?nbsp;<br /><br /></strong>  代码Q??18行?nbsp;<br /><br />  仔细观察q段代码Q如果@环内部出C异常Q会发生什么事情?我们可以得到_的信息判断@环内部出错的原因吗?不能。我们只能知道当前正在处理的cd生了某种错误Q但却不能获得Q何信息判断导致当前错误的原因?nbsp;<br /><br />  printStackTrace的堆栈跟t功能显C出E序q行到当前类的执行流E,但只提供了一些最基本的信息,未能说明实际D错误的原因,同时也不易解诅R?nbsp;<br /><br />  因此Q在出现异常Ӟ最好能够提供一些文字信息,例如当前正在执行的类、方法和其他状态信息,包括以一U更适合阅读的方式整理和l织printStackTrace提供的信息?nbsp;<br /><br />  l论四:在异常处理模块中提供适量的错误原因信息,l织错误信息使其易于理解和阅诅R?nbsp;<br /><br />  <strong>反例之五Q过于庞大的try?nbsp;</strong><br /><br />  代码Q??14行?nbsp;<br /><br />  l常可以看到有h把大量的代码攑օ单个try块,实际上这不是好习惯。这U现象之所以常见,原因在于有些h囄事,不愿花时间分析一大块代码中哪几行代码会抛出异常、异常的具体cd是什么。把大量的语句装入单个巨大的try块就象是出门旅游时把所有日常用品塞入一个大子Q虽然东西是带上了,但要扑և来可不容易?nbsp;<br /><br />  一些新手常常把大量的代码放入单个try块,然后再在catch语句中声明ExceptionQ而不是分d个可能出现异常的D落q分别捕获其异常。这U做法ؓ分析E序抛出异常的原因带来了困难Q因Z大段代码中有太多的地方可能抛出Exception?nbsp;<br /><br />  l论五:量减小try块的体积?nbsp;<br /><br />  <strong>反例之六Q输出数据不完整</strong> <br /><br />  代码Q??11行?nbsp;<br /><br />  不完整的数据是JavaE序的隐形杀手。仔l观察这D代码,考虑一下如果@环的中间抛出了异常,会发生什么事情。@环的执行当然是要被打断的Q其ơ,catch块会执行??p些,再也没有其他动作了。已l输出的数据怎么办?使用q些数据的h或设备将收到一份不完整的(因而也是错误的Q数据,却得不到M有关q䆾数据是否完整的提C。对于有些系l来_数据不完整可能比pȝ停止q行带来更大的损失?nbsp;<br /><br />  较ؓ理想的处|办法是向输备写一些信息,声明数据的不完整性;另一U可能有效的办法是,先缓冲要输出的数据,准备好全部数据之后再一ơ性输出?nbsp;<br /><br />  l论六:全面考虑可能出现的异总及这些异常对执行程的媄响?nbsp;<br /><br />  <strong>改写后的代码</strong> <br /><br />  Ҏ(gu)上面的讨论,下面l出改写后的代码。也许有Z说它E微有点?嗦,但是它有了比较完备的异常处理机制?nbsp;<br /><br /></p><table align="center" bgcolor="#dadacf" border="1" width="90%"><tbody><tr><td style="font-size: 12px; ">OutputStreamWriter out = ... <br />java.sql.Connection conn = ... <br />try { <br /> Statement stat = conn.createStatement(); <br /> ResultSet rs = stat.executeQuery( <br />  "select uid, name from user"); <br /> while (rs.next()) <br /> { <br />  out.println("IDQ? + rs.getString("uid") + "Q姓? " + rs.getString("name")); <br /> } <br />} <br />catch(SQLException sqlex) <br />{ <br /> out.println("警告Q数据不完整"); <br /> throw new ApplicationException("d数据时出现SQL错误", sqlex); <br />} <br />catch(IOException ioex) <br />{ <br /> throw new ApplicationException("写入数据时出现IO错误", ioex); <br />} <br />finally <br />{ <br /> if (conn != null) { <br />  try { <br />   conn.close(); <br />  } <br />  catch(SQLException sqlex2) <br />  { <br />   System.err(this.getClass().getName() + ".mymethod - 不能关闭数据库连? " + sqlex2.toString()); <br />  } <br /> } <br /><br /> if (out != null) { <br />  try { <br />   out.close(); <br />  } <br />  catch(IOException ioex2) <br />  { <br />   System.err(this.getClass().getName() + ".mymethod - 不能关闭输出文g" + ioex2.toString()); <br />  } <br /> } <br />}</td></tr></tbody></table><br />  本文的结Z是放之四L(fng)准的教条Q有时常识和l验才是最好的老师。如果你对自q做法没有癑ֈ之百的信心,务必加上详细、全面的注释?nbsp;<br /><br />  另一斚wQ不要笑话这些错误,不妨问问你自己是否真地彻底摆׃q些坏习惯。即使最有经验的E序员偶?dng)也会误入歧途,原因很简单,因ؓ它们确实实带来?#8220;方便”。所有这些反例都可以看作Java~程世界的恶,它们丽动hQ无孔不入,时刻诱惑着你。也许有Z认ؓq些都属于鸡皮蒜毛的事Q不x齿,但请CQ勿以恶而ؓ之,勿以善小而不为?p><br /></p></div><img src ="http://www.tkk7.com/rosial/aggbug/371337.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/rosial/" target="_blank">rosial</a> 2012-03-06 14:51 <a href="http://www.tkk7.com/rosial/articles/371337.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>zz - Java (StreamQ简介:1、基本的输入和输出?/title><link>http://www.tkk7.com/rosial/articles/371154.html</link><dc:creator>rosial</dc:creator><author>rosial</author><pubDate>Fri, 02 Mar 2012 12:20:00 GMT</pubDate><guid>http://www.tkk7.com/rosial/articles/371154.html</guid><wfw:comment>http://www.tkk7.com/rosial/comments/371154.html</wfw:comment><comments>http://www.tkk7.com/rosial/articles/371154.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/rosial/comments/commentRss/371154.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/rosial/services/trackbacks/371154.html</trackback:ping><description><![CDATA[     摘要: 原作者ؓcsdn上的 YidingHehttp://blog.csdn.net/YidingHe本h打算写几文章,介绍一下流。本文是针对初学者的Q加上本人水qx限,所以不敢说写得很高深。如果你是初学者,而且Ҏ(gu)q个东西很头|你就应该看看q个?nbsp;本文发表在:http://blog.csdn.net/YidingHeQ{载请保留出处?nbsp;  是 Java ?..  <a href='http://www.tkk7.com/rosial/articles/371154.html'>阅读全文</a><img src ="http://www.tkk7.com/rosial/aggbug/371154.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/rosial/" target="_blank">rosial</a> 2012-03-02 20:20 <a href="http://www.tkk7.com/rosial/articles/371154.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>zz - 谈自动化试与CI中一些常见的谬见http://www.tkk7.com/rosial/articles/371078.htmlrosialrosialThu, 01 Mar 2012 06:38:00 GMThttp://www.tkk7.com/rosial/articles/371078.htmlhttp://www.tkk7.com/rosial/comments/371078.htmlhttp://www.tkk7.com/rosial/articles/371078.html#Feedback0http://www.tkk7.com/rosial/comments/commentRss/371078.htmlhttp://www.tkk7.com/rosial/services/trackbacks/371078.htmlflybird88转自Q?div>http://blog.sina.com.cn/s/blog_5399c78401011kft.html
现在对于自动化测试与CI往往有一些很常见的谬见,包括一些专门从事相兛_作的人都未必清楚。在实际的工作中感触颇深Q所以想撰文讨论一下?/span>
W一Q自动化试是lCI服务的,或者自动化试不太能发现问题?/span>
持有q种观点的hQ徏议他们去看看Google或者Microsoft的相x试研I的文章Q或者GTACQ?Google Test Automation Conference),也许可以拓宽我们考虑q个问题的思\?/span>
他们的测试对象是搜烦引擎Qv量的数据库信息,或者提供的各种服务Q比如Google MapQNavigation。他们研I的是搜索引擎对于v量的数据库处理v来是否有效,搜烦l果是否准确 ?/span>

下面丑և个例子:
比如Google会提供一U?‘Auto Completion'的功能,你只要在搜烦框里敲入一个词Qgoogle会根据与q个词的相关性大,以及该关键词被搜索的热度Q自动补全一些关键词Qƈ提示l你。这P你就可以参考或者直接用别h的搜索条件。那大家有没有考虑q,q种功能应该如何试呢?
q有DpȝQ怎么保从A点到BҎ(gu)出来的\径都是正的呢?而不是说你要找一个当地的馆Q导航却告诉你要来一ơ跨国旅行呢Q?/span>

面对q些量的测试数据,q且基本上也无法预先l不同的试数据定义好期望的试l果。所以他们无法采用我们这L(fng)静态的自动化测试,而且通常Manual Testing也无法帮助他们解决问题, 他们必须采用动态的大规模的自动化测试,或者叫计算计辅助测试?/span>


他们的做法就是采取一U叫HBT( Heuristics Based TestingQ的技术,试工程师找Z些测试是否成功的判断法则Q而不是像传统的自动化试一定要明确规定静态的期望l果Qƈ把这U判断规则用代码实现?/span>
通过q种Ҏ(gu)Q再加上一些ƈ行的试技术,他们也许一天可上千万个caseQƈ且在一U判断法则已l不太能有效地发现问题的时候,可以随时调整或者寻找新的判断成功与否的法则?/span>
而寻?“试是否成功的判断法?#8221;Q也是常说的Test Oracle的时?则很cM传统手工试做manual exploratory testing的过E。测试h员做手工试的时候,不是重复地去敲键盘,炚w标,而是Lpȝ的失效模型,然后利用自动化测试技术实玎ͼq把q个失效模型攑֤到尽可能大的范围?q部分工作,往往是测试工作中最有意思,最有创造性,往往也是最考测试h员功力的?/span>
我曾l看q一个他们的例子QMicrosoft 的Principal Test Engineer写的Q他们用q种Ҏ(gu)Q一天执行了2200万个试用例Q发C20多个可能的问题,然后和相关stakeholder讨论?/span>
从上面的例子可以看到QTest Automation其实完全不受限于CIq种模式的下的测试,完全可以借助自动化测试的手段来做Exploratory Testing.
W二QCI中的试一定要保证试的全覆盖?/span>
  首先Q测试的全覆盖本来就是一个伪命题Q从来也没有一U测试可以做到全覆盖。测试h员要解决的是在测试设备有限,试人员有限Q测试时间也有限的情况下Q如何能够让l织在测试的投入上,辑ֈ最高的ROI?/span>
  然后回到CIQ我们来看一下CI的目的到底是什么?/span>
在传l的开发模式下QY件组l在Integration的时候往往会发现模块的接口定义或者理解有不一_然后需要返工,甚至因此要改模块的内部设计。在各个模块都各自完成以后,惌他们在一赯工作Q给客户提供一个完整的功能Q往往q要{待很长的时?/span>
既然集成q么ȝQ那我们提倡尽早集?快试Q以期待快发现问题。同时开发h员在实现代码的时候,如果能够快l他们的实现提供反馈Q这对他们避免在后来的开发中犯同L(fng)错误Q也是非帔R要的。如果这U反馈的成本比较低,那我们就可以让这U反馈尽可能频繁?/span>
具体来说Q如果让可能多的测试都自动化了Q那我们在降低反馈的成本上就走出了第一步,也是非常重要的一步?/span>
但是大家要思考一下,反馈的速度Q频率和反馈的h(hun)值是不是完全{同Q?/span>
开发h员的开发过E其实就是一个不断犯错误Q又不断U正的过E?/span>
比如说IDE会频J告诉他们的一些语法错误,然后在编译链接的时候又会发C些问题,然后在执行UT的时候又会发C些问题,然后在后面的Smoke TestingQFunction TestingQSystem Testing又会得到一些反馈,然后从最l的客户那里会得到更q一步的反馈?/span>
随着软g技术的发展Q比如更好的IDEQ更好的UTQ更好的自动化测试,开发h员在不断地降低得到反馈的成本Q提高反馈的效率。但是,我们可以问问周边的开发h员,特别是那些资q开发h员,在他们的开发生涯中Q让他们印象最q一个BugQ是怎么发现的?
我会怀疑让开发h员得到的一个印象很qBugQ一个真正有价值的反馈Q往往是一个好的测试h员给他的?/span>
在我们的l织里,一个好的测试h员是很受开发h员尊重的Q因Z不光光是发现产品Bug那么单,他还不断地给开发h员提供有价值的反馈Q不断地让开发h员以该更加周全思\来考虑问题Q也促开发h员不断地成长?/span>

但是CI模式下完全依赖机器的执行Q不人的介入的自动化试Q会是给开发h员提供反馈的唯一途径吗?
通过我们的经验来看:
1. 有些team抱怨这U模式的试Q我们也叫CRT( Continuous Regression Test)基本发现不了软g问题?/span>
2. 个别Team的经验是CRT可以帮助他们发现很多问题Q但估计和模块工作的领域有关Q比如该模块本n是问题比较多的模块?/span>
3.即便是上q第2U情늚模块Q也发现许多软g深层ơ的问题Q比如一些设计上考虑不太周到的地方,往往也是一些Senior Tester才能发现的?/span>
4.往往一个测试中发现的问题,在另外一些测试用例里面会被重复发现。意味着我们的测试用例发现问题的能力往往是有冗余的?/span>


在这U情况下Q再在CI的模式下要保证测试的全覆盖,我们来看一下会l我们带来什么?/span>
首先Q你的测试用例越加越多,你的试周期势必来长Q也无法给他们提供及时的反馈。而CI的精华之一是l开发h员提供及时的反馈?/span>
其二, 如果你考虑q行试的话Q势必要增大试讑֤的投入。在?sh)信领域Q测试设备往往是很늚Q往往比请几个试人员q贵。当你的自动化测试不能持l给开发h员提供有价值和有深度的反馈Q你q不断要求管理层l你加大试的投入,往往也是不现实的。根据我们的l验Q很多采用静态测试技术的自动化项目,往往都会到cM的问题?/span>

所以CI天生是用来解决Integration的问题的Q因为IntegrationlY件开发带来了很多的问题,是开发工作中很大的一个bottleneckQ所以采取了Continuous Integration的方式去做。而Test Coverage则是试中另外一个很难解决的问题Q意指在试阶段可能保证全面的试覆盖Q以避免软gDeploy到客L(fng)场,被客户发现问题。CI作ؓ一U很好的PracticeQ应该被我们很好地应用,但是如果片面q求CI的Test CoverageQ反而有可能会失掉CI本n的优ѝ?/span>


rosial 2012-03-01 14:38 发表评论
]]>
Violations(多数内容来自他hblog与论坛讨?http://www.tkk7.com/rosial/archive/2012/02/27/370865.htmlrosialrosialMon, 27 Feb 2012 10:43:00 GMThttp://www.tkk7.com/rosial/archive/2012/02/27/370865.htmlhttp://www.tkk7.com/rosial/comments/370865.htmlhttp://www.tkk7.com/rosial/archive/2012/02/27/370865.html#Feedback0http://www.tkk7.com/rosial/comments/commentRss/370865.htmlhttp://www.tkk7.com/rosial/services/trackbacks/370865.html阅读全文

rosial 2012-02-27 18:43 发表评论
]]>
maven的一些问?/title><link>http://www.tkk7.com/rosial/archive/2012/02/22/370536.html</link><dc:creator>rosial</dc:creator><author>rosial</author><pubDate>Wed, 22 Feb 2012 10:39:00 GMT</pubDate><guid>http://www.tkk7.com/rosial/archive/2012/02/22/370536.html</guid><wfw:comment>http://www.tkk7.com/rosial/comments/370536.html</wfw:comment><comments>http://www.tkk7.com/rosial/archive/2012/02/22/370536.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/rosial/comments/commentRss/370536.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/rosial/services/trackbacks/370536.html</trackback:ping><description><![CDATA[<div>.m2\repository\com\公司目</div>清除以上文g夹的内容Q再重新打包Q可以解军_部分莫名其妙的包找不到的问题?br /><br />在eclipse里导入项目,enable maven有时会不用Q仍然找不到dependency。需要在目pom同的directory下找?#8220;.classpath”文gQ手动加入maven?#8220;<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>”。这是由于eclipse的bugD的?img src ="http://www.tkk7.com/rosial/aggbug/370536.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/rosial/" target="_blank">rosial</a> 2012-02-22 18:39 <a href="http://www.tkk7.com/rosial/archive/2012/02/22/370536.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sonar 在maven project下的安装与运?/title><link>http://www.tkk7.com/rosial/archive/2012/01/16/368609.html</link><dc:creator>rosial</dc:creator><author>rosial</author><pubDate>Mon, 16 Jan 2012 11:59:00 GMT</pubDate><guid>http://www.tkk7.com/rosial/archive/2012/01/16/368609.html</guid><wfw:comment>http://www.tkk7.com/rosial/comments/368609.html</wfw:comment><comments>http://www.tkk7.com/rosial/archive/2012/01/16/368609.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/rosial/comments/commentRss/368609.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/rosial/services/trackbacks/368609.html</trackback:ping><description><![CDATA[     摘要: 1. 下蝲sonarQhttp://www.sonarsource.org/downloads/2. 随便攑ֈ一个地方,解压卛_。做为winXP32的用P直接qsonar-2.12\bin\windows-x86-32文g夹,run StartSonar.bat 。电(sh)脑情况像我一h催的用户多等一会儿Q不要急于下一步,有可能导致出错?. 保你的project是maven的(ant{?..  <a href='http://www.tkk7.com/rosial/archive/2012/01/16/368609.html'>阅读全文</a><img src ="http://www.tkk7.com/rosial/aggbug/368609.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/rosial/" target="_blank">rosial</a> 2012-01-16 19:59 <a href="http://www.tkk7.com/rosial/archive/2012/01/16/368609.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>zz - JAVA SSH 框架介绍http://www.tkk7.com/rosial/articles/365509.htmlrosialrosialSun, 04 Dec 2011 09:34:00 GMThttp://www.tkk7.com/rosial/articles/365509.htmlhttp://www.tkk7.com/rosial/comments/365509.htmlhttp://www.tkk7.com/rosial/articles/365509.html#Feedback0http://www.tkk7.com/rosial/comments/commentRss/365509.htmlhttp://www.tkk7.com/rosial/services/trackbacks/365509.html
原帖地址Q?span class="Apple-style-span" style="font-size: 12.5px; ">http://hi.baidu.com/hahalgj/blog/item/5d773647067846056a63e556.html


JAVA SSH框架在Struts + Spring + Hibernate的组合框架模式中Q三者各自的特点都是什么? 

Struts 的MVC设计模式可以使我们的逻辑变得很清晰?nbsp;
Spring 的IOC和AOP可以使我们的产品在最大限度上解藕?nbsp;
hibernate的当然就是实体对象的持久化了 

典型的J2EE三层l构Q分现层、中间层Q业务逻辑层)和数据服务层。三层体pd业务规则、数据访问及合法性校验等工作攑֜中间层处理。客L(fng)不直接与数据库交互,而是通过lg与中间层建立q接Q再׃间层与数据库交互?nbsp;

表现层是传统的JSP技术,?999q问世以来,l过多年的发展,其广泛的应用和稳定的表现Qؓ其作现层技术打下了坚实的基?nbsp;

中间层采用的是流行的Spring+HibernateQؓ了将控制层与业务逻辑层分,又细分ؓ以下几种?nbsp;

Web层,是MVC模式里面?#8220;C”QcontrollerQ,负责控制业务逻辑层与表现层的交互Q调用业务逻辑层,q将业务数据q回l表现层作组l表玎ͼ该系l的MVC框架采用Struts?nbsp;

Service层(是业务逻辑层)Q负责实C务逻辑。业务逻辑层以DAO层ؓ基础Q通过对DAOlg的正面模式包装,完成pȝ所要求的业务逻辑?nbsp;

DAO层,负责与持久化对象交互。该层封装了数据的增、删、查、改的操作?nbsp;

POQ持久化对象。通过实体关系映射工具关pd数据库的数据映射成对象,很方便地实现以面向对象方式操作数据库Q该pȝ采用Hibernate作ؓORM框架?nbsp;

Spring的作用诏I了整个中间层,Web层、Service层、DAO层及PO无缝整合Q其数据服务层用来存放数据?nbsp;

一个良好的框架可以让开发h员减轻重新徏立解军_杂问题方案的负担和精?它可以被扩展以进行内部的定制?q且有强大的用户C֌来支持它。框枉常能很好的解决一个问题。然而,你的应用是分层的Q可能每一个层都需要各自的框架。仅仅解决UI问题q不意味着你能够很好的业务逻辑和持久性逻辑和UI lg很好的耦合?nbsp;



不可否认Q对于简单的应用Q采用ASP或者PHP的开发效率比采用J2EE框架的开发效率要高。甚xZ觉得Q这U分层的l构Q比一般采用JSP + Servlet的系l开发效率还要低?nbsp;

W者从一下几个角度来阐述q个问题?nbsp;

— 开发效率:软g工程是个Ҏ(gu)的行业,不同于传l的工业Q例如电(sh)器、徏{及汽R{行业。这些行业的产品一旦开发出来,交付用户使用后将很少需要后l的l护。但软g行业不同QY件品的后期q行l护是个巨大的工E,单纯从前期开发时间上考虑其开发效率是不理智的Q也是不公^的。众所周知Q对于传l的ASP?PHP{脚本站Ҏ(gu)术,整个站点的业务逻辑和表现逻辑都؜杂在ASP或PHP面里,从而导致页面的可读性相当差Q可l护性非怽。即佉K要简单改变页面的按钮Q也不得不打开面文gQ冒着破坏pȝ的风险。但采用严格分层J2EE架构Q则可完全避免这个问题。对表现层的修改即发生错误Q也l对不会错误扩展到业务逻辑层,更不会媄响持久层。因此,采用J2EE分层架构Q即使前期的开发效率稍微低一点,但也是值得的?nbsp;

— 需求的变更Q以W者多q的开发经验来看,很少有Y件品的需求从一开始就完全是固定的。客户对软g需求,是随着软g开发过E的深入Q不断明晰v来的。因此,常常遇到软g开发到一定程度时Q由于客户对软g需求发生了变化Q得Y件的实现不得不随之改变。当软g实现需要改变时Q是否可以尽可能多地保留软g的部分,可能少地改变Y件的实现Q从而满_户需求的变更Q答案是——采用优秀的解耦架构。这U架构就是J2EE的分层架构,在优U的分层架构里Q控制层依赖于业务逻辑层,但绝不与M具体的业务逻辑lg耦合Q只与接口耦合;同样Q业务逻辑层依赖于DAO层,也不会与M具体的DAOlg耦合Q而是面向接口~程。采用这U方式的软g实现Q即使Y件的部分发生改变Q其他部分也可能不要改变?nbsp;

注意Q即使在传统的硬件行业,也有大量的接口规范。例如PCI接口、显卡或者网卡,只要光守PCI的规范,可以插入主板,与主杉K信。至于这块卡内部的实玎ͼ不是L所兛_的,q也正是面向接口~程的好处。假如需要提高电(sh)脑的性能Q需要更新显卡,只要更换另一块PCI接口的显卡,而不是将整台?sh)脑抛弃。如果一台电(sh)脑不是采用各U接口组合在一P而是做成整块Q那意味着即只需要更新网卡,也要攑ּ整台?sh)脑。同P对于软g中的一个个lgQ当一个组仉要重构时Q尽量不会媄响到其他lg。实际上Q这是最理想的情况,即采用目前最优秀的架构,也会有或多或的影响Q这也是软g工程需要努力提高的地方?nbsp;

技术的更新Q系l重构:软g行业的技术更新很快,虽然软g行业的发展不快,但小范围的技术更新特别快。一旦由于客观环境的变化Q不得不更换技术时Q如何保证系l的改变最呢Q答案还是选择优秀的架构?nbsp;

在传l的Model 1的程序结构中Q只要有一点小的需求发生改变,意味着攑ּ整个面。或者改写。虽然前期的开发速度快,除非可以保证以后永远不会改变应用的结构,否则不要采用Model 1的结构?nbsp;

采用Hibernate作ؓ持久层技术的最大的好处在于Q可以完全以面向对象的方式进行系l分析、系l设计?nbsp;

DAO模式需要ؓ每个DAOlg~写DAO接口Q同时至提供一个实现类Q根据不同需要,可能有多个实现类。用Spring容器代替DAO工厂 

通常情况下,引入接口׃可避免需要引入工厂来负责DAOlg的生成。Spring实现了两U基本模式:单态模式和工厂模式。而用Spring可以完全避免使用工厂模式Q因为Spring是个功能非常强大的工厂。因此,完全可以让Spring充当DAO工厂?nbsp;

由Spring充当DAO工厂Ӟ无须E序员自己实现工厂模式,只需要将DAOlg配置在Spring容器中,由ApplicationContext负责理DAOlg的创建即可。借助于Spring提供的依赖注入,其他lg甚至不用讉K工厂Q一样可以直接用DAO实例?nbsp;

优点Q?nbsp;
Struts跟Tomcat、Turbine{诸多Apache目一P是开源YӞq是它的一大优炏V开发者能更深入的了解其内部实现机制?nbsp;
除此之外QStruts的优点主要集中体现在两个斚wQTaglib和页面导航。Taglib是Struts的标记库Q灵zd用,能大大提高开发效率。另外,q前国内的JSP开发者而言Q除了用JSP自带的常用标记外Q很开发自q标记Q或许Struts是一个很好的L(fng)?nbsp;
关于面DQ我认ؓ那将是今后的一个发展方向,事实上,q样做,使系l的脉络更加清晰。通过一个配|文Ӟ卛_把握整个pȝ各部分之间的联系Q这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时Q这U优势体现得更加明显?nbsp;
~点Q?nbsp;
Taglib是Struts的一大优势,但对于初学者而言Q却需要一个持l学习的q程Q甚臌会打׃|页~写的习惯,但是Q当你习惯了它时Q你会觉得它真的很棒?nbsp;
StrutsMVC的Controller一分ؓ三,在获得结构更加清晰的同时Q也增加了系l的复杂度?nbsp;
Struts从生到现在q不到半q_但已逐步来多q用于商业Y件。虽然它现在q有不少~点Q但它是一U非怼U的J2EE MVC实现方式Q如果你的系l准备采用J2EE MVC架构Q那么,不妨考虑一下Struts?nbsp;


rosial 2011-12-04 17:34 发表评论
]]>
վ֩ģ壺 Ƶ| ޾ƷƵ| AVרAVͬ| xxxxxƬƵ| ޹ۺϾƷĵһ| ĻӰƵۿ| þ99Ʒһ| þþþƷƵѹۿ| Ļ4| aëƬa԰Ħ| eeussӰԺ| պĻò| va˳Ƶվȫ| ӰԺMV߹ۿƵ| һ岻 | AVþþƷ| ԶƵ߹ۿѲ| avҹƷ| ޾Ʒھþ| x8| þó18վ | Ƶ| þŮcc98cm| va߹ۿ| Ƶ߹ۿƵ| ŮƵƵaѹۿ| þþŷղa| ֻùۿ| ĻmvߵӰ| պƷƵ߹ۿ| ޳ַ| ۺպ | ޾Ʒ| ѵһƬվ| һƵ| ɬɬѹۿƷ| ؼaƬëƬѿ| ߹ۿAVպA| avպۺһ߹ۿ| ߾þþƷĹ| ҹ˾Ƶ|