本書的 GitHub 地址: https://github.com/todayqq/PH...
PHP 篇收集了一些常見的基礎、進階面試題,基礎的面試題再也不做答。php
SRP | 單一職責原則 | 一個類有且只有一個更改的緣由 |
OCP | 開閉原則 | 可以不更改類而擴展類的行爲 |
LSP | 里氏替換原則 | 派生類能夠替換基類使用 |
ISP | 接口隔離原則 | 使用客戶端特定的細粒度接口 |
DIP | 依賴反轉原則 | 依賴抽象而不是具體實現 |
- 性能提高了兩倍
- 增長告終合比較運算符 (<=>)
- 增長了標量類型聲明、返回類型聲明
try...catch
增長多條件判斷,更多 Error 錯誤能夠進行異常處理- 增長了匿名類,如今支持經過new class 來實例化一個匿名類,這能夠用來替代一些「用後即焚」的完整類定義
- 變量存儲字節減少,減小內存佔用,提高變量操做速度
- 改善數組結構,數組元素和 hash 映射表被分配在同一塊內存裏,下降了內存佔用、提高了 cpu 緩存命中率
- 改進了函數的調用機制,經過優化參數傳遞的環節,減小了一些指令,提升執行效率
PHP 5.3 版本以前都是採用引用計數的方式管理內存,PHP 全部的變量存在一個叫
zval
的變量容器中,當變量被引用的時候,引用計數會+1,變量引用計數變爲0時,PHP 將在內存中銷燬這個變量。html可是引用計數中的循環引用,引用計數不會消減爲 0,就會致使內存泄露。laravel
在 5.3 版本以後,作了這些優化:git
- 並非每次引用計數減小時都進入回收週期,只有根緩衝區滿額後在開始垃圾回收;
- 能夠解決循環引用問題;
- 能夠總將內存泄露保持在一個閾值如下。
瞭解更多能夠查看 PHP 手冊,垃圾回收機制。github
- 增大 PHP 腳本的內存分配
- 變量引用以後及時銷燬
- 將數據分批處理
- Redis 支持更加豐富的數據存儲類型,String、Hash、List、Set 和 Sorted Set。Memcached 僅支持簡單的 key-value 結構。
- Memcached key-value存儲比 Redis 採用 hash 結構來作 key-value 存儲的內存利用率更高。
- Redis 提供了事務的功能,能夠保證一系列命令的原子性
- Redis 支持數據的持久化,能夠將內存中的數據保持在磁盤中
- Redis 只使用單核,而 Memcached 可使用多核,因此平均每個核上 Redis 在存儲小數據時比 Memcached 性能更高。
- RDB 持久化,將 Redis 在內存中的的狀態保存到硬盤中,至關於備份數據庫狀態。
- AOF 持久化(Append-Only-File),AOF 持久化是經過保存 Redis 服務器鎖執行的寫狀態來記錄數據庫的。至關於備份數據庫接收到的命令,全部被寫入 AOF 的命令都是以 Redis 的協議格式來保存的。