闈㈣瘯瀹橈細Java鏍稿績鐭ヨ瘑銆丣UC銆丣VM銆丼pring鍏ㄥ妗跺叏闂簡涓�閬嶏紝璋㈤鏈洪《浣忎簡鍚楋紵
鍦烘櫙锛氭煇浜掕仈缃戝ぇ鍘備細璁锛岄槼鍏夋枩鐓э紝姘旀皼鍑濋噸銆傞潰璇曞畼闈㈡棤琛ㄦ儏鍦扮炕鐫�绠�鍘嗭紝瀵归潰鍧愮潃涓�浣嶇┛鐫�鏍煎瓙琛�佺溂绁為蹇界殑绋嬪簭鍛樷�斺�旇阿椋炴満銆俓n
绗竴杞細Java 鍩虹绋充笉绋筹紵
闈㈣瘯瀹�锛氳阿椋炴満鏄惂锛熷厛鏉ョ偣鍩虹鐨勭儹鐑韩銆俙HashMap` 鐨勫簳灞傜粨鏋勬槸浠�涔堬紵涓轰粈涔� JDK8 瑕佸紩鍏ョ孩榛戞爲锛焅n 璋㈤鏈�锛氬憙鈥︹�ashMap 鏄暟缁勫姞閾捐〃锛屽摝涓嶅锛屾槸鏁扮粍 + 閾捐〃 + 绾㈤粦鏍戯紒JDK8 寮曞叆绾㈤粦鏍戞槸鍥犱负閾捐〃澶暱浜嗕細鍙樻參锛屾墍浠ヨ浆鎴愮孩榛戞爲鏇村揩锛佸氨鍍忊�︹�︿粠涔¢棿灏忚矾鍗囩骇鎴愰珮閫熷叕璺紒
闈㈣瘯瀹�锛堝井寰偣澶达級锛氳繕琛屻�傞偅 ConcurrentHashMap 鍦� JDK7 鍜� JDK8 鏈変粈涔堝尯鍒紵
璋㈤鏈�锛欽DK7 鏄垎娈甸攣锛孲egment鈥︹�︽瘡涓� Segment 鐩稿綋浜庝竴涓皬 HashMap锛岄攣绮掑害姣旀暣涓� table 灏忋�侸DK8 鏀规垚浜� CAS + synchronized锛岀洿鎺ュ node 鍔犻攣锛屾洿杞婚噺锛乗n 闈㈣瘯瀹�锛氫笉閿欍�傞偅 ArrayList 鍜� LinkedList 鐨勫尯鍒紵浠�涔堝満鏅敤鍝釜锛焅n 璋㈤鏈�锛欰rrayList 鏄暟缁勶紝鏌ヨ蹇紝澧炲垹鎱紱LinkedList 鏄弻鍚戦摼琛紝澧炲垹蹇紝鏌ヨ鎱€�傚鏋滈绻佹煡绗�100涓厓绱狅紝鐢� ArrayList锛涘鏋滈绻佸湪涓棿鎻掑叆鍒犻櫎锛屾瘮濡傝亰澶╄褰曗�︹�︾敤 LinkedList锛乗n 闈㈣瘯瀹�锛氬媺寮哄強鏍笺�俓n
绗簩杞細骞跺彂缂栫▼锛屼綘鐪熺殑鎳傚悧锛焅n
闈㈣瘯瀹�锛氳璇� volatile 鍏抽敭瀛楃殑浣滅敤锛熷畠鑳戒繚璇佸師瀛愭�у悧锛焅n 璋㈤鏈�锛歷olatile 鑳戒繚璇佸彲瑙佹�у拰鏈夊簭鎬э紒姣斿涓�涓彉閲忚淇敼锛屽叾浠栫嚎绋嬮┈涓婅兘鐪嬪埌銆備絾瀹冧笉鑳戒繚璇佸師瀛愭�э紝鍍� i++ 杩欑鎿嶄綔锛屽氨绠楀姞浜� volatile 涔熶細鍑洪敊锛乗n 闈㈣瘯瀹�锛氶偅鎬庝箞淇濊瘉鍘熷瓙鎬э紵
璋㈤鏈�锛氫笂閿侊紒synchronized锛屾垨鑰呯敤 AtomicInteger锛屽唴閮ㄦ槸 CAS 瀹炵幇鐨勶紒
闈㈣瘯瀹�锛氱嚎绋嬫睜鐨勬牳蹇冨弬鏁版湁鍝簺锛熸嫆缁濈瓥鐣ユ湁鍑犵锛焅n 璋㈤鏈�锛歝orePoolSize銆乵aximumPoolSize銆亀orkQueue銆乲eepAliveTime銆乼hreadFactory銆乭andler銆傛嫆缁濈瓥鐣モ�︹�︽湁鍥涚锛丄bortPolicy銆丆allerRunsPolicy銆丏iscardPolicy銆丏iscardOldestPolicy锛乗n 闈㈣瘯瀹�锛氬鏋滈槦鍒楁弧浜嗭紝涓旂嚎绋嬫暟杈惧埌鏈�澶э紝鏂颁换鍔℃潵浜嗕細鎬庢牱锛焅n 璋㈤鏈�锛氱湅鎷掔粷绛栫暐锛丄bortPolicy 灏辨槸鎶涘紓甯革紝CallerRunsPolicy 鏄鎻愪氦浠诲姟鐨勭嚎绋嬭嚜宸辨墽琛屸�︹�n 闈㈣瘯瀹�锛氶偅 cachedThreadPool 涓轰粈涔堜笉閫傚悎鍋氬ぇ閲忛暱鏃堕棿浠诲姟锛焅n 璋㈤鏈�锛氬洜涓衡�︹�﹀畠鏄棤闄愮嚎绋嬫睜锛焟aximumPoolSize 鏄� Integer.MAX_VALUE锛屽鏄� OOM锛佽�屼笖绾跨▼绌洪棽60绉掑氨鍥炴敹锛屼笉绋冲畾锛乗n 闈㈣瘯瀹�锛氳繕鐭ラ亾鐐逛笢瑗裤�俓n
绗笁杞細Spring + 涓棿浠讹紝鐏甸瓊鎷烽棶锛乗n
闈㈣瘯瀹�锛歋pring Bean 鐨勪綔鐢ㄥ煙鏈夊摢浜涳紵鍗曚緥 Bean 鏄嚎绋嬪畨鍏ㄧ殑鍚楋紵
璋㈤鏈�锛歴ingleton銆乸rototype銆乺equest銆乻ession銆乤pplication鈥︹�﹀崟渚� Bean 涓嶆槸绾跨▼瀹夊叏鐨勶紒濡傛灉瀹冩湁鎴愬憳鍙橀噺锛屽涓嚎绋嬪悓鏃舵敼灏变細鍑洪棶棰橈紒
闈㈣瘯瀹�锛歋pring Boot 鑷姩瑁呴厤鐨勫師鐞嗭紵
璋㈤鏈�锛欯EnableAutoConfiguration 娉ㄨВ锛屼細鍔犺浇 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 閲岄潰鐨勯厤缃被锛岀劧鍚庢牴鎹潯浠舵敞瑙� @ConditionalOnClass銆丂ConditionalOnMissingBean 鍐冲畾鏄惁鍒涘缓 Bean锛乗n 闈㈣瘯瀹�锛欴ubbo 鐨勮礋杞藉潎琛$瓥鐣ユ湁鍝簺锛焅n 璋㈤鏈�锛氶殢鏈恒�佽疆璇€�佹渶灏戞椿璺冭皟鐢ㄣ�佷竴鑷存�у搱甯屸�︹�﹂粯璁ゆ槸闅忔満锛乗n 闈㈣瘯瀹�锛歊abbitMQ 濡備綍闃叉娑堟伅涓㈠け锛焅n 璋㈤鏈�锛氱敓浜ц�呭紑鍚� confirm 妯″紡锛孧Q 寮�鍚寔涔呭寲锛屾秷璐硅�呮墜鍔� ack锛佷笁姝ヨ蛋锛乗n 闈㈣瘯瀹�锛歊edis 鐨勭紦瀛樼┛閫忔�庝箞瑙e喅锛焅n 璋㈤鏈�锛氬竷闅嗚繃婊ゅ櫒锛佸厛鍒ゆ柇 key 瀛樹笉瀛樺湪锛屼笉瀛樺湪灏变笉鏌ユ暟鎹簱锛佽繕鏈夆�︹�︾紦瀛樼┖鍊硷紝浣嗗緱璁剧煭杩囨湡鏃堕棿锛乗n 闈㈣瘯瀹�锛歁ySQL 鐨勭储寮曞け鏁堝満鏅紵
璋㈤鏈�锛氬乏妯$硦 like '%abc'銆佺被鍨嬭浆鎹€�佸嚱鏁版搷浣滃瓧娈点�乷r 鏉′欢娌¢兘寤虹储寮曘�佽仈鍚堢储寮曟病璧版渶宸﹀墠缂�鈥︹�n 闈㈣瘯瀹�锛欴ocker 鍜� Linux 瀹瑰櫒鐨勫叧绯伙紵
璋㈤鏈�锛欴ocker 鏄鍣ㄥ紩鎿庯紝鍩轰簬 Linux 鐨� namespace 鍜� cgroup 瀹炵幇闅旂鍜岃祫婧愰檺鍒讹紒
闈㈣瘯瀹�锛氭渶鍚庝竴涓棶棰橈細DDD 鐨勮仛鍚堟牴鏄粈涔堬紵
璋㈤鏈�锛氬憙鈥︹�﹁仛鍚堟牴灏辨槸涓�涓�︹�﹁兘绠$悊鍏朵粬瀹炰綋鐨勫璞★紵姣斿璁㈠崟鏄仛鍚堟牴锛岃鍗曢」褰掑畠绠★紝澶栭儴鍙兘閫氳繃璁㈠崟鎿嶄綔璁㈠崟椤癸紒
闈㈣瘯瀹�锛堝悎涓婄瑪璁版湰锛夛細鍡�︹�︿粖澶╁氨鍒拌繖閲屻�備綘鐨勫熀纭�鐭ヨ瘑杩樼畻鎵庡疄锛屼絾娣卞害涓嶅锛岃璁℃�濇兂妯$硦銆傛垜浠細灏藉揩閫氱煡浣犵粨鏋溿�俓n 璋㈤鏈�锛堢珯璧锋潵闉犺含锛夛細璋㈣阿闈㈣瘯瀹橈紒鎴戝洖鍘荤瓑閫氱煡锛乗n
馃 鍙傝�冪瓟妗堣瑙o紙灏忕櫧涔熻兘瀛︿細锛塡n
1. HashMap 搴曞眰缁撴瀯
- JDK8 涔嬪墠锛氭暟缁� + 閾捐〃
- JDK8 涔嬪悗锛氭暟缁� + 閾捐〃 + 绾㈤粦鏍慭n- 褰撻摼琛ㄩ暱搴� 鈮� 8 涓旀暟缁勯暱搴� 鈮� 64 鏃讹紝閾捐〃杞孩榛戞爲锛屾彁楂樻煡鎵炬晥鐜囷紙O(n) 鈫� O(log n)锛塡n
2. ConcurrentHashMap 宸紓
- JDK7锛歋egment 鍒嗘閿侊紝姣忎釜 Segment 鐙珛鍔犻攣
- JDK8锛欳AS + synchronized锛岄攣绮掑害鏇寸粏锛屾�ц兘鏇村ソ
3. volatile 涓庡師瀛愭�n- volatile锛氫繚璇佸彲瑙佹�э紙MESI 鍗忚锛夈�佺姝㈡寚浠ら噸鎺掞紙鍐呭瓨灞忛殰锛塡n- 涓嶄繚璇佸師瀛愭�э細i++ 鍖呭惈璇汇�佹敼銆佸啓涓夋锛岄渶 synchronized 鎴� Atomic 绫籠n
4. 绾跨▼姹犲弬鏁癨n- corePoolSize锛氭牳蹇冪嚎绋嬫暟
- maxPoolSize锛氭渶澶х嚎绋嬫暟
- workQueue锛氶樆濉為槦鍒楋紙ArrayBlockingQueue銆丩inkedBlockingQueue 绛夛級
- handler锛氭嫆缁濈瓥鐣n
5. Spring Bean 浣滅敤鍩焅n- singleton锛氬叏灞�鍞竴锛堥粯璁わ級
- prototype锛氭瘡娆¤幏鍙栭兘鏂板缓
- request/session锛歐eb 绾у埆浣滅敤鍩焅n
6. Spring Boot 鑷姩瑁呴厤
- SPI 鏈哄埗鍔犺浇 AutoConfiguration 绫籠n- 鏉′欢瑁呴厤鍐冲畾鏄惁娉ㄥ叆 Bean
- starter 绠�鍖栦緷璧栧紩鍏n
7. RabbitMQ 娑堟伅鍙潬鎬n- 鐢熶骇鑰� confirm 妯″紡
- Broker 鎸佷箙鍖栵紙exchange銆乹ueue銆乵essage锛塡n- 娑堣垂鑰� manual ack
8. Redis 缂撳瓨绌块�廫n- 甯冮殕杩囨护鍣細蹇�熷垽鏂� key 鏄惁瀛樺湪
- 缂撳瓨绌哄�硷細闃叉閲嶅鏌ヨ鏁版嵁搴揬n
9. MySQL 绱㈠紩澶辨晥
- 鏈�宸﹀墠缂�鍘熷垯鐮村潖
- 鍑芥暟鎿嶄綔瀛楁锛歐HERE YEAR(create_time) = 2024
- 闅愬紡绫诲瀷杞崲锛氬瓧绗︿覆瀛楁浼犳暟瀛梊n- OR 鏉′欢閮ㄥ垎鏃犵储寮昞n
10. DDD 鑱氬悎鏍筡n- 鑱氬悎锛氫竴缁勭浉鍏冲璞$殑闆嗗悎
- 鑱氬悎鏍癸細瀵瑰鍞竴璁块棶鐐癸紝璐熻矗缁存姢鑱氬悎鍐呯殑涓�鑷存�n- 涓句緥锛氳鍗曪紙Order锛夋槸鑱氬悎鏍癸紝鍖呭惈璁㈠崟椤癸紙OrderItem锛夛紝澶栭儴鍙兘閫氳繃 Order 淇敼 OrderItem
鎬荤粨锛氶潰璇曚笉鏄儗鍏偂锛岃�屾槸鐞嗚В鏈川銆傝阿椋炴満铏界劧鑳¤█涔辫锛屼絾绛斿嚭浜嗗叧閿偣銆備綘锛屽噯澶囧ソ浜嗗悧锛�

1338

被折叠的 条评论
为什么被折叠?



