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

正文內(nèi)容

基于linux嵌入式瀏覽器設(shè)計與實現(xiàn)-閱讀頁

2024-12-07 21:52本頁面
  

【正文】 規(guī)格正式的定義了所有的有效屬性和值。 關(guān)于 CSS,在排版部分還會有更詳細的討論。使用它的目的是于 HTML超文本標(biāo)記語言、 Java腳本語言( Java小程序) 14 一起實現(xiàn)在一個 Web頁面中鏈接多個對象 ,與 Web客戶交互作用。它是通過嵌入或調(diào)入在標(biāo)準的 HTML語言中實現(xiàn)的。像其它腳本語言 一樣, JavaScript 同樣已是一種解釋性語言,它提供了一個簡易的開發(fā)過程。但它不像這些語言一樣,需要先編譯 , 而是在程序運行過程中被逐行的解釋。 2)基于對象的語言 JavaScript 是一種基于對象的語言,同時也可以看作是一種面向?qū)ο蟮?。因此,許多功能可以來自于腳本環(huán)境中對象的方法 與腳本的相互作用。其次它的變量類型 是采用弱類型,并未使用嚴格的 數(shù)據(jù)類型。從而有效的防止數(shù)據(jù)的丟失。它對用戶的反映響應(yīng),是采用以事件驅(qū)動的方式進行的。 比如按下鼠標(biāo)、移動窗口 、選擇菜單等都可以視為事件。 6)跨平臺性 JavaScript 是依賴于瀏覽器本身,與操作環(huán)境無關(guān),只要能運行瀏覽器的計算機, 并支持 JavaScript 的瀏覽器就可正確執(zhí)行。無須有高性能的電腦,軟件僅需一個字處理軟件及一個瀏覽 器,無須 WEB 服務(wù)器通道,通過自己的電腦即可完成所有的事情。 15 JavaScript 語言可以做到回應(yīng)使用者的需求事件(如: form 的輸入),而不用任何的網(wǎng) 絡(luò)來回傳輸資料,所以當(dāng)一個使用者輸入一項資料時,它不用經(jīng)過伺服端 (Server)處 理,再傳回來的過程,而直接可以被客戶端 (client)的應(yīng)用程序所處理。 Java 是一種比 JavaScript 更復(fù)雜許 多的程序語言,而 JavaScript 則是相當(dāng)容易了解的語言。 在 Easy Embedded Browser 項目中,作者采用了著名的 Mozilla 的 JavaScript 引擎。 Linux 下的程序開發(fā)環(huán)境 1)標(biāo)準( ANSI C,POSIX,SVID,XPC) [5] ANSI C:這一標(biāo)準是 ANSI(美國國家標(biāo)準局)于 1989 年指定的 C 語言標(biāo)準。 POSIX:該標(biāo)準最初由 IEEE 開發(fā)的標(biāo)準族,部分已經(jīng)被 ISO 接受為國際標(biāo)準。 System V 接口描述 (SVID)是描述 ATamp。 XPG: X/Open 可移植性指南。 2)函數(shù)庫 glibc:眾所周知, C 語言并沒有為常見的操作,例如輸入 /輸出、內(nèi)存管理,字 符串 操作等提供內(nèi)置的支持。 GNU 的 C 函數(shù)庫,即 glibc,是 Linux 上最重要的函數(shù)庫,它定義了 ISOC 標(biāo)準指定的所有 的庫函數(shù),以及由 POSIX 或其它 UNIX 操作系統(tǒng)變種指定的附加特色,還包括有與 GNU 系統(tǒng)相關(guān)的擴展。 Glibc 基 于如下標(biāo)準: ISO C:C 編程語言的國際標(biāo)準,即 ANSI C,POSIX,Berkeley Unix, SVID,XPG。圖形文件操作函數(shù)庫包括: libungif、 libtiff、 libpng、 Imlib、 libjpeg 等,可分別用來操作 GIF、 TIFF、 PNG、 JPEG 以及其他一些格式圖形文件。在 C 語言中,操作系統(tǒng)的系統(tǒng)調(diào) 用通常通過函數(shù)調(diào)用的形式完成,在 Linux 系統(tǒng)中,系統(tǒng)調(diào)用函數(shù)定義在 glibc 中。 errno 中包含有錯誤代碼。 Linux 上的編譯器和調(diào)試器 1) Linux 上的 C/C++ 編譯器和調(diào)試器 [1] 運行 gcc/egcs: Linux 中最重要的軟件開發(fā)工具是 GCC。實際上, GCC 能夠編譯三種語言: C、 C++ 和 Object C( C 語言 的一種面向?qū)ο髷U展 )。 例如利用如下的命令可編譯生成可執(zhí)行文件,并執(zhí)行程序: $ gcc o factorial $ ./factorial 5 GCC 可同時用來編譯 C 程序和 C++ 程序。在 Linux 中, C 源文件的后綴名為 .c, 而 C++ 源文件的后綴名為 .C 或 .cpp。因 此,通常使用 g++ 命令來完成 C++ 程序的編譯和連接,該程序會自動調(diào)用 gcc 實 現(xiàn)編譯。這一選項將禁止 GNU C 的某些特色, 只編譯并生成目標(biāo)文件。 以字符串 “DEFN”定義 MACRO 宏。 生成調(diào)試信息。 指定額外的頭文件搜索路徑 DIRECTORY。 連接時搜索指定的函數(shù)庫 LIBRARY。 生成指定的輸出文件。 不進行優(yōu)化處理。 進一步優(yōu)化。 生成共享目標(biāo)文件。 禁止使用共享連接。 不生成任何警告信息。 3) gdb GNU 的調(diào)試器稱為 gdb,該程序是一個交互式工具,工作在字符模式。 gdb 是功能強大的調(diào) 試程序 ,可完成如下的調(diào)試 :設(shè)置斷點;監(jiān)視程序變量的值;程序的單步執(zhí)行;修改 變量的值??稍? makefile 中如下定義 CFLAGS 變量: CFLAGS = g,運行 gdb 調(diào)試程序時通常使用如下的命 令: gdb progname 4)創(chuàng)建和使用靜態(tài)庫 創(chuàng)建一個靜態(tài)庫是相當(dāng)簡單的。 5)創(chuàng)建和使用共享庫 特殊的編譯和連接 選項 D_REENTRANT 使得預(yù)處理器符號 _REENTRANT 被 定義,這個符號激活一些宏特性。由于庫是在運行 的時候被調(diào)入,因此這個選項是必需的, shared 選項告訴編譯器產(chǎn)生共享庫代碼。因此,人們通常利用 make 工具來自動完成 編譯工作。利用這種自動編 譯可大大簡化開發(fā)工作,避免不必要的重新編譯。 makefile 需要按照某種語法進行編寫,其中說明了如何編譯各個源文件并連接生成可執(zhí)行文 件,并定義了源文件之間的依賴關(guān)系。 18 默認情況 下, GNU make 工具在當(dāng)前工作目錄中按如下順序搜索 makefile: GNUmakefile,makefile,Makefile。 2) makefile 基本結(jié)構(gòu) makefile 中一般包含如下內(nèi)容: * 需要由 make 工具創(chuàng)建的項目,通常是目標(biāo)文件和可執(zhí)行文件。 * 創(chuàng)建每個項目時需要運行的命令。另外,你可能只 希望利用 g++ 命令來生成 目標(biāo)文件。通常, makefile 中定義有 clean 目標(biāo), 可用來清除編譯過程中的中間文件,例如: clean: rm f *.o 運行 make clean 時,將執(zhí)行 rm f *.o 命令,最終刪除所有編譯過程中產(chǎn)生的所 有中間文件。其中之一就是變量或宏的定義能力。但利用簡單的變量定義,可避免這種乏味 的工作,例如: CC = gcc CCFLAGS = D_DEBUG g m486 : $(CC) c $(CCFLAGS) 在上面的例子中, CC 和 CCFLAGS 就是 make 的變量。在 makefile 中 引用變量的值時,只需變量名之前添加 $ 符號。 以指定的 FILE 文件作為 makefile。 忽略所有的命令執(zhí)行錯誤。 只打印要執(zhí)行的命令,但不執(zhí)行這些命令。 在執(zhí)行命令時不顯示命令。 假定文件 FILE 已經(jīng)被修改。 GTK 被稱為 GIMP 工具包是因為最初寫它是用來開發(fā) GIMP (GNU 圖像處理程序 ) 的,但是它現(xiàn)在已經(jīng) 被用于很多軟件項目了,包括 GNOME (GNU 網(wǎng)絡(luò)對象模型環(huán)境 )。 GTK 實質(zhì)上是一個面向?qū)ο蟮膽?yīng)用程序接口 (API)。 下面通過一個簡單的程序來介紹如何用 GTK 進行用戶界面開發(fā)。 20 include gtk/ 圖 一個用 GTK 創(chuàng)建的窗口 int main( int argc, char *argv[] ) { GtkWidget *window。argc, amp。 window = gtk_window_new (GTK_WINDOW_TOPLEVEL)。 gtk_main ()。 } 你可以用 gcc 編譯上面的程序: gcc o base `pkgconfig cflags libs gtk+` 所有程序應(yīng)該包含 gtk/,其中聲明了變量、函數(shù)以及數(shù)據(jù)結(jié)構(gòu)等,這些東西 會在你的程序中使用。argc, amp。 這個函數(shù) gtk_init(gint *argc, gchar ***argv) 會在每個 GTK 應(yīng)用程序中調(diào)用。該函數(shù)初始化要使用的庫,設(shè)定默認的信號處理, 并檢查傳遞給你的程序的命令行參數(shù),尋找下列之一: 1) gtkmodule 2) gfatalwarnings 3) gtkdebug 21 4) gtknodebug 5) gdkdebug 6) gdknodebug 7) display 8) sync 9) name 10) class 這些參數(shù)將會從參數(shù)表中刪除,留下它不能識別的給你的程序解析或忽略。 下面兩行程序會創(chuàng)建并顯示一個窗口 window = gtk_window_new (GTK_WINDOW_TOPLEVEL)。 GTK_WINDOW_TOPLEVEL 參數(shù)指作者要使用窗口管理器來修飾和放置窗口。 gtk_widget_show() 函數(shù)讓 GTK 知道,作者已經(jīng)設(shè)置完構(gòu)件的屬性,可以顯示 它了。 gtk_main ()。當(dāng)程序運行到這 里, GTK 會 “睡著 ”等待 X 事件 (如按鈕或鍵盤按下 )、超時 (timeouts)或文件 IO 通知發(fā)生。 22 4 HTML 解析 HTML的細節(jié)在 RFC和 W3C組織的相關(guān)文檔中有詳細規(guī)定 [21],但實現(xiàn)的方法差別 就非常大了。 HTML解析是瀏覽器程 序中重要的一部分。這種方法處理起來很簡單,但它的缺點是必 須對超文本掃描兩次,這將大大影響整個瀏覽器系統(tǒng)的效率 [14]。 HTML 解析的過程主要有兩部分:分詞過程和分析、處理過程。 把 HTML 文本 看做字符流,對它進行掃描,分出一個個的 token。分析、處理過程:針對分出的 token,根據(jù)它的屬 性等信息,調(diào)用不同的分析程序( parser)進行相應(yīng)處理,并根據(jù)它們之間的層次關(guān) 系,加入到語法樹和 render 樹中。語法樹和 render 樹是這一部分得處 理結(jié)果,也是后面處理模塊的基礎(chǔ)。 Easy Token 可以正確解析 的全部元素,該解析器實際是通用的,還可用于 XML、 WML 的詞法分析,只需替換元素名稱即可。 主要由以下幾個部分組成: 1)初始化:完成對數(shù)據(jù)結(jié)構(gòu)的初始化,主要是分配內(nèi)存,變 量賦初值。 3)元素分析:提取元素的名稱、屬性和值域。 數(shù)據(jù)結(jié)構(gòu) typedef struct EasyTokenContext {char * strBuffer。 curPosition。 //全局 HTML 代碼 int int global_bufferLength。 EasyTokenList *tokenList。 //元素節(jié)點鏈表 EasyPTagList pTagList。 EasyTokenContext 是用于存儲當(dāng)前待分析網(wǎng)頁全局屬性的數(shù)據(jù)結(jié)構(gòu),其中 TokenList 是核心的元素節(jié)點鏈表。下 面給 出該鏈表的數(shù)據(jù)結(jié)構(gòu),是很簡單的雙向鏈表。 //元素節(jié)點 struct TokenList *priou。 }EasyTokenList,*EasyPTokenList。 //節(jié)點類型,如定義的 HTML_BODY, HTML_TXT 等。 BOOL end。 EasyTokenAttrList *attrList_tail。 請注意,以上出現(xiàn) tail 標(biāo)記的指針變量,如 EasyTokenList * tokenList_tail 等,其 作用是用于保存鏈表結(jié)尾節(jié)點指針,便于在釋放內(nèi)存時,直接找到鏈尾,提高了算法 的效率。 3)如果遇到回車、空格,則跳過。 5)如果非以上情況,則認為遇到文字,處理這段文字,使用函數(shù) Token_Consum_PlainText()。 6)循環(huán)以上操作,直到該網(wǎng)頁分析完畢。 算法效率與改進: 采用以上的基本算法是可行的。對此的改
點擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1