GitHub 項目地址:進入javascript
GitHub Pages 完整閱讀:進入java
Gitee Pages 完整閱讀:進入 (國內訪問速度較快)mysql
面向對象與面向過程react
面向對象的三大基本特徵linux
面向對象的五大基本原則nginx
什麼是多態git
方法重寫與重載github
Java的繼承與實現web
Java的繼承與組合正則表達式
構造函數與默認構造函數
類變量、成員變量和局部變量
成員變量和方法做用域
Java如何實現的平臺無關性的
JVM還支持哪些語言
值傳遞、引用傳遞
爲何說Java中只有值傳遞
8種基本數據類型
整型中byte、short、int、long的取值範圍
什麼是浮點型?
什麼是單精度和雙精度?
爲何不能用浮點型表示金額?
自動拆裝箱
Integer的緩存機制
如何正肯定義接口的返回值(boolean/Boolean)類型及命名(success/Success)
字符串的不可變性
String的長度限制
JDK 6和JDK 7中substring的原理及區別
replaceFirst、replaceAll、replace區別
String、StringBuilder和StingBuffer之間的區別與聯繫
String對「+」的重載
字符串拼接的幾種方式和區別
String.valueOf和Integer.toString的區別
switch對String的支持
字符串池
常量池(運行時常量池、Class常量池)
intern
transient
instanceof
volatile
synchronized
final
static
const
Collection和Collections的區別
經常使用集合類的使用
Set和List區別
ArrayList和LinkedList和Vector的區別
SynchronizedList和Vector的區別
Set如何保證元素不重複
HashMap、HashTable、ConcurrentHashMap區別
Java 8中Map相關的紅黑樹的引用背景、原理等
HashMap的容量、擴容、hash等原理
Java 8中stream相關用法
Apache集合處理工具類的使用
不一樣版本的JDK中HashMap的實現的區別以及緣由
Arrays.asList得到的List使用時須要注意什麼
Collection如何迭代
Enumeration和Iterator區別
如何在遍歷的同時刪除ArrayList中的元素
fail-fast 和 fail-safe
CopyOnWriteArrayList
ConcurrentSkipListMap
枚舉的用法
枚舉的實現
枚舉與單例
Enum類
Java枚舉如何比較
switch對枚舉的支持
枚舉的序列化如何實現
枚舉的線程安全性問題
字符流、字節流
輸入流、輸出流
字節流和字符流之間的相互轉換
同步、異步
阻塞、非阻塞
Linux 5種IO模型
BIO、NIO和AIO的區別
三種IO的用法與原理
netty
什麼是反射
反射有什麼做用
Class類
java.lang.reflect.*
靜態代理
動態代理
動態代理和反射的關係
動態代理的幾種實現方式
AOP
什麼是序列化與反序列化
Java如何實現序列化與反序列化
Serializable 和 Externalizable 有何不一樣
爲何須要序列化
serialVersionUID
爲何serialVersionUID不能隨便改
序列化底層原理
序列化如何破壞單例模式
protobuf
爲何說序列化並不安全
元註解
自定義註解
Java中經常使用註解使用
註解與反射的結合
如何自定義一個註解?
Spring經常使用註解
什麼是泛型
類型擦除
泛型帶來的問題
泛型中K T V E ? object等的含義
泛型各類用法
限定通配符和非限定通配符
上下界限定符extends 和 super
List和原始類型List之間的區別? List<?>和List之間的區別是什麼? 單元測試 junit junit和Spring的結合 mock mockito 內存數據庫(h2) 正則表達式 java.lang.util.regex.* 經常使用的Java工具庫 apache-commons google-guava netty API&SPI API API和SPI的關係和區別 如何定義SPI SPI的實現原理 異常 Error和Exception 異常類型 異常相關關鍵字 正確處理異常 自定義異常 異常鏈 try-with-resources finally和return的執行順序 時間處理 時區 冬令時和夏令時 時間戳 Java中時間API(Java 8) 格林威治時間 CET、UTC、GMT、CST幾種常見時間的含義和關係 SimpleDateFormat的線程安全性問題 Java 8中的時間處理 如何在東八區的計算機上獲取美國時間 yyyy和YYYY有什麼區別? 編碼方式 什麼是ASCII? Unicode 有了Unicode爲啥還須要UTF-8 UTF八、UTF1六、UTF32區別 有了UTF8爲何還須要GBK? GBK、GB23十二、GB18030之間的區別 URL編解碼 Big Endian和Little Endian 如何解決亂碼問題 語法糖 Java中語法糖原理、解語法糖 常見語法糖原理:switch 支持 String 與枚舉、泛型、自動裝箱與拆箱、方法變長參數、枚舉、內部類、條件編譯、 斷言、數值字面量、for-each、try-with-resource、Lambda表達式、本地變量類型推斷、record JMS 什麼是Java消息服務 JMS消息傳送模型 JMX java.lang.management.* javax.management.* Java 8 lambda表達式 Stream API 時間API 閱讀源代碼 String Integer Long Enum BigDecimal ThreadLocal ClassLoader & URLClassLoader ArrayList & LinkedList HashMap & LinkedHashMap & TreeMap & CouncurrentHashMap HashSet & LinkedHashSet & TreeSet Java併發編程 併發與並行 什麼是併發 什麼是並行 併發與並行的區別 線程 線程與進程的區別 線程的實現 線程的狀態 線程優先級 線程調度 多線程如何Debug 守護線程 建立線程的多種方式 繼承Thread類建立線程 實現Runnable接口建立線程 經過Callable和FutureTask建立線程 經過線程池建立線程 線程池 本身設計線程池 submit() 和 execute() 線程池原理 爲何不容許使用Executors建立線程池 線程安全 什麼是線程安全 多級緩存和一致性問題 CPU時間片和原子性問題 指令重排和有序性問題 線程安全和內存模型的關係 happens-before as-if-serial 鎖 可重入鎖 阻塞鎖 樂觀鎖與悲觀鎖 數據庫相關鎖機制 分佈式鎖 無鎖 CAS CAS的ABA問題 鎖優化 偏向鎖 輕量級鎖 重量級鎖 鎖消除 鎖粗化 自旋鎖 死鎖 什麼是死鎖 死鎖的緣由 如何避免死鎖 寫一個死鎖的程序 死鎖問題如何排查 synchronized synchronized是如何實現的? synchronized和lock之間關係 不使用synchronized如何實現一個線程安全的單例 synchronized和原子性 synchronized和可見性 synchronized和有序性 volatile 編譯器指令重排和CPU指令重排 volatile的實現原理 內存屏障 volatile和原子性 volatile和可見性 volatile和有序性 有了symchronized爲何還須要volatile 線程相關方法 start & run sleep & wait notify & notifyAll ThreadLocal ThreadLocal 原理 ThreadLocal 底層的數據結構 寫代碼解決生產者消費者問題 併發包 同步容器與併發容器 Thread Runnable Callable ReentrantLock ReentrantReadWriteLock Atomic* Semaphore CountDownLatch ConcurrentHashMap Executors 底層篇 JVM JVM內存結構 運行時數據區域 運行時數據區哪些是線程獨享 堆和棧區別 方法區在不一樣版本JDK中的位置 堆外內存 TLAB Java中的對象必定在堆上分配嗎? 垃圾回收 GC算法:標記清除、引用計數、複製、標記壓縮、分代回收、增量式回收 GC參數 對象存活的斷定 垃圾收集器(CMS、G一、ZGC、Epsilon) JVM參數及調優 -Xmx -Xmn -Xms Xss -XX:SurvivorRatio -XX:PermSize -XX:MaxPermSize -XX:MaxTenuringThreshold Java對象模型 oop-klass 對象頭 HotSpot 即時編譯器 編譯優化 Java內存模型 計算機內存模型 緩存一致性 MESI協議 可見性 原子性 順序性 happens-before as-if-serial 內存屏障 synchronized volatile final 鎖 虛擬機性能監控與故障處理工具 jps jstack jmap jstat jconsole jinfo jhat javap btrace TProfiler Arthas 類加載機制 classLoader 類加載過程是線程安全的嗎? 類加載過程 雙親委派(破壞雙親委派) 模塊化(jboss modules、osgi、jigsaw) 打包工具 jar、jlink、jpackage 編譯與反編譯 什麼是編譯 什麼是反編譯 編譯工具:javac 反編譯工具:javap 、jad 、CRF JIT JIT優化(逃逸分析、棧上分配、標量替換、鎖優化) 進階篇 Java底層知識 字節碼 class文件格式 CAFEBABE 位運算 用位運算實現加、減、乘、除、取餘 設計模式 設計模式的六大原則 開閉原則 里氏代換原則 依賴倒轉原則 接口隔離原則 迪米特法則(最少知道原則) 合成複用原則 建立型設計模式 單例模式 抽象工廠模式 建造者模式 工廠模式 原型模式 結構型設計模式 適配器模式 橋接模式 裝飾模式 組合模式 外觀模式 享元模式 代理模式 行爲型設計模式 模版方法模式 命令模式 迭代器模式 觀察者模式 中介者模式 備忘錄模式 解釋器模式 狀態模式 策略模式 責任鏈模式 訪問者模式 單例的七種寫法 懶漢——線程不安全 懶漢——線程安全 餓漢 餓漢——變種 靜態內部類 枚舉 雙重校驗鎖 爲何推薦使用枚舉實現單例? 三種工廠模式的區別及聯繫 簡單工廠、工廠方法、模板工廠 會使用經常使用設計模式 適配器模式 策略模式 模板方法模式 觀察者模式 外觀模式 代理模式 不用synchronized和lock,實現線程安全的單例模式 nio和reactor設計模式 Spring中用到了哪些設計模式 網絡編程知識 經常使用協議 tcp、udp、http、https 用Java實現FTP、SMTP協議 OSI七層模型 每一層的主要協議 TCP/UDP 三次握手與四次關閉 流量控制和擁塞控制 tcp粘包與拆包 TCP/IP IPV4 IPV6 HTTP http/1.0 http/1.1 http/2之間的區別 http和https的區別 http中 get和post區別 常見的web請求返回的狀態碼 40四、30二、30一、500分別表明什麼 用Java寫一個簡單的靜態文件的HTTP服務器 http/2 Java RMI,Socket,HttpClient cookie 與 session cookie被禁用,如何實現session 瞭解nginx和apache服務器的特性並搭建一個對應的服務器 進程間通信的方式 什麼是CDN?若是實現? DNS 什麼是DNS 記錄類型:A記錄、CNAME記錄、AAAA記錄等 域名解析 根域名服務器 DNS污染 DNS劫持 公共DNS:114 DNS、Google DNS、OpenDNS 代理 反向代理 正向代理 反向代理服務器 框架知識 Servlet 生命週期 線程安全問題 filter和listener web.xml中經常使用配置及做用 Hibernate 什麼是OR Mapping Hibernate的緩存機制 Hibernate的懶加載 Hibernate/Ibatis/MyBatis之間的區別 MyBatis Mybatis緩存機制 #{}和${}的區別 mapper中傳遞多個參數 Mybatis動態sql Mybatis的延遲加載 Spring Bean的初始化 AOP原理 實現Spring的IOC spring四種依賴注入方式 Spring MVC 什麼是MVC Spring mvc與Struts mvc的區別 Spring Boot Spring Boot 2.0 起步依賴 自動配置 Spring Boot的starter原理 本身實現一個starter 爲何Spring Boot能夠經過main啓動web項目 Spring Security Spring Cloud 服務發現與註冊:Eureka、Zookeeper、Consul 負載均衡:Feign、Spring Cloud Loadbalance 服務配置:Spring Cloud Config 服務限流與熔斷:Hystrix 服務鏈路追蹤:Dapper 服務網關、安全、消息 應用服務器知識 JBoss tomcat jetty Weblogic 工具 git & svn maven & gradle git技巧 分支合併 衝突解決 提交回滾 maven技巧 依賴樹 依賴仲裁 Intellij IDEA 經常使用插件:Maven Helper、FindBugs-IDEA、阿里巴巴代碼規約檢測、GsonFormat、Lombok plugin、.ignore、Mybatis plugin 高級篇 新技術 Java 9 Jigsaw Jshell Reactive Streams Java 10 局部變量類型推斷 G1的並行Full GC ThreadLocal握手機制 Java 11 ZGC Epsilon 加強var Java 12 Switch 表達式 Java 13 Text Blocks Dynamic CDS Archives Java 14 Java打包工具 更有價值的NullPointerException record類型 Spring 5 響應式編程 Spring Boot 2.0 http/2 http/3 性能優化 使用單例 使用Future模式 使用線程池 選擇就緒 減小上下文切換 減小鎖粒度 數據壓縮 結果緩存 Stream並行流 GC調優 JVM內存分配調優 SQL調優 線上問題分析 dump 線程Dump 內存Dump gc狀況 dump獲取及分析工具 jstack jstat jmap jhat Arthas dump分析死鎖 dump分析內存泄露 本身編寫各類outofmemory,stackoverflow程序 HeapOutOfMemory Young OutOfMemory MethodArea OutOfMemory ConstantPool OutOfMemory DirectMemory OutOfMemory Stack OutOfMemory Stack OverFlow Arthas jvm相關 class/classloader相關 monitor/watch/trace相關 options 管道 後臺異步任務 常見問題解決思路 內存溢出 線程死鎖 類加載衝突 load飆高 CPU利用率飆高 慢SQL 使用工具嘗試解決如下問題,並寫下總結 當一個Java程序響應很慢時如何查找問題 當一個Java程序頻繁FullGC時如何解決問題 如何查看垃圾回收日誌 當一個Java應用發生OutOfMemory時該如何解決 如何判斷是否出現死鎖 如何判斷是否存在內存泄露 使用Arthas快速排查Spring Boot應用404/401問題 使用Arthas排查線上應用日誌打滿問題 利用Arthas排查Spring Boot應用NoSuchMethodError 編譯原理知識 編譯與反編譯 Java代碼的編譯與反編譯 Java的反編譯工具 javap jad CRF 即時編譯器 編譯器優化 操做系統知識 Linux的經常使用命令 find、grep、ps、cp、move、tar、head、tail、netstat、lsof、tree、wget、curl、ping、ssh、echo、free、top 進程間通訊 服務器性能指標 load CPU利用率 內存使用狀況 qps rt 進程同步 生產者消費者問題 哲學家就餐問題 讀者寫者問題 緩衝區溢出 分段和分頁 虛擬內存與主存 虛擬內存管理 換頁算法 數據庫知識 MySql 執行引擎 MySQL 執行計劃 如何查看執行計劃 如何根據執行計劃進行SQL優化 索引 Hash索引&B樹索引 普通索引&惟一索引 彙集索引&非彙集索引 覆蓋索引 最左前綴原則 索引下推 索引失效 回表 SQL優化 數據庫事務和隔離級別 事務的ACID 事務的隔離級別與讀現象 事務能不能實現鎖的功能 編碼方式 utf8 utf8mb4 爲何不要在數據庫中使用utf8編碼 行數統計 count(1)、count(*)、count(字段)的區別 爲何建議使用count(*) 數據庫鎖 共享鎖、排它鎖 行鎖、表鎖 樂觀鎖、悲觀鎖 使用數據庫鎖實現樂觀鎖 Gap Lock、Next-Key Lock 鏈接 內鏈接 左鏈接 右鏈接 數據庫主備搭建 log binlog redolog 內存數據庫 h2 分庫分表 讀寫分離 經常使用的nosql數據庫 redis memcached 分別使用數據庫鎖、NoSql實現分佈式鎖 性能調優 數據庫鏈接池 數據結構與算法知識 簡單的數據結構 棧 隊列 鏈表 數組 哈希表 棧和隊列的相同和不一樣之處 棧一般採用的兩種存儲結構 兩個棧實現隊列,和兩個隊列實現棧 樹 二叉樹 字典樹 平衡樹 排序樹 B樹 B+樹 R樹 多路樹 紅黑樹 堆 大根堆 小根堆 圖 有向圖 無向圖 拓撲 穩定的排序算法 冒泡排序 插入排序 雞尾酒排序 桶排序 計數排序 歸併排序 原地歸併排序 二叉排序樹排序 鴿巢排序 基數排序 侏儒排序 圖書館排序 塊排序 不穩定的排序算法 選擇排序 希爾排序 Clover排序算法 梳排序 堆排序 平滑排序 快速排序 內省排序 耐心排序 時間複雜度&空間複雜度 如何計算時間複雜度和空間複雜度 經常使用排序算法的時間複雜度 深度優先和廣度優先搜索 全排列 貪心算法 KMP算法 hash算法 海量數據處理 分治 hash映射 堆排序 雙層桶劃分 Bloom Filter bitmap 數據庫索引 mapreduce等 大數據知識 搜索 Solr Lucene ElasticSearch 流式計算 Storm Spark Flink Hadoop,離線計算 HDFS MapReduce 分佈式日誌收集 flume kafka logstash 數據挖掘 mahout 網絡安全知識 XSS XSS的防護 CSRF 注入攻擊 SQL注入 XML注入 CRLF注入 文件上傳漏洞 加密與解密 對稱加密 非對稱加密 哈希算法 加鹽哈希算法 加密算法 MD5 SHA1 DES AES RSA DSA 彩虹表 DDOS攻擊 DOS攻擊 DDOS攻擊 memcached爲何能夠致使DDos攻擊 什麼是反射型DDoS 如何經過Hash碰撞進行DOS攻擊 SSL、TLS,HTTPS 脫庫、洗庫、撞庫 架構篇 架構設計原則 單一職責原則 開放封閉原則 里氏替代原則 依賴倒置原則 接口分離原則 分佈式 分佈式與集羣 數據一致性 服務治理 服務降級 分佈式理論 2PC 3PC CAP BASE 分佈式協調 Zookeeper 基本概念 常見用法 ZAB算法 腦裂 分佈式事務 本地事務&分佈式事務 可靠消息最終一致性 最大努力通知 TCC Dubbo 服務註冊 服務發現 服務治理 分佈式數據庫 怎樣打造一個分佈式數據庫 何時須要分佈式數據庫 mycat otter HBase 分佈式文件系統 mfs fastdfs 分佈式緩存 緩存一致性 緩存命中率 緩存冗餘 限流降級 熔斷器模式 Hystrix Sentinal resilience4j 分佈式算法 拜占庭問題與算法 2PC 3PC 共識算法 Paxos 算法與 Raft 算法 ZAB算法 領域驅動設計 實體、值對象 聚合、聚合根 限界上下文 DDD如何分層 充血模型和貧血模型 DDD和微服務有什麼關係 微服務 SOA 康威定律 ServiceMesh sidecar Docker & Kubernets Spring Boot Spring Cloud 高併發 分庫分表 橫向拆分與水平拆分 分庫分表後的分佈式事務問題 CDN技術 消息隊列 RabbitMQ、RocketMQ、ActiveMQ、Kafka 各個消息隊列的對比 高可用 雙機架構 主備複製 主從複製 主主複製 異地多活 高性能 高性能數據庫 讀寫分離 分庫分表 高性能緩存 緩存穿透 緩存雪崩 緩存熱點 負載均衡 PPC、TPC 監控 監控什麼 CPU 內存 磁盤I/O 網絡I/O等 監控手段 進程監控 語義監控 機器資源監控 數據波動 監控數據採集 日誌 埋點 Dapper 負載均衡 負載均衡分類 二層負載均衡 三層負載均衡 四層負載均衡 七層負載均衡 負載均衡工具 LVS Nginx HAProxy 負載均衡算法 靜態負載均衡算法:輪詢,比率,優先權 動態負載均衡算法: 最少鏈接數,最快響應速度,觀察方法,預測法,動態性能分配,動態服務器補充,服務質量,服務類型,規則模式。 DNS DNS原理 DNS的設計 CDN 數據一致性 擴展篇 雲計算 IaaS SaaS PaaS 虛擬化技術 openstack Serverlsess 搜索引擎 Solr Lucene Nutch Elasticsearch 權限管理 Shiro 區塊鏈 哈希算法 Merkle樹 公鑰密碼算法 共識算法 Raft協議 Paxos 算法與 Raft 算法 拜占庭問題與算法 消息認證碼與數字簽名 比特幣 挖礦 共識機制 閃電網絡 側鏈 熱點問題 分叉 以太坊 超級帳本 人工智能 數學基礎 機器學習 人工神經網絡 深度學習 應用場景 經常使用框架 TensorFlow DeepLearning4J IoT 量子計算 AR & VR 其餘語言 Groovy Kotlin Python Go NodeJs Swift Rust posted @ 2020-04-13 09:43 HollisChuang 閱讀( 947) 評論( 0) 編輯 收藏 刷新評論 刷新頁面 返回頂部
List<?>和List之間的區別是什麼? 單元測試 junit junit和Spring的結合 mock mockito 內存數據庫(h2) 正則表達式 java.lang.util.regex.* 經常使用的Java工具庫 apache-commons google-guava netty API&SPI API API和SPI的關係和區別 如何定義SPI SPI的實現原理 異常 Error和Exception 異常類型 異常相關關鍵字 正確處理異常 自定義異常 異常鏈 try-with-resources finally和return的執行順序 時間處理 時區 冬令時和夏令時 時間戳 Java中時間API(Java 8) 格林威治時間 CET、UTC、GMT、CST幾種常見時間的含義和關係 SimpleDateFormat的線程安全性問題 Java 8中的時間處理 如何在東八區的計算機上獲取美國時間 yyyy和YYYY有什麼區別? 編碼方式 什麼是ASCII? Unicode 有了Unicode爲啥還須要UTF-8 UTF八、UTF1六、UTF32區別 有了UTF8爲何還須要GBK? GBK、GB23十二、GB18030之間的區別 URL編解碼 Big Endian和Little Endian 如何解決亂碼問題 語法糖 Java中語法糖原理、解語法糖 常見語法糖原理:switch 支持 String 與枚舉、泛型、自動裝箱與拆箱、方法變長參數、枚舉、內部類、條件編譯、 斷言、數值字面量、for-each、try-with-resource、Lambda表達式、本地變量類型推斷、record JMS 什麼是Java消息服務 JMS消息傳送模型 JMX java.lang.management.* javax.management.* Java 8 lambda表達式 Stream API 時間API 閱讀源代碼 String Integer Long Enum BigDecimal ThreadLocal ClassLoader & URLClassLoader ArrayList & LinkedList HashMap & LinkedHashMap & TreeMap & CouncurrentHashMap HashSet & LinkedHashSet & TreeSet Java併發編程 併發與並行 什麼是併發 什麼是並行 併發與並行的區別 線程 線程與進程的區別 線程的實現 線程的狀態 線程優先級 線程調度 多線程如何Debug 守護線程 建立線程的多種方式 繼承Thread類建立線程 實現Runnable接口建立線程 經過Callable和FutureTask建立線程 經過線程池建立線程 線程池 本身設計線程池 submit() 和 execute() 線程池原理 爲何不容許使用Executors建立線程池 線程安全 什麼是線程安全 多級緩存和一致性問題 CPU時間片和原子性問題 指令重排和有序性問題 線程安全和內存模型的關係 happens-before as-if-serial 鎖 可重入鎖 阻塞鎖 樂觀鎖與悲觀鎖 數據庫相關鎖機制 分佈式鎖 無鎖 CAS CAS的ABA問題 鎖優化 偏向鎖 輕量級鎖 重量級鎖 鎖消除 鎖粗化 自旋鎖 死鎖 什麼是死鎖 死鎖的緣由 如何避免死鎖 寫一個死鎖的程序 死鎖問題如何排查 synchronized synchronized是如何實現的? synchronized和lock之間關係 不使用synchronized如何實現一個線程安全的單例 synchronized和原子性 synchronized和可見性 synchronized和有序性 volatile 編譯器指令重排和CPU指令重排 volatile的實現原理 內存屏障 volatile和原子性 volatile和可見性 volatile和有序性 有了symchronized爲何還須要volatile 線程相關方法 start & run sleep & wait notify & notifyAll ThreadLocal ThreadLocal 原理 ThreadLocal 底層的數據結構 寫代碼解決生產者消費者問題 併發包 同步容器與併發容器 Thread Runnable Callable ReentrantLock ReentrantReadWriteLock Atomic* Semaphore CountDownLatch ConcurrentHashMap Executors 底層篇 JVM JVM內存結構 運行時數據區域 運行時數據區哪些是線程獨享 堆和棧區別 方法區在不一樣版本JDK中的位置 堆外內存 TLAB Java中的對象必定在堆上分配嗎? 垃圾回收 GC算法:標記清除、引用計數、複製、標記壓縮、分代回收、增量式回收 GC參數 對象存活的斷定 垃圾收集器(CMS、G一、ZGC、Epsilon) JVM參數及調優 -Xmx -Xmn -Xms Xss -XX:SurvivorRatio -XX:PermSize -XX:MaxPermSize -XX:MaxTenuringThreshold Java對象模型 oop-klass 對象頭 HotSpot 即時編譯器 編譯優化 Java內存模型 計算機內存模型 緩存一致性 MESI協議 可見性 原子性 順序性 happens-before as-if-serial 內存屏障 synchronized volatile final 鎖 虛擬機性能監控與故障處理工具 jps jstack jmap jstat jconsole jinfo jhat javap btrace TProfiler Arthas 類加載機制 classLoader 類加載過程是線程安全的嗎? 類加載過程 雙親委派(破壞雙親委派) 模塊化(jboss modules、osgi、jigsaw) 打包工具 jar、jlink、jpackage 編譯與反編譯 什麼是編譯 什麼是反編譯 編譯工具:javac 反編譯工具:javap 、jad 、CRF JIT JIT優化(逃逸分析、棧上分配、標量替換、鎖優化) 進階篇 Java底層知識 字節碼 class文件格式 CAFEBABE 位運算 用位運算實現加、減、乘、除、取餘 設計模式 設計模式的六大原則 開閉原則 里氏代換原則 依賴倒轉原則 接口隔離原則 迪米特法則(最少知道原則) 合成複用原則 建立型設計模式 單例模式 抽象工廠模式 建造者模式 工廠模式 原型模式 結構型設計模式 適配器模式 橋接模式 裝飾模式 組合模式 外觀模式 享元模式 代理模式 行爲型設計模式 模版方法模式 命令模式 迭代器模式 觀察者模式 中介者模式 備忘錄模式 解釋器模式 狀態模式 策略模式 責任鏈模式 訪問者模式 單例的七種寫法 懶漢——線程不安全 懶漢——線程安全 餓漢 餓漢——變種 靜態內部類 枚舉 雙重校驗鎖 爲何推薦使用枚舉實現單例? 三種工廠模式的區別及聯繫 簡單工廠、工廠方法、模板工廠 會使用經常使用設計模式 適配器模式 策略模式 模板方法模式 觀察者模式 外觀模式 代理模式 不用synchronized和lock,實現線程安全的單例模式 nio和reactor設計模式 Spring中用到了哪些設計模式 網絡編程知識 經常使用協議 tcp、udp、http、https 用Java實現FTP、SMTP協議 OSI七層模型 每一層的主要協議 TCP/UDP 三次握手與四次關閉 流量控制和擁塞控制 tcp粘包與拆包 TCP/IP IPV4 IPV6 HTTP http/1.0 http/1.1 http/2之間的區別 http和https的區別 http中 get和post區別 常見的web請求返回的狀態碼 40四、30二、30一、500分別表明什麼 用Java寫一個簡單的靜態文件的HTTP服務器 http/2 Java RMI,Socket,HttpClient cookie 與 session cookie被禁用,如何實現session 瞭解nginx和apache服務器的特性並搭建一個對應的服務器 進程間通信的方式 什麼是CDN?若是實現? DNS 什麼是DNS 記錄類型:A記錄、CNAME記錄、AAAA記錄等 域名解析 根域名服務器 DNS污染 DNS劫持 公共DNS:114 DNS、Google DNS、OpenDNS 代理 反向代理 正向代理 反向代理服務器 框架知識 Servlet 生命週期 線程安全問題 filter和listener web.xml中經常使用配置及做用 Hibernate 什麼是OR Mapping Hibernate的緩存機制 Hibernate的懶加載 Hibernate/Ibatis/MyBatis之間的區別 MyBatis Mybatis緩存機制 #{}和${}的區別 mapper中傳遞多個參數 Mybatis動態sql Mybatis的延遲加載 Spring Bean的初始化 AOP原理 實現Spring的IOC spring四種依賴注入方式 Spring MVC 什麼是MVC Spring mvc與Struts mvc的區別 Spring Boot Spring Boot 2.0 起步依賴 自動配置 Spring Boot的starter原理 本身實現一個starter 爲何Spring Boot能夠經過main啓動web項目 Spring Security Spring Cloud 服務發現與註冊:Eureka、Zookeeper、Consul 負載均衡:Feign、Spring Cloud Loadbalance 服務配置:Spring Cloud Config 服務限流與熔斷:Hystrix 服務鏈路追蹤:Dapper 服務網關、安全、消息 應用服務器知識 JBoss tomcat jetty Weblogic 工具 git & svn maven & gradle git技巧 分支合併 衝突解決 提交回滾 maven技巧 依賴樹 依賴仲裁 Intellij IDEA 經常使用插件:Maven Helper、FindBugs-IDEA、阿里巴巴代碼規約檢測、GsonFormat、Lombok plugin、.ignore、Mybatis plugin 高級篇 新技術 Java 9 Jigsaw Jshell Reactive Streams Java 10 局部變量類型推斷 G1的並行Full GC ThreadLocal握手機制 Java 11 ZGC Epsilon 加強var Java 12 Switch 表達式 Java 13 Text Blocks Dynamic CDS Archives Java 14 Java打包工具 更有價值的NullPointerException record類型 Spring 5 響應式編程 Spring Boot 2.0 http/2 http/3 性能優化 使用單例 使用Future模式 使用線程池 選擇就緒 減小上下文切換 減小鎖粒度 數據壓縮 結果緩存 Stream並行流 GC調優 JVM內存分配調優 SQL調優 線上問題分析 dump 線程Dump 內存Dump gc狀況 dump獲取及分析工具 jstack jstat jmap jhat Arthas dump分析死鎖 dump分析內存泄露 本身編寫各類outofmemory,stackoverflow程序 HeapOutOfMemory Young OutOfMemory MethodArea OutOfMemory ConstantPool OutOfMemory DirectMemory OutOfMemory Stack OutOfMemory Stack OverFlow Arthas jvm相關 class/classloader相關 monitor/watch/trace相關 options 管道 後臺異步任務 常見問題解決思路 內存溢出 線程死鎖 類加載衝突 load飆高 CPU利用率飆高 慢SQL 使用工具嘗試解決如下問題,並寫下總結 當一個Java程序響應很慢時如何查找問題 當一個Java程序頻繁FullGC時如何解決問題 如何查看垃圾回收日誌 當一個Java應用發生OutOfMemory時該如何解決 如何判斷是否出現死鎖 如何判斷是否存在內存泄露 使用Arthas快速排查Spring Boot應用404/401問題 使用Arthas排查線上應用日誌打滿問題 利用Arthas排查Spring Boot應用NoSuchMethodError 編譯原理知識 編譯與反編譯 Java代碼的編譯與反編譯 Java的反編譯工具 javap jad CRF 即時編譯器 編譯器優化 操做系統知識 Linux的經常使用命令 find、grep、ps、cp、move、tar、head、tail、netstat、lsof、tree、wget、curl、ping、ssh、echo、free、top 進程間通訊 服務器性能指標 load CPU利用率 內存使用狀況 qps rt 進程同步 生產者消費者問題 哲學家就餐問題 讀者寫者問題 緩衝區溢出 分段和分頁 虛擬內存與主存 虛擬內存管理 換頁算法 數據庫知識 MySql 執行引擎 MySQL 執行計劃 如何查看執行計劃 如何根據執行計劃進行SQL優化 索引 Hash索引&B樹索引 普通索引&惟一索引 彙集索引&非彙集索引 覆蓋索引 最左前綴原則 索引下推 索引失效 回表 SQL優化 數據庫事務和隔離級別 事務的ACID 事務的隔離級別與讀現象 事務能不能實現鎖的功能 編碼方式 utf8 utf8mb4 爲何不要在數據庫中使用utf8編碼 行數統計 count(1)、count(*)、count(字段)的區別 爲何建議使用count(*) 數據庫鎖 共享鎖、排它鎖 行鎖、表鎖 樂觀鎖、悲觀鎖 使用數據庫鎖實現樂觀鎖 Gap Lock、Next-Key Lock 鏈接 內鏈接 左鏈接 右鏈接 數據庫主備搭建 log binlog redolog 內存數據庫 h2 分庫分表 讀寫分離 經常使用的nosql數據庫 redis memcached 分別使用數據庫鎖、NoSql實現分佈式鎖 性能調優 數據庫鏈接池 數據結構與算法知識 簡單的數據結構 棧 隊列 鏈表 數組 哈希表 棧和隊列的相同和不一樣之處 棧一般採用的兩種存儲結構 兩個棧實現隊列,和兩個隊列實現棧 樹 二叉樹 字典樹 平衡樹 排序樹 B樹 B+樹 R樹 多路樹 紅黑樹 堆 大根堆 小根堆 圖 有向圖 無向圖 拓撲 穩定的排序算法 冒泡排序 插入排序 雞尾酒排序 桶排序 計數排序 歸併排序 原地歸併排序 二叉排序樹排序 鴿巢排序 基數排序 侏儒排序 圖書館排序 塊排序 不穩定的排序算法 選擇排序 希爾排序 Clover排序算法 梳排序 堆排序 平滑排序 快速排序 內省排序 耐心排序 時間複雜度&空間複雜度 如何計算時間複雜度和空間複雜度 經常使用排序算法的時間複雜度 深度優先和廣度優先搜索 全排列 貪心算法 KMP算法 hash算法 海量數據處理 分治 hash映射 堆排序 雙層桶劃分 Bloom Filter bitmap 數據庫索引 mapreduce等 大數據知識 搜索 Solr Lucene ElasticSearch 流式計算 Storm Spark Flink Hadoop,離線計算 HDFS MapReduce 分佈式日誌收集 flume kafka logstash 數據挖掘 mahout 網絡安全知識 XSS XSS的防護 CSRF 注入攻擊 SQL注入 XML注入 CRLF注入 文件上傳漏洞 加密與解密 對稱加密 非對稱加密 哈希算法 加鹽哈希算法 加密算法 MD5 SHA1 DES AES RSA DSA 彩虹表 DDOS攻擊 DOS攻擊 DDOS攻擊 memcached爲何能夠致使DDos攻擊 什麼是反射型DDoS 如何經過Hash碰撞進行DOS攻擊 SSL、TLS,HTTPS 脫庫、洗庫、撞庫 架構篇 架構設計原則 單一職責原則 開放封閉原則 里氏替代原則 依賴倒置原則 接口分離原則 分佈式 分佈式與集羣 數據一致性 服務治理 服務降級 分佈式理論 2PC 3PC CAP BASE 分佈式協調 Zookeeper 基本概念 常見用法 ZAB算法 腦裂 分佈式事務 本地事務&分佈式事務 可靠消息最終一致性 最大努力通知 TCC Dubbo 服務註冊 服務發現 服務治理 分佈式數據庫 怎樣打造一個分佈式數據庫 何時須要分佈式數據庫 mycat otter HBase 分佈式文件系統 mfs fastdfs 分佈式緩存 緩存一致性 緩存命中率 緩存冗餘 限流降級 熔斷器模式 Hystrix Sentinal resilience4j 分佈式算法 拜占庭問題與算法 2PC 3PC 共識算法 Paxos 算法與 Raft 算法 ZAB算法 領域驅動設計 實體、值對象 聚合、聚合根 限界上下文 DDD如何分層 充血模型和貧血模型 DDD和微服務有什麼關係 微服務 SOA 康威定律 ServiceMesh sidecar Docker & Kubernets Spring Boot Spring Cloud 高併發 分庫分表 橫向拆分與水平拆分 分庫分表後的分佈式事務問題 CDN技術 消息隊列 RabbitMQ、RocketMQ、ActiveMQ、Kafka 各個消息隊列的對比 高可用 雙機架構 主備複製 主從複製 主主複製 異地多活 高性能 高性能數據庫 讀寫分離 分庫分表 高性能緩存 緩存穿透 緩存雪崩 緩存熱點 負載均衡 PPC、TPC 監控 監控什麼 CPU 內存 磁盤I/O 網絡I/O等 監控手段 進程監控 語義監控 機器資源監控 數據波動 監控數據採集 日誌 埋點 Dapper 負載均衡 負載均衡分類 二層負載均衡 三層負載均衡 四層負載均衡 七層負載均衡 負載均衡工具 LVS Nginx HAProxy 負載均衡算法 靜態負載均衡算法:輪詢,比率,優先權 動態負載均衡算法: 最少鏈接數,最快響應速度,觀察方法,預測法,動態性能分配,動態服務器補充,服務質量,服務類型,規則模式。 DNS DNS原理 DNS的設計 CDN 數據一致性 擴展篇 雲計算 IaaS SaaS PaaS 虛擬化技術 openstack Serverlsess 搜索引擎 Solr Lucene Nutch Elasticsearch 權限管理 Shiro 區塊鏈 哈希算法 Merkle樹 公鑰密碼算法 共識算法 Raft協議 Paxos 算法與 Raft 算法 拜占庭問題與算法 消息認證碼與數字簽名 比特幣 挖礦 共識機制 閃電網絡 側鏈 熱點問題 分叉 以太坊 超級帳本 人工智能 數學基礎 機器學習 人工神經網絡 深度學習 應用場景 經常使用框架 TensorFlow DeepLearning4J IoT 量子計算 AR & VR 其餘語言 Groovy Kotlin Python Go NodeJs Swift Rust posted @ 2020-04-13 09:43 HollisChuang 閱讀( 947) 評論( 0) 編輯 收藏 刷新評論 刷新頁面 返回頂部
junit
junit和Spring的結合
mock
mockito
內存數據庫(h2)
java.lang.util.regex.*
apache-commons
google-guava
API
API和SPI的關係和區別
如何定義SPI
SPI的實現原理
Error和Exception
異常類型
異常相關關鍵字
正確處理異常
自定義異常
異常鏈
try-with-resources
finally和return的執行順序
時區
冬令時和夏令時
時間戳
Java中時間API(Java 8)
格林威治時間
CET、UTC、GMT、CST幾種常見時間的含義和關係
SimpleDateFormat的線程安全性問題
Java 8中的時間處理
如何在東八區的計算機上獲取美國時間
yyyy和YYYY有什麼區別?
什麼是ASCII?
Unicode
有了Unicode爲啥還須要UTF-8
UTF八、UTF1六、UTF32區別
有了UTF8爲何還須要GBK?
GBK、GB23十二、GB18030之間的區別
URL編解碼
Big Endian和Little Endian
如何解決亂碼問題
Java中語法糖原理、解語法糖
常見語法糖原理:switch 支持 String 與枚舉、泛型、自動裝箱與拆箱、方法變長參數、枚舉、內部類、條件編譯、 斷言、數值字面量、for-each、try-with-resource、Lambda表達式、本地變量類型推斷、record
什麼是Java消息服務
JMS消息傳送模型
java.lang.management.*
javax.management.*
lambda表達式
Stream API
時間API
String
Integer
Long
Enum
BigDecimal
ThreadLocal
ClassLoader & URLClassLoader
ArrayList & LinkedList
HashMap & LinkedHashMap & TreeMap & CouncurrentHashMap
HashSet & LinkedHashSet & TreeSet
什麼是併發
什麼是並行
併發與並行的區別
線程與進程的區別
線程的實現
線程的狀態
線程優先級
線程調度
多線程如何Debug
守護線程
繼承Thread類建立線程
實現Runnable接口建立線程
經過Callable和FutureTask建立線程
經過線程池建立線程
本身設計線程池
submit() 和 execute()
線程池原理
爲何不容許使用Executors建立線程池
什麼是線程安全
多級緩存和一致性問題
CPU時間片和原子性問題
指令重排和有序性問題
線程安全和內存模型的關係
happens-before
as-if-serial
可重入鎖
阻塞鎖
樂觀鎖與悲觀鎖
數據庫相關鎖機制
分佈式鎖
CAS
CAS的ABA問題
偏向鎖
輕量級鎖
重量級鎖
鎖消除
鎖粗化
自旋鎖
什麼是死鎖
死鎖的緣由
如何避免死鎖
寫一個死鎖的程序
死鎖問題如何排查
synchronized是如何實現的?
synchronized和lock之間關係
不使用synchronized如何實現一個線程安全的單例
synchronized和原子性
synchronized和可見性
synchronized和有序性
編譯器指令重排和CPU指令重排
volatile的實現原理
內存屏障
volatile和原子性
volatile和可見性
volatile和有序性
有了symchronized爲何還須要volatile
start & run
sleep & wait
notify & notifyAll
ThreadLocal 原理
ThreadLocal 底層的數據結構
同步容器與併發容器
Thread
Runnable
Callable
ReentrantLock
ReentrantReadWriteLock
Atomic*
Semaphore
CountDownLatch
ConcurrentHashMap
Executors
運行時數據區域
運行時數據區哪些是線程獨享
堆和棧區別
方法區在不一樣版本JDK中的位置
堆外內存
TLAB
Java中的對象必定在堆上分配嗎?
GC算法:標記清除、引用計數、複製、標記壓縮、分代回收、增量式回收
GC參數
對象存活的斷定
垃圾收集器(CMS、G一、ZGC、Epsilon)
-Xmx
-Xmn
-Xms
Xss
-XX:SurvivorRatio
-XX:PermSize
-XX:MaxPermSize
-XX:MaxTenuringThreshold
oop-klass
對象頭
即時編譯器
編譯優化
計算機內存模型
緩存一致性
MESI協議
可見性
原子性
順序性
鎖
jps
jstack
jmap
jstat
jconsole
jinfo
jhat
javap
btrace
TProfiler
Arthas
classLoader
類加載過程是線程安全的嗎?
類加載過程
雙親委派(破壞雙親委派)
模塊化(jboss modules、osgi、jigsaw)
jar、jlink、jpackage
什麼是編譯
什麼是反編譯
編譯工具:javac
反編譯工具:javap 、jad 、CRF
JIT優化(逃逸分析、棧上分配、標量替換、鎖優化)
字節碼
class文件格式
CAFEBABE
用位運算實現加、減、乘、除、取餘
開閉原則
里氏代換原則
依賴倒轉原則
接口隔離原則
迪米特法則(最少知道原則)
合成複用原則
單例模式
抽象工廠模式
建造者模式
工廠模式
原型模式
適配器模式
橋接模式
裝飾模式
組合模式
外觀模式
享元模式
代理模式
模版方法模式
命令模式
迭代器模式
觀察者模式
中介者模式
備忘錄模式
解釋器模式
狀態模式
策略模式
責任鏈模式
訪問者模式
懶漢——線程不安全
懶漢——線程安全
餓漢
餓漢——變種
靜態內部類
枚舉
雙重校驗鎖
簡單工廠、工廠方法、模板工廠
模板方法模式
tcp、udp、http、https
用Java實現FTP、SMTP協議
每一層的主要協議
三次握手與四次關閉
流量控制和擁塞控制
tcp粘包與拆包
IPV4
IPV6
http/1.0 http/1.1 http/2之間的區別
http和https的區別
http中 get和post區別
常見的web請求返回的狀態碼
40四、30二、30一、500分別表明什麼
用Java寫一個簡單的靜態文件的HTTP服務器
cookie被禁用,如何實現session
什麼是DNS
記錄類型:A記錄、CNAME記錄、AAAA記錄等
域名解析
根域名服務器
DNS污染
DNS劫持
公共DNS:114 DNS、Google DNS、OpenDNS
反向代理
正向代理
反向代理服務器
生命週期
線程安全問題
filter和listener
web.xml中經常使用配置及做用
什麼是OR Mapping
Hibernate的緩存機制
Hibernate的懶加載
Hibernate/Ibatis/MyBatis之間的區別
Mybatis緩存機制
#{}和${}的區別
#{}
${}
mapper中傳遞多個參數
Mybatis動態sql
Mybatis的延遲加載
Bean的初始化
AOP原理
實現Spring的IOC
spring四種依賴注入方式
什麼是MVC
Spring mvc與Struts mvc的區別
Spring Boot 2.0
起步依賴
自動配置
Spring Boot的starter原理
本身實現一個starter
爲何Spring Boot能夠經過main啓動web項目
服務發現與註冊:Eureka、Zookeeper、Consul
負載均衡:Feign、Spring Cloud Loadbalance
服務配置:Spring Cloud Config
服務限流與熔斷:Hystrix
服務鏈路追蹤:Dapper
服務網關、安全、消息
JBoss
tomcat
jetty
Weblogic
git & svn
maven & gradle
分支合併
衝突解決
提交回滾
依賴樹
依賴仲裁
經常使用插件:Maven Helper、FindBugs-IDEA、阿里巴巴代碼規約檢測、GsonFormat、Lombok plugin、.ignore、Mybatis plugin
Jigsaw
Jshell
Reactive Streams
局部變量類型推斷
G1的並行Full GC
ThreadLocal握手機制
ZGC
Epsilon
加強var
Switch 表達式
Text Blocks
Dynamic CDS Archives
Java打包工具
更有價值的NullPointerException
record類型
響應式編程
使用單例
使用Future模式
使用線程池
選擇就緒
減小上下文切換
減小鎖粒度
數據壓縮
結果緩存
Stream並行流
GC調優
JVM內存分配調優
SQL調優
線程Dump
內存Dump
gc狀況
HeapOutOfMemory
Young OutOfMemory
MethodArea OutOfMemory
ConstantPool OutOfMemory
DirectMemory OutOfMemory
Stack OutOfMemory Stack OverFlow
jvm相關
class/classloader相關
monitor/watch/trace相關
options
管道
後臺異步任務
內存溢出
線程死鎖
類加載衝突
load飆高
CPU利用率飆高
慢SQL
當一個Java程序響應很慢時如何查找問題
當一個Java程序頻繁FullGC時如何解決問題
如何查看垃圾回收日誌
當一個Java應用發生OutOfMemory時該如何解決
如何判斷是否出現死鎖
如何判斷是否存在內存泄露
使用Arthas快速排查Spring Boot應用404/401問題
使用Arthas排查線上應用日誌打滿問題
利用Arthas排查Spring Boot應用NoSuchMethodError
Java代碼的編譯與反編譯
jad
CRF
編譯器優化
find、grep、ps、cp、move、tar、head、tail、netstat、lsof、tree、wget、curl、ping、ssh、echo、free、top
load
CPU利用率
內存使用狀況
qps
rt
生產者消費者問題
哲學家就餐問題
讀者寫者問題
如何查看執行計劃
如何根據執行計劃進行SQL優化
Hash索引&B樹索引
普通索引&惟一索引
彙集索引&非彙集索引
覆蓋索引
最左前綴原則
索引下推
索引失效
事務的ACID
事務的隔離級別與讀現象
事務能不能實現鎖的功能
utf8
utf8mb4
爲何不要在數據庫中使用utf8編碼
count(1)、count(*)、count(字段)的區別
爲何建議使用count(*)
共享鎖、排它鎖
行鎖、表鎖
樂觀鎖、悲觀鎖
使用數據庫鎖實現樂觀鎖
Gap Lock、Next-Key Lock
內鏈接
左鏈接
右鏈接
binlog
redolog
h2
redis
memcached
棧
隊列
鏈表
數組
哈希表
棧和隊列的相同和不一樣之處
棧一般採用的兩種存儲結構
兩個棧實現隊列,和兩個隊列實現棧
二叉樹
字典樹
平衡樹
排序樹
B樹
B+樹
R樹
多路樹
紅黑樹
大根堆
小根堆
有向圖
無向圖
拓撲
冒泡排序
插入排序
雞尾酒排序
桶排序
計數排序
歸併排序
原地歸併排序
二叉排序樹排序
鴿巢排序
基數排序
侏儒排序
圖書館排序
塊排序
選擇排序
希爾排序
Clover排序算法
梳排序
堆排序
平滑排序
快速排序
內省排序
耐心排序
如何計算時間複雜度和空間複雜度
經常使用排序算法的時間複雜度
分治
hash映射
雙層桶劃分
Bloom Filter
bitmap
數據庫索引
mapreduce等
Solr
Lucene
ElasticSearch
Storm
Spark
Flink
HDFS
MapReduce
flume
kafka
logstash
mahout
XSS的防護
SQL注入
XML注入
CRLF注入
對稱加密
非對稱加密
哈希算法
加鹽哈希算法
MD5
SHA1
DES
AES
RSA
DSA
DOS攻擊
DDOS攻擊
memcached爲何能夠致使DDos攻擊
什麼是反射型DDoS
如何經過Hash碰撞進行DOS攻擊
單一職責原則
開放封閉原則
里氏替代原則
依賴倒置原則
接口分離原則
分佈式與集羣
數據一致性
服務治理
服務降級
2PC
3PC
CAP
BASE
基本概念
常見用法
ZAB算法
腦裂
本地事務&分佈式事務
可靠消息最終一致性
最大努力通知
TCC
服務註冊
服務發現
怎樣打造一個分佈式數據庫
何時須要分佈式數據庫
mycat
otter
HBase
mfs
fastdfs
緩存命中率
緩存冗餘
熔斷器模式
Hystrix
Sentinal
resilience4j
拜占庭問題與算法
共識算法
Paxos 算法與 Raft 算法
實體、值對象
聚合、聚合根
限界上下文
DDD如何分層
充血模型和貧血模型
DDD和微服務有什麼關係
SOA
康威定律
sidecar
橫向拆分與水平拆分
分庫分表後的分佈式事務問題
RabbitMQ、RocketMQ、ActiveMQ、Kafka
各個消息隊列的對比
主備複製
主從複製
主主複製
讀寫分離
分庫分表
緩存穿透
緩存雪崩
緩存熱點
CPU
內存
磁盤I/O
網絡I/O等
進程監控
語義監控
機器資源監控
數據波動
日誌
埋點
Dapper
二層負載均衡
三層負載均衡
四層負載均衡
七層負載均衡
LVS
Nginx
HAProxy
靜態負載均衡算法:輪詢,比率,優先權
動態負載均衡算法: 最少鏈接數,最快響應速度,觀察方法,預測法,動態性能分配,動態服務器補充,服務質量,服務類型,規則模式。
DNS原理
DNS的設計
IaaS
SaaS
PaaS
虛擬化技術
openstack
Serverlsess
Nutch
Elasticsearch
Shiro
Merkle樹
公鑰密碼算法
Raft協議
消息認證碼與數字簽名
挖礦
共識機制
閃電網絡
側鏈
熱點問題
分叉
超級帳本
數學基礎
機器學習
人工神經網絡
深度學習
應用場景
TensorFlow
DeepLearning4J
Groovy
Kotlin
Python
Go
NodeJs
Swift
Rust