隨筆-31  評論-7  文章-0  trackbacks-0
            2009年8月25日

          內容如下:

           

          Code

          大家注意身體啊 



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

          防盜鏈原理:

          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 破名超難起 閱讀(333) | 評論 (0)編輯 收藏
            2009年8月4日

          這兩天完善了一下視頻轉換這個東西,以前做的那套東西上傳完之后就開始轉換,無法適應大并發量下的視頻轉換(我覺得同時有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 破名超難起 閱讀(275) | 評論 (0)編輯 收藏
            2009年8月3日

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

          東西很簡單,主要用到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 破名超難起 閱讀(4901) | 評論 (7)編輯 收藏
            2009年7月19日
          http://family168.com/oa/springsecurity/html/index.html
          posted @ 2009-07-19 18:28 破名超難起 閱讀(198) | 評論 (0)編輯 收藏
            2009年5月20日

          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 破名超難起 閱讀(313) | 評論 (0)編輯 收藏
            2009年5月8日

          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 破名超難起 閱讀(185) | 評論 (0)編輯 收藏
            2009年3月16日

          又一個新聞發布......比以前的更加人性化了,用到了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 破名超難起 閱讀(202) | 評論 (0)編輯 收藏
            2008年9月22日

               最近搞的一個通訊錄想要加一個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 破名超難起 閱讀(209) | 評論 (0)編輯 收藏
            2008年8月21日

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

          然而現在迅雷運行在了虛擬機里面,這就郁悶了,即使自動關機也只能關掉一個虛擬機的進程,無奈我想到可不可以用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 破名超難起 閱讀(520) | 評論 (0)編輯 收藏
          僅列出標題  下一頁
          主站蜘蛛池模板: 丰都县| 普定县| 龙里县| 宕昌县| 德钦县| 鄂尔多斯市| 焉耆| 中西区| 舒兰市| 佳木斯市| 广丰县| 淅川县| 桐城市| 南丹县| 临朐县| 故城县| 永德县| 平武县| 黄浦区| 二手房| 湄潭县| 瑞安市| 红桥区| 上思县| 衡水市| 荆州市| 西青区| 丽水市| 宕昌县| 榆树市| 武平县| 赤水市| 温宿县| 黄骅市| 龙井市| 江陵县| 监利县| 上高县| 长岛县| 盱眙县| 多伦县|