佳麗斯 加厚雙人/單人秋冬被子暖冬 羊毛被芯羊毛柔絲被特價包郵 憂憂魚冬外穿打底褲女秋冬厚長褲女褲加絨加厚高腰彈力鉛筆褲靴褲 韓國代購2013新款 韓版秋冬休閑女時尚磨破口袋衛衣韓版學生裝 潮

          有時,退一步,能一口氣進幾步,只是這先退一步需要勇氣和自信。

          用心愛你,努力工作。

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            70 隨筆 :: 1 文章 :: 33 評論 :: 0 Trackbacks

          #

          JavaScript CSS Style屬性對照表

          盒子標簽和屬性對照

          CSS語法 (不區分大小寫)   JavaScript語法 (區分大小寫)
          border   border
          border-bottom   borderBottom
          border-bottom-color   borderBottomColor
          border-bottom-style   borderBottomStyle
          border-bottom-width   borderBottomWidth
          border-color   borderColor
          border-left   borderLeft
          border-left-color   borderLeftColor
          border-left-style   borderLeftStyle
          border-left-width   borderLeftWidth
          border-right   borderRight
          border-right-color   borderRightColor
          border-right-style   borderRightStyle
          border-right-width   borderRightWidth
          border-style   borderStyle
          border-top   borderTop
          border-top-color   borderTopColor
          border-top-style   borderTopStyle
          border-top-width   borderTopWidth
          border-width   borderWidth
          clear   clear
          float   floatStyle
          margin   margin
          margin-bottom   marginBottom
          margin-left   marginLeft
          margin-right   marginRight
          margin-top   marginTop
          padding   padding
          padding-bottom   paddingBottom
          padding-left   paddingLeft
          padding-right   paddingRight
          padding-top   paddingTop

          顏色和背景標簽和屬性對照


          CSS語法 (不區分大小寫)   JavaScript語法 (區分大小寫)
          background   background
          background-attachment   backgroundAttachment
          background-color   backgroundColor
          background-image   backgroundImage
          background-position   backgroundPosition
          background-repeat   backgroundRepeat
          color   color

          樣式標簽和屬性對照


          CSS語法 (不區分大小寫)   JavaScript語法 (區分大小寫)
          display   display
          list-style-type   listStyleType
          list-style-image   listStyleImage
          list-style-position   listStylePosition
          list-style   listStyle
          white-space   whiteSpace

          文字樣式標簽和屬性對照


          CSS語法 (不區分大小寫)   JavaScript語法 (區分大小寫)
          font   font
          font-family   fontFamily
          font-size   fontSize
          font-style   fontStyle
          font-variant   fontVariant
          font-weight   fontWeight

          文本標簽和屬性對照


          CSS語法 (不區分大小寫)   JavaScript語法 (區分大小寫)
          letter-spacing   letterSpacing
          line-break   lineBreak
          line-height   lineHeight
          text-align   textAlign
          text-decoration   textDecoration
          text-indent   textIndent
          text-justify   textJustify
          text-transform   textTransform
          vertical-align   verticalAlign

          posted @ 2008-12-16 14:29 王生生 閱讀(229) | 評論 (0)編輯 收藏

          wordpress數據庫表基本結構:

          wp_options:系統基本設置信息;
          wp_users:注冊用戶基本信息;
          wp_usermeta:注冊用戶附加信息,主要包括權限等設置;
          wp_categories: 日記分類,友站鏈接(blogroll)也包含其中;分類之間也可以有從屬關系;公開日記在category_count中計數,私人日記不計數;
          wp_links:友站鏈接(blogroll);
          wp_link2cat: 友站鏈接的分類;
          wp_posts:日記,其中的上傳的附件和圖片也作為其中的記錄,不過類別不同,與日記存在從屬關系;其中有幾個字段好像沒用,如: post_category,post_parent
          wp_post2cat:日記(包括附件)的分類;
          wp_postmeta:日記中的一些附加信息,也包括上傳附件的一些附加信息,自定義字段也存在這里,如:Jerome’s Keywords的tag屬性就是保存在這里的;
          wp_comments:評論,評論的游客的userid為0;
          posted @ 2008-12-12 11:38 王生生 閱讀(836) | 評論 (0)編輯 收藏

                  通過一個簡單的例子來闡述。
          <script>
          function Lecture(name,teacher){
             this.name=name;
             this.teacher=teacher;
          }

          Lecture.prototype.display=function(){
             return this.teacher+"is teaching "+this.name;
          }

          function Schedule(lectures){
             this.lectures=lectures;
          }

          Schedule.prototype.display=function(){
             var str="";
             for(var i=0;i<this.lectures.length;i++)
                str+=this.lectures[i].display()+" ";
             return str;
          }

          var myLecture=new Lecture("Gym","Hunk Wang");
          var myLecture2=new Lecture("Tom","Ducklyl");

          var myArray=new Array(myLecture,myLecture2);
          var mySchedule=new Schedule(myArray);

          alert(mySchedule.display());
          </script>
          運行結果為:Hunk Wang is teaching Gym! Ducklyl is teaching Tom!

          下面分析一下流程,以上建立兩個類LectureSchedule
          首先初始化Lecture類,調用Lecture類構造函數,接著把Lecture類的對象,作為參數傳入Schedule類,Schedule對象初始化,從而實現上述結果。
          不難發現,這種方式和java是類似的。只過javascript要真正實現面象對象,還需要很多過程實現。
          期待后續。

          posted @ 2008-12-10 14:52 王生生 閱讀(173) | 評論 (0)編輯 收藏

          通過下面的例子來說明js的繼承機制。js通過 function來聲明一個類,同"class".

          function Circle(radius)
          {
              this.r = radius;
          }

          Circle.PI = 3.14159;

          Circle.prototype.area = function(){
              return Circle.PI * parseInt(this.r) * parseInt(this.r);
          }

          //定義ChildCircle子類
          function ChildCircle(radius){
              this.root=Circle;
              this.root(radius);//調用父類的構造函數,也可以通過call方式調用
          //    Circle.call(this,radius);
          }

          ChildCircle.prototype=new Circle();//聲明繼承,ChildCircle繼承了Circle的所有方法

          //子類覆蓋父類的方法area
          ChildCircle.prototype.area = function(){
              return 2 * parseInt(this.r) * parseInt(this.r);
          }

          var d = new ChildCircle(2);
          alert(d.area());


          以上是一個簡單的例子來說明javascript也可實現面向對象的機制,關鍵看你如何應用。在設計較大規模的JS程序時,利用JS本身的特性(基于prototype的繼承),借鑒面向對象編程的方法,模擬類的定義與繼承機制,會使開發的JS程序具有更高的質量。
          posted @ 2008-12-10 09:27 王生生 閱讀(168) | 評論 (0)編輯 收藏


          1. 安裝Wordpress主題
          2. Wordpress要求主題存放在wp-content/themes/目錄,你只需將你喜愛的主題(含主題文件夾)用ftp上傳到該目錄,并在Dashboard(后臺)-Design(外觀)激活你上傳的主題即可

          3. 安裝Wordpress插件
          4. 同樣,Wordpress要求插件存放在wp-content/plugins/目錄,你只需將你喜愛的插件(含插件文件夾)用ftp上傳到該目 錄,爾后在Dashboard(后臺)-Plugins(插件)激活你上傳的插件,如若插件需要設置,請根據插件說明進行設置即可

          posted @ 2008-11-22 14:13 王生生 閱讀(2070) | 評論 (1)編輯 收藏

          WordPress 官方原版

          WordPress 2.6.2下載地址:http://www.ziddu.com/download/2722092/wordpress-2.6.2.zip.html


          安裝步驟:
          1、下載解壓后,放到php的web目錄下
          2、修改wp-config-sample.php,數據庫名稱、用戶名、密碼

          define('DB_NAME', '你的數據庫名');    // The name of the database
          define('DB_USER', '用戶名');     // Your MySQL username
          define('DB_PASSWORD', '密碼'); // ...and password

          3、wp-config-sample.php重新命名為 wp-config.php
          到此,安裝完成。

          WordPress 中文團隊也已經根據官方的壓縮包制作出了簡體中文版。

          WordPress.MU.v2.6.2.Simp.Chinese 漢化包下載:
          http://www.ziddu.com/download/2722118/ordPress.MU.v2.6.2.Simp.Chinese.pack.only.v1-wpcng.zip.html


          直接將漢化包,放到wp-content目錄下,修改wp-config.php中的“define (’WPLANG’, ”);”為“define (’WPLANG’, ‘zh_CN’);”;
          到此,漢化完成。

          或者直接下載,WordPress 2.6.3中文版下載地址:http://www.ziddu.com/download/2721797/wordpress.263.chs.zip.html


          posted @ 2008-11-22 13:25 王生生 閱讀(216) | 評論 (0)編輯 收藏

          單例模式 有以下的特點:

          1. 單例類只能有一個實例。
          2. 單例類必須自己創建自己的唯一的實例。
          3. 單例類必須給所有其他對象提供這一實例。

          代碼:

          Singleton.php :

          <?php
          class Singleton
          {
              private static $instance;

              private function __construct()
              {
              }

              public static function getInstance()
              {
                  if(self::$instance == null)
                  {
                      self::$instance = new Singleton();
                  }

                  return self::$instance;
              }
          }
          ?>

          在使用的時候,因為構造方法是private(私有)的,所以是不能直接實例化的,必須使用類似下面的方法:

          例子:

          <?php
          require_once('Singleton.php ');

          $instance = Singleton::getInstance();
          ?>

          ============================================

          其它關于靜態的說明

          靜態成員.
          他在類被聲明時就產生了,也就是在程序編譯階段產生的,它只有一個所有該類實例共享的原本,任何該類實例更改靜態變量的值后,其它該類實例再去訪問該靜態變量,其值已經變成更改后的值,因為其在內存,就存一個原本。
          非靜態成員是在類實例化時產生的,你new一個該類實例,系統就會為該類實例的所有非靜態成員新開辟一個空間,每個實例都只能自己的非靜態成員。(有多少個類的實例,就要開辟多少個非靜態成員的空間)

          單例類全局只有一個實例,你可以把它看成全局對象。

          從底層來說,編譯完成后主要是兩個部分,一是CPU指令,這一部分包含各種方法;二是數據,也就是程序定義的各種類型的變量。運行程序實例化一個對象時,按如下方式分配內存:
          1。在程序啟動時將靜態數據和靜態方法放入堆內存中。
          2。第一次實例化對象時將其它方法放入代碼段中。
          3。每次實例化對象時將其它數據放入棧內存中。
          實例化同一個對象時,上述1、2項不動,只是再加一個第3項即可。銷毀一個實例的時候,如果還有其它的實例存在,就只釋放該實例的棧數據段(上述第3項)。

          根據以上原理回答您的問題
          靜態方法和數據一般都是Public型的,用于類的極普遍的事物處理,可以在程序的任意地方調用,在整過程序運行過程中始終占用計算機內存,一搬少用。如果一個程序中的各個對象都用一個數據庫的話,可以使用靜態方法連接。

          單件模式的實例銷毀時可以釋放所有的非靜態方法和數據,,如果把這個類的所有方法都設計為靜態的,這些方法將一直占用內存,浪費資源,不可取。

          在new一個對象時,只是加一個數據段,并不重新加載方法和靜態變量。

          最后說一個變量傳送的問題,網上很多朋友在回答類之間參數傳遞時都說用靜態變量,我認為這種方法不好,本來加類的目的就是為了封裝,如果用一個類似于全局變量的靜態變量作為參數就大大削弱了封裝的意義。

          實際上,系統和應用程序對內存的管理相當復雜.
          =======================下面摘自思歸的文字

          從表面上看,靜態(static)成員可以通過 類名.成員名 來直接調用,而實例(instance)成員需要生成一個對象后才能調用。同一個操作,性能當然靜態成員好

          但其實區別是跟對象設計有關的,一般來說實例成員跟實例的狀態有關,某個方法的調用可能需要訪問當前對象的狀態,并改變其狀態,從而影響其他方法的結果

          而靜態成員是跟類本身有關,與單獨的實例狀態無關。但靜態成員不要太多了,否則就淪為以前的procedural programming風格了,也許對象需要重新設計或重構。

          靜態成員往往會在多線程下操作,需要做同步化控制

          posted @ 2008-11-15 17:52 王生生 閱讀(537) | 評論 (0)編輯 收藏

          優化PHP代碼的40條建議
          40 Tips for optimizing your php Code
          原文地址:http://reinholdweber.com/?p=3
          英文版權歸Reinhold Weber所有,中譯文作者yangyang(aka davidkoree)。雙語版可用于非商業傳播,但須注明英文版作者、版權信息,以及中譯文作者。翻譯水平有限,請廣大PHPer指正。

          1. If a method can be static, declare it static. Speed improvement is by a factor of 4. 如果一個方法可靜態化,就對它做靜態聲明。速率可提升至4倍。

          2. echo is faster than print. echo 比 print 快。

          3. Use echo’s multiple parameters instead of string concatenation. 使用echo的多重參數(譯注:指用逗號而不是句點)代替字符串連接。

          4. Set the maxvalue for your for-loops before and not in the loop. 在執行for循環之前確定最大循環數,不要每循環一次都計算最大值。

          5. Unset your variables to free memory, especially large arrays. 注銷那些不用的變量尤其是大數組,以便釋放內存。

          6. Avoid magic like __get, __set, __autoload 盡量避免使用__get,__set,__autoload。

          7. require_once() is expensive require_once()代價昂貴。

          8. Use full paths in includes and requires, less time spent on resolving the OS paths. 在包含文件時使用完整路徑,解析操作系統路徑所需的時間會更少。

          9. If you need to find out the time when the script started executing, $_SERVER[’REQUEST_TIME’] is preferred to time() 如果你想知道腳本開始執行(譯注:即服務器端收到客戶端請求)的時刻,使用$_SERVER[‘REQUEST_TIME’]要好于time()。

          10. See if you can use strncasecmp, strpbrk and stripos instead of regex. 檢查是否能用strncasecmp,strpbrk,stripos函數代替正則表達式完成相同功能。

          11. str_replace is faster than preg_replace, but strtr is faster than str_replace by a factor of 4. str_replace函數比preg_replace函數快,但strtr函數的效率是str_replace函數的四倍。

          12. If the function, such as string replacement function, accepts both arrays and single characters as arguments, and if your argument list is not too long, consider writing a few redundant replacement statements, passing one character at a time, instead of one line of code that accepts arrays as search and replace arguments. 如果一個字符串替換函數,可接受數組或字符作為參數,并且參數長度不太長,那么可以考慮額外寫一段替換代碼,使得每次傳遞參數是一個字符,而不是只寫一行 代碼接受數組作為查詢和替換的參數。

          13. It’s better to use select statements than multi if, else if, statements. 使用選擇分支語句(譯注:即switch case)好于使用多個if,else if語句。

          14. Error suppression with @ is very slow. 用@屏蔽錯誤消息的做法非常低效。

          15. Turn on apache’s mod_deflate 打開apache的mod_deflate模塊。

          16. Close your database connections when you’re done with them. 數據庫連接當使用完畢時應關掉。

          17. $row[’id’] is 7 times faster than $row[id]. $row[‘id’]的效率是$row[id]的7倍。

          18. Error messages are expensive. 錯誤消息代價昂貴。

          19. Do not use functions inside of for loop, such as for ($x=0; $x < count($array); $x) The count() function gets called each time. 盡量不要在for循環中使用函數,比如for ($x=0; $x < count($array); $x)每循環一次都會調用count()函數。

          20. Incrementing a local variable in a method is the fastest. Nearly the same as calling a local variable in a function. 在方法中遞增局部變量,速度是最快的。幾乎與在函數中調用局部變量的速度相當。

          21. Incrementing a global variable is 2 times slow than a local var. 遞增一個全局變量要比遞增一個局部變量慢2倍。

          22. Incrementing an object property (eg. $this->prop++) is 3 times slower than a local variable. 遞增一個對象屬性(如:$this->prop++)要比遞增一個局部變量慢3倍。

          23. Incrementing an undefined local variable is 9-10 times slower than a pre-initialized one. 遞增一個未預定義的局部變量要比遞增一個預定義的局部變量慢9至10倍。

          24. Just declaring a global variable without using it in a function also slows things down (by about the same amount as incrementing a local var). PHP probably does a check to see if the global exists. 僅定義一個局部變量而沒在函數中調用它,同樣會減慢速度(其程度相當于遞增一個局部變量)。PHP大概會檢查看是否存在全局變量。

          25. Method invocation appears to be independent of the number of methods defined in the class because I added 10 more methods to the test class (before and after the test method) with no change in performance. 方法調用看來與類中定義的方法的數量無關,因為我(在測試方法之前和之后都)添加了10個方法,但性能上沒有變化。

          26. Methods in derived classes run faster than ones defined in the base class. 派生類中的方法運行起來要快于在基類中定義的同樣的方法。

          27. A function call with one parameter and an empty function body takes about the same time as doing 7-8 $localvar++ operations. A similar method call is of course about 15 $localvar++ operations. 調用帶有一個參數的空函數,其花費的時間相當于執行7至8次的局部變量遞增操作。類似的方法調用所花費的時間接近于15次的局部變量遞增操作。

          28. Surrounding your string by ‘ instead of " will make things interpret a little faster since php looks for variables inside "…" but not inside ‘…’. Of course you can only do this when you don’t need to have variables in the string. 用單引號代替雙引號來包含字符串,這樣做會更快一些。因為PHP會在雙引號包圍的字符串中搜尋變量,單引號則不會。當然,只有當你不需要在字符串中包含變 量時才可以這么做。

          29. When echoing strings it’s faster to separate them by comma instead of dot. Note: This only works with echo, which is a function that can take several strings as arguments. 輸出多個字符串時,用逗號代替句點來分隔字符串,速度更快。注意:只有echo能這么做,它是一種可以把多個字符串當作參數的“函數”(譯注:PHP手冊 中說echo是語言結構,不是真正的函數,故把函數加上了雙引號)。

          30. A PHP script will be served at least 2-10 times slower than a static HTML page by Apache. Try to use more static HTML pages and fewer scripts. Apache解析一個PHP腳本的時間要比解析一個靜態HTML頁面慢2至10倍。盡量多用靜態HTML頁面,少用腳本。

          31. Your PHP scripts are recompiled every time unless the scripts are cached. Install a PHP caching product to typically increase performance by 25-100% by removing compile times. 除非腳本可以緩存,否則每次調用時都會重新編譯一次。引入一套PHP緩存機制通常可以提升25%至100%的性能,以免除編譯開銷。

          32. Cache as much as possible. Use memcached - memcached is a high-performance memory object caching system intended to speed up dynamic web applications by alleviating database load. OP code caches are useful so that your script does not have to be compiled on every request. 盡量做緩存,可使用memcached。memcached是一款高性能的內存對象緩存系統,可用來加速動態Web應用程序,減輕數據庫負載。對運算碼 (OP code)的緩存很有用,使得腳本不必為每個請求做重新編譯。

          33. When working with strings and you need to check that the string is either of a certain length you’d understandably would want to use the strlen() function. This function is pretty quick since it’s operation does not perform any calculation but merely return the already known length of a string available in the zval structure (internal C struct used to store variables in PHP). However because strlen() is a function it is still somewhat slow because the function call requires several operations such as lowercase & hashtable lookup followed by the execution of said function. In some instance you can improve the speed of your code by using an isset() trick. 當操作字符串并需要檢驗其長度是否滿足某種要求時,你想當然地會使用strlen()函數。此函數執行起來相當快,因為它不做任何計算,只返回在zval 結構(C的內置數據結構,用于存儲PHP變量)中存儲的已知字符串長度。但是,由于strlen()是函數,多多少少會有些慢,因為函數調用會經過諸多步 驟,如字母小寫化(譯注:指函數名小寫化,PHP不區分函數名大小寫)、哈希查找,會跟隨被調用的函數一起執行。在某些情況下,你可以使用isset() 技巧加速執行你的代碼。

          Ex.(舉例如下)
          if (strlen($foo) < 5) { echo "Foo is too short"; }
          vs.(與下面的技巧做比較)
          if (!isset($foo{5})) { echo "Foo is too short"; }

          Calling isset() happens to be faster then strlen() because unlike strlen(), isset() is a language construct and not a function meaning that it’s execution does not require function lookups and lowercase. This means you have virtually no overhead on top of the actual code that determines the string’s length. 調用isset()恰巧比strlen()快,因為與后者不同的是,isset()作為一種語言結構,意味著它的執行不需要函數查找和字母小寫化。也就是 說,實際上在檢驗字符串長度的頂層代碼中你沒有花太多開銷。

          34. When incrementing or decrementing the value of the variable $i++ happens to be a tad slower then ++$i. This is something PHP specific and does not apply to other languages, so don’t go modifying your C or Java code thinking it’ll suddenly become faster, it won’t. ++$i happens to be faster in PHP because instead of 4 opcodes used for $i++ you only need 3. Post incrementation actually causes in the creation of a temporary var that is then incremented. While pre-incrementation increases the original value directly. This is one of the optimization that opcode optimized like Zend’s PHP optimizer. It is still a good idea to keep in mind since not all opcode optimizers perform this optimization and there are plenty of ISPs and servers running without an opcode optimizer. 當執行變量$i的遞增或遞減時,$i++會比++$i慢一些。這種差異是PHP特有的,并不適用于其他語言,所以請不要修改你的C或Java代碼并指望它 們能立即變快,沒用的。++$i更快是因為它只需要3條指令(opcodes),$i++則需要4條指令。后置遞增實際上會產生一個臨時變量,這個臨時變 量隨后被遞增。而前置遞增直接在原值上遞增。這是最優化處理的一種,正如Zend的PHP優化器所作的那樣。牢記這個優化處理不失為一個好主意,因為并不 是所有的指令優化器都會做同樣的優化處理,并且存在大量沒有裝配指令優化器的互聯網服務提供商(ISPs)和服務器。

          35. Not everything has to be OOP, often it is too much overhead, each method and object call consumes a lot of memory. 并不是事必面向對象(OOP),面向對象往往開銷很大,每個方法和對象調用都會消耗很多內存。

          36. Do not implement every data structure as a class, arrays are useful, too. 并非要用類實現所有的數據結構,數組也很有用。

          37. Don’t split methods too much, think, which code you will really re-use. 不要把方法細分得過多,仔細想想你真正打算重用的是哪些代碼?

          38. You can always split the code of a method later, when needed. 當你需要時,你總能把代碼分解成方法。

          39. Make use of the countless predefined functions. 盡量采用大量的PHP內置函數。

          40. If you have very time consuming functions in your code, consider writing them as C extensions. 如果在代碼中存在大量耗時的函數,你可以考慮用C擴展的方式實現它們。

          41. Profile your code. A profiler shows you, which parts of your code consumes how many time. The Xdebug debugger already contains a profiler. Profiling shows you the bottlenecks in overview. 評估檢驗(profile)你的代碼。檢驗器會告訴你,代碼的哪些部分消耗了多少時間。Xdebug調試器包含了檢驗程序,評估檢驗總體上可以顯示出代碼 的瓶頸。

          42. mod_gzip which is available as an Apache module compresses your data on the fly and can reduce the data to transfer up to 80%. mod_zip可作為Apache模塊,用來即時壓縮你的數據,并可讓數據傳輸量降低80%。

          43. Excellent Article (http://phplens.com/lens/php-book/optimizing-debugging-php.php)about optimizing php by John Lim 另一篇優化PHP的精彩文章,由John Lim撰寫。

          posted @ 2008-11-15 17:51 王生生 閱讀(155) | 評論 (0)編輯 收藏

          1.RSS文件結構  
           1. <?xml version="1.0" encoding="gb2312" ?>   
             2. <rss version="2.0">   
             3. <channel>   
             4.   <title>我的Blog</title>                  //channel的標題  
             5.   <description>與我自己的技術Blog相關聯</description>    //channel的介紹  
             6.   <link>http://counter.csdn.net/pv.aspx?id=72</link>      //channel的url  
             7.   <item>   
             8.   <title><!-- 項標題 --></title>            //item的標題  
             9.   <link><!-- 項 URL --></link>            //item的url  
            10.   <description><!-- 簡要描述 --></description>         //item的介紹  
            11.   <!-- 可選的/可擴展的元素 -->         //item的其他屬性,比如更新時間  
            12.   </item>   
            13.   <item>  
            14.   <!-- 可多個<item>項目-->            //一個channel有多個item  
            15.   </item>  
            16. </channel>  
            17. </rss>  
          RSS是兩級結構,第一級結構是channel,相當于blog系統中某人的blog,第二級結構是item,相當于blog中的文章。屬性中最重要的是title、description和link,title是標題,description是介紹,link是與其相關的url。

          2.RSS的使用
          有的網站提供了RSS自動發現機制,可以很方便地把RSS的URL添加到RSS閱讀器中。如果沒有自動發現,那么可以手動把RSS鏈接的URL添加到 RSS閱讀器中,這樣就加入了一個用戶訂閱的頻道。在RSS閱讀器中可以更新頻道列表或點擊一個item鏈接打開該item的頁面。

          3.RSS的工作機制

          內容提供者在其網站上添加RSS的鏈接,以提供RSS訂閱功能,當打開這個鏈接時,傳送過去了一些頻道信息,比如:blog的作者名。

          一種做法是,RSS鏈接URL指向的是一個空內容的頁面,該頁面后臺程序通過傳過來的頻道信息訪問數據庫,獲取頻道列表,用Response.Write向該空頁面寫出XML格式的文件。

          另一種做法是,RSS鏈接URL指向的是一個xml文件,該文件由服務器的程序事先生成好的,放在服務器上,訪問時靜態獲取,服務器在作者每添加一個頻道列表時自動更新該xml文件。

          第一種做法的優點是管理方便,因為不需要為每個頻道生成xml文件,所有的RSS請求都由一個后臺頁面處理,接口統一,但每次訪問RSS鏈接時,都要動態地寫出RSS頻道列表,訪問效率相對較低,第二種做法的優點是訪問時,只是返回一個靜態的xml文件,不需要訪問數據庫來臨時生成,所以訪問效率相對較高,但每更新一次頻道列表中的項時,就要自動地重新生成xml文件以保證RSS文件的最新,這樣就降低了更新的效率。

          posted @ 2008-11-11 22:46 王生生 閱讀(170) | 評論 (0)編輯 收藏

              對于剛剛接觸Linux的人來說,一定會給Linux下一大堆各式各樣的文件名給搞暈。別個不說,單單就壓縮文件為例,我們知道在Windows下最常見的壓縮文件就只有兩種,一是,zip,另一個是.rar。可是Linux就不同了,它有.gz、.tar.gz、tgz等眾多的壓縮文件名,此外windows下的.zip和.rar也可以在Linux下使用,不過在Linux使用.zip和.rar的人就太少了。本文就來對這些常見的壓縮文件進行一
          番小結,希望你下次遇到這些文件時不至于被搞暈。
              在具體總結各類壓縮文件之前呢,首先要弄清兩個概念:打包和壓縮。打包是指將一大堆文件或目錄什么的變成一個總的文件,壓縮則是將一個大的文件通過一些壓縮算法變成一個小文件。為什么要區分這兩個概念呢?其實這源于Linux中的很多壓縮程序只能針對一個文件進行壓縮,這樣當你想要壓縮一大堆文件時,你就得先借助另它的工具將這一大堆文件先打成一個包,然后再就原來的壓縮程序進行壓縮。

          Linux下最常用的打包程序就是tar了,使用tar程序打出來的包我們常稱為tar包,tar包文件的命令通常都是以.tar結尾的。生成tar包后,就可以用其它的程序來進行壓縮了,所以首先就來講講tar命令的基本用法:

          tar命令的選項有很多(用man tar可以查看到),但常用的就那么幾個選項,下面來舉例說明一下:
          # tar -cf all.tar *.jpg
          這條命令是將所有.jpg的文件打成一個名為all.tar的包。-c是表示產生新的包
          ,-f指定包的文件名。

          # tar -rf all.tar *.gif
          這條命令是將所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的
          意思。
          # tar -uf all.tar logo.gif
          這條命令是更新原來tar包all.tar中logo.gif文件,-u是表示更新文件的意思。

          # tar -tf all.tar
          這條命令是列出all.tar包中所有文件,-t是列出文件的意思

          # tar -xf all.tar
          這條命令是解出all.tar包中所有文件,-x是解開的意思

          以上就是tar的最基本的用法。為了方便用戶在打包解包的同時可以壓縮或解壓文件,tar提供了一種特殊的功能。這就是tar可以在打包或解包的同時調用其它的壓縮程序,比如調用gzip、bzip2等。

          1) tar調用gzip

          gzip是GNU組織開發的一個壓縮程序,.gz結尾的文件就是gzip壓縮的結果。與gzip相對的解壓程序是gunzip。tar中使用-z這個參數來調用gzip。下面來舉例說明一下:

          # tar -czf all.tar.gz *.jpg
          這條命令是將所有.jpg的文件打成一個tar包,并且將其用gzip壓縮,生成一個gzip壓縮過的包,包名為all.tar.gz

          # tar -xzf all.tar.gz
          這條命令是將上面產生的包解開。

          2) tar調用bzip2

          bzip2是一個壓縮能力更強的壓縮程序,.bz2結尾的文件就是bzip2壓縮的結果。與bzip2相對的解壓程序是bunzip2。tar中使用-j這個參數來調用gzip。下面來舉例
          說明一下:

          # tar -cjf all.tar.bz2 *.jpg
          這條命令是將所有.jpg的文件打成一個tar包,并且將其用bzip2壓縮,生成一個bzip2壓縮過的包,包名為all.tar.bz2

          # tar -xjf all.tar.bz2
          這條命令是將上面產生的包解開。

          3)tar調用compress
          compress也是一個壓縮程序,但是好象使用compress的人不如gzip和bzip2的人多。.Z結尾的文件就是bzip2壓縮的結果。與 compress相對的解壓程序是uncompress。tar中使用-Z這個參數來調用compress。下面來舉例說明一下:

          # tar -cZf all.tar.Z *.jpg
          這條命令是將所有.jpg的文件打成一個tar包,并且將其用compress壓縮,生成一個uncompress壓縮過的包,包名為all.tar.Z

          # tar -xZf all.tar.Z
          這條命令是將上面產生的包解開

          有了上面的知識,你應該可以解開多種壓縮文件了,下面對于tar系列的壓縮文件作一個小結:

          1)對于.tar結尾的文件

          tar -xf all.tar

          2)對于.gz結尾的文件

          gzip -d all.gz
          gunzip all.gz

          3)對于.tgz或.tar.gz結尾的文件

          tar -xzf all.tar.gz
          tar -xzf all.tgz

          4)對于.bz2結尾的文件

          bzip2 -d all.bz2
          bunzip2 all.bz2

          5)對于tar.bz2結尾的文件

          tar -xjf all.tar.bz2

          6)對于.Z結尾的文件

          uncompress all.Z

          7)對于.tar.Z結尾的文件

          tar -xZf all.tar.z

          另外對于Window下的常見壓縮文件.zip和.rar,Linux也有相應的方法來解壓它們:

          1)對于.zip

          linux下提供了zip和unzip程序,zip是壓縮程序,unzip是解壓程序。它們的參數選項很多,這里只做簡單介紹,依舊舉例說明一下其用法:

          # zip all.zip *.jpg
          這條命令是將所有.jpg的文件壓縮成一個zip包
          # unzip all.zip
          這條命令是將all.zip中的所有文件解壓出來

          2)對于.rar

          要在linux下處理.rar文件,需要安裝RAR for Linux,可以從網上下載,但要記住,RAR for Linux不是免費的;可從http://www.rarsoft.com/download.htm下載RARfor Linux 3.2.0,然后安裝:

          # tar -xzpvf rarlinux-3.2.0.tar.gz
          # cd rar
          # make

          這樣就安裝好了,安裝后就有了rar和unrar這兩個程序,rar是壓縮程序,unrar是解壓程序。它們的參數選項很多,這里只做簡單介紹,依舊舉例說明一下其用法:

          # rar a all *.jpg
          這條命令是將所有.jpg的文件壓縮成一個rar包,名為all.rar,該程序會將.rar擴展名將自動附加到包名后。

          # unrar e all.rar
          這條命令是將all.rar中的所有文件解壓出來

               到此為至,我們已經介紹過linux下的tar、gzip、gunzip、bzip2、bunzip2、compress、 uncompress、 zip、unzip、rar、unrar等程式,你應該已經能夠使用它們對.tar、.gz、.tar.gz、.tgz、.bz2、.tar.bz2、. Z、.tar.Z、.zip、.rar這10種壓縮文件進行解壓了,以后應該不需要為下載了一個軟件而不知道如何在Linux下解開而煩惱了。而且以上方法對于Unix也基本有效。


          posted @ 2008-11-11 22:37 王生生 閱讀(238) | 評論 (0)編輯 收藏

          僅列出標題
          共7頁: 上一頁 1 2 3 4 5 6 7 下一頁 
          森露2013新款豹紋打底衫 高領 女 長袖 修身長袖t恤女 加絨加厚冬 2013春秋新款女裝 潮修身大碼長袖小西裝外套女 韓版中長款小西裝 憂憂魚2013秋冬新款直筒褲女顯瘦長褲加絨黑色休閑褲修身西褲女褲
          主站蜘蛛池模板: 恩平市| 中超| 三原县| 大悟县| 梅州市| 那曲县| 海兴县| 二连浩特市| 宜都市| 象山县| 兴城市| 和政县| 宜良县| 安图县| 皋兰县| 连城县| 同德县| 海丰县| 凤山市| 临沂市| 织金县| 鞍山市| 博兴县| 日喀则市| 鄂托克旗| 龙州县| 马龙县| 崇文区| 延吉市| 长汀县| 宝应县| 海阳市| 蓬莱市| 新余市| 青浦区| 敖汉旗| 太白县| 班戈县| 平阴县| 海城市| 会理县|