1 丶 Nginx 怎么實作負載均衡
這個還是比較簡單
1.輪詢
這種是默認的策略,把每個請求按順序逐一分配到不同的 server,如果 server 掛掉,能自動剔除,

2.最少連接
把請求分配到連接數最少的 server

3.權重
使用 weight 來指定 server 訪問比率,weight 默認是 1,以下配置會是 server2 訪問的比例是 server1 的兩倍,

4.ip_hash
每個請求會按照訪問 ip 的 hash 值分配,這樣同一客戶端連續的 Web 請求都會被分發到同一 server 進行處理,可以解決 session 的問題,如果 server 掛掉,能自動剔除,

ip_hash 可以和 weight 結合使用,
2 丶 Linux 常用的命令
這個就不多說了
3 丶微信小程式常用的組件
view 丶 text 丶 button 丶 navigator 丶 scroll-view...... 等等
4 丶 Nginx 怎么配置虛擬主機
恩 2333333
5 丶 TP5 和 Laravel 框架差異
恩 2333333
6 丶 TP5 和 Laravel 框架中的資料遷移
這個本社區就有檔案的
7 丶 RBAC 模型的講解
什么是 RBAC
RBAC (基于角色的訪問控制):英文名稱 Rose base Access Controller ,本博客介紹這種模型的權限系統設計,取消了用戶和權限的直接關聯,改為通過用戶關聯角色、角色關聯權限的方法來間接地賦予用戶權限,從而實作了解耦,RBAC 在發展程序中分為以下幾個版本,RBAC0、RBAC1、RBAC2、RBAC3,
8 丶訂單模塊的流程
9 丶訂單支付成功后的操作
10 丶設定郵箱激活連接過期時間
在把激活碼寫入資料庫的同時寫入時間戳 + 過期時間
11 丶 Redis 與 Mongodb 的區別
1.性能
都比較高,性能對我們來說應該都不是瓶頸,
總體來講,TPS 方面 redis 和 memcache 差不多,
2.操作的便利性
redis 在 2.0 版本后增加了自己的 VM 特性,突破物理記憶體的限制;可以對 key value 設定過期時間(類似 memcache),
mongoDB 適合大資料量的存盤,依賴作業系統 VM 做記憶體管理,吃記憶體也比較厲害,服務不要和別的服務在一起,
4、可用性(單點問題)
對于單點問題:
redis,依賴客戶端來實作分布式讀寫;主從復制時,每次從節點重新連接主節點都要依賴整個快照,無增量復制,因性能和效率問題,所以單點問題比較復雜;不支持自動 sharding, 需要依賴程式設定一致 hash 機制,
一種替代方案是,不用 redis 本身的復制機制,采用自己做主動復制(多份存盤),或者改成增量復制的方式(需要自己實作),一致性問題和性能的權衡,
mongoDB 支持 master-slave,replicaset (內部采用 paxos 選舉演算法,自動故障恢復),auto sharding 機制,對客戶端屏蔽了故障轉移和切分機制,
5.可靠性(持久化)
對于資料持久化和資料恢復,redis 支持(快照、AOF):依賴快照進行持久化,aof 增強了可靠性的同時,對性能有所影響,MongoDB 從 1.8 版本開始采用 binlog 方式支持持久化的可靠性,
6.資料一致性(事務支持)
redis 事務支持比較弱,只能保證事務中的每個操作連續執行,mongoDB 不支持事務,
7.應用場景
redis:資料量較小的更性能操作和運算上
MongoDB: 主要解決海量資料的訪問效率問題
12 丶 redis 和 memcached 的區別
13 丶 redis 中的佇列
關于 redis 佇列的實作方式有兩種:
1.生產者消費者模式,
普通版本:
比如一個佇列里面,生產者 A push 了一個資料進去,消費者 B pop 了這個資料,那個這個佇列依舊為空,所以是一對一的,
至于是先進先出還是先進后出等,可以依照函式 lpush (從佇列左邊,也就是隊首 push 一個資料) rpush (從佇列右邊也就是隊尾 push 一個資料) lpop (同理) rpop 等來控制,
阻塞版本:
但是上面的命令都是立即回傳的,無論資料有無,關于取資料 lpop 有個增強版本,blpop (block left pop) 阻塞版本,
使用方法:blpop key1 key2 ... keyn 10
同時預獲取多個 key 的值,并設定超時時間為 10s,如果所有 key,有些 key 有 value 就立即回傳,如果所有 key 都沒有 value 就阻塞 10 秒回傳
2.發布者訂閱者模式,
概念:
三個用戶 A,B,C 同時都訂閱了一個 channel 名字叫 msg,然后發布者往 msg 的 channel 里面發布了一個資料,那么 A,B,C 三個用戶都會收到該資料,
注意點:
很明顯,三個用戶 ABC 需要阻塞,怎么收到訂閱的資料呢,肯定是依靠注冊在 redis 里面的回呼函式,
發布的資料不會在 redis 里面復現,意思就是發布了以后,A,B,C 由于種種原因沒收到就沒收到,
14 丶 redis 中的資料型別
Redis 支持五種資料型別:string(字串),hash(哈希),list(串列),set(集合)及 zset (sorted set:有序集合),
15 丶 TP 框架中的事件
16 丶 TP 框架的依賴注入
和 Laravel 沒什么區別
17 丶 MySQL 的讀寫分離操作
什么主從復制,什么 bin log,胡說了一大堆
18 丶資料庫 varchar 和 char 的區別
varchar 會回收未使用的空間
19 丶 MyIsam 與 InnoDB 的區別
1、MyISAM:默認表型別,它是基于傳統的 ISAM 型別,ISAM 是 Indexed Sequential Access Method (有索引的順序訪問方法) 的縮寫,它是存盤記錄和檔案的標準方法,不是事務安全的,而且不支持外鍵,如果執行大量的 select,insert MyISAM 比較適合,
2、InnoDB:支持事務安全的引擎,支持外鍵、行鎖、事務是他的最大特點,如果有大量的 update 和 insert,建議使用 InnoDB,特別是針對多個并發和 QPS 較高的情況,
一、表鎖差異
MyISAM:
myisam 只支持表級鎖,用戶在操作 myisam 表時,select,update,delete,insert 陳述句都會給表自動加鎖,如果加鎖以后的表滿足 insert 并發的情況下,可以在表的尾部插入新的資料,也可以通過 lock table 命令來鎖表,這樣操作主要是可以模仿事務,但是消耗非常大,一般只在實驗演示中使用,
InnoDB :
Innodb 支持事務和行級鎖,是 innodb 的最大特色,
事務的 ACID 屬性:atomicity,consistent,isolation,durable,
并發事務帶來的幾個問題:更新丟失,臟讀,不可重復讀,幻讀,
二、資料庫檔案差異
MyISAM :
myisam 屬于堆表
myisam 在磁盤存盤上有三個檔案,每個檔案名以表名開頭,擴展名指出檔案型別,
.frm 用于存盤表的定義
.MYD 用于存放資料
.MYI 用于存放表索引
myisam 表還支持三種不同的存盤格式:
靜態表 (默認,但是注意資料末尾不能有空格,會被去掉) 丶動態表丶壓縮表,
InnoDB :
innodb 屬于索引組織表
innodb 有兩種存盤方式,共享表空間存盤和多表空間存盤
兩種存盤方式的表結構和 myisam 一樣,以表名開頭,擴展名是.frm,
如果使用共享表空間,那么所有表的資料檔案和索引檔案都保存在一個表空間里,一個表空間可以有多個檔案,通過 innodb_data_file_path 和 innodb_data_home_dir 引數設定共享表空間的位置和名字,一般共享表空間的名字叫 ibdata1-n,
如果使用多表空間,那么每個表都有一個表空間檔案用于存盤每個表的資料和索引,檔案名以表名開頭,以.ibd 為擴展名,
三、索引差異
1.關于自動增長
myisam 引擎的自動增長列必須是索引,如果是組合索引,自動增長可以不是第一列,他可以根據前面幾列進行排序后遞增,
innodb 引擎的自動增長咧必須是索引,如果是組合索引也必須是組合索引的第一列,
2.關于主鍵
myisam 允許沒有任何索引和主鍵的表存在,
myisam 的索引都是保存行的地址,
innodb 引擎如果沒有設定主鍵或者非空唯一索引,就會自動生成一個 6 位元組的主鍵 (用戶不可見)
innodb 的資料是主索引的一部分,附加索引保存的是主索引的值,
3.關于 count () 函式
myisam 保存有表的總行數,如果 select count(*) from table; 會直接取出出該值
innodb 沒有保存表的總行數,如果使用 select count(*) from table; 就會遍歷整個表,消耗相當大,但是在加了 where 條件后,myisam 和 innodb 處理的方式都一樣,
4.全文索引
myisam 支持 FULLTEXT 型別的全文索引
innodb 不支持 FULLTEXT 型別的全文索引(5.6 開始已經支持了),但是 innodb 可以使用 sphinx 插件支持全文索引,并且效果更好,(sphinx 是一個開源軟體,提供多種語言的 API 介面,可以優化 mysql 的各種查詢),
5.delete from table
使用這條命令時,innodb 不會從新建立表,而是一條一條的洗掉資料,在 innodb 上如果要清空保存有大量資料的表,最 好不要使用這個命令,(推薦使用 truncate table,不過需要用戶有 drop 此表的權限),
6.索引保存位置
myisam 的索引以表名 +.MYI 檔案分別保存,
innodb 的索引和資料一起保存在表空間里,
20 丶 MySQL 中的索引有幾種
一、普通索引
最基本的索引,只是加快了查詢速度,
二、唯一索引
與普通索引類似,不同的是:索引的列值必須唯一,但允許有空值,也就是 null,如果是組合索引,則列值的組合必須是唯一的,
三、主鍵索引
即我們常用的主鍵 id, 它是一種特殊的唯一索引,不允許有空值,一般在建表時同時創建主鍵索引,
特點:
1)一張表只有一個主鍵索引
2)主鍵要求自增
四、組合索引
即多個欄位建立的索引
五、全文索引
fulltext
myisam 引擎支持
六、外鍵
建立外鍵需要注意的事項:
1)表引擎必須一樣
2)欄位型別必須一樣
3)長度必須一樣
4)存盤范圍必須一樣
5)約束欄位必須在被參考的欄位中出現過
以上是文章全部內容,有需要學習交流的友人請加入swoole交流群的咱們一起,有問題一起交流,一起進步!前提是你是學技術的,感謝閱讀!
點此加入該群
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/98219.html
標籤:PHP
下一篇:Swoole如何處理高并發
