1、框架底層原理
1.1、類庫的自動加載
```
Php的標準類庫 spl_autoload_register
composer的加載(PSR-4)
自定義任何目錄的加載: psr-4規則里定義目錄以后(composer dumpautoload)
```
1.2、基本功能的加載(facade)
```
門面模式
```
1.3、服務的加載(ioc容器)
```
請大家閱讀laravel的源代碼,服務的注冊、監聽、通信是基于什么設計模式實現。
```
2、PHP相關知識
2.1、網絡協議
```
OSI七層模型
第一層:物理層
第二層:數據鏈路層
第三層:網絡層
第四層:傳輸層
定義傳輸數據的協議端口號以及流控和差錯校驗
協議:TCP/UDP,數據包一旦離開網卡即將進入網絡傳輸層
第五層:會話層層
第六層:表示層
第七層:應用層:網絡服務與最終用戶的一個接口
```
協議:
```
HTTP:80
HTTPS:443
FTP(21)-文件傳輸
SMTP(25) 郵件發送
SNMP
DNS (53)域名解析
TELNET(23) 遠程登錄
POPS(110) 郵件接收
DHCP
```
HTTP協議的特點:
```
無狀態
基于B/S模式
通信開銷小、簡單快速、傳輸成本低
使用靈活、可使用超文本傳輸協議
節約傳輸時間
```
HTTP協議狀態碼:
```
標記返回請求結果,知道服務器是否可用正常處理請求
1XX
信息類
2XX
200正常返回數據 204已成功處理,不含實體 206部分內容
3XX
301永久重定向 302臨時重定向 303定向獲取 304附加條件的請求 307臨時重定向
4XX 客戶端錯誤
400存在語法錯誤 401 需要通過HTTP認證403 服務器拒絕404 服務器無法請求
5XX 服務器錯誤
500 執行請求發送錯誤 503 超負載運行,無法響應
```
GET/POST的請求區別
```
GET 安全差 POST
GET 2048 url地址的最大長度 POST 沒有限制
GET ascII POST 二進制數據等
GET 請求內容-application-x-www-form-urlencoded POST multipart-formdata
GET 不會重新提交 POST 刷新瀏覽器數據被重新提交
GET 瀏覽器緩存 POST 不能緩存
GET 參數會自動 POST 不會保存(寫隱藏表單)
GET 收藏書簽 POST 不能收藏
```
常見請求/響應頭/請求方法
```
content-type:請求實體的mime類型信息
Accept:客戶端接收內容的類型
Cookie:發送給服務端的cookie值
Cache-control:指定請求和響應的緩存機制
User-agent:用戶信息
Referrer:上級請求的路徑
X-Forward-For:請求端的真實IP
Access-Control-Allow-origin 允許特定的域名使用(跨域請求)
Last-modified:請求資源的最后響應時間
```
HTTP的工作原理:
```
客戶端發送請求給服務器,創建一個TCP連接,指定端口號,連接到服務器,服務器監聽到瀏覽器請求,分析請求類型后,服務器根據客戶端的請求類型返回狀態信息和數據內容。
```
HTTP協議的工作原理:
```
GET、-讀取數據
POST、提交數據請求服務器進行處理
HEAD、指定資源的請求(只返回頭信息)
OPTIONS、查看服務器性能(功能是否正常)
PUT、上傳最新內容(修改)
DELETE、刪除指定的資源
TRACE、測試用,請求服務器回顯收到的信息
```
HTTPS協議的工作原理:
```
HTTPS是一種基于SSL/TLS的HTTP協議,所有的HTTP數據都是在SSL/TLS協議封裝之上傳輸的
在HTTP協議的基礎上添加了SSL/TLS的握手以及數據的加密傳輸
```
2.2 PHP基礎知識
```
2.2.1、PHP引用變量
概念:用不同的名字訪問同一個內容
定義方式:使用&符號
Unset() 斷開變量的引用,不會銷售內存空間
Object 引用類型的變量對象
堆棧中的內存分析:
```
測試:memory_get_usage() 已經使用的內存
2.2.2、數據類型
```
字符串:單引號、雙引號、heredoc和newdoc(處理長文本)
雙引號:可以解析變量,可以使用特殊符號{}包含,可以解析轉義字符
單引號效率更高
Heredoc 中間的變量可以解析
$str = <<<Eot
Eot
Newdoc 中間的變量不能解析
$str = <<<’Eot’
‘Eot’
```
布爾類型flase的七種情況
```
0 0.0 ‘’ ‘0’ false array() null
浮點類型:不能用于算術運算(轉二進制會有損耗)
數組類型:
超全局數組
$GLOBALS $_GET $_POST $_REQUEST $_COOKIE $_SERVER $_FILES $_ENV
$_SERVER[‘QUERY_STRING’] ?后面的參數
$_SERVER[‘PATH_INFO’] 路徑部分
$_SERVER[‘SERVER_ADDR] 服務器地址
$_SERVER[‘REMOT_ADDR] 客戶端IP
$_SERVER[‘REFFERER] 上一次請求
$_SERVER[‘SERVER_NAME’]
$_SERVER[‘REQUEST_TIME’]
$_SERVER[‘HTTP_USER_AGENT’]
```
2.2.3預定義常量
```
__FILE__ __LINE__ __DIR__ __FUNCTION__ __CLASS__
__TRAIT__ __METHOD__ __NAMESPACE__
Const 語言結構、定義類常量、速度快 define 函數、不能定義類常量
```
出現NULL的三種情況
```
直接申明、未定義的變量、UNSET銷毀的變量
```
2.2.4運算符優先級
```
遞增、遞減 > ! > 數學運算符 > 比較運算符(大小比較) > 相等比較 > 邏輯運算符 > 三目運算 > 賦值運算
短路原則:如果該表達式的結果在第一個子表達式就已經能夠決定結果,后面的子表達式不會再執行
==和===的區別
前置遞增和后置遞增的區別?
先運算后返回,先返回后運算
Null的遞增和遞減
Null 遞減 沒有效果
Null 遞增 結果為1
```
2.2.5 流程控制
```
遍歷數組的三種方式:
數組遍歷一:for while 只能遍歷索引數組
數組遍歷二:foreach 遍歷索引數組和關聯數組 每次都會執行reset(數組指針的重置)
數組遍歷三: while list each 組合循環 遍歷索引數組和關聯數組 不會執行reset()操作
If語句和switch...case語句的區別
If...elseif 只會有一個語句塊被執行,最多條件情況出現的條件放在前面
Switch...case switch后面的控制表達式只能是整型、浮點型、字符串
生成索引表,直接跳轉到相對應的case
For() {
Switch( $condition ) {
Case ...;
Continue; //continue 1 continue 2跳出for循環
Break; //跳出switch語句
}
}
```
- 簡介
- 前端
- html
- css
- css選擇器
- fiex布局
- 盒裝模型
- javascript
- 原型鏈
- 作用域
- 事件綁定
- dom
- bom
- jquery
- 選擇器
- jquery事件綁定
- layui
- bootstrap
- vue
- 路由(Vue Router)
- Vue CLI
- axios
- vant
- 打包部署
- 自定義組件
- 一些前端效果
- 點擊復制功能
- 后端
- php框架
- thinkphp
- 隱藏index.php
- thinkphp實現多表查詢
- thinkphp使用ajax單圖上傳
- thinkphp使用ajax圖集上傳
- thinkphp使用ajax查詢是否重名
- thinkphp使用ajax表單上傳
- where多個條件
- 郵件發送功能
- thinkphp短信寶發送短信
- tp5事務
- validate驗證二維數組
- yii2
- yii配置郵件
- yii的CRUD操作
- layui中兩種展示表單的方式
- laravel
- laravel實例
- laravel登錄
- laravel前端注冊
- laravel列表
- laravel刪除
- laravel編輯
- laravel新增
- Laravel 目錄結構
- Laravel 路由
- Laravel 控制器
- Laravel 模型讀操作
- Laravel 模型增、刪、改操作
- Laravel 中間件
- Laravel 視圖
- Laravel ,YII,thinkphp 框架的區別
- 會話控制
- session
- session存入redis
- session創建
- session刪除
- cookie
- 面向對象
- 三大特性
- 魔術方法
- 修飾符
- obj變量
- php
- php版本差異
- php7與php5的區別
- PHP 內存溢出問題
- 數據類型
- PHP 垃圾回收機制(GC)
- 文件目錄操作
- php函數
- 字符串相關函數
- 數組相關函數
- 超全局數組與超全局變量
- php魔術方法
- 引用變量
- php類庫
- 1.根據隨機數生成6位密鑰
- 2.獲取客戶端IP地址
- 3.多維數組變成一維數組
- 4.判斷是否是微信瀏覽器
- 5.判斷是否是移動端
- 6.隱藏手機號碼156***8956
- 7.隱藏郵箱 9533*****@qq.com
- 8.數組排序
- 9.添加操作日志
- 10.無線分類按子分類排序
- 11.從數組中刪除空白的元素
- 12.字符串相關類庫
- curl模擬post/get請求
- 替換中間四位數
- PHP地理位置計算
- 生成唯一訂單號
- 阿拉伯數字轉化為大寫
- 時間戳轉為中文時間
- php獲取本年、本月、本周時間戳和日期格式的實例代碼(分析)
- 去除數據庫的數據空格
- 壓縮Zip文件和文件打包下載
- PHP常用六大設計模式
- 單例模式
- 工廠模式
- 注冊樹模式
- 策略模式
- 適配器模式
- 觀察者模式
- 數據庫
- 留言板功能
- 所了解的數據庫
- sql server
- Memecached
- MongoDB
- mysql
- 存儲引擎(MyISAM與InnoDB)
- 庫表CRUD操作
- 索引
- 事務
- mysql常用命令
- 悲觀鎖和樂觀鎖
- 數據庫優化
- 大流量大并發優化
- Redis
- redis相關考點
- 開啟redis
- redis緩存cache
- redis存儲session
- redis限制提交次數
- 緩存雪崩,擊穿,穿透(copy)
- redis數據結構及使用場景
- 消息隊列
- Redis、Memecached 區別?
- phpstudy升級mysql版本
- 分表
- 讀寫分離
- linux
- 開發環境搭建
- mysql配置
- centos7(lnmp)環境搭建
- ubuntu(lnmp)環境搭建
- Nginx
- nginx四個基本功能
- nginx重啟出錯
- Nginx 的反向代理
- 用戶用戶組
- 虛擬機安裝
- linux常用命令
- chmod命令
- ubuntu下apt-get 命令
- 釋放內存
- 云鎖安裝及使用
- 大部隊搭建
- Centos開啟端口命令
- Centos禁止root登錄
- Centos7修改22端口
- Rsync備份
- 開啟端口
- 微信開發
- 輔助開發
- 網站SEO
- TCP/IP協議
- HTTP 請求全過程
- http狀態碼
- http和https的區別
- http請求三部分
- tcp三次握手
- 三次握手的作用
- tcp四次揮手
- CMS
- 織夢CMS
- 帝國cms
- wordpress
- 禪知cms
- 八大接口
- 微信支付
- 支付寶支付
- 郵件
- 微博登錄
- QQ登錄
- 快遞
- 天氣
- 常見算法
- 快速排序
- 冒泡排序
- 選擇排序
- 插入排序
- 二分查找
- 希爾排序
- V2Ray搭建
- AJAX
- GIT
- RBAC用戶權限管理數據庫設計
- 開發中遇到的一些問題
- 資料購買
- 建立ssr服務器
- 簡單建
- 申請并使用ssl證書
- 正則表達式手冊
- phpstorm
- 注冊碼
- 備用注冊碼
- 網站設計概要
- 網站相關功能代碼
- 權限(RBAC/AUTH)
- 無限級分類
- 記住登錄狀態
- email找回密碼
- 企業網站開發概要
- 網站后臺
- 文章管理
- 欄目管理 CRUD 上級欄目
- 欄目管理
- 友情鏈接
- 操作日志
- 登錄注冊
- 權限管理
- 網站配置
- 網站前臺
- 首頁
- 新聞動態
- 聯系
- 案例
- 關于
- 單店鋪商城開發概要
- 面試準備
- 有意思的面試題
- 拉鉤面試要求
- 慕課面試視頻知識總結
- 面試題匯總
- 題目1
- 一些工作的要求
- 前端炒的
- 面試項目介紹
- MySQL面試100 問
- 術語庫
- redis相關
- php操作redis
- redis消息隊列(異步)
- redis消息隊列(同步)