導航:首頁 > 源碼編譯 > socid編譯

socid編譯

發布時間:2022-10-25 07:27:05

① solid and foam模型中初始壓力如何添加

完全沒有必要在終端寫啊,終端寫起來麻煩,而且還不能用滑鼠定位,只能用鍵盤上下左右來確定行數,你可以直接在相應的tutorial文件夾下對0 constant system進行編譯,編譯好了之後保存,然後再去終端執行就可以了。

壓縮文件類型哪個好

7z 好 壓縮率 最高 一、目錄表(TOC)與分卷(Volume)

拋開壓縮演算法不談,我認為zip、rar在文件格式上最大的差異就在目錄表(Table of Contents,TOC):zip有TOC,而rar沒有。

TOC這個詞其實是從出版界借用過來的,指的就是每一本書正文前面的「目錄」,它的作用地球人都知道:如果想快速找到書中某一內容,可以先查TOC,然後按照TOC指明的頁碼直接翻即可。

在紙質書里TOC是印刷出來的一張表,而在電子文件里則是由結構化數據構成的一張表,它的目的同樣是為了快速定位:如果想找文件中的某一內容,可以先查TOC,知道感興趣的內容在文件的什麼位置,直接跳過去就行了。最常見的運用就是avi、rm等多媒體文件:播放的時候經常有人在播放條上點來點去跳著看(即「隨機訪問」),如果沒有TOC,在長達幾百兆的文件里來回定位會慢死。

具體到zip文件里,TOC是放在文件尾部的一張表,裡面列出了zip包中每一個文件的屬性(文件名、長度等)和在zip包中的存放位置。如果需要隨機訪問zip包中的某一個文件,只需在TOC里找到這個文件的存放位置,直接跳過去即可。

而RAR文件里則沒有TOC,在文件頭之後所有文件按順序連續存放。

這種差異造成的結果就是:隨機訪問時zip比rar快,而順序訪問時rar比zip快。

所謂隨機訪問,就是前面說過的隨機訪問壓縮包中某個指定的文件。舉一個簡單的例子:一本反編譯或下載到的網頁電子書,有大量HTML、圖像、css、js,然後打成壓縮包。現在要求在不解包的情況下訪問其中的頁面:可以想像,打開每個HTML頁面的時候,它所附帶的圖像、css、js等文件可能隨機分布在整個壓縮包里,如果沒有TOC,查找每個文件的時候都要從頭開始找,將會有多慢。 所以各位可以理解為什麼jar包就是標准zip包,而我也只用zip格式保存反編譯出來的電子書、漫畫、PDG書等一切可能需要隨機訪問的東西。

所謂順序訪問,就是將整個壓縮包從頭解到尾。在這方面RAR具有天然的優勢。而且為了節省WinRAR列文件的時間,對於單個RAR我一般都直接通過右鍵菜單解壓縮,很少雙擊壓縮包打開再解壓。

由於rar的原作者已經去世,造成這種差異的確切原因我相信已不可考,但我個人猜測可能與DOS時代的備份軟體之爭有關:在DOS時代,電腦硬碟不像現在這樣奢侈,20MB就算很大了。這樣的容量用兩盒軟盤 即可備份,備份成本相對數據本身的價值來說非常低廉。因此在DOS時代,很多公司和機構都制定有定期硬碟備份政策,以免因為人為或非人為的因素 (早期硬碟可沒有如今可靠)而造成不可挽回的數據損失。在備份軟體方面,雖然微軟已經隨DOS提供了BackupRestore工具,但是他們基本不具備數據壓縮能力,因此在壓縮軟體中提供備份功能,就成為DOS時代的一個時尚。由於DOS時代的備份介質多為軟盤,因此壓縮 軟體的備份功能其實就轉化成如今很常見的一個功能:分卷壓縮功能,即按照軟盤容量進行分卷壓縮,然後將分卷壓縮文件備份(Backup)到軟盤,需要的時候再解壓,或恢復(Restore)到硬碟。

DOS時代最有名的zip工具是pkzip,出現得比DOS版的RAR早。在分卷壓縮時,pkzip按照zip文件規范,將TOC存放在最後,即存儲在最後一卷,由此帶來如下問題:

1、恢復時,每解壓一張盤,都要先將最後一張盤插進去一次,讀一次TOC。
2、只要最後一張盤上的TOC壞了,就算其它盤都是好的,也不能正常解壓。

這兩個缺點,尤其是第一個缺點實在是太臭名昭著了,因此當時出現了非常強烈的改革呼聲。在這個關鍵時刻,DOS版的RAR出現了:不僅壓縮率比pkzip高(這點在DOS時代非常重要,畢竟軟盤又貴容量又小),而且由於吸取了當時對zip格式的批評,取消了TOC,因此:

1、在恢復分卷壓縮的備份文件時,不需要頻繁插入帶有TOC的分卷,按順序換盤即可。
2、即使某個分卷損壞,也可以跳過,從完好的分卷再開始解壓。

由於這些原因(當然還有其它原因),RAR推出後迅速取得了成功,pkzip在DOS時代就開始流失用戶,到Windows時代基本消聲匿跡。在Windows時代推出的Winzip,則徹底放棄了分卷壓縮功能(zip格式永遠的痛?)。 而從我看到的源自WinRAR的UnRAR源代碼來看,現在WinRAR的解壓思路明顯還是把文件按順序從頭解到尾,看來當年備份恢復工具之爭的影響,還真是深遠。

二、固實(solid)壓縮方式

在壓縮演算法方面,我覺得rar格式最特色的是固實(solid)壓縮方式。WinRAR v3.42的幫助文件中對固實壓縮的說明如下:

固實壓縮文件是 RAR 的一種特殊壓縮方式存儲的壓縮文件,它把壓縮文件中的全部文件都當成一個連續數據流來看待。

這段說明其實揭示了固實壓縮格式能夠提高壓縮比的奧秘:數據壓縮的基礎是「重復」,例如aaaabbb這個字元串,裡面就有重復,如果表示為a4b3,看起來是不是變短了?這就是「數據壓縮」。「重復」是一個具有相對意義的概念,在某一范圍內看起來沒有重復,或重復不多的數據,把范圍擴大,說不定就能找到更多重復的數據了,這就是固實壓縮的奧秘。

舉一個簡單的例子:用zip和普通rar壓縮一堆jpg文件,很難壓下去,但是用固實壓縮方式的rar就可以,其原因就在於:jpg文件本身已經是壓縮格式了,單個jpg文件里很難再 找到可利用的重復數據,因此不論是用zip還是普通的rar都很難再壓縮,因為他們都將需要壓縮的文件分隔開來一個一個處理。但是對於固實rar來說,是將 所有需要壓縮的jpg文件當作一個整體來壓縮,這些jpg之間就存在重復的數據,如他們都有相同的文件頭(其中包括各種數據表)等,這就出現了可壓縮的空間。從我看到的資料來看,Flash文件也採用了類似的技術對jpg進行壓縮:如果在Flash文件中使用了多個jpg文件,它們可以共用一個文件頭。

當然天下不會有白吃的午餐,固實壓縮方式在提高壓縮比的同時,也有一些限制,在WinRAR v3.42幫助文件中的說法是:

固實壓縮可增加壓縮性能,特別是在添加大量的小文件的時候,但它也有一些重要的不利因素

對已存在的固實壓縮文件更新時較慢;
要從固實的壓縮文件解壓單個文件時,它之前的文件都需先經過分析。這造成當從固實的壓縮文件內取出文件時會比一般壓縮文件取出文件慢一些。但是,當從固實的壓縮文件解壓全部的文件時,解壓速度並沒有影響。
如果在固實壓縮文件中的任何文件損壞了,要從損壞的范圍中解壓全部的文件是不可能的。因此,如果固實壓縮文件是保存在例如軟盤等媒介時,推薦你在製作時使用「恢復記錄」。
固實壓縮的適用場合為

壓縮文件很少更新的時候;
不需要經常從壓縮文件中解壓一個文件或是部分文件的時候;
壓縮效率比壓縮速度更為重要的時候。
與前面說的「隨機訪問」對應,固實壓縮的RAR文件可能是世界上最不適合隨機訪問的:如果需要訪問固實RAR包中的某個文件,就要從文件頭開始解壓,一直解到這個文件。

三、安全性

這里的安全性包含幾個方面的含義:文件系統安全性、密碼保護安全性和文件數據安全性。

由於制訂zip格式規范的時候操作系統本身的文件安全性還沒有引起足夠的重視,因此zip格式只記錄最基本的文件屬性,包括只讀屬性等,沒有其它附加的安全屬性。

rar格式剛推出的時候,文件系統的安全性只能參照DOS,和zip差不多。但是rar畢竟是一種封閉的格式,想怎麼改作者一個人說了就算,因此當Windows中出現NTFS,並且引入擴展的文件系統安全屬性時,rar也積極跟進,所以現在應該說rar格式在這方面比zip強 。

在zip和rar格式中均提供了密碼保護功能,但是密碼保護的安全強度不同。

zip由於格式開放、代碼開源,因此zip密碼破解軟體出現得比較早,也比較多。初期以暴力破解為主,威脅不大,真正對zip密碼安全的致命一擊是known plain text(已知明文)攻擊法:如果知道加密zip文件中某段內容(密文,ciphertext)解密後的真正內容(明文,plain text),就可以反推出zip加密口令。在這種攻擊方法的威脅,及某些國家的法律對密碼技術的限制下, 著名開源組織zlib宣布永久放棄對加密zip的支持,詳見zlib網站上的相關說明(不過在zlib發行的源代碼里仔細找找,還是能找到原來的加解密相關代碼)。

記得rar剛推出的時候也和zip一樣,雖然不能列出加密文件中的文件內容,但可以列出加密文件中的文件名。後來大概也是被known plain text攻擊法嚇到了,增加了一個「加密文件名」選項,乾脆連加密rar文件里有哪些文件都看不見,讓攻擊者想猜明文都無從猜起。

rar格式比zip晚推出,在安全方面吸取了足夠的教訓,因此採用的是美國國家標准與技術局(National Institute of Standard and Technology, NIST)推薦的、目前公認安全程度比較高的AES對稱加密演算法 ,密鑰長度128位。在ASE被攻破以前(NIST認為30年內無法攻破),大家都只能在暴力法上兜圈子,所以密碼安全性應該說比zip高。對此WinRAR 3.42的幫助文件是這樣描述的:

ZIP 格式使用私有加密演算法。 RAR 壓縮文件使用更強大的 AES-128 標准加密。如果你需要加密重要的信息,選擇 RAR 壓縮文件格式會比較好一些。為了確實的安全性,密碼長度請最少要 8 個字元。不要使用任何語言的單詞作為密碼,最好是任意的隨機組合字元和數字,並且要注意密碼的大小寫。請記住,如果你遺失你的密碼,你將無法取出加密的文件,就算是 WinRAR 的作者本身也無法解壓加密過的文件。

在數據安全性方面,RAR格式本身支持一種特殊的附加信息類型,叫做「恢復記錄」。如果RAR文件有恢復記錄,在介質物理損壞或其它原因造成數據丟失時,WinRAR可以按照「恢復記錄」嘗試對數據進行修復。而zip格式無恢復記錄,因此在數據安全性方面應該說比RAR弱。

雖然RAR文件本身支持恢復記錄,但是在WinRAR里此選項預設是關閉的,而打開後會導致壓縮出來的RAR文件體積增加(增加的百分比與設置有關),可能會令某些人感到不習慣(我就親眼見到有人在論壇上抱怨為什麼壓出來的RAR文件會如此龐大),所以這個功能基本上形同虛設。

四、開放性

開放性的對比很明顯:zip格式不僅文件格式完全公開,而且有專門的開源組織提供操作源代碼,跨平台使用也沒有多大限制;rar格式完全保密,作者只提供解壓所需源代碼,不提供壓縮所需源代碼 ,跨平台使用有點麻煩。

zip開源組織中,最出名的是zlib和InfoZip,二者各有側重:zlib偏重對內存緩沖區的壓縮,因此被png等開源組織用做內部壓縮演算法,連java的jar程序內核都來自zlib,打出來的jar包自然也是一個標準的zip文件;InfoZip偏重對文件的操作 (包括口令保護),應用似乎不如zlib廣泛,但我個人覺得其實它還是滿好用的,前提是需要對它的源代碼進行一些必要的修改。

在png組織的網頁中有說到png格式的來歷,我覺得也很有意思:做png的一班人,其實原來都是做gif格式的,但是由於Unisys公司開始對gif格式的核心——LZW壓縮演算法徵收專利費,這幫人怒了,乾脆提出png格式:大結構方面還是採用分段結構,但是核心壓縮演算法採用開源的zlib,壓縮 效果在多數情況下比gif的LZW更強。由於沒有版許可權制,在靜態圖形領域png得到廣泛應用,如果不是及時提出動畫支持並因此在web上大行其道,我估計gif早就死掉了。

RAR的解壓源代碼在其官方網站www.rarlab.com上提供,通常比WinRAR的正式版本晚一點,不過據說是直接從WinRAR的源代碼中摳出來的,所以兼容性應該沒有什麼問題。

五、結論

以下觀點純屬個人觀點,僅供參考,不具有如何指導意義:

如果經常需要對壓縮包進行隨機訪問,應該選zip而不是rar。雖然將下載到的rar重新壓縮成zip會麻煩一次,但是以後會減少無數的麻煩。
如果需要分卷壓縮(如某些網站對上傳文件大小有限制),則只能用rar。事實上,這也是我唯一會使用rar格式的場合,其它時候一律zip沒商量。

③ C語言CreateSolidBrush()錯誤

CreateSolidBrush 是GDI32.lib里的
MessageBox 能正常運行有可能是因為 默認的鏈接選項中已包含 -luser32
嘗試檢查MinGW的lib目錄有沒有libgdi32.a
然後在linker option中加入-lgdi32
據我所知MinGW對Win32的API不是完整地支持的,但GDI這樣基本的模塊不會不支持

④ fetch.php是什麼類型的文件

PHP,一個嵌套的縮寫名稱,是英文「超級文本預處理語言」(PHP:Hypertext Preprocessor)的縮寫。PHP 是一種 HTML 內嵌式的語言,PHP與微軟的ASP頗有幾分相似,都是一種在伺服器端執行的「嵌入HTML文檔的腳本語言」,語言的風格有類似於C語言,現在被很多的網站編程人員廣泛的運用。PHP 獨特的語法混合了 C、Java、Perl 以及 PHP 自創新的語法。它可以比 CGI 或者 Perl 更快速的執行動態網頁。用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多;與同樣是嵌入HTML文檔的腳本語言JavaScript相比,PHP在伺服器端執行,成分利用了伺服器的性能;PHP執行引擎還會將用戶經常訪問的PHP程序駐留在內存中,其他用戶在一次訪問這個程序時就不需要誠信編譯程序了,只要直接執行內存中的代碼就可以了,這也是PHP高效率的體現之一。PHP具有非常強大的功能,所有的CGI或者JavaScript的功能PHP都能實現,而且支持幾乎所有流行的資料庫以及操作系統。

PHP 最初是1994年Rasmus Lerdorf創建的,剛剛開始只是一個簡單的用Perl語言編寫的程序,用來統計他自己網站的訪問者。後來又用C語言重新編寫,包括可以訪問資料庫。在1995年以Personal Home Page Tools (PHP Tools) 開始對外發表第一個版本,Lerdorf寫了一些介紹此程序的文檔,並且發布了PHP1.0。在這早期的版本中,提供了訪客留言本、訪客計數器等簡單的功能。以後越來越多的網站使用了PHP,別且強烈要且增加一些特性,比如循環語句和數組變數等等,在新的成員加入開發行列之後,在1995年中,PHP2.0發布了。第二版定名為PHP/FI(Form Interpreter)。PHP/FI加入了對mSQL的支持,從此建立了PHP在動態網頁開發上的地位。到了1996年底,有15000個網站使用 PHP/FI;時間到了1997年中,使用PHP/FI的網站數字超過五萬個。而在1997年中,開始了第三版的開發計劃,開發小組加入了 Zeev Suraski 及 Andi Gutmans,而第三版就定名為PHP3。2000年,PHP4.0又問世了,其中增加了許多新的特性。

PHP的特性包括:

開放的源代碼:所有的PHP源代碼事實上都可以得到。
PHP是免費的。
基於伺服器端:由於PHP是運行在服務鞫說模�詞乖俁嗟撓沒В�俑叢擁某絛蛞膊換嵊跋煸誦械乃俁取?lt;BR>跨平台:PHP可以運行在UNIX、LINUX、WINDOWS下。
嵌入HTML:因為PHP可以嵌入HTML語言,所以學習起來並不困難。
簡單的語言:PHP堅持腳本語言為主,與Java以C++不同。
效率高:PHP消耗相當少的系統資源。
圖像處理:用PHP動態創建圖像

PHP 3與PHP 4的比較

PHP3跟Apache伺服器緊密結合的特性;加上它不斷的更新及加入新的功能;而且幾乎支持所有主流與非主流資料庫;再以它能高速的執行效率,使得PHP在1999年中的使用站點已經超過了150000萬。加上它的源代碼完全公開,在 Open Source意識抬頭的今天,它更是這方面的中流砥柱。不斷地有新的函數庫加入,以及不停地更新的活力,使得PHP無論在UNIX、LINUX或是Windows的平台上都可以有更多新的功能。它提供豐富的函數,使得在程序設計方面有著更好的支持。

PHP4.0整個腳本程序的核心大幅更動,讓程序的執行速度,滿足更快的要求。在最佳化之後的效率,已較傳統CGI或者ASP等程序有更好的表現。而且還有更強的新功能、更豐富的函數庫。無論您接不接受,PHP 都將在 Web CGI 的領域上,掀起巔覆性的革命。對於一位專業的Web Master 而言,它將也是必修課程之一。

PHP 4.0是更有效的,更可靠的動態Web頁開發工具,在大多數情況運行比 PHP 3.0要快,其腳本描述更強大並且更復雜, 最顯著的特徵是速率比的增加。PHP4.0這些優異的性能是PHP 腳本引擎重新設計產生的結果:引擎由 AndiGutmans 和 Zeev Suraski從底層全面重寫。PHP4.0 腳本引擎 ——Zend 引擎,使用了一種更有效的「編譯——執行」方式, 而不是PHP 3.0 採用的「執行 ——當解析時」模型。

PHP4在3.0版的基礎上增加或增強了許多有用的特徵,主要如下:

(1)別名:在PHP4中,可以利用引用為變數賦值,這給編程帶來了很大的靈活性。

(2)擴充了API 模塊:PHP 4.0 為擴展的 API 模塊的提供了擴展PHP介面模塊, 它比舊的 API 版本顯著地快。 PHP 模塊已有的及最常用的介面多數被轉換到使用這個擴展的介面。

(3)自動資源釋放:PHP4增加了引用計數功能,這種新技術的引入使PHP4具有了自動內存管理功能,減輕了開發人員的負擔。

(4)布爾類型:PHP 4.0 支持布爾類型。

(5)進程生成:在 UNIX 環境下的 PHP 4.0 提供了一個很智能和通用的生成進程, 使用了一種名為基於automake/libtool的系統生成技術。

(6)COM/DCOM 支持:PHP 4.0 提供 COM/DCOM 支持 ( 僅用於Windows 環境 ) 可以無縫地存取和訪問 COM 對象。

(7)與PHP 3.0 兼容性很好:PHP 4.0 是與 PHP 3.0 代碼向後兼容性接近100% 。由於 PHP 4 的改進的體系結構,兩者有一些細微的差別,但是大多數人將可能永遠不可能遇上這種情況。
PHP介紹

(8)配置:PHP4重新設計和增強了PHP。ini文件,這使得用PHP。ini來配置PHP顯得極為容易,這個文件可以在運行時被Apache(unix系統)或由Windows 注冊(Windows 環境)。

(9)加密支持:PHP4實現了完整的加密, 這些加密功能是一個完整的mycrypt庫,並且 PHP 4.0 支持哈希函數。Blowfish,TripleDES,MD5,並且SHA1 也是可使用的一些加密演算法。

(10)類型檢查:PHP 4.0 支持同一操作符用於評類型檢查:「===「( 3 等號運算符 ), 為在兩個值和其類型之間作檢查。例如,「 3 」 ===3 將視為假 ( 類型是不同的 ), 而「 3 」 ==3 ( 相等判斷 ) 將視為真。

(11)FTP 支持:PHP 4.0 支持 FTP 。通常, 你會為通過一個數據機連接下載一個大文件提供一個介面。然而, 如果你確實有需要,可以使用PHP 。

(12)PHP4新增函數或功能增強函數:PHP 4.0 新增了許多函數,同時也將許多現有的函數功能進行了增強,以下是一些例子。 array_count_values() eval() foreach() nclude() ob_end_clean() ob_end_flush() ob_get_contents() ob_start() strip_tags() unset()

(13)「here」列印:PHP 4.0 的「Here」列印是與Perl類似的, 盡管完全不相同。「Here」是列印大容量文章的一個有用的方法,例如在 HTML文件中,不會漏掉任何一個字元,例如目錄標記。

(14)HTTP Session fallback 系統:為 HTTP Session管理的一個 fallback 系統在 PHP 4.0被實現 。預設情況下,Session標識符由cookies存儲。如果沒有cookies支持或一項cookies任務失敗,Session標識符自動被創建並在 URL 的查詢字元串中被攜帶。

(15)ISAPI 支持:PHP 4.0 能作為一個個性化的 ISAPI 模塊作為 IIS插件 。這比 PHP 3.0 更有效, 它作為一個外部的程序來運行。

(16)內存:PHP 4.0 能更有效的使用內存, 導致較少的內存佔用消耗,這主要歸功於引用計數技術的實現。

(17)其他類成員函數:在 PHP 4.0 你能在成員函數本身的作用域或全局范圍內調用其他類的成員函數。例如,你能用一個子函數覆蓋父函數,並在子函數中調用父函數。

(18)多維數組:在 PHP 4.0 ,利用GET,POST,Cookies的進行的數據傳輸支持多維數組。

(19)個性化的 HTTP Session支持:HTTP Session處理, 包括 fallback 系統管理,在 PHP 4.0被它的新庫函數實現 。在版本 3.0 中處理Session要求使用 PHPLIB 和第三方的庫函數, 它比把Session直接地由 PHP 支持慢了許多。

(20)個性化的 Java 支持:PHP 4.0 支持和java的交互。這種個性化的Java 支持為PHP 在 Java 對象上創建和使用方法提供一個簡單並且有效的工具。
21)對象和數嵌套組:PHP 4.0 實現了功能更加強大的對象, 移去了 PHP 3.0存在的種種句法限制。對象能在數組以內被嵌套並且反過來也如此, 可以根據你的需要實現嵌套。

(22)面向對象的編程:PHP 4.0 為面向對象的編程和構造類及對象提供擴展的功能和新特徵。PHP4實現了對象重載,引用技術等新技術。

(23)對象重載支持:對象重載語法允許第三方的基於面向對象的類庫使用 PHP4 的面向對象的特徵存取他們自身的功能。使用這個特徵的一個 COM 模塊已經被實現了。

(24)輸出緩沖支持:PHP 提供了一個輸出緩沖函數集合。輸出緩沖支持允許你寫包裹函數功能壓縮緩沖區。在 PHP4 的輸出緩沖支持允許 HTML 頭信息存放, 無論 HTML的正文是否輸出。頭信息( (header(), content type, and cookies ) 不採用緩沖 。

(25)增加了PCRE 庫:PHP 4.0 包括一個 Perl 兼容的正則表達式 (PCRE ) 庫, 和正常regex庫一起與 PHP 綁定。split 和replace PCRE 功能被支持。PCRE 和 Perl 正規表達式之間有一些細微差別。

(26)PHP.ini 文件:PHP.ini文件在 PHP4.0 被重新設計, 使用的 PHP 的配置PHP.ini是更容易並且更有效的。全部文件能被Apache 在運行時間操作 ( 在 Apache環境 下 ) 或由 Windows 注冊表 ( 在 Windows 下面 ) 。被加入PHP.ini文件的配置指令自動地在所有相關的模塊中被支持。

(27)引用計數:PHP 4.0 為系統中的每個數值提供了引用計數, 包括資源。一旦一個資源不再被任何變數引用,它自動地被釋放以節省內存資源。利用這個特徵的最明顯的例子一個內置SQL查詢的循環語句。在PHP 3.0中 ,每次遞歸另外的 SQL 結果集合重復申請內存,直到腳本執行完畢,這些結果集合佔用的內存才被釋放。

(28)支持引用:通過引用可以改變一個變數的值。

(29)函數的運行時綁定:PHP 4.0 的運行時間綁定功能允許你在他們被聲明以前調用, 無論聲明是否在代碼以後或是在運行時間。

(30)類的運行時信息:PHP 4.0 支持在運行時刻存取下列類信息:一個對象的類名,一個對象的父類的類名字,以及對象函數所在的名字。

(31)伺服器抽象層:為支持Web伺服器提供了增強型 SAPI ( 伺服器 API ) 介面,是 PHP 4。0 不可分的一部分。這個伺服器抽象層,提供了通用的WEB伺服器介面支持,支持多線程WEB伺服器,為大多數的WEB伺服器提供透明的支持, 這些伺服器包括 Apache ,IIS ( ISAPI ), 以及 AOL 伺服器。

(32)語法的點亮顯示:PHP 4.0 語法的點亮顯示允許開發者看見源代碼而不是腳本, 這個功能比PHP 3。0中的更有效。它跑得更快,更執行得更好,並且產生更緊湊的HTML代碼。

(33)由引用改變變數的值:PHP 4.0 由引用支持可變的賦值, 「關聯」的2個變數之中個的任何一個的值被改變,另外的變數的值同樣被改變,這類似與C中的指針類型。

(34)在引用字元串中的變數引用:PHP 4.0 增強了在引用字元串中的變數引用。例如, 這個例子在 PHP 3.0中 是不可能做到的 : print 「${a[0]->bingo}「

PHP 在資料庫方面的豐富支持,也是它迅速走紅的原因之一,它支持下列的資料庫或是數據文件:

· Adabas D
· DBA
· dBase
· dbm
· filePro
· Informix
· InterBase
· mSQL
· Microsoft SQL Server
· MySQL
· Solid
· Sybase
· ODBC
· Oracle 8
· Oracle
· PostgreSQL

而在 Internet 上它也支持了相當多的通訊協議 (protocol),包括了與電子郵件相關的 IMAP, POP3;網管系統 SNMP;網路新聞 NNTP;帳號共用 NIS;全球信息網 HTTP 及 Apache 伺服器;目錄協議 LDAP 以及其它網路的相關函數。

除此之外,用 PHP 寫出來的 Web 後端 CGI 程序,可以很輕易的移植到不同的操作系統上。例如,先以 Linux 架的網站,在系統負荷過高時,可以快速地將整個系統移到 SUN 工作站上,不用重新編譯 CGI 程序。面對快速發展的 Internet,這是長期規劃的最好選擇。
在加入其它的模塊之後,提供了更多樣的支持如下:

· 英文拼寫檢查
· BC 高精確度計算
· 西洋歷法
· pdf 文件格式
· Hyperwave 伺服器
· 圖形處理
· 加密與解碼功能
· 散列處理
· WDDX 功能
· qmail 與 vmailmgr 系統
· 壓縮文件處理
· XML 解析

除此之外,一般語言有的數學運算、時間處理、文件系統、字元串處理、行程處理等功能,它一樣都不缺。再加上它是免費的系統,使得成本與效益比,幾乎等於無限大!

3.3 PHP 及其語言比較

無可置疑的,寫 CGI 的方式有很多種,而 PHP 只是其中的一種選擇罷了。對資深的網站站長來說,CGI 的寫作語言應是隨著需求而更動。畢竟,在一個對系統反映速度要求極嚴格的系統而言,恐怕只有 NSAPI 語言寫的 CGI 程序才能符合要求了。在其它的場合,相信使用 PHP 來作為 CGI 的語言是游刃有餘,而且是最適合的。
以下是幾種語言的比較:

程序語言 PHP ASP CGI NSAPI ISAPI
操作系統 均可 Win32 均可 均可 Win32
Web伺服器 幾種 IIS 均可 Netscape Server IIS
執行效率 快 快 慢 極快 極快
穩定性 佳 中等 最高 差 差
開發時間 短 短 中等 長 長
修改時間 短 短 中等 長 長
程序語言 PHP VB 不限 C/C++ C/Delphi
網頁結合 佳 佳 差 差 差
學習門檻 低 低 高 極高 高
函數支持 多 少 不定 中等 少
系統安全 佳 極差 最佳 佳 尚可
使用站點 超多 多 多 極少 少
改版速度 快 慢 無 慢 慢

其中的 PHP 可用在幾種 Web 伺服器上;傳統 CGI 就不限是哪種操作系統或 Web 伺服器平台;NSAPI 一定要在 Netscape 的伺服器 (如 Netscape Enterprise Server 或 FastTrack Server) 上才可以執行,但可支持多種操作系統 (UNIX 或 Win32);ASP 及 ISAPI 只在 IIS 上有完整的功能。

在穩定性上,由於 NSAPI 或 ISAPI 是動態連結的方式,因此在執行若出現問題,會使得 Web 伺服器一起癱瘓。而 ASP 在吾人實際應用經驗上,隔陣子就會使系統不穩定,需要重開操作系統。PHP 在許多的站點使用上,不但長期使用都沒有問題,而且程序的穩定性也不錯。當然最穩的還是傳統 CGI 程序,因為它是由操作系統負責控制,不會因 CGI 程序的錯誤導致 Web 伺服器的不穩定。

在開發及維護時間上,PHP 及 ASP 都有不錯的表現。而 NSAPI 及 ISAPI 則需要長時間的開發過程,在穩定上線後,這二種語言反倒是效率最佳的方法。傳統的 CGI 程序則要視開發工具語言而定了,用 Perl 或是 shell script 不需要編譯的過程,直接就可以執行,若用 Delphi 或 VC/BCB 甚至用組合語言等都要經過編譯才能執行,至於用 VB 來寫傳統 CGI,唉....。

要比較和網頁結合的能力,PHP 和 ASP 是並駕齊驅的,其它的方式就不能內嵌 HTML 語法了。而這也是影響開發時間的因素之一。

就系統安全性而言,ASP 是最差的,在沒有經過微軟的 IIS Service Pack 處理過,使用 ::$DATA 就可以看到 ASP 的源代碼,這真是叫人不敢領教。當然,傳統 CGI 的程序,由於是由操作系統直接管理,要破解的難度最高,黑客必須由操作系統下手,而不能由 Web 伺服器下手。PHP 在許多商業及非商業使用時,也沒有聽過有什麼安全的問題。

在新增功能及改版方面,傳統的 CGI 由於不受任何語言限制,沒有這方面的問題。PHP 是最有活力的,數天至數周就有一個新版本出現,每次的新版,就代表更多的功能及更改更多的錯誤。其它的 ASP、NSAPI、ISAPI 就視它的 Web 伺服器改版速度了,ASP要等到 IIS 5.0 出現時,才會有 ASP 3.0。

總而言之,在 Web 的後端 CGI 程序,就像魚與熊掌一般,沒有高效能又開發方便的選擇。不過相信 PHP 是處於開發容易、效能亦不錯的平衡點上。

如果說ASP是一個COM,那麼PHP說的更精確了可以說PHP是一個純粹的Script翻譯器。這也是PHP由3.0升級為4.0的一個重大原因,在4。0這個版本中,由於重寫了語法分析器,從而加快了PHP整體的效能。而且從中你也就會明白為什麼PHP需要支持這種或是那種擴充功能時它一定要與相應系統的lib庫進行再編繹的原因。正因為它是正宗的「翻譯器」,所以它是將script翻譯成為需要執行的函數,再去執行它們,外部擴充不能由一些「動態載入」的方式進行,所以只能靜態的編繹進PHP中(這只能在windows中除外)。

⑤ 新版編譯器OnCalculate我這樣編寫,理解,對嗎

OnCalculate

OnCalculate()函數只在自定義指標中調用,通過Calculate計算指標值是必須的。通常在接到指標計算的交易品種新訂單號時發生。這個指標不需要附在交易品種的價格圖表上。

OnCalculate() 函數有個返回值int。有兩個可能定義。一個指標中不可以有兩個函數版本。

一種是用於單數據緩沖中計算的指標。例如,自定義移動平均數指標。

int OnCalculate (const int rates_total, // 價格[] 數組的大小
const int prev_calculated, // 前一次調用處理的柱
const int begin, // 有效數據起始位置
const double& price[] // 計算的數組
);
價格[]數組中,可以傳送時間序列和計算的一些指標緩沖。ArrayGetAsSeries()函數確定價格[] 數組索引方向。為了不依賴默認值,需要無條件的調用ArraySetAsSeries()函數用於工作的數組。

價格[]數組中,在「參數」標簽啟動指標時,選擇適當的時間序列或者指標。所以,需要在「應用於」欄位的下拉列表中指定必要的項目。

Selecting timeseries to calculate an indicator

從其他mql5程序中接收自定義指標值,要使用iCustom()函數,返回嵌入指標處理程序。可以指定適當的價格[]數組或者另一個指標處理程序。這個參數在自定義指標輸入變數列表中最後傳送。
示例:

void OnStart()
{
//---
string terminal_path=TerminalInfoString(STATUS_TERMINAL_PATH);
int handle_customMA=iCustom(Symbol(),PERIOD_CURRENT, "Custom Moving Average",13,0, MODE_EMA,PRICE_TYPICAL);
if(handle_customMA>0)
Print("handle_customMA = ",handle_customMA);
else
Print("Cannot open or not EX5 file '"+terminal_path+"\\MQL5\\Indicators\\"+"Custom Moving Average.ex5'");
}
這個示例中,通過的最後參數是PRICE_TYPICAL值(從ENUM_APPLIED_PRICE計數開始),指出自定義指標可以用獲得的典型價格建立(高價+低價+平倉)/3。如果沒有確定這個參數,指標基於PRICE_CLOSE 值建立,例如每欄平倉價。

另一個示例顯示依照指定價格[]數組的最後一個參數傳送指標處理程序,由函數iCustom()所描述。

另一種形式意在所有其他指標,計算更多的時間序列。

int OnCalculate (const int rates_total, // 輸入時間序列大小
const int prev_calculated, // 前一次調用處理的柱
const datetime& time[], // 時間
const double& open[], // 開盤價
const double& high[], // 最高價
const double& low[], // 最低價
const double& close[], // 收盤價
const long& tick_volume[], // 訂單交易量
const long& volume[], // 真實交易量
const int& spread[] // 點差
);
開盤價[],最高價[],最低價[]和收盤價[]參數由當前時間表的開盤價,最高和最低價和收盤價數組組成。時間參數[]包括開盤時間值數組,擴展參數[]有一個數組包括擴展歷史記錄(如果為交易安全提供擴展)。volume[] 和tick_volume[] 參數分別包括交易和交易量歷史記錄。

確定時間[]索引方向, 開盤價[], 最高價[], 最低價[], 收盤價[], 交易量[], 交易量[] 和 擴展[],需要調用ArrayGetAsSeries()函數。若不想依賴默認值,需要無條件的調用函數ArraySetAsSeries()用於工作的數組。

首先rates_total 參數包括欄的數量,可用來計算指標,與圖表中現存的欄數一致。

需要注意OnCalculate() 返回值和第二輸入參數prev_calculated的連接。調用函數時,prev_calculated 參數包括上次調用時OnCalculate() 返回值。這就允許用經濟演算法計算自定義指標,避免重復計算。

返回rates_total參數值足夠了,包括當前調用函數的欄數。如果自從上次調用函數OnCalculate(),價格數據更改了(下載深度歷史記錄或者填滿歷史空白期),輸入參數prev_calculated 值由終端機設置為零。

註:如果OnCalculate返回零,那麼指標值不能顯示在客戶端的數據窗口。

為更好的理解,啟動附加以下代碼的指標很有用。

指標示例:
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots 1
//---- 圖的線
#property indicator_label1 "Line"
#property indicator_type1 DRAW_LINE
#property indicator_color1 clrDarkBlue
#property indicator_style1 STYLE_SOLID
#property indicator_width1 1
//--- 指標緩沖區
double LineBuffer[];
//+------------------------------------------------------------------+
//| 自定義指標初始化函數 |
//+------------------------------------------------------------------+
int OnInit()
{
//--- 指標緩沖區繪圖
SetIndexBuffer(0,LineBuffer,INDICATOR_DATA);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| 自定義指標重復函數 |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime& time[],
const double& open[],
const double& high[],
const double& low[],
const double& close[],
const long& tick_volume[],
const long& volume[],
const int& spread[])
{
//--- 獲得當前交易品種和圖表周期的有效柱數
int bars=Bars(Symbol(),0);
Print("Bars = ",bars,", rates_total = ",rates_total,", prev_calculated = ",prev_calculated);
Print("time[0] = ",time[0]," time[rates_total-1] = ",time[rates_total-1]);
//--- 為下次調用返回prev_calculated值
return(rates_total);
}
//+------------------------------------------------------------------+

⑥ solidwors生成urdf文件後,怎樣在ros中模擬

使用ros_qtc_plugin插件新建項目

使用插件新建項目Import ROS
Workspace選項僅新建工作空間導入現工作空間新建文件ROS面Package、Basic
Node等選項創建package節點、launch文件、urdf文件等
現我創建新catkin工作空間,並且面創建package

1、新建項目

文件——新建文件或項目選擇Import ROS Workspace——choose圖

填寫catkin工作空間名字位置圖

我Namecatkin工作空間文件夾名字相同(同)名catkin_new選擇瀏覽——創建文件夾創建名catkin_new文件夾圖按車再選擇打

現框詢問新建工作空間未初始化否執行初始化我選擇yes
相於執行catkin_init_workspace命令使工作空間初始化

點擊Generate Project File再點擊步
項目管理步驟配置版本控制系統我選擇完圖

建工作空間catkin_new空圖

2、創建package

接我工作空間創建新package
catkin_new面src右鍵單擊選擇添加新文件圖

選擇ROS——package——choose

填寫package名字test1
填寫作者(Authors)維護者(Maintainers)Qt環境部沒配置文支持請要用文否則新建package或者新建package面package.xml空文件
DependenciesCatkin欄填寫依賴通用C++寫節點需要添加roscpp依賴


點擊完

3、添加新節點

目前package空沒任何節點
我test1src文件夾右鍵單擊選擇添加新文件

選擇ROS——Basic Node——choose創建節點新建.cpp文件

節點名稱寫node1則名node1.cpp源文件

用ROS模板新建node1.cpp源文件圖自Hello World程序

4、編譯節點

讓編譯執行文件我需要編輯test1makefile圖
test1CMakeLists.txt加面幾行意思node1.cpp編譯名node1節點
add_executable(node1 src/node1.cpp)
target_link_libraries(node1
${catkin_LIBRARIES}
)
,

⑦ PDF轉化為WORD之後為什麼不能編譯啊

是用Solid Converter PDF轉的嗎?一般pdf轉為word都是所有的圖片組合到一起的格式,取消組合就可以編輯了.不過受電腦配置的影響,操作起來反應可能很慢.
推薦一款軟體可以直接編輯PDF的文字Foxit PDF Editor.這個用起來很方便.

⑧ 用C++編譯源代碼怎麼顯示;致命錯誤;沒有輸入文件 我剛剛自學,,,,不會

程序沒有任何錯誤,可能的原因是你建立的項目類型不對。

⑨ 用 editplus編寫時為什麼bordercolor編譯器不能識別

寫錯了啊 border-color:要這么寫吧,要加個 - 號

也可以簡寫 border:{1px solid #000} 1px大小 solid 實線 #000 顏色

⑩ 各位大神請問 solid works 2015電氣版打開軟體顯示連接不到資料庫,怎麼解

1. 工程項目屬性裡面, 改為 靜態庫中使用MFC
2. 把xp下的msado15.dll拷貝出來,放到你電腦對應的目錄,C:\Program Files\Common Files\System\ado, 然後重新編譯程序;

win7下的msado15.dll不一定支持xp, 但是xp下的這個可以支持win7

閱讀全文

與socid編譯相關的資料

熱點內容
不能修改的pdf 瀏覽:736
同城公眾源碼 瀏覽:474
一個伺服器2個埠怎麼映射 瀏覽:282
java字元串ascii碼 瀏覽:61
台灣雲伺服器怎麼租伺服器 瀏覽:461
旅遊手機網站源碼 瀏覽:315
android關聯表 瀏覽:929
安卓導航無聲音怎麼維修 瀏覽:322
app怎麼裝視頻 瀏覽:423
安卓系統下的軟體怎麼移到桌面 瀏覽:80
windows拷貝到linux 瀏覽:755
mdr軟體解壓和別人不一樣 瀏覽:888
單片機串列通信有什麼好處 瀏覽:324
游戲開發程序員書籍 瀏覽:848
pdf中圖片修改 瀏覽:275
匯編編譯後 瀏覽:480
php和java整合 瀏覽:835
js中執行php代碼 瀏覽:447
國產單片機廠商 瀏覽:62
蘋果手機怎麼設置不更新app軟體 瀏覽:289