闈㈣瘯鐜板満锛氳阿椋炴満澶ф垬浜掕仈缃戝ぇ鍘傞潰璇曞畼
绗竴杞細Java鍩虹绡�
闈㈣瘯瀹�锛氳浠嬬粛涓�涓� HashMap 鐨勫簳灞傚疄鐜板師鐞嗭紵
璋㈤鏈�锛氬憙鈥︹�ashMap 鍟婏紝灏辨槸 Map 鐨勪竴绉嶏紝key-value 瀛樻暟鎹紝鎴戝钩鏃剁敤瀹冨瓨鐢ㄦ埛ID鍜屽悕瀛椼�俓n闈㈣瘯瀹�锛氶偅浣犵煡閬撳畠鏄�庝箞瑙e喅鍝堝笇鍐茬獊鐨勫悧锛焅n璋㈤鏈�锛氬啿绐侊紵澶氬垱寤哄嚑涓狹ap涓嶅氨琛屼簡锛熶竴涓彨userMap1锛屼竴涓彨userMap2鈥︹�n闈㈣瘯瀹�锛氣�︹�︽垜浠户缁�侫rrayList 鍜� LinkedList 鏈変粈涔堝尯鍒紵
璋㈤鏈�锛欰rrayList 鏄暟缁勶紝LinkedList 鏄摼琛紒鎴戠煡閬撹繖涓紒鑰屼笖 LinkedList 鐗瑰埆閫傚悎鍒犻櫎锛屽洜涓轰笉鐢ㄧЩ鍔ㄥ厓绱狅紒
闈㈣瘯瀹�锛堝井寰偣澶达級锛氫笉閿欙紝閭f彃鍏ュ憿锛焅n璋㈤鏈�锛氭彃鍏ワ紵ArrayList 鎻掍腑闂磋鎸悗闈㈡墍鏈夊厓绱狅紝鎵�浠ユ參锛汱inkedList 鍙鏀规寚閽堬紝蹇紒鎴戣儗杩囧叓鑲℃枃鐨勶紒
闈㈣瘯瀹�锛氳繕琛屻�傞偅 ArrayList 鎵╁鏈哄埗浜嗚В鍚楋紵
璋㈤鏈�锛氭墿瀹癸紵鍝︼紒榛樿10涓紝婊′簡灏卞彉鎴�15涓紝1.5鍊嶏紒
闈㈣瘯瀹�锛氬棷锛岀畻浣犵瓟瀵逛簡銆俓n
绗簩杞細骞跺彂缂栫▼涓嶫VM
闈㈣瘯瀹�锛氳璇� synchronized 鍜� ReentrantLock 鐨勫尯鍒紵
璋㈤鏈�锛歴ynchronized 鏄叧閿瓧锛孯eentrantLock 鏄被锛佽�屼笖 ReentrantLock 鑳� tryLock锛屼笉浼氫竴鐩寸瓑锛乗n闈㈣瘯瀹�锛氬緢濂姐�傞偅绾跨▼姹犵殑鏍稿績鍙傛暟鏈夊摢浜涳紵
璋㈤鏈�锛歝orePoolSize銆乵aximumPoolSize銆亀orkQueue銆乼hreadFactory銆乭andler鈥︹�︽垜鍏ㄤ細鑳岋紒
闈㈣瘯瀹�锛氬鏋滈槦鍒楁弧浜嗕笖绾跨▼鏁拌揪鍒� maximum锛屾柊浠诲姟浼氭�庢牱锛焅n璋㈤鏈�锛氶偅灏扁�︹�﹀紑涓柊绾跨▼锛熶笉琛屽氨绛夌瓑锛焅n闈㈣瘯瀹�锛氶敊浜嗭紝浼氳Е鍙戞嫆缁濈瓥鐣ャ�傛瘮濡� AbortPolicy 鐩存帴鎶涘紓甯搞�俓n璋㈤鏈�锛氬摝鍝︼紝閭f垜椤圭洰閲屾病閰嶈繃锛岄兘鏄� @Async 榛樿鐨勩�俓n闈㈣瘯瀹�锛氶偅浣犱簡瑙� JVM 鍚楋紵璇磋鍐呭瓨缁撴瀯銆俓n璋㈤鏈�锛氭湁鍫嗐�佹爤銆佹柟娉曞尯锛佸爢鏀惧璞★紝鏍堟斁鏂规硶璋冪敤锛屾柟娉曞尯鏀剧被淇℃伅锛乗n闈㈣瘯瀹�锛欸C 鍛紵CMS 鍜� G1 鏈変粈涔堝尯鍒紵
璋㈤鏈�锛欳MS 鏄�佸勾浠o紝骞跺彂鏍囪娓呴櫎锛屼絾浼氱鐗囧寲锛汫1 鍛⑩�︹�︽槸鈥淕鈥濆紑澶寸殑锛岃繕鑳藉垎 Region鈥︹�﹀埆鐨勬垜蹇樹簡銆俓n闈㈣瘯瀹�锛堟壎棰濓級锛氣�︹�︿笅涓�涓棶棰樸�俓n
绗笁杞細涓绘祦妗嗘灦涓庝腑闂翠欢
闈㈣瘯瀹�锛歋pring 涓� Bean 鐨勪綔鐢ㄥ煙鏈夊摢浜涳紵
璋㈤鏈�锛歴ingleton 鍜� prototype锛佸崟渚嬪拰鍘熷瀷锛佹垜杩樼煡閬� request 鍜� session锛屼絾娌$敤杩囥�俓n闈㈣瘯瀹�锛欱ean 寰幆渚濊禆鎬庝箞瑙e喅鐨勶紵
璋㈤鏈�锛歋pring 鎻愬墠鏆撮湶涓�涓�滃崐鎴愬搧鈥滲ean锛岀敤涓夌骇缂撳瓨锛佷竴绾т簩绾т笁绾э紝鍍忎粨搴撲竴鏍凤紒
闈㈣瘯瀹�锛堢暐鎯婅锛夛細鍡紝涓嶉敊銆傞偅 MyBatis #{} 鍜� ${} 鏈変粈涔堝尯鍒紵
璋㈤鏈�锛�#{} 鏄缂栬瘧锛岄槻SQL娉ㄥ叆锛�${} 鏄瓧绗︿覆鎷兼帴锛佹垜鍦ㄥ啓 ORDER BY 鐨勬椂鍊欑敤杩� ${}锛乗n闈㈣瘯瀹�锛氬嵄闄╂搷浣滃晩銆侱ubbo 鐨勮礋杞藉潎琛$瓥鐣ユ湁鍝簺锛焅n璋㈤鏈�锛氶殢鏈恒�佽疆璇€�佹渶灏戞椿璺冩暟鈥︹�︽垜璁板緱鏈変釜鍙�滀竴鑷存�у搱甯屸�濈殑锛岀敤鏉ュ仛缂撳瓨瀹氫綅锛乗n闈㈣瘯瀹�锛氳繕琛屻�俁edis 鎸佷箙鍖栨満鍒讹紵
璋㈤鏈�锛歊DB 鏄媿蹇収锛孉OF 鏄鏃ュ織锛丄OF 鏇村畨鍏紝浣嗘枃浠跺ぇ锛乗n闈㈣瘯瀹�锛歁ySQL 鐨勭储寮曞け鏁堝満鏅紵
璋㈤鏈�锛歭ike '%寮犱笁' 浼氬け鏁堬紝杩樻湁瀵瑰瓧娈靛仛鍑芥暟鎿嶄綔锛屾瘮濡� where date(create_time) = '2024-01-01'锛乗n闈㈣瘯瀹�锛氭渶鍚庝竴涓棶棰橈細DDD 鐨勬牳蹇冩蹇垫槸浠�涔堬紵
璋㈤鏈�锛欴DD锛熸槸鈥樻晫閮藉�掆�欏悧锛熷摝鍝︼紝棰嗗煙椹卞姩璁捐锛佹湁瀹炰綋銆佸�煎璞°�佽仛鍚堟牴鈥︹�︾劧鍚庘�︹�︾劧鍚庢垜椤圭洰閲屾病鐢ㄨ繃锛岄兘鏄疌RUD銆俓n闈㈣瘯瀹�锛堝徆姘旓級锛氬ソ鐨勶紝璋㈠厛鐢燂紝浠婂ぉ鍏堝埌杩欓噷锛屽洖鍘荤瓑閫氱煡鍚с�俓n璋㈤鏈�锛氬ソ鍢烇紒鎴戝洖鍘诲氨鎶婂叓鑲℃枃鍐嶈儗涓�閬嶏紒
绛旀璇﹁В锛氭妧鏈偣娣卞害瑙f瀽
1. HashMap 搴曞眰鍘熺悊
HashMap 鍦� JDK 8 涓噰鐢ㄢ�滄暟缁� + 閾捐〃 + 绾㈤粦鏍戔�濈粨鏋勩�傞�氳繃 key 鐨� hashCode 璁$畻 hash 鍊硷紝纭畾鏁扮粍涓嬫爣銆傚綋閾捐〃闀垮害瓒呰繃 8 涓旀暟缁勯暱搴﹀ぇ浜� 64 鏃讹紝閾捐〃杞负绾㈤粦鏍戯紝鎻愬崌鏌ユ壘鏁堢巼銆傚搱甯屽啿绐侀�氳繃閾惧湴鍧�娉曡В鍐筹紝鍗冲悓涓�涓《浣嶆寕澶氫釜鑺傜偣銆俓n
2. ArrayList 鎵╁鏈哄埗
榛樿鍒濆瀹归噺涓�10锛屾瘡娆℃墿瀹逛负鍘熷閲忕殑1.5鍊嶏紙oldCapacity + (oldCapacity >> 1)锛夈�傛墿瀹归�氳繃 Arrays.copyOf 瀹炵幇锛屾秹鍙婃暟缁勬嫹璐濓紝杈冭�楁�ц兘锛屽缓璁垵濮嬪寲鏃舵寚瀹氬悎鐞嗗閲忋�俓n
3. synchronized vs ReentrantLock
- synchronized 鏄� JVM 灞傞潰鐨勪簰鏂ラ攣锛岃嚜鍔ㄩ噴鏀撅紝涓嶅彲涓柇銆俓n- ReentrantLock 鏄� API 灞傞潰鐨勫彲閲嶅叆閿侊紝闇�鎵嬪姩 lock/unlock锛屾敮鎸佸叕骞抽攣銆侀潪鍏钩閿併�佸彲涓柇銆佽秴鏃惰幏鍙栫瓑楂樼骇鐗规�с�俓n
4. 绾跨▼姹犱竷澶у弬鏁癨n- corePoolSize锛氭牳蹇冪嚎绋嬫暟
- maximumPoolSize锛氭渶澶х嚎绋嬫暟
- keepAliveTime锛氶潪鏍稿績绾跨▼绌洪棽瀛樻椿鏃堕棿
- unit锛氭椂闂村崟浣峔n- workQueue锛氶樆濉為槦鍒梊n- threadFactory锛氱嚎绋嬪伐鍘俓n- handler锛氭嫆缁濈瓥鐣ワ紙AbortPolicy銆丆allerRunsPolicy 绛夛級
5. JVM 鍐呭瓨缁撴瀯
- 鍫嗭紙Heap锛夛細瀛樻斁瀵硅薄瀹炰緥锛孏C 涓昏鍖哄煙
- 铏氭嫙鏈烘爤锛氬瓨鏀炬柟娉曡皟鐢ㄦ爤甯э紝灞�閮ㄥ彉閲忚〃銆佹搷浣滄暟鏍堢瓑
- 鏂规硶鍖猴紙鍏冪┖闂达級锛氬瓨鏀剧被淇℃伅銆佸父閲忋�侀潤鎬佸彉閲廫n- 绋嬪簭璁℃暟鍣細璁板綍褰撳墠绾跨▼鎵ц瀛楄妭鐮佺殑浣嶇疆
- 鏈湴鏂规硶鏍堬細涓� Native 鏂规硶鏈嶅姟
6. G1 涓� CMS 鍖哄埆
- CMS锛氫互鏈�鐭仠椤挎椂闂翠负鐩爣锛岀敤浜庤�佸勾浠o紝閲囩敤鈥滃垵濮嬫爣璁�-骞跺彂鏍囪-閲嶆柊鏍囪-骞跺彂娓呴櫎鈥濓紝瀛樺湪纰庣墖闂銆俓n- G1锛氶潰鍚戝ぇ鍫嗭紝灏嗗爢鍒掑垎涓哄涓� Region锛屾敮鎸佸苟琛屼笌骞跺彂锛屽彲棰勬祴鍋滈】鏃堕棿锛岄�氳繃 Remembered Set 瑙e喅璺� Region 寮曠敤锛岄伩鍏嶅叏灞�鎵弿銆俓n
7. Spring Bean 寰幆渚濊禆
Spring 閫氳繃涓夌骇缂撳瓨瑙e喅 singleton Bean 鐨勫惊鐜緷璧栵細
- 涓�绾х紦瀛橈細singletonObjects锛屽瓨鏀惧畬鏁� Bean
- 浜岀骇缂撳瓨锛歟arlySingletonObjects锛屽瓨鏀炬棭鏈熸毚闇茬殑 Bean锛堟湭瀹屽叏鍒濆鍖栵級
- 涓夌骇缂撳瓨锛歴ingletonFactories锛屽瓨鏀� ObjectFactory锛岀敤浜庡垱寤轰唬鐞嗗璞n
8. Redis 鎸佷箙鍖朶n- RDB锛氬畾鏃跺揩鐓э紝鎭㈠蹇紝鏁版嵁鍙兘涓㈠け
- AOF锛氳褰曟瘡鏉″啓鍛戒护锛屾棩蹇楄拷鍔狅紝鏁版嵁鏇村畨鍏紝鍙�氳繃 rewrite 浼樺寲鏃ュ織
9. MySQL 绱㈠紩澶辨晥鍦烘櫙
- 浣跨敤鍑芥暟鎴栬繍绠楋細where year(create_time) = 2024
- 宸︽ā绯婃煡璇細like '%abc'
- 绫诲瀷杞崲锛氬瓧绗︿覆瀛楁浼犳暟瀛梊n- OR 鏉′欢鏈叏閮ㄤ娇鐢ㄧ储寮昞n- 鏈�宸﹀墠缂�鍘熷垯鐮村潖锛氳仈鍚堢储寮� (a,b,c)锛屾煡璇㈡潯浠舵棤 a
10. DDD 鏍稿績姒傚康
- 瀹炰綋锛圗ntity锛夛細鏈夊敮涓�鏍囪瘑锛岀敓鍛藉懆鏈熻繛缁璡n- 鍊煎璞★紙Value Object锛夛細鏃犳爣璇嗭紝閫氳繃灞炴�у垽鏂浉绛塡n- 鑱氬悎锛圓ggregate锛夛細涓�缁勭浉鍏冲璞$殑闆嗗悎锛岃仛鍚堟牴璐熻矗杈圭晫鍐呯殑涓�鑷存�n- 棰嗗煙鏈嶅姟銆佸簲鐢ㄦ湇鍔°�佷粨鍌ㄣ�佷簨浠剁瓑涔熸槸閲嶈缁勬垚閮ㄥ垎
鎬荤粨锛氳阿椋炴満铏界劧鏈変簺闂绛斿緱绂昏氨锛屼絾閮ㄥ垎鍩虹鎺屾彙灏氬彲銆傜湡瀹為潰璇曚腑锛岀悊瑙e師鐞嗚繙姣旇儗璇垫洿閲嶈銆傚缓璁ぇ瀹舵繁鍏ュ涔犲簳灞傛満鍒讹紝缁撳悎涓氬姟鍦烘櫙鎬濊�冿紝鎵嶈兘鐪熸鑴遍鑰屽嚭銆�