freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于linux嵌入式瀏覽器設(shè)計(jì)與實(shí)現(xiàn)(參考版)

2024-11-21 21:52本頁面
  

【正文】 但當(dāng)網(wǎng)頁比較大的時(shí)候,比如 600K,該算法的 效率成倍下降,這主要是由于要處理的字符串太大,在內(nèi)存中完成查找、替換、復(fù)制 、 移動(dòng)等操作,響應(yīng)時(shí)間明顯下降。 由 此 看 來 , 主 算 法 十 分 簡(jiǎn) 單 而 清 晰 , 主 要 是 Token_ConsumTag() 和 Token_Consum_PlainText()這兩個(gè)函數(shù)起關(guān)鍵作用,由于其中涉及到許多細(xì)節(jié)問題, 此處不予詳述。處理完畢,指針指向下一個(gè)元素首。 4)如果遇到 ,則跳過 (不應(yīng)該出現(xiàn)此情況,為了容錯(cuò) )。 算法 基本算法: 首先介紹基本的算法: 1)從存儲(chǔ)網(wǎng)頁的字符串中,順序讀入一個(gè)字符 2)如果遇到 ,認(rèn)為遇到 TAG(元素),處理該元素,使用函數(shù) Token_ConsumTag(),處理完畢后,指針移到該元素尾。 }EasyToken,*EasyPToken。 //是否是結(jié)束元素,如 /body //元素屬性鏈表,因?yàn)榭赡苡卸鄠€(gè)屬性,所以使用鏈表存儲(chǔ) EasyTokenAttrList *attrList。 //如果是 HTML_TXT 型元素,則為其內(nèi)容,否則為空 char *pData。 24 以下是元素節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu): typedef struct EasyToken { int type。 struct TokenList *next。 typedef struct TokenList { EasyToken *token。語法分析的目的就是生成這樣一個(gè)鏈表。 //元素名稱表,指向靜態(tài)數(shù)據(jù) }EasyTokenContext,*EasyPTokenContext。 EasyTokenList *tokenList_tail。 global_curPosition。 char * global_strBuffer。 //當(dāng)前正在處理的 HTML 代碼 int int bufferLength。 4)釋放:主要是對(duì)內(nèi)存的釋放。 2)主體數(shù)據(jù)流分析:逐字符的進(jìn)行判斷,確定數(shù)據(jù)的歸屬類型。 作為 Easy Embedded Browser 的 HTML 解析部分, Easy Token 負(fù)責(zé)對(duì)接收到的 HTML 代碼進(jìn)行分析,其主要目的是提取網(wǎng)頁中元素的名稱及其屬性,并以恰當(dāng)?shù)男? 式(即按一定的數(shù)據(jù)結(jié)構(gòu))加以保存,也就是完成了將數(shù)據(jù)流離散化、結(jié)構(gòu)化的過程。 HTML 解析過程可以用如下得示意圖來表示: String 預(yù)處理 根據(jù)標(biāo)志,選擇相應(yīng) 的分詞模塊 Text Tag Pasertext 圖 …… Token 分析、處理 Token 生成語法樹、 render 樹 HTML 解析原理圖 23 Pasertag Easy Token 的組成及其功能 Easy Token 是 Easy Embedded Browser 的 HTML 解析器,使用標(biāo)準(zhǔn) C 編程。處理完后的 HTML 文檔產(chǎn)生一個(gè)樹型的數(shù)據(jù)結(jié)構(gòu), 經(jīng)過排版處理后,就可以由顯示模塊顯示出來了。 Token 是程序中的 基本處理單元,如:標(biāo)記( tag)。分詞過程:將網(wǎng) 絡(luò)部分收到的待處理的數(shù)據(jù)流分解成獨(dú)立的、單個(gè)的可處理的單元,稱之為 Token。作者采用的是第二種 解析方法,它的特點(diǎn)是語法分析和詞法分析緊密的結(jié)合在一起工作,只需對(duì)超文本掃 描一次。 通常對(duì) HTML語言解析有兩種方式,第一種方式是把詞法分析和語法分析分離 開,即完成詞法分析后再進(jìn)行語法分析。對(duì)于瀏覽器來說, HTML文檔只是一個(gè)數(shù)據(jù)流,瀏覽器不可能自動(dòng)的識(shí) 別出一個(gè)個(gè)的標(biāo)記,并進(jìn)行相應(yīng)的工作。 本章小結(jié) 本章簡(jiǎn)要介紹了嵌入式瀏覽器的設(shè)計(jì)要素,包括瀏覽 器的相關(guān)技術(shù)和標(biāo)準(zhǔn), CSS , JavaScript, Linux 下的程序開發(fā)環(huán)境與編譯器、調(diào)試器, GNU make 和 Makefile, 以及 GTK 圖形程序開發(fā)。 gtk_main() 是另一個(gè)可以在每個(gè) GTK 程序中見到的函數(shù)調(diào)用。 最后一行進(jìn)入 GTK 主處理循環(huán)。這里不會(huì) 創(chuàng)建一個(gè) 0x0 大小 的窗口,一個(gè)沒有子構(gòu)件的窗口默認(rèn)大小設(shè)置為 200x200,這樣 你仍然能操作它。 gtk_widget_show (window)。這就 創(chuàng)建了可以被所有 GTK 程序接受的一組標(biāo)準(zhǔn)參數(shù)。該 函數(shù)設(shè)定了默認(rèn)的視頻( visual)和顏色映射模式( color map),接著會(huì)調(diào)用函數(shù) gdk_init(gint *argc, gchar ***argv)。argv)。 下一行: gtk_init (amp。 return 0。 gtk_widget_show (window)。argv)。 gtk_init (amp。這個(gè)程序創(chuàng)建 200x200 大小的窗口,如圖 所示,沒有辦法退出,除非你從 shell 中將它殺掉。盡管完全用 C 寫成的,但 它是基于類和回調(diào)函數(shù) (指向函數(shù)的指針 ) 的思想實(shí)現(xiàn)的 [10]。 GTK 是在 GDK (GIMP Drawing Kit) 和 gdkpixbuf 的基礎(chǔ)上建立起來的, GDK 基本上是對(duì)訪問窗口的底 層函數(shù) (在 X 窗口系統(tǒng)中是 Xlib) 的一層封裝, gdkpixbuf 是一個(gè)用于客戶端圖 像處理的庫。 GTK 圖形程序開發(fā) GTK (GIMP Toolkit) 是一套用于創(chuàng)建圖形用戶界面的工具包。 在處理 makefile 之前和之后,顯示工作 目錄。 顯示 make 變量數(shù)據(jù)庫和隱含規(guī)則。 當(dāng)包含其他 makefile 文件時(shí),可利用該 選項(xiàng)指定搜索目錄。 顯示所有的 make 選項(xiàng)。 19 4)運(yùn)行 make GNU make 命令還 有一些其他選項(xiàng): C DIR f FILE h i I DIR n p s w W FILE 在讀取 makefile 之前改變到指定的目錄 DIR。 GNU make 通常稱之 為變量,而其他 UNIX 的 make 工具稱之為宏,實(shí)際是同一個(gè)東西。如果你要以 相同的編譯選項(xiàng)同時(shí)編譯十幾個(gè) C 源文件,而為每個(gè)目標(biāo)的編譯指定冗長(zhǎng)的編譯選 項(xiàng)的話,將是非常乏味的。 3) makefile 變量 GNU 的 make 工具除提供有建立目標(biāo)的基本功能之外,還有許多便于表達(dá)依賴 性關(guān)系以及建立目標(biāo)的命令的特色。 這時(shí),就可以利用如下的 makefile 來定義 的創(chuàng)建規(guī)則: : g++ c g 一個(gè) makefile 文件中可定義多個(gè)目標(biāo),利用 make target 命令可指定要編譯的 目標(biāo),如果不指定目標(biāo),則使用第一個(gè)目標(biāo)。 例如,假設(shè)你現(xiàn)在有一個(gè) C++ 源文件 ,該源文件包含有自定義的頭文件 ,則目標(biāo)文件 明確依賴于兩個(gè)源文件: 和 。 * 要?jiǎng)?chuàng)建的項(xiàng)目依賴于哪些文件。在 UNIX 系統(tǒng)中,習(xí)慣使用 Makefile 作為 makfile 文件。 當(dāng)修改了其中某個(gè)源文件時(shí),如果其他源文件依賴于該文件,則也要重新編譯所 有依賴該文件的源文件。 make 工具通過一個(gè)稱為 makefile 的文件來完成并自動(dòng)維護(hù)編譯工作。這些工作包括:如果僅修改了 某幾個(gè)源文件,則只重新編譯這幾個(gè)源文件; 如果某個(gè)頭文件被修改了,則重新編譯所有包含該頭文件的源文件。 GNU make 和 makefile 1) GNU make簡(jiǎn)介 [1] 在大型的開發(fā)項(xiàng)目中,通常有幾十到上百個(gè)的源文件,如果每次均手工鍵入 gcc 命令進(jìn)行編譯的話,則會(huì)非常不方便。 fPIC 選項(xiàng)產(chǎn)生位置獨(dú)立的代碼。通常使用 ar 程序把一些目標(biāo)文件( .o)組合在 一起,成為一個(gè)單獨(dú)的庫,然后運(yùn)行 ranlib,以給庫加入一些索引信息。 在可以使用 gdb 調(diào)試程序之前,必須使用 g 選項(xiàng)編譯源文件。在 X Window 系統(tǒng)中,有一個(gè) gdb 的前端圖形工具,稱為 xxgdb。 生成所有警告信息。 取消對(duì) MACRO 宏的定義。通常用在建立共享庫時(shí)。 17 O3 shared static UMACRO w Wall 比 O2 更進(jìn)一步優(yōu)化,包括 inline 函數(shù)。 優(yōu)化生成代碼。用在生成可執(zhí)行文件時(shí)。 針對(duì) 486 進(jìn)行代碼優(yōu)化。 指定額外的函數(shù)庫搜索路徑 DIRECTORY。 GNU 調(diào)試器可利用該信息。 只運(yùn)行 C 預(yù)編譯器。 DMACRO DMACRO=DEFN E g IDIRECTORY LDIRECTORY lLIBRARY m486 o FILE O0 O 或 O1 O2 以字符串 “1”定義 MACRO 宏。 例如可以如下調(diào)用 g++ 命令編譯、連接并生成可執(zhí)行文件: $ g++ o hello $ ./hello 2) gcc/egcs 的主要選項(xiàng) ansi c 只支持 ANSI 標(biāo)準(zhǔn)的 C 語法。 但是, gcc 命令只能編譯 C++ 源文件,而不能自 動(dòng)和 C++ 程序使用的庫連接。一般來說, C 編譯器通過源文件 的后綴名來判斷是 C 程序還是 C++ 程序。利用 gcc 命令可同時(shí)編譯并連接 C 和 C++ 源程序。 GCC 是 GNU 的 C 和 C++ 編譯器。系統(tǒng)調(diào)用是一個(gè)非常耗時(shí)的過程。 談到系統(tǒng)調(diào)用時(shí),需要注意如下幾點(diǎn):系統(tǒng)調(diào)用函數(shù)通常在成功時(shí)返回 0 值, 16 不成功時(shí)返回非零值。 3)系統(tǒng)調(diào)用 系統(tǒng)調(diào)用是操作系統(tǒng)提供給外部程序的接口。 除 glibc 之外,流行的 Linux 發(fā)行版中還包含有一些其它的函數(shù)庫,這些函數(shù)庫 具有重要地位,例如: GNU Libtool, CrackLib, LibGTop。目前,流行的 Linux 系統(tǒng)使用 glibc 以上的版本。相反,這些功能一般由標(biāo)準(zhǔn)的 “函數(shù)庫 ”來提供。 X/Open 可移植性指南(由 X/Open Company, Ltd. 出版),是比 POSIX 更為一般的標(biāo)準(zhǔn)。T Unix System V 操作系統(tǒng)的文檔,是對(duì) POSIX 標(biāo)準(zhǔn)的 擴(kuò)展超集。 SVID: System V 的接口描述。 后來被 ISO(國(guó)際標(biāo)準(zhǔn)化組織)接受為標(biāo)準(zhǔn),因此也稱為 ISO C。 這也是基于 Linux 平臺(tái)的瀏覽器的通用做法。 JavaScript 創(chuàng)作者可以不那么 注重程 序技巧,所以許多 Java 的特性在 JavaScript 中并不支持。 JavaScript 和 Java 很類似,但到底并不一樣。 綜上所述, JavaScript 是一種新的描述語言,它可以被嵌入到 HTML 的文件之中。實(shí)際上 JavaScript 最接觸之處在于可以用 很小的程序做大量的事。當(dāng)事件發(fā)生后,可能會(huì)引起 相應(yīng)的事件響應(yīng)。所謂事件驅(qū)動(dòng),就 是指在主頁 (Home Page)中執(zhí)行了某種操作所產(chǎn)生的動(dòng)作,就稱為 “事件 ”(Event)。 5)動(dòng)態(tài)性 JavaScript 是動(dòng)態(tài)的,它可以直接對(duì)用戶或客戶輸入作出響應(yīng),無須經(jīng)過 Web 服 務(wù)程序。 4)安全性 JavaScript 是一種安全性語言,它不允許訪問本地的硬盤,并不能將數(shù)據(jù)存入到 服務(wù)器上,不允許對(duì)網(wǎng)絡(luò)文檔進(jìn)行修改和刪除,只能通過瀏覽器實(shí)現(xiàn)信息瀏覽或動(dòng)態(tài) 交互。 3)簡(jiǎn)單性 JavaScript 的簡(jiǎn)單性主要體現(xiàn)在:首先它是一種基于 Java 基本語句和控制流之上 的簡(jiǎn)單而緊湊的設(shè)計(jì),從而對(duì)于學(xué)習(xí) Java 是一種非常好的過渡。這意味 著它能運(yùn)用自己已經(jīng)創(chuàng)建的對(duì)象。它與 HTML 標(biāo)識(shí)結(jié)合在一起,從而方便用戶 的使用操作。它的基 本結(jié)構(gòu)形式與 C、 C++、 VB、 Delphi 十分類似。它的出現(xiàn)彌補(bǔ)了 HTML語言的缺陷 ,它是 Java與 HTML折衷的選擇,具有以下基本特點(diǎn) [18]: 1)是一種腳本編寫語言 JavaScript 是一種腳本語言,它采用小程序段的方式實(shí)現(xiàn)編程。從而可以開發(fā)客戶端 的應(yīng)用程序等。 JavaScript 介紹 JavaScript是一種基于對(duì)象( Object)和事件驅(qū)動(dòng)( Event Driven)并具有安全性能 的腳本語言。屬性和值在本網(wǎng)站的 CSS 屬性部分也給出了。color:blue} /STYLE /HEAD 上述的樣式表告訴瀏覽器用加大、紅色字體去顯示一級(jí)標(biāo)題,用大、藍(lán)色字體去
點(diǎn)擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1