零碎知識記錄

1. 怎么實(shí)現(xiàn)高可用的架構(gòu):

  • 通信模型
    NIO
  • 多活模式
  • 減少組件依賴 (核心接口不強(qiáng)依賴非核心接口,需要有相應(yīng)預(yù)案策略,比如降級或者熔斷)
    降低由于引入第三方依賴服務(wù)導(dǎo)致的服務(wù)不可用問題
  • 去中心化
    減少復(fù)雜性?選舉過程會導(dǎo)致STW权旷?
  • 容災(zāi)機(jī)制
    主備、數(shù)據(jù)備份

2. 定時/延時任務(wù)

3. vim命令總結(jié):

  • gg跳到第一行
  • shift+g跳到最后一行
  • /xxx 匹配某一字符串

4. linux命令

  • find 文件名(支持模糊匹配) |xargs grep -ri 指定字符 -l :查找指定字符在文件中是否有出現(xiàn),并且只返回滿足條件的文件的文件名
  • awk '{print 1,2..}'妄田,用于文本分析,默認(rèn)空格驮捍、制表符為分隔符疟呐,0輸出整行,1輸出第一個被分隔的字符串东且,以此類推$2...

5. arthas命令

每隔10s監(jiān)控調(diào)用情況(請求數(shù)等信息):
monitor -c 10 demo.MathGame primeFactors
打印調(diào)用堆棧信息:
trace demo.MathGame primeFactors
觀察方法入?yún)⒑头祷刂担?/strong>
watch demo.MathGame primeFactors {params,returnObj}
觀察方法入?yún)⒑头祷刂挡⑶抑付ǖ谝粋€參數(shù)的值:
watch com.demo.service.DemoService getUser "{params,returnObj}" "params[0].equals('demo')" -x 2
** java.的類不能被arthas代理启具,這個時候可以參考如下進(jìn)行解決:*
https://github.com/alibaba/arthas/issues/47

image.png

7. TCP三次握手和四次揮手?

  • 為什么三次握手:保證延遲的消息會被正確的回收
  • 為什么四次揮手:TCP連接的關(guān)閉是雙方都需要確認(rèn)的珊泳,另外一方面TIME_WAIT的作用:保證連接的正確關(guān)閉鲁冯,等待2MSL,如果在這個時間內(nèi)色查,被動關(guān)閉方?jīng)]有收到ACK報文的話薯演,會重新發(fā)送FIN報文

8. 什么是單元化,單元化的作用

每個單元可以獨(dú)立的負(fù)責(zé)用戶的請求秧了,能夠向其它單元同步數(shù)據(jù)的單元叫做中心

  • 作用:異地多活跨扮,提高穩(wěn)定性,保證RPC的響應(yīng)效率
  • 對該單元進(jìn)行切流+禁寫(保證數(shù)據(jù)的一致性验毡,因?yàn)橹行倪€沒有把數(shù)據(jù)同步過來) - 可以類比redis主從異步復(fù)制的場景
    步驟可以分為:禁寫(禁止更新)衡创、切流、同步晶通、執(zhí)行(恢復(fù)寫)

9. 分布式事務(wù)

XA:兩階段提交之XA璃氢,prepare commit/rollback
TCC:try-precomit-commit
FMT:在XA和TCC之間找到平衡點(diǎn)(性能和耦合性),通過記錄日志狮辽,類似于undolog(但是如果數(shù)據(jù)被改了要如何恢復(fù)-依賴框架的事務(wù)一也,需要鎖定被修改的行,但是如果這行是熱點(diǎn)數(shù)據(jù)的話隘竭,會導(dǎo)致性能的下降)

XA存在的問題:事務(wù)協(xié)調(diào)器的單點(diǎn)故障塘秦、從第一階段就鎖定資源(數(shù)據(jù)庫鏈接,鎖等資源)影響性能
TCC存在的問題:需要自己實(shí)現(xiàn)大量的回滾代碼动看、在第一階段鎖定資源后就釋放資源了

10. mysql索引

  • 大字段如何建立索引尊剔?
    使用前綴索引,可以通過
    select count(distinct 索引字段) / count() from 表名; 查詢索引的區(qū)分度菱皆,返回的值越大說明區(qū)分度越高
    select count(distinct left(索引字段, 取多少個字段)) / count(
    ) from 表名;
    當(dāng)兩者值大致相近時须误,說明區(qū)分度已經(jīng)接近了
    為什么使用前綴索引挨稿?解決索引占用空間的問題
    會有什么問題?不可以使用覆蓋索引了
  • 對于身份證號碼這類字段京痢,前綴區(qū)分度不高奶甘,如何建立索引呢?
    1)可以存儲倒序字段祭椰,建立倒序字段的前綴索引
    2)通過建立hash字段臭家,但是為了精確匹配,在where條件還得加上hash前字段的等值比較

11. mysql優(yōu)化

  • limit如何優(yōu)化
    假設(shè)有如下表:
create table a (int id,  int fr_id,  varchar field, pk id,  key fr_id)

先來看下面一句sql

select * from table_a order by fr_id limit 10000,100

上面這一段sql存在的問題:
雖讓fr_id有索引方淤,查詢時可以用到fr_id索引钉赁,但是由于查詢了所有字段會導(dǎo)致回表,并且隨機(jī)讀嚴(yán)重携茂,掃面更多的頁你踩,最終會使整體sql的執(zhí)行性能不佳
如何優(yōu)化呢?
使用延遲關(guān)聯(lián):第一步先利用覆蓋索引查詢id讳苦,再做關(guān)聯(lián)查詢

select * from table a inner join (select id from table_a order by fr_id limit 10000,100) as b on a.id = b.id

如何進(jìn)一步優(yōu)化带膜?
根據(jù)業(yè)務(wù)場景,如果不需要支持跳頁(即只支持翻頁鸳谜,解決深度分頁問題)膝藕,可以考慮用如下進(jìn)行優(yōu)化
第一次查詢

select * from  fr_id > 0 order by fr_id limt 100

第二次查詢
假設(shè)第一次查詢的結(jié)果的最大fr_id為200,那么第二次查詢的如下

select * from  fr_id > 200 order by fr_id limt 100

使用翻頁要考慮的問題時卿堂,字段一定要是單調(diào)自增的束莫,不然在翻頁的過程中會有漏數(shù)據(jù)
所以整體優(yōu)化思路為:
1懒棉、使用延遲關(guān)聯(lián)草描,解決兩個問題(1.使用覆蓋索引 2.避免隨機(jī)讀,提高性能)
2策严、根據(jù)業(yè)務(wù)場景穗慕,是否需要支持跳頁查詢?

12. jdk工具

jps:查看進(jìn)程
jstack pid:查看進(jìn)程堆棧
jstat -gc pid 3000[ms]:查看進(jìn)程gc情況妻导,每3s一次
jmap -heap pid:查看進(jìn)行的堆和堆占用情況
jmap -histo pid | head -n 10:查看排行前10占用最多的對象

13. 網(wǎng)絡(luò)

三次握手:(不是二次握手的原因:防止已經(jīng)失效的連接請求報文生效)
最后一次握手逛绵,避免如果是只有兩次握手時由于第一次握手由于網(wǎng)絡(luò)延遲的問題,導(dǎo)致后續(xù)服務(wù)端占用了無效連接資源


image.png

四次揮手:
在主動關(guān)閉方收到第三次揮手時發(fā)送ack后會進(jìn)入time_wait:維持2msl倔韭,即報文的最大持續(xù)時間
1)解決第三次揮手報文丟失(不是真正丟失的意思术浪,比方說滯留時間過長),服務(wù)端可以進(jìn)行重發(fā)
2)如果沒有time_wait的話寿酌,此時如果允許創(chuàng)建連接胰苏,可能會出現(xiàn)新創(chuàng)建的連接收到之前丟失的報文,導(dǎo)致后續(xù)程序處理出現(xiàn)異常

14. 線程池

池化管理的思想醇疼,提供的好處:

  • 降低資源消耗
    創(chuàng)建和銷毀帶來的開銷硕并,可以做到線程復(fù)用
  • 提高響應(yīng)速度
    請求到達(dá)時法焰,無需耗費(fèi)創(chuàng)建線程帶來的開銷
  • 線程管理
    統(tǒng)一管理,避免線程泛濫
  • 提供高級功能
    延遲任務(wù)倔毙、定時任務(wù)

15. 關(guān)于異常處理

image.png

16. 關(guān)于日志的正確使用

image.png
image.png

17. 數(shù)據(jù)遷移經(jīng)驗(yàn)

image.png

18. mvn:deploy

該命令用于將maven項目打包埃仪,并上傳自本地和遠(yuǎn)程的maven倉庫
release和snapshot的區(qū)別:
使用snapshot,假如遠(yuǎn)程倉庫發(fā)生變化了陕赃,依賴了snapshot的項目會從遠(yuǎn)程倉庫加載依賴
使用release卵蛉,假如某個版本號的依賴在遠(yuǎn)程倉庫發(fā)生變化了,依賴了該版本號的maven項目會優(yōu)先從本地倉庫加載依賴

19.G1回收器

CMS的缺點(diǎn):內(nèi)存碎片么库、對大堆回收不友好(需要掃描整個堆)毙玻、浮動垃圾
何時使用G1:

  • 堆內(nèi)存大、多核CPU
  • 期望停頓時間可預(yù)測廊散,避免停頓時間無法預(yù)估導(dǎo)致的服務(wù)雪崩
  • 不期望有太多的內(nèi)存碎片

20桑滩、守護(hù)線程

守護(hù)線程的作用是為普通、非守護(hù)線程提供服務(wù)的允睹,比如GC線程运准。假如虛擬機(jī)運(yùn)行過程中,沒有非守護(hù)線程在執(zhí)行了缭受,那么虛擬機(jī)可以退出
使用守護(hù)線程胁澳,必須注意:
1、setDaemon(true)必須在調(diào)用start方法之前米者,否則會拋出異常
2韭畸、不要在守護(hù)線程中做業(yè)務(wù)邏輯操作,因?yàn)闊o法預(yù)測非守護(hù)線程執(zhí)行完畢之后蔓搞,守護(hù)線程是否已經(jīng)執(zhí)行完畢該做的任務(wù)
3胰丁、守護(hù)線程中創(chuàng)建的線程也屬于守護(hù)線程

21、線程和線程池的狀態(tài)

https://blog.csdn.net/qq_24384579/article/details/93199116

22喂分、git rebase 和 git merge

git rebase稱作變基锦庸,會以rebase的分支為基準(zhǔn),將當(dāng)前分支提交的記錄提交到rebase的分支的最后提交記錄之后
git rebase :帶來的影響:會篡改修改記錄蒲祈、無法確認(rèn)當(dāng)前分支是從哪個節(jié)點(diǎn)checkout出來的
git merge:歷史提交記錄都在甘萧,每次merge會生成一條新的提交記錄

23、idea中查看類梆掸、方法扬卷、屬性的調(diào)用鏈/引用鏈

https://blog.csdn.net/qq_37126357/article/details/101055230

24、性能優(yōu)化

如何找到可優(yōu)化點(diǎn):壓測酸钦、arthas
日志怪得、json.toJsonString, json.ParseObject、批量查詢、預(yù)熱(熱點(diǎn)代碼JIT即使編譯)

25汇恤、stream流優(yōu)化

https://blog.csdn.net/weixin_29088655/article/details/114935548
幾個概念:水平執(zhí)行庞钢、垂直執(zhí)行

26、內(nèi)存管理

Linux中Swap與Memory內(nèi)存區(qū)別
https://blog.csdn.net/xili2532/article/details/122875250

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末因谎,一起剝皮案震驚了整個濱河市基括,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌财岔,老刑警劉巖风皿,帶你破解...
    沈念sama閱讀 211,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異匠璧,居然都是意外死亡桐款,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評論 3 385
  • 文/潘曉璐 我一進(jìn)店門夷恍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來魔眨,“玉大人,你說我怎么就攤上這事酿雪《舯” “怎么了?”我有些...
    開封第一講書人閱讀 157,435評論 0 348
  • 文/不壞的土叔 我叫張陵指黎,是天一觀的道長朋凉。 經(jīng)常有香客問我,道長醋安,這世上最難降的妖魔是什么杂彭? 我笑而不...
    開封第一講書人閱讀 56,509評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮吓揪,結(jié)果婚禮上亲怠,老公的妹妹穿的比我還像新娘。我一直安慰自己磺芭,他們只是感情好赁炎,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,611評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著钾腺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪讥裤。 梳的紋絲不亂的頭發(fā)上放棒,一...
    開封第一講書人閱讀 49,837評論 1 290
  • 那天,我揣著相機(jī)與錄音己英,去河邊找鬼间螟。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的厢破。 我是一名探鬼主播荣瑟,決...
    沈念sama閱讀 38,987評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼摩泪!你這毒婦竟也來了笆焰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,730評論 0 267
  • 序言:老撾萬榮一對情侶失蹤见坑,失蹤者是張志新(化名)和其女友劉穎嚷掠,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體荞驴,經(jīng)...
    沈念sama閱讀 44,194評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡不皆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,525評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了熊楼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片霹娄。...
    茶點(diǎn)故事閱讀 38,664評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖鲫骗,靈堂內(nèi)的尸體忽然破棺而出项棠,到底是詐尸還是另有隱情,我是刑警寧澤挎峦,帶...
    沈念sama閱讀 34,334評論 4 330
  • 正文 年R本政府宣布香追,位于F島的核電站,受9級特大地震影響坦胶,放射性物質(zhì)發(fā)生泄漏透典。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,944評論 3 313
  • 文/蒙蒙 一顿苇、第九天 我趴在偏房一處隱蔽的房頂上張望峭咒。 院中可真熱鬧,春花似錦纪岁、人聲如沸凑队。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽漩氨。三九已至,卻和暖如春遗增,著一層夾襖步出監(jiān)牢的瞬間叫惊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評論 1 266
  • 我被黑心中介騙來泰國打工做修, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留霍狰,地道東北人抡草。 一個月前我還...
    沈念sama閱讀 46,389評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像蔗坯,于是被迫代替她去往敵國和親康震。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,554評論 2 349

推薦閱讀更多精彩內(nèi)容