PHP 知識點

1.數據結構和算法

二分查找算法php

  • 數據有序排列
  • 可比較的
  • 將數據一分爲二,從中間對比

時間複雜度laravel

  • 對數

2.概念

php的核心數據結構hash table(散列表)特色:web

  • 支持k->v查詢
  • 可當作數組
  • foreach線性遍歷
  • 添加和刪除節點的是O(1)複雜度
  • key支持關聯和索引數組
  • value支持混合類型

php四層體系redis

  • application算法

    • webserver cli etc
  • SAPIsql

    • apache2handler cgi fast-cgi isapi cli
  • PHP
  • Zend API
  • Zend Engine

opcode優化數據庫

  • 掃描
  • 轉義
  • 解釋爲opcode
  • 執行

PHP 7 新特性apache

  • 太空操做符
  • 標量類型與返回值類型聲明
  • NULL合併運算
  • 常量數組
  • 匿名類
  • Closure::call()
  • 過濾 unserialize()

http 三次握手四次揮手設計模式

  • 創建鏈接api

    • 客戶端發送帶有syn的tcp報文至服務端
    • 服務端接收報名並返回syn和ack的標示
    • 客戶端返回ack
  • 斷開鏈接

    • 客戶端發送fin報文
    • 服務端發送ack表示已接收到
    • 服務端發送fin報文,通知斷開
    • 客戶端發送ack報文

tcp與udp的區別

  • tcp

    • 面向鏈接、兩端創建鏈接時須要進行確認
    • 數據傳輸更加可靠
    • 數據傳輸效率低
  • udp

    • 面向非鏈接
    • 數據傳輸快
    • 數據傳輸不可靠

框架

laravel的設計模式

  • 工廠模式 函數封裝、統一入口實例化對象、構建工程降耦
  • 單例模式 不重複建立對象,節省資源
  • 註冊樹模式 數組結構存儲對象,工廠實例化的對象保存在註冊樹,調用註冊樹的對象使用
  • 策略模式 定義接口、不一樣的策略調用不一樣的邏輯
  • 適配器模式 多種不一樣的邏輯調用統一的適配器
  • 數據對象映射模式 ORM
  • 觀察者模式 對象發生改變,監聽它的對象所有會收到通知並更新

laravel 生命週期

  • index.php 入口

    • bootstarp
  • http/console 內核

    • errors
    • middleware
    • session
    • log
    • config
    • environment
    • ...
  • providers
  • route

MySQL

數據結構

  • 二叉樹
  • 紅黑二叉樹
  • B樹 葉子節點存儲的是數據
  • B+數 B+樹的每個葉子節點存儲的是索引和下一個節點的指針

優化方案

  • 合適的數據類型
  • 優化配置合適的長度
  • 定長字符串代替變長字符串
  • not null省去匹配null值
  • join代替 sub query
  • union代替臨時表
  • 事務
  • 優化sql

    • 匹配相同的字符類型
    • 避免自動轉換致使索引失效
    • 避免sql中使用函數
  • 慢查詢日誌
  • 索引
  • explain分析sql
  • profile分析sql耗時記錄
  • limit 1

範式

  • 字段原子性,不可再拆分
  • 主鍵依賴
  • 確保每列都和主鍵列直接相關,而不是間接相關

事務

  • 原子性 一個事務要麼成功要麼失敗
  • 持久性 事務結束的影響時永久性的
  • 隔離性 經過事務的隔離級別對應不一樣的併發場景
  • 一致性 事務開始的先後數據庫完整性沒有破壞

隔離級別

  • Serializable (串行化):可避免髒讀、不可重複讀、幻讀的發生。
  • Repeatable read (可重複讀):可避免髒讀、不可重複讀的發生。
  • Read committed (讀已提交):可避免髒讀的發生。
  • Read uncommitted (讀未提交):最低級別,任何狀況都沒法保證。

MyISAM與InnoDB

  • InnoDB

    • 支持外鍵約束
    • 彙集索引
    • 支持事務
    • 行級鎖
    • 彙集索引 索引儲存的是行數據,觸發輔助索引返回的是主鍵,再經過主鍵獲取數據
    • 索引與數據保存在同一個爲念.idb
  • MyISAM

    • 保存行數,count聚合效率高
    • 支持全文索引
    • 查詢效率優
    • 非彙集索引 索引儲存的是數據行的地址,經過地址獲取行,輔助因此和主鍵索引是分離的
    • 索引保存在.myi,數據保存在.myd

NoSQL

redis數據類型、應用場景

  • string 單個元素的值最大512MB的數據容量,適合用戶應用的數據緩存,統計計數等功能
  • hash 存儲、讀取複雜對象的數據
  • list 增刪快,適合消息隊列
  • set 數據惟一性、curd操做的時間複雜度爲O(1)
  • sorted set 帶權重的消息隊列、與set相比每一個數據多了一個score進行權重排序
相關文章
相關標籤/搜索