g2f
工程相關(guān) :
一 版本控制 git
1.Git 協(xié)議 : 四種 local(局域網(wǎng)) ssh http git(不推薦 暴露9481)
拉去使用http啞協(xié)議稚失,然后push使用 ssh 來自 StackFlow
注:http Smart 協(xié)議 是基于 CGI 配合GIT git-http-backend 腳本進行使用,配置較復(fù)雜歹袁,現(xiàn)在一般不會這么去做,而是采用gitlab 捺疼、gogs 之類的web管理進行代替
2. merge 和 rebase 區(qū)別 依賴commit (https://blog.csdn.net/liuxiaoheng1992/article/details/79108233)
合并相關(guān)命令一共存在共同祖先以及指針的概念。
git merge : 祖先 子姜,當前分支與要被合并分支的公共祖先commit ,當前分支公共祖先最新commit弓叛,被合并分支公共祖先最新commit。三者合一
git rebase: 祖先诚纸,當前分支與要合并分支的公共祖先commit的修改撰筷,master指針指向被合并分支最新更改commit,然后放到當前分支與要合并分支的公共祖先commit的修改
二 maven,sornar,idea,jenkins,nexus
1.maven 【默認規(guī)則】當中的測試類又做了約定畦徘,約定必須是Test開頭的類名與test 開頭的方法才會執(zhí)行【也可以定制規(guī)則】 sonar做測試覆蓋 jacoco 插件
1. Maven 生命周期 與插件
clean Lifecycle :清理生命周期毕籽,用于于清理項目
default Lifecycle:默認生命周期,用于編譯井辆、打包影钉、測試、部署等
site Lifecycle 站點文檔生成掘剪,用于構(gòu)建站點文檔
2.依賴規(guī)則
依賴傳播平委、依賴優(yōu)先原則、可選依賴夺谁、排除依賴廉赔、依賴范圍
3.聚合繼承
2.idea 快捷鍵
3.jenkins 聊聊 自己學(xué)的自動化腳本 Mac vagrant 上有
二.運維 linux,nginx匾鸥,tomcat蜡塌,
1.linux
1.目錄操作 crud
2.文件操作 crud
tail -100 ./logs/catalina.out | grep 'copy' —color 與 tail -f
top, free, df -h, ps -ef , env,netstat -tuln,route -n
vim技巧
linux 內(nèi)核 TODO 用戶空間 內(nèi)核空間
2.nginx 架構(gòu)圖
1.架構(gòu) 兩個進程 ,主進程 加載配置勿负,啟動工作進程馏艾,聯(lián)系netty。非停升級奴愉。
子進程(可配置多個work)琅摩,核心模塊 網(wǎng)絡(luò)讀寫,存儲讀寫以及 傳輸锭硼。 run-loop 定義 mail房资,http,config模塊檀头。
高并發(fā)轰异,異步非阻塞。 底層c++
2.使用
1.動靜分離暑始,黑白名單搭独,防盜鏈,日志配置廊镜,下載限速
2.反向代理
Upstream a {} proxy_pass {http://a}
參數(shù) weigtht 牙肝,權(quán)重 負載均衡算法。ll+weight. ip_hash session 一致性. (Ur_hash 最小鏈接,最小響應(yīng))
參數(shù) max_fails 最大失敗次數(shù) 惊奇,踢出
fail_timeout 踢出后重新探測時間
backup 備用服務(wù)
max_conns 允許最大連接數(shù)
slow_start 當節(jié)點恢復(fù)互躬,不立即加入,而是等待 slow_start 后加入服務(wù)對列。
3.高速緩存 proxy_cache_path 模塊配置 以及 ng_cache_purge引入清除
3.tomcat 架構(gòu)圖 (責任鏈)
1.IO 模型颂郎。4種
2.NIO 和 IO區(qū)別吼渡。源碼 JIOEndPoint 與 NioEndPoint 多個poller線程 多路復(fù)用 多個線程回調(diào)通信
三.ssm
1.mybatis 架構(gòu)圖 組件 按著jdbc方式 源碼 太熟悉了
Spring 和 springmvc。
2.Spring
IOC
1.為什么使用 spring ioc
2.創(chuàng)建bean的幾種方式
基于Class構(gòu)建
構(gòu)造方法構(gòu)建
靜態(tài)工廠方法創(chuàng)建
FactoryBean創(chuàng)建
3.依賴注入方式
set方法注入
構(gòu)造方法注入
自動注入(byName乓序、byType)
方法注入(lookup-method)
4.Bean創(chuàng)建流程
AOP寺酪。織入業(yè)務(wù)邏輯替劈。 讀寫數(shù)據(jù)源寄雀,日志,接口限流等陨献。
切面盒犹,切點, 連接點眨业,通知急膀。 默認jdk代理,可指定cglib龄捡。
jdk和cglib的不同卓嫂,一個接口一個實現(xiàn)。 故 this 在 jdk中 不能使用聘殖,因為this是 接口和proxy晨雳, 在cglib中能使用,因為繼承
聲明式事務(wù)
acid 奸腺,因為高并發(fā)完全達到acid 只能是串行化餐禁,但是帶來很多負面影響。 故出現(xiàn) 隔離級別
讀未提交【臟讀洋机,不可重復(fù)讀坠宴,幻讀】,讀已提交【不可重復(fù)讀绷旗,幻讀】,可重復(fù)讀【幻讀】副砍,串行化衔肢。mysql默認 可重復(fù)讀,oracle 默認是讀已提交
傳播行為 required豁翎。required_new 角骤,not_support ,同一個類 默認 代理只走一個(aop)可通過暴露和AopContext 達到目的
3.springMVC流程 架構(gòu)圖
(5天)5. juc,jdk集合,
(10天)6.算法 4 設(shè)計模式 2 jvm mysql相關(guān) 2
JUC
為啥會用juc
1 多線程---單線程
2 共享變量---線程私有
3 原子操作---原子類i++ i=i+1
多線程的目的邦尊,就是最大限度地利用 cpu 資源背桐,比如說1個線程一個io操作,另一個線程此時可以利用cpu蝉揍。
2.線程狀態(tài)圖 架構(gòu)圖
Thread链峭,Runnable,Callable
3.線程池 工作原理 及架構(gòu)圖又沾, 吹設(shè)計模式
fixed cache single
- 主存 跟不上 cpu 頻率弊仪。出現(xiàn)緩存,緩存不同步 MESI解決
5.java 內(nèi)存模型 出現(xiàn)工作內(nèi)存杖刷。
同步 就是一個原子操作
線程八鎖
原子性
synchronized 幾種使用及底層jvm監(jiān)視器励饵,
lock 重入鎖 condition 通信 AQS同步器 隊列加雙向鏈表,UNSAFE JNI
countdownlatch semaphore
cas ABA
可見性 volaite順序性 滑燃。happen-before 指令重排役听。單例【】
定時線程池 默認與 scheduleAtFixedRate。scheduleWithFixedDelay 的相互區(qū)別 表窘,一個等待停止 一個不等待
jdk相關(guān)
集合架構(gòu)圖禾嫉。比較器兩種
1.hashMap 1.7 1.8
數(shù)據(jù)結(jié)構(gòu) 默認大小, 因子 蚊丐,線程是否安全熙参,null值 ,擴容2倍 麦备, 1.8 深度為8 紅黑樹
2.hashTable 與 concurrentHashMap( IOC容器)
3.ArrayList.copyOnWriteArraylist 默認10 擴容 手寫
jvm相關(guān)
1.JVM 組成孽椰。 運行時架構(gòu)圖
2.類加載過程 【加載,連接與校驗凛篙,準備 初始化黍匾。】 及 類加載器 全盤委托機制【相關(guān)類默認】雙親委派 【沙箱安全呛梆,重復(fù)加載】
3.棧 結(jié)構(gòu)
4.堆 結(jié)構(gòu)
5.調(diào)優(yōu)jvm jinfo锐涯。jstat。jmap填物。jstack纹腌。jvisualvm
6.堆 回收算法 分段GC策略
首先分配到伊甸園區(qū)
大對象直接分配到老年代 分配擔保機制
多次yangGC 幸存 分配到老年代 15歲
7.如何判斷對象被回收,1.引用計數(shù)滞磺,2.可達性算法GCRoot 與 finalize 兩次標記
8.幾種收集器 及特點
9.調(diào)優(yōu)步驟 及 常用參數(shù)
mysql 相關(guān)
1.查詢 由機器磁盤原理升薯, 巡道 (非常慢)和 旋轉(zhuǎn)。故出現(xiàn)索引
2.索引 myisam 和 innodb 的結(jié)構(gòu) 主鍵索引 非主鍵索引 對應(yīng)區(qū)別 聯(lián)合索引
3.索引優(yōu)化
算法相關(guān) TODO
(30天)4.分布式相關(guān) netty击困,dubbo涎劈,zk, 10
redis,rocketmq蛛枚,kafka 谅海,8 elk,ss蹦浦,mongodb 10 協(xié)議網(wǎng)關(guān)等 2
1.Netty
netty 創(chuàng)建和啟動流程扭吁,架構(gòu)圖
tcp粘包問題處理,
序列化
空輪訓(xùn)
線程中的 雙向鏈表結(jié)構(gòu)
內(nèi)存分配 的 二叉樹
2.zk
分布式 cap白筹。base智末。基本可以 軟狀態(tài) 最終一致
zab 聯(lián)系 一致性協(xié)議 2pc 3pc paxos
事件通知
選舉算法.
角色
節(jié)點類型
集群模式
水平擴展
3.dubbo
分布式演變
dubbo架構(gòu)圖
dubbo協(xié)議
dubbo組件
dubbo注冊中心
在生產(chǎn)端可配置消費端的參數(shù)
1)timeout:方法調(diào)用超時
2)retries:失敗重試次數(shù)徒河,默認重試 2 次
3)loadbalance:負載均衡算法系馆,默認隨機
4)actives 消費者端,最大并發(fā)調(diào)用限制
Dubbo默認序列化 及其他序列化
dubbo默認通信 及 其他通信 Mina
dubbo負載均衡算法
多種實現(xiàn)分組
同步阻塞調(diào)用顽照,及異步調(diào)用流程
提供者失效踢出
管理控制臺作用
4.redis
Redis 快的原因
redis 恢復(fù)
redis 緩存淘汰策略
redis 實用場景由蘑。redis分布式鎖
redis集群原理。槽位代兵,重定向跳轉(zhuǎn)尼酿,網(wǎng)絡(luò)抖動
5.rocketmq
架構(gòu)圖
生產(chǎn)端 消息類型 同步 異步
消費端 如何消費(push pull )順序消費,重復(fù)消費植影,
服務(wù)端 NameServ 和 Broker
6.kafka
選舉
模式:單播 多播
存儲 : 元信息 zk裳擎,消息信息 文件
發(fā)送方式 ,分區(qū)思币,hash鹿响,輪訓(xùn)
選舉策略
生產(chǎn)流程 同步異步生產(chǎn),
消費 是否自動提交消費
7.elk
Nignx 白名單 Htppasswd
8.ss
9.mongodb
(待定)六.微服務(wù) springboot spirngcloud谷饿,docker 1惶我。
九.(待定)項目