1. php的垃圾回收機制
PHP能夠自動進行內存管理,清除不須要的對象。
PHP使用了引用計數(reference counting) GC機制。
每一個對象都內含一個引用計數器refcount,每一個reference鏈接到對象,計數器加1。當reference離開生存空間或被設爲NULL,計數器減1。當某個對象的引用計數器爲零時,PHP知道你將再也不須要使用這個對象,釋放其所佔的內存空間。
參考 http://www.php.net/manual/zh/features.gc.refcounting-basics.php
2. session與cookie的區別和聯繫
區別:
1.存放位置:Session保存在服務器,Cookie保存在客戶端。
2.存放的形式:Session是以對象的形式保存在服務器,Cookie以字符串的形式保存在客戶端。
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沒有大小和數量限制。
聯繫:
1. Session須要藉助Cookie才能正常工做。若是客戶端徹底禁止Cookie,Session將失效!由於Session是由應用服務器維持的一個 服務器端的存儲空間,用戶在鏈接服務器時,會由服務器生成一個惟一的SessionID,用該SessionID 爲標識符來存取服務器端的Session存儲空間。而SessionID這一數據則是保存到客戶端,用Cookie保存的,用戶提交頁面時,會將這一 SessionID 提交到服務器端,來存取Session數據。這一過程,是不用開發人員干預的。因此一旦客戶端禁用Cookie,那麼Session也會失效。
3. 如何修改SESSION的生存時間
1. 設置瀏覽器保存的sessionid失效時間 setcookie(session_name(), session_id(), time() + $lifeTime, "/");
2. 可使用SESSION 自帶的 session_set_cookie_params(86400); 來設置 Session 的生存期
3. 經過修改php.ini中的session.gc_maxlifetime參數的值就能夠改變session的生存時間
4. PHP頁面重定向的方法有哪些
1. header('Location: http://www.baidu.com/') ;
2. echo '<meta http-equiv="Refresh" content="0;url=http://www.baidu.com/" >';
3 echo '<script>window.location.href= www.baidu.com</script>';
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、分頁、選擇菜單生成)、事務處理、輸出到文件。 參考 http://apps.hi.baidu.com/share/detail/463678
6. 長鏈接、短鏈接的區別和使用
長鏈接:client方與server方先創建鏈接,鏈接創建後不斷開,而後再進行報文發送和接收。這種方式下因爲通信鏈接一直存在。此種方式經常使用於P2P通訊。
短鏈接:Client方與server每進行一次報文收發交易時才進行通信鏈接,交易完畢後當即斷開鏈接。此方式經常使用於一點對多點通信。C/S通訊。
長鏈接與短鏈接的使用時機:
長鏈接:
短鏈接多用於操做頻繁,點對點的通信,並且鏈接數不能太多的狀況。每一個TCP連 接的創建都須要三次握手,每一個TCP鏈接的斷開要四次握手。若是每次操做都要創建鏈接而後再操做的話處理速度會下降,因此每次操做下次操做時直接發送數據 就能夠了,不用再創建TCP鏈接。例如:數據庫的鏈接用長鏈接,若是用短鏈接頻繁的通訊會形成socket錯誤,頻繁的socket建立也是對資源的浪 費。
短鏈接:
web網站的http服務通常都用短鏈接。由於長鏈接對於服務器來講要耗費必定 的資源。像web網站這麼頻繁的成千上萬甚至上億客戶端的鏈接用短鏈接更省一些資源。試想若是都用長鏈接,並且同時用成千上萬的用戶,每一個用戶都佔有一個 鏈接的話,可想而知服務器的壓力有多大。因此併發量大,可是每一個用戶又不需頻繁操做的狀況下須要短鏈接。
參考http://www.cnblogs.com/Roberts/archive/2010/12/05/1986550.html
7. HTTP協議詳解、應用
http(超文本傳輸協議)是一個基於請求與響應模式的、無狀態的、短鏈接、靈活、應用層的協議,常基於TCP 的鏈接方式。
參考 http://blog.csdn.net/gueter/article/details/1524447 (http協議詳解)
(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. 異構系統通信中的通信加密方案
參考 http://blog.csdn.net/linvo/article/details/5741942
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中經常使用做用類似,性能差別很大的函數區分及舉例
參考 http://apps.hi.baidu.com/share/detail/43169774
12. posix及perl兼容正則比較,及函數性能分析
POSIX正則和 PCRE正則最顯著的須要知道的不一樣點:
1. PCRE函數須要模式以分隔符閉合.
2. POSIX兼容正則沒有修正符。不像POSIX, PCRE擴展沒有專門用於大小寫不敏感匹配的函數. 取而
代之的是, 支持使用/i 模式修飾符完成一樣的工做. 其餘模式修飾符一樣可用於改變匹配策略.
3. POSIX函數從最左面開始尋找最長的匹配, 可是PCRE在第一個合法匹配後中止. 若是字符串 不匹
配這沒有什麼區別, 可是若是匹配, 二者在結果和速度上都會有差異. 爲了說明這個不一樣, 考慮下面的例子(來自Jeffrey Friedl的《精通正則表達式》一書). 使用模式 one(self)?(selfsufficient)?在字符串oneselfsufficient 上匹配, PCRE會匹配到oneself, 可是使用POSIX, 結果將是整個字符串 oneselfsufficient. 兩個子串都匹配原始字符串, 可是POSIX將 最長的最爲結果.
PCRE可用的修飾符: (i,s,m)
13. 實現PERL正則表達式,抓取html文件a標籤的全部href超連接
正則:/<a\s+.*?href=[\'\"](.*?)[\'\" >]/is
$html = <<<HTML
<html><link type="text/css" href="../style/base.css" />
<a href="test.htm? Page=1" id="logo">aa</a>as
<a class="quit" href="www.hao123.com" on);">退出</a></div>
<a
class='aa' href='www.baidu.com' >百度</a></html>
HTML;
$matches = array();
preg_match_all ( "/<a\s+.*?href=[\'\"](.*?)[\'\" >]/is", $html, $matches ); print_r($matches[1]); //輸出全部超連接
?>
14. 預約義變量、魔術變量、魔術方法比較,及做用舉例
預約義變量(超級全局變量)
$GLOBALS
$_SERVER
$_GET
$_POST
$_COOKIE
$_SESSION
$_REQUEST
$_ENV
魔術方法http://apps.hi.baidu.com/share/detail/17851228
__construct 和__destruct
__autoload
__get 和__set
__isset 和__unset
__call 和__callStatic
__clone
__toString
__sleep 和__wakeup
__invoke
魔術變量http://apps.hi.baidu.com/share/detail/17851228
__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作負載均衡指南
思考如何應對如下問題? 參考http://www.examw.com/linux/all/142494/
在Apache負載均衡的狀況下,作PHP開發如何考慮一下幾方面:
PHP源文件在服務器、PHP文件上傳處理、相關配置文件、Session會話放置、日誌放置
Apache負載均衡的原則:
參考http://s456123123b.blog.163.com/blog/static/5632332220101080474642/
輪詢均衡策略 (輪詢轉發請求)
按權重分配均衡策略 (按響應數量轉發請求)
權重請求響應負載均衡策略 (按響應流量轉發請求)
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庫實現網絡鏈接服務,理論上能夠處理無限多的鏈接,可是它和
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緩存
23. 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()
的文件擁有者用戶名相同。
如下是一些和安全模式相關的配置選項
safe_mode_gid=on|off
safe_mode_include_dir=string
safe_mode_env_vars=string
safe_mode_exec_dir=string
safe_mode_protected_env_vars=string
24. 常見的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欺騙,迫使服務器把合法用戶的鏈接復位,影響合法用戶的鏈接
25. PHP作好防盜鏈的基本思想 防盜鏈
什麼是盜鏈?
盜鏈是指服務提供商本身不提供服務的內容,經過技術手段繞過其它有利益的最終用戶界面(如廣告),直接在本身的網站上向最終用戶提供其它服務提供商的服務內容,騙取最終用戶的瀏覽和點擊率。受益者不提供資源或提供不多的資源,而真正的服務提供商卻得不到任何的收益。
網站盜鏈會大量消耗被盜鏈網站的帶寬,而真正的點擊率也許會很小,嚴重損害了被盜鏈網站的利益。 如何作防盜鏈?
不按期改名文件或者目錄
限制引用頁
原理是,服務器獲取用戶提交信息的網站地址,而後和真正的服務端的地址相比較, 若是一致則代表是站內提交,或者爲本身信任的站點提交,不然視爲盜鏈。實現時可使用HTTP_REFERER1 和htaccess 文件(須要啓用mod_Rewrite),結合正則表達式去匹配用戶的每個訪問請求。
文件假裝
文件假裝是目前用得最多的一種反盜鏈技術,通常會結合服務器端動態腳本 (PHP/JSP/ASP)。實際上用戶請求的文件地址,只是一個通過假裝的腳本文件,這個腳本文件會對用戶的請求做認證,通常會檢查 Session,Cookie 或HTTP_REFERER 做爲判斷是否爲盜鏈的依據。而真實的文件實際隱藏在用戶不可以訪問的地方,只有用戶經過驗證之後纔會返回給用戶
加密認證
這種反盜鏈方式,先從客戶端獲取用戶信息,而後根據這個信息和用戶請求的文件名 字一塊兒加密成字符串(Session ID)做爲身份驗證。只有當認證成功之後,服務端纔會把用戶須要的文件傳送給客戶。通常咱們會把加密的Session ID 做爲URL 參數的一部分傳遞給服務器,因爲這個Session ID 和用戶的信息掛鉤,因此別人就算是盜取了連接,該Session ID 也沒法經過身份認證,從而達到反盜鏈的目的。這種方式對於分佈式盜鏈很是有效。
隨機附加碼
每次,在頁面裏生成一個附加碼,並存在數據庫裏,和對應的圖片相關,訪問圖片時和此附加碼對比,相同則輸出圖片,不然輸出404圖片
加入水印
第14 / 18頁
26. HTTP請求頭信息和響應頭信息
請求頭信息
POST /scp1.1.0/prs/new_rnaseqtask/run_go HTTP/1.1
Host: 172.30.4.102
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:6.0) Gecko/20100101 Firefox/6.0
Accept: */*
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Referer: http://172.30.4.102/scp1.1.0/index.php/prs/new_rnaseqtask/index_continue/13/364 Content-Length: 1819
Cookie:
ci_session=a%3A4%3A%7Bs%3A10%3A%22session_id%22%3Bs%3A32%3A%22e31556053ff9407a454f6a1e146d43eb%22%3Bs%3A10%3A%22ip_address%22%3Bs%3A12%3A%22172.16.23.42%22%3Bs%3A10%3A%22user_agent%22%3Bs%3A50%3A%22Mozilla%2F5.0+%28Windows+NT+6.1%3B+rv%3A6.0%29+Gecko%2F2010010%22%3Bs%3A13%3A%22last_activity%22%3Bi%3A1314955607%3B%7D664b51a01ef99bac95f3e2206e79cb00;PHPSESSID=v33mlm1437lmop1fquta675vv4;username=linjinming; tk=1314955601855 Pragma: no-cache
Cache-Control: no-cache
響應頭信息
HTTP/1.1 200 OK
Date: Fri, 02 Sep 2011 09:27:07 GMT
Server: Apache/2.2.3 (Red Hat)
X-Powered-By: PHP/5.1.6
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 31
Connection: close
Content-Type: text/html; charset=UTF-8
27. MySQL
MySQL數據庫性能優化
使用mysqlreport;
正確使用索引:explain分析查詢語句,組合索引,索引反作用(佔空間、update)
開啓慢查詢日誌、使用慢查詢分析工具mysqlsla;
索引緩存、索引代價(插入更新索引);
第15 / 18頁
表鎖,行鎖,行鎖反作用(update多時候變慢),在select和update混合的狀況下,行鎖巧妙解決了讀寫互斥的問題;
開啓使用查詢緩存;
修改臨時表內存空間;
開啓線程池;
MySQL Query語句優化的基本思路和原則
1. 優化須要優化的Query;
2. 定位優化對象的性能瓶頸;
3. 明確優化目標;
4. 從Explaing入手;
5. 多使用Profile;
6. 永遠用小結果集推進大的結果集;
7. 儘量在索引中完成排序;
8. 只取本身須要的Columns;
9. 僅僅使用最有效的過濾條件;
10. 儘量避免複雜的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個對象引用它們 表類型,區分表類型
優化表設計的經常使用思路
第16 / 18頁
負載均衡的數據庫設計
數據類型及詳細定義,區分
28. Apache
性能優化,配置,fastCGI等幾種工做模式
29. Ajax
用JS實現Ajax功能 var createXHR = function(){
}
var addURLParam = function(url, name, value){
}
var xhr = createXHR();
xhr.onreadystatechange = function(){
}
var url = 'testAjax.php';
addURLParam(url, 'name', 'linjm');
xhr.open('get',url,true);
xhr.send(NULL);
if(xhr.readyState == 4){ } if(xhr.status > 200 && xhr.status < 300 || xhr.status == 304){ } alert(xhr.responseText); url += (url.indexOf('?') == -1 ? '?' : '&'); url += encodeURIComponent(name) + '=' + encodeURIComponent(value); return url; if(window.XMLHttpRequest){ } return new XMLHttpRequest(); return new ActiveXObject('Microsoft.XMLHTTP'); throw new Error('No XMLHttpRequest available'); }else{ }else{
30. Javascript
變量、做用域、做用域鏈
php