響應時間的分類
正則表達式的組成
目前正則表達式引擎有兩種
- DFA自動機 Deterministic Final Automata 確定有限狀態自動機
- NFA自動機 Non deterministic Finite Automaton 非確定有限狀態自動機
構造DFA代價大於NFA,但DFA執行效率高於NFA
正則表達式庫都是基於NFA的,優勢是支持更多功能
NFA自動機的回溯,如 "ab{1,3}c"
1.貪婪模式Greedy,儘可能匹配更多內容
2.懶惰模式Reluctant, ab{1,3}?c,會首先選擇最小的匹配範圍,即匹配1個b字符
3.獨佔模式Possessive,ab{1,3}+bc,會最大限度匹配更多內容,但匹配失敗就會結束匹配,不會回溯
避免低效的回溯方法是,使用懶惰模式,獨佔模式
Stream 操作的分類
它的並行操作是用Fork-Join框架實現的
JDK8的 HashMap數據結構圖
Java序列化的缺點
1.無法跨語言
2.太靈活容易被攻擊
3.序列化後的流太大
4.序列化性能太差
替代方案
FastJson,Kryo,Protobuf,Hessian,Thrift
單列的對象如果序列化了,也會破壞單列的規則
微服務的核心是 遠程通信 和 服務治理(服務的後勤保障)
MVC,RPC,SOA,微服務架構的演變
默認的RMI框架執行圖
RMI的缺點
1.Java默認序列化性能不佳
2.TCP短連接
3.阻塞式網絡I/O
高併發場景下的RPC框架設計思路
1.選擇合適的通訊協議 TCP/UDP
2.單一長連接
3.優化Socket通訊,非阻塞I/O,Reactor線程模型,零拷貝,pipeline模式
4.自定義報文格式
5.編碼解碼,選擇一個序列化框架
6.調整系統參數