<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-31  評(píng)論-7  文章-0  trackbacks-0
      2008年7月31日

    內(nèi)容如下:

     

    Code

    大家注意身體啊 



    --------------------------
    09博客園紀(jì)念T恤
    新聞:網(wǎng)站評(píng)測(cè):搜狐博客 VS 我燒網(wǎng)
    網(wǎng)站導(dǎo)航: 博客園首頁  個(gè)人主頁  新聞  社區(qū)  博問  閃存  找找看
    文章來源:http://www.cnblogs.com/xiaoao808/archive/2009/08/25/1553578.html
    posted @ 2009-08-25 13:33 破名超難起 閱讀(160) | 評(píng)論 (0)編輯 收藏

    防盜鏈原理:

    http標(biāo)準(zhǔn)協(xié)議中有專門的字段記錄referer

    一來可以追溯上一個(gè)入站地址是什么

    二來對(duì)于資源文件,可以跟蹤到包含顯示他的網(wǎng)頁地址是什么。

    因此所有防盜鏈方法都是基于這個(gè)Referer字段

    網(wǎng)上比較多的2種

    一種是使用apache文件FileMatch限制,在httpd.conf中增加 ( 其實(shí)也可以將把下面的語句存成一個(gè).htaccess文件),并放到你的網(wǎng)站的根目錄(就是www/html目錄),這樣子別人就沒有辦法盜連你的東東了~~

    SetEnvIfNoCase Referer "^
    Order Allow,Deny
    Allow from env=local_ref
    Allow from 127.0.0.1


    這種很方便禁止非允許訪問URL引用各種資源文件

    請(qǐng)大家注意,把第一句"^
    http://www.linji.cn
    我應(yīng)該這么寫的
    "^
    第二種是使用rewrite,需要增加apache的mode_rewrite,支持.htaccess文件目錄權(quán)限限制
    在虛擬主機(jī)根目錄增加.htaccess文件,描述從定向,把非本地地址refer的圖片文件都從定向到警告圖片或者警告網(wǎng)頁上。

    首先要確認(rèn)你的服務(wù)器或空間的服務(wù)器解譯引擎為Apache2,還有支持.htaccess客戶設(shè)置文件,
    如果你有自己的服務(wù)器就請(qǐng)先對(duì)./conf/httpd.conf 文件做以下修改
    找到:#LoadModule rewrite_module modules/mod_rewrite.so
    把前面的 # 給去丟
    找到等一個(gè) AllowOverride None 改為 AllowOverride All
    重啟Apache2服務(wù)器

    接下就是做一個(gè) .htaccess 文件了,其 .htaccess 文件內(nèi)容為

    RewriteEngine on
    RewriteCond %{HTTP_REFERER} !^
    http://aaoo.net/.*$ [NC]
    RewriteCond %{HTTP_REFERER} !^http://aaoo.net$ [NC]
    RewriteCond %{HTTP_REFERER} !^http://www.aaoo.net/.*$ [NC]
    RewriteCond %{HTTP_REFERER} !^http://www.aaoo.net$ [NC]
    RewriteRule .*.(jpg|jpeg|gif|png|bmp|rar|zip|exe)$ http://down.yoyo.com.ru/err.html [R,NC]

    其中有色的地方都是要改為你的:
    紅色:就是改為你提供下載頁面的地址,也就是只有通過這個(gè)地址才可以下載你所提供的東東。
    藍(lán)色:就是要保護(hù)文件的擴(kuò)展名(以|分開),也就是說以這些為擴(kuò)展名的文件只有通過紅色的地址才可以訪問。
    綠色:如果不是通過紅色的地址訪問藍(lán)色這些為擴(kuò)展名的文件時(shí)就回重定向到綠色地址上。

    這個(gè)方法有個(gè)好處是,不同的虛擬主機(jī)用不同的描述定義。

    接下就是怎么用 .htaccess 文件來實(shí)現(xiàn)防盜鏈了。
    首先要在空間上建兩個(gè)目錄(當(dāng)然目錄名隨你),一個(gè)為 web 另一個(gè)為 down ,
    web 是用來放下載頁面的(或下載程序),down 當(dāng)然就是放你提供的東東的啦,
    把 .htaccess 文件的紅色部分改一下,改為http://你的域名/web。藍(lán)色部分
    改為你要保護(hù)文件的擴(kuò)展名。綠色部分改為http://你的域名/web。改后保存
    .htaccess 文件把它上傳到 down 目錄。

    還有第三種:

    我在解決plog禁止盜鏈的時(shí)候,發(fā)現(xiàn)個(gè)問題,也算個(gè)好方法。
    plog把所有資源都自己管理起來,用resserver.php來動(dòng)態(tài)顯示,這樣統(tǒng)一的入口方便添加權(quán)限操作。
    同時(shí)造成上面2種方法無法使用,因?yàn)椴辉偈莂pache直接訪問資源文件,而是php通過文件讀取。

    因此只能在代碼中做手腳:在讀取資源文件輸出之前,加如下判斷代碼


    引用

    $referer = $_SERVER['HTTP_REFERER'];
    $selfurl = $_SERVER['HTTP_HOST'];
    if(false == strpos($referer,$selfurl))
    {
    echo '非法盜鏈!';
    exit(1);
    }





    這里有些偷懶,直接看引用地址中是否包含host地址,不過原理就是這樣,判斷referer是否是本站地址。

    我們常常在下載的時(shí)候,也碰到盜鏈網(wǎng)站無法下載,報(bào)盜鏈的問題。要下載這類文件最簡(jiǎn)單的方法就是改referer

    比方flashget中,網(wǎng)址下面的"引用"一欄中,直接填寫下載地址就可以了。



    --------------------------
    09博客園紀(jì)念T恤
    新聞:微軟:不一樣的PowerPoint 2010
    網(wǎng)站導(dǎo)航: 博客園首頁  個(gè)人主頁  新聞  社區(qū)  博問  閃存  找找看
    文章來源:http://www.cnblogs.com/xiaoao808/archive/2009/08/21/1551756.html
    posted @ 2009-08-21 23:30 破名超難起 閱讀(333) | 評(píng)論 (0)編輯 收藏

    這兩天完善了一下視頻轉(zhuǎn)換這個(gè)東西,以前做的那套東西上傳完之后就開始轉(zhuǎn)換,無法適應(yīng)大并發(fā)量下的視頻轉(zhuǎn)換(我覺得同時(shí)有10個(gè)ffmpeg進(jìn)程在轉(zhuǎn)視頻服務(wù)器肯定要掛掉),所以我用了另一套方案,視頻上傳之后先不轉(zhuǎn)換,把視頻的基本信息存到數(shù)據(jù)庫(kù)中,然后由程序定時(shí)的從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù),依次轉(zhuǎn)換視頻。具體做法是:1、上傳文件,將文件名存入數(shù)據(jù)庫(kù),同時(shí)在數(shù)據(jù)庫(kù)標(biāo)明videostat字段為0(表示未轉(zhuǎn)換)

      2、通過程序,每隔30秒(根據(jù)不同情況可以改變)取出一個(gè)未轉(zhuǎn)換(videostat=0)且失敗次數(shù)小于5(confailtime<5)的紀(jì)錄

      3、開始轉(zhuǎn)換視頻,這里要先將數(shù)據(jù)庫(kù)中videostat字段改為2(表示正在轉(zhuǎn)換)不然30秒鐘轉(zhuǎn)換不完下個(gè)進(jìn)程又會(huì)讀到這條紀(jì)錄開始轉(zhuǎn)換......

      4、等待轉(zhuǎn)換進(jìn)程結(jié)束,如果成功將相應(yīng)紀(jì)錄的videostat字段的值改為1(表示轉(zhuǎn)換成功),若轉(zhuǎn)換失敗則將失敗次數(shù)字段加一(confailtime=confailtime+1)

      在鼓搗這東西的過程中,遇到了一個(gè)問題,如果一個(gè)進(jìn)程先執(zhí)行p.waitFor();方法而后輸出命令行中的結(jié)果是不行的,即:

    Code

    如果這樣執(zhí)行的話進(jìn)程會(huì)掛起,無法繼續(xù)下午,而正確的方法是先讀取命令行的數(shù)據(jù),再來waitFor();

    還有一點(diǎn)需要注意的是獲得命令行的輸出結(jié)果先要從錯(cuò)誤流中獲得,即(ErrorStream),而非從輸入流(InputStream)中獲得,很有用的經(jīng)驗(yàn)。



    --------------------------
    09博客園紀(jì)念T恤
    新聞:自由軟件基金會(huì)列舉Windows 7之七宗罪
    網(wǎng)站導(dǎo)航: 博客園首頁  個(gè)人主頁  新聞  社區(qū)  博問  閃存  找找看
    文章來源:http://www.cnblogs.com/xiaoao808/archive/2009/08/04/1538824.html
    posted @ 2009-08-04 17:45 破名超難起 閱讀(275) | 評(píng)論 (0)編輯 收藏

    很久不在這里發(fā)帖子了,最近在家閑來無事,想到轉(zhuǎn)視頻的那東西又要做了,遂翻出以前的帖子,看到一年前豐哥讓我做一下文件上傳的進(jìn)度條....額~~那就做一下吧。

    東西很簡(jiǎn)單,主要用到commons-fileupload,其中有一個(gè)progressListener的接口,該接口可以實(shí)現(xiàn)實(shí)時(shí)更新已上傳文件的大小,有了這個(gè)還說什么呢?

    給出代碼

    代碼

     

    然后在上傳得servlet或action中加入這樣一段代碼,就可以把自定義的progressListener添加進(jìn)去

     

    代碼

     

    最后就是通過js來不斷的訪問另一個(gè)servlet來實(shí)時(shí)返回上傳狀態(tài)就可以了,限于篇幅我就不再貼代碼了,有興趣的讀者可以自己下載來看。

     代碼下載(目標(biāo)另存為就行了)



    --------------------------
    09博客園紀(jì)念T恤
    新聞:網(wǎng)速調(diào)查報(bào)告:韓國(guó)互聯(lián)網(wǎng)網(wǎng)速全球居首
    網(wǎng)站導(dǎo)航: 博客園首頁  個(gè)人主頁  新聞  社區(qū)  博問  閃存  找找看
    文章來源:http://www.cnblogs.com/xiaoao808/archive/2009/08/03/1537870.html
    posted @ 2009-08-03 19:46 破名超難起 閱讀(4901) | 評(píng)論 (7)編輯 收藏
    http://family168.com/oa/springsecurity/html/index.html
    posted @ 2009-07-19 18:28 破名超難起 閱讀(198) | 評(píng)論 (0)編輯 收藏

    package lc.util;

    import java.math.BigDecimal;

    public class MathHelper {
     private static final int DEF_DIV_SCALE = 10;

     private MathHelper() {

     }

     /**
      * 提供精確的加法運(yùn)算。
      *
      * @param v1
      *            被加數(shù)
      * @param v2
      *            加數(shù)
      * @return 兩個(gè)參數(shù)的和
      */
     public static double add(double v1, double v2) {
      BigDecimal b1 = new BigDecimal(Double.toString(v1));
      BigDecimal b2 = new BigDecimal(Double.toString(v2));
      return b1.add(b2).doubleValue();
     }

     /**
      * 提供精確的減法運(yùn)算。
      *
      * @param v1
      *            被減數(shù)
      * @param v2
      *            減數(shù)
      * @return 兩個(gè)參數(shù)的差
      */
     public static double sub(double v1, double v2) {
      BigDecimal b1 = new BigDecimal(Double.toString(v1));
      BigDecimal b2 = new BigDecimal(Double.toString(v2));
      return b1.subtract(b2).doubleValue();
     }

     /**
      * 提供精確的乘法運(yùn)算。
      *
      * @param v1
      *            被乘數(shù)
      * @param v2
      *            乘數(shù)
      * @return 兩個(gè)參數(shù)的積
      */
     public static double mul(double v1, double v2) {
      BigDecimal b1 = new BigDecimal(Double.toString(v1));
      BigDecimal b2 = new BigDecimal(Double.toString(v2));
      return b1.multiply(b2).doubleValue();
     }

     /**
      * 提供(相對(duì))精確的除法運(yùn)算,當(dāng)發(fā)生除不盡的情況時(shí),精確到 小數(shù)點(diǎn)以后10位,以后的數(shù)字四舍五入。
      *
      * @param v1
      *            被除數(shù)
      * @param v2
      *            除數(shù)
      * @return 兩個(gè)參數(shù)的商
      */
     public static double div(double v1, double v2) {
      return div(v1, v2, DEF_DIV_SCALE);
     }

     /**
      * 提供(相對(duì))精確的除法運(yùn)算。當(dāng)發(fā)生除不盡的情況時(shí),由scale參數(shù)指 定精度,以后的數(shù)字四舍五入。
      *
      * @param v1
      *            被除數(shù)
      * @param v2
      *            除數(shù)
      * @param scale
      *            表示表示需要精確到小數(shù)點(diǎn)以后幾位。
      * @return 兩個(gè)參數(shù)的商
      */

     public static double div(double v1, double v2, int scale) {
      if (scale < 0) {
       throw new IllegalArgumentException(
         "The scale must be a positive integer or zero");
      }
      BigDecimal b1 = new BigDecimal(Double.toString(v1));
      BigDecimal b2 = new BigDecimal(Double.toString(v2));
      return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
     }

     /**
      * 提供精確的小數(shù)位四舍五入處理。
      *
      * @param v
      *            需要四舍五入的數(shù)字
      * @param scale
      *            小數(shù)點(diǎn)后保留幾位
      * @return 四舍五入后的結(jié)果
      */
     public static double round(double v, int scale) {
      if (scale < 0) {
       throw new IllegalArgumentException(
         "The scale must be a positive integer or zero");
      }
      BigDecimal b = new BigDecimal(Double.toString(v));
      BigDecimal one = new BigDecimal("1");
      return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
     }
    }



    --------------------------
    09博客園紀(jì)念T恤
    新聞:王建宙臺(tái)灣布道TD:痛快,一起努力的感覺
    網(wǎng)站導(dǎo)航: 博客園首頁  個(gè)人主頁  新聞  社區(qū)  博問  閃存  找找看
    文章來源:http://www.cnblogs.com/xiaoao808/archive/2009/05/20/1469589.html
    posted @ 2009-05-20 17:13 破名超難起 閱讀(313) | 評(píng)論 (0)編輯 收藏

    import java.sql.*;

    public class Access

    {

    public static void main(String args[])

    {

    try

    {

    String strurl="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=books.mdb";

    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

    Connection conn=DriverManager.getConnection(strurl) ;

    Statement stmt=conn.createStatement();

    ResultSet rs=stmt.executeQuery("select * from books");

    if(rs.next())

    {

    System.out.println(rs.getString("簡(jiǎn)介"));

    }

    }catch(Exception e)

    {

    System.out.println(e);

    }

    }

    }



    --------------------------
    09博客園紀(jì)念T恤
    新聞:微軟正式對(duì)Word禁售令提起上訴 稱法官不懂法
    網(wǎng)站導(dǎo)航: 博客園首頁  個(gè)人主頁  新聞  社區(qū)  博問  閃存  找找看
    文章來源:http://www.cnblogs.com/xiaoao808/archive/2009/05/08/1452661.html
    posted @ 2009-05-08 15:08 破名超難起 閱讀(185) | 評(píng)論 (0)編輯 收藏

    又一個(gè)新聞發(fā)布......比以前的更加人性化了,用到了Struts2、Struts2的JSON插件,前臺(tái)js用了Jquery庫(kù),自己看吧。歡迎大家提出自己的寶貴意見。

    關(guān)于顯示新聞的功能我還沒有找到一個(gè)合適的AJAX表現(xiàn)形式,所以還沒有完成,歡迎大家給我個(gè)建議

     

    點(diǎn)擊下載源碼



    --------------------------
    09博客園紀(jì)念T恤
    新聞:IBM 2009年北美裁員近1萬人
    網(wǎng)站導(dǎo)航: 博客園首頁  個(gè)人主頁  新聞  社區(qū)  博問  閃存  找找看
    文章來源:http://www.cnblogs.com/xiaoao808/archive/2009/03/16/1413631.html
    posted @ 2009-03-16 17:48 破名超難起 閱讀(202) | 評(píng)論 (0)編輯 收藏

         最近搞的一個(gè)通訊錄想要加一個(gè)Ajax的自動(dòng)完成功能,看起來功能雖小,可給用戶的體驗(yàn)會(huì)改進(jìn)不少。在一個(gè)介紹了幾十種java的Ajax框架的網(wǎng)頁里面,我找到了AjaxTags這個(gè)小東西,開始了我的第一次Ajax之旅。

         從AjaxTags的官方網(wǎng)站上面http://ajaxtags.sourceforge.net/可以下載到其最新的版本,目前是AjaxTags1.3順便下載了一個(gè)官方的小例子看了看,確實(shí)很好阿,例子中使用Ajax完成了11種功能,然而我需要的是自動(dòng)完成(autocomplete)部分的代碼,所以重點(diǎn)研究這一部分

          jsp頁面中,首先當(dāng)然是要添加AjaxTags的標(biāo)簽支持,需要如下語句

    Code

         然后在頁面中加入如下的標(biāo)簽

     

    Code

        在官方的例子中使用的是Servlet來完成Ajax,而對(duì)于使用struts就不適用了,后面說這個(gè)問題。

        在 autocomplete.view對(duì)應(yīng)的Servlet類中需要建立xml來供頁面調(diào)取,代碼如下

    Code
        其實(shí)還是很簡(jiǎn)單的,接下來看CarService的代碼吧,重點(diǎn)其實(shí)只有一段,然后在下面顯示出自動(dòng)提示,于是可以把剛才的那個(gè)ajax標(biāo)簽修改如下
    Code

    例子看完了,開始實(shí)際操作吧,在我的頁面中,需要通過一個(gè)名為"name"的文本框輸入要查詢的人的姓名

    Code

     接下來是我的Action,在寫Action的時(shí)候,我以為只需要把原來Servlet繼承的BaseAjaxServlet改為BaseAjaxAction就可以了,可后來才發(fā)現(xiàn),jar包中根本就沒有BaseAjaxAction這個(gè)類,無語,去官方網(wǎng)站上看了后才知道,在1.2更新到1.3的時(shí)候,把對(duì)Struts的支持去掉了,如果想支持Struts的話需要建立自己的BaseAjaxAction

    (Struts removed, to use it create your own BaseAjaxAction.java and implement BaseAjaxXmlAction then just call xml = AjaxActionHelper.invoke(this, request, response);)

    下載了一份AjaxTags的源碼來看,原來AjaxActionHelper.invoke();這個(gè)方法需要調(diào)用Action中的getXmlContent方法來完成xml的寫入,那就好說了,代碼如下:

    Code
    剩下工作就是在struts-config.xml中配置對(duì)應(yīng)的action,在spring中配置對(duì)應(yīng)的bean就ok拉

     



    --------------------------
    09博客園紀(jì)念T恤
    新聞:Office 2010雙拳出擊加強(qiáng)反盜版
    網(wǎng)站導(dǎo)航: 博客園首頁  個(gè)人主頁  新聞  社區(qū)  博問  閃存  找找看
    文章來源:http://www.cnblogs.com/xiaoao808/archive/2008/09/22/1295661.html
    posted @ 2008-09-22 09:42 破名超難起 閱讀(209) | 評(píng)論 (0)編輯 收藏

    我一直有通宵下東西的習(xí)慣,可又不忍心讓筆記本下載完成后一直等到我睡醒,所以我經(jīng)常用迅雷給我們提供的下載完成后自動(dòng)關(guān)機(jī)這個(gè)功能。

    然而現(xiàn)在迅雷運(yùn)行在了虛擬機(jī)里面,這就郁悶了,即使自動(dòng)關(guān)機(jī)也只能關(guān)掉一個(gè)虛擬機(jī)的進(jìn)程,無奈我想到可不可以用shell程序來監(jiān)測(cè)虛擬機(jī)的進(jìn)程,當(dāng)他關(guān)閉后就運(yùn)行關(guān)機(jī)的命令,經(jīng)過測(cè)試,果然成功了,具體代碼如下:

    Code

    將代碼保存在shutdown.sh文件中

    使用起來也很方便,用"ps ux"找到vbox運(yùn)行的進(jìn)程,將其對(duì)應(yīng)的time command值作為參數(shù)輸入進(jìn)來,例如我的是:

    lichao   10659 91.7 52.0 1224284 1079860 ?     Sl   21:49  11:01 /opt/VirtualBox-1.6.4/VirtualBox -comment winxp -startvm 5e04c66f-82f7-4df0-0f92-8b9113be6f2

    則執(zhí)行上述腳本文件:

    ./ shutdown.sh /opt/VirtualBox-1.6.4/VirtualBox -comment winxp -startvm 5e04c66f-82f7-4df0-0f92-8b9113be6f2

    監(jiān)測(cè)開始

    當(dāng)虛擬機(jī)關(guān)機(jī)后命令行出現(xiàn)如下提示:

    Done..shuting down in 60 seconds.

    60秒后就會(huì)關(guān)機(jī)拉,如果你還不想關(guān)機(jī),可以Ctrl+Alt+C停止當(dāng)前任務(wù),再進(jìn)行其他操作,怎么樣,挺好使的

    --------------------------
    09博客園紀(jì)念T恤
    新聞:中國(guó)聯(lián)通:國(guó)際通訊已恢復(fù)至震前水平
    網(wǎng)站導(dǎo)航: 博客園首頁  個(gè)人主頁  新聞  社區(qū)  博問  閃存  找找看
    文章來源:http://www.cnblogs.com/xiaoao808/archive/2008/08/21/1273554.html
    posted @ 2008-08-21 22:25 破名超難起 閱讀(520) | 評(píng)論 (0)編輯 收藏
    查看軟件xxx安裝內(nèi)容
    • dpkg -L xxx
    查找軟件
    • apt-cache search 正則表達(dá)式
    查找文件屬于哪個(gè)包
    • dpkg -S filename
      apt-file search filename
    查詢軟件xxx依賴哪些包
    • apt-cache depends xxx


    查詢軟件xxx被哪些包依賴
    • apt-cache rdepends xxx
    增加一個(gè)光盤源
    • sudo apt-cdrom add
    系統(tǒng)升級(jí)
    • sudo apt-get update
      sudo apt-get upgrade
      sudo apt-get dist-upgrade
    清除所以刪除包的殘余配置文件
    • dpkg -l |grep ^rc|awk '{print $2}' |tr ["n"] [" "]|sudo xargs dpkg -P -
    編譯時(shí)缺少h文件的自動(dòng)處理
    • sudo auto-apt run ./configure
    查看安裝軟件時(shí)下載包的臨時(shí)存放目錄
    • ls /var/cache/apt/archives
    備份當(dāng)前系統(tǒng)安裝的所有包的列表
    • dpkg --get-selections | grep -v deinstall > ~/somefile
    從上面?zhèn)浞莸陌惭b包的列表文件恢復(fù)所有包
    • dpkg --set-selections < ~/somefile
      sudo dselect
    清理舊版本的軟件緩存
    • sudo apt-get autoclean
    清理所有軟件緩存
    • sudo apt-get clean
    刪除系統(tǒng)不再使用的孤立軟件
    • sudo apt-get autoremove
    查看包在服務(wù)器上面的地址
    • apt-get -qq --print-uris install ssh | cut -d' -f2
    系統(tǒng) 查看內(nèi)核
    • uname -a
    查看Ubuntu版本
    • cat /etc/issue
    查看內(nèi)核加載的模塊
    • lsmod
    查看PCI設(shè)備
    • lspci
    查看USB設(shè)備
    • lsusb
    查看網(wǎng)卡狀態(tài)
    • sudo ethtool eth0
    查看CPU信息
    • cat /proc/cpuinfo
    顯示當(dāng)前硬件信息
    • lshw
    硬盤 查看硬盤的分區(qū)
    • sudo fdisk -l
    查看IDE硬盤信息
    • sudo hdparm -i /dev/hda
    查看STAT硬盤信息
    • sudo hdparm -I /dev/sda

      sudo apt-get install blktool
      sudo blktool /dev/sda id
    查看硬盤剩余空間
    • df -h
      df -H
    查看目錄占用空間
    • du -hs 目錄名
    優(yōu)盤沒法卸載
    • sync
      fuser -km /media/usbdisk
    內(nèi)存 查看當(dāng)前的內(nèi)存使用情況
    • free -m
    進(jìn)程 查看當(dāng)前有哪些進(jìn)程
    • ps -A
    中止一個(gè)進(jìn)程
    • kill 進(jìn)程號(hào)(就是ps -A中的第一列的數(shù)字)
      或者 killall 進(jìn)程名
    強(qiáng)制中止一個(gè)進(jìn)程(在上面進(jìn)程中止不成功的時(shí)候使用)
    • kill -9 進(jìn)程號(hào)
      或者 killall -9 進(jìn)程名
    圖形方式中止一個(gè)程序
    • xkill 出現(xiàn)骷髏標(biāo)志的鼠標(biāo),點(diǎn)擊需要中止的程序即可
    查看當(dāng)前進(jìn)程的實(shí)時(shí)狀況
    • top
    查看進(jìn)程打開的文件
    • lsof -p
    ADSL 配置 ADSL
    • sudo pppoeconf
    ADSL手工撥號(hào)
    • sudo pon dsl-provider
    激活 ADSL
    • sudo /etc/ppp/pppoe_on_boot
    斷開 ADSL
    • sudo poff
    查看撥號(hào)日志
    • sudo plog
    如何設(shè)置動(dòng)態(tài)域名
    • #首先去 http://www.3322.org 申請(qǐng)一個(gè)動(dòng)態(tài)域名
      #然后修改 /etc/ppp/ip-up 增加撥號(hào)時(shí)更新域名指令
      sudo vim /etc/ppp/ip-up
      #在最后增加如下行
      w3m -no-cookie -dump 'http://username:password@members.3322.org/dyndns/update?system=dyndns&hostname=yourdns.3322.org'
    網(wǎng)絡(luò) 根據(jù)IP查網(wǎng)卡地址
    • arping IP地址
    查看當(dāng)前IP地址
    • ifconfig eth0 |awk '/inet/ {split($2,x,":");print x[2]}'
    查看當(dāng)前外網(wǎng)的IP地址
    • w3m -no-cookie -dump www.ip138.com|grep -o '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}'
      w3m -no-cookie -dump www.123cha.com|grep -o '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}'
      w3m -no-cookie -dump ip.loveroot.com|grep -o '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}'
    查看當(dāng)前監(jiān)聽80端口的程序
    • lsof -i :80
    查看當(dāng)前網(wǎng)卡的物理地址
    • arp -a | awk '{print $4}'
      ifconfig eth0 | head -1 | awk '{print $5}'
    立即讓網(wǎng)絡(luò)支持nat
    • echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
      sudo iptables -t nat -I POSTROUTING -j MASQUERADE
    查看路由信息
    • netstat -rn
      sudo route -n
    手工增加刪除一條路由
    • sudo route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1
      sudo route del -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1
    修改網(wǎng)卡MAC地址的方法
    • sudo ifconfig eth0 down #關(guān)閉網(wǎng)卡
      sudo ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE #然后改地址
      sudo ifconfig eth0 up #然后啟動(dòng)網(wǎng)卡
    統(tǒng)計(jì)當(dāng)前IP連接的個(gè)數(shù)
    • netstat -na|grep ESTABLISHED|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -r -n
      netstat -na|grep SYN|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -r -n
    統(tǒng)計(jì)當(dāng)前20000個(gè)IP包中大于100個(gè)IP包的IP地址
    • tcpdump -tnn -c 20000 -i eth0 | awk -F "." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr | awk ' $1 > 100 '
    屏蔽IPV6
    • echo "blacklist ipv6" | sudo tee /etc/modprobe.d/blacklist-ipv6
    服務(wù) 添加一個(gè)服務(wù)
    • sudo update-rc.d 服務(wù)名 defaults 99
    刪除一個(gè)服務(wù)
    • sudo update-rc.d 服務(wù)名 remove
    臨時(shí)重啟一個(gè)服務(wù)
    • /etc/init.d/服務(wù)名 restart
    臨時(shí)關(guān)閉一個(gè)服務(wù)
    • /etc/init.d/服務(wù)名 stop
    臨時(shí)啟動(dòng)一個(gè)服務(wù)
    • /etc/init.d/服務(wù)名 start
    設(shè)置 配置默認(rèn)Java使用哪個(gè)
    • sudo update-alternatives --config java
    修改用戶資料
    • sudo chfn userid
    給apt設(shè)置代理
    • export http_proxy=http://xx.xx.xx.xx:xxx
    修改系統(tǒng)登錄信息
    • sudo vim /etc/motd
    中文 轉(zhuǎn)換文件名由GBK為UTF8
    • sudo apt-get install convmv
      convmv -r -f cp936 -t utf8 --notest --nosmart *
    批量轉(zhuǎn)換src目錄下的所有文件內(nèi)容由GBK到UTF8
    • find src -type d -exec mkdir -p utf8/{} ;
      find src -type f -exec iconv -f GBK -t UTF-8 {} -o utf8/{} ;
      mv utf8/* src
      rm -fr utf8
    轉(zhuǎn)換文件內(nèi)容由GBK到UTF8
    • iconv -f gbk -t utf8 $i > newfile
    轉(zhuǎn)換 mp3 標(biāo)簽編碼
    • sudo apt-get install python-mutagen
      find . -iname “*.mp3” -execdir mid3iconv -e GBK {} ;
    控制臺(tái)下顯示中文
    • sudo apt-get install zhcon
      使用時(shí),輸入zhcon即可
    文件 快速查找某個(gè)文件
    • whereis filename
    • find 目錄 -name 文件名
    查看文件類型
    • file filename
    顯示xxx文件倒數(shù)6行的內(nèi)容
    • tail -n 6 xxx
    讓tail不停地讀地最新的內(nèi)容
    • tail -n 10 -f /var/log/apache2/access.log
    查看文件中間的第五行(含)到第10行(含)的內(nèi)容
    • sed -n '5,10p' /var/log/apache2/access.log
    查找包含xxx字符串的文件
    • grep -l -r xxx .
    查找關(guān)于xxx的命令
    • apropos xxx
      man -k xxx
    通過ssh傳輸文件
    • scp -rp /path/filename username@remoteIP:/path #將本地文件拷貝到服務(wù)器上
      scp -rp username@remoteIP:/path/filename /path #將遠(yuǎn)程文件從服務(wù)器下載到本地
    查看某個(gè)文件被哪些應(yīng)用程序讀寫
    • lsof 文件名
    把所有文件的后輟由rm改為rmvb
    • rename 's/.rm$/.rmvb/' *
    把所有文件名中的大寫改為小寫
    • rename 'tr/A-Z/a-z/' *
    刪除特殊文件名的文件,如文件名:--help.txt
    • rm -- --help.txt 或者 rm ./--help.txt
    查看當(dāng)前目錄的子目錄
    • ls -d */. 或 echo */.
    將當(dāng)前目錄下最近30天訪問過的文件移動(dòng)到上級(jí)back目錄
    • find . -type f -atime -30 -exec mv {} ../back ;
    將當(dāng)前目錄下最近2小時(shí)到8小時(shí)之內(nèi)的文件顯示出來
    • find . -mmin +120 -mmin -480 -exec more {} ;
    刪除修改時(shí)間在30天之前的所有文件
    • find . -type f -mtime +30 -mtime -3600 -exec rm {} ;
    查找guest用戶的以avi或者rm結(jié)尾的文件并刪除掉
    • find . -name '*.avi' -o -name '*.rm' -user 'guest' -exec rm {} ;
    查找的不以java和xml結(jié)尾,并7天沒有使用的文件刪除掉
    • find . ! -name *.java ! -name ‘*.xml’ -atime +7 -exec rm {} ;
    統(tǒng)計(jì)當(dāng)前文件個(gè)數(shù)
    • ls /usr/bin|wc -w
    統(tǒng)計(jì)當(dāng)前目錄個(gè)數(shù)
    • ls -l /usr/bin|grep ^d|wc -l
    顯示當(dāng)前目錄下2006-01-01的文件名
    • ls -l |grep 2006-01-01 |awk '{print $8}'
    壓縮 解壓縮 xxx.tar.gz
    • tar -zxvf xxx.tar.gz
    解壓縮 xxx.tar.bz2
    • tar -jxvf xxx.tar.bz2
    壓縮aaa bbb目錄為xxx.tar.gz
    • tar -zcvf xxx.tar.gz aaa bbb
    壓縮aaa bbb目錄為xxx.tar.bz2
    • tar -jcvf xxx.tar.bz2 aaa bbb
    Nautilus 顯示隱藏文件
    • Ctrl+h
    顯示地址欄
    • Ctrl+l
    特殊 URI 地址
    • * computer:/// - 全部掛載的設(shè)備和網(wǎng)絡(luò)
      * network:/// - 瀏覽可用的網(wǎng)絡(luò)
      * burn:/// - 一個(gè)刻錄 CDs/DVDs 的數(shù)據(jù)虛擬目錄
      * smb:/// - 可用的 windows/samba 網(wǎng)絡(luò)資源
      * x-nautilus-desktop:/// - 桌面項(xiàng)目和圖標(biāo)
      * file:/// - 本地文件
      * trash:/// - 本地回收站目錄
      * ftp:// - FTP 文件夾
      * ssh:// - SSH 文件夾
      * fonts:/// - 字體文件夾,可將字體文件拖到此處以完成安裝
      * themes:/// - 系統(tǒng)主題文件夾
    查看已安裝字體
    • 在nautilus的地址欄里輸入”fonts:///“,就可以查看本機(jī)所有的fonts
    程序 詳細(xì)顯示程序的運(yùn)行信息
    • strace -f -F -o outfile <cmd>
    日期和時(shí)間 設(shè)置日期
    • #date -s mm/dd/yy
    設(shè)置時(shí)間
    • #date -s HH:MM
    將時(shí)間寫入CMOS
    • hwclock --systohc
    讀取CMOS時(shí)間
    • hwclock --hctosys
    從服務(wù)器上同步時(shí)間
    • sudo ntpdate time.nist.gov
      sudo ntpdate time.windows.com
    控制臺(tái) 不同控制臺(tái)間切換
    • Ctrl + ALT + ←
      Ctrl + ALT + →
    指定控制臺(tái)切換
    • Ctrl + ALT + Fn(n:1~7)
    控制臺(tái)下滾屏
    • SHIFT + pageUp/pageDown
    控制臺(tái)抓圖
    • setterm -dump n(n:1~7)
    數(shù)據(jù)庫(kù) mysql的數(shù)據(jù)庫(kù)存放在地方
    • /var/lib/mysql
    從mysql中導(dǎo)出和導(dǎo)入數(shù)據(jù)
    • mysqldump 數(shù)據(jù)庫(kù)名 > 文件名 #導(dǎo)出數(shù)據(jù)庫(kù)
      mysqladmin create 數(shù)據(jù)庫(kù)名 #建立數(shù)據(jù)庫(kù)
      mysql 數(shù)據(jù)庫(kù)名 < 文件名 #導(dǎo)入數(shù)據(jù)庫(kù)
    忘了mysql的root口令怎么辦
    • sudo /etc/init.d/mysql stop
      sudo mysqld_safe --skip-grant-tables &
      sudo mysqladmin -u user password 'newpassword''
      sudo mysqladmin flush-privileges
    修改mysql的root口令
    • sudo mysqladmin -uroot -p password '你的新密碼'
    其它 下載網(wǎng)站文檔
    • wget -r -p -np -k http://www.21cn.com
      · -r:在本機(jī)建立服務(wù)器端目錄結(jié)構(gòu);
      · -p: 下載顯示HTML文件的所有圖片;
      · -np:只下載目標(biāo)站點(diǎn)指定目錄及其子目錄的內(nèi)容;
      · -k: 轉(zhuǎn)換非相對(duì)鏈接為相對(duì)鏈接。
    如何刪除Totem電影播放機(jī)的播放歷史記錄
    • rm ~/.recently-used
    如何更換gnome程序的快捷鍵
    • 點(diǎn)擊菜單,鼠標(biāo)停留在某條菜單上,鍵盤輸入任意你所需要的鍵,可以是組合鍵,會(huì)立即生效;
      如果要清除該快捷鍵,請(qǐng)使用backspace
    vim 如何顯示彩色字符
    • sudo cp /usr/share/vim/vimcurrent/vimrc_example.vim /usr/share/vim/vimrc
    如何在命令行刪除在會(huì)話設(shè)置的啟動(dòng)程序
    • cd ~/.config/autostart
      rm 需要?jiǎng)h除啟動(dòng)程序
    如何提高wine的反應(yīng)速度 sudo sed -ie '/GBK/,/^}/d' /usr/share/X11/locale/zh_CN.UTF-8/XLC_LOCALE

    --------------------------
    09博客園紀(jì)念T恤
    新聞:分析稱RSS閱讀器是Web 1.0工具 已逐漸被拋棄
    網(wǎng)站導(dǎo)航: 博客園首頁  個(gè)人主頁  新聞  社區(qū)  博問  閃存  找找看
    文章來源:http://www.cnblogs.com/xiaoao808/archive/2008/08/20/1272372.html
    posted @ 2008-08-20 16:27 破名超難起 閱讀(135) | 評(píng)論 (0)編輯 收藏
    Hibernate獲取數(shù)據(jù)的方式有不同的幾種,其與緩存結(jié)合使用的效果也不盡相同,而Hibernate中具體怎么使用緩存其實(shí)是我們很關(guān)心的一個(gè)問題,直接涉及到性能方面。
    緩 存在Hibernate中主要有三個(gè)方面:一級(jí)緩存、二級(jí)緩存和查詢緩存;一級(jí)緩存在Hibernate中對(duì)應(yīng)的即為session范圍的緩存,也就是當(dāng) session關(guān)閉時(shí)緩存即被清除,一級(jí)緩存在Hibernate中是不可配置的部分;二級(jí)緩存在Hibernate中對(duì)應(yīng)的即為 SessionFactory范圍的緩存,通常來講SessionFactory的生命周期和應(yīng)用的生命周期相同,所以可以看成是進(jìn)程緩存或集群緩存,二 級(jí)緩存在Hibernate中是可以配置的,可以通過class-cache配置類粒度級(jí)別的緩存(class-cache在class中數(shù)據(jù)發(fā)生任何變 化的情況下自動(dòng)更新),同時(shí)也可通過collection-cache配置集合粒度級(jí)別的緩存(collection-cache僅在 collection中增加了元素或者刪除了元素的情況下才自動(dòng)更新,也就是當(dāng)collection中元素發(fā)生值的變化的情況下它是不會(huì)自動(dòng)更新的),緩 存自然會(huì)帶來并發(fā)的訪問問題,這個(gè)時(shí)候相應(yīng)的就要根據(jù)應(yīng)用來設(shè)置緩存所采用的事務(wù)隔離級(jí)別,和數(shù)據(jù)庫(kù)的事務(wù)隔離級(jí)別概念基本一樣,沒什么多介紹的, ^_^;查詢緩存在Hibernate同樣是可配置的,默認(rèn)是關(guān)閉的,可以通過設(shè)置cache.use_ query_cache為true來打開查詢緩 存。根據(jù)緩存的通常實(shí)現(xiàn)策略,我們可以來理解Hibernate的這三種緩存,緩存的實(shí)現(xiàn)通過是通過key/value的Map方式來實(shí)現(xiàn),在 Hibernate的一級(jí)、二級(jí)和查詢緩存也同樣如此,一級(jí)、二級(jí)緩存使用的key均為po的主鍵ID,value即為po實(shí)例對(duì)象,查詢緩存使用的則為 查詢的條件、查詢的參數(shù)、查詢的頁數(shù),value有兩種情況,如果采用的是select po.property這樣的方式那么value為整個(gè)結(jié)果集,如采用的是from這樣的方式那么value為獲取的結(jié)果集中各po對(duì)象的主鍵ID,這樣 的作用很明顯,節(jié)省內(nèi)存,^_^
    簡(jiǎn)單介紹完Hibernate的緩存后,再結(jié)合Hibernate的獲取數(shù)據(jù)方式來說明緩存的具體使用方式,在Hibernate中獲取數(shù)據(jù)常用的方式主要有四種:Session.load、Session.get、Query.list、Query.iterator。
    1、Session.load
          在執(zhí)行session.load時(shí),Hibernate首先從當(dāng)前session的一級(jí)緩存中獲取id對(duì)應(yīng)的值,在獲取不到的情況下,將根據(jù)該對(duì)象是否配 置了二級(jí)緩存來做相應(yīng)的處理,如配置了二級(jí)緩存,則從二級(jí)緩存中獲取id對(duì)應(yīng)的值,如仍然獲取不到則還需要根據(jù)是否配置了延遲加載來決定如何執(zhí)行,如未配 置延遲加載則從數(shù)據(jù)庫(kù)中直接獲取,在從數(shù)據(jù)庫(kù)獲取到數(shù)據(jù)的情況下,Hibernate會(huì)相應(yīng)的填充一級(jí)緩存和二級(jí)緩存,如配置了延遲加載則直接返回一個(gè)代 理類,只有在觸發(fā)代理類的調(diào)用時(shí)才進(jìn)行數(shù)據(jù)庫(kù)查詢的操作。
          在這樣的情況下我們就可以看到,在session一直打開的情況下,要注意在適當(dāng)?shù)臅r(shí)候?qū)σ患?jí)緩存進(jìn)行刷新操作,通常是在該對(duì)象具有單向關(guān)聯(lián)維護(hù)的時(shí)候, 在Hibernate中可以使用象session.clear、session.evict的方式來強(qiáng)制刷新一級(jí)緩存。
          二級(jí)緩存則在數(shù)據(jù)發(fā)生任何變化(新增、更新、刪除)的情況下都會(huì)自動(dòng)的被更新。
    2、Session.get
          在執(zhí)行Session.get時(shí),和Session.load不同的就是在當(dāng)從緩存中獲取不到時(shí),直接從數(shù)據(jù)庫(kù)中獲取id對(duì)應(yīng)的值。
    3、Query.list
          在執(zhí)行Query.list時(shí),Hibernate的做法是首先檢查是否配置了查詢緩存,如配置了則從查詢緩存中查找key為查詢語句+查詢參數(shù)+分頁條 件的值,如獲取不到則從數(shù)據(jù)庫(kù)中進(jìn)行獲取,從數(shù)據(jù)庫(kù)獲取到后Hibernate將會(huì)相應(yīng)的填充一級(jí)、二級(jí)和查詢緩存,如獲取到的為直接的結(jié)果集,則直接返 回,如獲取到的為一堆id的值,則再根據(jù)id獲取相應(yīng)的值(Session.load),最后形成結(jié)果集返回,可以看到,在這樣的情況下,list也是有 可能造成N次的查詢的。
          查詢緩存在數(shù)據(jù)發(fā)生任何變化的情況下都會(huì)被自動(dòng)的清空。
    4、Query.iterator
          在執(zhí)行Query.iterator時(shí),和Query.list的不同的在于從數(shù)據(jù)庫(kù)獲取的處理上,Query.iterator向數(shù)據(jù)庫(kù)發(fā)起的是 select id from這樣的語句,也就是它是先獲取符合查詢條件的id,之后在進(jìn)行iterator.next調(diào)用時(shí)才再次發(fā)起session.load的調(diào)用獲取實(shí) 際的數(shù)據(jù)。
          可見,在擁有二級(jí)緩存并且查詢參數(shù)多變的情況下,Query.iterator會(huì)比Query.list更為高效。

    這 四種獲取數(shù)據(jù)的方式都各有適用的場(chǎng)合,要根據(jù)實(shí)際情況做相應(yīng)的決定,^_^,最好的方式無疑就是打開show_sql選項(xiàng)看看執(zhí)行的情況來做分析,系統(tǒng)結(jié) 構(gòu)上只用保證這種調(diào)整是容易實(shí)現(xiàn)的就好了,在cache這個(gè)方面的調(diào)整自然是非常的容易,只需要調(diào)整配置文件里的設(shè)置,而查詢的方式則可對(duì)外部進(jìn)行屏蔽, 這樣要根據(jù)實(shí)際情況調(diào)整也非常容易。

    推薦三篇關(guān)于Hibernate緩存機(jī)制介紹的文章:
    http://gocom.primeton.com/blog/index.php?op=ViewArticle&articleId=467&blogId=37&src=jdon&srcforum=62
    http://club.gamvan.com/club/clubPage.jsp?ccStyle=0&tID=10456&ccID=37
    http://www.devx.com/dbzone/Article/29685/1954?pf=true
    文章來源:http://www.cnblogs.com/xiaoao808/archive/2008/08/16/1269160.html
    posted @ 2008-08-16 11:03 破名超難起 閱讀(83) | 評(píng)論 (0)編輯 收藏

    雖然VirtualBox是個(gè)很好用的虛擬機(jī),但是安裝完成之后虛擬機(jī)仍然無法使用usb設(shè)備,沒有聲音還是需要作進(jìn)一步配置的,下面是具體配置方法:

    1、配置VirtualBox使其識(shí)別usb設(shè)備

    如果不配置VirtualBox的話,每次虛擬機(jī)啟動(dòng)時(shí)他都會(huì)報(bào)錯(cuò)的,大體意思是當(dāng)前虛擬機(jī)沒有安裝使用usb的服務(wù)

     

     解決方法如下:

     

    增加用戶組usbfs

    $ sudo groupadd usbfs

    2. 查看usbfs用戶組的gid
    $ cat /etc/group | grep usbfs

    usbfs:x:1002:


    把當(dāng)前用戶增加到usbfs組
    $ sudo gedit /etc/group

    usbfs:x:1001:
    修改為
    usbfs:x:1001:lichao


    4. 為USB設(shè)備重新設(shè)置權(quán)限編輯/etc/fstab文件,添加下面兩行,注意你的gid可能不是1001
    $ sudo gedit /etc/fstab
    在末尾加上
    # 1001 is the USB group IDI
    none /proc/bus/usb usbfs devgid=1001,devmode=666 0 0


    重新啟動(dòng)后,應(yīng)該就可以在客戶機(jī)中使用USB設(shè)備了。

    方法:插入一個(gè)USB設(shè)備后,如U盤,右鍵點(diǎn)擊虛擬機(jī)里右下腳的USB圖標(biāo),選擇已經(jīng)識(shí)別的U盤,就可以正常使用了。

    注意:(1)在客戶機(jī)里使用USB設(shè)備前要先在主機(jī)里卸載。 (2)完成后重啟系統(tǒng)

     

    2、使虛擬機(jī)支持聲音

    使用了一段時(shí)間后,我突然發(fā)現(xiàn)虛擬機(jī)居然沒有聲音,而在操作系統(tǒng)中是有聲卡的,而且右下角有調(diào)節(jié)聲音的圖標(biāo),應(yīng)該有聲音阿

    經(jīng)過仔細(xì)查找,我發(fā)現(xiàn)在虛擬機(jī)聲音設(shè)置中,雖然控制芯片被設(shè)置為了“ICH AC97”,但是聲卡類型卻被設(shè)置為了Null Audio Driver,只要將聲卡類型設(shè)置為OSS Audio Driver就可以了


    文章來源:http://www.cnblogs.com/xiaoao808/archive/2008/08/15/1268427.html
    posted @ 2008-08-15 10:01 破名超難起 閱讀(361) | 評(píng)論 (0)編輯 收藏

    今天很郁悶阿,昨天剛裝好的系統(tǒng),今天就因?yàn)橐淮文牟僮?.....重裝了

    裝系統(tǒng)倒不是很費(fèi)時(shí)間,麻煩的是等待系統(tǒng)升級(jí),很郁悶阿,將近一小時(shí),什么也作不了,所以這次重裝之后,我決定找到一種一勞永逸的方法,備份升級(jí)文件,找了找,還真有,具體過程如下:

    備份:

    Code

     備份成功,在你所對(duì)應(yīng)的/home/user文件夾中可以找到這個(gè)名為backup.tar.gz的文件。

    清除:

    Code

     還原:

    Code

     


    文章來源:http://www.cnblogs.com/xiaoao808/archive/2008/08/13/1267439.html
    posted @ 2008-08-13 23:32 破名超難起 閱讀(109) | 評(píng)論 (0)編輯 收藏

    由于linux下沒有像windows的ALL IN ONE安裝包,而我又不想用eclipse+myeclipse的方式來安裝,就在這時(shí),我發(fā)現(xiàn)在myeclipse的官方網(wǎng)站上有一個(gè)安裝包叫pulse

    上網(wǎng)查了一下,這個(gè)安裝包本身沒有任何ide安張程序,他可以讓你來選擇哪些工具你需要下載安裝,哪些你不需要,似乎很好用哦,下載下來試試。

    裝上之后,有很多ide提供下載安裝,就選擇我最熟悉的MyEclipse6.5吧,下載速度很快,不到10分鐘就裝好了,打開一看,和windows的界面一樣,爽!!以后就用他了


    文章來源:http://www.cnblogs.com/xiaoao808/archive/2008/08/12/1266299.html
    posted @ 2008-08-12 20:09 破名超難起 閱讀(190) | 評(píng)論 (0)編輯 收藏

    早就想把微軟的東西仍進(jìn)虛擬機(jī),只是一直沒下決心,這次實(shí)踐了一回,呵呵,還真好使

    我用的ubuntu 7.10+sun Virtual Box

    去sun的官方網(wǎng)站下載吧,

    VirtualBox-1.6.4-Linux_x86.run

    這個(gè)是最新的,下載后照常安裝,其間碰到幾個(gè)依賴包的安裝,在“新立得”里面找一下就好了....

    5分鐘后,虛擬機(jī)裝好,開始裝windows拉,用了許久的Vista,回顧一下經(jīng)典的XP,哈哈,蠻不錯(cuò)的,感覺比純運(yùn)行xp還要快,一下是截圖 :

     

    這下爽拉,在linux下玩魔獸完全沒難度拉
    文章來源:http://www.cnblogs.com/xiaoao808/archive/2008/08/12/1266297.html
    posted @ 2008-08-12 20:00 破名超難起 閱讀(205) | 評(píng)論 (0)編輯 收藏

    首先去sun公司的網(wǎng)站下載jdk安裝文件 jdk-x.bin不要下載jdk-x.rpm.bin,不知為什么裝不上,

    接下來在終端中執(zhí)行

    ./jdk-x.bin

    看過協(xié)議后鍵入"yes"同意許可

    安裝完成后需要修改環(huán)境變量

    在終端中輸入:

    gksu gedit /etc/profile

    在文件末尾加上如下幾句話即可:

    #set java environment

    JAVA_HOME=/home/lichao/Program_File/jdk

    export JRE_HOME=/home/lichao/Program_File/jdk/jre

    export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

    export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

    javac一下試試看,應(yīng)該沒問題了


    文章來源:http://www.cnblogs.com/xiaoao808/archive/2008/08/12/1266215.html
    posted @ 2008-08-12 17:48 破名超難起 閱讀(86) | 評(píng)論 (0)編輯 收藏

    在終端中鍵入

    sudo apt-get install mysql-server

    ok,等一會(huì)吧,設(shè)置一下root的密碼,
    安裝成功,簡(jiǎn)單吧,哈哈!!

    安裝完后最要命的是.....不知道m(xù)ysql安裝到那里了,網(wǎng)上找到了答案,若干個(gè)目錄阿

    ubuntu下mysql安裝布局:

    /usr/bin                      客戶端程序和mysql_install_db
    /db                             數(shù)據(jù)庫(kù)和日志文件(自定義的)
    /var/run mysqld        服務(wù)器
    /etc/mysql mysql       配置文件my.cnf
    /usr/share/mysql       字符集,基準(zhǔn)程序和錯(cuò)誤消息

    /etc/init.d/mysql        啟動(dòng)mysql服務(wù)器

    成功后在“系統(tǒng) -> 系統(tǒng)管理 -> 服務(wù)”就可以看到mysql的服務(wù)了。

    下面要配置了!

    mysql默認(rèn)只能在本機(jī)登錄,這時(shí)就需要設(shè)置一下了

    在終端中輸入

    mysql -u root -p

    輸入正確密碼后執(zhí)行如下sql語句:

    1. mysql -u root -pvmwaremysql>use mysql;  
    2. mysql>update user set host = '%' where user = 'root';  
    3. mysql>select host, user from user; 

    可以了,試試看吧!

     

     


    文章來源:http://www.cnblogs.com/xiaoao808/archive/2008/08/12/1266213.html
    posted @ 2008-08-12 17:40 破名超難起 閱讀(192) | 評(píng)論 (0)編輯 收藏

    這里的方法同樣適用于Debian下的Scim輸入法的安裝。
        根據(jù)SCIM的文檔說明,裝SCIM最好用UTF-8的locale。(你也可以使用GB2312以及GBK的locale,使用scim都一樣的)
    對(duì)于一個(gè)新裝好的沒有安裝SCIM的Ubuntu系統(tǒng)(新的Ubuntu安裝器選擇中文安裝后,一邊都已經(jīng)裝好了scim),只要

          apt-get install scim(當(dāng)然前提是你要設(shè)置好源,具體見http://wiki.ubuntu.org.cn/%E5%BF%AB%E9%80%9F%E8%AE%BE%E7%BD%AE%E6%8C%87%E5%8D%97, 有些高校自己內(nèi)部也有源的,好好找找)

          就已經(jīng)安裝好SCIM了!當(dāng)然還不能用。因?yàn)镾CIM只是一個(gè)輸入法平臺(tái),還要在上面安裝輸入法(或者碼表)。例如,

          apt-get install scim-chinese


          就可以使用智能拼音輸入法了!當(dāng)然在使用之前還要先配置一下,配置方法很簡(jiǎn)單,在/etc/X11/Xsession.d/里新建一個(gè)名叫95xinput的文件,文件內(nèi)容如下

          /usr/bin/scim -d
          XMODIFIERS="@im=SCIM"
          export XMODIFIERS
          export GTK_IM_MODULE=scim

           保存文件,確認(rèn)內(nèi)容無誤后,退出X(建議退出X后運(yùn)行exit命令重新login一次),再進(jìn)入X的時(shí)候就可以用Ctrl+Space調(diào)出SCIM了!
          就我的試驗(yàn)情況,這樣已經(jīng)可以在qterm里使用SCIM了。

        如果你需要其它中文輸入法,可以這樣

        apt-get install scim-tables-zh

        這包括了簡(jiǎn)體中文的五筆、二筆、廣東拼音、自然碼,和繁體中文的行列、 }頡五代、大易、注音等輸入法了。
        我現(xiàn)在使用五筆輸入法,能輸入簡(jiǎn)繁漢字,詞匯也豐富,很好用。

          但是現(xiàn)在還不能在基于GTK的軟件中調(diào)出SCIM,例如我就不能在leafpad里使用SCIM。解決辦法很簡(jiǎn)單,只要安裝scim-gtk2-immodule就可以了。

              apt-get install scim-gtk2-immodule

              安裝后無須重啟X,只要重新打開基于GTK的軟件就可以了,比如我新開一個(gè)leafpad,馬上就可以使用SCIM了!

            這個(gè)命令會(huì)根據(jù)依賴關(guān)系自動(dòng)安裝 scim-server-socket, scim-frontend-socket, scim-config-socket,如果沒有安裝scim,也會(huì)自動(dòng)安裝。


    文章來源:http://www.cnblogs.com/xiaoao808/archive/2008/08/12/1265876.html
    posted @ 2008-08-12 13:12 破名超難起 閱讀(82) | 評(píng)論 (0)編輯 收藏
    Code

    文章來源:http://www.cnblogs.com/xiaoao808/archive/2008/08/04/1260376.html
    posted @ 2008-08-04 20:25 破名超難起 閱讀(116) | 評(píng)論 (0)編輯 收藏

         經(jīng)過若干天斷斷續(xù)續(xù)地研究,終于做出了第一個(gè)spring security的實(shí)例,真是艱難啊,配置太復(fù)雜了,若干個(gè)Bean之間存在著這樣或那樣的關(guān)系......

         下面給出我的小例子,主要是配置文件拉~~別的東西自己看源碼吧!

    Code

     

    這個(gè)是最簡(jiǎn)單的一個(gè)例子,配了141行,呼~~繼續(xù)研究其深入功能,離成功越來越近了

    ps.傳說spring security2.0有了超級(jí)簡(jiǎn)單的配置方法,還沒有學(xué)到手,努力ing

    源碼下載(需要自己添加spring和mysql的jar包)


    文章來源:http://www.cnblogs.com/xiaoao808/archive/2008/08/04/1259523.html
    posted @ 2008-08-04 00:46 破名超難起 閱讀(666) | 評(píng)論 (0)編輯 收藏

    你覺得自己是一個(gè)Java專家嗎?是否肯定自己已經(jīng)全面掌握了Java的異常處理機(jī)制?在下面這段代碼中,你能夠迅速找出異常處理的六個(gè)問題嗎?

      

    Code

      作為一個(gè)Java程序員,你至少應(yīng)該能夠找出兩個(gè)問題。但是,如果你不能找出全部六個(gè)問題,請(qǐng)繼續(xù)閱讀本文。

      本文討論的不是Java異常處理的一般性原則,因?yàn)檫@些原則已經(jīng)被大多數(shù)人熟知。我們要做的是分析各種可稱為“反例”(anti-pattern)的違背優(yōu)秀編碼規(guī)范的常見壞習(xí)慣,幫助讀者熟悉這些典型的反面例子,從而能夠在實(shí)際工作中敏銳地察覺和避免這些問題。

      反例之一:丟棄異常

      代碼:15行-18行。

      這段代碼捕獲了異常卻不作任何處理,可以算得上Java編程中的殺手。從問題出現(xiàn)的頻繁程度和禍害程度來看,它也許可以和C/C++程序的一個(gè)惡名遠(yuǎn)播的問題相提并論——不檢查緩沖區(qū)是否已滿。如果你看到了這種丟棄(而不是拋出)異常的情況,可以百分之九十九地肯定代碼存在問題(在極少數(shù)情況下,這段代碼有存在的理由,但最好加上完整的注釋,以免引起別人誤解)。

      這段代碼的錯(cuò)誤在于,異常(幾乎)總是意味著某些事情不對(duì)勁了,或者說至少發(fā)生了某些不尋常的事情,我們不應(yīng)該對(duì)程序發(fā)出的求救信號(hào)保持沉默和無動(dòng)于衷。調(diào)用一下printStackTrace算不上“處理異常”。不錯(cuò),調(diào)用printStackTrace對(duì)調(diào)試程序有幫助,但程序調(diào)試階段結(jié)束之后,printStackTrace就不應(yīng)再在異常處理模塊中擔(dān)負(fù)主要責(zé)任了。

      丟棄異常的情形非常普遍。打開JDK的ThreadDeath類的文檔,可以看到下面這段說明:“特別地,雖然出現(xiàn)ThreadDeath是一種‘正常的情形’,但ThreadDeath類是Error而不是Exception的子類,因?yàn)樵S多應(yīng)用會(huì)捕獲所有的Exception然后丟棄它不再理睬。”這段話的意思是,雖然ThreadDeath代表的是一種普通的問題,但鑒于許多應(yīng)用會(huì)試圖捕獲所有異常然后不予以適當(dāng)?shù)奶幚恚訨DK把ThreadDeath定義成了Error的子類,因?yàn)镋rror類代表的是一般的應(yīng)用不應(yīng)該去捕獲的嚴(yán)重問題。可見,丟棄異常這一壞習(xí)慣是如此常見,它甚至已經(jīng)影響到了Java本身的設(shè)計(jì)。

      那么,應(yīng)該怎樣改正呢?主要有四個(gè)選擇:

      1、處理異常。針對(duì)該異常采取一些行動(dòng),例如修正問題、提醒某個(gè)人或進(jìn)行其他一些處理,要根據(jù)具體的情形確定應(yīng)該采取的動(dòng)作。再次說明,調(diào)用printStackTrace算不上已經(jīng)“處理好了異常”。
    2、重新拋出異常。處理異常的代碼在分析異常之后,認(rèn)為自己不能處理它,重新拋出異常也不失為一種選擇。
    3、把該異常轉(zhuǎn)換成另一種異常。大多數(shù)情況下,這是指把一個(gè)低級(jí)的異常轉(zhuǎn)換成應(yīng)用級(jí)的異常(其含義更容易被用戶了解的異常)。
    4、不要捕獲異常。

      結(jié)論一:既然捕獲了異常,就要對(duì)它進(jìn)行適當(dāng)?shù)奶幚怼2灰东@異常之后又把它丟棄,不予理睬。

      反例之二:不指定具體的異常

      代碼:15行。

      許多時(shí)候人們會(huì)被這樣一種“美妙的”想法吸引:用一個(gè)catch語句捕獲所有的異常。最常見的情形就是使用catch(Exception ex)語句。但實(shí)際上,在絕大多數(shù)情況下,這種做法不值得提倡。為什么呢?

      要理解其原因,我們必須回顧一下catch語句的用途。catch語句表示我們預(yù)期會(huì)出現(xiàn)某種異常,而且希望能夠處理該異常。異常類的作用就是告訴Java編譯器我們想要處理的是哪一種異常。由于絕大多數(shù)異常都直接或間接從java.lang.Exception派生,catch(Exception ex)就相當(dāng)于說我們想要處理幾乎所有的異常。
    再來看看前面的代碼例子。我們真正想要捕獲的異常是什么呢?最明顯的一個(gè)是SQLException,這是JDBC操作中常見的異常。另一個(gè)可能的異常是IOException,因?yàn)樗僮鱋utputStreamWriter。顯然,在同一個(gè)catch塊中處理這兩種截然不同的異常是不合適的。如果用兩個(gè)catch塊分別捕獲SQLException和IOException就要好多了。這就是說,catch語句應(yīng)當(dāng)盡量指定具體的異常類型,而不應(yīng)該指定涵蓋范圍太廣的Exception類。

      另一方面,除了這兩個(gè)特定的異常,還有其他許多異常也可能出現(xiàn)。例如,如果由于某種原因,executeQuery返回了null,該怎么辦?答案是讓它們繼續(xù)拋出,即不必捕獲也不必處理。實(shí)際上,我們不能也不應(yīng)該去捕獲可能出現(xiàn)的所有異常,程序的其他地方還有捕獲異常的機(jī)會(huì)——直至最后由JVM處理。

      結(jié)論二:在catch語句中盡可能指定具體的異常類型,必要時(shí)使用多個(gè)catch。不要試圖處理所有可能出現(xiàn)的異常。

      反例之三:占用資源不釋放

      代碼:3行-14行。

      異常改變了程序正常的執(zhí)行流程。這個(gè)道理雖然簡(jiǎn)單,卻常常被人們忽視。如果程序用到了文件、Socket、JDBC連接之類的資源,即使遇到了異常,也要正確釋放占用的資源。為此,Java提供了一個(gè)簡(jiǎn)化這類操作的關(guān)鍵詞finally。

      finally是樣好東西:不管是否出現(xiàn)了異常,F(xiàn)inally保證在try/catch/finally塊結(jié)束之前,執(zhí)行清理任務(wù)的代碼總是有機(jī)會(huì)執(zhí)行。遺憾的是有些人卻不習(xí)慣使用finally。

      當(dāng)然,編寫finally塊應(yīng)當(dāng)多加小心,特別是要注意在finally塊之內(nèi)拋出的異常——這是執(zhí)行清理任務(wù)的最后機(jī)會(huì),盡量不要再有難以處理的錯(cuò)誤。

      結(jié)論三:保證所有資源都被正確釋放。充分運(yùn)用finally關(guān)鍵詞。

      反例之四:不說明異常的詳細(xì)信息

      代碼:3行-18行。

      仔細(xì)觀察這段代碼:如果循環(huán)內(nèi)部出現(xiàn)了異常,會(huì)發(fā)生什么事情?我們可以得到足夠的信息判斷循環(huán)內(nèi)部出錯(cuò)的原因嗎?不能。我們只能知道當(dāng)前正在處理的類發(fā)生了某種錯(cuò)誤,但卻不能獲得任何信息判斷導(dǎo)致當(dāng)前錯(cuò)誤的原因。

      printStackTrace的堆棧跟蹤功能顯示出程序運(yùn)行到當(dāng)前類的執(zhí)行流程,但只提供了一些最基本的信息,未能說明實(shí)際導(dǎo)致錯(cuò)誤的原因,同時(shí)也不易解讀。

      因此,在出現(xiàn)異常時(shí),最好能夠提供一些文字信息,例如當(dāng)前正在執(zhí)行的類、方法和其他狀態(tài)信息,包括以一種更適合閱讀的方式整理和組織printStackTrace提供的信息。

      結(jié)論四:在異常處理模塊中提供適量的錯(cuò)誤原因信息,組織錯(cuò)誤信息使其易于理解和閱讀。

      反例之五:過于龐大的try塊

      代碼:3行-14行。

      經(jīng)常可以看到有人把大量的代碼放入單個(gè)try塊,實(shí)際上這不是好習(xí)慣。這種現(xiàn)象之所以常見,原因就在于有些人圖省事,不愿花時(shí)間分析一大塊代碼中哪幾行代碼會(huì)拋出異常、異常的具體類型是什么。把大量的語句裝入單個(gè)巨大的try塊就象是出門旅游時(shí)把所有日常用品塞入一個(gè)大箱子,雖然東西是帶上了,但要找出來可不容易。

      一些新手常常把大量的代碼放入單個(gè)try塊,然后再在catch語句中聲明Exception,而不是分離各個(gè)可能出現(xiàn)異常的段落并分別捕獲其異常。這種做法為分析程序拋出異常的原因帶來了困難,因?yàn)橐淮蠖未a中有太多的地方可能拋出Exception。

      結(jié)論五:盡量減小try塊的體積。

      反例之六:輸出數(shù)據(jù)不完整

      代碼:7行-11行。

      不完整的數(shù)據(jù)是Java程序的隱形殺手。仔細(xì)觀察這段代碼,考慮一下如果循環(huán)的中間拋出了異常,會(huì)發(fā)生什么事情。循環(huán)的執(zhí)行當(dāng)然是要被打斷的,其次,catch塊會(huì)執(zhí)行——就這些,再也沒有其他動(dòng)作了。已經(jīng)輸出的數(shù)據(jù)怎么辦?使用這些數(shù)據(jù)的人或設(shè)備將收到一份不完整的(因而也是錯(cuò)誤的)數(shù)據(jù),卻得不到任何有關(guān)這份數(shù)據(jù)是否完整的提示。對(duì)于有些系統(tǒng)來說,數(shù)據(jù)不完整可能比系統(tǒng)停止運(yùn)行帶來更大的損失。

      較為理想的處置辦法是向輸出設(shè)備寫一些信息,聲明數(shù)據(jù)的不完整性;另一種可能有效的辦法是,先緩沖要輸出的數(shù)據(jù),準(zhǔn)備好全部數(shù)據(jù)之后再一次性輸出。

      結(jié)論六:全面考慮可能出現(xiàn)的異常以及這些異常對(duì)執(zhí)行流程的影響。


    改寫后的代碼

      根據(jù)上面的討論,下面給出改寫后的代碼。也許有人會(huì)說它稍微有點(diǎn)啰嗦,但是它有了比較完備的異常處理機(jī)制。

      

    Code

      本文的結(jié)論不是放之四海皆準(zhǔn)的教條,有時(shí)常識(shí)和經(jīng)驗(yàn)才是最好的老師。如果你對(duì)自己的做法沒有百分之百的信心,務(wù)必加上詳細(xì)、全面的注釋。
    一方面,不要笑話這些錯(cuò)誤,不妨問問你自己是否真地徹底擺脫了這些壞習(xí)慣。即使最有經(jīng)驗(yàn)的程序員偶爾也會(huì)誤入歧途,原因很簡(jiǎn)單,因?yàn)樗鼈兇_確實(shí)實(shí)帶來了“方便”。所有這些反例都可以看作Java編程世界的惡魔,它們美麗動(dòng)人,無孔不入,時(shí)刻誘惑著你。也許有人會(huì)認(rèn)為這些都屬于雞皮蒜毛的小事,不足掛齒,但請(qǐng)記住:勿以惡小而為之,勿以善小而不為。


    文章來源:http://www.cnblogs.com/xiaoao808/archive/2008/08/01/1258247.html
    posted @ 2008-08-01 15:57 破名超難起 閱讀(80) | 評(píng)論 (0)編輯 收藏

    請(qǐng)求有效性處理,使用令牌可以有效的防止重復(fù)提交。
    protected String generateToken(HttpServletRequest request) 創(chuàng)建一個(gè)令牌.
    protected boolean isTokenValid(HttpServletRequest request) 檢查令牌是否有效
    protected boolean isTokenValid(HttpServletRequest request,Boolean reset) 檢查令牌是否有效,并且重置令牌(如果reset 是true)
    protected void resetToken(HttpServletRequest request) 重置令牌
    protected void saveToken(HttpServletRequest request) 添加令牌

     

    基本原理:

    服務(wù)器端在處理到達(dá)的請(qǐng)求之前,會(huì)將請(qǐng)求中包含的令牌值與保存在當(dāng)前用戶會(huì)話中的令牌值進(jìn)行比較,
    看是否匹配。在處理完該請(qǐng)求后,且在答復(fù)發(fā)送給客戶端之前,將會(huì)產(chǎn)生一個(gè)新的令牌,該令牌除傳給
    客戶端以外,也會(huì)將用戶會(huì)話中保存的舊的令牌進(jìn)行替換。這樣如果用戶回退到剛才的提交頁面并再次
    提交的話,客戶端傳過來的令牌就和服務(wù)器端的令牌不一致,從而有效地防止了重復(fù)提交的發(fā)生。

     

     實(shí)例:

     

    Code

     

    這個(gè)Action主要作用就是在跳轉(zhuǎn)的頁面上加入Token,只有加入Token才能實(shí)現(xiàn)Token的驗(yàn)證。執(zhí)行完這個(gè)Action后,跳轉(zhuǎn)到的頁面會(huì)出現(xiàn)類似如下的一個(gè)hidden控件

     

    Code

     

    那么恭喜你,Token生效拉,注意,跳轉(zhuǎn)到的頁面里面,表單指可以用Struts標(biāo)簽來生成,不可以用HTML來生成,不然Token是無效的。

     

    使用Token的第一步完成,第二步,在提交的Action中驗(yàn)證Token是否符合,代碼如下:

    Code

     

    這樣就完成了防止表單重復(fù)提交的功能。

    實(shí)例源碼下載


    文章來源:http://www.cnblogs.com/xiaoao808/archive/2008/08/01/1258067.html
    posted @ 2008-08-01 12:07 破名超難起 閱讀(113) | 評(píng)論 (0)編輯 收藏

    在用戶登錄輸入密碼時(shí),常常會(huì)有因?yàn)榇髮戞i定開啟而造成輸入密碼錯(cuò)誤的情況,如果在用戶大寫鎖定開啟時(shí)給予提示,就可以盡量避免這種情況的發(fā)生。

    一下是代碼:

    Code

    文章來源:http://www.cnblogs.com/xiaoao808/archive/2008/07/31/1257624.html
    posted @ 2008-07-31 21:18 破名超難起 閱讀(245) | 評(píng)論 (0)編輯 收藏
         摘要:      前一段時(shí)間朱哥一直在搞視頻轉(zhuǎn)換這個(gè)東東,我也一直很有興趣,就嘗試了一下。      首先是文件上傳功能的完成,做得很粗糙,沒有驗(yàn)證上傳文件是否為視頻文件。利用前一段時(shí)間看視頻學(xué)來的部分代碼很輕松搞定。      接下來,就是視頻轉(zhuǎn)換了,...  閱讀全文
    posted @ 2008-07-31 16:41 破名超難起 閱讀(147) | 評(píng)論 (0)編輯 收藏
    主站蜘蛛池模板: 天天摸天天碰成人免费视频| 99精品视频免费| 免费A级毛片无码无遮挡内射| 色影音免费色资源| 91在线视频免费观看| 99热精品在线免费观看| 久久这里只精品99re免费| 国产精品成人免费福利| 国产猛烈高潮尖叫视频免费| 中文字幕亚洲一区| 亚洲福利视频导航| 亚洲一级免费毛片| 无套内射无矿码免费看黄| 老司机精品免费视频| 亚洲精品视频免费在线观看| 免费羞羞视频网站| 国产亚洲一区二区在线观看| 亚洲人成电影院在线观看| 亚洲欧洲日韩国产综合在线二区| 亚洲成年网站在线观看| 亚洲av极品无码专区在线观看| 亚洲成av人无码亚洲成av人 | 亚洲三级电影网站| 亚洲综合在线一区二区三区 | 中文字幕亚洲免费无线观看日本 | 亚洲成在人线在线播放无码| 国产伦精品一区二区免费| 91香蕉成人免费网站| 亚洲人AV永久一区二区三区久久| 亚洲视频免费在线观看| 亚洲av无码成人精品国产| 久久狠狠躁免费观看2020| 国产免费久久精品| 78成人精品电影在线播放日韩精品电影一区亚洲 | 亚洲精品**中文毛片| 美女一级毛片免费观看| 亚洲AV无码乱码国产麻豆| 亚洲尤码不卡AV麻豆| 亚洲人成日本在线观看| 国产高清视频免费在线观看| 色婷婷7777免费视频在线观看|