HTTP定義了與服務器交互的不一樣的方法,最基本的是POST、GET、PUT、DELETE,與其比不可少的URL的全稱是資源描述符,咱們能夠這樣理解:url描述了一個網絡上資源,而post、get、put、delegate就是對這個資源進行增、刪、改、查的操做!php
GET請求會向數據庫發索取數據的請求,從而來獲取信息,該請求就像數據庫的select操做同樣,只是用來查詢一下數據,不會修改、增長數據,不會影響資源的內容,即該請求不會產生反作用。不管進行多少次操做,結果都是同樣的。css
與GET不一樣的是,PUT請求是向服務器端發送數據的,從而改變信息,該請求就像數據庫的update操做同樣,用來修改數據的內容,可是不會增長數據的種類等,也就是說不管進行多少次PUT操做,其結果並無不一樣。html
POST請求同PUT請求相似,都是向服務器端發送數據的,可是該請求會改變數據的種類等資源,就像數據庫的insert操做同樣,會建立新的內容。幾乎目前全部的提交操做都是用POST請求的。前端
DELETE請求顧名思義,就是用來刪除某一個資源的,該請求就像數據庫的delete操做。mysql
Hypertext Preprocessor----超文本預處理器git
Personal Home Page 原始名稱web
目標用途: 容許web開發人員快速編寫動態生成的web頁面,與其餘頁面相比,PHP是將程序嵌入到HTML文檔中去執行,效率比徹底生成HTML編輯的CGI高不少ajax
HTML: Hypertext Markup Language算法
創始人: 拉姆斯勒·勒多夫Rasmus Lerdorf,1968年生,加拿大滑鐵盧大學sql
勒多夫最開始是爲了維護我的網頁,用prel語言寫了維護程序,以後又用c進行了重寫,最終衍生出php/fi
時間軸:
常見的IDE(Intergrated Development Environment): 集成開發環境
常見文本編輯器,具有代碼高亮:
PHP特性:
PHP優點:
PHP技術應用:
* echo、print是php語句,var_dump和print_r是函數 * echo 輸出一個或多個字符串,中間以逗號隔開,沒有返回值是語言結構而不是真正的函數,所以不能做爲表達式的一部分使用 * print也是php的一個關鍵字,有返回值 只能打印出簡單類型變量的值(如int,string),若是字符串顯示成功則返回true,不然返回false * print_r 能夠打印出複雜類型變量的值(如數組、對象)以列表的形式顯示,並以array、object開頭,但print_r輸出布爾值和NULL的結果沒有意義,由於都是打印"\n",所以var_dump()函數更適合調試 * var_dump() 判斷一個變量的類型和長度,並輸出變量的數值
常見的HTTP狀態碼:
HTTP狀態碼分類:
魔術引號是一個將自動將進入PHP腳本的數據進行轉義的過程,最好在編碼時不要轉義而在運行時根據須要而轉義
客戶端:$_SERVER["REMOTE_ADDR"];或者getenv('REMOTE_ADDR')
ip2long進行轉換
服務器端:gethostbyname('www.baidu.com')
cvs、svn、vss、git
Smarty:Smarty算是一種很老的PHP模板引擎了,它曾是我使用這門語言模板的最初選擇。雖然它的更新已經不算頻繁了,而且缺乏新一代模板引擎所具備的部分特性,可是它仍然值得一看。
require是無條件包含,也就是若是一個流程里加入require,不管條件成立與否都會先執行require,當文件不存在或者沒法打開的時候,會提示錯誤,而且會終止程序執行
include有返回值,而require沒有(可能由於如此require的速度比include快),若是被包含的文件不存在的化,那麼會提示一個錯誤,可是程序會繼續執行下去
注意:包含文件不存在或者語法錯誤的時候require是致命的,而include不是
由模型、視圖、控制器完成的應用程序,由模型發出要實現的功能到控制器,控制器接收組織功能傳遞給視圖
變量默認老是傳值賦值,那也就是說,當將一個表達式的值賦予一個變量時,整個表達式的值被賦值到目標變量,這意味着:當一個變量的賦予另一個變量時,改變其中一個變量的值,將不會影響到另一個變量
php也提供了另一種方式給變量賦值:引用賦值。這意味着新的變量簡單的引用(換言之,成爲了其別名或者指向)了原始變量。改動的新的變量將影響到原始變量,反之亦然。使用引用賦值,簡單地將一個&符號加到將要賦值的變量前(源變量)
對象默認是傳引用
對於較大是的數據,傳引用比較好,這樣能夠節省內存的開銷
isset 判斷變量是否認義或者是否爲空
變量存在返回ture,不然返回false 變量定義不賦值返回false unset一個變量,返回false 變量賦值爲null,返回false
empty:判斷變量的值是否爲空,能轉換爲false的都是空,爲空返回true,反之返回false。
"",0,"0",NULL,FALSE都認爲爲空,返回true 沒有任何屬性的對象都認爲是空
is_null:檢測傳入的值(值、變量、表達式)是否爲null
定義了,可是賦值爲Null 定義了,可是沒有賦值 unset一個變量
索引是一種特殊的文件(InnoDB數據表上的索引是表空間的一個組成部分),它們包含着對數據表裏全部記錄的引用指針。
普通索引(由關鍵字KEY或INDEX定義的索引)的惟一任務是加快對數據的訪問速度。
普通索引容許被索引的數據列包含重複的值。若是能肯定某個數據列將只包含彼此各不相同的值,在爲這個數據列建立索引的時候就應該用關鍵字UNIQUE把它定義爲一個惟一索引。也就是說,惟一索引能夠保證數據記錄的惟一性。
主鍵,是一種特殊的惟一索引,在一張表中只能定義一個主鍵索引,主鍵用於惟一標識一條記錄,使用關鍵字 PRIMARY KEY 來建立。
索引能夠覆蓋多個數據列,如像INDEX(columnA, columnB)索引,這就是聯合索引。
索引能夠極大的提升數據的查詢速度,可是會下降插入、刪除、更新表的速度,由於在執行這些寫操做時,還要操做索引文件。
事務(transaction)是做爲一個單元的一組有序的數據庫操做。若是組中的全部操做都成功,則認爲事務成功,即便只有一個操做失敗,事務也不成功。若是全部操做完成,事務則提交,其修改將做用於全部其餘數據庫進程。若是一個操做失敗,則事務將回滾,該事務全部操做的影響都將取消。ACID 四大特性,原子性、隔離性、一致性、持久性。
XSS是跨站腳本攻擊,首先是利用跨站腳本漏洞以一個特權模式去執行攻擊者構造的腳本,而後利用不安全的Activex控件執行惡意的行爲。
使用htmlspecialchars()函數對提交的內容進行過濾,使字符串裏面的特殊符號實體化。
SQL注入產生的緣由:程序開發過程當中不注意規範書寫sql語句和對特殊字符進行過濾,致使客戶端能夠經過全局變量POST和GET提交一些sql語句正常執行。
負面影響:
建立索引和維護索引須要耗費時間,這個時間隨着數據量的增長而增長;索引須要佔用物理空間,不光是表須要佔用數據空間,每一個索引也須要佔用物理空間;當對錶進行增、刪、改、的時候索引也要動態維護,這樣就下降了數據的維護速度。
區別於其餘數據庫的最重要的特色就是其插件式的表存儲引擎。切記:存儲引擎是基於表的,而不是數據庫。
InnoDB與MyISAM的區別:
InnoDB存儲引擎: 主要面向OLTP(Online Transaction Processing,在線事務處理)方面的應用,是第一個完整支持ACID事務的存儲引擎(BDB第一個支持事務的存儲引擎,已經中止開發)。
特色:
MyISAM存儲引擎: 是MySQL官方提供的存儲引擎,主要面向OLAP(Online Analytical Processing,在線分析處理)方面的應用。
特色:
先說什麼是交叉鏈接: 交叉鏈接又叫笛卡爾積,它是指不使用任何條件,直接將一個表的全部記錄和另外一個表中的全部記錄一一匹配。
內鏈接 則是隻有條件的交叉鏈接,根據某個條件篩選出符合條件的記錄,不符合條件的記錄不會出如今結果集中,即內鏈接只鏈接匹配的行。
外鏈接 其結果集中不只包含符合鏈接條件的行,並且還會包括左表、右表或兩個表中
的全部數據行,這三種狀況依次稱之爲左外鏈接,右外鏈接,和全外鏈接。
左外鏈接,也稱左鏈接,左表爲主表,左表中的全部記錄都會出如今結果集中,對於那些在右表中並無匹配的記錄,仍然要顯示,右邊對應的那些字段值以NULL來填充。右外鏈接,也稱右鏈接,右表爲主表,右表中的全部記錄都會出如今結果集中。左鏈接和右鏈接能夠互換,MySQL目前還不支持全外鏈接。
MyISAM、InnoDB、BDB(BerkeleyDB)、Merge、Memory(Heap)、Example、Federated、
Archive、CSV、Blackhole、MaxDB 等等十幾個引擎
面向對象是程序的一種設計模式,它利於提升程序的重用性,使程序機構更加清晰。 主要特徵是:封裝、繼承、多態。
五大基本原則: 單一職責原則;開放封閉原則;替換原則; 依賴原則; 接口分離原則。
參考答案:
靜態路由是由系統管理員設計與構建的路由表規定的路由。適用於網關數量有限的場 合,且網絡拓樸結構不常常變化的網絡。其缺點是不能動態地適用網絡情況的變化,當 網絡情況變化後必須由網絡管理員修改路由表。
動態路由是由路由選擇協議而動態構建的,路由協議之間經過交換各自所擁有的路由信 息實時更新路由表的內容。動態路由能夠自動學習網絡的拓樸結構,並更新路由表。其 缺點是路由廣播更新信息將佔據大量的網絡帶寬。
Memcahce 是把全部的數據保存在內存當中,採用 hash 表的方式,每條數據由 key 和 value 組成,每一個 key 是獨一無二的,當要訪問某個值的時候先按照找到值,而後返回結果。
Memcahce 採用 LRU 算法來逐漸把過時數據清除掉。
流行的 Ajax 框架有 jQuery,Prototype,Dojo,MooTools。
Ajax 的工做原理是一個頁面的指定位置能夠加載另外一個頁面全部的輸出內容,這樣就實現了一個靜態頁面也能獲取到數據庫中的返回數據信息了。因此 Ajax 技術實現了一個靜態網頁在不刷新整個頁面的狀況下與服務器通訊,減小了用戶等待時間,同時也從而下降了網絡流量,加強了客戶體驗的友好程度。
在使用 Ajax 時,涉及到數據傳輸,即將數據從服務器返回到客戶端,服務器端和客戶端分別使用不一樣的腳步語言來處理數據,這就須要一種通用的數據格式,XML 和 json 就是最經常使用的兩種,而 json 比 XML 更簡單。
事務是用戶定義的一個數據庫操做序列,這些操做要麼全作要麼全不作,是一個不可分割的工做單位,事務回滾是指將該事務已經完成的對數據庫的更新操做撤銷。
要同時修改數據庫中兩個不一樣表時,若是它們不是一個事務的話,當第一個表修改完,可能第二個表修改過程當中出現了異常而沒能修改,此時就只有第二個表依舊是未修改以前的狀態,而第一個表已經被修改完畢。而當你把它們設定爲一個事務的時候,當第一個表修改完,第二表修改出現異常而沒能修改,第一個表和第二個表都要回到未修改的狀態,這就是所謂的事務回滾。