tomcat 参数最佳实践_一线架构师开发总结:剖析并发编程+JVM性能,深入Tomcat与MySQL...
每一個程序員都有自己清晰的職業規劃和終極目標,無論之后是繼續鉆研技術,還是轉管理崗、產品崗,都是需要自己具備有一定的實力,換句話說技術要牛逼。架構師,是很多程序員的終極目標,而成為一名Java架構師,那就需要對自己自身有一定要求,不僅技術能力要過硬,還需要有組織能力和提出解決方案的能力。那么作為架構師,需要掌握哪些技術呢?
今天,就由一線大廠架構師來總結總結他的開發十年,帶你剖析并發編程與JVM,深入Tomcat和MySQL,離架構師更近一步!
注意:以下內容并非完整版,包括一些詳細解析,需要的可以直接私信我。
01 并發編程進階剖析
1.1 并發編程難題
- Synchronized 相關問題
你剛才提到獲取對象的鎖,這個“鎖”到底是什么?如何確定對象的鎖?
什么是可重入性,為什么說Synchronized是可重入鎖?
JVM 對 Java 的原生鎖做了哪些優化?
為什么說 Synchronized 是非公平鎖?
什么是鎖消除和鎖粗化?
為什么說 Synchronized 是一個悲觀鎖?樂觀鎖的實現原理又是什么?什么是CAS,它有什么特性?
樂觀鎖一定就是好的嗎?
- 可重入鎖ReentrantLock及其他顯式鎖 相關問題
那么請談談AQS框架是怎么回事?
請盡可能詳盡地對比下 Synchronized 和 ReentrantLock的異同
ReentrantLock 是如何實現可重入性的?
除了 ReetrantLock, 你還接觸過 JUC 中的哪些并發工具?
請談談 ReadWriteLock 和 StampedLock
如何讓 Java 的線程彼此同步?你了解過哪些同步器? 請分別介紹下
CyclicBarrier 和 CountDownLatch 看起來很相似,請對比下呢?
- Java線程池 相關問題
創建線程池的幾個核心構造參數?
線程池中的線程是怎么創建的?是一開始就隨著線程池的啟動創建好的嗎?
既然提到可以通過配置不同參數創建出不同的線程池,那么Java 中默認實現好的線程池又有哪些呢?請比較它們的異同。
如何在Java線程池中提交線程?
- Java 內存模型相關問題
請談談volatile有什么特點,為什么它能保證變量對所有線程的可見性
既然volatile 能夠保證線程間的變量可見性,是不是就意味著基于 volatile變量的運算就是并發安全的?
請對比下volatile 對比 Synchronized 的異同。
請談談 ThreadLocal 是怎么解決并發安全的?
很多人都說要慎用ThreadLocal,談談你的理解,使用ThreadLocal 需要注意些什么?
1.2 Java并發編程實戰
- 基礎知識
對象的共享
對象的組合
基礎構建模塊
- 結構化并發應用程序
取消與關閉
線程池的使用
圖形用戶界面應用程序
- 活躍行、性能與測試
性能與可伸縮性
并發程序的測試
- 高級主題
構建自定義的同步工具
原子變量與非阻塞同步機制
Java內存模型
1.3 Java多線程并發編程知識導圖(xmind)
02 JVM性能深度剖析
2.1 JVM性能深度解剖 難題
內存模型以及分區,需要詳細到每個區放什么堆里面的分區:Eden,survival (from+ to),老年代,各自的特點。
對象創建方法,對象的內存分配,對象的訪問定位。
GC 的兩種判定方法
SafePoint 是什么
GC 的三種收集方法:標記清除、標記整理、復制算法的原理與特點,分別用在什么地方,如果讓你優化收集方法,有什么思路?
GC 收集器有哪些?CMS 收集器與 G1 收集器的特點
Minor GC 與 Full GC 分別在什么時候發生?
幾種常用的內存調試工具:jmap、jstack、jconsole、jhat
類加載的幾個過程
JVM 內存分哪幾個區,每個區的作用是什么?
如和判斷一個對象是否存活?(或者 GC 對象的判定方法)
簡述 java 垃圾回收機制?
java 中垃圾收集的方法有哪些?
java 內存模型
java 類加載過程?
簡述 java 類加載機制?
類加載器雙親委派模型機制?
什么是類加載器,類加載器有哪些?
簡述 java 內存分配與回收策率以及 Minor GC 和 Major GC
2.2 JVM調優總結
序一些概念
基本垃圾回收算法
垃圾回收面臨的問題
分代垃圾回收詳述
典型配置舉例
新一代的垃圾回收算法
調優方法
反思
參考資料
2.3 深入理解Java虛擬機:JVM高級特性與最佳實踐
走近Java自動內存管理
虛擬機執行子系統
程序編譯與代碼優化
高效并發
2.4 JVM和性能優化(xmind)
Java內存區域垃圾回收器和內存分配策略
JVM的執行子系統
編寫高效優雅Java程序
深入了解性能優化
03 深入Tomcat底層
3.1 深入Tomcat難題
Tomcat 的缺省端口是多少,怎么修改?Tomcat 有哪幾種 Connector 運行模式(優化)?
Tomcat 有幾種部署方式?
Tomcat 容器是如何創建 servlet 類實例?用到了什么原理?
Tomcat 如何優化?
內存調優
垃圾回收策略調優
共享 session 處理
添加 JMS 遠程監控
監視 Tomcat 的內存使用情況
打印類的加載情況及對象的回收情況
Tomcat 一個請求的完整過程
Tomcat 工作模式?你怎樣給 tomcat 去調優?如何加大 tomcat 連接數?Tomcat 中如何禁止列目錄下的文件?怎樣加大 Tomcat 的內存?Tomcat 有幾種部署方式?
3.2 深入剖析Tomcat
一個簡單的Web服務器一個簡單的servlet容器
連接器
Tomcat的默認連接器
servlet容器
生命周期
日志記錄器
載入器
Session管理
安全性
StandardWrapper
StandardContext類
Host 和 Engine
服務器組件和服務組件
關閉鉤子
啟動Tomcat
部署器
Manager應用程序的servlet類
基于JMX的管理
04 Mysql深度進階
4.1 Mysql深度進階難題
一張表,里面有 ID 自增主鍵,當 insert 了 17 條記錄之后,刪除了第 15,16,17 條記錄,再把 Mysql 重啟,再 insert 一條記錄,這條記錄的 ID 是 18 還是 15 ?Mysql 的技術特點是什么?
Heap 表是什么?
Mysql 服務器默認端口是什么?
與 Oracle 相比,Mysql 有什么優勢?
如何區分 FLOAT 和 DOUBLE?
區分 CHAR_LENGTH 和 LENGTH?
請簡潔描述 Mysql 中 InnoDB 支持的四種事務隔離級別名稱,以及逐級之間的區別?
在 Mysql 中 ENUM 的用法是什么?
如何定義 REGEXP?
CHAR 和 VARCHAR 的區別?
列的字符串類型可以是什么?
如何獲取當前的 Mysql 版本?
Mysql 中使用什么存儲引擎?
MYSQL 數據庫服務器性能分析的方法命令有哪些?
我們如何在 mysql 中運行批處理模式?
4.2 MySQL 性能優化的21個最佳實踐
為查詢緩存優化你的查詢EXPLAIN 你的 SELECT 查詢
當只要一行數據時使用 LIMIT 1
為搜索字段建索引
在 Join 表的時候使用相當類型的例,并將其索引
千萬不要 ORDER BY RAND()
避免 SELECT *
永遠為每張表設置一個 ID
使用 ENUM 而不是 VARCHAR
從 PROCEDURE ANALYSE() 取得建議
盡可能的使用 NOT NULL
Prepared Statements
無緩沖的查詢
把 IP 地址存成 UNSIGNED INT
固定長度的表會更快
垂直分割
拆分大的 DELETE 或 INSERT 語句
越小的列會越快
選擇正確的存儲引擎
使用一個對象關系映射器(Object Relational Mapper)
小心“永久鏈接”
4.3 MySQL 王者晉級之路
Part1:倔強青銅篇
MySQL簡介與主流分支版本.MySQI數據庫的安裝、啟動和關閉
MySQL體系結構與存儲引擎
數據庫文件
表
索引
事務
鎖
Part2:白銀篇
備份恢復Part3:黃金篇
主從復制概述復制原理及實戰演練
Part4:尊貴鉑金篇
MHAKeepalived+雙主架構
PXC
ProxySQL
Part5:永恒鉆石篇
MySQL特性MySQL全面優化
Part6:至尊星耀篇
Lepus之MySQL 監控MySQL版本升級
Part7:最強王者篇
MySQL面試寶典4.4 MySQL優化問題(xmind)
總結
實際上,想要成為一名Java架構師并不難,只需要我們掌握應有的技術,活躍自己的思維,調整自己的全局觀,也是能夠輕松勝任的!
如果你也想成為一名JAVA架構師,那么首先掌握這些應該具備的架構師技能是關鍵,因此不止步地去學習是非常重要的!
總結
以上是生活随笔為你收集整理的tomcat 参数最佳实践_一线架构师开发总结:剖析并发编程+JVM性能,深入Tomcat与MySQL...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python crm_Python CR
- 下一篇: 地铁看java书女生_地铁上背单词的女孩