14.在 Queue 中 poll()和 remove()有什么区别?
14.Queuepoll()4 remove()I!Ť ʏ
- N知 ϛm ĆʁҊČ Ȉȋ ωɡϛm <ȴѽ
N知kp/Ćʁ poll() ϛm nullҊj remove() ěďέ7 NoSuchElementException ̖Ġѽ
ŠŴƮΧ知
Queue<String> queue = new LinkedList<String>();
queue. offer("string"); // add System. out. println(queue. poll());
System. out. println(queue. remove());
System. out. println(queue. size());
15.LinkedHashMapI!óC?
LinkedHashMapHashMap3ɣҊĻȘ þȌ ΤÎɮʲҊ FIteratorʖɄLinkedHashMap $Ҋƙ! þȌ̭ ƙΤÎ Ҋ (5 Γǥ$àƓňҊʽĬÖeʲʼnʲѽ
16.HashMap ńǍ Lº ʏʊ[Ŵ°Äʋ
¿ĀΓ XƔҊHashMap ňɻ+̑½+żƦ̐样JDK1.8 ¦ żƦ̐Ē2҉ X Ҋkk Ʈѽ

Node ňɻѽ %Node[JDK1.8] ĺĊѽ
static class Node<K,V> implements Map.Entry<K,V> { final int hash;//用用来定位数组索引位置
final K key;
V value;
Node<K,V> next;//链表的下一一个node
Node(int hash, K key, V value, Node<K,V> next) { … } public final K getKey(){ … }
public final V getValue() { … } public final String toString() { … }
public final int hashCode() { … } public final V setValue(V newValue) { … }
public final boolean equals(Object o) { … } }
NodeHashMapĂĒɣҊ X Map.EntryďēҊ Ű φɤ(;ǭ<)ѽ ñ r ƦÙ̌N Node<ȴѽ
(2) HashMap ŇFÉƤ½Șͧ ѽÉƤ½ ĹLJʧǷҊ(5͊F@¥9Ýó;̑9Ýó ĹLJ ÖùҊJavaHashMap͊F ̑9Ýóѽ̑9ÝóҊǰĥ'Ҋ ňɻ¦̑½ Āąѽ rňɻĆ
ʁ ̑½ĀΓҊ©ňɍyHashKҊ! ňɻȝҊ ňɍ¥ <čȝĆʁ ̑½ ѽΧkȐʲ̣ ~ ŠŴ知
map.put("美团","小小美");
ŢȪμƲF"Oɋ"keyhashCode()uó! ÅhashCode ǭ样ĨuóǟF rJava<ȴ҉Ҋ]K ø)Hashűó KlƘŃű样nüŃű;ÇʌŃűҊ ͒ξ҉ üĨ;ǭ< ȘͧüʊҊ$
lkey ü · üʊҊ½Ʈ:* Hash͖Ϳѽ©]HashűóšűĀpè2˜˿λҊHash͖Ϳ Δ˰ è-Ҋmap ȘÇƵ˰ ènѽ
kpÉƤ就ňɻ. ҊľŇȾɛ Hashűó ºȾ2˜ҊkpÉƤ就ňɻňɻ.-ҊľŇHash űó 7XȾ ͖ͿҊ 5 ĩ ģ A ;$ A i ˃一ҊÅ Ɏɍ ʆG˻ʦ É
Ƥ就ňɻ -ҊČ ĝɪ们 ǓšhashűóəæHash͖Ϳѽ>"ø)U"uƩ˷ĴmapŇ!
Hash͖Ϳ Δ˰g-ҊÉƤ就ňɻ样Node[] table҉ΙFģ gæû友ʏˬ Hashűó;自ķo Ĵѽ
³ĹHash;自ķÄȐi Ҋ %!ƙ ĹHashMapƜǃѽ¿HashMap ȷųΓǥљňʺŴ (fҊΓǥљň <ƜǃÓ~ɸğŏҊʺŴk知
int threshold;// 所能容纳的key-value对极限 final float loadFactor;// 负载因子子
int modCount;
int size;
Āą˝Õ§3 ɼ°Ʃ(fҊthreshold ĝLoad factor;length(ňɻ î)<č心ƞ 4 Ć ʁňƎҊå) ňƎ  resize(自ķ)Ҋ自ķK HashMapķõ i ķõ l΅ѽȷų ˝Õ§
30.75 <ģ ;$ Ƶ˰ Ĕ一ęȤҊǽʨ 8 ȰƇҊɡƂ $ ;ģ ºȾĶВ G˻ ҊkpĂȘģ . jg<$ Ƶ˰ Ī.nҊ(5ˆȁ˝Õ§3Load factor ǭ又·njҊkpĂȘ
ģ ȅĘj<$ Ƶ˰ Ī nҊ(5 ¦˝Õ§3loadFactor ǭҊ ǭ(5 1ѽ
sizeƜǃÅ .³ĹҊ HashMap ʆȘ ;ǭ<ňõѽř ;table îlength然ķΕ 4 ;ǭ<ňõthreshold ǦѽjmodCountƜǃ| FþȌHashMapĂĒĀΓ:*Æŏ e
ňҊ| F 事Š ?DŽĢʱѽĕƲ NҊĂĒĀΓ:*ÆŏƗ ĀΓ:*ÆŏҊΧkput ;ǭ <Ҋ´ ȑkey<č valueǭyϊ̺ Ŏ ĀΓÆŏѽ
HashMap ҊÉƤ就ňɻtable îlength -ſˏ 2neu( ąň)Ҋ cƂĠ˄ Ǔ šҊĠ˄ Ǔš 就 -Ǔš ʁňѽ·<'ʁňɊʂʧǷ Δ˰ - ąňҊȜËȱ (5Ɠ
Ǫhttp://blog.csdn.net/liuqiyao_01/article/details/14475159ҊHashtableɸğŏ就 - 11Ҋ 就 -Ǔš ʁň čF样Hashtable自ķK Ļȱ+ ʁň҉ѽHashMap͊F cƂĠ˄ǓšҊ|
Çʌ;自ķ$`NjŏҊ $ əæʧǷҊHashMap üÉƤ就̓ʙüʊ$Ҋ ¦Î nü ƓªŃű )Ȑѽ
PȘ ÖùҊľŇ˝Õ§3;HashűóǓš ą³Ҋ ǂ 7XǼ̑) G˻Ҋ ι7 XǼ̑) Ҋɢ ˵ÂİʡHashMap ¸ ѽ Ҋ JDK1.8Į Ҋ<ňɍĀΓ` Ó Ƙ Nj
ŏҊʙÎ żƦ̐ѽj©̑½ î^ 样ȷųå)8҉$Ҋ̑½ ćǢ żƦ̐ҊƋFżƦ̐?DŽ ω Ƈƹ ĶNōnHashMap ¸ ҊÅ F żƦ̐ ΤÎ然ωɡ然ƹĜ űóѽ
Ż X-uó
HashMap ĂĒŻ X. Ҋ | ¿Ɏɍkey¬ÇÉƤ就ňɻ̓ʙüʊ然putuó ˠỴ̄~然自ķ)ȐQȜн¸ NŕÎɂ@ƔĹѽ
1.ʦ ÉƤ就ňɻ̓ʙüʊ
ƕ ¦然ωɡ然ƹĜ;ǭ<Ҋ ü ÉƤ就ňɻ üʊ .À; Ƙѽ ')HashMap ňɍĀΓ ňɻ;̑½ ĀąҊ 5 %©]Ƥā HashMapP ĆʁüʊǨõ2ǣ˿λ®ҊǨ
õŇ!rüʊ ĆʁňõEҊ>"© %FhashűóĪ! üʊ $«ҊǛ (5fT <čüʊ Ćʁ % Ҋ FʖɄ̑½Ҋ Njŏ ƹΐ Ƶ˰ѽHashMap üňɻ̓ʙü
ʊҊěďLJ hashuó Ť˜¸ ѽƙ ʺŴ X(uó +uó±):
方方法一一:
static final int hash(Object key) {//jdk1.8 & jdk1.7 int h;
// h = key.hashCode() 为第一一步取hashCode值 // h ^ (h >>> 16)为第二二步高高位参与运算
return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);
} 方方法二二:
static int indexFor(int h, int length) {//jdk1.7的源码,jdk1.8没有这个方方法,但是实现原理理一一样的
return h & (length-1);//第三步取模运算
ç · ѽ %Ɗƙ hashǭ<ňɻ îÇʌŃűҊ d ҊĆʁ 2ǣ·<' º Ⱦ˿λ ѽ´ ҊʌŃű ƒϰ+ ºȾ Ҋ HashMap d` 知ƲFuó±šűĨ<ȴ
čĨĻȘ tableňɻ ś ̓ʙIJѽ
| uóƂĠ̶͋Ҋıø)h & (table.length -1) | ! Ĩ<ȴ ĻȘüҊjHashMapƱʣňɻ îç |
|---|---|
| 2 neuҊ HashMap DŽî Njŏѽ©lengthç 2 | neu$Ҋh& (length-1)Ńű Ō < |
| lengthÇʌҊ h%lengthҊ´ &º%Ȝ | [n Ƶ˰ѽ |
JDK1.8 X ҊNjŏ nüŃű űóҊø)hashCode() n16ü̖Şȁ16ü X 知(h = k.hashCode()) ^ (h >>> 16)Ҋ| ¿DŽî然ŻƵ然ŰõǪ͡ Ҋ "`(5 ňɻtablelengthº
Ⱦ- $«Ҋ ĻȱǪ͡ nȁBit Ɠª Hash šű Ҋ $ ^ @ˍѽ
ʜΧ' Ҋntable îѽ

2.HashMapputuó
HashMapputuọ́~)Ȑ(5ø)ñ³ĹҊ Lɕʇ(5,<ºʺŴ[ô̠9̇ˤ\ơѽ

ҁ.Ϙɚ;ǭ<ňɻtable[i] ʵ ģŞ nullҊʵɢ̣~resize()Ó~自ķ又
做.Ɏɍ;ǭkeyšűhashǭ! ΤÎ ňɻ̓ʙiҊkptable[i]==nullҊěď ǽŪNσ¦Ҋćđ҆Ҋk ptable[i] ģҊćđ动又
动.Ϙɚtable[i] ƊĆʁ ʵ;key dҊkp· ěďϊ̺valueҊʵɢćđ҄Ҋ P · Ɨ hashCode5Ƕequals又҄
.Ϙɚtable[i] ʵ treeNodeҊľtable[i] ʵ żƦ̐Ҋkp żƦ̐Ҋɢěď ̐ ΤÎ;ǭ<Ҋ ʵɢćđ活又
活.ʖɄtable[i]ҊϘɚ̑½ î ʵ 8Ҋ 8 w ̑½ćǢ żƦ̐Ҋ żƦ̐ ̣~ΤÎ̂ Ҋ ʵɢÓ~̑½ ΤÎ̂ 又ʖɄ)Ȑ ˌ:Xkey {Ș ěďϊ̺valueľ(又҆
.ΤÎAŻKҊϘɚ ʆȘ ;ǭ<ňõsize ʵå 4 ķõthresholdҊkpå)ҊÓ~自ķѽ
JDK1.8HashMapputuóʺŴk:
public V put(K key, V value) { 2// 对key的hashCode()做hash
3return putVal(hash(key), key, value, false, true);
4 }
6 final V putVal(int hash, K key, V value, boolean onlyIfAbsent, 7boolean evict) {
12// 步骤②:计算index,并对null做处理理 13if ((p = tab[i = (n - 1) & hash]) == null)
| 14 | tab[i]=newNode(hash,key,value,null); |
|---|---|
| 15 | else{ |
| 16 | Node<K,V>e;Kk; |
| 17 | //步骤③:节点key存在,直接覆盖value |
| 18 | if(p.hash==hash&& |
| 19 | ((k=p.key)==key||(key!=null&&key.equals(k)))) |
| 20 | e=p; |
| 21 | //步骤④:判断该链为红黑黑树 |
| 22 | elseif(pinstanceofTreeNode) |
| 23 | e=((TreeNode<K,V>)p).putTreeVal(this,tab,hash,key, |
value);
24// 步骤⑤:该链为链表 25else {
26for (int binCount = 0; ; ++binCount) { 27if ((e = p.next) == null) {
28p.next = newNode(hash, key,value,null);
//链表长长度大大于8转换为红黑黑树进行行行处理理
| 29 | if(binCount>=TREEIFY_THRESHOLD-1)//-1for1st |
|---|---|
| 30 | treeifyBin(tab,hash); |
| 31 | break; |
| 32 | } |
// key已经存在直接覆盖value 33if (e.hash == hash &&
34((k = e.key) == key || (key != null && key.equals(k))))break;
36p = e;
37} 38}
39 40if (e != null) { // existing mapping for key
41V oldValue = e.value;
42if (!onlyIfAbsent || oldValue == null)
43e.value = value;
44afterNodeAccess(e);
45return oldValue;
46} 47}
48++modCount;
49// 步骤⑥:超过最大大容量量就扩容 50if (++size > threshold)
51resize();
52afterNodeInsertion(evict);
53return null;
54 }
ĵÕ[ Ćʁ$Ҋ<ȴ ĩ 自 ňɻ îҊ5ƈ ĵÎ[ Ćʁѽ©]JavaP ňɻ Só a自ķ Ҋuó ŇF ňɻŠδ ķõ- ňɻҊ Ï %F -就ĵ Ҋkp ĵ[
Ҋ !Ǣ 就ѽ
%2ίresize ʺŴҊ个 JDK1.8ΜÎ żƦ̐ҊȾǫˡҊ ƈ ³Ĺ %͢]ŇFJDK1.7 Š ŴҊ³Ĺ ®Ҋ Ű Ǧ ҊȜËǦK 'ѽ
| 1voidresize(intnewCapacity){ | //传入入新的容量量 |
|---|---|
| 2 Entry[]oldTable=table; | //引用用扩容前的Entry数组 |
| 3 intoldCapacity=oldTable.length; | |
| 4 if(oldCapacity==MAXIMUM_CAPACITY){ | //扩容前的数组大大小小如果已经达到最大大 |
(2^30)了了 5threshold = Integer.MAX_VALUE; //修改阈值为int的最大大值(2^31-1),这样以
后就不不会扩容了了 6return;
7} 8
| 9 | Entry[]newTable=newEntry[newCapacity]; | //初始化一一个新的Entry数组 |
|---|---|---|
| 10 | transfer(newTable); | //!!将数据转移到新的Entry数 |
组里里里 11table = newTable;//HashMap的table属性引用用新的
Entry数组 12threshold = (int)(newCapacity * loadFactor);//修改阈值
13 }
P ŇF ķõ[ ňɻŠδ ķõ- ňɻҊtransfer()uóμìEntryňɻ Ćʁ 现ɨ EntryňɻPѽ
1 void transfer(Entry[] newTable) { 2Entry[] src = table;//src引用用了了旧的Entry数组
3int newCapacity = newTable.length;
4for (int j = 0; j < src.length; j++) { //遍历旧的Entry数组
| 5 | Entry<K,V>e=src[j]; | //取得旧Entry数组的每个元素 |
|---|---|---|
| 6 | if(e!=null){ | |
| 7 | src[j]=null;//释放旧Entry数组的对象引用用(for循环后,旧的Entry数组 |
不不再引用用任何对象)
8do { 9Entry<K,V> next = e.next;
10int i = indexFor(e.hash, newCapacity); //!!重新计算每个元素在数组中的位置
| 11 | e.next=newTable[i];//标记[1] |
|---|---|
| 12 | newTable[i]=e; //将元素放在数组上 |
| 13 | e=next; //访问下一一个Entry链上的元素 |
| 14 | }while(e!=null); |
| 15 | } |
| 16 } |
17 }
( y¥ ňɻ üʊ ѽ
ʜΧ3' 自ķ)ȐѽǜǓ % hashűó ǰĥ Fkey mod½ -样 ň
| ɻ î҉ѽÅ ÉƤ就ňɻtable | size=2Ҋ 5key = 3然7然5ҊputɮʲɆe 5然7然3ѽ mod |
|---|---|
| 25K ʧǷ table[1] P ѽ PǜǓ˝Õ§3loadFactor=1Ҋľ©;ǭ< ʆ -size | table |
| ʆ -$Ó~自ķѽď | Q Ƙ日 ÉƤ就ňɻresizeA4Ҋ]K Node rehash ) |
Ȑѽ

| %ƔĹ | JDK1.8` ś®Njŏѽ{)ǝȍ(5:XҊ %ŇF 2eћ 自ɂ(Ɨ î自 ì |
|---|---|
| 2΅)Ҋ 5ҊĆʁ üʊ " ìüʊҊ " ìüʊ ̜a2eћ üʊѽ | ñ(5 Ê ŀw |
| ŶҊn | table îҊñ样a҉½Ʈ自ķ key1;key2lckeyʦ ̓ʙüʊ ƮΧҊñ样b҉½ |
| Ʈ自ķKkey1;key2lckeyʦ ̓ʙüʊ ƮΧҊÅ hash1 | key1<č ÉƤªnüŃűĀpѽ |

Ćʁ Â šűhashiKҊ§ nÆ 2΅Ҋ>"n-1mask̻ɗ nü 1bit(żÙ)Ҋ§ĝ index

§ĝҊ % 自ɌHashMap $«Ҋ ĩ ÏJDK1.7 X>d šűhashҊEĩ ì hashǭ >bit1+ 0 Ҋ 0 w̓ʙ/ÆҊ 1 w̓ʙÆA“ì̓ʙ+oldCap”Ҋ(5
ñ 16自Ɍ 32resizeƮ ñ知

Ǔšʦ ƂĠ ̶͋Ҋ˪˧, Â šűhashǭ $ Ҋjɽ $ҊƆ 1bit0+ 1(5 ų Ůo Ҋ§ĝresize )ȐҊ˿λ i ʧǷ ŪN2˜ bucket ѽ ȡ
JDK1.8 NjŏNѽ Nř ǦҊJDK1.7rehash $«Ҋˮ̑½时̜ ̑½ $«Ҋkp ½ ňɻ̓ʙüʊ· Ҋɢ̑½Ćʁ ȖʊҊ´ ¿ ñ(5 7ҊJDK1.8 Ȗʊѽɕʇ \(
5̇ˤJDK1.8resizeʺŴҊƚ .ͱҊk:
1 final Node<K,V>[] resize() { 2Node<K,V>[] oldTab = table;
| 3 | intoldCap=(oldTab==null)?0:oldTab.length; |
|---|---|
| 4 | intoldThr=threshold; |
| 5 | intnewCap,newThr=0; |
| 6 | if(oldCap>0){ |
| 7 | //超过最大大值就不不再扩充了了,就只好随你碰撞去吧 |
| 8 | if(oldCap>=MAXIMUM_CAPACITY){ |
| 9 | threshold=Integer.MAX_VALUE; |
| 10 | returnoldTab; |
| 11 | } |
| 12 | //没超过最大大值,就扩充为原来的2倍 |
| 13 | elseif((newCap=oldCap<<1)<MAXIMUM_CAPACITY&& |
| 14 | oldCap>=DEFAULT_INITIAL_CAPACITY) |
19else {// zero initial threshold signifies using defaults
| 20 | newCap=DEFAULT_INITIAL_CAPACITY; |
|---|---|
| 21 | newThr=(int)(DEFAULT_LOAD_FACTOR*DEFAULT_INITIAL_CAPACITY); |
| 22 | } |
| 23 | //计算新的resize上限 |
| 24 | if(newThr==0){ |
25 26float ft = (float)newCap * loadFactor;
27newThr = (newCap < MAXIMUM_CAPACITY && ft < (float)MAXIMUM_CAPACITY ?
| 28 | (int)ft:Integer.MAX_VALUE); |
|---|---|
| 29 } | |
| 30 threshold=newThr; | |
| 31 @SuppressWarnings({"rawtypes","unchecked"}) | |
| 32 | Node<K,V>[]newTab=(Node<K,V>[])newNode[newCap]; |
| 33 table=newTab; | |
| 34 if(oldTab!=null){ | |
| 35 | //把每个bucket都移动到新的buckets中 |
| 36 | for(intj=0;j<oldCap;++j){ |
| 37 | Node<K,V>e; |
| 38 | if((e=oldTab[j])!=null){ |
| 39 | oldTab[j]=null; |
| 40 | if(e.next==null) |
| 41 | newTab[e.hash&(newCap-1)]=e; |
| 42 | elseif(einstanceofTreeNode) |
| 43 | ((TreeNode<K,V>)e).split(this,newTab,j,oldCap); |
| 44 | else{//链表优化重hash的代码块 |
| 45 | Node<K,V>loHead=null,loTail=null; |
| 46 | Node<K,V>hiHead=null,hiTail=null; |
| 47 | Node<K,V>next; |
| 48 | do{ |
| 49 | next=e.next; |
| 50 | //原索引 |
| 51 | if((e.hash&oldCap)==0){ |
| 52 | if(loTail==null) |
| 53 | loHead=e; |
| 54 | else |
| 55 | loTail.next=e; |
| 56 | loTail=e; |
| 57 | } |
| 58 | //原索引+oldCap |
| 59 | else{ |
| 60 | if(hiTail==null) |
| 61 | hiHead=e; |
| 62 | else |
| 63 | hiTail.next=e; |
全站分卷索引 · 144 卷
- 1Java基础题
- 22.Java语言主要特性
- 35.如果main方法被声明为private会怎样?
- 48.Object有哪些公用方法
- 59.为什么Java里没有全局变量?
- 614.short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?
- 717.Locale类是什么?
- 820.深拷贝和浅拷贝的区别是什么?
- 921.Java 中操作字符串都有哪些类?它们之间有什么区别?
- 1025. 重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分?
- 1127.Java 中Comparator 与Comparable 有什么不同?
- 12java集合
- 134.Collections.sort排序内部原理
- 149.说一下 HashSet 的实现原理?
- 1514.在 Queue 中 poll()和 remove()有什么区别?
- 1617.HashMap并发安全的问题
- 1718.JDK1.8与JDK1.7的性能对比
- 1818.HashMap操作注意事项以及优化?
- 19异常&反射
- 203.throw和throws的区别?
- 219.java反射机制的作用
- 22IO&NIO
- 231.什么是IO流?
- 244.读取数据量大的文件时,速度会很慢,如何选择流?
- 258.I/O多路复用模型(IO multiplexing)
- 2610.异步 I/O(asynchronous IO)
- 2712.NIO和IO适用场景
- 2815.Java NIO中最常用的通道实现?
- 2919.Selector是什么?
- 30多线程
- 316.线程RUNNABLE状态
- 3212.如何知道代码段被哪个线程调用?
- 3314.sleep()方法
- 3419.线程的优先级
- 3522.线程种类
- 3625.Java虚拟机退出时Daemon线程中的finally块一定会执行?
- 3728.什么是synchronized?
- 3836.锁的升降级规则
- 3941.轻量锁的解锁
- 4049.volatile关键字
- 4155.ThreadLocal
- 4258.Lock接口
- 4363.公平锁和非公平锁的区别
- 4467.Condition使用
- 4572.ConcurrentHashMap
- 4679.工作窃取算法的有缺点
- 4786.CyclicBarrier
- 4891.线程池工作流程
- 4993.向线程池提交任务
- 5096.Executor
- 5199.SingleThreadExecutor
- 52JVM
- 534.画一下jvm内存结构图?
- 548.Java堆
- 5517.如何实现一个堆内存溢出?
- 5622.Edem : from : to默认比例是?
- 5728.复制算法?
- 5829.标记-整理算法?
- 5930.分代收集算法?
- 6032.Stop The World?
- 6137.Parallel Old收集器?
- 6243.虚拟机进程状况工具?
- 6345.配置信息工具?
- 64Linux
- 658.迷路,我的当前位置在哪?
- 6612.删除文件?强制删除?递归删除?
- 6714.复制文件
- 6818.查看整个文件?按照有文本显示行号?无文本显示行号?
- 6921.查找匹配数据?反向搜?
- 7024.Linux广泛使用的归档数据方法?
- 7127.什么是环境变量?
- 7230.查看组信息?如何创建组?删除组?
- 7331.修改权限?
- 7436.查看设备还有多少磁盘空间?
- 7538.实时监测进程
- 7642.验证网络可链接命令是什么?什么原理?
- 7743.查看某端口是否被占用?
- 7845.如何查看当前主机名?如何修改?如何重启后生效?
- 7949.打印文件第一行到第三行?
- 80Mysql
- 813.MySql的存储引擎有哪些?
- 827.选择合适的数据类型
- 8313.MySql有哪些索引?
- 8415. 非聚簇索引一定会回表查询吗?
- 8521.什么是事务?
- 8626.死锁?
- 8731.like走索引吗?
- 8837.如何随机获取一条记录?
- 8942.sql语句的执行流程?
- 9045.MySql最多创建多少列索引?
- 9148.varchar(10)和int(10)代表什么含义
- 92Spring
- 934.Spring的优点?缺点?
- 948.IOC注入哪几种方式?
- 9512.Spring中的bean有几种scope?
- 9621.AOP动态代理策略?
- 9727.SpringMVC的优点?
- 9832.注入Java集合的标签?
- 9943.清空缓存是哪个注解?
- 10050.Spring事务传播行为有哪些?
- 1014.Mybatis优点?
- 10212.Mybatis动态sql?
- 10318.当实体属性名和表中字段不一致,怎么办?
- 10424.二级缓存如何配置?
- 105Nginx
- 1063.nginx 常用命令?
- 1078.如何精准匹配路径?
- 10814.负载均衡配置?
- 109Redis
- 1105.Redis和Memcache区别?
- 11111.Redis配置需要自己写?如何配置?
- 11217.字符串最大不能超过多少?
- 11325.AOF持久化?
- 11431.AOF优点?
- 11538.Redis过期键删除策略?
- 11641.Redis内存溢出控制?
- 11748.什么是缓存穿透?处理问题?
- 1182.为什么要使用Dubbo?
- 1196.说一下Dubbo服务注册流程?
- 1208.Dubbo架构的特点?
- 12112.配置优先级规则?
- 12213.如何用代码方式绕过注册中心点对点直连?
- 12315.如何禁用某个服务的启动检查?
- 12420.Dubbo有几种配置方式?
- 12525.一个服务有多重实现时,如何处理?
- 12632.自动剔除服务什么原理?
- 127SpringBoot
- 1287.SpringBoot启动方式?
- 12912.SpringBoot热部署方式?
- 13018.获得Bean装配报告信息访问哪个端点?
- 13125.不同的环境的配置文件?
- 13230.SpringBoot读取配置相关注解有?
- 1335.kafka的5个核心Api?
- 13415.kafka磁盘选用上?
- 13523.kafka压缩消息可能发生的地方?
- 1363.SpringCloud有哪些特征?
- 1377.Eureka是什么?
- 13812.什么是自我保护机制?
- 13919.断路器Hystrix的有哪些功能?
- 14028.Zuul的核心是?
- 14135.更多知识?
- 142二、基本信息(姓名/性别/毕业院校/电话/邮箱/居住地/期望地)
- 143四、工作期望&个人评价
- 144五、 是否有博客,个人技术栈点等