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

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

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

    隨筆-31  評論-7  文章-0  trackbacks-0
      2008年8月16日

    內容如下:

     

    Code

    大家注意身體啊 



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

    防盜鏈原理:

    http標準協議中有專門的字段記錄referer

    一來可以追溯上一個入站地址是什么

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

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

    網上比較多的2種

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

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


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

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

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

    接下就是做一個 .htaccess 文件了,其 .htaccess 文件內容為

    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]

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

    這個方法有個好處是,不同的虛擬主機用不同的描述定義。

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

    還有第三種:

    我在解決plog禁止盜鏈的時候,發現個問題,也算個好方法。
    plog把所有資源都自己管理起來,用resserver.php來動態顯示,這樣統一的入口方便添加權限操作。
    同時造成上面2種方法無法使用,因為不再是apache直接訪問資源文件,而是php通過文件讀取。

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


    引用

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





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

    我們常常在下載的時候,也碰到盜鏈網站無法下載,報盜鏈的問題。要下載這類文件最簡單的方法就是改referer

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



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

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

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

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

      4、等待轉換進程結束,如果成功將相應紀錄的videostat字段的值改為1(表示轉換成功),若轉換失敗則將失敗次數字段加一(confailtime=confailtime+1)

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

    Code

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

    還有一點需要注意的是獲得命令行的輸出結果先要從錯誤流中獲得,即(ErrorStream),而非從輸入流(InputStream)中獲得,很有用的經驗。



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

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

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

    給出代碼

    代碼

     

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

     

    代碼

     

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

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



    --------------------------
    09博客園紀念T恤
    新聞:網速調查報告:韓國互聯網網速全球居首
    網站導航: 博客園首頁  個人主頁  新聞  社區  博問  閃存  找找看
    文章來源:http://www.cnblogs.com/xiaoao808/archive/2009/08/03/1537870.html
    posted @ 2009-08-03 19:46 破名超難起 閱讀(4899) | 評論 (7)編輯 收藏
    http://family168.com/oa/springsecurity/html/index.html
    posted @ 2009-07-19 18:28 破名超難起 閱讀(197) | 評論 (0)編輯 收藏

    package lc.util;

    import java.math.BigDecimal;

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

     private MathHelper() {

     }

     /**
      * 提供精確的加法運算。
      *
      * @param v1
      *            被加數
      * @param v2
      *            加數
      * @return 兩個參數的和
      */
     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();
     }

     /**
      * 提供精確的減法運算。
      *
      * @param v1
      *            被減數
      * @param v2
      *            減數
      * @return 兩個參數的差
      */
     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();
     }

     /**
      * 提供精確的乘法運算。
      *
      * @param v1
      *            被乘數
      * @param v2
      *            乘數
      * @return 兩個參數的積
      */
     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();
     }

     /**
      * 提供(相對)精確的除法運算,當發生除不盡的情況時,精確到 小數點以后10位,以后的數字四舍五入。
      *
      * @param v1
      *            被除數
      * @param v2
      *            除數
      * @return 兩個參數的商
      */
     public static double div(double v1, double v2) {
      return div(v1, v2, DEF_DIV_SCALE);
     }

     /**
      * 提供(相對)精確的除法運算。當發生除不盡的情況時,由scale參數指 定精度,以后的數字四舍五入。
      *
      * @param v1
      *            被除數
      * @param v2
      *            除數
      * @param scale
      *            表示表示需要精確到小數點以后幾位。
      * @return 兩個參數的商
      */

     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();
     }

     /**
      * 提供精確的小數位四舍五入處理。
      *
      * @param v
      *            需要四舍五入的數字
      * @param scale
      *            小數點后保留幾位
      * @return 四舍五入后的結果
      */
     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博客園紀念T恤
    新聞:王建宙臺灣布道TD:痛快,一起努力的感覺
    網站導航: 博客園首頁  個人主頁  新聞  社區  博問  閃存  找找看
    文章來源:http://www.cnblogs.com/xiaoao808/archive/2009/05/20/1469589.html
    posted @ 2009-05-20 17:13 破名超難起 閱讀(311) | 評論 (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("簡介"));

    }

    }catch(Exception e)

    {

    System.out.println(e);

    }

    }

    }



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

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

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

     

    點擊下載源碼



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

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

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

          jsp頁面中,首先當然是要添加AjaxTags的標簽支持,需要如下語句

    Code

         然后在頁面中加入如下的標簽

     

    Code

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

        在 autocomplete.view對應的Servlet類中需要建立xml來供頁面調取,代碼如下

    Code
        其實還是很簡單的,接下來看CarService的代碼吧,重點其實只有一段,然后在下面顯示出自動提示,于是可以把剛才的那個ajax標簽修改如下
    Code

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

    Code

     接下來是我的Action,在寫Action的時候,我以為只需要把原來Servlet繼承的BaseAjaxServlet改為BaseAjaxAction就可以了,可后來才發現,jar包中根本就沒有BaseAjaxAction這個類,無語,去官方網站上看了后才知道,在1.2更新到1.3的時候,把對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();這個方法需要調用Action中的getXmlContent方法來完成xml的寫入,那就好說了,代碼如下:

    Code
    剩下工作就是在struts-config.xml中配置對應的action,在spring中配置對應的bean就ok拉

     



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

    我一直有通宵下東西的習慣,可又不忍心讓筆記本下載完成后一直等到我睡醒,所以我經常用迅雷給我們提供的下載完成后自動關機這個功能。

    然而現在迅雷運行在了虛擬機里面,這就郁悶了,即使自動關機也只能關掉一個虛擬機的進程,無奈我想到可不可以用shell程序來監測虛擬機的進程,當他關閉后就運行關機的命令,經過測試,果然成功了,具體代碼如下:

    Code

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

    使用起來也很方便,用"ps ux"找到vbox運行的進程,將其對應的time command值作為參數輸入進來,例如我的是:

    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

    則執行上述腳本文件:

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

    監測開始

    當虛擬機關機后命令行出現如下提示:

    Done..shuting down in 60 seconds.

    60秒后就會關機拉,如果你還不想關機,可以Ctrl+Alt+C停止當前任務,再進行其他操作,怎么樣,挺好使的

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


    查詢軟件xxx被哪些包依賴
    • apt-cache rdepends xxx
    增加一個光盤源
    • sudo apt-cdrom add
    系統升級
    • 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 -
    編譯時缺少h文件的自動處理
    • sudo auto-apt run ./configure
    查看安裝軟件時下載包的臨時存放目錄
    • ls /var/cache/apt/archives
    備份當前系統安裝的所有包的列表
    • dpkg --get-selections | grep -v deinstall > ~/somefile
    從上面備份的安裝包的列表文件恢復所有包
    • dpkg --set-selections < ~/somefile
      sudo dselect
    清理舊版本的軟件緩存
    • sudo apt-get autoclean
    清理所有軟件緩存
    • sudo apt-get clean
    刪除系統不再使用的孤立軟件
    • sudo apt-get autoremove
    查看包在服務器上面的地址
    • apt-get -qq --print-uris install ssh | cut -d' -f2
    系統 查看內核
    • uname -a
    查看Ubuntu版本
    • cat /etc/issue
    查看內核加載的模塊
    • lsmod
    查看PCI設備
    • lspci
    查看USB設備
    • lsusb
    查看網卡狀態
    • sudo ethtool eth0
    查看CPU信息
    • cat /proc/cpuinfo
    顯示當前硬件信息
    • lshw
    硬盤 查看硬盤的分區
    • 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 目錄名
    優盤沒法卸載
    • sync
      fuser -km /media/usbdisk
    內存 查看當前的內存使用情況
    • free -m
    進程 查看當前有哪些進程
    • ps -A
    中止一個進程
    • kill 進程號(就是ps -A中的第一列的數字)
      或者 killall 進程名
    強制中止一個進程(在上面進程中止不成功的時候使用)
    • kill -9 進程號
      或者 killall -9 進程名
    圖形方式中止一個程序
    • xkill 出現骷髏標志的鼠標,點擊需要中止的程序即可
    查看當前進程的實時狀況
    • top
    查看進程打開的文件
    • lsof -p
    ADSL 配置 ADSL
    • sudo pppoeconf
    ADSL手工撥號
    • sudo pon dsl-provider
    激活 ADSL
    • sudo /etc/ppp/pppoe_on_boot
    斷開 ADSL
    • sudo poff
    查看撥號日志
    • sudo plog
    如何設置動態域名
    • #首先去 http://www.3322.org 申請一個動態域名
      #然后修改 /etc/ppp/ip-up 增加撥號時更新域名指令
      sudo vim /etc/ppp/ip-up
      #在最后增加如下行
      w3m -no-cookie -dump 'http://username:password@members.3322.org/dyndns/update?system=dyndns&hostname=yourdns.3322.org'
    網絡 根據IP查網卡地址
    • arping IP地址
    查看當前IP地址
    • ifconfig eth0 |awk '/inet/ {split($2,x,":");print x[2]}'
    查看當前外網的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}'
    查看當前監聽80端口的程序
    • lsof -i :80
    查看當前網卡的物理地址
    • arp -a | awk '{print $4}'
      ifconfig eth0 | head -1 | awk '{print $5}'
    立即讓網絡支持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
    修改網卡MAC地址的方法
    • sudo ifconfig eth0 down #關閉網卡
      sudo ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE #然后改地址
      sudo ifconfig eth0 up #然后啟動網卡
    統計當前IP連接的個數
    • 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
    統計當前20000個IP包中大于100個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
    服務 添加一個服務
    • sudo update-rc.d 服務名 defaults 99
    刪除一個服務
    • sudo update-rc.d 服務名 remove
    臨時重啟一個服務
    • /etc/init.d/服務名 restart
    臨時關閉一個服務
    • /etc/init.d/服務名 stop
    臨時啟動一個服務
    • /etc/init.d/服務名 start
    設置 配置默認Java使用哪個
    • sudo update-alternatives --config java
    修改用戶資料
    • sudo chfn userid
    給apt設置代理
    • export http_proxy=http://xx.xx.xx.xx:xxx
    修改系統登錄信息
    • sudo vim /etc/motd
    中文 轉換文件名由GBK為UTF8
    • sudo apt-get install convmv
      convmv -r -f cp936 -t utf8 --notest --nosmart *
    批量轉換src目錄下的所有文件內容由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
    轉換文件內容由GBK到UTF8
    • iconv -f gbk -t utf8 $i > newfile
    轉換 mp3 標簽編碼
    • sudo apt-get install python-mutagen
      find . -iname “*.mp3” -execdir mid3iconv -e GBK {} ;
    控制臺下顯示中文
    • sudo apt-get install zhcon
      使用時,輸入zhcon即可
    文件 快速查找某個文件
    • whereis filename
    • find 目錄 -name 文件名
    查看文件類型
    • file filename
    顯示xxx文件倒數6行的內容
    • tail -n 6 xxx
    讓tail不停地讀地最新的內容
    • tail -n 10 -f /var/log/apache2/access.log
    查看文件中間的第五行(含)到第10行(含)的內容
    • sed -n '5,10p' /var/log/apache2/access.log
    查找包含xxx字符串的文件
    • grep -l -r xxx .
    查找關于xxx的命令
    • apropos xxx
      man -k xxx
    通過ssh傳輸文件
    • scp -rp /path/filename username@remoteIP:/path #將本地文件拷貝到服務器上
      scp -rp username@remoteIP:/path/filename /path #將遠程文件從服務器下載到本地
    查看某個文件被哪些應用程序讀寫
    • lsof 文件名
    把所有文件的后輟由rm改為rmvb
    • rename 's/.rm$/.rmvb/' *
    把所有文件名中的大寫改為小寫
    • rename 'tr/A-Z/a-z/' *
    刪除特殊文件名的文件,如文件名:--help.txt
    • rm -- --help.txt 或者 rm ./--help.txt
    查看當前目錄的子目錄
    • ls -d */. 或 echo */.
    將當前目錄下最近30天訪問過的文件移動到上級back目錄
    • find . -type f -atime -30 -exec mv {} ../back ;
    將當前目錄下最近2小時到8小時之內的文件顯示出來
    • find . -mmin +120 -mmin -480 -exec more {} ;
    刪除修改時間在30天之前的所有文件
    • find . -type f -mtime +30 -mtime -3600 -exec rm {} ;
    查找guest用戶的以avi或者rm結尾的文件并刪除掉
    • find . -name '*.avi' -o -name '*.rm' -user 'guest' -exec rm {} ;
    查找的不以java和xml結尾,并7天沒有使用的文件刪除掉
    • find . ! -name *.java ! -name ‘*.xml’ -atime +7 -exec rm {} ;
    統計當前文件個數
    • ls /usr/bin|wc -w
    統計當前目錄個數
    • ls -l /usr/bin|grep ^d|wc -l
    顯示當前目錄下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:/// - 全部掛載的設備和網絡
      * network:/// - 瀏覽可用的網絡
      * burn:/// - 一個刻錄 CDs/DVDs 的數據虛擬目錄
      * smb:/// - 可用的 windows/samba 網絡資源
      * x-nautilus-desktop:/// - 桌面項目和圖標
      * file:/// - 本地文件
      * trash:/// - 本地回收站目錄
      * ftp:// - FTP 文件夾
      * ssh:// - SSH 文件夾
      * fonts:/// - 字體文件夾,可將字體文件拖到此處以完成安裝
      * themes:/// - 系統主題文件夾
    查看已安裝字體
    • 在nautilus的地址欄里輸入”fonts:///“,就可以查看本機所有的fonts
    程序 詳細顯示程序的運行信息
    • strace -f -F -o outfile <cmd>
    日期和時間 設置日期
    • #date -s mm/dd/yy
    設置時間
    • #date -s HH:MM
    將時間寫入CMOS
    • hwclock --systohc
    讀取CMOS時間
    • hwclock --hctosys
    從服務器上同步時間
    • sudo ntpdate time.nist.gov
      sudo ntpdate time.windows.com
    控制臺 不同控制臺間切換
    • Ctrl + ALT + ←
      Ctrl + ALT + →
    指定控制臺切換
    • Ctrl + ALT + Fn(n:1~7)
    控制臺下滾屏
    • SHIFT + pageUp/pageDown
    控制臺抓圖
    • setterm -dump n(n:1~7)
    數據庫 mysql的數據庫存放在地方
    • /var/lib/mysql
    從mysql中導出和導入數據
    • mysqldump 數據庫名 > 文件名 #導出數據庫
      mysqladmin create 數據庫名 #建立數據庫
      mysql 數據庫名 < 文件名 #導入數據庫
    忘了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 '你的新密碼'
    其它 下載網站文檔
    • wget -r -p -np -k http://www.21cn.com
      · -r:在本機建立服務器端目錄結構;
      · -p: 下載顯示HTML文件的所有圖片;
      · -np:只下載目標站點指定目錄及其子目錄的內容;
      · -k: 轉換非相對鏈接為相對鏈接。
    如何刪除Totem電影播放機的播放歷史記錄
    • rm ~/.recently-used
    如何更換gnome程序的快捷鍵
    • 點擊菜單,鼠標停留在某條菜單上,鍵盤輸入任意你所需要的鍵,可以是組合鍵,會立即生效;
      如果要清除該快捷鍵,請使用backspace
    vim 如何顯示彩色字符
    • sudo cp /usr/share/vim/vimcurrent/vimrc_example.vim /usr/share/vim/vimrc
    如何在命令行刪除在會話設置的啟動程序
    • cd ~/.config/autostart
      rm 需要刪除啟動程序
    如何提高wine的反應速度 sudo sed -ie '/GBK/,/^}/d' /usr/share/X11/locale/zh_CN.UTF-8/XLC_LOCALE

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

    這 四種獲取數據的方式都各有適用的場合,要根據實際情況做相應的決定,^_^,最好的方式無疑就是打開show_sql選項看看執行的情況來做分析,系統結 構上只用保證這種調整是容易實現的就好了,在cache這個方面的調整自然是非常的容易,只需要調整配置文件里的設置,而查詢的方式則可對外部進行屏蔽, 這樣要根據實際情況調整也非常容易。

    推薦三篇關于Hibernate緩存機制介紹的文章:
    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) | 評論 (0)編輯 收藏
    主站蜘蛛池模板: 在线看片免费人成视久网| 毛片a级三毛片免费播放| 亚洲妓女综合网99| 处破痛哭A√18成年片免费| 国产精品高清免费网站| 亚洲大香人伊一本线| 亚洲毛片网址在线观看中文字幕| 免费A级毛片无码A∨中文字幕下载| 亚洲日本VA午夜在线影院| 亚洲精品无码成人AAA片| 全免费一级午夜毛片| 久草免费手机视频| 久久亚洲AV成人无码国产电影 | 亚洲激情黄色小说| 国产不卡免费视频| aⅴ免费在线观看| 一个人看的www在线免费视频| jlzzjlzz亚洲jzjzjz| 亚洲中文字幕无码一久久区| 大学生美女毛片免费视频| 久久国产精品免费网站| 特级毛片A级毛片100免费播放| 久久亚洲精品成人无码网站| 红杏亚洲影院一区二区三区| 全免费a级毛片免费看不卡 | 亚洲另类激情综合偷自拍图| 免费观看一级毛片| 亚洲毛片免费视频| 成在线人免费无码高潮喷水| 亚洲av无码一区二区三区天堂| 亚洲码一区二区三区| 亚洲不卡av不卡一区二区| 亚洲А∨精品天堂在线| 丁香花在线观看免费观看 | 亚洲精品成人a在线观看| 亚洲精品动漫免费二区| 免费一级黄色毛片| 我要看WWW免费看插插视频| 最近中文字幕mv免费高清在线| 最新亚洲成av人免费看| 日韩在线视频线视频免费网站|