通俗易懂的表格彙總,帶你快速理解二者(或多者)的區別關係web
持續更新~~~,若有遺漏能夠評論區告訴我~ 數組
區別表格彙總
isset 和 empty
isset:檢測變量是否已設置而且非 NULL瀏覽器
empty:判斷變量是否爲空,變量爲 0/false 也會被認爲是空;變量不存在,不會產生警告緩存
變量的值($var) |
isset($var) |
empty($var) |
""(空字符串) |
布爾(true) |
布爾(true) |
" "(空格字符) |
布爾(true) |
布爾(false) |
false |
布爾(true) |
布爾(true) |
true |
布爾(true) |
布爾(false) |
array()(一個空數組) |
布爾(true) |
布爾(true) |
NUll值 |
布爾(false) |
布爾(true) |
「0」(0做爲字符串) |
布爾(true) |
布爾(true) |
0(0爲整數) |
布爾(true) |
布爾(true) |
0.0(0做爲浮點數) |
布爾(true) |
布爾(true) |
public、protected、private(3p修飾符)
|
在類外 |
在子類 |
在本類 |
public(公有) |
✔ |
✔ |
✔ |
protected(受保護) |
✖ |
✔ |
✔ |
private(私有) |
✖ |
✖ |
✔ |
cookie 和 session
|
cookie |
session |
存儲 |
客戶端(瀏覽器) |
服務器端 |
安全 |
容易被更改 |
安全一些 |
性能 |
減輕服務器的性能 |
佔用服務器的性能 |
Session 的運行依賴Session ID,而 Session ID 是存在 Cookie 中的,也就是說,若是瀏覽器禁用了 Cookie,Session 也會失效(可是能夠經過其它方式實現,好比在 url 中傳遞 Session ID)安全
get 和 post
請求方式 |
get |
post |
本質 |
向服務器發索取數據的一種請求 |
向服務器提交數據的一種請求 |
服務器端獲取值的方法 |
$_GET |
$_POST |
安全性 |
低 |
較安全 |
大小 |
URL 的最大長度是 2048 個字符 |
沒有大小限制 |
echo、print、print_r、var_dump
echo |
print |
print_r |
var_dump |
語言結構 |
語言結構 |
普通函數 |
普通函數 |
輸出一個或多個字符串 |
輸出字符串 |
打印關於變量的易於理解的信息 |
打印關於變量的易於理解的信息(帶類型) |
Redis 和 Memcached
緩存 |
Redis |
Memcached |
數據支持類型 |
經常使用的數據類型有5種:String、Hash、List、Set和ZSet |
僅支持簡單的key-value結構 |
線程 |
單線程的IO複用模型 |
多線程,非阻塞IO複用的網絡模型 |
是否支持事務 |
✔ |
✖ |
持久化 |
✔ |
✖ |
Nginx 和 Apache
web服務器 |
Nginx |
Apache |
反向代理 |
很是好 |
好 |
Rewrite規則 |
很是好 |
好 |
FstCGI |
好 |
差 |
熱部署 |
✔ |
✖ |
系統壓力比較 |
很小 |
小 |
穩定性 |
很是好 |
好 |
安全性 |
通常 |
好 |
靜態文件處理 |
很是好 |
通常 |
虛擬主機 |
✔ |
✔ |
內存消耗 |
很是小 |
很大 |
urlencode 和 rawurlencode
函數 |
對空格的處理 |
返回值 |
urlencode |
處理成「+」 |
返回字符串,此字符串中除了 -_. 以外的全部非字母數字字符都將被替換成百分號(%)後跟兩位十六進制數,空格則編碼爲加號(+)。此編碼與 WWW 表單 POST 數據的編碼方式是同樣的,同時與 application/x-www-form-urlencoded 的媒體類型編碼方式同樣。因爲歷史緣由,此編碼在將空格編碼爲加號(+)方面與 » RFC3986 編碼(參見 rawurlencode())不一樣 |
rawurlencode |
處理成「%20」 |
返回字符串,此字符串中除了 -_. 以外的全部非字母數字字符都將被替換成百分號(%)後跟兩位十六進制數。這是在 » RFC 3986 中描述的編碼,是爲了保護原義字符以避免其被解釋爲特殊的 URL 定界符,同時保護 URL 格式以避免其被傳輸媒體(像一些郵件系統)使用字符轉換時弄亂 |
函數 |
urlencode |
rawurlencode |
返回值 |
|
|
對空格的處理 |
處理成「+」 |
處理成「%20」 |
include、require、include_once、require_once
|
處理失敗方式 |
include |
會產生一個致命級別錯誤,並中止程序運行 |
require |
只產生一個警告級別錯誤,程序繼續運行 |
include_once |
同include,當所包含的文件代碼已經存在時候,不在包含 |
require_once |
同require,當所包含的文件代碼已經存在時候,不在包含 |
MyISAM 和 InnoDB
存儲引擎 |
MyISAM |
InnoDB |
|
默認引擎 |
須要指定 |
場景 |
適合查詢以及插入爲主的應用 |
適合頻繁修改以及涉及到安全性較高的應用 |
是否支持FULLTEXT類型的索引 |
✔ |
✖ |
是否支持事務 |
✖ |
✔ |
是否支持外鍵 |
✖ |
✔ |
表的具體行數 |
select count() from table,MyISAM只要簡單的讀出保存好的行數,注意的是,當count()語句包含 where條件時,兩種表的操做是同樣的 |
InnoDB 中不保存表的具體行數,也就是說,執行select count(*) from table時,InnoDB要掃描一遍整個表來計算有多少行 |
鎖 |
表鎖 |
行鎖(某些狀況下仍是鎖整表,如 update table set a=1 where user like '%lee%') |
清空整個表時 |
從新建表 |
一行一行的刪除 |
varchar 和 char
數據類型 |
varchar |
char |
解釋 |
變長 |
定長 |
定義長度 |
小於定義長度時,仍是按實際長度存儲,插入多長就存多長 |
若是插入的長度小於定義長度時,則用空格填充 |
存儲的容量 |
最多能存放 65532 個字符。varchar的最大有效長度由最大行大小和使用的字符集肯定。總體最大長度是 65,532字節。 |
最多能存放的字符個數 255,和編碼無關 |
結束語
持續更新中~~~,若是有添加或者糾正的地方歡迎評論。 (你的每個👍都是我更新的動力)服務器