Java基礎
- 多線程:創建與使用、線程同步與鎖、線程池等的掌握
- JVM:你只有深入理解虛擬機的內存回收機制,才能正確使用JVM性能調優
- 掌握NIO,以及對應NIO框架Netty
- Java併發包(java.util.concurrent)下的工具包:AtomicInteger等原子操作類,基於AQS鎖:
- ReentrantLock
- Semaphore
- CountDownLatch
- ReentrantReadWriteLock
- SynchronousQueue
- FutureTask
數據結構與算法
- 常見的數據結構:數組、鏈表、堆與棧、哈希表等
- 算法思想:遞推、窮舉、貪心等
- 經典排序算法:排序、查找
常用的設計模式
- 創建型:工廠方法、抽象工廠、單例模式
- 結構型:裝飾模式、外觀模式、組合模式
- 行爲模式:策略模式、觀察者模式
- 軟件設計原則:接口隔離、單一職責等原則
開發框架
- 分庫分表框架:tddl、cobar、mycat的選型與使用
- 服務化:Dubbo、gRPC、Spring Cloud、Spring Cloud alibaba(阿里基於Spring Cloud開源實現,微服務架構推薦使用)
- 負載均衡:LVS、Nginx、HAProxy
- 緩存:Redis、Memcached
- 搜索與數據分析:Elasticsearch、ELK
- 消息隊列:RabbitMQ、Kafka、RocketMQ
- 容器:docker、k8s
- 分佈式註冊中心:zookeeper、nacos(阿里開源推薦使用)、ETCD、Consul
- 高性能NIO網絡通信框架 Netty
數據存儲
- MySQL數據庫更多是需要掌握事務、鎖、索引、性能優化,以及如何配合NoSQL(mongodb\redis)選型使用。
- 分佈式數據庫的存儲、查詢
- 分佈式事務
- 分佈式全局ID設計
常用構建工具
- Maven/gradle 管理項目的構建、打包、測試、發佈
- git/svn 源碼版本管理
- Nexus 類庫私服管理
- Jenkins 自動化部署工具
- SonarQube 代碼質量檢查工具
分佈式架構
- 分佈式鎖
- 分佈式事務
- 分佈式數據存儲,全局唯一ID實現
- 分佈式架構的數據一性性、可用性、容錯易用性(CAP),在CAP中只能滿足CP或AP原則的理解及實施;
- 海量數據遷移技術;
- 服務熔斷、限流、降級
- 服務發現與治理
- 服務的負載
- 服務的網關
- 服務的安全
Linux常用功能
find、grep、ps、cp、move、tar、head、tail、netstat、lsof、tree、wget、curl、ping、ssh、echo、free、top
性能調優
- JVM性能調優
- Mysql性能調優
- Tomcat性能調優
- Nginx 性能調優
- redis 性能調優
- elasticsearch 性能調優
網絡安全
- XSS
- XSS的防禦
- CSRF
- 注入攻擊
- SQL注入
- XML注入
- CRLF注入
- 文件上傳漏洞
- 加密與解密
- 對稱加密
- 非對稱加密
- 哈希算法
- 加鹽哈希算法
- 加密算法(MD5,SHA1、DES、AES、RSA、DSA)
- 彩虹表
- DDOS攻擊
- DOS攻擊
- DDOS攻擊
memcached爲什麼可以導致DDos攻擊
- 什麼是反射型DDoS
如何通過Hash碰撞進行DOS攻擊 - SSL、TLS,HTTPS
- 脫庫、洗庫、撞庫