PHP基礎知識梳理

雙引號單引號區別

雙引號解釋變量,單引號不解釋變量
雙引號裏插入單引號,其中單引號裏若是有變量的話,變量解釋
雙引號的變量名後面必需要有一個非數字、字母、下劃線的特殊字符,或者用{}講變量括起來,不然會將變量名後面的部分當作一個總體,引發語法錯誤
能使單引號字符儘可能使用單引號,單引號的效率比雙引號要高javascript


GET和POST提交方式的區別

GET產生一個TCP數據包;POST產生兩個TCP數據包;
對於GET方式的請求,瀏覽器會把http header和data一併發送出去,服務器響應200(返回數據)
對於POST,瀏覽器先發送header,服務器響應100 continue,瀏覽器再發送data,服務器響應200 ok(返回數據)。
GET在瀏覽器回退時是無害的,而POST會再次提交請求
GET請求會被瀏覽器主動cache,而POST不會,除非手動設置
GET請求參數會被完整保留在瀏覽器歷史記錄裏,而POST中的參數不會被保留
GET請求只能進行url編碼,而POST支持多種編碼方式
GET比POST更不安全,由於參數直接暴露在URL上,因此不能用來傳遞敏感信息java


如何獲取客戶端的真實ip

$_SERVER['REMOTE_ADDR']或getenv('REMOTE_ADDR')
可使用ip2long()轉成數字ajax


include和require的區別

require是無條件包含,也就是若是一個流程里加入require,不管條件成立與否都會先執行require,當文件不存在或者沒法打開的時候,會提示錯誤,而且會終止程序執行
include有返回值,而require沒有(可能由於如此require的速度比include快),若是被包含的文件不存在的化,那麼會提示一個錯誤,可是程序會繼續執行下去
注意:包含文件不存在或者語法錯誤的時候require是致命的,而include不是數據庫


AJAX的優點是什麼

ajax是異步傳輸技術,能夠經過javascript實現,也能夠經過JQuery框架實現,實現局部刷新,減輕了服務器的壓力,也提升了用戶體驗瀏覽器


在程序的開發中,如何提升程序的運行效率

優化SQL語句,查詢語句中儘可能不使用select *,用哪一個字段查哪一個字段;
少用子查詢可用錶鏈接代替;
少用模糊查詢;
數據表中建立索引;
對程序中常常用到的數據生成緩存;緩存


SESSION與COOKIE的區別

存儲位置:session存儲在服務器,cookie存儲在瀏覽器
安全性:session安全性高於cookie
參考連接:https://www.zhihu.com/questio...安全


isset和empty的區別

isset()函數 通常用來檢測變量是否設置
若變量不存在則返回 FALSE
若變量存在且其值爲NULL,也返回 FALSE
若變量存在且值不爲NULL,則返回 TURE
empty()函數是檢查變量是否爲空
若變量不存在則返回 TRUE
若變量存在且其值爲""、0、"0"、NULL、、FALSE、array()、var $var; 以及沒有任何屬性的對象,則返回 TURE
若變量存在且值不爲""、0、"0"、NULL、、FALSE、array()、var $var; 以及沒有任何屬性的對象,則返回 FALSE服務器


數據庫三範式

第一範式:1NF是對屬性的原子性約束,要求屬性具備原子性,不可再分解;
第二範式:2NF是對記錄的唯一性約束,要求記錄有唯一標識,即實體的唯一性;
第三範式:3NF是對字段冗餘性的約束,即任何字段不能由其餘字段派生出來,它要求字段沒有冗餘。cookie


主鍵、外鍵和索引的區別

定義:
主鍵--惟一標識一條記錄,不能有重複的,不容許爲空
外鍵--表的外鍵是另外一表的主鍵, 外鍵能夠有重複的, 能夠是空值
索引--該字段沒有重複值,但能夠有一個空值斜體文字
做用:
主鍵--用來保證數據完整性
外鍵--用來和其餘表創建聯繫用的
索引--是提升查詢排序的速度
個數:
主鍵--主鍵只能有一個
外鍵--一個表能夠有多個外鍵
索引--一個表能夠有多個惟一索引session


堆和棧的區別

棧是編譯期間就分配好的內存空間,所以你的代碼中必須就棧的大小有明確的定義; 堆是程序運行期間動態分配的內存空間,你能夠根據程序的運行狀況肯定要分配的堆內存的大小。

相關文章
相關標籤/搜索