有須要學習交流的友人請加入交流羣的我們一塊兒,有問題一塊兒交流,一塊兒進步!前提是你是學技術的。感謝閱讀!php
點此加入該羣css
1. php 的垃圾回收機制html
PHP 能夠自動進行內存管理,清除不須要的對象。前端
PHP 使用了引用計數 (reference counting) GC 機制。node
每一個對象都內含一個引用計數器 refcount,每一個 reference 鏈接到對象,計數器加 1。當 reference 離開生存空間或被設爲 NULL,計數器減 1。當某個對象的引用計數器爲零時,PHP 知道你將再也不須要使用這個對象,釋放其所佔的內存空間。mysql
2. session 與 cookie 的區別和聯繫web
區別:ajax
1. 存放位置:Session 保存在服務器,Cookie 保存在客戶端。正則表達式
2. 存放的形式:Session 是以對象的形式保存在服務器,Cookie 以字符串的形式保存在客戶端。sql
3. 用途:Cookies 適合作保存用戶的我的設置,愛好等,Session 適合作客戶的身份驗證
4. 路徑:Session 不能區分路徑,同一個用戶在訪問一個網站期間,全部的 Session 在任何一個地方均可以訪問到。而 Cookie 中若是設置了路徑參數,那麼同一個網站中不一樣路徑下的 Cookie 互相是訪問不到的。
5. 安全性:Cookie 不是很安全,別人能夠分析存放在本地的 COOKIE 並進行 COOKIE 欺騙,考慮到安全應當使用 session
6. 大小以及數量限制:每一個域名所包含的 cookie 數:IE7/8,FireFox:50 個,Opera30 個; Cookie 總大小:Firefox 和 Safari 容許 cookie 多達 4097 個字節,Opera 容許 cookie 多達 4096 個字 節,InternetExplorer 容許 cookie 多達 4095 個字節;通常認爲 Session 沒有大小和數量限制。
關係:
Session 須要藉助 Cookie 才能正常工做。若是客戶端徹底禁止 Cookie,Session 將失效!由於 Session 是由應用服務器維持的一個 服務器端的存儲空間,用戶在鏈接服務器時,會由服務器生成一個惟一的 SessionID, 用該 SessionID 爲標識符來存取服務器端的 Session 存儲空間。
而 SessionID 這一數據則是保存到客戶端,用 Cookie 保存的,用戶提交頁面時,會將這一 SessionID 提交到服務器端,來存取 Session 數據。這一過程,是不用開發人員干預的。因此一旦客戶端禁用 Cookie,那麼 Session 也會失效。
3. 如何修改 SESSION 的生存時間
一、設置瀏覽器保存的 sessionid 失效時間 setcookie (session_name (), session_id (), time () + $lifeTime, "/");
二、可使用 SESSION 自帶的 session_set_cookie_params (86400); 來設置 Session 的生存期
三、經過修改 php.ini 中的 session.gc_maxlifetime 參數的值就能夠改變 session 的生存時間
4. PHP 頁面重定向的方法有哪些
5. PDO、adoDB、PHPLib 數據庫抽象層比較
PHP 數據庫抽象層就是指,封裝了數據庫底層操做的介於 PHP 邏輯程序代碼和數據庫之間的中間件。
PDO 以 PHP 5.1 爲基礎進行設計,它使用 C 語言作底層開發,設計沿承 PHP 的特色,以簡潔易用爲準,從嚴格意義上講,PDO 應該歸爲 PHP 5 的 SPL 庫之一,而不該該歸於數據抽象層,由於其自己和 MySQL 和 MySQLi 擴展庫的功能相似。PDO 是不適合用在打算或者有可能會變動數據庫的系 統中的。
ADODB 無論後端數據庫如何,存取數據庫的方式都是一致的;
轉移數據庫平臺時,程序代碼也沒必要作太大的更動,事實上只須要改動數據庫配置文 件。提供了大量的拼裝方法,目的就是針對不一樣的數據庫在抽象層的底層對這些語句進行鍼對性的翻譯,以適應不一樣的數據庫方言!
可是這個抽象層彷佛體積過於龐 大了,所有文件大概有 500K 左右,若是你作一個很小的網站的話,用這個彷佛大材小用了
PHPLib 多是伴隨 PHP 一同成長最老的數據庫抽象層(但和 ADODB 相比,它只算是一個 MySQL 抽象類庫),這個抽象類使用方法至關簡單,體積小,是小型網站開發不錯的選擇。
PDO 提供預處理語句查詢、錯誤異常處理、靈活取得查詢結果(返回數組、字符串、對象、回調函數)、字符過濾防止 SQL 攻擊、事務處理、存儲過程。
ADODB 支持 緩存查詢、移動記錄集、(HTML、分頁、選擇菜單生成)、事務處理、輸出到文件。
6. 長鏈接、短鏈接的區別和使用
長鏈接:client 方與 server 方先創建鏈接,鏈接創建後不斷開,而後再進行報文發送和接收。這種方式下因爲通信鏈接一直存在。此種方式經常使用於 P2P 通訊。
短鏈接:Client 方與 server 每進行一次報文收發交易時才進行通信鏈接,交易完畢後當即斷開鏈接。此方式經常使用於一點對多點通信。C/S 通訊。
長鏈接與短鏈接的使用時機:
長鏈接:
短鏈接多用於操做頻繁,點對點的通信,並且鏈接數不能太多的狀況。每一個 TCP 連 接的創建都須要三次握手,每一個 TCP 鏈接的斷開要四次握手。若是每次操做都要創建鏈接而後再操做的話處理速度會下降,因此每次操做下次操做時直接發送數據 就能夠了,不用再創建 TCP 鏈接。例如:數據庫的鏈接用長鏈接,若是用短鏈接頻繁的通訊會形成 socket 錯誤,頻繁的 socket 建立也是對資源的浪 費。
短鏈接:
web 網站的 http 服務通常都用短鏈接。由於長鏈接對於服務器來講要耗費必定 的資源。像 web 網站這麼頻繁的成千上萬甚至上億客戶端的鏈接用短鏈接更省一些資源。試想若是都用長鏈接,並且同時用成千上萬的用戶,每一個用戶都佔有一個 鏈接的話,可想而知服務器的壓力有多大。因此併發量大,可是每一個用戶又不需頻繁操做的狀況下須要短鏈接。
7. HTTP 協議詳解、應用
http(超文本傳輸協議)是一個基於請求與響應模式的、無狀態的、短鏈接、靈活、應用層的協議,常基於 TCP 的鏈接方式。
(HTTP 響應狀態碼)
HTTP 響應狀態碼
狀態代碼有三位數字組成,第一個數字定義了響應的類別,且有五種可能取值:
1xx:指示信息 -- 表示請求已接收,繼續處理
2xx:成功 -- 表示請求已被成功接收、理解、接受
3xx:重定向 -- 要完成請求必須進行更進一步的操做
4xx:客戶端錯誤 -- 請求有語法錯誤或請求沒法實現
5xx:服務器端錯誤 -- 服務器未能實現合法的請求
常見狀態代碼、狀態描述、說明:
200 OK // 客戶端請求成功
400 Bad Request // 客戶端請求有語法錯誤,不能被服務器所理解
401 Unauthorized // 請求未經受權,這個狀態代碼必須和 WWW-Authenticate 報頭域一塊兒使用 403 Forbidden // 服務器收到請求,可是拒絕提供服務
404 Not Found // 請求資源不存在,eg:輸入了錯誤的 URL
500 Internal Server Error // 服務器發生不可預期的錯誤
503 Server Unavailable // 服務器超時 // 可能恢復正常
304 Not Modifed // 自從上次請求後,請求的網頁未修改過。
// 服務器返回此響應時,不會返回網頁內容。
8. 異構系統通信中的通信加密方案
9. socket 鏈接步驟
Socket(套接字)概念
套接字(socket)是通訊的基石,是支持 TCP/IP 協議的網絡通訊的基本操做單元。它是網絡通訊過程當中端點的抽象表示,包含進行網絡通訊必須的五種信息:鏈接使用的協議,本地主機的 IP 地址,本地進程的協議端口,遠地主機的 IP 地址,遠地進程的協議端口。
Socket 鏈接過程
創建 Socket 鏈接至少須要一對套接字,其中一個運行於客戶端,稱爲 ClientSocket ,另外一個運行於服務器端,稱爲 ServerSocket
套接字之間的鏈接過程能夠分爲三個步驟:服務器監聽,客戶端請求,鏈接確認。
服務器監聽:是服務器端套接字並不定位具體的客戶端套接字,而是處於等待鏈接的狀態,實時監控網絡狀態。
客戶端請求:是指由客戶端的套接字提出鏈接請求,要鏈接的目標是服務器端的套接字。爲此,客戶端的套接字必須首先描述它要鏈接的服務器的套接字,指出服務器端套接字的地址和端口號,而後就向服務器端套接字提出鏈接請求。
鏈接確認:是指當服務器端套接字監聽到或者說接收到客戶端套接字的鏈接請求,它就響應客戶端
套接字的請求,創建一個新的線程,把服務器端套接字的描述發給客戶端,一旦客戶端確認了此描述,鏈接就創建好了。而服務器端套接字繼續處於監聽狀態,繼續接收其餘客戶端套接字的鏈接請求。
10. TCP 協議,三次握手、四次揮手
TCP 協議 (Transmission Control Protocol) 是主機對主機層的傳輸控制協議,提供可靠的鏈接服務,採用三次握手確認創建一個鏈接,四次揮手斷開鏈接。
位碼即 tcp 標誌位,有 6 種標示:
SYN (synchronous 創建聯機) 同步
ACK (acknowledgement 確認)
PSH (push 傳送)
FIN (finish 結束)
RST (reset 重置)
URG (urgent 緊急)
11. php 中經常使用做用類似,性能差別很大的函數區分及舉例
12. posix 及 perl 兼容正則比較,及函數性能分析
POSIX 正則和 PCRE 正則最顯著的須要知道的不一樣點:
一、PCRE 函數須要模式以分隔符閉合.
二、POSIX 兼容正則沒有修正符。不像 POSIX, PCRE 擴展沒有專門用於大小寫不敏感匹配的函數。取而代之的是,支持使用 /i 模式修飾符完成一樣的工做。其餘模式修飾符一樣可用於改變匹配策略.
三、POSIX 函數從最左面開始尋找最長的匹配,可是 PCRE 在第一個合法匹配後中止。若是字符串 不匹
配這沒有什麼區別,可是若是匹配,二者在結果和速度上都會有差異。爲了說明這個不一樣,考慮下面的例子 (來自 Jeffrey Friedl 的《精通正則表達式》一書). 使用模式 one (self)?(selfsufficient)? 在字符串 oneselfsufficient 上匹配,PCRE 會匹配到 oneself, 可是使用 POSIX, 結果將是整個字符串 oneselfsufficient. 兩個子串都匹配原始字符串,可是 POSIX 將 最長的最爲結果.
PCRE 可用的修飾符: (i,s,m)
13. 實現 PERL 正則表達式,抓取 html 文件 a 標籤的全部 href 超連接
14. 預約義變量、魔術變量、魔術方法比較,及做用舉例
預約義變量(超級全局變量)
$GLOBALS
$_SERVER
$_GET
$_POST
$_COOKIE
$_SESSION
$_REQUEST
$_ENV
construct 和 destruct
__autoload
get 和 set
isset 和 unset
call 和 callStatic
__clone
__toString
sleep 和 wakeup
__invoke
LINE
FILE
DIR
CLASS
FUNCTION
METHOD
NAMESPACE
15. spl 經常使用數據結構類
16. PHP 設計模式
工廠模式
創建一個工廠(一個函數或一個類方法)來製造新的對象
工廠模式 是一種類,它具備爲您建立對象的某些方法。您可使用工廠類建立對象,而不直接使用 new。這樣,若是您想要更改所建立的對象類型,只需更改該工廠便可。使用該工廠的全部代碼會自動更改。
單例模式
某些應用程序資源是獨佔的,由於有且只有一個此類型的資源。例如,經過數據庫句柄到數據庫的鏈接是獨佔的。您但願在應用程序中共享數據庫句柄,由於在保持鏈接打開或關閉時,它是一種開銷,在獲取單個頁面的過程當中更是如此。
單元素模式能夠知足此要求。
PHP 中的單例模式(singleton pattern):指的是在 PHP 的應用程序的範圍內只對指定的類建立一個實例。
在 PHP 中使用單例模式的類一般擁有一個私有構造函數和一個私有克隆函數,以防 止用戶經過建立對象或者克隆對其進行實例化。還有一個靜態私有成員變量 $instance 與靜態方法 getInstance。getInstance 負責對其自己實例化,而後將這個對象存儲在 $instance 靜態成員變量中,以確保只有一個實例被建立。
觀察者模式
命令鏈模式
策略模式
17. 負載均衡的 web 應用服務器設計,例如 youku
用 PHP 作負載均衡指南
思考如何應對如下問題?
在 Apache 負載均衡的狀況下,作 PHP 開發如何考慮一下幾方面:
PHP 源文件在服務器、PHP 文件上傳處理、相關配置文件、Session 會話放置、日誌放置
Apache 負載均衡的原則
輪詢均衡策略 (輪詢轉發請求)
按權重分配均衡策略 (按響應數量轉發請求)
權重請求響應負載均衡策略 (按響應流量轉發請求)
18. 如何優化前端性能
1) 頁面內容的優化
a) 下降請求數
合併 css、js 文件,集成 CSS 圖片
b) 減小交互通訊量
壓縮技術:壓縮 css、js 文件,優化圖像,減小 cookie 體積;
合理利用緩存:使用外部 js/css 文件,緩存 ajax;
減小沒必要要的通訊量:剔除無用腳本和樣式、推遲加載內容、使用 GET 請求
c) 合理利用 「並行」 儘可能避免重定向
慎用 Iframe 樣式表置於頂部 腳本放到樣式後面加載
d) 節約系統消耗
避免 CSS 表達式、濾鏡
2) 服務器的優化
a) b)
c)
d)
19. yahoo 的 34 條前端優化法則
減小 HTTP 請求、利用 CDN 技術、 設置頭文件過時或者靜態緩存、Gzip 壓縮、把 CSS 放頂部、 把 JS 放底部、避免 CSS 表達式、將 JS 和 CSS 外鏈、減小 DNS 查找、減少 JS 和 CSS 的體積、 避免重定向、刪除重複腳本、 配置 ETags、緩存 Ajax、儘早的釋放緩衝、
用 GET 方式進行 AJAX 請求、延遲加載組件、 預加載組件、減小 DOM 元素數量、跨域分離組件、
減小 iframe 數量、不要出現 404 頁面、減少 Cookie、 對組件使用無 Cookie 的域名、減小 DOM 的訪問次數、開發靈活的事件處理句柄、使用 <link> 而非 @import、避免過濾器的使用、優化圖片、優化 CSS Sprites、 不要在 HTML 中縮放圖片、縮小 favicon. ico 的大小並緩存它、保證組件在 25K 如下、將組件打包進一個多部分的文檔中
20. 數據庫緩存的基本理論,參考 memcached
什麼是 Memcached?
memcached 是高性能的分佈式內存緩存服務器。通常的使用目的是,經過緩存數據庫查詢結果,減小數據庫訪問次數,以提升動態 Web 應用的速度、提升可擴展性。
雖然 memcached 使用了一樣的 「Key=>Value」 方式組織數據,可是它和共享內存、APC 等本地緩存有很是大的區別。Memcached 是分佈式的,也就是說 它不是本地的。它基於網絡鏈接(固然它也可使用 localhost)方式完成服務,自己它是一個獨立於應用的程序或守護進程(Daemon 方式)
PHP 與 Memcached
Memcached 使用 libevent 庫實現網絡鏈接服務,理論上能夠處理無限多的鏈接,可是它和
基於反向代理的 Web 緩存;
基於反向代理的 Web 緩存
21. PHP 安全模式
php 安全模式:safe_mode=on|off
啓用 safe_mode 指令將對在共享環境中使用 PHP 時可能有危險的語言特性有所限制。能夠將 safe_mode 是指爲布爾值 on 來啓用,或者設置爲 off 和腳本嘗試訪問的文件的 UID,以此做爲限制機制的基礎。若是 UID 相同,則執行腳本;不然,腳本失敗。
當啓用安全模式時,一些限制將生效
一、 全部輸入輸出函數(例如 fopen ()、file () 和 require ())的適用會受到限制,只能用於與調用這些函數的
腳本有相同擁有者的文件
二、 若是試圖經過函數 popen ()、system () 或 exec () 等執行腳本,只有當腳本位於 safe_mode_exec_dir
配置指令指定的目錄纔可能
三、HTTP 驗證獲得進一步增強,由於驗證腳本用於者的 UID 劃入驗證領域範圍內。此外,當啓用安
全模式時,不會設置 PHP_AUTH。
四、若是適用 MySQL 數據庫服務器,連接 MySQL 服務器所用的用戶名必須與調用 mysql_connect ()
的文件擁有者用戶名相同。
如下是一些和安全模式相關的配置選項
22. 常見的 web 攻擊方式
常見攻擊
XSS (Cross Site Script) ,跨站腳本攻擊。它指的是惡意攻擊者往 Web 頁面裏插入惡意 html 代碼,當用戶瀏覽該頁之時,嵌入的惡意 html 代碼會被執行,從而達到惡意用戶的特殊 目的。
XSS 屬於被動式的攻擊,由於其被動且很差利用,因此許多人常呼略其危害性。可是隨着前端技術的不斷進步富客戶端的應用愈來愈多,這方面的問題越來 越受關注。
舉個簡單例子 :
假如你如今是 sns 站點上一個用戶,發佈信息的功能存在漏洞能夠執行 js 你在 此刻輸入一個 惡意腳本,那麼當前全部看到你新信息的人的瀏覽器都會執行這個腳本彈出提示框 (很爽吧 彈出廣告 :)),若是你作一些更爲激進行爲呢 後果不可思議。
CSRF (Cross Site Request Forgery),跨站點僞造請求。顧名思義就是 經過僞造鏈接請求在用戶不知情的狀況下,讓用戶以本身的身份來完成攻擊者須要達到的一些目的。csrf 的攻擊不一樣於 xss csrf 須要被攻擊者的主動行爲觸發。這樣聽來彷佛是有 「被釣魚」 的嫌疑。
多窗口瀏覽器這這方面彷佛是有助紂爲虐的嫌疑,由於打開的新窗口是具備當前全部 會話的,若是是單瀏覽器窗口相似 ie6 就不會存在這樣的問題,由於每一個窗口都是一個獨立的進程。
舉個簡單例子 : 你正在玩白社會, 看到有人發了一個鏈接,你點擊過去,而後這個鏈接裏面僞造了一個送禮物的表單,這僅僅是一個簡單的例子,問題可見通常。
cookie 劫持。經過獲取頁面的權限,在頁面中寫一個簡單的到惡意站點的請 求,並攜帶用戶的 cookie 獲取 cookie 後經過 cookie 就能夠直以被盜用戶的身份登陸站點。這就是 cookie 劫持。
舉個簡單例子: 某人寫了一篇頗有意思的日誌,而後分享給你們,不少人都點擊查看而且分享了該日誌,一切彷佛都很正常,然而寫日誌的人卻另有用心,在日誌中偷偷隱藏了一個 對站外的請求,那麼全部看過這片日誌的人都會在不知情的狀況下把本身的 cookie 發送給了 某人,那麼他能夠經過任意一我的的 cookie 來登陸這我的的帳戶。
SQL 注入攻擊
在 SQL 注入攻擊 中,用戶經過操縱表單或 GET 查詢字符串,將信息添加到數據庫查詢中。
DNS 攻擊
拒絕服務攻擊
拒絕服務攻擊即攻擊者想辦法讓目標機器中止提供服務,是黑客經常使用的攻擊手段之。
攻擊者進行拒絕服務攻擊,實際上讓服務器實現兩種效果:一是迫使服務器的緩衝區滿,不接收新的請求;二是使用 IP 欺騙,迫使服務器把合法用戶的鏈接復位,影響合法用戶的鏈接
23. PHP 作好防盜鏈的基本思想 防盜鏈
什麼是盜鏈?
盜鏈是指服務提供商本身不提供服務的內容,經過技術手段繞過其它有利益的最終用戶界面 (如廣告),直接在本身的網站上向最終用戶提供其它服務提供商的服務內容,騙取最終用戶的瀏覽和點擊率。受益者不提供資源或提供不多的資源,而真正的服務提供商卻得不到任何的收益。
網站盜鏈會大量消耗被盜鏈網站的帶寬,而真正的點擊率也許會很小,嚴重損害了被盜鏈網站的利益。 如何作防盜鏈?
不按期改名文件或者目錄
限制引用頁
原理是,服務器獲取用戶提交信息的網站地址,而後和真正的服務端的地址相比較, 若是一致則代表是站內提交,或者爲本身信任的站點提交,不然視爲盜鏈。實現時可使用 HTTP_REFERER1 和 htaccess 文件 (須要啓用 mod_Rewrite),結合正則表達式去匹配用戶的每個訪問請求。
文件假裝
文件假裝是目前用得最多的一種反盜鏈技術,通常會結合服務器端動態腳本 (PHP/JSP/ASP)。實際上用戶請求的文件地址,只是一個通過假裝的腳本文件,這個腳本文件會對用戶的請求做認證,通常會檢查 Session,Cookie 或 HTTP_REFERER 做爲判斷是否爲盜鏈的依據。而真實的文件實際隱藏在用戶不可以訪問的地方,只有用戶經過驗證之後纔會返回給用戶
加密認證
這種反盜鏈方式,先從客戶端獲取用戶信息,而後根據這個信息和用戶請求的文件名 字一塊兒加密成字符串 (Session ID) 做爲身份驗證。只有當認證成功之後,服務端纔會把用戶須要的文件傳送給客戶。通常咱們會把加密的 Session ID 做爲 URL 參數的一部分傳遞給服務器,因爲這個 Session ID 和用戶的信息掛鉤,因此別人就算是盜取了連接,該 Session ID 也沒法經過身份認證,從而達到反盜鏈的目的。這種方式對於分佈式盜鏈很是有效。
隨機附加碼
每次,在頁面裏生成一個附加碼,並存在數據庫裏,和對應的圖片相關,訪問圖片時和此附加碼對比,相同則輸出圖片,不然輸出 404 圖片
加入水印
24. HTTP 請求頭信息和響應頭信息
請求頭信息
響應頭信息
25. MySQL
MySQL 數據庫性能優化
使用 mysqlreport;
正確使用索引:explain 分析查詢語句,組合索引,索引反作用(佔空間、update)
開啓慢查詢日誌、使用慢查詢分析工具 mysqlsla;
索引緩存、索引代價(插入更新索引);
表鎖,行鎖,行鎖反作用(update 多時候變慢),在 select 和 update 混合的狀況下,行鎖巧妙解決了讀寫互斥的問題;
開啓使用查詢緩存;
修改臨時表內存空間;
開啓線程池;
MySQL Query 語句優化的基本思路和原則
一、優化須要優化的 Query;
二、定位優化對象的性能瓶頸;
三、明確優化目標;
四、從 Explaing 入手;
五、多使用 Profile;
六、永遠用小結果集推進大的結果集;
七、儘量在索引中完成排序;
八、只取本身須要的 Columns;
九、僅僅使用最有效的過濾條件;
十、儘量避免複雜的 Join 和子查詢。
MySQL 中 MyISAM 引擎和 InnoDB 引擎的區別以及它們的性能
1:Innodb 支持事物,Myisam 不支持
2:鎖定機制不同,Myisam 支持表鎖定,而 Innodb 支持行鎖
3:Myisam 不支持外鍵,Innodb 能支持
4:Myisam 能在特定環境下支持全文索引,而 Innodb 不支持
5:Myisam 支持數據壓縮,Innodb 不支持
6:在數據存儲上,Myisam 佔用的空間少,Innodb 相對多些
7:Myisam 在批量插入和查詢方面速度上有優點,而 Innodb 因爲支持行鎖,因此在數據修改方面更勝一籌
MySQL 存儲引擎
MyISAM:不支持事務、表鎖和全文索引,操做速度快
InnoDB:行鎖設計、支持外鍵、支持安全事務
HEAP:數據存放在內存中,臨時表
NDB Cluster:MySQL 的簇式數據庫引擎
CSV: 存儲引擎把數據以逗號分隔的格式存儲在文本文件中。
FEDERATED:存儲引擎表並不存放數據,它只是指向一臺遠程 MySQL 數據庫服務器上的表 Archive: 只支持 INSERT 和 SELECT 操做,壓縮後存儲,很是適合存儲歸檔數據
Merge:容許將一系列等同的 MyISAM 表以邏輯方式組合在一塊兒,並做爲 1 個對象引用它們 表類型,區分表類型
優化表設計的經常使用思路
負載均衡的數據庫設計
數據類型及詳細定義,區分
26. Apache
性能優化,配置,fastCGI 等幾種工做模式
27. Ajax
用 JS 實現 Ajax 功能
28. Javascript
變量、做用域、做用域鏈.