diff --git a/notes/2016 校招真题题解.md b/notes/2016 校招真题题解.md index b50cce0c..0285debe 100644 --- a/notes/2016 校招真题题解.md +++ b/notes/2016 校招真题题解.md @@ -1,33 +1,33 @@ -* [???](#???) -* [1. §³??-§³??Git](#1-§ã??-§ã??git) -* [2. §³??-????????](#2-§ã??-????????) -* [3. §³??-?§Û????](#3-§ã??-?§Û????) -* [4. ???-LUCKY STRING](#4-???-lucky-string) -* [5. ???-Numeric Keypad](#5-???-numeric-keypad) -* [6. ???-Spring Outing](#6-???-spring-outing) -* [7. ???-S-expression](#7-???-s-expression) -* [8. ???-?????????](#8-???-?????????) -* [9. ???-???????](#9-???-???????) -* [10. ???-??????§³](#10-???-??????§ã) -* [11. ????-???????](#11-????-???????) -* [12. ????-?????????](#12-????-?????????) -* [13. ????-???Coder](#13-????-???coder) -* [14. ????-?????](#14-????-?????) -* [15. ????-??????](#15-????-??????) -* [16. ????-???](#16-????-???) -* [17. ????-????????????](#17-????-????????????) -* [18. ????-?????????](#18-????-?????????) -* [19. ????-???????](#19-????-???????) -* [20. ???-?????](#20-???-?????) -* [22. ???-?¨¹??????](#22-???-?¨¹??????) -* [23. ???-???????](#23-???-???????) -* [24. ???-?????](#24-???-?????) +* [ǰÑÔ](#ǰÑÔ) +* [1. СÃ×-СÃ×Git](#1-СÃ×-СÃ×git) +* [2. СÃ×-¶®¶þ½øÖÆ](#2-СÃ×-¶®¶þ½øÖÆ) +* [3. СÃ×-ÖйúÅ£ÊÐ](#3-СÃ×-ÖйúÅ£ÊÐ) +* [4. ΢Èí-LUCKY STRING](#4-΢Èí-lucky-string) +* [5. ΢Èí-Numeric Keypad](#5-΢Èí-numeric-keypad) +* [6. ΢Èí-Spring Outing](#6-΢Èí-spring-outing) +* [7. ΢Èí-S-expression](#7-΢Èí-s-expression) +* [8. »ªÎª-×î¸ß·ÖÊǶàÉÙ](#8-»ªÎª-×î¸ß·ÖÊǶàÉÙ) +* [9. »ªÎª-¼òµ¥´íÎó¼Ç¼](#9-»ªÎª-¼òµ¥´íÎó¼Ç¼) +* [10. »ªÎª-ÆË¿ËÅÆ´óС](#10-»ªÎª-ÆË¿ËÅÆ´óС) +* [11. È¥ÄĶù-¶þ·Ö²éÕÒ](#11-È¥ÄĶù-¶þ·Ö²éÕÒ) +* [12. È¥ÄĶù-Ê׸öÖØ¸´×Ö·û](#12-È¥ÄĶù-Ê׸öÖØ¸´×Ö·û) +* [13. È¥ÄĶù-ѰÕÒCoder](#13-È¥ÄĶù-ѰÕÒcoder) +* [14. ÃÀÍÅ-×î´ó²îÖµ](#14-ÃÀÍÅ-×î´ó²îÖµ) +* [15. ÃÀÍÅ-Æå×Ó·­×ª](#15-ÃÀÍÅ-Æå×Ó·­×ª) +* [16. ÃÀÍÅ-°Ý·Ã](#16-ÃÀÍÅ-°Ý·Ã) +* [17. ÃÀÍÅ-Ö±·½Í¼ÄÚ×î´ó¾ØÐÎ](#17-ÃÀÍÅ-Ö±·½Í¼ÄÚ×î´ó¾ØÐÎ) +* [18. ÃÀÍÅ-×Ö·û´®¼ÆÊý](#18-ÃÀÍÅ-×Ö·û´®¼ÆÊý) +* [19. ÃÀÍÅ-ƽ¾ùÄêÁä](#19-ÃÀÍÅ-ƽ¾ùÄêÁä) +* [20. °Ù¶È-×ï·¸×ªÒÆ](#20-°Ù¶È-×ï·¸×ªÒÆ) +* [22. °Ù¶È-²Ã¼õÍø¸ñÖ½](#22-°Ù¶È-²Ã¼õÍø¸ñÖ½) +* [23. °Ù¶È-µöÓã±ÈÈü](#23-°Ù¶È-µöÓã±ÈÈü) +* [24. °Ù¶È-Ä¢¹½Õó](#24-°Ù¶È-Ä¢¹½Õó) -# ??? +# ǰÑÔ -??????? +Ê¡ÂԵĴúÂ룺 ```java import java.util.*; @@ -48,10 +48,10 @@ public class Main { } ``` -# 1. §³??-§³??Git +# 1. СÃ×-СÃ×Git -- ???????? -- ??? LCA +- ÖØ½¨¶à²æÊ÷ +- ʹÓà LCA ```java private class TreeNode { @@ -65,7 +65,7 @@ private class TreeNode { public int getSplitNode(String[] matrix, int indexA, int indexB) { int n = matrix.length; - boolean[][] linked = new boolean[n][n]; // ????????? + boolean[][] linked = new boolean[n][n]; // ÖØ½¨ÁÚ½Ó¾ØÕó for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { linked[i][j] = matrix[i].charAt(j) == '1'; @@ -80,7 +80,7 @@ private TreeNode constructTree(boolean[][] linked, int root) { TreeNode tree = new TreeNode(root); for (int i = 0; i < linked[root].length; i++) { if (linked[root][i]) { - linked[i][root] = false; // ??????????????????????????????????????????? + linked[i][root] = false; // ÒòΪÌâÄ¿¸øµÄÁÚ½Ó¾ØÕóÊÇË«ÏòµÄ£¬ÔÚÕâÀïÐèÒª°ÑËüתΪµ¥ÏòµÄ tree.childs.add(constructTree(links, i)); } } @@ -102,9 +102,9 @@ private TreeNode LCA(TreeNode root, TreeNode p, TreeNode q) { } ``` -# 2. §³??-???????? +# 2. СÃ×-¶®¶þ½øÖÆ -??????????????????????????? 1 ?????¦Ë???????????????¦Ë?? +¶ÔÁ½¸öÊý½øÐÐÒì»ò£¬½á¹ûµÄ¶þ½øÖƱíʾΪ 1 µÄÄÇһλ¾ÍÊÇÁ½¸öÊý²»Í¬µÄλ¡£ ```java public int countBitDiff(int m, int n) { @@ -112,11 +112,11 @@ public int countBitDiff(int m, int n) { } ``` -# 3. §³??-?§Û???? +# 3. СÃ×-ÖйúÅ£ÊÐ -???????????????????§³? 2 ??????? +±³°üÎÊÌ⣬¿ÉÒÔÉèÒ»¸ö´óСΪ 2 µÄ±³°ü¡£ -????????????? +×´Ì¬×ªÒÆ·½³ÌÈçÏ£º ```html dp[i, j] = max(dp[i, j-1], prices[j] - prices[jj] + dp[i-1, jj]) { jj in range of [0, j-1] } = max(dp[i, j-1], prices[j] + max(dp[i-1, jj] - prices[jj])) @@ -137,10 +137,10 @@ public int calculateMax(int[] prices) { } ``` -# 4. ???-LUCKY STRING +# 4. ΢Èí-LUCKY STRING -- ?????????§á???????? -- ?????¦Â?????????????????????????????? Set ??????? i ?? j ?????????????? Set ?????????????????? Set ???§³???????????????? +- ì³²¨ÄÇÆõÊýÁпÉÒÔÔ¤¼ÆË㣻 +- ´ÓÍ·µ½Î²±éÀú×Ö·û´®µÄ¹ý³Ì£¬Ã¿Ò»ÂÖÑ­»·¶¼Ê¹ÓÃÒ»¸ö Set À´±£´æ´Ó i µ½ j ³öÏÖµÄ×Ö·û£¬²¢ÇÒ Set ±£Ö¤ÁË×Ö·û¶¼²»Í¬£¬Òò´Ë Set µÄ´óС¾ÍÊDz»Í¬×Ö·ûµÄ¸öÊý¡£ ```java Set fibSet = new HashSet<>(Arrays.asList(1, 2, 3, 5, 8, 13, 21, 34, 55, 89)); @@ -165,7 +165,7 @@ for (String s : arr) { } ``` -# 5. ???-Numeric Keypad +# 5. ΢Èí-Numeric Keypad ```java private static int[][] canReach = { @@ -209,17 +209,17 @@ public static void main(String[] args) { } ``` -# 6. ???-Spring Outing +# 6. ΢Èí-Spring Outing -?????? N = 3??K = 4 ??????????? +ÏÂÃæÒÔ N = 3£¬K = 4 À´½øÐÐÌÖÂÛ¡£ -????????? 0 ?????????????????????????? +³õʼʱ£¬ÁîµÚ 0 ¸öµØ·½³ÉΪ´ý¶¨µØµã£¬Ò²¾ÍÊÇ´ôÔÚ¼ÒÀï¡£ -??? 4 ??????????????????????? 4 ???????? 0 ????????????????????????????????????? 4 ??????????????? 4 ??????????????? +´ÓµÚ 4 ¸öµØµã¿ªÊ¼Í¶Æ±£¬Ã¿¸öÈËÖ»ÐèÒª±È½ÏµÚ 4 ¸öµØ·½ºÍµÚ 0 ¸öµØ·½µÄÓÅÏȼ¶£¬ÀÈç¹û³¬¹ý°ëÊýµÄÈËÑ¡ÔñÁËµÚ 4 ¸öµØ·½£¬ÄÇô¸üÐÂµÚ 4 ¸öµØ·½³ÉΪ´ý¶¨µØµã¡£ -???????????????????Ñk???????????????????§Ö??????????? +´ÓºóÍùǰ²»¶ÏÖØ¸´ÒÔÉϲ½Ö裬²»¶Ï¸üдý¶¨µØµã£¬Ö±µ½ËùÓеط½¶¼ÒѾ­Í¶Æ±¡£ -??????????§µ?????? 0 ???????????????????????????? 4 ????????????????????§Ò???????????????????????????????? 1 ????????????????????? 2 ??????????????????????????? 2 ???????? 1 ????????????????????????????????????? +ÉÏÃæµÄÌÖÂÛÖУ¬ÏÈÁîµÚ 0 ¸öµØµã³ÉΪ´ý¶¨µØµã£¬ÊÇÒòΪÕâÑùµÄ»°µÚ 4 ¸öµØµã¾ÍÖ»ÐèÒªºÍÕâ¸öµØµã½øÐбȽϣ¬¶ø²»Óÿ¼ÂÇÆäËüÇé¿ö¡£Èç¹û×ʼÏÈÁîµÚ 1 ¸öµØµã³ÉΪ´ý¶¨µØµã£¬ÄÇôÔÚ¶ÔµÚ 2 ¸öµØµã½øÐÐͶƱʱ£¬Ã¿¸öÈ˲»½öÒª¿¼ÂÇµÚ 2 ¸öµØµãÓëµÚ 1 ¸öµØµãµÄÓÅÏȼ¶£¬Ò²Òª¿¼ÂÇÓëÆäºóͶƱµØµãµÄÓÅÏȼ¶¡£ ```java int N = in.nextInt(); @@ -246,9 +246,9 @@ for (int place = K; place > 0; place--) { System.out.println(ret == 0 ? "otaku" : ret); ``` -# 7. ???-S-expression +# 7. ΢Èí-S-expression -# 8. ???-????????? +# 8. »ªÎª-×î¸ß·ÖÊǶàÉÙ ```java int N = in.nextInt(); @@ -280,7 +280,7 @@ for (int i = 0; i < M; i++) { } ``` -# 9. ???-??????? +# 9. »ªÎª-¼òµ¥´íÎó¼Ç¼ ```java HashMap map = new LinkedHashMap<>(); @@ -300,7 +300,7 @@ for (int i = 0; i < 8 && i < list.size(); i++) { } ``` -# 10. ???-??????§³ +# 10. »ªÎª-ÆË¿ËÅÆ´óС ```java public class Main { @@ -391,12 +391,12 @@ public class Main { } ``` -# 11. ????-??????? +# 11. È¥ÄĶù-¶þ·Ö²éÕÒ -????????????????????ï…???????????????????? +¶ÔÓÚÓÐÖØ¸´ÔªËصÄÓÐÐòÊý×飬¶þ·Ö²éÕÒÐèҪעÒâÒÔÏÂÒªµã£º - if (val <= A[m]) h = m; -- ??? h ????? m ?????? m - 1????? while ????????????? l < h????????? m - 1 ???????? l <= h?? +- ÒòΪ h µÄ¸³ÖµÎª m ¶ø²»ÊÇ m - 1£¬Òò´Ë while Ñ­»·µÄÌõ¼þÒ²¾ÍΪ l < h¡££¨Èç¹ûÊÇ m - 1 Ñ­»·Ìõ¼þΪ l <= h£© ```java public int getPos(int[] A, int n, int val) { @@ -410,7 +410,7 @@ public int getPos(int[] A, int n, int val) { } ``` -# 12. ????-????????? +# 12. È¥ÄĶù-Ê׸öÖØ¸´×Ö·û ```java public char findFirstRepeat(String A, int n) { @@ -424,7 +424,7 @@ public char findFirstRepeat(String A, int n) { } ``` -# 13. ????-???Coder +# 13. È¥ÄĶù-ѰÕÒCoder ```java public String[] findCoder(String[] A, int n) { @@ -450,7 +450,7 @@ public String[] findCoder(String[] A, int n) { return ret; } -// ???????????? javafx.util.Pair???????????????? Pair ?? +// Å£¿ÍÍøÎÞ·¨µ¼Èë javafx.util.Pair£¬ÕâÀï¾Í×Ô¼ºÊµÏÖһϠPair Àà private class Pair { T t; K k; @@ -470,9 +470,9 @@ private class Pair { } ``` -# 14. ????-????? +# 14. ÃÀÍÅ-×î´ó²îÖµ -??????? +̰ÐIJßÂÔ¡£ ```java public int getDis(int[] A, int n) { @@ -486,7 +486,7 @@ public int getDis(int[] A, int n) { } ``` -# 15. ????-?????? +# 15. ÃÀÍÅ-Æå×Ó·­×ª ```java public int[][] flipChess(int[][] A, int[][] f) { @@ -502,7 +502,7 @@ public int[][] flipChess(int[][] A, int[][] f) { } ``` -# 16. ????-??? +# 16. ÃÀÍÅ-°Ý·Ã ```java private Set paths; @@ -554,7 +554,7 @@ private void backtracking(int[][] map, int n, int m, int r, int c, int[][] direc } ``` -# 17. ????-???????????? +# 17. ÃÀÍÅ-Ö±·½Í¼ÄÚ×î´ó¾ØÐÎ ```java public int countArea(int[] A, int n) { @@ -570,15 +570,15 @@ public int countArea(int[] A, int n) { } ``` -# 18. ????-????????? +# 18. ÃÀÍÅ-×Ö·û´®¼ÆÊý -?????????§³§Õ????????????????????? 26 ?????????????????????????????????????????????§Ò??????? "ac" ?? "abc"????????????? "ac" > "abc"???????????????????????? "abc" ????¦Ë??????????? +×Ö·û´®¶¼ÊÇСд×Ö·û£¬¿ÉÒÔ°Ñ×Ö·û´®µ±³ÉÊÇ 26 ½øÖÆ¡£µ«ÊÇ×ÖµäÐòµÄ±È½ÏºÍÆÕͨµÄÕûÊý±È½Ï²»Í¬£¬ÊÇ´Ó×óÍùÓÒ½øÐбȽϣ¬ÀýÈç "ac" ºÍ "abc"£¬×ÖµäÐòµÄ±È½Ï½á¹ûΪ "ac" > "abc"£¬Èç¹û°´ÕÕÕûÊý·½·¨±È½Ï£¬ÒòΪ "abc" ÊÇÈýλÊý£¬ÏÔÈ»¸ü´ó¡£ -???????????????????????????? s1 ??????? s2 ?????????§Ò????????? s1 ???????????? 'a' ???????????? +ÓÉÓÚÁ½¸ö×Ö·û´®µÄ³¤¶È¿ÉÄܲ»ÏëµÈ£¬ÔÚ s1 ¿Õ°×²¿·ÖºÍ s2 ¶ÔÓ¦²¿·Ö½øÐбȽÏʱ£¬Ó¦¸Ã°Ñ s1 µÄ¿Õ°×²¿·Ö¿´³ÉÊÇ 'a' ×Ö·û½øÐÐÌî³äµÄ¡£ -???????????????s1 ?? s2 ????? leni ?????????????????? i ??????????? 'aaa' ?? 'bbb' ??????? 2 ?????? 'aa' ?? 'bb' ????????????????????????ÑØ???????? +»¹ÓÐÒ»µãҪעÒâµÄÊÇ£¬s1 µ½ s2 ³¤¶ÈΪ leni µÄ×Ö·û´®¸öÊýÖ»±È½ÏÇ°Ãæ i ¸ö×Ö·û¡£ÀýÈç 'aaa' ºÍ 'bbb' £¬³¤¶ÈΪ 2 µÄ¸öÊýΪ 'aa' µ½ 'bb' µÄ×Ö·û´®¸öÊý£¬²»ÐèÒª¿¼ÂǺóÃæ²¿·ÖµÄ×Ö·û¡£ -????????????? len1 ???????????????????????????????????? i ??????????????? +ÔÚͳ¼Æ¸öÊýʱ£¬´Ó len1 ¿ªÊ¼Ò»Ö±±éÀúµ½×î´óºÏ·¨³¤¶È£¬Ã¿´ÎÑ­»·¶¼Í³¼Æ³¤¶ÈΪ i µÄ×Ó×Ö·û´®¸öÊý¡£ ```java String s1 = in.next(); @@ -601,7 +601,7 @@ for (int i = len1; i <= len; i++) { System.out.println(ret - 1); ``` -# 19. ????-??????? +# 19. ÃÀÍÅ-ƽ¾ùÄêÁä ```java int W = in.nextInt(); @@ -609,15 +609,15 @@ double Y = in.nextDouble(); double x = in.nextDouble(); int N = in.nextInt(); while (N-- > 0) { - Y++; // ??????????????? 1 + Y++; // ÀÏÔ±¹¤Ã¿ÄêÄêÁä¶¼Òª¼Ó 1 Y += (21 - Y) * x; } System.out.println((int) Math.ceil(Y)); ``` -# 20. ???-????? +# 20. °Ù¶È-×ï·¸×ªÒÆ -?????????????????????????????? +²¿·ÖºÍÎÊÌ⣬½«Ã¿´ÎÇóµÄ²¿·ÖºÍ»º´æÆðÀ´¡£ ```java int n = in.nextInt(); @@ -640,7 +640,7 @@ for (int s = 0, e = c - 1; e < n; s++, e++) { System.out.println(cnt); ``` -# 22. ???-?¨¹?????? +# 22. °Ù¶È-²Ã¼õÍø¸ñÖ½ ```java int n = in.nextInt(); @@ -658,11 +658,11 @@ for (int i = 0; i < n; i++) { System.out.println((int) Math.pow(Math.max(maxX - minX, maxY - minY), 2)); ``` -# 23. ???-??????? +# 23. °Ù¶È-µöÓã±ÈÈü -P ( ?????????? ) = 1 - P ( ?????????? ) +P ( ÖÁÉÙµöÒ»ÌõÓã ) = 1 - P ( Ò»ÌõÒ²µö²»µ½ ) -?????????????????????????§ß??§Ø??????????????? in.nextDouble()?? +¿Ó£º¶ÁÈ¡¸ÅÂʾØÕóµÄʱºò£¬ÐèÒªÒ»ÐÐÒ»ÐнøÐжÁÈ¡£¬¶ø²»ÄÜÖ±½ÓÓà in.nextDouble()¡£ ```java public static void main(String[] args) { @@ -673,11 +673,11 @@ public static void main(String[] args) { int x = in.nextInt(); int y = in.nextInt(); int t = in.nextInt(); - in.nextLine(); // ?? + in.nextLine(); // ¿Ó double pcc = 0.0; double sum = 0.0; for (int i = 1; i <= n; i++) { - String[] token = in.nextLine().split(" "); // ?? + String[] token = in.nextLine().split(" "); // ¿Ó for (int j = 1; j <= m; j++) { double p = Double.parseDouble(token[j - 1]); // double p = in.nextDouble(); @@ -701,13 +701,13 @@ private static double computePOfIRT(double p, int t) { } ``` -# 24. ???-????? +# 24. °Ù¶È-Ä¢¹½Õó -?????????????????? DP?? +ÕâÌâÓûØËݻᳬʱ£¬ÐèÒªÓà DP¡£ -dp[i][j] ??????? (i,j) ¦Ë?¨°?????????????????? N\*M ??????? i == N || j == M????? (i,j) ??????????????????????????????????????? +dp[i][j] ±íʾµ½´ï (i,j) λÖò»»á´¥ÅöÄ¢¹½µÄ¸ÅÂÊ¡£¶ÔÓÚ N\*M ¾ØÕó£¬Èç¹û i == N || j == M£¬ÄÇô (i,j) Ö»ÄÜÓÐÒ»¸öÒÆ¶¯·½Ïò£»ÆäËüÇé¿öÏÂÄÜÓÐÁ½¸öÒÆ¶¯·½Ïò¡£ -??????????????§Ö? 3 ?§Ü?? 3 ?????????????????????????¦Ë???????????????????? +¿¼ÂÇÒÔϾØÕ󣬯äÖÐµÚ 3 ÐÐºÍµÚ 3 ÁÐÖ»ÄÜÍùÒ»¸ö·½ÏòÒÆ¶¯£¬¶øÆäËüλÖÿÉÒÔÓÐÁ½¸ö·½ÏòÒÆ¶¯¡£ ```java diff --git a/notes/HTTP.md b/notes/HTTP.md index b29f4a31..f17b79c6 100644 --- a/notes/HTTP.md +++ b/notes/HTTP.md @@ -1,83 +1,83 @@ -* [????????](#????????) - * [Web????](#web????) +* [»ù´¡¸ÅÄî](#»ù´¡¸ÅÄî) + * [Web»ù´¡](#web»ù´¡) * [URL](#url) - * [????????????](#????????????) -* [HTTP ????](#http-????) - * [GET????????](#get????????) - * [POST?????????????](#post?????????????) - * [HEAD????????????](#head????????????) - * [PUT????????](#put???¦È????) - * [DELETE????????](#delete????????) - * [OPTIONS????????????](#options????????????) - * [RACE?????¡¤??](#race?????¡¤??) - * [CONNECT??????????§¿?????????](#connect??????????§ï?????????) -* [HTTP ????](#http-????) - * [2XX ???](#2xx-???) - * [3XX ?????](#3xx-?????) - * [4XX ????????](#4xx-????????) - * [5XX ??????????](#5xx-??????????) -* [HTTP???](#http???) - * [?????????](#?????????) - * [??????????](#??????????) - * [?????????](#?????????) - * [?????????](#?????????) -* [???????](#???????) + * [ÇëÇóºÍÏìÓ¦±¨ÎÄ](#ÇëÇóºÍÏìÓ¦±¨ÎÄ) +* [HTTP ·½·¨](#http-·½·¨) + * [GET£º»ñÈ¡×ÊÔ´](#get»ñÈ¡×ÊÔ´) + * [POST£º´«ÊäʵÌåÖ÷Ìå](#post´«ÊäʵÌåÖ÷Ìå) + * [HEAD£º»ñÈ¡±¨ÎÄÊײ¿](#head»ñÈ¡±¨ÎÄÊײ¿) + * [PUT£ºÉÏ´«Îļþ](#putÉÏ´«Îļþ) + * [DELETE£ºÉ¾³ýÎļþ](#deleteɾ³ýÎļþ) + * [OPTIONS£º²éѯ֧³ÖµÄ·½·¨](#options²éѯ֧³ÖµÄ·½·¨) + * [RACE£º×·×Ù·¾¶](#race×·×Ù·¾¶) + * [CONNECT£ºÒªÇóÓÃËíµÀЭÒéÁ¬½Ó´úÀí](#connectÒªÇóÓÃËíµÀЭÒéÁ¬½Ó´úÀí) +* [HTTP ״̬Âë](#http-״̬Âë) + * [2XX ³É¹¦](#2xx-³É¹¦) + * [3XX ÖØ¶¨Ïò](#3xx-ÖØ¶¨Ïò) + * [4XX ¿Í»§¶Ë´íÎó](#4xx-¿Í»§¶Ë´íÎó) + * [5XX ·þÎñÆ÷´íÎó](#5xx-·þÎñÆ÷´íÎó) +* [HTTPÊײ¿](#httpÊײ¿) + * [ͨÓÃÊײ¿×Ö¶Î](#ͨÓÃÊײ¿×Ö¶Î) + * [ÇëÇóÊײ¿×Ö¶Î](#ÇëÇóÊײ¿×Ö¶Î) + * [ÏìÓ¦Êײ¿×Ö¶Î](#ÏìÓ¦Êײ¿×Ö¶Î) + * [ʵÌåÊײ¿×Ö¶Î](#ʵÌåÊײ¿×Ö¶Î) +* [¾ßÌåÓ¦ÓÃ](#¾ßÌåÓ¦ÓÃ) * [Cookie](#cookie) - * [????](#????) - * [???????](#???????) - * [????](#????) - * [??ø‰??](#??ø‰??) - * [????????](#????????) - * [??¦¶????](#??¦Ö????) - * [????§¿??](#????§ï??) - * [????????](#????????) - * [??????????](#??????????) + * [»º´æ](#»º´æ) + * [³Ö¾ÃÁ¬½Ó](#³Ö¾ÃÁ¬½Ó) + * [±àÂë](#±àÂë) + * [·Ö¿é´«Êä](#·Ö¿é´«Êä) + * [¶à²¿·Ö¶ÔÏ󼯺Ï](#¶à²¿·Ö¶ÔÏ󼯺Ï) + * [·¶Î§ÇëÇó](#·¶Î§ÇëÇó) + * [ÄÚÈÝЭÉÌ](#ÄÚÈÝЭÉÌ) + * [ÐéÄâÖ÷»ú](#ÐéÄâÖ÷»ú) + * [ͨÐÅÊý¾Ýת·¢](#ͨÐÅÊý¾Ýת·¢) * [HTTPs](#https) - * [????](#????) - * [???](#???) - * [??????](#??????) + * [¼ÓÃÜ](#¼ÓÃÜ) + * [ÈÏÖ¤](#ÈÏÖ¤) + * [ÍêÕûÐÔ](#ÍêÕûÐÔ) -# ???????? +# »ù´¡¸ÅÄî -## Web???? +## Web»ù´¡ -HTTP??HyperText Transfer Protocol???????????§¿?ï‚?? +HTTP£¨HyperText Transfer Protocol£¬³¬Îª±¾´«ÊäЭÒ飩¡£ -WWW??Word Wide Web?????????????HTML??HTTP??URL?? +WWW£¨Word Wide Web£©µÄÈýÖÖ¼¼Êõ£ºHTML¡¢HTTP¡¢URL¡£ -RFC??Request for Comments??????????????ï‚?????????????????? +RFC£¨Request for Comments£¬Õ÷ÇóÐÞÕýÒâ¼ûÊ飩£¬»¥ÁªÍøµÄÉè¼ÆÎĵµ¡£ ## URL -URI??Uniform Resource Indentifier????????????????URL??Uniform Resource Locator?????????¦Ë??????URN??Uniform Resource Name?????????????????? urn:isbn:0-486-27557-4 ??URI ???? URL ?? URN???? WEB ??? URL ??????§µ????????????????? URL?? +URI£¨Uniform Resource Indentifier£¬Í³Ò»×ÊÔ´±êʶ·û£©£¬URL£¨Uniform Resource Locator£¬Í³Ò»×ÊÔ´¶¨Î»·û£©£¬URN£¨Uniform Resource Name£¬Í³Ò»×ÊÔ´Ãû³Æ£©£¬ÀýÈç urn:isbn:0-486-27557-4 ¡£URI °üº¬ URL ºÍ URN£¬Ä¿Ç° WEB Ö»ÓÐ URL ±È½ÏÁ÷ÐУ¬ËùÒÔ¼ûµ½µÄ»ù±¾¶¼ÊÇ URL¡£ -URL????? +URL¸ñʽ£º ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/4102b7d0-39b9-48d8-82ae-ac4addb7ebfb.jpg) -## ???????????? +## ÇëÇóºÍÏìÓ¦±¨ÎÄ -**??????** +**ÇëÇó±¨ÎÄ** ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/9dbb5fc2-936b-4c6d-b3a7-9617aae45080.jpg) -**???????** +**ÏìÓ¦±¨ÎÄ** ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/c634b5ed-a14b-4302-b40e-3ee387dd3c8a.jpg) -# HTTP ???? +# HTTP ·½·¨ -?????????????????????????§µ????????????¦±? +¿Í»§¶Ë·¢Ë͵ÄÇëÇó±¨ÎĵÚÒ»ÐÐΪÇëÇóÐУ¬°üº¬ÁË·½·¨×ֶΡ£ -## GET???????? +## GET£º»ñÈ¡×ÊÔ´ -## POST????????????? +## POST£º´«ÊäʵÌåÖ÷Ìå -POST ??????????????????????????????????? +POST Ö÷ҪĿµÄ²»ÊÇ»ñÈ¡×ÊÔ´£¬¶øÊÇ´«ÊäʵÌåÖ÷ÌåÊý¾Ý¡£ -GET ?? POST ???????????????????????? GET ?????????????????????? URL?§µ??? POST ??????›¥????????¿ù??? +GET ºÍ POST µÄÇëÇó¶¼ÄÜʹÓöîÍâµÄ²ÎÊý£¬µ«ÊÇ GET µÄ²ÎÊýÊÇÒÔ²éѯ×Ö·û´®³öÏÖÔÚ URLÖУ¬¶ø POST µÄ²ÎÊý´æ´¢ÔÚʵÌåÖ÷Ì岿·Ö¡£ ``` GET /test/demo_form.asp?name1=value1&name2=value2 HTTP/1.1 @@ -88,312 +88,312 @@ Host: w3schools.com name1=value1&name2=value2 ``` -GET ????¦Ç??????? POST ?????????? GET ????????? URL ????????????§Û????????????? GET ???? ASCII ???????????????????????????????? POST ???????????? +GET µÄ´«²Î·½Ê½Ïà±ÈÓÚ POST °²È«ÐԽϲÒòΪ GET ´«µÄ²ÎÊýÔÚ URL ÊǿɼûµÄ£¬¿ÉÄÜ»áй¶˽ÃÜÐÅÏ¢¡£²¢ÇÒ GET Ö»Ö§³Ö ASCII ×Ö·û£¬Èç¹û²ÎÊýΪÖÐÎÄÔò¿ÉÄÜ»á³öÏÖÂÒÂ룬¶ø POST Ö§³Ö±ê×¼×Ö·û¼¯¡£ -## HEAD???????????? +## HEAD£º»ñÈ¡±¨ÎÄÊײ¿ -?? GET ???????????????????????????¿ù??? +ºÍ GET ·½·¨Ò»Ñù£¬µ«ÊDz»·µ»Ø±¨ÎÄʵÌåÖ÷Ì岿·Ö¡£ -?????????? URL ????§¹?????????????????????? +Ö÷ÒªÓÃÓÚÈ·ÈÏ URL µÄÓÐЧÐÔÒÔ¼°×ÊÔ´¸üеÄÈÕÆÚʱ¼äµÈ¡£ -## PUT???????? +## PUT£ºÉÏ´«Îļþ -???????????????????¦Ê????????????????????????????????? WEB ????????¡Â????? +ÓÉÓÚ×ÔÉí²»´øÑéÖ¤»úÖÆ£¬ÈκÎÈ˶¼¿ÉÒÔÉÏ´«Îļþ£¬Òò´Ë´æÔÚ°²È«ÐÔÎÊÌ⣬һ°ã WEB ÍøÕ¾²»Ê¹Óø÷½·¨¡£ -## DELETE???????? +## DELETE£ºÉ¾³ýÎļþ -?? PUT ??????????????????????????? +Óë PUT ¹¦ÄÜÏà·´£¬²¢ÇÒͬÑù²»´øÑéÖ¤»úÖÆ¡£ -## OPTIONS???????????? +## OPTIONS£º²éѯ֧³ÖµÄ·½·¨ -???????? URL ???????????? +²éѯָ¶¨µÄ URL Äܹ»Ö§³ÖµÄ·½·¨¡£ -???? Allow: GET, POST, HEAD, OPTIONS ??????????? +»á·µ»Ø Allow: GET, POST, HEAD, OPTIONS ÕâÑùµÄÄÚÈÝ¡£ -## RACE?????¡¤?? +## RACE£º×·×Ù·¾¶ -???????????¡¤????????????? +·þÎñÆ÷»á½«Í¨ÐÅ·¾¶·µ»Ø¸ø¿Í»§¶Ë¡£ -????????????? Max-Forwards ??????????????????????????????????? 1???????? 0 ????????? +·¢ËÍÇëÇóʱ£¬ÔÚ Max-Forwards Êײ¿×Ö¶ÎÖÐÌîÈëÊýÖµ£¬Ã¿¾­¹ýÒ»¸ö·þÎñÆ÷¾Í»á¼õ 1£¬µ±ÊýֵΪ 0 ʱ¾ÍÍ£Ö¹´«Êä¡£ -TRACE ?????????????????????? XST ??????Cross-Site Tracing??????????????????????????? +TRACE Ò»°ã²»»áʹÓ㬲¢ÇÒËüÈÝÒ×Êܵ½ XST ¹¥»÷£¨Cross-Site Tracing£¬¿çÕ¾×·×Ù£©£¬Òò´Ë¸ü²»»áȥʹÓÃËü¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/ca711108-e937-4d7d-99aa-61b325c61f1a.jpg) -## CONNECT??????????§¿????????? +## CONNECT£ºÒªÇóÓÃËíµÀЭÒéÁ¬½Ó´úÀí -?????§¿????? TCP ???? +ÓÃËíµÀЭÒé½øÐÐ TCP ͨÐÅ¡£ -?????? SSL??Secure Sokets Layer????????????? TLS??Transport Layer Security??????????§¿????????????????????????? +Ö÷ҪʹÓà SSL£¨Secure Sokets Layer£¬°²È«Ì×½Ó×Ö£©ºÍ TLS£¨Transport Layer Security£¬´«Êä²ã°²È«£©Ð­Òé°ÑͨÐÅÄÚÈݼÓÃܺó¾­ÍøÂçËíµÀ´«Êä¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/d8355d56-aa2b-4452-8001-8475cc095af1.jpg) -# HTTP ???? +# HTTP ״̬Âë -???????????????????§Ö????????§µ??????????????????????????????????????? +·þÎñÆ÷·µ»ØµÄÏìÓ¦±¨ÎÄÖеÚÒ»ÐÐΪ״̬ÐУ¬°üº¬ÁË״̬ÂëÒÔ¼°Ô­Òò¶ÌÓÀ´¸æÖª¿Í»§¶ËÇëÇóµÄ½á¹û¡£ -| ???? | ??? | ?????? | +| ״̬Âë | Àà±ð | Ô­Òò¶ÌÓï | | --- | --- | --- | -| 1XX | Informational??????????? | ???????????????? | -| 2XX | Success????????? | ??????????????? | -| 3XX | Redirection??????????? | ??????§Ú??????????????? | -| 4XX | Client Error?????????????? | ????????????????? | -| 5XX | Server Error???????????????? | ????????????????? | +| 1XX | Informational£¨ÐÅÏ¢ÐÔ״̬Â룩 | ½ÓÊÕµÄÇëÇóÕýÔÚ´¦Àí | +| 2XX | Success£¨³É¹¦×´Ì¬Â룩 | ÇëÇóÕý³£´¦ÀíÍê±Ï | +| 3XX | Redirection£¨Öض¨Ïò״̬Â룩 | ÐèÒª½øÐи½¼Ó²Ù×÷ÒÔÍê³ÉÇëÇó | +| 4XX | Client Error£¨¿Í»§¶Ë´íÎó״̬Â룩 | ·þÎñÆ÷ÎÞ·¨´¦ÀíÇëÇó | +| 5XX | Server Error£¨·þÎñÆ÷´íÎó״̬Â룩 | ·þÎñÆ÷´¦ÀíÇëÇó³ö´í | -## 2XX ??? +## 2XX ³É¹¦ **200 OK** -**204 No Content**???????????????????????????????????????????¿ù?????????????????????????????????????????????????????¨¢? +**204 No Content**£ºÇëÇóÒѾ­³É¹¦´¦Àí£¬µ«ÊÇ·µ»ØµÄÏìÓ¦±¨ÎIJ»°üº¬ÊµÌåµÄÖ÷Ì岿·Ö¡£Ò»°ãÔÚÖ»ÐèÒª´Ó¿Í»§¶ËÍù·þÎñÆ÷·¢ËÍÐÅÏ¢£¬¶ø²»ÐèÒª·µ»ØÊý¾ÝʱʹÓᣠ**206 Partial Content** -## 3XX ????? +## 3XX ÖØ¶¨Ïò -**301 Moved Permanently**????????????? +**301 Moved Permanently**£ºÓÀ¾ÃÐÔÖØ¶¨Ïò -**302 Found**???????????? +**302 Found**£ºÁÙʱÐÔÖØ¶¨Ïò **303 See Other** -?????? HTTP §¿??ÕÇ 301??302 ????????????????? POST ??????? GET ???????????????????????? 301??302 ?? 303 ??????????? POST ??????? GET ?????? +×¢£ºËäÈ» HTTP ЭÒ鹿¶¨ 301¡¢302 ״̬ÏÂÖØ¶¨Ïòʱ²»ÔÊÐí°Ñ POST ·½·¨¸Ä³É GET ·½·¨£¬µ«ÊÇ´ó¶àÊýä¯ÀÀÆ÷¶¼»á°Ñ 301¡¢302 ºÍ 303 ״̬ϵÄÖØ¶¨Ïò°Ñ POST ·½·¨¸Ä³É GET ·½·¨¡£ -**304 Not Modified**???????????????????§»?????????»ÇIf-Match??If-ModifiedSince??If-None-Match??If-Range??If-Unmodified-Since???????????????????????????? 304 ???? +**304 Not Modified**£ºÈç¹ûÇëÇó±¨ÎÄÊײ¿°üº¬Ò»Ð©Ìõ¼þ£¬ÀýÈ磺If-Match£¬If-ModifiedSince£¬If-None-Match£¬If-Range£¬If-Unmodified-Since£¬µ«ÊDz»Âú×ãÌõ¼þ£¬Ôò·þÎñÆ÷»á·µ»Ø 304 ״̬Âë¡£ -**307 Temporary Redirect**???????????? 302 ?????????????? 307 ??????????????????????? POST ??????? GET ?????? +**307 Temporary Redirect**£ºÁÙÊ±ÖØ¶¨Ïò£¬Óë 302 µÄº¬ÒåÀàËÆ£¬µ«ÊÇ 307 ÒªÇóä¯ÀÀÆ÷²»»á°ÑÖØ¶¨ÏòÇëÇóµÄ POST ·½·¨¸Ä³É GET ·½·¨¡£ -## 4XX ???????? +## 4XX ¿Í»§¶Ë´íÎó -**400 Bad Request**?????????§Õ????????? +**400 Bad Request**£ºÇëÇó±¨ÎÄÖдæÔÚÓï·¨´íÎó -**401 Unauthorized**??????????????????????????? HTTP ?????BASIC ?????DIGEST ????????????????????????§Û?????????????????????? +**401 Unauthorized**£º¸Ã״̬Âë±íʾ·¢Ë͵ÄÇëÇóÐèÒªÓÐͨ¹ý HTTP ÈÏÖ¤£¨BASIC ÈÏÖ¤¡¢DIGEST ÈÏÖ¤£©µÄÈÏÖ¤ÐÅÏ¢¡£Èç¹û֮ǰÒѽøÐйýÒ»´ÎÇëÇó£¬Ôò±íʾÓû§ÈÏ֤ʧ°Ü¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/b1b4cf7d-c54a-4ff1-9741-cd2eea331123.jpg) -**403 Forbidden**????????????????????§Ò?????????????????¨À? +**403 Forbidden**£ºÇëÇ󱻾ܾø£¬·þÎñÆ÷¶ËûÓбØÒª¸ø³ö¾Ü¾øµÄÏêϸÀíÓÉ¡£ **404 Not Found** -## 5XX ?????????? +## 5XX ·þÎñÆ÷´íÎó -**500 Internal Server Error**???????????????????????????? +**500 Internal Server Error**£º·þÎñÆ÷ÕýÔÚÖ´ÐÐÇëÇóʱ·¢Éú´íÎó -**503 Service Unavilable**???????????????????????????????????????????????????????????? +**503 Service Unavilable**£º¸Ã״̬Âë±íÃ÷·þÎñÆ÷ÔÝʱ´¦ÓÚ³¬¸ºÔØ»òÕýÔÚ½øÐÐÍ£»úά»¤£¬ÏÖÔÚÎÞ·¨´¦ÀíÇëÇó¡£ -# HTTP??? +# HTTPÊײ¿ -HTTP ??????????????????????????? 4 ????????????¦²?????????¦±??????????¦±?????????¦Ê?????????¦±??????????¦Ì??¾©??????????????????????????? +HTTP ±¨Îİüº¬ÁËÊײ¿ºÍÖ÷ÌåÁ½²¿·Ö¡£ÓÐ 4 ÖÖÀàÐ͵ÄÊײ¿×ֶΣºÍ¨ÓÃÊײ¿×ֶΡ¢ÇëÇóÊײ¿×ֶΡ¢ÏìÓ¦Êײ¿×ֶκÍʵÌåÊײ¿×ֶΡ£¸÷ÖÖÊײ¿×ֶμ°Æäº¬ÒåÈçÏ£¨²»ÐèҪȫ¼Ç£¬½ö¹©²éÔÄ£©£º -## ????????? +## ͨÓÃÊײ¿×Ö¶Î -| ???????? | ??? | +| Êײ¿×Ö¶ÎÃû | ˵Ã÷ | | -- | -- | -| Cache-Control | ??????????? | -| Connection | ????????? ???????? | -| Date | ???????????????? | -| Pragma | ??????? | -| Trailer | ?????????????? | -| Transfer-Encoding | ??????????????????? | -| Upgrade | ?????????§¿?? | -| Via | ????????????????? | -| Warning | ?????? | +| Cache-Control | ¿ØÖÆ»º´æµÄÐÐΪ | +| Connection | ÖðÌøÊײ¿¡¢ Á¬½ÓµÄ¹ÜÀí | +| Date | ´´½¨±¨ÎĵÄÈÕÆÚʱ¼ä | +| Pragma | ±¨ÎÄÖ¸Áî | +| Trailer | ±¨ÎÄÄ©¶ËµÄÊײ¿Ò»ÀÀ | +| Transfer-Encoding | Ö¸¶¨±¨ÎÄÖ÷ÌåµÄ´«Êä±àÂ뷽ʽ | +| Upgrade | Éý¼¶ÎªÆäËûЭÒé | +| Via | ´úÀí·þÎñÆ÷µÄÏà¹ØÐÅÏ¢ | +| Warning | ´íÎó֪ͨ | -## ?????????? +## ÇëÇóÊײ¿×Ö¶Î -| ???????? | ??? | +| Êײ¿×Ö¶ÎÃû | ˵Ã÷ | | -- | -- | -| Accept | ??????????????????? | -| Accept-Charset | ?????????? | -| Accept-Encoding | ???????????? | -| Accept-Language | ?????????????????? | -| Authorization | Web?????? | -| Expect | ????????????????? | -| From | ?????????????? | -| Host | ???????????????? | -| If-Match | ?????????ETag?? | -| If-Modified-Since | ?????????????? | -| If-None-Match | ??????????? If-Match ???? | -| If-Range | ???¦Ä???????????? Byte ???¦¶???? | -| If-Unmodified-Since | ????????????????If-Modified-Since???? | -| Max-Forwards | ??????????? | -| Proxy-Authorization | ??????????????????????? | -| Range | ????????¦¶???? | -| Referer | ???????? URI ????????? | -| TE | ????????????? | -| User-Agent | HTTP ???????????? | +| Accept | Óû§´úÀí¿É´¦ÀíµÄýÌåÀàÐÍ | +| Accept-Charset | ÓÅÏȵÄ×Ö·û¼¯ | +| Accept-Encoding | ÓÅÏȵÄÄÚÈݱàÂë | +| Accept-Language | ÓÅÏȵÄÓïÑÔ£¨×ÔÈ»ÓïÑÔ£© | +| Authorization | WebÈÏÖ¤ÐÅÏ¢ | +| Expect | ÆÚ´ý·þÎñÆ÷µÄÌØ¶¨ÐÐΪ | +| From | Óû§µÄµç×ÓÓÊÏ䵨ַ | +| Host | ÇëÇó×ÊÔ´ËùÔÚ·þÎñÆ÷ | +| If-Match | ±È½ÏʵÌå±ê¼Ç£¨ETag£© | +| If-Modified-Since | ±È½Ï×ÊÔ´µÄ¸üÐÂʱ¼ä | +| If-None-Match | ±È½ÏʵÌå±ê¼Ç£¨Óë If-Match Ïà·´£© | +| If-Range | ×ÊԴδ¸üÐÂʱ·¢ËÍʵÌå Byte µÄ·¶Î§ÇëÇó | +| If-Unmodified-Since | ±È½Ï×ÊÔ´µÄ¸üÐÂʱ¼ä£¨ÓëIf-Modified-SinceÏà·´£© | +| Max-Forwards | ×î´ó´«ÊäÖðÌøÊý | +| Proxy-Authorization | ´úÀí·þÎñÆ÷ÒªÇó¿Í»§¶ËµÄÈÏÖ¤ÐÅÏ¢ | +| Range | ʵÌåµÄ×Ö½Ú·¶Î§ÇëÇó | +| Referer | ¶ÔÇëÇóÖÐ URI µÄԭʼ»ñÈ¡·½ | +| TE | ´«Êä±àÂëµÄÓÅÏȼ¶ | +| User-Agent | HTTP ¿Í»§¶Ë³ÌÐòµÄÐÅÏ¢ | -## ????????? +## ÏìÓ¦Êײ¿×Ö¶Î -| ???????? | ??? | +| Êײ¿×Ö¶ÎÃû | ˵Ã÷ | | -- | -- | -| Accept-Ranges | ??????????¦¶???? | -| Age | ?????????????????? | -| ETag | ??????????? | -| Location | ????????????????URI | -| Proxy-Authenticate | ?????????????????????? | -| Retry-After | ????¦Ç?????????????? | -| Server | HTTP????????????? | -| Vary | ???????????????????? | -| WWW-Authenticate | ??????????????????? | +| Accept-Ranges | ÊÇ·ñ½ÓÊÜ×Ö½Ú·¶Î§ÇëÇó | +| Age | ÍÆËã×ÊÔ´´´½¨¾­¹ýʱ¼ä | +| ETag | ×ÊÔ´µÄÆ¥ÅäÐÅÏ¢ | +| Location | Áî¿Í»§¶ËÖØ¶¨ÏòÖÁÖ¸¶¨URI | +| Proxy-Authenticate | ´úÀí·þÎñÆ÷¶Ô¿Í»§¶ËµÄÈÏÖ¤ÐÅÏ¢ | +| Retry-After | ¶ÔÔٴη¢ÆðÇëÇóµÄʱ»úÒªÇó | +| Server | HTTP·þÎñÆ÷µÄ°²×°ÐÅÏ¢ | +| Vary | ´úÀí·þÎñÆ÷»º´æµÄ¹ÜÀíÐÅÏ¢ | +| WWW-Authenticate | ·þÎñÆ÷¶Ô¿Í»§¶ËµÄÈÏÖ¤ÐÅÏ¢ | -## ????????? +## ʵÌåÊײ¿×Ö¶Î -| ???????? | ??? | +| Êײ¿×Ö¶ÎÃû | ˵Ã÷ | | -- | -- | -| Allow | ?????????HTTP???? | -| Content-Encoding | ???????????????? | -| Content-Language | ??????????????? | -| Content-Length | ?????????§³????¦Ë?? ???? | -| Content-Location | ???????????URI | -| Content-MD5 | ????????????? | -| Content-Range | ????????¦Ë?¡Â?¦¶ | -| Content-Type | ??????????????? | -| Expires | ?????????????????? | -| Last-Modified | ?????????????????? | +| Allow | ×ÊÔ´¿ÉÖ§³ÖµÄHTTP·½·¨ | +| Content-Encoding | ʵÌåÖ÷ÌåÊÊÓõıàÂ뷽ʽ | +| Content-Language | ʵÌåÖ÷ÌåµÄ×ÔÈ»ÓïÑÔ | +| Content-Length | ʵÌåÖ÷ÌåµÄ´óС£¨µ¥Î»£º ×Ö½Ú£© | +| Content-Location | Ìæ´ú¶ÔÓ¦×ÊÔ´µÄURI | +| Content-MD5 | ʵÌåÖ÷ÌåµÄ±¨ÎÄÕªÒª | +| Content-Range | ʵÌåÖ÷ÌåµÄλÖ÷¶Î§ | +| Content-Type | ʵÌåÖ÷ÌåµÄýÌåÀàÐÍ | +| Expires | ʵÌåÖ÷Ìå¹ýÆÚµÄÈÕÆÚʱ¼ä | +| Last-Modified | ×ÊÔ´µÄ×îºóÐÞ¸ÄÈÕÆÚʱ¼ä | -# ??????? +# ¾ßÌåÓ¦Óà ## Cookie -HTTP §¿????????????????????? HTTP §¿?ý—?????????????????????????HTTP/1.1 ???? Cookie ????????????? +HTTP ЭÒéÊÇÎÞ״̬µÄ£¬Ö÷ÒªÊÇΪÁËÈà HTTP ЭÒ龡¿ÉÄܼòµ¥£¬Ê¹µÃËüÄܹ»´¦Àí´óÁ¿ÊÂÎñ¡£HTTP/1.1 ÒýÈë Cookie À´±£´æ×´Ì¬ÐÅÏ¢¡£ -????????????????????? Set-Cookie ??¦²???????????????? Cookie ??????›Ô??????§³????????????????????????§Ø??? Cookie ????????????§Ñ??? Cookie ??¦²??????????????????????????????Cookie ?????????????????????§µ??????????????? +·þÎñÆ÷»á·¢Ë͵ÄÏìÓ¦±¨Îİüº¬ Set-Cookie ×ֶΣ¬¿Í»§¶ËµÃµ½¸ÃÏàÓ¦ºó°Ñ Cookie ÄÚÈݱ£´æµ½ä¯ÀÀÆ÷ÖС£Ï´ÎÔÙ·¢ËÍÇëÇóʱ£¬´Óä¯ÀÀÆ÷ÖжÁ³ö Cookie Öµ£¬ÔÚÇëÇó±¨ÎÄÖаüº¬ Cookie ×ֶΣ¬ÕâÑù·þÎñÆ÷¾ÍÖªµÀ¿Í»§¶ËµÄ״̬ÐÅÏ¢ÁË¡£Cookie ״̬ÐÅÏ¢±£´æÔÚ¿Í»§¶Ëä¯ÀÀÆ÷ÖУ¬¶ø²»ÊÇ·þÎñÆ÷ÉÏ¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/ff17c103-750a-4bb8-9afa-576327023af9.png) -Set-Cookie ?????????????? +Set-Cookie ×Ö¶ÎÓÐÒÔÏÂÊôÐÔ£º -| ???? | ??? | +| ÊôÐÔ | ˵Ã÷ | | -- | -- | -| NAME=VALUE | ???? Cookie ?????????????????? | -| expires=DATE | Cookie ????§¹???????????????????????????????? | -| path=PATH | ??????????????????? Cookie ????????????????????????????????????? | -| domain=???? | ??? Cookie ??????????????????????????????? Cookie ??????????????? | -| Secure | ???? HTTPS ???????????? Cookie | -| HttpOnly | ?????????? Cookie ????? JavaScript ??????? | +| NAME=VALUE | ¸³Óè Cookie µÄÃû³ÆºÍÆäÖµ£¨±ØÐèÏ | +| expires=DATE | Cookie µÄÓÐЧÆÚ£¨Èô²»Ã÷È·Ö¸¶¨ÔòĬÈÏΪä¯ÀÀÆ÷¹Ø±ÕǰΪֹ£© | +| path=PATH | ½«·þÎñÆ÷ÉϵÄÎļþĿ¼×÷Ϊ Cookie µÄÊÊÓöÔÏó£¨Èô²»Ö¸¶¨ÔòĬÈÏΪÎĵµËùÔÚµÄÎļþĿ¼£© | +| domain=ÓòÃû | ×÷Ϊ Cookie ÊÊÓöÔÏóµÄÓòÃû£¨Èô²»Ö¸¶¨ÔòĬÈÏΪ´´½¨ Cookie µÄ·þÎñÆ÷µÄÓòÃû£© | +| Secure | ½öÔÚ HTTPS °²È«Í¨ÐÅʱ²Å»á·¢ËÍ Cookie | +| HttpOnly | ¼ÓÒÔÏÞÖÆ£¬Ê¹ Cookie ²»Äܱ» JavaScript ½Å±¾·ÃÎÊ | -**Session ?? Cookie ????** +**Session ºÍ Cookie Çø±ð** -Session ?????????????????????????¦²???? Session ???????¦·??????Session ID??????????????????? Session ??????????????????????????? Set-Cookie ??¦²????????????? sid ?????????????????? Session ID?????????????? Cookie ????????????§µ?????????????????????? Session ID??HTTP ???? Session ?? Cookie ???????????????????????????????? Session ????????????Cookie ????????? +Session ÊÇ·þÎñÆ÷ÓÃÀ´¸ú×ÙÓû§µÄÒ»ÖÖÊֶΣ¬Ã¿¸ö Session ¶¼ÓÐÒ»¸öΨһ±êʶ£ºSession ID¡£µ±·þÎñÆ÷´´½¨ÁËÒ»¸ö Session ʱ£¬¸ø¿Í»§¶Ë·¢Ë͵ÄÏìÓ¦±¨ÎľͰüº¬ÁË Set-Cookie ×ֶΣ¬ÆäÖÐÓÐÒ»¸öÃûΪ sid µÄ¼üÖµ¶Ô£¬Õâ¸ö¼üÖµ¶Ô¾ÍÊÇ Session ID¡£¿Í»§¶ËÊÕµ½ºó¾Í°Ñ Cookie ±£´æÔÚä¯ÀÀÆ÷ÖУ¬²¢ÇÒÖ®ºó·¢Ë͵ÄÇëÇó±¨Îͼ°üº¬ Session ID¡£HTTP ¾ÍÊÇ Session ºÍ Cookie ÕâÁ½ÖÖ·½Ê½Ò»ÆðºÏ×÷À´ÊµÏÖ¸ú×ÙÓû§×´Ì¬µÄ£¬¶ø Session ÓÃÓÚ·þÎñÆ÷¶Ë£¬Cookie ÓÃÓÚ¿Í»§¶Ë¡£ -**????????? Cookie ?????** +**ä¯ÀÀÆ÷½ûÓà Cookie µÄÇé¿ö** -????? URL ??§Õ???????? URL ??????? sid=xxx ?? +»áʹÓà URL ÖØÐ´¼¼Êõ£¬ÔÚ URL ºóÃæ¼ÓÉÏ sid=xxx ¡£ -**??? Cookie ????????????????????§Õ** +**ʹÓà Cookie ʵÏÖÓû§ÃûºÍÃÜÂëµÄ×Ô¶¯Ìîд** -????????????? Cookie ?§Ø????????????????????????§Õ?? +ÍøÕ¾½Å±¾»á×Ô¶¯´Ó Cookie ÖжÁÈ¡Óû§ÃûºÍÃÜÂ룬´Ó¶øÊµÏÖ×Ô¶¯Ìîд¡£ -## ???? +## »º´æ -????????œ]?????????????????§Ý??????????????????§Ý??µµ +ÓÐÁ½ÖÖ»º´æ·½·¨£ºÈôúÀí·þÎñÆ÷½øÐлº´æºÍÈÿͻ§¶Ëä¯ÀÀÆ÷½øÐлº´æ¡£ -Cache-Control ???????????????? +Cache-Control ÓÃÓÚ¿ØÖÆ»º´æµÄÐÐΪ¡£ -Cache-Control: no-cache ????????ÈÉ?????????????????????????????§Ü??§Ú???????????????????????????????????????????????????????????§Ü??§Ú???????????????????????????§Ý??µµ +Cache-Control: no-cache ÓÐÁ½ÖÖº¬Ò壬Èç¹ûÊǿͻ§¶ËÏò»º´æ·þÎñÆ÷·¢Ë͵ÄÇëÇó±¨ÎÄÖк¬ÓиÃÖ¸Á±íʾ¿Í»§¶Ë²»ÏëÒª»º´æµÄ×ÊÔ´£»Èç¹ûÊÇÔ´·þÎñÆ÷Ïò»º´æ·þÎñÆ÷·¢Ë͵ÄÏìÓ¦±¨ÎÄÖк¬ÓиÃÖ¸Á±íʾ»º´æ·þÎñÆ÷²»ÄܶÔ×ÊÔ´½øÐлº´æ¡£ -Expires ??¦Ï????????????????????????????????????????? Cache-Control ????? max-age ???????????????? Expires??????????? max-age ??þŸ +Expires ×ֶοÉÒÔÓÃÓÚ¸æÖª»º´æ·þÎñÆ÷¸Ã×ÊԴʲôʱºò»á¹ýÆÚ¡£µ±Êײ¿×Ö¶Î Cache-Control ÓÐÖ¸¶¨ max-age Ö¸Áîʱ£¬±ÈÆðÊײ¿×Ö¶Î Expires£¬»áÓÅÏÈ´¦Àí max-age Ö¸Áî¡£ -## ??????? +## ³Ö¾ÃÁ¬½Ó -?????????????????????????? HTML ????????????????? HTML ?????????????????????????????????? HTTP ??????????? TCP ?????????????????????????**???????** ??????????? TCP ?????????§Ø?? HTTP ????HTTP/1.1????????§Ö?????????????????? +µ±ä¯ÀÀÆ÷·ÃÎÊÒ»¸ö°üº¬¶àÕÅͼƬµÄ HTML Ò³ÃæÊ±£¬³ýÁËÇëÇó·ÃÎÊ HTML Ò³Ãæ×ÊÔ´£¬»¹»áÇëÇóͼƬ×ÊÔ´£¬Èç¹ûÿ½øÐÐÒ»´Î HTTP ͨОÍÒª¶Ï¿ªÒ»´Î TCP Á¬½Ó£¬Á¬½Ó½¨Á¢ºÍ¶Ï¿ªµÄ¿ªÏú»áºÜ´ó¡£**³Ö¾ÃÁ¬½Ó** Ö»ÐèÒª½øÐÐÒ»´Î TCP Á¬½Ó¾ÍÄܽøÐжà´Î HTTP ͨÐÅ¡£HTTP/1.1¿ªÊ¼£¬ËùÓеÄÁ¬½ÓĬÈ϶¼Êdz־ÃÁ¬½Ó¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/c73a0b78-5f46-4d2d-a009-dab2a999b5d8.jpg) -????????????? Connection ?????¦Í??§Û???HTTP/1.1 ???HTTP ????????????????????? TCP ??????????????????????????????????? Connection: close ??????HTTP/1.1?????????????????????????????????????? Keep-Alive?? +³Ö¾ÃÁ¬½ÓÐèҪʹÓà Connection Êײ¿×ֶνøÐйÜÀí¡£HTTP/1.1 ¿ªÊ¼HTTP ĬÈÏÊdz־û¯Á¬½ÓµÄ£¬Èç¹ûÒª¶Ï¿ª TCP Á¬½Ó£¬ÐèÒªÓɿͻ§¶Ë»òÕß·þÎñÆ÷¶ËÌá³ö¶Ï¿ª£¬Ê¹Óà Connection: close £»¶øÔÚHTTP/1.1֮ǰĬÈÏÊǷdz־û¯Á¬½ÓµÄ£¬Èç¹ûҪά³Ö³ÖÐøÁ¬½Ó£¬ÐèҪʹÓà Keep-Alive¡£ -??????????????????????????????????????????????????????????????????????? +¹ÜÏß»¯·½Ê½¿ÉÒÔͬʱ·¢ËͶà¸öÇëÇóºÍÏìÓ¦£¬¶ø²»ÐèÒª·¢ËÍÒ»¸öÇëÇóÈ»ºóµÈ´ýÏìÓ¦Ö®ºóÔÙ·¢ÏÂÒ»¸öÇëÇó¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/6943e2af-5a70-4004-8bee-b33d60f39da3.jpg) -## ???? +## ±àÂë -????Encoding???????????????????????????????§µ?gzip??compress??deflate??identity?????? identity ???????????????????? +±àÂ루Encoding£©Ö÷ÒªÊÇΪÁ˶ÔʵÌå½øÐÐѹËõ¡£³£ÓõıàÂëÓУºgzip¡¢compress¡¢deflate¡¢identity£¬ÆäÖÐ identity ±íʾ²»Ö´ÐÐѹËõµÄ±àÂë¸ñʽ¡£ -## ??ø‰?? +## ·Ö¿é´«Êä -??ø‰??Chunked Transfer Coding???????????????ï…??????????????µµ +·Ö¿é´«Ê䣨Chunked Transfer Coding£©¿ÉÒÔ°ÑÊý¾Ý·Ö¸î³É¶à¿é£¬ÈÃä¯ÀÀÆ÷Öð²½ÏÔÊ¾Ò³Ãæ¡£ -## ???????? +## ¶à²¿·Ö¶ÔÏó¼¯ºÏ -???????????????§Ø???????????????????????????? boundary ??¦Æ???????????§Ù???????????????????????¦±? +Ò»·Ý±¨ÎÄÖ÷ÌåÄڿɺ¬ÓжàÀàÐ͵ÄʵÌåͬʱ·¢ËÍ£¬Ã¿¸ö²¿·ÖÖ®¼äÓà boundary ×ֶζ¨ÒåµÄ·Ö¸ô·û½øÐзָô£»Ã¿¸ö²¿·Ö¶¼¿ÉÒÔÓÐÊײ¿×ֶΡ£ -???íà???????????????????¡¤???? +ÀýÈ磬ÉÏ´«¶à¸ö±íµ¥Ê±¿ÉÒÔʹÓÃÈçÏ·½Ê½£º ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/decb0936-e83c-4a55-840a-fe8aa101ac61.png) -## ??¦¶???? +## ·¶Î§ÇëÇó -???????????§Ø???????????????????????????¦¶???????????????????¦Ä????????????????????????????????¡¤???????????? +Èç¹ûÍøÂç³öÏÖÖжϣ¬·þÎñÆ÷Ö»·¢ËÍÁËÒ»²¿·ÖÊý¾Ý£¬·¶Î§ÇëÇóʹµÃ¿Í»§¶ËÄܹ»Ö»ÇëÇóδ·¢Ë͵ÄÄDz¿·ÖÊý¾Ý£¬´Ó¶ø±ÜÃâ·þÎñÆ÷¶ËÖØÐ·¢ËÍËùÓÐÊý¾Ý¡£ -???????????????? Range ??¦²?????????????¦¶?????? Range : bytes = 5001-10000????????????????????? 206 Partial Content ???? +ÔÚÇëÇó±¨ÎÄÊײ¿ÖÐÌí¼Ó Range ×ֶΣ¬È»ºóÖ¸¶¨ÇëÇóµÄ·¶Î§£¬ÀýÈç Range : bytes = 5001-10000¡£ÇëÇó³É¹¦µÄ»°·þÎñÆ÷·¢ËÍ 206 Partial Content ״̬¡£ -## ????§¿?? +## ÄÚÈÝЭÉÌ -???????§¿???????????????????????????????????????????????äï???????µµ +ͨ¹ýÄÚÈÝЭÉÌ·µ»Ø×îºÏÊʵÄÄÚÈÝ£¬ÀýÈç¸ù¾Ýä¯ÀÀÆ÷µÄĬÈÏÓïÑÔÑ¡Ôñ·µ»ØÖÐÎĽçÃæ»¹ÊÇÓ¢ÎĽçÃæ¡£ -?�p?????????¦²?Accept??Accept-Charset??Accept-Encoding??Accept-Language??Content-Language?? +Éæ¼°ÒÔÏÂÊײ¿×ֶΣºAccept¡¢Accept-Charset¡¢Accept-Encoding¡¢Accept-Language¡¢Content-Language¡£ -## ???????? +## ÐéÄâÖ÷»ú -??????????????????????????????§Ø??????????????????????????????????? +ʹÓÃÐéÄâÖ÷»ú¼¼Êõ£¬Ê¹µÃһ̨·þÎñÆ÷ÓµÓжà¸öÓòÃû£¬²¢ÇÒÔÚÂß¼­ÉÏ¿ÉÒÔ¿´³É¶à¸ö·þÎñÆ÷¡£ -## ?????????? +## ͨÐÅÊý¾Ýת·¢ -**????** +**´úÀí** -???????????????????????????????????????????????????????????????????? URL?? +´úÀí·þÎñÆ÷½ÓÊܿͻ§¶ËµÄÇëÇ󣬲¢ÇÒת·¢¸øÆäËü·þÎñÆ÷¡£´úÀí·þÎñÆ÷Ò»°ãÊÇ͸Ã÷µÄ£¬²»»á¸Ä±ä URL¡£ -???????????????????èå????????????????????????? +ʹÓôúÀíµÄÖ÷ҪĿµÄÊÇ£º»º´æ¡¢ÍøÂç·ÃÎÊ¿ØÖÆÒÔ¼°¼Ç¼·ÃÎÊÈÕÖ¾¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/c07035c3-a9ba-4508-8e3c-d8ae4c6ee9ee.jpg) -**????** +**Íø¹Ø** -????????????????????????????? HTTP ????????§¿?????????????????? HTTP ??????????? +Óë´úÀí·þÎñÆ÷²»Í¬µÄÊÇ£¬Íø¹Ø·þÎñÆ÷»á½« HTTP ת»¯ÎªÆäËüЭÒé½øÐÐͨÐÅ£¬´Ó¶øÆäËü·Ç HTTP ·þÎñÆ÷µÄ·þÎñ¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/81375888-6be1-476f-9521-42eea3e3154f.jpg) -**???** +**ËíµÀ** -??? SSL ???????¦²???????????????�Ü???????????????¡¤?? +ʹÓà SSL µÈ¼ÓÃÜÊֶΣ¬Îª¿Í»§¶ËºÍ·þÎñÆ÷Ö®¼ä½¨Á¢Ò»Ìõ°²È«µÄͨÐÅÏß·¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/64b95403-d976-421a-8b45-bac89c0b5185.jpg) # HTTPs -HTTP ?????¡ã???????? +HTTP ÓÐÒÔϰ²È«ÐÔÎÊÌ⣺ -1. ????????????????????????? -2. ???????????????????§á???????¦Á??? -3. ???????????????????????§á?????????? +1. ͨÐÅʹÓÃÃ÷ÎÄ£¬ÄÚÈÝ¿ÉÄܻᱻÇÔÌý£» +2. ²»Ñé֤ͨÐÅ·½µÄÉí·Ý£¬Òò´ËÓпÉÄÜÔâÓöαװ£» +3. ÎÞ·¨Ö¤Ã÷±¨ÎĵÄÍêÕûÐÔ£¬ËùÒÔÓпÉÄÜÒÑÔâ´Û¸Ä¡£ -HTTPs ????????§¿?ï…???? HTTP ??? SSL??Secure Socket Layer?????????? SSL ?? TCP ?????????? SSL??HTTPs ???????????????????????? +HTTPs ²¢²»ÊÇÐÂЭÒ飬¶øÊÇ HTTP ÏÈºÍ SSL£¨Secure Socket Layer£©Í¨ÐÅ£¬ÔÙÓÉ SSL ºÍ TCP ͨÐÅ¡£Í¨¹ýʹÓà SSL£¬HTTPs ÌṩÁ˼ÓÃÜ¡¢ÈÏÖ¤ºÍÍêÕûÐÔ±£»¤¡£ -## ???? +## ¼ÓÃÜ -??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????¨´?????????§Þ?????????????????????????????????? +ÓÐÁ½ÖÖ¼ÓÃÜ·½Ê½£º¶Ô³ÆÃÜÔ¿¼ÓÃܺ͹«¿ªÃÜÔ¿¼ÓÃÜ¡£¶Ô³ÆÃÜÔ¿¼ÓÃܵļÓÃܺͽâÃÜʹÓÃͬһÃÜÔ¿£¬¶ø¹«¿ªÃÜÔ¿¼ÓÃÜʹÓÃÒ»¶ÔÃÜÔ¿ÓÃÓÚ¼ÓÃܺͽâÃÜ£¬·Ö±ðΪ¹«¿ªÃÜÔ¿ºÍ˽ÓÐÃÜÔ¿¡£¹«¿ªÃÜÔ¿ËùÓÐÈ˶¼¿ÉÒÔ»ñµÃ£¬Í¨ÐÅ·¢ËÍ·½»ñµÃ½ÓÊÕ·½µÄ¹«¿ªÃÜÔ¿Ö®ºó£¬¾Í¿ÉÒÔʹÓù«¿ªÃÜÔ¿½øÐмÓÃÜ£¬½ÓÊÕ·½ÊÕµ½Í¨ÐÅÄÚÈݺóʹÓÃ˽ÓÐÃÜÔ¿½âÃÜ¡£ -????????????????????????????????????????????????????????? +¶Ô³ÆÃÜÔ¿¼ÓÃܵÄȱµã£ºÎÞ·¨°²È«´«ÊäÃÜÔ¿£»¹«¿ªÃÜÔ¿¼ÓÃܵÄȱµã£ºÏà¶ÔÀ´Ëµ¸üºÄʱ¡£ -HTTPs ???? **??????????**????¨´????????????????????????????????????????????????????§µ?????????????????? +HTTPs ²ÉÓà **»ìºÏµÄ¼ÓÃÜ»úÖÆ**£¬Ê¹Óù«¿ªÃÜÔ¿¼ÓÃÜÓÃÓÚ´«Êä¶Ô³ÆÃÜÔ¿£¬Ö®ºóʹÓöԳÆÃÜÔ¿¼ÓÃܽøÐÐͨÐÅ¡££¨ÏÂͼÖУ¬¹²ÏíÃÜÔ¿¼´¶Ô³ÆÃÜÔ¿£© ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/110b1a9b-87cd-45c3-a21d-824623715b33.jpg) -## ??? +## ÈÏÖ¤ -?????? **???** ???????????????????????§Û???????????????????????????????????????????????????????????????? +ͨ¹ýʹÓà **Ö¤Êé** À´¶ÔͨÐÅ·½½øÐÐÈÏÖ¤¡£Ö¤ÊéÖÐÓй«¿ªÃÜÔ¿Êý¾Ý£¬Èç¹û¿ÉÒÔÑéÖ¤¹«¿ªÃÜÔ¿µÄÈ·ÊôÓÚͨÐÅ·½µÄ£¬ÄÇô¾Í¿ÉÒÔÈ·¶¨Í¨ÐÅ·½Êǿɿ¿µÄ¡£ -????????????????CA??Certificate -Authority??????????????ï…??????? CA ???????????? +Êý×ÖÖ¤ÊéÈÏÖ¤»ú¹¹£¨CA£¬Certificate +Authority£©°ä·¢µÄ¹«¿ªÃÜÔ¿Ö¤Ê飬¿ÉÒÔͨ¹ý CA ¶ÔÆä½øÐÐÑéÖ¤¡£ -???? HTTPs ?????????????????ú€????????????????????§Ö???????????????????????? +½øÐÐ HTTPs ͨÐÅʱ£¬·þÎñÆ÷»á°ÑÖ¤Êé·¢Ë͸ø¿Í»§¶Ë£¬¿Í»§¶ËÈ¡µÃÆäÖеĹ«¿ªÃÜÔ¿Ö®ºó£¬¾Í¿ÉÒÔ¿ªÊ¼¼ÓÃܹý³Ì¡£ -??? OpenSSL ?????????????????????????????????????????????????????????????????î•??????????¡Â???????????????????????????????????????????????????????????? +ʹÓà OpenSSL ÕâÌ׿ªÔ´³ÌÐò£¬Ã¿¸öÈ˶¼¿ÉÒÔ¹¹½¨Ò»Ì×ÊôÓÚ×Ô¼ºµÄÈÏÖ¤»ú¹¹£¬´Ó¶ø×Ô¼º¸ø×Ô¼º°ä·¢·þÎñÆ÷Ö¤Êé¡£ä¯ÀÀÆ÷ÔÚ·ÃÎʸ÷þÎñÆ÷ʱ£¬»áÏÔʾ¡°ÎÞ·¨È·ÈÏÁ¬½Ó°²È«ÐÔ¡±»ò¡°¸ÃÍøÕ¾µÄ°²È«Ö¤Êé´æÔÚÎÊÌ⡱µÈ¾¯¸æÏûÏ¢¡£ -?????????????????§Ñ????????????????????????????????????ï…???????????§³? +¿Í»§¶ËÖ¤ÊéÐèÒªÓû§×ÔÐа²×°£¬Ö»ÓÐÔÚÒµÎñÐèÒª·Ç³£¸ß°²È«ÐÔʱ²ÅʹÓÿͻ§¶ËÖ¤Ê飬ÀýÈçÍøÉÏÒøÐС£ -## ?????? +## ÍêÕûÐÔ -SSL ???????????????????? +SSL ÌṩժҪ¹¦ÄÜÀ´ÑéÖ¤ÍêÕûÐÔ¡£ diff --git a/notes/JVM.md b/notes/JVM.md index 344d5a65..597eda7c 100644 --- a/notes/JVM.md +++ b/notes/JVM.md @@ -1,166 +1,166 @@ -* [??????](#??????) - * [1. ?????????](#1-?????????) - * [2. Java ??????](#2-java-??????) - * [3. ????????](#3-????????) - * [4. Java ??](#4-java-??) - * [5. ??????](#5-??????) - * [6. ???????????](#6-???????????) - * [7. ??????](#7-??????) -* [???????](#???????) - * [1. ?§Ø???????????????](#1-?§Ø???????????????) - * [1.1 ???¨¹???](#11-???¨¹???) - * [1.2 ?????](#12-?????) - * [1.3 ????????](#13-????????) - * [1.3.1 ?????](#131-?????) - * [1.3.2 ??????](#132-??????) - * [1.3.3 ??????](#133-??????) - * [1.3.4 ??????](#134-??????) - * [1.3 ???????????](#13-???????????) +* [ÄÚ´æÄ£ÐÍ](#ÄÚ´æÄ£ÐÍ) + * [1. ³ÌÐò¼ÆÊýÆ÷](#1-³ÌÐò¼ÆÊýÆ÷) + * [2. Java ÐéÄâ»úÕ»](#2-java-ÐéÄâ»úÕ») + * [3. ±¾µØ·½·¨Õ»](#3-±¾µØ·½·¨Õ») + * [4. Java ¶Ñ](#4-java-¶Ñ) + * [5. ·½·¨Çø](#5-·½·¨Çø) + * [6. ÔËÐÐʱ³£Á¿³Ø](#6-ÔËÐÐʱ³£Á¿³Ø) + * [7. Ö±½ÓÄÚ´æ](#7-Ö±½ÓÄÚ´æ) +* [À¬»øÊÕ¼¯](#À¬»øÊÕ¼¯) + * [1. ÅжÏÒ»¸ö¶ÔÏóÊÇ·ñ¿É»ØÊÕ](#1-ÅжÏÒ»¸ö¶ÔÏóÊÇ·ñ¿É»ØÊÕ) + * [1.1 ÒýÓüÆÊý](#11-ÒýÓüÆÊý) + * [1.2 ¿É´ïÐÔ](#12-¿É´ïÐÔ) + * [1.3 ÒýÓÃÀàÐÍ](#13-ÒýÓÃÀàÐÍ) + * [1.3.1 Ç¿ÒýÓÃ](#131-Ç¿ÒýÓÃ) + * [1.3.2 ÈíÒýÓÃ](#132-ÈíÒýÓÃ) + * [1.3.3 ÈõÒýÓÃ](#133-ÈõÒýÓÃ) + * [1.3.4 ÐéÒýÓÃ](#134-ÐéÒýÓÃ) + * [1.3 ·½·¨ÇøµÄ»ØÊÕ](#13-·½·¨ÇøµÄ»ØÊÕ) * [1.4 finalize()](#14-finalize) - * [2. ?????????](#2-?????????) - * [2.1 ??? - ?????](#21-???---?????) - * [2.2 ??????](#22-??????) - * [2.3 ??? - ??????](#23-???---??????) - * [2.4 ????????](#24-????????) - * [3. ?????????](#3-?????????) - * [3.1 Serial ?????](#31-serial-?????) - * [3.2 ParNew ?????](#32-parnew-?????) - * [3.3 Parallel Scavenge ?????](#33-parallel-scavenge-?????) - * [3.4 Serial Old ?????](#34-serial-old-?????) - * [3.5 Parallel Old ?????](#35-parallel-old-?????) - * [3.6 CMS ?????](#36-cms-?????) - * [3.7 G1 ?????](#37-g1-?????) - * [3.8 ?????????????????](#38-?????????????????) - * [4. ??????????????](#4-??????????????) - * [4.1 ?????? Eden ????](#41-??????-eden-????) - * [4.2 ????????????????](#42-????????????????) - * [4.3 ??????????????????](#43-??????????????????) - * [4.4 ????????????§Ø?](#44-????????????§Ø?) - * [4.5 ????????](#45-????????) - * [4.6 Full GC ?????????](#46-full-gc-?????????) - * [4.6.1 ???? System.gc()](#461-????-systemgc) - * [4.6.2 ??????????](#462-??????????) - * [4.6.3 ???????????](#463-???????????) - * [4.6.4 JDK 1.7 ?????????????????](#464-jdk-17-?????????????????) + * [2. À¬»øÊÕ¼¯Ëã·¨](#2-À¬»øÊÕ¼¯Ëã·¨) + * [2.1 ±ê¼Ç - Çå³ýËã·¨](#21-±ê¼Ç---Çå³ýËã·¨) + * [2.2 ¸´ÖÆËã·¨](#22-¸´ÖÆËã·¨) + * [2.3 ±ê¼Ç - ÕûÀíËã·¨](#23-±ê¼Ç---ÕûÀíËã·¨) + * [2.4 ·Ö´úÊÕ¼¯Ëã·¨](#24-·Ö´úÊÕ¼¯Ëã·¨) + * [3. À¬»øÊÕ¼¯Æ÷](#3-À¬»øÊÕ¼¯Æ÷) + * [3.1 Serial ÊÕ¼¯Æ÷](#31-serial-ÊÕ¼¯Æ÷) + * [3.2 ParNew ÊÕ¼¯Æ÷](#32-parnew-ÊÕ¼¯Æ÷) + * [3.3 Parallel Scavenge ÊÕ¼¯Æ÷](#33-parallel-scavenge-ÊÕ¼¯Æ÷) + * [3.4 Serial Old ÊÕ¼¯Æ÷](#34-serial-old-ÊÕ¼¯Æ÷) + * [3.5 Parallel Old ÊÕ¼¯Æ÷](#35-parallel-old-ÊÕ¼¯Æ÷) + * [3.6 CMS ÊÕ¼¯Æ÷](#36-cms-ÊÕ¼¯Æ÷) + * [3.7 G1 ÊÕ¼¯Æ÷](#37-g1-ÊÕ¼¯Æ÷) + * [3.8 ÆßÖÖÀ¬»øÊÕ¼¯Æ÷µÄ±È½Ï](#38-ÆßÖÖÀ¬»øÊÕ¼¯Æ÷µÄ±È½Ï) + * [4. ÄÚ´æ·ÖÅäÓë»ØÊÕ²ßÂÔ](#4-ÄÚ´æ·ÖÅäÓë»ØÊÕ²ßÂÔ) + * [4.1 ÓÅÏÈÔÚ Eden ·ÖÅä](#41-ÓÅÏÈÔÚ-eden-·ÖÅä) + * [4.2 ´ó¶ÔÏóÖ±½Ó½øÈëÀÏÄê´ú](#42-´ó¶ÔÏóÖ±½Ó½øÈëÀÏÄê´ú) + * [4.3 ³¤ÆÚ´æ»îµÄ¶ÔÏó½øÈëÀÏÄê´ú](#43-³¤ÆÚ´æ»îµÄ¶ÔÏó½øÈëÀÏÄê´ú) + * [4.4 ¶¯Ì¬¶ÔÏóÄêÁäÅж¨](#44-¶¯Ì¬¶ÔÏóÄêÁäÅж¨) + * [4.5 ¿Õ¼ä·ÖÅäµ£±£](#45-¿Õ¼ä·ÖÅäµ£±£) + * [4.6 Full GC µÄ´¥·¢Ìõ¼þ](#46-full-gc-µÄ´¥·¢Ìõ¼þ) + * [4.6.1 µ÷Óà System.gc()](#461-µ÷ÓÃ-systemgc) + * [4.6.2 ÀÏÄê´ú¿Õ¼ä²»×ã](#462-ÀÏÄê´ú¿Õ¼ä²»×ã) + * [4.6.3 ¿Õ¼ä·ÖÅäµ£±£Ê§°Ü](#463-¿Õ¼ä·ÖÅäµ£±£Ê§°Ü) + * [4.6.4 JDK 1.7 ¼°ÒÔǰµÄÓÀ¾Ã´ú¿Õ¼ä²»×ã](#464-jdk-17-¼°ÒÔǰµÄÓÀ¾Ã´ú¿Õ¼ä²»×ã) * [4.6.5 Concurrent Mode Failure](#465-concurrent-mode-failure) -* [????????](#????????) - * [1 ???????????](#1-???????????) - * [2. ?????????](#2-?????????) - * [3. ????????](#3-????????) - * [3.1 ????](#31-????) - * [3.2 ???](#32-???) - * [3.3 ???](#33-???) - * [3.4 ????](#34-????) - * [3.5 ?????](#35-?????) - * [4. ???????](#4-???????) - * [4.1 ???????????](#41-???????????) - * [4.2 ???????????](#42-???????????) - * [4.3 ?????????](#43-?????????) -* [JVM ????](#jvm-????) - * [GC ???????](#gc-???????) - * [GC ????????](#gc-????????) +* [Àà¼ÓÔØ»úÖÆ](#Àà¼ÓÔØ»úÖÆ) + * [1 ÀàµÄÉúÃüÖÜÆÚ](#1-ÀàµÄÉúÃüÖÜÆÚ) + * [2. Àà³õʼ»¯Ê±»ú](#2-Àà³õʼ»¯Ê±»ú) + * [3. Àà¼ÓÔØ¹ý³Ì](#3-Àà¼ÓÔØ¹ý³Ì) + * [3.1 ¼ÓÔØ](#31-¼ÓÔØ) + * [3.2 ÑéÖ¤](#32-ÑéÖ¤) + * [3.3 ×¼±¸](#33-×¼±¸) + * [3.4 ½âÎö](#34-½âÎö) + * [3.5 ³õʼ»¯](#35-³õʼ»¯) + * [4. Àà¼ÓÔØÆ÷](#4-Àà¼ÓÔØÆ÷) + * [4.1 ÀàÓëÀà¼ÓÔØÆ÷](#41-ÀàÓëÀà¼ÓÔØÆ÷) + * [4.2 Àà¼ÓÔØÆ÷·ÖÀà](#42-Àà¼ÓÔØÆ÷·ÖÀà) + * [4.3 Ë«Ç×ίÅÉÄ£ÐÍ](#43-Ë«Ç×ίÅÉÄ£ÐÍ) +* [JVM ²ÎÊý](#jvm-²ÎÊý) + * [GC ÓÅ»¯ÅäÖÃ](#gc-ÓÅ»¯ÅäÖÃ) + * [GC ÀàÐÍÉèÖÃ](#gc-ÀàÐÍÉèÖÃ) -# ?????? +# ÄÚ´æÄ£ÐÍ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/dc695f48-4189-4fc7-b950-ed25f6c80f82.jpg) -????????????????§Ö?????????????????? +×¢£º°×É«ÇøÓòΪÏß³Ì˽Óеģ¬À¶É«ÇøÓòΪÏ̹߳²ÏíµÄ¡£ -## 1. ????????? +## 1. ³ÌÐò¼ÆÊýÆ÷ -?????????§Ö????????????????????????????§Ö??? Native ???????????? +¼Ç¼ÕýÔÚÖ´ÐеÄÐéÄâ»ú×Ö½ÚÂëÖ¸ÁîµÄµØÖ·£¨Èç¹ûÕýÔÚÖ´ÐеÄÊÇ Native ·½·¨ÔòΪ¿Õ£©¡£ -## 2. Java ?????? +## 2. Java ÐéÄâ»úÕ» -??? Java ????????§Ö????????????????›¥???????????????????????????????????????????????????????????????????????????????? Java ????????????????????? +ÿ¸ö Java ·½·¨ÔÚÖ´ÐеÄͬʱ»á´´½¨Ò»¸öÕ»Ö¡ÓÃÓÚ´æ´¢¾Ö²¿±äÁ¿±í¡¢²Ù×÷ÊýÕ»¡¢¶¯Ì¬Á´½Ó¡¢·½·¨³ö¿ÚµÈÐÅÏ¢¡£Ã¿Ò»¸ö·½·¨´Óµ÷ÓÃÖ±ÖÁÖ´ÐÐÍê³ÉµÄ¹ý³Ì£¬¾Í¶ÔÓ¦×ÅÒ»¸öÕ»Ö¡ÔÚ Java ÐéÄâ»úÕ»ÖÐÈëÕ»ºÍ³öÕ»µÄ¹ý³Ì¡£ -???????????????????? +¸ÃÇøÓò¿ÉÄÜÅ׳öÒÔÏÂÒì³££º -1. ???????????????????????????? StackOverflowError ???? -2. ????§Ø????????????????????—¨????? OutOfMemoryError ???? +1. µ±Ïß³ÌÇëÇóµÄÕ»Éî¶È³¬¹ý×î´óÖµ£¬»áÅ׳ö StackOverflowError Òì³££» +2. Õ»½øÐж¯Ì¬À©Õ¹Ê±Èç¹ûÎÞ·¨ÉêÇëµ¼×ã¹»Äڴ棬»áÅ׳ö OutOfMemoryError Òì³£¡£ -## 3. ???????? +## 3. ±¾µØ·½·¨Õ» -?? Java ????????????????????????????????????????????????? +Óë Java ÐéÄâ»úÕ»ÀàËÆ£¬ËüÃÇÖ®¼äµÄÇø±ðÖ»²»¹ýÊDZ¾µØ·½·¨Õ»Îª±¾µØ·½·¨·þÎñ¡£ -## 4. Java ?? +## 4. Java ¶Ñ -???§Ø???????????????????µµ +ËùÓжÔÏóʵÀý¶¼ÔÚÕâÀï·ÖÅäÄÚ´æ¡£ -??????????????????????????????"GC ?? "???????????????????????¡Â?????????Java ??????????????????????????????????????? Eden ???From Survivor ???To Survivor ??????? +Õâ¿éÇøÓòÊÇÀ¬»øÊÕ¼¯Æ÷¹ÜÀíµÄÖ÷񻂿Óò£¨"GC ¶Ñ "£©¡£ÏÖÔÚÊÕ¼¯Æ÷»ù±¾¶¼ÊDzÉÓ÷ִúÊÕ¼¯Ëã·¨£¬Java ¶Ñ»¹¿ÉÒԷֳɣºÐÂÉú´úºÍÀÏÄê´ú£¨ÐÂÉú´ú»¹¿ÉÒÔ·Ö³É Eden ¿Õ¼ä¡¢From Survivor ¿Õ¼ä¡¢To Survivor ¿Õ¼äµÈ£©¡£ -???????????—¨??????? -Xmx ?? -Xms ???????????????§³?????????????????? OutOfMemoryError ???? +²»ÐèÒªÁ¬ÐøÄڴ棬¿ÉÒÔͨ¹ý -Xmx ºÍ -Xms À´¿ØÖƶ¯Ì¬À©Õ¹ÄÚ´æ´óС£¬Èç¹û¶¯Ì¬À©Õ¹Ê§°Ü»áÅ׳ö OutOfMemoryError Òì³£¡£ -## 5. ?????? +## 5. ·½·¨Çø -????????????????????????????????????????????????????????????????? +ÓÃÓÚ´æ·ÅÒѱ»ÐéÄâ»ú¼ÓÔØµÄÀàÐÅÏ¢¡¢³£Á¿¡¢¾²Ì¬±äÁ¿¡¢¼´Ê±±àÒëÆ÷±àÒëºóµÄ´úÂëµÈÊý¾Ý¡£ -?? Java ??????????????????—¨??????????????????????????????? OutOfMemoryError ???? +ºÍ Java ¶ÑÒ»Ñù²»ÐèÒªÁ¬ÐøµÄÄڴ棬²¢ÇÒ¿ÉÒÔ¶¯Ì¬À©Õ¹£¬¶¯Ì¬À©Õ¹Ê§°ÜÒ»Ñù»áÅ׳ö OutOfMemoryError Òì³£¡£ -????????????????????????????????????????????§Ø??????????????????HotSpot ????????????????????????????????? +¶ÔÕâ¿éÇøÓò½øÐÐÀ¬»ø»ØÊÕµÄÖ÷ҪĿ±êÊǶԳ£Á¿³ØµÄ»ØÊպͶÔÀàµÄÐ¶ÔØ£¬µ«ÊÇÒ»°ã±È½ÏÄÑʵÏÖ£¬HotSpot ÐéÄâ»ú°ÑËüµ±³ÉÓÀ¾Ã´úÀ´½øÐÐÀ¬»ø»ØÊÕ¡£ -## 6. ??????????? +## 6. ÔËÐÐʱ³£Á¿³Ø -?????????????????????????? +ÔËÐÐʱ³£Á¿³ØÊÇ·½·¨ÇøµÄÒ»²¿·Ö¡£ -??????Class ????§Ö??????????????????????????????????????????????????????? +Àà¼ÓÔØºó£¬Class ÎļþÖеij£Á¿³Ø£¨ÓÃÓÚ´æ·Å±àÒëÆÚÉú³ÉµÄ¸÷ÖÖ×ÖÃæÁ¿ºÍ·ûºÅÒýÓ㩾ͻᱻ·Åµ½Õâ¸öÇøÓò¡£ -???????????????¨´? String ??? intern() ????????????????????? +ÔÚÔËÐÐÆÚ¼äÒ²¿ÉÒÔÓùý String ÀàµÄ intern() ·½·¨½«Ðµij£Á¿·ÅÈë¸ÃÇøÓò¡£ -## 7. ?????? +## 7. Ö±½ÓÄÚ´æ -?? JDK 1.4 ????????? NIO ???????????????????Channel??????????Buffer???? I/O ?????????????? Native ?????????????????—¨??????????›¥?? Java ????? DirectByteBuffer ????????????????????§Ó??????????????§»????????????????????????????? Java ??? Native ???????????????? +ÔÚ JDK 1.4 ÖÐмÓÈëÁË NIO À࣬ÒýÈëÁËÒ»ÖÖ»ùÓÚͨµÀ£¨Channel£©Ó뻺³åÇø£¨Buffer£©µÄ I/O ·½Ê½£¬Ëü¿ÉÒÔʹÓà Native º¯Êý¿âÖ±½Ó·ÖÅä¶ÑÍâÄڴ棬Ȼºóͨ¹ýÒ»¸ö´æ´¢ÔÚ Java ¶ÑÀïµÄ DirectByteBuffer ¶ÔÏó×÷ΪÕâ¿éÄÚ´æµÄÒýÓýøÐвÙ×÷¡£ÕâÑùÄÜÔÚһЩ³¡¾°ÖÐÏÔÖøÌá¸ßÐÔÄÜ£¬ÒòΪ±ÜÃâÁËÔÚ Java ¶ÑºÍ Native ¶ÑÖÐÀ´»Ø¸´ÖÆÊý¾Ý¡£ -# ??????? +# À¬»øÊÕ¼¯ -?????????????????????????????????????????????§Ö???????????????????????????????????????????????????????????????????????? +³ÌÐò¼ÆÊýÆ÷¡¢ÐéÄâ»úÕ»ºÍ±¾µØ·½·¨Õ»ÕâÈý¸öÇøÓòÊôÓÚÏß³Ì˽Óеģ¬Ö»´æÔÚÓÚÏ̵߳ÄÉúÃüÖÜÆÚÄÚ£¬Ï߳̽áÊøÖ®ºóÒ²»áÏûʧ£¬Òò´Ë²»ÐèÒª¶ÔÕâÈý¸öÇøÓò½øÐÐÀ¬»ø»ØÊÕ¡£ -???????????????? Java ???????????§³? +À¬»ø»ØÊÕÖ÷ÒªÊÇÕë¶Ô Java ¶ÑºÍ·½·¨Çø½øÐС£ -## 1. ?§Ø??????????????? +## 1. ÅжÏÒ»¸ö¶ÔÏóÊÇ·ñ¿É»ØÊÕ -### 1.1 ???¨¹??? +### 1.1 ÒýÓüÆÊý -???????????????¨¹????????????????????????????????? 1???????§¹????????? 1?? +¸ø¶ÔÏóÌí¼ÓÒ»¸öÒýÓüÆÊýÆ÷£¬µ±¶ÔÏóÔö¼ÓÒ»¸öÒýÓÃʱ¼ÆÊýÆ÷¼Ó 1£¬ÒýÓÃʧЧʱ¼ÆÊýÆ÷¼õ 1¡£ -???¨¹???? 0 ???????????? +ÒýÓüÆÊýΪ 0 µÄ¶ÔÏó¿É±»»ØÊÕ¡£ -?????????????????????????????¨¹??????????? 0?????? GC ????????????? +Á½¸ö¶ÔÏó»á³öÏÖÑ­»·ÒýÓÃÎÊÌ⣬´ËʱÒýÓüÆÊýÆ÷ÓÀÔ¶²»Îª 0£¬µ¼Ö GC ÊÕ¼¯Æ÷ÎÞ·¨»ØÊÕ¡£ ```java objA.instance = objB; objB.instance = objA; ``` -### 1.2 ????? +### 1.2 ¿É´ïÐÔ -??? GC Roots ??????????????????????????????????????????????????????? +ͨ¹ý GC Roots ×÷ΪÆðʼµã½øÐÐËÑË÷£¬Äܹ»µ½´ïµ½µÄ¶ÔÏó¶¼ÊǶ¼ÊÇ¿ÉÓõ쬲»¿É´ïµÄ¶ÔÏó¿É±»»ØÊÕ¡£ -GC Roots ??????????????? +GC Roots Ò»°ã°üº¬ÒÔÏÂÄÚÈÝ£º -1. ???????????????? -2. ??????????????????????? -3. ???????§Ö???????????? -4. ?????????????????? +1. ÐéÄâ»úÕ»ÖÐÒýÓõĶÔÏó +2. ·½·¨ÇøÖÐÀྲ̬ÊôÐÔÒýÓõĶÔÏó +3. ·½·¨ÇøÖеij£Á¿ÒýÓõĶÔÏó +4. ±¾µØ·½·¨Õ»ÖÐÒýÓõĶÔÏó -### 1.3 ???????? +### 1.3 ÒýÓÃÀàÐÍ -????????????¨¹??????§Ø?????????????????????????????????§Ø?????????????????§Ø???????????????¨¢??§Û?? +ÎÞÂÛÊÇͨ¹ýÒýÓüÆËãËã·¨Åж϶ÔÏóµÄÒýÓÃÊýÁ¿£¬»¹ÊÇͨ¹ý¿É´ïÐÔ·ÖÎöËã·¨Åж϶ÔÏóµÄÒýÓÃÁ´ÊÇ·ñ¿É´ï£¬Åж¨¶ÀÏíÊÇ·ñ´æ»î¶¼Óë¡°ÒýÓá±Óйء£ -#### 1.3.1 ????? +#### 1.3.1 Ç¿ÒýÓà -???????????????????????????????????????????? +ֻҪǿÒýÓôæÔÚ£¬À¬»ø»ØÊÕÆ÷ÓÀÔ¶²»»á»ØÊÕµ÷µô±»ÒýÓõĶÔÏó¡£ ```java Object obj = new Object(); ``` -#### 1.3.2 ?????? +#### 1.3.2 ÈíÒýÓà -?????????????????????§Ý???? +·Ç±ØÐëÒýÓã¬ÄÚ´æÒç³ö֮ǰ½øÐлØÊÕ¡£ ```java Object obj = new Object(); @@ -169,14 +169,14 @@ obj = null; sf.get(); ``` -sf ??? obj ??????????????? sf.get() ??????????????????????????????????????????????????? null?? +sf ÊÇ¶Ô obj µÄÒ»¸öÈíÒýÓã¬Í¨¹ý sf.get() ·½·¨¿ÉÒÔÈ¡µ½Õâ¸ö¶ÔÏ󣬵±È»£¬µ±Õâ¸ö¶ÔÏó±»±ê¼ÇΪÐèÒª»ØÊյĶÔÏóʱ£¬Ôò·µ»Ø null£» -????????????????????????????????????????????????????????????????????????????????????????????ÖÎ???????????????????????????????????????§»????? +ÈíÒýÓÃÖ÷ÒªÓû§ÊµÏÖÀàËÆ»º´æµÄ¹¦ÄÜ£¬ÔÚÄÚ´æ×ã¹»µÄÇé¿öÏÂÖ±½Óͨ¹ýÈíÒýÓÃȡֵ£¬ÎÞÐè´Ó·±Ã¦µÄÕæÊµÀ´Ô´²éѯÊý¾Ý£¬ÌáÉýËÙ¶È£»µ±ÄÚ´æ²»×ãʱ£¬×Ô¶¯É¾³ýÕⲿ·Ö»º´æÊý¾Ý£¬´ÓÕæÕýµÄÀ´Ô´²éѯÕâЩÊý¾Ý¡£ -#### 1.3.3 ?????? +#### 1.3.3 ÈõÒýÓà -??????›Ô??????????????????????????????????????????????????????????????? +Ö»ÄÜÉú´æµ½ÏÂÒ»´ÎÀ¬»øÊÕ¼¯·¢Éú֮ǰ£¬µ±À¬»øÊÕ¼¯Æ÷¹¤×÷ʱ£¬ÎÞÂÛµ±Ç°ÄÚ´æÊÇ·ñ×ã¹»£¬¶¼»á±»»ØÊÕ¡£ ```java Object obj = new Object(); @@ -186,9 +186,9 @@ wf.get(); wf.isEnQueued(); ``` -#### 1.3.4 ?????? +#### 1.3.4 ÐéÒýÓà -?????????????????????????????????????????????????????????????�q??????????????????????????????????????????????????¨´?????¦·???????????????????????????????????????? +ÓÖ³ÆÎªÓÄÁéÒýÓûòÕß»ÃÓ°ÒýÓã¬Ò»¸ö¶ÔÏóÊÇ·ñÓÐÐéÒýÓõĴæÔÚ£¬ÍêÈ«²»»á¶ÔÆäÉú´æÊ±¼ä¹¹³ÉÓ°Ï죬ҲÎÞ·¨Í¨¹ýÐéÒýÓÃÈ¡µÃÒ»¸ö¶ÔÏóʵÀý¡£ÎªÒ»¸ö¶ÔÏóÉèÖÃÐéÒýÓùØÁªµÄΨһĿµÄ¾ÍÊÇÄÜÔÚÕâ¸ö¶ÔÏó±»ÊÕ¼¯Æ÷»ØÊÕʱÊÕµ½Ò»¸öϵͳ֪ͨ¡£ ```java Object obj = new Object(); @@ -198,367 +198,367 @@ pf.get(); pf.isEnQueued(); ``` -### 1.3 ??????????? +### 1.3 ·½·¨ÇøµÄ»ØÊÕ -???????????????????????????§Ø??? +ÔÚ·½·¨ÇøÖ÷ÒªÊǶԳ£Á¿³ØµÄ»ØÊպͶÔÀàµÄÐ¶ÔØ¡£ -?????????????§Ø??????????? +³£Á¿³ØµÄ»ØÊպͶÑÖжÔÏó»ØÊÕÀàËÆ¡£ -???§Ø????????????????????????????????????????????????§Ø??? +ÀàµÄÐ¶ÔØÌõ¼þºÜ¶à£¬ÐèÒªÂú×ãÒÔÏÂÈý¸öÌõ¼þ£¬²¢ÇÒÂú×ãÁËÒ²²»Ò»¶¨»á±»Ð¶ÔØ£º -1. ???????§Ö????????????????????? Java ???§Ó??????????¦Ê?????? -2. ???????? ClassLoader ?????????? -3. ???????? java.lang.Class ??????????¦Ê¦Å??????????????????¦Ê¦Å??????????????????? +1. ¸ÃÀàËùÓеÄʵÀý¶¼ÒѾ­±»»ØÊÕ£¬Ò²¾ÍÊÇ Java ¶ÑÖв»´æÔÚ¸ÃÀàµÄÈκÎʵÀý¡£ +2. ¼ÓÔØ¸ÃÀàµÄ ClassLoader ÒѾ­±»»ØÊÕ¡£ +3. ¸ÃÀà¶ÔÓ¦µÄ java.lang.Class ¶ÔÏóûÓÐÔÚÈκεط½±»ÒýÓã¬Ò²¾ÍÎÞ·¨ÔÚÈκεط½Í¨¹ý·´Éä·ÃÎʸÃÀà·½·¨¡£ -??????? -Xnoclassgc ???????????????????§Ø??? +¿ÉÒÔͨ¹ý -Xnoclassgc ²ÎÊýÀ´¿ØÖÆÊÇ·ñ¶ÔÀà½øÐÐÐ¶ÔØ¡£ -???????¡Â??????????CGLib ?? ByteCode ??????????? JSP ??? OSGo ???????????? ClassLoader ????????????????????§Ø????????????????????????? +ÔÚ´óÁ¿Ê¹Ó÷´Éä¡¢¶¯Ì¬´úÀí¡¢CGLib µÈ ByteCode ¿ò¼Ü¡¢¶¯Ì¬Éú³É JSP ÒÔ¼° OSGo ÕâÀàÆµ·±×Ô¶¨Òå ClassLoader µÄ³¡¾°¶¼ÐèÒªÐéÄâ»ú¾ß±¸ÀàÐ¶ÔØ¹¦ÄÜ£¬ÒÔ±£Ö¤²»»á³öÏÖÄÚ´æÒç³ö¡£ ### 1.4 finalize() -???????????????????????????§Ò????? finalize() ????????????§á???????????¡Â?????????????¡À???????????????? +µ±Ò»¸ö¶ÔÏó¿É±»»ØÊÕʱ£¬Èç¹û¸Ã¶ÔÏóÓбØÒªÖ´ÐÐ finalize() ·½·¨£¬ÄÇô¾ÍÓпÉÄÜ¿ÉÄÜͨ¹ýÔڸ÷½·¨ÖÐÈöÔÏóÖØÐ±»ÒýÓ㬴ӶøÊµÏÖ×Ծȡ£ -finalize() ???? C++ ???ûy??????????????????????????????? try-finally ????????????????????¡Â??????§Õ?????????????????????????????????????????¨°????¨¢? +finalize() ÀàËÆ C++ µÄÐé¹¹º¯Êý£¬ÓÃÀ´×ö¹Ø±ÕÍⲿ×ÊÔ´µÈ¹¤×÷¡£µ«ÊÇ try-finally µÈ·½Ê½¿ÉÒÔ×öµÄ¸üºÃ£¬²¢ÇҸ÷½·¨ÔËÐдú¼Û¸ß°º£¬²»È·¶¨ÐÔ´ó£¬ÎÞ·¨±£Ö¤¸÷¸ö¶ÔÏóµÄµ÷ÓÃ˳Ðò£¬Òò´Ë×îºÃ²»ÒªÊ¹Óᣠ-## 2. ????????? +## 2. À¬»øÊÕ¼¯Ëã·¨ -### 2.1 ??? - ????? +### 2.1 ±ê¼Ç - Çå³ýËã·¨ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/a4248c4b-6c1d-4fb8-a557-86da92d3a294.jpg) -???????????????§Ò??????????? +½«ÐèÒª»ØÊյĶÔÏó½øÐбê¼Ç£¬È»ºóÇå³ý¡£ -???? +²»×㣺 -1. ???????????§¹??????? -2. ???????????? +1. ±ê¼ÇºÍÇå³ý¹ý³ÌЧÂʶ¼²»¸ß +2. »á²úÉú´óÁ¿Ë鯬 -???????????????????§Ú???? +Ö®ºóµÄËã·¨¶¼ÊÇ»ùÓÚ¸ÃËã·¨½øÐиĽø¡£ -### 2.2 ?????? +### 2.2 ¸´ÖÆËã·¨ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/e6b733ad-606d-4028-b3e8-83c3a73a3797.jpg) -????œý?????§³???????ï…?????????????ï…??????????????????????????????????????—¨????????¨´?????????????????? +½«ÄÚ´æ»®·ÖΪ´óСÏàµÈµÄÁ½¿é£¬Ã¿´ÎֻʹÓÃÆäÖÐÒ»¿é£¬µ±ÕâÒ»¿éÄÚ´æÓÃÍêÁ˾ͽ«»¹´æ»îµÄ¶ÔÏó¸´ÖƵ½ÁíÒ»¿éÉÏÃæ£¬È»ºóÔÙ°ÑʹÓùýµÄÄÚ´æ¿Õ¼ä½øÐÐÒ»´ÎÇåÀí¡£ -?????????????????????? +Ö÷Òª²»×ãÊÇֻʹÓÃÁËÄÚ´æµÄÒ»°ë¡£ -??????????????????????????????????????????????????????œý?????§³???????ï…???????????? Eden ?????????§³?? Survior ????????? Eden ??????????? Survivor???????????? Eden ?? Survivor ?§Ý???????????????????????? Survivor ????????????? Eden ?? Survivor??HotSpot ??????? Eden ?? Survivor ???§³???????? 8:1?????????????????? 90 %???????¦Ë????§Ø??? 10% ????????????? Survivor ?????????????????????????????§Ù???????????????????????? +ÏÖÔÚµÄÉÌÒµÐéÄâ»ú¶¼²ÉÓÃÕâÖÖÊÕ¼¯Ëã·¨À´»ØÊÕÐÂÉú´ú£¬µ«ÊDz¢²»Êǽ«ÄÚ´æ»®·ÖΪ´óСÏàµÈµÄÁ½¿é£¬¶øÊÇ·ÖΪһ¿é½Ï´óµÄ Eden ¿Õ¼äºÍÁ½¿é½ÏСµÄ Survior ¿Õ¼ä£¬Ã¿´ÎʹÓà Eden ¿Õ¼äºÍÆäÖÐÒ»¿é Survivor¡£ÔÚ»ØÊÕʱ£¬½« Eden ºÍ Survivor Öл¹´æ»î×ŵĶÔÏóÒ»´ÎÐÔ¸´ÖƵ½ÁíÒ»¿é Survivor ¿Õ¼äÉÏ£¬×îºóÇåÀí Eden ºÍ Survivor¡£HotSpot ÐéÄâ»úµÄ Eden ºÍ Survivor µÄ´óС±ÈÀýĬÈÏΪ 8:1£¬±£Ö¤ÁËÄÚ´æµÄÀûÓÃÂÊ´ïµ½ 90 %¡£Èç¹ûÿ´Î»ØÊÕÓжàÓÚ 10% µÄ¶ÔÏó´æ»î£¬ÄÇôһ¿é Survivor ¿Õ¼ä¾Í²»¹»ÓÃÁË£¬ÐèÒªÒÀÀµÓÚÀÏÄê´ú½øÐзÖÅäµ£±££¬Ò²¾ÍÊǽèÓÃÀÏÄê´úµÄ¿Õ¼ä¡£ -### 2.3 ??? - ?????? +### 2.3 ±ê¼Ç - ÕûÀíËã·¨ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/902b83ab-8054-4bd2-898f-9a4a0fe52830.jpg) -?????§Õ??????????????????????????????????????µµ +ÈÃËùÓдæ»îµÄ¶ÔÏó¶¼ÏòÒ»¶ÎÒÆ¶¯£¬È»ºóÖ±½ÓÇåÀíµô¶Ë±ß½çÒÔÍâµÄÄÚ´æ¡£ -### 2.4 ???????? +### 2.4 ·Ö´úÊÕ¼¯Ëã·¨ -????????????????¡Â?????????????????????????????????????????????????œý??????ï…???????????????????? +ÏÖÔÚµÄÉÌÒµÐéÄâ»ú²ÉÓ÷ִúÊÕ¼¯Ëã·¨£¬ËüʹÓÃÁËÇ°Ãæ½éÉܵļ¸ÖÖÊÕ¼¯Ëã·¨£¬¸ù¾Ý¶ÔÏó´æ»îÖÜÆÚ½«ÄÚ´æ»®·ÖΪ¼¸¿é£¬²»Í¬¿é²ÉÓÃÊʵ±µÄÊÕ¼¯Ëã·¨¡£ -??? Java ??????????????????? +Ò»°ã½« Java ¶Ñ·ÖΪÐÂÉú´úºÍÀÏÄê´ú¡£ -1. ???????????????? -2. ???????????? - ???? ???? ??? - ???? ???? +1. ÐÂÉú´úʹÓ㺸´ÖÆËã·¨ +2. ÀÏÄê´úʹÓ㺱ê¼Ç - ÇåÀí »òÕß ±ê¼Ç - ÕûÀí Ëã·¨¡£ -## 3. ????????? +## 3. À¬»øÊÕ¼¯Æ÷ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/c625baa0-dde6-449e-93df-c3a67f2f430f.jpg) -?????? HotSpot ??????§Ö? 7 ?????????????????????????????????????¨¢? +ÒÔÉÏÊÇ HotSpot ÐéÄâ»úÖÐµÄ 7 ¸öÀ¬»øÊÕ¼¯Æ÷£¬Á¬Ïß±íʾÀ¬»øÊÕ¼¯Æ÷¿ÉÒÔÅäºÏʹÓᣠ-### 3.1 Serial ????? +### 3.1 Serial ÊÕ¼¯Æ÷ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/22fda4ae-4dd5-489d-ab10-9ebfdad22ae0.jpg) -??????????????????????¦Æ???????????????????????????????????????????????????????????????????????????????????????????????? +ËüÊǵ¥Ï̵߳ÄÊÕ¼¯Æ÷£¬²»½öÒâζ×ÅÖ»»áʹÓÃÒ»¸öÏ߳̽øÐÐÀ¬»øÊÕ¼¯¹¤×÷£¬¸üÖØÒªµÄÊÇËüÔÚ½øÐÐÀ¬»øÊÕ¼¯Ê±£¬±ØÐëÔÝÍ£ËùÓÐÆäËû¹¤×÷Ị̈߳¬ÍùÍùÔì³É¹ý³¤µÄµÈ´ýʱ¼ä¡£ -???????????§¹????????? CPU ??????????????????????????????????????????????§¹??? +ËüµÄÓŵãÊǼòµ¥¸ßЧ£¬¶ÔÓÚµ¥¸ö CPU »·¾³À´Ëµ£¬ÓÉÓÚûÓÐÏ߳̽»»¥µÄ¿ªÏú£¬Òò´ËÓµÓÐ×î¸ßµÄµ¥Ïß³ÌÊÕ¼¯Ð§ÂÊ¡£ -?? Client ??¨®????§µ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? +ÔÚ Client Ó¦Óó¡¾°ÖУ¬·ÖÅ䏸ÐéÄâ»ú¹ÜÀíµÄÄÚ´æÒ»°ãÀ´Ëµ²»»áºÜ´ó£¬¸ÃÊÕ¼¯Æ÷ÊÕ¼¯¼¸Ê®Õ×ÉõÖÁÒ»Á½°ÙÕ×µÄÐÂÉú´úÍ£¶Ùʱ¼ä¿ÉÒÔ¿ØÖÆÔÚÒ»°Ù¶àºÁÃëÒÔÄÚ£¬Ö»Òª²»ÊÇ̫Ƶ·±£¬ÕâµãÍ£¶ÙÊÇ¿ÉÒÔ½ÓÊܵġ£ -### 3.2 ParNew ????? +### 3.2 ParNew ÊÕ¼¯Æ÷ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/81538cd5-1bcf-4e31-86e5-e198df1e013b.jpg) -???? Serial ???????????·Ú?? +ËüÊÇ Serial ÊÕ¼¯Æ÷µÄ¶àḬ̈߳汾¡£ -?? Server ??????????????????????????????????????????????????? Serial ???????????????? CMS ????????????? +ÊÇ Server ģʽϵÄÐéÄâ»úÊ×Ñ¡ÐÂÉú´úÊÕ¼¯Æ÷£¬³ýÁËÐÔÄÜÔ­ÒòÍ⣬Ö÷ÒªÊÇÒòΪ³ýÁË Serial ÊÕ¼¯Æ÷£¬Ö»ÓÐËüÄÜÓë CMS ÊÕ¼¯Æ÷ÅäºÏ¹¤×÷¡£ -???????????????? CPU ???????????????? -XX:ParallelGCThreads ????????????????? +ĬÈÏ¿ªÊ¼µÄÏß³ÌÊýÁ¿Óë CPU ÊýÁ¿Ïàͬ£¬¿ÉÒÔʹÓà -XX:ParallelGCThreads ²ÎÊýÀ´ÉèÖÃÏß³ÌÊý¡£ -### 3.3 Parallel Scavenge ????? +### 3.3 Parallel Scavenge ÊÕ¼¯Æ÷ -????§Ö???????????? +ÊDz¢ÐеĶàÏß³ÌÊÕ¼¯Æ÷¡£ -?????????????????????????????????????????????????????????????????????????????????????????????????????????????????? CPU ?????????????????????????????? +ÆäËüÊÕ¼¯Æ÷¹Ø×¢µãÊǾ¡¿ÉÄÜËõ¶ÌÀ¬»øÊÕ¼¯Ê±Óû§Ï̵߳ÄÍ£¶Ùʱ¼ä£¬¶øËüµÄÄ¿±êÊÇ´ïµ½Ò»¸ö¿É¿ØÖƵÄÍÌÍÂÁ¿£¬Ëü±»³ÆÎª¡°ÍÌÍÂÁ¿ÓÅÏÈ¡±ÊÕ¼¯Æ÷¡£ÕâÀïµÄÍÌÍÂÁ¿Ö¸ CPU ÓÃÓÚÔËÐÐÓû§´úÂëµÄʱ¼äÕ¼×Üʱ¼äµÄ±ÈÖµ¡£ -??????????????????????????????????????????????????????î•????????????????§¹??????? CPU ????????????????????????????????????????????????????? +Í£¶Ùʱ¼äÔ½¶Ì¾ÍÔ½ÊʺÏÐèÒªÓëÓû§½»»¥µÄ³ÌÐò£¬Á¼ºÃµÄÏìÓ¦ËÙ¶ÈÄÜÌáÉýÓû§ÌåÑé¡£¶ø¸ßÍÌÍÂÁ¿Ôò¿ÉÒÔ¸ßЧÂʵØÀûÓà CPU ʱ¼ä£¬¾¡¿ìÍê³É³ÌÐòµÄÔËËãÈÎÎñ£¬Ö÷ÒªÊʺÏÔÚºǫ́ÔËËã¶ø²»ÐèҪ̫¶à½»»¥µÄÈÎÎñ¡£ -?????????????????????????????????????????????????????? -XX:MaxGCPauseMillis ??????????????????????§³?? -XX:GCTimeRatio ???????????? 0 ??§³?? 100 ???????????????????????????????????????????????????????????????§³???????????????????????????????? +ÌṩÁËÁ½¸ö²ÎÊýÓÃÓÚ¾«È·¿ØÖÆÍÌÍÂÁ¿£¬·Ö±ðÊÇ¿ØÖÆ×î´óÀ¬»øÊÕ¼¯Í£¶Ùʱ¼ä -XX:MaxGCPauseMillis ²ÎÊýÒÔ¼°Ö±½ÓÉèÖÃÍÌÍÂÁ¿´óСµÄ -XX:GCTimeRatio ²ÎÊý£¨ÖµÎª´óÓÚ 0 ÇÒСÓÚ 100 µÄÕûÊý£©¡£Ëõ¶ÌÍ£¶Ùʱ¼äÊÇÒÔÎþÉüÍÌÍÂÁ¿ºÍÐÂÉú´ú¿Õ¼äÀ´»»È¡µÄ£ºÐÂÉú´ú¿Õ¼ä±äС£¬À¬»ø»ØÊÕ±äµÃƵ·±£¬µ¼ÖÂÍÌÍÂÁ¿Ï½µ¡£ -????????????? -XX:+UseAdaptiveSizePolicy?????????????????????????????????????????????§³??-Xmn????Eden ?? Survivor ?????????-XX:SurvivorRatio?????????????????????-XX:PretenureSizeThreshold???????????????????????????????????????????????????????????§»???????????????????????????????????????????? GC ??????????????GC Ergonomics??????????????????????? ParNew ????????????????? +»¹ÌṩÁËÒ»¸ö²ÎÊý -XX:+UseAdaptiveSizePolicy£¬ÕâÊÇÒ»¸ö¿ª¹Ø²ÎÊý£¬´ò¿ª²ÎÊýºó£¬¾Í²»ÐèÒªÊÖ¹¤Ö¸¶¨ÐÂÉú´úµÄ´óС£¨-Xmn£©¡¢Eden ºÍ Survivor ÇøµÄ±ÈÀý£¨-XX:SurvivorRatio£©¡¢½úÉýÀÏÄê´ú¶ÔÏóÄêÁ䣨-XX:PretenureSizeThreshold£©µÈϸ½Ú²ÎÊýÁË£¬ÐéÄâ»ú»á¸ù¾Ýµ±Ç°ÏµÍ³µÄÔËÐÐÇé¿öÊÕ¼¯ÐÔÄÜ¼à¿ØÐÅÏ¢£¬¶¯Ì¬µ÷ÕûÕâЩ²ÎÊýÒÔÌṩ×îºÏÊʵÄÍ£¶Ùʱ¼ä»òÕß×î´óµÄÍÌÍÂÁ¿£¬ÕâÖÖ·½Ê½³ÆÎª GC ×ÔÊÊÓ¦µÄµ÷½Ú²ßÂÔ£¨GC Ergonomics£©¡£×ÔÊÊÓ¦µ÷½Ú²ßÂÔÒ²ÊÇËüÓë ParNew ÊÕ¼¯Æ÷µÄÒ»¸öÖØÒªÇø±ð¡£ -### 3.4 Serial Old ????? +### 3.4 Serial Old ÊÕ¼¯Æ÷ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/08f32fd3-f736-4a67-81ca-295b2a7972f2.jpg) -Serial Old ?? Serial ?????????????·Ú?????? Client ????????????¨¢???????? Server ?????????????????? +Serial Old ÊÇ Serial ÊÕ¼¯Æ÷µÄÀÏÄê´ú°æ±¾£¬Ò²ÊǸø Client ģʽϵÄÐéÄâ»úʹÓá£Èç¹ûÓÃÔÚ Server ģʽÏ£¬ËüÓÐÁ½´óÓÃ;£º -1. ?? JDK 1.5 ??????·Ú??Parallel Old ????????????? Parallel Scavenge ???????????¨¢? -2. ??? CMS ????????????????????????? Concurrent Mode Failure ???¨¢? +1. ÔÚ JDK 1.5 ÒÔ¼°Ö®Ç°°æ±¾£¨Parallel Old µ®ÉúÒÔǰ£©ÖÐÓë Parallel Scavenge ÊÕ¼¯Æ÷´îÅäʹÓᣠ+2. ×÷Ϊ CMS ÊÕ¼¯Æ÷µÄºó±¸Ô¤°¸£¬ÔÚ²¢·¢ÊÕ¼¯·¢Éú Concurrent Mode Failure ʱʹÓᣠ-### 3.5 Parallel Old ????? +### 3.5 Parallel Old ÊÕ¼¯Æ÷ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/278fe431-af88-4a95-a895-9c3b80117de3.jpg) -?? Parallel Scavenge ?????????????·Ú?? +ÊÇ Parallel Scavenge ÊÕ¼¯Æ÷µÄÀÏÄê´ú°æ±¾¡£ -?????????????? CPU ??????§Ö?????????????????? Parallel Scavenge ?? Parallel Old ??????? +ÔÚ×¢ÖØÍÌÍÂÁ¿ÒÔ¼° CPU ×ÊÔ´Ãô¸ÐµÄ³¡ºÏ£¬¶¼¿ÉÒÔÓÅÏÈ¿¼ÂÇ Parallel Scavenge ¼Ó Parallel Old ÊÕ¼¯Æ÷¡£ -### 3.6 CMS ????? +### 3.6 CMS ÊÕ¼¯Æ÷ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/62e77997-6957-4b68-8d12-bfd609bb2c68.jpg) -CMS??Concurrent Mark Sweep?????? Mark Sweep ?????????????? ??? - ??? ??????? +CMS£¨Concurrent Mark Sweep£©£¬´Ó Mark Sweep ¿ÉÒÔÖªµÀËüÊÇ»ùÓÚ ±ê¼Ç - Çå³ý Ë㷨ʵÏֵġ£ -?????????????????? +ÌØµã£º²¢·¢ÊÕ¼¯¡¢µÍÍ£¶Ù¡£ -??????????????? +·ÖΪÒÔÏÂËĸöÁ÷³Ì£º -1. ??????????????????? GC Roots ??????????????????????????? -2. ???????????? GC Roots Tracing ??????????????????????§Ü??????????????? -3. ???¡À?????????????????????????????????????????¡À????????????????????????????????? -4. ?????????????????? +1. ³õʼ±ê¼Ç£º½ö½öÖ»ÊDZê¼ÇһϠGC Roots ÄÜÖ±½Ó¹ØÁªµ½µÄ¶ÔÏó£¬ËٶȺܿ죬ÐèҪͣ¶Ù¡£ +2. ²¢·¢±ê¼Ç£º½øÐÐ GC Roots Tracing µÄ¹ý³Ì£¬ËüÔÚÕû¸ö»ØÊÕ¹ý³ÌÖкÄʱ×£¬²»ÐèҪͣ¶Ù¡£ +3. ÖØÐ±ê¼Ç£ºÎªÁËÐÞÕý²¢·¢±ê¼ÇÆÚ¼äÒòÓû§³ÌÐò¼ÌÐøÔË×÷¶øµ¼Ö±ê¼Ç²úÉú±ä¶¯µÄÄÇÒ»²¿·Ö¶ÔÏóµÄ±ê¼Ç¼Ç¼£¬ÐèҪͣ¶Ù¡£ +4. ²¢·¢Çå³ý£º²»ÐèҪͣ¶Ù¡£ -???????????§Ü????????????????????????§µ?????????????????????????????????????????? +ÔÚÕû¸ö¹ý³ÌÖкÄʱ×µÄ²¢·¢±ê¼ÇºÍ²¢·¢Çå³ý¹ý³ÌÖУ¬ÊÕ¼¯Æ÷Ï̶߳¼¿ÉÒÔÓëÓû§Ïß³ÌÒ»Æð¹¤×÷£¬²»ÐèÒª½øÐÐÍ£¶Ù¡£ -??????????? +¾ßÓÐÒÔÏÂȱµã£º -1. ?? CPU ??????§³?CMS ??????????????????? (CPU ???? + 3) / 4???? CPU ???? 4 ?????CMS ??????????????????¨²????????? CPU ???????????????????????????????????????????????????????????????????? 50%?????????????????????????????????????????????????????? CPU ????????? +1. ¶Ô CPU ×ÊÔ´Ãô¸Ð¡£CMS ĬÈÏÆô¶¯µÄ»ØÊÕÏß³ÌÊýÊÇ (CPU ÊýÁ¿ + 3) / 4£¬µ± CPU ²»×ã 4 ¸öʱ£¬CMS ¶ÔÓû§³ÌÐòµÄÓ°Ïì¾Í¿ÉÄܱäµÃºÜ´ó£¬Èç¹û±¾À´ CPU ¸ºÔؾͱȽϴ󣬻¹Òª·Ö³öÒ»°ëµÄÔËËãÄÜÁ¦È¥Ö´ÐÐÊÕ¼¯Æ÷Ị̈߳¬¾Í¿ÉÄܵ¼ÖÂÓû§³ÌÐòµÄÖ´ÐÐËٶȺöÈ»½µµÍÁË 50%£¬ÆäʵҲÈÃÈËÎÞ·¨½ÓÊÜ¡£²¢ÇÒµÍÍ£¶Ùʱ¼äÊÇÒÔÎþÉüÍÌÍÂÁ¿Îª´ú¼ÛµÄ£¬µ¼Ö CPU ÀûÓÃÂʱäµÍ¡£ -2. ??????????????????????????????????????????????????????????????????????????????????????????????????????????CMS ????????????§Õ????????????????????? GC ?????????????????????????????????????????????????????????????????????????§µ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????¨¢???????? -XX:CMSInitiatingOccupancyFraction ???????????????????????????????JDK 1.5 ???????????? 68?????????????????? 68% ?????????????????????????????????????????????????????—¨????????? Concurrent Mode Failure?????????????????????????????? Serial Old ?????????????????????????????? +2. ÎÞ·¨´¦Àí¸¡¶¯À¬»ø¡£ÓÉÓÚ²¢·¢ÇåÀí½×¶ÎÓû§Ï̻߳¹ÔÚÔËÐÐ×Å£¬°éËæ³ÌÐòÔËÐÐ×ÔÈ»¾Í»¹»áÓÐеÄÀ¬»ø²»¶Ï²úÉú¡£ÕâÒ»²¿·ÖÀ¬»ø³öÏÖÔÚ±ê¼Ç¹ý³ÌÖ®ºó£¬CMS ÎÞ·¨ÔÚµ±´ÎÊÕ¼¯Öд¦ÀíµôËüÃÇ£¬Ö»ºÃÁôµ½ÏÂÒ»´Î GC ʱÔÙÇåÀíµô£¬ÕâÒ»²¿·ÖÀ¬»ø¾Í±»³ÆÎª¡°¸¡¶¯À¬»ø¡±¡£Ò²ÊÇÓÉÓÚÔÚÀ¬»øÊÕ¼¯½×¶ÎÓû§Ï̻߳¹ÐèÒªÔËÐУ¬ÄÇÒ²¾Í»¹ÐèÒªÔ¤ÁôÓÐ×ã¹»µÄÄÚ´æ¿Õ¼ä¸øÓû§Ïß³ÌʹÓã¬Òò´ËËü²»ÄÜÏñÆäËûÊÕ¼¯Æ÷ÄÇÑùµÈµ½ÀÏÄê´ú¼¸ºõÍêÈ«±»ÌîÂúÁËÔÙ½øÐÐÊÕ¼¯£¬ÐèÒªÔ¤ÁôÒ»²¿·Ö¿Õ¼äÌṩ²¢·¢ÊÕ¼¯Ê±µÄ³ÌÐòÔË×÷ʹÓ᣿ÉÒÔʹÓà -XX:CMSInitiatingOccupancyFraction µÄÖµÀ´¸Ä±ä´¥·¢ÊÕ¼¯Æ÷¹¤×÷µÄÄÚ´æÕ¼Óðٷֱȣ¬JDK 1.5 ĬÈÏÉèÖÃϸÃֵΪ 68£¬Ò²¾ÍÊǵ±ÀÏÄê´úʹÓÃÁË 68% µÄ¿Õ¼äÖ®ºó»á´¥·¢ÊÕ¼¯Æ÷¹¤×÷¡£Èç¹û¸ÃÖµÉèÖõÄÌ«¸ß£¬µ¼Ö¸¡¶¯À¬»øÎÞ·¨±£´æ£¬ÄÇô¾Í»á³öÏÖ Concurrent Mode Failure£¬´ËʱÐéÄâ»ú½«Æô¶¯ºó±¸Ô¤°¸£ºÁÙʱÆôÓà Serial Old ÊÕ¼¯Æ÷À´ÖØÐ½øÐÐÀÏÄê´úµÄÀ¬»øÊÕ¼¯¡£ -3. ??? - ??????????????????????????????????ú‘?????????????????????????????????????????????????????¨°??????????? Full GC?? +3. ±ê¼Ç - Çå³ýËã·¨µ¼ÖµĿռäË鯬£¬¸ø´ó¶ÔÏó·ÖÅä´øÀ´ºÜ´óÂé·³£¬ÍùÍù³öÏÖÀÏÄê´ú¿Õ¼äÊ£Ó࣬µ«ÎÞ·¨ÕÒµ½×ã¹»´óÁ¬Ðø¿Õ¼äÀ´·ÖÅ䵱ǰ¶ÔÏ󣬲»µÃ²»Ìáǰ³ö·¢Ò»´Î Full GC¡£ -### 3.7 G1 ????? +### 3.7 G1 ÊÕ¼¯Æ÷ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/f99ee771-c56f-47fb-9148-c0036695b5fe.jpg) -G1??Garbage-First??????????????????????????????????????????????????????????????????HotSpot ?????????????????????????????¦Ä???????�I?? JDK 1.5 ?§Ù????? CMS ??????? +G1£¨Garbage-First£©ÊÕ¼¯Æ÷Êǵ±½ñÊÕ¼¯Æ÷¼¼Êõ·¢Õ¹×îÇ°ÑØµÄ³É¹ûÖ®Ò»£¬ËüÊÇÒ»¿îÃæÏò·þÎñ¶ËÓ¦ÓõÄÀ¬»øÊÕ¼¯Æ÷£¬HotSpot ¿ª·¢ÍŶӸ³ÓèËüµÄʹÃüÊÇ£¨ÔڱȽϳ¤ÆÚµÄ£©Î´À´¿ÉÒÔÌæ»»µô JDK 1.5 Öз¢²¼µÄ CMS ÊÕ¼¯Æ÷¡£ -?????????? +¾ß±¸ÈçÏÂÌØµã£º -- ??????????????????? CPU ???????????????????? CPU ???????????? -- ??????????????????????????????????????????????????????????????? GC ?????????????¨°?????????????????????????????????????? GC ???????????????????§¹???? -- ????????????????????????? - ??????????????????????????? Region ???????????????????????????????¦Æ???????????????????????? -- ??????????????????? CMS ?????????????????????? G1 ?? CMS ??????????? G1 ???????????????????????????????????????????????????????????? M ???????????????????? GC ???????¨®??? N ??????????????? Java??RTSJ?????????????????????? +- ²¢ÐÐÓë²¢·¢£ºÄܳä·ÖÀûÓöà CPU »·¾³ÏµÄÓ²¼þÓÅÊÆ£¬Ê¹Óöà¸ö CPU À´Ëõ¶ÌÍ£¶Ùʱ¼ä£» +- ·Ö´úÊÕ¼¯£º·Ö´ú¸ÅÄîÒÀÈ»µÃÒÔ±£Áô£¬ËäÈ»Ëü²»ÐèÒªÆäËüÊÕ¼¯Æ÷ÅäºÏ¾ÍÄܶÀÁ¢¹ÜÀíÕû¸ö GC ¶Ñ£¬µ«ËüÄܹ»²ÉÓò»Í¬·½Ê½È¥´¦Àíд´½¨µÄ¶ÔÏóºÍÒÑ´æ»îÒ»¶Îʱ¼ä¡¢°¾¹ý¶à´Î GC µÄ¾É¶ÔÏóÀ´»ñÈ¡¸üºÃµÄÊÕ¼¯Ð§¹û¡£ +- ¿Õ¼äÕûºÏ£ºÕûÌåÀ´¿´ÊÇ»ùÓÚ¡°±ê¼Ç - ÕûÀí¡±Ë㷨ʵÏÖµÄÊÕ¼¯Æ÷£¬´Ó¾Ö²¿£¨Á½¸ö Region Ö®¼ä£©ÉÏÀ´¿´ÊÇ»ùÓÚ¡°¸´ÖÆ¡±Ë㷨ʵÏֵģ¬ÕâÒâζ×ÅÔËÐÐÆÚ¼ä²»»á²úÉúÄÚ´æ¿Õ¼äË鯬¡£ +- ¿ÉÔ¤²âµÄÍ£¶Ù£ºÕâÊÇËüÏà¶Ô CMS µÄÒ»´óÓÅÊÆ£¬½µµÍÍ£¶Ùʱ¼äÊÇ G1 ºÍ CMS ¹²Í¬µÄ¹Ø×¢µã£¬µ« G1 ³ýÁ˽µµÍÍ£¶ÙÍ⣬»¹Äܽ¨Á¢¿ÉÔ¤²âµÄÍ£¶Ùʱ¼äÄ£ÐÍ£¬ÄÜÈÃʹÓÃÕßÃ÷È·Ö¸¶¨ÔÚÒ»¸ö³¤¶ÈΪ M ºÁÃëµÄʱ¼äƬ¶ÎÄÚ£¬ÏûºÄÔÚ GC ÉϵÄʱ¼ä²»µÃ³¬¹ý N ºÁÃ룬Õ⼸ºõÒѾ­ÊÇʵʱ Java£¨RTSJ£©µÄÀ¬»øÊÕ¼¯Æ÷µÄÌØÕ÷ÁË¡£ -?? G1 ???????????????????????¦¶???????????????????????????? G1 ????????????Java ?????ÕÓ??????????????§Ü??????????? Java ???????????§³???????????Region?????????????????????????????????????????????????????????????????????????? Region??????????????????? +ÔÚ G1 ֮ǰµÄÆäËûÊÕ¼¯Æ÷½øÐÐÊÕ¼¯µÄ·¶Î§¶¼ÊÇÕû¸öÐÂÉú´ú»òÕßÀÏÉú´ú£¬¶ø G1 ²»ÔÙÊÇÕâÑù£¬Java ¶ÑµÄÄÚ´æ²¼¾ÖÓëÆäËûÊÕ¼¯Æ÷ÓкܴóÇø±ð£¬½«Õû¸ö Java ¶Ñ»®·ÖΪ¶à¸ö´óСÏàµÈµÄ¶ÀÁ¢ÇøÓò£¨Region£©¡£ËäÈ»»¹±£ÁôÐÂÉú´úºÍÀÏÄê´úµÄ¸ÅÄµ«ÐÂÉú´úºÍÀÏÄê´ú²»ÔÙÊÇÎïÀí¸ôÀëµÄÁË£¬¶ø¶¼ÊÇÒ»²¿·Ö Region£¨²»ÐèÒªÁ¬Ðø£©µÄ¼¯ºÏ¡£ -??????????????????????????????????????§Þ????????????? Java ???§ß??????????????????????????? Region ??????????????????§³???????????????§³??????????????????????????????????????§Ò???¦È??????????????????????????? Region????????? Garbage-First ??????????????????? Region ???????????????????????????????????????????????????????????????????§¹??? +Ö®ËùÒÔÄܽ¨Á¢¿ÉÔ¤²âµÄÍ£¶Ùʱ¼äÄ£ÐÍ£¬ÊÇÒòΪËü¿ÉÒÔÓмƻ®µØ±ÜÃâÔÚÕû¸ö Java ¶ÑÖнøÐÐÈ«ÇøÓòµÄÀ¬»øÊÕ¼¯¡£Ëü¸ú×Ù¸÷¸ö Region ÀïÃæµÄÀ¬»ø¶Ñ»ýµÄ¼ÛÖµ´óС£¨»ØÊÕËù»ñµÃµÄ¿Õ¼ä´óСÒÔ¼°»ØÊÕËùÐèʱ¼äµÄ¾­ÑéÖµ£©£¬ÔÚºǫ́ά»¤Ò»¸öÓÅÏÈÁÐ±í£¬Ã¿´Î¸ù¾ÝÔÊÐíµÄÊÕ¼¯Ê±¼ä£¬ÓÅÏÈ»ØÊÕ¼ÛÖµ×î´óµÄ Region£¨ÕâÒ²¾ÍÊÇ Garbage-First Ãû³ÆµÄÀ´ÓÉ£©¡£ÕâÖÖʹÓà Region »®·ÖÄÚ´æ¿Õ¼äÒÔ¼°ÓÐÓÅÏȼ¶µÄÇøÓò»ØÊÕ·½Ê½£¬±£Ö¤ÁËËüÔÚÓÐÏÞµÄʱ¼äÄÚ¿ÉÒÔ»ñÈ¡¾¡¿ÉÄܸߵÄÊÕ¼¯Ð§ÂÊ¡£ -Region ????????????????????????????? Region ?§µ??????????? Java ???????????????¨´?????????????????????????????????????????? Java ???????????????????? GC §¹???????????????????????????????? Region ?????????????????? Remembered Set????????????????? Reference ????????????§Õ??????????????? Write Barrier ????§Ø?§Õ????????? Reference ????????????????? Region ??§µ???????????? CardTable ???????????????????????????????? Region ?? Remembered Set ??§³?????????????????? GC ??????????¦¶?§Þ??? Remembered Set ???????????????????????????? +Region ²»¿ÉÄÜÊǹÂÁ¢µÄ£¬Ò»¸ö¶ÔÏó·ÖÅäÔÚij¸ö Region ÖУ¬¿ÉÒÔÓëÕû¸ö Java ¶ÑÈÎÒâµÄ¶ÔÏó·¢ÉúÒýÓùØÏµ¡£ÔÚ×ö¿É´ïÐÔ·ÖÎöÈ·¶¨¶ÔÏóÊÇ·ñ´æ»îµÄʱºò£¬ÐèҪɨÃèÕû¸ö Java ¶Ñ²ÅÄܱ£Ö¤×¼È·ÐÔ£¬ÕâÏÔÈ»ÊÇ¶Ô GC ЧÂʵļ«´óÉ˺¦¡£ÎªÁ˱ÜÃâÈ«¶ÑɨÃèµÄ·¢Éú£¬Ã¿¸ö Region ¶¼Î¬»¤ÁËÒ»¸öÓëÖ®¶ÔÓ¦µÄ Remembered Set¡£ÐéÄâ»ú·¢ÏÖ³ÌÐòÔÚ¶Ô Reference ÀàÐ͵ÄÊý¾Ý½øÐÐд²Ù×÷ʱ£¬»á²úÉúÒ»¸ö Write Barrier ÔÝʱÖжÏд²Ù×÷£¬¼ì²é Reference ÒýÓõĶÔÏóÊÇ·ñ´¦ÓÚ²»Í¬µÄ Region Ö®ÖУ¬Èç¹ûÊÇ£¬±ãͨ¹ý CardTable °ÑÏà¹ØÒýÓÃÐÅÏ¢¼Ç¼µ½±»ÒýÓöÔÏóËùÊôµÄ Region µÄ Remembered Set Ö®ÖС£µ±½øÐÐÄÚ´æ»ØÊÕʱ£¬ÔÚ GC ¸ù½ÚµãµÄö¾Ù·¶Î§ÖмÓÈë Remembered Set ¼´¿É±£Ö¤²»¶ÔÈ«¶ÑɨÃèÒ²²»»áÓÐÒÅ©¡£ -???????????? Remembered Set ???????G1 ??????????????????????????????Ñs +Èç¹û²»¼ÆËãά»¤ Remembered Set µÄ²Ù×÷£¬G1 ÊÕ¼¯Æ÷µÄÔË×÷´óÖ¿ɻ®·ÖΪÒÔϼ¸¸ö²½Ö裺 -1. ?????? -2. ??????? -3. ??????????????????????????????????????????????¡À??????????????????????????????????????�£????????? Remembered Set Logs ???—¨????????????? Remembered Set Logs ?????????? Remembered Set ?§³?????????????????????????§³? -4. ??????????????? Region ?§Ö???????????????????????????????? GC ????????????????????????????????????????????????????§µ?????????????????? Region??????????????????????????????????????????§¹??? +1. ³õʼ±ê¼Ç +2. ²¢·¢±ê¼Ç +3. ×îÖÕ±ê¼Ç£ºÎªÁËÐÞÕýÔÚ²¢·¢±ê¼ÇÆÚ¼äÒòÓû§³ÌÐò¼ÌÐøÔË×÷¶øµ¼Ö±ê¼Ç²úÉú±ä¶¯µÄÄÇÒ»²¿·Ö±ê¼Ç¼Ç¼£¬ÐéÄâ»ú½«Õâ¶Îʱ¼ä¶ÔÏó±ä»¯¼Ç¼ÔÚÏß³ÌµÄ Remembered Set Logs ÀïÃæ£¬×îÖÕ±ê¼Ç½×¶ÎÐèÒª°Ñ Remembered Set Logs µÄÊý¾ÝºÏ²¢µ½ Remembered Set ÖС£Õâ½×¶ÎÐèҪͣ¶ÙỊ̈߳¬µ«Êǿɲ¢ÐÐÖ´ÐС£ +4. ɸѡ»ØÊÕ£ºÊ×ÏȶԸ÷¸ö Region ÖеĻØÊÕ¼ÛÖµºÍ³É±¾½øÐÐÅÅÐò£¬¸ù¾ÝÓû§ËùÆÚÍûµÄ GC Í£¶ÙÊÇʱ¼äÀ´Öƶ¨»ØÊռƻ®¡£´Ë½×¶ÎÆäʵҲ¿ÉÒÔ×öµ½ÓëÓû§³ÌÐòÒ»Æð²¢·¢Ö´ÐУ¬µ«ÊÇÒòΪֻ»ØÊÕÒ»²¿·Ö Region£¬Ê±¼äÊÇÓû§¿É¿ØÖƵ쬶øÇÒÍ£¶ÙÓû§Ï߳̽«´ó·ù¶ÈÌá¸ßÊÕ¼¯Ð§ÂÊ¡£ -### 3.8 ????????????????? +### 3.8 ÆßÖÖÀ¬»øÊÕ¼¯Æ÷µÄ±È½Ï -| ????? | ???§³????? or ???? | ?????? / ????? | ?? | ??? | ???¨®??? | +| ÊÕ¼¯Æ÷ | ´®ÐС¢²¢ÐÐ or ²¢·¢ | ÐÂÉú´ú / ÀÏÄê´ú | Ëã·¨ | Ä¿±ê | ÊÊÓó¡¾° | | --- | --- | --- | --- | --- | --- | -| **Serial** | ???? | ?????? | ?????? | ?????????? | ?? CPU ??????? Client ?? | -| **Serial Old** | ???? | ????? | ??? - ???? | ?????????? | ?? CPU ??????? Client ????CMS ?????? | -| **ParNew** | ???? | ?????? | ?????? | ?????????? | ?? CPU ??????? Server ?????? CMS ??? | -| **Parallel Scavenge** | ???? | ?????? | ?????? | ?????????? | ????????????????????????? | -| **Parallel Old** | ???? | ????? | ??? - ???? | ?????????? | ????????????????????????? | -| **CMS** | ???? | ????? | ??? - ??? | ?????????? | ?????????????? B/S ?????????? Java ??? | -| **G1** | ???? | both | ??? - ???? + ?????? | ?????????? | ?????????????????�I CMS | +| **Serial** | ´®ÐÐ | ÐÂÉú´ú | ¸´ÖÆËã·¨ | ÏìÓ¦ËÙ¶ÈÓÅÏÈ | µ¥ CPU »·¾³Ï嵀 Client ģʽ | +| **Serial Old** | ´®ÐÐ | ÀÏÄê´ú | ±ê¼Ç - ÕûÀí | ÏìÓ¦ËÙ¶ÈÓÅÏÈ | µ¥ CPU »·¾³Ï嵀 Client ģʽ¡¢CMS µÄºó±¸Ô¤°¸ | +| **ParNew** | ²¢ÐÐ | ÐÂÉú´ú | ¸´ÖÆËã·¨ | ÏìÓ¦ËÙ¶ÈÓÅÏÈ | ¶à CPU »·¾³Ê±ÔÚ Server ģʽÏÂÓë CMS ÅäºÏ | +| **Parallel Scavenge** | ²¢ÐÐ | ÐÂÉú´ú | ¸´ÖÆËã·¨ | ÍÌÍÂÁ¿ÓÅÏÈ | ÔÚºǫ́ÔËËã¶ø²»ÐèҪ̫¶à½»»¥µÄÈÎÎñ | +| **Parallel Old** | ²¢ÐÐ | ÀÏÄê´ú | ±ê¼Ç - ÕûÀí | ÍÌÍÂÁ¿ÓÅÏÈ | ÔÚºǫ́ÔËËã¶ø²»ÐèҪ̫¶à½»»¥µÄÈÎÎñ | +| **CMS** | ²¢·¢ | ÀÏÄê´ú | ±ê¼Ç - Çå³ý | ÏìÓ¦ËÙ¶ÈÓÅÏÈ | ¼¯ÖÐÔÚ»¥ÁªÍøÕ¾»ò B/S ϵͳ·þÎñ¶ËÉ쵀 Java Ó¦Óà | +| **G1** | ²¢·¢ | both | ±ê¼Ç - ÕûÀí + ¸´ÖÆËã·¨ | ÏìÓ¦ËÙ¶ÈÓÅÏÈ | ÃæÏò·þÎñ¶ËÓ¦Ó㬽«À´Ìæ»» CMS | -## 4. ?????????????? +## 4. ÄÚ´æ·ÖÅäÓë»ØÊÕ²ßÂÔ -### 4.1 ?????? Eden ???? +### 4.1 ÓÅÏÈÔÚ Eden ·ÖÅä -??????????????????????? Eden ???????? Eden ?????????????? Minor GC?? +´ó¶àÊýÇé¿öÏ£¬¶ÔÏóÔÚÐÂÉú´ú Eden Çø·ÖÅ䣬µ± Eden Çø¿Õ¼ä²»¹»Ê±£¬·¢Æð Minor GC£» -### 4.2 ???????????????? +### 4.2 ´ó¶ÔÏóÖ±½Ó½øÈëÀÏÄê´ú -?? -XX:PretenureSizeThreshold ????????????????????????????????????? Eden ???? Survivor ???????????¿Ê??? -### 4.3 ?????????????????? +Ìṩ -XX:PretenureSizeThreshold ²ÎÊý£¬´óÓÚ´ËÖµµÄ¶ÔÏóÖ±½ÓÔÚÀÏÄê´ú·ÖÅ䣬±ÜÃâÔÚ Eden ÇøºÍ Survivor ÇøÖ®¼äµÄ´óÁ¿ÄÚ´æ¸´ÖÆ£» +### 4.3 ³¤ÆÚ´æ»îµÄ¶ÔÏó½øÈëÀÏÄê´ú -JVM ?????????????????????? Minor GC ????????? Survivor ????????????? Survivor ????????? 1?????????? Minor GC ??????????????? 1???????????????????????????????? 15 ????? -XX:MaxTenuringThreshold ??????? +JVM Ϊ¶ÔÏó¶¨ÒåÄêÁ伯ÊýÆ÷£¬¾­¹ý Minor GC ÒÀÈ»´æ»îÇÒ±» Survivor ÇøÈÝÄɵģ¬Òƶ¯µ½ Survivor Çø£¬ÄêÁä¼Ó 1£¬Ã¿¾­ÀúÒ»´Î Minor GC ²»±»ÇåÀíÔòÄêÁä¼Ó 1£¬Ôö¼Óµ½Ò»¶¨ÄêÁäÔòÒÆ¶¯µ½ÀÏÄêÇø£¨Ä¬ÈÏ 15 Ë꣬ͨ¹ý -XX:MaxTenuringThreshold ÉèÖã©£» -### 4.4 ????????????§Ø? +### 4.4 ¶¯Ì¬¶ÔÏóÄêÁäÅж¨ -?? Survivor ????????????§Ø????§³?????? Survivor ??????????????????????????????????????????? +Èô Survivor ÇøÖÐͬÄêÁäËùÓжÔÏó´óС×ܺʹóÓÚ Survivor ¿Õ¼äÒ»°ë£¬ÔòÄêÁä´óÓÚµÈÓÚ¸ÃÄêÁäµÄ¶ÔÏó¿ÉÒÔÖ±½Ó½øÈëÀÏÄê´ú£» -### 4.5 ???????? +### 4.5 ¿Õ¼ä·ÖÅäµ£±£ -????? Minor GC ????JVM ?????????????????????????????????????§Ø?????????????? Minor GC ???????????????????????????????????????????????¦Í????????????????????§³???????????? Minor GC??§³???????? Full GC?? +ÔÚ·¢Éú Minor GC ֮ǰ£¬JVM Ïȼì²éÀÏÄê´ú×î´ó¿ÉÓÃÁ¬Ðø¿Õ¼äÊÇ·ñ´óÓÚÐÂÉú´úËùÓжÔÏó×ܿռ䣬³ÉÁ¢µÄ»° Minor GC È·ÈÏÊǰ²È«µÄ£»·ñÔò¼ÌÐø¼ì²éÀÏÄê´ú×î´ó¿ÉÓÃÁ¬Ðø¿Õ¼äÊÇ·ñ´óÓÚÀú´Î½úÉýµ½ÀÏÄê´ú¶ÔÏóµÄƽ¾ù´óС£¬´óÓڵϰ½øÐÐ Minor GC£¬Ð¡Óڵϰ½øÐÐ Full GC¡£ -## 4.6 Full GC ????????? +## 4.6 Full GC µÄ´¥·¢Ìõ¼þ -???? Minor GC?????????????????? Eden ???????????????????? Minor GC???? Full GC ????????????????????? +¶ÔÓÚ Minor GC£¬Æä´¥·¢Ìõ¼þ·Ç³£¼òµ¥£¬µ± Eden Çø¿Õ¼äÂúʱ£¬¾Í½«´¥·¢Ò»´Î Minor GC¡£¶ø Full GC ÔòÏà¶Ô¸´ÔÓ£¬ÓÐÒÔÏÂÌõ¼þ£º -### 4.6.1 ???? System.gc() +### 4.6.1 µ÷Óà System.gc() -??????????????? JVM ???? Full GC??????????????????????????????????? Full GC????????? Full GC ????????????????§¼???????????????????????????????????????????????????????????—¨????? -XX:+ DisableExplicitGC ????? RMI ???? System.gc()?? +´Ë·½·¨µÄµ÷ÓÃÊǽ¨Òé JVM ½øÐÐ Full GC£¬ËäȻֻÊǽ¨Òé¶ø·ÇÒ»¶¨£¬µ«ºÜ¶àÇé¿öÏÂËü»á´¥·¢ Full GC£¬´Ó¶øÔö¼Ó Full GC µÄƵÂÊ£¬Ò²¼´Ôö¼ÓÁ˼äЪÐÔÍ£¶ÙµÄ´ÎÊý¡£Òò´ËÇ¿ÁÒ½¨ÒéÄܲ»Ê¹Óô˷½·¨¾Í²»ÒªÊ¹Óã¬ÈÃÐéÄâ»ú×Ô¼ºÈ¥¹ÜÀíËüµÄÄڴ棬¿Éͨ¹ý -XX:+ DisableExplicitGC À´½ûÖ¹ RMI µ÷Óà System.gc()¡£ -### 4.6.2 ?????????? +### 4.6.2 ÀÏÄê´ú¿Õ¼ä²»×ã -??????????????????????????????????????????????????????????????????????? Full GC ??????????????????????? Java.lang.OutOfMemoryError: Java heap space ????????????????????? Full GC??????????????????????? Minor GC ??¦Á????????????????????????????¹À??????????????????î• +ÀÏÄê´ú¿Õ¼ä²»×ãµÄ³£¼û³¡¾°ÎªÇ°ÎÄËù½²µÄ´ó¶ÔÏóÖ±½Ó½øÈëÀÏÄê´ú¡¢³¤ÆÚ´æ»îµÄ¶ÔÏó½øÈëÀÏÄê´úµÈ£¬µ±Ö´ÐÐ Full GC ºó¿Õ¼äÈÔÈ»²»×㣬ÔòÅ׳öÈçÏ´íÎó£º Java.lang.OutOfMemoryError: Java heap space Ϊ±ÜÃâÒÔÉÏÁ½ÖÖ×´¿öÒýÆðµÄ Full GC£¬µ÷ÓÅʱӦ¾¡Á¿×öµ½ÈöÔÏóÔÚ Minor GC ½×¶Î±»»ØÊÕ¡¢ÈöÔÏóÔÚÐÂÉú´ú¶à´æ»îÒ»¶Îʱ¼ä¼°²»Òª´´½¨¹ý´óµÄ¶ÔÏó¼°Êý×é¡£ -### 4.6.3 ??????????? +### 4.6.3 ¿Õ¼ä·ÖÅäµ£±£Ê§°Ü -?????????? Minor GC ???????????????????????????????? HandlePromotionFailure ????????????? Full GC?? +ʹÓø´ÖÆËã·¨µÄ Minor GC ÐèÒªÀÏÄê´úµÄÄÚ´æ¿Õ¼ä×÷µ£±££¬Èç¹û³öÏÖÁË HandlePromotionFailure µ£±£Ê§°Ü£¬Ôò»á´¥·¢ Full GC¡£ -### 4.6.4 JDK 1.7 ????????????????? +### 4.6.4 JDK 1.7 ¼°ÒÔǰµÄÓÀ¾Ã´ú¿Õ¼ä²»×ã -?? JDK 1.7 ???????HotSpot ??????§Ö??????????????????????????§Õ?????§» class ??????????????????????????????????????????????????????????????Permanet Generation ????????????¦Ä????????? CMS GC ????????????? Full GC????????? Full GC ?????????????? JVM ?????????????????java.lang.OutOfMemoryError: PermGen space ????? PermGen ?????? Full GC ????????????????? PermGen ????????? CMS GC?? +ÔÚ JDK 1.7 ¼°ÒÔǰ£¬HotSpot ÐéÄâ»úÖеķ½·¨ÇøÊÇÓÃÓÀ¾Ã´úʵÏֵģ¬ÓÀ¾Ã´úÖдæ·ÅµÄΪһЩ class µÄÐÅÏ¢¡¢³£Á¿¡¢¾²Ì¬±äÁ¿µÈÊý¾Ý£¬µ±ÏµÍ³ÖÐÒª¼ÓÔØµÄÀà¡¢·´ÉäµÄÀàºÍµ÷Óõķ½·¨½Ï¶àʱ£¬Permanet Generation ¿ÉÄܻᱻռÂú£¬ÔÚδÅäÖÃΪ²ÉÓà CMS GC µÄÇé¿öÏÂÒ²»áÖ´ÐÐ Full GC¡£Èç¹û¾­¹ý Full GC ÈÔÈ»»ØÊÕ²»ÁË£¬ÄÇô JVM »áÅ׳öÈçÏ´íÎóÐÅÏ¢£ºjava.lang.OutOfMemoryError: PermGen space Ϊ±ÜÃâ PermGen Õ¼ÂúÔì³É Full GC ÏÖÏ󣬿ɲÉÓõķ½·¨ÎªÔö´ó PermGen ¿Õ¼ä»òתΪʹÓà CMS GC¡£ -?? JDK 1.8 ?????????�I?????????????????????????????????—¨??????????? Full GC ???????????? +ÔÚ JDK 1.8 ÖÐÓÃÔª¿Õ¼äÌæ»»ÁËÓÀ¾Ã´ú×÷Ϊ·½·¨ÇøµÄʵÏÖ£¬Ôª¿Õ¼äÊDZ¾µØÄڴ棬Òò´Ë¼õÉÙÁËÒ»ÖÖ Full GC ´¥·¢µÄ¿ÉÄÜÐÔ¡£ ### 4.6.5 Concurrent Mode Failure -??? CMS GC ??????????§Ø????????????????????????????????????????? CMS GC ??????????????????????????????? Full GC??????? Concurrent Mode Failure ????????? Full GC?? +Ö´ÐÐ CMS GC µÄ¹ý³ÌÖÐͬʱÓжÔÏóÒª·ÅÈëÀÏÄê´ú£¬¶ø´ËʱÀÏÄê´ú¿Õ¼ä²»×㣨ÓÐʱºò¡°¿Õ¼ä²»×㡱ÊÇ CMS GC ʱµ±Ç°µÄ¸¡¶¯À¬»ø¹ý¶àµ¼ÖÂÔÝʱÐԵĿռ䲻×ã´¥·¢ Full GC£©£¬±ã»á±¨ Concurrent Mode Failure ´íÎ󣬲¢´¥·¢ Full GC¡£ -# ???????? +# Àà¼ÓÔØ»úÖÆ -???????????????????? +ÀàÊÇÔÚÔËÐÐÆÚ¼ä¶¯Ì¬¼ÓÔØµÄ¡£ -## 1 ??????????? +## 1 ÀàµÄÉúÃüÖÜÆÚ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/32b8374a-e822-4720-af0b-c0f485095ea2.jpg) -???????? 7 ????¦²? +°üÀ¨ÒÔÏ 7 ¸ö½×¶Î£º -- **?????Loading??** -- **?????Verification??** -- **?????Preparation??** -- **??????Resolution??** -- **???????Initialization??** -- ????Using?? -- §Ø???Unloading?? +- **¼ÓÔØ£¨Loading£©** +- **ÑéÖ¤£¨Verification£©** +- **×¼±¸£¨Preparation£©** +- **½âÎö£¨Resolution£©** +- **³õʼ»¯£¨Initialization£©** +- ʹÓã¨Using£© +- Ð¶ÔØ£¨Unloading£© -???§ß??????????§»???????????????????????????????????? Java ??????? +ÆäÖнâÎö¹ý³ÌÔÚijЩÇé¿öÏ¿ÉÒÔÔÚ³õʼ»¯½×¶ÎÖ®ºóÔÙ¿ªÊ¼£¬ÕâÊÇΪÁËÖ§³Ö Java µÄ¶¯Ì¬°ó¶¨¡£ -## 2. ????????? +## 2. Àà³õʼ»¯Ê±»ú -??????œZ?§Ó????????????????§Þ????????œZ???ÕÇ?????????????????????????????§Ô??????( ???????????????????????? ) +ÐéÄâ»ú¹æ·¶Öв¢Ã»ÓÐÇ¿ÖÆÔ¼ÊøºÎʱ½øÐмÓÔØ£¬µ«Êǹ淶Ñϸñ¹æ¶¨ÁËÓÐÇÒÖ»ÓÐÏÂÁÐÎåÖÖÇé¿ö±ØÐë¶ÔÀà½øÐгõʼ»¯£º( ¼ÓÔØ¡¢ÑéÖ¤¡¢×¼±¸¶¼»áËæ×Å·¢Éú ) -1. ???? new??getstatic??putstatic??invokestatic ????????????????????????§ß??§Û?????????????????????????????????????? 4 ??????????????? new ????????????????????????????????????¦²??? final ???¦±???????????????????????????¦Ã???????????????????????????????? +1. Óöµ½ new¡¢getstatic¡¢putstatic¡¢invokestatic ÕâËÄÌõ×Ö½ÚÂëÖ¸Áîʱ£¬Èç¹ûÀàûÓнøÐйý³õʼ»¯£¬Ôò±ØÐëÏÈ´¥·¢Æä³õʼ»¯¡£×î³£¼ûµÄÉú³ÉÕâ 4 ÌõÖ¸ÁîµÄ³¡¾°ÊÇ£ºÊ¹Óà new ¹Ø¼ü×ÖʵÀý»¯¶ÔÏóµÄʱºò£»¶ÁÈ¡»òÉèÖÃÒ»¸öÀàµÄ¾²Ì¬×ֶΣ¨±» final ÐÞÊΡ¢ÒÑÔÚ±àÒëÆ÷°Ñ½á¹û·ÅÈë³£Á¿³ØµÄ¾²Ì¬×ֶγýÍ⣩µÄʱºò£»ÒÔ¼°µ÷ÓÃÒ»¸öÀàµÄ¾²Ì¬·½·¨µÄʱºò¡£ -2. ??? java.lang.reflect ?????????????§Ù?????????????????§ß??§Ô???????????????????????? +2. ʹÓà java.lang.reflect °üµÄ·½·¨¶ÔÀà½øÐз´Éäµ÷ÓõÄʱºò£¬Èç¹ûÀàûÓнøÐгõʼ»¯£¬ÔòÐèÒªÏÈ´¥·¢Æä³õʼ»¯¡£ -3. ????????????????????????Íè????§ß??§Û???????????????????Íè????????? +3. µ±³õʼ»¯Ò»¸öÀàµÄʱºò£¬Èç¹û·¢Ï֯䏏À໹ûÓнøÐйý³õʼ»¯£¬ÔòÐèÒªÏÈ´¥·¢Æä¸¸ÀàµÄ³õʼ»¯¡£ -4. ?????????????????????????????§Ö????????? main() ????????????????????????????????? +4. µ±ÐéÄâ»úÆô¶¯Ê±£¬Óû§ÐèÒªÖ¸¶¨Ò»¸öÒªÖ´ÐеÄÖ÷Àࣨ°üº¬ main() ·½·¨µÄÄǸöÀࣩ£¬ÐéÄâ»ú»áÏȳõʼ»¯Õâ¸öÖ÷Àࣻ -5. ????? jdk1.7 ???????????????????? java.lang.invoke.MethodHandle ?????????????? REF_getStatic, REF_putStatic, REF_invokeStatic ???????????????????????????????????§ß??§Û?????????????????????????? +5. µ±Ê¹Óà jdk1.7 µÄ¶¯Ì¬ÓïÑÔÖ§³Öʱ£¬Èç¹ûÒ»¸ö java.lang.invoke.MethodHandle ʵÀý×îºóµÄ½âÎö½á¹ûΪ REF_getStatic, REF_putStatic, REF_invokeStatic µÄ·½·¨¾ä±ú£¬²¢ÇÒÕâ¸ö·½·¨¾ä±úËù¶ÔÓ¦µÄÀàûÓнøÐйý³õʼ»¯£¬ÔòÐèÒªÏÈ´¥·¢Æä³õʼ»¯£» -???? 5 ??????§Ö????????????????????????¨¢??????????????????????????????????????????????¨¢?????????????????????? +ÒÔÉÏ 5 ÖÖ³¡¾°ÖеÄÐÐΪ³ÆÎª¶ÔÒ»¸öÀà½øÐÐÖ÷¶¯ÒýÓᣳý´ËÖ®Í⣬ËùÓÐÒýÓÃÀàµÄ·½Ê½¶¼²»»á´¥·¢³õʼ»¯£¬³ÆÎª±»¶¯ÒýÓᣱ»¶¯ÒýÓõij£¼ûÀý×Ó°üÀ¨£º -1\. ???????????????????¦²????????????????? +1\. ͨ¹ý×ÓÀàÒýÓø¸ÀàµÄ¾²Ì¬×ֶΣ¬²»»áµ¼ÖÂ×ÓÀà³õʼ»¯¡£ ```java -System.out.println(SubClass.value); // value ????? SuperClass ?§Ø??? +System.out.println(SubClass.value); // value ×Ö¶ÎÔÚ SuperClass Öж¨Òå ``` -2\. ??????úE????????????????????????????¨´?????????????§Ô???????????????????????????????????????? Object ?????????§Ñ???????????????????? +2\. ͨ¹ýÊý×鶨ÒåÀ´ÒýÓÃÀ࣬²»»á´¥·¢´ËÀàµÄ³õʼ»¯¡£¸Ã¹ý³Ì»á¶ÔÊý×éÀà½øÐгõʼ»¯£¬Êý×éÀàÊÇÒ»¸öÓÉÐéÄâ»ú×Ô¶¯Éú³ÉµÄ¡¢Ö±½Ó¼Ì³Ð×Ô Object µÄ×ÓÀ࣬ÆäÖаüº¬ÁËÊý×éµÄÊôÐԺͷ½·¨¡£ ```java SuperClass[] sca = new SuperClass[10]; ``` -3\. ??????????¦Ë????????????????§µ??????????????????????�i?????????????????�i????????????? +3\. ³£Á¿ÔÚ±àÒë½×¶Î»á´æÈëµ÷ÓÃÀàµÄ³£Á¿³ØÖУ¬±¾ÖÊÉϲ¢Ã»ÓÐÖ±½ÓÒýÓõ½¶¨Òå³£Á¿µÄÀ࣬Òò´Ë²»»á´¥·¢¶¨Òå³£Á¿µÄÀàµÄ³õʼ»¯¡£ ```java System.out.println(ConstClass.HELLOWORLD); ``` -## 3. ???????? +## 3. Àà¼ÓÔØ¹ý³Ì -???????????????????????????????? 5 ????¦±? +°üº¬Á˼ÓÔØ¡¢ÑéÖ¤¡¢×¼±¸¡¢½âÎöºÍ³õʼ»¯Õâ 5 ¸ö½×¶Î¡£ -### 3.1 ???? +### 3.1 ¼ÓÔØ -?????????????????¦²??????????? +¼ÓÔØÊÇÀà¼ÓÔØµÄÒ»¸ö½×¶Î£¬×¢Òâ²»Òª»ìÏý¡£ -????????????????????? +¼ÓÔØ¹ý³ÌÍê³ÉÒÔÏÂÈý¼þÊ£º -1. ???????????????????????????????????????? -2. ????????????????????›¥????????????????????›¥???? -3. ???????????????????????? Class ?????????????????????????????????? +1. ͨ¹ýÒ»¸öÀàµÄÈ«ÏÞ¶¨ÃûÀ´»ñÈ¡¶¨Òå´ËÀàµÄ¶þ½øÖÆ×Ö½ÚÁ÷¡£ +2. ½«Õâ¸ö×Ö½ÚÁ÷Ëù´ú±íµÄ¾²Ì¬´æ´¢½á¹¹×ª»¯Îª·½·¨ÇøµÄÔËÐÐʱ´æ´¢½á¹¹¡£ +3. ÔÚÄÚ´æÖÐÉú³ÉÒ»¸ö´ú±íÕâ¸öÀàµÄ Class ¶ÔÏó£¬×÷Ϊ·½·¨ÇøÕâ¸öÀàµÄ¸÷ÖÖÊý¾ÝµÄ·ÃÎÊÈë¿Ú¡£ -???§Ø??????????????????¡¤???§Ý???? +ÆäÖжþ½øÖÆ×Ö½ÚÁ÷¿ÉÒÔ´ÓÒÔÏ·½Ê½ÖлñÈ¡£º -- ?? ZIP ???????????????????????? JAR??EAR??WAR ?????????? -- ???????§Ý?????????????????????? Applet?? -- ???????????????????????????????????????????? java.lang.reflect.Proxy ?§µ????????? ProxyGenerator.generateProxyClass ???????????????????? -- ??????????????????????? JSP ???????? JSP ??????????? Class ?? -- ????????????????????????????????§»?§Þ???????????? SAP Netweaver????????????????????????????????????????????? +- ´Ó ZIP °ü¶ÁÈ¡£¬ÕâºÜ³£¼û£¬×îÖÕ³ÉΪÈÕºó JAR¡¢EAR¡¢WAR ¸ñʽµÄ»ù´¡¡£ +- ´ÓÍøÂçÖлñÈ¡£¬ÕâÖÖ³¡¾°×îµäÐ͵ÄÓ¦ÓÃÊÇ Applet¡£ +- ÔËÐÐʱ¼ÆËãÉú³É£¬ÕâÖÖ³¡¾°Ê¹ÓõÃ×î¶àµÃ¾ÍÊǶ¯Ì¬´úÀí¼¼Êõ£¬ÔÚ java.lang.reflect.Proxy ÖУ¬¾ÍÊÇÓÃÁË ProxyGenerator.generateProxyClass µÄ´úÀíÀàµÄ¶þ½øÖÆ×Ö½ÚÁ÷¡£ +- ÓÉÆäËûÎļþÉú³É£¬µäÐͳ¡¾°ÊÇ JSP Ó¦Ó㬼´ÓÉ JSP ÎļþÉú³É¶ÔÓ¦µÄ Class Àà¡£ +- ´ÓÊý¾Ý¿â¶ÁÈ¡£¬ÕâÖÖ³¡¾°Ïà¶ÔÉÙ¼û£¬ÀýÈçÓÐЩÖмä¼þ·þÎñÆ÷£¨Èç SAP Netweaver£©¿ÉÒÔÑ¡Ôñ°Ñ³ÌÐò°²×°µ½Êý¾Ý¿âÖÐÀ´Íê³É³ÌÐò´úÂëÔÚ¼¯Èº¼äµÄ·Ö·¢¡£ ... -### 3.2 ??? +### 3.2 ÑéÖ¤ -??? Class ???????????§Ñ??????????????????????????????¦²???????????????? +È·±£ Class ÎļþµÄ×Ö½ÚÁ÷Öаüº¬µÄÐÅÏ¢·ûºÏµ±Ç°ÐéÄâ»úµÄÒªÇ󣬲¢ÇÒ²»»áΣº¦ÐéÄâ»ú×ÔÉíµÄ°²È«¡£ -????????? 4 ????¦²? +Ö÷ÒªÓÐÒÔÏ 4 ¸ö½×¶Î£º -1. ????????? -2. ??????????????????????????????????????? -3. ??????????????????????????????????????????????????????????????????????????§µ??????? -4. ??????????? +1. Îļþ¸ñʽÑéÖ¤ +2. ÔªÊý¾ÝÑéÖ¤£¨¶Ô×Ö½ÚÂëÃèÊöµÄÐÅÏ¢½øÐÐÓïÒå·ÖÎö£© +3. ×Ö½ÚÂëÑéÖ¤£¨Í¨¹ýÊý¾ÝÁ÷ºÍ¿ØÖÆÁ÷·ÖÎö£¬È·±£³ÌÐòÓïÒåÊǺϷ¨¡¢·ûºÏÂß¼­µÄ£¬½«¶ÔÀàµÄ·½·¨Ìå½øÐÐУÑé·ÖÎö£© +4. ·ûºÅÒýÓÃÑéÖ¤ -### 3.3 ??? +### 3.3 ×¼±¸ -???????? static ???¦Å????????????????????????›g???¨®????????????????????µµ +Àà±äÁ¿ÊDZ» static ÐÞÊεıäÁ¿£¬×¼±¸½×¶ÎΪÀà±äÁ¿·ÖÅäÄÚ´æ²¢ÉèÖóõʼֵ£¬Ê¹ÓõÄÊÇ·½·¨ÇøµÄÄÚ´æ¡£ -????????????????¦Ç?????—¨???????????????????????????????? Java ???§³? +ʵÀý±äÁ¿²»»áÔÚÕâ½×¶Î·ÖÅäÄڴ棬Ëü½«»áÔÚ¶ÔÏóʵÀý»¯Ê±Ëæ×ŶÔÏóÒ»Æð·ÖÅäÔÚ Java ¶ÑÖС£ -???????? 0 ????????????????? value ???????? 0 ?????? 123?? +³õʼֵһ°ãΪ 0 Öµ£¬ÀýÈçÏÂÃæµÄÀà±äÁ¿ value ±»³õʼ»¯Îª 0 ¶ø²»ÊÇ 123¡£ ```java public static int value = 123; ``` -??????????????????????????????§Ô??????????????? 0?? +Èç¹ûÀà±äÁ¿Êdz£Á¿£¬ÄÇô»á°´ÕÕ±í´ïʽÀ´½øÐгõʼ»¯£¬¶ø²»ÊǸ³ÖµÎª 0¡£ ```java public static final int value = 123; ``` -### 3.4 ???? +### 3.4 ½âÎö -?????????????????�I????????????? +½«³£Á¿³ØµÄ·ûºÅÒýÓÃÌæ»»ÎªÖ±½ÓÒýÓõĹý³Ì¡£ -### 3.5 ????? +### 3.5 ³õʼ»¯ -???????¦Ì??????????????? <clinit>() ?????????? +³õʼ»¯½×¶Î¼´ÐéÄâ»úÖ´ÐÐÀ๹ÔìÆ÷ <clinit>() ·½·¨µÄ¹ý³Ì¡£ -???????¦²?????????????????????????????????????¦²????????????????????????????????????????????????? +ÔÚ×¼±¸½×¶Î£¬Àà±äÁ¿ÒѾ­¸³¹ýÒ»´ÎϵͳҪÇóµÄ³õʼֵ£¬¶øÔÚ³õʼ»¯½×¶Î£¬¸ù¾Ý³ÌÐòԱͨ¹ý³ÌÐòÖÆ¶¨µÄÖ÷¹Û¼Æ»®È¥³õʼ»¯Àà±äÁ¿ºÍÆäËü×ÊÔ´¡£ -<clinit>() ??????????????? +<clinit>() ·½·¨¾ßÓÐÒÔÏÂÌØµã£º -- ???????????????????????????????????????????÷Ïstatic{} ?ï‚?§Ö???????????????????????????????????????§Ô?????????????????????????????????????????????????????????????????????????????????????????????????? +- ÊÇÓɱàÒëÆ÷×Ô¶¯ÊÕ¼¯ÀàÖÐËùÓÐÀà±äÁ¿µÄ¸³Öµ¶¯×÷ºÍ¾²Ì¬Óï¾ä¿é£¨static{} ¿é£©ÖеÄÓï¾äºÏ²¢²úÉúµÄ£¬±àÒëÆ÷ÊÕ¼¯µÄ˳ÐòÓÉÓï¾äÔÚÔ´ÎļþÖгöÏÖµÄ˳Ðò¾ö¶¨¡£Ìرð×¢ÒâµÄÊÇ£¬¾²Ì¬Óï¾ä¿éÖ»ÄÜ·ÃÎʵ½¶¨ÒåÔÚËü֮ǰµÄÀà±äÁ¿£¬¶¨ÒåÔÚËüÖ®ºóµÄÀà±äÁ¿Ö»Äܸ³Öµ£¬²»ÄÜ·ÃÎÊ¡£ÀýÈçÒÔÏ´úÂ룺 ```java public class Test { static { - i = 0; // ???????????????????????? - System.out.print(i); // ????????????????????????¨¢? + i = 0; // ¸ø±äÁ¿¸³Öµ¿ÉÒÔÕý³£±àÒëͨ¹ý + System.out.print(i); // Õâ¾ä±àÒëÆ÷»áÌáʾ¡°·Ç·¨ÏòǰÒýÓá± } static int i = 1; } ``` -- ?????????????????????????? <init>()??????????????????????????????????????????????????? <clinit>() ????????????????? <clinit>() ?????????§ß??????????????§Ö??????? <clinit>() ??????????? java.lang.Object?? +- ÓëÀàµÄ¹¹Ô캯Êý£¨»òÕß˵ʵÀý¹¹ÔìÆ÷ <init>()£©²»Í¬£¬²»ÐèÒªÏÔʽµÄµ÷Óø¸ÀàµÄ¹¹ÔìÆ÷¡£ÐéÄâ»ú»á×Ô¶¯±£Ö¤ÔÚ×ÓÀàµÄ <clinit>() ·½·¨ÔËÐÐ֮ǰ£¬¸¸ÀàµÄ <clinit>() ·½·¨ÒѾ­Ö´ÐнáÊø¡£Òò´ËÐéÄâ»úÖеÚÒ»¸öÖ´ÐÐ <clinit>() ·½·¨µÄÀà¿Ï¶¨Îª java.lang.Object¡£ -- ???????? <clinit>() ????????§µ??????¦Æ??????§Ø??????????????????????????????????????????? +- ÓÉÓÚ¸¸ÀàµÄ <clinit>() ·½·¨ÏÈÖ´ÐУ¬Ò²¾ÍÒâζן¸ÀàÖж¨ÒåµÄ¾²Ì¬Óï¾ä¿éÒªÓÅÓÚ×ÓÀàµÄ±äÁ¿¸³Öµ²Ù×÷¡£ÀýÈçÒÔÏ´úÂ룺 ```java static class Parent { @@ -573,53 +573,53 @@ static class Sub extends Parent { } public static void main(String[] args) { - System.out.println(Sub.B); // ????????????§Ö???????? A??????? 2 + System.out.println(Sub.B); // Êä³ö½á¹ûÊǸ¸ÀàÖеľ²Ì¬±äÁ¿Öµ A£¬Ò²¾ÍÊÇ 2 } ``` -- <clinit>() ??????????????????????????????§Ó???????????ï…???§Ø???????????????????????????????????? <clinit>() ?????? +- <clinit>() ·½·¨¶ÔÓÚÀà»ò½Ó¿Ú²»ÊDZØÐëµÄ£¬Èç¹ûÒ»¸öÀàÖв»°üº¬¾²Ì¬Óï¾ä¿é£¬Ò²Ã»ÓжÔÀà±äÁ¿µÄ¸³Öµ²Ù×÷£¬±àÒëÆ÷¿ÉÒÔ²»Îª¸ÃÀàÉú³É <clinit>() ·½·¨¡£ -- ????§Ó?????????????ï…??????????????????????????????????????????????? <clinit>() ???????????????????????§ß??? <clinit>() ?????????????§Ú????? <clinit>() ????????§Ö???????§Ø????????????????????????????????????????????????????????§ß??? <clinit>() ?????? +- ½Ó¿ÚÖв»¿ÉÒÔʹÓþ²Ì¬Óï¾ä¿é£¬µ«ÈÔÈ»ÓÐÀà±äÁ¿³õʼ»¯µÄ¸³Öµ²Ù×÷£¬Òò´Ë½Ó¿ÚÓëÀàÒ»Ñù¶¼»áÉú³É <clinit>() ·½·¨¡£µ«½Ó¿ÚÓëÀ಻ͬµÄÊÇ£¬Ö´ÐÐ½Ó¿ÚµÄ <clinit>() ·½·¨²»ÐèÒªÏÈÖ´Ðи¸½Ó¿ÚµÄ <clinit>() ·½·¨¡£Ö»Óе±¸¸½Ó¿ÚÖж¨ÒåµÄ±äÁ¿Ê¹ÓÃʱ£¬¸¸½Ó¿Ú²Å»á³õʼ»¯¡£ÁíÍ⣬½Ó¿ÚµÄʵÏÖÀàÔÚ³õʼ»¯Ê±Ò²Ò»Ñù²»»áÖ´ÐÐ½Ó¿ÚµÄ <clinit>() ·½·¨¡£ -- ?????????????? <clinit>() ??????????????¡À????????????????????????????????????????????????????????? <clinit>() ???????????????????????????????????? <clinit>() ??????????????????? <clinit>() ???????§Ü??????????????????????????????????????§Õ????????????¦±? +- ÐéÄâ»ú»á±£Ö¤Ò»¸öÀàµÄ <clinit>() ·½·¨ÔÚ¶àÏ̻߳·¾³Ï±»ÕýÈ·µÄ¼ÓËøºÍͬ²½£¬Èç¹û¶à¸öÏß³Ìͬʱ³õʼ»¯Ò»¸öÀֻ࣬»áÓÐÒ»¸öÏß³ÌÖ´ÐÐÕâ¸öÀàµÄ <clinit>() ·½·¨£¬ÆäËüÏ̶߳¼»á×èÈûµÈ´ý£¬Ö±µ½»î¶¯Ïß³ÌÖ´ÐÐ <clinit>() ·½·¨Íê±Ï¡£Èç¹ûÔÚÒ»¸öÀàµÄ <clinit>() ·½·¨ÖÐÓкÄʱµÄ²Ù×÷£¬¾Í¿ÉÄÜÔì³É¶à¸ö½ø³Ì×èÈû£¬ÔÚʵ¼Ê¹ý³ÌÖдËÖÖ×èÈûºÜÒþ±Î¡£ -## 4. ??????? +## 4. Àà¼ÓÔØÆ÷ -????????????????????§Ö????????????????????????????????????????? ( ??????? )???????????? Java ???????????????????¨®??????????????????????????????????????????????????????????? +ÐéÄâ»úÉè¼ÆÍŶӰÑÀà¼ÓÔØ½×¶ÎÖеġ°Í¨¹ýÒ»¸öÀàµÄÈ«ÏÞ¶¨ÃûÀ´»ñÈ¡ÃèÊö´ËÀàµÄ¶þ½øÖÆ×Ö½ÚÁ÷ ( ¼´×Ö½ÚÂë )¡±Õâ¸ö¶¯×÷·Åµ½ Java ÐéÄâ»úÍⲿȥʵÏÖ£¬ÒÔ±ãÈÃÓ¦ÓóÌÐò×Ô¼º¾ö¶¨ÈçºÎÈ¥»ñÈ¡ËùÐèÒªµÄÀࡣʵÏÖÕâ¸ö¶¯×÷µÄ´úÂëÄ£¿é³ÆÎª¡°Àà¼ÓÔØÆ÷¡±¡£ -### 4.1 ??????????? +### 4.1 ÀàÓëÀà¼ÓÔØÆ÷ -???????????????????????????????????????????????????? Java ??????§Ö?¦·??????????????????????????????????????????????????????????????????????????????????????? Class ????? equals() ??????isAssignableFrom() ??????isInstance() ????????????????????? instanceof() ????????????????????§Ø?????????????????????????????????????????????????????ÈÉ??????????????????????? Class ??????????????????????????????????????????????????????????????? +¶ÔÓÚÈÎÒâÒ»¸öÀ࣬¶¼ÐèÒªÓɼÓÔØËüµÄÀà¼ÓÔØÆ÷ºÍÕâ¸öÀà±¾ÉíһͬȷÁ¢ÆäÔÚ Java ÐéÄâ»úÖеÄΨһÐÔ£¬Ã¿Ò»¸öÀà¼ÓÔØÆ÷£¬¶¼ÓµÓÐÒ»¸ö¶ÀÁ¢µÄÀàÃû³Æ¿Õ¼ä¡£Í¨Ë×¶øÑÔ£º±È½ÏÁ½¸öÀàÊÇ·ñ¡°ÏàµÈ¡±£¨ÕâÀïËùÖ¸µÄ¡°ÏàµÈ¡±£¬°üÀ¨ÀàµÄ Class ¶ÔÏóµÄ equals() ·½·¨¡¢isAssignableFrom() ·½·¨¡¢isInstance() ·½·¨µÄ·µ»Ø½á¹û£¬Ò²°üÀ¨Ê¹Óà instanceof() ¹Ø¼ü×Ö¶Ô×ö¶ÔÏóËùÊô¹ØÏµÅж¨µÈÇé¿ö£©£¬Ö»ÓÐÔÚÕâÁ½¸öÀàʱÓÉͬһ¸öÀà¼ÓÔØÆ÷¼ÓÔØµÄǰÌáϲÅÓÐÒâÒ壬·ñÔò£¬¼´Ê¹ÕâÁ½¸öÀàÀ´Ô´ÓÚͬһ¸ö Class Îļþ£¬±»Í¬Ò»¸öÐéÄâ»ú¼ÓÔØ£¬Ö»Òª¼ÓÔØËüÃǵÄÀà¼ÓÔØÆ÷²»Í¬£¬ÄÇÕâÁ½¸öÀà¾Í±Ø¶¨²»ÏàµÈ¡£ -### 4.2 ??????????? +### 4.2 Àà¼ÓÔØÆ÷·ÖÀà -?? Java ????????????????????????????????????????? +´Ó Java ÐéÄâ»úµÄ½Ç¶ÈÀ´½²£¬Ö»´æÔÚÒÔÏÂÁ½ÖÖ²»Í¬µÄÀà¼ÓÔØÆ÷£º -??????????????????Bootstrap ClassLoader???????????????? C++ ??????????????????????????????????????????????????§»???? Java ???????????????????????????????????? java.lang.ClassLoader?? +Ò»ÖÖÊÇÆô¶¯Àà¼ÓÔØÆ÷£¨Bootstrap ClassLoader£©£¬Õâ¸öÀà¼ÓÔØÆ÷Óà C++ ʵÏÖ£¬ÊÇÐéÄâ»ú×ÔÉíµÄÒ»²¿·Ö£»ÁíÒ»ÖÖ¾ÍÊÇËùÓÐÆäËûÀàµÄ¼ÓÔØÆ÷£¬ÕâЩÀàÓÉ Java ʵÏÖ£¬¶ÀÁ¢ÓÚÐéÄâ»úÍⲿ£¬²¢ÇÒÈ«¶¼¼Ì³Ð×Ô³éÏóÀà java.lang.ClassLoader¡£ -?? Java ??????????????????????????????????§»?? +´Ó Java ¿ª·¢ÈËÔ±µÄ½Ç¶È¿´£¬Àà¼ÓÔØÆ÷¿ÉÒÔ»®·ÖµÃ¸üϸÖÂһЩ£º -- ?????????????Bootstrap ClassLoader?? ????????????????? \lib ???§Ö??????? -Xbootclasspath ???????????¡¤???§Ö?????????????????????????????????? rt.jar???????????????????? lib ??????????????????????????????§³? ???????????????? Java ??????????????????§Õ????????????????????????????????????????????????????? null ???�r?¨À? +- Æô¶¯Àà¼ÓÔØÆ÷£¨Bootstrap ClassLoader£© ´ËÀà¼ÓÔØÆ÷¸ºÔ𽫴æ·ÅÔÚ \lib Ŀ¼Öе쬻òÕß±» -Xbootclasspath ²ÎÊýËùÖ¸¶¨µÄ·¾¶Öе쬲¢ÇÒÊÇÐéÄâ»úʶ±ðµÄ£¨½ö°´ÕÕÎļþÃûʶ±ð£¬Èç rt.jar£¬Ãû×Ö²»·ûºÏµÄÀà¿â¼´Ê¹·ÅÔÚ lib Ŀ¼ÖÐÒ²²»»á±»¼ÓÔØ£©Àà¿â¼ÓÔØµ½ÐéÄâ»úÄÚ´æÖС£ Æô¶¯Àà¼ÓÔØÆ÷ÎÞ·¨±» Java ³ÌÐòÖ±½ÓÒýÓã¬Óû§ÔÚ±àд×Ô¶¨ÒåÀà¼ÓÔØÆ÷ʱ£¬Èç¹ûÐèÒª°Ñ¼ÓÔØÇëÇóίÅɸøÒýµ¼Àà¼ÓÔØÆ÷£¬Ö±½ÓʹÓà null ´úÌæ¼´¿É¡£ -- ????????????Extension ClassLoader?? ?????????????? ExtClassLoader??sun.misc.Launcher$ExtClassLoader????????????? /lib/ext ????? java.ext.dir ???????????¡¤???§Ö????????????????§µ???????????????????????????? +- À©Õ¹Àà¼ÓÔØÆ÷£¨Extension ClassLoader£© Õâ¸öÀà¼ÓÔØÆ÷ÊÇÓÉ ExtClassLoader£¨sun.misc.Launcher$ExtClassLoader£©ÊµÏֵġ£Ëü¸ºÔ𽫠/lib/ext »òÕß±» java.ext.dir ϵͳ±äÁ¿ËùÖ¸¶¨Â·¾¶ÖеÄËùÓÐÀà¿â¼ÓÔØµ½ÄÚ´æÖУ¬¿ª·¢Õß¿ÉÒÔÖ±½ÓʹÓÃÀ©Õ¹Àà¼ÓÔØÆ÷¡£ -- ??¨®????????????Application ClassLoader?? ?????????????? AppClassLoader??sun.misc.Launcher$AppClassLoader??????????????????????? ClassLoader ?§Ö? getSystemClassLoader() ?????????????????????????????????????????????¡¤????ClassPath??????????????????????????????????????????????¨®????????????????????????????????????????????????????????????? +- Ó¦ÓóÌÐòÀà¼ÓÔØÆ÷£¨Application ClassLoader£© Õâ¸öÀà¼ÓÔØÆ÷ÊÇÓÉ AppClassLoader£¨sun.misc.Launcher$AppClassLoader£©ÊµÏֵġ£ÓÉÓÚÕâ¸öÀà¼ÓÔØÆ÷ÊÇ ClassLoader ÖÐµÄ getSystemClassLoader() ·½·¨µÄ·µ»ØÖµ£¬Òò´ËÒ»°ã³ÆÎªÏµÍ³Àà¼ÓÔØÆ÷¡£Ëü¸ºÔð¼ÓÔØÓû§Àà·¾¶£¨ClassPath£©ÉÏËùÖ¸¶¨µÄÀà¿â£¬¿ª·¢Õß¿ÉÒÔÖ±½ÓʹÓÃÕâ¸öÀà¼ÓÔØÆ÷£¬Èç¹ûÓ¦ÓóÌÐòÖÐûÓÐ×Ô¶¨Òå¹ý×Ô¼ºµÄÀà¼ÓÔØÆ÷£¬Ò»°ãÇé¿öÏÂÕâ¸ö¾ÍÊdzÌÐòÖÐĬÈϵÄÀà¼ÓÔØÆ÷¡£ -### 4.3 ????????? +### 4.3 Ë«Ç×ίÅÉÄ£ÐÍ -??¨®?????????????????????????§Þ?????????§Ò?????????????????????????????????????????????????¦É??????????????????????????Parents Delegation Model??????????????????????????????????????????????????????????????????????????????????????????????Composition??????????????????????§µ?Inheritance?????????? +Ó¦ÓóÌÐò¶¼ÊÇÓÉÈýÖÖÀà¼ÓÔØÆ÷Ï໥ÅäºÏ½øÐмÓÔØµÄ£¬Èç¹ûÓбØÒª£¬»¹¿ÉÒÔ¼ÓÈë×Ô¼º¶¨ÒåµÄÀà¼ÓÔØÆ÷¡£ÏÂͼչʾµÄÀà¼ÓÔØÆ÷Ö®¼äµÄ²ã´Î¹ØÏµ£¬³ÆÎªÀà¼ÓÔØÆ÷µÄË«Ç×ίÅÉÄ£ÐÍ£¨Parents Delegation Model£©¡£¸ÃÄ£ÐÍÒªÇó³ýÁ˶¥²ãµÄÆô¶¯Àà¼ÓÔØÆ÷Í⣬ÆäÓàµÄÀà¼ÓÔØÆ÷¶¼Ó¦ÓÐ×Ô¼ºµÄ¸¸Àà¼ÓÔØÆ÷£¬ÕâÀïÀà¼ÓÔØÆ÷Ö®¼äµÄ¸¸×Ó¹ØÏµÒ»°ãͨ¹ý×éºÏ£¨Composition£©¹ØÏµÀ´ÊµÏÖ£¬¶ø²»ÊÇͨ¹ý¼Ì³Ð£¨Inheritance£©µÄ¹ØÏµÊµÏÖ¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/2cdc3ce2-fa82-4c22-baaa-000c07d10473.jpg) -**????????** +**¹¤×÷¹ý³Ì** -??????????????????????????????????????????????????????????????????????????????????¦Å?????????????????¦Å?ï…??????§Ö?????????????????????????????????????§µ???§Ö??????????????????????????????????????¦¶????????????????????????????????????? +Èç¹ûÒ»¸öÀà¼ÓÔØÆ÷ÊÕµ½ÁËÀà¼ÓÔØµÄÇëÇó£¬ËüÊ×ÏȲ»»á×Ô¼ºÈ¥³¢ÊÔ¼ÓÔØ£¬¶øÊǰÑÕâ¸öÇëÇóίÅɸø¸¸Àà¼ÓÔØÆ÷£¬Ã¿Ò»¸ö²ã´ÎµÄ¼ÓÔØÆ÷¶¼ÊÇÈç´Ë£¬ÒÀ´ÎµÝ¹é£¬Òò´ËËùÓеļÓÔØÇëÇó×îÖÕ¶¼Ó¦¸Ã´«Ë͵½¶¥²ãµÄÆô¶¯Àà¼ÓÔØÆ÷ÖУ¬Ö»Óе±¸¸¼ÓÔØÆ÷·´À¡×Ô¼ºÎÞ·¨Íê³É´Ë¼ÓÔØÇëÇó£¨ËüËÑË÷·¶Î§ÖÐûÓÐÕÒµ½ËùÐèÀࣩʱ£¬×Ó¼ÓÔØÆ÷²Å»á³¢ÊÔ×Ô¼º¼ÓÔØ¡£ -**???** +**ºÃ´¦** -??????????????????????????????????? Java ??????????????????????????????????????¦É?????????? java.lang.Object????????? rt.jar ?§µ??????????????????????????????????????????????????????????????§Þ??????? Object ???????????????????????§Ø????????????????????????????????????????????§Þ???????????????§Õ??????????java.lang.Object ?????????????? ClassPath ?§µ??????§ß????????????? Object ????????????????????????????§Õ????? rt.jar ????????????????? Java ??????????????????????????????????????§³? +ʹÓÃË«Ç×ίÅÉÄ£ÐÍÀ´×éÖ¯Àà¼ÓÔØÆ÷Ö®¼äµÄ¹ØÏµ£¬Ê¹µÃ Java ÀàËæ×ÅËüµÄÀà¼ÓÔØÆ÷Ò»Æð¾ß±¸ÁËÒ»ÖÖ´øÓÐÓÅÏȼ¶µÄ²ã´Î¹ØÏµ¡£ÀýÈçÀà java.lang.Object£¬Ëü´æ·ÅÔÙ rt.jar ÖУ¬ÎÞÂÛÄĸöÀà¼ÓÔØÆ÷Òª¼ÓÔØÕâ¸öÀ࣬×îÖÕ¶¼ÊÇίÅɸø´¦ÓÚÄ£ÐÍ×î¶¥¶ËµÄÆô¶¯Àà¼ÓÔØÆ÷½øÐмÓÔØ£¬Òò´Ë Object ÀàÔÚ³ÌÐòµÄ¸÷ÖÖÀà¼ÓÔØÆ÷»·¾³Öж¼ÊÇͬһ¸öÀà¡£Ïà·´£¬Èç¹ûûÓÐË«Ç×ίÅÉÄ£ÐÍ£¬Óɸ÷¸öÀà¼ÓÔØÆ÷×ÔÐмÓÔØµÄ»°£¬Èç¹ûÓû§±àдÁËÒ»¸ö³ÆÎª£àjava.lang.Object µÄÀ࣬²¢·ÅÔÚ³ÌÐòµÄ ClassPath ÖУ¬ÄÇϵͳÖн«»á³öÏÖ¶à¸ö²»Í¬µÄ Object À࣬³ÌÐò½«±äµÃһƬ»ìÂÒ¡£Èç¹û¿ª·¢Õß³¢ÊÔ±àдһ¸öÓë rt.jar Àà¿âÖÐÒÑÓÐÀàÖØÃûµÄ Java À࣬½«»á·¢ÏÖ¿ÉÒÔÕý³£±àÒ룬µ«ÊÇÓÀÔ¶ÎÞ·¨±»¼ÓÔØÔËÐС£ -**???** +**ʵÏÖ** ```java protected synchronized Class loadClass(String name, boolean resolve) throws ClassNotFoundException{ @@ -646,27 +646,27 @@ protected synchronized Class loadClass(String name, boolean resolve) throws C } ``` -# JVM ???? +# JVM ²ÎÊý -## GC ??????? +## GC ÓÅ»¯ÅäÖà -| ???? | ???? | +| ÅäÖà | ÃèÊö | | --- | --- | -| -Xms | ???????????§³ | -| -Xmx | ????????? | -| -Xmn | ????????§³ | -| -XX:PermSize | ????????????§³ | -| -XX:MaxPermSize | ???????????? | +| -Xms | ³õʼ»¯¶ÑÄÚ´æ´óС | +| -Xmx | ¶ÑÄÚ´æ×î´óÖµ | +| -Xmn | ÐÂÉú´ú´óС | +| -XX:PermSize | ³õʼ»¯ÓÀ¾Ã´ú´óС | +| -XX:MaxPermSize | ÓÀ¾Ã´ú×î´óÈÝÁ¿ | -## GC ???????? +## GC ÀàÐÍÉèÖà -| ???? | ???? | +| ÅäÖà | ÃèÊö | | --- | --- | -| -XX:+UseSerialGC | ?????????????? | -| -XX:+UseParallelGC | ?????????????? | -| -XX:+UseConcMarkSweepGC | ???????????????????? | -| -XX:ParallelCMSThreads= | ???????????????????? = ???????????? | -| -XX:+UseG1GC | G1 ?????????? | +| -XX:+UseSerialGC | ´®ÐÐÀ¬»ø»ØÊÕÆ÷ | +| -XX:+UseParallelGC | ²¢ÐÐÀ¬»ø»ØÊÕÆ÷ | +| -XX:+UseConcMarkSweepGC | ²¢·¢±ê¼ÇɨÃèÀ¬»ø»ØÊÕÆ÷ | +| -XX:ParallelCMSThreads= | ²¢·¢±ê¼ÇɨÃèÀ¬»ø»ØÊÕÆ÷ = ΪʹÓõÄÏß³ÌÊýÁ¿ | +| -XX:+UseG1GC | G1 À¬»ø»ØÊÕÆ÷ | ```java java -Xmx12m -Xms3m -Xmn1m -XX:PermSize=20m -XX:MaxPermSize=20m -XX:+UseSerialGC -jar java-application.jar diff --git a/notes/Java IO.md b/notes/Java IO.md index 1f7154c7..c4aa5d39 100644 --- a/notes/Java IO.md +++ b/notes/Java IO.md @@ -1,129 +1,129 @@ -* [????](#????) -* [???????](#???????) -* [??????](#??????) -* [???????](#???????) -* [???????](#???????) -* [???????](#???????) +* [¸ÅÀÀ](#¸ÅÀÀ) +* [´ÅÅ̲Ù×÷](#´ÅÅ̲Ù×÷) +* [×Ö½Ú²Ù×÷](#×Ö½Ú²Ù×÷) +* [×Ö·û²Ù×÷](#×Ö·û²Ù×÷) +* [¶ÔÏó²Ù×÷](#¶ÔÏó²Ù×÷) +* [ÍøÂç²Ù×÷](#ÍøÂç²Ù×÷) * [1. InetAddress](#1-inetaddress) * [2. URL](#2-url) * [3. Sockets](#3-sockets) * [4. Datagram](#4-datagram) * [NIO](#nio) - * [1. ?????](#1-?????) - * [2. ?????????](#2-?????????) - * [2.1 ???](#21-???) - * [2.2 ??????](#22-??????) - * [3. ????????????](#3-????????????) - * [4. ??§Õ??????](#4-??§Õ??????) - * [5. ???????????](#5-???????????) - * [5.1 ????? I/O](#51-?????-io) - * [5.2 ??????? I/O](#52-???????-io) - * [6. ????????](#6-????????) + * [1. Á÷Óë¿é](#1-Á÷Óë¿é) + * [2. ͨµÀÓ뻺³åÇø](#2-ͨµÀÓ뻺³åÇø) + * [2.1 ͨµÀ](#21-ͨµÀ) + * [2.2 »º³åÇø](#22-»º³åÇø) + * [3. »º³åÇø×´Ì¬±äÁ¿](#3-»º³åÇø×´Ì¬±äÁ¿) + * [4. ¶ÁдÎļþʵÀý](#4-¶ÁдÎļþʵÀý) + * [5. ×èÈûÓë·Ç×èÈû](#5-×èÈûÓë·Ç×èÈû) + * [5.1 ×èÈûʽ I/O](#51-×èÈûʽ-io) + * [5.2 ·Ç×èÈûʽ I/O](#52-·Ç×èÈûʽ-io) + * [6. Ì×½Ó×ÖʵÀý](#6-Ì×½Ó×ÖʵÀý) * [6.1 ServerSocketChannel](#61-serversocketchannel) * [6.2 Selectors](#62-selectors) - * [6.3 ?????](#63-?????) - * [6.4 ??????????](#64-??????????) - * [6.5 ???????????](#65-???????????) - * [6.6 ?????????? SelectionKey](#66-??????????-selectionkey) - * [6.7 ????? I/O](#67-?????-io) -* [?¦Ï?????](#?¦Ï?????) + * [6.3 Ö÷Ñ­»·](#63-Ö÷Ñ­»·) + * [6.4 ¼àÌýÐÂÁ¬½Ó](#64-¼àÌýÐÂÁ¬½Ó) + * [6.5 ½ÓÊÜеÄÁ¬½Ó](#65-½ÓÊÜеÄÁ¬½Ó) + * [6.6 ɾ³ý´¦Àí¹ýµÄ SelectionKey](#66-ɾ³ý´¦Àí¹ýµÄ-selectionkey) + * [6.7 ´«ÈëµÄ I/O](#67-´«ÈëµÄ-io) +* [²Î¿¼×ÊÁÏ](#²Î¿¼×ÊÁÏ) -# ???? +# ¸ÅÀÀ -Java ?? I/O ??????????????? +Java µÄ I/O ´ó¸Å¿ÉÒÔ·Ö³ÉÒÔϼ¸Àà -1. ?????????File -2. ????????InputStream ?? OutputStream -3. ?????????Reader ?? Writer -4. ?????????Serializable -5. ?????????Socket -6. ??????? IO??NIO +1. ´ÅÅ̲Ù×÷£ºFile +2. ×Ö½Ú²Ù×÷£ºInputStream ºÍ OutputStream +3. ×Ö·û²Ù×÷£ºReader ºÍ Writer +4. ¶ÔÏó²Ù×÷£ºSerializable +5. ÍøÂç²Ù×÷£ºSocket +6. ·Ç×èÈûʽ IO£ºNIO -# ??????? +# ´ÅÅ̲Ù×÷ -File ???????????????????????????????????????????????????????????? +File Àà¿ÉÒÔÓÃÓÚ±íʾÎļþºÍĿ¼£¬µ«ÊÇËüÖ»ÓÃÓÚ±íʾÎļþµÄÐÅÏ¢£¬¶ø²»±íʾÎļþµÄÄÚÈÝ¡£ -# ?????? +# ×Ö½Ú²Ù×÷ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/8143787f-12eb-46ea-9bc3-c66d22d35285.jpg) -Java I/O ???????????????????? InputStream ?????InputStream ??????????FileInputStream ?? InputStream ??????????????????????????????????????FilterInputStream ????????????????????????????????????????????????? BufferedInputStream ? FileInputStream ??????????????????????§Ý??œ¤????????????????????? FileInputStream ????????????? BufferedInputStream ????¨À? +Java I/O ʹÓÃÁË×°ÊÎÕßģʽÀ´ÊµÏÖ¡£ÒÔ InputStream ΪÀý£¬InputStream ÊdzéÏó×é¼þ£¬FileInputStream ÊÇ InputStream µÄ×ÓÀ࣬ÊôÓÚ¾ßÌå×é¼þ£¬ÌṩÁË×Ö½ÚÁ÷µÄÊäÈë²Ù×÷¡£FilterInputStream ÊôÓÚ³éÏó×°ÊÎÕߣ¬×°ÊÎÕßÓÃÓÚ×°ÊÎ×é¼þ£¬Îª×é¼þÌṩ¶îÍâµÄ¹¦ÄÜ£¬ÀýÈç BufferedInputStream Ϊ FileInputStream Ìṩ»º´æµÄ¹¦ÄÜ¡£ÊµÀý»¯Ò»¸ö¾ßÓлº´æ¹¦ÄܵÄ×Ö½ÚÁ÷¶ÔÏóʱ£¬Ö»ÐèÒªÔÚ FileInputStream ¶ÔÏóÉÏÔÙÌ×Ò»²ã BufferedInputStream ¶ÔÏó¼´¿É¡£ ```java BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file)); ``` -DataInputStream ?????????????????????????????????????? int??double ?????????? +DataInputStream ×°ÊÎÕßÌṩÁ˶Ըü¶àÊý¾ÝÀàÐͽøÐÐÊäÈëµÄ²Ù×÷£¬±ÈÈç int¡¢double µÈ»ù±¾ÀàÐÍ¡£ -????????????§Ö??????????????? +ÅúÁ¿¶ÁÈëÎļþÖеÄÄÚÈݵ½×Ö½ÚÊý×éÖÐ ```java byte[] buf = new byte[20*1024]; int bytes = 0; -// ????? buf.length ????????????????????????????? -1 ??????????? eof???????¦Â +// ×î¶à¶ÁÈ¡ buf.length ¸ö×Ö½Ú£¬·µ»ØµÄÊÇʵ¼Ê¶ÁÈ¡µÄ¸öÊý£¬·µ»Ø -1 µÄʱºò±íʾ¶Áµ½ eof£¬¼´Îļþβ while((bytes = in.read(buf, 0 , buf.length)) != -1) { // ... } ``` -# ??????? +# ×Ö·û²Ù×÷ -???????????????×Ï????§³??›¥?????????????????????????? I/O ????????????????????????????????§Ó??????????????????????????????????????§Ó?????????? +²»¹ÜÊÇ´ÅÅÌ»¹ÊÇÍøÂç´«Ê䣬×îСµÄ´æ´¢µ¥Ôª¶¼ÊÇ×Ö½Ú£¬¶ø²»ÊÇ×Ö·û£¬ËùÒÔ I/O ²Ù×÷µÄ¶¼ÊÇ×Ö½Ú¶ø²»ÊÇ×Ö·û¡£µ«ÊÇÔÚ³ÌÐòÖвÙ×÷µÄÊý¾Ýͨ³£ÊÇ×Ö·ûÐÎʽ£¬Òò´ËÐèÒªÌṩ¶Ô×Ö·û½øÐвÙ×÷µÄ·½·¨¡£ -InputStreamReader ?????????????????????????????OutputStreamWriter ??????????????????????????????????????? Reader ?? Writer?? +InputStreamReader ʵÏÖ´ÓÎı¾ÎļþµÄ×Ö½ÚÁ÷½âÂë³É×Ö·ûÁ÷£»OutputStreamWriter ʵÏÖ×Ö·ûÁ÷±àÂë³ÉΪÎı¾ÎļþµÄ×Ö½ÚÁ÷¡£ËüÃǶ¼¼Ì³Ð×Ô Reader ºÍ Writer¡£ -???????????????????????????????????????????? +±àÂë¾ÍÊǰÑ×Ö·ûת»»Îª×Ö½Ú£¬¶ø½âÂëÊǰÑ×Ö½ÚÖØÐÂ×éºÏ³É×Ö·û¡£ ```java -byte[] bytes = str.getBytes(encoding); // ???? -String str = new String(bytes, encoding)?? // ???? +byte[] bytes = str.getBytes(encoding); // ±àÂë +String str = new String(bytes, encoding)£» // ½âÂë ``` -GBK ?????§µ?????? 2 ?????????? 1 ??????UTF-8 ?????§µ?????? 3 ?????????? 1 ??????Java ?????????? UTF-16be???????????? 2 ?????? +GBK ±àÂëÖУ¬ÖÐÎÄÕ¼ 2 ¸ö×Ö½Ú£¬Ó¢ÎÄÕ¼ 1 ¸ö×Ö½Ú£»UTF-8 ±àÂëÖУ¬ÖÐÎÄÕ¼ 3 ¸ö×Ö½Ú£¬Ó¢ÎÄÕ¼ 1 ¸ö×Ö½Ú£»Java ʹÓÃË«×Ö½Ú±àÂë UTF-16be£¬ÖÐÎĺÍÓ¢Îͼռ 2 ¸ö×Ö½Ú¡£ -????????????????¨°?????????????????????? +Èç¹û±àÂëºÍ½âÂë¹ý³ÌʹÓò»Í¬µÄ±àÂ뷽ʽÄÇô¾Í³öÏÖÁËÂÒÂë¡£ -# ??????? +# ¶ÔÏó²Ù×÷ -???§Ý????????????????????????§µ?????›¥????? +ÐòÁл¯¾ÍÊǽ«Ò»¸ö¶ÔÏóת»»³É×Ö½ÚÐòÁУ¬·½±ã´æ´¢ºÍ´«Êä¡£ -???§Ý???ObjectOutputStream.writeObject() +ÐòÁл¯£ºObjectOutputStream.writeObject() -?????§Ý???ObjectInputStream.readObject() +·´ÐòÁл¯£ºObjectInputStream.readObject() -???§Ý??????????? Serializable ?????????????????????¦Ê¦Ç?????????? +ÐòÁл¯µÄÀàÐèҪʵÏÖ Serializable ½Ó¿Ú£¬ËüÖ»ÊÇÒ»¸ö±ê×¼£¬Ã»ÓÐÈκη½·¨ÐèҪʵÏÖ¡£ -transient ??????????§»??????????§Ý??? +transient ¹Ø¼ü×Ö¿ÉÒÔʹһЩÊôÐÔ²»»á±»ÐòÁл¯¡£ -**ArrayList ???§Ý???????§Ý??????**??ArrayList ?§Õ›¥????????????? transient ???¦Å???????????????????????????????§Ö????????????????????§Ö???????????§Ý????????§Õ???§Ý???????§Ý?????????????????§Ý???????????????????????? +**ArrayList ÐòÁл¯ºÍ·´ÐòÁл¯µÄʵÏÖ**£ºArrayList Öд洢Êý¾ÝµÄÊý×éÊÇÓà transient ÐÞÊεģ¬ÒòΪÕâ¸öÊý×éÊǶ¯Ì¬À©Õ¹µÄ£¬²¢²»ÊÇËùÓеĿռ䶼±»Ê¹Óã¬Òò´Ë¾Í²»ÐèÒªËùÓеÄÄÚÈݶ¼±»ÐòÁл¯¡£Í¨¹ýÖØÐ´ÐòÁл¯ºÍ·´ÐòÁл¯·½·¨£¬Ê¹µÃ¿ÉÒÔÖ»ÐòÁл¯Êý×éÖÐÓÐÄÚÈݵÄÄDz¿·ÖÊý¾Ý¡£ ``` private transient Object[] elementData; ``` -# ??????? +# ÍøÂç²Ù×÷ -Java ?§Ö????????? +Java ÖеÄÍøÂçÖ§³Ö£º -1. InetAddress????????????????????????? IP ????? -2. URL?????????¦Ë??????? URL ?????????????§Õ?????????????? -3. Sockets????? TCP §¿????????????? -4. Datagram????? UDP §¿????????????? +1. InetAddress£ºÓÃÓÚ±íÊ¾ÍøÂçÉϵÄÓ²¼þ×ÊÔ´£¬¼´ IP µØÖ·£» +2. URL£ºÍ³Ò»×ÊÔ´¶¨Î»·û£¬Í¨¹ý URL ¿ÉÒÔÖ±½Ó¶ÁÈ¡»òÕßдÈëÍøÂçÉϵÄÊý¾Ý£» +3. Sockets£ºÊ¹Óà TCP ЭÒéʵÏÖÍøÂçͨÐÅ£» +4. Datagram£ºÊ¹Óà UDP ЭÒéʵÏÖÍøÂçͨÐÅ¡£ ## 1. InetAddress -??§Û??§Û??????????????????????????????????? InetAddress.getByName(String host)??InetAddress.getByAddress(byte[] addr)?? +ûÓй«Óй¹Ô캯Êý£¬Ö»ÄÜͨ¹ý¾²Ì¬·½·¨À´´´½¨ÊµÀý£¬±ÈÈç InetAddress.getByName(String host)¡¢InetAddress.getByAddress(byte[] addr)¡£ ## 2. URL -???????? URL ?§Ø??????????? +¿ÉÒÔÖ±½Ó´Ó URL ÖжÁÈ¡×Ö½ÚÁ÷Êý¾Ý ```java URL url = new URL("http://www.baidu.com"); -InputStream is = url.openStream(); // ????? -InputStreamReader isr = new InputStreamReader(is, "utf-8"); // ????? +InputStream is = url.openStream(); // ×Ö½ÚÁ÷ +InputStreamReader isr = new InputStreamReader(is, "utf-8"); // ×Ö·ûÁ÷ BufferedReader br = new BufferedReader(isr); String line = br.readLine(); while (line != null) { @@ -137,56 +137,56 @@ is.close(); ## 3. Sockets -Socket ?????? +Socket ͨÐÅÄ£ÐÍ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/fa4101d7-19ce-4a69-a84f-20bbe64320e5.jpg) -- ServerSocket???????????? -- Socket????????? +- ServerSocket£º·þÎñÆ÷¶ËÀà +- Socket£º¿Í»§¶ËÀà -??????????????? InputStream ?? OutputStream ????????????? +·þÎñÆ÷ºÍ¿Í»§¶Ëͨ¹ý InputStream ºÍ OutputStream ½øÐÐÊäÈëÊä³ö¡£ ## 4. Datagram -- DatagramPacket????????? -- DatagramSocket??????? +- DatagramPacket£ºÊý¾Ý°üÀà +- DatagramSocket£ºÍ¨ÐÅÀà # NIO -NIO ???????? I/O ???? ( ??????????????? ) ?????????????? ?????????????????????????????????? +NIO ½«×îºÄʱµÄ I/O ²Ù×÷ ( ¼´Ìî³äºÍÌáÈ¡»º³åÇø ) ×ªÒÆ»Ø²Ù×÷ϵͳ£¬Òò¶ø ²»ÐèÒª³ÌÐòԱȥ¿ØÖƾͿÉÒÔ¼«´óµØÌá¸ßÔËÐÐËÙ¶È¡£ -## 1. ????? +## 1. Á÷Óë¿é -I/O ?? NIO ?????????????????????????????????????????I/O ??????????????????? NIO ??????????????? +I/O Óë NIO ×îÖØÒªµÄÇø±ðÊÇÊý¾Ý´ò°üºÍ´«ÊäµÄ·½Ê½¡£ÕýÈçÇ°ÃæÌáµ½µÄ£¬I/O ÒÔÁ÷µÄ·½Ê½´¦ÀíÊý¾Ý£¬¶ø NIO ÒÔ¿éµÄ·½Ê½´¦ÀíÊý¾Ý¡£ -???????? I/O ???????????§Õ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? I/O ????????? +ÃæÏòÁ÷µÄ I/O Ò»´ÎÒ»¸ö×Ö½Ú½øÐд¦ÀíÊý¾Ý£¬Ò»¸öÊäÈëÁ÷²úÉúÒ»¸ö×Ö½ÚµÄÊý¾Ý£¬Ò»¸öÊä³öÁ÷Ïû·ÑÒ»¸ö×Ö½ÚµÄÊý¾Ý¡£ÎªÁ÷ʽÊý¾Ý´´½¨¹ýÂËÆ÷·Ç³£ÈÝÒ×£¬Á´½Ó¼¸¸ö¹ýÂËÆ÷£¬ÒÔ±ãÿ¸ö¹ýÂËÆ÷Ö»¸ºÔ𵥸ö¸´ÔÓ´¦Àí»úÖÆµÄÒ»²¿·Ö£¬ÕâÑùÒ²ÊÇÏà¶Ô¼òµ¥µÄ¡£²»ÀûµÄÒ»ÃæÊÇ£¬ÃæÏòÁ÷µÄ I/O ͨ³£Ï൱Âý¡£ -????????? I/O ??????????????????????????????????§Ó??????????????????î•???ø„????????????????????????????????? I/O ????§»???????? I/O ?????§Ö???????????? +Ò»¸öÃæÏò¿éµÄ I/O ϵͳÒÔ¿éµÄÐÎʽ´¦ÀíÊý¾Ý£¬Ã¿Ò»¸ö²Ù×÷¶¼ÔÚÒ»²½ÖвúÉú»òÕßÏû·ÑÒ»¸öÊý¾Ý¿é¡£°´¿é´¦ÀíÊý¾Ý±È°´Á÷´¦ÀíÊý¾ÝÒª¿ìµÃ¶à¡£µ«ÊÇÃæÏò¿éµÄ I/O ȱÉÙÒ»Ð©ÃæÏòÁ÷µÄ I/O Ëù¾ßÓеÄÓÅÑÅÐԺͼòµ¥ÐÔ¡£ -I/O ???? NIO ?????????????java.io.\* ????? NIO ????????????????????????????????? NIO ???§»????????íà java.io.\* ???§Ö??§»??????????????§Õ??????????????¨¹????????????????§µ?????????????? +I/O °üºÍ NIO ÒѾ­ºÜºÃµØ¼¯³ÉÁË£¬java.io.\* ÒѾ­ÒÔ NIO Ϊ»ù´¡ÖØÐÂʵÏÖÁË£¬ËùÒÔÏÖÔÚËü¿ÉÒÔÀûÓà NIO µÄÒ»Ð©ÌØÐÔ¡£ÀýÈ磬 java.io.\* °üÖеÄһЩÀà°üº¬ÒÔ¿éµÄÐÎʽ¶ÁдÊý¾ÝµÄ·½·¨£¬ÕâʹµÃ¼´Ê¹ÔÚ¸üÃæÏòÁ÷µÄϵͳÖУ¬´¦ÀíËÙ¶ÈÒ²»á¸ü¿ì¡£ -## 2. ????????? +## 2. ͨµÀÓ뻺³åÇø -### 2.1 ??? +### 2.1 ͨµÀ -??? Channel ???? I/O ???§Ö??????????????????????§Õ??????? +ͨµÀ Channel ÊǶÔÔ­ I/O °üÖеÄÁ÷µÄÄ£Ä⣬¿ÉÒÔͨ¹ýËü¶ÁÈ¡ºÍдÈëÊý¾Ý¡£ -????????????????????????????????????????(??????????? InputStream ???? OutputStream ??????)?? ???????????????????????§Õ???????????§Õ?? +ͨµÀÓëÁ÷µÄ²»Í¬Ö®´¦ÔÚÓÚ£¬Á÷Ö»ÄÜÔÚÒ»¸ö·½ÏòÉÏÒÆ¶¯£¬(Ò»¸öÁ÷±ØÐëÊÇ InputStream »òÕß OutputStream µÄ×ÓÀà)£¬ ¶øÍ¨µÀÊÇË«ÏòµÄ£¬¿ÉÒÔÓÃÓÚ¶Á¡¢Ð´»òÕßͬʱÓÃÓÚ¶Áд¡£ -???????????????? +ͨµÀ°üÀ¨ÒÔÏÂÀàÐÍ£º -- FileChannel????????§Ø?§Õ????? -- DatagramChannel????? UDP ??§Õ??????????? -- SocketChannel????? TCP ??§Õ??????????? -- ServerSocketChannel???????????????? TCP ?????????????????????????????? SocketChannel?? +- FileChannel£º´ÓÎļþÖжÁдÊý¾Ý£» +- DatagramChannel£ºÍ¨¹ý UDP ¶ÁÐ´ÍøÂçÖÐÊý¾Ý£» +- SocketChannel£ºÍ¨¹ý TCP ¶ÁÐ´ÍøÂçÖÐÊý¾Ý£» +- ServerSocketChannel£º¿ÉÒÔ¼àÌýнøÀ´µÄ TCP Á¬½Ó£¬¶Ôÿһ¸öнøÀ´µÄÁ¬½Ó¶¼»á´´½¨Ò»¸ö SocketChannel¡£ -### 2.2 ?????? +### 2.2 »º³åÇø -????????????????§Ø???????????????????§µ?????????????§Ø?????¦Ê??????????????????§³???????????????????????§Ø?§Õ?????????????????????? +·¢Ë͸øÒ»¸öͨµÀµÄËùÓжÔÏó¶¼±ØÐëÊ×Ïȷŵ½»º³åÇøÖУ»Í¬ÑùµØ£¬´ÓͨµÀÖжÁÈ¡µÄÈκÎÊý¾Ý¶¼Òª¶Áµ½»º³åÇøÖС£Ò²¾ÍÊÇ˵£¬²»»áÖ±½Ó¶ÔͨµÀ½øÐжÁдÊý¾Ý£¬¶øÊÇÏȾ­¹ý»º³åÇø¡£ -???????????????????ï…??????????????????î•?????????????????????????????????????????/§Õ????? +»º³åÇøÊµÖÊÉÏÊÇÒ»¸öÊý×飬µ«Ëü²»½ö½öÊÇÒ»¸öÊý×é¡£»º³åÇøÌṩÁ˶ÔÊý¾ÝµÄ½á¹¹»¯·ÃÎÊ£¬¶øÇÒ»¹¿ÉÒÔ¸ú×ÙϵͳµÄ¶Á/д½ø³Ì¡£ -??????????????????? +»º³åÇø°üÀ¨ÒÔÏÂÀàÐÍ£º - ByteBuffer - CharBuffer @@ -197,50 +197,50 @@ I/O ???? NIO ?????????????java.io.\* ????? NIO ????????????????????????????????? - DoubleBuffer -## 3. ???????????? +## 3. »º³åÇø×´Ì¬±äÁ¿ -- capacity??????????? -- position??????????§Õ????????? -- limit?????????§Õ????????? +- capacity£º×î´óÈÝÁ¿£» +- position£ºµ±Ç°ÒѾ­¶ÁдµÄ×Ö½ÚÊý£» +- limit£º»¹¿ÉÒÔ¶ÁдµÄ×Ö½ÚÊý¡£ -?????????????? +״̬±äÁ¿µÄ¸Ä±ä¹ý³Ì£º -1\. ????????§³? 8 ???????????????? position ? 0???? limit == capacity == 9??capacity ??????????????????????????? +1\. н¨Ò»¸ö´óСΪ 8 ¸ö×ֽڵĻº³åÇø£¬´Ëʱ position Ϊ 0£¬¶ø limit == capacity == 9¡£capacity ±äÁ¿²»»á¸Ä±ä£¬ÏÂÃæµÄÌÖÂÛ»áºöÂÔËü¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/1bea398f-17a7-4f67-a90b-9e2d243eaa9a.png) -2\. ??????????§Ø?? 3 ?????????§Õ???????§µ???? position ?????? 3??limit ??????? +2\. ´ÓÊäÈëͨµÀÖжÁÈ¡ 3 ¸ö×Ö½ÚÊý¾ÝдÈ뻺³åÇøÖУ¬´Ëʱ position ÒÆ¶¯ÉèΪ 3£¬limit ±£³Ö²»±ä¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/4628274c-25b6-4053-97cf-d1239b44c43d.png) -3\. ???????????????§Õ???????????????????? flip() ??????????????? limit ???????? position?????? position ????? 0?? +3\. ÔÚ½«»º³åÇøµÄÊý¾Ýдµ½Êä³öͨµÀ֮ǰ£¬ÐèÒªÏȵ÷Óà flip() ·½·¨£¬Õâ¸ö·½·¨½« limit ÉèÖÃΪµ±Ç° position£¬²¢½« position ÉèÖÃΪ 0¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/952e06bd-5a65-4cab-82e4-dd1536462f38.png) -4\. ?????????? 4 ??????????????§µ???? position ??? 4?? +4\. ´Ó»º³åÇøÖÐÈ¡ 4 ¸ö×Ö½Úµ½Êä³ö»º³åÖУ¬´Ëʱ position ÉèΪ 4¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/b5bdcbe2-b958-4aef-9151-6ad963cb28b4.png) -5\. ?????????? clear() ??????????????????? position ?? limit ????????????¦Ë?¨¢? +5\. ×îºóÐèÒªµ÷Óà clear() ·½·¨À´Çå¿Õ»º³åÇø£¬´Ëʱ position ºÍ limit ¶¼±»ÉèÖÃΪ×î³õλÖᣠ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/67bf5487-c45d-49b6-b9c0-a058d8c68902.png) -## 4. ??§Õ?????? +## 4. ¶ÁдÎļþʵÀý -1\. ?????????????? FileInputStream???????? FileInputStream ??????? FileChannel?? +1\. ΪҪ¶ÁÈ¡µÄÎļþ´´½¨ FileInputStream£¬Ö®ºóͨ¹ý FileInputStream »ñÈ¡ÊäÈë FileChannel£» ```java FileInputStream fin = new FileInputStream("readandshow.txt"); FileChannel fic = fin.getChannel(); ``` -2\. ???????????? 1024 ?? Buffer +2\. ´´½¨Ò»¸öÈÝÁ¿Îª 1024 µÄ Buffer ```java ByteBuffer buffer = ByteBuffer.allocate(1024); ``` -3\. ??????????? FileChannel §Õ?? Buffer ?§µ??????????????? read() ???????? -1 +3\. ½«Êý¾Ý´ÓÊäÈë FileChannel дÈëµ½ Buffer ÖУ¬Èç¹ûûÓÐÊý¾ÝµÄ»°£¬ read() ·½·¨»á·µ»Ø -1 ```java int r = fcin.read(buffer); @@ -249,86 +249,86 @@ if (r == -1) { } ``` -4\. ??§Õ?????????? FileOutputStream???????? FileOutputStream ?????? FileChannel +4\. ΪҪдÈëµÄÎļþ´´½¨ FileOutputStream£¬Ö®ºóͨ¹ý FileOutputStream »ñÈ¡Êä³ö FileChannel ```java FileOutputStream fout = new FileOutputStream("writesomebytes.txt"); FileChannel foc = fout.getChannel(); ``` -5\. ???? flip() ?§Ý???§Õ +5\. µ÷Óà flip() Çл»¶Áд ```java buffer.flip(); ``` -6\. ?? Buffer ?§Ö???????????? FileChannel ?? +6\. °Ñ Buffer ÖеÄÊý¾Ý¶ÁÈ¡µ½Êä³ö FileChannel ÖÐ ```java foc.write(buffer); ``` -7\. ?????? clear() ????????? +7\. ×îºóµ÷Óà clear() ÖØÖûº³åÇø ```java buffer.clear(); ``` -## 5. ??????????? +## 5. ×èÈûÓë·Ç×èÈû -??????FileChannel ?????§Ý?????????????????? Channel ????? +Ó¦µ±×¢Ò⣬FileChannel ²»ÄÜÇл»µ½·Ç×èÈûģʽ£¬Ì×½Ó×Ö Channel ¿ÉÒÔ¡£ -### 5.1 ????? I/O +### 5.1 ×èÈûʽ I/O -????? I/O ????? InputStream.read() ?????????????????????????????????????? ServerSocket.accept() ???????????????????§á?????????????????????????????????????????????????????????????? +×èÈûʽ I/O ÔÚµ÷Óà InputStream.read() ·½·¨Ê±»áÒ»Ö±µÈµ½Êý¾Ýµ½À´Ê±£¨»ò³¬Ê±£©²Å»á·µ»Ø£¬ÔÚµ÷Óà ServerSocket.accept() ·½·¨Ê±£¬Ò²»áÒ»Ö±×èÈûµ½Óпͻ§¶ËÁ¬½Ó²Å»á·µ»Ø£¬Ã¿¸ö¿Í»§¶ËÁ¬½Ó¹ýÀ´ºó£¬·þÎñ¶Ë¶¼»áÆô¶¯Ò»¸öÏß³ÌÈ¥´¦Àí¸Ã¿Í»§¶ËµÄÇëÇó¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/edc23f99-c46c-4200-b64e-07516828720d.jpg) -### 5.2 ??????? I/O +### 5.2 ·Ç×èÈûʽ I/O -?????????????????????§Ö? I/O ??????????????? +ÓÉÒ»¸öרÃŵÄÏß³ÌÀ´´¦ÀíËùÓÐµÄ I/O ʼþ£¬²¢¸ºÔð·Ö·¢¡£ -?????????????????????????????????????????????? +ʼþÇý¶¯»úÖÆ£ºÊ¼þµ½µÄʱºò´¥·¢£¬¶ø²»ÊÇͬ²½µÄÈ¥¼àÊÓʼþ¡£ -???????????????? wait()??notify() ?????????????????????§Ý???????????????????¦Í??????§Ý??? +Ïß³ÌͨÐÅ£ºÏß³ÌÖ®¼äͨ¹ý wait()¡¢notify() µÈ·½Ê½Í¨ÐÅ£¬±£Ö¤Ã¿´ÎÉÏÏÂÎÄÇл»¶¼ÊÇÓÐÒâÒåµÄ£¬¼õÉÙÎÞνµÄÏß³ÌÇл»¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/7fcb2fb0-2cd9-4396-bc2d-282becf963c3.jpg) -## 6. ???????? +## 6. Ì×½Ó×ÖʵÀý ### 6.1 ServerSocketChannel -???????????????? ServerSocketChannel ????????????? +ÿһ¸ö¶Ë¿Ú¶¼ÐèÒªÓÐÒ»¸ö ServerSocketChannel ÓÃÀ´¼àÌýÁ¬½Ó¡£ ```java ServerSocketChannel ssc = ServerSocketChannel.open(); -ssc.configureBlocking(false); // ??????????? +ssc.configureBlocking(false); // ÉèÖÃΪ·Ç×èÈû ServerSocket ss = ssc.socket(); InetSocketAddress address = new InetSocketAddress(ports[i]); -ss.bind(address); // ????? +ss.bind(address); // °ó¶¨¶Ë¿ÚºÅ ``` ### 6.2 Selectors -?? I/O ??? Selector ??????? I/O ???????? ?D ????????????????????????????????????????????????????????? +Òì²½ I/O ͨ¹ý Selector ×¢²á¶ÔÌØ¶¨ I/O ʼþµÄÐËȤ ¨D ¿É¶ÁµÄÊý¾ÝµÄµ½´ï¡¢ÐµÄÌ×½Ó×ÖÁ¬½ÓµÈµÈ£¬ÔÚ·¢ÉúÕâÑùµÄʼþʱ£¬ÏµÍ³½«»á·¢ËÍ֪ͨ¡£ -???? Selectors ?????????????????????? register() ??????register() ????????????????? Selector????????????? OP_ACCEPT?????????????????????? accept ???????????????????????????????????? +´´½¨ Selectors Ö®ºó£¬¾Í¿ÉÒÔ¶Ô²»Í¬µÄͨµÀ¶ÔÏóµ÷Óà register() ·½·¨¡£register() µÄµÚÒ»¸ö²ÎÊý×ÜÊÇÕâ¸ö Selector¡£µÚ¶þ¸ö²ÎÊýÊÇ OP_ACCEPT£¬ÕâÀïËüÖ¸¶¨ÎÒÃÇÏëÒª¼àÌý accept ʼþ£¬Ò²¾ÍÊÇÔÚеÄÁ¬½Ó½¨Á¢Ê±Ëù·¢ÉúµÄʼþ¡£ -SelectionKey ????????????? Selector ?????????????? Selector ????????????????????????????????????? SelectionKey ?????§Ö??SelectionKey ????????????????????? +SelectionKey ´ú±íÕâ¸öͨµÀÔÚ´Ë Selector ÉϵÄÕâ¸ö×¢²á¡£µ±Ä³¸ö Selector ֪ͨÄúij¸ö´«Èëʼþʱ£¬ËüÊÇͨ¹ýÌṩ¶ÔÓ¦ÓÚ¸ÃʼþµÄ SelectionKey À´½øÐеġ£SelectionKey »¹¿ÉÒÔÓÃÓÚÈ¡ÏûͨµÀµÄ×¢²á¡£ ```java Selector selector = Selector.open(); SelectionKey key = ssc.register(selector, SelectionKey.OP_ACCEPT); ``` -### 6.3 ????? +### 6.3 Ö÷Ñ­»· -???????????? Selector ?? select() ??????????????????????????????????????????????????????????????????????? select() ????????????????????????????? +Ê×ÏÈ£¬ÎÒÃǵ÷Óà Selector µÄ select() ·½·¨¡£Õâ¸ö·½·¨»á×èÈû£¬Ö±µ½ÖÁÉÙÓÐÒ»¸öÒÑ×¢²áµÄʼþ·¢Éú¡£µ±Ò»¸ö»òÕ߸ü¶àµÄʼþ·¢Éúʱ£¬ select() ·½·¨½«·µ»ØËù·¢ÉúµÄʼþµÄÊýÁ¿¡£ -??????????????? Selector ?? selectedKeys() ?????????????????????? SelectionKey ???????? ???? ?? +½ÓÏÂÀ´£¬ÎÒÃǵ÷Óà Selector µÄ selectedKeys() ·½·¨£¬Ëü·µ»Ø·¢ÉúÁËʼþµÄ SelectionKey ¶ÔÏóµÄÒ»¸ö ¼¯ºÏ ¡£ -??????????? SelectionKeys ?????¦Ä?????? SelectionKey ??????????????????? SelectionKey????????????????????? I/O ???????????????????§» I/O ???? +ÎÒÃÇͨ¹ýµü´ú SelectionKeys ²¢ÒÀ´Î´¦Àíÿ¸ö SelectionKey À´´¦Àíʼþ¡£¶ÔÓÚÿһ¸ö SelectionKey£¬Äú±ØÐëÈ·¶¨·¢ÉúµÄÊÇʲô I/O ʼþ£¬ÒÔ¼°Õâ¸öʼþÓ°ÏìÄÄЩ I/O ¶ÔÏó¡£ ```java int num = selector.select(); @@ -342,9 +342,9 @@ while (it.hasNext()) { } ``` -### 6.4 ?????????? +### 6.4 ¼àÌýÐÂÁ¬½Ó -??????§Ö??????????????? ServerSocketChannel??????????????????????????????????????? SelectionKey ???? readyOps() ??????????ú€???????????????? +³ÌÐòÖ´Ðе½ÕâÀÎÒÃǽö×¢²áÁË ServerSocketChannel£¬²¢ÇÒ½ö×¢²áËüÃÇ¡°½ÓÊÕ¡±Ê¼þ¡£ÎªÈ·ÈÏÕâÒ»µã£¬ÎÒÃÇ¶Ô SelectionKey µ÷Óà readyOps() ·½·¨£¬²¢¼ì²é·¢ÉúÁËʲôÀàÐ͵Äʼþ£º ```java if ((key.readyOps() & SelectionKey.OP_ACCEPT) @@ -354,39 +354,39 @@ if ((key.readyOps() & SelectionKey.OP_ACCEPT) } ``` -??????????? readOps() ?????????????????????????? +¿ÉÒԿ϶¨µØËµ£¬ readOps() ·½·¨¸æËßÎÒÃǸÃʼþÊÇеÄÁ¬½Ó¡£ -### 6.5 ??????????? +### 6.5 ½ÓÊÜеÄÁ¬½Ó -?????????????????????????????????????????????????????????????????????????????? accept() ???????????? +ÒòΪÎÒÃÇÖªµÀÕâ¸ö·þÎñÆ÷Ì×½Ó×ÖÉÏÓÐÒ»¸ö´«ÈëÁ¬½ÓÔڵȴý£¬ËùÒÔ¿ÉÒÔ°²È«µØ½ÓÊÜËü£»Ò²¾ÍÊÇ˵£¬²»Óõ£ÐÄ accept() ²Ù×÷»á×èÈû£º ```java ServerSocketChannel ssc = (ServerSocketChannel)key.channel(); SocketChannel sc = ssc.accept(); ``` -??????????????? SocketChannel ??????????????????????????????????????????????????????????????????????? SocketChannel ??? Selector???????????? +ÏÂÒ»²½Êǽ«ÐÂÁ¬½ÓµÄ SocketChannel ÅäÖÃΪ·Ç×èÈûµÄ¡£¶øÇÒÓÉÓÚ½ÓÊÜÕâ¸öÁ¬½ÓµÄÄ¿µÄÊÇΪÁ˶ÁÈ¡À´×ÔÌ×½Ó×ÖµÄÊý¾Ý£¬ËùÒÔÎÒÃÇ»¹±ØÐ뽫 SocketChannel ×¢²áµ½ SelectorÉÏ£¬ÈçÏÂËùʾ£º ```java sc.configureBlocking( false ); SelectionKey newKey = sc.register( selector, SelectionKey.OP_READ ); ``` -?????????? register() ?? OP_READ ???????? SocketChannel ??????? ??? ?????? ???? ??????? +×¢ÒâÎÒÃÇʹÓà register() µÄ OP_READ ²ÎÊý£¬½« SocketChannel ×¢²áÓÃÓÚ ¶ÁÈ¡ ¶ø²»ÊÇ ½ÓÊÜ ÐÂÁ¬½Ó¡£ -### 6.6 ?????????? SelectionKey +### 6.6 ɾ³ý´¦Àí¹ýµÄ SelectionKey -????? SelectionKey ???????????????????????????????????????????????? SelectionKey ????????????????????????????????????????????????????????????????????????????????????????????¦Ä????????????????????? remove() ???????????????? SelectionKey?? +ÔÚ´¦Àí SelectionKey Ö®ºó£¬ÎÒÃǼ¸ºõ¿ÉÒÔ·µ»ØÖ÷Ñ­»·ÁË¡£µ«ÊÇÎÒÃDZØÐëÊ×ÏȽ«´¦Àí¹ýµÄ SelectionKey ´ÓÑ¡¶¨µÄ¼ü¼¯ºÏÖÐɾ³ý¡£Èç¹ûÎÒÃÇûÓÐɾ³ý´¦Àí¹ýµÄ¼ü£¬ÄÇôËüÈÔÈ»»áÔÚÖ÷¼¯ºÏÖÐÒÔÒ»¸ö¼¤»îµÄ¼ü³öÏÖ£¬Õâ»áµ¼ÖÂÎÒÃdz¢ÊÔÔٴδ¦ÀíËü¡£ÎÒÃǵ÷Óõü´úÆ÷µÄ remove() ·½·¨À´É¾³ý´¦Àí¹ýµÄ SelectionKey£º ```java it.remove(); ``` -???????????????????????????????????§Õ????????(???????????? I/O ???)??? +ÏÖÔÚÎÒÃÇ¿ÉÒÔ·µ»ØÖ÷Ñ­»·²¢½ÓÊÜ´ÓÒ»¸öÌ×½Ó×ÖÖд«ÈëµÄÊý¾Ý(»òÕßÒ»¸ö´«ÈëµÄ I/O ʼþ)ÁË¡£ -### 6.7 ????? I/O +### 6.7 ´«ÈëµÄ I/O -?????????????????????????????????? I/O ??????????????????§Ö??? Selector.select()????????????????? I/O ?????????¦²? SelectionKey ???????? OP_READ ?????????????? +µ±À´×ÔÒ»¸öÌ×½Ó×ÖµÄÊý¾Ýµ½´ïʱ£¬Ëü»á´¥·¢Ò»¸ö I/O ʼþ¡£Õâ»áµ¼ÖÂÔÚÖ÷Ñ­»·Öе÷Óà Selector.select()£¬²¢·µ»ØÒ»¸ö»òÕß¶à¸ö I/O ʼþ¡£ÕâÒ»´Î£¬ SelectionKey ½«±»±ê¼ÇΪ OP_READ ʼþ£¬ÈçÏÂËùʾ£º ```java } else if ((key.readyOps() & SelectionKey.OP_READ) @@ -398,9 +398,9 @@ it.remove(); ``` -# ?¦Ï????? +# ²Î¿¼×ÊÁÏ -- Eckel B, ????? , ??? , ?? . Java ?????? [M]. ??§Ö????????? , 2002. -- [IBM: NIO ????](https://www.ibm.com/developerworks/cn/education/java/j-nio/j-nio.html) -- [ ??????? Java I/O ????????? ](https://www.ibm.com/developerworks/cn/java/j-lo-javaio/index.html) -- [NIO ??? IO ?????? ](http://blog.csdn.net/shimiso/article/details/24990499) +- Eckel B, °£¿Ë¶û , ê»Åô , µÈ . Java ±à³Ì˼Ïë [M]. »úе¹¤Òµ³ö°æÉç , 2002. +- [IBM: NIO ÈëÃÅ](https://www.ibm.com/developerworks/cn/education/java/j-nio/j-nio.html) +- [ ÉîÈë·ÖÎö Java I/O µÄ¹¤×÷»úÖÆ ](https://www.ibm.com/developerworks/cn/java/j-lo-javaio/index.html) +- [NIO Ó봫ͳ IO µÄÇø±ð ](http://blog.csdn.net/shimiso/article/details/24990499) diff --git a/notes/Java 基础语法.md b/notes/Java 基础语法.md index 05a53044..87fc192b 100644 --- a/notes/Java 基础语法.md +++ b/notes/Java 基础语法.md @@ -1,140 +1,140 @@ -* [????](#????) +* [»ù´¡](#»ù´¡) * [ final](#-final) - * [????????](#????????) - * [???????](#???????) -* [????](#????) + * [³õʼ»¯Ë³Ðò](#³õʼ»¯Ë³Ðò) + * [·ÃÎÊȨÏÞ](#·ÃÎÊȨÏÞ) +* [ÈÝÆ÷](#ÈÝÆ÷) * [Set](#set) * [Queue](#queue) * [Map](#map) -* [????](#????) -* [??](#??) -* [?¦Ï?????](#?¦Ï?????) +* [·´Éä](#·´Éä) +* [Òì³£](#Òì³£) +* [²Î¿¼×ÊÁÏ](#²Î¿¼×ÊÁÏ) -# ???? +# »ù´¡ ## final -**final ????** +**final Êý¾Ý** -?????????????????????????????????????????????????????????????????? +ÉùÃ÷Êý¾ÝΪ³£Á¿£¬¿ÉÒÔÊDZàÒëʱ³£Á¿£¬Ò²¿ÉÒÔÊÇÔÚÔËÐÐʱ±»³õʼ»¯ºó²»Äܱ»¸Ä±äµÄ³£Á¿¡£ -????????????final ???????????????????final ????¨°????????????????????????????????????????????? +¶ÔÓÚ»ù±¾ÀàÐÍ£¬final ʹÊýÖµ²»±ä£»¶ÔÓÚÒýÓöÔÏó£¬final ʹÒýÓò»±ä£¬Ò²¾Í²»ÄÜÒýÓÃÆäËü¶ÔÏ󣬵«ÊDZ»ÒýÓõĶÔÏó±¾ÉíÊÇ¿ÉÒÔÐ޸ĵġ£ -**final ????** +**final ·½·¨** -???????????????????? +ÉùÃ÷·½·¨²»Äܱ»×ÓÀา¸Ç¡£ -private ?????????????? final????????????§Ø?????????????§Ö???? private ???????????????????????????????????????????????? +private ·½·¨ÒþʽµØ±»Ö¸¶¨Îª final£¬Èç¹ûÔÚ×ÓÀàÖж¨ÒåµÄ·½·¨ºÍ»ùÀàÖеÄÒ»¸ö private ·½·¨Ç©ÃûÏàͬ£¬´Ëʱ×ÓÀàµÄ·½·¨²»ÊǸ²¸Ç»ùÀà·½·¨£¬¶øÊÇÖØÔØÁË¡£ -**final ??** +**final Àà** -????????????§³? +ÉùÃ÷À಻ÔÊÐí±»¼Ì³Ð¡£ -## ???????? +## ³õʼ»¯Ë³Ðò -static ??????????????????????????????????????????????????¦²?????????????????????? +static ÉùÃ÷µÄ¾²Ì¬Êý¾ÝÔÚÄÚ´æÖÐÖ»´æÔÚÒ»·Ý£¬Ö»ÔÚÀàµÚÒ»´ÎʵÀý»¯Ê±³õʼ»¯Ò»´Î£¬ÓÅÏÈÓÚÆäËüÊý¾ÝµÄ³õʼ»¯¡£ ```java -public static String staticField = "???????"; +public static String staticField = "¾²Ì¬±äÁ¿"; ``` -static ????? static ???????????????????????????¦²?????????????????????????????§Ö???? +static Óï¾ä¿éºÍ static Êý¾ÝÒ»ÑùÔÚÀàµÚÒ»´ÎʵÀý»¯Ê±ÔËÐÐÒ»´Î£¬¾ßÌåÄĸöÏÈÔËÐÐÈ¡¾öÓÚËüÃÇÔÚ´úÂëÖеÄ˳Ðò¡£ ```java static { - System.out.println("??????????"); + System.out.println("¾²Ì¬³õʼ»¯¿é"); } ``` -?????????????????????????????????????????????? +ÆÕͨÊý¾ÝºÍÆÕͨÓï¾ä¿éµÄ³õʼ»¯ÔÚ¾²Ì¬Êý¾ÝºÍ¾²Ì¬Óï¾ä¿é³õʼ»¯½áÊøÖ®ºó¡£ ```java -public String field = "????"; +public String field = "±äÁ¿"; ``` ```java { - System.out.println("???????"); + System.out.println("³õʼ»¯¿é"); } ``` -????????????§Ö???????§Ô???? +×îºó²ÅÊǹ¹Ô캯ÊýÖеÄÊý¾Ý½øÐгõʼ»¯ ```java public InitialOrderTest() { - System.out.println("??????"); + System.out.println("¹¹ÔìÆ÷"); } ``` -?????§Ö?????????????????? +´æÔڼ̳еÄÇé¿öÏ£¬³õʼ»¯Ë³ÐòΪ£º -1. ??????????????????ï‚ -2. ??????????????????ï‚ -3. ????????????ï‚ -4. ???????????? -5. ????????????ï‚ -6. ???????????? +1. ¸¸Àࣨ¾²Ì¬Êý¾Ý¡¢¾²Ì¬Óï¾ä¿é£© +2. ×ÓÀࣨ¾²Ì¬Êý¾Ý¡¢¾²Ì¬Óï¾ä¿é£© +3. ¸¸ÀࣨÊý¾Ý¡¢Óï¾ä¿é£© +4. ¸¸Àࣨ¹¹ÔìÆ÷£© +5. ×ÓÀࣨÊý¾Ý¡¢Óï¾ä¿é£© +6. ×ÓÀࣨ¹¹ÔìÆ÷£© -## ??????? +## ·ÃÎÊȨÏÞ -Java ??????????????????¦Ç???private??protected ??? public???????????????¦Ç??????????????? +Java ÖÐÓÐÈý¸ö·ÃÎÊȨÏÞÐÞÊηû£ºprivate¡¢protected ÒÔ¼° public£¬Èç¹û²»¼Ó·ÃÎÊÐÞÊηû£¬±íʾ°ü¼¶¿É¼û¡£ -???????????§Ö???????????????????????????¦Ç??????????????????????¨®?????????????????¨®????????????????????????????????????????????§Ö?????????????????????????????????? +¿ÉÒÔ¶ÔÀà»òÀàÖеijÉÔ±£¨×Ö¶ÎÒÔ¼°·½·¨£©¼ÓÉÏ·ÃÎÊÐÞÊηû¡£³ÉÔ±¿É¼û±íʾÆäËüÀà¿ÉÒÔÓóÉÔ±ËùÔÚÀàµÄ¶ÔÏó·ÃÎʵ½¸Ã³ÉÔ±£»Àà¿É¼û±íʾÆäËüÀà¿ÉÒÔÓÃÕâ¸öÀà´´½¨¶ÔÏ󣬿ÉÒÔ°ÑÀ൱×ö°üÖеÄÒ»¸ö³ÉÔ±£¬È»ºó°ü±íʾһ¸öÀ࣬ÕâÑù¾ÍºÃÀí½âÁË¡£ -protected ???????¦Ã???????????????§Ô????????????????????????????¦Ç?????????????ÈÉ???????§Þ??????? +protected ÓÃÓÚÐÞÊγÉÔ±£¬±íʾÔڼ̳ÐÌåϵÖгÉÔ±¶ÔÓÚ×ÓÀà¿É¼û¡£µ«ÊÇÕâ¸ö·ÃÎÊÐÞÊηû¶ÔÓÚÀàûÓÐÒâÒ壬ÒòΪ°üûÓм̳ÐÌåϵ¡£ -# ???? +# ÈÝÆ÷ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/114c49a6-72e3-4264-ae07-c564127094ac.png) -??????????? Collection ?? Map ?????Collection ??????? List??Set ??? Queue?? +ÈÝÆ÷Ö÷Òª°üÀ¨ Collection ºÍ Map Á½ÖÖ£¬Collection ÓÖ°üº¬ÁË List¡¢Set ÒÔ¼° Queue¡£ ## Set -- HashSet????? Hash ??????????????????????????? +- HashSet£ºÊ¹Óà Hash ʵÏÖ£¬Ö§³Ö¿ìËÙ²éÕÒ£¬µ«ÊÇʧȥÓÐÐòÐÔ£» -- TreeSet?????????????????????????§¹????? HashSet?? +- TreeSet£ºÊ¹ÓÃÊ÷ʵÏÖ£¬±£³ÖÓÐÐò£¬µ«ÊDzéÕÒЧÂʲ»Èç HashSet£» -- LinkedListHashSet?????? HashSet ?????§¹????????????????????????????????????????? +- LinkedListHashSet£º¾ßÓÐ HashSet µÄ²éÕÒЧÂÊ£¬ÇÒÄÚ²¿Ê¹ÓÃÁ´±íά»¤ÔªËصIJåÈë˳Ðò£¬Òò´Ë¾ßÓÐÓÐÐòÐÔ¡£ ## Queue -???????????LinkedList ?? PriorityQueue?????? LinkedList ????????§³? +Ö»ÓÐÁ½¸öʵÏÖ£ºLinkedList ºÍ PriorityQueue£¬ÆäÖÐ LinkedList Ö§³ÖË«Ïò¶ÓÁС£ ## Map -- HashMap????? Hash ??? +- HashMap£ºÊ¹Óà Hash ʵÏÖ -- LinkedHashMap???????????????????????????????????LRU????? +- LinkedHashMap£º±£³ÖÓÐÐò£¬Ë³ÐòΪ²åÈë˳Ðò»òÕß×î½ü×îÉÙʹÓã¨LRU£©Ë³Ðò -- TreeMap????????????? +- TreeMap£º»ùÓÚºìºÚÊ÷ʵÏÖ -- ConcurrentHashMap??????? Map?????�p??????? +- ConcurrentHashMap£ºḬ̈߳²È« Map£¬²»É漰ͬ²½¼ÓËø -# ???? +# ·´Éä -?????????? **Class** ??????????????§Û???????????????????????????????????? .class ??????????????????? Class ???? +ÿ¸öÀà¶¼ÓÐÒ»¸ö **Class** ¶ÔÏ󣬰üº¬ÁËÓëÀàÓйصÄÐÅÏ¢¡£µ±±àÒëÒ»¸öÐÂÀàʱ£¬»á²úÉúÒ»¸öͬÃûµÄ .class Îļþ£¬¸ÃÎļþÄÚÈݱ£´æ×Å Class ¶ÔÏó¡£ -????????? Class ?????????????????????????????? JVM ?§µ???????? Class.forName('com.mysql.jdbc.Driver.class') ????????????????????¡Â?????????? Class ???? +Àà¼ÓÔØÏ൱ÓÚ Class ¶ÔÏóµÄ¼ÓÔØ¡£ÀàÔÚµÚÒ»´ÎʹÓÃʱ²Å¶¯Ì¬¼ÓÔØµ½ JVM ÖУ¬¿ÉÒÔʹÓà Class.forName('com.mysql.jdbc.Driver.class') ÕâÖÖ·½Ê½À´¿ØÖÆÀàµÄ¼ÓÔØ£¬¸Ã·½·¨»á·µ»ØÒ»¸ö Class ¶ÔÏó¡£ -???????????????????????????????????????????????????????????????????? .class ??????????????????? +·´Éä¿ÉÒÔÌṩÔËÐÐʱµÄÀàÐÅÏ¢£¬²¢ÇÒÕâ¸öÀà¿ÉÒÔÔÚÔËÐÐʱ²Å¼ÓÔØ½øÀ´£¬ÉõÖÁÔÚ±àÒëʱÆÚ¸ÃÀàµÄ .class ²»´æÔÚÒ²¿ÉÒÔ¼ÓÔØ½øÀ´¡£ -Class ?? java.lang.reflect ???????????????java.lang.reflect ???????? **Field**??**Method** ??? **Constructor** ????????? get() ?? set() ???????????? Field ???????????¦²???????? invoke() ?????????? Method ???????????????????? Constructor ?????????? +Class ºÍ java.lang.reflect Ò»Æð¶Ô·´ÉäÌṩÁËÖ§³Ö£¬java.lang.reflect Àà¿â°üº¬ÁË **Field**¡¢**Method** ÒÔ¼° **Constructor** Àà¡£¿ÉÒÔʹÓà get() ºÍ set() ·½·¨¶ÁÈ¡ºÍÐÞ¸Ä Field ¶ÔÏó¹ØÁªµÄ×ֶΣ¬¿ÉÒÔʹÓà invoke() ·½·¨µ÷ÓÃÓë Method ¶ÔÏó¹ØÁªµÄ·½·¨£¬¿ÉÒÔÓà Constructor ´´½¨ÐµĶÔÏó¡£ -IDE ??¡Â???????????????????????????????????????????¦±??????????????????§Ô??????????? +IDE ʹÓ÷´Éä»úÖÆ»ñÈ¡ÀàµÄÐÅÏ¢£¬ÔÚʹÓÃÒ»¸öÀàµÄ¶ÔÏóʱ£¬Äܹ»°ÑÀàµÄ×ֶΡ¢·½·¨ºÍ¹¹Ô캯ÊýµÈÐÅÏ¢ÁгöÀ´¹©Óû§Ñ¡Ôñ¡£ -# ?? +# Òì³£ -Throwable ????????????¦Ê¦Ï???????????????????????**Error** ?? **Exception**?????? Error ?????????????????? +Throwable ¿ÉÒÔÓÃÀ´±íʾÈκοÉÒÔ×÷ΪÒì³£Å׳öµÄÀ࣬·ÖΪÁ½ÖÖ£º**Error** ºÍ **Exception**£¬ÆäÖÐ Error ÓÃÀ´±íʾ±àÒëʱϵͳ´íÎó¡£ -Exception ????????**?????** ?? **???????**???????????? try...catch... ???????§Õ??????????????§Ý?????????????????????????????? 0 ?????? Arithmetic Exception??????????????????????? +Exception ·ÖΪÁ½ÖÖ£º**ÊܼìÒì³£** ºÍ **·ÇÊܼìÒì³£**¡£ÊܼìÒì³£ÐèÒªÓà try...catch... Óï¾ä²¶»ñ²¢½øÐд¦Àí£¬²¢ÇÒ¿ÉÒÔ´ÓÒì³£Öлָ´£»·ÇÊܼìÒì³£ÊdzÌÐòÔËÐÐʱ´íÎó£¬ÀýÈç³ý 0 »áÒý·¢ Arithmetic Exception£¬´Ëʱ³ÌÐò±¼À£²¢ÇÒÎÞ·¨»Ö¸´¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/48f8f98e-8dfd-450d-8b5b-df4688f0d377.jpg) -# ?¦Ï????? +# ²Î¿¼×ÊÁÏ -- Eckel B, ????? , ??? , ?? . Java ?????? [M]. ??§Ö????????? , 2002. -- [Java ????????? ](https://segmentfault.com/a/1190000004527951) +- Eckel B, °£¿Ë¶û , ê»Åô , µÈ . Java ±à³Ì˼Ïë [M]. »úе¹¤Òµ³ö°æÉç , 2002. +- [Java Àà³õʼ»¯Ë³Ðò ](https://segmentfault.com/a/1190000004527951) diff --git a/notes/Java 容器.md b/notes/Java 容器.md index 8bf48f09..8bbc9b45 100644 --- a/notes/Java 容器.md +++ b/notes/Java 容器.md @@ -1,78 +1,78 @@ -* [????](#????) +* [¸ÅÀÀ](#¸ÅÀÀ) * [1. List](#1-list) * [2. Set](#2-set) * [3. Queue](#3-queue) * [4. Map](#4-map) - * [5. Java 1.0/1.1 ????](#5-java-1011-????) -* [?????§Ö??????](#?????§Ö??????) - * [1. ????????](#1-????????) - * [2. ????????](#2-????????) -* [???](#???) -* [??????](#??????) + * [5. Java 1.0/1.1 ÈÝÆ÷](#5-java-1011-ÈÝÆ÷) +* [ÈÝÆ÷ÖеÄÉè¼ÆÄ£Ê½](#ÈÝÆ÷ÖеÄÉè¼ÆÄ£Ê½) + * [1. µü´úÆ÷ģʽ](#1-µü´úÆ÷ģʽ) + * [2. ÊÊÅäÆ÷ģʽ](#2-ÊÊÅäÆ÷ģʽ) +* [É¢ÁÐ](#É¢ÁÐ) +* [Ô´Âë·ÖÎö](#Ô´Âë·ÖÎö) * [1. ArraList](#1-arralist) - * [2. Vector ?? Stack](#2-vector-??-stack) + * [2. Vector Óë Stack](#2-vector-Óë-stack) * [3. LinkedList](#3-linkedlist) * [4. TreeMap](#4-treemap) * [5. HashMap](#5-hashmap) * [6. LinkedHashMap](#6-linkedhashmap) * [7. ConcurrentHashMap](#7-concurrenthashmap) -* [?¦Ï?????](#?¦Ï?????) +* [²Î¿¼×ÊÁÏ](#²Î¿¼×ÊÁÏ) -# ???? +# ¸ÅÀÀ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/ebf03f56-f957-4435-9f8f-0f605661484d.jpg) -??????????? Collection ?? Map ?????Collection ??????? List??Set ??? Queue?? +ÈÝÆ÷Ö÷Òª°üÀ¨ Collection ºÍ Map Á½ÖÖ£¬Collection ÓÖ°üº¬ÁË List¡¢Set ÒÔ¼° Queue¡£ ## 1. List -- ArrayList??????????????????????????? +- ArrayList£º»ùÓÚ¶¯Ì¬Êý×éʵÏÖ£¬Ö§³ÖËæ»ú·ÃÎÊ£» -- LinkedList????????????????????????????????????????????????§Þ????????????????????LinkedList ????????????????§Ü??????§³? +- LinkedList£º»ùÓÚË«ÏòÑ­»·Á´±íʵÏÖ£¬Ö»ÄÜ˳Ðò·ÃÎÊ£¬µ«ÊÇ¿ÉÒÔ¿ìËÙµØÔÚÁ´±íÖмä²åÈëºÍɾ³ýÔªËØ¡£²»½öÈç´Ë£¬LinkedList »¹¿ÉÒÔÓÃ×÷Õ»¡¢¶ÓÁкÍË«¶Ë¶ÓÁС£ ## 2. Set -- HashSet?????? Hash ??????????????????????????? +- HashSet£º»ùÓÚ Hash ʵÏÖ£¬Ö§³Ö¿ìËÙ²éÕÒ£¬µ«ÊÇʧȥÓÐÐòÐÔ£» -- TreeSet????????????????????????????§¹????? HashSet?? +- TreeSet£º»ùÓÚºìºÚÊ÷ʵÏÖ£¬±£³ÖÓÐÐò£¬µ«ÊDzéÕÒЧÂʲ»Èç HashSet£» -- LinkedListHashSet?????? HashSet ?????§¹????????????????????????????????????????? +- LinkedListHashSet£º¾ßÓÐ HashSet µÄ²éÕÒЧÂÊ£¬ÇÒÄÚ²¿Ê¹ÓÃÁ´±íά»¤ÔªËصIJåÈë˳Ðò£¬Òò´Ë¾ßÓÐÓÐÐòÐÔ¡£ ## 3. Queue -???????????LinkedList ?? PriorityQueue?????? LinkedList ????????§µ?PriorityQueue ??????????? +Ö»ÓÐÁ½¸öʵÏÖ£ºLinkedList ºÍ PriorityQueue£¬ÆäÖÐ LinkedList Ö§³ÖË«Ïò¶ÓÁУ¬PriorityQueue ÊÇ»ùÓڶѽṹʵÏÖ¡£ ## 4. Map -- HashMap?????? Hash ??? +- HashMap£º»ùÓÚ Hash ʵÏÖ -- LinkedHashMap??????????????????????????????????????????????LRU????? +- LinkedHashMap£ºÊ¹ÓÃÁ´±íÀ´Î¬»¤ÔªËصÄ˳Ðò£¬Ë³ÐòΪ²åÈë˳Ðò»òÕß×î½ü×îÉÙʹÓã¨LRU£©Ë³Ðò -- TreeMap????????????? +- TreeMap£º»ùÓÚºìºÚÊ÷ʵÏÖ -- ConcurrentHashMap??????? Map?????�p?????? HashTable ????????? +- ConcurrentHashMap£ºḬ̈߳²È« Map£¬²»Éæ¼°ÀàËÆÓÚ HashTable µÄͬ²½¼ÓËø -## 5. Java 1.0/1.1 ???? +## 5. Java 1.0/1.1 ÈÝÆ÷ -?????????????????????????????????????????????? +¶ÔÓھɵÄÈÝÆ÷£¬ÎÒÃǾö²»Ó¦¸ÃʹÓÃËüÃÇ£¬Ö»ÐèÒª¶ÔËüÃǽøÐÐÁ˽⡣ -- Vector???? ArrayList ?????????????????? +- Vector£ººÍ ArrayList ÀàËÆ£¬µ«ËüÊÇḬ̈߳²È«µÄ -- HashTable???? HashMap ?????????????????? +- HashTable£ººÍ HashMap ÀàËÆ£¬µ«ËüÊÇḬ̈߳²È«µÄ -# ?????§Ö?????? +# ÈÝÆ÷ÖеÄÉè¼ÆÄ£Ê½ -## 1. ???????? +## 1. µü´úÆ÷ģʽ -????????????????????????????? Iterator ??????????????????????????????????§Ö????? +´Ó¸ÅÀÀͼ¿ÉÒÔ¿´µ½£¬Ã¿¸ö¼¯ºÏÀà¶¼ÓÐÒ»¸ö Iterator ¶ÔÏ󣬿ÉÒÔͨ¹ýÕâ¸öµü´úÆ÷¶ÔÏóÀ´±éÀú¼¯ºÏÖеÄÔªËØ¡£ -[Java ?§Ö???????? ](https://github.com/CyC2018/InterviewNotes/blob/master/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F.md#92-java-%E5%86%85%E7%BD%AE%E7%9A%84%E8%BF%AD%E4%BB%A3%E5%99%A8) +[Java Öеĵü´úÆ÷ģʽ ](https://github.com/CyC2018/InterviewNotes/blob/master/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F.md#92-java-%E5%86%85%E7%BD%AE%E7%9A%84%E8%BF%AD%E4%BB%A3%E5%99%A8) -## 2. ???????? +## 2. ÊÊÅäÆ÷ģʽ -java.util.Arrays#asList() ????????????????? List ????? +java.util.Arrays#asList() ¿ÉÒÔ°ÑÊý×éÀàÐÍת»»Îª List ÀàÐÍ¡£ ```java List list = Arrays.asList(1, 2, 3); @@ -80,44 +80,44 @@ java.util.Arrays#asList() ????????????????? List ????? list = Arrays.asList(arr); ``` -# ??? +# É¢ÁÐ -??? hasCode() ?????????????????????????? +ʹÓà hasCode() À´·µ»ØÉ¢ÁÐÖµ£¬Ê¹ÓõÄÊǶÔÏóµÄµØÖ·¡£ -?? equals() ???????§Ø?????????????????????????????????????????????????????????????????????? +¶ø equals() ÊÇÓÃÀ´ÅжÏÁ½¸ö¶ÔÏóÊÇ·ñÏàµÈµÄ£¬ÏàµÈµÄÁ½¸ö¶ÔÏóÉ¢ÁÐÖµÒ»¶¨ÒªÏàͬ£¬µ«ÊÇÉ¢ÁÐÖµÏàͬµÄÁ½¸ö¶ÔÏó²»Ò»¶¨ÏàµÈ¡£ -?????????????????????? +ÏàµÈ±ØÐëÂú×ãÒÔÏÂÎå¸öÐÔÖÊ£º -1. ????? -2. ????? -3. ?????? -4. ????????¦Å??? x.equals(y)????????? -5. ???¦Ê¦Â??? null ????? x ???? x.equals(nul) ?????? false +1. ×Ô·´ÐÔ +2. ¶Ô³ÆÐÔ +3. ´«µÝÐÔ +4. Ò»ÖÂÐÔ£¨¶à´Îµ÷Óà x.equals(y)£¬½á¹û²»±ä£© +5. ¶ÔÈκβ»ÊÇ null µÄ¶ÔÏó x µ÷Óà x.equals(nul) ½á¹û¶¼Îª false -# ?????? +# Ô´Âë·ÖÎö -????????? [ ?? - ???? ](https://github.com/CyC2018/InterviewNotes/blob/master/notes/%E7%AE%97%E6%B3%95.md#%E7%AC%AC%E4%B8%89%E7%AB%A0-%E6%9F%A5%E6%89%BE) ????????????????????§Ü??????? +½¨ÒéÏÈÔĶÁ [ Ëã·¨ - ²éÕÒ ](https://github.com/CyC2018/InterviewNotes/blob/master/notes/%E7%AE%97%E6%B3%95.md#%E7%AC%AC%E4%B8%89%E7%AB%A0-%E6%9F%A5%E6%89%BE) ²¿·Ö£¬¶Ô¼¯ºÏÀàÔ´ÂëµÄÀí½âÓкܴó°ïÖú¡£ -????????[OpenJDK 1.7](http://download.java.net/openjdk/jdk7) +Ô´ÂëÏÂÔØ£º[OpenJDK 1.7](http://download.java.net/openjdk/jdk7) ## 1. ArraList [ArraList.java](https://github.com/CyC2018/InterviewNotes/blob/master/notes/src/ArrayList.java) -????? RandomAccess ??????????????????????????????????? ArrayList ?????????????? +ʵÏÖÁË RandomAccess ½Ó¿Ú£¬Òò´ËÖ§³ÖËæ»ú·ÃÎÊ£¬ÕâÊÇÀíËùµ±È»µÄ£¬ÒòΪ ArrayList ÊÇ»ùÓÚÊý×éʵÏֵġ£ ```java public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, java.io.Serializable ``` -??????????????????????????? transient ???¦²?????????????öö???????¦Ë????????????????????????????????§Ý????????§Õ writeObject() ?? readObject()?? +»ùÓÚÊý×éʵÏÖ£¬±£´æÔªËصÄÊý×éʹÓà transient ÐÞÊΣ¬ÕâÊÇÒòΪ¸ÃÊý×é²»Ò»¶¨ËùÓÐλÖö¼Õ¼ÂúÔªËØ£¬Òò´ËÒ²¾Íû±ØÒªÈ«²¿¶¼½øÐÐÐòÁл¯¡£ÐèÒªÖØÐ´ writeObject() ºÍ readObject()¡£ ```java private transient Object[] elementData; ``` -?????????§³? 10 +Êý×éµÄĬÈÏ´óСΪ 10 ```java public ArrayList(int initialCapacity) { @@ -132,7 +132,7 @@ public ArrayList() { } ``` -??????????? System.arraycopy() ???????§Ú?????????????????????????????????????????????§³????????????????§Õ????? +ɾ³ýÔªËØÊ±µ÷Óà System.arraycopy() ¶ÔÔªËØ½øÐи´ÖÆ£¬Òò´Ëɾ³ý²Ù×÷³É±¾ºÜ¸ß£¬×îºÃÔÚ´´½¨Ê±¾ÍÖ¸¶¨´ó¸ÅµÄÈÝÁ¿´óС£¬¼õÉÙ¸´ÖƲÙ×÷µÄÖ´ÐдÎÊý¡£ ```java public E remove(int index) { @@ -150,9 +150,9 @@ public E remove(int index) { } ``` -?????????? ensureCapacity() ????????????????????????????????????????????????????????? 1.5 ???? +Ìí¼ÓÔªËØÊ±Ê¹Óà ensureCapacity() ·½·¨À´±£Ö¤ÈÝÁ¿×ã¹»£¬Èç¹û²»¹»Ê±£¬ÐèÒª½øÐÐÀ©ÈÝ£¬Ê¹µÃÐÂÈÝÁ¿Îª¾ÉÈÝÁ¿µÄ 1.5 ±¶¡£ -modCount ??????? ArrayList ?????�£?????????????????? add() ?? addAll() ?????????? ensureCapacity()?????????? ensureCapacity() ?§Ø? modCount ???????? +modCount ÓÃÀ´¼Ç¼ ArrayList ·¢Éú±ä»¯µÄ´ÎÊý£¬ÒòΪÿ´ÎÔÚ½øÐÐ add() ºÍ addAll() ʱ¶¼ÐèÒªµ÷Óà ensureCapacity()£¬Òò´ËÖ±½ÓÔÚ ensureCapacity() ÖÐ¶Ô modCount ½øÐÐÐ޸ġ£ ```java public void ensureCapacity(int minCapacity) { @@ -190,7 +190,7 @@ private static int hugeCapacity(int minCapacity) { } ``` -????????§Ý???????????????????????????? modCount ??????????????????? ConcurrentModificationException?? +ÔÚ½øÐÐÐòÁл¯»òÕßµü´úµÈ²Ù×÷ʱ£¬ÐèÒª±È½Ï²Ù×÷ǰºó modCount ÊÇ·ñ¸Ä±ä£¬Èç¹û¸Ä±äÁËÐèÒªÅ׳ö ConcurrentModificationException¡£ ```java private void writeObject(java.io.ObjectOutputStream s) @@ -213,20 +213,20 @@ private void writeObject(java.io.ObjectOutputStream s) } ``` -**?? Vector ??????** +**ºÍ Vector µÄÇø±ð** -1. Vector ?? ArrayList ???????????????¦·??????????? Vector ????????????????? ArrayList ????????????????? ArrayList ?????? Vector??????????????????????????????? -2. Vector ??????????????§³?? 2 ??????? ArrayList ?? 1.5 ???? +1. Vector ºÍ ArrayList ¼¸ºõÊÇÍêÈ«ÏàͬµÄ£¬Î¨Ò»µÄÇø±ðÔÚÓÚ Vector ÊÇͬ²½µÄ£¬Òò´Ë¿ªÏú¾Í±È ArrayList Òª´ó£¬·ÃÎÊÒªÂý¡£×îºÃʹÓà ArrayList ¶ø²»ÊÇ Vector£¬ÒòΪͬ²½ÍêÈ«¿ÉÒÔÓɳÌÐòÔ±×Ô¼ºÀ´¿ØÖÆ£» +2. Vector ÿ´ÎÀ©ÈÝÇëÇóÆä´óСµÄ 2 ±¶¿Õ¼ä£¬¶ø ArrayList ÊÇ 1.5 ±¶¡£ -????????????? ArrayList????????? Collections.synchronizedList(new ArrayList<>()); ?????????????? ArrayList?????????? concurrent ????????? CopyOnWriteArrayList ?? +ΪÁËʹÓÃḬ̈߳²È«µÄ ArrayList£¬¿ÉÒÔʹÓà Collections.synchronizedList(new ArrayList<>()); ·µ»ØÒ»¸öḬ̈߳²È«µÄ ArrayList£¬Ò²¿ÉÒÔʹÓà concurrent ²¢·¢°üÏ嵀 CopyOnWriteArrayList Àࣻ -**?? LinkedList ??????** +**ºÍ LinkedList µÄÇø±ð** -1. ArrayList ??????????????LinkedList ?????????????????? -2. ArrayList ???????????LinkedList ?????? -3. LinkedList ??????¦Ë?????????????? +1. ArrayList »ùÓÚ¶¯Ì¬Êý×éʵÏÖ£¬LinkedList »ùÓÚË«ÏòÑ­»·Á´±íʵÏÖ£» +2. ArrayList Ö§³ÖËæ»ú·ÃÎÊ£¬LinkedList ²»Ö§³Ö£» +3. LinkedList ÔÚÈÎÒâλÖÃÌí¼Óɾ³ýÔªËØ¸ü¿ì¡£ -## 2. Vector ?? Stack +## 2. Vector Óë Stack [Vector.java](https://github.com/CyC2018/InterviewNotes/blob/master/notes/src/Vector.java) @@ -242,13 +242,13 @@ private void writeObject(java.io.ObjectOutputStream s) [HashMap.java](https://github.com/CyC2018/InterviewNotes/blob/master/notes/src/HashMap.java) -??????????????????? +ʹÓÃÀ­Á´·¨À´½â¾ö³åÍ»¡£ -??????? capacity ? 16????????????????????? 2 ??¦Ç??????????? Entry[] table ?????????size ????????????????? +ĬÈÏÈÝÁ¿ capacity Ϊ 16£¬ÐèҪעÒâµÄÊÇÈÝÁ¿±ØÐ뱣֤Ϊ 2 µÄ´Î·½¡£ÈÝÁ¿¾ÍÊÇ Entry[] table Êý×éµÄ³¤¶È£¬size ÊÇÊý×éµÄʵ¼ÊʹÓÃÁ¿¡£ -threshold ?ÕÇ????? size ????????size ????§³?? threshold?????????????????????????????? +threshold ¹æ¶¨ÁËÒ»¸ö size µÄÁÙ½çÖµ£¬size ±ØÐëСÓÚ threshold£¬Èç¹û´óÓÚµÈÓÚ£¬¾Í±ØÐë½øÐÐÀ©ÈݲÙ×÷¡£ -threshold = capacity * load_factor?????? load_factor ? table ????????????????load_factor ????????????????????????????§¹???????????? +threshold = capacity * load_factor£¬ÆäÖÐ load_factor Ϊ table Êý×éÄܹ»Ê¹ÓõıÈÀý£¬load_factor ¹ý´ó»áµ¼Ö¾۴صijöÏÖ£¬´Ó¶øÓ°Ïì²éѯºÍ²åÈëµÄЧÂÊ£¬Ïê¼ûËã·¨±Ê¼Ç¡£ ```java static final int DEFAULT_INITIAL_CAPACITY = 16; @@ -268,7 +268,7 @@ final float loadFactor; transient int modCount; ``` -?????????????????§á?????????????????????? capacity ???????????? +´ÓÏÂÃæµÄÌí¼ÓÔªËØ´úÂëÖпÉÒÔ¿´³ö£¬µ±ÐèÒªÀ©ÈÝʱ£¬Áî capacity ΪԭÀ´µÄÁ½±¶¡£ ```java void addEntry(int hash, K key, V value, int bucketIndex) { @@ -279,7 +279,7 @@ void addEntry(int hash, K key, V value, int bucketIndex) { } ``` -Entry ??????????????????????§Ö? next ????????§Ý??????¨¢? +Entry ÓÃÀ´±íʾһ¸ö¼üÖµ¶ÔÔªËØ£¬ÆäÖÐµÄ next Ö¸ÕëÔÚÐòÁл¯Ê±»áʹÓᣠ```java static class Entry implements Map.Entry { @@ -290,7 +290,7 @@ static class Entry implements Map.Entry { } ``` -get() ???????????????????key ? null ?? ??? null?????§á?????? HashMap ??????? null ??????? +get() ²Ù×÷ÐèÒª·Ö³ÉÁ½ÖÖÇé¿ö£¬key Ϊ null ºÍ ²»Îª null£¬´ÓÖпÉÒÔ¿´³ö HashMap ÔÊÐí²åÈë null ×÷Ϊ¼ü¡£ ```java public V get(Object key) { @@ -306,7 +306,7 @@ public V get(Object key) { } ``` -put() ???????????? key ???? null ????????????????????????????? key ? null ??????????????? key ? null ???????????????????? 0 ¦Ë?????????? null ??????? hash ??????????????¡Â????????????? +put() ²Ù×÷Ò²ÐèÒª¸ù¾Ý key ÊÇ·ñΪ null ×ö²»Í¬µÄ´¦Àí£¬ÐèҪעÒâµÄÊÇÈç¹û±¾À´Ã»ÓÐ key Ϊ null µÄ¼üÖµ¶Ô£¬Ð²åÈëÒ»¸ö key Ϊ null µÄ¼üÖµ¶ÔʱĬÈÏÊÇ·ÅÔÚÊý×éµÄ 0 λÖã¬ÕâÊÇÒòΪ null ²»ÄܼÆËã hash Öµ£¬Ò²¾ÍÎÞ·¨ÖªµÀÓ¦¸Ã·ÅÔÚÄĸöÁ´±íÉÏ¡£ ```java public V put(K key, V value) { @@ -354,8 +354,8 @@ private V putForNullKey(V value) { [ConcurrentHashMap.java](https://github.com/CyC2018/InterviewNotes/blob/master/notes/src/HashMap.java) -[ ??? ConcurrentHashMap ?????????????? ](https://www.ibm.com/developerworks/cn/java/java-lo-concurrenthashmap/) +[ ̽Ë÷ ConcurrentHashMap ¸ß²¢·¢ÐÔµÄʵÏÖ»úÖÆ ](https://www.ibm.com/developerworks/cn/java/java-lo-concurrenthashmap/) -# ?¦Ï????? +# ²Î¿¼×ÊÁÏ -- Java ?????? +- Java ±à³Ì˼Ïë diff --git a/notes/Leetcode 题解.md b/notes/Leetcode 题解.md index d28a471f..0727747e 100644 --- a/notes/Leetcode 题解.md +++ b/notes/Leetcode 题解.md @@ -1,67 +1,67 @@ -* [?????](#?????) - * [???????](#???????) - * [??????](#??????) - * [????](#????) - * [????](#????) - * [???????](#???????) - * [??????](#??????) - * [?????](#?????) - * [????](#????) +* [Ë㷨˼Ïë](#Ë㷨˼Ïë) + * [¶þ·Ö²éÕÒ](#¶þ·Ö²éÕÒ) + * [̰ÐÄ˼Ïë](#̰ÐÄ˼Ïë) + * [˫ָÕë](#˫ָÕë) + * [ÅÅÐò](#ÅÅÐò) + * [¿ìËÙÑ¡Ôñ](#¿ìËÙÑ¡Ôñ) + * [¶ÑÅÅÐò](#¶ÑÅÅÐò) + * [ͰÅÅÐò](#ͰÅÅÐò) + * [ËÑË÷](#ËÑË÷) * [BFS](#bfs) * [DFS](#dfs) * [Backtracking](#backtracking) - * [????](#????) - * [???](#???) - * [????œý](#????œý) - * [???????](#???????) - * [????¡¤??](#????¡¤??) - * [??????????](#??????????) - * [????????????](#????????????) - * [???????????](#???????????) - * [0-1 ????](#0-1-????) - * [????????](#????????) - * [???????](#???????) - * [????????](#????????) - * [???](#???) - * [????](#????) - * [??????](#??????) - * [???????](#???????) - * [???](#???) - * [????????????](#????????????) - * [????????](#????????) - * [??????????](#??????????) - * [????](#????) -* [????????](#????????) - * [??????](#??????) - * [?????](#?????) - * [?????](#?????) - * [?????????](#?????????) - * [???????](#???????) - * [????](#????) - * [??](#??) - * [???](#???) - * [??¦Á???](#??¦Á???) - * [??§Ü??????](#??§Ü??????) + * [·ÖÖÎ](#·ÖÖÎ) + * [µÝ¹é](#µÝ¹é) + * [¶¯Ì¬¹æ»®](#¶¯Ì¬¹æ»®) + * [·Ö¸îÕûÊý](#·Ö¸îÕûÊý) + * [¾ØÕó·¾¶](#¾ØÕó·¾¶) + * [ì³²¨ÄÇÆõÊýÁÐ](#ì³²¨ÄÇÆõÊýÁÐ) + * [×µÝÔö×ÓÐòÁÐ](#×µÝÔö×ÓÐòÁÐ) + * [×¹«¹²×ÓϵÁÐ](#×¹«¹²×ÓϵÁÐ) + * [0-1 ±³°ü](#0-1-±³°ü) + * [Êý×éÇø¼ä](#Êý×éÇø¼ä) + * [×Ö·û´®±à¼­](#×Ö·û´®±à¼­) + * [ÆäËüÎÊÌâ](#ÆäËüÎÊÌâ) + * [Êýѧ](#Êýѧ) + * [ËØÊý](#ËØÊý) + * [×î´ó¹«Ô¼Êý](#×î´ó¹«Ô¼Êý) + * [½øÖÆ×ª»»](#½øÖÆ×ª»») + * [½×³Ë](#½×³Ë) + * [×Ö·û´®¼Ó·¨¼õ·¨](#×Ö·û´®¼Ó·¨¼õ·¨) + * [ÏàÓöÎÊÌâ](#ÏàÓöÎÊÌâ) + * [¶àÊýͶƱÎÊÌâ](#¶àÊýͶƱÎÊÌâ) + * [ÆäËü](#ÆäËü) +* [Êý¾Ý½á¹¹Ïà¹Ø](#Êý¾Ý½á¹¹Ïà¹Ø) + * [Õ»ºÍ¶ÓÁÐ](#Õ»ºÍ¶ÓÁÐ) + * [¹þÏ£±í](#¹þÏ£±í) + * [×Ö·û´®](#×Ö·û´®) + * [Êý×éÓë¾ØÕó](#Êý×éÓë¾ØÕó) + * [ÓÐÐò¾ØÕó](#ÓÐÐò¾ØÕó) + * [Á´±í](#Á´±í) + * [Ê÷](#Ê÷) + * [µÝ¹é](#µÝ¹é) + * [²ã´Î±éÀú](#²ã´Î±éÀú) + * [ǰÖкóÐò±éÀú](#ǰÖкóÐò±éÀú) * [BST](#bst) * [Trie](#trie) - * [?](#?) - * [¦Ë????](#¦Ë????) -* [?¦Ï?????](#?¦Ï?????) + * [ͼ](#ͼ) + * [λÔËËã](#λÔËËã) +* [²Î¿¼×ÊÁÏ](#²Î¿¼×ÊÁÏ) -# ????? +# Ë㷨˼Ïë -## ??????? +## ¶þ·Ö²éÕÒ -?????????????????????????§»??????????? +¶þ·Ö²éÕÒ˼Ïë¼òµ¥£¬µ«ÊÇÔÚʵÏÖʱÓÐһЩÐèҪעÒâµÄϸ½Ú£º -1. ????? mid ???????? mid = (l + h) / 2 ??????????? l + h ???????????????????? mid = l + (h - l) / 2 ?? +1. ÔÚ¼ÆËã mid ʱ²»ÄÜʹÓà mid = (l + h) / 2 ÕâÖÖ·½Ê½£¬ÒòΪ l + h ¿ÉÄܻᵼÖ¼ӷ¨Òç³ö£¬Ó¦¸ÃʹÓà mid = l + (h - l) / 2 ¡£ -2. ?? h ??????????????§Û???????????? l <= h ???h = mid - 1???????????? l < h ???h = mid?? -??????????????????? l <= h ?????? h = mid??????????????????????????? l = 1??h = 1????? mid ????? 1??????????????? h = mid ??????????????????????????? l < h ????? h = mid - 1??????????????????????????????? 1,2,3 ??????? 1 ????? l = 0??h = 2??mid = 1???§Ø? key < arr[mid] ??? h = mid - 1 = 0?????????????????????????????? +2. ¶Ô h µÄ¸³ÖµºÍÑ­»·Ìõ¼þÓйأ¬µ±Ñ­»·Ìõ¼þΪ l <= h ʱ£¬h = mid - 1£»µ±Ñ­»·Ìõ¼þΪ l < h ʱ£¬h = mid¡£ +½âÊÍÈçÏ£ºÔÚÑ­»·Ìõ¼þΪ l <= h ʱ£¬Èç¹û h = mid£¬»á³öÏÖÑ­»·ÎÞ·¨Í˳öµÄÇé¿ö£¬ÀýÈç l = 1£¬h = 1£¬´Ëʱ mid Ò²µÈÓÚ 1£¬Èç¹û´Ëʱ¼ÌÐøÖ´ÐÐ h = mid £¬ÄÇô¾Í»áÎÞÏÞÑ­»·£»ÔÚÑ­»·Ìõ¼þΪ l < h £¬Èç¹û h = mid - 1£¬»á´íÎóÌø¹ý²éÕÒµÄÊý£¬ÀýÈç¶ÔÓÚÊý×é 1,2,3 £¬Òª²éÕÒ 1 £¬×ʼ l = 0£¬h = 2£¬mid = 1£¬ÅÐ¶Ï key < arr[mid] Ö´ÐÐ h = mid - 1 = 0£¬´Ëʱѭ»·Í˳ö£¬Ö±½Ó°Ñ²éÕÒµÄÊýÌø¹ýÁË¡£ -3. l ???????? l = mid + 1?? +3. l µÄ¸³ÖµÒ»°ã¶¼Îª l = mid + 1¡£ ```java public int search(int key, int[] arr) { @@ -76,11 +76,11 @@ public int search(int key, int[] arr) { } ``` -**???** +**Ç󿪷½** [Leetcode : 69. Sqrt(x) (Easy)](https://leetcode.com/problems/sqrtx/description/) -????? x ????? sqrt ????? 0 \~ x ??????????? sqrt == x / sqrt ?????????????????? 0 \~ x ?????? sqrt?? +Ò»¸öÊý x µÄ¿ª·½ sqrt Ò»¶¨ÔÚ 0 \~ x Ö®¼ä£¬²¢ÇÒÂú×ã sqrt == x / sqrt ¡£¿ÉÒÔÀûÓöþ·Ö²éÕÒÔÚ 0 \~ x Ö®¼ä²éÕÒ sqrt¡£ ```java public int mySqrt(int x) { @@ -97,7 +97,7 @@ public int mySqrt(int x) { } ``` -**?????** +**°ÚÓ²±Ò** [Leetcode : 441. Arranging Coins (Easy)](https://leetcode.com/problems/arranging-coins/description/) @@ -105,17 +105,17 @@ public int mySqrt(int x) { n = 8 The coins can form the following rows: -?? -?? ?? -?? ?? ?? -?? ?? +¡è +¡è ¡è +¡è ¡è ¡è +¡è ¡è Because the 4th row is incomplete, we return 3. ``` -??????????? i ?§Ñ? i ?????????????§Ö??????? +ÌâÄ¿ÃèÊö£ºµÚ i ÐÐ°Ú i ¸ö£¬Í³¼ÆÄܹ»ÅÅÁеÄÐÐÊý¡£ -???? h ?????? l????????????????§Ó????????? +·µ»Ø h ¶ø²»ÊÇ l£¬ÒòΪ°ÚµÄÓ²±Ò×îºóÒ»Ðв»ÄÜËã½øÈ¥¡£ ```java public int arrangeCoins(int n) { @@ -131,7 +131,7 @@ public int arrangeCoins(int n) { } ``` -?????????????????????????? +¿ÉÒÔ²»Óöþ·Ö²éÕÒ£¬¸üÖ±¹ÛµÄ½â·¨ÈçÏ£º ```java public int arrangeCoins(int n) { @@ -144,18 +144,18 @@ public int arrangeCoins(int n) { } ``` -**????????? Single Element** +**ÓÐÐòÊý×éµÄ Single Element** [Leetcode : 540. Single Element in a Sorted Array (Medium)](https://leetcode.com/problems/single-element-in-a-sorted-array/description/) -?????????????????????????????????????¦²??????????? +ÌâÄ¿ÃèÊö£ºÒ»¸öÓÐÐòÊý×éÖ»ÓÐÒ»¸öÊý²»³öÏÖÁ½´Î£¬ÕÒ³öÕâ¸öÊý¡£ ```java public int singleNonDuplicate(int[] nums) { int l = 0, h = nums.length - 1; while(l < h) { int m = l + (h - l) / 2; - if(m % 2 == 1) m--; // ??? l/h/m ???????¦Ë????¨°????????§³?????? ???? + if(m % 2 == 1) m--; // ±£Ö¤ l/h/m ¶¼ÔÚżÊýλ£¬Ê¹µÃ²éÕÒÇø¼ä´óСһֱ¶¼ÊÇ ÆæÊý if(nums[m] == nums[m + 1]) l = m + 2; else h = m; } @@ -163,19 +163,19 @@ public int singleNonDuplicate(int[] nums) { } ``` -## ?????? +## ̰ÐÄ˼Ïë -?????????¦Â??????????????????????????????????????? +̰ÐÄ˼Ï뱣֤ÿ´Î²Ù×÷¶¼ÊǾֲ¿×îÓŵ쬲¢ÇÒ×îºóµÃµ½µÄ½á¹ûÊÇÈ«¾Ö×îÓŵġ£ -**???????** +**·ÖÅä±ý¸É** [Leetcode : 455. Assign Cookies (Easy)](https://leetcode.com/problems/assign-cookies/description/) -???????????????????????????????????????????§³????§Ò?????§³???????????????????¨²???????????????????????????????????? +ÌâÄ¿ÃèÊö£ºÃ¿¸öº¢×Ó¶¼ÓÐÒ»¸öÂú×ã¶È£¬Ã¿¸ö±ý¸É¶¼ÓÐÒ»¸ö´óС£¬Ö»Óбý¸ÉµÄ´óС´óÓÚÒ»¸öº¢×ÓµÄÂú×ã¶È£¬¸Ãº¢×ӲŻá»ñµÃÂú×ã¡£Çó½â×î¶à¿ÉÒÔ»ñµÃÂú×ãµÄº¢×ÓÊýÁ¿¡£ -?????§³????????????????????????????§³?????????????????????????§³????????¨²??????????????????????????????????? +ÒòΪ×îСµÄº¢×Ó×îÈÝÒ׵õ½Âú×㣬Òò´ËÏÈÂú×ã×îСº¢×Ó¡£¸øÒ»¸öº¢×ӵıý¸ÉÓ¦µ±¾¡Á¿Ð¡ÓÖÄÜÂú×ã¸Ãº¢×Ó£¬ÕâÑù´ó±ý¸É¾ÍÄÜÄÃÀ´¸øÂú×ã¶È±È½Ï´óµÄº¢×Ó¡£ -??????????????????§µ????????????? i ?????????? m ???????????? i ?????????????§³???? m ???????????????? i ?????????§³?????????????????????????? k ???????????????????????????§Ú? i ?????????? n ?????????????????????? m ??????????????????????????????? k ?????????????????? m ???????????? n ???????????????????????????????????????????????????????????? +Ö¤Ã÷£º¼ÙÉèÔÚij´ÎÑ¡ÔñÖУ¬Ì°ÐIJßÂÔÑ¡Ôñ¸øµÚ i ¸öº¢×Ó·ÖÅäµÚ m ¸ö±ý¸É£¬²¢ÇÒµÚ i ¸öº¢×ÓÂú×ã¶È×îС£¬µÚ m ¸ö±ý¸ÉΪ¿ÉÒÔÂú×ãµÚ i ¸öº¢×ÓµÄ×îС±ý¸É£¬ÀûÓÃ̰ÐIJßÂÔ×îÖÕ¿ÉÒÔÂú×ã k ¸öº¢×Ó¡£¼ÙÉè×îÓŲßÂÔÔÚÕâ´ÎÑ¡ÔñÖиø i ¸öº¢×Ó·ÖÅäµÚ n ¸ö±ý¸É£¬²¢ÇÒÕâ¸ö±ý¸É´óÓÚµÚ m ¸ö±ý¸É£¬ÄÇô×îÓŲßÂÔ×îÖÕÐèÒªÂú×ã´óÓÚ k ¸öº¢×Ó¡£ÎÒÃÇ·¢ÏÖʹÓÃµÚ m ¸ö±ý¸ÉÈ¥Ìæ´úµÚ n ¸ö±ý¸ÉÍêÈ«²»Ó°ÏìºóÐøµÄ½á¹û£¬Òò´Ḛ̈ÐIJßÂÔ¾ÍÊÇ×îÓŲßÂÔ£¬Òò´Ḛ̈ÐIJßÂÔÊÇ×îÓŵġ£ ```java public int findContentChildren(int[] g, int[] s) { @@ -190,7 +190,7 @@ public int findContentChildren(int[] g, int[] s) { } ``` -**??????????** +**Ͷ·ÉïÚ´ÌÆøÇò** [Leetcode : 452. Minimum Number of Arrows to Burst Balloons (Medium)](https://leetcode.com/problems/minimum-number-of-arrows-to-burst-balloons/description/) @@ -202,7 +202,7 @@ Output: 2 ``` -?????????????????????????????????????????????????????????¡¤???????????????????§³???????????? +ÌâÄ¿ÃèÊö£ºÆøÇòÔÚÒ»¸öˮƽÊýÖáÉϰڷţ¬¿ÉÒÔÖØµþ£¬·ÉïÚ´¹Ö±ÉäÏò×ø±êÖᣬʹµÃ·¾¶ÉÏµÄÆøÇò¶¼»á´ÌÆÆ£¬Çó½â×îСµÄͶ·ÉïÚ´ÎÊý¡£ ```java public int findMinArrowShots(int[][] points) { @@ -221,13 +221,13 @@ public int findMinArrowShots(int[][] points) { } ``` -**????????????** +**¹ÉƱµÄ×î´óÊÕÒæ** [Leetcode : 122. Best Time to Buy and Sell Stock II (Easy)](https://leetcode.com/problems/best-time-to-buy-and-sell-stock-ii/description/) -?????????????????????????¨°??????????µµ +ÏÈÂòÈë¹ÉƱ£¬È»ºó³öÊÛ¹ÉÆ±£¬´Ó¶ø»ñµÃ²î¼Û´øÀ´µÄÊÕÒæ¡£ -??????????? [a, b, c, d]??????? a <= b <= c <= d ????????????? d - a = (d - c) + (c - b) + (b - a) ???????????? prices[i] ?? prices[i] - prices[i-1] ???????? prices[i] - prices[i-1] ????????§µ?????????????????????????????? +¶ÔÓÚÒ»¸ö½»Ò× [a, b, c, d]£¬Èç¹ûÓÐ a <= b <= c <= d £¬ÄÇô×î´óÊÕÒæÎª d - a = (d - c) + (c - b) + (b - a) ¡£µ±·ÃÎʵ½Ò»¸ö prices[i] ÇÒ prices[i] - prices[i-1] £¬ÄÇô¾Í°Ñ prices[i] - prices[i-1] ¼Óµ½ÊÕÒæÖУ¬´Ó¶øÔÚ¾Ö²¿×îÓŵÄÇé¿öÏÂÒ²±£Ö¤È«¾Ö×îÓÅ¡£ ```java public int maxProfit(int[] prices) { @@ -239,7 +239,7 @@ public int maxProfit(int[] prices) { } ``` -**???????** +**ÖÖÖ²»¨¶ä** [Leetcode : 605. Can Place Flowers (Easy)](https://leetcode.com/problems/can-place-flowers/description/) @@ -248,7 +248,7 @@ Input: flowerbed = [1,0,0,0,1], n = 1 Output: True ``` -????????????????????????????¦Ë?????? +ÌâÄ¿ÃèÊö£º»¨¶äÖ®¼äÖÁÉÙÐèÒªÒ»¸öµ¥Î»µÄ¼ä¸ô¡£ ```java public boolean canPlaceFlowers(int[] flowerbed, int n) { @@ -266,15 +266,15 @@ public boolean canPlaceFlowers(int[] flowerbed, int n) { } ``` -**???????????????????** +**ÐÞ¸ÄÒ»¸öÊý³ÉΪ·ÇµÝ¼õÊý×é** [Leetcode : 665. Non-decreasing Array (Easy)](https://leetcode.com/problems/non-decreasing-array/description/) -??????????§Ø?????????????????????????????????î• +ÌâÄ¿ÃèÊö£ºÅжÏÒ»¸öÊý×éÄܲ»ÄÜÖ»ÐÞ¸ÄÒ»¸öÊý¾Í³ÉΪ·ÇµÝ¼õÊý×é¡£ -?? nums[i] < nums[i - 1] ??????????????????? nums[i - 1] = nums[i]??????????? nums[i] = nums[i - 1] ???????? nums[i] ???????????????§á???? nums[i + 1] ???????????? nums[i] ??§³?? +ÔÚ nums[i] < nums[i - 1] µÄÇé¿öÏ£¬»áÓÅÏÈ¿¼ÂÇÁî nums[i - 1] = nums[i]£¬ÒòΪÈç¹ûÐÞ¸Ä nums[i] = nums[i - 1] µÄ»°£¬ÄÇô nums[i] Õâ¸öÊý»á±ä´ó£¬ÄÇô¾ÍÓпÉÄÜ±È nums[i + 1] ´ó£¬ÎÒÃÇÒª¾¡Á¿Ê¹ nums[i] ¸üС¡£ -?????? nums[i] < nums[i - 2] ???????????? nums[i - 1] ??????????????????????????? nums[i] = nums[i - 1] ???§³? +µ«ÊÇÔÚ nums[i] < nums[i - 2] µÄÇé¿öÏ£¬Ö»ÐÞ¸Ä nums[i - 1] ²»ÄÜÁîÊý×é³ÉΪ·ÇµÝ¼õ£¬Ö»ÄÜͨ¹ýÐÞ¸Ä nums[i] = nums[i - 1] ²ÅÐС£ ```java public boolean checkPossibility(int[] nums) { @@ -290,7 +290,7 @@ public boolean checkPossibility(int[] nums) { } ``` -**?§Ø????????** +**ÅжÏÊÇ·ñΪ×Ó´®** [Leetcode : 392. Is Subsequence (Medium)](https://leetcode.com/problems/is-subsequence/description/) @@ -309,7 +309,7 @@ public boolean isSubsequence(String s, String t) { } ``` -**????????????????????????** +**·Ö¸ô×Ö·û´®Ê¹Í¬ÖÖ×Ö·û³öÏÖÔÚÒ»Æð** [Leetcode : 763. Partition Labels (Medium)](https://leetcode.com/problems/partition-labels/description/) @@ -333,7 +333,7 @@ public List partitionLabels(String S) { } ``` -**??????????????????** +**¸ù¾ÝÉí¸ßºÍÐòºÅÖØ×é¶ÓÁÐ** ```html Input: @@ -343,9 +343,9 @@ Output: [[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]] ``` -???????????????? (h, k) ??????h ???????k ????????????? k ??????????????????????????? +Ò»¸öѧÉúÓÃÁ½¸ö·ÖÁ¿ (h, k) ÃèÊö£¬h ±íʾÉí¸ß£¬k ±íʾÅÅÔÚÇ°ÃæµÄÓÐ k ¸öѧÉúµÄÉí¸ß±ÈËû¸ß»òÕߺÍËûÒ»Ñù¸ß¡£ -????????????k ??????????????????????§Ö?? k ??¦Ë???§³? +ÏÈÅÅÐò£ºÉí¸ß½µÐò¡¢k ÖµÉýÐò£¬È»ºó°´ÅźÃÐòµÄ˳Ðò²åÈë¶ÓÁÐµÄµÚ k ¸öλÖÃÖС£ ```java public int[][] reconstructQueue(int[][] people) { @@ -374,17 +374,17 @@ public int[][] reconstructQueue(int[][] people) { ``` -## ???? +## ˫ָÕë -?????????????????ï…????????????????????§¿???????? +˫ָÕëÖ÷ÒªÓÃÓÚ±éÀúÊý×飬Á½¸öÖ¸ÕëÖ¸Ïò²»Í¬µÄÔªËØ£¬´Ó¶øÐ­Í¬Íê³ÉÈÎÎñ¡£ -**??????????????????§Ó???????????????????? 0** +**´ÓÒ»¸öÒѾ­ÅÅÐòµÄÊý×éÖвéÕÒ³öÁ½¸öÊý£¬Ê¹ËüÃǵĺÍΪ 0** -[Leetcode ??167. Two Sum II - Input array is sorted (Easy)](https://leetcode.com/problems/two-sum-ii-input-array-is-sorted/description/) +[Leetcode £º167. Two Sum II - Input array is sorted (Easy)](https://leetcode.com/problems/two-sum-ii-input-array-is-sorted/description/) -????????????????????§³???????????????????????????§³???????????¦Â???????????????????¦Â????????? +ʹÓÃ˫ָÕ룬һ¸öÖ¸ÕëÖ¸ÏòÔªËØ½ÏСµÄÖµ£¬Ò»¸öÖ¸ÕëÖ¸ÏòÔªËØ½Ï´óµÄÖµ¡£Ö¸Ïò½ÏÐ¡ÔªËØµÄÖ¸Õë´ÓÍ·Ïòβ±éÀú£¬Ö¸Ïò½Ï´óÔªËØµÄÖ¸Õë´ÓβÏòÍ·±éÀú¡£ -?????????????????? sum == target??????????????????? sum > target?????????????? sum ??§³?§»????? sum < target???????§³??????? sum ????§»?? +Èç¹ûÁ½¸öÖ¸ÕëÖ¸ÏòÔªËØµÄºÍ sum == target£¬ÄÇôµÃµ½ÒªÇóµÄ½á¹û£»Èç¹û sum > target£¬Òƶ¯½Ï´óµÄÔªËØ£¬Ê¹ sum ±äСһЩ£»Èç¹û sum < target£¬Òƶ¯½ÏСµÄÔªËØ£¬Ê¹ sum ±ä´óһЩ¡£ ```java public int[] twoSum(int[] numbers, int target) { @@ -399,21 +399,21 @@ public int[] twoSum(int[] numbers, int target) { } ``` -????????????????????? 0 ??????[???????????????? P351](#) +´ËÎÊÌâ¿ÉÀ©Õ¹³ÉÈý¸öÔªËØºÍΪ 0 µÄÎÊÌ⣺[³ÌÐòÔ±´úÂëÃæÊÔÖ¸ÄÏ P351](#) -**?????????????????????????øA??** +**Êý×éÖÐÀÛ¼ÓºÍΪ¸ø¶¨ÖµµÄ××ÓÊý×鳤¶È** -[???????????????? P354/P355/P358](#) +[³ÌÐòÔ±´úÂëÃæÊÔÖ¸ÄÏ P354/P355/P358](#) -**???§Ü??§Ø???????????§Ó??????** +**ÔÚÐкÍÁж¼ÅźÃÐòµÄ¾ØÕóÖвéÕÒÔªËØ** -[???????????????? P347](#) +[³ÌÐòÔ±´úÂëÃæÊÔÖ¸ÄÏ P347](#) -**?????????§Ö???????** +**·´×ª×Ö·û´®ÖеÄÔªÒô×Ö·û** [Leetcode : 345. Reverse Vowels of a String (Easy)](https://leetcode.com/problems/reverse-vowels-of-a-string/description/) -??????????????????????????????????????¦Â?????????????¦Â????????? +ʹÓÃ˫ָÕ룬ָÏò´ý·´×ªµÄÁ½¸öÔªÒô×Ö·û£¬Ò»¸öÖ¸Õë´ÓÍ·Ïòβ±éÀú£¬Ò»¸öÖ¸Õë´Óβµ½Í·±éÀú¡£ ```java private HashSet vowels = new HashSet<>(Arrays.asList('a','e','i','o','u','A','E','I','O','U')); @@ -442,11 +442,11 @@ public String reverseVowels(String s) { } ``` -**?????????** +**Á½Êýƽ·½ºÍ** [Leetcode : 633. Sum of Square Numbers (Easy)](https://leetcode.com/problems/sum-of-square-numbers/description/) -?§Ø???????????????????????????? 5 = 12 + 22?? +ÅжÏÒ»¸öÊýÊÇ·ñΪÁ½¸öÊýµÄƽ·½ºÍ£¬ÀýÈç 5 = 12 + 22¡£ ```java public boolean judgeSquareSum(int c) { @@ -461,7 +461,7 @@ public boolean judgeSquareSum(int c) { } ``` -**??????????????????????????** +**×Ö·û´®»ØÎÄÊý£¨¿Éɾ³ýÒ»¸ö×Ö·û£©** [Leetcode : 680. Valid Palindrome II (Easy)](https://leetcode.com/problems/valid-palindrome-ii/description/) @@ -489,15 +489,15 @@ private boolean isPalindrome(String s, int l, int r){ } ``` -**?öã????????????** +**¹é²¢Á½¸öÓÐÐòÊý×é** [Leetcode : 88. Merge Sorted Array (Easy)](https://leetcode.com/problems/merge-sorted-array/description/) -??öã????›Ô???????????? +°Ñ¹é²¢½á¹û´æµ½µÚÒ»¸öÊý×éÉÏ¡£ ```java public void merge(int[] nums1, int m, int[] nums2, int n) { - int i = m - 1, j = n - 1; // ?????¦Â??????????????? nums1 ??öã???????????¦Ä???§Ûöã????? + int i = m - 1, j = n - 1; // ÐèÒª´Óβ¿ªÊ¼±éÀú£¬·ñÔòÔÚ nums1 ÉϹ鲢µÃµ½µÄÖµ»á¸²¸Ç»¹Î´½øÐй鲢±È½ÏµÄÖµ int idx = m + n - 1; while(i >= 0 || j >= 0){ if(i < 0) nums1[idx] = nums2[j--]; @@ -509,11 +509,11 @@ public void merge(int[] nums1, int m, int[] nums2, int n) { } ``` -**?§Ø????????????** +**ÅжÏÁ´±íÊÇ·ñ´æÔÚ»·** [Leetcode : 141. Linked List Cycle (Easy)](https://leetcode.com/problems/linked-list-cycle/description/) -????????????????????????????????????????????????????????????????????????????? +ʹÓÃ˫ָÕ룬һ¸öÖ¸Õëÿ´ÎÒÆ¶¯Ò»¸ö½Úµã£¬Ò»¸öÖ¸Õëÿ´ÎÒÆ¶¯Á½¸ö½Úµã£¬Èç¹û´æÔÚ»·£¬ÄÇôÕâÁ½¸öÖ¸ÕëÒ»¶¨»áÏàÓö¡£ ```java public boolean hasCycle(ListNode head) { @@ -529,7 +529,7 @@ public boolean hasCycle(ListNode head) { } ``` -**????????** +**××ÓÐòÁÐ** [Leetcode : 524. Longest Word in Dictionary through Deleting (Medium)](https://leetcode.com/problems/longest-word-in-dictionary-through-deleting/description/) @@ -559,40 +559,40 @@ public String findLongestWord(String s, List d) { } ``` -## ???? +## ÅÅÐò -### ??????? +### ¿ìËÙÑ¡Ôñ -?????????? **Kth Element** ?????????? O(n) ??ÁÙ????O(1) ??ÁÙ????????????? +Ò»°ãÓÃÓÚÇó½â **Kth Element** ÎÊÌ⣬¿ÉÒÔÔÚ O(n) ʱ¼ä¸´ÔÓ¶È£¬O(1) ¿Õ¼ä¸´ÔÓ¶ÈÍê³ÉÇó½â¹¤×÷¡£ -???????????????????????????????????ï…?????????????ÁÙ???? O(n2)?? +Óë¿ìËÙÅÅÐòÒ»Ñù£¬¿ìËÙÑ¡ÔñÒ»°ãÐèÒªÏÈ´òÂÒÊý×飬·ñÔò×Çé¿öÏÂʱ¼ä¸´ÔÓ¶ÈΪ O(n2)¡£ -### ?????? +### ¶ÑÅÅÐò -????????????? **TopK Elements** ???????????????§³? K ???????§Ö??????? TopK Elements??????????????????? Kth Element ??????????????????????? Kth Element????????????????? TopK Elements ?????????? Kth Element ??????????????ï…????§³????? Kth Element ???????? TopK Elements?????????????????????????????? Kth Element ?? TopK Elements ????????§á???????????? +¶ÑÅÅÐòÓÃÓÚÇó½â **TopK Elements** ÎÊÌ⣬ͨ¹ýά»¤Ò»¸ö´óСΪ K µÄ¶Ñ£¬¶ÑÖеÄÔªËØ¾ÍÊÇ TopK Elements¡£µ±È»ËüÒ²¿ÉÒÔÓÃÓÚÇó½â Kth Element ÎÊÌ⣬ÒòΪ×îºó³ö¶ÑµÄÄǸöÔªËØ¾ÍÊÇ Kth Element¡£¿ìËÙÑ¡ÔñÒ²¿ÉÒÔÇó½â TopK Elements ÎÊÌ⣬ÒòΪÕÒµ½ Kth Element Ö®ºó£¬ÔÙ±éÀúÒ»´ÎÊý×飬ËùÓÐСÓÚµÈÓÚ Kth Element µÄÔªËØ¶¼ÊÇ TopK Elements¡£¿ÉÒÔ¿´µ½£¬¿ìËÙÑ¡ÔñºÍ¶ÑÅÅÐò¶¼¿ÉÒÔÇó½â Kth Element ºÍ TopK Elements ÎÊÌ⣬ֻÊÇÓпÉÄÜÐèÒª¼ä½ÓÇó½â¡£ **Kth Element** [Leetocde : 215. Kth Largest Element in an Array (Medium)](https://leetcode.com/problems/kth-largest-element-in-an-array/description/) -????¦Ï???[Solution explained](https://leetcode.com/problems/kth-largest-element-in-an-array/discuss/60294/Solution-explained) +½âÌâ²Î¿¼£º[Solution explained](https://leetcode.com/problems/kth-largest-element-in-an-array/discuss/60294/Solution-explained) -- ??ÁÙ??? O(nlgn)????ÁÙ??? O(1) ???????? -- ??ÁÙ??? O(nlgk)????ÁÙ??? O(k) ?????????? -- ??ÁÙ??? O(n)????ÁÙ??? O(1) ????QuickSelect +- ʱ¼ä¸´ÔÓ¶È O(nlgn)£¬¿Õ¼ä¸´ÔÓ¶È O(1) ½â·¨£ºÅÅÐò +- ʱ¼ä¸´ÔÓ¶È O(nlgk)£¬¿Õ¼ä¸´ÔÓ¶È O(k) ½â·¨£º¶ÑÅÅÐò +- ʱ¼ä¸´ÔÓ¶È O(n)£¬¿Õ¼ä¸´ÔÓ¶È O(1) ½â·¨£ºQuickSelect **ToK Elements** -[???????????????? P336](#) +[³ÌÐòÔ±´úÂëÃæÊÔÖ¸ÄÏ P336](#) -### ????? +### ͰÅÅÐò -**?????????????? k ????** +**ÕÒ³ö³öÏÖÆµÂÊ×î¶àµÄ k ¸öÊý** [Leetcode : 347. Top K Frequent Elements (Medium)](https://leetcode.com/problems/top-k-frequent-elements/description/) -????? +ͰÅÅÐò ```java public List topKFrequent(int[] nums, int k) { @@ -619,29 +619,29 @@ public List topKFrequent(int[] nums, int k) { } ``` -## ???? +## ËÑË÷ -?????????????????????????????????????§µ?????????????????????? +Éî¶ÈÓÅÏÈËÑË÷ºÍ¹ã¶ÈÓÅÏÈËÑË÷¹ã·ºÔËÓÃÓÚÊ÷ºÍͼÖУ¬µ«ÊÇËüÃǵÄÓ¦ÓÃÔ¶Ô¶²»Ö¹Èç´Ë¡£ ### BFS ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/4ff355cf-9a7f-4468-af43-e5b02038facc.jpg) -??????????????????????§Ö????????????§Ò????????? 0 ???????????? 6??2??1 ?? 5 ????????? +¹ã¶ÈÓÅÏÈËÑË÷µÄËÑË÷¹ý³ÌÓеãÏñÒ»²ãÒ»²ãµØ½øÐбéÀú£º´Ó½Úµã 0 ³ö·¢£¬±éÀúµ½ 6¡¢2¡¢1 ºÍ 5 ÕâËĸöнڵ㡣 -?????? 6 ??????????????? 4 ???? 2 ?????????????????????? 1 ?????????????????????? 5 ???????????? 3 ?? 4 ??????????????????????4 ?? 3 ?? +¼ÌÐø´Ó 6 ¿ªÊ¼±éÀú£¬µÃµ½½Úµã 4 £»´Ó 2 ¿ªÊ¼±éÀú£¬Ã»ÓÐÏÂÒ»¸ö½Úµã£»´Ó 1 ¿ªÊ¼±éÀú£¬Ã»ÓÐÏÂÒ»¸ö½Úµã£»´Ó 5 ¿ªÊ¼±éÀú£¬µÃµ½ 3 ºÍ 4 ½Úµã¡£ÕâÒ»ÂÖ×ܹ²µÃµ½Á½¸öнڵ㣺4 ºÍ 3 ¡£ -???????????????????????????????? +·´¸´´Óнڵã³ö·¢½øÐÐÉÏÊöµÄ±éÀú²Ù×÷¡£ -??????????????????????????¡¤????????????? di ????? i ????????????¡¤????????????????????????????????? i ?????????? j???? di<=dj????????????????????????¡¤?? **?????** ????????¦Á????????????????????¡¤??????¡¤????????????????????????????????????????¡¤??????????¡¤???? +¿ÉÒÔ¿´µ½£¬Ã¿Ò»ÂÖ±éÀúµÄ½Úµã¶¼Óë¸ù½Úµã·¾¶³¤¶ÈÏàͬ¡£Éè di ±íʾµÚ i ¸ö½ÚµãÓë¸ù½ÚµãµÄ·¾¶³¤¶È£¬ÍƵ¼³öÒ»¸ö½áÂÛ£º¶ÔÓÚÏȱéÀúµÄ½Úµã i Óëºó±éÀúµÄ½Úµã j£¬ÓÐ di<=dj¡£ÀûÓÃÕâ¸ö½áÂÛ£¬¿ÉÒÔÇó½â×î¶Ì·¾¶ **×îÓŽâ** ÎÊÌ⣺µÚÒ»´Î±éÀúµ½Ä¿µÄ½Úµã£¬ÆäËù¾­¹ýµÄ·¾¶Îª×î¶Ì·¾¶£¬Èç¹û¼ÌÐø±éÀú£¬Ö®ºóÔÙ±éÀúµ½Ä¿µÄ½Úµã£¬Ëù¾­¹ýµÄ·¾¶¾Í²»ÊÇ×î¶Ì·¾¶¡£ -???????? BFS ???????????????? +ÔÚ³ÌÐòʵÏÖ BFS ʱÐèÒª¿¼ÂÇÒÔÏÂÎÊÌ⣺ -- ???§µ??????›¥??????????? -- ??????????????????????????????????????? +- ¶ÓÁУºÓÃÀ´´æ´¢Ã¿Ò»ÂÖ±éÀúµÄ½Úµã +- ±ê¼Ç£º¶ÔÓÚ±éÀú¹ýµÃ½Úµã£¬Ó¦¸Ã½«Ëü±ê¼Ç£¬·ÀÖ¹ÖØ¸´±éÀú£» -**???????????§Õ?????????????¡¤??????** +**¼ÆËãÔÚÍø¸ñÖдÓÔ­µãµ½Ìض¨µãµÄ×î¶Ì·¾¶³¤¶È** ```html [[1,1,0,1], @@ -685,17 +685,17 @@ private class Position { ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/f7f7e3e5-7dd4-4173-9999-576b9e2ac0a2.png) -?????????????????????????????????????????????????›¥??????????????????????????????????????????????????????????????????§Ò????????? 0 ?????????????????????? 6 ???????????? 6 ???§Ò???????????? 4??????????????????????????????????????????????????????? 0 ?????????????????? 0 ???§Ò???????????? 2??????????????Ò +¹ã¶ÈÓÅÏÈËÑË÷Ò»²ãÒ»²ã±éÀú£¬Ã¿Ò»²ã±éÀúµ½µÄËùÓÐнڵ㣬ҪÓöÓÁÐÏÈ´æ´¢ÆðÀ´ÒÔ±¸ÏÂÒ»²ã±éÀúµÄʱºòÔÙ±éÀú£»¶øÉî¶ÈÓÅÏÈËÑË÷ÔÚ±éÀúµ½Ò»¸öнڵãʱÁ¢Âí¶ÔÐÂ½Úµã½øÐбéÀú£º´Ó½Úµã 0 ³ö·¢¿ªÊ¼±éÀú£¬µÃµ½µ½Ð½ڵã 6 ʱ£¬Á¢Âí¶Ôнڵã 6 ½øÐбéÀú£¬µÃµ½Ð½ڵã 4£»Èç´Ë·´¸´ÒÔÕâÖÖ·½Ê½±éÀúнڵ㣬ֱµ½Ã»ÓÐнڵãÁË£¬´Ëʱ·µ»Ø¡£·µ»Øµ½¸ù½Úµã 0 µÄÇé¿öÊÇ£¬¼ÌÐø¶Ô¸ù½Úµã 0 ½øÐбéÀú£¬µÃµ½Ð½ڵã 2£¬È»ºó¼ÌÐøÒÔÉϲ½Öè¡£ -???????????????? DFS ?????????§Ò???????????????????????????????DFS ????????????? **?????** ???? +´ÓÒ»¸ö½Úµã³ö·¢£¬Ê¹Óà DFS ¶ÔÒ»¸öͼ½øÐбéÀúʱ£¬Äܹ»±éÀúµ½µÄ½Úµã¶¼ÊÇ´Ó³õʼ½Úµã¿É´ïµÄ£¬DFS ³£ÓÃÀ´Çó½âÕâÖÖ **¿É´ïÐÔ** ÎÊÌâ¡£ -???????? DFS ???????????????? +ÔÚ³ÌÐòʵÏÖ DFS ʱÐèÒª¿¼ÂÇÒÔÏÂÎÊÌ⣺ -- ???????????›Ì???????????????????????????????????????????????????? -- ?????? BFS ??????????????????????????§Ò??? +- Õ»£ºÓÃÕ»À´±£´æµ±Ç°½ÚµãÐÅÏ¢£¬µ±±éÀúнڵ㷵»ØÊ±Äܹ»¼ÌÐø±éÀúµ±Ç°½Úµã¡£Ò²¿ÉÒÔʹÓõݹéÕ»¡£ +- ±ê¼Ç£ººÍ BFS Ò»ÑùͬÑùÐèÒª¶ÔÒѾ­±éÀú¹ýµÃ½Úµã½øÐбê¼Ç¡£ -**??????????????** +**²éÕÒ×î´óµÄÁ¬Í¨Ãæ»ý** [Leetcode : 695. Max Area of Island (Easy)](https://leetcode.com/problems/max-area-of-island/description/) @@ -731,7 +731,7 @@ private int dfs(int[][] grid, int i, int j){ } ``` -**??????????** +**ͼµÄÁ¬Í¨·ÖÁ¿** [Leetcode : 547. Friend Circles (Medium)](https://leetcode.com/problems/friend-circles/description/) @@ -771,7 +771,7 @@ private void dfs(int[][] M, int i, boolean[] hasFind) { } ``` -**?????§Ö????????????** +**¾ØÕóÖеÄÁ¬Í¨ÇøÓòÊýÁ¿** [Leetcode : 200. Number of Islands (Medium)](https://leetcode.com/problems/number-of-islands/description/) @@ -812,7 +812,7 @@ private void dfs(char[][] grid, int i, int j) { } ``` -**??????????????§Õ????????¡¤??** +**Êä³ö¶þ²æÊ÷ÖÐËùÓдӸùµ½Ò¶×ӵķ¾¶** [Leetcode : 257. Binary Tree Paths (Easy)](https://leetcode.com/problems/binary-tree-paths/description/) @@ -847,7 +847,7 @@ private void dfs(TreeNode root, String prefix, List ret){ } ``` -**?????????** +**Ìî³ä·â±ÕÇøÓò** [Leetcode : 130. Surrounded Regions (Medium)](https://leetcode.com/problems/surrounded-regions/description/) @@ -865,9 +865,9 @@ X X X X X O X X ``` -????????????? 'X' ?? 'O' ???? 'X'?? +ÌâÄ¿ÃèÊö£ºÊ¹µÃ±» 'X' µÄ 'O' ת»»Îª 'X'¡£ -?????????????????????????????? +¿ÉÒÔÑ¡ÔñÏÈÌî³ä×îÍâ²à£¬Ê£ÏµľÍÊÇÀï²àÁË¡£ ```java private int[][] direction = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}}; @@ -902,7 +902,7 @@ private void dfs(char[][] board, int r, int c) { } ``` -**????????????????????** +**´ÓÁ½¸ö·½Ïò¶¼Äܵ½´ïµÄÇøÓò** [Leetcode : 417. Pacific Atlantic Water Flow (Medium)](https://leetcode.com/problems/pacific-atlantic-water-flow/description/) @@ -921,7 +921,7 @@ Return: [[0, 4], [1, 3], [1, 4], [2, 2], [3, 0], [3, 1], [4, 0]] (positions with parentheses in above matrix). ``` -???????????????????????????¡À?????????????????????¦²????¦È??????????????????????????????????????????????§Ö???? +ÌâÄ¿ÃèÊö£º×ó±ßºÍÉϱßÊÇ̫ƽÑó£¬ÓұߺÍϱßÊÇ´óÎ÷Ñó£¬ÄÚ²¿µÄÊý×Ö´ú±íº£°Î£¬º£°Î¸ßµÄµØ·½µÄË®Äܹ»Á÷µ½µÍµÄµØ·½£¬Çó½âË®Äܹ»Á÷µ½Ì«Æ½ÑóºÍ´óÎ÷ÑóµÄËùÓеط½¡£ ```java private int m, n; @@ -967,21 +967,21 @@ private void dfs(int r, int c, boolean[][] canReach) { } ``` -**N ???** +**N »Êºó** [Leetcode : 51. N-Queens (Hard)](https://leetcode.com/problems/n-queens/description/) ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/1f080e53-4758-406c-bb5f-dbedf89b63ce.jpg) -??????????? n\*n ??????§Ñ?? n ?????????????????????§µ????§µ??????????????????§Ö? n ???? +ÌâÄ¿ÃèÊö£ºÔÚ n\*n µÄ¾ØÕóÖаڷŠn ¸ö»Êºó£¬²¢ÇÒÿ¸ö»Êºó²»ÄÜÔÚͬһÐУ¬Í¬Ò»ÁУ¬Í¬Ò»¶Ô½ÇÏßÉÏ£¬ÒªÇó½âËùÓÐµÄ n »Êºó½â¡£ -?????§Ö?????????????§Ö????????????????????????????????????????????????????????????????????????§Ò?????î”45 ????????????? 135 ???????????î• +Ò»ÐÐÒ»Ðеذڷţ¬ÔÚÈ·¶¨Ò»ÐÐÖеÄÄǸö»ÊºóÓ¦¸Ã°ÚÔÚÄÄÒ»ÁÐʱ£¬ÐèÒªÓÃÈý¸ö±ê¼ÇÊý×éÀ´È·¶¨Ä³Ò»ÁÐÊÇ·ñºÏ·¨£¬ÕâÈý¸ö±ê¼ÇÊý×é·Ö±ðΪ£ºÁбê¼ÇÊý×é¡¢45 ¶È¶Ô½ÇÏß±ê¼ÇÊý×éºÍ 135 ¶È¶Ô½ÇÏß±ê¼ÇÊý×é¡£ -45 ????????????????? 2\*n - 1??????????????? (r,c) ??¦Ë????????????¡À?? r + c?? +45 ¶È¶Ô½ÇÏß±ê¼ÇÊý×éµÄά¶ÈΪ 2\*n - 1£¬Í¨¹ýÏÂͼ¿ÉÒÔÃ÷È· (r,c) µÄλÖÃËùÔÚµÄÊý×éϱêΪ r + c¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/85583359-1b45-45f2-9811-4f7bb9a64db7.jpg) -135 ??????????????????? 2\*n - 1??(r,c) ??¦Ë????????????¡À?? n - 1 - (r - c)?? +135 ¶È¶Ô½ÇÏß±ê¼ÇÊý×éµÄά¶ÈÒ²ÊÇ 2\*n - 1£¬(r,c) µÄλÖÃËùÔÚµÄÊý×éϱêΪ n - 1 - (r - c)¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/9e80f75a-b12b-4344-80c8-1f9ccc2d5246.jpg) @@ -1032,11 +1032,11 @@ private void backstracking(int row) { ### Backtracking -?????? DFS ?????????????????????????????????????? **???????** ?????????? { 'a','b','c' } ??????????????????????????????§Ö??????????? +»ØËÝÊÇ DFS µÄÒ»ÖÖ£¬Ëü²»ÊÇÓÃÔÚ±éÀúͼµÄ½ÚµãÉÏ£¬¶øÊÇÓÃÓÚÇó½â **ÅÅÁÐ×éºÏ** ÎÊÌ⣬ÀýÈçÓÐ { 'a','b','c' } Èý¸ö×Ö·û£¬Çó½âËùÓÐÓÉÕâÈý¸ö×Ö·ûÅÅÁеõ½µÄ×Ö·û´®¡£ -???????????????????????????§Ò????????????????????????????????????????????????????????????????????????????????????????????????????????????????ú“??????????????????¦Ä??????????????????????????§Ó?????????????????????????????????????????????????????????§Ö????? +ÔÚ³ÌÐòʵÏÖʱ£¬»ØËÝÐèҪעÒâ¶ÔÔªËØ½øÐбê¼ÇµÄÎÊÌ⡣ʹÓõݹéʵÏֵĻØËÝ£¬ÔÚ·ÃÎÊÒ»¸öÐÂÔªËØ½øÈëеĵݹéµ÷Ó㬴ËʱÐèÒª½«ÐÂÔªËØ±ê¼ÇΪÒѾ­·ÃÎÊ£¬ÕâÑù²ÅÄÜÔÚ¼ÌÐøµÝ¹éµ÷ÓÃʱ²»ÓÃÖØ¸´·ÃÎʸÃÔªËØ£»µ«ÊÇÔڵݹ鷵»ØÊ±£¬ÐèÒª½«¸ÃÔªËØ±ê¼ÇΪδ·ÃÎÊ£¬ÒòΪֻÐèÒª±£Ö¤ÔÚÒ»¸öµÝ¹éÁ´Öв»Í¬Ê±·ÃÎÊÒ»¸öÔªËØ£¬¶øÔÚ²»Í¬µÄµÝ¹éÁ´ÊÇ¿ÉÒÔ·ÃÎÊÒѾ­·ÃÎʹýµ«ÊDz»ÔÚµ±Ç°µÝ¹éÁ´ÖеÄÔªËØ¡£ -**??????????** +**Êý×Ö¼üÅÌ×éºÏ** [Leetcode : 17. Letter Combinations of a Phone Number (Medium)](https://leetcode.com/problems/letter-combinations-of-a-phone-number/description/) @@ -1070,7 +1070,7 @@ private void combination(String prefix, String digits, int offset, List } ``` -**???????????????** +**ÔÚ¾ØÕóÖÐѰÕÒ×Ö·û´®** [Leetcode : 79. Word Search (Medium)](https://leetcode.com/problems/word-search/description/) @@ -1125,7 +1125,7 @@ private boolean dfs(char[][] board, String word, int start, int r, int c) { } ``` -**IP ???????** +**IP µØÖ·»®·Ö** [Leetcode : 93. Restore IP Addresses(Medium)](https://leetcode.com/problems/restore-ip-addresses/description/) @@ -1160,11 +1160,11 @@ private void doRestore(int k, String path, String s) { } ``` -**????** +**ÅÅÁÐ** [Leetcode : 46. Permutations (Medium)](https://leetcode.com/problems/permutations/description/) -??????????????????????????§³? +ÌâÄ¿ÃèÊö£ºÕÒ³öÒ»×éÊýµÄËùÓÐÅÅÁС£ ```java public List> permute(int[] nums) { @@ -1192,7 +1192,7 @@ private void backtracking(List permuteList, boolean[] visited, int[] nu } ``` -**?????????????** +**²»ÄÜÖØ¸´µÄÅÅÁÐ** [Leetcode : 47. Permutations II (Medium)](https://leetcode.com/problems/permutations-ii/description/) @@ -1201,7 +1201,7 @@ private void backtracking(List permuteList, boolean[] visited, int[] nu [[1,1,2], [1,2,1], [2,1,1]] ``` -?????????? Permutations ????????????????????????????????§Ø?????????????????????????????????????????¦Ä????????????????????? +ÔÚʵÏÖÉÏ£¬ºÍ Permutations ²»Í¬µÄÊÇÒªÏÈÅÅÐò£¬È»ºóÔÚÌí¼ÓÒ»¸öÔªËØÊ±£¬ÅжÏÕâ¸öÔªËØÊÇ·ñµÈÓÚǰһ¸öÔªËØ£¬Èç¹ûµÈÓÚ£¬²¢ÇÒǰһ¸öÔªËØ»¹Î´·ÃÎÊ£¬ÄÇô¾ÍÌø¹ýÕâ¸öÔªËØ¡£ ```java public List> permuteUnique(int[] nums) { @@ -1231,11 +1231,11 @@ private void backtracking(List permuteList, boolean[] visited, int[] nu } ``` -**???** +**×éºÏ** [Leetcode : 77. Combinations (Medium)](https://leetcode.com/problems/combinations/description/) -?????????????? 1 \~ n ????? k ?????????§á???????? +ÌâÄ¿ÃèÊö£ºÕÒ³ö´Ó 1 \~ n ÖÐÈ¡³ö k ¸öÔªËØµÄËùÓпÉÄܵÄ×éºÏ¡£ ```java public List> combine(int n, int k) { @@ -1247,20 +1247,20 @@ public List> combine(int n, int k) { private void backtracking(int start, int n, int k, List combineList, List> ret){ if(k == 0){ - ret.add(new ArrayList(combineList)); // ??????????????? List + ret.add(new ArrayList(combineList)); // ÕâÀïÒªÖØÐ¹¹ÔìÒ»¸ö List return; } - for(int i = start; i <= n - k + 1; i++){ // ??? + for(int i = start; i <= n - k + 1; i++){ // ¼ôÖ¦ - combineList.add(i); // ?? i ????????? + combineList.add(i); // °Ñ i ±ê¼ÇΪÒÑ·ÃÎÊ backtracking(i + 1, n, k - 1, combineList, ret); - combineList.remove(combineList.size() - 1); // ?? i ????¦Ä???? + combineList.remove(combineList.size() - 1); // °Ñ i ±ê¼ÇΪδ·ÃÎÊ } } ``` -**??????** +**×éºÏÇóºÍ** [Leetcode : 39. Combination Sum (Medium)](https://leetcode.com/problems/combination-sum/description/) @@ -1295,7 +1295,7 @@ A solution set is: } ``` -**???????????????** +**²»ÄÜÖØ¸´µÄ×éºÏÇóºÍ** [Leetcode : 40. Combination Sum II (Medium)](https://leetcode.com/problems/combination-sum-ii/description/) @@ -1339,11 +1339,11 @@ private void doCombination(int[] candidates, int target, int start, List> ret; @@ -1366,13 +1366,13 @@ private void backtracking(int startIdx, int size, int[] nums) { for (int i = startIdx; i < nums.length; i++) { subsetList.add(nums[i]); - backtracking(i + 1, size, nums); // startIdx ????????????? subset ?§Ö????????????? + backtracking(i + 1, size, nums); // startIdx ÉèΪÏÂÒ»¸öÔªËØ£¬Ê¹ subset ÖеÄÔªËØ¶¼µÝÔöÅÅÐò subsetList.remove(subsetList.size() - 1); } } ``` -**????????????** +**²»ÄÜÖØ¸´µÄ×Ó¼¯** [Leetcode : 90. Subsets II (Medium)](https://leetcode.com/problems/subsets-ii/description/) @@ -1423,7 +1423,7 @@ private void backtracking(int startIdx, int size, int[] nums) { } ``` -**????????????????????????** +**·Ö¸î×Ö·û´®Ê¹µÃÿ²¿·Ö¶¼ÊÇ»ØÎÄÊý** [Leetcode : 131. Palindrome Partitioning (Medium)](https://leetcode.com/problems/palindrome-partitioning/description/) @@ -1458,7 +1458,7 @@ private boolean isPalindrome(String s, int begin, int end) { } ``` -**????** +**Êý¶À** [Leetcode : 37. Sudoku Solver (Hard)](https://leetcode.com/problems/sudoku-solver/description/) @@ -1514,9 +1514,9 @@ private int cubeNum(int i, int j) { } ``` -## ???? +## ·ÖÖÎ -**????????????** +**¸ø±í´ïʽ¼ÓÀ¨ºÅ** [Leetcode : 241. Different Ways to Add Parentheses (Medium)](https://leetcode.com/problems/different-ways-to-add-parentheses/description/) @@ -1554,21 +1554,21 @@ public List diffWaysToCompute(String input) { } ``` -## ??? +## µÝ¹é -????????????§³??????????? +½«Ô­Ê¼ÎÊÌâ·Ö½â³É½ÏСµÄÎÊÌâÀ´Çó½â¡£ -## ????œý +## ¶¯Ì¬¹æ»® -?????????????????????????????????????????????????????????¦±? +½«Ô­ÎÊÌâ²ð½â³É¶à¸ö×ÓÎÊÌ⣬ÔÚÇó½â×ÓÎÊÌâµÄʱºò±£´æ×ÓÎÊÌâµÄ½â£¬Ê¹µÃ×ÓÎÊÌâÖ»Çó½âÒ»´Î¡£ -### ??????? +### ·Ö¸îÕûÊý -**??????????????** +**·Ö¸îÕûÊýµÄ×î´ó³Ë»ý** [Leetcode : 343. Integer Break (Medim)](https://leetcode.com/problems/integer-break/description/) -?????????For example, given n = 2, return 1 (2 = 1 + 1); given n = 10, return 36 (10 = 3 + 3 + 4). +ÌâÄ¿ÃèÊö£ºFor example, given n = 2, return 1 (2 = 1 + 1); given n = 10, return 36 (10 = 3 + 3 + 4). ```java public int integerBreak(int n) { @@ -1583,15 +1583,15 @@ public int integerBreak(int n) { } ``` -**????????????????** +**°´Æ½·½ÊýÀ´·Ö¸îÕûÊý** [Leetcode : 279. Perfect Squares(Medium)](https://leetcode.com/problems/perfect-squares/description/) -?????????For example, given n = 12, return 3 because 12 = 4 + 4 + 4; given n = 13, return 2 because 13 = 4 + 9. +ÌâÄ¿ÃèÊö£ºFor example, given n = 12, return 3 because 12 = 4 + 4 + 4; given n = 13, return 2 because 13 = 4 + 9. ```java public int numSquares(int n) { - List squares = new ArrayList<>(); // ?›¥§³?? n ??????? + List squares = new ArrayList<>(); // ´æ´¢Ð¡ÓÚ n µÄƽ·½Êý int diff = 3; while(square <= n) { squares.add(square); @@ -1611,11 +1611,11 @@ public int numSquares(int n) { } ``` -**???????????????????** +**·Ö¸îÕûÊý¹¹³É×Öĸ×Ö·û´®** [Leetcode : 91. Decode Ways (Medium)](https://leetcode.com/problems/decode-ways/description/) -?????????Given encoded message "12", it could be decoded as "AB" (1 2) or "L" (12). +ÌâÄ¿ÃèÊö£ºGiven encoded message "12", it could be decoded as "AB" (1 2) or "L" (12). ```java public int numDecodings(String s) { @@ -1635,13 +1635,13 @@ public int numDecodings(String s) { } ``` -### ????¡¤?? +### ¾ØÕó·¾¶ -**???????¡¤????** +**¾ØÕóµÄ×Ü·¾¶Êý** [Leetcode : 62. Unique Paths (Medium)](https://leetcode.com/problems/unique-paths/description/) -????????????????????????????¡¤???????????????????????????? +ÌâÄ¿ÃèÊö£ºÍ³¼Æ´Ó¾ØÕó×óÉϽǵ½ÓÒϽǵÄ·¾¶×ÜÊý£¬Ã¿´ÎÖ»ÄÜÏò×óºÍÏòÏÂÒÆ¶¯¡£ ```java public int uniquePaths(int m, int n) { @@ -1656,11 +1656,11 @@ public int uniquePaths(int m, int n) { } ``` -**???????§³¡¤????** +**¾ØÕóµÄ×îС·¾¶ºÍ** [Leetcode : 64. Minimum Path Sum (Medium)](https://leetcode.com/problems/minimum-path-sum/description/) -??????????????????????????????§³¡¤????????????????????????? +ÌâÄ¿ÃèÊö£ºÇó´Ó¾ØÕóµÄ×óÉϽǵ½ÓÒϽǵÄ×îС·¾¶ºÍ£¬Ã¿´ÎÖ»ÄÜÏò×óºÍÏòÏÂÒÆ¶¯¡£ ```java public int minPathSum(int[][] grid) { @@ -1678,29 +1678,29 @@ public int minPathSum(int[][] grid) { } ``` -### ?????????? +### ì³²¨ÄÇÆõÊýÁÐ -????????????????? 4 ?????????????????? N ???????????????????????????ÁÙ?????§³? O(lgN)?? +³ÌÐòÔ±´úÂëÃæÊÔÖ¸ÄÏµÚ 4 Õµķ½·¨½«Çóì³²¨ÄÇÆõµÚ N ÏîÎÊÌâת»»Îª¾ØÕó³Ë·¨ÔËË㣬´Ó¶ø½«Ê±¼ä¸´ÔÓ¶ÈËõСΪ O(lgN)¡£ -**?????** +**ÅÀÂ¥ÌÝ** [Leetcode : 70. Climbing Stairs (Easy)](https://leetcode.com/problems/climbing-stairs/description/) -??????????? N ????????¦Ï???????????????????§Ø???????????????? +ÌâÄ¿ÃèÊö£ºÓÐ N ½×Â¥ÌÝ£¬Ã¿´Î¿ÉÒÔÉÏÒ»½×»òÕßÁ½½×£¬ÇóÓжàÉÙÖÖÉÏÂ¥Ìݵķ½·¨¡£ -??????????? dp ?›¥?????????????????????????????¡À?? 1 ???????dp[i] ???????? i ???????????????? i ?????????? i-1 ?? i-2 ????????????????????? i ????????????????? i-1 ??? i-2 ??????????????? +¶¨ÒåÒ»¸öÊý×é dp ´æ´¢ÉÏÂ¥Ìݵķ½·¨Êý£¨ÎªÁË·½±ãÌÖÂÛ£¬Êý×éϱê´Ó 1 ¿ªÊ¼£©£¬dp[i] ±íʾ×ßµ½µÚ i ¸öÂ¥Ìݵķ½·¨ÊýÄ¿¡£µÚ i ¸öÂ¥ÌÝ¿ÉÒÔ´ÓµÚ i-1 ºÍ i-2 ¸öÂ¥ÌÝÔÙ×ßÒ»²½µ½´ï£¬×ßµ½µÚ i ¸öÂ¥Ìݵķ½·¨ÊýΪ×ßµ½µÚ i-1 ºÍµÚ i-2 ¸öÂ¥Ìݵķ½·¨ÊýÖ®ºÍ¡£
dp[i] = dp[i-1] + dp[i-2]
-dp[N] ??????? +dp[N] ¼´ÎªËùÇó¡£ -????? dp[i] ??? dp[i - 1] ?? dp[i - 2] ?§Û??????????????????????›¥ dp[i - 1] ?? dp[i - 2] ????????????? O(n) ??ÁÙ??????? O(1) ?????? +¿¼Âǵ½ dp[i] Ö»Óë dp[i - 1] ºÍ dp[i - 2] Óйأ¬Òò´Ë¿ÉÒÔÖ»ÓÃÁ½¸ö±äÁ¿À´´æ´¢ dp[i - 1] ºÍ dp[i - 2] ¼´¿É£¬Ê¹µÃÔ­À´µÄ O(n) ¿Õ¼ä¸´ÔÓ¶ÈÓÅ»¯Îª O(1) ¸´ÔÓ¶È¡£ ```java public int climbStairs(int n) { if(n == 1) return 1; if(n == 2) return 2; - // ???????????????? + // ǰһ¸öÂ¥ÌÝ¡¢ºóÒ»¸öÂ¥ÌÝ int pre1 = 2, pre2 = 1; for(int i = 2; i < n; i++){ int cur = pre1 + pre2; @@ -1711,27 +1711,27 @@ public int climbStairs(int n) { } ``` -**??????** +**ĸţÉú²ú** -[????????????????-P181](#) +[³ÌÐòÔ±´úÂëÃæÊÔÖ¸ÄÏ-P181](#) -?????????????????§Ô????????????? 1 ?§³?????????????????????????? 1 ?§³????????????????????§³??????§³?? 3 ???????????????§³???????????? N???? N ???????????? +ÌâÄ¿ÃèÊö£º¼ÙÉèÅ©³¡ÖгÉÊìµÄĸţÿÄê¶¼»áÉú 1 ͷСĸţ£¬²¢ÇÒÓÀÔ¶²»»áËÀ¡£µÚÒ»ÄêÓÐ 1 ֻСĸţ£¬´ÓµÚ¶þÄ꿪ʼ£¬Ä¸Å£¿ªÊ¼ÉúСĸţ¡£Ã¿Ö»Ð¡Ä¸Å£ 3 ÄêÖ®ºó³ÉÊìÓÖ¿ÉÒÔÉúСĸţ¡£¸ø¶¨ÕûÊý N£¬Çó N ÄêºóÅ£µÄÊýÁ¿¡£ -?? i ???????????????? +µÚ i Äê³ÉÊìµÄÅ£µÄÊýÁ¿Îª£º
dp[i] = dp[i-1] + dp[i-3]
-**???????** +**Ç¿µÁÇÀ½Ù** [Leetcode : 198. House Robber (Easy)](https://leetcode.com/problems/house-robber/description/) -????????????????????????????????????????????????????? +ÌâÄ¿ÃèÊö£ºÇÀ½ÙÒ»ÅÅס»§£¬µ«ÊDz»ÄÜÇÀÁÚ½üµÄס»§£¬Çó×î´óÇÀ½ÙÁ¿¡£ -???? dp ?????????›¥???????????????? dp[i] ????????? i ??????????????????????????????????????????????????? i ??????????????? i - 2 ?? i - 3 ??????????? +¶¨Òå dp Êý×éÓÃÀ´´æ´¢×î´óµÄÇÀ½ÙÁ¿£¬ÆäÖÐ dp[i] ±íʾÇÀµ½µÚ i ¸öס»§Ê±µÄ×î´óÇÀ½ÙÁ¿¡£ÓÉÓÚ²»ÄÜÇÀ½ÙÁÚ½üס»§£¬Òò´ËÈç¹ûÇÀ½ÙÁËµÚ i ¸öס»§ÄÇôֻÄÜÇÀ½Ù i - 2 ºÍ i - 3 µÄס»§£¬ËùÒÔ ![](http://latex.codecogs.com/gif.latex?\\\\dp[i]=max(dp[i-2],dp[i-3])+nums[i]) -O(n) ??ÁÙ??????????? +O(n) ¿Õ¼ä¸´ÔÓ¶ÈʵÏÖ·½·¨£º ```java public int rob(int[] nums) { @@ -1750,7 +1750,7 @@ public int rob(int[] nums) { } ``` -O(1) ??ÁÙ??????????? +O(1) ¿Õ¼ä¸´ÔÓ¶ÈʵÏÖ·½·¨£º ```java public int rob(int[] nums) { @@ -1769,7 +1769,7 @@ public int rob(int[] nums) { } ``` -**???????¦Í???????** +**Ç¿µÁÔÚ»·ÐνÖÇøÇÀ½Ù** [Leetcode : 213. House Robber II (Medium)](https://leetcode.com/problems/house-robber-ii/description/) @@ -1797,39 +1797,39 @@ private int rob(int[] nums, int s, int e) { ``` -**???????** +**Ðżþ´íÅÅ** -??????????? N ?? ?? ?? ?????????????????????????????? +ÌâÄ¿ÃèÊö£ºÓÐ N ¸ö ÐÅ ºÍ Ðŷ⣬ËüÃDZ»´òÂÒ£¬Çó´íÎó×°Ðŵķ½Ê½ÊýÁ¿¡£ -??????????? dp ?›¥???????????dp[i] ???? i ???????????????????????? i ????????? j ????????—¨???? j ????????? k ????????µµ???? i ?? k ?????????????????? +¶¨ÒåÒ»¸öÊý×é dp ´æ´¢´íÎó·½Ê½ÊýÁ¿£¬dp[i] ±íʾǰ i ¸öÐźÍÐÅ·âµÄ´íÎó·½Ê½ÊýÁ¿¡£¼ÙÉèµÚ i ¸öÐÅ×°µ½µÚ j ¸öÐÅ·âÀïÃæ£¬¶øµÚ j ¸öÐÅ×°µ½µÚ k ¸öÐÅ·âÀïÃæ¡£¸ù¾Ý i ºÍ k ÊÇ·ñÏàµÈ£¬ÓÐÁ½ÖÖÇé¿ö£º -?? i==k?????? i ?? k ???????????????????????¦Ë??????????? i-2 ?????? dp[i-2] ????????????????? j ?? i-1 ???????????? (i-1)\*dp[i-2] ???????????? +¢Ù i==k£¬½»»» i ºÍ k µÄÐźó£¬ËüÃǵÄÐźÍÐÅ·âÔÚÕýÈ·µÄλÖ㬵«ÊÇÆäÓà i-2 ·âÐÅÓÐ dp[i-2] ÖÖ´íÎó×°Ðŵķ½Ê½¡£ÓÉÓÚ j ÓÐ i-1 ÖÖȡֵ£¬Òò´Ë¹²ÓÐ (i-1)\*dp[i-2] ÖÖ´íÎó×°ÐÅ·½Ê½¡£ -?? i != k?????? i ?? j ?????? i ???????????????¦Ë??????? i-1 ?????? dp[i-1] ???????????????? j ?? i-1 ???????????? (n-1)\*dp[i-1] ???????????? +¢Ú i != k£¬½»»» i ºÍ j µÄÐÅºó£¬µÚ i ¸öÐźÍÐÅ·âÔÚÕýÈ·µÄλÖã¬ÆäÓà i-1 ·âÐÅÓÐ dp[i-1] ÖÖ´íÎó×°ÐÅ·½Ê½¡£ÓÉÓÚ j ÓÐ i-1 ÖÖȡֵ£¬Òò´Ë¹²ÓÐ (n-1)\*dp[i-1] ÖÖ´íÎó×°ÐÅ·½Ê½¡£ -??????????????????????????????? +×ÛÉÏËùÊö£¬´íÎó×°ÐÅÊýÁ¿·½Ê½ÊýÁ¿Îª£º
dp[i] = (i-1) \* dp[i-2] + (i-1) \* dp[i-1]
-dp[N] ??????? +dp[N] ¼´ÎªËùÇó¡£ -????????????????dp[i] ??? dp[i-1] ?? dp[i-2] ?§Û????????????????????????›¥ dp[i-1] ?? dp[i-2]?? +ºÍÉÏÂ¥ÌÝÎÊÌâÒ»Ñù£¬dp[i] Ö»Óë dp[i-1] ºÍ dp[i-2] Óйأ¬Òò´ËÒ²¿ÉÒÔÖ»ÓÃÁ½¸ö±äÁ¿À´´æ´¢ dp[i-1] ºÍ dp[i-2]¡£ -### ???????????? +### ×µÝÔö×ÓÐòÁÐ -?????????? {S1, S2,...,Sn} ????????????????????? {Si1, Si2,..., Sim}?????? i1??i2 ... im ??????????????????§Ú??????????????????§Ö???????????????????§Ö????**??????**?? +ÒÑÖªÒ»¸öÐòÁÐ {S1, S2,...,Sn} £¬È¡³öÈô¸ÉÊý×é³ÉеÄÐòÁÐ {Si1, Si2,..., Sim}£¬ÆäÖÐ i1¡¢i2 ... im ±£³ÖµÝÔö£¬¼´ÐÂÐòÁÐÖи÷¸öÊýÈÔÈ»±£³ÖÔ­ÊýÁÐÖеÄÏȺó˳Ðò£¬³ÆÐÂÐòÁÐΪԭÐòÁеÄÒ»¸ö**×ÓÐòÁÐ**¡£ -????????????§µ????¡À? ix > iy ???Six > Siy???????????????§Ö????**??????????**?? +Èç¹ûÔÚ×ÓÐòÁÐÖУ¬µ±Ï±ê ix > iy ʱ£¬Six > Siy£¬³Æ×ÓÐòÁÐΪԭÐòÁеÄÒ»¸ö**µÝÔö×ÓÐòÁÐ**¡£ -??????????? dp ?›¥???????????§Ö?????dp[n] ????? Sn ??¦Â?????§Ö????????????§Ô????????????????????? {Si1, Si2,...,Sim}????? im < n ???? Sim < Sn ????? {Si1, Si2,..., Sim, Sn} ?????????????§µ??????????§Ö???????? 1??????????????????????????§µ?????????????????????§à??????????????????????????????? Sn ????????? Sn ???¦Â?????????????§³???? dp[n] = max{ dp[i]+1 | Si < Sn && i < n} ?? +¶¨ÒåÒ»¸öÊý×é dp ´æ´¢×µÝÔö×ÓÐòÁеij¤¶È£¬dp[n] ±íʾÒÔ Sn ½áβµÄÐòÁеÄ×µÝÔö×ÓÐòÁг¤¶È¡£¶ÔÓÚÒ»¸öµÝÔö×ÓÐòÁÐ {Si1, Si2,...,Sim}£¬Èç¹û im < n ²¢ÇÒ Sim < Sn £¬´Ëʱ {Si1, Si2,..., Sim, Sn} Ϊһ¸öµÝÔö×ÓÐòÁУ¬µÝÔö×ÓÐòÁеij¤¶ÈÔö¼Ó 1¡£Âú×ãÉÏÊöÌõ¼þµÄµÝÔö×ÓÐòÁÐÖУ¬³¤¶È×µÄÄǸöµÝÔö×ÓÐòÁоÍÊÇÒªÕҵģ¬ÔÚ³¤¶È×µÄµÝÔö×ÓÐòÁÐÉϼÓÉÏ Sn ¾Í¹¹³ÉÁËÒÔ Sn Ϊ½áβµÄ×µÝÔö×ÓÐòÁС£Òò´Ë dp[n] = max{ dp[i]+1 | Si < Sn && i < n} ¡£ -??????? dp[n] ????????????????????????????????§µ???? {Sn} ???????????????§µ?????????????????????????? dp[n] ??§³? 1?????? +ÒòΪÔÚÇó dp[n] ʱ¿ÉÄÜÎÞ·¨ÕÒµ½Ò»¸öÂú×ãÌõ¼þµÄµÝÔö×ÓÐòÁУ¬´Ëʱ {Sn} ¾Í¹¹³ÉÁ˵ÝÔö×ÓÐòÁУ¬Òò´ËÐèÒª¶ÔÇ°ÃæµÄÇó½â·½³Ì×öÐ޸ģ¬Áî dp[n] ×îСΪ 1£¬¼´£º ![](http://latex.codecogs.com/gif.latex?\\\\dp[n]=max\{1,dp[i]+1|S_iN ???¦Â????? dp[N] ???????§Ö????????????§Ö???????????? dp ?????????????????????????? max{ dp[i] | 1 <= i <= N} ??????? +¶ÔÓÚÒ»¸ö³¤¶ÈΪ N µÄÐòÁУ¬××ÓÐòÁв¢²»Ò»¶¨»áÒÔ SN Ϊ½á⣬Òò´Ë dp[N] ²»ÊÇÐòÁеÄ×µÝÔö×ÓÐòÁеij¤¶È£¬ÐèÒª±éÀú dp Êý×éÕÒ³ö×î´óÖµ²ÅÊÇËùÒªµÄ½á¹û£¬¼´ max{ dp[i] | 1 <= i <= N} ¼´ÎªËùÇó¡£ -**????????????** +**×µÝÔö×ÓÐòÁÐ** [Leetcode : 300. Longest Increasing Subsequence (Medium)](https://leetcode.com/problems/longest-increasing-subsequence/description/) @@ -1852,7 +1852,7 @@ public int lengthOfLIS(int[] nums) { } ``` -?????????ÁÙ???? O(n2) ????????????????????ÁÙ??????? O(nlogn)????????? tails ???ï…???? tails[i] ?›¥????? i + 1 ?????????????§Ö?????????????????????? [4,5,6,3]???? +ÒÔÉϽⷨµÄʱ¼ä¸´ÔÓ¶ÈΪ O(n2) £¬¿ÉÒÔʹÓöþ·Ö²éÕÒʹµÃʱ¼ä¸´ÔӶȽµµÍΪ O(nlogn)¡£¶¨ÒåÒ»¸ö tails Êý×飬ÆäÖÐ tails[i] ´æ´¢³¤¶ÈΪ i + 1 µÄ×µÝÔö×ÓÐòÁеÄ×îºóÒ»¸öÔªËØ£¬ÀýÈç¶ÔÓÚÊý×é [4,5,6,3]£¬ÓÐ ```html len = 1 : [4], [5], [6], [3] => tails[0] = 3 @@ -1860,9 +1860,9 @@ len = 2 : [4, 5], [5, 6] => tails[1] = 5 len = 3 : [4, 5, 6] => tails[2] = 6 ``` -?????????? x??????????? tails ???????§Ö??????????????? tails ???—±??? tails[i-1] < x <= tails[i]????????? tails[i] = x ?? +¶ÔÓÚÒ»¸öÔªËØ x£¬Èç¹ûËü´óÓÚ tails Êý×éËùÓеÄÖµ£¬ÄÇô°ÑËüÌí¼Óµ½ tails ºóÃæ£»Èç¹û tails[i-1] < x <= tails[i]£¬ÄÇô¸üРtails[i] = x ¡£ -??????? tails ???÷g?????????????? Si ¦Ë?? tails ?????¦Ë?????????????????? +¿ÉÒÔ¿´³ö tails Êý×é±£³ÖÓÐÐò£¬Òò´ËÔÚ²éÕÒ Si λÓÚ tails Êý×éµÄλÖÃʱ¾Í¿ÉÒÔʹÓöþ·Ö²éÕÒ¡£ ```java public int lengthOfLIS(int[] nums) { @@ -1888,13 +1888,13 @@ private int binarySearch(int[] nums, int sIdx, int eIdx, int key){ } ``` -**???????????** +**×°Ú¶¯×ÓÐòÁÐ** [Leetcode : 376. Wiggle Subsequence (Medium)](https://leetcode.com/problems/wiggle-subsequence/description/) -?????? O(n) ??ÁÙ?????? +ÒªÇó£ºÊ¹Óà O(n) ʱ¼ä¸´ÔÓ¶ÈÇó½â¡£ -????????? up ?? down?? +ʹÓÃÁ½¸ö״̬ up ºÍ down¡£ ```java public int wiggleMaxLength(int[] nums) { @@ -1909,17 +1909,17 @@ public int wiggleMaxLength(int[] nums) { } ``` -### ??????????? +### ×¹«¹²×ÓϵÁÐ -?????????????? S1 ?? S2?????????????????????§³? +¶ÔÓÚÁ½¸ö×ÓÐòÁÐ S1 ºÍ S2£¬ÕÒ³öËüÃÇ×µÄ¹«¹²×ÓÐòÁС£ -?????????????? dp ?????›¥???????????§Ö????????? dp[i][j] ??? S1 ??? i ??????? S2 ??? j ????????????????§Ö????????? S1i ?? S2j ???????????????????? +¶¨ÒåÒ»¸ö¶þάÊý×é dp ÓÃÀ´´æ´¢×¹«¹²×ÓÐòÁеij¤¶È£¬ÆäÖÐ dp[i][j] ±íʾ S1 µÄǰ i ¸ö×Ö·ûÓë S2 µÄǰ j ¸ö×Ö·û×¹«¹²×ÓÐòÁеij¤¶È¡£¿¼ÂÇ S1i Óë S2j ÖµÊÇ·ñÏàµÈ£¬·ÖΪÁ½ÖÖÇé¿ö£º -?? ?? S1i==S2j ???????????? S1 ??? i-1 ??????? S2 ??? j-1 ????????????????§Ö??????????? S1i ?????????????????§Ô???? 1 ???? dp[i][j] = dp[i-1][j-1] + 1?? +¢Ù µ± S1i==S2j ʱ£¬ÄÇô¾ÍÄÜÔÚ S1 µÄǰ i-1 ¸ö×Ö·ûÓë S2 µÄǰ j-1 ¸ö×Ö·û×¹«¹²×ÓÐòÁеĻù´¡ÉÏÔÙ¼ÓÉÏ S1i Õâ¸öÖµ£¬×¹«¹²×ÓÐòÁг¤¶È¼Ó 1 £¬¼´ dp[i][j] = dp[i-1][j-1] + 1¡£ -?? ?? S1i != S2j ??????????????????? S1 ??? i-1 ??????? S2 ??? j ????????????????§µ??? S1 ??? i ??????? S2 ??? j-1 ????????????????§µ?????????????? dp[i][j] = max{ dp[i-1][j], dp[i][j-1] }?? +¢Ú µ± S1i != S2j ʱ£¬´Ëʱ×¹«¹²×ÓÐòÁÐΪ S1 µÄǰ i-1 ¸ö×Ö·ûºÍ S2 µÄǰ j ¸ö×Ö·û×¹«¹²×ÓÐòÁУ¬Óë S1 µÄǰ i ¸ö×Ö·ûºÍ S2 µÄǰ j-1 ¸ö×Ö·û×¹«¹²×ÓÐòÁУ¬ËüÃǵÄ×î´óÕߣ¬¼´ dp[i][j] = max{ dp[i-1][j], dp[i][j-1] }¡£ -???????????????§Ö???????????? +×ÛÉÏ£¬×¹«¹²×ÓϵÁеÄ×´Ì¬×ªÒÆ·½³ÌΪ£º ![](http://latex.codecogs.com/gif.latex?\\\\ dp[i][j]=\left\{ @@ -1929,13 +1929,13 @@ max(dp[i-1][j],dp[i][j-1])&&{S1_i<>S2_j} \end{array}\right. ) -???????? N ?????? S1 ?? ????? M ?????? S2??dp[N][M] ???????? S1 ?????? S2 ?????????????§Ô???? +¶ÔÓÚ³¤¶ÈΪ N µÄÐòÁÐ S1 ºÍ ³¤¶ÈΪ M µÄÐòÁÐ S2£¬dp[N][M] ¾ÍÊÇÐòÁÐ S1 ºÍÐòÁÐ S2 µÄ×¹«¹²×ÓÐòÁг¤¶È¡£ -???????????????????????????????????????? +Óë×µÝÔö×ÓÐòÁÐÏà±È£¬×¹«¹²×ÓÐòÁÐÓÐÒÔϲ»Í¬µã£º -?? ?????????????§µ???????????????????§³? -?? ???????????????§µ?dp[i] ????? Si ???¦Â?????????????§Ô?????????§Ò?????? Si ?????????????????§µ?dp[i][j] ??? S1 ??? i ??????? S2 ??? j ??????????????????§Ô????????????? S1i ?? S2j ?? -?? ???? 2 ???????????????????????????? dp[N][M] ????????????????????????? dp[N] ?????????????? SN ???¦Â?????????????§Ó?????????????????????????§µ??????????? dp ????????????? +¢Ù Õë¶ÔµÄÊÇÁ½¸öÐòÁУ¬ÇóËüÃǵÄ×¹«¹²×ÓÐòÁС£ +¢Ú ÔÚ×µÝÔö×ÓÐòÁÐÖУ¬dp[i] ±íʾÒÔ Si Ϊ½áβµÄ×µÝÔö×ÓÐòÁг¤¶È£¬×ÓÐòÁбØÐë°üº¬ Si £»ÔÚ×¹«¹²×ÓÐòÁÐÖУ¬dp[i][j] ±íʾ S1 ÖÐǰ i ¸ö×Ö·ûÓë S2 ÖÐǰ j ¸ö×Ö·ûµÄ×¹«¹²×ÓÐòÁг¤¶È£¬²»Ò»¶¨°üº¬ S1i ºÍ S2j ¡£ +¢Û ÓÉÓÚ 2 £¬ÔÚÇó×îÖÕ½âʱ£¬×¹«¹²×ÓÐòÁÐÖÐ dp[N][M] ¾ÍÊÇ×îÖս⣬¶ø×µÝÔö×ÓÐòÁÐÖÐ dp[N] ²»ÊÇ×îÖս⣬ÒòΪÒÔ SN Ϊ½áβµÄ×µÝÔö×ÓÐòÁв»Ò»¶¨ÊÇÕû¸öÐòÁÐ×µÝÔö×ÓÐòÁУ¬ÐèÒª±éÀúÒ»±é dp Êý×éÕÒµ½×î´óÕß¡£ ```java public int lengthOfLCS(int[] nums1, int[] nums2) { @@ -1951,18 +1951,18 @@ public int lengthOfLCS(int[] nums1, int[] nums2) { } ``` -### 0-1 ???? +### 0-1 ±³°ü -?????????? N ????????????????????????????????§»????????????????? w ???? v?? +ÓÐÒ»¸öÈÝÁ¿Îª N µÄ±³°ü£¬ÒªÓÃÕâ¸ö±³°ü×°ÏÂÎïÆ·µÄ¼ÛÖµ×î´ó£¬ÕâЩÎïÆ·ÓÐÁ½¸öÊôÐÔ£ºÌå»ý w ºÍ¼ÛÖµ v¡£ -?????????????? dp ?›¥??????????? dp[i][j] ???????????? j ????????? i ???????????????????? i ????????? w?????? v??????? i ?????????????????§µ?????????????????? +¶¨ÒåÒ»¸ö¶þάÊý×é dp ´æ´¢×î´ó¼ÛÖµ£¬ÆäÖÐ dp[i][j] ±íʾÌå»ý²»³¬¹ý j µÄÇé¿öÏ£¬Ç° i ¼þÎïÆ·ÄÜ´ïµ½µÄ×î´ó¼ÛÖµ¡£ÉèµÚ i ¼þÎïÆ·Ìå»ýΪ w£¬¼ÛֵΪ v£¬¸ù¾ÝµÚ i ¼þÎïÆ·ÊÇ·ñÌí¼Óµ½±³°üÖУ¬¿ÉÒÔ·ÖÁ½ÖÖÇé¿öÌÖÂÛ£º -?? ?? i ??????????????????????????? j ??? i ??????????????????????????? j ??? i-1 ??????????????dp[i][j] = dp[i-1][j]?? -?? ?? i ??????????????§µ?dp[i][j] = dp[i-1][j-w] + v?? +¢Ù µÚ i ¼þÎïÆ·Ã»Ìí¼Óµ½±³°ü£¬×ÜÌå»ý²»³¬¹ý j µÄǰ i ¼þÎïÆ·µÄ×î´ó¼ÛÖµ¾ÍÊÇ×ÜÌå»ý²»³¬¹ý j µÄǰ i-1 ¼þÎïÆ·µÄ×î´ó¼ÛÖµ£¬dp[i][j] = dp[i-1][j]¡£ +¢Ú µÚ i ¼þÎïÆ·Ìí¼Óµ½±³°üÖУ¬dp[i][j] = dp[i-1][j-w] + v¡£ -?? i ??????????????????????????????????????????? +µÚ i ¼þÎïÆ·¿ÉÌí¼ÓÒ²¿ÉÒÔ²»Ìí¼Ó£¬È¡¾öÓÚÄÄÖÖÇé¿öÏÂ×î´ó¼ÛÖµ¸ü´ó¡£ -?????0-1 ????????????????? +×ÛÉÏ£¬0-1 ±³°üµÄ×´Ì¬×ªÒÆ·½³ÌΪ£º ![](http://latex.codecogs.com/gif.latex?\\\\dp[i][j]=max(dp[i-1][j],dp[i-1][j-w]+v)) @@ -1984,18 +1984,18 @@ public int knapsack(int W, int N, int[] weights, int[] values) { } ``` -**??????** +**¿Õ¼äÓÅ»¯** -?????????????? 0-1 ??????????????????????????????? i ?????????????? i-1 ??????????§Û????????? dp ??????????ï…???? dp[j] ??????? dp[i-1][j] ??????? dp[i][j]??????? +ÔÚ³ÌÐòʵÏÖʱ¿ÉÒÔ¶Ô 0-1 ±³°ü×öÓÅ»¯¡£¹Û²ì×´Ì¬×ªÒÆ·½³Ì¿ÉÒÔÖªµÀ£¬Ç° i ¼þÎïÆ·µÄ״̬½öÓÉǰ i-1 ¼þÎïÆ·µÄ״̬Óйأ¬Òò´Ë¿ÉÒÔ½« dp ¶¨ÒåΪһάÊý×飬ÆäÖÐ dp[j] ¼È¿ÉÒÔ±íʾ dp[i-1][j] Ò²¿ÉÒÔ±íʾ dp[i][j]¡£´Ëʱ£¬ ![](http://latex.codecogs.com/gif.latex?\\\\dp[j]=max(dp[j],dp[j-w]+v)) -??? dp[j-w] ??? dp[i-1][j-w]???????????? dp[i][j-w] ????? dp[i-1][j-w] ????????????????? dp[i][j] ????? dp[i][j-w]???????????????????????????? +ÒòΪ dp[j-w] ±íʾ dp[i-1][j-w]£¬Òò´Ë²»ÄÜÏÈÇó dp[i][j-w] ·ÀÖ¹½« dp[i-1][j-w] ¸²¸Ç¡£Ò²¾ÍÊÇ˵ҪÏȼÆËã dp[i][j] ÔÙ¼ÆËã dp[i][j-w]£¬ÔÚ³ÌÐòʵÏÖʱÐèÒª°´µ¹ÐòÀ´Ñ­»·Çó½â¡£ -**????????????????** +**ÎÞ·¨Ê¹ÓÃ̰ÐÄËã·¨µÄ½âÊÍ** -0-1 ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 5 ?????????????????? 0 ???????? 1?????????????? 16????????§³? 2 ?????????????????? 1 ????? 2?????? 22. +0-1 ±³°üÎÊÌâÎÞ·¨Ê¹ÓÃ̰ÐÄËã·¨À´Çó½â£¬Ò²¾ÍÊÇ˵²»Äܰ´ÕÕÏÈÌí¼ÓÐÔ¼Û±È×î¸ßµÄÎïÆ·À´´ïµ½×îÓÅ£¬ÕâÊÇÒòΪÕâÖÖ·½Ê½¿ÉÄÜÔì³É±³°ü¿Õ¼äµÄÀË·Ñ£¬´Ó¶øÎÞ·¨´ïµ½×îÓÅ¡£¿¼ÂÇÏÂÃæµÄÎïÆ·ºÍÒ»¸öÈÝÁ¿Îª 5 µÄ±³°ü£¬Èç¹ûÏÈÌí¼ÓÎïÆ· 0 ÔÙÌí¼ÓÎïÆ· 1£¬ÄÇôֻÄÜ´æ·ÅµÄ¼ÛֵΪ 16£¬ÀË·ÑÁË´óСΪ 2 µÄ¿Õ¼ä¡£×îÓŵķ½Ê½ÊÇ´æ·ÅÎïÆ· 1 ºÍÎïÆ· 2£¬¼ÛֵΪ 22. | id | w | v | v/w | | --- | --- | --- | --- | @@ -2003,23 +2003,23 @@ public int knapsack(int W, int N, int[] weights, int[] values) { | 1 | 2 | 10 | 5 | | 2 | 3 | 12 | 4 | -**????** +**±äÖÖ** -??????????????????????????????? 0-1 ?????????????????????????? 1/2/4... ????????????????????????????????????????????¦±? +ÍêÈ«±³°ü£ºÎïÆ·¿ÉÒÔÎÞÏÞ¸ö£¬¿ÉÒÔת»»Îª 0-1 ±³°ü£¬ÁîÿÖÖÎïÆ·µÄÌå»ýºÍ¼ÛÖµ±äΪ 1/2/4... ±¶Êý£¬°ÑËüÃǶ¼µ±³ÉÒ»¸öÐÂÎïÆ·£¬È»ºóÒ»ÖÖÎïÆ·Ö»ÄÜÌí¼ÓÒ»´Î¡£ -?????????????????????????????????? 0-1 ?????? +¶àÖØ±³°ü£ºÎïÆ·ÊýÁ¿ÓÐÏÞÖÆ£¬Í¬Ñù¿ÉÒÔת»»Îª 0-1 ±³°ü¡£ -????????????????????????????????????????????????????? +¶àά·ÑÓñ³°ü£ºÎïÆ·²»½öÓÐÖØÁ¿£¬»¹ÓÐÌå»ý£¬Í¬Ê±¿¼ÂÇÕâÁ½ÖÖÏÞÖÆ¡£ -??????????????????????????? +ÆäËü£ºÎïÆ·Ö®¼äÏà»¥Ô¼Êø»òÕßÒÀÀµ¡£ -**?????????????????????** +**»®·ÖÊý×éΪºÍÏàµÈµÄÁ½²¿·Ö** [Leetcode : 416. Partition Equal Subset Sum (Medium)](https://leetcode.com/problems/partition-equal-subset-sum/description/) -????????????????§³? sum/2 ?? 0-1 ??????????????§Ó??????????????§Þ???????????????????????? +¿ÉÒÔ¿´³ÉÒ»¸ö±³°ü´óСΪ sum/2 µÄ 0-1 ±³°üÎÊÌ⣬µ«ÊÇÒ²Óв»Í¬µÄµØ·½£¬ÕâÀïûÓмÛÖµÊôÐÔ£¬²¢ÇÒ±³°ü±ØÐë±»ÌîÂú¡£ -??????????????????? +ÒÔÏÂʵÏÖʹÓÃÁ˿ռäÓÅ»¯¡£ ```java public boolean canPartition(int[] nums) { @@ -2046,7 +2046,7 @@ public boolean canPartition(int[] nums) { } ``` -**????????????§Ò???** +**×Ö·û´®°´µ¥´ÊÁбí·Ö¸î** [Leetcode : 139. Word Break (Medium)](https://leetcode.com/problems/word-break/description/) @@ -2073,7 +2073,7 @@ public boolean wordBreak(String s, List wordDict) { } ``` -**?????????????????????????????????** +**¸Ä±äÒ»×éÊýµÄÕý¸ººÅʹµÃËüÃǵĺÍΪһ¸ø¶¨Êý** [Leetcode : 494. Target Sum (Medium)](https://leetcode.com/problems/target-sum/description/) @@ -2091,7 +2091,7 @@ Explanation: There are 5 ways to assign symbols to make the sum of nums be target 3. ``` -????????????? subset sum ?????????? 0-1 ????????????????????????????????????P ?? N?????? P ????????N ?????????????????? +¸ÃÎÊÌâ¿ÉÒÔת»»Îª subset sum ÎÊÌ⣬´Ó¶øÊ¹Óà 0-1 ±³°üµÄ·½·¨À´Çó½â¡£¿ÉÒÔ½«Õâ×éÊý¿´³ÉÁ½²¿·Ö£¬P ºÍ N£¬ÆäÖÐ P ʹÓÃÕýºÅ£¬N ʹÓøººÅ£¬ÓÐÒÔÏÂÍÆµ¼£º ```html sum(P) - sum(N) = target @@ -2099,7 +2099,7 @@ sum(P) + sum(N) + sum(P) - sum(N) = target + sum(P) + sum(N) 2 * sum(P) = target + sum(nums) ``` -????????????????????????????????????? (target + sum(nums))/2???????????? +Òò´ËÖ»ÒªÕÒµ½Ò»¸ö×Ó¼¯£¬ÁîËüÃǶ¼È¡ÕýºÅ£¬²¢ÇҺ͵ÈÓÚ (target + sum(nums))/2£¬¾ÍÖ¤Ã÷´æÔڽ⡣ ```java public int findTargetSumWays(int[] nums, int S) { @@ -2127,7 +2127,7 @@ private int subsetSum(int[] nums, int targetSum) { } ``` -**01????????????????** +**01×Ö·û¹¹³É×î¶àµÄ×Ö·û´®** [Leetcode : 474. Ones and Zeroes (Medium)](https://leetcode.com/problems/ones-and-zeroes/description/) @@ -2135,10 +2135,10 @@ private int subsetSum(int[] nums, int targetSum) { Input: Array = {"10", "0001", "111001", "1", "0"}, m = 5, n = 3 Output: 4 -Explanation: This are totally 4 strings can be formed by the using of 5 0s and 3 1s, which are ??10,??0001??,??1??,??0?? +Explanation: This are totally 4 strings can be formed by the using of 5 0s and 3 1s, which are ¡°10,¡±0001¡±,¡±1¡±,¡±0¡± ``` -??????????????? 0-1 ????????????????????§³??0 ???????? 1 ???????? +ÕâÊÇÒ»¸ö¶àά·ÑÓÃµÄ 0-1 ±³°üÎÊÌ⣬ÓÐÁ½¸ö±³°ü´óС£¬0 µÄÊýÁ¿ºÍ 1 µÄÊýÁ¿¡£ ```java public int findMaxForm(String[] strs, int m, int n) { @@ -2164,13 +2164,13 @@ public int findMaxForm(String[] strs, int m, int n) { } ``` -**?????** +**ÕÒÁãÇ®** [Leetcode : 322. Coin Change (Medium)](https://leetcode.com/problems/coin-change/description/) -????????????§»???????????????§»??????????????????????????????????????????????????¨¢? +ÌâÄ¿ÃèÊö£º¸øÒ»Ð©Ãæ¶îµÄÓ²±Ò£¬ÒªÇóÓÃÕâЩӲ±ÒÀ´×é³É¸ø¶¨Ãæ¶îµÄÇ®Êý£¬²¢ÇÒʹµÃÓ²±ÒÊýÁ¿×îÉÙ¡£Ó²±Ò¿ÉÒÔÖØ¸´Ê¹Óᣠ-?????????????????????????????? 0-1???????????????¦·??????????????????? 0 ?????????????¦Â??????? +ÕâÊÇÒ»¸öÍêÈ«±³°üÎÊÌ⣬ÍêÈ«±³°üÎÊÌâºÍ 0-1±³°üÎÊÌâÔÚʵÏÖÉÏΨһµÄ²»Í¬ÊÇ£¬µÚ¶þ²ãÑ­»·ÊÇ´Ó 0 ¿ªÊ¼µÄ£¬¶ø²»ÊÇ´Óβ²¿¿ªÊ¼¡£ ```java public int coinChange(int[] coins, int amount) { @@ -2188,7 +2188,7 @@ public int coinChange(int[] coins, int amount) { } ``` -**??????** +**×éºÏ×ܺÍ** [Leetcode : 377. Combination Sum IV (Medium)](https://leetcode.com/problems/combination-sum-iv/description/) @@ -2225,7 +2225,7 @@ public int combinationSum4(int[] nums, int target) { } ``` -**?????????¦Å???????** +**Ö»ÄܽøÐÐÁ½´ÎµÄ¹ÉƱ½»Ò×** [Leetcode : 123. Best Time to Buy and Sell Stock III (Hard)](https://leetcode.com/problems/best-time-to-buy-and-sell-stock-iii/description/) @@ -2243,7 +2243,7 @@ public int maxProfit(int[] prices) { } ``` -**?????? k ?¦Å???????** +**Ö»ÄܽøÐÐ k ´ÎµÄ¹ÉƱ½»Ò×** [Leetcode : 188. Best Time to Buy and Sell Stock IV (Hard)](https://leetcode.com/problems/best-time-to-buy-and-sell-stock-iv/description/) @@ -2274,13 +2274,13 @@ public int maxProfit(int k, int[] prices) { } ``` -### ???????? +### Êý×éÇø¼ä -**?????????** +**Êý×éÇø¼äºÍ** [Leetcode : 303. Range Sum Query - Immutable (Easy)](https://leetcode.com/problems/range-sum-query-immutable/description/) -?????? i \~ j ???????????? sum[j] - sum[i-1]?????? sum[i] ? 0 \~ j ???? +ÇóÇø¼ä i \~ j µÄºÍ£¬¿ÉÒÔת»»Îª sum[j] - sum[i-1]£¬ÆäÖÐ sum[i] Ϊ 0 \~ j µÄºÍ¡£ ```java class NumArray { @@ -2299,11 +2299,11 @@ class NumArray { } ``` -**???????????** +**×ÓÊý×é×î´óµÄºÍ** [Leetcode : 53. Maximum Subarray (Easy)](https://leetcode.com/problems/maximum-subarray/description/) -?? sum[i] ??? num[i] ???¦Â???????????????????? sum[i-1] ??? sum[i] ???????? sum[i-1] §³?? 0??????? num[i] ???¦Â???????öö???????????????????????????????????????? num[i] ??§³?? +Áî sum[i] ΪÒÔ num[i] Ϊ½áβµÄ×ÓÊý×é×î´óµÄºÍ£¬¿ÉÒÔÓÉ sum[i-1] µÃµ½ sum[i] µÄÖµ£¬Èç¹û sum[i-1] СÓÚ 0£¬ÄÇôÒÔ num[i] Ϊ½áβµÄ×ÓÊý×é²»Äܰüº¬Ç°ÃæµÄÄÚÈÝ£¬ÒòΪ¼ÓÉÏÇ°ÃæµÄ²¿·Ö£¬ÄÇôºÍÒ»¶¨»á±È num[i] »¹Ð¡¡£ ```java public int maxSubArray(int[] nums) { @@ -2319,7 +2319,7 @@ public int maxSubArray(int[] nums) { } ``` -**?????§Ö???????????????** +**Êý×éÖеȲîµÝÔö×ÓÇø¼äµÄ¸öÊý** [Leetcode : 413. Arithmetic Slices (Medium)](https://leetcode.com/problems/arithmetic-slices/description/) @@ -2329,7 +2329,7 @@ A = [1, 2, 3, 4] return: 3, for 3 arithmetic slices in A: [1, 2, 3], [2, 3, 4] and [1, 2, 3, 4] itself. ``` -???? (1,2,3,4)????????????????????????????????? (1,2,3,4,5)??????????????????????? (1,2,3,4) ?????????????????? (1,2,3,4,5)????? dp[i] = dp[i - 1] + 1?? +¶ÔÓÚ (1,2,3,4)£¬ËüÓÐÈýÖÖ×é³ÉµÝÔö×ÓÇø¼äµÄ·½Ê½£¬¶ø¶ÔÓÚ (1,2,3,4,5)£¬Ëü×é³ÉµÝÔö×ÓÇø¼äµÄ·½Ê½³ýÁË (1,2,3,4) µÄÈýÖÖÍ⻹¶àÁËÒ»ÖÖ£¬¼´ (1,2,3,4,5)£¬Òò´Ë dp[i] = dp[i - 1] + 1¡£ ```java public int numberOfArithmeticSlices(int[] A) { @@ -2348,13 +2348,13 @@ public int numberOfArithmeticSlices(int[] A) { } ``` -### ??????? +### ×Ö·û´®±à¼­ -**?????????????????????????** +**ɾ³ýÁ½¸ö×Ö·û´®µÄ×Ö·ûʹËüÃÇÏàµÈ** [Leetcode : 583. Delete Operation for Two Strings (Medium)](https://leetcode.com/problems/delete-operation-for-two-strings/description/) -????????????????????????????????????? +¿ÉÒÔת»»ÎªÇóÁ½¸ö×Ö·û´®µÄ×¹«¹²×ÓÐòÁÐÎÊÌâ¡£ ```java public int minDistance(String word1, String word2) { @@ -2372,21 +2372,21 @@ public int minDistance(String word1, String word2) { ``` -**????????????????????????** // TODO +**ÐÞ¸ÄÒ»¸ö×Ö·û´®³ÆÎªÁíÒ»¸ö×Ö·û´®** // TODO [Leetcode : 72. Edit Distance (Hard)](https://leetcode.com/problems/edit-distance/description/) -**??????????????????????????**// TODO +**ÐÞ¸ÄÒ»¸ö×Ö·û´®Ê¹Ëü³ÉΪ»ØÎÄ×Ö·û´®**// TODO -[????????????????-?????](#) +[³ÌÐòÔ±´úÂëÃæÊÔÖ¸ÄÏ-×Ö·û´®](#) -### ???????? +### ÆäËüÎÊÌâ -**???????????????** +**ÐèÒªÀäÈ´ÆÚµÄ¹ÉƱ½»Ò×** [Leetcode : 309. Best Time to Buy and Sell Stock with Cooldown(Medium)](https://leetcode.com/problems/best-time-to-buy-and-sell-stock-with-cooldown/description/) -??????????????????????????????? +ÌâÄ¿ÃèÊö£º½»Ò×Ö®ºóÐèÒªÓÐÒ»ÌìµÄÀäȴʱ¼ä¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/ac9b31ec-cef1-4880-a875-fc4571ca10e1.png) @@ -2417,11 +2417,11 @@ public int maxProfit(int[] prices) { ``` -**???? 0 \~ n ???????????????? 1 ?????** +**ͳ¼Æ´Ó 0 \~ n ÿ¸öÊýµÄ¶þ½øÖƱíʾÖÐ 1 µÄ¸öÊý** [Leetcode : 338. Counting Bits (Medium)](https://leetcode.com/problems/counting-bits/description/) -???????? 6(110)????????????????? 2(10) ????????? 1 ????? dp[i] = dp[i&(i-1)] + 1; +¶ÔÓÚÊý×Ö 6(110)£¬Ëü¿ÉÒÔ¿´³ÉÊÇÊý×Ö 2(10) Ç°Ãæ¼ÓÉÏÒ»¸ö 1 £¬Òò´Ë dp[i] = dp[i&(i-1)] + 1; ```java public int[] countBits(int num) { @@ -2433,11 +2433,11 @@ public int maxProfit(int[] prices) { } ``` -**?????????????????????** +**Ò»×éÕûÊý¶ÔÄܹ»¹¹³ÉµÄ×Á´** [Leetcode : 646. Maximum Length of Pair Chain (Medium)](https://leetcode.com/problems/maximum-length-of-pair-chain/description/) -???? (a, b) ?? (c, d) ????? b < c????????????????????? +¶ÔÓÚ (a, b) ºÍ (c, d) £¬Èç¹û b < c£¬ÔòËüÃÇ¿ÉÒÔ¹¹³ÉÒ»ÌõÁ´¡£ ```java public int findLongestChain(int[][] pairs) { @@ -2464,13 +2464,13 @@ public int findLongestChain(int[][] pairs) { } ``` -**???????????????????** +**ÂòÈëºÍÊÛ³ö¹ÉƱ×î´óµÄÊÕÒæ** [Leetcode : 121. Best Time to Buy and Sell Stock (Easy)](https://leetcode.com/problems/best-time-to-buy-and-sell-stock/description/) -???????¦Í???? +Ö»½øÐÐÒ»´Î½»Òס£ -???????????§³?????????§³??????????????????????????????????????????????????? +Ö»Òª¼ÇÂ¼Ç°ÃæµÄ×îС¼Û¸ñ£¬½«Õâ¸ö×îС¼Û¸ñ×÷ΪÂòÈë¼Û¸ñ£¬È»ºó½«µ±Ç°µÄ¼Û¸ñ×÷ΪÊÛ³ö¼Û¸ñ£¬²é¿´Õâ¸ö¼Û¸ñÊÇ·ñÊǵ±Ç°µÄ×î´ó¼Û¸ñ¡£ ```java public int maxProfit(int[] prices) { @@ -2486,7 +2486,7 @@ public int maxProfit(int[] prices) { } ``` -**??????????** +**¸´ÖÆÕ³Ìù×Ö·û** [Leetcode : 650. 2 Keys Keyboard (Medium)](https://leetcode.com/problems/2-keys-keyboard/description/) @@ -2516,30 +2516,30 @@ public int minSteps(int n) { } ``` -## ??? +## Êýѧ -### ???? +### ËØÊý -**???????** +**ËØÊý·Ö½â** -????????????????????????????? 84 = 22 \* 31 \* 50 \* 71 \* 110 \* 130 \* 170 \* ?? +ÿһ¸öÊý¶¼¿ÉÒÔ·Ö½â³ÉËØÊýµÄ³Ë»ý£¬ÀýÈç 84 = 22 \* 31 \* 50 \* 71 \* 110 \* 130 \* 170 \* ¡­ -**????** +**Õû³ý** -?? x = 2m0 \* 3m1 \* 5m2 \* 7m3 \* 11m4 \* ?? -?? y = 2n0 \* 3n1 \* 5n2 \* 7n3 \* 11n4 \* ?? +Áî x = 2m0 \* 3m1 \* 5m2 \* 7m3 \* 11m4 \* ¡­ +Áî y = 2n0 \* 3n1 \* 5n2 \* 7n3 \* 11n4 \* ¡­ -??? x ???? y??y mod x == 0????????????? i??mi <= ni?? +Èç¹û x Õû³ý y£¨y mod x == 0£©£¬Ôò¶ÔÓÚËùÓÐ i£¬mi <= ni¡£ -x ?? y ?? **??????** ???gcd(x,y) = 2min(m0,n0) \* 3min(m1,n1) \* 5min(m2,n2) \* ... +x ºÍ y µÄ **×î´ó¹«Ô¼Êý** Ϊ£ºgcd(x,y) = 2min(m0,n0) \* 3min(m1,n1) \* 5min(m2,n2) \* ... -x ?? y ?? **??§³??????** ???lcm(x,y) = 2max(m0,n0) \* 3max(m1,n1) \* 5max(m2,n2) \* ... +x ºÍ y µÄ **×îС¹«±¶Êý** Ϊ£ºlcm(x,y) = 2max(m0,n0) \* 3max(m1,n1) \* 5max(m2,n2) \* ... -**????????????** +**Éú³ÉËØÊýÐòÁÐ** [Leetcode : 204. Count Primes (Easy)](https://leetcode.com/problems/count-primes/description/) -???????????????????????????????????????????????????????? +°£À­ÍÐË¹ÌØÄáɸ·¨ÔÚÿ´ÎÕÒµ½Ò»¸öËØÊýʱ£¬½«Äܱ»ËØÊýÕû³ýµÄÊýÅųýµô¡£ ```java public int countPrimes(int n) { @@ -2548,7 +2548,7 @@ public int countPrimes(int n) { for(int i = 2; i < n; i++){ if(notPrimes[i]) continue; cnt++; - // ?? i * i ??????????? k < i????? k * i ?????????????????? + // ´Ó i * i ¿ªÊ¼£¬ÒòΪÈç¹û k < i£¬ÄÇô k * i ÔÚ֮ǰ¾ÍÒѾ­±»È¥³ý¹ýÁË for(long j = (long) i * i; j < n; j += i){ notPrimes[(int) j] = true; } @@ -2557,7 +2557,7 @@ public int countPrimes(int n) { } ``` -### ?????? +### ×î´ó¹«Ô¼Êý ```java int gcd(int a, int b) { @@ -2566,7 +2566,7 @@ int gcd(int a, int b) { } ``` -??????????????????????????? +×î´ó¹«±¶ÊýΪÁ½ÊýµÄ³Ë»ý³ýÒÔ×î´ó¹«Ô¼Êý¡£ ```java int lcm(int a, int b){ @@ -2574,22 +2574,22 @@ int lcm(int a, int b){ } ``` -???????????????????????? a % b ??????????????????????????? [ ????????2.7]() ??????????¨¹???????¦Ë???????�I???? +¶ÔÓÚ×î´ó¹«Ô¼ÊýÎÊÌ⣬ÒòΪÐèÒª¼ÆËã a % b £¬¶øÕâ¸ö²Ù×÷ÊDZȽϺÄʱµÄ£¬¿ÉÒÔʹÓà [ ±à³ÌÖ®ÃÀ£º2.7]() µÄ·½·¨£¬ÀûÓüõ·¨ºÍÒÆÎ»²Ù×÷À´Ìæ»»Ëü¡£ -???? a ?? b ???????? f(a, b)???§µ? +¶ÔÓÚ a ºÍ b µÄ×î´ó¹«Ô¼Êý f(a, b)£¬ÓУº -1\. ??? a ?? b ????????f(a, b) = 2\*f(a/2, b/2); -2\. ??? a ????? b ????????f(a, b) = f(a/2, b); -3\. ??? b ????? a ????????f(a, b) = f(a, b/2); -4\. ??? a ?? b ?????????f(a, b) = f(a, a-b); +1\. Èç¹û a ºÍ b ¾ùΪżÊý£¬f(a, b) = 2\*f(a/2, b/2); +2\. Èç¹û a ÊÇżÊý b ÊÇÆæÊý£¬f(a, b) = f(a/2, b); +3\. Èç¹û b ÊÇżÊý a ÊÇÆæÊý£¬f(a, b) = f(a, b/2); +4\. Èç¹û a ºÍ b ¾ùÎªÆæÊý£¬f(a, b) = f(a, a-b); -?? 2 ??? 2 ????????????¦Ë?????? +³Ë 2 ºÍ³ý 2 ¶¼¿ÉÒÔת»»ÎªÒÆÎ»²Ù×÷¡£ -### ??????? +### ½øÖÆ×ª»» -Java ?? static String toString(int num, int radix) ???????????????? redix ??????????????? +Java ÖÐ static String toString(int num, int radix) ¿ÉÒÔ½«Ò»¸öÕûÊý×°»»Îª redix ½øÖƱíʾµÄ×Ö·û´®¡£ -**7 ????** +**7 ½øÖÆ** [Leetcode : 504. Base 7 (Easy)](https://leetcode.com/problems/base-7/description/) @@ -2605,7 +2605,7 @@ public String convertToBase7(int num) { } ``` -**16 ????** +**16 ½øÖÆ** [Leetcode : 405. Convert a Number to Hexadecimal (Easy)](https://leetcode.com/problems/convert-a-number-to-hexadecimal/description/) @@ -2622,15 +2622,15 @@ public String toHex(int num) { } ``` -### ??? +### ½×³Ë -**?????¦Â???§Ø???? 0** +**ͳ¼Æ½×³Ëβ²¿ÓжàÉÙ¸ö 0** [Leetcode : 172. Factorial Trailing Zeroes (Easy)](https://leetcode.com/problems/factorial-trailing-zeroes/description/) -¦Â???? 0 ?? 2 * 5 ??????2 ????????????? 5 ?????????????????§Ø???? 5 ???¨À? +β²¿µÄ 0 ÓÉ 2 * 5 µÃÀ´£¬2 µÄÊýÁ¿Ã÷ÏÔ¶àÓÚ 5 µÄÊýÁ¿£¬Òò´ËֻҪͳ¼ÆÓжàÉÙ¸ö 5 ¼´¿É¡£ -????????? N?????????? 5 ????????N/5 + N/52 + N/53 + ...?????? N/5 ????????? N ?????? 5 ???????????? 5??N/52 ????????? N ?????? 52 ????????????? 5 ...?? +¶ÔÓÚÒ»¸öÊý N£¬ËüËù°üº¬ 5 µÄ¸öÊýΪ£ºN/5 + N/52 + N/53 + ...£¬ÆäÖÐ N/5 ±íʾ²»´óÓÚ N µÄÊýÖÐ 5 µÄ±¶Êý¹±Ï×Ò»¸ö 5£¬N/52 ±íʾ²»´óÓÚ N µÄÊýÖÐ 52 µÄ±¶ÊýÔÙ¹±Ï×Ò»¸ö 5 ...¡£ ```java public int trailingZeroes(int n) { @@ -2638,11 +2638,11 @@ public int trailingZeroes(int n) { } ``` -????????? N! ??????????????¦Ë 1 ??¦Ë?????????§Ø???? 2 ?????????????? [ ????????2.2](#) ????????§Ø???? 5 ?????2 ?????? N/2 + N/22 + N/23 + ... +Èç¹ûͳ¼ÆµÄÊÇ N! µÄ¶þ½øÖƱíʾÖÐ×îµÍλ 1 µÄλÖã¬Ö»ÒªÍ³¼ÆÓжàÉÙ¸ö 2 ¼´¿É£¬¸ÃÌâÄ¿³ö×Ô [ ±à³ÌÖ®ÃÀ£º2.2](#) ¡£ºÍÇó½âÓжàÉÙ¸ö 5 Ò»Ñù£¬2 µÄ¸öÊýΪ N/2 + N/22 + N/23 + ... -### ???????????? +### ×Ö·û´®¼Ó·¨¼õ·¨ -**????????** +**¶þ½øÖƼӷ¨** [Leetcode : 67. Add Binary (Easy)](https://leetcode.com/problems/add-binary/description/) @@ -2661,11 +2661,11 @@ public String addBinary(String a, String b) { } ``` -**????????** +**×Ö·û´®¼Ó·¨** [Leetcode : 415. Add Strings (Easy)](https://leetcode.com/problems/add-strings/description/) -????????????????????????? +ÌâÄ¿ÃèÊö£º×Ö·û´®µÄֵΪ·Ç¸ºÕûÊý ```java public String addStrings(String num1, String num2) { @@ -2681,23 +2681,23 @@ public String addStrings(String num1, String num2) { } ``` -### ???????? +### ÏàÓöÎÊÌâ -**??????????????§Ö????????????** +**¸Ä±äÊý×éÔªËØÊ¹ËùÓеÄÊý×éÔªËØ¶¼ÏàµÈ** [Leetcode : 462. Minimum Moves to Equal Array Elements II (Medium)](https://leetcode.com/problems/minimum-moves-to-equal-array-elements-ii/description/) -???????????¦Ï????????????????????????????§³????????? +ÌâÄ¿ÃèÊö£ºÃ¿´Î¿ÉÒÔ¶ÔÒ»¸öÊý×éÔªËØ¼ÓÒ»»òÕß¼õÒ»£¬Çó×îСµÄ¸Ä±ä´ÎÊý¡£ -???????????????????????????§³?????????????????????¦Ë????????????? +ÕâÊǸöµäÐ͵ÄÏàÓöÎÊÌâ£¬ÒÆ¶¯¾àÀë×îСµÄ·½Ê½ÊÇËùÓÐÔªËØ¶¼Òƶ¯µ½ÖÐλÊý¡£ÀíÓÉÈçÏ£º -?? m ???¦Ë????a ?? b ?? m ??????????????? b > a???? a ?? b ???????????????????? b - a?????????? (b - m) + (m - a)???????????????????????¦Ë????????????? +Éè m ΪÖÐλÊý¡£a ºÍ b ÊÇ m Á½±ßµÄÁ½¸öÔªËØ£¬ÇÒ b > a¡£ÒªÊ¹ a ºÍ b ÏàµÈ£¬ËüÃÇ×ܹ²Òƶ¯µÄ´ÎÊýΪ b - a£¬Õâ¸öÖµµÈÓÚ (b - m) + (m - a)£¬Ò²¾ÍÊǰÑÕâÁ½¸öÊýÒÆ¶¯µ½ÖÐλÊýµÄÒÆ¶¯´ÎÊý¡£ -?????øA??? N?????????? N/2 ?? a ?? b ????????????????? m ??¦Ë?¨¢? +ÉèÊý×鳤¶ÈΪ N£¬Ôò¿ÉÒÔÕÒµ½ N/2 ¶Ô a ºÍ b µÄ×éºÏ£¬Ê¹ËüÃǶ¼Òƶ¯µ½ m µÄλÖᣠ-**?? 1** +**½â·¨ 1** -????????ÁÙ????O(NlgN) +ÏÈÅÅÐò£¬Ê±¼ä¸´ÔÓ¶È£ºO(NlgN) ```java public int minMoves2(int[] nums) { @@ -2713,9 +2713,9 @@ public int minMoves2(int[] nums) { } ``` -**?? 2** +**½â·¨ 2** -???????????????¦Ë??????ÁÙ??? O(N) +ʹÓÿìËÙÅÅÐòÕÒµ½ÖÐλÊý£¬Ê±¼ä¸´ÔÓ¶È O(N) ```java public int minMoves2(int[] nums) { @@ -2747,13 +2747,13 @@ private void swap(int[] nums, int i, int j) { } ``` -### ?????????? +### ¶àÊýͶƱÎÊÌâ -**?????§Ô?????????? n / 2 ?????** +**Êý×éÖгöÏÖ´ÎÊý¶àÓÚ n / 2 µÄÔªËØ** [Leetcode : 169. Majority Element (Easy)](https://leetcode.com/problems/majority-element/description/) -??????????????§Þ???????????????????? n / 2 +ÏȶÔÊý×éÅÅÐò£¬×îÖмäÄǸöÊý³öÏÖ´ÎÊýÒ»¶¨¶àÓÚ n / 2 ```java public int majorityElement(int[] nums) { @@ -2762,7 +2762,7 @@ public int majorityElement(int[] nums) { } ``` -???????? Boyer-Moore Majority Vote Algorithm ?????????????????ÁÙ???? O(n)???????????????????? cnt ????????????????????????????????????????????????? cnt--????????????? i ???????? cnt == 0 ?????? i ???????? majority???????? majority????????????????? i / 2 ???????????? i / 2 ??? cnt ?????????? 0 ????????? n - i ??????§µ?majority ????????? (n - i) / 2?????????????????? majority?? +¿ÉÒÔÀûÓà Boyer-Moore Majority Vote Algorithm À´½â¾öÕâ¸öÎÊÌ⣬ʹµÃʱ¼ä¸´ÔÓ¶ÈΪ O(n)¡£¿ÉÒÔÕâôÀí½â¸ÃËã·¨£ºÊ¹Óà cnt À´Í³¼ÆÒ»¸öÔªËØ³öÏֵĴÎÊý£¬µ±±éÀúµ½µÄÔªËØºÍͳ¼ÆÔªËز»ÏëµÈʱ£¬Áî cnt--¡£Èç¹ûÇ°Ãæ²éÕÒÁË i ¸öÔªËØ£¬ÇÒ cnt == 0 £¬ËµÃ÷ǰ i ¸öÔªËØÃ»ÓÐ majority£¬»òÕßÓÐ majority£¬µ«ÊdzöÏֵĴÎÊýÉÙÓÚ i / 2 £¬ÒòΪÈç¹û¶àÓÚ i / 2 µÄ»° cnt ¾ÍÒ»¶¨²»»áΪ 0 ¡£´ËʱʣÏ嵀 n - i ¸öÔªËØÖУ¬majority µÄÊýÄ¿¶àÓÚ (n - i) / 2£¬Òò´Ë¼ÌÐø²éÕÒ¾ÍÄÜÕÒ³ö majority¡£ ```java public int majorityElement(int[] nums) { @@ -2779,22 +2779,22 @@ public int majorityElement(int[] nums) { } ``` -**?????§Ô?????????? n / k ?????** +**Êý×éÖгöÏÖ´ÎÊý¶àÓÚ n / k µÄÔªËØ** -[???????????????? P343](#) +[³ÌÐòÔ±´úÂëÃæÊÔÖ¸ÄÏ P343](#) -? k - 1 ????? +Ñ¡ k - 1 ¸öºòÑ¡ -### ???? +### ÆäËü -**?????** +**ƽ·½Êý** [Leetcode : 367. Valid Perfect Square (Easy)](https://leetcode.com/problems/valid-perfect-square/description/) -??????§µ?1,4,9,16,.. -?????3,5,7,... +ƽ·½ÐòÁУº1,4,9,16,.. +¼ä¸ô£º3,5,7,... -??????????§µ?????????????????? 1 ???????????§³? +¼ä¸ôΪµÈ²îÊýÁУ¬Ê¹ÓÃÕâ¸öÌØÐÔ¿ÉÒԵõ½´Ó 1 ¿ªÊ¼µÄƽ·½ÐòÁС£ ```java public boolean isPerfectSquare(int num) { @@ -2807,7 +2807,7 @@ public boolean isPerfectSquare(int num) { } ``` -**3 ?? n ?¦Ç?** +**3 µÄ n ´Î·½** [Leetcode : 326. Power of Three (Easy)](https://leetcode.com/problems/power-of-three/description/) @@ -2817,7 +2817,7 @@ public boolean isPowerOfThree(int n) { } ``` -**????????§Ö?????????????** +**ÕÒ³öÊý×éÖеij˻ý×î´óµÄÈý¸öÊý** [Leetcode : 628. Maximum Product of Three Numbers (Easy)](https://leetcode.com/problems/maximum-product-of-three-numbers/description/) @@ -2847,13 +2847,13 @@ public int maximumProduct(int[] nums) { } ``` -**???????** +**³Ë»ýÊý×é** [Leetcode : 238. Product of Array Except Self (Medium)](https://leetcode.com/problems/product-of-array-except-self/description/) -???????????????????ï…????????????ï…?????????????????????§Ô????¦Ë??????????????????????? +ÌâÄ¿ÃèÊö£º¸ø¶¨Ò»¸öÊý×飬´´½¨Ò»¸öÐÂÊý×飬ÐÂÊý×éµÄÿ¸öÔªËØÎªÔ­Ê¼Êý×éÖгýÁ˸ÃλÖÃÉϵÄÔªËØÖ®ÍâËùÓÐÔªËØµÄ³Ë»ý¡£ -????????ÁÙ???? O(n)???????????¨®????? +ÌâĿҪÇó£ºÊ±¼ä¸´ÔÓ¶ÈΪ O(n)£¬²¢ÇÒ²»ÄÜʹÓóý·¨¡£ ```java public int[] productExceptSelf(int[] nums) { @@ -2872,13 +2872,13 @@ public int[] productExceptSelf(int[] nums) { } ``` -# ???????? +# Êý¾Ý½á¹¹Ïà¹Ø -## ?????? +## Õ»ºÍ¶ÓÁÐ -**?????????** +**ÓÃջʵÏÖ¶ÓÁÐ** -???????? +Ò»¸öջʵÏÖ£º ```java class MyQueue { @@ -2909,7 +2909,7 @@ class MyQueue { } ``` -????????? +Á½¸öջʵÏÖ£º ```java class MyQueue { @@ -2944,7 +2944,7 @@ class MyQueue { } ``` -**?????????** +**ÓöÓÁÐʵÏÖÕ»** [Leetcode : 225. Implement Stack using Queues (Easy)](https://leetcode.com/problems/implement-stack-using-queues/description/) @@ -2959,7 +2959,7 @@ class MyStack { public void push(int x) { queue.add(x); - for(int i = 1; i < queue.size(); i++){ // ??? + for(int i = 1; i < queue.size(); i++){ // ·­×ª queue.add(queue.remove()); } } @@ -2978,11 +2978,11 @@ class MyStack { } ``` -**??§³??** +**×îСֵջ** [Leetcode : 155. Min Stack (Easy)](https://leetcode.com/problems/min-stack/description/) -???????????????›¥?????????›¥??§³??? +ÓÃÁ½¸öջʵÏÖ£¬Ò»¸ö´æ´¢Êý¾Ý£¬Ò»¸ö´æ´¢×îСֵ¡£ ```java class MinStack { @@ -3025,9 +3025,9 @@ class MinStack { } ``` -?????????§³?????????????????????????????????????????????§³???????????????? ????????3.7?? +¶ÔÓÚʵÏÖ×îСֵ¶ÓÁÐÎÊÌ⣬¿ÉÒÔÏȽ«¶ÓÁÐʹÓÃÕ»À´ÊµÏÖ£¬È»ºó¾Í½«ÎÊÌâת»»Îª×îСֵջ£¬Õâ¸öÎÊÌâ³öÏÖÔÚ ±à³ÌÖ®ÃÀ£º3.7¡£ -**?????????????** +**ÓÃջʵÏÖÀ¨ºÅÆ¥Åä** [Leetcode : 20. Valid Parentheses (Easy)](https://leetcode.com/problems/valid-parentheses/description/) @@ -3057,7 +3057,7 @@ public boolean isValid(String s) { } ``` -**?????§Ò????????????????????????** +**Êý×éÖбȵ±Ç°ÔªËØ´óµÄÏÂÒ»¸öÊý×éÔªËØµÄ¾àÀë** ```html Input: [73, 74, 75, 71, 69, 72, 76, 73] @@ -3066,7 +3066,7 @@ Output: [1, 1, 4, 2, 1, 1, 0, 0] [Leetcode : 739. Daily Temperatures (Medium)](https://leetcode.com/problems/daily-temperatures/description/) -???????›¥??¦Ä???????????????????????????????????????????????????????????????????§µ???????????????????????????????????? +ʹÓÃÕ»À´´æ´¢»¹Î´¼ÆËãµÄÔªËØ¡£¿ÉÒÔ±£Ö¤´ÓÕ»¶¥ÏòÏÂÔªËØµÝÔö£¬·ñÔòÉÏÃæÓÐÒ»¸ö±ÈÏÂÃæÄ³¸öÔªËØ´óµÄÔªËØ½øÈëÕ»ÖУ¬ÏÂÃæÄǸöÔªËØÒѾ­ÕÒµ½±ÈËü´óµÄÔªËØ£¬Òò´Ë»á³öÕ»¡£ ```java public int[] dailyTemperatures(int[] temperatures) { @@ -3084,7 +3084,7 @@ public int[] dailyTemperatures(int[] temperatures) { } ``` -**??????????????????????** +**Êý×éÖÐÏÂÒ»¸ö±Èµ±Ç°Êý´óµÄÊý** [Leetcode : 496. Next Greater Element I (Easy)](https://leetcode.com/problems/next-greater-element-i/description/) @@ -3093,7 +3093,7 @@ Input: nums1 = [4,1,2], nums2 = [1,3,4,2]. Output: [-1,3,-1] ``` -???????????? Stack ???????§Ö???????????????????????????????????????????????????????????????????????? +ÔÚ±éÀúÊý×éʱÓà Stack °ÑÊý×éÖеÄÊý´æÆðÀ´£¬Èç¹ûµ±Ç°±éÀúµÄÊý±ÈÕ»¶¥ÔªËØÀ´µÄ´ó£¬ËµÃ÷Õ»¶¥ÔªËصÄÏÂÒ»¸ö±ÈËü´óµÄÊý¾ÍÊǵ±Ç°ÔªËØ¡£ ```java public int[] nextGreaterElement(int[] nums1, int[] nums2) { @@ -3114,7 +3114,7 @@ public int[] nextGreaterElement(int[] nums1, int[] nums2) { } ``` -**?????????????????????????** +**Ñ­»·Êý×éÖÐÏÂÒ»¸ö±Èµ±Ç°ÔªËØ´óµÄÊý** [Leetcode : 503. Next Greater Element II (Medium)](https://leetcode.com/problems/next-greater-element-ii/description/) @@ -3134,28 +3134,28 @@ public int[] nextGreaterElements(int[] nums) { ``` -## ????? +## ¹þÏ£±í -???? Hash Table ????????????????????????????????????????????›¥?????????????ÁÙ?????????????????? Hash Table ?????ÈÎ??????????? +ÀûÓà Hash Table ¿ÉÒÔ¿ìËÙ²éÕÒÒ»¸öÔªËØÊÇ·ñ´æÔÚµÈÎÊÌ⣬µ«ÊÇÐèÒªÒ»¶¨µÄ¿Õ¼äÀ´´æ´¢¡£ÔÚÓÅÏÈ¿¼ÂÇʱ¼ä¸´ÔӶȵÄÇé¿öÏ£¬¿ÉÒÔÀûÓà Hash Table ÕâÖֿռ任ȡʱ¼äµÄ×ö·¨¡£ -Java ?§Ö? **HashSet** ????›¥???????????? O(1) ????ÁÙ??????????????????§³? +Java ÖÐµÄ **HashSet** ÓÃÓÚ´æ´¢Ò»¸ö¼¯ºÏ£¬²¢ÒÔ O(1) µÄʱ¼ä¸´ÔӶȲéÕÒÔªËØÊÇ·ñÔÚ¼¯ºÏÖС£ -???????????????¦¶???????????????????????????›¥???????????????????????§³§Õ???????????????????????? 26 ????????????›¥???????????????ÁÙ??????? O(1)?? +Èç¹ûÔªËØÓÐÇ²¢ÇÒ·¶Î§²»´ó£¬ÄÇô¿ÉÒÔÓÃÒ»¸ö²¼¶ûÊý×éÀ´´æ´¢Ò»¸öÔªËØÊÇ·ñ´æÔÚ£¬ÀýÈç¶ÔÓÚÖ»ÓÐСд×Ö·ûµÄÔªËØ£¬¾Í¿ÉÒÔÓÃÒ»¸ö³¤¶ÈΪ 26 µÄ²¼¶ûÊý×éÀ´´æ´¢Ò»¸ö×Ö·û¼¯ºÏ£¬Ê¹µÃ¿Õ¼ä¸´ÔӶȽµµÍΪ O(1)¡£ -Java ?§Ö? **HashMap** ??????????????????????????????????? +Java ÖÐµÄ **HashMap** Ö÷ÒªÓÃÓÚÓ³Éä¹ØÏµ£¬´Ó¶ø°ÑÁ½¸öÔªËØÁªÏµÆðÀ´¡£ -?????????????????????????????????? HashMap ?????????????????????????????????????????? url ?????§µ?[Leetcdoe : 535. Encode and Decode TinyURL (Medium)](https://leetcode.com/problems/encode-and-decode-tinyurl/description/)???????? HashMap ?????›¥?????? url ???? url ???????¨°????????????? url???????????? url ????? url ?????¦Ë???????????? +ÔÚ¶ÔÒ»¸öÄÚÈݽøÐÐѹËõ»òÕ߯äËüת»»Ê±£¬ÀûÓà HashMap ¿ÉÒÔ°ÑԭʼÄÚÈݺÍת»»ºóµÄÄÚÈÝÁªÏµÆðÀ´¡£ÀýÈçÔÚÒ»¸ö¼ò»¯ url µÄϵͳÖУ¨[Leetcdoe : 535. Encode and Decode TinyURL (Medium)](https://leetcode.com/problems/encode-and-decode-tinyurl/description/)£©£¬ÀûÓà HashMap ¾Í¿ÉÒÔ´æ´¢¾«¼òºóµÄ url µ½Ô­Ê¼ url µÄÓ³É䣬ʹµÃ²»½ö¿ÉÒÔÏÔʾ¼ò»¯µÄ url£¬Ò²¿ÉÒÔ¸ù¾Ý¼ò»¯µÄ url µÃµ½Ô­Ê¼ url ´Ó¶ø¶¨Î»µ½ÕýÈ·µÄ×ÊÔ´¡£ -HashMap ????????????????§Þ??????????????????????????? HashSet ??????????????????¦¶??????????????????????????? +HashMap Ò²¿ÉÒÔÓÃÀ´¶ÔÔªËØ½øÐмÆÊýͳ¼Æ£¬´Ëʱ¼üÎªÔªËØ£¬ÖµÎª¼ÆÊý¡£ºÍ HashSet ÀàËÆ£¬Èç¹ûÔªËØÓÐÇî²¢ÇÒ·¶Î§²»´ó£¬¿ÉÒÔÓÃÕûÐÍÊý×éÀ´½øÐÐͳ¼Æ¡£ -**?????§Ö???????????????** +**Êý×éÖеÄÁ½¸öÊýºÍΪ¸ø¶¨Öµ** [Leetcode : 1. Two Sum (Easy)](https://leetcode.com/problems/two-sum/description/) -???????????????????????????????????????????????????????ÁÙ???? O(nlgn)????ÁÙ???? O(1)?? +¿ÉÒÔÏȶÔÊý×é½øÐÐÅÅÐò£¬È»ºóʹÓÃ˫ָÕë·½·¨»òÕß¶þ·Ö²éÕÒ·½·¨¡£ÕâÑù×öµÄʱ¼ä¸´ÔÓ¶ÈΪ O(nlgn)£¬¿Õ¼ä¸´ÔÓ¶ÈΪ O(1)¡£ -?? HashMap ?›¥??????????????????????? nums[i] ????§Ø? HashMap ???????? target - nums[i] ???????????? target - nums[i] ??????????? i ?????????????????¡Â???????ÁÙ???? O(n)????ÁÙ???? O(n)??????????????? +Óà HashMap ´æ´¢Êý×éÔªËØºÍË÷ÒýµÄÓ³É䣬ÔÚ·ÃÎʵ½ nums[i] ʱ£¬ÅÐ¶Ï HashMap ÖÐÊÇ·ñ´æÔÚ target - nums[i] £¬Èç¹û´æÔÚ˵Ã÷ target - nums[i] ËùÔÚµÄË÷ÒýºÍ i ¾ÍÊÇÒªÕÒµÄÁ½¸öÊý¡£¸Ã·½·¨µÄʱ¼ä¸´ÔÓ¶ÈΪ O(n)£¬¿Õ¼ä¸´ÔÓ¶ÈΪ O(n)£¬Ê¹ÓÿռäÀ´»»È¡Ê±¼ä¡£ ```java public int[] twoSum(int[] nums, int target) { @@ -3168,9 +3168,9 @@ public int[] twoSum(int[] nums, int target) { } ``` -**????§Ô????** +**×ºÍгÐòÁÐ** -??§Ô???????????????§³?????????? 1 +ºÍгÐòÁÐÖÐ×î´óÊýºÍ×îСÊýÖ»²îÕýºÃΪ 1 [Leetcode : 594. Longest Harmonious Subsequence (Easy)](https://leetcode.com/problems/longest-harmonious-subsequence/description/) @@ -3190,15 +3190,15 @@ public int findLHS(int[] nums) { } ``` -## ????? +## ×Ö·û´® -**????????????????????????????** +**Á½¸ö×Ö·û´®µÄ°üº¬µÄ×Ö·ûÊÇ·ñÍêÈ«Ïàͬ** [Leetcode : 242. Valid Anagram (Easy)](https://leetcode.com/problems/valid-anagram/description/) -??????????§³§Õ?????????? 26 ??§³§Õ??????????? Hash Table ??????????????????????????¦¶??§³??????????????????????? +×Ö·û´®Ö»°üº¬Ð¡Ð´×Ö·û£¬×ܹ²ÓÐ 26 ¸öСд×Ö·û¡£¿ÉÒÔÓà Hash Table À´Ó³Éä×Ö·ûÓë³öÏÖ´ÎÊý£¬ÒòΪ¼üÖµ·¶Î§ºÜС£¬Òò´Ë¿ÉÒÔÓÃÊý×éÀ´½øÐÐÓ³Éä¡£ -??¨®???? 26 ???????????????????????????????????????????????????????????????? +ʹÓó¤¶ÈΪ 26 µÄÕûÐÍÊý×é¶Ô×Ö·û´®³öÏÖµÄ×Ö·û½øÐÐͳ¼Æ£¬±È½ÏÁ½¸ö×Ö·û´®³öÏÖµÄ×Ö·ûÊýÁ¿ÊÇ·ñÏàͬ¡£ ```java public boolean isAnagram(String s, String t) { @@ -3210,13 +3210,13 @@ public boolean isAnagram(String s, String t) { } ``` -**????????** +**×Ö·û´®Í¬¹¹** [Leetcode : 205. Isomorphic Strings (Easy)](https://leetcode.com/problems/isomorphic-strings/description/) -???? "egg" ?? "add" ???????????????? +ÀýÈç "egg" ºÍ "add" ¾ÍÊôÓÚͬ¹¹×Ö·û´®¡£ -???????????¦Ã????¦Ë?????????????????????????¦Ã????¦Ë????????????????????? +¼Ç¼һ¸ö×Ö·ûÉϴγöÏÖµÄλÖã¬Èç¹ûÁ½¸ö×Ö·û´®ÖÐij¸ö×Ö·ûÉϴγöÏÖµÄλÖÃÒ»Ñù£¬ÄÇô¾ÍÊôÓÚͬ¹¹¡£ ```java public boolean isIsomorphic(String s, String t) { @@ -3233,30 +3233,30 @@ public boolean isIsomorphic(String s, String t) { } ``` -**???????????????????????????????????** +**¼ÆËãÒ»×é×Ö·û¼¯ºÏ¿ÉÒÔ×é³ÉµÄ»ØÎÄ×Ö·û´®µÄ×î´ó³¤¶È** [Leetcode : 409. Longest Palindrome](https://leetcode.com/problems/longest-palindrome/description/) -??¨®???? 128 ?????????????????????????????????????????????????????????????????????????????????§Þ????????????????????????????§Ö???????????????????§Þ? +ʹÓó¤¶ÈΪ 128 µÄÕûÐÍÊý×éÀ´Í³¼ÆÃ¿¸ö×Ö·û³öÏֵĸöÊý£¬Ã¿¸ö×Ö·ûÓÐżÊý¸ö¿ÉÒÔÓÃÀ´¹¹³É»ØÎÄ×Ö·û´®¡£ÒòΪ»ØÎÄ×Ö·û´®×îÖмäµÄÄǸö×Ö·û¿ÉÒÔµ¥¶À³öÏÖ£¬ËùÒÔÈç¹ûÓе¥¶ÀµÄ×Ö·û¾Í°ÑËü·Åµ½×îÖм䡣 ```java public int longestPalindrome(String s) { - int[] cnts = new int[128]; // ascii ????? 128 ?? + int[] cnts = new int[128]; // ascii Âë×ܹ² 128 ¸ö for(char c : s.toCharArray()) cnts[c]++; int ret = 0; for(int cnt : cnts) ret += (cnt / 2) * 2; - if(ret < s.length()) ret ++; // ????????? s ??????§Ö???¦Ä??????????????????????????????????§Þ? + if(ret < s.length()) ret ++; // Õâ¸öÌõ¼þÏ s ÖÐÒ»¶¨Óе¥¸öδʹÓõÄ×Ö·û´æÔÚ£¬¿ÉÒÔ°ÑÕâ¸ö×Ö·û·Åµ½»ØÎĵÄ×îÖмä return ret; } ``` -**?§Ø??????????????????** +**ÅжÏÒ»¸öÕûÊýÊÇ·ñÊÇ»ØÎÄÊý** [Leetcode : 9. Palindrome Number (Easy)](https://leetcode.com/problems/palindrome-number/description/) -??????????????????????????????????????§Ø?? +ÒªÇó²»ÄÜʹÓöîÍâ¿Õ¼ä£¬Ò²¾Í²»Äܽ«ÕûÊýת»»Îª×Ö·û´®½øÐÐÅжϡ£ -???????????????????????????????????????§Ø???????????????? +½«ÕûÊý·Ö³É×óÓÒÁ½²¿·Ö£¬ÓÒ±ßÄDz¿·ÖÐèҪתÖã¬È»ºóÅжÏÕâÁ½²¿·ÖÊÇ·ñÏàµÈ¡£ ```java public boolean isPalindrome(int x) { @@ -3272,18 +3272,18 @@ public boolean isPalindrome(int x) { } ``` -**???????????** +**»ØÎÄ×Ó×Ö·û´®** [Leetcode : 647. Palindromic Substrings (Medium)](https://leetcode.com/problems/palindromic-substrings/description/) -???????????????????¦Ë???????????????????????? +½â¾ö·½°¸ÊÇ´Ó×Ö·û´®µÄijһλ¿ªÊ¼£¬³¢ÊÔ×ÅÈ¥À©Õ¹×Ó×Ö·û´®¡£ ```java private int cnt = 0; public int countSubstrings(String s) { for(int i = 0; i < s.length(); i++) { - extendSubstrings(s, i, i); // ???????? - extendSubstrings(s, i, i + 1); // ??????? + extendSubstrings(s, i, i); // ÆæÊý³¤¶È + extendSubstrings(s, i, i + 1); // żÊý³¤¶È } return cnt; } @@ -3297,7 +3297,7 @@ private void extendSubstrings(String s, int start, int end) { } ``` -**??????????????????? 1 ?? ???? 0 ????????????????????** +**ͳ¼Æ¶þ½øÖÆ×Ö·û´®ÖÐÁ¬Ðø 1 ºÍ Á¬Ðø 0 ÊýÁ¿ÏàͬµÄ×Ó×Ö·û´®¸öÊý** ```html Input: "00110011" @@ -3323,48 +3323,48 @@ public int countBinarySubstrings(String s) { } ``` -**??????????¦Ë????** +**×Ö·û´®Ñ­»·ÒÆÎ»°üº¬** -[ ????????3.1](#) +[ ±à³ÌÖ®ÃÀ£º3.1](#) -????????????? s1 ?? s2 ??????§Ø? s2 ???????? s1 ???????¦Ë???????????????? +¸ø¶¨Á½¸ö×Ö·û´® s1 ºÍ s2 £¬ÒªÇóÅж¨ s2 ÊÇ·ñÄܹ»±» s1 ×öÑ­»·ÒÆÎ»µÃµ½µÄ×Ö·û´®°üº¬¡£ ```html s1 = AABCD, s2 = CDAA Return : true ``` -s1 ?????????¦Ë?????? s1s1 ?????????????????§Ø? s2 ????? s1s1 ????????????¨À? +s1 ½øÐÐÑ­»·ÒÆÎ»µÄ½á¹ûÊÇ s1s1 µÄ×Ó×Ö·û´®£¬Òò´ËÖ»ÒªÅÐ¶Ï s2 ÊÇ·ñÊÇ s1s1 µÄ×Ó×Ö·û´®¼´¿É¡£ -**??????????¦Ë** +**×Ö·û´®Ñ­»·ÒÆÎ»** -[ ????????2.17](#) +[ ±à³ÌÖ®ÃÀ£º2.17](#) -????????????????? k ¦Ë?? +½«×Ö·û´®ÏòÓÒÑ­»·Òƶ¯ k λ¡£ -???? abcd123 ??????? 3 ¦Ë ??? 123abcd +ÀýÈç abcd123 ÏòÓÒÒÆ¶¯ 3 λ µÃµ½ 123abcd -?? abcd123 ?§Ö? abcd ?? 123 ?????????? dcba321?????????????????????????123abcd?? +½« abcd123 ÖÐµÄ abcd ºÍ 123 µ¥¶ÀÄæÐò£¬µÃµ½ dcba321£¬È»ºó¶ÔÕû¸ö×Ö·û´®½øÐÐÄæÐò£¬µÃµ½123abcd¡£ -**??????§Ö??????** +**×Ö·û´®Öе¥´ÊµÄ·­×ª** -[????????????????](#) +[³ÌÐòÔ±´úÂëÃæÊÔÖ¸ÄÏ](#) -???ÁL "I am a student" ????? "student a am I" +ÀýÈ罫 "I am a student" ·­×ª³É "student a am I" -????????????????????????????? +½«Ã¿¸öµ¥´ÊÄæÐò£¬È»ºó½«Õû¸ö×Ö·û´®ÄæÐò¡£ -## ????????? +## Êý×éÓë¾ØÕó -**???????** // TODO +**¾ØÕóÐýת** // TODO -[??????????? P114](#) +[³ÌÐòÔ±ÃæÊÔ½ðµä P114](#) -**???????** //TODO +**Ö®×ÖÐÍ´òÓ¡** //TODO -[???????????????? P335](#) +[³ÌÐòÔ±´úÂëÃæÊÔÖ¸ÄÏ P335](#) -**???????§Ö? 0 ????¦Â** +**°ÑÊý×éÖÐµÄ 0 ÒÆµ½Ä©Î²** [Leetcode : 283. Move Zeroes (Easy)](https://leetcode.com/problems/move-zeroes/description/) @@ -3381,20 +3381,20 @@ s1 ????????? } ``` -**???????????? [1, n] ???????????????�I?????????????????????????????** +**Ò»¸öÊý×éÔªËØÔÚ [1, n] Ö®¼ä£¬ÆäÖÐÒ»¸öÊý±»Ì滻ΪÁíÒ»¸öÊý£¬ÕÒ³ö¶ªÊ§µÄÊýºÍÖØ¸´µÄÊý** [Leetcode : 645. Set Mismatch (Easy)](https://leetcode.com/problems/set-mismatch/description/) -??????????????????????????????????ÁÙ???? O(nlogn)??????????? O(n) ????ÁÙ????O(1) ??ÁÙ???????? +×îÖ±½ÓµÄ·½·¨ÊÇÏȶÔÊý×é½øÐÐÅÅÐò£¬ÕâÖÖ·½·¨Ê±¼ä¸´ÔÓ¶ÈΪ O(nlogn)£¬±¾Ìâ¿ÉÒÔÒÔ O(n) µÄʱ¼ä¸´ÔÓ¶È¡¢O(1) ¿Õ¼ä¸´ÔÓ¶ÈÀ´Çó½â¡£ -?????????????????????????????????????????????¦Ë????? +Ö÷Ҫ˼ÏëÊÇÈÃͨ¹ý½»»»Êý×éÔªËØ£¬Ê¹µÃÊý×éÉϵÄÔªËØÔÚÕýÈ·µÄλÖÃÉÏ¡£ -???????ï…????? i ¦Ë????????? i + 1 ???????????? i ¦Ë ?? nums[i] - 1 ¦Ë?????????? num[i] - 1 ?????? nums[i] ????????¦Ë??????????????????????????????§µ??????¦Í?????????? i ¦Ë???????????????????????????????????????????????????????????????????????????????????? nums[i] != nums[nums[i] - 1 ?????? +±éÀúÊý×飬Èç¹ûµÚ i λÉϵÄÔªËØ²»ÊÇ i + 1 £¬ÄÇô¾Í½»»»µÚ i λ ºÍ nums[i] - 1 λÉϵÄÔªËØ£¬Ê¹µÃ num[i] - 1 µÄÔªËØÎª nums[i] £¬Ò²¾ÍÊǸÃλµÄÔªËØÊÇÕýÈ·µÄ¡£½»»»²Ù×÷ÐèҪѭ»·½øÐУ¬ÒòΪһ´Î½»»»Ã»°ì·¨Ê¹µÃµÚ i λÉϵÄÔªËØÊÇÕýÈ·µÄ¡£µ«ÊÇÒª½»»»µÄÁ½¸öÔªËØ¿ÉÄܾÍÊÇÖØ¸´ÔªËØ£¬ÄÇôѭ»·¾Í¿ÉÄÜÓÀÔ¶½øÐÐÏÂÈ¥£¬ÖÕֹѭ»·µÄ·½·¨ÊǼÓÉÏ nums[i] != nums[nums[i] - 1 Ìõ¼þ¡£ -????????? +ÀàËÆÌâÄ¿£º -- [Leetcode :448. Find All Numbers Disappeared in an Array (Easy)](https://leetcode.com/problems/find-all-numbers-disappeared-in-an-array/description/)????????§Ø??????? -- [Leetcode : 442. Find All Duplicates in an Array (Medium)](https://leetcode.com/problems/find-all-duplicates-in-an-array/description/)?????????????????? +- [Leetcode :448. Find All Numbers Disappeared in an Array (Easy)](https://leetcode.com/problems/find-all-numbers-disappeared-in-an-array/description/)£¬Ñ°ÕÒËùÓжªÊ§µÄÔªËØ +- [Leetcode : 442. Find All Duplicates in an Array (Medium)](https://leetcode.com/problems/find-all-duplicates-in-an-array/description/)£¬Ñ°ÕÒËùÓÐÖØ¸´µÄÔªËØ¡£ ```java public int[] findErrorNums(int[] nums) { @@ -3416,11 +3416,11 @@ private void swap(int[] nums, int i, int j){ } ``` -**????????????????????????? [0, n-1] ???** +**ÕÒ³öÊý×éÖÐÖØ¸´µÄÊý£¬Êý×éÖµÔÚ [0, n-1] Ö®¼ä** [Leetcode : 287. Find the Duplicate Number (Medium)](https://leetcode.com/problems/find-the-duplicate-number/description/) -?????????? +¶þ·Ö²éÕҽⷨ£º ```java public int findDuplicate(int[] nums) { @@ -3438,7 +3438,7 @@ public int findDuplicate(int[] nums) { } ``` -??????????????§Ý?????????????????? +˫ָÕë½â·¨£¬ÀàËÆÓÚÓл·Á´±íÖÐÕÒ³ö»·µÄÈë¿Ú£º ```java public int findDuplicate(int[] nums) { @@ -3457,11 +3457,11 @@ public int findDuplicate(int[] nums) { } ``` -### ??????? +### ÓÐÐò¾ØÕó -?????????????§Ü??§Ù?????????? +ÓÐÐò¾ØÕóÖ¸µÄÊÇÐкÍÁзֱðÓÐÐòµÄ¾ØÕó¡£ -?????????????????????????????? +Ò»°ã¿ÉÒÔÀûÓÃÓÐÐòÐÔʹÓöþ·Ö²éÕÒ·½·¨¡£ ```html [ @@ -3471,7 +3471,7 @@ public int findDuplicate(int[] nums) { ] ``` -**??????????** +**ÓÐÐò¾ØÕó²éÕÒ** [Leetocde : 240. Search a 2D Matrix II (Medium)](https://leetcode.com/problems/search-a-2d-matrix-ii/description/) @@ -3489,7 +3489,7 @@ public boolean searchMatrix(int[][] matrix, int target) { } ``` -**???????? Kth Element** +**ÓÐÐò¾ØÕóµÄ Kth Element** [Leetcode : 378. Kth Smallest Element in a Sorted Matrix ((Medium))](https://leetcode.com/problems/kth-smallest-element-in-a-sorted-matrix/description/) @@ -3504,9 +3504,9 @@ k = 8, return 13. ``` -????¦Ï???[Share my thoughts and Clean Java Code](https://leetcode.com/problems/kth-smallest-element-in-a-sorted-matrix/discuss/85173) +½âÌâ²Î¿¼£º[Share my thoughts and Clean Java Code](https://leetcode.com/problems/kth-smallest-element-in-a-sorted-matrix/discuss/85173) -?????????? +¶þ·Ö²éÕҽⷨ£º ```java public int kthSmallest(int[][] matrix, int k) { @@ -3527,14 +3527,14 @@ public int kthSmallest(int[][] matrix, int k) { } ``` -????? +¶Ñ½â·¨£º ```java public int kthSmallest(int[][] matrix, int k) { int m = matrix.length, n = matrix[0].length; PriorityQueue pq = new PriorityQueue(); for(int j = 0; j < n; j++) pq.offer(new Tuple(0, j, matrix[0][j])); - for(int i = 0; i < k - 1; i++) { // §³???????? k - 1 ?????????????????????? k ???? + for(int i = 0; i < k - 1; i++) { // С¸ù¶Ñ£¬È¥µô k - 1 ¸ö¶Ñ¶¥ÔªËØ£¬´Ëʱ¶Ñ¶¥ÔªËؾÍÊÇµÚ k µÄÊý Tuple t = pq.poll(); if(t.x == m - 1) continue; pq.offer(new Tuple(t.x + 1, t.y, matrix[t.x + 1][t.y])); @@ -3555,25 +3555,25 @@ class Tuple implements Comparable { } ``` -## ???? +## Á´±í -**?§Ø?????????????** +**ÅжÏÁ½¸öÁ´±íµÄ½»µã** [Leetcode : 160. Intersection of Two Linked Lists](https://leetcode.com/problems/intersection-of-two-linked-lists/description/) ```html -A: a1 ?? a2 - ?K - c1 ?? c2 ?? c3 - ?J -B: b1 ?? b2 ?? b3 +A: a1 ¡ú a2 + ¨K + c1 ¡ú c2 ¡ú c3 + ¨J +B: b1 ¡ú b2 ¡ú b3 ``` -?????ÁÙ???? O(n) ??ÁÙ???? O(1) +ÒªÇó£ºÊ±¼ä¸´ÔÓ¶ÈΪ O(n) ¿Õ¼ä¸´ÔÓ¶ÈΪ O(1) -?? A ?????? a + c??B ?????? b + c?????? c ?¦Â????????????????? a + c + b = b + c + a?? +Éè A µÄ³¤¶ÈΪ a + c£¬B µÄ³¤¶ÈΪ b + c£¬ÆäÖÐ c Ϊβ²¿¹«¹²²¿·Ö³¤¶È£¬¿ÉÖª a + c + b = b + c + a¡£ -?????? A ????????????????¦Â??????????????? B ???????????????? B?????????????? B ????????????????¦Â??????????????? A ???????????????? A???????????????? A ?? B ????????????????????????? +µ±·ÃÎÊ A Á´±íµÄÖ¸Õë·ÃÎʵ½Á´±íβ²¿Ê±£¬ÁîËü´ÓÁ´±í B µÄÍ·²¿¿ªÊ¼·ÃÎÊÁ´±í B£»Í¬ÑùµØ£¬µ±·ÃÎÊ B Á´±íµÄÖ¸Õë·ÃÎʵ½Á´±íβ²¿Ê±£¬ÁîËü´ÓÁ´±í A µÄÍ·²¿¿ªÊ¼·ÃÎÊÁ´±í A¡£ÕâÑù¾ÍÄÜ¿ØÖÆ·ÃÎÊ A ºÍ B Á½¸öÁ´±íµÄÖ¸ÕëÄÜͬʱ·ÃÎʵ½½»µã¡£ ```java public ListNode getIntersectionNode(ListNode headA, ListNode headB) { @@ -3587,19 +3587,19 @@ public ListNode getIntersectionNode(ListNode headA, ListNode headB) { } ``` -???????§Ø???????????????????????????? ????????3.6 ???????????????????????????¦Â??????????????????????????????????????????????????????????????????????????????????????????? +Èç¹ûÖ»ÊÇÅжÏÊÇ·ñ´æÔÚ½»µã£¬ÄÇô¾ÍÊÇÁíÒ»¸öÎÊÌ⣬¼´ ±à³ÌÖ®ÃÀ£º3.6 µÄÎÊÌâ¡£ÓÐÁ½Öֽⷨ£º°ÑµÚÒ»¸öÁ´±íµÄ½áβÁ¬½Óµ½µÚ¶þ¸öÁ´±íµÄ¿ªÍ·£¬¿´µÚ¶þ¸öÁ´±íÊÇ·ñ´æÔÚ»·£»»òÕßÖ±½Ó±È½ÏµÚÒ»¸öÁ´±í×îºóÒ»¸ö½ÚµãºÍµÚ¶þ¸öÁ´±í×îºóÒ»¸ö½ÚµãÊÇ·ñÏàͬ¡£ -**?????** +**Á´±í·´×ª** [Leetcode : 206. Reverse Linked List](https://leetcode.com/problems/reverse-linked-list/description/) -??¾Þ?????????????? +Í·²å·¨Äܹ»°´ÄæÐò¹¹½¨Á´±í¡£ ```java public ListNode reverseList(ListNode head) { - ListNode newHead = null; // ??? null ?????????????¦Â + ListNode newHead = null; // ÉèΪ null £¬×÷ΪÐÂÁ´±íµÄ½áβ while(head != null){ ListNode nextNode = head.next; head.next = newHead; @@ -3610,11 +3610,11 @@ public ListNode reverseList(ListNode head) { } ``` -**?öã?????????????** +**¹é²¢Á½¸öÓÐÐòµÄÁ´±í** [Leetcode : 21. Merge Two Sorted Lists](https://leetcode.com/problems/merge-two-sorted-lists/description/) -???????????????????ú›??????‰Ø?????????????????????????????????????????????????????????????????? +Á´±íºÍÊ÷Ò»Ñù£¬¿ÉÒÔÓõݹ鷽ʽÀ´¶¨Ò壺Á´±íÊǿսڵ㣬»òÕßÓÐÒ»¸öÖµºÍÒ»¸öÖ¸ÏòÏÂÒ»¸öÁ´±íµÄÖ¸Õ룬Òò´ËºÜ¶àÁ´±íÎÊÌâ¿ÉÒÔÓõݹéÀ´´¦Àí¡£ ```java public ListNode mergeTwoLists(ListNode l1, ListNode l2) { @@ -3632,7 +3632,7 @@ public ListNode mergeTwoLists(ListNode l1, ListNode l2) { } ``` -**?????????????????????** +**´ÓÓÐÐòÁ´±íÖÐɾ³ýÖØ¸´½Úµã** [Leetcode : 83. Remove Duplicates from Sorted List (Easy)](https://leetcode.com/problems/remove-duplicates-from-sorted-list/description/) @@ -3644,11 +3644,11 @@ public ListNode deleteDuplicates(ListNode head) { } ``` -**????????** +**»ØÎÄÁ´±í** [Leetcode : 234. Palindrome Linked List (Easy)](https://leetcode.com/problems/palindrome-linked-list/description/) -?§Ô?????????¦Ç???????????????????? +ÇгÉÁ½°ë£¬°Ñºó°ë¶Î·´×ª£¬È»ºó±È½ÏÁ½°ëÊÇ·ñÏàµÈ¡£ ```java public boolean isPalindrome(ListNode head) { @@ -3659,11 +3659,11 @@ public boolean isPalindrome(ListNode head) { fast = fast.next.next; } - if(fast != null){ // ???????? slow ??????????? + if(fast != null){ // żÊý½Úµã£¬Èà slow Ö¸ÏòÏÂÒ»¸ö½Úµã slow = slow.next; } - cut(head, slow); // ?§Ô????????? + cut(head, slow); // ÇгÉÁ½¸öÁ´±í ListNode l1 = head, l2 = slow; l2 = reverse(l2); return isEqual(l1, l2); @@ -3695,9 +3695,9 @@ private boolean isEqual(ListNode l1, ListNode l2){ } ``` -**??????????????** +**´ÓÁ´±íÖÐɾ³ý½Úµã** -[????????3.4]() +[±à³ÌÖ®ÃÀ£º3.4]() ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/2c968ec5-0967-49ce-ac06-f8f5c9ab33bc.jpg) @@ -3706,7 +3706,7 @@ B.val = C.val; B.next = C.next; ``` -**??????????????** +**Á´±íÔªËØ°´ÆæÅ¼¾Û¼¯** [Leetcode : 328. Odd Even Linked List (Medium)](https://leetcode.com/problems/odd-even-linked-list/description/) @@ -3727,13 +3727,13 @@ public ListNode oddEvenList(ListNode head) { } ``` -## ?? +## Ê÷ -### ??? +### µÝ¹é -?????????????????????????????????????????????????????????????????????????????? +Ò»¿ÃÊ÷ҪôÊÇ¿ÕÊ÷£¬ÒªÃ´ÓÐÁ½¸öÖ¸Õ룬ÿ¸öÖ¸ÕëÖ¸ÏòÒ»¿ÃÊ÷¡£Ê÷ÊÇÒ»Öֵݹé½á¹¹£¬ºÜ¶àÊ÷µÄÎÊÌâ¿ÉÒÔʹÓõݹéÀ´´¦Àí¡£ -**??????** +**Ê÷µÄ¸ß¶È** [Leetcode : 104. Maximum Depth of Binary Tree (Easy)](https://leetcode.com/problems/maximum-depth-of-binary-tree/description/) @@ -3744,21 +3744,21 @@ public int maxDepth(TreeNode root) { } ``` -**?????** +**·­×ªÊ÷** [Leetcode : 226. Invert Binary Tree (Easy)](https://leetcode.com/problems/invert-binary-tree/description/) ```java public TreeNode invertTree(TreeNode root) { if(root == null) return null; - TreeNode left = root.left; // ???????????? left ??????????????? + TreeNode left = root.left; // ºóÃæµÄ²Ù×÷»á¸Ä±ä left Ö¸Õ룬Òò´ËÏȱ£´æÏÂÀ´ root.left = invertTree(root.right); root.right = invertTree(left); return root; } ``` -**?öã??????** +**¹é²¢Á½¿ÃÊ÷** [Leetcode : 617. Merge Two Binary Trees (Easy)](https://leetcode.com/problems/merge-two-binary-trees/description/) @@ -3774,11 +3774,11 @@ public TreeNode mergeTrees(TreeNode t1, TreeNode t2) { } ``` -**?§Ø?¡¤???????????????** +**ÅжÏ·¾¶ºÍÊÇ·ñµÈÓÚÒ»¸öÊý** [Leetcdoe : 112. Path Sum (Easy)](https://leetcode.com/problems/path-sum/description/) -?????????¡¤?????????? root ?? leaf ?????§ß???? +ÌâÄ¿ÃèÊö£ºÂ·¾¶ºÍ¶¨ÒåΪ´Ó root µ½ leaf µÄËùÓнڵãµÄºÍ ```java public boolean hasPathSum(TreeNode root, int sum) { @@ -3788,13 +3788,13 @@ public boolean hasPathSum(TreeNode root, int sum) { } ``` -**???¡¤??????????????¡¤??????** +**ͳ¼ÆÂ·¾¶ºÍµÈÓÚÒ»¸öÊýµÄ·¾¶ÊýÁ¿** [Leetcode : 437. Path Sum III (Easy)](https://leetcode.com/problems/path-sum-iii/description/) -?????????¡¤????????? root ??????? leaf ??¦Â????????????? +ÌâÄ¿ÃèÊö£ºÂ·¾¶²»Ò»¶¨ÒÔ root ¿ªÍ·²¢ÒÔ leaf ½á⣬µ«ÊDZØÐëÁ¬Ðø -pathSumStartWithRoot() ??????????????????¡¤???????? +pathSumStartWithRoot() ·½·¨Í³¼ÆÒÔij¸ö½Úµã¿ªÍ·µÄ·¾¶¸öÊý¡£ ```java public int pathSum(TreeNode root, int sum) { @@ -3812,7 +3812,7 @@ private int pathSumStartWithRoot(TreeNode root, int sum){ } ``` -**??????** +**Ê÷µÄ¶Ô³Æ** [Leetcode : 101. Symmetric Tree (Easy)](https://leetcode.com/problems/symmetric-tree/description/) @@ -3830,11 +3830,11 @@ private boolean isSymmetric(TreeNode t1, TreeNode t2){ } ``` -**?????** +**ƽºâÊ÷** [Leetcode : 110. Balanced Binary Tree (Easy)](https://leetcode.com/problems/balanced-binary-tree/description/) -????????????????????????§³????? 1 +ÌâÄ¿ÃèÊö£º×óÓÒ×ÓÊ÷¸ß¶È²îÊÇ·ñ¶¼Ð¡ÓÚµÈÓÚ 1 ```java private boolean result = true; @@ -3853,11 +3853,11 @@ public int maxDepth(TreeNode root) { } ``` -**??§³¡¤??** +**×îС·¾¶** [Leetcode : 111. Minimum Depth of Binary Tree (Easy)](https://leetcode.com/problems/minimum-depth-of-binary-tree/description/) -?????????????????????????§³???? +ÌâÄ¿ÃèÊö£ºÊ÷µÄ¸ù½Úµãµ½Ò¶×Ó½ÚµãµÄ×îС³¤¶È ```java public int minDepth(TreeNode root) { @@ -3869,7 +3869,7 @@ public int minDepth(TreeNode root) { } ``` -**????????????** +**ͳ¼Æ×óÒ¶×Ó½ÚµãµÄºÍ** [Leetcode : 404. Sum of Left Leaves (Easy)](https://leetcode.com/problems/sum-of-left-leaves/description/) @@ -3886,11 +3886,11 @@ private boolean isLeaf(TreeNode node){ } ``` -**????????** +**ÐÞ¼ôÒ»¿ÃÊ÷** [Leetcode : 669. Trim a Binary Search Tree (Easy)](https://leetcode.com/problems/trim-a-binary-search-tree/description/) -????????????????? L \~ R ?????? +ÌâÄ¿ÃèÊö£ºÖ»±£ÁôÖµÔÚ L \~ R Ö®¼äµÄ½Úµã ```java public TreeNode trimBST(TreeNode root, int L, int R) { @@ -3903,7 +3903,7 @@ public TreeNode trimBST(TreeNode root, int L, int R) { } ``` -**????** +**×ÓÊ÷** [Leetcode : 572. Subtree of Another Tree (Easy)](https://leetcode.com/problems/subtree-of-another-tree/description/) @@ -3923,11 +3923,11 @@ private boolean isSame(TreeNode s, TreeNode t){ } ``` -**???????????§Û???????????** +**´ÓÓÐÐòÊý×éÖй¹Ôì¶þ²æ²éÕÒÊ÷** [Leetcode : 108. Convert Sorted Array to Binary Search Tree (Easy)](https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/description/) -???????????BST????????????????????????§ß??§³??????????????§ß?? +¶þ²æ²éÕÒÊ÷£¨BST£©£º¸ù½Úµã´óÓÚµÈÓÚ×ó×ÓÊ÷ËùÓнڵ㣬СÓÚµÈÓÚÓÒ×ÓÊ÷ËùÓнڵ㡣 ```java public TreeNode sortedArrayToBST(int[] nums) { @@ -3944,7 +3944,7 @@ private TreeNode toBST(int[] nums, int sIdx, int eIdx){ } ``` -**????????¡¤??** +**Á½½ÚµãµÄ×·¾¶** ```html 1 @@ -3975,7 +3975,7 @@ private int depth(TreeNode root) { } ``` -**??????????§Ö??§³????** +**ÕÒ³ö¶þ²æÊ÷ÖеڶþСµÄ½Úµã** [Leetcode : 671. Second Minimum Node In a Binary Tree (Easy)](https://leetcode.com/problems/second-minimum-node-in-a-binary-tree/description/) @@ -3990,7 +3990,7 @@ Input: Output: 5 ``` -???????????? 0 ???? 2 ???????????????????????????§³???? +Ò»¸ö½ÚµãҪô¾ßÓÐ 0 ¸ö»ò 2 ¸ö×ӽڵ㣬Èç¹ûÓÐ×ӽڵ㣬ÄÇô¸ù½ÚµãÊÇ×îСµÄ½Úµã¡£ ```java public int findSecondMinimumValue(TreeNode root) { @@ -4006,7 +4006,7 @@ public int findSecondMinimumValue(TreeNode root) { } ``` -**??????????????????????** +**ѰÕÒÁ½¸ö½ÚµãµÄ×î½ü¹«¹²×æÏÈ** [Leetcode : 235. Lowest Common Ancestor of a Binary Search Tree (Easy)](https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-search-tree/description/) @@ -4018,7 +4018,7 @@ public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { } ``` -**???????????** +**×î½ü¹«¹²×æÏÈ** [Leetcode : 236. Lowest Common Ancestor of a Binary Tree (Medium) ](https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree/description/) @@ -4031,7 +4031,7 @@ public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { } ``` -**????????????¡¤??????** +**×î´óÏàͬ½ÚµãÖµµÄ·¾¶³¤¶È** [Leetcode : 687. Longest Univalue Path (Easy)](https://pomotodo.com/app/) @@ -4063,7 +4063,7 @@ private int dfs(TreeNode root){ } ``` -**???????** +**¼ä¸ô±éÀú** [Leetcode : 337. House Robber III (Medium)](https://leetcode.com/problems/house-robber-iii/description/) @@ -4082,11 +4082,11 @@ public int rob(TreeNode root) { } ``` -### ??¦Á??? +### ²ã´Î±éÀú -??? BFS???????????????????????›¥????????????????? ????????????????????????????§Ö????????????????????????????????????????????????¦Á??????????????? +ʹÓà BFS£¬²»ÐèҪʹÓÃÁ½¸ö¶ÓÁÐÀ´·Ö±ð´æ´¢µ±Ç°²ãµÄ½ÚµãºÍÏÂÒ»²ãµÄ½Úµã£¬ ÒòΪÔÚ¿ªÊ¼±éÀúÒ»²ãµÄ½Úµãʱ£¬µ±Ç°¶ÓÁÐÖеĽڵãÊý¾ÍÊǵ±Ç°²ãµÄ½ÚµãÊý£¬Ö»Òª¿ØÖƱéÀúÕâô¶à½ÚµãÊý£¬¾ÍÄܱ£Ö¤Õâ´Î±éÀúµÄ¶¼Êǵ±Ç°²ãµÄ½Úµã¡£ -**????????????????????** +**¼ÆËãÒ»¿ÃÊ÷ÿ²ã½ÚµãµÄƽ¾ùÊý** [637. Average of Levels in Binary Tree (Easy)](https://leetcode.com/problems/average-of-levels-in-binary-tree/description/) @@ -4111,7 +4111,7 @@ public List averageOfLevels(TreeNode root) { } ``` -**???????????** +**µÃµ½×óϽǵĽڵã** [Leetcode : 513. Find Bottom Left Tree Value (Easy)](https://leetcode.com/problems/find-bottom-left-tree-value/description/) @@ -4128,7 +4128,7 @@ public int findBottomLeftValue(TreeNode root) { } ``` -### ??§Ü?????? +### ǰÖкóÐò±éÀú ```html 1 @@ -4138,16 +4138,16 @@ public int findBottomLeftValue(TreeNode root) { 4 5 6 ``` -??¦Á??????[1 2 3 4 5 6] -?????????[1 2 4 5 3 6] -??????????[4 2 5 1 3 6] -??????????[4 5 2 6 3 1] +²ã´Î±éÀú˳Ðò£º[1 2 3 4 5 6] +ǰÐò±éÀú˳Ðò£º[1 2 4 5 3 6] +ÖÐÐò±éÀú˳Ðò£º[4 2 5 1 3 6] +ºóÐò±éÀú˳Ðò£º[4 5 2 6 3 1] -??¦Á?????? BFS ???????????? BFS ????????????????????????????????????? DFS ???? +²ã´Î±éÀúʹÓà BFS ʵÏÖ£¬ÀûÓõľÍÊÇ BFS Ò»²ãÒ»²ã±éÀúµÄÌØÐÔ£»¶øÇ°Ðò¡¢ÖÐÐò¡¢ºóÐò±éÀúÀûÓÃÁË DFS ʵÏÖ¡£ -????????????????????????????????????????????? +ǰÐò¡¢ÖÐÐò¡¢ºóÐò±éÖ»ÊÇÔÚ¶Ô½Úµã·ÃÎʵÄ˳ÐòÓÐÒ»µã²»Í¬£¬ÆäËü¶¼Ïàͬ¡£ -?? ??? +¢Ù ǰÐò ```java void dfs(TreeNode root){ @@ -4157,7 +4157,7 @@ void dfs(TreeNode root){ } ``` -?? ???? +¢Ú ÖÐÐò ```java void dfs(TreeNode root){ @@ -4167,7 +4167,7 @@ void dfs(TreeNode root){ } ``` -?? ???? +¢Û ºóÐò ```java void dfs(TreeNode root){ @@ -4177,7 +4177,7 @@ void dfs(TreeNode root){ } ``` -**????????????????????** +**·ÇµÝ¹éʵÏÖ¶þ²æÊ÷µÄǰÐò±éÀú** [Leetcode : 144. Binary Tree Preorder Traversal (Medium)](https://leetcode.com/problems/binary-tree-preorder-traversal/description/) @@ -4191,17 +4191,17 @@ public List preorderTraversal(TreeNode root) { TreeNode node = stack.pop(); ret.add(node.val); if (node.right != null) stack.push(node.right); - if (node.left != null) stack.push(node.left); // ?????????????????????????????????????????????? + if (node.left != null) stack.push(node.left); // ÏÈÌí¼ÓÓÒ×ÓÊ÷ÔÙÌí¼Ó×ó×ÓÊ÷£¬ÕâÑùÊÇΪÁËÈÃ×ó×ÓÊ÷ÔÚÕ»¶¥ } return ret; } ``` -**?????????????????????** +**·ÇµÝ¹éʵÏÖ¶þ²æÊ÷µÄºóÐø±éÀú** [Leetcode : ### 145. Binary Tree Postorder Traversal (Medium)](https://leetcode.com/problems/binary-tree-postorder-traversal/description/) -??????? root -> left -> right?????????? left -> right -> root?????????????????? root -> right -> left??????????????????????????? +ǰÐò±éÀúΪ root -> left -> right£¬ºóÐò±éÀúΪ left -> right -> root£¬¿ÉÒÔÐÞ¸ÄǰÐò±éÀú³ÉΪ root -> right -> left£¬ÄÇôÕâ¸ö˳Ðò¾ÍºÍºóÐò±éÀúÕýºÃÏà·´¡£ ```java public List postorderTraversal(TreeNode root) { @@ -4220,7 +4220,7 @@ public List postorderTraversal(TreeNode root) { } ``` -**?????????????????????** +**·ÇµÝ¹éʵÏÖ¶þ²æÊ÷µÄÖÐÐò±éÀú** [Leetcode : 94. Binary Tree Inorder Traversal (Medium)](https://leetcode.com/problems/binary-tree-inorder-traversal/description/) @@ -4230,7 +4230,7 @@ public List inorderTraversal(TreeNode root) { Stack stack = new Stack<>(); TreeNode cur = root; while(cur != null || !stack.isEmpty()) { - while(cur != null) { // ??????????????? + while(cur != null) { // Ä£ÄâµÝ¹éÕ»µÄ²»¶ÏÉîÈë stack.add(cur); cur = cur.left; } @@ -4242,19 +4242,19 @@ public List inorderTraversal(TreeNode root) { } ``` -**???????????????????????????????** //TODO +**ʹÓÃÖÐÐò±éÀúºÍǰÐò±éÀúÐòÁÐÖØ½¨¶þ²æÊ÷** //TODO ### BST -??????? BST ??????????????? +Ö÷ÒªÀûÓà BST ÖÐÐò±éÀúÓÐÐòµÄÌØµã¡£ -**?? BST ??????????????????????????????** +**ÔÚ BST ÖÐѰÕÒÁ½¸ö½Úµã£¬Ê¹ËüÃǵĺÍΪһ¸ö¸ø¶¨Öµ¡£** [653. Two Sum IV - Input is a BST](https://leetcode.com/problems/two-sum-iv-input-is-a-bst/description/) -?????????????????????????????????????????§Ó???? +ʹÓÃÖÐÐò±éÀúµÃµ½ÓÐÐòÊý×éÖ®ºó£¬ÔÙÀûÓÃ˫ָÕë¶ÔÊý×é½øÐвéÕÒ¡£ -????????????????¡Â?????????????????????????????????????????????????????????????§³? +Ó¦¸Ã×¢Òâµ½£¬ÕâÒ»Ìâ²»ÄÜÓ÷ֱðÔÚ×óÓÒ×ÓÊ÷Á½²¿·ÖÀ´´¦ÀíÕâÖÖ˼Ï룬ÒòΪÁ½¸ö´ýÇóµÄ½Úµã¿ÉÄÜ·Ö±ðÔÚ×óÓÒ×ÓÊ÷ÖС£ ```java public boolean findTarget(TreeNode root, int k) { @@ -4278,11 +4278,11 @@ private void inOrder(TreeNode root, List nums){ } ``` -**?? BST ?§Ó?????§³?????????????????** +**ÔÚ BST ÖвéÕÒ×îСµÄÁ½¸ö½ÚµãÖ®²îµÄ¾ø¶ÔÖµ** [Leetcode : 530. Minimum Absolute Difference in BST (Easy)](https://leetcode.com/problems/minimum-absolute-difference-in-bst/description/) -???? BST ??????????????????????????????????????????????????????????§³??? +ÀûÓà BST µÄÖÐÐò±éÀúΪÓÐÐòµÄÐÔÖÊ£¬¼ÆËãÖÐÐò±éÀúÖÐÁÙ½üµÄÁ½¸ö½ÚµãÖ®²îµÄ¾ø¶ÔÖµ£¬È¡×îСֵ¡£ ```java private int minDiff = Integer.MAX_VALUE; @@ -4302,11 +4302,11 @@ private void inorder(TreeNode node){ } ``` -**?? BST ????????????????????????** +**°Ñ BST ÿ¸ö½ÚµãµÄÖµ¶¼¼ÓÉϱÈËü´óµÄ½ÚµãµÄÖµ** [Leetcode : Convert BST to Greater Tree (Easy)](https://leetcode.com/problems/convert-bst-to-greater-tree/description/) -????????????? +ÏȱéÀúÓÒ×ÓÊ÷¡£ ```java private int sum = 0; @@ -4331,7 +4331,7 @@ private void traver(TreeNode root) { } ``` -**??? BST ?§Ô????????????** +**ѰÕÒ BST ÖгöÏÖ´ÎÊý×î¶àµÄ½Úµã** ```java private int cnt = 1; @@ -4369,11 +4369,11 @@ private void inorder(TreeNode node){ } ``` -**??? BST ??? k ?????** +**ѰÕÒ BST µÄµÚ k ¸öÔªËØ** [Leetcode : 230. Kth Smallest Element in a BST (Medium)](https://leetcode.com/problems/kth-smallest-element-in-a-bst/description/) -?????? +µÝ¹é½â·¨£º ```java public int kthSmallest(TreeNode root, int k) { @@ -4389,7 +4389,7 @@ private int count(TreeNode node) { } ``` -??????????? +ÖÐÐò±éÀú½â·¨£º ```java private int cnt = 0; @@ -4417,9 +4417,9 @@ private void inorder(TreeNode node, int k) { ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/5c638d59-d4ae-4ba4-ad44-80bdc30f38dd.jpg) -Trie???????????????????????§Ø????????????????????????????????? +Trie£¬ÓÖ³ÆÇ°×ºÊ÷»ò×ÖµäÊ÷£¬ÓÃÓÚÅжÏ×Ö·û´®ÊÇ·ñ´æÔÚ»òÕßÊÇ·ñ¾ßÓÐijÖÖ×Ö·û´®Ç°×º¡£ -**?????? Trie** +**ʵÏÖÒ»¸ö Trie** [Leetcode : 208. Implement Trie (Prefix Tree) (Medium)](https://leetcode.com/problems/implement-trie-prefix-tree/description/) @@ -4479,7 +4479,7 @@ class Trie { } ``` -**?????? Trie????????????** +**ʵÏÖÒ»¸ö Trie£¬ÓÃÀ´Çóǰ׺ºÍ** [Leetcode : 677. Map Sum Pairs (Medium)](https://leetcode.com/problems/map-sum-pairs/description/) @@ -4536,13 +4536,13 @@ class MapSum { } ``` -## ? +## ͼ -## ¦Ë???? +## λÔËËã -**1. ???????** +**1. »ù±¾Ô­Àí** -0s ??? ??? 0 ??1s ?????? 1?? +0s ±íʾ Ò»´® 0 £¬1s ±íʾһ´® 1¡£ ``` x ^ 0s = x x & 0s = 0 x | 0s = x @@ -4550,33 +4550,33 @@ x ^ 1s = \~x x & 1s = x x | 1s = 1s x ^ x = 0 x & x = x x | x = x ``` -?? ???? x ^ 1s = \~x ??????????¦Ë?????????????? x ^ x = 0 ???????????????????????????????????????????????? -?? ???? x & 0s = 0 ?? x & 1s = x ?????????????????????????? num ?? mask ??00111100 ????¦Ë???????????? num ???? mask ?? 1 ??????????¦Ë?? -?? ???? x | 0s = x ?? x | 1s = 1s ???????????????¨°?????????? num ?? mask??00111100 ????¦Ë????????? num ???? mask ?? 1 ??????????¦Ë??????? 1 ?? +¢Ù ÀûÓà x ^ 1s = \~x µÄÌØµã£¬¿ÉÒÔ½«Î»¼¶±íʾ·­×ª£»ÀûÓà x ^ x = 0 µÄÌØµã£¬¿ÉÒÔ½«Èý¸öÊýÖÐÖØ¸´µÄÁ½¸öÊýÈ¥³ý£¬Ö»ÁôÏÂÁíÒ»¸öÊý£» +¢Ú ÀûÓà x & 0s = 0 ºÍ x & 1s = x µÄÌØµã£¬¿ÉÒÔʵÏÖÑÚÂë²Ù×÷¡£Ò»¸öÊý num Óë mask £º00111100 ½øÐÐλÓë²Ù×÷£¬Ö»±£Áô num ÖÐÓë mask µÄ 1 ²¿·ÖÏà¶ÔÓ¦µÄλ£» +¢Û ÀûÓà x | 0s = x ºÍ x | 1s = 1s µÄÌØµã£¬¿ÉÒÔʵÏÖÉèÖòÙ×÷¡£Ò»¸öÊý num Óë mask£º00111100 ½øÐÐλ»ò²Ù×÷£¬½« num ÖÐÓë mask µÄ 1 ²¿·ÖÏà¶ÔÓ¦µÄλ¶¼ÉèÖÃΪ 1 ¡£ -\>\> n ????????????????? 2n?? -\>\>\> n ????????????????? 0?? -<< n ????????????????? 2n?? +\>\> n ΪËãÊõÓÒÒÆ£¬Ï൱ÓÚ³ýÒÔ 2n£» +\>\>\> n ΪÎÞ·ûºÅÓÒÒÆ£¬×ó±ß»á²¹ÉÏ 0¡£ +<< n ΪËãÊõ×óÒÆ£¬Ï൱ÓÚ³ËÒÔ 2n¡£ -n&(n-1) ??¦Ë????????? n ??¦Ë??????????????¦Ë???????????????? 10110**100**????? 1 ??? 10110**011**???????????????? 10110**000**?? +n&(n-1) ¸ÃλÔËËãÊÇÈ¥³ý n µÄλ¼¶±íʾÖÐ×îµÍµÄÄÇһλ¡£ÀýÈç¶ÔÓÚ¶þ½øÖƱíʾ 10110**100**£¬¼õÈ¥ 1 µÃµ½ 10110**011**£¬ÕâÁ½¸öÊýÏàÓëµÃµ½ 10110**000**¡£ -n-n&(\~n+1) ??????????? n ??¦Ë??????????????¦Ë?? +n-n&(\~n+1) ¸ÅÔËËãÊÇÈ¥³ý n µÄλ¼¶±íʾÖÐ×î¸ßµÄÄÇһλ¡£ -n&(-n) ???????? n ??¦Ë??????????????¦Ë??-n ??? n ?????? 1????????????? 10110**100**??-n ??? 01001**100**???????? 00000**100** +n&(-n) ¸ÃÔËËãµÃµ½ n µÄλ¼¶±íʾÖÐ×îµÍµÄÄÇһλ¡£-n µÃµ½ n µÄ·´Âë¼Ó 1£¬¶ÔÓÚ¶þ½øÖƱíʾ 10110**100**£¬-n µÃµ½ 01001**100**£¬ÏàÓëµÃµ½ 00000**100** -**2. mask ????** +**2. mask ¼ÆËã** -???? 111111111???? 0 ????????\~0?? +Òª»ñÈ¡ 111111111£¬½« 0 È¡·´¼´¿É£¬\~0¡£ -??????§Ö? i ¦Ë? 1 ?? mask???? 1 ??????? i ¦Ë?????1<<i ?????? 1<<5 ?????§Ö? 5 ¦Ë? 1 ?? mask ??00010000?? +ÒªµÃµ½Ö»ÓÐµÚ i λΪ 1 µÄ mask£¬½« 1 Ïò×óÒÆ¶¯ i λ¼´¿É£¬1<<i ¡£ÀýÈç 1<<5 µÃµ½Ö»ÓÐµÚ 5 λΪ 1 µÄ mask £º00010000¡£ -???? 1 ?? i ¦Ë? 1 ?? mask??1<<(i+1)-1 ????????ÁL 1<<(4+1)-1 = 00010000-1 = 00001111?? +ÒªµÃµ½ 1 µ½ i λΪ 1 µÄ mask£¬1<<(i+1)-1 ¼´¿É£¬ÀýÈ罫 1<<(4+1)-1 = 00010000-1 = 00001111¡£ -???? 1 ?? i ¦Ë? 0 ?? mask????éí 1 ?? i ¦Ë? 1 ?? mask ??????? \~(1<<(i+1)-1)?? +ÒªµÃµ½ 1 µ½ i λΪ 0 µÄ mask£¬Ö»Ð轫 1 µ½ i λΪ 1 µÄ mask È¡·´£¬¼´ \~(1<<(i+1)-1)¡£ -**3. ¦Ë????????** +**3. λ²Ù×÷¾ÙÀý** -?? ????? i ¦Ë +¢Ù »ñÈ¡µÚ i λ num & 00010000 != 0 @@ -4584,7 +4584,7 @@ num & 00010000 != 0 (num & (1 << i)) != 0; ``` -?? ???? i ¦Ë????? 1 +¢Ú ½«µÚ i λÉèÖÃΪ 1 num | 00010000 @@ -4592,7 +4592,7 @@ num | 00010000 num | (1 << i); ``` -?? ???? i ¦Ë???? 0 +¢Û ½«µÚ i λÇå³ýΪ 0 num & 11101111 @@ -4600,7 +4600,7 @@ num & 11101111 num & (\~(1 << i)) ``` -?? ?????¦Ë???? i ¦Ë???? 0 +¢Ü ½«×î¸ßλµ½µÚ i λÇå³ýΪ 0 num & 00001111 @@ -4608,7 +4608,7 @@ num & 00001111 num & ((1 << i) - 1); ``` -?? ???? 0 ¦Ë???? i ¦Ë???? 0 +¢Ý ½«µÚ 0 λµ½µÚ i λÇå³ýΪ 0 num & 11110000 @@ -4616,27 +4616,27 @@ num & 11110000 num & (\~((1 << (i+1)) - 1)); ``` -?? ???? i ¦Ë????? 0 ???? 1 +¢Þ ½«µÚ i λÉèÖÃΪ 0 »òÕß 1 -????? i ¦Ë??????? v ???? i ¦Ë????§³?¦Ë?????? +ÏȽ«µÚ i λÇåÁ㣬Ȼºó½« v ×óÒÆ i λ£¬Ö´ÐС°Î»»ò¡±ÔËËã¡£ ```java (num & (1 << i)) | (v << i); ``` -**4. Java ?§Ö?¦Ë????** +**4. Java ÖеÄλ²Ù×÷** ```html -static int Integer.bitCount() // ??? 1 ?????? -static int Integer.highestOneBit() // ??????¦Ë -static String toBinaryString(int i) // ???¦Ë??????????????? +static int Integer.bitCount() // ͳ¼Æ 1 µÄÊýÁ¿ +static int Integer.highestOneBit() // »ñµÃ×î¸ßλ +static String toBinaryString(int i) // ת»»Î»¶þ½øÖƱíʾµÄ×Ö·û´® ``` -**???????????????????§Ø???¦Ë???** +**ͳ¼ÆÁ½¸öÊýµÄ¶þ½øÖƱíʾÓжàÉÙλ²»Í¬** [Leetcode : 461. Hamming Distance (Easy)](https://leetcode.com/problems/hamming-distance/) -????????????????????????????¦Ë???? 1 ??????§Ø???? 1 ???¨À? +¶ÔÁ½¸öÊý½øÐÐÒì»ò²Ù×÷£¬²»Í¬µÄÄÇһλ½á¹ûΪ 1 £¬Í³¼ÆÓжàÉÙ¸ö 1 ¼´¿É¡£ ```java public int hammingDistance(int x, int y) { @@ -4650,7 +4650,7 @@ public int hammingDistance(int x, int y) { } ``` -??????? Integer.bitcount() ????? 1 ????????? +¿ÉÒÔʹÓà Integer.bitcount() À´Í³¼Æ 1 ¸öµÄ¸öÊý¡£ ```java public int hammingDistance(int x, int y) { @@ -4658,7 +4658,7 @@ public int hammingDistance(int x, int y) { } ``` -**?????????????¦Ë** +**·­×ªÒ»¸öÊýµÄ±ÈÌØÎ»** [Leetcode : 190. Reverse Bits (Easy)](https://leetcode.com/problems/reverse-bits/description/) @@ -4674,9 +4674,9 @@ public int reverseBits(int n) { } ``` -**??????????????????????** +**²»ÓöîÍâ±äÁ¿½»»»Á½¸öÕûÊý** -[???????????????? ??P317](#) +[³ÌÐòÔ±´úÂëÃæÊÔÖ¸ÄÏ £ºP317](#) ```java a = a ^ b; @@ -4684,13 +4684,13 @@ b = a ^ b; a = a ^ b; ``` -?? c = a ^ b????? b ^ c = b ^ b ^ a = a??a ^ c = a ^ a ^ b = b?? +½« c = a ^ b£¬ÄÇô b ^ c = b ^ b ^ a = a£¬a ^ c = a ^ a ^ b = b¡£ -**?§Ø??????????? 4 ?? n ?¦Ç?** +**ÅжÏÒ»¸öÊýÊDz»ÊÇ 4 µÄ n ´Î·½** [Leetcode : 342. Power of Four (Easy)](https://leetcode.com/problems/power-of-four/) -??????????????????????????¦Ë? 1 ????????? 0 ?????? 16 ?? 10000?????????? 1 ??????? 2 ¦Ë??????????????????????????????????????§Ø???????????? +¸ÃÊý¶þ½øÖƱíʾÓÐÇÒÖ»ÓÐÒ»¸öÆæÊýλΪ 1 £¬ÆäÓàµÄ¶¼Îª 0 £¬ÀýÈç 16 £º 10000¡£¿ÉÒÔÿ´Î°Ñ 1 Ïò×óÒÆ¶¯ 2 룬¾ÍÄܹ¹Ôì³öÕâÖÖÊý×Ö£¬È»ºó±È½Ï¹¹Ôì³öÀ´µÄÊýÓëÒªÅжϵÄÊýÊÇ·ñÏàͬ¡£ ```java public boolean isPowerOfFour(int num) { @@ -4703,7 +4703,7 @@ public boolean isPowerOfFour(int num) { } ``` -??????? Java ?? Integer.toString() ?????????????? 4 ????????????????????§Ø??????????? 1 ????? +Ò²¿ÉÒÔÓà Java µÄ Integer.toString() ·½·¨½«¸ÃÊýת»»Îª 4 ½øÖÆÐÎʽµÄ×Ö·û´®£¬È»ºóÅжÏ×Ö·û´®ÊÇ·ñÒÔ 1 ¿ªÍ·¡£ ```java public boolean isPowerOfFour(int num) { @@ -4711,11 +4711,11 @@ public boolean isPowerOfFour(int num) { } ``` -**?§Ø??????????? 2 ?? n ?¦Ç?** +**ÅжÏÒ»¸öÊýÊDz»ÊÇ 2 µÄ n ´Î·½** [Leetcode : 231. Power of Two (Easy)](https://leetcode.com/problems/power-of-two/description/) -????????? Power of Four ??????????? 2 ?? n ?¦Ç???????????????????????? 1 ????? +ͬÑù¿ÉÒÔÓà Power of Four µÄ·½·¨£¬µ«ÊÇ 2 µÄ n ´Î·½¸üÌØÊ⣬ËüµÄ¶þ½øÖƱíʾֻÓÐÒ»¸ö 1 ´æÔÚ¡£ ```java public boolean isPowerOfTwo(int n) { @@ -4723,7 +4723,7 @@ public boolean isPowerOfTwo(int n) { } ``` -???? 1000 & 0111 == 0 ??????????????????? +ÀûÓà 1000 & 0111 == 0 ÕâÖÖÐÔÖÊ£¬µÃµ½ÒÔϽⷨ£º ```java public boolean isPowerOfTwo(int n) { @@ -4731,13 +4731,13 @@ public boolean isPowerOfTwo(int n) { } ``` -**??????¦·??????????????** +**Êý×éÖÐΨһһ¸ö²»Öظ´µÄÔªËØ** [Leetcode : 136. Single Number (Easy)](https://leetcode.com/problems/single-number/description/) -?????????????????? 0??????????????????????????????????????????????? +Á½¸öÏàͬµÄÊýÒì»òµÄ½á¹ûΪ 0£¬¶ÔËùÓÐÊý½øÐÐÒì»ò²Ù×÷£¬×îºóµÄ½á¹û¾ÍÊǵ¥¶À³öÏÖµÄÄǸöÊý¡£ -??????§µ?[Leetcode : 389. Find the Difference (Easy)](https://leetcode.com/problems/find-the-difference/description/)??????????????????????????????????????????? O(1) ???ÁÙ?????????????????? HashSet?? +ÀàËÆµÄÓУº[Leetcode : 389. Find the Difference (Easy)](https://leetcode.com/problems/find-the-difference/description/)£¬Á½¸ö×Ö·û´®½öÓÐÒ»¸ö×Ö·û²»Ïàͬ£¬Ê¹ÓÃÒì»ò²Ù×÷¿ÉÒÔÒÔ O(1) µÄ¿Õ¼ä¸´ÔÓ¶ÈÀ´Çó½â£¬¶ø²»ÐèҪʹÓà HashSet¡£ ```java public int singleNumber(int[] nums) { @@ -4747,22 +4747,22 @@ public int singleNumber(int[] nums) { } ``` -**?????§Ó?????????????** +**Êý×éÖв»Öظ´µÄÁ½¸öÔªËØ** [Leetcode : 260. Single Number III (Medium)](https://leetcode.com/problems/single-number-iii/description/) -???????????????¦Ë??????????????¦Ë???????? +Á½¸ö²»ÏàµÈµÄÔªËØÔÚλ¼¶±íʾÉϱض¨»áÓÐһλ´æÔÚ²»Í¬¡£ -?????????????????????????????????????????????????? +½«Êý×éµÄËùÓÐÔªËØÒì»òµÃµ½µÄ½á¹ûΪ²»´æÔÚÖØ¸´µÄÁ½¸öÔªËØÒì»òµÄ½á¹û¡£ -diff &= -diff ????? diff ?????? 0 ??¦Ë??????????????????????????¦Ë??????????????????¦Ë?????????¦Ë?????????????????????? +diff &= -diff µÃµ½³ö diff ×îÓҲ಻Ϊ 0 µÄ룬Ҳ¾ÍÊDz»´æÔÚÖØ¸´µÄÁ½¸öÔªËØÔÚλ¼¶±íʾÉÏ×îÓҲ಻ͬµÄÄÇһ룬ÀûÓÃÕâһλ¾Í¿ÉÒÔ½«Á½¸öÔªËØÇø·Ö¿ªÀ´¡£ ```java public int[] singleNumber(int[] nums) { int diff = 0; for(int num : nums) diff ^= num; - // ????????¦Ë + // µÃµ½×îÓÒһλ diff &= -diff; int[] ret = new int[2]; for(int num : nums) { @@ -4773,11 +4773,11 @@ public int[] singleNumber(int[] nums) { } ``` -**?§Ø????????¦Ë?????????????????? 0 ?? 1** +**ÅжÏÒ»¸öÊýµÄλ¼¶±íʾÊÇ·ñ²»»á³öÏÖÁ¬ÐøµÄ 0 ºÍ 1** [Leetcode : 693. Binary Number with Alternating Bits (Easy)](https://leetcode.com/problems/binary-number-with-alternating-bits/description/) -???? 10101 ????¦Ë?????????????????????? 1 ¦Ë??? 1010 ?????????????¦Ë???????????????????? 11111?? +¶ÔÓÚ 10101 ÕâÖÖλ¼¶±íʾµÄÊý£¬°ÑËüÏòÓÒÒÆ¶¯ 1 λµÃµ½ 1010 £¬ÕâÁ½¸öÊýÿ¸öλ¶¼²»Í¬£¬Òò´ËÒì»òµÃµ½µÄ½á¹ûΪ 11111¡£ ```java public boolean hasAlternatingBits(int n) { @@ -4786,13 +4786,13 @@ public boolean hasAlternatingBits(int n) { } ``` -**????????????** +**ÇóÒ»¸öÊýµÄ²¹Âë** [Leetcode : 476. Number Complement (Easy)](https://leetcode.com/problems/number-complement/description/) -??????????????§Ö??? 0 ???? +²»¿¼ÂǶþ½øÖƱíʾÖеÄÊ× 0 ²¿·Ö -???? 00000101??????????????? 00000111 ?????????????????????????????? 00000111?? +¶ÔÓÚ 00000101£¬ÒªÇó²¹Âë¿ÉÒÔ½«ËüÓë 00000111 ½øÐÐÒì»ò²Ù×÷¡£ÄÇôÎÊÌâ¾Íת»»ÎªÇóÑÚÂë 00000111¡£ ```java public int findComplement(int num) { @@ -4804,7 +4804,7 @@ public int findComplement(int num) { } ``` -???????? Java ?? Integer.highestOneBit() ????????¨²????? 1 ?????? +¿ÉÒÔÀûÓà Java µÄ Integer.highestOneBit() ·½·¨À´»ñµÃº¬ÓÐÊ× 1 µÄÊý¡£ ```java public int findComplement(int num) { @@ -4815,7 +4815,7 @@ public int findComplement(int num) { } ``` -???? 10000000 ?????????????? 11111111?????????????¡¤????? +¶ÔÓÚ 10000000 ÕâÑùµÄÊýÒªÀ©Õ¹³É 11111111£¬¿ÉÒÔÀûÓÃÒÔÏ·½·¨£º ```html mask |= mask >> 1 11000000 @@ -4835,11 +4835,11 @@ public int findComplement(int num) { } ``` -**???????????** +**ʵÏÖÕûÊýµÄ¼Ó·¨** [Leetcode : 371. Sum of Two Integers (Easy)](https://leetcode.com/problems/sum-of-two-integers/description/) -a ^ b ?????§á????¦Ë???????????????(a & b) << 1 ?????¦Ë???????????????? (a & b) << 1 ?????????? 0???????????ï…??¦Ë?????? 0 ??????????????¦Ë???? 0?????????? +a ^ b ±íʾûÓп¼ÂǽøÎ»µÄÇé¿öÏÂÁ½ÊýµÄºÍ£¬(a & b) << 1 ¾ÍÊǽøÎ»¡£µÝ¹é»áÖÕÖ¹µÄÔ­ÒòÊÇ (a & b) << 1 ×îÓұ߻á¶àÒ»¸ö 0£¬ÄÇô¼ÌÐøµÝ¹é£¬½øÎ»×îÓÒ±ßµÄ 0 »áÂýÂýÔö¶à£¬×îºó½øÎ»»á±äΪ 0£¬µÝ¹éÖÕÖ¹¡£ ```java public int getSum(int a, int b) { @@ -4847,17 +4847,17 @@ public int getSum(int a, int b) { } ``` -**??????????** +**ʵÏÖÕûÊý³Ë·¨** -[???????????????? P319](#) +[³ÌÐòÔ±´úÂëÃæÊÔÖ¸ÄÏ P319](#) -**??????????????** +**×Ö·û´®Êý×é×î´ó³Ë»ý** [Leetcode : 318. Maximum Product of Word Lengths (Medium)](https://leetcode.com/problems/maximum-product-of-word-lengths/description/) -?????????????????????????????§³§Õ????????????????????????????????????????????????????????????????????? +ÌâÄ¿ÃèÊö£º×Ö·û´®Êý×éµÄ×Ö·û´®Ö»º¬ÓÐСд×Ö·û¡£Çó½â×Ö·û´®Êý×éÖÐÁ½¸ö×Ö·û´®³¤¶ÈµÄ×î´ó³Ë»ý£¬ÒªÇóÕâÁ½¸ö×Ö·û´®²»Äܺ¬ÓÐÏàͬ×Ö·û¡£ -?????¡¤????????????????§Ø???????????????????????????????????§³§Õ???????? 26 ¦Ë????????????? 32 ¦Ë?????????›¥??????????????? +½âÌâ˼·£º±¾ÌâÖ÷ÒªÎÊÌâÊÇÅжÏÁ½¸ö×Ö·û´®ÊÇ·ñº¬Ïàͬ×Ö·û£¬ÓÉÓÚ×Ö·û´®Ö»º¬ÓÐСд×Ö·û£¬×ܹ² 26 룬Òò´Ë¿ÉÒÔÓÃÒ»¸ö 32 λµÄÕûÊýÀ´´æ´¢Ã¿¸ö×Ö·ûÊÇ·ñ³öÏÖ¹ý¡£ ```java public int maxProduct(String[] words) { @@ -4881,14 +4881,14 @@ public int maxProduct(String[] words) { } ``` -# ?¦Ï????? +# ²Î¿¼×ÊÁÏ - [Leetcode](https://leetcode.com/problemset/algorithms/?status=Todo) -- ??? Offer -- ??????????? -- ?????? -- ???????????????? -- ????????????? -- ?? -- ???????????????§Ý?????? +- ½£Ö¸ Offer +- ³ÌÐòÔ±ÃæÊÔ½ðµä +- ±à³ÌÖ®ÃÀ +- ³ÌÐòÔ±´úÂëÃæÊÔÖ¸ÄÏ +- Êý¾Ý½á¹¹ÓëËã·¨·ÖÎö +- Ëã·¨ +- ÍõµÀÂÛ̳¼ÆËã»ú¿¼ÑлúÊÔÖ¸ÄÏ diff --git a/notes/Linux.md b/notes/Linux.md index 3de0ef8a..dc817fd6 100644 --- a/notes/Linux.md +++ b/notes/Linux.md @@ -1,41 +1,41 @@ -* [???¨°??????????](#???¨°??????????) - * [????](#????) - * [???](#???) - * [??????](#??????) - * [?????](#?????) +* [³£ÓòÙ×÷ÒÔ¼°¸ÅÄî](#³£ÓòÙ×÷ÒÔ¼°¸ÅÄî) + * [ÇóÖú](#ÇóÖú) + * [¹Ø»ú](#¹Ø»ú) + * [²é¿´½ø³Ì](#²é¿´½ø³Ì) + * [²é¿´¶Ë¿Ú](#²é¿´¶Ë¿Ú) * [PATH](#path) - * [???§Ö??](#???§Ö??) + * [ÔËÐеȼ¶](#ÔËÐеȼ¶) * [sudo](#sudo) * [GNU](#gnu) - * [????????](#????????) - * [???????§Ñ·Ú](#???????§Ñ·Ú) -* [????](#????) - * [??????????](#??????????) - * [??????](#??????) + * [°ü¹ÜÀí¹¤¾ß](#°ü¹ÜÀí¹¤¾ß) + * [³£¼û·¢Ðа汾](#³£¼û·¢Ðа汾) +* [·ÖÇø](#·ÖÇø) + * [´ÅÅ̵ÄÎļþÃû](#´ÅÅ̵ÄÎļþÃû) + * [·ÖÇø±í](#·ÖÇø±í) * [1. MBR](#1-mbr) * [2. GPT](#2-gpt) - * [??????????](#??????????) + * [¿ª»ú¼ì²â³ÌÐò](#¿ª»ú¼ì²â³ÌÐò) * [1. BIOS](#1-bios) * [2. UEFI](#2-uefi) - * [????](#????) -* [??????????????](#??????????????) - * [?????????](#?????????) - * [?????????????????](#?????????????????) - * [1. ?????????????](#1-?????????????) - * [2. ???????????](#2-???????????) - * [3. ??????](#3-??????) - * [???????](#???????) - * [?????????](#?????????) - * [??????](#??????) -* [???????](#???????) - * [??????](#??????) - * [????????????????](#????????????????) + * [¹ÒÔØ](#¹ÒÔØ) +* [ÎļþȨÏÞÓëĿ¼ÅäÖÃ](#ÎļþȨÏÞÓëĿ¼ÅäÖÃ) + * [ÎļþȨÏÞ¸ÅÄî](#ÎļþȨÏÞ¸ÅÄî) + * [ÎļþÊôÐÔÒÔ¼°È¨ÏÞµÄÐÞ¸Ä](#ÎļþÊôÐÔÒÔ¼°È¨ÏÞµÄÐÞ¸Ä) + * [1. ÐÞ¸ÄÎļþËùÊôȺ×é](#1-ÐÞ¸ÄÎļþËùÊôȺ×é) + * [2. ÐÞ¸ÄÎļþÓµÓÐÕß](#2-ÐÞ¸ÄÎļþÓµÓÐÕß) + * [3. ÐÞ¸ÄȨÏÞ](#3-ÐÞ¸ÄȨÏÞ) + * [Ŀ¼µÄȨÏÞ](#Ŀ¼µÄȨÏÞ) + * [ÎļþĬÈÏȨÏÞ](#ÎļþĬÈÏȨÏÞ) + * [Ŀ¼ÅäÖÃ](#Ŀ¼ÅäÖÃ) +* [ÎļþÓëĿ¼](#ÎļþÓëĿ¼) + * [Îļþʱ¼ä](#Îļþʱ¼ä) + * [ÎļþÓëĿ¼µÄ»ù±¾²Ù×÷](#ÎļþÓëĿ¼µÄ»ù±¾²Ù×÷) * [1. ls](#1-ls) * [2. cp](#2-cp) * [3. rm](#3-rm) * [4. mv](#4-mv) - * [??????????](#??????????) + * [»ñÈ¡ÎļþÄÚÈÝ](#»ñÈ¡ÎļþÄÚÈÝ) * [1. cat](#1-cat) * [2. tac](#2-tac) * [3. more](#3-more) @@ -44,105 +44,105 @@ * [6. tail](#6-tail) * [7. od](#7-od) * [8. touch](#8-touch) - * [????????????](#????????????) + * [Ö¸ÁîÓëÎļþËÑË÷](#Ö¸ÁîÓëÎļþËÑË÷) * [1. which](#1-which) * [2. whereis](#2-whereis) * [3. locate](#3-locate) * [4. find](#4-find) - * [4.1 ??????§Û?????](#41-??????§Û?????) - * [4.2 ???????????????????§Û?????](#42-???????????????????§Û?????) - * [4.3 ??????????????§Û?????](#43-??????????????§Û?????) -* [???????????](#???????????) - * [??????????](#??????????) + * [4.1 Óëʱ¼äÓйصÄÑ¡Ïî](#41-Óëʱ¼äÓйصÄÑ¡Ïî) + * [4.2 ÓëÎļþÓµÓÐÕߺÍËùÊôȺ×éÓйصÄÑ¡Ïî](#42-ÓëÎļþÓµÓÐÕߺÍËùÊôȺ×éÓйصÄÑ¡Ïî) + * [4.3 ÓëÎļþȨÏÞºÍÃû³ÆÓйصÄÑ¡Ïî](#43-ÓëÎļþȨÏÞºÍÃû³ÆÓйصÄÑ¡Ïî) +* [´ÅÅÌÓëÎļþϵͳ](#´ÅÅÌÓëÎļþϵͳ) + * [ÎļþϵͳµÄ×é³É](#ÎļþϵͳµÄ×é³É) * [inode](#inode) - * [???? inode ?? block](#????-inode-??-block) - * [????????????????](#????????????????) - * [1. ???????](#1-???????) - * [2. ????????](#2-????????) -* [???????](#???????) - * [???](#???) + * [Ŀ¼µÄ inode Óë block](#Ŀ¼µÄ-inode-Óë-block) + * [ʵÌåÁ´½ÓÓë·ûºÅÁ´½Ó](#ʵÌåÁ´½ÓÓë·ûºÅÁ´½Ó) + * [1. ʵÌåÁ´½Ó](#1-ʵÌåÁ´½Ó) + * [2. ·ûºÅÁ´½Ó](#2-·ûºÅÁ´½Ó) +* [ѹËõÓë´ò°ü](#ѹËõÓë´ò°ü) + * [ѹËõ](#ѹËõ) * [1. gzip](#1-gzip) * [2. bzip2](#2-bzip2) * [3. xz](#3-xz) - * [???](#???) + * [´ò°ü](#´ò°ü) * [BASH](#bash) - * [Bash????](#bash????) - * [????????](#????????) - * [??????????](#??????????) - * [???????????](#???????????) - * [???????](#???????) - * [1. ??????cut](#1-??????cut) - * [2. ????????sort??uniq](#2-????????sort??uniq) - * [3. ???????????tee](#3-???????????tee) - * [4. ?????????tr??col??expand??join??paste](#4-?????????tr??col??expand??join??paste) - * [5. ???????split](#5-???????split) -* [??????????????????????](#??????????????????????) + * [BashÌØÐÔ](#bashÌØÐÔ) + * [±äÁ¿²Ù×÷](#±äÁ¿²Ù×÷) + * [Ö¸ÁîËÑË÷˳Ðò](#Ö¸ÁîËÑË÷˳Ðò) + * [Êý¾ÝÁ÷ÖØ¶¨Ïò](#Êý¾ÝÁ÷ÖØ¶¨Ïò) + * [¹ÜÏßÖ¸Áî](#¹ÜÏßÖ¸Áî) + * [1. ÌáȡָÁcut](#1-ÌáȡָÁîcut) + * [2. ÅÅÐòÃüÁsort¡¢uniq](#2-ÅÅÐòÃüÁîsortuniq) + * [3. Ë«ÏòÊä³öÖØ¶¨Ïò£ºtee](#3-Ë«ÏòÊä³öÖØ¶¨Ïòtee) + * [4. ×Ö·ûת»»Ö¸Átr¡¢col¡¢expand¡¢join¡¢paste](#4-×Ö·ûת»»Ö¸Áîtrcolexpandjoinpaste) + * [5. ·ÖÇøÖ¸Ásplit](#5-·ÖÇøÖ¸Áîsplit) +* [Õý¹æ±íʾ·¨ÓëÎļþ¸ñʽ»¯´¦Àí](#Õý¹æ±íʾ·¨ÓëÎļþ¸ñʽ»¯´¦Àí) * [grep](#grep) * [printf](#printf) * [awk](#awk) -* [vim ??????](#vim-??????) -* [?¦Ï?????](#?¦Ï?????) +* [vim Èý¸öģʽ](#vim-Èý¸öģʽ) +* [²Î¿¼×ÊÁÏ](#²Î¿¼×ÊÁÏ) -# ???¨°?????????? +# ³£ÓòÙ×÷ÒÔ¼°¸ÅÄî -## ???? +## ÇóÖú **1. --help** -????????¡Â?????????? +Ö¸ÁîµÄ»ù±¾Ó÷¨ÓëÑ¡Ïî½éÉÜ¡£ **2. man** -man ?? manual ????§Õ??????????????????????? +man ÊÇ manual µÄËõд£¬½«Ö¸ÁîµÄ¾ßÌåÐÅÏ¢ÏÔʾ³öÀ´¡£ -????? man date ????? DATE(1) ????????§Ö?????????????????????????????????????? +µ±Ö´ÐÐ man date ʱ£¬ÓÐ DATE(1) ³öÏÖ£¬ÆäÖеÄÊý×Ö´ú±íÖ¸ÁîµÄÀàÐÍ£¬³£ÓõÄÊý×Ö¼°ÆäÀàÐÍÈçÏ£º -| ???? | ???? | +| ´úºÅ | ÀàÐÍ | | -- | -- | -| 1 | ????? shell ?????§á????????????????????? | -| 5 | ??????? | -| 8 | ????????????????????? | +| 1 | Óû§ÔÚ shell »·¾³ÖпÉÒÔ²Ù×÷µÄÖ¸Áî»òÕß¿ÉÖ´ÐÐÎļþ | +| 5 | ÅäÖÃÎļþ | +| 8 | ϵͳ¹ÜÀíÔ±¿ÉÒÔʹÓõĹÜÀíÖ¸Áî | **3. info** -info ?? man ????????? info ???????????????—¨????????????????? +info Óë man ÀàËÆ£¬µ«ÊÇ info ½«Îĵµ·Ö³ÉÒ»¸ö¸öÒ³Ãæ£¬Ã¿¸öÒ³Ãæ¿ÉÒÔ½øÐÐÌø×ª¡£ -## ??? +## ¹Ø»ú -**1. ???????§Õ????? sync** +**1. Êý¾Ýͬ²½Ð´Èë´ÅÅÌ sync** -?????????????????§Õ????¦Ë??????§Ö?????????????????????????????????????????? sync ????????? +ΪÁ˼ӿì¶Ô´ÅÅÌÉÏÎļþµÄ¶ÁдËÙ¶È£¬Î»ÓÚÄÚ´æÖеÄÎļþÊý¾Ý²»»áÁ¢¼´Í¬²½µ½´ÅÅÌÉÏ£¬Òò´Ë¹Ø»ú֮ǰÐèÒªÏȽøÐÐ sync ͬ²½²Ù×÷¡£ **2. shutdown** ```html -# /sbin/shutdown [-krhc] [???] [??????] --k ?? ??????????????????????????????????? --r ?? ??????????????????????? --h ?? ?????????????????????? --c ?? ??????????§Ö? shutdown ??????? +# /sbin/shutdown [-krhc] [ʱ¼ä] [¾¯¸æÑ¶Ï¢] +-k £º ²»»á¹Ø»ú£¬Ö»ÊÇ·¢Ë;¯¸æÑ¶Ï¢£¬Í¨ÖªËùÓÐÔÚÏßµÄÓû§ +-r £º ½«ÏµÍ³µÄ·þÎñÍ£µôºó¾ÍÖØÐÂÆô¶¯ +-h £º ½«ÏµÍ³µÄ·þÎñÍ£µôºó¾ÍÁ¢¼´¹Ø»ú +-c £º È¡ÏûÒѾ­ÔÚ½øÐÐµÄ shutdown Ö¸ÁîÄÚÈÝ ``` -**3. ??????????** +**3. ÆäËü¹Ø»úÖ¸Áî** -reboot??halt??poweroff?? +reboot¡¢halt¡¢poweroff¡£ -## ?????? +## ²é¿´½ø³Ì -ps ??þŸ +ps Ö¸Áî¡£ -????? theadx ?????????? +ÀýÈç²é¿´ theadx µÄÏà¹ØÐÅÏ¢£º ```html ps aux | grep threadx ``` -## ????? +## ²é¿´¶Ë¿Ú -netstat ??þŸ +netstat Ö¸Áî¡£ -???????? 80 ??????? +ÀýÈç²é¿´¶Ë¿Ú 80 ÊÇ·ñ±»Õ¼Ó㺠```html netstat -anp | grep 80 @@ -150,345 +150,345 @@ netstat -anp | grep 80 ## PATH -????????????? PATH ????????????????¡¤????¡¤??????? : ????? +¿ÉÒÔÔÚ»·¾³±äÁ¿ PATH ÖÐÉùÃ÷¿ÉÖ´ÐÐÎļþµÄ·¾¶£¬Â·¾¶Ö®¼äÓà : ·Ö¸ô¡£ ```html /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/dmtsai/.local/bin:/home/dmtsai/bin ``` -## ???§Ö?? +## ÔËÐеȼ¶ -0??????? -1????????????????????root???? -2?????????????????? -3?????????????????????????????????????????? -4????????¦Ä??? -5???????????? X-windows ??????????????—¥ -6???????????????????? +0£º¹Ø»úģʽ +1£ºµ¥Óû§Ä£Ê½£¨¿ÉÓÃÓÚÆÆ½ârootÃÜÂ룩 +2£ºÎÞÍøÂçÖ§³ÖµÄ¶àÓû§Ä£Ê½ +3£ºÓÐÍøÂçÖ§³ÖµÄ¶àÓû§Ä£Ê½£¨Îı¾Ä£Ê½£¬¹¤×÷ÖÐ×î³£ÓõÄģʽ£© +4£º±£Áô£¬Î´Ê¹Óà +5£ºÓÐÍøÂçÖ§³ÖµÄ X-windows Ö§³Ö¶àÓû§Ä£Ê½£¨×ÀÃæ£© +6£ºÖØÐÂÒýµ¼ÏµÍ³£¬¼´ÖØÆô ## sudo -??? sudo ????????????? root ????§Ö????þŸ????????? /etc/sudoers ?§Ó?????????þŸ +ʹÓà sudo ÔÊÐíÒ»°ãÓû§Ê¹Óà root ¿ÉÖ´ÐеÄÃüÁî¡£Óû§±ØÐëÔÚ /etc/sudoers ÖвÅÄÜʹÓøÃÖ¸Áî¡£ ## GNU -GNU ????????????¨±?????????????????????????????????????? GNU???????????????? GPL ????????????? GPL ???? GNU ??¨´??????§¿?ï…??????????????? +GNU ¼Æ»®£¬ÓÖÒëΪ¸ïÅ«¼Æ»®£¬ËüµÄÄ¿±êÊÇ´´½¨Ò»Ì×ÍêÈ«×ÔÓɵIJÙ×÷ϵͳ£¬³ÆÎª GNU£¬ÆäÄÚÈÝÈí¼þÍêÈ«ÒÔ GPL ·½Ê½·¢²¼¡£ÆäÖÐ GPL È«³ÆÎª GNU ͨÓù«¹²Ðí¿ÉЭÒ飬°üº¬ÁËÒÔÏÂÄÚÈÝ£º -- ???¦Ê???????§Õ?????????? -- ??????????? -- ?????????????????????????¨À? +- ÒÔÈκÎÄ¿µÄÔËÐд˳ÌÐòµÄ×ÔÓÉ£» +- ÔÙ¸´ÖƵÄ×ÔÓÉ£» +- ¸Ä½ø´Ë³ÌÐò£¬²¢¹«¿ª·¢²¼¸Ä½øµÄ×ÔÓÉ¡£ -## ???????? +## °ü¹ÜÀí¹¤¾ß -RPM ?? DPKG ???????????????????????RPM ???? Redhat Package Manager???????? Red Hat ????????????? GNU ???????????????????? Linux ?? (RHEL) ?????????????? RPM ???§à?????????? Debian ?????? (UBUNTU) ?? DEB ???????????? DPKG?????? Debian Package??????????? RPM ????? +RPM ºÍ DPKG Ϊ×î³£¼ûµÄÁ½ÀàÈí¼þ°ü¹ÜÀí¹¤¾ß¡£RPM È«³ÆÎª Redhat Package Manager£¬×îÔçÓÉ Red Hat ¹«Ë¾Öƶ¨ÊµÊ©£¬Ëæºó±» GNU ¿ªÔ´²Ù×÷ϵͳ½ÓÊܲ¢³ÉΪºÜ¶à Linux ϵͳ (RHEL) µÄ¼È¶¨Èí¼þ±ê×¼¡£Óë RPM ½øÐоºÕùµÄÊÇ»ùÓÚ Debian ²Ù×÷ϵͳ (UBUNTU) µÄ DEB Èí¼þ°ü¹ÜÀí¹¤¾ß£­ DPKG£¬È«³ÆÎª Debian Package£¬¹¦ÄÜ·½ÃæÓë RPM ÏàËÆ¡£ -YUM ???? RPM ?????????????????????????????????????????????????? RPM ???????????????????????????????????????????????????????????????????????????????????????????????????YUM ??????????????????????????????????? +YUM »ùÓÚ RPM °ü¹ÜÀí¹¤¾ß£¬Äܹ»´ÓÖ¸¶¨µÄÔ´¿Õ¼ä£¨·þÎñÆ÷£¬±¾µØÄ¿Â¼µÈ£©×Ô¶¯ÏÂÔØÄ¿±ê RPM °ü²¢ÇÒ°²×°£¬¾ßÓÐÒÀÀµ¹ÜÀí¹¦ÄÜ£¬¿ÉÒÔ×Ô¶¯´¦ÀíÒÀÀµ¹ØÏµ²¢½øÐÐÏÂÔØ¡¢°²×°£¬ÎÞÐë·±ËöµØÊÖ¶¯ÏÂÔØ¡¢°²×°Ã¿Ò»¸öÐèÒªµÄÒÀÀµ°ü¡£´ËÍ⣬YUM µÄÁíÒ»¸ö¹¦ÄÜÊǽøÐÐϵͳÖÐËùÓÐÈí¼þµÄÉý¼¶¡£ -## ???????§Ñ·Ú +## ³£¼û·¢Ðа汾 -Linux ???§Ñ??????????? Linux ???????????????? +Linux ·¢ÐаæÊÇÔ¤Ïȼ¯³ÉºÃµÄ Linux Äں˼°¸÷ÖÖÓ¦ÓÃÈí¼þ¡£ -**???? DPKG** +**»ùÓÚ DPKG** -??????§Ñ? +ÉÌÒµ·¢Ðаæ - Ubuntu -???????§Ñ? +ÉçÇø·¢Ðаæ - Debian -**???? RPM** +**»ùÓÚ RPM** -??????§Ñ? +ÉÌÒµ·¢Ðаæ - Red Hat -???????§Ñ? +ÉçÇø·¢Ðаæ - Fedora - CentOS -# ???? +# ·ÖÇø -## ?????????? +## ´ÅÅ̵ÄÎļþÃû -Linux ???????????????????????? +Linux ÖÐÿ¸öÓ²¼þ¶¼±»µ±×öÒ»¸öÎļþ¡£ -???????????????? +³£¼û´ÅÅ̵ÄÎļþÃû£º -- SCSI/SATA/USB ?????/dev/sd[a-p] -- IDE ?????/dev/hd[a-d] +- SCSI/SATA/USB ´ÅÅÌ£º/dev/sd[a-p] +- IDE ´ÅÅÌ£º/dev/hd[a-d] -??????????????????????????????????§Û??????????????????¦Ë?????? +ÆäÖÐÎļþÃûºóÃæµÄÐòºÅµÄÈ·¶¨Óë´ÅÅ̲åÈëµÄ˳ÐòÓйأ¬¶øÓë´ÅÅÌËù²åÈëµÄ²å²ÛλÖÃÎ޹ء£ -## ?????? +## ·ÖÇø±í -?????????????????????????????????? MBR ???????????????????????? GPT ?????? +´ÅÅÌ·ÖÇø±íÖ÷ÒªÓÐÁ½ÖÖ¸ñʽ£¬Ò»ÖÖÊÇÏÞÖÆ½Ï¶àµÄ MBR ·ÖÇø±í£¬Ò»ÖÖÊǽÏÐÂÇÒÏÞÖÆ½ÏÉÙµÄ GPT ·ÖÇø±í¡£ ### 1. MBR -MBR ?§µ??????????????????????§µ?????????????Master boot record, MBR??????????partition table???????? MBR ? 446 bytes??partition table ? 64 bytes?? +MBR ÖУ¬µÚÒ»¸öÉÈÇø×îÖØÒª£¬ÀïÃæÓУºÖ÷Òª¿ª»ú¼Ç¼£¨Master boot record, MBR£©¼°·ÖÇø±í£¨partition table£©£¬ÆäÖÐ MBR Õ¼ 446 bytes£¬partition table Õ¼ 64 bytes¡£ -????????? 64 bytes????????›¥ 4 ?????????? 4 ???????????????Primary?????????????Extended?????????????????????????????????????????????????????????????????????????????????????????????§»???????????????? +·ÖÇø±íÖ»ÓÐ 64 bytes£¬×î¶àÖ»ÄÜ´æ´¢ 4 ¸ö·ÖÇø£¬Õâ 4 ¸ö·ÖÇøÎªÖ÷·ÖÇø£¨Primary£©ºÍÀ©Õ¹·ÖÇø£¨Extended£©¡£ÆäÖÐÀ©Õ¹·ÖÇøÖ»ÓÐÒ»¸ö£¬Ëü½«ÆäËü¿Õ¼äÓÃÀ´¼Ç¼·ÖÇø±í£¬¿ÉÒԼǼ¸ü¶àµÄ·ÖÇø£¬Òò´Ëͨ¹ýÀ©Õ¹·ÖÇø¿ÉÒÔ·Ö³ö¸ü¶àÇø·Ö£¬ÕâЩ·ÖÇø³ÆÎªÂß¼­·ÖÇø¡£ -Linux ???????????????????????????????????????????+???????? /dev/sda1????????????????? 5 ????? +Linux Ò²°Ñ·ÖÇøµ±³ÉÎļþ£¬·ÖÇøÎļþµÄÃüÃû·½Ê½Îª£º´ÅÅÌÎļþÃû+±àºÅ£¬ÀýÈç /dev/sda1¡£×¢Ò⣬Âß¼­·ÖÇøµÄ±àºÅ´Ó 5 ¿ªÊ¼¡£ ### 2. GPT -?????????§Ó??????????§³?????? 512bytes ?????????? 4k??GPT ?????????§Õ?????????????????????????????Logical Block Address, LBA???? +²»Í¬µÄ´ÅÅÌÓв»Í¬µÄÉÈÇø´óС£¬ÀýÈç 512bytes ºÍ×îдÅÅÌµÄ 4k¡£GPT ΪÁ˼æÈÝËùÓдÅÅÌ£¬ÔÚ¶¨ÒåÉÈÇøÉÏʹÓÃÂß¼­Çø¿éµØÖ·£¨Logical Block Address, LBA£©¡£ -GPT ?? 1 ?????????? MBR?????????? 33 ????????????????????????? 33 ????????????????????§Ò???? +GPT µÚ 1 ¸öÇø¿é¼Ç¼ÁË MBR£¬½ô½Ó×ÅÊÇ 33 ¸öÇø¿é¼Ç¼·ÖÇøÐÅÏ¢£¬²¢°Ñ×îºóµÄ 33 ¸öÇø¿éÓÃÓÚ¶Ô·ÖÇøÐÅÏ¢½øÐб¸·Ý¡£ -GPT ????????????????????????????????? 128 ???????? +GPT ûÓÐÀ©Õ¹·ÖÇø¸ÅÄ¶¼ÊÇÖ÷·ÖÇø£¬×î¶à¿ÉÒÔ·Ö 128 ¸ö·ÖÇø¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/a5c25452-6fa5-49e7-9322-823077442775.jpg) -## ?????????? +## ¿ª»ú¼ì²â³ÌÐò ### 1. BIOS -BIOS ????????????????§Ö??????????????????????????????????????????????????? MBR???? MBR ??????§Ö????????????????????????????????????????????? +BIOS ÊÇ¿ª»úµÄʱºò¼ÆËã»úÖ´ÐеĵÚÒ»¸ö³ÌÐò£¬Õâ¸ö³ÌÐòÖªµÀ¿ÉÒÔ¿ª»úµÄ´ÅÅÌ£¬²¢¶ÁÈ¡´ÅÅ̵ÚÒ»¸öÉÈÇøµÄ MBR£¬ÓÉ MBR Ö´ÐÐÆäÖеĿª»ú¹ÜÀí³ÌÐò£¬Õâ¸ö¿ª»ú¹ÜÀí³ÌÐòµÄ»á¼ÓÔØ²Ù×÷ϵͳµÄºËÐÄÎļþ¡£ -MBR ?§Ö????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? MBR ?§Ö??????????????????????????????????????????????????????????????????????????????? +MBR ÖеĿª»ú¹ÜÀí³ÌÐòÌṩÒÔϹ¦ÄÜ£ºÑ¡µ¥¡¢ÔØÈëºËÐÄÎļþÒÔ¼°×ª½»ÆäËü¿ª»ú¹ÜÀí³ÌÐò¡£×ª½»Õâ¸ö¹¦ÄÜ¿ÉÒÔÓÃÀ´ÊµÏÖÁ˶àÖØÒýµ¼£¬Ö»ÐèÒª½«ÁíÒ»¸ö²Ù×÷ϵͳµÄ¿ª»ú¹ÜÀí³ÌÐò°²×°ÆäËü·ÖÇøµÄÆô¶¯ÉÈÇøÉÏ£¬ÔÚÆô¶¯ MBR ÖеĿª»ú¹ÜÀí³ÌÐòʱ£¬¾Í¿ÉÒÔÑ¡ÔñÆô¶¯µ±Ç°µÄ²Ù×÷ϵͳ»òÕßת½»¸øÆäËü¿ª»ú¹ÜÀí³ÌÐò´Ó¶øÆô¶¯ÁíÒ»¸ö²Ù×÷ϵͳ¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/f900f266-a323-42b2-bc43-218fdb8811a8.jpg) -???????????????????? Windows ???? Linux???????? Windows ?????? MBR???? Linux ???????????????????? MBR ??????????????????????????????????????????????????? +°²×°¶àÖØÒýµ¼£¬×îºÃÏȰ²×° Windows ÔÙ°²×° Linux¡£ÒòΪ°²×° Windows ʱ»á¸²¸Çµô MBR£¬¶ø Linux ¿ÉÒÔÑ¡Ôñ½«¿ª»ú¹ÜÀí³ÌÐò°²×°ÔÚ MBR »òÕ߯äËü·ÖÇøµÄÆô¶¯ÉÈÇø£¬²¢ÇÒ¿ÉÒÔÉèÖÿª»ú¹ÜÀí³ÌÐòµÄÑ¡µ¥¡£ ### 2. UEFI -UEFI ????? BIOS ???????????—¨????????? +UEFI Ïà±ÈÓÚ BIOS À´Ëµ¹¦ÄܸüÎªÈ«Ãæ£¬Ò²¸üΪ°²È«¡£ -## ???? +## ¹ÒÔØ -????????????????????????????????????????????????????????? +¹ÒÔØÀûÓÃĿ¼×÷Ϊ·ÖÇøµÄ½øÈëµã£¬Ò²¾ÍÊÇ˵£¬½øÈëĿ¼֮ºó¾Í¿ÉÒÔ¶ÁÈ¡·ÖÇøµÄÊý¾Ý¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/249f3bb1-feee-4805-a259-a72699d638ca.jpg) -# ?????????????? +# ÎļþȨÏÞÓëĿ¼ÅäÖà -## ????????? +## ÎļþȨÏÞ¸ÅÄî -?????????????????????????????????????????????§Ó??????????? +°ÑÓû§·ÖΪÈýÖÖ£ºÎļþÓµÓÐÕß¡¢Èº×éÒÔ¼°ÆäËüÈË£¬¶Ô²»Í¬µÄÓû§Óв»Í¬µÄÎļþȨÏÞ¡£ -??? ls ????????????????????????????????? drwxr-xr-x. 3 root root 17 May 6 00:14 .config???????????????????? +ʹÓà ls ²é¿´Ò»¸öÎļþʱ£¬»á³öÏÖÒ»¸öÎļþµÄÐÅÏ¢£¬ÀýÈç drwxr-xr-x. 3 root root 17 May 6 00:14 .config£¬¶ÔÕâ¸öÄÚÈݵĽâÊÍÈçÏ£º -- drwxr-xr-x?????????????????? 1 ¦Ë??????????¦²??? 9 ¦Ë?????????¦±? -- 3?????????? -- root??????????? -- root????????ï” -- 17???????§³?? -- May 6 00:14??????????????? -- .config????????? +- drwxr-xr-x£ºÎļþÀàÐÍÒÔ¼°È¨ÏÞ£¬µÚ 1 λΪÎļþÀàÐÍ×ֶΣ¬ºó 9 λΪÎļþȨÏÞ×ֶΡ£ +- 3£ºÁ´½ÓÊý£» +- root£ºÎļþÓµÓÐÕߣ» +- root£ºËùÊôȺ×飻 +- 17£ºÎļþ´óС£» +- May 6 00:14£ºÎļþ×îºó±»Ð޸ĵÄʱ¼ä£» +- .config£ºÎļþÃû¡£ -???????????????¾©???§µ? +³£¼ûµÄÎļþÀàÐͼ°Æäº¬ÒåÓУº -- d?????? -- -??????? -- l??????????? +- d£ºÄ¿Â¼£» +- -£ºÎļþ£» +- l£ºÁ´½ÓÎļþ£» -9 ¦Ë????????????§µ?? 3 ?????ï…?? 3 ?ï…??????????????????????????????????????????????????§Ö? 3 ¦Ë???? r??w??x ??????????????§Õ??????§³? +9 λµÄÎļþȨÏÞ×Ö¶ÎÖУ¬Ã¿ 3 ¸öΪһ×飬¹² 3 ×飬ÿһ×é·Ö±ð´ú±í¶ÔÎļþÓµÓÐÕß¡¢ËùÊôȺ×éÒÔ¼°ÆäËüÈ˵ÄÎļþȨÏÞ¡£Ò»×éȨÏÞÖÐµÄ 3 λ·Ö±ðΪ r¡¢w¡¢x ȨÏÞ£¬±íʾ¿É¶Á¡¢¿Éд¡¢¿ÉÖ´ÐС£ -## ????????????????? +## ÎļþÊôÐÔÒÔ¼°È¨ÏÞµÄÐÞ¸Ä -### 1. ????????????? +### 1. ÐÞ¸ÄÎļþËùÊôȺ×é ```html # chgrp [-R] groupname dirname/filename --R???????? +-R£ºµÝ¹éÐÞ¸Ä ``` -### 2. ??????????? +### 2. ÐÞ¸ÄÎļþÓµÓÐÕß -?????????????????????????????????????î• +²»½ö¿ÉÒÔÐÞ¸ÄÎļþÓµÓÐÕߣ¬Ò²¿ÉÒÔÐÞ¸ÄÎļþËùÊôȺ×é¡£ ```html -# chown [-R] ?????:????? dirname/filename +# chown [-R] Óû§Ãû:Ⱥ×éÃû dirname/filename ``` -### 3. ?????? +### 3. ÐÞ¸ÄȨÏÞ -?????????????????????????????????? 3 ??¦Ë???????????????¦Ë???????????¦Ë????? 4??2??1????????????????????? r??4??w??2??x??1?? +¿ÉÒÔ½«Ò»×éȨÏÞÓÃÊý×ÖÀ´±íʾ£¬´Ëʱһ×éȨÏÞµÄ 3 ¸öλµ±×ö¶þ½øÖÆÊý×ÖµÄ룬´Ó×óµ½ÓÒÿ¸öλµÄȨֵΪ 4¡¢2¡¢1£¬¼´Ã¿¸öȨÏÞ¶ÔÓ¦µÄÊý×ÖȨֵΪ r£º4¡¢w£º2¡¢x£º1¡£ ```html # chmod [-R] xyz dirname/filename ``` -???????? .bashrc ???????????? -rwxr-xr--?? +·¶Àý£º½« .bashrc ÎļþµÄȨÏÞÐÞ¸ÄΪ -rwxr-xr--¡£ ```html # chmod 754 .bashrc ``` -???????¡Â??????Ú…???? +Ò²¿ÉÒÔʹÓ÷ûºÅÀ´É趨ȨÏÞ¡£ ```html # chmod [ugoa] [+-=] [rwx] dirname/filename -- u??????? -- g????????? -- o???????? -- a???????? -- +???????? -- -???????? -- =???Ú…??? +- u£ºÓµÓÐÕß +- g£ºËùÊôȺ×é +- o£ºÆäËûÈË +- a£ºËùÓÐÈË +- +£ºÌí¼ÓȨÏÞ +- -£ºÒƳýȨÏÞ +- =£ºÉ趨ȨÏÞ ``` -??????? .bashrc ???????????????§Õ???? +·¶Àý£ºÎª .bashrc ÎļþµÄËùÓÐÓû§Ìí¼ÓдȨÏÞ¡£ ```html # chmod a+w .bashrc ``` -## ??????? +## Ŀ¼µÄȨÏÞ -?????????›¥???????????????§µ?????›¥????????????????§³????????????? w ?????????????????????? +ÎļþÃû²»ÊÇ´æ´¢ÔÚÒ»¸öÎļþµÄÄÚÈÝÖУ¬¶øÊÇ´æ´¢ÔÚÒ»¸öÎļþËùÔÚµÄĿ¼ÖС£Òò´Ë£¬ÓµÓÐÎļþµÄ w ȨÏÞ²¢²»ÄܶÔÎļþÃû½øÐÐÐ޸ġ£ -???›¥????§Ò???????????????????????§Ò?????????????? r ???????????????§Ò?w ????????????????§Ò????????????????????????????????????????x ??????????????????????x ????? r ?? w ??????????????????????????????????????????????§Ò??????????§Ò?????????? +Ŀ¼´æ´¢ÎļþÁÐ±í£¬Ò»¸öĿ¼µÄȨÏÞÒ²¾ÍÊÇ¶ÔÆäÎļþÁбíµÄȨÏÞ¡£Òò´Ë£¬Ä¿Â¼µÄ r ȨÏÞ±íʾ¿ÉÒÔ¶ÁÈ¡ÎļþÁÐ±í£»w ȨÏÞ±íʾ¿ÉÒÔÐÞ¸ÄÎļþÁÐ±í£¬¾ßÌåÀ´Ëµ£¬¾ÍÊÇÌí¼Óɾ³ýÎļþ£¬¶ÔÎļþÃû½øÐÐÐ޸ģ»x ȨÏÞ¿ÉÒÔÈøÃĿ¼³ÉΪ¹¤×÷Ŀ¼£¬x ȨÏÞÊÇ r ºÍ w ȨÏ޵Ļù´¡£¬Èç¹û²»ÄÜʹһ¸öĿ¼³ÉΪ¹¤×÷Ŀ¼£¬Ò²¾Íû°ì·¨¶ÁÈ¡ÎļþÁбíÒÔ¼°¶ÔÎļþÁÐ±í½øÐÐÐÞ¸ÄÁË¡£ -## ????????? +## ÎļþĬÈÏȨÏÞ -??????????????????§á???????????? 666 ??????? -rw-rw-rw- ?? -?????????????????????????????????§á???????????? 777 ??????? drwxrwxrwx?? +ÎļþĬÈÏȨÏÞ£ºÎļþĬÈÏûÓпÉÖ´ÐÐȨÏÞ£¬Òò´ËΪ 666 £¬Ò²¾ÍÊÇ -rw-rw-rw- ¡£ +Ŀ¼ĬÈÏȨÏÞ£ºÄ¿Â¼±ØÐëÒªÄܹ»½øÈ룬Ҳ¾ÍÊDZØÐëÓµÓпÉÖ´ÐÐȨÏÞ£¬Òò´ËΪ 777 £¬Ò²¾ÍÊÇ drwxrwxrwx¡£ -??????? umask ???????????????????????????????????????????? 002 ??????????????????????? 2 ???????????§Õ???????????????????????? -rw-rw-r-- ?? +¿ÉÒÔͨ¹ý umask ÉèÖûòÕ߲鿴ÎļþµÄĬÈÏȨÏÞ£¬Í¨³£ÒÔÑÚÂëµÄÐÎʽÀ´±íʾ£¬ÀýÈç 002 ±íʾÆäËüÓû§µÄȨÏÞÈ¥³ýÁËÒ»¸ö 2 µÄȨÏÞ£¬Ò²¾ÍÊÇдȨÏÞ£¬Òò´Ë½¨Á¢ÐÂÎļþʱĬÈϵÄȨÏÞΪ -rw-rw-r-- ¡£ -## ?????? +## Ŀ¼ÅäÖà -??????? Linux ???§Ñ·Ú????????????????Filesystem Hierarchy Standard (FHS) ?ÕÇ?? Linux ?????????????????????????? +ΪÁËʹ²»Í¬ Linux ·¢Ðа汾µÄĿ¼½á¹¹±£³ÖÒ»ÖÂÐÔ£¬Filesystem Hierarchy Standard (FHS) ¹æ¶¨ÁË Linux µÄĿ¼½á¹¹¡£×î»ù´¡µÄÈý¸öĿ¼ÈçÏ£º -- / (root, ????) -- /usr (unix software resource)???????????????????????????? -- /var (variable)???????????????§Û????§Ö?????????? +- / (root, ¸ùĿ¼) +- /usr (unix software resource)£ºËùÓÐϵͳĬÈÏÈí¼þ¶¼»á°²×°µ½Õâ¸öĿ¼£» +- /var (variable)£º´æ·Åϵͳ»ò³ÌÐòÔËÐйý³ÌÖеÄÊý¾ÝÎļþ¡£ -??????????????? +ÍêÕûµÄĿ¼Ê÷ÈçÏ£º ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/27ace615-558f-4dfb-8ad4-7ac769c10118.jpg) -# ??????? +# ÎļþÓëĿ¼ -## ?????? +## Îļþʱ¼ä -1. modification time (mtime)???????????????????? -2. status time (ctime)?????????????????????????????? -3. access time (atime)???????????????? +1. modification time (mtime)£ºÎļþµÄÄÚÈݸüоͻá¸üУ» +2. status time (ctime)£ºÎļþµÄ״̬£¨È¨ÏÞ¡¢ÊôÐÔ£©¸üоͻá¸üУ» +3. access time (atime)£º¶ÁÈ¡Îļþʱ¾Í»á¸üС£ -## ???????????????? +## ÎļþÓëĿ¼µÄ»ù±¾²Ù×÷ ### 1. ls -?§Ô???????????????????????????????§Ñ?????????? +ÁгöÎļþ»òÕßĿ¼µÄÐÅÏ¢£¬Ä¿Â¼µÄÐÅÏ¢¾ÍÊÇÆäÖаüº¬µÄÎļþ¡£ ```html # ls [-aAdfFhilnrRSt] file|dir --a ???§Ô????????? --d ?????§Ô??????? --l ?????????????§Ô??????????????????????????? +-a £ºÁгöÈ«²¿µÄÎļþ +-d £º½öÁгöĿ¼±¾Éí +-l £ºÒÔ³¤Êý¾Ý´®ÐÐÁгö£¬°üº¬ÎļþµÄÊôÐÔÓëȨÏ޵ȵÈÊý¾Ý ``` ### 2. cp -????????? +¸´ÖƲÙ×÷¡£ -?????????????????????????????????????§³? +Èç¹ûÔ´ÎļþÓÐÁ½¸öÒÔÉÏ£¬ÔòÄ¿µÄÎļþÒ»¶¨ÒªÊÇĿ¼²ÅÐС£ ```html cp [-adfilprsu] source destination --a ?????? -dr --preserve=all ??????????? dr ??¦Ï???????? --d ????????????????????????????????????????????? --i ????????????????????????????????? --p ????????????????????? --r ???????????? --u ??destination ?? source ?????? destination???? destination ???????????????? ---preserve=all ?????? -p ??????????????????? SELinux ??????, links, xattr ????????? +-a £ºÏ൱ÓÚ -dr --preserve=all µÄÒâ˼£¬ÖÁÓÚ dr Çë²Î¿¼ÏÂÁÐ˵Ã÷ +-d £ºÈôÀ´Ô´ÎļþΪÁ´½ÓÎļþ£¬Ôò¸´ÖÆÁ´½ÓÎļþÊôÐÔ¶ø·ÇÎļþ±¾Éí +-i £ºÈôÄ¿±êÎļþÒѾ­´æÔÚʱ£¬ÔÚ¸²¸Çǰ»áÏÈѯÎÊ +-p £ºÁ¬Í¬ÎļþµÄÊôÐÔÒ»Æð¸´ÖƹýÈ¥ +-r £ºµÝ¹é³ÖÐø¸´ÖÆ +-u £ºdestination ±È source ¾É²Å¸üРdestination£¬»ò destination ²»´æÔÚµÄÇé¿öϲŸ´ÖÆ +--preserve=all £º³ýÁË -p µÄȨÏÞÏà¹Ø²ÎÊýÍ⣬»¹¼ÓÈë SELinux µÄÊôÐÔ, links, xattr µÈÒ²¸´ÖÆÁË ``` ### 3. rm -????????? +ÒÆ³ý²Ù×÷¡£ ```html -# rm [-fir] ??????? --r ???????? +# rm [-fir] Îļþ»òĿ¼ +-r £ºµÝ¹éɾ³ý ``` ### 4. mv -????????? +ÒÆ¶¯²Ù×÷¡£ ```html # mv [-fiu] source destination # mv [options] source1 source2 source3 .... directory --f ?? force ???????????????????????????????????????? +-f £º force Ç¿ÖÆµÄÒâ˼£¬Èç¹ûÄ¿±êÎļþÒѾ­´æÔÚ£¬²»»áѯÎʶøÖ±½Ó¸²¸Ç ``` -## ?????????? +## »ñÈ¡ÎļþÄÚÈÝ ### 1. cat -??????????? +È¡µÃÎļþÄÚÈÝ¡£ ```html # cat [-AbEnTv] filename --n ????????§Ü?? ??????????????§Ü???? -b ?????? +-n £º´òÓ¡³öÐкţ¬ Á¬Í¬¿Õ°×ÐÐÒ²»áÓÐÐкţ¬Óë -b µÄÑ¡Ïͬ ``` ### 2. tac -?? cat ?????????????????§á??????? +ÊÇ cat µÄ·´Ïò²Ù×÷£¬´Ó×îºóÒ»ÐпªÊ¼´òÓ¡¡£ ### 3. more -???????????????????????????????? +¿ÉÒÔÒ»Ò³Ò»Ò³²é¿´ÎļþÄÚÈÝ£¬ºÍÎı¾±à¼­Æ÷ÀàËÆ¡£ ### 4. less -?? more ????? +ºÍ more ÀàËÆ¡£ ### 5. head -??????????????§³? +¿ÉÒÔÈ¡µÃÎļþǰ¼¸ÐС£ ```html # head [-n number] filename --n ??????????????????????§Ö???? +-n £ººóÃæ½ÓÊý×Ö£¬´ú±íÏÔʾ¼¸ÐеÄÒâ˼ ``` ### 6. tail -?? head ????????????????????§³? +ÊÇ head µÄ·´Ïò²Ù×÷£¬Ö»ÊÇÈ¡µÃÊǺó¼¸ÐС£ ### 7. od -?????????????????????????????????????? +¿ÉÒÔÒÔ×Ö·û»òÕßÊ®Áù½øÖƵÄÐÎʽÏÔʾ¶þ½øÖÆÎļþ¡£ ### 8. touch -?????????????????????? +ÐÞ¸ÄÎļþʱ¼ä»òÕß½¨Á¢ÐÂÎļþ¡£ ```html # touch [-acdmt] filename --a ?? ???? atime --c ?? ???? ctime????????????????????????? --m ?? ???? mtime --d ?? ????????????????????????????????????????? --date="????????" --t ????????????????????????????????????[YYYYMMDDhhmm] +-a £º ¸üРatime +-c £º ¸üРctime£¬Èô¸ÃÎļþ²»´æÔÚÔò²»½¨Á¢ÐÂÎļþ +-m £º ¸üРmtime +-d £º ºóÃæ¿ÉÒÔ½ÓÓû¸üеÄÈÕÆÚ¶ø²»ÓÃĿǰµÄÈÕÆÚ£¬Ò²¿ÉÒÔʹÓà --date="ÈÕÆÚ»òʱ¼ä" +-t £ººóÃæ¿ÉÒÔ½ÓÓû¸üеÄʱ¼ä¶ø²»ÓÃĿǰµÄʱ¼ä£¬¸ñʽΪ[YYYYMMDDhhmm] ``` -## ???????????? +## Ö¸ÁîÓëÎļþËÑË÷ ### 1. which -????????? +Ö¸ÁîËÑË÷¡£ ```html # which [-a] command --a ????????????§Ô???????????§Ö???? +-a £º½«ËùÓÐÖ¸ÁîÁгö£¬¶ø²»ÊÇÖ»ÁеÚÒ»¸ö ``` ### 2. whereis -whereis ?????????????????????????????????????? +whereis ËÑË÷ÎļþµÄËٶȱȽϿ죬ÒòΪËüÖ»ËÑË÷¼¸¸öÌØ¶¨µÄĿ¼¡£ ```html # whereis [-bmsu] dirname/filename @@ -496,114 +496,114 @@ whereis ?????????????????????????????????????? ### 3. locate -locate ?????¨´???????????????????????? +locate ¿ÉÒÔÓùؼü×Ö»òÕßÕýÔò±í´ïʽ½øÐÐËÑË÷¡£ -locate ??? /var/lib/mlocate/ ???????????????????????›¥??????§µ?????????????¦²?????????? locate ????????????????????? updatedb ??????????????? +locate ʹÓà /var/lib/mlocate/ Õâ¸öÊý¾Ý¿âÀ´½øÐÐËÑË÷£¬Ëü´æ´¢ÔÚÄÚ´æÖУ¬²¢ÇÒÿÌì¸üÐÂÒ»´Î£¬ËùÒÔÎÞ·¨Óà locate ËÑË÷н¨µÄÎļþ¡£¿ÉÒÔʹÓà updatedb À´Á¢¼´¸üÐÂÊý¾Ý¿â¡£ ```html # locate [-ir] keyword --r??????????? +-r£º½ÓÕýÔò±í´ïʽ ``` ### 4. find -find ????????????????????????????? +find ¿ÉÒÔʹÓÃÎļþµÄÊôÐÔºÍȨÏÞ½øÐÐËÑË÷¡£ ```html # find filename [option] ``` -#### 4.1 ??????§Û????? +#### 4.1 Óëʱ¼äÓйصÄÑ¡Ïî ```html --mtime n ???§Ô??? n ?????????????????????? --mtime +n ???§Ô??? n ????(???? n ????)???????????? --mtime -n ???§Ô??? n ?????(?? n ????)???????????? --newer file ?? ?§Ô??? file ???????? +-mtime n £ºÁгöÔÚ n ÌìǰµÄÄÇÒ»ÌìÐ޸ĹýÄÚÈݵÄÎļþ +-mtime +n £ºÁгöÔÚ n Ìì֮ǰ(²»º¬ n Ìì±¾Éí)Ð޸ĹýÄÚÈݵÄÎļþ +-mtime -n £ºÁгöÔÚ n ÌìÖ®ÄÚ(º¬ n Ìì±¾Éí)Ð޸ĹýÄÚÈݵÄÎļþ +-newer file £º Áгö±È file ¸üеÄÎļþ ``` -+4??4 ?? -4 ?????????¦¶????? ++4¡¢4 ºÍ -4 µÄָʾµÄʱ¼ä·¶Î§ÈçÏ£º ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/658fc5e7-79c0-4247-9445-d69bf194c539.png) -#### 4.2 ???????????????????§Û????? +#### 4.2 ÓëÎļþÓµÓÐÕߺÍËùÊôȺ×éÓйصÄÑ¡Ïî ```html -uid n -gid n -user name -group name --nouser ???????????????? /etc/passwd ????? --nogroup????????????öö?????? /etc/group ????? +-nouser £ºËÑË÷ÓµÓÐÕß²»´æÔÚ /etc/passwd µÄÎļþ +-nogroup£ºËÑË÷ËùÊôȺ×é²»´æÔÚÓÚ /etc/group µÄÎļþ ``` -#### 4.3 ??????????????§Û????? +#### 4.3 ÓëÎļþȨÏÞºÍÃû³ÆÓйصÄÑ¡Ïî ```html -name filename --size [+-]SIZE??????? SIZE ?????(+)??§³(-)?????????? SIZE ?????§µ?c: ???? byte??k: ???? 1024bytes??????????? 50KB??????????????? -size +50k +-size [+-]SIZE£ºËÑѰ±È SIZE »¹Òª´ó(+)»òС(-)µÄÎļþ¡£Õâ¸ö SIZE µÄ¹æ¸ñÓУºc: ´ú±í byte£¬k: ´ú±í 1024bytes¡£ËùÒÔ£¬ÒªÕÒ±È 50KB»¹Òª´óµÄÎļþ£¬¾ÍÊÇ -size +50k -type TYPE --perm mode ???????????? mode ????? --perm -mode ???????????? mode ????? --perm /mode ??????????????? mode ????? +-perm mode £ºËÑË÷ȨÏÞµÈÓÚ mode µÄÎļþ +-perm -mode £ºËÑË÷ȨÏÞ°üº¬ mode µÄÎļþ +-perm /mode £ºËÑË÷ȨÏÞ°üº¬ÈÎÒ» mode µÄÎļþ ``` -# ??????????? +# ´ÅÅÌÓëÎļþϵͳ -## ?????????? +## ÎļþϵͳµÄ×é³É -????????§Ú????????????????????????????????????????????????????????????????§Ö??????????????????????????????????????????????????????????????????? +¶Ô·ÖÇø½øÐиñʽ»¯ÊÇΪÁËÔÚ·ÖÇøÉϽ¨Á¢Îļþϵͳ¡£Ò»¸ö·ÖÇøÍ¨³£Ö»Äܸñʽ»¯ÎªÒ»¸öÎļþϵͳ£¬µ«ÊÇ´ÅÅÌÕóÁеȼ¼Êõ¿ÉÒÔ½«Ò»¸ö·ÖÇø¸ñʽ»¯Îª¶à¸öÎļþϵͳ£¬Òò´ËÖ»ÓÐÎļþϵͳÄܱ»¹ÒÔØ£¬¶ø·ÖÇø²»Äܱ»¹ÒÔØ¡£ -??????????????????? +ÎļþϵͳÓÐÒÔÏÂÈý¸ö½á¹¹£º -1. superblock????????????????????????? inode ?? block ????????????????????????????????????????????? -2. inode?????????????? inode???????????????????????????????????? block ???? -3. block????????????????????????????????? block?? +1. superblock£º¼Ç¼ÎļþϵͳµÄÕûÌåÐÅÏ¢£¬°üÀ¨ inode ºÍ block µÄ×ÜÁ¿¡¢Ê¹ÓÃÁ¿¡¢Ê£ÓàÁ¿£¬ÒÔ¼°ÎļþϵͳµÄ¸ñʽÓëÏà¹ØÐÅÏ¢µÈ£» +2. inode£ºÒ»¸öÎļþÕ¼ÓÃÒ»¸ö inode£¬¼Ç¼ÎļþµÄÊôÐÔ£¬Í¬Ê±¼Ç¼´ËÎļþµÄÊý¾ÝËùÔÚµÄ block ºÅÂ룻 +3. block£º¼Ç¼ÎļþµÄÄÚÈÝ£¬ÈôÎļþÌ«´óʱ£¬»áÕ¼Óöà¸ö block¡£ -????????????????????????? inode ??????????????????????? block?????????? block ????????????? +µ±Òª¶Áȡһ¸öÎļþµÄÄÚÈÝʱ£¬ÏÈÔÚ inode ÖÐÈ¥²éÕÒÎļþÄÚÈÝËùÔÚµÄËùÓÐ block£¬È»ºó°ÑËùÓÐ block µÄÄÚÈݶÁ³öÀ´¡£ -????????????????????????? block ???????? +´ÅÅÌË鯬ÊÇÖ¸Ò»¸öÎļþÄÚÈÝËùÔÚµÄ block ¹ýÓÚ·ÖÉ¢¡£ -Ext2 ???????????????????????????????????? block ????????????????????????????? block ??ï…??????? +Ext2 ÎļþϵͳʹÓÃÁËÉÏÊöµÄÎļþ½á¹¹£¬²¢ÔÚ´ËÖ®ÉϼÓÈëÁË block Ⱥ×éµÄ¸ÅÄҲ¾ÍÊǽ«Ò»¸öÎļþϵͳ»®·ÖΪ¶à¸ö block Ⱥ×飬·½±ã¹ÜÀí¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/1974a836-aa6b-4fb8-bce1-6eb11969284a.jpg) ## inode -Ext2 ????????? block ??§³?? 1k??2k ?? 4k ?????????? block ??§³??????????????§³??????? inode ??§³????? 128 bytes?? +Ext2 Îļþϵͳ֧³ÖµÄ block ´óСÓÐ 1k¡¢2k ºÍ 4k ÈýÖÖ£¬²»Í¬µÄ block ´óСÏÞÖÆÁ˵¥Ò»ÎļþµÄ´óС¡£¶øÃ¿¸ö inode ´óСÊǹ̶¨Îª 128 bytes¡£ -inode ?§Þ???????????????? block????????? block ???§³?????????????????????? block??????? inode ??§³???????????????????? block?????????????????????????????????? block ???????§³????????? block ?????????????? block?? +inode ÖмǼÁËÎļþÄÚÈÝËùÔÚµÄ block£¬µ«ÊÇÿ¸ö block ·Ç³£Ð¡£¬Ò»¸ö´óÎļþËæ±ã¶¼ÐèÒª¼¸Ê®ÍòµÄ block£¬¶øÒ»¸ö inode ´óСÓÐÏÞ£¬ÎÞ·¨Ö±½ÓÒýÓÃÕâô¶à block¡£Òò´ËÒýÈëÁ˼ä½Ó¡¢Ë«¼ä½Ó¡¢Èý¼ä½ÓÒýÓã¬Ê¹ÓÃÓà block À´À©³ä´óС£¬Ò²¾ÍÊÇÈà block À´¼Ç¼Îļþ°üº¬µÄ block¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/89091427-7b2b-4923-aff6-44681319a8aa.jpg) -inode ???????????????? +inode ¾ßÌå°üº¬ÒÔÏÂÐÅÏ¢£º -- ???????????(read/write/excute)?? -- ?????????????????(owner/group)?? -- ????????????? -- ????????????????????(ctime)?? -- ?????¦Å??????(atime)?? -- ??????????(mtime)?? -- ???????????????(flag)???? SetUID...?? -- ????????????????? (pointer)?? +- ¸ÃÎļþµÄ´æÈ¡Ä£Ê½(read/write/excute)£» +- ¸ÃÎļþµÄÓµÓÐÕßÓëȺ×é(owner/group)£» +- ¸ÃÎļþµÄÈÝÁ¿£» +- ¸ÃÎļþ½¨Á¢»ò״̬¸Ä±äµÄʱ¼ä(ctime)£» +- ×î½üÒ»´ÎµÄ¶Áȡʱ¼ä(atime)£» +- ×î½üÐ޸ĵÄʱ¼ä(mtime)£» +- ¶¨ÒåÎļþÌØÐÔµÄÆì±ê(flag)£¬Èç SetUID...£» +- ¸ÃÎļþÕæÕýÄÚÈݵÄÖ¸Ïò (pointer)¡£ -## ???? inode ?? block +## Ŀ¼µÄ inode Óë block -???????????????????? inode ????????? block??block ???????????????????????? inode ????????????????????????? inode ???????????????????????????§µ????????????????????????????????§»?????????? w ????§Û?? +½¨Á¢Ò»¸öĿ¼ʱ£¬»á·ÖÅäÒ»¸ö inode ÓëÖÁÉÙÒ»¸ö block¡£block ¼Ç¼µÄÄÚÈÝÊÇĿ¼ÏÂËùÓÐÎļþµÄ inode ±àºÅÒÔ¼°ÎļþÃû£¬¿ÉÒÔ¿´³öÎļþµÄ inode ±¾Éí²»¼Ç¼ÎļþÃû£¬ÎļþÃû¼Ç¼ÔÚĿ¼ÖУ¬Òò´ËÐÂÔöÎļþ¡¢É¾³ýÎļþ¡¢¸ü¸ÄÎļþÃûÕâЩ²Ù×÷ÓëĿ¼µÄ w ȨÏÞÓйء£ -## ???????????????? +## ʵÌåÁ´½ÓÓë·ûºÅÁ´½Ó ```html # ln [-sf] source_filename dist_filename --s ??????? hard link???? -s ? symbolic link --f ????????5????????????????????? +-s £ºÄ¬ÈÏÊÇ hard link£¬¼Ó -s Ϊ symbolic link +-f £ºÈç¹ûÄ¿±ê5Îļþ´æÔÚʱ£¬ÏÈɾ³ýÄ¿±êÎļþ ``` -### 1. ??????? +### 1. ʵÌåÁ´½Ó -hard link ?????????????????????????????????????????????? inode ?????????????????????????????????????????? 0?? +hard link Ö»ÊÇÔÚij¸öĿ¼ÏÂÐÂÔöÒ»¸öÌõÄ¿£¬Ê¹µÃÐÂÔöµÄÌõÄ¿Á´½Óµ½ÎļþµÄ inode ÉÏ¡£É¾³ýÈÎÒâÒ»¸öÌõÄ¿£¬Îļþ»¹ÊÇ´æÔÚ£¬Ö»ÒªÒýÓÃÊýÁ¿²»Îª 0¡£ -????????????????? Filesystem?????????????????? +ÓÐÒÔÏÂÏÞÖÆ£º²»ÄÜ¿çÔ½ Filesystem£»²»ÄܶÔĿ¼½øÐÐÁ´½Ó¡£ ```html # ln /etc/crontab . @@ -612,11 +612,11 @@ hard link ?????????????????????????????????????????????? inode ????????????????? 34474855 -rw-r--r--. 2 root root 451 Jun 10 2014 /etc/crontab ``` -### 2. ???????? +### 2. ·ûºÅÁ´½Ó -symbolic link ???????? Windows ???????????????????????????????????????????????????????????????????????????????????????? +symbolic link ¿ÉÒÔÀí½âΪ Windows µÄ¿ì½Ý·½Ê½£¬Í¨¹ý½¨Á¢Ò»¸ö¶ÀÁ¢µÄÎļþ£¬Õâ¸öÎļþµÄÊý¾ÝµÄ¶ÁȡָÏòÁ´½ÓµÄÄǸöÎļþ¡£µ±Ô´Îļþ±»É¾³ýÁË£¬Á´½ÓÎļþ¾Í´ò²»¿ªÁË¡£ -symbolic link ???????????????? +symbolic link ¿ÉÒÔΪĿ¼½¨Á¢Á´½Ó¡£ ```html # ll -i /etc/crontab /root/crontab2 @@ -624,118 +624,118 @@ symbolic link ???????????????? 53745909 lrwxrwxrwx. 1 root root 12 Jun 23 22:31 /root/crontab2 -> /etc/crontab ``` -# ??????? +# ѹËõÓë´ò°ü -## ??? +## ѹËõ -Linux ?????§Ü???????????????????????????? +Linux µ×ÏÂÓкܶàѹËõÎļþµÄÀ©Õ¹Ãû£¬³£¼ûµÄÈçÏ£º -| ????? | ??????? | +| À©Õ¹Ãû | ѹËõ³ÌÐò | | -- | -- | | \*.Z | compress | |\*.zip | zip | |\*.gz | gzip| |\*.bz2 | bzip2 | |\*.xz | xz | -|\*.tar | tar ???????????????§à?????? | -|\*.tar.gz | tar ????????????????? gzip ????? | -|\*.tar.bz2 | tar ????????????????? bzip2 ????? | -|\*.tar.xz | tar ????????????????? xz ????? | +|\*.tar | tar ³ÌÐò´ò°üµÄÊý¾Ý£¬Ã»Óо­¹ýѹËõ | +|\*.tar.gz | tar ³ÌÐò´ò°üµÄÎļþ£¬¾­¹ý gzip µÄѹËõ | +|\*.tar.bz2 | tar ³ÌÐò´ò°üµÄÎļþ£¬¾­¹ý bzip2 µÄѹËõ | +|\*.tar.xz | tar ³ÌÐò´ò°üµÄÎļþ£¬¾­¹ý xz µÄѹËõ | ### 1. gzip -gzip ?? Linux ?????????????????? compress??zip ?? gzip ???????????? +gzip ÊÇ Linux ʹÓÃ×î¹ãµÄѹËõÖ¸Á¿ÉÒԽ⿪ compress¡¢zip Óë gzip ËùѹËõµÄÎļþ¡£ -???? gzip ????????????????????? +¾­¹ý gzip ѹËõ¹ý£¬Ô´Îļþ¾Í²»´æÔÚÁË¡£ -?? 9 ???????????????????¨¢? +ÓÐ 9 ¸ö²»Í¬µÄѹËõµÈ¼¶¿ÉÒÔʹÓᣠ-??????? zcat??zmore??zless ?????????????????? +¿ÉÒÔʹÓà zcat¡¢zmore¡¢zless À´¶ÁȡѹËõÎļþµÄÄÚÈÝ¡£ ```html $ gzip [-cdtv#] filename --c ??????????????????????? --d ??????? --t ?????????????????? --v ?????????????? --# ?? # ???????????????????????????????????????????6 +-c £º½«Ñ¹ËõµÄÊý¾ÝÊä³öµ½ÆÁÄ»ÉÏ +-d £º½âѹËõ +-t £º¼ìÑéѹËõÎļþÊÇ·ñ³ö´í +-v £ºÏÔʾѹËõ±ÈµÈÐÅÏ¢ +-# £º # ΪÊý×ÖµÄÒâ˼£¬´ú±íѹËõµÈ¼¶£¬Êý×ÖÔ½´óѹËõ±ÈÔ½¸ß£¬Ä¬ÈÏΪ6 ``` ### 2. bzip2 -???? gzip ??????????? +Ìṩ±È gzip ¸ü¸ßµÄѹËõ±È¡£ -??????bzcat??bzmore??bzless??bzgrep?? +²é¿´ÃüÁbzcat¡¢bzmore¡¢bzless¡¢bzgrep¡£ ```html $ bzip2 [-cdkzv#] filename --k ?????????? +-k £º±£ÁôÔ´Îļþ ``` ### 3. xz -???? bzip2 ??????????? +Ìṩ±È bzip2 ¸ü¼ÑµÄѹËõ±È¡£ -?????????gzip??bzip2??xz ?????????????????????????????????????????????? +¿ÉÒÔ¿´µ½£¬gzip¡¢bzip2¡¢xz µÄѹËõ±È²»¶ÏÓÅ»¯£¬²»¹ýҪעÒ⣬ѹËõ±ÈÔ½¸ß£¬Ñ¹ËõµÄʱ¼äÒ²Ô½³¤¡£ -??????xzcat??xzmore??xzless??xzgrep?? +²é¿´ÃüÁxzcat¡¢xzmore¡¢xzless¡¢xzgrep¡£ ```html $ xz [-dtlkc#] filename ``` -## ??? +## ´ò°ü -????????????????????????????????????????????????????????tar ???????????????????????? gip??bzip2??xz ????????????????? +ѹËõÖ¸ÁîÖ»ÄܶÔÒ»¸öÎļþ½øÐÐѹËõ£¬¶ø´ò°üÄܹ»½«¶à¸öÎļþ´ò°ü³ÉÒ»¸ö´óÎļþ¡£tar ²»½ö¿ÉÒÔÓÃÓÚ´ò°ü£¬Ò²¿ÉÒÔʹÓà gip¡¢bzip2¡¢xz ½«´ò°üÎļþ½øÐÐѹËõ¡£ ```html -$ tar [-z|-j|-J] [cv] [-f ?????tar???] filename... ==?????? -$ tar [-z|-j|-J] [tv] [-f ???§Ö?tar???] ==?? -$ tar [-z|-j|-J] [xv] [-f ???§Ö?tar???] [-C ??] ==????? --z ?????zip?? --j ?????bzip2?? --J ?????xz?? --c ????????????? --t ??????????????????§»????? --x ?????????????????? --v ???????/???????????§µ??????????????????? --f : filename????????????? --C ?? ?? ?????????????? +$ tar [-z|-j|-J] [cv] [-f н¨µÄtarÎļþ] filename... ==´ò°üѹËõ +$ tar [-z|-j|-J] [tv] [-f ÒÑÓеÄtarÎļþ] ==²é¿´ +$ tar [-z|-j|-J] [xv] [-f ÒÑÓеÄtarÎļþ] [-C Ŀ¼] ==½âѹËõ +-z £ºÊ¹ÓÃzip£» +-j £ºÊ¹ÓÃbzip2£» +-J £ºÊ¹ÓÃxz£» +-c £ºÐ½¨´ò°üÎļþ£» +-t £º²é¿´´ò°üÎļþÀïÃæÓÐÄÄЩÎļþ£» +-x £º½â´ò°ü»ò½âѹËõµÄ¹¦ÄÜ£» +-v £ºÔÚѹËõ/½âѹËõµÄ¹ý³ÌÖУ¬ÏÔʾÕýÔÚ´¦ÀíµÄÎļþÃû£» +-f : filename£ºÒª´¦ÀíµÄÎļþ£» +-C Ŀ¼ £º ÔÚÌØ¶¨Ä¿Â¼½âѹËõ¡£ ``` -???????????? +×î³£Óõķ½Ê½ÈçÏ£º -?????? ?? tar -jcv -f filename.tar.bz2 ??????????????????? -?? ??       ?? tar -jtv -f filename.tar.bz2 -?????     ??tar -jxv -f filename.tar.bz2 -C ?????????? +´ò°üѹËõ £º tar -jcv -f filename.tar.bz2 Òª±»Ñ¹ËõµÄÎļþ»òĿ¼Ãû³Æ +²é ¿´       £º tar -jtv -f filename.tar.bz2 +½âѹËõ     £ºtar -jxv -f filename.tar.bz2 -C Òª½âѹËõµÄĿ¼ # BASH -??????? shell ?????????????Bash ???? shell ?????? +¿ÉÒÔͨ¹ý shell ÇëÇóÄÚºËÌṩ·þÎñ£¬Bash ÕýÊÇ shell µÄÒ»ÖÖ¡£ -## Bash???? +## BashÌØÐÔ -**1. ???????** +**1. ÃüÁîÀúÊ·** -?????¨´??????þŸ???¦Å??????§Ö??????????????????§µ? \~/.bash_history ????§Þ?????????¦Å??????§Û??????þŸ +¼Ç¼ʹÓùýµÄÃüÁî¡£±¾´ÎµÇ¼ËùÖ´ÐеÄÃüÁî¶¼»áÔÝʱ´æ·Åµ½ÄÚ´æÖУ¬ \~/.bash_history ÎļþÖмǼµÄÊÇǰһ´ÎµÇ¼ËùÖ´ÐйýµÄÃüÁî¡£ -**2. ????????????** +**2. ÃüÁîÓëÎļþ²¹È«** -??????tab +¿ì½Ý¼ü£ºtab -**3. ????????** +**3. ÃüÃû±ðÃû** -???? lm ?? ls -al ??????? +ÀýÈç lm ÊÇ ls -al µÄ±ðÃû¡£ **4. shell scripts** -**5. ????** +**5. ͨÅä·û** -???? ls -l /usr/bin/X\* ?§Ô? /usr/bin ?????????? X ?????????? +ÀýÈç ls -l /usr/bin/X\* Áгö /usr/bin ÏÂÃæËùÓÐÒÔ X ¿ªÍ·µÄÎļþ¡£ -## ???????? +## ±äÁ¿²Ù×÷ -?????????????????? = ??????????????????????? \$ ????????? \${} ????????????????? echo ???þŸ +¶ÔÒ»¸ö±äÁ¿¸³ÖµÖ±½ÓʹÓà = £¬¶Ô±äÁ¿È¡ÓÃÐèÒªÔÚ±äÁ¿Ç°¼ÓÉÏ \$ £¬Ò²¿ÉÒÔÓà \${} µÄÐÎʽ£¬Êä³ö±äÁ¿Ê¹Óà echo ÃüÁî¡£ ```bash $ var=abc @@ -743,24 +743,24 @@ $ echo $var $ echo ${var} ``` -????????????§á????????????????????????????????????????????????????????var="lang is \$LANG"????var???? lang is zh_TW.UTF-8??????????????????????????????????????? var='lang is \$LANG'???? var ???? lang is \$LANG?? +±äÁ¿ÄÚÈÝÈç¹ûÓпոñ£¬ÐèҪʹÓÃË«ÒýºÅ»òÕßµ¥ÒýºÅ¡£Ë«ÒýºÅÄÚµÄÌØÊâ×Ö·û¿ÉÒÔ±£ÁôÔ­±¾ÌØÐÔ£¬ÀýÈçvar="lang is \$LANG"£¬ÔòvarµÄֵΪ lang is zh_TW.UTF-8£»¶øµ¥ÒýºÅÄÚµÄÌØÊâ×Ö·û¾ÍÊÇÌØÊâ×Ö·û±¾Éí£¬ÀýÈç var='lang is \$LANG'£¬Ôò var µÄֵΪ lang is \$LANG¡£ -??????? \`???\` ???? \$(???) ????????????§ß????????????????? version=\$(uname -r)???? version ???? 3.10.0-229.el7.x86_64?? +¿ÉÒÔʹÓà \`Ö¸Áî\` »òÕß \$(Ö¸Áî) µÄ·½Ê½½«Ö¸ÁîµÄÖ´Ðнá¹û¸³Öµ¸ø±äÁ¿¡£ÀýÈç version=\$(uname -r)£¬Ôò version µÄֵΪ 3.10.0-229.el7.x86_64¡£ -??????? export ???????????????????????????????????????????????????¦Í???????????? Bash ?????????? Bash?? +¿ÉÒÔʹÓà export ÃüÁ×Ô¶¨Òå±äÁ¿×ª³É»·¾³±äÁ¿£¬»·¾³±äÁ¿¿ÉÒÔÔÚ×Ó³ÌÐòÖÐʹÓã¬Ëùν×Ó³ÌÐò¾ÍÊÇÓɵ±Ç° Bash ¶ø²úÉúµÄ×Ó Bash¡£ -Bash ?????????????????????????????????????????§Ú?????????????????????????????????????????????????? declare ???? +Bash µÄ±äÁ¿¿ÉÒÔÉùÃ÷ΪÊý×éºÍÕûÊýÊý×Ö¡£×¢ÒâÊý×ÖÀàÐÍûÓи¡µãÊý¡£Èç¹û²»½øÐÐÉùÃ÷£¬Ä¬ÈÏÊÇ×Ö·û´®ÀàÐÍ¡£±äÁ¿µÄÉùÃ÷ʹÓà declare ÃüÁ ```html $ declare [-aixr] variable --a ?? ????????????? --i ?? ????????????? --x ?? ????????????? --r ?? ?????readonly???? +-a £º ¶¨ÒåΪÊý×éÀàÐÍ +-i £º ¶¨ÒåΪÕûÊýÀàÐÍ +-x £º ¶¨ÒåΪ»·¾³±äÁ¿ +-r £º ¶¨ÒåΪreadonlyÀàÐÍ ``` -??? [ ] ??????????§Ó????? +ʹÓà [ ] À´¶ÔÊý×é½øÐвÙ×÷£º ```bash $ array[1]=a @@ -768,53 +768,53 @@ $ array[2]=b $ echo ${array[1]} ``` -## ?????????? +## Ö¸ÁîËÑË÷˳Ðò -1. ?????????¡¤?????????????? /bin/ls ???? ./ls ?? -2. ?????????????????§µ? -3. ?? Bash ????????????§µ? -4. ?? \$PATH ?????????????¡¤??????????????????????§³? +1. ÒÔ¾ø¶Ô»òÏà¶Ô·¾¶À´Ö´ÐÐÖ¸ÁÀýÈç /bin/ls »òÕß ./ls £» +2. ÓɱðÃûÕÒµ½¸ÃÖ¸ÁîÀ´Ö´ÐУ» +3. ÓÉ Bash ÄÚ½¨µÄÖ¸ÁîÀ´Ö´ÐУ» +4. °´ \$PATH ±äÁ¿Ö¸¶¨µÄËÑË÷·¾¶µÄ˳ÐòÕÒµ½µÚÒ»¸öÖ¸ÁîÀ´Ö´ÐС£ -## ??????????? +## Êý¾ÝÁ÷ÖØ¶¨Ïò -??????????????????????????????????????????? +ÖØ¶¨Ïò¾ÍÊÇʹÓÃÎļþ´úÌæ±ê×¼ÊäÈë¡¢±ê×¼Êä³öºÍ±ê×¼´íÎóÊä³ö¡£ -1. ??????? (stdin)      ??????? 0 ????? < ?? << ?? -2. ?????? (stdout)    ??????? 1 ????? > ?? >> ?? -3. ??????????(stderr)??????? 2 ????? 2> ?? 2>> ?? +1. ±ê×¼ÊäÈë (stdin)      £º´úÂëΪ 0 £¬Ê¹Óà < »ò << £» +2. ±ê×¼Êä³ö (stdout)    £º´úÂëΪ 1 £¬Ê¹Óà > »ò >> £» +3. ±ê×¼´íÎóÊä³ö(stderr)£º´úÂëΪ 2 £¬Ê¹Óà 2> »ò 2>> £» -???§µ????????????????????????????????????????????????????? +ÆäÖУ¬ÓÐÒ»¸ö¼ýÍ·µÄ±íʾÒÔ¸²¸ÇµÄ·½Ê½Öض¨Ïò£¬¶øÓÐÁ½¸ö¼ýÍ·µÄ±íʾÒÔ×·¼ÓµÄ·½Ê½Öض¨Ïò¡£ -??????????????????????????????????? /dev/null ??????????????? +¿ÉÒÔ½«²»ÐèÒªµÄ±ê×¼Êä³öÒÔ¼°±ê×¼´íÎóÊä³öÖØ¶¨Ïòµ½ /dev/null £¬Ï൱ÓÚÈÓ½øÀ¬»øÏä¡£ -??????????????????????????????????????????????????????????????????????? 2>&1 ??????????????????????????? +Èç¹ûÐèÒª½«±ê×¼Êä³öÒÔ¼°±ê×¼´íÎóÊä³öÍ¬Ê±ÖØ¶¨Ïòµ½Ò»¸öÎļþ£¬ÐèÒª½«Ä³¸öÊä³öת»»ÎªÁíÒ»¸öÊä³ö£¬ÀýÈç 2>&1 ±íʾ½«±ê×¼´íÎóÊä³öת»»Îª±ê×¼Êä³ö¡£ ```bash $ find /home -name .bashrc > list 2>&1 ``` -## ??????? +## ¹ÜÏßÖ¸Áî -??????????????????????????????????????????????????????????????????????????????????????????¨´???????????????? | ??????????????þŸ +¹ÜÏßÊǽ«Ò»¸öÃüÁîµÄ±ê×¼Êä³ö×÷ΪÁíÒ»¸öÃüÁîµÄ±ê×¼ÊäÈ룬ÔÚÊý¾ÝÐèÒª¾­¹ý¶à¸ö²½ÖèµÄ´¦ÀíÖ®ºó²ÅÄܵõ½ÎÒÃÇÏëÒªµÄ¸ñʽʱ¾Í¿ÉÒÔʹÓùÜÏß¡£ÔÚÃüÁîÖ®¼äʹÓà | ·Ö¸ô¸÷¸ö¹ÜÏßÃüÁî¡£ ```bash $ ls -al /etc | less ``` -### 1. ??????cut +### 1. ÌáȡָÁcut -????????????§Ö???§³? +ÌáÈ¡¹ý³ÌÒ»ÐÐÒ»ÐеؽøÐС£ -cut ??????????§Ù?????????????? +cut ¶ÔÊý¾Ý½øÐÐÇз֣¬È¡³öÏëÒªµÄ²¿·Ö¡£ ```html $ cut --d ??????? --f ?????? -d ???????? -f n ????? n ?????? --c ??????????¦Ë??????? +-d £º·Ö¸ô·û +-f £º¾­¹ý -d ·Ö¸ôºó£¬Ê¹Óà -f n È¡³öµÚ n ¸öÇø¼ä +-c £ºÒÔ×Ö·ûΪµ¥Î»È¡³öÇø¼ä ``` -????1??last ???????????????????????????????? +·¶Àý1£ºlast ½«ÏÔʾµÄµÇÈëÕßµÄÐÅÏ¢£¬ÒªÇó½öÏÔʾÓû§Ãû¡£ ```html $ last @@ -825,7 +825,7 @@ root pts/1 192.168.201.254 Thu Feb 5 22:37 - 23:53 (01:16) $ last | cut -d ' ' -f 1 ``` -????2???? export ????????????? 12 ?????????????????? +·¶Àý2£º½« export Êä³öµÄѶϢ£¬È¡µÃµÚ 12 ×Ö·ûÒÔºóµÄËùÓÐ×Ö·û´®¡£ ```html $ export @@ -833,28 +833,28 @@ declare -x HISTCONTROL="ignoredups" declare -x HISTSIZE="1000" declare -x HOME="/home/dmtsai" declare -x HOSTNAME="study.centos.vbird" -.....(???????)..... +.....(ÆäËûÊ¡ÂÔ)..... $ export | cut -c 12 ``` -### 2. ????????sort??uniq +### 2. ÅÅÐòÃüÁsort¡¢uniq -**sort** ???????? +**sort** ½øÐÐÅÅÐò¡£ ```html $ sort [-fbMnrtuk] [file or stdin] --f ???????§³§Õ --b ?????????????? --M ?????¡¤???????????????? JAN, DEC --n ????????? --r ?????????? --u ?????? unique ????????????????? --t ?????????????tab --k ?????????????? +-f £ººöÂÔ´óСд +-b £ººöÂÔ×îÇ°ÃæµÄ¿Õ¸ñ +-M £ºÒÔÔ·ݵÄÃû×ÖÀ´ÅÅÐò£¬ÀýÈç JAN, DEC +-n £ºÊ¹ÓÃÊý×Ö +-r £º·´ÏòÅÅÐò +-u £ºÏ൱ÓÚ unique £¬Öظ´ÄÚÈÝÖ»³öÏÖÒ»´Î +-t £º·Ö¸ô·û£¬Ä¬ÈÏΪtab +-k £ºÖ¸¶¨ÅÅÐòµÄÇø¼ä ``` -??????/etc/passwd ???????? : ????????????????????? +·¶Àý£º/etc/passwd ÄÚÈÝÊÇÒÔ : À´·Ö¸ôµÄ£¬ÒÔµÚÈýÀ¸À´ÅÅÐò¡£ ```html $ cat /etc/passwd | sort -t ':' -k 3 @@ -864,15 +864,15 @@ alex:x:1001:1002::/home/alex:/bin/bash arod:x:1002:1003::/home/arod:/bin/bash ``` -**uniq** ????????????????????? +**uniq** ¿ÉÒÔ½«Öظ´µÄÊý¾Ýֻȡһ¸ö¡£ ```html $ uniq [-ic] --i ???????§³§Õ --c ?????§Þ??? +-i £ººöÂÔ´óСд +-c £º½øÐмÆÊý ``` -?????????????????????? +·¶Àý£ºÈ¡µÃÿ¸öÈ˵ĵǼ×Ü´ÎÊý ```html $ last | cut -d ' ' -f 1 | sort | uniq -c @@ -884,88 +884,88 @@ $ last | cut -d ' ' -f 1 | sort | uniq -c 1 wtmp ``` -### 3. ???????????tee +### 3. Ë«ÏòÊä³öÖØ¶¨Ïò£ºtee -?????????????????????????§µ??? **tee** ??????????????????????????????????????????????? tee ????????????????????????????? +Êä³öÖØ¶¨Ïò»á½«Êä³öÄÚÈÝÖØ¶¨Ïòµ½ÎļþÖУ¬¶ø **tee** ²»½öÄܹ»Íê³ÉÕâ¸ö¹¦ÄÜ£¬»¹Äܱ£ÁôÆÁÄ»ÉϵÄÊä³ö¡£Ò²¾ÍÊÇ˵£¬Ê¹Óà tee Ö¸Áһ¸öÊä³ö»áͬʱ´«Ë͵½ÎļþºÍÆÁÄ»ÉÏ¡£ ```html $ tee [-a] file ``` -### 4. ?????????tr??col??expand??join??paste +### 4. ×Ö·ûת»»Ö¸Átr¡¢col¡¢expand¡¢join¡¢paste - **tr** ???????????§Ö???????????????????�I?? + **tr** ÓÃÀ´É¾³ýÒ»ÐÐÖеÄ×Ö·û£¬»òÕß¶Ô×Ö·û½øÐÐÌæ»»¡£ ```html $ tr [-ds] SET1 ... --d ?? ??????? SET1 ???????? +-d £º ɾ³ýÐÐÖÐ SET1 Õâ¸ö×Ö·û´® ``` -???????? last ????????????§³§Õ??????§Õ?? +·¶Àý£¬½« last Êä³öµÄÐÅÏ¢ËùÓÐСдת»»Îª´óд¡£ ```html $ last | tr '[a-z]' '[A-Z]' ``` - **col** ?? tab ????????????? + **col** ½« tab ×Ö·ûתΪ¿Õ¸ñ×Ö·û¡£ ```html $ col [-xb] --x ?? ?? tab ????????????? +-x £º ½« tab ¼üת»»³É¶ÔµÈµÄ¿Õ¸ñ¼ü ``` -**expand** ?? tab ??????????????????? 8 ???? +**expand** ½« tab ת»»Ò»¶¨ÊýÁ¿µÄ¿Õ¸ñ£¬Ä¬ÈÏÊÇ 8 ¸ö¡£ ```html $ expand [-t] file --t ??tab ?????????? +-t £ºtab תΪ¿Õ¸ñµÄÊýÁ¿ ``` -**join** ????????????????§Ü??????? +**join** ½«ÓÐÏàͬÊý¾ÝµÄÄÇÒ»Ðкϲ¢ÔÚÒ»Æð¡£ ```html $ join [-ti12] file1 file2 --t ???????????????? --i ???????§³§Õ????? --1 ???????????????????? --2 ???????????????????? +-t £º·Ö¸ô·û£¬Ä¬ÈÏΪ¿Õ¸ñ +-i £ººöÂÔ´óСдµÄ²îÒì +-1 £ºµÚÒ»¸öÎļþËùÓõıȽÏ×Ö¶Î +-2 £ºµÚ¶þ¸öÎļþËùÓõıȽÏ×Ö¶Î ``` -**paste** ???????????????? +**paste** Ö±½Ó½«Á½ÐÐÕ³ÌùÔÚÒ»Æð¡£ ```html $ paste [-d] file1 file2 --d ????????????? tab +-d £º·Ö¸ô·û£¬Ä¬ÈÏΪ tab ``` -### 5. ???????split +### 5. ·ÖÇøÖ¸Ásplit -**split** ???????????????????? +**split** ½«Ò»¸öÎļþ»®·Ö³É¶à¸öÎļþ¡£ ```html $ split [-bl] file PREFIX --b ?????§³?????§Ù?????????¦Ë?????? b, k, m ?? --l ?????????????§Ù????? -- PREFIX ?????????????????? +-b £ºÒÔ´óСÀ´½øÐзÖÇø£¬¿É¼Óµ¥Î»£¬ÀýÈç b, k, m µÈ +-l £ºÒÔÐÐÊýÀ´½øÐзÖÇø¡£ +- PREFIX £º·ÖÇøÎļþµÄǰµ¼Ãû³Æ ``` -# ?????????????????????? +# Õý¹æ±íʾ·¨ÓëÎļþ¸ñʽ»¯´¦Àí ## grep -??????????????????????????? +ʹÓÃÕýÔò±íʾʽ°ÑÆ¥ÅäµÄÐÐÌáÈ¡³öÀ´¡£ ```html -$ grep [-acinv] [--color=auto] ???????? filename --a ?? ?? binary ????? text ?????????????? --c ?? ??????????? --i ?? ?????§³§Õ --n ?? ????§Ü? --v ?? ????????????????? ???????? ?????????? ---color=auto ?????????????????? +$ grep [-acinv] [--color=auto] ËÑѰ×Ö·û´® filename +-a £º ½« binary ÎļþÒÔ text ÎļþµÄ·½Ê½½øÐÐËÑѰ +-c £º ¼ÆËãÕÒµ½¸öÊý +-i £º ºöÂÔ´óСд +-n £º Êä³öÐкŠ+-v £º ·´ÏòÑ¡Ôñ£¬Ò༴ÏÔʾ³öûÓÐ ËÑѰ×Ö·û´® ÄÚÈݵÄÄÇÒ»ÐÐ +--color=auto £ºÕÒµ½µÄ¹Ø¼ü×Ö¼ÓÑÕÉ«ÏÔʾ ``` -??????????? the ??????????????????????????? --color=auto ???????????????? Linux ?????????? the ??????? +·¶Àý£º°Ñº¬ÓÐ the ×Ö·û´®µÄÐÐÌáÈ¡³öÀ´£¨×¢ÒâĬÈÏ»áÓÐ --color=auto Ñ¡ÏÒò´ËÒÔÏÂÄÚÈÝÔÚ Linux ÖÐÓÐÑÕÉ«ÏÔʾ the ×Ö·û´®£© ```html $ grep -n 'the' regular_express.txt @@ -976,19 +976,19 @@ $ grep -n 'the' regular_express.txt 18:google is the best tools for search keyword ``` -??? { ?? } ??????? shell ???????????????????????????????????????‰^ +ÒòΪ { Óë } µÄ·ûºÅÔÚ shell ÊÇÓÐÌØÊâÒâÒåµÄ£¬Òò´Ë±ØÐëҪʹÓÃʹÓÃתÒå×Ö·û½øÐÐתÒå¡£ ```html $ grep -n 'go\{2,5\}g' regular_express.txt ``` -?????????????¦Ï? [???????](https://github.com/00000H/notes/blob/master/notes/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F.md). +ÆäËüÕýÔò±í´ïʽÇë²Î¿¼ [ÕýÔò±í´ïʽ](https://github.com/00000H/notes/blob/master/notes/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F.md). ## printf -????????????? +ÓÃÓÚ¸ñʽ»¯Êä³ö¡£ -????????????????? printf ????????????? $( ) ????? +Ëü²»ÊôÓڹܵÀÃüÁÔÚ¸ø printf ´«Êý¾ÝʱÐèҪʹÓà $( ) ÐÎʽ¡£ ```html $ printf '%10s %5i %5i %5i %8.2f \n' $(cat printf.txt) @@ -1000,12 +1000,12 @@ $ printf '%10s %5i %5i %5i %8.2f \n' $(cat printf.txt) ## awk ```html -$ awk '???????? 1{???? 1} ???????? 2{???? 2} ...' filename +$ awk 'Ìõ¼þÀàÐÍ 1{¶¯×÷ 1} Ìõ¼þÀàÐÍ 2{¶¯×÷ 2} ...' filename ``` -awk ??¦Ä?????§µ????????§³??¦Ë????¦²??????¦Å???????????\$n??n ???¦Ê???? 1 ?????\$0 ???????§³? +awk ÿ´Î´¦ÀíÒ»ÐУ¬´¦ÀíµÄ×îСµ¥Î»ÊÇ×ֶΣ¬Ã¿¸ö×ֶεÄÃüÃû·½Ê½Îª£º\$n£¬n Ϊ×ֶκţ¬´Ó 1 ¿ªÊ¼£¬\$0 ±íʾһÕûÐС£ -???? 1???????????????????? ip +·¶Àý 1£ºÈ¡³öµÇ¼Óû§µÄÓû§ÃûºÍ ip ```html $ last -n 5 @@ -1018,15 +1018,15 @@ dmtsai tty1 Fri May 29 11:55 - 12:11 (00:15) $ last -n 5 | awk '{print $1 "\t" $3} ``` -awk ?????? +awk ±äÁ¿£º -| ???????? | ???????? | +| ±äÁ¿Ãû³Æ | ´ú±íÒâÒå | | -- | -- | -| NF | ??????§Ö???????? | -| NR | ??????????????????? | -| FS | ??????????????????? | +| NF | ÿһÐÐÓµÓеÄ×Ö¶Î×ÜÊý | +| NR | ĿǰËù´¦ÀíµÄÊǵڼ¸ÐÐÊý¾Ý | +| FS | ĿǰµÄ·Ö¸ô×Ö·û£¬Ä¬ÈÏÊǿոñ¼ü | -???? 2??????????????§Ü????????????§Ø?????? +·¶Àý 2£ºÊä³öÕýÔÚ´¦ÀíµÄÐкţ¬²¢ÏÔʾÿһÐÐÓжàÉÙ×Ö¶Î ```html $ last -n 5 | awk '{print $1 "\t lines: " NR "\t columns: " NF}' @@ -1037,9 +1037,9 @@ dmtsai lines: 4 columns: 10 dmtsai lines: 5 columns: 9 ``` -?????????????????????§Ö?????? ==?? +¿ÉÒÔʹÓôóÓÚµÈÓÚÂß¼­£¬ÆäÖеÈÓÚʹÓà ==¡£ -???? 3??/etc/passwd ????????????? UID???? UID §³?? 10 ????????§Õ??? +·¶Àý 3£º/etc/passwd ÎļþµÚÈý¸ö×Ö¶ÎΪ UID£¬¶Ô UID СÓÚ 10 µÄÊý¾Ý½øÐд¦Àí¡£ ```text cat /etc/passwd | awk 'BEGIN {FS=":"} $3 < 10 {print $1 "\t " $3}' @@ -1048,24 +1048,24 @@ bin 1 daemon 2 ``` -# vim ?????? +# vim Èý¸öģʽ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/341c632a-1fc1-4068-9b9f-bf7ef68ebb4c.jpg) -????????????????????????????????›¥????? +ÔÚÖ¸ÁîÁÐģʽÏ£¬ÓÐÒÔÏÂÃüÁîÓÃÓÚÀ뿪»òÕß´æ´¢Îļþ¡£ -| ???? | ???? | +| ÃüÁî | ×÷Óà | | -- | -- | -| :w | §Õ?????| -| :w! | ???????????????§Õ???????????????§Õ???????????????????§Û? | -| :q | ??| -| :q! | ???????????| -| :wq | §Õ????????| -| :wq!| ???§Õ????????| +| :w | дÈë´ÅÅÌ| +| :w! | µ±ÎļþΪֻ¶Áʱ£¬Ç¿ÖÆÐ´Èë´ÅÅÌ¡£µ½µ×Äܲ»ÄÜдÈ룬ÓëÓû§¶Ô¸ÃÎļþµÄȨÏÞÓÐ¹Ø | +| :q | À뿪| +| :q! | Ç¿ÖÆÀ뿪²»±£´æ| +| :wq | дÈë´ÅÅ̺óÀ뿪| +| :wq!| Ç¿ÖÆÐ´Èë´ÅÅ̺óÀ뿪| -# ?¦Ï????? +# ²Î¿¼×ÊÁÏ -- ???. ?? ?? ?? Linux ? ?? ?? ?? ?? ? ?? ?? ??[J]. 2009. -- [Linux ??????????????](https://www.ibm.com/developerworks/cn/linux/l-cn-rpmdpkg/index.html) +- Äñ¸ç. Äñ ¸ç µÄ Linux ˽ ·¿ ²Ë »ù ´¡ ƪ µÚ Èý °æ[J]. 2009. +- [Linux ƽ̨ÉϵÄÈí¼þ°ü¹ÜÀí](https://www.ibm.com/developerworks/cn/linux/l-cn-rpmdpkg/index.html) diff --git a/notes/MySQL.md b/notes/MySQL.md index 13500542..4a86f910 100644 --- a/notes/MySQL.md +++ b/notes/MySQL.md @@ -1,226 +1,226 @@ -* [?›¥????](#?›¥????) +* [´æ´¢ÒýÇæ](#´æ´¢ÒýÇæ) * [1. InnoDB](#1-innodb) * [2. MyISAM](#2-myisam) - * [3. InnoDB ?? MyISAM ????](#3-innodb-??-myisam-????) -* [????????](#????????) - * [1. ????](#1-????) - * [2. ??????](#2-??????) - * [3. ?????](#3-?????) - * [4. ????????](#4-????????) -* [????](#????) - * [1. ????????](#1-????????) - * [1.1 B-Tree ????](#11-b-tree-????) - * [1.2 ???????](#12-???????) - * [1.3. ????????????R-Tree??](#13-????????????r-tree??) - * [1.4 ???????](#14-???????) - * [2. ?????????](#2-?????????) - * [3. ???????](#3-???????) - * [3.1 ????????](#31-????????) - * [3.2 ??????](#32-??????) - * [3.3 ????????](#33-????????) - * [3.4 ?????§Ö????](#34-?????§Ö????) - * [3.5 ???????](#35-???????) - * [3.6 ????????](#36-????????) - * [4. B-Tree ?? B+Tree ???](#4-b-tree-??-b+tree-???) + * [3. InnoDB Óë MyISAM µÄ±È½Ï](#3-innodb-Óë-myisam-µÄ±È½Ï) +* [Êý¾ÝÀàÐÍ](#Êý¾ÝÀàÐÍ) + * [1. ÕûÐÍ](#1-ÕûÐÍ) + * [2. ¸¡µãÊý](#2-¸¡µãÊý) + * [3. ×Ö·û´®](#3-×Ö·û´®) + * [4. ʱ¼äºÍÈÕÆÚ](#4-ʱ¼äºÍÈÕÆÚ) +* [Ë÷Òý](#Ë÷Òý) + * [1. Ë÷Òý·ÖÀà](#1-Ë÷Òý·ÖÀà) + * [1.1 B-Tree Ë÷Òý](#11-b-tree-Ë÷Òý) + * [1.2 ¹þÏ£Ë÷Òý](#12-¹þÏ£Ë÷Òý) + * [1.3. ¿Õ¼äË÷ÒýÊý¾Ý£¨R-Tree£©](#13-¿Õ¼äË÷ÒýÊý¾Ýr-tree) + * [1.4 È«ÎÄË÷Òý](#14-È«ÎÄË÷Òý) + * [2. Ë÷ÒýµÄÓŵã](#2-Ë÷ÒýµÄÓŵã) + * [3. Ë÷ÒýÓÅ»¯](#3-Ë÷ÒýÓÅ»¯) + * [3.1 ¶ÀÁ¢µÄÁÐ](#31-¶ÀÁ¢µÄÁÐ) + * [3.2 ǰ׺Ë÷Òý](#32-ǰ׺Ë÷Òý) + * [3.3 ¶àÁÐË÷Òý](#33-¶àÁÐË÷Òý) + * [3.4 Ë÷ÒýÁеÄ˳Ðò](#34-Ë÷ÒýÁеÄ˳Ðò) + * [3.5 ¾Û´ØË÷Òý](#35-¾Û´ØË÷Òý) + * [3.6 ¸²¸ÇË÷Òý](#36-¸²¸ÇË÷Òý) + * [4. B-Tree ºÍ B+Tree Ô­Àí](#4-b-tree-ºÍ-b+tree-Ô­Àí) * [4. 1 B-Tree](#4-1-b-tree) * [4.2 B+Tree](#42-b+tree) - * [4.3 ?????????????? B+Tree](#43-??????????????-b+tree) - * [4.4 ?????? B-Tree ?? B+Tree](#44-??????-b-tree-??-b+tree) -* [??????????](#??????????) + * [4.3 ´øÓÐ˳Ðò·ÃÎÊÖ¸ÕëµÄ B+Tree](#43-´øÓÐ˳Ðò·ÃÎÊÖ¸ÕëµÄ-b+tree) + * [4.4 ΪʲôʹÓà B-Tree ºÍ B+Tree](#44-ΪʲôʹÓÃ-b-tree-ºÍ-b+tree) +* [²éѯÐÔÄÜÓÅ»¯](#²éѯÐÔÄÜÓÅ»¯) * [1. Explain](#1-explain) - * [2. ??????????](#2-??????????) - * [3. ??????????](#3-??????????) - * [4. ????? DELETE ?? INSERT ???](#4-?????-delete-??-insert-???) -* [???????](#???????) -* [?????????????](#?????????????) - * [1. ???????](#1-???????) - * [2. ??????](#2-??????) -* [?¦Ï?????](#?¦Ï?????) + * [2. ¼õÉÙ·µ»ØµÄÁÐ](#2-¼õÉÙ·µ»ØµÄÁÐ) + * [3. ¼õÉÙ·µ»ØµÄÐÐ](#3-¼õÉÙ·µ»ØµÄÐÐ) + * [4. ²ð·Ö´óµÄ DELETE »ò INSERT Óï¾ä](#4-²ð·Ö´óµÄ-delete-»ò-insert-Óï¾ä) +* [·Ö¿âÓë·Ö±í](#·Ö¿âÓë·Ö±í) +* [¹ÊÕÏ×ªÒÆºÍ¹ÊÕϻָ´](#¹ÊÕÏ×ªÒÆºÍ¹ÊÕϻָ´) + * [1. ¹ÊÕÏ×ªÒÆ](#1-¹ÊÕÏ×ªÒÆ) + * [2. ¹ÊÕϻָ´](#2-¹ÊÕϻָ´) +* [²Î¿¼×ÊÁÏ](#²Î¿¼×ÊÁÏ) -# ?›¥???? +# ´æ´¢ÒýÇæ ## 1. InnoDB -InnoDB ?? MySQL ??????????????—¨???????? InnoDB ??????????????????????????›¥???µµ +InnoDB ÊÇ MySQL µÄĬÈÏÊÂÎñÐÍÒýÇæ£¬Ö»ÓÐÔÚÐèÒª InnoDB ²»Ö§³ÖµÄÌØÐÔʱ£¬²Å¿¼ÂÇʹÓÃÆäËü´æ´¢ÒýÇæ¡£ -???? MVCC ????????????????????????????????????????????????? +²ÉÓà MVCC À´Ö§³Ö¸ß²¢·¢£¬²¢ÇÒʵÏÖÁËËĸö±ê×¼µÄ¸ôÀë¼¶±ð£¬Ä¬Èϼ¶±ðÊÇ¿ÉÖØ¸´¶Á¡£ -?????????????????????????????????????§Ü????????? +±íÊÇ»ùÓÚ¾Û´ØË÷Òý½¨Á¢µÄ£¬Ëü¶ÔÖ÷¼üµÄ²éѯÐÔÄÜÓкܸߵÄÌáÉý¡£ -????????????????????????????????????????????????????????§Õ??? hash ?????????????????????????????????????????????????????????? +ÄÚ²¿×öÁ˺ܶàÓÅ»¯£¬°üÀ¨´Ó´ÅÅ̶ÁÈ¡Êý¾Ýʱ²ÉÓõĿÉÔ¤²âÐÔ¶Á£¬Äܹ»×Ô¶¯ÔÚÄÚ´æÖд´½¨ hash Ë÷ÒýÒÔ¼ÓËÙ¶Á²Ù×÷µÄ×ÔÊÊÓ¦¹þÏ£Ë÷Òý£¬ÒÔ¼°Äܹ»¼ÓËÙ²åÈë²Ù×÷µÄ²åÈ뻺³åÇøµÈ¡£ -????§»??????????????????????? +ͨ¹ýһЩ»úÖÆºÍ¹¤¾ßÖ§³ÖÕæÕýµÄÈȱ¸·Ý¡£ ## 2. MyISAM -MyISAM ??????????????????????????????????�‰????GIS??????? MyISAM ???????????§Þ????????????????????????? +MyISAM ÌṩÁË´óÁ¿µÄÌØÐÔ£¬°üÀ¨È«ÎÄË÷Òý¡¢Ñ¹Ëõ¡¢¿Õ¼äº¯Êý£¨GIS£©µÈ¡£µ« MyISAM ²»Ö§³ÖÊÂÎñºÍÐм¶Ëø£¬¶øÇÒ±¼À£ºóÎÞ·¨°²È«»Ö¸´¡£ -????????????????????????§³? +Ö»ÄܶÔÕûÕűí¼ÓËø£¬¶ø²»ÊÇÕë¶ÔÐС£ -????????????????§Þ??????????????????????????????????????????????§»???????????????????????????? +¿ÉÒÔÊÖ¹¤»òÕß×Ô¶¯Ö´Ðмì²éºÍÐÞ¸´²Ù×÷£¬µ«ÊǺÍÊÂÎñ»Ö¸´ÒÔ¼°±¼À£»Ö¸´²»Í¬£¬¿ÉÄܵ¼ÖÂһЩÊý¾Ý¶ªÊ§£¬¶øÇÒÐÞ¸´²Ù×÷ÊǷdz£ÂýµÄ¡£ -???????????????????§³? +¿ÉÒÔ°üº¬¶¯Ì¬»òÕß¾²Ì¬µÄÐС£ -???????? DELAY_KEY_WRITE ??????????????????????????????????????????§Õ???????????§Õ??????§Ö??????????????????????????????????????????????????§Õ????????????????????????§Õ????????????????????????????????????????????????????????? +Èç¹ûÖ¸¶¨ÁË DELAY_KEY_WRITE Ñ¡ÏÔÚÿ´ÎÐÞ¸ÄÖ´ÐÐÍê³Éʱ£¬²»»áÁ¢¼´½«Ð޸ĵÄË÷ÒýÊý¾ÝдÈë´ÅÅÌ£¬¶øÊÇ»áдµ½ÄÚ´æÖеļü»º³åÇø£¬Ö»ÓÐÔÚÇåÀí¼ü»º³åÇø»òÕ߹رձíµÄʱºò²Å»á½«¶ÔÓ¦µÄË÷Òý¿éдÈë´ÅÅÌ¡£ÕâÖÖ·½Ê½¿ÉÒÔ¼«´óµÄÌáÉýдÈëÐÔÄÜ£¬µ«ÊÇÔÚÊý¾Ý¿â»òÕßÖ÷»ú±¼À£Ê±»áÔì³ÉË÷ÒýË𻵣¬ÐèÒªÖ´ÐÐÐÞ¸´²Ù×÷¡£ -??????????????????????????????????????????????????????? MyISAM ????? +Èç¹û±íÔÚ´´½¨²¢µ¼ÈëÊý¾ÝÒԺ󣬲»»áÔÙ½øÐÐÐ޸IJÙ×÷£¬ÄÇôÕâÑùµÄ±íÊʺϲÉÓà MyISAM ѹËõ±í¡£ -???????????????????§³?????????????????????????????????? MyISAM?? +¶ÔÓÚÖ»¶ÁÊý¾Ý£¬»òÕß±í±È½ÏС¡¢¿ÉÒÔÈÝÈÌÐÞ¸´²Ù×÷£¬ÔòÒÀÈ»¿ÉÒÔ¼ÌÐøÊ¹Óà MyISAM¡£ -MyISAM ?????????????????›¥?????????§»???????????¨¢? +MyISAM Éè¼Æ¼òµ¥£¬Êý¾ÝÒÔ½ôÃܸñʽ´æ´¢£¬ËùÒÔÔÚijЩ³¡¾°ÏÂÐÔÄܺܺᣠ-## 3. InnoDB ?? MyISAM ???? +## 3. InnoDB Óë MyISAM µÄ±È½Ï -**????** +**ÊÂÎñ** -InnoDB ?????????? +InnoDB ÊÇÊÂÎñÐ͵ġ£ -**????** +**±¸·Ý** -InnoDB ????????????? +InnoDB Ö§³ÖÔÚÏßÈȱ¸·Ý¡£ -**???????** +**±¼À£»Ö¸´** -MyISAM ??????????????? InnoDB ?????????????????????? +MyISAM ±¼À£ºó·¢ÉúË𻵵ĸÅÂÊ±È InnoDB ¸ßºÜ¶à£¬¶øÇÒ»Ö¸´µÄËÙ¶ÈÒ²¸üÂý¡£ -**????** +**²¢·¢** -MyISAM ??????????? InnoDB ??????§Þ????? +MyISAM Ö»Ö§³Ö±í¼¶Ëø£¬¶ø InnoDB »¹Ö§³ÖÐм¶Ëø¡£ -**????????** +**ÆäËüÌØÐÔ** -MyISAM ???????????????????????? +MyISAM Ö§³ÖÈ«ÎÄË÷Òý£¬µØÀí¿Õ¼äË÷Òý£» -# ???????? +# Êý¾ÝÀàÐÍ -## 1. ???? +## 1. ÕûÐÍ -TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT ?????? 8, 16, 24, 64 ¦Ë?›¥????????????§³??????¨¢? +TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT ·Ö±ðʹÓà 8, 16, 24, 64 λ´æ´¢¿Õ¼ä£¬Ò»°ãÇé¿öÏÂԽСµÄÁÐÔ½ºÃ¡£ -INT(11) ?§Ö????????ÕÇ??????????????????????????›¥??????????????????? +INT(11) ÖеÄÊý×ÖÖ»Êǹ涨Á˽»»¥¹¤¾ßÏÔʾ×Ö·ûµÄ¸öÊý£¬¶ÔÓÚ´æ´¢ºÍ¼ÆËãÀ´ËµÊÇûÓÐÒâÒåµÄ¡£ -## 2. ?????? +## 2. ¸¡µãÊý -FLOAT ?? DOUBLE ??????????DECIMAL ??????§³???????CPU ????????????????????? DECIMAl ??????????? DECIMAL ????????????????????????? +FLOAT ºÍ DOUBLE Ϊ¸¡µãÀàÐÍ£¬DECIMAL Ϊ¸ß¾«¶ÈСÊýÀàÐÍ¡£CPU Ô­ÉúÖ§³Ö¸¡µãÔËË㣬µ«ÊDz»Ö§³Ö DECIMAl ÀàÐ͵ļÆË㣬Òò´Ë DECIMAL µÄ¼ÆËã±È¸¡µãÀàÐÍÐèÒª¸ü¸ßµÄ´ú¼Û¡£ -FLOAT??DOUBLE ?? DECIMAL ??????????§á????? DECIMAL(18, 9) ?????? 18 ¦Ë??? 9 ¦Ë?›¥§³?????????? 9 ¦Ë?›¥????????? +FLOAT¡¢DOUBLE ºÍ DECIMAL ¶¼¿ÉÒÔÖ¸¶¨ÁÐ¿í£¬ÀýÈç DECIMAL(18, 9) ±íʾ×ܹ² 18 λ£¬È¡ 9 λ´æ´¢Ð¡Êý²¿·Ö£¬Ê£Ï 9 λ´æ´¢ÕûÊý²¿·Ö¡£ -## 3. ????? +## 3. ×Ö·û´® -????? CHAR ?? VARCHAR ????????????????????????????? +Ö÷ÒªÓÐ CHAR ºÍ VARCHAR Á½ÖÖÀàÐÍ£¬Ò»ÖÖÊǶ¨³¤µÄ£¬Ò»ÖÖÊDZ䳤µÄ¡£ -VARCHAR ??????????????????????????›¥??????????????????? UPDATE ????????§Ò??????????????????????????????§³????????§Ø?????????MyISAM ???§Ó????????¦Ä›¥???? InnoDB ??????????????§Ù?????? +VARCHAR ÕâÖֱ䳤ÀàÐÍÄܹ»½ÚÊ¡¿Õ¼ä£¬ÒòΪֻÐèÒª´æ´¢±ØÒªµÄÄÚÈÝ¡£µ«ÊÇÔÚÖ´ÐÐ UPDATE ʱ¿ÉÄÜ»áʹÐбäµÃ±ÈÔ­À´³¤£¬µ±³¬³öÒ»¸öÒ³ËùÄÜÈÝÄɵĴóСʱ£¬¾ÍÒªÖ´ÐжîÍâµÄ²Ù×÷£¬MyISAM »á½«Ðвð³É²»Í¬µÄƬ¶Î´æ´¢£¬¶ø InnoDB ÔòÐèÒª·ÖÁÑÒ³À´Ê¹ÐзŽøÒ³ÄÚ¡£ -VARCHAR ??????????¦Â????? CHAR ??????? +VARCHAR »á±£Áô×Ö·û´®Ä©Î²µÄ¿Õ¸ñ£¬¶ø CHAR »áɾ³ý¡£ -## 4. ???????? +## 4. ʱ¼äºÍÈÕÆÚ -MySQL ?????????????????????????DATATIME ?? TIMESTAMP?? +MySQL ÌṩÁËÁ½ÖÖÏàËÆµÄÈÕÆÚʱ¼äÀàÐÍ£ºDATATIME ºÍ TIMESTAMP¡£ **DATATIME** -???????? 1001 ?? 9999 ????????????????????? 8 ????›¥??? +Äܹ»±£´æ´Ó 1001 Äêµ½ 9999 ÄêµÄÈÕÆÚºÍʱ¼ä£¬¾«¶ÈΪÃ룬ʹÓà 8 ×ֽڵĴ洢¿Õ¼ä¡£ -??????????? +ËüÓëÊ±ÇøÎ޹ء£ -?????????MySQL ???????????????????????? DATATIME ??????³�2008-01016 22:37:08???????? ANSI ???????????????????????? +ĬÈÏÇé¿öÏ£¬MySQL ÒÔÒ»ÖÖ¿ÉÅÅÐòµÄ¡¢ÎÞÆçÒåµÄ¸ñʽÏÔʾ DATATIME Öµ£¬ÀýÈç¡°2008-01016 22:37:08¡±£¬ÕâÊÇ ANSI ±ê×¼¶¨ÒåµÄÈÕÆÚºÍʱ¼ä±íʾ·½·¨¡£ **TIMESTAMP** -?? UNIX ?????????????? 1970 ?? 1 ?? 1 ????????????????????????????????? 4 ????????????? 1970 ?? ?? 2038 ?? +ºÍ UNIX ʱ¼ä´ÁÏàͬ£¬±£´æ´Ó 1970 Äê 1 Ô 1 ÈÕÎçÒ¹£¨¸ñÁÖÍþÖÎʱ¼ä£©ÒÔÀ´µÄÃëÊý£¬Ê¹Óà 4 ¸ö×Ö½Ú£¬Ö»Äܱíʾ´Ó 1970 Äê µ½ 2038 Äê¡£ -????????§Û?? +ËüºÍÊ±ÇøÓйء£ -MySQL ???? FROM_UNIXTIME() ?????? Unxi ??????????????????? UNIX_TIMESTAMP() ?????????????? Unix ?????? +MySQL ÌṩÁË FROM_UNIXTIME() º¯Êý°Ñ Unxi ʱ¼ä´Áת»»ÎªÈÕÆÚ£¬²¢ÌṩÁË UNIX_TIMESTAMP() º¯Êý°ÑÈÕÆÚת»»Îª Unix ʱ¼ä´Á¡£ -??????????????????????? TIMESTAMP ?§Ö????????????????????? +ĬÈÏÇé¿öÏ£¬Èç¹û²åÈëʱûÓÐÖ¸¶¨ TIMESTAMP ÁеÄÖµ£¬»á½«Õâ¸öÖµÉèÖÃΪµ±Ç°Ê±¼ä¡£ -????????? TIMESTAMP????????? DATETIME ???§¹?????? +Ó¦¸Ã¾¡Á¿Ê¹Óà TIMESTAMP£¬ÒòΪËü±È DATETIME ¿Õ¼äЧÂʸü¸ß¡£ -# ???? +# Ë÷Òý -????????›¥?????????????????????????????????????›¥??????§Ó????????????????? +Ë÷ÒýÊÇÔÚ´æ´¢ÒýÇæ²ãʵÏֵ쬶ø²»ÊÇÔÚ·þÎñÆ÷²ãʵÏֵģ¬ËùÒÔ²»Í¬´æ´¢ÒýÇæ¾ßÓв»Í¬µÄË÷ÒýÀàÐͺÍʵÏÖ¡£ -??????????????????????????????????? +Ë÷ÒýÄܹ»ÇáÒ×½«²éѯÐÔÄÜÌáÉý¼¸¸öÊýÁ¿¼¶¡£ -??????§³???????????????????????????????§¹???????§Ö?????????????????§¹????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????¡Â????????? +¶ÔÓڷdz£Ð¡µÄ±í¡¢´ó²¿·ÖÇé¿öϼòµ¥µÄÈ«±íɨÃè±È½¨Á¢Ë÷Òý¸ü¸ßЧ¡£¶ÔÓÚÖе½´óÐÍµÄ±í£¬Ë÷Òý¾Í·Ç³£ÓÐЧ¡£µ«ÊǶÔÓÚÌØ´óÐÍµÄ±í£¬½¨Á¢ºÍʹÓÃË÷ÒýµÄ´ú¼Û½«»áËæÖ®Ôö³¤¡£ÕâÖÖÇé¿öÏ£¬ÐèÒªÓõ½Ò»ÖÖ¼¼Êõ¿ÉÒÔÖ±½ÓÇø·Ö³öÐèÒª²éѯµÄÒ»×éÊý¾Ý£¬¶ø²»ÊÇÒ»Ìõ¼Ç¼һÌõ¼Ç¼µØÆ¥Å䣬ÀýÈç¿ÉÒÔʹÓ÷ÖÇø¼¼Êõ¡£ -## 1. ???????? +## 1. Ë÷Òý·ÖÀà -### 1.1 B-Tree ???? +### 1.1 B-Tree Ë÷Òý -B-Tree ?????????? MySQL ?›¥????????????????? +B-Tree Ë÷ÒýÊÇ´ó¶àÊý MySQL ´æ´¢ÒýÇæµÄĬÈÏË÷ÒýÀàÐÍ¡£ -???????????????????Ñk????????????????????????????????? +ÒòΪ²»ÔÙÐèÒª½øÐÐÈ«±íɨÃ裬ֻÐèÒª¶ÔÊ÷½øÐÐËÑË÷¼´¿É£¬Òò´Ë²éÕÒËÙ¶È¿ìºÜ¶à¡£ -????????????????????§µ?????????§Û????????B-Tree ?????????????????????¦¶?????????????§Þ????????????????????????? +¿ÉÒÔÖ¸¶¨¶à¸öÁÐ×÷ΪË÷ÒýÁУ¬¶à¸öË÷ÒýÁй²Í¬×é³É¼ü¡£B-Tree Ë÷ÒýÊÊÓÃÓÚÈ«¼üÖµ¡¢¼üÖµ·¶Î§ºÍ¼üǰ׺²éÕÒ£¬ÆäÖмüǰ׺²éÕÒÖ»ÊÊÓÃÓÚ×î×óǰ׺²éÕÒ¡£ -?????????????????????????????î• +³ýÁËÓÃÓÚ²éÕÒ£¬»¹¿ÉÒÔÓÃÓÚÅÅÐòºÍ·Ö×é¡£ -???????????????§Ö??????§Ó?????????????????? +Èç¹û²»Êǰ´ÕÕË÷ÒýÁеÄ˳Ðò½øÐвéÕÒ£¬ÔòÎÞ·¨Ê¹ÓÃË÷Òý¡£ -### 1.2 ??????? +### 1.2 ¹þÏ£Ë÷Òý -???????????????????????? +»ùÓÚ¹þÏ£±íʵÏÖ£¬ÓŵãÊDzéÕҷdz£¿ì¡£ -?? MySQL ????? Memory ?????????????????? +ÔÚ MySQL ÖÐÖ»ÓÐ Memory ÒýÇæÏÔʽ֧³Ö¹þÏ£Ë÷Òý¡£ -InnoDB ?????????????????§³????????????????????????????????????????????? B-Tree ???????????????????????????????? B-Tree ???????§Û?????????§»?????????????????? +InnoDB ÒýÇæÓÐÒ»¸öÌØÊâµÄ¹¦ÄܽС°×ÔÊÊÓ¦¹þÏ£Ë÷Òý¡±£¬µ±Ä³¸öË÷ÒýÖµ±»Ê¹Óõķdz£Æµ·±Ê±£¬»áÔÚ B-Tree Ë÷ÒýÖ®ÉÏÔÙ´´½¨Ò»¸ö¹þÏ£Ë÷Òý£¬ÕâÑù¾ÍÈà B-Tree Ë÷Òý¾ßÓйþÏ£Ë÷ÒýµÄһЩÓŵ㣬±ÈÈç¿ìËٵĹþÏ£²éÕÒ¡£ -?????????????????????????????????›¥?????????????????????§Ö???????????§³???????????????§Ö??§Ö???????????????????????????????????????????????????????????????????????????????¦¶??????????????????????????¨²????? +ÏÞÖÆ£º¹þÏ£Ë÷ÒýÖ»°üº¬¹þÏ£ÖµºÍÐÐÖ¸Õ룬¶ø²»´æ´¢×Ö¶ÎÖµ£¬ËùÒÔ²»ÄÜʹÓÃË÷ÒýÖеÄÖµÀ´±ÜÃâ¶ÁÈ¡ÐС£²»¹ý£¬·ÃÎÊÄÚ´æÖеÄÐеÄËٶȺܿ죬ËùÒԴ󲿷ÖÇé¿öÏÂÕâÒ»µã¶ÔÐÔÄÜÓ°Ïì²¢²»Ã÷ÏÔ£»ÎÞ·¨ÓÃÓÚ·Ö×éÓëÅÅÐò£»Ö»Ö§³Ö¾«È·²éÕÒ£¬ÎÞ·¨ÓÃÓÚ²¿·Ö²éÕҺͷ¶Î§²éÕÒ£»Èç¹û¹þÏ£³åÍ»ºÜ¶à£¬²éÕÒËÙ¶È»á±äµÃºÜÂý¡£ -### 1.3. ????????????R-Tree?? +### 1.3. ¿Õ¼äË÷ÒýÊý¾Ý£¨R-Tree£© -MyISAM ?›¥??????????????????????????????›¥?? +MyISAM ´æ´¢ÒýÇæÖ§³Ö¿Õ¼äË÷Òý£¬¿ÉÒÔÓÃÓÚµØÀíÊý¾Ý´æ´¢¡£ -??????????????????????????????????§¹????????????????????????? +¿Õ¼äË÷Òý»á´ÓËùÓÐά¶ÈÀ´Ë÷ÒýÊý¾Ý£¬¿ÉÒÔÓÐЧµØÊ¹ÓÃÈÎÒâά¶ÈÀ´½øÐÐ×éºÏ²éѯ¡£ -### 1.4 ??????? +### 1.4 È«ÎÄË÷Òý -MyISAM ?›¥???????????????????????????§Ö??????????????????????§Ö???? +MyISAM ´æ´¢ÒýÇæÖ§³ÖÈ«ÎÄË÷Òý£¬ÓÃÓÚ²éÕÒÎı¾ÖеĹؼü´Ê£¬¶ø²»ÊÇÖ±½Ó±È½ÏË÷ÒýÖеÄÖµ¡£ -??? MATCH AGAINST????????????? WHERE?? +ʹÓà MATCH AGAINST£¬¶ø²»ÊÇÆÕͨµÄ WHERE¡£ -## 2. ????????? +## 2. Ë÷ÒýµÄÓŵã -- ???????????????????????????? +- ´ó´ó¼õÉÙÁË·þÎñÆ÷ÐèҪɨÃèµÄÊý¾ÝÁ¿£» -- ?????????????????????????????? +- °ïÖú·þÎñÆ÷±ÜÃâ½øÐÐÅÅÐòºÍ´´½¨ÁÙʱ±í£» -- ????? I/O ?????? I/O?? +- ½«Ëæ»ú I/O ±äΪ˳Ðò I/O¡£ -## 3. ??????? +## 3. Ë÷ÒýÓÅ»¯ -### 3.1 ???????? +### 3.1 ¶ÀÁ¢µÄÁÐ -????§Ó??????????§Ó????????????????????????????????????????????????? +ÔÚ½øÐвéѯʱ£¬Ë÷ÒýÁв»ÄÜÊDZí´ïʽµÄÒ»²¿·Ö£¬Ò²²»ÄÜÊǺ¯ÊýµÄ²ÎÊý£¬·ñÔòÎÞ·¨Ê¹ÓÃË÷Òý¡£ -?????????????????? actor_id ?§Ö??????? +ÀýÈçÏÂÃæµÄ²éѯ²»ÄÜʹÓà actor_id ÁеÄË÷Òý£º ```sql SELECT actor_id FROM sakila.actor WHERE actor_id + 1 = 5; ``` -### 3.2 ?????? +### 3.2 ǰ׺Ë÷Òý -???? BLOB??TEXT ?? VARCHAR ??????§µ?????????????????????????????????? +¶ÔÓÚ BLOB¡¢TEXT ºÍ VARCHAR ÀàÐ͵ÄÁУ¬±ØÐëʹÓÃǰ׺Ë÷Òý£¬Ö»Ë÷Òý¿ªÊ¼µÄ²¿·Ö×Ö·û¡£ -???????????????????? **?????????** ?????????????????????????????????????????????§¹???????????? 1 ???????????????¦·??????????????? +¶ÔÓÚǰ׺³¤¶ÈµÄѡȡÐèÒª¸ù¾Ý **Ë÷ÒýÑ¡ÔñÐÔ** À´È·¶¨£º²»Öظ´µÄË÷ÒýÖµºÍ¼Ç¼×ÜÊýµÄ±ÈÖµ¡£Ñ¡ÔñÐÔÔ½¸ß£¬²éѯЧÂÊÒ²Ô½¸ß¡£×î´óֵΪ 1 £¬´Ëʱÿ¸ö¼Ç¼¶¼ÓÐΨһµÄË÷ÒýÓëÆä¶ÔÓ¦¡£ -### 3.3 ???????? +### 3.3 ¶àÁÐË÷Òý -??????????????????????§Ó????????????????????????????????????¨¢??????????????§µ????? actor_id ?? file_id ??????????????? +ÔÚÐèҪʹÓöà¸öÁÐ×÷ΪÌõ¼þ½øÐвéѯʱ£¬Ê¹ÓöàÁÐË÷Òý±ÈʹÓöà¸öµ¥ÁÐË÷ÒýÐÔÄܸüºÃ¡£ÀýÈçÏÂÃæµÄÓï¾äÖУ¬×îºÃ°Ñ actor_id ºÍ file_id ÉèÖÃΪ¶àÁÐË÷Òý¡£ ```sql SELECT file_id, actor_ id FROM sakila.film_actor WhERE actor_id = 1 OR film_id = 1; ``` -### 3.4 ?????§Ö???? +### 3.4 Ë÷ÒýÁеÄ˳Ðò -?????????????????§Ù?????—¨????????????????? customer_id ???????? staff_id ???????????? customer_id ?§Ù??????????????µµ +ÈÃÑ¡ÔñÐÔ×îÇ¿µÄË÷ÒýÁзÅÔÚÇ°Ãæ£¬ÀýÈçÏÂÃæÏÔʾµÄ½á¹ûÖÐ customer_id µÄÑ¡ÔñÐÔ±È staff_id ¸ü¸ß£¬Òò´Ë×îºÃ°Ñ customer_id ÁзÅÔÚ¶àÁÐË÷ÒýµÄÇ°Ãæ¡£ ```sql SELECT COUNT(DISTINCT staff_id)/COUNT(*) AS staff_id_selectivity, @@ -235,107 +235,107 @@ customer_id_selectivity: 0.0373 COUNT(*): 16049 ``` -### 3.5 ??????? +### 3.5 ¾Û´ØË÷Òý ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/b9e9ae8c-e216-4c01-b267-a50dbeb98fa4.jpg) -????????????????????????????????????›¥????? +¾Û´ØË÷Òý²¢²»ÊÇÒ»ÖÖË÷ÒýÀàÐÍ£¬¶øÊÇÒ»ÖÖÊý¾Ý´æ´¢·½Ê½¡£ -????????????????§Ü?????????????›¥?????InnoDB ???????????????§Õ???? B-Tree ???????§³? +ÊõÓï¡°¾Û´Ø¡±±íʾÊý¾ÝÐкÍÏàÁڵļüÖµ½ôÃܵش洢ÔÚÒ»Æð£¬InnoDB µÄ¾Û´ØË÷ÒýµÄÊý¾ÝÐдæ·ÅÔÚ B-Tree µÄÒ¶×ÓÒ³ÖС£ -?????????????§Õ??????????????????????????????????????????? +ÒòΪÎÞ·¨°ÑÊý¾ÝÐдæ·ÅÔÚÁ½¸ö²»Í¬µÄµØ·½£¬ËùÒÔÒ»¸ö±íÖ»ÄÜÓÐÒ»¸ö¾Û´ØË÷Òý¡£ -**???** +**Óŵã** -1. ??????????????????????? I/O ?????? -2. ???????????? B-Tree ?§µ?????????????? +1. ¿ÉÒÔ°ÑÏà¹ØÊý¾Ý±£´æÔÚÒ»Æð£¬¼õÉÙ I/O ²Ù×÷£» +2. ÒòΪÊý¾Ý±£´æÔÚ B-Tree ÖУ¬Òò´ËÊý¾Ý·ÃÎʸü¿ì¡£ -**???** +**ȱµã** -1. ?????????????????? I/O ??????????????????????????????????—¨???????????????? -2. ??????????????????????????????????????????? -3. ????????????????????????????§Ø???????????¦Ë?¨¢? -4. ?????????????????§µ??›¥????????????????????????????§µ????????¡À????????????? -5. ????§Ò????Ñk????????????????????›¥????????????????????????????????????? +1. ¾Û´ØË÷Òý×î´óÏÞ¶ÈÌá¸ßÁË I/O Ãܼ¯ÐÍÓ¦ÓõÄÐÔÄÜ£¬µ«ÊÇÈç¹ûÊý¾ÝÈ«²¿·ÅÔÚÄڴ棬¾Íû±ØÒªÓþ۴ØË÷Òý¡£ +2. ²åÈëËÙ¶ÈÑÏÖØÒÀÀµÓÚ²åÈë˳Ðò£¬°´Ö÷¼üµÄ˳Ðò²åÈëÊÇ×î¿ìµÄ¡£ +3. ¸üвÙ×÷´ú¼ÛºÜ¸ß£¬ÒòΪÿ¸ö±»¸üеÄÐж¼»áÒÆ¶¯µ½ÐµÄλÖᣠ+4. µ±²åÈ뵽ij¸öÒÑÂúµÄÒ³ÖУ¬´æ´¢ÒýÇæ»á½«¸ÃÒ³·ÖÁѳÉÁ½¸öÒ³ÃæÀ´ÈÝÄɸÃÐУ¬Ò³·ÖÁѻᵼÖ±íÕ¼Óøü¶àµÄ´ÅÅ̿ռ䡣 +5. Èç¹ûÐбȽÏÏ¡Ê裬»òÕßÓÉÓÚÒ³·ÖÁѵ¼ÖÂÊý¾Ý´æ´¢²»Á¬ÐøÊ±£¬¾Û´ØË÷Òý¿ÉÄܵ¼ÖÂÈ«±íɨÃèËٶȱäÂý¡£ -### 3.6 ???????? +### 3.6 ¸²¸ÇË÷Òý -??????????????????????¦Å???? +Ë÷Òý°üº¬ËùÓÐÐèÒª²éѯµÄ×ֶεÄÖµ¡£ -## 4. B-Tree ?? B+Tree ??? +## 4. B-Tree ºÍ B+Tree Ô­Àí ### 4. 1 B-Tree ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/5ed71283-a070-4b21-85ae-f2cbfd6ba6e1.jpg) -??????? B-Tree??????????????????????????? [key, data]??key ?????????data ????????? key ???????? +ΪÁËÃèÊö B-Tree£¬Ê×Ïȶ¨ÒåÒ»ÌõÊý¾Ý¼Ç¼Ϊһ¸ö¶þÔª×é [key, data]£¬key Ϊ¼Ç¼µÄ¼ü£¬data ΪÊý¾Ý¼Ç¼³ý key ÍâµÄÊý¾Ý¡£ -B-Tree ??????????????????????? +B-Tree ÊÇÂú×ãÏÂÁÐÌõ¼þµÄÊý¾Ý½á¹¹£º -- ?????????????????????????? B-Tree ??????? -- ???????§Ö? key ????????????§µ? -- ?????????????????? key ????? keyi ?? keyi+1?????? null?????????????????? key ???? keyi ??§³?? keyi+1?? +- ËùÓÐÒ¶½Úµã¾ßÓÐÏàͬµÄÉî¶È£¬Ò²¾ÍÊÇ˵ B-Tree ÊÇÆ½ºâµÄ£» +- Ò»¸ö½ÚµãÖÐµÄ key ´Ó×óµ½ÓҷǵݼõÅÅÁУ» +- Èç¹ûij¸öÖ¸ÕëµÄ×óÓÒÏàÁÚ key ·Ö±ðÊÇ keyi ºÍ keyi+1£¬ÇÒ²»Îª null£¬Ôò¸ÃÖ¸ÕëÖ¸Ïò½ÚµãµÄËùÓÐ key ´óÓÚ keyi ÇÒСÓÚ keyi+1¡£ -?? B-Tree ?§Ñ? key ?????????????????????????????§Ø?????????????????????? data????????????????????????????§Ó????????????????? null ???????????????????????? +ÔÚ B-Tree Öа´ key ¼ìË÷Êý¾ÝµÄËã·¨·Ç³£Ö±¹Û£ºÊ×ÏÈ´Ó¸ù½Úµã½øÐжþ·Ö²éÕÒ£¬Èç¹ûÕÒµ½Ôò·µ»Ø¶ÔÓ¦½ÚµãµÄ data£¬·ñÔò¶ÔÏàÓ¦Çø¼äµÄÖ¸ÕëÖ¸ÏòµÄ½ÚµãµÝ¹é½øÐвéÕÒ£¬Ö±µ½ÕÒµ½½Úµã»òÕÒµ½ null Ö¸Õ룬ǰÕß²éÕҳɹ¦£¬ºóÕß²éÕÒʧ°Ü¡£ -???????????????????????? B-Tree ????????????????????????????????????????????????????????? B-Tree ????? +ÓÉÓÚ²åÈëɾ³ýеÄÊý¾Ý¼Ç¼»áÆÆ»µ B-Tree µÄÐÔÖÊ£¬Òò´ËÔÚ²åÈëɾ³ýʱ£¬ÐèÒª¶ÔÊ÷½øÐÐÒ»¸ö·ÖÁÑ¡¢ºÏ²¢¡¢×ªÒƵȲÙ×÷ÒÔ±£³Ö B-Tree ÐÔÖÊ¡£ ### 4.2 B+Tree ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/63cd5b50-d6d8-4df6-8912-ef4a1dd5ba13.jpg) -?? B-Tree ????B+Tree ?????????? +Óë B-Tree Ïà±È£¬B+Tree ÓÐÒÔϲ»Í¬µã£º -- ??????????????? 2d ?????? 2d+1?? -- ?????›¥ data????›¥ key????????›¥??? +- ÿ¸ö½ÚµãµÄÖ¸ÕëÉÏÏÞΪ 2d ¶ø²»ÊÇ 2d+1£» +- Äڽڵ㲻´æ´¢ data£¬Ö»´æ´¢ key£¬Ò¶×ӽڵ㲻´æ´¢Ö¸Õë¡£ -### 4.3 ?????????????? B+Tree +### 4.3 ´øÓÐ˳Ðò·ÃÎÊÖ¸ÕëµÄ B+Tree ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/1ee5f0a5-b8df-43b9-95ab-c516c54ec797.jpg) -????????????????????????? B+Tree ????????? B+Tree ???????????????????????????????????????????????????????????????????????? +Ò»°ãÔÚÊý¾Ý¿âϵͳ»òÎļþϵͳÖÐʹÓÃµÄ B+Tree ½á¹¹¶¼ÔÚ¾­µä B+Tree »ù´¡ÉϽøÐÐÁËÓÅ»¯£¬ÔÚÒ¶×Ó½ÚµãÔö¼ÓÁË˳Ðò·ÃÎÊÖ¸Õ룬×öÕâ¸öÓÅ»¯µÄÄ¿µÄÊÇΪÁËÌá¸ßÇø¼ä·ÃÎʵÄÐÔÄÜ¡£ -### 4.4 ?????? B-Tree ?? B+Tree +### 4.4 ΪʲôʹÓà B-Tree ºÍ B+Tree -?????????????????????????????????????????????????????? B-/+Tree ??????????? +ºìºÚÊ÷µÈÊý¾Ý½á¹¹Ò²¿ÉÒÔÓÃÀ´ÊµÏÖË÷Òý£¬µ«ÊÇÎļþϵͳ¼°Êý¾Ý¿âϵͳÆÕ±é²ÉÓà B-/+Tree ×÷ΪË÷Òý½á¹¹¡£ -???????????›¥????????ï…?????????????????????????›¥?????????????§³????ï…????›¥???????????????????§µ?????§³???? 4k??????????????????¦Ë????????? +Ò³ÊǼÆËã»ú¹ÜÀí´æ´¢Æ÷µÄÂß¼­¿é£¬Ó²¼þ¼°²Ù×÷ϵͳÍùÍù½«Ö÷´æºÍ´ÅÅÌ´æ´¢Çø·Ö¸îΪÁ¬ÐøµÄ´óСÏàµÈµÄ¿é£¬Ã¿¸ö´æ´¢¿é³ÆÎªÒ»Ò³£¨ÔÚÐí¶à²Ù×÷ϵͳÖУ¬Ò³µÃ´óСͨ³£Îª 4k£©£¬Ö÷´æºÍ´ÅÅÌÒÔҳΪµ¥Î»½»»»Êý¾Ý¡£ -?????????????????????????????›¥??????§µ???????????????????????????›¥????????????????? I/O?????????????????????????????¦Æ?????????????????????????????????????????????????????????????????Àö?????????????????????¨¢????????????????????????????????????????????§³?????????????????????????????? I/O ????????????B-Tree ????¦Ì????????? h-1 ?? I/O??????????—¥???????????? O(h)=O(logdN)????????????§µ????? d ??????????????????? 100????? h ???§³??????????? 3??????????????????h ????????????????????????????????????????????????????????§¹??????? B-Tree ???? +Ò»°ãÀ´Ëµ£¬Ë÷Òý±¾ÉíÒ²ºÜ´ó£¬²»¿ÉÄÜÈ«²¿´æ´¢ÔÚÄÚ´æÖУ¬Òò´ËË÷ÒýÍùÍùÒÔË÷ÒýÎļþµÄÐÎʽ´æ´¢µÄ´ÅÅÌÉÏ¡£ÎªÁ˼õÉÙ´ÅÅÌ I/O£¬´ÅÅÌÍùÍù²»ÊÇÑϸñ°´Ðè¶ÁÈ¡£¬¶øÊÇÿ´Î¶¼»áÔ¤¶Á¡£ÕâÑù×öµÄÀíÂÛÒÀ¾ÝÊǼÆËã»ú¿ÆÑ§ÖÐÖøÃûµÄ¾Ö²¿ÐÔÔ­Àí£ºµ±Ò»¸öÊý¾Ý±»Óõ½Ê±£¬Æä¸½½üµÄÊý¾ÝҲͨ³£»áÂíÉϱ»Ê¹Óá£Êý¾Ý¿âϵͳµÄÉè¼ÆÕßÇÉÃîÀûÓÃÁË´ÅÅÌÔ¤¶ÁÔ­Àí£¬½«Ò»¸ö½ÚµãµÄ´óСÉèΪµÈÓÚÒ»¸öÒ³£¬ÕâÑùÿ¸ö½ÚµãÖ»ÐèÒªÒ»´Î I/O ¾Í¿ÉÒÔÍêÈ«ÔØÈë¡£B-Tree ÖÐÒ»´Î¼ìË÷×î¶àÐèÒª h-1 ´Î I/O£¨¸ù½Úµã³£×¤Äڴ棩£¬½¥½ø¸´ÔÓ¶ÈΪ O(h)=O(logdN)¡£Ò»°ãʵ¼ÊÓ¦ÓÃÖУ¬³ö¶È d ÊǷdz£´óµÄÊý×Ö£¬Í¨³£³¬¹ý 100£¬Òò´Ë h ·Ç³£Ð¡£¨Í¨³£²»³¬¹ý 3£©¡£¶øºìºÚÊ÷ÕâÖֽṹ£¬h Ã÷ÏÔÒªÉîµÄ¶à¡£²¢ÇÒÓÚÂß¼­ÉϺܽüµÄ½Úµã£¨¸¸×Ó£©ÎïÀíÉÏ¿ÉÄܺÜÔ¶£¬ÎÞ·¨ÀûÓþֲ¿ÐÔ£¬Ð§ÂÊÃ÷ÏÔ±È B-Tree ²îºÜ¶à¡£ -B+Tree ????????????????????????? d ?§Û?????? B+Tree ????????? data ??????????§Ú??????????§Ú????????? +B+Tree ¸üÊʺÏÍâ´æË÷Òý£¬Ô­ÒòºÍÄÚ½Úµã³ö¶È d Óйء£ÓÉÓÚ B+Tree ÄÚ½ÚµãÈ¥µôÁË data Óò£¬Òò´Ë¿ÉÒÔÓµÓиü´óµÄ³ö¶È£¬ÓµÓиüºÃµÄÐÔÄÜ¡£ -# ?????????? +# ²éѯÐÔÄÜÓÅ»¯ ## 1. Explain -???????? SQL ???????????§Ò???????????§µ? +ÓÃÀ´·ÖÎö SQL Óï¾ä£¬·ÖÎö½á¹ûÖбȽÏÖØÒªµÄ×Ö¶ÎÓУº -- select_type : ?????????§Þ????????????????? +- select_type : ²éѯÀàÐÍ£¬Óмòµ¥²éѯ¡¢ÁªºÏ²éѯºÍ×Ó²éѯ -- key : ???????? +- key : ʹÓõÄË÷Òý -- rows : ???????? +- rows : ɨÃèµÄÐÐÊý -## 2. ?????????? +## 2. ¼õÉÙ·µ»ØµÄÁÐ -???????????????????????????????????????????????????????§³? +Âý²éѯÖ÷ÒªÊÇÒòΪ·ÃÎÊÁ˹ý¶àÊý¾Ý£¬³ýÁË·ÃÎʹý¶àÐÐÖ®Í⣬Ҳ°üÀ¨·ÃÎʹý¶àÁС£ -??¨°????? SELECT * ???????????????????§³? +×îºÃ²»ÒªÊ¹Óà SELECT * Óï¾ä£¬Òª¸ù¾ÝÐèҪѡÔñ²éѯµÄÁС£ -## 3. ?????????? +## 3. ¼õÉÙ·µ»ØµÄÐÐ -?????? LIMIT ???????????????§»?§³? +×îºÃʹÓà LIMIT Óï¾äÀ´È¡³öÏëÒªµÄÄÇЩÐС£ -????????????????????????????????ÒÂ????????????????????????????????????????????Ñk???????????????Ý”?§Þ?????????? Explain ???????????? rows ???????????????? +»¹¿ÉÒÔ½¨Á¢Ë÷ÒýÀ´¼õÉÙÌõ¼þÓï¾äµÄÈ«±íɨÃè¡£ÀýÈç¶ÔÓÚÏÂÃæµÄÓï¾ä£¬²»ÊÊÓÃË÷ÒýµÄÇé¿öÏÂÐèÒª½øÐÐÈ«±íɨÃ裬¶øÊ¹ÓÃË÷ÒýÖ»ÐèҪɨÃ輸ÐмǼ¼´¿É£¬Ê¹Óà Explain Óï¾ä¿ÉÒÔͨ¹ý¹Û²ì rows ×Ö¶ÎÀ´¿´³öÕâÖÖ²îÒì¡£ ```sql SELECT * FROM sakila.film_actor WHERE film_id = 1; ``` -## 4. ????? DELETE ?? INSERT ??? +## 4. ²ð·Ö´óµÄ DELETE »ò INSERT Óï¾ä -??????????§Ö???????????????????????????????????????????????????????§³???????????? +Èç¹ûÒ»´ÎÐÔÖ´Ðеϰ£¬¿ÉÄÜÒ»´ÎËø×¡ºÜ¶àÊý¾Ý¡¢Õ¼ÂúÕû¸öÊÂÎñÈÕÖ¾¡¢ºÄ¾¡ÏµÍ³×ÊÔ´¡¢×èÈûºÜ¶àСµÄµ«ÖØÒªµÄ²éѯ¡£ ```sql DELEFT FROM messages WHERE create < DATE_SUB(NOW(), INTERVAL 3 MONTH); @@ -348,74 +348,74 @@ do { } while rows_affected > 0 ``` -# ??????? +# ·Ö¿âÓë·Ö±í -**1. ????????????** +**1. ·Ö±íÓë·ÖÇøµÄ²»Í¬** -????????????????§³????§»§³????§Ó???????????????????????????????????ï…??§»???????›¥??????????????????›¥???????????????????¡À???????????? +·Ö±í£¬¾ÍÊǽ²Ò»Õűí·Ö³É¶à¸öС±í£¬ÕâЩС±íÓµÓв»Í¬µÄ±íÃû£»¶ø·ÖÇøÊǽ«Ò»ÕűíµÄÊý¾Ý·ÖΪ¶à¸öÇø¿é£¬ÕâÐ©Çø¿é¿ÉÒÔ´æ´¢ÔÚͬһ¸ö´ÅÅÌÉÏ£¬Ò²¿ÉÒÔ´æ´¢ÔÚ²»Í¬µÄ´ÅÅÌÉÏ£¬ÕâÖÖ·½Ê½Ï±íÈÔȻֻÓÐÒ»¸ö¡£ -**2. ??¡Â??????????** +**2. ʹÓ÷ֿâÓë·Ö±íµÄÔ­Òò** -??????????????????????§Ö???????????????§Ö?????????????????????§Õ???????????????????? +Ëæ×Åʱ¼äºÍÒµÎñµÄ·¢Õ¹£¬Êý¾Ý¿âÖеıí»áÔ½À´Ô½¶à£¬²¢ÇÒ±íÖеÄÊý¾ÝÁ¿Ò²»áÔ½À´Ô½´ó£¬ÄÇô¶Áд²Ù×÷µÄ¿ªÏúÒ²»áËæ×ÅÔö´ó¡£ -**3. ????§Ù?** +**3. ´¹Ö±ÇзÖ** -??????????î”??????§Ô?????????????????????????íà??????????????? payDB?????????? userDB ???????????›¥?????????§Û??????????§Û??? +½«±í°´¹¦ÄÜÄ£¿é¡¢¹ØÏµÃÜÇг̶Ȼ®·Ö³öÀ´£¬²¿Êðµ½²»Í¬µÄ¿âÉÏ¡£ÀýÈ磬ÎÒÃǻὨÁ¢ÉÌÆ·Êý¾Ý¿â payDB¡¢Óû§Êý¾Ý¿â userDB µÈ£¬·Ö±ðÓÃÀ´´æ´¢ÏîÄ¿ÓëÉÌÆ·ÓйصıíºÍÓëÓû§ÓÐ¹ØµÄ±í¡£ -**4. ???§Ù?** +**4. ˮƽÇзÖ** -????§Ö??????????????›¥??????????????§µ????º– id ??????????????§Ý???? +°Ñ±íÖеÄÊý¾Ý°´ÕÕijÖÖ¹æÔò´æ´¢µ½¶à¸ö½á¹¹ÏàͬµÄ±íÖУ¬ÀýÈç°´ id µÄÉ¢ÁÐÖµ¡¢ÐÔ±ðµÈ½øÐл®·Ö£¬ -**5. ????§Ù??????§Ù?????** +**5. ´¹Ö±ÇзÖÓëˮƽÇзֵÄÑ¡Ôñ** -?????????§Ö???????????????????????????????????§Ù???????? +Èç¹ûÊý¾Ý¿âÖеıíÌ«¶à£¬²¢ÇÒÏîÄ¿¸÷ÏîÒµÎñÂß¼­ÇåÎú£¬ÄÇô´¹Ö±ÇзÖÊÇÊ×Ñ¡¡£ -??????????????????????????????????????§Ù?? +Èç¹ûÊý¾Ý¿âµÄ±í²»¶à£¬µ«Êǵ¥±íµÄÊý¾ÝÁ¿ºÜ´ó£¬Ó¦¸ÃÑ¡ÔñˮƽÇз֡£ -**6. ???§Ù???????** +**6. ˮƽÇзֵÄʵÏÖ·½Ê½** -????????? merge ?›¥???µµ +×î¼òµ¥µÄÊÇʹÓà merge ´æ´¢ÒýÇæ¡£ -**7. ???????????????** +**7. ·Ö¿âÓë·Ö±í´æÔÚµÄÎÊÌâ** -(1) ???????? +(1) ÊÂÎñÎÊÌâ -????§Ù???????????????›¥??????????????????????????????????????????????????????????????????????????????????????????????¨®????§¿????????¦Ã??????????????????????????????? +ÔÚÖ´Ðзֿâ·Ö±íÖ®ºó£¬ÓÉÓÚÊý¾Ý´æ´¢µ½Á˲»Í¬µÄ¿âÉÏ£¬Êý¾Ý¿âÊÂÎñ¹ÜÀí³öÏÖÁËÀ§ÄÑ¡£Èç¹ûÒÀÀµÊý¾Ý¿â±¾ÉíµÄ·Ö²¼Ê½ÊÂÎñ¹ÜÀí¹¦ÄÜÈ¥Ö´ÐÐÊÂÎñ£¬½«¸¶³ö¸ß°ºµÄÐÔÄÜ´ú¼Û£»Èç¹ûÓÉÓ¦ÓóÌÐòȥЭÖú¿ØÖÆ£¬ÐγɳÌÐòÂß¼­ÉϵÄÊÂÎñ£¬ÓÖ»áÔì³É±à³Ì·½ÃæµÄ¸ºµ£¡£ -(2) ????????????? +(2) ¿ç¿â¿ç±íÁ¬½ÓÎÊÌâ -?????????????????????????????????????????????????????????????????????????????????????????????????¦Ë?????????????????????????????????????????¦Â????????????????????§Ø?¦Â?????¨À? +ÔÚÖ´ÐÐÁË·Ö¿â·Ö±íÖ®ºó£¬ÄÑÒÔ±ÜÃâ»á½«Ô­±¾Âß¼­¹ØÁªÐÔºÜÇ¿µÄÊý¾Ý»®·Öµ½²»Í¬µÄ±í¡¢²»Í¬µÄ¿âÉÏ¡£Õâʱ£¬±íµÄÁ¬½Ó²Ù×÷½«Êܵ½ÏÞÖÆ£¬ÎÒÃÇÎÞ·¨Á¬½ÓλÓÚ²»Í¬·Ö¿âµÄ±í£¬Ò²ÎÞ·¨Á¬½Ó·Ö±íÁ£¶È²»Í¬µÄ±í£¬µ¼ÖÂÔ­±¾Ö»ÐèÒªÒ»´Î²éѯ¾ÍÄܹ»Íê³ÉµÄÒµÎñÐèÒª½øÐжà´Î²ÅÄÜÍê³É¡£ -# ????????????? +# ¹ÊÕÏ×ªÒÆºÍ¹ÊÕϻָ´ -?????????????§Ý???????????????????§Ý???????????????????????????????????????§Ý????????????????????????? +¹ÊÕÏ×ªÒÆÒ²½Ð×öÇл»£¬µ±Ö÷¿â³öÏÖ¹ÊÕÏʱ¾ÍÇл»µ½±¸¿â£¬Ê¹±¸¿â³ÉΪÖ÷¿â¡£¹ÊÕϻָ´¹ËÃû˼Òå¾ÍÊÇ´Ó¹ÊÕÏÖлָ´¹ýÀ´£¬²¢ÇÒ±£Ö¤Êý¾ÝµÄÕýÈ·ÐÔ¡£ -## 1. ??????? +## 1. ¹ÊÕÏ×ªÒÆ -**1.1 ??????????§Ý????** +**1.1 ÌáÉý±¸¿â»òÇл»½ÇÉ«** -??????????????????????????-????????§Ö????????????????? +ÌáÉýһ̨±¸¿âΪÖ÷¿â£¬»òÕßÔÚÒ»¸öÖ÷-Ö÷¸´ÖƽṹÖе÷ÕûÖ÷¶¯ºÍ±»¶¯½ÇÉ«¡£ -**1.2 ???? IP ????? IP ?§Û?** +**1.2 ÐéÄâ IP µØÖ·ºÍ IP ÍйÜ** -? MySQL ???????????? IP ??????? MySQL ????§¹???????? IP ??????????? MySQL ????????? +Ϊ MySQL ʵÀýÖ¸¶¨Ò»¸öÂß¼­ IP µØÖ·£¬µ± MySQL ʵÀýʧЧʱ£¬¿ÉÒÔ½« IP µØÖ·×ªÒƵ½Áíһ̨ MySQL ·þÎñÆ÷ÉÏ¡£ -**1.3 ?§Þ?????????** +**1.3 Öмä¼þ½â¾ö·½°¸** -???????????¡¤???????????????????????? +ͨ¹ý´úÀí£¬¿ÉÒÔ·ÓÉÁ÷Á¿µ½¿ÉÒÔʹÓõķþÎñÆ÷ÉÏ¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/fabd5fa0-b75e-48d0-9e2c-31471945ceb9.jpg) -**1.4 ??????§Õ?????????** +**1.4 ÔÚÓ¦ÓÃÖд¦Àí¹ÊÕÏ×ªÒÆ** -??????????????????§á??????????????????? +½«¹ÊÕÏ×ªÒÆÕûºÏµ½Ó¦ÓÃÖпÉÄܵ¼ÖÂÓ¦ÓñäµÃÌ«¹ý±¿×¾¡£ -## 2. ?????? +## 2. ¹ÊÕϻָ´ -# ?¦Ï????? +# ²Î¿¼×ÊÁÏ -- ?????? MySQL -- [MySQL ????????????????????? ](http://blog.codinglabs.org/articles/theory-of-mysql-index.html) -- [MySQL ???????????? ](http://www.runoob.com/w3cnote/mysql-index.html) -- [20+ ?? MySQL ??????????????? ](https://www.jfox.info/20-tiao-mysql-xing-nen-you-hua-de-zui-jia-jing-yan.html) +- ¸ßÐÔÄÜ MySQL +- [MySQL Ë÷Òý±³ºóµÄÊý¾Ý½á¹¹¼°Ëã·¨Ô­Àí ](http://blog.codinglabs.org/articles/theory-of-mysql-index.html) +- [MySQL Ë÷ÒýÓÅ»¯È«¹¥ÂÔ ](http://www.runoob.com/w3cnote/mysql-index.html) +- [20+ Ìõ MySQL ÐÔÄÜÓÅ»¯µÄ×î¼Ñ¾­Ñé ](https://www.jfox.info/20-tiao-mysql-xing-nen-you-hua-de-zui-jia-jing-yan.html) diff --git a/notes/SQL 语法.md b/notes/SQL 语法.md index f95e4cce..b128542b 100644 --- a/notes/SQL 语法.md +++ b/notes/SQL 语法.md @@ -1,52 +1,52 @@ -* [????](#????) -* [???](#???) -* [????](#????) -* [????](#????) -* [????](#????) -* [???????](#???????) -* [????](#????) - * [???????](#???????) - * [??????????](#??????????) - * [???????](#???????) - * [????](#????) -* [????](#????) -* [????](#????) -* [????](#????) - * [??????](#??????) - * [??????](#??????) - * [???????](#???????) - * [??????](#??????) -* [?????](#?????) -* [????](#????) -* [????](#????) -* [???](#???) -* [??????](#??????) -* [????](#????) -* [???](#???) -* [?›¥????](#?›¥????) -* [?¦Á?](#?¦Á?) -* [??????](#??????) -* [??????](#??????) -* [?????](#?????) -* [??????](#??????) +* [»ù´¡](#»ù´¡) +* [²éѯ](#²éѯ) +* [ÅÅÐò](#ÅÅÐò) +* [¹ýÂË](#¹ýÂË) +* [ͨÅä·û](#ͨÅä·û) +* [¼ÆËã×Ö¶Î](#¼ÆËã×Ö¶Î) +* [º¯Êý](#º¯Êý) + * [Îı¾´¦Àí](#Îı¾´¦Àí) + * [ÈÕÆÚºÍʱ¼ä´¦Àí](#ÈÕÆÚºÍʱ¼ä´¦Àí) + * [ÊýÖµ´¦Àí](#ÊýÖµ´¦Àí) + * [»ã×Ü](#»ã×Ü) +* [·Ö×é](#·Ö×é) +* [×Ó²éѯ](#×Ó²éѯ) +* [Á¬½Ó](#Á¬½Ó) + * [ÄÚÁ¬½Ó](#ÄÚÁ¬½Ó) + * [×ÔÁ¬½Ó](#×ÔÁ¬½Ó) + * [×ÔÈ»Á¬½Ó](#×ÔÈ»Á¬½Ó) + * [ÍâÁ¬½Ó](#ÍâÁ¬½Ó) +* [×éºÏ²éѯ](#×éºÏ²éѯ) +* [²åÈë](#²åÈë) +* [¸üÐÂ](#¸üÐÂ) +* [ɾ³ý](#ɾ³ý) +* [´´½¨±í](#´´½¨±í) +* [Ð޸ıí](#Ð޸ıí) +* [ÊÓͼ](#ÊÓͼ) +* [´æ´¢¹ý³Ì](#´æ´¢¹ý³Ì) +* [Óαê](#Óαê) +* [´¥·¢Æ÷](#´¥·¢Æ÷) +* [ÊÂÎñ´¦Àí](#ÊÂÎñ´¦Àí) +* [×Ö·û¼¯](#×Ö·û¼¯) +* [ȨÏÞ¹ÜÀí](#ȨÏÞ¹ÜÀí) -# ???? +# »ù´¡ -????????????????¦Ä›¥???›¥???????????????????¦Ç????????????????????? +ģʽ£º¶¨ÒåÁËÊý¾ÝÈçºÎ´æ´¢¡¢´æ´¢Ê²Ã´ÑùµÄÊý¾ÝÒÔ¼°Êý¾ÝÈçºÎ·Ö½âµÈÐÅÏ¢£¬Êý¾Ý¿âºÍ±í¶¼ÓÐģʽ¡£ -??????????????????????????????????????????????????????????§Ö????????? +Ö÷¼üµÄÖµ²»ÔÊÐíÐ޸ģ¬Ò²²»ÔÊÐí¸´Ó㨲»ÄÜʹÓÃÒѾ­É¾³ýµÄÖ÷¼üÖµ¸³¸øÐÂÊý¾ÝÐеÄÖ÷¼ü£©¡£ -SQL??Structured Query Language)????? SQL ?? ANSI ???????????????? ANSI SQL?????? DBMS ??????????????? PL/SQL??Transact-SQL ??? +SQL£¨Structured Query Language)£¬±ê×¼ SQL ÓÉ ANSI ±ê׼ίԱ»á¹ÜÀí£¬´Ó¶ø³ÆÎª ANSI SQL£¬¸÷¸ö DBMS ¶¼ÓÐ×Ô¼ºµÄʵÏÖ£¬Èç PL/SQL¡¢Transact-SQL µÈ¡£ -# ??? +# ²éѯ -SQL ????????§³§Õ???????????????????????????????????????? DBMS ??????¨¢? +SQL Óï¾ä²»Çø·Ö´óСд£¬µ«ÊÇÊý¾Ý¿â±íÃû¡¢ÁÐÃûºÍÖµÊÇ·ñÇø·ÖÒÀÀµÓÚ¾ßÌåµÄ DBMS ÒÔ¼°ÅäÖᣠ**DISTINCT** -????????????¦±??????????????§µ????????????§Ö???????????????? +Ïàֵֻͬ»á³öÏÖÒ»´Î¡£Ëü×÷ÓÃÓÚËùÓÐÁУ¬Ò²¾ÍÊÇ˵ËùÓÐÁеÄÖµ¶¼Ïàͬ²ÅËãÏàͬ¡£ ```sql SELECT DISTINCT col1, col2 @@ -55,9 +55,9 @@ FROM mytable; **LIMIT** -????????????????????????????????????????????§µ??? 0 ???????????????????????????? +ÏÞÖÆ·µ»ØµÄÐÐÊý¡£¿ÉÒÔÓÐÁ½¸ö²ÎÊý£¬µÚÒ»¸ö²ÎÊýΪÆðʼÐУ¬´Ó 0 ¿ªÊ¼£»µÚ¶þ¸ö²ÎÊýΪ·µ»ØµÄ×ÜÐÐÊý¡£ -????? 5 ?§Ö? SQL?? +·µ»ØÇ° 5 ÐÐµÄ SQL£º ```sql SELECT * @@ -71,7 +71,7 @@ FROM mytable LIMIT 0, 5; ``` -????? 3 \~ 5 ?§µ? +·µ»ØµÚ 3 \~ 5 ÐУº ```sql SELECT * @@ -79,22 +79,22 @@ FROM mytable LIMIT 2, 3; ``` -**???** +**×¢ÊÍ** ```sql -# ??? +# ×¢ÊÍ SELECT * -FROM mytable -- ??? -/* ???1 - ???2 */ +FROM mytable -- ×¢ÊÍ +/* ×¢ÊÍ1 + ×¢ÊÍ2 */ ``` -# ???? +# ÅÅÐò -**ASC**?????????? -**DESC**?????? +**ASC**£ºÉýÐò£¨Ä¬ÈÏ£© +**DESC**£º½µÐò -?????????§ß??????? +¿ÉÒÔ°´¶à¸öÁнøÐÐÅÅÐò£º ```sql SELECT * @@ -102,9 +102,9 @@ FROM mytable ORDER BY col1 DESC, col2 ASC; ``` -# ???? +# ¹ýÂË -????¨°??????????????????????????????§Û?????????????????????×Ï?????????????????????????????? +ÔÚÓ¦ÓòãÒ²¿ÉÒÔ¹ýÂËÊý¾Ý£¬µ«ÊDz»ÔÚ·þÎñÆ÷¶Ë½øÐйýÂ˵ÄÊý¾Ý·Ç³£´ó£¬µ¼ÖÂͨ¹ýÍøÂç´«ÊäÁ˺ܶà¶àÓàµÄÊý¾Ý£¬´Ó¶øÀË·ÑÁËÍøÂç´ø¿í¡£ ```sql SELECT * @@ -112,155 +112,155 @@ FROM mytable WHERE col IS NULL; ``` -?¡À?????? WHERE ???????????? +ϱíÏÔʾÁË WHERE ×Ó¾ä¿ÉÓõIJÙ×÷·û -| ?????? | ??? | +| ²Ù×÷·û | ˵Ã÷ | | ------------ | ------------ | -| = < > | ???? §³?? ???? | -| <> != | ?????? | -| <= !> | §³????? | -| >= !< | ??????? | -| BETWEEN | ?????????? | -| IS NULL | ?NULL? | +| = < > | µÈÓÚ Ð¡ÓÚ ´óÓÚ | +| <> != | ²»µÈÓÚ | +| <= !> | СÓÚµÈÓÚ | +| >= !< | ´óÓÚµÈÓÚ | +| BETWEEN | ÔÚÁ½¸öÖµÖ®¼ä | +| IS NULL | ΪNULLÖµ | -????????NULL ?? 0 ???????????????? +Ó¦¸Ã×¢Òâµ½£¬NULL Óë 0 ¡¢¿Õ×Ö·û´®¶¼²»Í¬¡£ -**AND OR** ??????????????????????????? AND?????????????????�p????? AND ?? OR ????????? () ????????????? +**AND OR** ÓÃÓÚÁ¬½Ó¶à¸ö¹ýÂËÌõ¼þ¡£ÓÅÏÈ´¦Àí AND£¬Òò´Ëµ±Ò»¸ö¹ýÂ˱í´ïÊ½Éæ¼°µ½¶à¸ö AND ºÍ OR ʱ£¬Ó¦µ±Ê¹Óà () À´¾ö¶¨ÓÅÏȼ¶¡£ -**IN** ??????????????????????????????? SELECT ???????????????????????? +**IN** ²Ù×÷·ûÓÃÓÚÆ¥ÅäÒ»×éÖµ£¬ÆäºóÒ²¿ÉÒÔ½ÓÒ»¸ö SELECT ×Ӿ䣬´Ó¶øÆ¥Åä×Ó²éѯµÃµ½µÄÒ»×éÖµ¡£ -**NOT** ???????????????????? +**NOT** ²Ù×÷·ûÓÃÓÚ·ñ¶¨Ò»¸öÌõ¼þ¡£ -# ???? +# ͨÅä·û -??????????????????§µ?????????????¦±? +ͨÅä·ûÒ²ÊÇÓÃÔÚ¹ýÂËÓï¾äÖУ¬Ö»ÄÜÓÃÓÚÎı¾×ֶΡ£ -- **%** ??? >=0 ????????????????? \*?? +- **%** Æ¥Åä >=0 ¸öÈÎÒâ×Ö·û£¬ÀàËÆÓÚ \*£» -- **\_** ??? ==1 ????????????????? \.?? +- **\_** Æ¥Åä ==1 ¸öÈÎÒâ×Ö·û£¬ÀàËÆÓÚ \.£» -- **[ ]** ??????²®????????????????? ^ ?????????§Ù? +- **[ ]** ¿ÉÒÔÆ¥Å伯ºÏÄÚµÄ×Ö·û£¬ÓÃÍÑ×Ö·û ^ ¿ÉÒÔ¶ÔÆä½øÐзñ¶¨ -??? Like ????????????? +ʹÓà Like À´½øÐÐͨÅä·ûÆ¥Åä¡£ ```sql SELECT * FROM mytable -WHERE col LIKE '[^AB]%' -- ????AB???????????? +WHERE col LIKE '[^AB]%' -- ²»ÒÔAB¿ªÍ·µÄÈÎÒâÎı¾ ``` -?????????????????¦Ë???????????????? +²»ÒªÀÄÓÃͨÅä·û£¬Í¨Åä·ûλÓÚ¿ªÍ·´¦Æ¥Åä»á·Ç³£Âý¡£ -# ??????? +# ¼ÆËã×Ö¶Î -????????????????????????????????????????????????????????????????????????????????????????????????? +ÔÚÊý¾Ý¿â·þÎñÆ÷ÉÏÍê³ÉÊý¾ÝµÄת»»ºÍ¸ñʽ»¯µÄ¹¤×÷ÍùÍù±È¿Í»§¶ËÉÏ¿ìµÃ¶à£¬²¢ÇÒת»»ºÍ¸ñʽ»¯ºóµÄÊý¾ÝÁ¿¸üÉٵϰ¿ÉÒÔ¼õÉÙÍøÂçͨÐÅÁ¿¡£ -???????????????? **AS** ???????????????????????????????????? +¼ÆËã×Ö¶Îͨ³£ÐèҪʹÓà **AS** À´È¡±ðÃû£¬·ñÔòÊä³öµÄʱºò×Ö¶ÎÃûΪ¼ÆËã±í´ïʽ¡£ ```sql SELECT col1*col2 AS alias FROM mytable ``` -**Concat()** ??????????????¦±?????????????????????????§á?????????????????§»???????????? **TRIM()** ?????????¦Â??? +**Concat()** ÓÃÓÚÁ¬½ÓÁ½¸ö×ֶΡ£Ðí¶àÊý¾Ý¿â»áʹÓÿոñ°ÑÒ»¸öÖµÌî³äΪÁÐ¿í£¬Òò´ËÁ¬½ÓµÄ½á¹û»á³öÏÖһЩ²»±ØÒªµÄ¿Õ¸ñ£¬Ê¹Óà **TRIM()** ¿ÉÒÔÈ¥³ýÊ×β¿Õ¸ñ¡£ ```sql SELECT Concat(TRIM(col1), ' (', TRIM(col2), ')') FROM mytable ``` -# ???? +# º¯Êý -???? DBMS ??????????????????????????? +¸÷¸ö DBMS µÄº¯Êý¶¼ÊDz»ÏàͬµÄ£¬Òò´Ë²»¿ÉÒÆÖ²¡£ -## ??????? +## Îı¾´¦Àí -| ???? | ??? | +| º¯Êý | ˵Ã÷ | | ------------ | ------------ | -| LEFT() RIGHT() | ????????????? | -| LOWER() UPPER() | ????§³§Õ?????§Õ | -| LTRIM() RTIM() | ??????????????? | -| LENGTH() | ???? | -| SUNDEX() | ????????? | +| LEFT() RIGHT() | ×ó±ß»òÕßÓұߵÄ×Ö·û | +| LOWER() UPPER() | ת»»ÎªÐ¡Ð´»òÕß´óд | +| LTRIM() RTIM() | È¥³ý×ó±ß»òÕßÓұߵĿոñ | +| LENGTH() | ³¤¶È | +| SUNDEX() | ת»»ÎªÓïÒôÖµ | -???§µ?**SOUNDEX()** ???????????????????????????????????????????????????????????????????? +ÆäÖУ¬**SOUNDEX()** Êǽ«Ò»¸ö×Ö·û´®×ª»»ÎªÃèÊöÆäÓïÒô±íʾµÄ×ÖĸÊý×ÖģʽµÄËã·¨£¬ËüÊǸù¾Ý·¢Òô¶ø²»ÊÇ×Öĸ±È½Ï¡£ ```sql SELECT * FROM mytable WHERE SOUNDEX(col1) = SOUNDEX('apple') ``` -## ?????????? +## ÈÕÆÚºÍʱ¼ä´¦Àí -????????YYYY-MM-DD +ÈÕÆÚ¸ñʽ£ºYYYY-MM-DD -???????HH:MM:SS +ʱ¼ä¸ñʽ£ºHH:MM:SS -|?? ?? | ? ??| +|º¯ Êý | ˵ Ã÷| | --- | --- | -| AddDate() | ??????????????????| -| AddTime() | ?????????????????| -| CurDate() | ?????????? | -| CurTime() | ????????? | -|Date() |???????????????????| -|DateDiff() |???????????????| -|Date_Add() |?????????????????| -|Date_Format() |??????????????????????| -|Day()| ????????????????????| -|DayOfWeek() |?????????????????????????| -|Hour() |???????????§³?????| -|Minute() |?????????????????| -|Month() |?????????????¡¤????| -|Now() |??????????????| -|Second() |???????????????| -|Time() |????????????????????| -|Year() |??????????????????| +| AddDate() | Ôö¼ÓÒ»¸öÈÕÆÚ£¨Ìì¡¢Öܵȣ©| +| AddTime() | Ôö¼ÓÒ»¸öʱ¼ä£¨Ê±¡¢·ÖµÈ£©| +| CurDate() | ·µ»Øµ±Ç°ÈÕÆÚ | +| CurTime() | ·µ»Øµ±Ç°Ê±¼ä | +|Date() |·µ»ØÈÕÆÚʱ¼äµÄÈÕÆÚ²¿·Ö| +|DateDiff() |¼ÆËãÁ½¸öÈÕÆÚÖ®²î| +|Date_Add() |¸ß¶ÈÁé»îµÄÈÕÆÚÔËË㺯Êý| +|Date_Format() |·µ»ØÒ»¸ö¸ñʽ»¯µÄÈÕÆÚ»òʱ¼ä´®| +|Day()| ·µ»ØÒ»¸öÈÕÆÚµÄÌìÊý²¿·Ö| +|DayOfWeek() |¶ÔÓÚÒ»¸öÈÕÆÚ£¬·µ»Ø¶ÔÓ¦µÄÐÇÆÚ¼¸| +|Hour() |·µ»ØÒ»¸öʱ¼äµÄСʱ²¿·Ö| +|Minute() |·µ»ØÒ»¸öʱ¼äµÄ·ÖÖÓ²¿·Ö| +|Month() |·µ»ØÒ»¸öÈÕÆÚµÄÔ·ݲ¿·Ö| +|Now() |·µ»Øµ±Ç°ÈÕÆÚºÍʱ¼ä| +|Second() |·µ»ØÒ»¸öʱ¼äµÄÃ벿·Ö| +|Time() |·µ»ØÒ»¸öÈÕÆÚʱ¼äµÄʱ¼ä²¿·Ö| +|Year() |·µ»ØÒ»¸öÈÕÆÚµÄÄê·Ý²¿·Ö| ```sql mysql> SELECT NOW(); -> '2017-06-28 14:01:52' ``` -## ??????? +## ÊýÖµ´¦Àí -| ???? | ??? | +| º¯Êý | ˵Ã÷ | | --- | --- | -| SIN() | ???? | -|COS() | ???? | -| TAN() | ???? | -| ABS() | ????? | -| SQRT() | ?????| -| MOD() | ????| -| EXP() | ???| -| PI() | ?????| -|RAND() | ?????| +| SIN() | ÕýÏÒ | +|COS() | ÓàÏÒ | +| TAN() | ÕýÇÐ | +| ABS() | ¾ø¶ÔÖµ | +| SQRT() | ƽ·½¸ù| +| MOD() | ÓàÊý| +| EXP() | Ö¸Êý| +| PI() | Ô²ÖÜÂÊ| +|RAND() | Ëæ»úÊý| -## ???? +## »ã×Ü -|?? ?? |? ??| +|º¯ Êý |˵ Ã÷| | --- | --- | -|AVG() |??????§Ö?????| -|COUNT()| ??????§Ö?????| -|MAX()| ??????§Ö?????| -|MIN()| ??????§Ö???§³?| -|SUM() |???????????| +|AVG() |·µ»ØÄ³ÁÐµÄÆ½¾ùÖµ| +|COUNT()| ·µ»ØÄ³ÁеÄÐÐÊý| +|MAX()| ·µ»ØÄ³ÁеÄ×î´óÖµ| +|MIN()| ·µ»ØÄ³ÁеÄ×îСֵ| +|SUM() |·µ»ØÄ³ÁÐÖµÖ®ºÍ| -AVG() ????? NULL ?§³? +AVG() »áºöÂÔ NULL ÐС£ -DISTINCT ?????????????????? +DISTINCT ¹Ø¼ü×Ö»áÖ»»ã×ܲ»Í¬µÄÖµ¡£ ```sql SELECT AVG(DISTINCT col1) AS avg_col FROM mytable ``` -# ???? +# ·Ö×é -?????????????????????????§³? +·Ö×é¾ÍÊǰÑÏàͬµÄÊý¾Ý·ÅÔÚͬһ×éÖС£ -????????????????????????§Õ??????????????????????? +¿ÉÒÔ¶Ôÿ×éÊý¾ÝʹÓûã×ܺ¯Êý½øÐд¦Àí£¬ÀýÈçÇóÿ×éÊýµÄƽ¾ùÖµµÈ¡£ -?? col ???????????? +°´ col ÅÅÐò²¢·Ö×éÊý¾Ý£º ```sql SELECT col, COUNT(*) AS num @@ -268,7 +268,7 @@ FROM mytable GROUP BY col; ``` -WHERE ?????§µ?HAVING ??????ï…?§Û????????????????? +WHERE ¹ýÂËÐУ¬HAVING ¹ýÂË·Ö×飬ÐйýÂËÓ¦µ±ÏÈÓë·Ö×é¹ýÂË£» ```sql SELECT col, COUNT(*) AS num @@ -278,7 +278,7 @@ GROUP BY col HAVING COUNT(*) >= 2; ``` -GROUP BY ???????????????¦²??? ORDER BY ?????????????????????? +GROUP BY µÄÅÅÐò½á¹ûΪ·Ö×é×ֶΣ¬¶ø ORDER BY Ò²¿ÉÒÔÒÔ¾Û¼¯×Ö¶ÎÀ´½øÐÐÅÅÐò¡£ ```sql SELECT col, COUNT(*) AS num @@ -287,18 +287,18 @@ GROUP BY col ORDER BY num; ``` -????ÕÇ?? +·Ö×鹿¶¨£º -1. GROUP BY ???????? WHERE ??????ORDER BY ??????? -2. ????????????????SELECT ????§Ö????§Ø??????? GROUP BY ????§Ú????? -3. NULL ???§Ý????????ï” -4. ????? SQL ??????? GROUP BY ?§à??§á?????????????? +1. GROUP BY ×Ó¾ä³öÏÖÔÚ WHERE ×Ó¾äÖ®ºó£¬ORDER BY ×Ó¾ä֮ǰ£» +2. ³ýÁË»ã×ܼÆËãÓï¾äÖ®Í⣬SELECT Óï¾äÖеÄÿһÁж¼±ØÐëÔÚ GROUP BY ×Ó¾äÖиø³ö£» +3. NULL µÄÐлᵥ¶À·ÖΪһ×飻 +4. ´ó¶àÊý SQL ʵÏÖ²»Ö§³Ö GROUP BY ÁоßÓпɱ䳤¶ÈµÄÊý¾ÝÀàÐÍ¡£ -# ???? +# ×Ó²éѯ -????????????????§³? +×Ó²éѯÖÐÖ»ÄÜ·µ»ØÒ»¸öÁС£ -???????????????? WHRER ????????????? +¿ÉÒÔ½«×Ó²éѯµÄ½á¹û×÷Ϊ WHRER Óï¾äµÄ¹ýÂËÌõ¼þ£º ``` SELECT * @@ -307,7 +307,7 @@ WHERE col1 IN (SELECT col2 FROM mytable2); ``` -?????????????????????????????????????????????????????????¦²? +ÏÂÃæµÄÓï¾ä¿ÉÒÔ¼ìË÷³ö¿Í»§µÄ¶©µ¥ÊýÁ¿¡£×Ó²éѯÓï¾ä»á¶Ô¼ìË÷³öµÄÿ¸ö¿Í»§Ö´ÐÐÒ»´Î£º ```sql SELECT cust_name, (SELECT COUNT(*) @@ -318,17 +318,17 @@ FROM Customers ORDER BY cust_name; ``` -# ???? +# Á¬½Ó -??????????????????? JOIN ???????????????????? ON?? +Á¬½ÓÓÃÓÚÁ¬½Ó¶à¸ö±í£¬Ê¹Óà JOIN ¹Ø¼ü×Ö£¬²¢ÇÒÌõ¼þÓï¾äʹÓà ON¡£ -????????�I?????????????????§¹????????? +Á¬½Ó¿ÉÒÔÌæ»»×Ó²éѯ£¬²¢ÇÒ±È×Ó²éѯµÄЧÂÊÒ»°ã»á¸ü¿ì¡£ -?????? AS ??????????????¦Ê???????????????????????????? SQL ??????????????? +¿ÉÒÔÓà AS ¸øÁÐÃû¡¢¼ÆËã×ֶκͱíÃûÈ¡±ðÃû£¬¸ø±íÃûÈ¡±ðÃûÊÇΪÁ˼ò»¯ SQL Óï¾äÒÔ¼°Á¬½ÓÏàͬ±í¡£ -## ?????? +## ÄÚÁ¬½Ó -??????????????????? INNER JOIN ?????? +ÄÚÁ¬½ÓÓֳƵÈÖµÁ¬½Ó£¬Ê¹Óà INNER JOIN ¹Ø¼ü×Ö¡£ ``` select a, b, c @@ -336,7 +336,7 @@ from A inner join B on A.key = B.key ``` -??????????? INNER JOIN????????????????? WHERE ?§ß??????????????????????????????????? +¿ÉÒÔ²»Ã÷ȷʹÓà INNER JOIN£¬¶øÊ¹ÓÃÆÕͨ²éѯ²¢ÔÚ WHERE Öн«Á½¸ö±íÖÐÒªÁ¬½ÓµÄÁÐÓõÈÖµ·½·¨Á¬½ÓÆðÀ´¡£ ``` select a, b, c @@ -344,15 +344,15 @@ from A, B where A.key = B.key ``` -?????????????????¡¤??????????? +ÔÚûÓÐÌõ¼þÓï¾äµÄÇé¿öÏ·µ»ØµÑ¿¨¶û»ý¡£ -## ?????? +## ×ÔÁ¬½Ó -?????????????????????????????????????????? +×ÔÁ¬½Ó¿ÉÒÔ¿´³ÉÄÚÁ¬½ÓµÄÒ»ÖÖ£¬Ö»ÊÇÁ¬½ÓµÄ±íÊÇ×ÔÉí¶øÒÑ¡£ -??????????????????????????????????????? Jim ???????????????????????? +Ò»ÕÅÔ±¹¤±í£¬°üº¬Ô±¹¤ÐÕÃûºÍÔ±¹¤ËùÊô²¿ÃÅ£¬ÒªÕÒ³öÓë Jim ´¦ÔÚͬһ²¿ÃŵÄËùÓÐÔ±¹¤ÐÕÃû¡£ -**?????·Ú** +**×Ó²éѯ°æ±¾** ``` select name @@ -363,7 +363,7 @@ where department = ( where name = "Jim"); ``` -**??????·Ú** +**×ÔÁ¬½Ó°æ±¾** ``` select name @@ -372,24 +372,24 @@ where e1.department = e2.department and e1.name = "Jim"; ``` -??????????????§¹???? +Á¬½ÓÒ»°ã±È×Ó²éѯµÄЧÂʸߡ£ -## ??????? +## ×ÔÈ»Á¬½Ó -????????????????????????????????????????§á????§Ø???? +×ÔÈ»Á¬½ÓÊǰÑͬÃûÁÐͨ¹ýµÈÖµ²âÊÔÁ¬½ÓÆðÀ´µÄ£¬Í¬ÃûÁпÉÒÔÓжà¸ö¡£ -?????????????????????????????????§µ?????????????????????????§µ??????????????????? +ÄÚÁ¬½ÓºÍ×ÔÈ»Á¬½ÓµÄÇø±ð£ºÄÚÁ¬½ÓÌṩÁ¬½ÓµÄÁУ¬¶ø×ÔÈ»Á¬½Ó×Ô¶¯Á¬½ÓËùÓÐͬÃûÁУ»ÄÚÁ¬½ÓÊôÓÚ×ÔÈ»Á¬½Ó¡£ ``` select * from employee natural join department; ``` -## ?????? +## ÍâÁ¬½Ó -?????????????§Û???????§»?§³???????????????????????????????????????????????????????§³? +ÍâÁ¬½Ó±£ÁôÁËûÓйØÁªµÄÄÇЩÐС£·ÖΪ×óÍâÁ¬½Ó£¬ÓÒÍâÁ¬½ÓÒÔ¼°È«ÍâÁ¬½Ó£¬×óÍâÁ¬½Ó¾ÍÊDZ£Áô×ó±íµÄËùÓÐÐС£ -???????§Û???????????????????§Ø??????????? +¼ìË÷ËùÓй˿͵Ķ©µ¥ÐÅÏ¢£¬°üÀ¨»¹Ã»Óж©µ¥ÐÅÏ¢µÄ¹Ë¿Í¡£ ``` select Customers.cust_id, Orders.order_num @@ -397,7 +397,7 @@ select Customers.cust_id, Orders.order_num on Customers.cust_id = Orders.curt_id ``` -?????????????????????????????? +Èç¹ûÐèҪͳ¼Æ¹Ë¿ÍµÄ¶©µ¥Êý£¬Ê¹Óþۼ¯º¯Êý¡£ ``` select Customers.cust_id, @@ -407,13 +407,13 @@ on Customers.cust_id = Orders.curt_id group by Customers.cust_id ``` -# ????? +# ×éºÏ²éѯ -??? **UNION** ??????????????????????????????????§³????????????????? +ʹÓà **UNION** À´Á¬½ÓÁ½¸ö²éѯ£¬Ã¿¸ö²éѯ±ØÐë°üº¬ÏàͬµÄÁС¢±í´ïʽ»òÕß¾Û¼¯º¯Êý¡£ -???????????§µ???????????????§µ???? UNION ALL ?? +ĬÈÏ»áÈ¥³ýÏàͬÐУ¬Èç¹ûÐèÒª±£ÁôÏàͬÐУ¬Ê¹Óà UNION ALL ¡£ -????????? ORDER BY ??????????¦Ë????????? +Ö»Äܰüº¬Ò»¸ö ORDER BY ×Ӿ䣬²¢ÇÒ±ØÐëλÓÚÓï¾äµÄ×îºó¡£ ```sql SELECT col @@ -425,16 +425,16 @@ FROM mytable WHERE col =2; ``` -# ???? +# ²åÈë -**???????** +**ÆÕͨ²åÈë** ```sql INSERT INTO mytable(col1, col2) VALUES(val1, val2); ``` -**?????????????????** +**²åÈë¼ìË÷³öÀ´µÄÊý¾Ý** ```sql INSERT INTO mytable1(col1, col2) @@ -442,14 +442,14 @@ SELECT col1, col2 FROM mytable2; ``` -**????????????????????¡À?** +**½«Ò»¸ö±íµÄÄÚÈݸ´ÖƵ½Ò»¸öбí** ```sql CREATE TABLE newtable AS SELECT * FROM mytable; ``` -# ???? +# ¸üР```sql UPDATE mytable @@ -457,18 +457,18 @@ SET col = val WHERE id = 1; ``` -# ??? +# ɾ³ý ```sql DELETE FROM mytable WHERE id = 1; ``` -**TRUNCATE TABLE** ?????????????????????§³? +**TRUNCATE TABLE** ¿ÉÒÔÇå¿Õ±í£¬Ò²¾ÍÊÇɾ³ýËùÓÐÐС£ -????????????????????? WHERE ????????????????????????????????? SELECT ?????§Ó???????????????? +ʹÓøüкÍɾ³ý²Ù×÷ʱһ¶¨ÒªÓà WHERE ×Ӿ䣬²»È»»á°ÑÕûÕűíµÄÊý¾Ý¶¼ÆÆ»µ¡£¿ÉÒÔÏÈÓà SELECT Óï¾ä½øÐвâÊÔ£¬·ÀÖ¹´íÎóɾ³ý¡£ -# ?????? +# ´´½¨±í ```sql CREATE TABLE mytable ( @@ -479,38 +479,38 @@ CREATE TABLE mytable ( PRIMARY KEY (`id`)); ``` -# ???? +# Ð޸ıí -**?????** +**Ìí¼ÓÁÐ** ```sql ALTER TABLE mytable ADD col CHAR(20); ``` -**?????** +**ɾ³ýÁÐ** ```sql ALTER TABLE mytable DROP COLUMN col; ``` -**?????** +**ɾ³ý±í** ```sql DROP TABLE mytable; ``` -# ??? +# ÊÓͼ -????????????????????????????????????????????????????????????????????????? +ÊÓͼÊÇÐéÄâµÄ±í£¬±¾Éí²»°üº¬Êý¾Ý£¬Ò²¾Í²»ÄÜ¶ÔÆä½øÐÐË÷Òý²Ù×÷¡£¶ÔÊÓͼµÄ²Ù×÷ºÍ¶ÔÆÕͨ±íµÄ²Ù×÷Ò»Ñù¡£ -??????????????? +ÊÓͼ¾ßÓÐÈçϺô¦£º -1. ?????? SQL ?????????¿y??????? -2. ??????????????????? -3. ??????????????????????????????????? -4. ???????????????? +1. ¼ò»¯¸´Ô SQL ²Ù×÷£¬±ÈÈ縴ÔÓµÄÁª½á£» +2. ֻʹÓÃʵ¼Ê±íµÄÒ»²¿·ÖÊý¾Ý£» +3. ͨ¹ýÖ»¸øÓû§·ÃÎÊÊÓͼµÄȨÏÞ£¬±£Ö¤Êý¾ÝµÄ°²È«ÐÔ£» +4. ¸ü¸ÄÊý¾Ý¸ñʽºÍ±íʾ¡£ ```sql CREATE VIEW myview AS @@ -519,25 +519,25 @@ FROM mytable WHERE col5 = val; ``` -# ?›¥???? +# ´æ´¢¹ý³Ì -?›¥????????????????? SQL ???????????? +´æ´¢¹ý³Ì¿ÉÒÔ¿´³ÉÊǶÔһϵÁÐ SQL ²Ù×÷µÄÅú´¦Àí£» -**???›¥???????** +**ʹÓô洢¹ý³ÌµÄºÃ´¦** -1. ???????????›¥?????§µ??????????????????? -2. ?????????? -3. ?????????????????§Ü???????? +1. °ÑʵÏÖ·â×°ÔÚÁË´æ´¢¹ý³ÌÖУ¬²»½ö¼òµ¥£¬Ò²±£Ö¤Á˰²È«ÐÔ£» +2. ¿ÉÒÔ¸´ÓôúÂ룻 +3. ÓÉÓÚÊÇÔ¤ÏȱàÒ룬Òò´Ë¾ßÓкܸߵÄÐÔÄÜ¡£ -**?????›¥????** +**´´½¨´æ´¢¹ý³Ì** -???????§Õ????›¥??????????????????????????????? ; ????????????›¥??????????????????????????????????????????????????? +ÃüÁîÐÐÖд´½¨´æ´¢¹ý³ÌÐèÒª×Ô¶¨Òå·Ö¸ô·û£¬ÒòΪÃüÁîÐÐÊÇÒÔ ; Ϊ½áÊø·û£¬¶ø´æ´¢¹ý³ÌÖÐÒ²°üº¬Á˷ֺţ¬Òò´Ë»á´íÎó°ÑÕⲿ·Ö·ÖºÅµ±³ÉÊǽáÊø·û£¬Ôì³ÉÓï·¨´íÎó¡£ -???? in??out ?? inout ????????? +°üº¬ in¡¢out ºÍ inout ÈýÖÖ²ÎÊý¡£ -???????????????? select into ??? +¸ø±äÁ¿¸³Öµ¶¼ÐèÒªÓà select into Óï¾ä¡£ -????????????????????????????????? +ÿ´ÎÖ»ÄܸøÒ»¸ö±äÁ¿¸³Öµ£¬²»Ö§³Ö¼¯ºÏµÄ²Ù×÷¡£ ```sql delimiter // @@ -558,18 +558,18 @@ call myprocedure(@ret); select @ret; ``` -# ?¦Á? +# Óαê -??›¥??????????¦Á?????????????????????????? +ÔÚ´æ´¢¹ý³ÌÖÐʹÓÃÓαê¿ÉÒÔ¶ÔÒ»¸ö½á¹û¼¯½øÐÐÒÆ¶¯±éÀú¡£ -?¦Á??????????????????????????????????§Ö??????§ß???????????? +ÓαêÖ÷ÒªÓÃÓÚ½»»¥Ê½Ó¦Óã¬ÆäÖÐÓû§ÐèÒª¶ÔÊý¾Ý¼¯ÖеÄÈÎÒâÐнøÐÐä¯ÀÀºÍÐ޸ġ£ -**????¦Á????????Ñs** +**ʹÓÃÓαêµÄËĸö²½Ö裺** -1. ?????¦Á???????????????????????? -2. ???¦Á? -3. ???????? -4. ????¦Á? +1. ÉùÃ÷Óα꣬Õâ¸ö¹ý³ÌûÓÐʵ¼Ê¼ìË÷³öÊý¾Ý£» +2. ´ò¿ªÓαꣻ +3. È¡³öÊý¾Ý£» +4. ¹Ø±ÕÓαꣻ ```sql delimiter // @@ -579,7 +579,7 @@ create procedure myprocedure(out ret int) declare mycursor cursor for select col1 from mytable; - # ?????????continue handler???? sqlstate '02000' ??????????????????? set done = 1 + # ¶¨ÒåÁËÒ»¸öcontinue handler£¬µ± sqlstate '02000' Õâ¸öÌõ¼þ³öÏÖʱ£¬»áÖ´ÐÐ set done = 1 declare continue handler for sqlstate '02000' set done = 1; open mycursor; @@ -594,43 +594,43 @@ create procedure myprocedure(out ret int) delimiter ; ``` -# ?????? +# ´¥·¢Æ÷ -?????????????????????????????????§µ?DELETE??INSERT??UPDATE +´¥·¢Æ÷»áÔÚij¸ö±íÖ´ÐÐÒÔÏÂÓï¾äʱ¶ø×Ô¶¯Ö´ÐУºDELETE¡¢INSERT¡¢UPDATE -???????????????????????????????????§µ????????? BEFORE ??????????????? AFTER ??????BEFORE ?????????????????? +´¥·¢Æ÷±ØÐëÖ¸¶¨ÔÚÓï¾äÖ´ÐÐ֮ǰ»¹ÊÇÖ®ºó×Ô¶¯Ö´ÐУ¬Ö®Ç°Ö´ÐÐʹÓà BEFORE ¹Ø¼ü×Ö£¬Ö®ºóÖ´ÐÐʹÓà AFTER ¹Ø¼ü×Ö¡£BEFORE ÓÃÓÚÊý¾ÝÑéÖ¤ºÍ¾»»¯¡£ -INSERT ???????????????? NEW ??????? +INSERT ´¥·¢Æ÷°üº¬Ò»¸öÃûΪ NEW µÄÐéÄâ±í¡£ ```sql CREATE TRIGGER mytrigger AFTER INSERT ON mytable FOR EACH ROW SELECT NEW.col; ``` -DELETE ???????????????? OLD ??????????????????? +DELETE ´¥·¢Æ÷°üº¬Ò»¸öÃûΪ OLD µÄÐéÄâ±í£¬²¢ÇÒÊÇÖ»¶ÁµÄ¡£ -UPDATE ???????????????? NEW ???????? OLD ??????????? NEW ????????????? OLD ???????? +UPDATE ´¥·¢Æ÷°üº¬Ò»¸öÃûΪ NEW ºÍÒ»¸öÃûΪ OLD µÄÐéÄâ±í£¬ÆäÖÐ NEW ÊÇ¿ÉÒÔ±»Ð޸ĵأ¬¶ø OLD ÊÇÖ»¶ÁµÄ¡£ -???????????????????????????????????????????§³? +¿ÉÒÔʹÓô¥·¢Æ÷À´½øÐÐÉ󼯏ú×Ù£¬°ÑÐ޸ļǼµ½ÁíÍâÒ»ÕűíÖС£ -MySQL ?????????????????? CALL ??? ?????????????›¥????? +MySQL ²»ÔÊÐíÔÚ´¥·¢Æ÷ÖÐʹÓà CALL Óï¾ä £¬Ò²¾ÍÊDz»Äܵ÷Óô洢¹ý³Ì¡£ -# ?????? +# ÊÂÎñ´¦Àí -**????????** +**»ù±¾ÊõÓï** -1. ????transaction?????? SQL ??? -2. ?????rollback?????????? SQL ???????? -3. ????commit?????¦Ä?›¥?? SQL ?????§Õ???????? -4. ??????savepoint????????????????????¦Ë????placeholder????????????????????????????????????????? +1. ÊÂÎñ£¨transaction£©Ö¸Ò»×é SQL Óï¾ä£» +2. »ØÍË£¨rollback£©Ö¸³·ÏúÖ¸¶¨ SQL Óï¾äµÄ¹ý³Ì£» +3. Ìá½»£¨commit£©Ö¸½«Î´´æ´¢µÄ SQL Óï¾ä½á¹ûдÈëÊý¾Ý¿â±í£» +4. ±£Áôµã£¨savepoint£©Ö¸ÊÂÎñ´¦ÀíÖÐÉèÖõÄÁÙʱռλ·û£¨placeholder£©£¬Äã¿ÉÒÔ¶ÔËü·¢²¼»ØÍË£¨Óë»ØÍËÕû¸öÊÂÎñ´¦Àí²»Í¬£©¡£ -??????? SELECT ??????? SELECT ????????‰Ù???????? CRETE ?? DROP ??? +²»ÄÜ»ØÍË SELECT Óï¾ä£¬»ØÍË SELECT Óï¾äҲûÒâÒ壻Ҳ²»ÄÜ»ØÍË CRETE ºÍ DROP Óï¾ä¡£ -MySQL ?????????????????????????????????????????¦±??????? START TRANSACTION ??????????????????? COMMIT ?? ROLLBACK ?????§Ü?????????????????????????? +MySQL µÄÊÂÎñÌύĬÈÏÊÇÒþʽÌá½»£¬Ò²¾ÍÊÇÿִÐÐÒ»ÌõÓï¾ä¾Í»áÌá½»Ò»´Î¡£µ±³öÏÖ START TRANSACTION Óï¾äʱ£¬»á¹Ø±ÕÒþʽÌá½»£»µ± COMMIT »ò ROLLBACK Óï¾äÖ´Ðкó£¬ÊÂÎñ»á×Ô¶¯¹Ø±Õ£¬ÖØÐ»ָ´ÒþʽÌá½»¡£ -??????? autocommit ? 0 ????????????????? autocommit ??????? 1 ???????autocommit ??????????????????????????????? +ͨ¹ýÉèÖà autocommit Ϊ 0 ¿ÉÒÔÈ¡Ïû×Ô¶¯Ìá½»£¬Ö±µ½ autocommit ±»ÉèÖÃΪ 1 ²Å»áÌá½»£»autocommit ±ê¼ÇÊÇÕë¶Ôÿ¸öÁ¬½Ó¶ø²»ÊÇÕë¶Ô·þÎñÆ÷µÄ¡£ -???????????????ROLLBACK ?????? START TRANSACTION ????????????????????????? ROLLBACK ?????????????????????????? +Èç¹ûûÓÐÉèÖñ£Áôµã£¬ROLLBACK »á»ØÍ˵½ START TRANSACTION Óï¾ä´¦£»Èç¹ûÉèÖÃÁ˱£Áôµã£¬²¢ÇÒÔÚ ROLLBACK ÖÐÖ¸¶¨¸Ã±£Áôµã£¬Ôò»á»ØÍ˵½¸Ã±£Áôµã¡£ ```sql START TRANSACTION @@ -642,15 +642,15 @@ ROLLBACK TO delete1 COMMIT ``` -# ????? +# ×Ö·û¼¯ -**????????** +**»ù±¾ÊõÓï** -1. ??????????????????? -2. ?????????????????????????? -3. §µ??????????¦Á?????????????????î• +1. ×Ö·û¼¯Îª×ÖĸºÍ·ûºÅµÄ¼¯ºÏ£» +2. ±àÂëΪij¸ö×Ö·û¼¯³ÉÔ±µÄÄÚ²¿±íʾ£» +3. У¶Ô×Ö·ûÖ¸¶¨ÈçºÎ±È½Ï£¬Ö÷ÒªÓÃÓÚÅÅÐòºÍ·Ö×é¡£ -?????????????????§µ????????????????? +³ýÁ˸ø±íÖ¸¶¨×Ö·û¼¯ºÍУ¶ÔÍ⣬Ҳ¿ÉÒÔ¸øÁÐÖ¸¶¨£º ```sql CREATE TABLE mytable @@ -658,7 +658,7 @@ CREATE TABLE mytable DEFAULT CHARACTER SET hebrew COLLATE hebrew_general_ci; ``` -?????????????????§µ??? +¿ÉÒÔÔÚÅÅÐò¡¢·Ö×éʱָ¶¨Ð£¶Ô£º ```sql SELECT * @@ -666,67 +666,67 @@ FROM mytable ORDER BY col COLLATE latin1_general_ci; ``` -# ?????? +# ȨÏÞ¹ÜÀí -MySQL ?????????????? mysql ?????????§³? +MySQL µÄÕË»§ÐÅÏ¢±£´æÔÚ mysql Õâ¸öÊý¾Ý¿âÖС£ ```sql USE mysql; SELECT user FROM user; ``` -**???????** +**´´½¨ÕË»§** ```sql CREATE USER myuser IDENTIFIED BY 'mypassword'; ``` -??????????????¦Ê????? +д´½¨µÄÕË»§Ã»ÓÐÈκÎȨÏÞ¡£ -**????????** +**ÐÞ¸ÄÕË»§Ãû** ```sql RENAME myuser TO newuser; ``` -**??????** +**ɾ³ýÕË»§** ```sql DROP USER myuser; ``` -**?????** +**²é¿´È¨ÏÞ** ```sql SHOW GRANTS FOR myuser; ``` ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/c73aa08e-a987-43c9-92be-adea4a884c25.png) -????? username@host ????????ÈÉusername@% ????????????????? +ÕË»§Óà username@host µÄÐÎʽ¶¨Ò壬username@% ʹÓõÄÊÇĬÈÏÖ÷»úÃû¡£ -**???????** +**ÊÚÓèȨÏÞ** ```sql GRANT SELECT, INSERT ON mydatabase.* TO myuser; ``` -**??????** +**ɾ³ýȨÏÞ** ```sql REVOKE SELECT, INSERT ON mydatabase.* FROM myuser; ``` -GRANT ?? REVOKE ?????????????????????? +GRANT ºÍ REVOKE ¿ÉÔÚ¼¸¸ö²ã´ÎÉÏ¿ØÖÆ·ÃÎÊȨÏÞ£º -- ??????????????? GRANT ALL?? REVOKE ALL?? -- ???????????? ON database.\*?? -- ????????? ON database.table?? -- ??????§µ? -- ?????›¥????? +- Õû¸ö·þÎñÆ÷£¬Ê¹Óà GRANT ALLºÍ REVOKE ALL£» +- Õû¸öÊý¾Ý¿â£¬Ê¹Óà ON database.\*£» +- ÌØ¶¨µÄ±í£¬Ê¹Óà ON database.table£» +- ÌØ¶¨µÄÁУ» +- ÌØ¶¨µÄ´æ´¢¹ý³Ì¡£ -**????????** +**¸ü¸ÄÃÜÂë** -??????? Password() ???? +±ØÐëʹÓà Password() º¯Êý ```sql SET PASSWROD FOR myuser = Password('newpassword'); diff --git a/notes/剑指 offer 题解.md b/notes/剑指 offer 题解.md index 5108480c..51793e1b 100644 --- a/notes/剑指 offer 题解.md +++ b/notes/剑指 offer 题解.md @@ -1,89 +1,89 @@ -* [????? ??????????????](#?????-??????????????) - * [2. ??? Singleton](#2-???-singleton) - * [3. ???????????????](#3-???????????????) - * [4. ????????§Ö????](#4-????????§Ö????) - * [5. ?�I???](#5-?�I???) - * [6. ??¦Â??????????](#6-??¦Â??????????) - * [7. ?????????](#7-?????????) - * [8. ????????????????](#8-????????????????) - * [9. ?????????????](#9-?????????????) - * [10.1 ??????????](#101-??????????) - * [10.2 ?????](#102-?????) - * [10.3 ????????](#103-????????) - * [10.4 ???¦È???](#104-???¦È???) - * [11. ??????????§³????](#11-??????????§ã????) - * [12. ?????§Ö?¡¤??](#12-?????§Ö?¡¤??) - * [13. ????????????¦¶](#13-????????????¦Ö) - * [14. ??????](#14-??????) - * [15. ???????? 1 ?????](#15-????????-1-?????) -* [?????? ???????????](#??????-???????????) - * [16. ??????????¦Ç?](#16-??????????¦Ç?) - * [18. ????????????????](#18-????????????????) - * [19. ??????????](#19-??????????) - * [20. ?????????????](#20-?????????????) - * [21. ????????????????¦Ë????????](#21-????????????????¦Ë????????) - * [22. ?????§Ö????? k ?????](#22-?????§Ö?????-k-?????) - * [23. ?????§Ý????????](#23-?????§Ý????????) - * [24. ???????](#24-???????) - * [25. ????????????????](#25-????????????????) - * [26. ???????](#26-???????) -* [?????? ???????????¡¤](#??????-???????????¡¤) - * [27. ???????????](#27-???????????) - * [28.1 ?????????](#281-?????????) - * [28.2 ????????](#282-????????) - * [29. ??????????](#29-??????????) - * [30. ???? min ???????](#30-????-min-???????) - * [31. ??????????????](#31-??????????????) - * [32.1 ????????????????](#321-????????????????) - * [32.3 ???????????????](#323--???????????????) - * [32.3 ??????????????????](#323-??????????????????) - * [33. ??????????????????????](#33-??????????????????????) - * [34. ???????§Ü???????¡¤??](#34-???????§Ü???????¡¤??) - * [35. ????????????](#35-????????????) - * [36. ???????????????????](#36-???????????????????) - * [37. ???§Ý???????](#37-???§Ý???????) - * [38. ???????????](#38-???????????) -* [?????? ?????????§¹??](#??????-?????????§é??) - * [39. ?????§Ô??????????????????](#39-?????§Ô??????????????????) - * [40. ??§³?? K ????](#40-??§ã??-k-????) - * [41.1 ???????§Ö???¦Ë??](#411-???????§Ö???¦Ë??) - * [14.2 ??????§Ö??????????????](#142-??????§Ö??????????????) - * [42. ???????????????](#42-???????????????) - * [43. ?? 1 ?? n ?????? 1 ????????](#43-??-1-??-n-??????-1-????????) - * [45. ???????????§³????](#45-???????????§ã????) - * [49. ????](#49-????) - * [50. ????????????¦Å????¦Ë??](#50-????????????¦Å????¦Ë??) - * [51. ?????§Ö??????](#51-?????§Ö??????) - * [52. ????????????????????](#52-????????????????????) -* [?????? ?????§Ö????????](#??????-?????§Ö????????) - * [53 ???????????????§Ô???????](#53-???????????????§Ô???????) - * [54. ????????????? k ?????](#54-?????????????-k-?????) - * [55 ???????????](#55-???????????) - * [56. ?????????????¦Å?????](#56-?????????????¦Å?????) - * [57.1 ??? S ??????????](#571-???-s-??????????) - * [57.2 ??? S ??????????????](#572-???-s-??????????????) - * [58.1 ????????????](#581-????????????) - * [58.2 ??????????](#582-??????????) - * [59. ?????????????](#59-?????????????) - * [61. ????????](#61-????????) - * [62. ?????????????](#62-?????????????) - * [63. ????????????](#63-????????????) - * [64. ?? 1+2+3+...+n](#64-??-1+2+3++n) - * [65. ???¨¹??????????](#65-???¨¹??????????) - * [66. ???????????](#66-???????????) -* [?????? ???????????](#??????-???????????) - * [67. ????????????????](#67-????????????????) - * [68. ??????????????????????](#68-??????????????????????) +* [µÚ¶þÕÂ ÃæÊÔÐèÒªµÄ»ù´¡ÖªÊ¶](#µÚ¶þÕÂ-ÃæÊÔÐèÒªµÄ»ù´¡ÖªÊ¶) + * [2. ʵÏÖ Singleton](#2-ʵÏÖ-singleton) + * [3. Êý×éÖÐÖØ¸´µÄÊý×Ö](#3-Êý×éÖÐÖØ¸´µÄÊý×Ö) + * [4. ¶þάÊý×éÖеIJéÕÒ](#4-¶þάÊý×éÖеIJéÕÒ) + * [5. Ìæ»»¿Õ¸ñ](#5-Ìæ»»¿Õ¸ñ) + * [6. ´Óβµ½Í·´òÓ¡Á´±í](#6-´Óβµ½Í·´òÓ¡Á´±í) + * [7. ÖØ½¨¶þ²æÊ÷](#7-ÖØ½¨¶þ²æÊ÷) + * [8. ¶þ²æÊ÷µÄÏÂÒ»¸ö½áµã](#8-¶þ²æÊ÷µÄÏÂÒ»¸ö½áµã) + * [9. ÓÃÁ½¸öջʵÏÖ¶ÓÁÐ](#9-ÓÃÁ½¸öջʵÏÖ¶ÓÁÐ) + * [10.1 ì³²¨ÄÇÆõÊýÁÐ](#101-ì³²¨ÄÇÆõÊýÁÐ) + * [10.2 ÌøÌ¨½×](#102-ÌøÌ¨½×) + * [10.3 ±äÌ¬ÌøÌ¨½×](#103-±äÌ¬ÌøÌ¨½×) + * [10.4 ¾ØÐθ²¸Ç](#104-¾ØÐθ²¸Ç) + * [11. ÐýתÊý×éµÄ×îСÊý×Ö](#11-ÐýתÊý×éµÄ×îСÊý×Ö) + * [12. ¾ØÕóÖеÄ·¾¶](#12-¾ØÕóÖеÄ·¾¶) + * [13. »úÆ÷È˵ÄÔ˶¯·¶Î§](#13-»úÆ÷È˵ÄÔ˶¯·¶Î§) + * [14. ¼ôÉþ×Ó](#14-¼ôÉþ×Ó) + * [15. ¶þ½øÖÆÖÐ 1 µÄ¸öÊý](#15-¶þ½øÖÆÖÐ-1-µÄ¸öÊý) +* [µÚÈýÕ ¸ßÖÊÁ¿µÄ´úÂë](#µÚÈýÕÂ-¸ßÖÊÁ¿µÄ´úÂë) + * [16. ÊýÖµµÄÕûÊý´Î·½](#16-ÊýÖµµÄÕûÊý´Î·½) + * [18. ɾ³ýÁ´±íÖÐÖØ¸´µÄ½áµã](#18-ɾ³ýÁ´±íÖÐÖØ¸´µÄ½áµã) + * [19. ÕýÔò±í´ïʽƥÅä](#19-ÕýÔò±í´ïʽƥÅä) + * [20. ±íʾÊýÖµµÄ×Ö·û´®](#20-±íʾÊýÖµµÄ×Ö·û´®) + * [21. µ÷ÕûÊý×é˳ÐòÊ¹ÆæÊýλÓÚżÊýÇ°Ãæ](#21-µ÷ÕûÊý×é˳ÐòÊ¹ÆæÊýλÓÚżÊýÇ°Ãæ) + * [22. Á´±íÖе¹ÊýµÚ k ¸ö½áµã](#22-Á´±íÖе¹ÊýµÚ-k-¸ö½áµã) + * [23. Á´±íÖл·µÄÈë¿Ú½áµã](#23-Á´±íÖл·µÄÈë¿Ú½áµã) + * [24. ·´×ªÁ´±í](#24-·´×ªÁ´±í) + * [25. ºÏ²¢Á½¸öÅÅÐòµÄÁ´±í](#25-ºÏ²¢Á½¸öÅÅÐòµÄÁ´±í) + * [26. Ê÷µÄ×ӽṹ](#26-Ê÷µÄ×ӽṹ) +* [µÚËÄÕ ½â¾öÃæÊÔÌâµÄ˼·](#µÚËÄÕÂ-½â¾öÃæÊÔÌâµÄ˼·) + * [27. ¶þ²æÊ÷µÄ¾µÏñ](#27-¶þ²æÊ÷µÄ¾µÏñ) + * [28.1 ¶Ô³ÆµÄ¶þ²æÊ÷](#281-¶Ô³ÆµÄ¶þ²æÊ÷) + * [28.2 ƽºâ¶þ²æÊ÷](#282-ƽºâ¶þ²æÊ÷) + * [29. ˳ʱÕë´òÓ¡¾ØÕó](#29-˳ʱÕë´òÓ¡¾ØÕó) + * [30. °üº¬ min º¯ÊýµÄÕ»](#30-°üº¬-min-º¯ÊýµÄÕ») + * [31. Õ»µÄѹÈë¡¢µ¯³öÐòÁÐ](#31-Õ»µÄѹÈ뵯³öÐòÁÐ) + * [32.1 ´ÓÉÏÍùÏ´òÓ¡¶þ²æÊ÷](#321-´ÓÉÏÍùÏ´òÓ¡¶þ²æÊ÷) + * [32.3 °Ñ¶þ²æÊ÷´òÓ¡³É¶àÐÐ](#323--°Ñ¶þ²æÊ÷´òÓ¡³É¶àÐÐ) + * [32.3 °´Ö®×ÖÐÎ˳Ðò´òÓ¡¶þ²æÊ÷](#323-°´Ö®×ÖÐÎ˳Ðò´òÓ¡¶þ²æÊ÷) + * [33. ¶þ²æËÑË÷Ê÷µÄºóÐò±éÀúÐòÁÐ](#33-¶þ²æËÑË÷Ê÷µÄºóÐò±éÀúÐòÁÐ) + * [34. ¶þ²æÊ÷ÖкÍΪijһֵµÄ·¾¶](#34-¶þ²æÊ÷ÖкÍΪijһֵµÄ·¾¶) + * [35. ¸´ÔÓÁ´±íµÄ¸´ÖÆ](#35-¸´ÔÓÁ´±íµÄ¸´ÖÆ) + * [36. ¶þ²æËÑË÷Ê÷ÓëË«ÏòÁ´±í](#36-¶þ²æËÑË÷Ê÷ÓëË«ÏòÁ´±í) + * [37. ÐòÁл¯¶þ²æÊ÷](#37-ÐòÁл¯¶þ²æÊ÷) + * [38. ×Ö·û´®µÄÅÅÁÐ](#38-×Ö·û´®µÄÅÅÁÐ) +* [µÚÎåÕ ÓÅ»¯Ê±¼äºÍ¿Õ¼äЧÂÊ](#µÚÎåÕÂ-ÓÅ»¯Ê±¼äºÍ¿Õ¼äЧÂÊ) + * [39. Êý×éÖгöÏÖ´ÎÊý³¬¹ýÒ»°ëµÄÊý×Ö](#39-Êý×éÖгöÏÖ´ÎÊý³¬¹ýÒ»°ëµÄÊý×Ö) + * [40. ×îСµÄ K ¸öÊý](#40-×îСµÄ-k-¸öÊý) + * [41.1 Êý¾ÝÁ÷ÖеÄÖÐλÊý](#411-Êý¾ÝÁ÷ÖеÄÖÐλÊý) + * [14.2 ×Ö·ûÁ÷ÖеÚÒ»¸ö²»Öظ´µÄ×Ö·û](#142-×Ö·ûÁ÷ÖеÚÒ»¸ö²»Öظ´µÄ×Ö·û) + * [42. Á¬Ðø×ÓÊý×éµÄ×î´óºÍ](#42-Á¬Ðø×ÓÊý×éµÄ×î´óºÍ) + * [43. ´Ó 1 µ½ n ÕûÊýÖÐ 1 ³öÏֵĴÎÊý](#43-´Ó-1-µ½-n-ÕûÊýÖÐ-1-³öÏֵĴÎÊý) + * [45. °ÑÊý×éÅųÉ×îСµÄÊý](#45-°ÑÊý×éÅųÉ×îСµÄÊý) + * [49. ³óÊý](#49-³óÊý) + * [50. µÚÒ»¸öÖ»³öÏÖÒ»´ÎµÄ×Ö·ûλÖÃ](#50-µÚÒ»¸öÖ»³öÏÖÒ»´ÎµÄ×Ö·ûλÖÃ) + * [51. Êý×éÖеÄÄæÐò¶Ô](#51-Êý×éÖеÄÄæÐò¶Ô) + * [52. Á½¸öÁ´±íµÄµÚÒ»¸ö¹«¹²½áµã](#52-Á½¸öÁ´±íµÄµÚÒ»¸ö¹«¹²½áµã) +* [µÚÁùÕÂ ÃæÊÔÖеĸ÷ÏîÄÜÁ¦](#µÚÁùÕÂ-ÃæÊÔÖеĸ÷ÏîÄÜÁ¦) + * [53 Êý×ÖÔÚÅÅÐòÊý×éÖгöÏֵĴÎÊý](#53-Êý×ÖÔÚÅÅÐòÊý×éÖгöÏֵĴÎÊý) + * [54. ¶þ²æËÑË÷Ê÷µÄµÚ k ¸ö½áµã](#54-¶þ²æËÑË÷Ê÷µÄµÚ-k-¸ö½áµã) + * [55 ¶þ²æÊ÷µÄÉî¶È](#55-¶þ²æÊ÷µÄÉî¶È) + * [56. Êý×éÖÐÖ»³öÏÖÒ»´ÎµÄÊý×Ö](#56-Êý×éÖÐÖ»³öÏÖÒ»´ÎµÄÊý×Ö) + * [57.1 ºÍΪ S µÄÁ½¸öÊý×Ö](#571-ºÍΪ-s-µÄÁ½¸öÊý×Ö) + * [57.2 ºÍΪ S µÄÁ¬ÐøÕýÊýÐòÁÐ](#572-ºÍΪ-s-µÄÁ¬ÐøÕýÊýÐòÁÐ) + * [58.1 ·­×ªµ¥´Ê˳ÐòÁÐ](#581-·­×ªµ¥´Ê˳ÐòÁÐ) + * [58.2 ×óÐýת×Ö·û´®](#582-×óÐýת×Ö·û´®) + * [59. »¬¶¯´°¿ÚµÄ×î´óÖµ](#59-»¬¶¯´°¿ÚµÄ×î´óÖµ) + * [61. ÆË¿ËÅÆË³×Ó](#61-ÆË¿ËÅÆË³×Ó) + * [62. ԲȦÖÐ×îºóʣϵÄÊý](#62-ԲȦÖÐ×îºóʣϵÄÊý) + * [63. ¹ÉƱµÄ×î´óÀûÈó](#63-¹ÉƱµÄ×î´óÀûÈó) + * [64. Çó 1+2+3+...+n](#64-Çó-1+2+3++n) + * [65. ²»ÓüӼõ³Ë³ý×ö¼Ó·¨](#65-²»ÓüӼõ³Ë³ý×ö¼Ó·¨) + * [66. ¹¹½¨³Ë»ýÊý×é](#66-¹¹½¨³Ë»ýÊý×é) +* [µÚÆßÕ Á½¸öÃæÊÔ°¸Àý](#µÚÆßÕÂ-Á½¸öÃæÊÔ°¸Àý) + * [67. °Ñ×Ö·û´®×ª»»³ÉÕûÊý](#67-°Ñ×Ö·û´®×ª»»³ÉÕûÊý) + * [68. Ê÷ÖÐÁ½¸ö½ÚµãµÄ×îµÍ¹«¹²×æÏÈ](#68-Ê÷ÖÐÁ½¸ö½ÚµãµÄ×îµÍ¹«¹²×æÏÈ) -# ????? ?????????????? +# µÚ¶þÕÂ ÃæÊÔÐèÒªµÄ»ù´¡ÖªÊ¶ -## 2. ??? Singleton +## 2. ʵÏÖ Singleton -**???????** +**¾­µäʵÏÖ** -????????§µ???§à???????????????????????????????????????????????????????????§à??????????????????????????????????????????????????????????????? if(uniqueInstance == null) ??????ï…????????????? uniqueInstance ??§à???????? +ÒÔÏÂʵÏÖÖУ¬Ë½Óо²Ì¬±äÁ¿±»ÑÓ³Ù»¯ÊµÀý»¯£¬ÕâÑù×öµÄºÃ´¦ÊÇ£¬Èç¹ûûÓÐÓõ½¸ÃÀ࣬ÄÇô¾Í²»»á´´½¨¸Ã˽Óо²Ì¬±äÁ¿£¬´Ó¶ø½ÚÔ¼×ÊÔ´¡£Õâ¸öʵÏÖÔÚ¶àÏ̻߳·¾³ÏÂÊDz»°²È«µÄ£¬ÒòΪ¶à¸öÏß³ÌÄܹ»Í¬Ê±½øÈë if(uniqueInstance == null) ÄÚµÄÓï¾ä¿é£¬ÄÇô¾Í»á¶à´ÎʵÀý»¯ uniqueInstance ˽Óо²Ì¬±äÁ¿¡£ ```java public class Singleton { @@ -99,9 +99,9 @@ public class Singleton { } ``` -**???????????????????** +**Ï̲߳»°²È«ÎÊÌâµÄ½â¾ö·½°¸Ò»** -?????? getUniqueInstance() ????????????????¡Â????????????????????????????? uniqueInstance ???????§Ø????????????????????????????????????????????????????????????????? +Ö»ÐèÒª¶Ô getUniqueInstance() ·½·¨¼ÓËø£¬¾ÍÄÜÈø÷½·¨Ò»´ÎÖ»ÄÜÒ»¸öÏ̷߳ÃÎÊ£¬´Ó¶ø±ÜÃâÁË¶Ô uniqueInstance ±äÁ¿½øÐжà´ÎʵÀý»¯µÄÎÊÌâ¡£µ«ÊÇÕâÑùÓÐÒ»¸öÎÊÌâÊÇÒ»´ÎÖ»ÄÜÒ»¸öÏ߳̽øÈ룬ÐÔÄÜÉÏ»áÓÐÒ»¶¨µÄÀË·Ñ¡£ ```java public static synchronized Singleton getUniqueInstance() { @@ -111,17 +111,17 @@ public static synchronized Singleton getUniqueInstance() { return uniqueInstance; } ``` -**????????????????????** +**Ï̲߳»°²È«ÎÊÌâµÄ½â¾ö·½°¸¶þ** -???????????????????????????? +²»ÓÃÑÓ³ÙʵÀý»¯£¬²ÉÓÃÖ±½ÓʵÀý»¯¡£ ```java private static Singleton uniqueInstance = new Singleton(); ``` -**????????????????????** +**Ï̲߳»°²È«ÎÊÌâµÄ½â¾ö·½°¸Èý** -????????????????????????? getUniqueInstance() ???????§Þ?????????????????? uniqueInstance = new Singleton(); ?????????????¨À??????????????????§Ø? uniqueInstance ??????????????????????????????????? +¿¼ÂǵÚÒ»¸ö½â¾ö·½°¸£¬ËüÊÇÖ±½Ó¶Ô getUniqueInstance() ·½·¨½øÐмÓËø£¬¶øÊµ¼ÊÉÏÖ»ÐèÒª¶Ô uniqueInstance = new Singleton(); ÕâÌõÓï¾ä¼ÓËø¼´¿É¡£Ê¹ÓÃÁ½¸öÌõ¼þÓï¾äÀ´ÅÐ¶Ï uniqueInstance ÊÇ·ñÒѾ­ÊµÀý»¯£¬Èç¹ûûÓÐʵÀý»¯²ÅÐèÒª¼ÓËø¡£ ```java public class Singleton { @@ -141,15 +141,15 @@ public class Singleton { } ``` -## 3. ??????????????? +## 3. Êý×éÖÐÖØ¸´µÄÊý×Ö -**???????** +**ÌâÄ¿ÃèÊö** -?????????? n ???????????????????? 0 ?? n-1 ???¦¶??? ???????§»????????????????????§Þ??????????????????????????????????¦±????????????????????????????? ???íà?????????? 7 ?????? {2, 3, 1, 0, 2, 5, 3}???????????????????????????? 2?? +ÔÚÒ»¸ö³¤¶ÈΪ n µÄÊý×éÀïµÄËùÓÐÊý×Ö¶¼ÔÚ 0 µ½ n-1 µÄ·¶Î§ÄÚ¡£ Êý×éÖÐijЩÊý×ÖÊÇÖØ¸´µÄ£¬µ«²»ÖªµÀÓм¸¸öÊý×ÖÊÇÖØ¸´µÄ¡£Ò²²»ÖªµÀÿ¸öÊý×ÖÖØ¸´¼¸´Î¡£ÇëÕÒ³öÊý×éÖÐÈÎÒâÒ»¸öÖØ¸´µÄÊý×Ö¡£ ÀýÈ磬Èç¹ûÊäÈ볤¶ÈΪ 7 µÄÊý×é {2, 3, 1, 0, 2, 5, 3}£¬ÄÇô¶ÔÓ¦µÄÊä³öÊǵÚÒ»¸öÖØ¸´µÄÊý×Ö 2¡£ -**?????¡¤** +**½âÌâ˼·** -????????????? [0, n-1] ??¦¶?????????????? i ????????? i ??¦Ë????? +ÕâÖÖÊý×éÔªËØÔÚ [0, n-1] ·¶Î§ÄÚµÄÎÊÌ⣬¿ÉÒÔ½«ÖµÎª i µÄÔªËØ·Åµ½µÚ i ¸öλÖÃÉÏ¡£ ```java public boolean duplicate(int numbers[], int length, int[] duplication) { @@ -172,11 +172,11 @@ private void swap(int[] numbers, int i, int j) { } ``` -## 4. ????????§Ö???? +## 4. ¶þάÊý×éÖеIJéÕÒ -**???????** +**ÌâÄ¿ÃèÊö** -?????????????§µ????§Ø?????????????????????????§Ø????????????????????????????????????????????????????????????????????§Ø???????????§Ú??????? +ÔÚÒ»¸ö¶þάÊý×éÖУ¬Ã¿Ò»Ðж¼°´ÕÕ´Ó×óµ½ÓÒµÝÔöµÄ˳ÐòÅÅÐò£¬Ã¿Ò»Áж¼°´ÕÕ´ÓÉϵ½ÏµÝÔöµÄ˳ÐòÅÅÐò¡£ÇëÍê³ÉÒ»¸öº¯Êý£¬ÊäÈëÕâÑùµÄÒ»¸ö¶þάÊý×éºÍÒ»¸öÕûÊý£¬ÅжÏÊý×éÖÐÊÇ·ñº¬ÓиÃÕûÊý¡£ ```java public boolean Find(int target, int [][] array) { @@ -192,21 +192,21 @@ public boolean Find(int target, int [][] array) { } ``` -## 5. ?�I??? +## 5. Ìæ»»¿Õ¸ñ -**???????** +**ÌâÄ¿ÃèÊö** -?????????????????????????§Ö????�I?¨À?%20???????íà???????? We Are Happy. ????�I?????????? We%20Are%20Happy?? +ÇëʵÏÖÒ»¸öº¯Êý£¬½«Ò»¸ö×Ö·û´®ÖеĿոñÌæ»»³É¡°%20¡±¡£ÀýÈ磬µ±×Ö·û´®Îª We Are Happy. Ôò¾­¹ýÌæ»»Ö®ºóµÄ×Ö·û´®Îª We%20Are%20Happy¡£ -**??????** +**ÌâĿҪÇó** -?? O(1) ???ÁÙ???????? +ÒÔ O(1) µÄ¿Õ¼ä¸´ÔÓ¶ÈÀ´Çó½â¡£ ```java public String replaceSpace(StringBuffer str) { int n = str.length(); for (int i = 0; i < n; i++) { - if (str.charAt(i) == ' ') str.append(" "); // ¦Â????????? + if (str.charAt(i) == ' ') str.append(" "); // β²¿Ìî³äÁ½¸ö } int idxOfOriginal = n - 1; @@ -225,9 +225,9 @@ public String replaceSpace(StringBuffer str) { } ``` -## 6. ??¦Â?????????? +## 6. ´Óβµ½Í·´òÓ¡Á´±í -????????????? Collections.reverse(). +ÕýÏò±éÀúÈ»ºóµ÷Óà Collections.reverse(). ```java public ArrayList printListFromTailToHead(ListNode listNode) { @@ -241,7 +241,7 @@ public ArrayList printListFromTailToHead(ListNode listNode) { } ``` -??? +µÝ¹é ```java public ArrayList printListFromTailToHead(ListNode listNode) { @@ -254,11 +254,11 @@ public ArrayList printListFromTailToHead(ListNode listNode) { } ``` -???????????????????????????????????????¾Þ??????????? +²»Ê¹Óÿ⺯Êý£¬²¢ÇÒ²»Ê¹ÓõݹéµÄµü´úʵÏÖ£¬ÀûÓÃÁ´±íµÄÍ·²å·¨ÎªÄæÐòµÄÌØÐÔ¡£ ```java public ArrayList printListFromTailToHead(ListNode listNode) { - ListNode head = new ListNode(-1); // ???? + ListNode head = new ListNode(-1); // Í·½áµã ListNode cur = listNode; while (cur != null) { ListNode next = cur.next; @@ -276,11 +276,11 @@ public ArrayList printListFromTailToHead(ListNode listNode) { } ``` -## 7. ????????? +## 7. ÖØ½¨¶þ²æÊ÷ -**???????** +**ÌâÄ¿ÃèÊö** -?????????????????????????????????????????????? +¸ù¾Ý¶þ²æÊ÷µÄǰÐò±éÀúºÍÖÐÐò±éÀúµÄ½á¹û£¬Öؽ¨³ö¸Ã¶þ²æÊ÷¡£ ```java public TreeNode reConstructBinaryTree(int[] pre, int[] in) { @@ -300,11 +300,11 @@ private TreeNode reConstructBinaryTree(int[] pre, int preL, int preR, int[] in, } ``` -## 8. ???????????????? +## 8. ¶þ²æÊ÷µÄÏÂÒ»¸ö½áµã -**???????** +**ÌâÄ¿ÃèÊö** -??????????????????§Ö???????????????????????????????????????????§Ö???????????????????????????????? +¸ø¶¨Ò»¸ö¶þ²æÊ÷ºÍÆäÖеÄÒ»¸ö½áµã£¬ÇëÕÒ³öÖÐÐò±éÀú˳ÐòµÄÏÂÒ»¸ö½áµã²¢ÇÒ·µ»Ø¡£×¢Ò⣬Ê÷ÖеĽáµã²»½ö°üº¬×óÓÒ×Ó½áµã£¬Í¬Ê±°üº¬Ö¸Ïò¸¸½áµãµÄÖ¸Õë¡£ ```java public TreeLinkNode GetNext(TreeLinkNode pNode) { @@ -325,7 +325,7 @@ public TreeLinkNode GetNext(TreeLinkNode pNode) { } ``` -## 9. ????????????? +## 9. ÓÃÁ½¸öջʵÏÖ¶ÓÁÐ ```java Stack stack1 = new Stack(); @@ -345,7 +345,7 @@ public int pop() { } ``` -## 10.1 ?????????? +## 10.1 ì³²¨ÄÇÆõÊýÁÐ ```java private int[] fib = new int[40]; @@ -363,7 +363,7 @@ public int Fibonacci(int n) { } ``` -## 10.2 ????? +## 10.2 ÌøÌ¨½× ```java public int JumpFloor(int target) { @@ -378,7 +378,7 @@ public int JumpFloor(int target) { } ``` -## 10.3 ???????? +## 10.3 ±äÌ¬ÌøÌ¨½× ```java public int JumpFloorII(int target) { @@ -393,11 +393,11 @@ public int JumpFloorII(int target) { } ``` -## 10.4 ???¦È??? +## 10.4 ¾ØÐθ²¸Ç -**???????** +**ÌâÄ¿ÃèÊö** -????????? 2\*1 ??§³???¦Ê?????????????????????¦±??????? n ?? 2\*1 ??§³????????????????? 2\*n ?????¦²?????§Ø?????????? +ÎÒÃÇ¿ÉÒÔÓà 2\*1 µÄС¾ØÐκá×Å»òÕßÊú×ÅÈ¥¸²¸Ç¸ü´óµÄ¾ØÐΡ£ÇëÎÊÓà n ¸ö 2\*1 µÄС¾ØÐÎÎÞÖØµþµØ¸²¸ÇÒ»¸ö 2\*n µÄ´ó¾ØÐΣ¬×ܹ²ÓжàÉÙÖÖ·½·¨£¿ ```java public int RectCover(int target) { @@ -407,11 +407,11 @@ public int RectCover(int target) { ``` -## 11. ??????????§³???? +## 11. ÐýתÊý×éµÄ×îСÊý×Ö -**???????** +**ÌâÄ¿ÃèÊö** -?????????????????????????????¦Â??????????????????? ??????????????????????????????????????????§³???? ???????? {3, 4, 5, 1, 2} ? {1, 2, 3, 4, 5} ???????????????????§³?? 1?? NOTE???????????????????? 0?????????§³? 0?????? 0?? +°ÑÒ»¸öÊý×é×ʼµÄÈô¸É¸öÔªËØ°áµ½Êý×éµÄĩ⣬ÎÒÃdzÆÖ®ÎªÊý×éµÄÐýת¡£ ÊäÈëÒ»¸ö·ÇµÝ¼õÅÅÐòµÄÊý×éµÄÒ»¸öÐýת£¬Êä³öÐýתÊý×éµÄ×îÐ¡ÔªËØ¡£ ÀýÈçÊý×é {3, 4, 5, 1, 2} Ϊ {1, 2, 3, 4, 5} µÄÒ»¸öÐýת£¬¸ÃÊý×éµÄ×îСֵΪ 1¡£ NOTE£º¸ø³öµÄËùÓÐÔªËØ¶¼´óÓÚ 0£¬ÈôÊý×é´óСΪ 0£¬Çë·µ»Ø 0¡£ ```java public int minNumberInRotateArray(int[] array) { @@ -423,11 +423,11 @@ public int minNumberInRotateArray(int[] array) { } ``` -## 12. ?????§Ö?¡¤?? +## 12. ¾ØÕóÖеÄ·¾¶ -**???????** +**ÌâÄ¿ÃèÊö** -???????????????????§Ø????????????????????????????????????????¡¤????¡¤???????????§Ö??????????????????????????????????????????????????????????????????¡¤????????????§Ö?????????????¡¤???????????????? ???? a b c e s f c s a d e e ?????§Ñ??????????? "bcced" ??¡¤????????????§Ó????? "abcb" ¡¤????????????????????? b ?????????§Ö????§Ö???????????¡¤????????¦Í???????? +ÇëÉè¼ÆÒ»¸öº¯Êý£¬ÓÃÀ´ÅжÏÔÚÒ»¸ö¾ØÕóÖÐÊÇ·ñ´æÔÚÒ»Ìõ°üº¬Ä³×Ö·û´®ËùÓÐ×Ö·ûµÄ·¾¶¡£Â·¾¶¿ÉÒÔ´Ó¾ØÕóÖеÄÈÎÒâÒ»¸ö¸ñ×Ó¿ªÊ¼£¬Ã¿Ò»²½¿ÉÒÔÔÚ¾ØÕóÖÐÏò×ó£¬ÏòÓÒ£¬ÏòÉÏ£¬ÏòÏÂÒÆ¶¯Ò»¸ö¸ñ×Ó¡£Èç¹ûÒ»Ìõ·¾¶¾­¹ýÁ˾ØÕóÖеÄijһ¸ö¸ñ×Ó£¬Ôò¸Ã·¾¶²»ÄÜÔÙ½øÈë¸Ã¸ñ×Ó¡£ ÀýÈç a b c e s f c s a d e e ¾ØÕóÖаüº¬Ò»Ìõ×Ö·û´® "bcced" µÄ·¾¶£¬µ«ÊǾØÕóÖв»°üº¬ "abcb" ·¾¶£¬ÒòΪ×Ö·û´®µÄµÚÒ»¸ö×Ö·û b Õ¼¾ÝÁ˾ØÕóÖеĵÚÒ»Ðеڶþ¸ö¸ñ×ÓÖ®ºó£¬Â·¾¶²»ÄÜÔٴνøÈë¸Ã¸ñ×Ó¡£ ```java private int[][] next = {{0, -1}, {0, 1}, {-1, 0}, {1, 0}}; @@ -464,11 +464,11 @@ private boolean backtracking(char[][] m, int rows, int cols, char[] str, boolean ``` -## 13. ????????????¦¶ +## 13. »úÆ÷È˵ÄÔ˶¯·¶Î§ -**???????** +**ÌâÄ¿ÃèÊö** -????????? m ?§Ü? n ?§Ö?????????????????? 0, 0 ?????????????????????????????????????????????????????????????????????¦Ë?????? k ?????? ???íà?? k ? 18 ??????????????????35, 37??????? 3+5+3+7 = 18??????????????????35, 38??????? 3+5+3+8 = 19??????????????????????????? +µØÉÏÓÐÒ»¸ö m ÐÐºÍ n Áеķ½¸ñ¡£Ò»¸ö»úÆ÷ÈË´Ó×ø±ê 0, 0 µÄ¸ñ×Ó¿ªÊ¼Òƶ¯£¬Ã¿Ò»´ÎÖ»ÄÜÏò×ó£¬ÓÒ£¬ÉÏ£¬ÏÂËĸö·½ÏòÒÆ¶¯Ò»¸ñ£¬µ«ÊDz»ÄܽøÈëÐÐ×ø±êºÍÁÐ×ø±êµÄÊýλ֮ºÍ´óÓÚ k µÄ¸ñ×Ó¡£ ÀýÈ磬µ± k Ϊ 18 ʱ£¬»úÆ÷ÈËÄܹ»½øÈë·½¸ñ£¨35, 37£©£¬ÒòΪ 3+5+3+7 = 18¡£µ«ÊÇ£¬Ëü²»ÄܽøÈë·½¸ñ£¨35, 38£©£¬ÒòΪ 3+5+3+8 = 19¡£ÇëÎʸûúÆ÷ÈËÄܹ»´ïµ½¶àÉÙ¸ö¸ñ×Ó£¿ ```java private int cnt = 0; @@ -510,15 +510,15 @@ private void initDigitSum(int rows, int cols) { } ``` -## 14. ?????? +## 14. ¼ôÉþ×Ó -**???????** +**ÌâÄ¿ÃèÊö** -?????????????¦²??????????¦Å????????? +°ÑÒ»¸ùÉþ×Ó¼ô³É¶à¶Î£¬²¢ÇÒʹµÃÿ¶ÎµÄ³¤¶È³Ë»ý×î´ó¡£ -**?????¡¤** +**½âÌâ˼·** -???????¨¹?????? 3 ?????????????????§Ô???? 1 ???????????????????????????§Ü¨®???? 3 ?????????¨®????????? 1 ?????????????????????§Ô????¦Ã???? 2 ??????? +¾¡¿ÉÄܶàµÃ¼ô³¤¶ÈΪ 3 µÄÉþ×Ó£¬²¢ÇÒ²»ÔÊÐíÓ㤶ÈΪ 1 µÄÉþ×Ó³öÏÖ£¬Èç¹û³öÏÖÁË£¬¾Í´ÓÒѾ­Çкó¤¶ÈΪ 3 µÄÉþ×ÓÖÐÄóöÒ»¶ÎÓ볤¶ÈΪ 1 µÄÉþ×ÓÖØÐÂ×éºÏ£¬°ÑËüÃÇÇгÉÁ½¶Î³¤¶ÈΪ 2 µÄÉþ×Ó¡£ ```java int maxProductAfterCuttin(int length) { @@ -532,7 +532,7 @@ int maxProductAfterCuttin(int length) { } ``` -## 15. ???????? 1 ????? +## 15. ¶þ½øÖÆÖÐ 1 µÄ¸öÊý ```java public int NumberOf1(int n) { @@ -540,7 +540,7 @@ public int NumberOf1(int n) { } ``` -n&(n-1) ??¦Ë????????? n ??¦Ë??????????????¦Ë???????????????? 10110100????? 1 ??? 10110011???????????????? 10110000?? +n&(n-1) ¸ÃλÔËËãÊÇÈ¥³ý n µÄλ¼¶±íʾÖÐ×îµÍµÄÄÇһλ¡£ÀýÈç¶ÔÓÚ¶þ½øÖƱíʾ 10110100£¬¼õÈ¥ 1 µÃµ½ 10110011£¬ÕâÁ½¸öÊýÏàÓëµÃµ½ 10110000¡£ ```java public int NumberOf1(int n) { @@ -554,9 +554,9 @@ public int NumberOf1(int n) { ``` -# ?????? ??????????? +# µÚÈýÕ ¸ßÖÊÁ¿µÄ´úÂë -## 16. ??????????¦Ç? +## 16. ÊýÖµµÄÕûÊý´Î·½ ```java public double Power(double base, int exponent) { @@ -573,7 +573,7 @@ public double Power(double base, int exponent) { } ``` -## 18. ???????????????? +## 18. ɾ³ýÁ´±íÖÐÖØ¸´µÄ½áµã ```java public ListNode deleteDuplication(ListNode pHead) { @@ -592,11 +592,11 @@ public ListNode deleteDuplication(ListNode pHead) { } ``` -## 19. ?????????? +## 19. ÕýÔò±í´ïʽƥÅä -**???????** +**ÌâÄ¿ÃèÊö** -?????????????????????? '.' ?? '\*' ??????????????§Ö???? '.' ????????????????? '\*' ???????????????????????¦²????? 0 ?¦²??? ??????§µ???????????????????????????????????íà????? "aaa" ???? "a.a" ?? "ab\*ac\*a" ????????? "aa.a" ?? "ab\*a" ??????? +ÇëʵÏÖÒ»¸öº¯ÊýÓÃÀ´Æ¥Åä°üÀ¨ '.' ºÍ '\*' µÄÕýÔò±í´ïʽ¡£Ä£Ê½ÖеÄ×Ö·û '.' ±íʾÈÎÒâÒ»¸ö×Ö·û£¬¶ø '\*' ±íʾËüÇ°ÃæµÄ×Ö·û¿ÉÒÔ³öÏÖÈÎÒâ´Î£¨°üº¬ 0 ´Î£©¡£ ÔÚ±¾ÌâÖУ¬Æ¥ÅäÊÇÖ¸×Ö·û´®µÄËùÓÐ×Ö·ûÆ¥ÅäÕû¸öģʽ¡£ÀýÈ磬×Ö·û´® "aaa" Óëģʽ "a.a" ºÍ "ab\*ac\*a" Æ¥Å䣬µ«ÊÇÓë "aa.a" ºÍ "ab\*a" ¾ù²»Æ¥Åä ```java public boolean match(char[] str, char[] pattern) { @@ -619,11 +619,11 @@ public boolean match(char[] str, char[] pattern) { } ``` -## 20. ????????????? +## 20. ±íʾÊýÖµµÄ×Ö·û´® -**???????** +**ÌâÄ¿ÃèÊö** -?????????????????§Ø??????????????????????????§³?????????íà????? "+100","5e2","-123","3.1416" ?? "-1E-16" ?????????? ???? "12e","1a3.14","1.2.3","+-5" ?? "12e+4.3" ??????? +ÇëʵÏÖÒ»¸öº¯ÊýÓÃÀ´ÅжÏ×Ö·û´®ÊÇ·ñ±íʾÊýÖµ£¨°üÀ¨ÕûÊýºÍСÊý£©¡£ÀýÈ磬×Ö·û´® "+100","5e2","-123","3.1416" ºÍ "-1E-16" ¶¼±íʾÊýÖµ¡£ µ«ÊÇ "12e","1a3.14","1.2.3","+-5" ºÍ "12e+4.3" ¶¼²»ÊÇ¡£ ```java public boolean isNumeric(char[] str) { @@ -632,10 +632,10 @@ public boolean isNumeric(char[] str) { } ``` -## 21. ????????????????¦Ë???????? +## 21. µ÷ÕûÊý×é˳ÐòÊ¹ÆæÊýλÓÚżÊýÇ°Ãæ -??ÁÙ??? : O(n2) -??ÁÙ??? : O(1) +ʱ¼ä¸´ÔÓ¶È : O(n2) +¿Õ¼ä¸´ÔÓ¶È : O(1) ```java public void reOrderArray(int[] array) { @@ -655,8 +655,8 @@ public void reOrderArray(int[] array) { } ``` -??ÁÙ??? : O(n) -??ÁÙ??? : O(n) +ʱ¼ä¸´ÔÓ¶È : O(n) +¿Õ¼ä¸´ÔÓ¶È : O(n) ```java public void reOrderArray(int[] array) { @@ -671,7 +671,7 @@ public void reOrderArray(int[] array) { } ``` -## 22. ?????§Ö????? k ????? +## 22. Á´±íÖе¹ÊýµÚ k ¸ö½áµã ```java public ListNode FindKthToTail(ListNode head, int k) { @@ -690,7 +690,7 @@ public ListNode FindKthToTail(ListNode head, int k) { -## 23. ?????§Ý???????? +## 23. Á´±íÖл·µÄÈë¿Ú½áµã ```java public ListNode EntryNodeOfLoop(ListNode pHead) { @@ -712,7 +712,7 @@ public ListNode EntryNodeOfLoop(ListNode pHead) { } ``` -## 24. ??????? +## 24. ·´×ªÁ´±í ```java public ListNode ReverseList(ListNode head) { @@ -727,7 +727,7 @@ public ListNode ReverseList(ListNode head) { } ``` -## 25. ???????????????? +## 25. ºÏ²¢Á½¸öÅÅÐòµÄÁ´±í ```java public ListNode Merge(ListNode list1, ListNode list2) { @@ -749,7 +749,7 @@ public ListNode Merge(ListNode list1, ListNode list2) { } ``` -## 26. ??????? +## 26. Ê÷µÄ×ӽṹ ```java public boolean HasSubtree(TreeNode root1, TreeNode root2) { @@ -766,9 +766,9 @@ private boolean isSubtree(TreeNode root1, TreeNode root2) { } ``` -# ?????? ???????????¡¤ +# µÚËÄÕ ½â¾öÃæÊÔÌâµÄ˼· -## 27. ??????????? +## 27. ¶þ²æÊ÷µÄ¾µÏñ ```java public void Mirror(TreeNode root) { @@ -781,7 +781,7 @@ public void Mirror(TreeNode root) { } ``` -## 28.1 ????????? +## 28.1 ¶Ô³ÆµÄ¶þ²æÊ÷ ```java boolean isSymmetrical(TreeNode pRoot) { @@ -797,7 +797,7 @@ boolean isSymmetrical(TreeNode t1, TreeNode t2) { } ``` -## 28.2 ???????? +## 28.2 ƽºâ¶þ²æÊ÷ ```java private boolean isBalanced = true; @@ -816,7 +816,7 @@ private int height(TreeNode root) { } ``` -## 29. ?????????? +## 29. ˳ʱÕë´òÓ¡¾ØÕó ```java public ArrayList printMatrix(int[][] matrix) { @@ -833,7 +833,7 @@ public ArrayList printMatrix(int[][] matrix) { } ``` -## 30. ???? min ??????? +## 30. °üº¬ min º¯ÊýµÄÕ» ```java private Stack stack = new Stack<>(); @@ -861,7 +861,7 @@ public int min() { } ``` -## 31. ?????????????? +## 31. Õ»µÄѹÈë¡¢µ¯³öÐòÁÐ ```java public boolean IsPopOrder(int[] pushA, int[] popA) { @@ -878,7 +878,7 @@ public boolean IsPopOrder(int[] pushA, int[] popA) { } ``` -## 32.1 ???????????????? +## 32.1 ´ÓÉÏÍùÏ´òÓ¡¶þ²æÊ÷ ```java public ArrayList PrintFromTopToBottom(TreeNode root) { @@ -899,7 +899,7 @@ public ArrayList PrintFromTopToBottom(TreeNode root) { } ``` -## 32.3 ??????????????? +## 32.3 °Ñ¶þ²æÊ÷´òÓ¡³É¶àÐÐ ```java ArrayList> Print(TreeNode pRoot) { @@ -922,7 +922,7 @@ ArrayList> Print(TreeNode pRoot) { } ``` -## 32.3 ?????????????????? +## 32.3 °´Ö®×ÖÐÎ˳Ðò´òÓ¡¶þ²æÊ÷ ```java public ArrayList> Print(TreeNode pRoot) { @@ -953,7 +953,7 @@ public ArrayList> Print(TreeNode pRoot) { ``` -## 33. ?????????????????????? +## 33. ¶þ²æËÑË÷Ê÷µÄºóÐò±éÀúÐòÁÐ ```java public boolean VerifySquenceOfBST(int[] sequence) { @@ -976,7 +976,7 @@ private boolean verify(int[] sequence, int start, int end) { } ``` -## 34. ???????§Ü???????¡¤?? +## 34. ¶þ²æÊ÷ÖкÍΪijһֵµÄ·¾¶ ```java private ArrayList> ret = new ArrayList<>(); @@ -1000,21 +1000,21 @@ private void dfs(TreeNode node, int target, int curSum, ArrayList path) } ``` -## 35. ???????????? +## 35. ¸´ÔÓÁ´±íµÄ¸´ÖÆ -**???????** +**ÌâÄ¿ÃèÊö** -????????????????????????§ß??????????????????????????????????????????????????????????????????????????? head??????????????????????????§Ö???????????????????????????? +ÊäÈëÒ»¸ö¸´ÔÓÁ´±í£¨Ã¿¸ö½ÚµãÖÐÓнڵãÖµ£¬ÒÔ¼°Á½¸öÖ¸Õ룬һ¸öÖ¸ÏòÏÂÒ»¸ö½Úµã£¬ÁíÒ»¸öÌØÊâÖ¸ÕëÖ¸ÏòÈÎÒâÒ»¸ö½Úµã£©£¬·µ»Ø½á¹ûΪ¸´Öƺó¸´ÔÓÁ´±íµÄ head¡££¨×¢Ò⣬Êä³ö½á¹ûÖÐÇë²»Òª·µ»Ø²ÎÊýÖеĽڵãÒýÓ㬷ñÔòÅÐÌâ³ÌÐò»áÖ±½Ó·µ»Ø¿Õ£© -??????????????????????????? +µÚÒ»²½£¬ÔÚÿ¸ö½ÚµãµÄºóÃæ²åÈë¸´ÖÆµÄ½Úµã¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/f8b12555-967b-423d-a84e-bc9eff104b8b.jpg) -??????????????? random ??????§Ú???? +µÚ¶þ²½£¬¶Ô¸´ÖƽڵãµÄ random Á´½Ó½øÐи³Öµ¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/7b877a2a-8fd1-40d8-a34c-c445827300b8.jpg) -???????????? +µÚÈý²½£¬²ð·Ö¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/b2b6253c-c701-4b30-aff4-bc3c713542a7.jpg) @@ -1022,7 +1022,7 @@ private void dfs(TreeNode node, int target, int curSum, ArrayList path) ```java public RandomListNode Clone(RandomListNode pHead) { if (pHead == null) return null; - // ???????? + // ²åÈëнڵã RandomListNode cur = pHead; while (cur != null) { RandomListNode node = new RandomListNode(cur.label); @@ -1030,7 +1030,7 @@ public RandomListNode Clone(RandomListNode pHead) { cur.next = node; cur = node.next; } - // ???? random ???? + // ½¨Á¢ random Á´½Ó cur = pHead; while (cur != null) { RandomListNode clone = cur.next; @@ -1039,7 +1039,7 @@ public RandomListNode Clone(RandomListNode pHead) { } cur = clone.next; } - // ??? + // ²ð·Ö RandomListNode pCloneHead = pHead.next; cur = pHead; while (cur.next != null) { @@ -1051,11 +1051,11 @@ public RandomListNode Clone(RandomListNode pHead) { } ``` -## 36. ??????????????????? +## 36. ¶þ²æËÑË÷Ê÷ÓëË«ÏòÁ´±í -**???????** +**ÌâÄ¿ÃèÊö** -????????????????????????????????????????????????????????????¦Ê???????????????§ß????????? +ÊäÈëÒ»¿Ã¶þ²æËÑË÷Ê÷£¬½«¸Ã¶þ²æËÑË÷Ê÷ת»»³ÉÒ»¸öÅÅÐòµÄË«ÏòÁ´±í¡£ÒªÇó²»ÄÜ´´½¨ÈκÎеĽáµã£¬Ö»Äܵ÷ÕûÊ÷ÖнáµãÖ¸ÕëµÄÖ¸Ïò¡£ ```java private TreeNode pre = null; @@ -1076,7 +1076,7 @@ private void inOrder(TreeNode node) { } ``` -## 37. ???§Ý??????? +## 37. ÐòÁл¯¶þ²æÊ÷ ```java private String serizeString = ""; @@ -1109,11 +1109,11 @@ private TreeNode Deserialize() { } ``` -## 38. ??????????? +## 38. ×Ö·û´®µÄÅÅÁÐ -**???????** +**ÌâÄ¿ÃèÊö** -???????????? , ????????????????????????????????§³?????????????? abc, ??????????? a, b, c ???????§Ô?????????????? abc, acb, bac, bca, cab ?? cba?? +ÊäÈëÒ»¸ö×Ö·û´® , °´×ÖµäÐò´òÓ¡³ö¸Ã×Ö·û´®ÖÐ×Ö·ûµÄËùÓÐÅÅÁС£ÀýÈçÊäÈë×Ö·û´® abc, Ôò´òÓ¡³öÓÉ×Ö·û a, b, c ËùÄÜÅÅÁгöÀ´µÄËùÓÐ×Ö·û´® abc, acb, bac, bca, cab ºÍ cba¡£ ```java private ArrayList ret = new ArrayList<>(); @@ -1133,7 +1133,7 @@ private void backtracking(char[] chars, boolean[] used, String s) { } for (int i = 0; i < chars.length; i++) { if (used[i]) continue; - if (i != 0 && chars[i] == chars[i - 1] && !used[i - 1]) continue; // ???????? + if (i != 0 && chars[i] == chars[i - 1] && !used[i - 1]) continue; // ±£Ö¤²»Öظ´ used[i] = true; backtracking(chars, used, s + chars[i]); used[i] = false; @@ -1141,9 +1141,9 @@ private void backtracking(char[] chars, boolean[] used, String s) { } ``` -# ?????? ?????????§¹?? +# µÚÎåÕ ÓÅ»¯Ê±¼äºÍ¿Õ¼äЧÂÊ -## 39. ?????§Ô?????????????????? +## 39. Êý×éÖгöÏÖ´ÎÊý³¬¹ýÒ»°ëµÄÊý×Ö ```java public int MoreThanHalfNum_Solution(int[] array) { @@ -1165,12 +1165,12 @@ public int MoreThanHalfNum_Solution(int[] array) { ``` -## 40. ??§³?? K ???? +## 40. ×îСµÄ K ¸öÊý -??????§³? k ??§³????? +¹¹½¨´óСΪ k µÄС¶¥¶Ñ¡£ -??ÁÙ????O(nlgk) -??ÁÙ????O(k) +ʱ¼ä¸´ÔÓ¶È£ºO(nlgk) +¿Õ¼ä¸´ÔÓ¶È£ºO(k) ```java public ArrayList GetLeastNumbers_Solution(int[] input, int k) { @@ -1187,10 +1187,10 @@ public ArrayList GetLeastNumbers_Solution(int[] input, int k) { } ``` -?????????? +ÀûÓÿìËÙÑ¡Ôñ -??ÁÙ????O(n) -??ÁÙ????O(1) +ʱ¼ä¸´ÔÓ¶È£ºO(n) +¿Õ¼ä¸´ÔÓ¶È£ºO(1) ```java public ArrayList GetLeastNumbers_Solution(int[] input, int k) { @@ -1245,22 +1245,22 @@ private boolean less(int v, int w) { } ``` -## 41.1 ???????§Ö???¦Ë?? +## 41.1 Êý¾ÝÁ÷ÖеÄÖÐλÊý -**???????** +**ÌâÄ¿ÃèÊö** -??¦Å????????????§Ö???¦Ë????????????????§Ø???????????????????¦Ë????????????????????¦Ë???§Þ???????????????????§Ø??????????????????¦Ë?????????????????????§Þ??????????????? +ÈçºÎµÃµ½Ò»¸öÊý¾ÝÁ÷ÖеÄÖÐλÊý£¿Èç¹û´ÓÊý¾ÝÁ÷ÖжÁ³öÆæÊý¸öÊýÖµ£¬ÄÇôÖÐλÊý¾ÍÊÇËùÓÐÊýÖµÅÅÐòÖ®ºóλÓÚÖмäµÄÊýÖµ¡£Èç¹û´ÓÊý¾ÝÁ÷ÖжÁ³öżÊý¸öÊýÖµ£¬ÄÇôÖÐλÊý¾ÍÊÇËùÓÐÊýÖµÅÅÐòÖ®ºóÖмäÁ½¸öÊýµÄƽ¾ùÖµ¡£ ```java -private PriorityQueue maxHeap = new PriorityQueue<>((o1, o2) -> o2-o1); // ????????? -private PriorityQueue minHeep = new PriorityQueue<>(); // ???????????????????????????????? +private PriorityQueue maxHeap = new PriorityQueue<>((o1, o2) -> o2-o1); // ʵÏÖ×ó±ß²¿·Ö +private PriorityQueue minHeep = new PriorityQueue<>(); // ʵÏÖÓұ߲¿·Ö£¬Óұ߲¿·ÖËùÓÐÔªËØ´óÓÚ×ó±ß²¿·Ö private int cnt = 0; public void Insert(Integer num) { - // ?????????????????????? + // ²åÈëÒª±£Ö¤Á½¸ö¶Ñ´æÓÚÆ½ºâ״̬ if(cnt % 2 == 0) { - // ????????????????§³???????????????????????????????§Ö?????§³????§³???§Ö???? + // ΪżÊýµÄÇé¿öϲåÈëµ½×îС¶Ñ£¬ÏȾ­¹ý×î´ó¶Ñɸѡ£¬ÕâÑù¾ÍÄܱ£Ö¤×î´ó¶ÑÖеÄÔªËØ¶¼Ð¡ÓÚ×îС¶ÑÖеÄÔªËØ maxHeap.add(num); minHeep.add(maxHeap.poll()); } else { @@ -1279,11 +1279,11 @@ public Double GetMedian() { } ``` -## 14.2 ??????§Ö?????????????? +## 14.2 ×Ö·ûÁ÷ÖеÚÒ»¸ö²»Öظ´µÄ×Ö·û -**???????** +**ÌâÄ¿ÃèÊö** -?????????????????????????§Ö???????????¦Å?????????íà???????????????????????? "go" ???????????????¦Å?????? "g"?????????????§Ø?????????????google" ???????????????¦Å?????? "l"?? +ÇëʵÏÖÒ»¸öº¯ÊýÓÃÀ´ÕÒ³ö×Ö·ûÁ÷ÖеÚÒ»¸öÖ»³öÏÖÒ»´ÎµÄ×Ö·û¡£ÀýÈ磬µ±´Ó×Ö·ûÁ÷ÖÐÖ»¶Á³öǰÁ½¸ö×Ö·û "go" ʱ£¬µÚÒ»¸öÖ»³öÏÖÒ»´ÎµÄ×Ö·ûÊÇ "g"¡£µ±´Ó¸Ã×Ö·ûÁ÷ÖжÁ³öǰÁù¸ö×Ö·û¡°google" ʱ£¬µÚÒ»¸öÖ»³öÏÖÒ»´ÎµÄ×Ö·ûÊÇ "l"¡£ ```java //Insert one char from stringstream @@ -1306,7 +1306,7 @@ public char FirstAppearingOnce() { ``` -## 42. ??????????????? +## 42. Á¬Ðø×ÓÊý×éµÄ×î´óºÍ ```java public int FindGreatestSumOfSubArray(int[] array) { @@ -1322,9 +1322,9 @@ public int FindGreatestSumOfSubArray(int[] array) { } ``` -## 43. ?? 1 ?? n ?????? 1 ???????? +## 43. ´Ó 1 µ½ n ÕûÊýÖÐ 1 ³öÏֵĴÎÊý -????¦Ï???[Leetcode : 233. Number of Digit One](https://leetcode.com/problems/number-of-digit-one/discuss/64381/4+-lines-O(log-n)-C++JavaPython) +½âÌâ²Î¿¼£º[Leetcode : 233. Number of Digit One](https://leetcode.com/problems/number-of-digit-one/discuss/64381/4+-lines-O(log-n)-C++JavaPython) ```java public int NumberOf1Between1AndN_Solution(int n) { @@ -1337,11 +1337,11 @@ public int NumberOf1Between1AndN_Solution(int n) { } ``` -## 45. ???????????§³???? +## 45. °ÑÊý×éÅųÉ×îСµÄÊý -**???????** +**ÌâÄ¿ÃèÊö** -????????????????ï…????????????????????????????????????????????????????????§³??????????????????? {3??32??321}??????????????????????????§³????? 321323?? +ÊäÈëÒ»¸öÕýÕûÊýÊý×飬°ÑÊý×éÀïËùÓÐÊý×ÖÆ´½ÓÆðÀ´ÅųÉÒ»¸öÊý£¬´òÓ¡ÄÜÆ´½Ó³öµÄËùÓÐÊý×ÖÖÐ×îСµÄÒ»¸ö¡£ÀýÈçÊäÈëÊý×é {3£¬32£¬321}£¬Ôò´òÓ¡³öÕâÈý¸öÊý×ÖÄÜÅųɵÄ×îСÊý×ÖΪ 321323¡£ ```java public String PrintMinNumber(int[] numbers) { @@ -1355,11 +1355,11 @@ public String PrintMinNumber(int[] numbers) { } ``` -## 49. ???? +## 49. ³óÊý -**???????** +**ÌâÄ¿ÃèÊö** -??????????? 2??3 ?? 5 ??????????????Ugly Number???????? 6??8 ??????????? 14 ?????????????????? 7?? ?????????? 1 ???????????????????§³?????????? N ???????? +°ÑÖ»°üº¬Òò×Ó 2¡¢3 ºÍ 5 µÄÊý³Æ×÷³óÊý£¨Ugly Number£©¡£ÀýÈç 6¡¢8 ¶¼ÊdzóÊý£¬µ« 14 ²»ÊÇ£¬ÒòΪËü°üº¬Òò×Ó 7¡£ ϰ¹ßÉÏÎÒÃÇ°Ñ 1 µ±×öÊǵÚÒ»¸ö³óÊý¡£Çó°´´ÓСµ½´óµÄ˳ÐòµÄµÚ N ¸ö³óÊý¡£ ```java public int GetUglyNumber_Solution(int index) { @@ -1380,7 +1380,7 @@ public int GetUglyNumber_Solution(int index) { } ``` -## 50. ????????????¦Å????¦Ë?? +## 50. µÚÒ»¸öÖ»³öÏÖÒ»´ÎµÄ×Ö·ûλÖà ```java public int FirstNotRepeatingChar(String str) { @@ -1391,7 +1391,7 @@ public int FirstNotRepeatingChar(String str) { } ``` -## 51. ?????§Ö?????? +## 51. Êý×éÖеÄÄæÐò¶Ô ```java private long cnt = 0; @@ -1418,7 +1418,7 @@ private void merge(int[] a, int start, int mid, int end) { else if (a[i] < a[j]) tmp[k] = a[i++]; else { tmp[k] = a[j++]; - this.cnt += mid - i + 1; // a[i] > a[j] ????? a[i...mid] ?????? a[j] + this.cnt += mid - i + 1; // a[i] > a[j] £¬ËµÃ÷ a[i...mid] ¶¼´óÓÚ a[j] } k++; } @@ -1429,7 +1429,7 @@ private void merge(int[] a, int start, int mid, int end) { } ``` -## 52. ???????????????????? +## 52. Á½¸öÁ´±íµÄµÚÒ»¸ö¹«¹²½áµã ```java public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) { @@ -1444,9 +1444,9 @@ public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) { } ``` -# ?????? ?????§Ö???????? +# µÚÁùÕÂ ÃæÊÔÖеĸ÷ÏîÄÜÁ¦ -## 53 ???????????????§Ô??????? +## 53 Êý×ÖÔÚÅÅÐòÊý×éÖгöÏֵĴÎÊý @@ -1464,7 +1464,7 @@ public int GetNumberOfK(int[] array, int k) { } ``` -## 54. ????????????? k ????? +## 54. ¶þ²æËÑË÷Ê÷µÄµÚ k ¸ö½áµã ```java TreeNode ret; @@ -1485,7 +1485,7 @@ private void inorder(TreeNode root, int k) { } ``` -## 55 ??????????? +## 55 ¶þ²æÊ÷µÄÉî¶È ```java public int TreeDepth(TreeNode root) { @@ -1494,25 +1494,25 @@ public int TreeDepth(TreeNode root) { } ``` -## 56. ?????????????¦Å????? +## 56. Êý×éÖÐÖ»³öÏÖÒ»´ÎµÄÊý×Ö -**???????** +**ÌâÄ¿ÃèÊö** -???????????????????????????????????????????????¦²?????????????? +Ò»¸öÕûÐÍÊý×éÀï³ýÁËÁ½¸öÊý×ÖÖ®Í⣬ÆäËûµÄÊý×Ö¶¼³öÏÖÁËÁ½´Î£¬ÕÒ³öÕâÁ½¸öÊý¡£ -**?????¡¤** +**½âÌâ˼·** -???????????????¦Ë??????????????¦Ë???????? +Á½¸ö²»ÏàµÈµÄÔªËØÔÚλ¼¶±íʾÉϱض¨»áÓÐһλ´æÔÚ²»Í¬¡£ -?????????????????????????????????????????????????? +½«Êý×éµÄËùÓÐÔªËØÒì»òµÃµ½µÄ½á¹ûΪ²»´æÔÚÖØ¸´µÄÁ½¸öÔªËØÒì»òµÄ½á¹û¡£ -diff &= -diff ????? diff ?????? 0 ??¦Ë??????????????????????????¦Ë??????????????????¦Ë?????????¦Ë?????????????????????? +diff &= -diff µÃµ½³ö diff ×îÓҲ಻Ϊ 0 µÄ룬Ҳ¾ÍÊDz»´æÔÚÖØ¸´µÄÁ½¸öÔªËØÔÚλ¼¶±íʾÉÏ×îÓҲ಻ͬµÄÄÇһ룬ÀûÓÃÕâһλ¾Í¿ÉÒÔ½«Á½¸öÔªËØÇø·Ö¿ªÀ´¡£ ```java public void FindNumsAppearOnce(int[] array, int num1[], int num2[]) { int diff = 0; for (int num : array) diff ^= num; - // ????????¦Ë + // µÃµ½×îÓÒһλ diff &= -diff; for (int num : array) { if ((num & diff) == 0) num1[0] ^= num; @@ -1521,11 +1521,11 @@ public void FindNumsAppearOnce(int[] array, int num1[], int num2[]) { } ``` -## 57.1 ??? S ?????????? +## 57.1 ºÍΪ S µÄÁ½¸öÊý×Ö -**???????** +**ÌâÄ¿ÃèÊö** -???????????????????????????? S?????????§Ó?????????????????????????? S??????§Ø??????????? S?????????????????§³??? +ÊäÈëÒ»¸öµÝÔöÅÅÐòµÄÊý×éºÍÒ»¸öÊý×Ö S£¬ÔÚÊý×éÖвéÕÒÁ½¸öÊý£¬ÊǵÄËûÃǵĺÍÕýºÃÊÇ S£¬Èç¹ûÓжà¶ÔÊý×ֵĺ͵ÈÓÚ S£¬Êä³öÁ½¸öÊýµÄ³Ë»ý×îСµÄ¡£ ```java public ArrayList FindNumbersWithSum(int[] array, int sum) { @@ -1540,11 +1540,11 @@ public ArrayList FindNumbersWithSum(int[] array, int sum) { } ``` -## 57.2 ??? S ?????????????? +## 57.2 ºÍΪ S µÄÁ¬ÐøÕýÊýÐòÁÐ -**???????** +**ÌâÄ¿ÃèÊö** -??? 100 ???????????? 18, 19, 20, 21, 22 +ºÍΪ 100 µÄÁ¬ÐøÐòÁÐÓÐ 18, 19, 20, 21, 22 ```java public ArrayList> FindContinuousSequence(int sum) { @@ -1575,13 +1575,13 @@ public ArrayList> FindContinuousSequence(int sum) { } ``` -## 58.1 ???????????? +## 58.1 ·­×ªµ¥´Ê˳ÐòÁÐ -**???????** +**ÌâÄ¿ÃèÊö** -????"I am a student." +ÊäÈ룺"I am a student." -?????"student. a am I" +Êä³ö£º"student. a am I" ```java public String ReverseSentence(String str) { @@ -1611,11 +1611,11 @@ private void reverse(char[] c, int start, int end) { } ``` -## 58.2 ?????????? +## 58.2 ×óÐýת×Ö·û´® -**???????** +**ÌâÄ¿ÃèÊö** -???????????????????? S???????????????? K ¦Ë???????????????íà??????? S=??abcXYZdef??, ????????????? 3 ¦Ë???????????XYZdefabc???? +¶ÔÓÚÒ»¸ö¸ø¶¨µÄ×Ö·ûÐòÁÐ S£¬ÇëÄã°ÑÆäÑ­»·×óÒÆ K λºóµÄÐòÁÐÊä³ö¡£ÀýÈ磬×Ö·ûÐòÁÐ S=¡±abcXYZdef¡±, ÒªÇóÊä³öÑ­»·×óÒÆ 3 λºóµÄ½á¹û£¬¼´¡°XYZdefabc¡±¡£ ```java public String LeftRotateString(String str, int n) { @@ -1638,11 +1638,11 @@ private void reverse(char[] c, int i, int j) { } ``` -## 59. ????????????? +## 59. »¬¶¯´°¿ÚµÄ×î´óÖµ -**???????** +**ÌâÄ¿ÃèÊö** -?????????????????????§³????????§Ý???????????????????????íà??????????? {2, 3, 4, 2, 6, 2, 5, 1} ????????????§³ 3???????????? 6 ???????????????????????? {4, 4, 6, 6, 6, 5}?? +¸ø¶¨Ò»¸öÊý×éºÍ»¬¶¯´°¿ÚµÄ´óС£¬ÕÒ³öËùÓ묶¯´°¿ÚÀïÊýÖµµÄ×î´óÖµ¡£ÀýÈ磬Èç¹ûÊäÈëÊý×é {2, 3, 4, 2, 6, 2, 5, 1} ¼°»¬¶¯´°¿ÚµÄ´óС 3£¬ÄÇôһ¹²´æÔÚ 6 ¸ö»¬¶¯´°¿Ú£¬ËûÃǵÄ×î´óÖµ·Ö±ðΪ {4, 4, 6, 6, 6, 5}£» ```java public ArrayList maxInWindows(int[] num, int size) { @@ -1660,11 +1660,11 @@ public ArrayList maxInWindows(int[] num, int size) { } ``` -## 61. ???????? +## 61. ÆË¿ËÅÆË³×Ó -**???????** +**ÌâÄ¿ÃèÊö** -??????????§Õ?§³????????????§³? 0???§Ø????????????? +ÎåÕÅÅÆ£¬ÆäÖдóС¹íΪñ®×Ó£¬ÅÆÃæ´óСΪ 0¡£ÅжÏÊÇ·ñÄÜ×é³É˳×Ó¡£ ```java public boolean isContinuous(int[] numbers) { @@ -1682,15 +1682,15 @@ public boolean isContinuous(int[] numbers) { } ``` -## 62. ????????????? +## 62. ԲȦÖÐ×îºóʣϵÄÊý -**???????** +**ÌâÄ¿ÃèÊö** -??§³??????¦¶????????????? , ????????????? m, ????? 0 ??§³??????????????¦Ê??? m-1 ?????§³????????§Ô???? , ??????????????????????????? , ???????????? , ???????????§³?????? , ???? 0...m-1 ???? .... ??????? .... ????????????§³???? , ??????????? +ÈÃСÅóÓÑÃÇΧ³ÉÒ»¸ö´óȦ¡£È»ºó , ËûËæ»úÖ¸¶¨Ò»¸öÊý m, ÈñàºÅΪ 0 µÄСÅóÓÑ¿ªÊ¼±¨Êý¡£Ã¿´Îº°µ½ m-1 µÄÄǸöСÅóÓÑÒª³öÁгªÊ׸è , È»ºó¿ÉÒÔÔÚÀñÆ·ÏäÖÐÈÎÒâµÄÌôÑ¡ÀñÎï , ²¢ÇÒ²»Ôٻص½È¦ÖÐ , ´ÓËûµÄÏÂÒ»¸öСÅóÓÑ¿ªÊ¼ , ¼ÌÐø 0...m-1 ±¨Êý .... ÕâÑùÏÂÈ¥ .... Ö±µ½Ê£ÏÂ×îºóÒ»¸öСÅóÓÑ , ¿ÉÒÔ²»ÓñíÑÝ¡£ -**?????¡¤** +**½âÌâ˼·** -???? +Լɪ·ò»· ```java public int LastRemaining_Solution(int n, int m) { @@ -1700,11 +1700,11 @@ public int LastRemaining_Solution(int n, int m) { } ``` -## 63. ???????????? +## 63. ¹ÉƱµÄ×î´óÀûÈó -**???????** +**ÌâÄ¿ÃèÊö** -???????????????????????????????????????????µµ +¿ÉÒÔÓÐÒ»´ÎÂòÈëºÍÒ»´ÎÂô³ö£¬ÂòÈë±ØÐëÔÚǰ¡£Çó×î´óÊÕÒæ¡£ ```java public int maxProfit(int[] prices) { @@ -1720,11 +1720,11 @@ public int maxProfit(int[] prices) { } ``` -## 64. ?? 1+2+3+...+n +## 64. Çó 1+2+3+...+n -**???????** +**ÌâÄ¿ÃèÊö** -?? 1+2+3+...+n?????????¨®??????for??while??if??else??switch??case ????????????§Ø????A?B:C?? +Çó 1+2+3+...+n£¬ÒªÇó²»ÄÜʹÓó˳ý·¨¡¢for¡¢while¡¢if¡¢else¡¢switch¡¢case µÈ¹Ø¼ü×Ö¼°Ìõ¼þÅжÏÓï¾ä£¨A?B:C£© ```java public int Sum_Solution(int n) { @@ -1733,9 +1733,9 @@ public int Sum_Solution(int n) { } ``` -## 65. ???¨¹?????????? +## 65. ²»ÓüӼõ³Ë³ý×ö¼Ó·¨ -a ^ b ?????§á????¦Ë???????????????(a & b) << 1 ?????¦Ë???????????????? (a & b) << 1 ?????????? 0???????????ï…??¦Ë?????? 0 ??????????????¦Ë???? 0?????????? +a ^ b ±íʾûÓп¼ÂǽøÎ»µÄÇé¿öÏÂÁ½ÊýµÄºÍ£¬(a & b) << 1 ¾ÍÊǽøÎ»¡£µÝ¹é»áÖÕÖ¹µÄÔ­ÒòÊÇ (a & b) << 1 ×îÓұ߻á¶àÒ»¸ö 0£¬ÄÇô¼ÌÐøµÝ¹é£¬½øÎ»×îÓÒ±ßµÄ 0 »áÂýÂýÔö¶à£¬×îºó½øÎ»»á±äΪ 0£¬µÝ¹éÖÕÖ¹¡£ ```java public int Add(int num1, int num2) { @@ -1744,11 +1744,11 @@ public int Add(int num1, int num2) { } ``` -## 66. ??????????? +## 66. ¹¹½¨³Ë»ýÊý×é -**???????** +**ÌâÄ¿ÃèÊö** -??????????? A[0, 1,..., n-1], ??????????? B[0, 1,..., n-1], ???? B ?§Ö???? B[i]=A[0]\*A[1]\*...\*A[i-1]\*A[i+1]\*...\*A[n-1]????????¨®????? +¸ø¶¨Ò»¸öÊý×é A[0, 1,..., n-1], Çë¹¹½¨Ò»¸öÊý×é B[0, 1,..., n-1], ÆäÖÐ B ÖеÄÔªËØ B[i]=A[0]\*A[1]\*...\*A[i-1]\*A[i+1]\*...\*A[n-1]¡£²»ÄÜʹÓóý·¨¡£ ```java public int[] multiply(int[] A) { @@ -1773,9 +1773,9 @@ public int[] multiply(int[] A) { } ``` -# ?????? ??????????? +# µÚÆßÕ Á½¸öÃæÊÔ°¸Àý -## 67. ???????????????? +## 67. °Ñ×Ö·û´®×ª»»³ÉÕûÊý ```java public int StrToInt(String str) { @@ -1792,9 +1792,9 @@ public int StrToInt(String str) { } ``` -## 68. ?????????????????????? +## 68. Ê÷ÖÐÁ½¸ö½ÚµãµÄ×îµÍ¹«¹²×æÏÈ -???????????????????????????? +Ê÷ÊǶþ²æ²éÕÒÊ÷µÄ×îµÍ¹«¹²×æÏÈÎÊÌ⣺ ```java public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { diff --git a/notes/程åº�员的è�Œä¸šç´ å…».md b/notes/程åº�员的è�Œä¸šç´ å…».md index efadf001..b0a7761d 100644 --- a/notes/程åº�员的è�Œä¸šç´ å…».md +++ b/notes/程åº�员的è�Œä¸šç´ å…».md @@ -1,129 +1,129 @@ -* [??????](#??????) -* [???](#???) -* [??????](#??????) -* [???](#???) -* [???](#???) -* [???](#???) -* [????????????](#????????????) -* [???](#???) +* [ÒëÕßÐò](#ÒëÕßÐò) +* [ǰÑÔ](#ǰÑÔ) +* [רҵÖ÷Òå](#רҵÖ÷Òå) +* [˵²»](#˵²») +* [˵ÊÇ](#˵ÊÇ) +* [±à³Ì](#±à³Ì) +* [²âÊÔÇý¶¯¿ª·¢](#²âÊÔÇý¶¯¿ª·¢) +* [Á·Ï°](#Á·Ï°) -# ?????? +# ÒëÕßÐò -???? Bob ???ÈÉ???§³?????????????????????????????????????????????????????????? +×÷Õß Bob ´óÊ壬ָÓС¶Ãô½ÝÈí¼þ¿ª·¢£ºÔ­Ôò¡¢Ä£Ê½Óëʵ¼ù¡·¡¶´úÂëÕû½àÖ®µÀ¡·¡¶³ÌÐòÔ±µÄÖ°ÒµËØÑø¡· -???????????????????????????????????????????????????????????????????? +¶ÔÓÚ½â¾öÎÊÌâ£¬ÖØÒªµÄ²»ÊÇÎÊÌâ±¾Éí£¬¶øÊǽâ¾öÎÊÌâµÄ·½Ê½¡¢²½ÖèÒÔ¼°·´Ë¼µÄÉî¶È£¬Õâ¾ÍÊÇÖ°ÒµËØÑø¡£ -# ??? +# ǰÑÔ -?????????????????????????????????????????????????¦²????—¨??????????????????????????????????????????????????????????????????????????????¦Ç???????????????????????????????????????????§Õ?´Â???????????¦Ç????¦²????? +ÓÉÓÚ¹ÜÀíÕßÃæÁٺܴóµÄ²ÆÎñºÍÕþÖÎѹÁ¦£¬ËûÃÇÎÞÊÓ¼¼ÊõÈËÔ±·¢³öµÄΣÏÕ¾¯¸æ£¬±§×ŽÄÐÒÐÄÀí·¢ÉäÁË¡°ÌôÕ½Õß¡±º½Ìì·É»ú£¬×îÖÕµ¼Öº½Ìì·É»úÔڸ߿ձ¬Õ¨¡£Ëä˵¼¼ÊõÈËÔ±ÒѾ­×öºÜ¶àÊÂÇéÈ¥×èÖ¹Õâ´Î·¢É䣬µ«ÊDz¢²»ÊÇ˵×öÁËËùÓÐËûÃÇÄÜ×öµÄ£¬ÀýÈçËûÃǾÍûÓдòµç»°È¥ÐÂÎĄ̊½Ò¶´Ë´Î·¢ÉäµÄΣÏÕÐÔ¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/bccb799f-56e2-4356-95f0-a9ea05b0de2a.jpg) -# ?????? +# רҵÖ÷Òå -?????�I????¦Æ????????????????¦Æ?????¦±? +רҵÖ÷Òå²»½öÒâζ×ÅÈÙÓþºÍ½¾°Á£¬Ò²Òâζ×ÅÔðÈΡ£ -???????????????????´Â??¡¤????????????????????????????????????§Ø??????????§Ó????????????? bug ??????????????????????????¦Å??????????????????? +×÷ÕßÔÚ×Ô¼º¿ª·¢µÄÒ»¸öµç»°Ïß·¹ÊÕϼì²âϵͳʱ£¬ÒòΪ¸Ï×ÅÔÚµ½ÆÚÈÕ½»¸¶Ð¹¦ÄÜ£¬Ã»ÓжÔÕû¸öϵͳ½øÐвâÊÔ£¬µ¼ÖÂÁËÒ»¸ö bug µÄ³öÏÖ¡£×÷ÕßÈÏΪÕâÊÇÒ»ÖÖ²»¸ºÔðÈεıíÏÖ£¬Ò²¾ÍÊDz»×¨ÒµµÄ±íÏÖ¡£ -???????????? bug?????????¦Æ??????? bug ???? +´úÂëÖÐÄÑÃâÓÐ bug£¬µ«ÊDz»Òâζ×ÅÄã²»ÓÃΪ bug ¸ºÔð¡£ -????? QA ????? bug ??????????? QA ???? bug??????????????????? bug??????????? +ÓÐÈ衄 QA µ±³É²é bug µÄ»úÆ÷£¬µÈ×Å QA ·¢ÏÖ bug£¬¶ø×Ô¼ºÈ´²»Ö÷¶¯È¥·¢ÏÖ bug£¬ÕâÊDz»¶ÔµÄ¡£ -???????????????????§Õ?§»??????????§Ö?????????????????????????? +ΪÁ˱£Ö¤´úÂëµÄÕýÈ·ÐÔ£¬ÐèÒªÐ´Ò»Ð©ËæÊ±¿ÉÒÔÔËÐеĵ¥Ôª²âÊÔ£¬²¢ÇÒ²»¶ÏµØÈ¥ÔËÐÐËüÃÇ¡£ -?????????????? - ???????????????????????????????????????????? +Èí¼þÏîÄ¿µÄ¸ù±¾Ô­Ôò - Ò×ÓÚÐ޸ġ£ÎªÁËÈÃ×Ô¼ºµÄÈí¼þÒ×ÓÚÐ޸ģ¬ÐèÒª¾­³£È¥ÐÞ¸ÄËü£¡ -???????????¨®????????????????????????????????????????????? +µ¥Ôª²âÊÔ¿ÉÒÔÈóÌÐòÔ±¸üÓÐ×ÔÐÅÈ¥Ð޸ĴúÂ룬ÒòΪËü»áÈÃÈËÈ·ÐÅÐ޸ĵØÊÇ·ñÕýÈ·¡£ -??????????????????? +×¨ÒµËØÑø°üÀ¨ÒÔÏÂÄÚÈÝ£º -1. ????? -2. ???????§»???????? -3. ???????????????????????????? -4. ????????????????????????????????????????????????????? -5. ??????????????????????????? -6. ????? / ?????????? -7. ????????????????????????? +1. ¼á³Öѧϰ +2. ÿÌìÁ·Ï°Ò»Ð©¼òµ¥µÄ±à³ÌÌâÄ¿ +3. ÓëËûÃǺÏ×÷£¬´Ó±Ë´ËÉíÉÏѧµ½¸ü¶à¶«Î÷ +4. ½»Á÷¡£Í¨¹ý½»Á÷±í´ï×Ô¼ºµÄ˼Ï룬·¢ÏÖ×Ô¼ºµÄ²»×ãÒÔ¼°Óë±ðÈË˼ÏëÉϵIJîÒì¡£ +5. Á˽âÒµÎñÁìÓò£¬ÕÒ¼¸±¾Ïà¹ØÁìÓòµÄÊé¿´¡£ +6. Óë¹ÍÖ÷ / ¿Í»§±£³ÖÒ»Ö +7. ǫѷ£¬ÒòΪËûÃÇÖªµÀ×Ô¼ºÒ²¿ÉÄÜ·¸´í¡£ -# ??? +# ˵²» -???§»?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? +¶ÔһЩ²»ºÏÀíµÄÒªÇ󣬲»ÄÜÖ»ÊÇ˵¡°ÊÔÊÔ¿´¡±£¬Õâ»á±»µ±³ÉÊǽÓÊÜÁËÕâ¸öÒªÇó¡£Èç¹û×Ô¼ºÉîÖªÕâÖÖ²»ºÏÀíµÄÒªÇó»áµ¼ÖÂÑÏÖØµÄºó¹û£¬¾Í²»ÄÜÈÎÓÉËü·¢Õ¹ÏÂÈ¥£¬¶ÔÕâÒ»ÒªÇó˵¡°²»¡±¡£ -??????????????????????????????????????????? +˵¡°²»¡±Ê±ÒªÓÃ×îÏêϸµÄϸ½ÚÀ´ËµÃ÷£¬¶ø²»ÊÇ·³ÔêµØ·´²µ¡£ -?????????????????????§¿???§»???????????????? +µ±ÒªÇóÃ÷ÏÔ²»ºÏÀíʱ£¬¿ÉÒÔЭÉÌһЩ˫·½¶¼ÄܽÓÊܵķ½°¸¡£ -"?§á???§Õ?????????" ????????????????¦Ï?????????????????"?????????"????¨´?????????????????????????????????? ipone ??????????????????????§Õ?????????????????????????????¦Ê??????????????????????????????????????????????????????????????????¨°???????§Õ?????????????????????????§»?????????????????????????????????????????????????????????????????????§Õ???????§Õ?????Bob ?????????????????????????¦Ï???????????????§»??????????????????§Ø???§»??????????????? +"ÓпÉÄÜд³öºÃ´úÂëÂð" ÕâÆª²©ÎÄ£¬½²ÊöÁËÒ»´Î¿ª·¢Ò»¼ÒÁãÊÛÉÌΪÁËÔÚ"ºÚÉ«ÐÇÆÚÎå"Äܹ»Èù˿Ϳ´µ½ÉÌÆ·ÐÅÏ¢É̵êÐÅÏ¢ÒÔ¼°·¢²¼ÓÅ»ÝÂëµÈ¹¦ÄÜµÄ ipone Ó¦Óã¬×ʼÁãÊÛÉ̵ľ­Àí³Ðŵ˵ֻҪд¸öÓ²±àÂëµÄÓ¦ÓþÍÐÐÁË£¬µ«Êǿͻ§ËùÒªµÄÈκÎÒ»ÏÄÜ£¬×ܱÈËü×ʼʱËù˵µÄÒª¸´ÔÓÐí¶à¡£Ãæ¶Ôʱ¼äµÄ½ô¼±£¬¿Í»§·½µÄ²»ÅäºÏ£¬ÒÔ¼°ÐèÇóµÄ±ä¸ü£¬Èò©ÎÄ×÷ÕßдÁËÒ»¶ÑºÜÀõĴúÂ룬¶øËû×Ô¼ºÈ·Êµ¶ÔÄÇЩÉè¼ÆÄ£Ê½µÈ¸ß¼¶¿ª·¢¼¼ÊõÊǷdz£ÈÈÖԵġ£ËùÒÔËûÈÏΪÔÚʵ¼ÊµÄ¿ª·¢ÖÐÒòΪ¿Í»§µÄÐèÇóµÈÒòËØ£¬ºÜÄÑд×÷×Ô¼ºÏëдµÄ´úÂë¡£Bob ÈÏΪ£¬ÉÏÃæÄÇÆª²©ÎĵÄ×÷Õß²ÅÊǴ˴οª·¢¹ý³ÌÅöµ½µÄÄÇЩÎÊÌâµÄ¸ºÔðÈË£¬ÒòΪËûûÓжÔÄÇЩ²»ºÏÀíµÄÒªÇó˵²»¡£ -# ??? +# ˵ÊÇ -??????????????????Ñs??????????????????????§Ø??? +×ö³ö³ÐŵµÄÊÇÈý¸ö²½Ö裺¿ÚÍ·ÉÏ´ðÓ¦£¬·ÅÔÚÐÄÀ¸¶ÖîÐж¯¡£ -??????????? +ȱ·¦³ÐŵµÄ´ÊÓ -1. ???????????????????? -2. ??????????????????????? -3. ??????????????????????? +1. ÐèÒª£ºÎÒÐèÒª°ÑÕâÊÂ×öÍꣻ +2. Ï£Íû£ºÏ£Íû½ñÌìÎÒÄÜÍê³ÉÈÎÎñ£» +3. ÈÃÎÒÃÇ£ºÈÃÎÒÃǰÑÕâ¼þÊÂ×öÍê¡£ -????????????????????????????????????????????????????????????????????????????...??...?? +ȱ·¦³ÐŵµÄÈ˲»»á°ÑÖØµã·ÅÔÚ×Ô¼ºÉíÉÏ£¬Ò²²»»áÃ÷ȷ˵Ã÷Ò»¼þÊÂÇéµÄ½ØÖ¹ÈÕÆÚ¡£ÕæÕýµÄ³ÐŵÊÇÕâÑùµÄ¡°ÎÒ»áÔÚ...֮ǰ...¡± -?????????????????????????????? +¶Ô×Ô¼ºÎÞ·¨ÍêÈ«ÕÆÎÕµÄÊ£¬²»ÒªÇáÒ׳Ðŵ¡£ -???????????????????????????????????????? +·¢ÏÖ×Ô¼ºÎÞ·¨×öµ½³Ðŵ£¬Á¢ÂíÈ¥µ÷Õû±ðÈ˶ÔÄãµÄÔ¤ÆÚ¡£ -??????????????????????????§Ö????????????????????????????????????????????????????????????????????????????????????? +¡°ÊÔÊÔ¿´¡±ËµÃ÷×Ô¼º¶Ô³ÐŵµÄÄÚÈÝÓеã¹Ë¼É£¬Òò´Ë²»ÒªÓÃÊÔÊÔ¿´À´×÷ΪһÖÖ³Ðŵ¡£Èç¹û²»ÄÜÈ·ÐÅ×Ô¼ºÄÜ´ïµ½³ÐŵµÄÄÚÈݶøËæ±ã³Ðŵ£¬ÄÇô×îºóÍùÍù»á²úÉúÑÏÖØµÄºó¹û¡£ -# ??? +# ±à³Ì -??????????????¨¹??????????????????????????? +Òª¾«Í¨Ò»Ïî¼¼Êõ£¬Òª¶Ô¸Ã¼¼Êõ¾ß±¸¡°ÐÅÐÄ¡±ºÍ¡°¸ÐÖªÄÜÁ¦¡±¡£ -??????????????§Õ?????????¡Â???????????ºŸ?????????????????????????????????????????????????????????§Ò??? +״̬²»ºÃµÄʱºò×îºÃ±ðд´úÂ롣״̬²»ºÃ·ÖΪ£ºÆ£ÀÍ£¬±ÈÈç°¾Ò¹£»½¹ÂÇ£¬ÒòΪÍâ½çµÄÊÂÇéÈÃ×Ô¼º²»Äܰ²ÐÄÏÂÀ´£¬Õâ¸öʱºòÓ¦¸Ãϵ÷ÕûºÃÔÙ½øÐбà³Ì¡£ -??????????§à???????????????????????????????????????????????????????????????????????? +½øÈëÁ÷״̬µÄ¸Ð¾õºÜºÃ£¬¾õµÃ¿ÉÒÔ×öºÜ¶àÊ£¬µ«ÊÇÁ÷״̬ÆäʵÊÇÒ»ÖÖdz²ãÚ¤Ï룬˼άÄÜÁ¦»áϽµ£¬Òò´ËÒª±ÜÃâ½øÈëÁ÷״̬¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/f0321ed1-fa93-460e-951b-4239fef819f3.jpg) -????????????????????????????????????????????????????????????????? +Á÷״̬µÄÌØµãÊǸô¾ø¹µÍ¨£¬¶ø½á¶Ô±à³ÌÄܹ»´òÆÆÕâÖÖ¸ô¾ø£¬Òò´Ë½á¶Ô±à³ÌÄܹ»·ÀÖ¹½øÈëÁ÷״̬¡£ -?????????????????????????????????????????????????§Ý???�£???????????????????????????????????????? +µ±×Ô¼ºÃ»·¨¼ÌÐø±à³Ìʱ£¬½á¶Ô±à³ÌÊǸöºÃÑ¡Ôñ£¬½á¶Ô±à³Ìʱ£¬´óÄÔºÍÉíÌå»áÓл¯Ñ§±ä»¯£¬Ò²¾ÍÊÇ˵˼ά·½Ê½»á¸Ä±ä£¬ÓÐÖúÓÚÍ»ÆÆµ±Ç°µÄ˼ά×èÈû״̬¡£ -???????????????????????????????????§¹??????????????????? +ÌýÒôÀÖʱÒôÀÖ»áÕ¼ÓÃÒ»²¿·ÖÄÔÁ¦×ÊÔ´£¬Òò´Ë»áµ¼ÖÂЧÂÊϽµ£¬µ«ÊÇÕâ²»ÊǾø¶Ô¡£ -???????§»??????????????????§³????????????????????????? +¶àÊäÈëһЩ´´ÔìÐÔµÄÄÚÈÝ£¬±ÈÈç¿Æ»ÃС˵µÈ£¬×Ô¼ºµÄ´´ÔìÁ¦Ò²»áµÃµ½ÌáÉý¡£ -?????????????????????????????????????? +µ÷ÊÔʱ¼äÒ²ºÜ±¦¹ó£¬²âÊÔÇý¶¯¿ª·¢Äܹ»½µµÍµ÷ÊÔµÄʱ¼ä¡£ -?????????????????????????????????????????????????????????????????????????????????????????????????????? +±àÂëºÍÅÜÂíÀ­ËÉÒ»Ñù£¬ÎÞ·¨È«³ÌÒÔ×î¿ìµÄËٶȳå´Ì£¬Ö»ÄÜͨ¹ý±£³ÖÌåÁ¦ºÍά³Ö½Ú×àÀ´È¡µÃʤÀû¡£Òò´ËÒª±£³ÖºÃ×Ô¼ºµÄ½Ú×࣬ÔÚÆ£À͵ÄʱºòÊʵ±ÐÝÏ¢¡£ -????????????????????????????????????????????????? +¶¨ÆÚ×ö½ø¶ÈºâÁ¿£¬ÓÃÀÖ¹ÛÔ¤¹À¡¢±ê×¼Ô¤¹ÀºÍ±¯¹ÛÔ¤¹ÀÕâÈý¸öʱ¼äµã¡£ -???????????????????????????????????????????????????????????????????????? +Èç¹û×Ô¼ºÔ¤¹ÀµÄ½ø¶È¸Ï²»ÉϽØÖ¹Ê±¼ä£¬²»Òª´ðÓ¦ÔÚ½ØÖ¹Ê±¼äÈ¥Íê³É£¬ÒòΪÄãÖªµÀ¸ù¾Ý×Ô¼ºµÄÔ¤¹ÀÕâÊDz»¿ÉÄܵġ£ -?????????????????????????????????????‰^ +ÈÎÎñÍê³ÉµÄ±ê׼ͨ³£ÓÃÒ»¸ö×Ô¶¯»¯µÄÑéÊÕ²âÊÔÀ´¶¨Òå¡£ -????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? +°ïÖúËûÈËÒ²»á¸ø×Ô¼º´øÀ´ºÃ´¦£¬ÔÚ°ïÖú±ðÈ˵Äʱºò²»ÒªÈÃ×Ô¼º¿´ÆðÀ´ºÜ²Ö´Ù£¬¾ÍÏñÊÇÔÚËæ±ãÓ¦¸¶¡£Ò»°ã°ïÖú±ðÈ˲»ÐèÒªÌØ±ð¶àµÄʱ¼ä¡£Ò²ÒªÑ§»áÇëÇó±ðÈ˵İïÖú£¬ÒòΪ×Ô¼º²»¿ÉÄÜÊÇÍòÄܵģ¬Í¨¹ý±ðÈ˵İïÖúÄܸüºÃµÄ½â¾öÎÊÌâ¡£ -# ???????????? +# ²âÊÔÇý¶¯¿ª·¢ -TDD ??????????????????????????????????¦Ã??????????????????????????????????????????????????????????????ï…???????????????¾ˆ?? bug???? bug ??¾ˆ?????????????? +TDD µÄÔËÐÐÖÜÆÚºÜ¶Ì£¬¿ÉÄÜÒ»Á½·ÖÖӾͿÉÒÔÔËÐÐÒ»´Î³ÌÐò£¬¶ÌÖÜÆÚ¿ÉÒÔ¿ìËٵõ½·´À¡£¬·´À¡ÔÚ¿ª·¢ÖÐÌØ±ðÖØÒª£¬Ò»·½ÃæÊÇÌá¸ß³ÌÐòÔ±±àÂëµÄ¼¤Ç飬ÁíÒ»·½ÃæÊÇÄܹ»¼°Ôç·¢ÏÖ bug£¬¶ø bug Ô½Ôç·¢ÏÖÐ޸ĵشú¼ÛÒ²Ô½µÍ¡£ -TDD ?????? +TDD Èý·¨Ôò£º -1. ??§Õ????? -2. ???????????????????????§Õ??????? -3. ?????????????????????????????????????§Õ?? +1. ÏÈд²âÊÔ£» +2. ÔÚÒ»¸öµ¥Ôª²âÊÔʧ°ÜµÄʱºò£¬²»ÒªÔÙд²âÊÔ´úÂ룻 +3. ²úÆ·´úÂëÄÜÇ¡ºÃͨ¹ýµ±Ç°Ê§°ÜµÄµ¥Ôª²âÊÔ¼´¿É£¬²»Òª¶àд¡£ -TDD ??? +TDD Óŵã -1. ?????????????????????? -2. ??????????????????????????????????????????????????????????? -3. ???????????????????????????????????????????????????????§Ù???? +1. È·¶¨ÐÔ£ºÈ·¶¨µ±Ç°ÏµÍ³ÊÇ·ñÕýÈ·£» +2. ÐÅÐÄ£º³ÌÐòÔ±¸üÓÐÐÅϢȥÐ޸ĻìÂҵĴúÂ룬ÒòΪͨ¹ýµ¥Ôª²âÊÔ¿ÉÒÔÖªµÀÊÇ·ñÐ޸ĵØÕýÈ·£» +3. Îĵµ£ºµ¥Ôª²âÊÔÊǵײãÉè¼ÆÏ¸½ÚµÄÎĵµ£¬Í¨¹ýÔĶÁµ¥Ôª²âÊÔÄܹ»ÖªµÀ³ÌÐòµÄÔËÐз½Ê½£» -# ??? +# Á·Ï° -????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? +¿¨ËþÔÚÎäÊõÀïÃæÊÇÒ»Ì×Éè¼ÆºÃµÄÕÐʽ£¬¸ÃÕÐʽģÄâÕæÊµ²«¶·³¡¾°£¬Ï°ÎäÕß²»¶ÏѵÁ·À´ÈÃÉíÌåÊìϤ¸ÃÕÐʽ£¬´Ó¶ø×öµ½´¿Êì¡£±à³Ì¿¨ËþÊÇÒ»Ì×±à³Ì¹ý³ÌÇû÷Êó±êºÍ¼üÅ̵͝×÷£¬Á·Ï°Õß²»ÊÇΪÁ˽â¾öÕæÕýµÄÎÊÌ⣬ÒòΪÒѾ­ÖªµÀÁ˽â¾ö·½°¸£¬¶øÊÇÁ·Ï°½â¾öÕâ¸öÎÊÌâËùÐèÒªµÄ¶¯×÷ºÍ¾ö²ß¡£ -???????????????????????????????????????§Õ???????????????§Õ??????????????????íà????????????????§Õ??????????????????????????—¨????????? +ÍßÈø¼´Ê¹Á½È˶ÔÁ·µÄ¿¨Ëþ¡£ÔÚ±à³ÌÁìÓò£¬¿ÉÒÔÊÇÒ»¸öÈËдµ¥Ôª²âÊÔ£¬ÁíÒ»¸öÈËд³ÌÐòͨ¹ýµ¥Ôª²âÊÔ¡£±ÈÈ磬һ¸öÈËʵÏÖÅÅÐòËã·¨£¬Ð´²âÊÔµÄÈË¿ÉÒÔºÜÈÝÒ×µØÏÞÖÆËٶȺÍÄڴ棬¸øÍ¬°éʩѹ¡£ diff --git a/notes/算法.md b/notes/算法.md index a69d2ddb..7da2d004 100644 --- a/notes/算法.md +++ b/notes/算法.md @@ -1,100 +1,98 @@ -* [????](#????) - * [?](#?) - * [1. ???????](#1-???????) - * [2. ???????](#2-???????) - * [????](#????) - * [??????](#??????) - * [1. ???????](#1-???????) - * [2. ??????](#2-??????) +* [»ù´¡](#»ù´¡) + * [Õ»](#Õ») + * [1. Êý×éʵÏÖ](#1-Êý×éʵÏÖ) + * [2. Á´±íʵÏÖ](#2-Á´±íʵÏÖ) + * [¶ÓÁÐ](#¶ÓÁÐ) + * [Ëã·¨·ÖÎö](#Ëã·¨·ÖÎö) + * [1. º¯Êýת»»](#1-º¯Êýת»») + * [2. ÊýѧģÐÍ](#2-ÊýѧģÐÍ) * [3. ThreeSum](#3-threesum) - * [4. ???????](#4-???????) - * [5. ???????](#5-???????) + * [4. ±¶ÂÊʵÑé](#4-±¶ÂÊʵÑé) + * [5. ×¢ÒâÊÂÏî](#5-×¢ÒâÊÂÏî) * [union-find](#union-find) - * [1. quick-find ??](#1-quick-find-??) - * [2. quick-union ??](#2-quick-union-??) - * [3. ??? quick-union ??](#3-???-quick-union-??) - * [4. ¡¤????????? quick-union ??](#4-¡¤?????????-quick-union-??) - * [5. ???? union-find ??????](#5-????-union-find-??????) -* [????? ????](#?????-????) - * [??????????](#??????????) - * [1. ???](#1-???) - * [2. ???????](#2-???????) - * [3. ????????](#3-????????) - * [4. ??????????????????](#4-??????????????????) - * [5. ???????](#5-???????) - * [?öã????](#?öã????) - * [1. ?öã????](#1-?öã????) - * [2. ???????öã????](#2-???????öã????) - * [3. ???????öã????](#3-???????öã????) - * [????????](#????????) - * [1. ??????](#1-??????) - * [2. ?§Ù?](#2-?§Ù?) - * [3. ???????](#3-???????) - * [4. ?????](#4-?????) - * [4.1 ?§Ý???????????](#41-?§Ý???????????) - * [4.2 ?????](#42-?????) - * [4.3 ?????§Ù?](#43-?????§Ù?) - * [???????](#???????) - * [1. ??](#1-??) - * [2. ????????](#2-????????) - * [3. ???????](#3-???????) - * [4. ?????????](#4-?????????) - * [5. ??????](#5-??????) - * [6. ????](#6-????) - * [???](#???) - * [1. ??????????](#1-??????????) - * [2. Java ???????????](#2-java-???????????) - * [3. ?????§Ù??????????](#3-?????§Ù??????????) -* [?????? ????](#??????-????) - * [?????](#?????) - * [1. API](#1-api) - * [2. ????????](#2-????????) - * [3. ???????????](#3-???????????) - * [4. ???????????????](#4-???????????????) - * [5. ????????????](#5-????????????) - * [?????????](#?????????) + * [1. quick-find Ëã·¨](#1-quick-find-Ëã·¨) + * [2. quick-union Ëã·¨](#2-quick-union-Ëã·¨) + * [3. ¼ÓȨ quick-union Ëã·¨](#3-¼ÓȨ-quick-union-Ëã·¨) + * [4. ·¾¶Ñ¹ËõµÄ¼ÓȨ quick-union Ëã·¨](#4-·¾¶Ñ¹ËõµÄ¼ÓȨ-quick-union-Ëã·¨) + * [5. ¸÷ÖÖ union-find Ëã·¨µÄ±È½Ï](#5-¸÷ÖÖ-union-find-Ëã·¨µÄ±È½Ï) +* [µÚ¶þÕ ÅÅÐò](#µÚ¶þÕÂ-ÅÅÐò) + * [³õ¼¶ÅÅÐòËã·¨](#³õ¼¶ÅÅÐòËã·¨) + * [1. Ô¼¶¨](#1-Ô¼¶¨) + * [2. Ñ¡ÔñÅÅÐò](#2-Ñ¡ÔñÅÅÐò) + * [3. ²åÈëÅÅÐò](#3-²åÈëÅÅÐò) + * [4. Ñ¡ÔñÅÅÐòºÍ²åÈëÅÅÐòµÄ±È½Ï](#4-Ñ¡ÔñÅÅÐòºÍ²åÈëÅÅÐòµÄ±È½Ï) + * [5. Ï£¶ûÅÅÐò](#5-Ï£¶ûÅÅÐò) + * [¹é²¢ÅÅÐò](#¹é²¢ÅÅÐò) + * [1. ¹é²¢·½·¨](#1-¹é²¢·½·¨) + * [2. ×Ô¶¥ÏòϹ鲢ÅÅÐò](#2-×Ô¶¥ÏòϹ鲢ÅÅÐò) + * [3. ×Ôµ×ÏòÉϹ鲢ÅÅÐò](#3-×Ôµ×ÏòÉϹ鲢ÅÅÐò) + * [¿ìËÙÅÅÐò](#¿ìËÙÅÅÐò) + * [1. »ù±¾Ëã·¨](#1-»ù±¾Ëã·¨) + * [2. ÇзÖ](#2-ÇзÖ) + * [3. ÐÔÄÜ·ÖÎö](#3-ÐÔÄÜ·ÖÎö) + * [4. Ëã·¨¸Ä½ø](#4-Ëã·¨¸Ä½ø) + * [4.1 Çл»µ½²åÈëÅÅÐò](#41-Çл»µ½²åÈëÅÅÐò) + * [4.2 ÈýÈ¡Ñù](#42-ÈýÈ¡Ñù) + * [4.3 ÈýÏòÇзÖ](#43-ÈýÏòÇзÖ) + * [ÓÅÏȶÓÁÐ](#ÓÅÏȶÓÁÐ) + * [1. ¶Ñ](#1-¶Ñ) + * [2. Éϸ¡ºÍϳÁ](#2-Éϸ¡ºÍϳÁ) + * [3. ²åÈëÔªËØ](#3-²åÈëÔªËØ) + * [4. ɾ³ý×î´óÔªËØ](#4-ɾ³ý×î´óÔªËØ) + * [5. ¶ÑÅÅÐò](#5-¶ÑÅÅÐò) + * [6. ·ÖÎö](#6-·ÖÎö) + * [Ó¦ÓÃ](#Ó¦ÓÃ) + * [1. ÅÅÐòËã·¨µÄ±È½Ï](#1-ÅÅÐòËã·¨µÄ±È½Ï) + * [2. Java µÄÅÅÐòË㷨ʵÏÖ](#2-java-µÄÅÅÐòË㷨ʵÏÖ) + * [3. »ùÓÚÇзֵĿìËÙÑ¡ÔñËã·¨](#3-»ùÓÚÇзֵĿìËÙÑ¡ÔñËã·¨) +* [µÚÈýÕ ²éÕÒ](#µÚÈýÕÂ-²éÕÒ) + * [·ûºÅ±í](#·ûºÅ±í) + * [1. ÎÞÐò·ûºÅ±í](#1-ÎÞÐò·ûºÅ±í) + * [2. ÓÐÐò·ûºÅ±í](#2-ÓÐÐò·ûºÅ±í) + * [3. ¶þ·Ö²éÕÒʵÏÖÓÐÐò·ûºÅ±í](#3-¶þ·Ö²éÕÒʵÏÖÓÐÐò·ûºÅ±í) + * [¶þ²æ²éÕÒÊ÷](#¶þ²æ²éÕÒÊ÷) * [1. get()](#1-get) * [2. put()](#2-put) - * [3. ????](#3-????) + * [3. ·ÖÎö](#3-·ÖÎö) * [4. floor()](#4-floor) * [5. rank()](#5-rank) * [6. min()](#6-min) * [7. deleteMin()](#7-deletemin) * [8. delete()](#8-delete) * [9. keys()](#9-keys) - * [10. ???????](#10-???????) - * [????????](#????????) - * [2-3 ??????](#2-3-??????) - * [1. ???????](#1-???????) - * [2. ????](#2-????) - * [???????????](#???????????) - * [1. ?????](#1-?????) - * [2. ?????](#2-?????) - * [3. ??????](#3-??????) - * [4. ????](#4-????) - * [5. ?????§³??](#5-?????§ã??) - * [6. ????](#6-????) - * [??§Ò?](#??§Ò?) - * [??§Ü???](#??§Ü???) - * [??????????????§Ò?](#??????????????§Ò?) - * [???????????????§Ò?](#???????????????§Ò?) - * [????](#????) - * [????](#????) - * [???](#???) - * [?????????§³](#?????????§ã) - * [???](#???) - * [??????????????](#??????????????) - * [Java ?????????](#java-?????????) - * [????????](#????????) - * [??????????](#??????????) + * [10. ÐÔÄÜ·ÖÎö](#10-ÐÔÄÜ·ÖÎö) + * [ƽºâ²éÕÒÊ÷](#ƽºâ²éÕÒÊ÷) + * [2-3 ²éÕÒÊ÷](#2-3-²éÕÒÊ÷) + * [1. ²åÈë²Ù×÷](#1-²åÈë²Ù×÷) + * [2. ÐÔÖÊ](#2-ÐÔÖÊ) + * [ºìºÚ¶þ²æ²éÕÒÊ÷](#ºìºÚ¶þ²æ²éÕÒÊ÷) + * [1. ×óÐýת](#1-×óÐýת) + * [2. ÓÒÐýת](#2-ÓÒÐýת) + * [3. ÑÕɫת»»](#3-ÑÕɫת»») + * [4. ²åÈë](#4-²åÈë) + * [5. ɾ³ý×îС¼ü](#5-ɾ³ý×îС¼ü) + * [6. ·ÖÎö](#6-·ÖÎö) + * [É¢Áбí](#É¢Áбí) + * [É¢Áк¯Êý](#É¢Áк¯Êý) + * [»ùÓÚÀ­Á´·¨µÄÉ¢Áбí](#»ùÓÚÀ­Á´·¨µÄÉ¢Áбí) + * [»ùÓÚÏßÐÔ̽²â·¨µÄÉ¢Áбí](#»ùÓÚÏßÐÔ̽²â·¨µÄÉ¢Áбí) + * [²éÕÒ](#²éÕÒ) + * [²åÈë](#²åÈë) + * [ɾ³ý](#ɾ³ý) + * [µ÷ÕûÊý×é´óС](#µ÷ÕûÊý×é´óС) + * [Ó¦ÓÃ](#Ó¦ÓÃ) + * [¸÷ÖÖ·ûºÅ±íʵÏֵıȽÏ](#¸÷ÖÖ·ûºÅ±íʵÏֵıȽÏ) + * [Java µÄ·ûºÅ±íʵÏÖ](#java-µÄ·ûºÅ±íʵÏÖ) + * [¼¯ºÏÀàÐÍ](#¼¯ºÏÀàÐÍ) + * [Ï¡ÊèÏòÁ¿³Ë·¨](#Ï¡ÊèÏòÁ¿³Ë·¨) -# ???? +# »ù´¡ -## ? +## Õ» -### 1. ??????? +### 1. Êý×éʵÏÖ ```java @@ -117,7 +115,7 @@ public class ResizeArrayStack implements Iterable { return item; } - // ?????????§³???????????????? + // µ÷ÕûÊý×é´óС£¬Ê¹µÃÕ»¾ßÓÐÉìËõÐÔ private void resize(int size) { Item[] tmp = (Item[]) new Object[size]; for (int i = 0; i < N; i++) { @@ -136,7 +134,7 @@ public class ResizeArrayStack implements Iterable { @Override public Iterator iterator() { - // ????????????????????? + // ÐèÒª·µ»ØÄæÐò±éÀúµÄµü´úÆ÷ return new ReverseArrayIterator(); } @@ -156,15 +154,15 @@ public class ResizeArrayStack implements Iterable { } ``` -????????????????Java ?????????????????ï…????????????????? +ÉÏÃæÊµÏÖʹÓÃÁË·ºÐÍ£¬Java ²»ÄÜÖ±½Ó´´½¨·ºÐÍÊý×飬ֻÄÜʹÓÃתÐÍÀ´´´½¨¡£ ```java Item[] arr = (Item[]) new Object[N]; ``` -### 2. ??????? +### 2. Á´±íʵÏÖ -?????????????¾Þ???????????¾Þ????????????????????????????? next ?????????????????????????????????????????????????????????? +ÐèҪʹÓÃÁ´±íµÄÍ·²å·¨À´ÊµÏÖ£¬ÒòΪͷ²å·¨ÖÐ×îºóѹÈëÕ»µÄÔªËØÔÚÁ´±íµÄ¿ªÍ·£¬ËüµÄ next Ö¸ÕëÖ¸Ïòǰһ¸öѹÈëÕ»µÄÔªËØ£¬ÔÚµ¯³öÔªËØÊ¹¾Í¿ÉÒÔÈÃǰһ¸öѹÈëÕ»µÄÔªËØ³ÆÎªÕ»¶¥ÔªËØ¡£ ```java public class Stack { @@ -202,11 +200,11 @@ public class Stack { } ``` -## ???? +## ¶ÓÁÐ -????????§Ö??????????????? first ?? last ?????????????????¦Â?? +ÏÂÃæÊǶÓÁеÄÁ´±íʵÏÖ£¬ÐèҪά»¤ first ºÍ last ½ÚµãÖ¸Õ룬·Ö±ðÖ¸Ïò¶ÓÊ׺ͶÓβ¡£ -?????????????????????????????????????????????¦Â?????????????§Ó???????????????????????????????????????????????????????????????? next ?????????????????????????? first ???????????? +ÕâÀïÐèÒª¿¼ÂÇÈÃÄĸöÖ¸ÕëÖ¸ÕëÁ´±íÍ·²¿½Úµã£¬ÄĸöÖ¸ÕëÖ¸ÏòÁ´±íβ²¿½Úµã¡£ÒòΪ³ö¶ÓÁвÙ×÷ÐèÒªÈöÓÊ×ÔªËØµÄÏÂÒ»¸öÔªËØ³ÉΪ¶ÓÊ×£¬¾ÍÐèÒªÈÝÒ×»ñÈ¡ÏÂÒ»¸öÔªËØ£¬¶øÁ´±íµÄÍ·²¿½ÚµãµÄ next Ö¸ÕëÖ¸ÏòÏÂÒ»¸öÔªËØ£¬Òò´ËÈöÓÊ×Ö¸Õë first Ö¸ÕëÁ´±íµÄ¿ªÍ·¡£ ```java public class Queue { @@ -226,7 +224,7 @@ public class Queue { return N; } - // ????? + // Èë¶ÓÁÐ public void enqueue(Item item){ Node newNode = new Node(); newNode.item = item; @@ -241,7 +239,7 @@ public class Queue { N++; } - // ?????? + // ³ö¶ÓÁÐ public Item dequeue(){ Node node = first; first = first.next; @@ -251,41 +249,41 @@ public class Queue { } ``` -## ?????? +## Ëã·¨·ÖÎö -### 1. ??????? +### 1. º¯Êýת»» -??????????????????????????????????????????????? +Ö¸Êýº¯Êý¿ÉÒÔת»»ÎªÏßÐÔº¯Êý£¬´Ó¶øÔÚº¯ÊýͼÏñÉÏÏÔʾµÄ¸üÖ±¹Û¡£ -T(N)=aN3 ???? lg(T(N))=3lgN+lga +T(N)=aN3 ת»»Îª lg(T(N))=3lgN+lga ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/5510045a-8f32-487f-a756-463e51a6dab0.png) -### 2. ?????? +### 2. ÊýѧģÐÍ -**????** +**½üËÆ** -??? \~f(N) ????????????? N ????????? f(N) ?????????? 1 ????? , ???? N3/6-N2/2+N/3 \~ N3/6?? +ʹÓà \~f(N) À´±íʾËùÓÐËæ×Å N µÄÔö´ó³ýÒÔ f(N) µÄ½á¹ûÇ÷½üÓÚ 1 µÄº¯Êý , ÀýÈç N3/6-N2/2+N/3 \~ N3/6¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/ca3a793e-06e5-4ff3-b28e-a9c20540d164.png) -**??????????** +**Ôö³¤ÊýÁ¿¼¶** -???????????????????????????????????????????????? N3 ????????? Java ??????????????????????????? +Ôö³¤ÊýÁ¿¼¶½«Ëã·¨ÓëËüµÄʵÏÖ¸ôÀ뿪À´£¬Ò»¸öËã·¨µÄÔö³¤ÊýÁ¿¼¶Îª N3 ÓëËüÊÇ·ñÓà Java ʵÏÖ£¬ÊÇ·ñÔËÐÐÓëÌØ¶¨¼ÆËã»úÉÏÎ޹ء£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/1ea4dc9a-c4dd-46b5-bb11-49f98d57ded1.png) -**?????** +**ÄÚÑ­»·** -???????????????????????§Ö??????????§»????????????????? +Ö´ÐÐ×îÆµ·±µÄÖ¸Áî¾ö¶¨Á˳ÌÐòÖ´ÐеÄ×Üʱ¼ä£¬°ÑÕâЩָÁî³ÆÎª³ÌÐòµÄÄÚÑ­»·¡£ -**??????** +**³É±¾Ä£ÐÍ** -??¨®??????????????????????????????????????????? +ʹÓóɱ¾Ä£ÐÍÀ´ÆÀ¹ÀËã·¨£¬ÀýÈçÊý×éµÄ·ÃÎÊ´ÎÊý¾ÍÊÇÒ»Öֳɱ¾Ä£ÐÍ¡£ ### 3. ThreeSum -ThreeSum ???????????????????????????? 0 ???????? +ThreeSum ³ÌÐòÓÃÓÚͳ¼ÆÒ»¸öÊý×éÖÐÈýÔª×éµÄºÍΪ 0 µÄÊýÁ¿¡£ ```java public class ThreeSum { @@ -306,13 +304,13 @@ public class ThreeSum { } ``` -?¨®?????????? if (a[i] + a[j] + a[k] == 0) ????????§Ö????? N3/6-N2/2+N/3??????????????§Õ???? \~N3/6????????????? N3?? +¸Ã³ÌÐòµÄÄÚÑ­»·Îª if (a[i] + a[j] + a[k] == 0) Óï¾ä£¬×ܹ²Ö´ÐеĴÎÊýΪ N3/6-N2/2+N/3£¬Òò´ËËüµÄ½üËÆÖ´ÐдÎÊýΪ \~N3/6£¬Ôö³¤ÊýÁ¿¼¶Îª N3¡£ -**???** +**¸Ä½ø** -??????????????????????????????????????????????????¨²????????????????????????????????? 0?? +ͨ¹ý½«Êý×éÏÈÅÅÐò£¬¶ÔÁ½¸öÔªËØÇóºÍ£¬²¢Óöþ·Ö²éÕÒ·½·¨²éÕÒÊÇ·ñ´æÔڸú͵ÄÏà·´Êý£¬Èç¹û´æÔÚ£¬¾Í˵Ã÷´æÔÚÈýÔª×éµÄºÍΪ 0¡£ -?¡Â???????? ThreeSum ????????????????? N2logN?? +¸Ã·½·¨¿ÉÒÔ½« ThreeSum Ëã·¨Ôö³¤ÊýÁ¿¼¶½µµÍΪ N2logN¡£ ```java public class ThreeSumFast { @@ -323,7 +321,7 @@ public class ThreeSumFast { for (int i = 0; i < N; i++) { for (int j = i + 1; j < N; j++) { for (int k = j + 1; k < N; k++) { - // rank() ??????????????????§Ö??¡À???????????????????? -1??????????????¡À??????? j???????????????????? + // rank() ·½·¨·µ»ØÔªËØÔÚÊý×éÖеÄϱ꣬Èç¹ûÔªËØ²»´æÔÚ£¬ÕâÀï»á·µ»Ø -1¡£Ó¦¸Ã×¢ÒâÕâÀïµÄÏÂ±ê±ØÐë´óÓÚ j£¬ÕâÑù¾Í²»»áÖØ¸´Í³¼ÆÁË¡£ if (BinarySearch.rank(-a[i] - a[j], a) > j) { cnt++; } @@ -335,41 +333,41 @@ public class ThreeSumFast { } ``` -### 4. ??????? +### 4. ±¶ÂÊʵÑé -??? T(N) \~ aNblgN????? T(2N)/T(N) \~ 2b?????????????????? ThreeSum ???????????? \~N3/6?????????§Ò???????????????? +Èç¹û T(N) \~ aNblgN£¬ÄÇô T(2N)/T(N) \~ 2b£¬ÀýÈç¶ÔÓÚ±©Á¦·½·¨µÄ ThreeSum Ëã·¨£¬½üËÆÊ±¼äΪ \~N3/6£¬¶ÔËü½øÐб¶ÂÊʵÑéµÃµ½ÈçϽá¹û£º ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/6f5ed46f-86d7-4852-a34f-c1cf1b6343a0.png) -??? T(2N)/T(N)\~23??????? b ? 3?? +¿É¼û T(2N)/T(N)\~23£¬Ò²¾ÍÊÇ b Ϊ 3¡£ -### 5. ??????? +### 5. ×¢ÒâÊÂÏî -**????** +**´ó³£Êý** -??????????????????????????????????????????????? +ÔÚÇó½üËÆÊ±£¬Èç¹ûµÍ¼¶ÏîµÄ³£ÊýϵÊýºÜ´ó£¬ÄÇô½üËÆµÄ½á¹û¾ÍÊÇ´íÎóµÄ¡£ -**????** +**»º´æ** -??????????????�y?????????—¨????????????????????????????????? +¼ÆËã»úϵͳ»áʹÓûº´æ¼¼ÊõÀ´×éÖ¯Äڴ棬·ÃÎÊÊý×éÏàÁÚµÄÔªËØ»á±È·ÃÎʲ»ÏàÁÚµÄÔªËØ¿ìºÜ¶à¡£ -**?????????????????** +**¶Ô×Çé¿öϵÄÐÔÄܵı£Ö¤** -??????????????????????????????§Ö????????????????????????????? +Ôں˷´Ó¦¶Ñ¡¢ÐÄÔàÆð²«Æ÷»òÕßɲ³µ¿ØÖÆÆ÷ÖеÄÈí¼þ£¬×Çé¿öϵÄÐÔÄÜÊÇÊ®·ÖÖØÒªµÄ¡£ -**???????** +**Ëæ»ú»¯Ëã·¨** -????????????????????????????? +ͨ¹ý´òÂÒÊäÈ룬ȥ³ýËã·¨¶ÔÊäÈëµÄÒÀÀµ¡£ -**???????** +**¾ù̯·ÖÎö** -?????§Ó??????????????????????????????????????????????? N ???????? push() ???????????????????? N+4+8+16+...+2N=5N-4??N ????????§Õ??????????????????????§³????§Ú?????????????????????????????¦Â?????????????????????????? +½«ËùÓвÙ×÷µÄ×ܳɱ¾ËùÒÔ²Ù×÷×ÜÊýÀ´½«³É±¾¾ù̯¡£ÀýÈç¶ÔÒ»¸ö¿ÕÕ»½øÐÐ N ´ÎÁ¬ÐøµÄ push() µ÷ÓÃÐèÒª·ÃÎÊÊý×éµÄÔªËØÎª N+4+8+16+...+2N=5N-4£¨N ÊÇÏòÊý×éдÈëÔªËØ£¬ÆäÓàµÄ¶¼Êǵ÷ÕûÊý×é´óСʱ½øÐи´ÖÆÐèÒªµÄ·ÃÎÊÊý×é²Ù×÷£©£¬¾ù̯ºóÿ´Î²Ù×÷·ÃÎÊÊý×éµÄƽ¾ù´ÎÊýΪ³£Êý¡£ ## union-find -**????** +**¸ÅÀÀ** -?????????????????????????????????????§Ø??????????????? +ÓÃÓÚ½â¾ö¶¯Ì¬Á¬Í¨ÐÔÎÊÌ⣬Äܶ¯Ì¬Á¬½ÓÁ½¸öµã£¬²¢ÇÒÅжÏÁ½¸öµãÊÇ·ñÁ¬½Ó¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/5d387d02-6f96-44d6-b5d0-4538349f868e.png) @@ -377,11 +375,11 @@ public class ThreeSumFast { ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/a9b91b7d-65d7-4aa3-8ef6-21876b05ad16.png) -**?????????** +**»ù±¾Êý¾Ý½á¹¹** ```java public class UF { - // ??? id ?????????????????? + // ʹÓà id Êý×éÀ´±£´æµãµÄÁ¬Í¨ÐÅÏ¢ private int[] id; public UF(int N) { @@ -397,11 +395,11 @@ public class UF { } ``` -### 1. quick-find ?? +### 1. quick-find Ëã·¨ -???????????????????§Õ???? id ????? +±£Ö¤ÔÚͬһÁ¬Í¨·ÖÁ¿µÄËùÓд¥µãµÄ id ÖµÏàµÈ¡£ -????????????????????????? id ????????§Ø????????????????????? union ??????????????????????????????????§Ö????§ß?? id ???????????????? id ??? +ÕâÖÖ·½·¨¿ÉÒÔ¿ìËÙÈ¡µÃÒ»¸ö´¥µãµÄ id Öµ£¬²¢ÇÒÅжÏÁ½¸ö´¥µãÊÇ·ñÁ¬Í¨£¬µ«ÊÇ union µÄ²Ù×÷´ú¼ÛÈ´ºÜ¸ß£¬ÐèÒª½«ÆäÖÐÒ»¸öÁ¬Í¨·ÖÁ¿ÖеÄËùÓнڵã id Öµ¶¼ÐÞ¸ÄΪÁíÒ»¸ö½ÚµãµÄ id Öµ¡£ ```java public int find(int p) { @@ -418,9 +416,9 @@ public class UF { } ``` -### 2. quick-union ?? +### 2. quick-union Ëã·¨ -?? union ????????? id ????????????? id ?????????? id ???›¥???????????????????????????????????¦Í???????????????????????§Ó????????????????????????????????????????????????????? id ??????????????? id??? +ÔÚ union ʱֻ½«´¥µãµÄ id ÖµÖ¸ÏòÁíÒ»¸ö´¥µã id Öµ£¬²»Ö±½ÓÓà id À´´æ´¢ËùÊôµÄÁ¬Í¨·ÖÁ¿¡£ÕâÑù¾Í¹¹³ÉÒ»¸öµ¹ÖõÄÊ÷Ðνṹ£¬¸ù½ÚµãÐèÒªÖ¸Ïò×Ô¼º¡£ÔÚ½øÐвéÕÒÒ»¸ö½ÚµãËùÊôµÄÁ¬Í¨·ÖÁ¿Ê±£¬ÒªÒ»Ö±ÏòÉϲéÕÒÖ±µ½¸ù½Úµã£¬²¢Ê¹Óøù½ÚµãµÄ id Öµ×÷Ϊ±¾Á¬Í¨·ÖÁ¿µÄ idÖµ¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/9192dc0a-a7cd-4030-8df6-e388600644cf.jpg) @@ -438,22 +436,22 @@ public class UF { } ``` -????????????????? union ?????????? find ?????????????????????????????????????????? +ÕâÖÖ·½·¨¿ÉÒÔ¿ìËÙ½øÐÐ union ²Ù×÷£¬µ«ÊÇ find ²Ù×÷ºÍÊ÷¸ß³ÉÕý±È£¬×µÄÇé¿öÏÂÊ÷µÄ¸ß¶ÈΪ´¥µãµÄÊýÄ¿¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/d206d090-d911-4263-a1fe-d6f63f5d1776.png) -### 3. ??? quick-union ?? +### 3. ¼ÓȨ quick-union Ëã·¨ -????? quick-union ??????????????????? quick-union ?? union ??????????§³????????????????µµ +ΪÁ˽â¾ö quick-union µÄÊ÷ͨ³£»áºÜ¸ßµÄÎÊÌ⣬¼ÓȨ quick-union ÔÚ union ²Ù×÷ʱ»áÈýÏСµÄÊ÷Á¬½Ó½Ï´óµÄÊ÷ÉÏÃæ¡£ -?????§à????????? quick-union ??????????????????? lgN?? +ÀíÂÛÑо¿Ö¤Ã÷£¬¼ÓȨ quick-union Ëã·¨¹¹ÔìµÄÊ÷Éî¶È×î¶à²»³¬¹ý lgN¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/8d6af5ac-74eb-4e07-99aa-654b9f21f1d3.jpg) ```java public class WeightedQuickUnionUF { private int[] id; - // ?????????????? + // ±£´æ½ÚµãµÄÊýÁ¿ÐÅÏ¢ private int[] sz; public WeightedQuickUnionUF(int N) { @@ -489,25 +487,25 @@ public class WeightedQuickUnionUF { } ``` -### 4. ¡¤????????? quick-union ?? +### 4. ·¾¶Ñ¹ËõµÄ¼ÓȨ quick-union Ëã·¨ -?????????????????????????????????? find ??????????????¨À? +ÔÚ¼ì²é½ÚµãµÄͬʱ½«ËüÃÇÖ±½ÓÁ´½Óµ½¸ù½Úµã£¬Ö»ÐèÒªÔÚ find ÖÐÌí¼ÓÒ»¸öÑ­»·¼´¿É¡£ -### 5. ???? union-find ?????? +### 5. ¸÷ÖÖ union-find Ëã·¨µÄ±È½Ï ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/e5baeb38-0ec9-4ad7-8374-1cdb0dba74a6.jpg) -# ????? ???? +# µÚ¶þÕ ÅÅÐò -## ?????????? +## ³õ¼¶ÅÅÐòËã·¨ -### 1. ??? +### 1. Ô¼¶¨ -???????????????? Java ?? Comparable ?????????? compareTo() ?????? +´ýÅÅÐòµÄÔªËØÐèҪʵÏÖ Java µÄ Comparable ½Ó¿Ú£¬¸Ã½Ó¿ÚÓÐ compareTo() ·½·¨¡£ -?§à????????????????????????????????????? +Ñо¿ÅÅÐòËã·¨µÄ³É±¾Ä£ÐÍʱ£¬¼ÆËãµÄÊDZȽϺͽ»»»µÄ´ÎÊý¡£ -?????????? less() ?? exch() ?????§Ò?????????????????????????????????¨¢? +ʹÓø¨Öúº¯Êý less() ºÍ exch() À´½øÐбȽϺͽ»»»µÄ²Ù×÷£¬Ê¹µÃ´úÂëµÄ¿É¶ÁÐԺͿÉÒÆÖ²ÐÔ¸üºÃ¡£ ```java private static boolean less(Comparable v, Comparable w){ @@ -521,9 +519,9 @@ private void exch(Comparable[] a, int i, int j){ } ``` -### 2. ??????? +### 2. Ñ¡ÔñÅÅÐò -????????§Ö???§³??????????????????????????¦Ë?¨¢?????????????????????§³???????????????????????????¦Ë?¨¢???????????????????????????????????? +ÕÒµ½Êý×éÖеÄ×îÐ¡ÔªËØ£¬È»ºó½«ËüÓëÊý×éµÄµÚÒ»¸öÔªËØ½»»»Î»Öá£È»ºóÔÙ´ÓʣϵÄÔªËØÖÐÕÒµ½×îСµÄÔªËØ£¬½«ËüÓëÊý×éµÄµÚ¶þ¸öÔªËØ½»»»Î»Öᣲ»¶Ï½øÐÐÕâÑùµÄ²Ù×÷£¬Ö±µ½½«Õû¸öÊý×éÅÅÐò¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/222768a7-914f-4d64-b874-d98f3b926fb6.jpg) @@ -542,11 +540,11 @@ public class Selection { } ``` -?????????? \~N2/2 ?¦Á??? \~N ?¦Í???????????????????????????????????????????????????????????????????????????? +Ñ¡ÔñÅÅÐòÐèÒª \~N2/2 ´Î±È½ÏºÍ \~N ´Î½»»»£¬ËüµÄÔËÐÐʱ¼äÓëÊäÈëÎ޹أ¬Õâ¸öÌØµãʹµÃËü¶ÔÒ»¸öÒѾ­ÅÅÐòµÄÊý×éÒ²ÐèÒªÕâô¶àµÄ±È½ÏºÍ½»»»²Ù×÷¡£ -### 3. ???????? +### 3. ²åÈëÅÅÐò -???????????????????????§µ???¨°?????????????????????????????????????????????¦Â??????????????????????? +½«Ò»¸öÔªËØ²åÈëµ½ÒÑÅÅÐòµÄÊý×éÖУ¬Ê¹µÃ²åÈëÖ®ºóµÄÊý×éÒ²ÊÇÓÐÐòµÄ¡£²åÈëÅÅÐò´Ó×óµ½ÓÒ²åÈëÿ¸öÔªËØ£¬Ã¿´Î²åÈëÖ®ºó×󲿵Ä×ÓÊý×éÊÇÓÐÐòµÄ¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/065c3bbb-3ea0-4dbf-8f26-01d0e0ba7db7.png) @@ -563,21 +561,21 @@ public class Insertion { } ``` -????????????????????????????????????????????????????????????????????????????????? \~N2/4 ?????? \~N2/4 ?¦Í????????????????? \~N2/2 ?????? \~N2/2 ?¦Í???????????????????????????????????????? N-1 ?¦Á??? 0 ?¦Í?????????????????????????????? +²åÈëÅÅÐòµÄ¸´ÔÓ¶ÈÈ¡¾öÓÚÊý×éµÄ³õʼ˳Ðò£¬Èç¹ûÊý×éÒѾ­²¿·ÖÓÐÐòÁË£¬ÄÇô²åÈëÅÅÐò»áºÜ¿ì¡£Æ½¾ùÇé¿öϲåÈëÅÅÐòÐèÒª \~N2/4 ±È½ÏÒÔ¼° \~N2/4 ´Î½»»»£¬×µÄÇé¿öÏÂÐèÒª \~N2/2 ±È½ÏÒÔ¼° \~N2/2 ´Î½»»»£¬×µÄÇé¿öÊÇÊý×éÊÇÄæÐòµÄ£»¶ø×îºÃµÄÇé¿öÏÂÐèÒª N-1 ´Î±È½ÏºÍ 0 ´Î½»»»£¬×îºÃµÄÇé¿ö¾ÍÊÇÊý×éÒѾ­ÓÐÐòÁË¡£ -???????????????????????§³???????????§¹?? +²åÈëÅÅÐò¶ÔÓÚ²¿·ÖÓÐÐòÊý×éºÍС¹æÄ£Êý×éÌØ±ð¸ßЧ¡£ -### 4. ?????????????????? +### 4. Ñ¡ÔñÅÅÐòºÍ²åÈëÅÅÐòµÄ±È½Ï -??????????????????????????ï…?????????????????????????????????????????????????§³??????? +¶ÔÓÚËæ»úÅÅÐòµÄÎÞÖØ¸´Ö÷¼üµÄÊý×飬²åÈëÅÅÐòºÍÑ¡ÔñÅÅÐòµÄÔËÐÐʱ¼äÊÇÆ½·½¼¶±ðµÄ£¬Á½ÕßÖ®±ÈÊÇÒ»¸ö½ÏСµÄ³£Êý¡£ -### 5. ??????? +### 5. Ï£¶ûÅÅÐò -????????????ï…???????????????????????????????????????????????????????????????¦Â????? +¶ÔÓÚ´ó¹æÄ£µÄÊý×飬²åÈëÅÅÐòºÜÂý£¬ÒòΪËüÖ»Äܽ»»»ÏàÁÚµÄÔªËØ£¬Èç¹ûÒª°ÑÔªËØ´ÓÒ»¶ËÒÆµ½ÁíÒ»¶Ë£¬¾ÍÐèÒªºÜ¶à´Î²Ù×÷¡£ -????????????????????????????????????????????????????????????????????????????¦Ë????? +Ï£¶ûÅÅÐòµÄ³öÏÖ¾ÍÊÇΪÁ˸Ľø²åÈëÅÅÐòµÄÕâÖÖ¾ÖÏÞÐÔ£¬Ëüͨ¹ý½»»»²»ÏàÁÚµÄÔªËØ£¬Ê¹µÃÔªËØ¸ü¿ìµÄÒÆµ½ÕýÈ·µÄλÖÃÉÏ¡£ -?????????¨°?????????? h ?????§ß?????????? h ???????????????????????????????????§³ h??????? h=1?????????????????????????? +Ï£¶ûÅÅÐòʹÓòåÈëÅÅÐò¶Ô¼ä¸ô h µÄÐòÁнøÐÐÅÅÐò£¬Èç¹û h ºÜ´ó£¬ÄÇÃ´ÔªËØ¾ÍÄܺܿìµÄÒÆµ½ºÜÔ¶µÄµØ·½¡£Í¨¹ý²»¶Ï¼õС h£¬×îºóÁî h=1£¬¾Í¿ÉÒÔʹµÃÕû¸öÊý×éÊÇÓÐÐòµÄ¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/8320bad6-3f91-4a15-8e3d-68e8f39649b5.png) @@ -601,15 +599,15 @@ public class Shell { } ``` -??????????????????????????????????? 1, 4, 13, 40, ... ??????????????????????????? N ?????????????????§Ö?????????????????????????????????????????? +Ï£¶ûÅÅÐòµÄÔËÐÐʱ¼ä´ï²»µ½Æ½·½¼¶±ð£¬Ê¹ÓõÝÔöÐòÁÐ 1, 4, 13, 40, ... µÄÏ£¶ûÅÅÐòËùÐèÒªµÄ±È½Ï´ÎÊý²»»á³¬¹ý N µÄÈô¸É±¶³ËÓÚµÝÔöÐòÁеij¤¶È¡£ºóÃæ½éÉܵĸ߼¶ÅÅÐòËã·¨Ö»»á±ÈÏ£¶ûÅÅÐò¿ìÁ½±¶×óÓÒ¡£ -## ?öã???? +## ¹é²¢ÅÅÐò -?öã?????????????????????????????????????öã?????? +¹é²¢ÅÅÐòµÄ˼ÏëÊǽ«Êý×é·Ö³ÉÁ½²¿·Ö£¬·Ö±ð½øÐÐÅÅÐò£¬È»ºó¹é²¢ÆðÀ´¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/dcf265ad-fe35-424d-b4b7-d149cdf239f4.png) -### 1. ?öã???? +### 1. ¹é²¢·½·¨ ```java public class MergeSort { @@ -619,20 +617,20 @@ public class MergeSort { int i = lo, j = mid + 1; for (int k = lo; k <= hi; k++) { - aux[k] = a[k]; // ?????????????????? + aux[k] = a[k]; // ½«Êý¾Ý¸´ÖƵ½¸¨ÖúÊý×é } for (int k = lo; k <= hi; k++) { if (i > mid) a[k] = aux[j++]; else if (j > hi) a[k] = aux[i++]; - else if (aux[i].compareTo(a[j]) < 0) a[k] = aux[i++]; // ???????????????????? + else if (aux[i].compareTo(a[j]) < 0) a[k] = aux[i++]; // ÏȽøÐÐÕâÒ»²½£¬±£Ö¤Îȶ¨ÐÔ else a[k] = aux[j++]; } } } ``` -### 2. ???????öã???? +### 2. ×Ô¶¥ÏòϹ鲢ÅÅÐò ```java public static void sort(Comparable[] a) { @@ -653,13 +651,13 @@ public class MergeSort { ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/c7665f73-c52f-4ce4-aed3-592bbd76265b.png) -?????????????????????ÁÙ???? O(NlgN)?? +ºÜÈÝÒ׿´³ö¸ÃÅÅÐòËã·¨µÄʱ¼ä¸´ÔÓ¶ÈΪ O(NlgN)¡£ -???§³?????????????????????????¨°?????????????§³???ýq????????????? +ÒòΪСÊý×éµÄµÝ¹é²Ù×÷»á¹ýÓÚÆµ·±£¬Òò´ËʹÓòåÈëÅÅÐòÀ´´¦ÀíСÊý×齫»á»ñµÃ¸ü¸ßµÄÐÔÄÜ¡£ -### 3. ???????öã???? +### 3. ×Ôµ×ÏòÉϹ鲢ÅÅÐò -??öã??§»??????ï…?????öã??????????î• +Ïȹ鲢ÄÇЩ΢ÐÍÊý×飬Ȼºó³É¶Ô¹é²¢µÃµ½µÄ×ÓÊý×é¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/c7b9b4c8-83d1-4eb0-8408-ea6576a9ed90.png) @@ -675,11 +673,11 @@ public class MergeSort { } ``` -## ???????? +## ¿ìËÙÅÅÐò -### 1. ?????? +### 1. »ù±¾Ëã·¨ -?öã????????????????????????????????????????öã?????????????????????????????§Ù????????????????????ï…????????§³??????§Ù????????????????????§Ù?????????????????????????????????????????? +¹é²¢ÅÅÐò½«Êý×é·ÖΪÁ½¸ö×ÓÊý×é·Ö±ðÅÅÐò£¬²¢½«ÓÐÐòµÄ×ÓÊý×é¹é²¢Ê¹µÃÕû¸öÊý×éÅÅÐò£»¿ìËÙÅÅÐòͨ¹ýÒ»¸öÇзÖÔªËØ½«Êý×é·ÖΪÁ½¸ö×ÓÊý×飬×ó×ÓÊý×éСÓÚµÈÓÚÇзÖÔªËØ£¬ÓÒ×ÓÊý×é´óÓÚµÈÓÚÇзÖÔªËØ£¬½«ÕâÁ½¸ö×ÓÊý×éÅÅÐòÒ²¾Í½«Õû¸öÊý×éÅÅÐòÁË¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/61b4832d-71f3-413c-84b6-237e219b9fdc.png) @@ -699,9 +697,9 @@ public class QuickSort { } ``` -### 2. ?§Ù? +### 2. ÇÐ·Ö -? a[lo] ????§Ù????????????????????????????????????????????????????????????????????????????§³???????????????????????????????????????????????????????????????????????§Ù?????????? j ???????????§³???§Ù????????????????????????§Ù???? a[lo] ??????????????????? a[j] ???????? j ???¨À? +È¡ a[lo] ×÷ΪÇзÖÔªËØ£¬È»ºó´ÓÊý×éµÄ×ó¶ËÏòÓÒɨÃèÖ±µ½ÕÒµ½µÚÒ»¸ö´óÓÚµÈÓÚËüµÄÔªËØ£¬ÔÙ´ÓÊý×éµÄÓÒ¶ËÏò×óɨÃèÕÒµ½µÚÒ»¸öСÓÚµÈÓÚËüµÄÔªËØ£¬½»»»ÕâÁ½¸öÔªËØ£¬²¢²»¶Ï¼ÌÐøÕâ¸ö¹ý³Ì£¬¾Í¿ÉÒÔ±£Ö¤×óÖ¸ÕëµÄ×ó²àÔªËØ¶¼²»´óÓÚÇзÖÔªËØ£¬ÓÒÖ¸Õë j µÄÓÒ²àÔªËØ¶¼²»Ð¡ÓÚÇзÖÔªËØ¡£µ±Á½¸öÖ¸ÕëÏàÓöʱ£¬½«ÇзÖÔªËØ a[lo] ºÍ×ó×ÓÊý×é×îÓÒ²àµÄÔªËØ a[j] ½»»»È»ºó·µ»Ø j ¼´¿É¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/e198c201-f386-4491-8ad6-f7e433bf992d.png) @@ -720,29 +718,29 @@ public class QuickSort { } ``` -### 3. ??????? +### 3. ÐÔÄÜ·ÖÎö -????????????????????????????ï…??????????????????? +¿ìËÙÅÅÐòÊÇÔ­µØÅÅÐò£¬²»ÐèÒª¸¨ÖúÊý×飬µ«Êǵݹéµ÷ÓÃÐèÒª¸¨ÖúÕ»¡£ -?????????????????????¦Æ???????????????????????????????????????????????¡À?????? CN=2CN/2+N???????????? O(NlgN)?? +¿ìËÙÅÅÐò×îºÃµÄÇé¿öÏÂÊÇÿ´Î¶¼ÕýºÃÄܽ«Êý×é¶Ô°ë·Ö£¬ÕâÑùµÝ¹éµ÷ÓôÎÊý²ÅÊÇ×îÉٵġ£ÕâÖÖÇé¿öϱȽϴÎÊýΪ CN=2CN/2+N£¬Ò²¾ÍÊǸ´ÔÓ¶ÈΪ O(NlgN)¡£ -??????????????¦Ä???§³??????§Ù??????¦Ä???§³??????§Ù?????????????????????????? N2/2????????????????????????????§á?????????????????????î• +×µÄÇé¿öÏ£¬µÚÒ»´Î´Ó×îСµÄÔªËØÇз֣¬µÚ¶þ´Î´ÓµÚ¶þСµÄÔªËØÇз֣¬Èç´ËÕâ°ã¡£Òò´Ë×µÄÇé¿öÏÂÐèÒª±È½Ï N2/2¡£ÎªÁË·ÀÖ¹Êý×é×ʼ¾ÍÊÇÓÐÐòµÄ£¬ÔÚ½øÐпìËÙÅÅÐòʱÐèÒªËæ»ú´òÂÒÊý×é¡£ -### 4. ????? +### 4. Ëã·¨¸Ä½ø -#### 4.1 ?§Ý??????????? +#### 4.1 Çл»µ½²åÈëÅÅÐò -?????????????§³?????????????????????§³???ï…??????????????????????????????§³?????§á????§Ý??????????? +ÒòΪ¿ìËÙÅÅÐòÔÚСÊý×éÖÐÒ²»áµ÷ÓÃ×Ô¼º£¬¶ÔÓÚСÊý×飬²åÈëÅÅÐò±È¿ìËÙÅÅÐòµÄÐÔÄܸüºÃ£¬Òò´ËÔÚСÊý×éÖпÉÒÔÇл»µ½²åÈëÅÅÐò¡£ -#### 4.2 ????? +#### 4.2 ÈýÈ¡Ñù -?????????????¦Æ???????????¦Ë??????§Ù??????????????¦Ë?????????????????? 3 ??????????§³???§Ö????????§Ù?????§¹????¨¢? +×îºÃµÄÇé¿öÏÂÊÇÿ´Î¶¼ÄÜÈ¡Êý×éµÄÖÐλÊý×÷ΪÇзÖÔªËØ£¬µ«ÊǼÆËãÖÐλÊýµÄ´ú¼ÛºÜ¸ß¡£ÈËÃÇ·¢ÏÖÈ¡ 3 ¸öÔªËØ²¢½«´óС¾ÓÖеÄÔªËØ×÷ΪÇзÖÔªËØµÄЧ¹û×îºÃ¡£ -#### 4.3 ?????§Ù? +#### 4.3 ÈýÏòÇÐ·Ö -?????§Õ?????????????ï…??????????§Ù??????????????§³????????????§Ù????? +¶ÔÓÚÓдóÁ¿Öظ´ÔªËصÄÊý×飬¿ÉÒÔ½«Êý×éÇзÖΪÈý²¿·Ö£¬·Ö±ð¶ÔӦСÓÚ¡¢µÈÓںʹóÓÚÇзÖÔªËØ¡£ -?????§Ù?????????????????????????????????????????????????????? +ÈýÏòÇзֿìËÙÅÅÐò¶ÔÓÚÖ»ÓÐÈô¸É²»Í¬Ö÷¼üµÄËæ»úÊý×é¿ÉÒÔÔÚÏßÐÔʱ¼äÄÚÍê³ÉÅÅÐò¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/9d2226dc-c4a3-40ec-9b3e-a46bf86af499.png) @@ -764,15 +762,15 @@ public class Quick3Way { } ``` -## ??????? +## ÓÅÏȶÓÁÐ -???????????????????????? +ÓÅÏȶÓÁÐÖ÷ÒªÓÃÓÚ´¦Àí×î´óÔªËØ¡£ -### 1. ?? +### 1. ¶Ñ -???‰Ø??????????????????????????????????? +¶¨Ò壺һ¿Å¶þ²æÊ÷µÄÿ¸ö½Úµã¶¼´óÓÚµÈÓÚËüµÄÁ½¸ö×ӽڵ㡣 -?????????????????????????????????????????????????????????›¥???????§³?¦Ë?? k ?????????¦Ë??? k/2?????????????????¦Ë?¡Â??? 2k ?? 2k+1??????????????????????? 0 ??¦Ë????????????????????????? +¶Ñ¿ÉÒÔÓÃÊý×éÀ´±íʾ£¬ÒòΪ¶ÑÊÇÒ»ÖÖÍêÈ«¶þ²æÊ÷£¬¶øÍêÈ«¶þ²æÊ÷ºÜÈÝÒ׾ʹ洢ÔÚÊý×éÖС£Î»Öà k µÄ½ÚµãµÄ¸¸½ÚµãλÖÃΪ k/2£¬¶øËüµÄÁ½¸ö×Ó½ÚµãµÄλÖ÷ֱðΪ 2k ºÍ 2k+1¡£ÕâÀïÎÒÃDz»Ê¹ÓÃÊý×éË÷ÒýΪ 0 µÄλÖã¬ÊÇΪÁ˸üÇåÎúµØÀí½â½ÚµãµÄ¹ØÏµ¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/a9b6c1db-0f4a-4e91-8ac8-6b19bd106b51.png) @@ -805,9 +803,9 @@ public class MaxPQ { } ``` -### 2. ???????? +### 2. Éϸ¡ºÍϳÁ -????§µ????????????????????????????????????????????????????????????????????§Ò????????????????????????????? +ÔÚ¶ÑÖУ¬µ±Ò»¸ö½Úµã±È¸¸½Úµã´ó£¬ÄÇôÐèÒª½»»»Õâ¸öÁ½¸ö½Úµã¡£½»»»ºó»¹¿ÉÄܱÈËüеĸ¸½Úµã´ó£¬Òò´ËÐèÒª²»¶ÏµØ½øÐбȽϺͽ»»»²Ù×÷¡£°ÑÕâÖÖ²Ù×÷³ÆÎªÉϸ¡¡£ ```java private void swim(int k) { @@ -818,7 +816,7 @@ private void swim(int k) { } ``` -???????????????????????§³??????????????¡À???????????????????????????????????????????????????????????????????????§ß????? +ÀàËÆµØ£¬µ±Ò»¸ö½Úµã±È×Ó½ÚµãÀ´µÃС£¬Ò²ÐèÒª²»¶ÏµÄÏòϱȽϺͽ»»»²Ù×÷£¬°ÑÕâÖÖ²Ù×÷³ÆÎªÏ³Á¡£Ò»¸ö½ÚµãÓÐÁ½¸ö×ӽڵ㣬Ӧµ±ÓëÁ½¸ö×Ó½ÚµãÖÐ×î´óÄÇô½Úµã½øÐн»»»¡£ ```java private void sink(int k) { @@ -832,9 +830,9 @@ private void sink(int k) { } ``` -### 3. ??????? +### 3. ²åÈëÔªËØ -??????????????¦Â???????????????¦Ë?¨¢? +½«ÐÂÔªËØ·Åµ½Êý×éĩβ£¬È»ºóÉϸ¡µ½ºÏÊʵÄλÖᣠ```java public void insert(Key v) { @@ -843,9 +841,9 @@ public void insert(Key v) { } ``` -### 4. ????????? +### 4. ɾ³ý×î´óÔªËØ -?????úB??????????????????????????????????????????????????????????¦Ë?¨¢? +´ÓÊý×é¶¥¶Ëɾ³ý×î´óµÄÔªËØ£¬²¢½«Êý×éµÄ×îºóÒ»¸öÔªËØ·Åµ½¶¥¶Ë£¬²¢ÈÃÕâ¸öÔªËØÏ³Áµ½ºÏÊʵÄλÖᣠ```java public Key delMax() { @@ -857,13 +855,13 @@ public Key delMax() { } ``` -### 5. ?????? +### 5. ¶ÑÅÅÐò -????????????????????????????????????????????????????????????§³????????????????????????????????????¦Ë??????????????????????????????¦Â??????????§µ?????????????????????????§³????????????????????????????????????????????????? +ÓÉÓÚ¶Ñ¿ÉÒÔºÜÈÝÒ׵õ½×î´óµÄÔªËØ²¢É¾³ýËü£¬²»¶ÏµØ½øÐÐÕâÖÖ²Ù×÷¿ÉÒԵõ½Ò»¸öµÝ¼õÐòÁС£Èç¹û°Ñ×î´óÔªËØºÍµ±Ç°¶ÑÖÐÊý×éµÄ×îºóÒ»¸öÔªËØ½»»»Î»Ö㬲¢ÇÒ²»É¾³ýËü£¬ÄÇô¾Í¿ÉÒԵõ½Ò»¸ö´Óβµ½Í·µÄµÝ¼õÐòÁУ¬´ÓÕýÏòÀ´¿´¾ÍÊÇÒ»¸öµÝÔöÐòÁС£Òò´ËºÜÈÝÒ×ʹÓöÑÀ´½øÐÐÅÅÐò£¬²¢ÇÒ¶ÑÅÅÐòÊÇÔ­µØÅÅÐò£¬²»Õ¼ÓöîÍâ¿Õ¼ä¡£ -???????????????¦²???????????????????ýn?????????????????????????????????????????????????????????????????????????? +¶ÑÅÅÐòÒª·ÖÁ½¸ö½×¶Î£¬µÚÒ»¸ö½×¶ÎÊǰÑÎÞÐòÊý×齨Á¢Ò»¸ö¶Ñ£»µÚ¶þ¸ö½×¶ÎÊǽ»»»×î´óÔªËØºÍµ±Ç°¶ÑµÄÊý×é×îºóÒ»¸öÔªËØ£¬²¢ÇÒ½øÐÐϳÁ²Ù×÷ά³Ö¶ÑµÄÓÐÐò״̬¡£ -???????ýn??????????????????????????ï…??????????????????????§¹????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????¨À? +ÎÞÐòÊý×齨Á¢¶Ñ×îÖ±½ÓµÄ·½·¨ÊÇ´Ó×óµ½ÓÒ±éÀúÊý×飬Ȼºó½øÐÐÉϸ¡²Ù×÷¡£Ò»¸ö¸ü¸ßЧµÄ·½·¨ÊÇ´ÓÓÒÖÁ×ó½øÐÐϳÁ²Ù×÷£¬Èç¹ûÒ»¸ö½ÚµãµÄÁ½¸ö½Úµã¶¼ÒѾ­ÊǶÑÓÐÐò£¬ÄÇô½øÐÐϳÁ²Ù×÷¿ÉÒÔʹµÃÕâ¸ö½ÚµãΪ¸ù½ÚµãµÄ¶ÑÓÐÐò¡£Ò¶×ӽڵ㲻ÐèÒª½øÐÐϳÁ²Ù×÷£¬Òò´Ë¿ÉÒÔºöÂÔÒ¶×Ó½ÚµãµÄÔªËØ£¬Òò´ËÖ»ÐèÒª±éÀúÒ»°ëµÄÔªËØ¼´¿É¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/a2670745-a7b1-497b-90a4-dbddc4e2006d.jpg) @@ -880,33 +878,33 @@ public static void sort(Comparable[] a){ } ``` -### 6. ???? +### 6. ·ÖÎö -????????? lgN?????????§Ó??????????????????????? lgN?? +Ò»¸ö¶ÑµÄ¸ß¶ÈΪ lgN£¬Òò´ËÔÚ¶ÑÖвåÈëÔªËØºÍɾ³ý×î´óÔªËØµÄ¸´ÔӶȶ¼Îª lgN¡£ -???????????????? N ????????????????????????? NlgN?? +¶ÔÓÚ¶ÑÅÅÐò£¬ÓÉÓÚÒª¶Ô N ¸ö½Úµã½øÐÐϳÁ²Ù×÷£¬Òò´Ë¸´ÔÓ¶ÈΪ NlgN¡£ -?????????????????????????????? +¶ÑÅÅÐòʱһÖÖÔ­µØÅÅÐò£¬Ã»ÓÐÀûÓöîÍâµÄ¿Õ¼ä¡£ -???????????????????????????????????—¨??????????????????????????§Ò??? +ÏÖ´ú²Ù×÷ϵͳºÜÉÙʹÓöÑÅÅÐò£¬ÒòΪËüÎÞ·¨ÀûÓûº´æ£¬Ò²¾ÍÊÇÊý×éÔªËØºÜÉÙºÍÏàÁÚµÄÔªËØ½øÐбȽϡ£ -## ??? +## Ó¦Óà -### 1. ?????????? +### 1. ÅÅÐòËã·¨µÄ±È½Ï ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/be53c00b-2534-4dc6-ad03-c55995c47db9.jpg) -??????????????????????????????????????????????????????????—¨??????????????????????????????????????????? \~cNlgN??????? c ???????????????????????????§³??????????§Ù???????????§á????????§»???????????????????????????????????????????????? +¿ìËÙÅÅÐòʱ×î¿ìµÄͨÓÃÅÅÐòËã·¨£¬ËüµÄÄÚÑ­»·µÄÖ¸ÁîºÜÉÙ£¬¶øÇÒËü»¹ÄÜÀûÓûº´æ£¬ÒòΪËü×ÜÊÇ˳ÐòµØ·ÃÎÊÊý¾Ý¡£ËüµÄÔËÐÐʱ¼äÔö³¤ÊýÁ¿¼¶Îª \~cNlgN£¬ÕâÀïµÄ c ±ÈÆäËûÏßÐÔ¶ÔÊý¼¶±ðµÄÅÅÐòËã·¨¶¼ÒªÐ¡¡£Ê¹ÓÃÈýÏòÇзÖÖ®ºó£¬Êµ¼ÊÓ¦ÓÃÖпÉÄܳöÏÖµÄijЩ·Ö²¼µÄÊäÈëÄܹ»´ïµ½ÏßÐÔ¼¶±ð£¬¶øÆäËüÅÅÐòËã·¨ÈÔÈ»ÐèÒªÏßÐÔ¶ÔÊýʱ¼ä¡£ -### 2. Java ??????????? +### 2. Java µÄÅÅÐòË㷨ʵÏÖ -Java ?????§Ö?????????? java.util.Arrays.sort()????????????????????????§Ù??????????????????????¨´öã???? +Java ϵͳ¿âÖеÄÖ÷ÒªÅÅÐò·½·¨Îª java.util.Arrays.sort()£¬¶ÔÓÚԭʼÊý¾ÝÀàÐÍʹÓÃÈýÏòÇзֵĿìËÙÅÅÐò£¬¶ÔÓÚÒýÓÃÀàÐÍʹÓù鲢ÅÅÐò¡£ -### 3. ?????§Ù?????????? +### 3. »ùÓÚÇзֵĿìËÙÑ¡ÔñËã·¨ -????????? partition() ????????????? a[lo] ?? a[hi] ?????????????????? j ??? a[lo..j-1] §³????? a[j]???? a[j+1..hi] ??????? a[j]???????? j=k??a[j] ????? k ?????? +¿ìËÙÅÅÐòµÄ partition() ·½·¨£¬»á½«Êý×éµÄ a[lo] ÖÁ a[hi] ÖØÐÂÅÅÐò²¢·µ»ØÒ»¸öÕûÊý j ʹµÃ a[lo..j-1] СÓÚµÈÓÚ a[j]£¬ÇÒ a[j+1..hi] ´óÓÚµÈÓÚ a[j]¡£ÄÇôÈç¹û j=k£¬a[j] ¾ÍÊÇµÚ k ¸öÊý¡£ -??????????????????????????????????????????????? (N+N/2+N/4+..)?????????? k ??????????????§³?? 2N?? +¸ÃËã·¨ÊÇÏßÐÔ¼¶±ðµÄ£¬ÒòΪÿ´ÎÕýºÃ½«Êý×é¶þ·Ö£¬ÄÇô±È½ÏµÄ×Ü´ÎÊýΪ (N+N/2+N/4+..)£¬Ö±µ½ÕÒµ½µÚ k ¸öÔªËØ£¬Õâ¸öºÍÏÔȻСÓÚ 2N¡£ ```java public static Comparable select(Comparable[] a, int k) { @@ -921,37 +919,33 @@ Java ????? } ``` -# ?????? ???? +# µÚÈýÕ ²éÕÒ -?????????????????????????????§¹??????????????????????????§Ò? +±¾ÕÂʹÓÃÈýÖÖ¾­µäµÄÊý¾ÝÀàÐÍÀ´ÊµÏÖ¸ßЧµÄ·ûºÅ±í£º¶þ²æ²éÕÒÊ÷¡¢ºìºÚÊ÷ºÍÉ¢ÁÐ±í¡£ -## ????? +## ·ûºÅ±í -### 1. API +### 1. ÎÞÐò·ûºÅ±í ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/b69d7184-ab62-4957-ba29-fb4fa25f9b65.jpg) -??????????? null ???????????????????????????? put(key, null) ??? delete(key) ???????????? - -### 2. ???????? +### 2. ÓÐÐò·ûºÅ±í ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/ba6ae411-82da-4d86-a434-6776d1731e8e.jpg) -???????????????? Comparable ???? +ÓÐÐò·ûºÅ±íµÄ¼üÐèҪʵÏÖ Comparable ½Ó¿Ú¡£ -????????????????????????????§Ò??????????????????? +²éÕҵijɱ¾Ä£ÐÍ£º¼üµÄ±È½Ï´ÎÊý£¬ÔÚ²»½øÐбȽÏʱʹÓÃÊý×éµÄ·ÃÎÊ´ÎÊý¡£ -### 3. ??????????? +### 3. ¶þ·Ö²éÕÒʵÏÖÓÐÐò·ûºÅ±í -???????????????§Ó??? N ??????????? \~N2/2 ?¦Á??? +ʹÓÃÒ»¶ÔƽÐÐÊý×飬һ¸ö´æ´¢¼üÒ»¸ö´æ´¢Öµ¡£ -### 4. ??????????????? +ÐèÒª´´½¨Ò»¸ö Key ÀàÐ굀 Comparable ¶ÔÏóÊý×éºÍÒ»¸ö Value ÀàÐ굀 Object ¶ÔÏóÊý×é¡£ -????????????ï…????›¥??????›¥??? +rank() ·½·¨ÖÁ¹ØÖØÒª£¬µ±¼üÔÚ±íÖÐʱ£¬ËüÄܹ»ÖªµÀ¸Ã¼üµÄλÖ㻵±¼ü²»ÔÚ±íÖÐʱ£¬ËüÒ²ÄÜÖªµÀÔں䦲åÈëмü¡£ -?????????? Key ????? Comparable ???????????? Value ????? Object ???????î• - -rank() ??????????????????????????????????¨¹???¦Ë???????????????????????????¦Ä?????????? +¸´ÔÓ¶È£º¶þ·Ö²éÕÒ×î¶àÐèÒª lgN+1 ´Î±È½Ï£¬Ê¹Óöþ·Ö²éÕÒʵÏֵķûºÅ±íµÄ²éÕÒ²Ù×÷ËùÐèÒªµÄʱ¼ä×î¶àÊǶÔÊý¼¶±ðµÄ¡£µ«ÊDzåÈë²Ù×÷ÐèÒªÒÆ¶¯Êý×éÔªËØ£¬ÊÇÏßÐÔ¼¶±ðµÄ¡£ ```java public class BinarySearchST, Value> { @@ -1010,17 +1004,14 @@ public class BinarySearchST, Value> { } ``` -### 5. ???????????? -??????????????????? lgN+1 ?¦Á?????????????????????????????????????????????????????????????????????????????????????? +## ¶þ²æ²éÕÒÊ÷ -## ????????? - -???‰Ø?????????????????????????????????????????????????????????????????????????????????BST?????????????????????????????????????????§Ö???????????§³???????????????????? +¶¨Ò壺¶þ²æÊ÷¶¨ÒåΪһ¸ö¿ÕÁ´½Ó£¬»òÕßÊÇÒ»¸öÓÐ×óÓÒÁ½¸öÁ´½ÓµÄ½Úµã£¬Ã¿¸öÁ´½Ó¶¼Ö¸ÏòÒ»¿Å×Ó¶þ²æÊ÷¡£¶þ²æ²éÕÒÊ÷£¨BST£©ÊÇÒ»¿Å¶þ²æÊ÷£¬²¢ÇÒÿ¸ö½ÚµãµÄ¼ü¶¼´óÓÚÆä×ó×ÓÊ÷ÖеÄÈÎÒâ½ÚµãµÄ¼ü¶øÐ¡ÓÚÓÒ×ÓÊ÷µÄÈÎÒâ½ÚµãµÄ¼ü¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/25226bb2-92cc-40cb-9e7f-c44e79fbb64a.jpg) -???????????????????¦Å???????????????????????????????? +¶þ²æ²éÕÒÊ÷µÄ²éÕÒ²Ù×÷ÿ´Îµü´ú¶¼»áÈÃÇø¼ä¼õÉÙÒ»°ë£¬ºÍ¶þ·Ö²éÕÒÀàËÆ¡£ ```java public class BST, Value> { @@ -1030,7 +1021,7 @@ public class BST, Value> { private Key key; private Value val; private Node left, right; - // ???????????????§ß?????? + // ÒԸýڵãΪ¸ùµÄ×ÓÊ÷Öнڵã×ÜÊý private int N; public Node(Key key, Value val, int N) { @@ -1053,7 +1044,7 @@ public class BST, Value> { ### 1. get() -???????????????¦Ä???§µ???????????????????????????????§µ???????????????§Ó?????????????????§³???????????§Ó?????????????????§Ó???? +Èç¹ûÊ÷Êǿյģ¬Ôò²éÕÒδÃüÖУ»Èç¹û±»²éÕҵļüºÍ¸ù½ÚµãµÄ¼üÏàµÈ£¬²éÕÒÃüÖУ¬·ñÔòµÝ¹éµØÔÚ×ÓÊ÷ÖвéÕÒ£ºÈç¹û±»²éÕҵļü½ÏС¾ÍÔÚ×ó×ÓÊ÷ÖвéÕÒ£¬½Ï´ó¾ÍÔÚÓÒ×ÓÊ÷ÖвéÕÒ¡£ ```java public Value get(Key key) { @@ -1070,7 +1061,7 @@ private Value get(Node x, Key key) { ### 2. put() -???????????????????§µ?????????????????????????????????????????????????§³? +µ±²åÈëµÄ¼ü²»´æÔÚÓÚÊ÷ÖУ¬ÐèÒª´´½¨Ò»¸öнڵ㣬²¢ÇÒ¸üÐÂÉϲã½ÚµãµÄÁ´½ÓʹµÃ¸Ã½ÚµãÕýÈ·Á´½Óµ½Ê÷ÖС£ ```java public void put(Key key, Value val) { @@ -1087,17 +1078,17 @@ private Node put(Node x, Key key, Value val) { } ``` -### 3. ???? +### 3. ·ÖÎö -???????????????????????????????????????????????????????????????????????????????????????????????????????? lgN????????????????????? N?? +¶þ²æ²éÕÒÊ÷µÄËã·¨ÔËÐÐʱ¼äÈ¡¾öÓÚÊ÷µÄÐÎ×´£¬¶øÊ÷µÄÐÎ×´ÓÖÈ¡¾öÓÚ¼ü±»²åÈëµÄÏȺó˳Ðò¡£×îºÃµÄÇé¿öÏÂÊ÷ÊÇÍêȫƽºâµÄ£¬Ã¿Ìõ¿ÕÁ´½ÓºÍ¸ù½ÚµãµÄ¾àÀ붼Ϊ lgN¡£ÔÚ×µÄÇé¿öÏ£¬Ê÷µÄ¸ß¶ÈΪ N¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/73a3983d-dd18-4373-897e-64b706a7e370.jpg) -???????????????????????????? +¸´ÔÓ¶È£º²éÕҺͲåÈë²Ù×÷¶¼Îª¶ÔÊý¼¶±ð¡£ ### 4. floor() -??? key §³??????? key?????§³????? key ?????????????????????§µ???? key ????????? key????§Ö?????????????§Õ???§³????? key ????§³????? key ???????????????????§µ????????????§³????? key ????????? +Èç¹û key СÓÚ¸ù½ÚµãµÄ key£¬ÄÇôСÓÚµÈÓÚ key µÄ×î´ó¼ü½ÚµãÒ»¶¨ÔÚ×ó×ÓÊ÷ÖУ»Èç¹û key ´óÓÚ¸ù½ÚµãµÄ key£¬Ö»Óе±¸ù½ÚµãÓÒ×ÓÊ÷ÖдæÔÚСÓÚµÈÓÚ key µÄ½Úµã£¬Ð¡ÓÚµÈÓÚ key µÄ×î´ó¼ü½Úµã²ÅÔÚÓÒ×ÓÊ÷ÖУ¬·ñÔò¸ù½Úµã¾ÍÊÇСÓÚµÈÓÚ key µÄ×î´ó¼ü½Úµã¡£ ```java public Key floor(Key key) { @@ -1145,7 +1136,7 @@ private Node min(Node x) { ### 7. deleteMin() -???????§³?????????????§³???????????? +ÁîÖ¸Ïò×îС½ÚµãµÄÁ´½ÓÖ¸Ïò×îС½ÚµãµÄÓÒ×ÓÊ÷¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/6e2cb20a-8d2a-46fe-9ac7-68a2126b7bd5.jpg) @@ -1163,7 +1154,7 @@ public Node deleteMin(Node x) { ### 8. delete() -???????????????????????????????????????????¦·????????????????????????????§³????�I???? +Èç¹û´ýɾ³ýµÄ½ÚµãÖ»ÓÐ×ÓÊ÷£¬ÄÇôֻÐèÒªÈÃÖ¸Ïò½ÚµãµÄÁ´½ÓÖ¸ÏòΨһµÄ×ÓÊ÷¼´¿É£»·ñÔò£¬ÈÃÓÒ×ÓÊ÷µÄ×îС½ÚµãÌæ»»¸Ã½Úµã¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/b488282d-bfe0-464f-9e91-1f5b83a975bd.jpg) @@ -1191,7 +1182,7 @@ private Node delete(Node x, Key key) { ### 9. keys() -???????????????????????????????§Ö???? +ÀûÓöþ²æ²éÕÒÊ÷ÖÐÐò±éÀúµÄ½á¹ûΪÓÐÐòÐòÁеÄÌØµã¡£ ```java public Iterable keys(Key lo, Key hi) { @@ -1209,42 +1200,42 @@ private void keys(Node x, Queue queue, Key lo, Key hi) { } ``` -### 10. ??????? +### 10. ÐÔÄÜ·ÖÎö -??????????????????§Ó?????????????????????????????????????? +¸´ÔÓ¶È£º¶þ²æ²éÕÒÊ÷ËùÓвÙ×÷ÔÚ×µÄÇé¿öÏÂËùÐèÒªµÄʱ¼ä¶¼ºÍÊ÷µÄ¸ß¶È³ÉÕý±È¡£ -## ???????? +## ƽºâ²éÕÒÊ÷ -### 2-3 ?????? +### 2-3 ²éÕÒÊ÷ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/2548f2ec-7b00-4ec7-b286-20fc3022e084.jpg) -??????????? 2-3 ???????????§á?????????????????????????? +Ò»¿ÅÍêÃÀƽºâµÄ 2-3 ²éÕÒÊ÷µÄËùÓпÕÁ´½Óµ½¸ù½ÚµãµÄ¾àÀëÓ¦¸ÃÊÇÏàͬµÄ¡£ -#### 1. ??????? +#### 1. ²åÈë²Ù×÷ -?????????????????? 4- ??????????? 4- ??????? 3 ?? 2- ????????§Þ?? 2- ????????????§µ?????????????????????? 4- ??????????§Ù???????????????????? 4- ??? +µ±²åÈëÖ®ºó²úÉúÒ»¸öÁÙʱ 4- ½Úµãʱ£¬ÐèÒª½« 4- ½Úµã·ÖÁÑ³É 3 ¸ö 2- ½Úµã£¬²¢½«ÖмäµÄ 2- ½ÚµãÒÆµ½Éϲã½ÚµãÖУ¬Èç¹ûÉÏÒÆ²Ù×÷¼ÌÐø²úÉúÁÙʱ 4- ½ÚµãÔòÒ»Ö±½øÐзÖÁÑÉÏÒÆ£¬Ö±µ½²»´æÔÚÁÙʱ 4- ½Úµã¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/912174d8-0786-4222-b7ef-a611d36e5db9.jpg) -#### 2. ???? +#### 2. ÐÔÖÊ -2-3 ???????????????ÈÎ??????????????????????????????????????????????????????§»????ÈÎ??????????????????????????? +2-3 ²éÕÒÊ÷²åÈë²Ù×÷µÄ±ä»»¶¼ÊǾֲ¿µÄ£¬³ýÁËÏà¹ØµÄ½ÚµãºÍÁ´½ÓÖ®Íâ²»±ØÐ޸ĻòÕß¼ì²éÊ÷µÄÆäËü²¿·Ö£¬¶øÕâЩ¾Ö²¿±ä»»²»»áÓ°ÏìÊ÷µÄÈ«¾ÖÓÐÐòÐÔºÍÆ½ºâÐÔ¡£ -2-3 ?????????????????????????????????????????????????????????????????????? logN ???????? 10 ??????? 2-3 ????????????????? 30 ???????????????????????????? +2-3 ²éÕÒÊ÷µÄ²éÕҺͲåÈë²Ù×÷¸´ÔӶȺͲåÈë˳ÐòÎ޹أ¬ÔÚ×µÄÇé¿öϲéÕҺͲåÈë²Ù×÷·ÃÎÊµÄ½Úµã±ØÈ»²»³¬¹ý logN ¸ö¡£º¬ÓÐ 10 ÒÚ¸ö½ÚµãµÄ 2-3 ²éÕÒÊ÷×î¶àÖ»ÐèÒª·ÃÎÊ 30 ¸ö½Úµã¾ÍÄܽøÐÐÈÎÒâµÄ²éÕҺͲåÈë²Ù×÷¡£ -### ??????????? +### ºìºÚ¶þ²æ²éÕÒÊ÷ -2-3 ???????????? 2- ???? 3- ??????????¨²?????????? 3- ????????????????????????????????????????????????????? 3- ???????????????????? +2-3 ²éÕÒÊ÷ÐèÒªÓõ½ 2- ½ÚµãºÍ 3- ½Úµã£¬ºìºÚÊ÷ʹÓúìÁ´½ÓÀ´ÊµÏÖ 3- ½Úµã¡£Ö¸ÏòÒ»¸ö½ÚµãµÄÁ´½ÓÑÕÉ«Èç¹ûΪºìÉ«£¬ÄÇôÕâ¸ö½ÚµãºÍÉϲã½Úµã±íʾµÄÊÇÒ»¸ö 3- ½Úµã£¬¶øºÚÉ«ÔòÊÇÆÕͨÁ´½Ó¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/7080a928-06ba-4e10-9792-b8dd190dc8e2.jpg) -?????????????????? +ºìºÚÊ÷¾ßÓÐÒÔÏÂÐÔÖÊ£º -1. ??????????????? -2. ????????????????????????????¡¤??????????????????? +1. ºìÁ´½Ó¶¼Îª×óÁ´½Ó£» +2. ÍêÃÀºÚɫƽºâ£¬¼´ÈÎÒâ¿ÕÁ´½Óµ½¸ù½ÚµãµÄ·¾¶ÉϵĺÚÁ´½ÓÊýÁ¿Ïàͬ¡£ -??????????????????????? +»­ºìºÚÊ÷ʱ¿ÉÒÔ½«ºìÁ´½Ó»­Æ½¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/62077f5d-a06d-4129-9b43-78715b82cb03.png) @@ -1276,9 +1267,9 @@ public class RedBlackBST, Value> { } ``` -#### 1. ????? +#### 1. ×óÐýת -?????????????????????????????????????????????????????????????????? +ÒòΪºÏ·¨µÄºìÁ´½Ó¶¼Îª×óÁ´½Ó£¬Èç¹û³öÏÖÓÒÁ´½ÓΪºìÁ´½Ó£¬ÄÇô¾ÍÐèÒª½øÐÐ×óÐýת²Ù×÷¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/33a4e822-2dd0-481e-ac89-7f6161034402.jpg) @@ -1297,9 +1288,9 @@ public Node rotateLeft(Node h) { } ``` -#### 2. ????? +#### 2. ÓÒÐýת -???????????????????????????????????????????????????????? +½øÐÐÓÒÐýתÊÇΪÁËת»»Á½¸öÁ¬ÐøµÄ×óºìÁ´½Ó£¬Õâ»áÔÚÖ®ºóµÄ²åÈë¹ý³ÌÖÐ̽ÌÖ¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/dfd078b2-aa4f-4c50-8319-232922d822b8.jpg) @@ -1317,9 +1308,9 @@ public Node rotateRight(Node h) { } ``` -#### 3. ?????? +#### 3. ÑÕɫת»» -??? 4- ??????????§Ò?????????????????????????????? 4- ?????????????????????????????????????????????????? 2-3 ?????????????§Þ??????????? +Ò»¸ö 4- ½ÚµãÔÚºìºÚÊ÷ÖбíÏÖΪһ¸ö½ÚµãµÄ×óÓÒ×ӽڵ㶼ÊǺìÉ«µÄ¡£·ÖÁÑ 4- ½Úµã³ýÁËÐèÒª½«×Ó½ÚµãµÄÑÕÉ«Óɺì±äºÚÖ®Í⣬ͬʱÐèÒª½«¸¸½ÚµãµÄÑÕÉ«Óɺڱäºì£¬´Ó 2-3 Ê÷µÄ½Ç¶È¿´¾ÍÊǽ«Öмä½ÚµãÒÆµ½Éϲã½Úµã¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/de7c5a31-55f5-4e9d-92ec-4ed5b2ec3828.jpg) @@ -1333,13 +1324,13 @@ void flipColors(Node h){ } ``` -#### 4. ???? +#### 4. ²åÈë -???????? +²åÈëËã·¨£º -- ???????????????????????????????????????? -- ?????????????????????????????????????????????? -- ??????????????????????????????? +- Èç¹ûÓÒ×Ó½ÚµãÊǺìÉ«µÄ¶ø×ó×Ó½ÚµãÊǺÚÉ«µÄ£¬½øÐÐ×óÐýת£» +- Èç¹û×ó×Ó½ÚµãÊǺìÉ«µÄÇÒËüµÄ×ó×Ó½ÚµãÒ²ÊǺìÉ«µÄ£¬½øÐÐÓÒÐýת£» +- Èç¹û×óÓÒ×Ó½Úµã¾ùΪºìÉ«µÄ£¬½øÐÐÑÕɫת»»¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/40639782-5df2-4e96-a4f3-f9dd664d0ca1.jpg) @@ -1365,55 +1356,55 @@ private Node put(Node x, Key key, Value val) { } ``` -????????¨°???????? BST ???????????????????????????????????ÈÎ???????¨À? +¿ÉÒÔ¿´µ½¸Ã²åÈë²Ù×÷ºÍ BST µÄ²åÈë²Ù×÷ÀàËÆ£¬Ö»ÊÇÔÚ×îºó¼ÓÈëÁËÐýתºÍÑÕÉ«±ä»»²Ù×÷¼´¿É¡£ -???????????????????????????????????????????????????????flipColors() ?§á????????????????????????????????????????????????????? 1. +¸ù½ÚµãÒ»¶¨ÎªºÚÉ«£¬ÒòΪ¸ù½ÚµãûÓÐÉϲã½Úµã£¬Ò²¾ÍûÓÐÉϲã½ÚµãµÄ×óÁ´½ÓÖ¸Ïò¸ù½Úµã¡£flipColors() ÓпÉÄÜ»áʹµÃ¸ù½ÚµãµÄÑÕÉ«±äΪºìÉ«£¬Ã¿µ±¸ù½ÚµãÓɺìÉ«±ä³ÉºÚɫʱÊ÷µÄºÚÁ´½Ó¸ß¶È¼Ó 1. -#### 5. ?????§³?? +#### 5. ɾ³ý×îС¼ü -?????§³??????? 2- ????§µ????????¨¹???????????????????????????????????????§³?????? 2- ????§³??? 2- ???????? 3- ?????? 4- ??????????????????????????????? key?????????????????? key???????????? 2- ???????????????????? key ?????????????¡¤????????§ß?????? 2- ??????????????????§µ??????????????????? +Èç¹û×îС¼üÔÚÒ»¸ö 2- ½ÚµãÖУ¬ÄÇôɾ³ý¸Ã¼ü»áÁôÏÂÒ»¸ö¿ÕÁ´½Ó£¬¾ÍÆÆ»µÁËÆ½ºâÐÔ£¬Òò´ËҪȷ±£×îС¼ü²»ÔÚ 2- ½ÚµãÖС£½« 2- ½Úµãת»»³É 3- ½Úµã»òÕß 4- ½ÚµãÓÐÁ½ÖÖ·½·¨£¬Ò»ÖÖÊÇÏòÉϲã½ÚµãÄÃÒ»¸ö key£¬»òÕßÏòÐֵܽڵãÄÃÒ»¸ö key¡£Èç¹ûÉϲã½ÚµãÊÇ 2- ½Úµã£¬ÄÇô¾Íû°ì·¨´ÓÉϲã½ÚµãÄà key ÁË£¬Òò´ËÒª±£Ö¤É¾³ý·¾¶ÉϵÄËùÓнڵ㶼²»ÊÇ 2- ½Úµã¡£ÔÚÏòÏÂɾ³ýµÄ¹ý³ÌÖУ¬±£Ö¤ÒÔÏÂÇé¿öÖ®Ò»·¢Éú£º -1. ?????????????????? 2- ??????? -2. ?????????????????? 2- ??????????????? 2- ??????????????? key ?????? -3. ???????????????????????????? 2- ?????????????????§Ö???§³???????????????????? 4- ??? +1. Èç¹ûµ±Ç°½ÚµãµÄ×ó×ӽڵ㲻ÊÇ 2- ½Úµã£¬Íê³É£» +2. Èç¹ûµ±Ç°½ÚµãµÄ×ó×Ó½ÚµãÊÇ 2- ½Úµã¶øËüµÄÐֵܽڵ㲻ÊÇ 2- ½Úµã£¬ÏòÐֵܽڵãÄÃÒ»¸ö key ¹ýÀ´£» +3. Èç¹ûµ±Ç°½ÚµãµÄ×ó×Ó½ÚµãºÍËüµÄÐֵܽڵ㶼ÊÇ 2- ½Úµã£¬½«×ó×ӽڵ㡢¸¸½ÚµãÖеÄ×îС¼üºÍ×î½üµÄÐֵܽڵãºÏ²¢ÎªÒ»¸ö 4- ½Úµã¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/b001fa64-307c-49af-b4b2-2043fc26154e.png) -??????????????§³???? 3- ?????? 4- ????????????????????????????????? 4- ??? +×îºóµÃµ½Ò»¸öº¬ÓÐ×îС¼üµÄ 3- ½Úµã»òÕß 4- ½Úµã£¬Ö±½Ó´ÓÖÐɾ³ý¡£È»ºóÔÙ´ÓÍ··Ö½âËùÓÐÁÙʱµÄ 4- ½Úµã¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/70b66757-755c-4e17-a7b7-5ce808023643.png) -#### 6. ???? +#### 6. ·ÖÎö -????§³? N ??????????????? 2lgN?????????????????????? 2-3 ???§Û?????????¡¤???????????? 3- ?????????? 2- ??? +Ò»¿Å´óСΪ N µÄºìºÚÊ÷µÄ¸ß¶È²»»á³¬¹ý 2lgN¡£×µÄÇé¿öÏÂÊÇËüËù¶ÔÓ¦µÄ 2-3 Ê÷Öй¹³É×î×ó±ßµÄ·¾¶½ÚµãÈ«²¿¶¼ÊÇ 3- ½Úµã¶øÆäÓà¶¼ÊÇ 2- ½Úµã¡£ -???????????????????????????????????? +ºìºÚÊ÷´ó¶àÊýµÄ²Ù×÷ËùÐèÒªµÄʱ¼ä¶¼ÊǶÔÊý¼¶±ðµÄ¡£ -## ??§Ò? +## É¢Áбí -??§Ò??????????ï…???????§Ò????????????????????????????§Ò??????????????????????????????????????????????????? +É¢ÁбíÀàËÆÓÚÊý×飬¿ÉÒÔ°ÑÉ¢ÁбíµÄÉ¢ÁÐÖµ¿´³ÉÊý×éµÄË÷ÒýÖµ¡£·ÃÎÊÉ¢ÁбíºÍ·ÃÎÊÊý×éÔªËØÒ»Ñù¿ìËÙ£¬Ëü¿ÉÒÔÔÚ³£Êýʱ¼äÄÚʵÏÖ²éÕҺͲåÈëµÄ·ûºÅ±í¡£ -??????????????????????§³??????????§Ò?????????????????? +ÓÉÓÚÎÞ·¨Í¨¹ýÉ¢ÁÐÖµÖªµÀ¼üµÄ´óС¹ØÏµ£¬Òò´ËÉ¢ÁбíÎÞ·¨ÊµÏÖÓÐÐòÐÔ²Ù×÷¡£ -### ??§Ü??? +### É¢Áк¯Êý -?????????§³? M ????§Ò???§Ü????????????????? [0, M-1] ?????????????????????? hash ??? +¶ÔÓÚÒ»¸ö´óСΪ M µÄÉ¢ÁÐ±í£¬É¢Áк¯ÊýÄܹ»°ÑÈÎÒâ¼üת»»Îª [0, M-1] ÄÚµÄÕýÕûÊý£¬¸ÃÕýÕûÊý¼´Îª hash Öµ¡£ -??§Ò??§Ô?????????????????????????????????? hash ??? +É¢ÁбíÓгåÍ»µÄ´æÔÚ£¬Ò²¾ÍÊÇÁ½¸ö²»Í¬µÄ¼ü¿ÉÄÜÓÐÏàͬµÄ hash Öµ¡£ -??§Ü???????????????????????? +É¢Áк¯ÊýÓ¦¸ÃÂú×ãÒÔÏÂÈý¸öÌõ¼þ£º -1. ???????????????????? hash ??? -2. ??§¹??????????????§Ò?????????? hash ???????????????? hash ???????????? -3. ??????????§Þ??? hash ????????????? [0, M-1] ???????????????????????????§Ò??????? +1. Ò»ÖÂÐÔ£ºÏàµÈµÄ¼üÓ¦µ±ÓÐÏàµÈµÄ hash Öµ¡£ +2. ¸ßЧÐÔ£º¼ÆËãÓ¦µ±¼ò±ã£¬ÓбØÒªµÄ»°¿ÉÒÔ°Ñ hash Öµ»º´æÆðÀ´£¬ÔÚµ÷Óà hash º¯Êýʱֱ½Ó·µ»Ø¡£ +3. ¾ùÔÈÐÔ£ºËùÓмüµÄ hash ÖµÓ¦µ±¾ùÔȵطֲ¼µ½ [0, M-1] Ö®¼ä£¬Õâ¸öÌõ¼þÖÁ¹ØÖØÒª£¬Ö±½ÓÓ°Ï쵽ɢÁбíµÄÐÔÄÜ¡£ -?????????????????????§Ö? [0, M-1] ???????????????? k?????? k%M ???????? [0, M-1] ???? hash ?????? M ?????????????????????????¨¹???????????????????? M ? 10k???????????¨¹???? k ¦Ë?? +³ýÁôÓàÊý·¨¿ÉÒÔ½«ÕûÊýÉ¢Áе½ [0, M-1] Ö®¼ä£¬ÀýÈçÒ»¸öÕýÕûÊý k£¬¼ÆËã k%M ¼È¿ÉµÃµ½Ò»¸ö [0, M-1] Ö®¼äµÄ hash Öµ¡£×¢Òâ M ±ØÐëÊÇÒ»¸öËØÊý£¬·ñÔòÎÞ·¨ÀûÓüü°üº¬µÄËùÓÐÐÅÏ¢¡£ÀýÈç M Ϊ 10k£¬ÄÇôֻÄÜÀûÓüüµÄºó k λ¡£ -?????????????????????????????????????????¨®??????????????????????????????????????????????????????????????????????§Ô??????????? +¶ÔÓÚÆäËüÊý£¬¿ÉÒÔ½«Æäת»»³ÉÕûÊýµÄÐÎʽ£¬È»ºóÀûÓóýÁôÓàÊý·¨¡£ÀýÈç¶ÔÓÚ¸¡µãÊý£¬¿ÉÒÔ½«Æä±íʾ³É¶þ½øÖÆÐÎʽ£¬È»ºóʹÓöþ½øÖÆÐÎʽµÄÕûÊýÖµ½øÐгýÁôÓàÊý·¨¡£ -?????§Ø??????????????????????? hash ??????????????????????? hash ????????????????¦Ë????????¨¹????? R ????????????????????????§Ó???????? +¶ÔÓÚÓжಿ·Ö×éºÏµÄ¼ü£¬Ã¿²¿·Ö¶¼ÐèÒª¼ÆËã hash Öµ£¬²¢ÇÒ×îºóºÏ²¢Ê±ÐèÒªÈÃÿ²¿·Ö hash Öµ¶¼¾ßÓÐͬµÈÖØÒªµÄµØÎ»¡£¿ÉÒÔ½«¸Ã¼ü¿´³É R ½øÖƵÄÕûÊý£¬¼üÖÐÿ²¿·Ö¶¼¾ßÓв»Í¬µÄȨֵ¡£ -???íà?????????§Ü?????????? +ÀýÈ磬×Ö·û´®µÄÉ¢Áк¯ÊýʵÏÖÈçÏ ```java int hash = 0; @@ -1421,21 +1412,21 @@ for(int i = 0; i < s.length(); i++) hash = (R * hash + s.charAt(i)) % M; ``` -????íà??§Ø????????????????????????? +ÔÙ±ÈÈ磬ӵÓжà¸ö³ÉÔ±µÄ×Ô¶¨ÒåÀàµÄ¹þÏ£º¯ÊýÈçÏ ```java int hash = (((day * R + month) % M) * R + year) % M; ``` -R ????????????????? 31?? +R µÄÖµ²»ÊǺÜÖØÒª£¬Í¨³£È¡ 31¡£ -Java ?§Ö? hashCode() ????? hash ????????????????????????????????? hashCode() ??????????????????????????¨¢??????????? 32 ¦Ë?????????????? 31 ¦Ë???????????????????¦Ç???¦Ë???????¨®??????????? +Java ÖÐµÄ hashCode() ʵÏÖÁË hash º¯Êý£¬µ«ÊÇĬÈÏʹÓöÔÏóµÄÄÚ´æµØÖ·Öµ¡£ÔÚʹÓà hashCode() º¯Êýʱ£¬Ó¦µ±½áºÏ³ýÁôÓàÊý·¨À´Ê¹Óá£ÒòΪÄÚ´æµØÖ·ÊÇ 32 λÕûÊý£¬ÎÒÃÇÖ»ÐèÒª 31 λµÄ·Ç¸ºÕûÊý£¬Òò´ËÓ¦µ±ÆÁ±Î·ûºÅλ֮ºóÔÙʹÓóýÁôÓàÊý·¨¡£ ```java int hash = (x.hashCode() & 0x7fffffff) % M; ``` -??? Java ????? HashMap ????????????????????????? Key ????? hashCode() ??????????????????????? M ???§³???Java ?ÕÇ hashCode() ??????????????????§Ö? 32 ¦Ë??????Java ?§Ö? String??Integer ?????? hashCode() ??????????????????????????????????? hashCode()?? +ʹÓà Java ×Ô´øµÄ HashMap µÈ×Ô´øµÄ¹þÏ£±íʵÏÖʱ£¬Ö»ÐèҪȥʵÏÖ Key ÀàÐ굀 hashCode() º¯Êý¼´¿É£¬Òò´ËÒ²¾Í²»ÐèÒª¿¼ÂÇ M µÄ´óСµÈ¡£Java ¹æ¶¨ hashCode() Äܹ»½«¼ü¾ùÔÈ·Ö²¼ÓÚËùÓÐµÄ 32 λÕûÊý£¬Java ÖÐµÄ String¡¢Integer µÈ¶ÔÏóµÄ hashCode() ¶¼ÄÜʵÏÖÕâÒ»µã¡£ÒÔÏÂչʾÁË×Ô¶¨ÒåÀàÐÍÈçºÎʵÏÖ hashCode()¡£ ```java public class Transaction{ @@ -1453,17 +1444,17 @@ public class Transaction{ } ``` -### ??????????????§Ò? +### »ùÓÚÀ­Á´·¨µÄÉ¢Áбí -????????????????›¥ hash ????????????????????????????????????????????? Key ??????????????????????????? +À­Á´·¨Ê¹ÓÃÁ´±íÀ´´æ´¢ hash ÖµÏàͬµÄ¼ü£¬´Ó¶ø½â¾ö³åÍ»¡£´Ëʱ²éÕÒÐèÒª·ÖÁ½²½£¬Ê×ÏȲéÕÒ Key ËùÔÚµÄÁ´±í£¬È»ºóÔÚÁ´±íÖÐ˳Ðò²éÕÒ¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/540133af-aaaf-4208-8f7f-33cb89ac9621.png) -???? N ??????M ?????? (N>M)????????????????????????????????????????§³?????? N/M?????¦Ä???§Ö???????????????????????? \~N/M?? +¶ÔÓÚ N ¸ö¼ü£¬M ÌõÁ´±í (N>M)£¬Èç¹û¹þÏ£º¯ÊýÄܹ»Âú×ã¾ùÔÈÐÔµÄÌõ¼þ£¬Ã¿ÌõÁ´±íµÄ´óСÇ÷ÏòÓÚ N/M£¬Òò´ËδÃüÖеIJéÕҺͲåÈë²Ù×÷ËùÐèÒªµÄ±È½Ï´ÎÊýΪ \~N/M¡£ -### ???????????????§Ò? +### »ùÓÚÏßÐÔ̽²â·¨µÄÉ¢Áбí -???????????¦Ë?????????????????????????????????¦Ë???›¥?????????????????????????§³ M ????????????? N??M>N)?? +ÏßÐÔ̽²â·¨Ê¹ÓÿÕλÀ´½â¾ö³åÍ»£¬µ±³åÍ»·¢Éúʱ£¬Ïòǰ̽²âÒ»¸ö¿ÕλÀ´´æ´¢³åÍ»µÄ¼ü¡£Ê¹ÓÃÏß³Ì̽²â·¨£¬Êý×éµÄ´óС M Ó¦µ±´óÓÚ¼üµÄ¸öÊý N£¨M>N)¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/2b3410f1-9559-4dd1-bc3d-e3e572247be2.png) @@ -1494,7 +1485,7 @@ public class LinearProbingHashST { } ``` -#### ???? +#### ²éÕÒ ```java public Value get(Key key) { @@ -1507,7 +1498,7 @@ public Value get(Key key) { } ``` -#### ???? +#### ²åÈë ```java public void put(Key key, Value val) { @@ -1525,9 +1516,9 @@ public void put(Key key, Value val) { } ``` -#### ??? +#### ɾ³ý -???????????????????????????????????§Ò??§³? +ɾ³ý²Ù×÷Ó¦µ±½«ÓÒ²àËùÓÐÏàÁڵļüÖµÖØÐ²åÈëÉ¢ÁбíÖС£ ```java public void delete(Key key) { @@ -1553,15 +1544,15 @@ public void delete(Key key) { } ``` -#### ?????????§³ +#### µ÷ÕûÊý×é´óС -??????????????????????????????????????§à??????????????????????????????§Ü?????? +ÏßÐÔ̽²â·¨µÄ³É±¾È¡¾öÓÚÁ¬ÐøÌõÄ¿µÄ³¤¶È£¬Á¬ÐøÌõĿҲ½Ð¾Û´Ø¡£µ±¾Û´ØºÜ³¤Ê±£¬ÔÚ²éÕҺͲåÈëʱҲÐèÒª½øÐкܶà´Î̽²â¡£ -?? = N/M???? ?? ????????????????????? ?? §³?? 1/2 ?????????????? 1.5 ?? 2.5 ??? +¦Á = N/M£¬°Ñ ¦Á ³ÆÎªÀûÓÃÂÊ¡£ÀíÂÛÖ¤Ã÷£¬µ± ¦Á СÓÚ 1/2 ʱ̽²âµÄÔ¤¼Æ´ÎÊýÖ»ÔÚ 1.5 µ½ 2.5 Ö®¼ä¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/0ddebc5c-7c24-46b1-98db-4fa5e54db16b.png) -???????§Ò????????????????????§³????? ?? ?? [1/4, 1/2] ??? +ΪÁ˱£Ö¤É¢ÁбíµÄÐÔÄÜ£¬Ó¦µ±µ÷ÕûÊý×éµÄ´óС£¬Ê¹µÃ ¦Á ÔÚ [1/4, 1/2] Ö®¼ä¡£ ```java private void resize() { @@ -1582,29 +1573,29 @@ private void resize(int cap) { } ``` -????????????????úY??????¡ã??????????????§Ò?????????????????????????????????????§³???????????????????????øA????????????????????? 1?????????????????????????????????????????????????? +ËäȻÿ´ÎÖØÐµ÷ÕûÊý×é¶¼ÐèÒªÖØÐ°Ñÿ¸ö¼üÖµ¶Ô²åÈ뵽ɢÁÐ±í£¬µ«ÊÇ´Ó̯»¹·ÖÎöµÄ½Ç¶ÈÀ´¿´£¬ËùÐèÒªµÄ´ú¼ÛÈ´ÊǺÜСµÄ¡£´ÓÏÂͼ¿ÉÒÔ¿´³ö£¬Ã¿´ÎÊý×鳤¶È¼Ó±¶ºó£¬ÀÛ¼ÆÆ½¾ùÖµ¶¼»áÔö¼Ó 1£¬ÒòΪ±íÖÐÿ¸ö¼ü¶¼ÐèÒªÖØÐ¼ÆËãÉ¢ÁÐÖµ£¬µ«ÊÇËæºóƽ¾ùÖµ»áϽµ¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/01658047-0d86-4a7a-a8ca-7ea20fa1fdde.png) -## ??? +## Ó¦Óà -### ?????????????? +### ¸÷ÖÖ·ûºÅ±íʵÏÖµÄ±È½Ï ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/9ee83c8c-1165-476c-85a6-e6e434e5307a.jpg) -????????????§Ò??????????????????¨²?????? +Ó¦µ±ÓÅÏÈ¿¼ÂÇÉ¢ÁÐ±í£¬µ±ÐèÒªÓÐÐòÐÔ²Ù×÷ʱʹÓúìºÚÊ÷¡£ -### Java ????????? +### Java µÄ·ûºÅ±íʵÏÖ -Java ?? java.util.TreeMap ?? java.util.HashMap ????????????????????????§Ò?????????? +Java µÄ java.util.TreeMap ºÍ java.util.HashMap ·Ö±ðÊÇ»ùÓÚºìºÚÊ÷ºÍÀ­Á´·¨µÄÉ¢ÁбíµÄ·ûºÅ±íʵÏÖ¡£ -### ???????? +### ¼¯ºÏÀàÐÍ -?????????????????????????????§Þ????????????¨¹??????????›¥???§Ö??????§Ø???????????????§³? +³ýÁË·ûºÅ±í£¬¼¯ºÏÀàÐÍÒ²¾­³£Ê¹Óã¬ËüÖ»ÓмüûÓÐÖµ£¬¿ÉÒÔÓü¯ºÏÀàÐÍÀ´´æ´¢Ò»ÏµÁеļüÈ»ºóÅжÏÒ»¸ö¼üÊÇ·ñÔÚ¼¯ºÏÖС£ -### ?????????? +### Ï¡ÊèÏòÁ¿³Ë·¨ -?????????�p?? N ?¦Ã???????????????????????????¡Â???????›¥?????§Ö?? 0 ???????????¨®??????????????§»?? 0 ?????§Þ??¨À? +ÏòÁ¿ÔËËãÉæ¼°µ½ N ´Î³Ë·¨£¬µ±ÏòÁ¿ÎªÏ¡ÊèÏòÁ¿Ê±£¬¿ÉÒÔʹÓ÷ûºÅ±íÀ´´æ´¢ÏòÁ¿ÖÐµÄ·Ç 0 Ë÷ÒýºÍÖµ£¬Ê¹µÃ³Ë·¨ÔËËãÖ»ÐèÒª¶ÔÄÇЩ·Ç 0 ÔªËØ½øÐм´¿É¡£ ```java import java.util.HashMap; diff --git a/notes/编写å�¯è¯»ä»£ç �的艺术.md b/notes/编写å�¯è¯»ä»£ç �的艺术.md index 81b55de5..5f14f947 100644 --- a/notes/编写å�¯è¯»ä»£ç �的艺术.md +++ b/notes/编写å�¯è¯»ä»£ç �的艺术.md @@ -1,92 +1,92 @@ -* [?? 1 ?? ???????????](#??-1-??-???????????) -* [?? 2 ?? ?????????????](#??-2-??-?????????????) -* [?? 3 ?? ??????????????](#??-3-??-??????????????) -* [?? 4 ?? ??????????](#??-4-??-??????????) -* [?? 5 ?? ??§Õ???](#??-5-??-??§Õ???) -* [?? 6 ?? ??¦Á?§Õ???](#??-6-??-??¦Á?§Õ???) -* [?? 7 ?? ??????????????](#??-7-??-??????????????) -* [?? 8 ?? ????????](#??-8-??-????????) -* [?? 9 ?? ??????????](#??-9-??-??????????) -* [?? 10 ?? ???????](#??-10-??-???????) -* [?? 11 ?? ???????????](#??-11-??-???????????) -* [?? 12 ?? ????????????????](#??-12-??-????????????????) -* [?? 13 ?? ?????????](#??-13-??-?????????) +* [µÚ 1 Õ ¿É¶ÁÐÔµÄÖØÒªÐÔ](#µÚ-1-ÕÂ-¿É¶ÁÐÔµÄÖØÒªÐÔ) +* [µÚ 2 Õ ÓÃÃû×Ö±í´ï´úÂ뺬Òå](#µÚ-2-ÕÂ-ÓÃÃû×Ö±í´ï´úÂ뺬Òå) +* [µÚ 3 Õ Ãû×Ö²»ÄÜ´øÀ´ÆçÒå](#µÚ-3-ÕÂ-Ãû×Ö²»ÄÜ´øÀ´ÆçÒå) +* [µÚ 4 Õ Á¼ºÃµÄ´úÂë·ç¸ñ](#µÚ-4-ÕÂ-Á¼ºÃµÄ´úÂë·ç¸ñ) +* [µÚ 5 Õ ±àдעÊÍ](#µÚ-5-ÕÂ-±àдעÊÍ) +* [µÚ 6 Õ ÈçºÎ±àдעÊÍ](#µÚ-6-ÕÂ-ÈçºÎ±àдעÊÍ) +* [µÚ 7 Õ Ìá¸ß¿ØÖÆÁ÷µÄ¿É¶ÁÐÔ](#µÚ-7-ÕÂ-Ìá¸ß¿ØÖÆÁ÷µÄ¿É¶ÁÐÔ) +* [µÚ 8 Õ ²ð·Ö³¤±í´ïʽ](#µÚ-8-ÕÂ-²ð·Ö³¤±í´ïʽ) +* [µÚ 9 Õ ±äÁ¿Óë¿É¶ÁÐÔ](#µÚ-9-ÕÂ-±äÁ¿Óë¿É¶ÁÐÔ) +* [µÚ 10 Õ ³éÈ¡º¯Êý](#µÚ-10-ÕÂ-³éÈ¡º¯Êý) +* [µÚ 11 Õ һ´ÎÖ»×öÒ»¼þÊÂ](#µÚ-11-ÕÂ-Ò»´ÎÖ»×öÒ»¼þÊÂ) +* [µÚ 12 Õ ÓÃ×ÔÈ»ÓïÑÔ±íÊö´úÂë](#µÚ-12-ÕÂ-ÓÃ×ÔÈ»ÓïÑÔ±íÊö´úÂë) +* [µÚ 13 Õ ¼õÉÙ´úÂëÁ¿](#µÚ-13-ÕÂ-¼õÉÙ´úÂëÁ¿) -# ?? 1 ?? ??????????? +# µÚ 1 Õ ¿É¶ÁÐÔµÄÖØÒªÐÔ -????§Ü?????????????????????????????????????????????????????????????????????????????????§¹??? +±à³ÌÓкܴóÒ»²¿·Öʱ¼äÊÇÔÚÔĶÁ´úÂ룬²»½öÒªÔĶÁ×Ô¼ºµÄ´úÂ룬¶øÇÒÒªÔĶÁ±ðÈ˵ĴúÂë¡£Òò´Ë£¬¿É¶ÁÐÔÁ¼ºÃµÄ´úÂëÄܹ»´ó´óÌá¸ß±à³ÌЧÂÊ¡£ -?????????????????????????????????????????????????????????????????????? +¿É¶ÁÐÔÁ¼ºÃµÄ´úÂëÍùÍù»áÈôúÂë¼Ü¹¹¸üºÃ£¬ÒòΪ³ÌÐòÔ±¸üÔ¸ÒâÈ¥ÐÞ¸ÄÕⲿ·Ö´úÂ룬¶øÇÒÒ²¸üÈÝÒ×Ð޸ġ£ -???????????????§¹???????????????????????????¦Ë?? +Ö»ÓÐÔÚºËÐÄÁìÓòΪÁËЧÂʲſÉÒÔ·ÅÆú¿É¶ÁÐÔ£¬·ñÔò¿É¶ÁÐÔÊǵÚһλ¡£ -# ?? 2 ?? ????????????? +# µÚ 2 Õ ÓÃÃû×Ö±í´ï´úÂ뺬Òå -?§»????§Ò?????????? +һЩ±È½ÏÓбí´ïÁ¦µÄµ¥´Ê£º -| ???? | ????????? | +| µ¥´Ê | ¿ÉÌæ´úµ¥´Ê | | --- | --- | -| send | deliver??dispatch??announce??distribute??route | -| find | search??extract??locate??recover | -| start| launch??create??begin??open| -|make|create??set up??build??generate??compose??add??new| +| send | deliver¡¢dispatch¡¢announce¡¢distribute¡¢route | +| find | search¡¢extract¡¢locate¡¢recover | +| start| launch¡¢create¡¢begin¡¢open| +|make|create¡¢set up¡¢build¡¢generate¡¢compose¡¢add¡¢new| -??? i??j??k ?????????????????????????????????§Ò??????????????????? user_i??member_i?????????????????????????§Ò??????????????????????? +ʹÓà i¡¢j¡¢k ×÷Ϊѭ»·µü´úÆ÷²»×ÜÊǺõģ¬Îªµü´úÆ÷Ìí¼Ó¸üÓбí´ïÁ¦µÄÃû×Ö»á¸üºÃ£¬±ÈÈç user_i¡¢member_i¡£ÒòΪѭ»·²ã´ÎÔ½¶à£¬´úÂëÔ½ÄÑÀí½â£¬Óбí´ïÁ¦µÄµü´úÆ÷Ãû×ֿɶÁÐÔ»á¸ü¸ß -?????????????????????????????§Ò??????????????????????????????????????????????????????????????????????????§»??????? +ΪÃû×ÖÌí¼ÓÐÎÈݴʵÈÐÅÏ¢ÄÜÈÃÃû×Ö¸ü¾ßÓбí´ïÁ¦£¬µ«ÊÇÃû×ÖÒ²»á±ä³¤¡£Ãû×Ö³¤¶ÌµÄ×¼ÔòÊÇ£º×÷ÓÃÓòÔ½´ó£¬Ãû×ÖÔ½³¤¡£Òò´ËÖ»ÓÐÔÚ¶Ì×÷ÓÃÓò²ÅÄÜʹÓÃһЩ¼òµ¥Ãû×Ö¡£ -# ?? 3 ?? ?????????????? +# µÚ 3 Õ Ãû×Ö²»ÄÜ´øÀ´ÆçÒå -??????????????¡À?????????????§Ü¦Í???????????????????????‰^ +ÆðÍêÃû×ÖҪ˼¿¼Ò»Ï±ðÈË»á¶ÔÕâ¸öÃû×ÖÓкνâ¶Á£¬»á²»»áÎó½âÁËÔ­±¾Ïë±í´ïµÄº¬Òå¡£ -?? min??max ?????????¦¶?? +Óà min¡¢max ±íʾÊýÁ¿·¶Î§£» -?? first??last ???????????????¦¶??begin??end ???????????????¦¶???? end ??????¦Â???? +Óà first¡¢last ±íʾ·ÃÎʿռäµÄ°üº¬·¶Î§£¬begin¡¢end ±íʾ·ÃÎʿռäµÄÅųý·¶Î§£¬¼´ end ²»°üº¬Î²²¿¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/26772ecc-a3e3-4ab7-a46f-8b4656990c27.jpg) -???????????????? is??can??should??has ?????? +²¼¶ûÏà¹ØµÄÃüÃû¼ÓÉÏ is¡¢can¡¢should¡¢has µÈǰ׺¡£ -# ?? 4 ?? ?????????? +# µÚ 4 Õ Á¼ºÃµÄ´úÂë·ç¸ñ -???????§Ü????? +Êʵ±µÄ¿ÕÐкÍËõ½ø -????????????? +ÅÅÁÐÕûÆëµÄ×¢ÊÍ£º ``` -int a = 1; // ??? -int b = 11; // ??? -int c = 111; // ??? +int a = 1; // ×¢ÊÍ +int b = 11; // ×¢ÊÍ +int c = 111; // ×¢ÊÍ ``` -?????????????????? html ??????????????????¨²???? html ?§Ö???????? +Óï¾ä˳Ðò²»ÄÜËæÒ⣬±ÈÈçÓë html ±íµ¥Ïà¹ØÁªµÄ±äÁ¿µÄ¸³ÖµÓ¦¸ÃºÍ±íµ¥ÔÚ html ÖеÄ˳ÐòÒ»Ö£» -????????????????????? +°ÑÏà¹ØµÄ´úÂë°´¿é×éÖ¯·ÅÔÚÒ»Æð¡£ -# ?? 5 ?? ??§Õ??? +# µÚ 5 Õ ±àдעÊÍ -????????????????????????????????????????????????????????§»???????????????????§Õ???????????????????????????????????????§»??? getter ?? setter ?????????§»????§Õ?????????????????þŸ +ÔĶÁ´úÂëÊ×ÏÈ»á×¢Òâµ½×¢ÊÍ£¬Èç¹û×¢ÊÍû̫´ó×÷Óã¬ÄÇô¾Í»áÀË·Ñ´úÂëÔĶÁµÄʱ¼ä¡£ÄÇЩÄÜÖ±½Ó¿´³öº¬ÒåµÄ´úÂë²»ÐèҪдעÊÍ£¬ÌرðÊDz¢²»ÐèҪΪÿ¸ö·½·¨¶¼¼ÓÉÏ×¢ÊÍ£¬±ÈÈçÄÇЩ¼òµ¥µÄ getter ºÍ setter ·½·¨£¬ÎªÕâЩ·½·¨Ð´×¢ÊÍ·´¶øÈôúÂë¿É¶ÁÐÔ¸ü²î¡£ -???????????????????????????????????????????§Õ???? +²»ÄÜÒòΪÓÐ×¢Ê;ÍËæ±ãÆð¸öÃû×Ö£¬¶øÊÇÕùÈ¡Æð¸öºÃÃû×Ö¶ø²»Ð´×¢ÊÍ¡£ -?????????????????????????????????????????????????????? +¿ÉÒÔÓÃ×¢ÊÍÀ´¼Ç¼²ÉÓõ±Ç°½â¾ö°ì·¨µÄ˼¿¼¹ý³Ì£¬´Ó¶øÈöÁÕ߸üÈÝÒ×Àí½â´úÂë¡£ -????????????§»????????? +×¢ÊÍÓÃÀ´ÌáÐÑÒ»Ð©ÌØÊâÇé¿ö¡£ -?? TODO ???????? +Óà TODO µÈ×ö±ê¼Ç£º -| ??? | ?¡Â? | +| ±ê¼Ç | Ó÷¨ | |---|---| -|TODO| ???? | -|FIXME| ????? | -|HACH| ?????????? | -|XXX| ¦²?????????????????? | +|TODO| ´ý×ö | +|FIXME| ´ýÐÞ¸´ | +|HACH| ´Ö²ÚµÄ½â¾ö·½°¸ | +|XXX| ΣÏÕ£¡ÕâÀïÓÐÖØÒªµÄÎÊÌâ | -# ?? 6 ?? ??¦Á?§Õ??? +# µÚ 6 Õ ÈçºÎ±àдעÊÍ -???????????? +¾¡Á¿¼ò½àÃ÷ÁË£º ``` // The first String is student's name @@ -99,7 +99,7 @@ Map scoreMap = new HashMap<>(); Map scoreMap = new HashMap<>(); ``` -????????????????? +Ìí¼Ó²âÊÔÓÃÀýÀ´ËµÃ÷£º ``` //... @@ -109,7 +109,7 @@ int add(int x, int y) { } ``` -???????????????§Ø????????????????? +Ôںܸ´Ôӵĺ¯Êýµ÷ÓÃÖжÔÿ¸ö²ÎÊý±êÉÏÃû×Ö£º ``` int a = 1; @@ -117,37 +117,37 @@ int b = 2; int num = add(\* x = *\ a, \* y = *\ b); ``` -??????????????????????????????????????????????? +ʹÓÃרҵÃû´ÊÀ´Ëõ¶Ì¸ÅÄîÉϵĽâÊÍ£¬±ÈÈçÓÃÉè¼ÆÄ£Ê½ÃûÀ´ËµÃ÷´úÂë¡£ -# ?? 7 ?? ?????????????? +# µÚ 7 Õ Ìá¸ß¿ØÖÆÁ÷µÄ¿É¶ÁÐÔ -?????????§µ????????????????????????????????????????? +Ìõ¼þ±í´ïʽÖУ¬×ó²àÊDZäÁ¿£¬ÓÒ²àÊdz£Êý¡£±ÈÈçÏÂÃæµÚÒ»¸öÓï¾äÕýÈ·£º ``` if(len < 10) if(10 > len) ``` -if / else ??????????????????????? ????????? ???????????????? +if / else Ìõ¼þÓï¾ä£¬ÏÈ´¦ÀíÒÔÏÂÂß¼­£º¢Ù ÕýÂß¼­£»¢Ú ¹Ø¼üÂß¼­£»¢Û£º¼òµ¥Âß¼­ ``` if(a == b) { - // ????? + // ÕýÂß¼­ } else{ - // ????? + // ·´Âß¼­ } ``` -??????????????????? ? : ???????????????????????????¨°??? if / else?? +Ö»ÓÐÔÚÂß¼­¼òµ¥µÄÇé¿öÏÂʹÓà ? : ÈýÄ¿ÔËËã·ûÀ´Ê¹´úÂë¸ü½ô´Õ£¬·ñÔòÓ¦¸Ã²ð·Ö³É if / else£» -do / while ????????????—¨???????????????????§»?????????????? while ?????µµ +do / while µÄÌõ¼þ·ÅÔÚºóÃæ£¬²»¹»¼òµ¥Ã÷ÁË£¬²¢ÇÒ»áÓÐһЩÃÔ»óµÄµØ·½£¬×îºÃʹÓà while À´´úÌæ¡£ -????????? goto ?????? goto ?????????????????????? goto ???????????????????????? goto?? +Èç¹ûÖ»ÓÐÒ»¸ö goto Ä¿±ê£¬ÄÇô goto ÉÐÇÒ»¹ÄܽÓÊÜ£¬µ«ÊǹýÓÚ¸´Ô goto »áÈôúÂë¿É¶ÁÐÔÌØ±ð²î£¬Ó¦¸Ã±ÜÃâʹÓà goto¡£ -??????????§µ????§» return ????????????????????? +ÔÚǶÌ×µÄÑ­»·ÖУ¬ÓÃһЩ return Óï¾äÍùÍùÄܼõÉÙǶÌ׵IJãÊý¡£ -# ?? 8 ?? ???????? +# µÚ 8 Õ ²ð·Ö³¤±í´ïʽ -???????????????????????§»?????????????????? +³¤±í´ïʽµÄ¿É¶ÁÐԺܲ¿ÉÒÔÒýÈëһЩ½âÊͱäÁ¿´Ó¶ø²ð·Ö±í´ïʽ£º ``` if line.split(':')[0].strip() == "root": @@ -159,7 +159,7 @@ if username == "root": ... ``` -????????????§»????????? +ʹÓÃĦ¸ù¶¨Àí¼ò»¯Ò»Ð©Âß¼­±í´ïʽ£º ``` if(!a && !b) { @@ -172,9 +172,9 @@ if(a || b) { } ``` -# ?? 9 ?? ?????????? +# µÚ 9 Õ ±äÁ¿Óë¿É¶ÁÐÔ -????????????????????????? break ???? return ????????????????????¨¢? +È¥³ý¿ØÖÆÁ÷±äÁ¿¡£ÔÚÑ­»·ÖÐͨ¹ý break »òÕß return ¿ÉÒÔ¼õÉÙ¿ØÖÆÁ÷±äÁ¿µÄʹÓᣠ``` boolean done = false; @@ -195,9 +195,9 @@ while(/* condition */) { } ``` -??§³?????????????????§³????????¦Ë?????????????????? +¼õС±äÁ¿×÷ÓÃÓò¡£×÷ÓÃÓòԽС£¬Ô½ÈÝÒ×¶¨Î»µ½±äÁ¿ËùÓÐʹÓõĵط½¡£ -JavaScript ??????????§³??????????????? submit_form ???????????submitted ????????????????????¦±??????????? submitted ??????????????????? submitted ????????????§µ??????????????????¦¶?? +JavaScript ¿ÉÒÔÓñհü¼õС×÷ÓÃÓò¡£ÒÔÏ´úÂëÖÐ submit_form ÊǺ¯Êý±äÁ¿£¬submitted ±äÁ¿¿ØÖƺ¯Êý²»»á±»Ìá½»Á½´Î¡£µÚÒ»¸öʵÏÖÖÐ submitted ÊÇÈ«¾Ö±äÁ¿£¬µÚ¶þ¸öʵÏÖ°Ñ submitted ·Åµ½ÄäÃûº¯ÊýÖУ¬´Ó¶øÏÞÖÆÁËÆð×÷ÓÃÓò·¶Î§¡£ ``` submitted = false; @@ -218,16 +218,16 @@ var submit_form = (function() { } submitted = true; } -}()); // () ????????????????????? +}()); // () ʹµÃÍâ²ãÄäÃûº¯ÊýÁ¢¼´Ö´ÐÐ ``` -JavaScript ??????? var ????????????????????????????????????????????????????? var ???????????? +JavaScript ÖÐûÓÐÓà var ÉùÃ÷µÄ±äÁ¿¶¼ÊÇÈ«¾Ö±äÁ¿£¬¶øÈ«¾Ö±äÁ¿ºÜÈÝÒ×Ôì³ÉÃÔ»ó£¬Òò´ËÓ¦µ±×ÜÊÇÓà var À´ÉùÃ÷±äÁ¿¡£ -?????????¦Ë?????????????¦Ë??????? +±äÁ¿¶¨ÒåµÄλÖÃÓ¦µ±ÀëËüʹÓõÄλÖÃ×î½ü¡£ -**???????** +**ʵÀý½âÎö** -?????????????????????????¦²? +ÔÚÒ»¸öÍøÒ³ÖÐÓÐÒÔÏÂÎı¾ÊäÈë×ֶΣº ``` @@ -236,7 +236,7 @@ JavaScript ??????? var ????????????????????????????????????????????????????? var ``` -?????????????????????????????????? input ????§µ???????????? +ÏÖÔÚÒª½ÓÊÜÒ»¸ö×Ö·û´®²¢°ÑËü·Åµ½µÚÒ»¸ö¿ÕµÄ input ×Ö¶ÎÖУ¬³õʼʵÏÖÈçÏ£º ``` var setFirstEmptyInput = function(new_alue) { @@ -256,11 +256,11 @@ var setFirstEmptyInput = function(new_alue) { } ``` -????????????????? +ÒÔÉÏʵÏÖÓÐÒÔÏÂÎÊÌ⣺ -- found ????????? -- elem ????????? -- ?????? for ??????? while ????? +- found ¿ÉÒÔÈ¥³ý£» +- elem ×÷ÓÃÓò¹ý´ó£» +- ¿ÉÒÔÓà for Ñ­»·´úÌæ while Ñ­»·£» ``` var setFirstEmptyInput = function(new_value) { @@ -277,13 +277,13 @@ var setFirstEmptyInput = function(new_value) { }; ``` -# ?? 10 ?? ??????? +# µÚ 10 Õ ³éÈ¡º¯Êý -??????????????????§³?????????§»????????????????? +¹¤³Ìѧ¾ÍÊǰѴóÎÊÌâ²ð·Ö³ÉСÎÊÌâÔÙ°ÑÕâЩÎÊÌâµÄ½â¾ö·½°¸·Å»ØÒ»Æð¡£ -?????????????????????????????????????????????????????????????????????????§³? +Ê×ÏÈÓ¦¸ÃÃ÷È·Ò»¸öº¯ÊýµÄ¸ß²ã´ÎÄ¿±ê£¬È»ºó¶ÔÓÚ²»ÊÇÖ±½ÓΪÁËÕâ¸öÄ¿±ê¹¤×÷µÄ´úÂ룬³éÈ¡³öÀ´·Åµ½¶ÀÁ¢µÄº¯ÊýÖС£ -?????????? +½éÉÜÐԵĴúÂ룺 ``` int findClostElement(int[] arr) { @@ -304,7 +304,7 @@ int findClostElement(int[] arr) { } ``` -??????????????????????????????????????????????????????????§³?????????????????????????????????????§³???????????????????????§µ???????????§Ó????????????????????????? +ÒÔÉÏ´úÂëÖÐÑ­»·²¿·ÖÖ÷Òª¼ÆËã¾àÀ룬Õⲿ·Ö²»ÊôÓÚ´úÂë¸ß²ã´ÎÄ¿±ê£¬¸ß²ã´ÎÄ¿±êÊÇѰÕÒ×îС¾àÀëµÄÖµ£¬Òò´Ë¿ÉÒÔ°ÑÕⲿ·Ö´úÌæÌáÈ¡µ½¶ÀÁ¢µÄº¯ÊýÖС£ÕâÑù×öÒ²´øÀ´Ò»¸ö¶îÍâµÄºÃ´¦ÓУº¿ÉÒÔµ¥¶À½øÐвâÊÔ¡¢¿ÉÒÔ¿ìËÙÕÒµ½³ÌÐò´íÎó²¢Ð޸ġ£ ``` public int findClostElement(int[] arr) { @@ -321,22 +321,22 @@ public int findClostElement(int[] arr) { } ``` -????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? +²¢²»ÊǺ¯Êý³éÈ¡µÄÔ½¶àÔ½ºÃ£¬Èç¹û³éÈ¡¹ý¶à£¬ÔÚÔĶÁ´úÂëµÄʱºò¿ÉÄÜÐèÒª²»¶ÏÌøÀ´ÌøÈ¥¡£Ö»ÓÐÔÚµ±Ç°º¯Êý²»ÐèҪȥÁ˽âijһ¿é´úÂëϸ½Ú¶øÄܹ»±í´ïÆäÄÚÈÝʱ£¬°ÑÕâ¿é´úÂë³éÈ¡³É×Óº¯Êý²ÅÊǺõġ£ -?????????????§³????????? +º¯Êý³éȡҲÓÃÓÚ¼õС´úÂëµÄÈßÓà¡£ -# ?? 11 ?? ??????????? +# µÚ 11 Õ һ´ÎÖ»×öÒ»¼þÊ -?????????????????????????????????? +Ö»×öÒ»¼þʵĴúÂëºÜÈÝÒ×ÈÃÈËÖªµÀÆäÒª×öµÄÊ£» -??????????§Ô??????????????????????????????????????????????????? +»ù±¾Á÷³Ì£ºÁгö´úÂëËù×öµÄËùÓÐÈÎÎñ£»°Ñÿ¸öÈÎÎñ²ð·Öµ½²»Í¬µÄº¯Êý£¬»òÕß²»Í¬µÄ¶ÎÂä¡£ -# ?? 12 ?? ???????????????? +# µÚ 12 Õ ÓÃ×ÔÈ»ÓïÑÔ±íÊö´úÂë -?????????????§Õ??????????????¦Á?????????§Õ???????????????????????? +ÏÈÓÃ×ÔÈ»ÓïÑÔÊéд´úÂëÂß¼­£¬Ò²¾ÍÊÇα´úÂ룬ȻºóÔÙд´úÂ룬ÕâÑù´úÂëÂß¼­»á¸üÇåÎú¡£ -# ?? 13 ?? ????????? +# µÚ 13 Õ ¼õÉÙ´úÂëÁ¿ -????????????????????§Ü??�£?????????????????????????????? +²»Òª¹ý¶ÈÉè¼Æ£¬±àÂë¹ý³Ì»áÓкܶà±ä»¯£¬¹ý¶ÈÉè¼ÆµÄÄÚÈݵ½×îºóÍùÍùÊÇÎÞÓõġ£ -???????????? +¶àÓñê×¼¿âʵÏÖ¡£ diff --git a/notes/计算机æ“�作系统.md b/notes/计算机æ“�作系统.md index ebbc03c5..8656dac4 100644 --- a/notes/计算机æ“�作系统.md +++ b/notes/计算机æ“�作系统.md @@ -1,248 +1,248 @@ -* [????? ????](#?????-????) - * [??????????????](#??????????????) - * [1. ????](#1-????) - * [2. ????](#2-????) - * [3. ????](#3-????) - * [4. ??](#4-??) - * [??????](#??????) - * [?§Ø????](#?§Ø????) - * [1. ???§Ø?](#1-???§Ø?) - * [2. ??](#2-??) - * [3. ????](#3-????) - * [??????????](#??????????) - * [1. ?????](#1-?????) - * [2. ????](#2-????) -* [????? ???????](#?????-???????) - * [?????????](#?????????) - * [1. ????](#1-????) - * [2. ???](#2-???) - * [3. ????](#3-????) - * [?????????§Ý?](#?????????§Ý?) - * [??????](#??????) - * [1. ?????????§Ö????](#1-?????????§Ö????) - * [1.1 ?????????FCFS??](#11-?????????fcfs??) - * [1.2 ??????????SJF??](#12-??????????sjf??) - * [1.3 ??????????????SRTN??](#13-??????????????srtn??) - * [2. ????????§Ö????](#2-????????§Ö????) - * [2.1 ?????????](#21-?????????) - * [2.2 ???????](#22-???????) - * [2.3 ??????????](#23-??????????) - * [2.4 ?????????](#24-?????????) - * [3. ?????§Ö????](#3-?????§Ö????) - * [???????](#???????) - * [1. ?????](#1-?????) - * [2. ???????](#2-???????) - * [3. ?????](#3-?????) - * [4. ???](#4-???) - * [???????](#???????) - * [1. ???](#1-???) - * [2. ?????](#2-?????) - * [3. ???????](#3-???????) - * [4. ???](#4-???) - * [5. ???????](#5-???????) - * [6. ?????](#6-?????) - * [???????????](#???????????) - * [1. ????-§Õ??????](#1-????-§Õ??????) - * [2. ????????????](#2-????????????) -* [?????? ????](#??????-????) - * [??????????](#??????????) - * [???????????](#???????????) - * [1. ???????](#1-???????) - * [2. ???????](#2-???????) - * [2.1 ???????????](#21-???????????) - * [2.2 ???????????????](#22-???????????????) - * [2.3 ??????????????](#23-??????????????) - * [2.4 ?????¡¤???](#24-?????¡¤???) - * [3. ????????](#3-????????) - * [3.1 ?????](#31-?????) - * [3.2 ????????????§Þ???](#32-????????????§Þ???) - * [3.3 ???????????§Þ???](#33-???????????§Þ???) - * [4. ????????????????](#4-????????????????) - * [4.1 ?????????](#41-?????????) - * [4.2 ???????](#42-???????) -* [?????? ?›¥??????](#??????-?›¥??????) - * [???????](#???????) - * [???????](#???????) - * [1. ???](#1-???) - * [2. ???](#2-???) - * [3. ????](#3-????) - * [4. ???????????](#4-???????????) - * [????????](#????????) - * [1. ????Optimal??](#1-????optimal??) - * [2. ????????FIFO??](#2-????????fifo??) - * [3. ??????¦Ä????LRU??Least Recently Used??](#3-??????¦Ä????lru??least-recently-used??) - * [4. ????Clock??](#4-????clock??) -* [?????? ?õô????](#??????-?õô????) - * [?????????](#?????????) - * [1. ?????????FCFS??First Come First Serverd??](#1-?????????fcfs??first-come-first-serverd??) - * [2. ??????????????SSTF??Shortest Seek Time First??](#2-??????????????sstf??shortest-seek-time-first??) - * [3. ???????SCAN??](#3-???????scan??) - * [4. ??????????CSCAN??](#4-??????????cscan??) -* [?¦Ï?????](#?¦Ï?????) +* [µÚÒ»Õ ¸ÅÊö](#µÚÒ»ÕÂ-¸ÅÊö) + * [²Ù×÷ϵͳ»ù±¾ÌØÕ÷](#²Ù×÷ϵͳ»ù±¾ÌØÕ÷) + * [1. ²¢·¢](#1-²¢·¢) + * [2. ¹²Ïí](#2-¹²Ïí) + * [3. ÐéÄâ](#3-ÐéÄâ) + * [4. Òì²½](#4-Òì²½) + * [ϵͳµ÷ÓÃ](#ϵͳµ÷ÓÃ) + * [ÖжϷÖÀà](#ÖжϷÖÀà) + * [1. ÍâÖжÏ](#1-ÍâÖжÏ) + * [2. Òì³£](#2-Òì³£) + * [3. ÏÝÈë](#3-ÏÝÈë) + * [´óÄں˺Í΢ÄÚºË](#´óÄں˺Í΢ÄÚºË) + * [1. ´óÄÚºË](#1-´óÄÚºË) + * [2. ΢ÄÚºË](#2-΢ÄÚºË) +* [µÚ¶þÕ ½ø³Ì¹ÜÀí](#µÚ¶þÕÂ-½ø³Ì¹ÜÀí) + * [½ø³ÌÓëÏß³Ì](#½ø³ÌÓëÏß³Ì) + * [1. ½ø³Ì](#1-½ø³Ì) + * [2. Ïß³Ì](#2-Ïß³Ì) + * [3. Çø±ð](#3-Çø±ð) + * [½ø³Ì״̬µÄÇл»](#½ø³Ì״̬µÄÇл») + * [µ÷¶ÈËã·¨](#µ÷¶ÈËã·¨) + * [1. Åú´¦ÀíϵͳÖеĵ÷¶È](#1-Åú´¦ÀíϵͳÖеĵ÷¶È) + * [1.1 ÏÈÀ´ÏÈ·þÎñ£¨FCFS£©](#11-ÏÈÀ´ÏÈ·þÎñfcfs) + * [1.2 ¶Ì×÷ÒµÓÅÏÈ£¨SJF£©](#12-¶Ì×÷ÒµÓÅÏÈsjf) + * [1.3 ×î¶ÌÊ£Óàʱ¼äÓÅÏÈ£¨SRTN£©](#13-×î¶ÌÊ£Óàʱ¼äÓÅÏÈsrtn) + * [2. ½»»¥Ê½ÏµÍ³Öеĵ÷¶È](#2-½»»¥Ê½ÏµÍ³Öеĵ÷¶È) + * [2.1 ÓÅÏÈȨÓÅÏÈ](#21-ÓÅÏÈȨÓÅÏÈ) + * [2.2 ʱ¼äƬÂÖת](#22-ʱ¼äƬÂÖת) + * [2.3 ¶à¼¶·´À¡¶ÓÁÐ](#23-¶à¼¶·´À¡¶ÓÁÐ) + * [2.4 ¶Ì½ø³ÌÓÅÏÈ](#24-¶Ì½ø³ÌÓÅÏÈ) + * [3. ʵʱϵͳÖеĵ÷¶È](#3-ʵʱϵͳÖеĵ÷¶È) + * [½ø³Ìͬ²½](#½ø³Ìͬ²½) + * [1. ÁÙ½çÇø](#1-ÁÙ½çÇø) + * [2. ͬ²½Ó뻥³â](#2-ͬ²½Ó뻥³â) + * [3. ÐźÅÁ¿](#3-ÐźÅÁ¿) + * [4. ¹Ü³Ì](#4-¹Ü³Ì) + * [½ø³ÌͨÐÅ](#½ø³ÌͨÐÅ) + * [1. ¹ÜµÀ](#1-¹ÜµÀ) + * [2. ÐźÅÁ¿](#2-ÐźÅÁ¿) + * [3. ÏûÏ¢¶ÓÁÐ](#3-ÏûÏ¢¶ÓÁÐ) + * [4. ÐźÅ](#4-ÐźÅ) + * [5. ¹²ÏíÄÚ´æ](#5-¹²ÏíÄÚ´æ) + * [6. Ì×½Ó×Ö](#6-Ì×½Ó×Ö) + * [¾­µäͬ²½ÎÊÌâ](#¾­µäͬ²½ÎÊÌâ) + * [1. ¶ÁÕß-дÕßÎÊÌâ](#1-¶ÁÕß-дÕßÎÊÌâ) + * [2. ÕÜѧ¼Ò½ø²ÍÎÊÌâ](#2-ÕÜѧ¼Ò½ø²ÍÎÊÌâ) +* [µÚÈýÕ ËÀËø](#µÚÈýÕÂ-ËÀËø) + * [ËÀËøµÄÌõ¼þ](#ËÀËøµÄÌõ¼þ) + * [ËÀËøµÄ´¦Àí·½·¨](#ËÀËøµÄ´¦Àí·½·¨) + * [1. ÍÒÄñ²ßÂÔ](#1-ÍÒÄñ²ßÂÔ) + * [2. ËÀËøÔ¤·À](#2-ËÀËøÔ¤·À) + * [2.1 ÆÆ»µ»¥³âÌõ¼þ](#21-ÆÆ»µ»¥³âÌõ¼þ) + * [2.2 ÆÆ»µÇëÇóÓë±£³ÖÌõ¼þ](#22-ÆÆ»µÇëÇóÓë±£³ÖÌõ¼þ) + * [2.3 ÆÆ»µ²»¿ÉÇÀÕ¼Ìõ¼þ](#23-ÆÆ»µ²»¿ÉÇÀÕ¼Ìõ¼þ) + * [2.4 ÆÆ»µ»·Â·µÈ´ý](#24-ÆÆ»µ»·Â·µÈ´ý) + * [3. ËÀËø±ÜÃâ](#3-ËÀËø±ÜÃâ) + * [3.1 °²È«×´Ì¬](#31-°²È«×´Ì¬) + * [3.2 µ¥¸ö×ÊÔ´µÄÒøÐмÒËã·¨](#32-µ¥¸ö×ÊÔ´µÄÒøÐмÒËã·¨) + * [3.3 ¶à¸ö×ÊÔ´µÄÒøÐмÒËã·¨](#33-¶à¸ö×ÊÔ´µÄÒøÐмÒËã·¨) + * [4. ËÀËø¼ì²âÓëËÀËø»Ö¸´](#4-ËÀËø¼ì²âÓëËÀËø»Ö¸´) + * [4.1 ËÀËø¼ì²âËã·¨](#41-ËÀËø¼ì²âËã·¨) + * [4.2 ËÀËø»Ö¸´](#42-ËÀËø»Ö¸´) +* [µÚËÄÕ ´æ´¢Æ÷¹ÜÀí](#µÚËÄÕÂ-´æ´¢Æ÷¹ÜÀí) + * [ÐéÄâÄÚ´æ](#ÐéÄâÄÚ´æ) + * [·ÖÒ³Óë·Ö¶Î](#·ÖÒ³Óë·Ö¶Î) + * [1. ·ÖÒ³](#1-·ÖÒ³) + * [2. ·Ö¶Î](#2-·Ö¶Î) + * [3. ¶Îҳʽ](#3-¶Îҳʽ) + * [4. ·ÖÒ³Óë·Ö¶ÎÇø±ð](#4-·ÖÒ³Óë·Ö¶ÎÇø±ð) + * [Ò³ÃæÖû»Ëã·¨](#Ò³ÃæÖû»Ëã·¨) + * [1. ×î¼Ñ£¨Optimal£©](#1-×î¼Ñoptimal) + * [2. ÏȽøÏȳö£¨FIFO£©](#2-ÏȽøÏȳöfifo) + * [3. ×î½ü×î¾ÃδʹÓã¨LRU£¬Least Recently Used£©](#3-×î½ü×î¾ÃδʹÓÃlru£¬least-recently-used) + * [4. ʱÖÓ£¨Clock£©](#4-ʱÖÓclock) +* [µÚÎåÕ É豸¹ÜÀí](#µÚÎåÕÂ-É豸¹ÜÀí) + * [´ÅÅ̵÷¶ÈËã·¨](#´ÅÅ̵÷¶ÈËã·¨) + * [1. ÏÈÀ´ÏÈ·þÎñ£¨FCFS£¬First Come First Serverd£©](#1-ÏÈÀ´ÏÈ·þÎñfcfs£¬first-come-first-serverd) + * [2. ×î¶ÌѰµÀʱ¼äÓÅÏÈ£¨SSTF£¬Shortest Seek Time First£©](#2-×î¶ÌѰµÀʱ¼äÓÅÏÈsstf£¬shortest-seek-time-first) + * [3. ɨÃèËã·¨£¨SCAN£©](#3-ɨÃèËã·¨scan) + * [4. Ñ­»·É¨ÃèËã·¨£¨CSCAN£©](#4-Ñ­»·É¨ÃèËã·¨cscan) +* [²Î¿¼×ÊÁÏ](#²Î¿¼×ÊÁÏ) -# ????? ???? +# µÚÒ»Õ ¸ÅÊö -## ?????????????? +## ²Ù×÷ϵͳ»ù±¾ÌØÕ÷ -### 1. ???? +### 1. ²¢·¢ -???????????????????????????????§Ø??????????????????????????§Ø????þŸ +²¢·¢ÐÔÊÇÖ¸ºê¹ÛÉÏÔÚÒ»¶Îʱ¼äÄÚÄÜͬʱÔËÐжà¸ö³ÌÐò£¬¶ø²¢ÐÐÐÔÔòָͬһʱ¿ÌÄÜÔËÐжà¸öÖ¸Áî¡£ -???????????????????????????????? +²¢ÐÐÐèÒªÓ²¼þÖ§³Ö£¬Èç¶àÁ÷Ë®Ïß»òÕß¶à´¦ÀíÆ÷¡£ -???????????????????????¨®?????????????§³? +²Ù×÷ϵͳͨ¹ýÒýÈë½ø³ÌºÍỊ̈߳¬Ê¹µÃ³ÌÐòÄܹ»²¢·¢ÔËÐС£ -### 2. ???? +### 2. ¹²Ïí -??????????§Ö?????????????????????????¨¢? +¹²ÏíÊÇָϵͳÖеÄ×ÊÔ´¿ÉÒÔ¹©¶à¸ö²¢·¢µÄ½ø³Ì¹²Í¬Ê¹Óᣠ-????????????????????????? +ÓÐÁ½ÖÖ¹²Ïí·½Ê½£º»¥³â¹²ÏíºÍͬʱ¹²Ïí¡£ -???????????????????????????????????????????????????????????????????????????????????????????????? +»¥³â¹²ÏíµÄ×ÊÔ´³ÆÎªÁÙ½ç×ÊÔ´£¬ÀýÈç´òÓ¡»úµÈ£¬ÔÚͬһʱ¼äÖ»ÔÊÐíÒ»¸ö½ø³Ì·ÃÎÊ£¬·ñÔò»á³öÏÖ´íÎó£¬ÐèÒªÓÃͬ²½»úÖÆÀ´ÊµÏÖ¶ÔÁÙ½ç×ÊÔ´µÄ·ÃÎÊ¡£ -### 3. ???? +### 3. ÐéÄâ -??????????????????????????????‰^??????????????????????¨¹?????????¨¹???????????????????????????????????????????????¨¹????????????????????§Õ???????????????§³?????????????§Ý?????????????§Ø???????????§Õ??? +ÐéÄâ¼¼Êõ°ÑÒ»¸öÎïÀíʵÌåת»»Îª¶à¸öÂß¼­ÊµÌå¡£Ö÷ÒªÓÐÁ½ÖÖÐéÄâ¼¼Êõ£ºÊ±·Ö¸´Óü¼ÊõºÍ¿Õ·Ö¸´Óü¼Êõ£¬ÀýÈç¶à¸ö½ø³ÌÄÜÔÚͬһ¸ö´¦ÀíÆ÷Éϲ¢·¢Ö´ÐÐʹÓÃÁËʱ·Ö¸´Óü¼Êõ£¬ÈÃÿ¸ö½ø³ÌÂÖÁ÷Õ¼Óд¦ÀíÆ÷£¬Ã¿´ÎÖ»Ö´ÐÐһС¸öʱ¼äƬ²¢¿ìËÙÇл»£¬ÕâÑù¾ÍºÃÏñÓжà¸ö´¦ÀíÆ÷½øÐд¦Àí¡£ -### 4. ?? +### 4. Òì²½ -??????????????????????????????????????????????????????? +Òì²½ÊÇÖ¸½ø³Ì²»ÊÇÒ»´ÎÐÔÖ´ÐÐÍê±Ï£¬¶øÊÇ×ß×ßͣͣ£¬ÒÔ²»¿ÉÖªµÄËÙ¶ÈÏòÇ°ÍÆ½ø¡£ -## ?????? +## ϵͳµ÷Óà -???????????????????????????????§»?????????????????????????????????????????¨À? +Èç¹ûÒ»¸ö½ø³ÌÔÚÓû§Ì¬ÐèÒªÓõ½²Ù×÷ϵͳµÄһЩ¹¦ÄÜ£¬¾ÍÐèҪʹÓÃϵͳµ÷ÓôӶøÏÝÈëÄںˣ¬ÓɲÙ×÷ϵͳ´úΪÍê³É¡£ -???????????????????????õô???????????????????????????›¥???????? +¿ÉÒÔÓÉϵͳµ÷ÓÃÇëÇóµÄ¹¦ÄÜÓÐÉ豸¹ÜÀí¡¢Îļþ¹ÜÀí¡¢½ø³Ì¹ÜÀí¡¢½ø³ÌͨÐÅ¡¢´æ´¢Æ÷¹ÜÀíµÈ¡£ -## ?§Ø???? +## ÖжϷÖÀà -### 1. ???§Ø? +### 1. ÍâÖÐ¶Ï -?? CPU ???????????????????? I/O ?????§Ø??????õô????/????????????????????????????????????/????????????????§Ø????????§Ø??? +ÓÉ CPU Ö´ÐÐÖ¸ÁîÒÔÍâµÄʼþÒýÆð£¬Èç I/O ½áÊøÖжϣ¬±íʾÉ豸ÊäÈë/Êä³ö´¦ÀíÒѾ­Íê³É£¬´¦ÀíÆ÷Äܹ»·¢ËÍÏÂÒ»¸öÊäÈë/Êä³öÇëÇó¡£´ËÍ⻹ÓÐʱÖÓÖжϡ¢¿ØÖÆÌ¨Öжϵȡ£ -### 2. ?? +### 2. Òì³£ -?? CPU ????????????????????????????????³†?????????? +ÓÉ CPU Ö´ÐÐÖ¸ÁîµÄÄÚ²¿Ê¼þÒýÆð£¬Èç·Ç·¨²Ù×÷Âë¡¢µØÖ·Ô½½ç¡¢ËãÊõÒç³öµÈ¡£ -### 3. ???? +### 3. ÏÝÈë -???????????????????¨¢? +ÔÚÓû§³ÌÐòÖÐʹÓÃϵͳµ÷Óᣠ-## ?????????? +## ´óÄں˺Í΢ÄÚºË -### 1. ????? +### 1. ´óÄÚºË -????????????????????????????????????????????????ûs???????????§Ü???????? +´óÄÚºËÊǽ«²Ù×÷ϵͳ¹¦ÄÜ×÷Ϊһ¸ö½ôÃܽáºÏµÄÕûÌå·Åµ½Äںˣ¬ÓÉÓÚ¸÷Ä£¿é¹²ÏíÐÅÏ¢£¬Òò´ËÓкܸߵÄÐÔÄÜ¡£ -### 2. ???? +### 2. ΢ÄÚºË -????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§Ý????????????????????? +ÓÉÓÚ²Ù×÷ϵͳ²»¶Ï¸´ÔÓ£¬Òò´Ë½«Ò»²¿·Ö²Ù×÷ϵͳ¹¦ÄÜÒÆ³öÄںˣ¬´Ó¶ø½µµÍÄں˵ĸ´ÔÓÐÔ¡£ÒƳöµÄ²¿·Ö¸ù¾Ý·Ö²ãµÄÔ­Ôò»®·Ö³ÉÈô¸É·þÎñ£¬Ï໥¶ÀÁ¢¡£µ«ÊÇÐèҪƵ·±µØÔÚÓû§Ì¬ºÍºËÐÄ̬֮¼ä½øÐÐÇл»£¬»áÓÐÒ»¶¨µÄÐÔÄÜËðʧ¡£ -# ????? ??????? +# µÚ¶þÕ ½ø³Ì¹ÜÀí -## ????????? +## ½ø³ÌÓëÏß³Ì -### 1. ???? +### 1. ½ø³Ì -????????????????????????????¦Ë?? +½ø³ÌÊDzÙ×÷ϵͳ½øÐÐ×ÊÔ´·ÖÅäµÄ»ù±¾µ¥Î»¡£ -???????? (Process Control Block, PCB) ???????????????????????????¦Í????????????????????????? PCB ??????? +½ø³Ì¿ØÖÆ¿é (Process Control Block, PCB) ÃèÊö½ø³ÌµÄ»ù±¾ÐÅÏ¢ºÍÔËÐÐ״̬£¬ËùνµÄ´´½¨½ø³ÌºÍ³·Ïú½ø³Ì£¬¶¼ÊÇÖ¸¶Ô PCB µÄ²Ù×÷¡£ -### 2. ??? +### 2. Ïß³Ì -???????§á????§Ø?????????????????????¦Ë???????????§Ö?????????????????§µ???????????????? +Ò»¸öÏß³ÌÖпÉÒÔÓжà¸öỊ̈߳¬ÊǶÀÁ¢µ÷¶ÈµÄ»ù±¾µ¥Î»¡£Í¬Ò»¸ö½ø³ÌÖеĶà¸öÏß³ÌÖ®¼ä¿ÉÒÔ²¢·¢Ö´ÐУ¬ËüÃǹ²Ïí½ø³Ì×ÊÔ´¡£ -### 3. ???? +### 3. Çø±ð -?? ???????????????????????????¦Ë????????????????????????????????????????? +¢Ù ÓµÓÐ×ÊÔ´£º½ø³ÌÊÇ×ÊÔ´·ÖÅäµÄ»ù±¾µ¥Î»£¬µ«ÊÇÏ̲߳»ÓµÓÐ×ÊÔ´£¬Ï߳̿ÉÒÔ·ÃÎÊÂÊÊô½ø³ÌµÄ×ÊÔ´¡£ -?? ???????????????????????¦Ë???????????§µ??????§Ý?????????????§Ý???????????????????§Ý?????????????§Ö?????????????????§Ý??? +¢Ú µ÷¶È£ºÏß³ÌÊǶÀÁ¢µ÷¶ÈµÄ»ù±¾µ¥Î»£¬ÔÚͬһ½ø³ÌÖУ¬Ï̵߳ÄÇл»²»»áÒýÆð½ø³ÌÇл»£¬´ÓÒ»¸ö½ø³ÌÄÚµÄÏß³ÌÇл»µ½ÁíÒ»¸ö½ø³ÌÖеÄÏß³Ìʱ£¬»áÒýÆð½ø³ÌÇл»¡£ -?? ?????????????????????????????????????????????????????I/O ?õô???????????????????????????????????????????????????????§ß????§Ý?????�p?????§ß??? CPU ????????�p???????? CPU ?????????¨¢???????§Ý????Øb???????????????????????????§³??????????????????????????????????????????§»???????????????????????????????????????????? +¢Û ϵͳ¿ªÏú£ºÓÉÓÚ´´½¨»ò³·Ïú½ø³Ìʱ£¬ÏµÍ³¶¼ÒªÎªÖ®·ÖÅä»ò»ØÊÕ×ÊÔ´£¬ÈçÄÚ´æ¿Õ¼ä¡¢I/O É豸µÈ£¬Òò´Ë²Ù×÷ϵͳËù¸¶³öµÄ¿ªÏúÔ¶´óÓÚ´´½¨»ò³·ÏúÏß³ÌʱµÄ¿ªÏú¡£ÀàËÆµØ£¬ÔÚ½øÐнø³ÌÇл»Ê±£¬Éæ¼°µ±Ç°Ö´Ðнø³Ì CPU »·¾³µÄ±£´æ¼°Ðµ÷¶È½ø³Ì CPU »·¾³µÄÉèÖ᣶øÏß³ÌÇл»Ê±Ö»Ðè±£´æºÍÉèÖÃÉÙÁ¿¼Ä´æÆ÷ÄÚÈÝ£¬¿ªÏúºÜС¡£´ËÍ⣬ÓÉÓÚͬһ½ø³ÌÄڵĶà¸öÏ̹߳²Ïí½ø³ÌµÄµØÖ·¿Õ¼ä£¬Òò´Ë£¬ÕâЩÏß³ÌÖ®¼äµÄͬ²½ÓëͨÐŷdz£ÈÝÒ×ʵÏÖ£¬ÉõÖÁÎÞÐè²Ù×÷ϵͳµÄ¸ÉÔ¤¡£ -?? ?????¹×???????? (IPC) ?????????????????¦Å?????????????????????????????????????/§Õ????????¦²????????????????????? +¢Ü ͨÐÅ·½Ã棺½ø³Ì¼äͨÐÅ (IPC) ÐèÒª½ø³Ìͬ²½ºÍ»¥³âÊֶεĸ¨Öú£¬ÒÔ±£Ö¤Êý¾ÝµÄÒ»ÖÂÐÔ£¬¶øÏ̼߳ä¿ÉÒÔͨ¹ýÖ±½Ó¶Á/д½ø³ÌÊý¾Ý¶Î£¨ÈçÈ«¾Ö±äÁ¿£©À´½øÐÐͨÐÅ¡£ -??????QQ ?? ??????????????????????????????§Ü?????????? http ????????????????????????????????????????????????§Ö????????????????? http ??????????????????????????????????? +¾ÙÀý£ºQQ ºÍ ä¯ÀÀÆ÷ÊÇÁ½¸ö½ø³Ì£¬ä¯ÀÀÆ÷½ø³ÌÀïÃæÓкܶàỊ̈߳¬ÀýÈç http ÇëÇóÏ̡߳¢Ê¼þÏìÓ¦Ï̡߳¢äÖȾÏ̵߳ȵȣ¬Ï̵߳IJ¢·¢Ö´ÐÐʹµÃÔÚä¯ÀÀÆ÷Öеã»÷Ò»¸öÐÂÁ´½Ó´Ó¶ø·¢Æð http ÇëÇóʱ£¬ä¯ÀÀÆ÷»¹¿ÉÒÔÏìÓ¦Óû§µÄÆäËüʼþ¡£ -## ?????????§Ý? +## ½ø³Ì״̬µÄÇл» ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/1706ce58-a081-4fed-9b36-c3c0d7e22b3a.jpg) -????????????????????????????????????????????????????? CPU????? CPU ???????????????????????? +×èÈû״̬ÊÇȱÉÙÐèÒªµÄ×ÊÔ´´Ó¶øÓÉÔËÐÐ״̬ת»»¶øÀ´£¬µ«ÊǸÃ×ÊÔ´²»°üÀ¨ CPU£¬È±ÉÙ CPU »áÈýø³Ì´ÓÔËÐÐ̬ת»»Îª¾ÍÐ÷̬¡£ -??§à????????????????????????????????????????????????????????????????? CPU ????????????????????????????????????? CPU ??????????????????????????????¦Å???? +Ö»ÓоÍÐ÷̬ºÍÔËÐÐ̬¿ÉÒÔÏ໥ת»»£¬ÆäËüµÄ¶¼Êǵ¥Ïòת»»¡£¾ÍÐ÷״̬µÄ½ø³Ìͨ¹ýµ÷¶ÈËã·¨´Ó¶ø»ñµÃ CPU ʱ¼ä£¬×ªÎªÔËÐÐ״̬£»¶øÔËÐÐ״̬µÄ½ø³Ì£¬ÔÚ·ÖÅ䏸ËüµÄ CPU ʱ¼äƬÓÃÍêÖ®ºó¾Í»áתΪ¾ÍÐ÷״̬£¬µÈ´ýÏÂÒ»´Îµ÷¶È¡£ -## ?????? +## µ÷¶ÈËã·¨ -????????????????????????? +ÐèÒªÕë¶Ô²»Í¬»·¾³À´ÌÖÂÛµ÷¶ÈËã·¨¡£ -### 1. ?????????§Ö???? +### 1. Åú´¦ÀíϵͳÖеĵ÷¶È -#### 1.1 ?????????FCFS?? +#### 1.1 ÏÈÀ´ÏÈ·þÎñ£¨FCFS£© -first-come first-serverd?? +first-come first-serverd¡£ -?????????????????§Ö?????? +µ÷¶È×îÏȽøÈë¾ÍÐ÷¶ÓÁеÄ×÷Òµ¡£ -??????????????????????????????????????????????????????????????§µ???????????????§Ü????????????????????????? +ÓÐÀûÓÚ³¤×÷Òµ£¬µ«²»ÀûÓÚ¶Ì×÷Òµ£¬ÒòΪ¶Ì×÷Òµ±ØÐëÒ»Ö±µÈ´ýÇ°ÃæµÄ³¤×÷ÒµÖ´ÐÐÍê±Ï²ÅÄÜÖ´ÐУ¬¶ø³¤×÷ÒµÓÖÐèÒªÖ´Ðкܳ¤Ê±¼ä£¬Ôì³ÉÁ˶Ì×÷ÒµµÈ´ýʱ¼ä¹ý³¤¡£ -#### 1.2 ??????????SJF?? +#### 1.2 ¶Ì×÷ÒµÓÅÏÈ£¨SJF£© -shortest job first?? +shortest job first¡£ -??????????????????????? +µ÷¶È¹À¼ÆÔËÐÐʱ¼ä×î¶ÌµÄ×÷Òµ¡£ -??????§á????????????????????????????????????????§Ø??????????????????????¨°???????? +³¤×÷ÒµÓпÉÄÜ»á¶öËÀ£¬´¦ÓÚÒ»Ö±µÈ´ý¶Ì×÷ÒµÖ´ÐÐÍê±ÏµÄ״̬¡£Èç¹ûÒ»Ö±ÓжÌ×÷Òµµ½À´£¬ÄÇô³¤×÷ÒµÓÀÔ¶µÃ²»µ½µ÷¶È¡£ -#### 1.3 ??????????????SRTN?? +#### 1.3 ×î¶ÌÊ£Óàʱ¼äÓÅÏÈ£¨SRTN£© -shortest remaining time next?? +shortest remaining time next¡£ -### 2. ????????§Ö???? +### 2. ½»»¥Ê½ÏµÍ³Öеĵ÷¶È -#### 2.1 ????????? +#### 2.1 ÓÅÏÈȨÓÅÏÈ -??????????????????????????????????????????????????????????????????????????? +³ýÁË¿ÉÒÔÊÖ¶¯¸³ÓèÓÅÏÈȨ֮Í⣬»¹¿ÉÒÔ°ÑÏìÓ¦±È×÷ΪÓÅÏÈȨ£¬ÕâÖÖµ÷¶È·½Ê½½Ð×ö¸ßÏìÓ¦±ÈÓÅÏȵ÷¶ÈËã·¨¡£ -????? = (?????? + ?????????) / ????????? = ?????? / ????????? +ÏìÓ¦±È = (µÈ´ýʱ¼ä + ÒªÇó·þÎñʱ¼ä) / ÒªÇó·þÎñʱ¼ä = ÏìӦʱ¼ä / ÒªÇó·þÎñʱ¼ä -??????????????????? SJF ?§Ô???????????????????????????????????????????????????? +ÕâÖÖµ÷¶ÈËã·¨Ö÷ÒªÊÇΪÁ˽â¾ö SJF Öг¤×÷Òµ¿ÉÄÜ»á¶öËÀµÄÎÊÌ⣬ÒòÎªËæ×ŵȴýʱ¼äµÄÔö³¤£¬ÏìÓ¦±ÈÒ²»áÔ½À´Ô½¸ß¡£ -#### 2.2 ??????? +#### 2.2 ʱ¼äƬÂÖת -?????§à???????? FCFS ??????????????§µ???¦Å???????? CPU ????????????????????????????????????????????????????????????§Ø????????????????????§µ??????????????????§Ö??¦Â?????????? CPU ?????????????? +½«ËùÓоÍÐ÷½ø³Ì°´ FCFS µÄÔ­ÔòÅųÉÒ»¸ö¶ÓÁУ¬Ã¿´Îµ÷¶Èʱ£¬°Ñ CPU ·ÖÅ䏸¶ÓÊ×½ø³Ì£¬¸Ã½ø³Ì¿ÉÒÔÖ´ÐÐÒ»¸öʱ¼äƬ¡£µ±Ê±¼äƬÓÃÍêʱ£¬ÓɼÆÊ±Æ÷·¢³öʱÖÓÖжϣ¬µ÷¶È³ÌÐò±ãÍ£Ö¹¸Ã½ø³ÌµÄÖ´ÐУ¬²¢½«ËüËÍÍù¾ÍÐ÷¶ÓÁеÄĩβ£¬Í¬Ê±¼ÌÐø°Ñ CPU ·ÖÅ䏸¶ÓÊ׵Ľø³Ì¡£ -???????????§¹????????§Ü???????????¦Í????§Ý??????????????????????????????????????????????????§Ý?????????????§Ý???????????? +ʱ¼äƬÂÖתËã·¨µÄЧÂʺÍʱ¼äƬÓкܴó¹ØÏµ¡£ÒòΪÿ´Î½ø³ÌÇл»¶¼Òª±£´æ½ø³ÌµÄÐÅÏ¢²¢ÇÒÔØÈëнø³ÌµÄÐÅÏ¢£¬Èç¹ûʱ¼äƬ̫¶Ì£¬½ø³ÌÇл»Ì«Æµ·±£¬ÔÚ½ø³ÌÇл»ÉϾͻỨ¹ý¶àʱ¼ä¡£ -#### 2.3 ?????????? +#### 2.3 ¶à¼¶·´À¡¶ÓÁÐ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/042cf928-3c8e-4815-ae9c-f2780202c68f.png) -?? ?????????????§µ???????????§Ú??ÙM??????????????????§Ö??????????????????§Õ????????????§Ö??????????????????????????????§ß?????????????§³?????????????????????????§µ????????????ÕÇ????????????§³?? +¢Ù ÉèÖöà¸ö¾ÍÐ÷¶ÓÁУ¬²¢Îª¸÷¸ö¶ÓÁи³Ó費ͬµÄÓÅÏȼ¶¡£µÚÒ»¸ö¶ÓÁеÄÓÅÏȼ¶×î¸ß£¬µÚ¶þ¸ö¶ÓÁдÎÖ®£¬ÆäÓà¸÷¶ÓÁеÄÓÅÏÈȨÖð¸ö½µµÍ¡£¸ÃËã·¨¸³Óè¸÷¸ö¶ÓÁÐÖнø³ÌÖ´ÐÐʱ¼äƬµÄ´óСҲ¸÷²»Ïàͬ£¬ÔÚÓÅÏÈȨԽ¸ßµÄ¶ÓÁÐÖУ¬ÎªÃ¿¸ö½ø³ÌËù¹æ¶¨µÄÖ´ÐÐʱ¼äƬ¾ÍԽС¡£ -?? ?????????????????????????????????§Ö??¦Â???? FCFS ???????????????????????????????????????????????????????????????????????????????????¦Ä????????????????????????????§Ö??¦Â?? +¢Ú µ±Ò»¸öнø³Ì½øÈëÄÚ´æºó£¬Ê×ÏȽ«Ëü·ÅÈëµÚÒ»¶ÓÁеÄĩ⣬°´ FCFS Ô­ÔòÅŶӵȴýµ÷¶È¡£µ±ÂÖµ½¸Ã½ø³ÌÖ´ÐÐʱ£¬ÈçËüÄÜÔÚ¸Ãʱ¼äƬÄÚÍê³É£¬±ã¿É×¼±¸³·Àëϵͳ£»Èç¹ûËüÔÚÒ»¸öʱ¼äƬ½áÊøÊ±ÉÐδÍê³É£¬µ÷¶È³ÌÐò±ã½«¸Ã½ø³ÌתÈëÏÂÒ»¸ö¶ÓÁеĶÓβ¡£ -?? ????? i -1 ?????§à????????????? i ?????§Ö???????§³? +¢Û ½öµ±Ç° i -1 ¸ö¶ÓÁоù¿Õʱ£¬²Å»áµ÷¶ÈµÚ i ¶ÓÁÐÖеĽø³ÌÔËÐС£ -????????????????§Ø???????????? +Óŵ㣺ʵʱÐԺã¬Ò²ÊʺÏÔËÐжÌ×÷ÒµºÍ³¤×÷Òµ¡£ -#### 2.4 ????????? +#### 2.4 ¶Ì½ø³ÌÓÅÏÈ -### 3. ?????§Ö???? +### 3. ʵʱϵͳÖеĵ÷¶È -???????????????????????????????????? +ʵʱϵͳҪһ¸ö·þÎñÇëÇóÔÚÒ»¸öÈ·¶¨Ê±¼äÄڵõ½ÏìÓ¦¡£ -????????????????????????????????????????????????????? +·ÖΪӲʵʱºÍÈíʵʱ£¬Ç°Õß±ØÐëÂú×ã¾ø¶ÔµÄ½ØÖ¹Ê±¼ä£¬ºóÕß¿ÉÒÔÈÝÈÌÒ»¶¨µÄ³¬Ê±¡£ -## ??????? +## ½ø³Ìͬ²½ -### 1. ????? +### 1. ÁÙ½çÇø -???????????§Ù??????¦Ä???????????? +¶ÔÁÙ½ç×ÊÔ´½øÐзÃÎʵÄÄǶδúÂë³ÆÎªÁÙ½çÇø¡£ -?????????????????????????????????????????????§Þ?î• +ΪÁË»¥³â·ÃÎÊÁÙ½ç×ÊÔ´£¬Ã¿¸ö½ø³ÌÔÚ½øÈëÁÙ½çÇøÖ®Ç°£¬ÐèÒªÏȽøÐмì²é¡£ ```html // entry section @@ -250,44 +250,44 @@ shortest remaining time next?? // exit section ``` -### 2. ??????? +### 2. ͬ²½Ó뻥³â -????????????????????§µ?????????????????????????????????????????? +ͬ²½Ö¸¶à¸ö½ø³Ì°´Ò»¶¨Ë³ÐòÖ´ÐУ»»¥³âÖ¸¶à¸ö½ø³ÌÔÚͬһʱ¿ÌÖ»ÓÐÒ»¸ö½ø³ÌÄܽøÈëÁÙ½çÇø¡£ -???????????????????????????????????????????????????? +ͬ²½ÊÇÔÚ¶ÔÁÙ½çÇø»¥³â·ÃÎʵĻù´¡ÉÏ£¬Í¨¹ýÆäËü»úÖÆÀ´ÊµÏÖÓÐÐò·ÃÎʵġ£ -### 3. ????? +### 3. ÐźÅÁ¿ -**???????Samaphore??**???????????????????????? down ?? up ???????????????? P ?? V ?????? +**ÐźÅÁ¿£¨Samaphore£©**ÊÇÒ»¸öÕûÐͱäÁ¿£¬¿ÉÒÔ¶ÔÆäÖ´ÐÐ down ºÍ up ²Ù×÷£¬Ò²¾ÍÊdz£¼ûµÄ P ºÍ V ²Ù×÷¡£ -- **down** : ???????????? 0 ????? - 1 ?????????????????? 0???????????????????????? 0?? -- **up**???????????? + 1 ????????????????????????????? down ?????? +- **down** : Èç¹ûÐźÅÁ¿´óÓÚ 0 £¬Ö´ÐÐ - 1 ²Ù×÷£»Èç¹ûÐźÅÁ¿µÈÓÚ 0£¬½«½ø³Ì˯Ãߣ¬µÈ´ýÐźÅÁ¿´óÓÚ 0£» +- **up**£º¶ÔÐźÅÁ¿Ö´ÐÐ + 1 ²Ù×÷£¬²¢ÇÒ»½ÐÑ˯ÃߵĽø³Ì£¬Èýø³ÌÍê³É down ²Ù×÷¡£ -down ?? up ????????????????????????????????????????§»??????????????§Ø?? +down ºÍ up ²Ù×÷ÐèÒª±»Éè¼Æ³ÉÔ­Ó²»¿É·Ö¸î£¬Í¨³£µÄ×ö·¨ÊÇÔÚÖ´ÐÐÕâЩ²Ù×÷µÄʱºòÆÁ±ÎÖжϡ£ -???????????????? 0 ???? 1???????????**????????Mutex??**??0 ?????????????????1 ?????????????? +Èç¹ûÐźÅÁ¿µÄȡֵֻÄÜΪ 0 »òÕß 1£¬ÄÇô¾Í³ÉΪÁË**»¥³âÁ¿£¨Mutex£©**£¬0 ±íʾÁÙ½çÇøÒѾ­¼ÓËø£¬1 ±íʾÁÙ½çÇø½âËø¡£ ```c typedef int samaphore; samaphore mutex = 1; void P1() { down(mutex); - // ????? + // ÁÙ½çÇø up(mutex); } void P2() { down(mutex); - // ????? + // ÁÙ½çÇø up(mutex); } ``` -**?????????????????-??????????** +**ʹÓÃÐźÅÁ¿ÊµÏÖÉú²úÕß-Ïû·ÑÕßÎÊÌâ** -???????????? mutex ?????????????§Ù????empty ??????????????????full ??????????????????? +ʹÓÃÒ»¸ö»¥³âÁ¿ mutex À´¶ÔÁÙ½ç×ÊÔ´½øÐзÃÎÊ£»empty ¼Ç¼¿Õ»º³åÇøµÄÊýÁ¿£¬full ¼Ç¼Âú»º³åÇøµÄÊýÁ¿¡£ -???????????? down ??????????????????????????????????????????????????????????????????? down ???????????????????????????????????????? down(empty) ?????????? empty = 0?????????????????????????????????????????????????????????????????????? up(empty) ?????????????????????????????????? +×¢Ò⣬±ØÐëÏÈÖ´ÐÐ down ²Ù×÷ÔÙÓû¥³âÁ¿¶ÔÁÙ½çÇø¼ÓËø£¬·ñÔò»á³öÏÖËÀËø¡£Èç¹û¶¼ÏȶÔÁÙ½çÇø¼ÓËø£¬È»ºóÔÙÖ´ÐÐ down ²Ù×÷£¬¿¼ÂÇÕâÖÖÇé¿ö£ºÉú²úÕß¶ÔÁÙ½çÇø¼ÓËøºó£¬Ö´ÐÐ down(empty) ²Ù×÷£¬·¢ÏÖ empty = 0£¬´ËʱÉú³ÉÕß˯Ãß¡£Ïû·ÑÕß´Ëʱ²»ÄܽøÈëÁÙ½çÇø£¬ÒòΪÉú²úÕß¶ÔÁÙ½çÇø¼ÓËøÁË£¬Ò²¾ÍÎÞ·¨¶ÔÖ´ÐÐ up(empty) ²Ù×÷£¬ÄÇôÉú²úÕߺÍÏû·ÑÕ߾ͻáÒ»Ö±µÈ´ýÏÂÈ¥¡£ ```c #define N 100 @@ -319,11 +319,11 @@ void consumer() { } ``` -### 4. ??? +### 4. ¹Ü³Ì -??????????????????????????????????????????????????????????????????????????????????????????????????????????? +ʹÓÃÐźÅÁ¿»úÖÆÊµÏÖµÄÉú²úÕßÏû·ÑÕßÎÊÌâÐèÒª¿Í»§¶Ë´úÂë×öºÜ¶à¿ØÖÆ£¬¶ø¹Ü³Ì°Ñ¿ØÖƵĴúÂë¶ÀÁ¢³öÀ´£¬²»½ö²»ÈÝÒ׳ö´í£¬Ò²Ê¹µÃ¿Í»§¶Ë´úÂëµ÷ÓøüÈÝÒס£ -c ?????????????????????????????? Pascal ??????????????????????§Ö??????? insert() ?? remove() ??????????????????????????????????????????-?????????? +c ÓïÑÔ²»Ö§³Ö¹Ü³Ì£¬ÏÂÃæµÄʾÀý´úÂëʹÓÃÁËÀà Pascal ÓïÑÔÀ´ÃèÊö¹Ü³Ì¡£Ê¾Àý´úÂëÖеĹܳÌÌṩÁË insert() ºÍ remove() ·½·¨£¬¿Í»§¶Ë´úÂëͨ¹ýµ÷ÓÃÕâÁ½¸ö·½·¨À´½â¾öÉú²úÕß-Ïû·ÑÕßÎÊÌâ¡£ ```html monitor ProducerConsumer @@ -342,11 +342,11 @@ monitor ProducerConsumer end monitor; ``` -??????????????????????????????????????¨´??????????????????§Ö??????????¨´??????????????????????????????????????¨´??? +¹Ü³ÌÓÐÒ»¸öÖØÒªÌØÐÔ£ºÔÚÒ»¸öʱ¿ÌÖ»ÄÜÓÐÒ»¸ö½ø³ÌʹÓù̡ܳ£½ø³ÌÔÚÎÞ·¨¼ÌÐøÖ´ÐеÄʱºò²»ÄÜÒ»Ö±Õ¼Óụ̀ܳ¬±ØÐ뽫½ø³Ì×èÈû£¬·ñÕ߯äËü½ø³ÌÓÀÔ¶²»ÄÜʹÓù̡ܳ£ -????????? **????????** ????????????**wait()** ?? **signal()** ??????????????????????????? wait() ?????????????????????????¨®????????????????§³?signal() ?????????????????????? +¹Ü³ÌÒýÈëÁË **Ìõ¼þ±äÁ¿** ÒÔ¼°Ïà¹ØµÄ²Ù×÷£º**wait()** ºÍ **signal()** À´ÊµÏÖͬ²½²Ù×÷¡£¶ÔÌõ¼þ±äÁ¿Ö´ÐÐ wait() ²Ù×÷»áµ¼Öµ÷Óýø³Ì×èÈû£¬°Ñ¹Ü³ÌÈóöÀ´ÈÃÁíÒ»¸ö½ø³Ì³ÖÓС£signal() ²Ù×÷ÓÃÓÚ»½Ðѱ»×èÈûµÄ½ø³Ì¡£ -**??¨´???????????-??????????** +**ʹÓùܳÌʵÏÖÉú³ÉÕß-Ïû·ÑÕßÎÊÌâ** ```html monitor ProducerConsumer @@ -390,55 +390,55 @@ begin end; ``` -## ??????? +## ½ø³ÌͨÐÅ -?????????????????????????????????????????????????????????????????????????????????????? +½ø³ÌͨÐÅ¿ÉÒÔ¿´³ÉÊDz»Í¬½ø³Ì¼äµÄÏß³ÌͨÐÅ£¬¶ÔÓÚͬһ¸ö½ø³ÌÄÚÏ̵߳ÄͨÐÅ·½Ê½£¬Ö÷ҪʹÓÃÐźÅÁ¿¡¢Ìõ¼þ±äÁ¿µÈͬ²½»úÖÆ¡£ -### 1. ??? +### 1. ¹ÜµÀ -??????????????????????????????§³?????????????????????????????????????????????????????§Õ??????????¦Â??§Õ???????????????????????????????????????????????????????????????????????§»????? +¹ÜµÀÊǵ¥ÏòµÄ¡¢ÏȽøÏȳöµÄ¡¢Î޽ṹµÄ¡¢¹Ì¶¨´óСµÄ×Ö½ÚÁ÷£¬Ëü°ÑÒ»¸ö½ø³ÌµÄ±ê×¼Êä³öºÍÁíÒ»¸ö½ø³ÌµÄ±ê×¼ÊäÈëÁ¬½ÓÔÚÒ»Æð¡£Ð´½ø³ÌÔڹܵÀµÄβ¶ËдÈëÊý¾Ý£¬¶Á½ø³ÌÔڹܵÀµÄÊ׶˶Á³öÊý¾Ý¡£Êý¾Ý¶Á³öºó½«´Ó¹ÜµÀÖÐÒÆ×ߣ¬ÆäËü¶Á½ø³Ì¶¼²»ÄÜÔÙ¶Áµ½ÕâЩÊý¾Ý¡£ -???????????????????????????????????????????§Õ??????????????????????????????????????????????§Õ????????????????????????????????§Õ????????????? +¹ÜµÀÌṩÁ˼òµ¥µÄÁ÷¿ØÖÆ»úÖÆ£¬½ø³ÌÊÔͼ¶Á¿Õ¹ÜµÀʱ£¬ÔÚÓÐÊý¾ÝдÈë¹ÜµÀǰ£¬½ø³Ì½«Ò»Ö±×èÈû¡£Í¬ÑùµØ£¬¹ÜµÀÒѾ­Âúʱ£¬½ø³ÌÔÙÊÔͼд¹ÜµÀ£¬ÔÚÆäËü½ø³Ì´Ó¹ÜµÀÖÐÒÆ×ßÊý¾Ý֮ǰ£¬Ð´½ø³Ì½«Ò»Ö±×èÈû¡£ -Linux ?§Û?????????????????? +Linux ÖйܵÀÊÇͨ¹ý¿ÕÎļþÀ´ÊµÏÖ¡£ -?????????? +¹ÜµÀÓÐÈýÖÖ£º -?? ????????????????????????????????????????????????????????????????????? +¢Ù ÆÕͨ¹ÜµÀ£ºÓÐÁ½¸öÏÞÖÆ£ºÒ»ÊÇÖ»Ö§³Ö°ëË«¹¤Í¨ÐÅ·½Ê½£¬¼´Ö»Äܵ¥Ïò´«Ê䣻¶þÊÇÖ»ÄÜÔÚ¸¸×Ó½ø³ÌÖ®¼äʹÓã» -?? ???????????????????????????? +¢Ú Á÷¹ÜµÀ£ºÈ¥³ýµÚÒ»¸öÏÞÖÆ£¬Ö§³ÖË«Ïò´«Ê䣻 -?? ????????????????????????????????????????????? +¢Û ÃüÃû¹ÜµÀ£ºÈ¥³ýµÚ¶þ¸öÏÞÖÆ£¬¿ÉÒÔÔÚ²»Ïà¹Ø½ø³ÌÖ®¼ä½øÐÐͨÐÅ¡£ -### 2. ????? +### 2. ÐźÅÁ¿ -?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????¦±? +ÐźÅÁ¿ÊÇÒ»¸ö¼ÆÊýÆ÷£¬¿ÉÒÔÓÃÀ´¿ØÖƶà¸ö½ø³Ì¶Ô¹²Ïí×ÊÔ´µÄ·ÃÎÊ¡£Ëü³£×÷ΪһÖÖËø»úÖÆ£¬·Àֹij½ø³ÌÕýÔÚ·ÃÎʹ²Ïí×ÊԴʱ£¬ÆäËü½ø³ÌÒ²·ÃÎʸÃ×ÊÔ´¡£Òò´Ë£¬Ö÷Òª×÷Ϊ½ø³Ì¼äÒÔ¼°Í¬Ò»½ø³ÌÄÚ²»Í¬Ïß³ÌÖ®¼äµÄͬ²½ÊֶΡ£ -### 3. ??????? +### 3. ÏûÏ¢¶ÓÁÐ -??????§á?????????????????????????????????????????????§³???????? +ÏûÏ¢¶ÓÁп˷þÁËÐźŴ«µÝÐÅÏ¢ÉÙ¡¢¹ÜµÀÖ»ÄܳÐÔØÎÞ¸ñʽ×Ö½ÚÁ÷ÒÔ¼°»º³åÇø´óСÊÜÏÞµÈȱµã¡£ -### 4. ??? +### 4. ÐźŠ-????????????????????????????????????????????????? +ÐźÅÊÇÒ»ÖֱȽϸ´ÔÓµÄͨÐÅ·½Ê½£¬ÓÃÓÚ֪ͨ½ÓÊÕ½ø³Ìij¸öʼþÒѾ­·¢Éú¡£ -### 5. ??????? +### 5. ¹²ÏíÄÚ´æ -????????????????????????????????????—¨??¦É??????????????????????????????????????????????????? IPC ??????????????????????????????§¹?????????????????????????????????????????????????????????????????? +¹²ÏíÄÚ´æ¾ÍÊÇÓ³ÉäÒ»¶ÎÄܱ»ÆäËü½ø³ÌËù·ÃÎʵÄÄڴ棬Õâ¶Î¹²ÏíÄÚ´æÓÉÒ»¸ö½ø³Ì´´½¨£¬µ«¶à¸ö½ø³Ì¶¼¿ÉÒÔ·ÃÎÊ¡£¹²ÏíÄÚ´æÊÇ×î¿ìµÄ IPC ·½Ê½£¬ËüÊÇÕë¶ÔÆäËü½ø³Ì¼äͨÐÅ·½Ê½ÔËÐÐЧÂʵͶø×¨ÃÅÉè¼ÆµÄ¡£ËüÍùÍùÓëÆäËüͨÐÅ»úÖÆ£¨ÈçÐźÅÁ¿£©ÅäºÏʹÓã¬À´ÊµÏÖ½ø³Ì¼äµÄͬ²½ºÍͨÐÅ¡£ -### 6. ????? +### 6. Ì×½Ó×Ö -????????????????????????????????????????????????????????????????? +Ì×½Ó×ÖÒ²ÊÇÒ»ÖÖ½ø³Ì¼äͨÐÅ»úÖÆ£¬ÓëÆäËüͨÐÅ»úÖÆ²»Í¬µÄÊÇ£¬Ëü¿ÉÓÃÓÚ²»Í¬»úÆ÷¼äµÄ½ø³ÌͨÐÅ¡£ -## ??????????? +## ¾­µäͬ²½ÎÊÌâ -?????????????????????????????? +Éú²úÕߺÍÏû·ÑÕßÎÊÌâÇ°ÃæÒѾ­ÌÖÂÛ¹ý¡£ -### 1. ????-§Õ?????? +### 1. ¶ÁÕß-дÕßÎÊÌâ -????????????????????§Ø???????????????????§Õ???§Õ??§Õ???????????? +ÔÊÐí¶à¸ö½ø³Ìͬʱ¶ÔÊý¾Ý½øÐжÁ²Ù×÷£¬µ«ÊDz»ÔÊÐí¶ÁºÍдÒÔ¼°Ð´ºÍд²Ù×÷ͬʱ·¢Éú¡£ -?????????? count ????????????§Ø????????????????????????? count_mutex ????? count ??????????????? data_mutex ??????§Õ??????????? +Ò»¸öÕûÐͱäÁ¿ count ¼Ç¼ÔÚ¶ÔÊý¾Ý½øÐжÁ²Ù×÷µÄ½ø³ÌÊýÁ¿£¬Ò»¸ö»¥³âÁ¿ count_mutex ÓÃÓÚ¶Ô count ¼ÓËø£¬Ò»¸ö»¥³âÁ¿ data_mutex ÓÃÓÚ¶Ô¶ÁдµÄÊý¾Ý¼ÓËø¡£ ```c typedef int semaphore; @@ -450,7 +450,7 @@ void reader() { while(TRUE) { down(count_mutex); count++; - if(count == 1) down(data_mutex); // ????????????????????§Þ????????§Õ??????? + if(count == 1) down(data_mutex); // µÚÒ»¸ö¶ÁÕßÐèÒª¶ÔÊý¾Ý½øÐмÓËø£¬·Àֹд½ø³Ì·ÃÎÊ up(count_mutex); read(); down(count_mutex); @@ -469,13 +469,13 @@ void writer() { } ``` -### 2. ???????????? +### 2. ÕÜѧ¼Ò½ø²ÍÎÊÌâ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/a9077f06-7584-4f2b-8c20-3a8e46928820.jpg) -????????¦¶??????????????????????????????????????????????????????????????????????????????????????????????????????? +Îå¸öÕÜѧ¼ÒΧ×ÅÒ»ÕÅÔ²ÖÜ£¬Ã¿¸öÕÜѧ¼ÒÃæÇ°·Å×Å·¹¡£ÕÜѧ¼ÒµÄÉú»îÓÐÁ½ÖÖ½»Ìæ»î¶¯£º³Ô·¹ÒÔ¼°Ë¼¿¼¡£µ±Ò»¸öÕÜѧ¼Ò³Ô·¹Ê±£¬ÐèÒªÏÈÒ»¸ùÒ»¸ùÄÃÆð×óÓÒÁ½±ßµÄ¿ê×Ó¡£ -??????????????????????????????????????????????????????????????????????????????? +ÏÂÃæÊÇÒ»ÖÖ´íÎóµÄ½â·¨£¬¿¼Âǵ½Èç¹ûÿ¸öÕÜѧ¼ÒͬʱÄÃÆð×óÊֱߵĿê×Ó£¬ÄÇô¾ÍÎÞ·¨ÄÃÆðÓÒÊֱߵĿê×Ó£¬Ôì³ÉËÀËø¡£ ```c #define N 5 @@ -496,7 +496,7 @@ void philosopher(int i) { } ``` -???????????????????????????????????????????????????????????????????????????????????????????¦Ä???????? +ΪÁË·ÀÖ¹ËÀËøµÄ·¢Éú£¬¿ÉÒÔ¼ÓÒ»µãÏÞÖÆ£¬Ö»ÔÊÐíͬʱÄÃÆð×óÓÒÁ½±ßµÄ¿ê×Ó£¬·½·¨ÊÇÒýÈëÒ»¸ö»¥³âÁ¿£¬¶ÔÄÃÆðÁ½¸ö¿ê×ÓµÄÄǶδúÂë¼ÓËø¡£ ```c semaphore mutex = 1; @@ -517,223 +517,223 @@ void philosopher(int i) { } ``` -# ?????? ???? +# µÚÈýÕ ËÀËø -## ?????????? +## ËÀËøµÄÌõ¼þ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/c037c901-7eae-4e31-a1e4-9d41329e5c3e.png) -1. ???? -2. ???????????????????????????????????????????????????? -3. ??????? -4. ??¡¤??? +1. »¥³â +2. ÇëÇóÓë±£³Ö£ºÒ»¸ö½ø³ÌÒòÇëÇó×ÊÔ´¶ø×èÈûʱ£¬¶ÔÒÑ»ñµÃµÄ×ÊÔ´±£³Ö²»·Å¡£ +3. ²»¿ÉÇÀÕ¼ +4. »·Â·µÈ´ý -## ??????????? +## ËÀËøµÄ´¦Àí·½·¨ -### 1. ??????? +### 1. ÍÒÄñ²ßÂÔ -???????????????????????????? +°ÑÍ·ÂñÔÚɳ×ÓÀ¼Ù×°¸ù±¾Ã»·¢ÉúÎÊÌâ¡£ -????????????? +ÕâÖÖ²ßÂÔ²»¿ÉÈ¡¡£ -### 2. ??????? +### 2. ËÀËøÔ¤·À -???????????????????????? +ÔÚ³ÌÐòÔËÐÐ֮ǰԤ·À·¢ÉúËÀËø¡£ -#### 2.1 ??????????? +#### 2.1 ÆÆ»µ»¥³âÌõ¼þ -?????????????????????????????????????¦·???????????????????????????????????? +ÀýÈç¼ÙÍÑ»ú´òÓ¡»ú¼¼ÊõÔÊÐíÈô¸É¸ö½ø³ÌͬʱÊä³ö£¬Î¨Ò»ÕæÕýÇëÇóÎïÀí´òÓ¡»úµÄ½ø³ÌÊÇ´òÓ¡»úÊØ»¤½ø³Ì¡£ -#### 2.2 ??????????????? +#### 2.2 ÆÆ»µÇëÇóÓë±£³ÖÌõ¼þ -??????????ÕÇ???§ß?????????????????????????????? +Ò»ÖÖʵÏÖ·½Ê½Êǹ涨ËùÓнø³ÌÔÚ¿ªÊ¼Ö´ÐÐǰÇëÇóËùÐèÒªµÄÈ«²¿×ÊÔ´¡£ -#### 2.3 ?????????????? +#### 2.3 ÆÆ»µ²»¿ÉÇÀÕ¼Ìõ¼þ -#### 2.4 ?????¡¤??? +#### 2.4 ÆÆ»µ»·Â·µÈ´ý -???????????????????????????????????? +¸ø×ÊԴͳһ±àºÅ£¬½ø³ÌÖ»Äܰ´±àºÅ˳ÐòÀ´ÇëÇó×ÊÔ´¡£ -### 3. ???????? +### 3. ËÀËø±ÜÃâ -?????????????????????? +ÔÚ³ÌÐòÔËÐÐʱ±ÜÃâ·¢ÉúËÀËø¡£ -#### 3.1 ????? +#### 3.1 °²È«×´Ì¬ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/ed523051-608f-4c3f-b343-383e2d194470.png) -? a ?????? has ???????§Ö?????????????? max ??????????????????free ??????§á????????????????? a ????????????? B ????????????????????§ß???????? B????? free ??? 4??????????????????? C ?? A????????§ß???????????§µ????????? a ?????????????? +ͼ a µÄµÚ¶þÁÐ has ±íʾÒÑÓµÓеÄ×ÊÔ´Êý£¬µÚÈýÁÐ max ±íʾ×ܹ²ÐèÒªµÄ×ÊÔ´Êý£¬free ±íʾ»¹ÓпÉÒÔʹÓõÄ×ÊÔ´Êý¡£´Óͼ a ¿ªÊ¼³ö·¢£¬ÏÈÈà B ÓµÓÐËùÐèµÄËùÓÐ×ÊÔ´£¬ÔËÐнáÊøºóÊÍ·Å B£¬´Ëʱ free ±äΪ 4£»½Ó×ÅÒÔͬÑùµÄ·½Ê½ÔËÐÐ C ºÍ A£¬Ê¹µÃËùÓнø³Ì¶¼Äܳɹ¦ÔËÐУ¬Òò´Ë¿ÉÒÔ³ÆÍ¼ a ËùʾµÄ״̬ʱ°²È«µÄ¡£ -???‰Ø?????????????????????????§ß?????????????????????????????????????????????????????????????????????????? +¶¨Ò壺Èç¹ûûÓÐËÀËø·¢Éú£¬²¢ÇÒ¼´Ê¹ËùÓнø³ÌͻȻÇëÇó¶Ô×ÊÔ´µÄ×î´óÐèÇó£¬Ò²ÈÔÈ»´æÔÚijÖÖµ÷¶È´ÎÐòÄܹ»Ê¹µÃÿһ¸ö½ø³ÌÔËÐÐÍê±Ï£¬Ôò³Æ¸Ã״̬Êǰ²È«µÄ¡£ -#### 3.2 ????????????§Þ??? +#### 3.2 µ¥¸ö×ÊÔ´µÄÒøÐмÒËã·¨ -???§³????????§Þ???????????????????????????????????????§Ø????????????????????????????????????????????????? +Ò»¸öС³ÇÕòµÄÒøÐмң¬ËûÏòһȺ¿Í»§·Ö±ð³ÐŵÁËÒ»¶¨µÄ´û¿î¶î¶È£¬Ëã·¨Òª×öµÄÊÇÅж϶ÔÇëÇóµÄÂú×ãÊÇ·ñ»á½øÈë²»°²È«×´Ì¬£¬Èç¹ûÊÇ£¬¾Í¾Ü¾øÇëÇó£»·ñÔòÓèÒÔ·ÖÅä¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/d160ec2e-cfe2-4640-bda7-62f53e58b8c0.png) -??? c ????????????????????????????????????? c ?§Ö????? +ÉÏͼ c Ϊ²»°²È«×´Ì¬£¬Òò´ËËã·¨»á¾Ü¾øÖ®Ç°µÄÇëÇ󣬴Ӷø±ÜÃâ½øÈëͼ c ÖеÄ״̬¡£ -#### 3.3 ???????????§Þ??? +#### 3.3 ¶à¸ö×ÊÔ´µÄÒøÐмÒËã·¨ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/62e0dd4f-44c3-43ee-bb6e-fedb9e068519.png) -????????????????????????????????????????????????????????????????????????? E??P ??? A ???????????????????????????????????????????????????????????????????? A=(1020)????? 4 ??????????? 1/0/2/0?? +ÉÏͼÖÐÓÐÎå¸ö½ø³Ì£¬Ëĸö×ÊÔ´¡£×ó±ßµÄͼ±íʾÒѾ­·ÖÅäµÄ×ÊÔ´£¬ÓұߵÄͼ±íʾ»¹ÐèÒª·ÖÅäµÄ×ÊÔ´¡£×îÓÒ±ßµÄ E¡¢P ÒÔ¼° A ·Ö±ð±íʾ£º×Ü×ÊÔ´¡¢ÒÑ·ÖÅä×ÊÔ´ÒÔ¼°¿ÉÓÃ×ÊÔ´£¬×¢ÒâÕâÈý¸öΪÏòÁ¿£¬¶ø²»ÊǾßÌåÊýÖµ£¬ÀýÈç A=(1020)£¬±íʾ 4 ¸ö×ÊÔ´·Ö±ð»¹Ê£Ï 1/0/2/0¡£ -????????????????????? +¼ì²éÒ»¸ö״̬ÊÇ·ñ°²È«µÄËã·¨ÈçÏ£º -?? ????????????????????§³????????? A??????????????????§µ????????????????????????????? +¢Ù ²éÕÒÓұߵľØÕóÊÇ·ñ´æÔÚÒ»ÐÐСÓÚµÈÓÚÏòÁ¿ A¡£Èç¹û²»´æÔÚÕâÑùµÄÐУ¬ÄÇôϵͳ½«»á·¢ÉúËÀËø£¬×´Ì¬ÊDz»°²È«µÄ¡£ -?? ?????????????§µ????????????????????????????????? A ?§³? +¢Ú ¼ÙÈôÕÒµ½ÕâÑùÒ»ÐУ¬½«¸Ã½ø³Ì±ê¼ÇΪÖÕÖ¹£¬²¢½«ÆäÒÑ·ÖÅä×ÊÔ´¼Óµ½ A ÖС£ -?? ???????????????????§ß???????????????????????? +¢Û ÖØ¸´ÒÔÉÏÁ½²½£¬Ö±µ½ËùÓнø³Ì¶¼±ê¼ÇΪÖÕÖ¹£¬Ôò״̬ʱ°²È«µÄ¡£ -### 4. ???????????????? +### 4. ËÀËø¼ì²âÓëËÀËø»Ö¸´ -??????????????????????????????????????????§Ý???? +²»ÊÔͼ×éÖ¯ËÀËø£¬¶øÊǵ±¼ì²âµ½ËÀËø·¢Éúʱ£¬²ÉÈ¡´ëÊ©½øÐлָ´¡£ -#### 4.1 ????????? +#### 4.1 ËÀËø¼ì²âËã·¨ -?????????????????????????????????????????????????????????§µ????????§Ö????????????????????????????????????§³? +ËÀËø¼ì²âµÄ»ù±¾Ë¼ÏëÊÇ£¬Èç¹ûÒ»¸ö½ø³ÌËùÇëÇóµÄ×ÊÔ´Äܹ»±»Âú×㣬ÄÇô¾ÍÈÃËüÖ´ÐУ¬ÊÍ·ÅËüÓµÓеÄËùÓÐ×ÊÔ´£¬È»ºóÈÃÆäËüÄÜÂú×ãÌõ¼þµÄ½ø³ÌÖ´ÐС£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/e1eda3d5-5ec8-4708-8e25-1a04c5e11f48.png) -????§µ?????????????????????????????????????? +ÉÏͼÖУ¬ÓÐÈý¸ö½ø³ÌËĸö×ÊÔ´£¬Ã¿¸öÊý¾Ý´ú±íµÄº¬ÒåÈçÏ£º -E ????????????? -A ?????????????? -C ???????????????§Ö?????????????§Ø???????????????????????? -R ??????????????????????? +E ÏòÁ¿£º×ÊÔ´×ÜÁ¿ +A ÏòÁ¿£º×ÊÔ´Ê£ÓàÁ¿ +C ¾ØÕó£ºÃ¿¸ö½ø³ÌËùÓµÓеÄ×ÊÔ´ÊýÁ¿£¬Ã¿Ò»Ðж¼´ú±íÒ»¸ö½ø³ÌÓµÓÐ×ÊÔ´µÄÊýÁ¿ +R ¾ØÕó£ºÃ¿¸ö½ø³ÌÇëÇóµÄ×ÊÔ´ÊýÁ¿ -???? P1 ?? P2 ?????????????¨°?????????§ß??? P3 ??????? P3 ??§µ??????? P3 ??§Ö????????? A = (2 2 2 0)??P1 ??????§µ???§Ü???? P1 ??§Ö?????? A = (4 2 2 2) ??P2 ???????§³????§ß?????????????§µ?????????? +½ø³Ì P1 ºÍ P2 ËùÇëÇóµÄ×ÊÔ´¶¼µÃ²»µ½Âú×㣬ֻÓнø³Ì P3 ¿ÉÒÔ£¬Èà P3 Ö´ÐУ¬Ö®ºóÊÍ·Å P3 ÓµÓеÄ×ÊÔ´£¬´Ëʱ A = (2 2 2 0)¡£P1 ¿ÉÒÔÖ´ÐУ¬Ö´ÐкóÊÍ·Å P1 ÓµÓеÄ×ÊÔ´£¬ A = (4 2 2 2) £¬P2 Ò²¿ÉÒÔÖ´ÐС£ËùÓнø³Ì¶¼¿ÉÒÔ˳ÀûÖ´ÐУ¬Ã»ÓÐËÀËø¡£ -?????????? +Ëã·¨×ܽáÈçÏ£º -???????????????????????§Û????§á????????????????????¦Ê???§Ò???????????????????? +ÿ¸ö½ø³Ì×ʼʱ¶¼²»±»±ê¼Ç£¬Ö´Ðйý³ÌÓпÉÄܱ»±ê¼Ç¡£µ±Ëã·¨½áÊøÊ±£¬ÈκÎûÓб»±ê¼ÇµÄ½ø³Ì¶¼ÊÇËÀËø½ø³Ì¡£ -?? ????????§Ò?????? Pi??????????????§³????? A?? -?? ????????????????????????? C ?????? i ????????? A ?§µ?????????????? ??? -?? ??????????????????????????? +¢Ù ѰÕÒÒ»¸öûÓбê¼ÇµÄ½ø³Ì Pi£¬ËüËùÇëÇóµÄ×ÊԴСÓÚµÈÓÚ A¡£ +¢Ú Èç¹ûÕÒµ½ÁËÕâÑùÒ»¸ö½ø³Ì£¬ÄÇô½« C ¾ØÕóµÄµÚ i ÐÐÏòÁ¿¼Óµ½ A ÖУ¬±ê¼Ç¸Ã½ø³Ì£¬²¢×ª»Ø ¢Ù¡£ +¢Û Èç¹ûÓÐûÓÐÕâÑùÒ»¸ö½ø³Ì£¬Ëã·¨ÖÕÖ¹¡£ -#### 4.2 ??????? +#### 4.2 ËÀËø»Ö¸´ -?? ?????????? -?? ??????? +¢Ù ÀûÓÃÇÀÕ¼»Ö¸´ +¢Ú ɱËÀ½ø³Ì -# ?????? ?›¥?????? +# µÚËÄÕ ´æ´¢Æ÷¹ÜÀí -## ??????? +## ÐéÄâÄÚ´æ -????????????????????????????????????ï…??????? ?????§»????????????—¨??????????????????????—¨???????????????????????????§³? +ÿ¸ö³ÌÐòÓµÓÐ×Ô¼ºµÄµØÖ·¿Õ¼ä£¬Õâ¸öµØÖ·¿Õ¼ä±»·Ö¸î³É¶à¸ö¿é£¬Ã¿Ò»¿é³ÆÎªÒ» Ò³¡£ÕâЩҳ±»Ó³Éäµ½ÎïÀíÄڴ棬µ«²»ÐèÒªÓ³Éäµ½Á¬ÐøµÄÎïÀíÄڴ棬Ҳ²»ÐèÒªËùÓÐÒ³¶¼±ØÐëÔÚÎïÀíÄÚ´æÖС£ -??????????????????????????§Ö????????????????????§Ò??????????????????????????????????§Ö????????????????????????????????????›g?????????????þŸ +µ±³ÌÐòÒýÓõ½Ò»²¿·ÖÔÚÎïÀíÄÚ´æÖеĵØÖ·¿Õ¼äʱ£¬ÓÉÓ²¼þÁ¢¼´Ö´ÐбØÒªµÄÓ³Éä¡£µ±³ÌÐòÒýÓõ½Ò»²¿·Ö²»ÔÚÎïÀíÄÚ´æÖеĵØÖ·¿Õ¼äʱ£¬ÓɲÙ×÷ϵͳ¸ºÔð½«È±Ê§µÄ²¿·Ö×°ÈëÎïÀíÄÚ´æ²¢ÖØÐÂÖ´ÐÐʧ°ÜµÄÖ¸Áî¡£ -## ??????? +## ·ÖÒ³Óë·Ö¶Î -### 1. ??? +### 1. ·ÖÒ³ -??????????????????????????§³?????????????????????????????????????ï…??????§³?????????????????????????????????§µ????????????????????????????????????????? +Óû§³ÌÐòµÄµØÖ·¿Õ¼ä±»»®·ÖΪÈô¸É¹Ì¶¨´óСµÄÇøÓò£¬³ÆÎª¡°Ò³¡±¡£ÏàÓ¦µØ£¬ÄÚ´æ¿Õ¼ä·Ö³ÉÈô¸É¸öÎïÀí¿é£¬Ò³ºÍ¿éµÄ´óСÏàµÈ¡£¿É½«Óû§³ÌÐòµÄÈÎÒ»Ò³·ÅÔÚÄÚ´æµÄÈÎÒ»¿éÖУ¬ÊµÏÖÁËÀëÉ¢·ÖÅ䣬ÓÉÒ»¸öÒ³±íÀ´Î¬»¤ËüÃÇÖ®¼äµÄÓ³Éä¹ØÏµ¡£ -### 2. ??? +### 2. ·Ö¶Î ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/22de0538-7c6e-4365-bd3b-8ce3c5900216.png) -??????????????????????§ß??????????? 4 ????????????????????¡Â????????????????????????????????????????? +ÉÏͼΪһ¸ö±àÒëÆ÷ÔÚ±àÒë¹ý³ÌÖн¨Á¢µÄ¶à¸ö±í£¬ÓÐ 4 ¸ö±íÊǶ¯Ì¬Ôö³¤µÄ£¬Èç¹ûʹÓ÷ÖҳϵͳµÄһάµØÖ·¿Õ¼ä£¬¶¯Ì¬µÝÔöµÄÌØµã»áµ¼Ö¸²¸ÇÎÊÌâµÄ³öÏÖ¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/e0900bb2-220a-43b7-9aa9-1d5cd55ff56e.png) -??¦Å???????????????¦²?????¦É?????????????????????¦Å???????????????????? +·Ö¶ÎµÄ×ö·¨ÊǰÑÿ¸ö±í·Ö³É¶Î£¬Ò»¸ö¶Î¹¹³ÉÒ»¸ö¶ÀÁ¢µÄµØÖ·¿Õ¼ä¡£Ã¿¸ö¶ÎµÄ³¤¶È¿ÉÒÔ²»Í¬£¬¿ÉÒÔ¶¯Ì¬¸Ä±ä¡£ -????¦Æ???????????????? +ÿ¸ö¶Î¶¼ÐèÒª³ÌÐòÔ±À´»®·Ö¡£ -### 3. ???? +### 3. ¶Îҳʽ -?¡Â?¦Ç?????????????????›¥???????????????????¦Ë????????????¦²????????????????????????¦Ç??????§³????????? +Ó÷ֶη½·¨À´·ÖÅäºÍ¹ÜÀíÐéÄâ´æ´¢Æ÷¡£³ÌÐòµÄµØÖ·¿Õ¼ä°´Âß¼­µ¥Î»·Ö³É»ù±¾¶ÀÁ¢µÄ¶Î£¬¶øÃ¿Ò»¶ÎÓÐ×Ô¼ºµÄ¶ÎÃû£¬ÔÙ°Ñÿ¶Î·Ö³É¹Ì¶¨´óСµÄÈô¸ÉÒ³¡£ -?¡Â??????????????????µµ???????????????????????§³????›¥?ï…???????????¦Ê????????????????????????????§Ö???????????????????????? +Ó÷ÖÒ³·½·¨À´·ÖÅäºÍ¹ÜÀíʵ´æ¡£¼´°ÑÕû¸öÖ÷´æ·Ö³ÉÓëÉÏÊöÒ³´óСÏàµÈµÄ´æ´¢¿é£¬¿É×°Èë×÷ÒµµÄÈκÎÒ»Ò³¡£³ÌÐò¶ÔÄÚ´æµÄµ÷Èë»òµ÷³öÊǰ´Ò³½øÐеġ£µ«ËüÓֿɰ´¶ÎʵÏÖ¹²ÏíºÍ±£»¤¡£ -### 4. ??????????? +### 4. ·ÖÒ³Óë·Ö¶ÎÇø±ð -?? ???????????????????????????????????????????????¦±? +¢Ù ¶Ô³ÌÐòÔ±µÄ͸Ã÷ÐÔ£º·Öҳ͸Ã÷£¬µ«ÊÇ·Ö¶ÎÐèÒª³ÌÐòÔ±ÏÔʾ»®·Öÿ¸ö¶Î¡£ -?? ?????????????????????????????????? +¢Ú µØÖ·¿Õ¼äµÄά¶È£º·ÖÒ³ÊÇһάµØÖ·¿Õ¼ä£¬·Ö¶ÎÊǶþάµÄ¡£ -?? ??§³????????????§³??????¦Å??§³????????? +¢Û ´óСÊÇ·ñ¿ÉÒԸı䣺ҳµÄ´óС²»¿É±ä£¬¶ÎµÄ´óС¿ÉÒÔ¶¯Ì¬¸Ä±ä¡£ -?? ??????????????????????????—¨????????????????????????????????????????????????????????????????????????????? +¢Ü ³öÏÖµÄÔ­Òò£º·ÖÒ³Ö÷ÒªÓÃÓÚʵÏÖÐéÄâÄڴ棬´Ó¶ø»ñµÃ¸ü´óµÄµØÖ·¿Õ¼ä£»·Ö¶ÎÖ÷ÒªÊÇΪÁËʹ³ÌÐòºÍÊý¾Ý¿ÉÒÔ±»»®·ÖΪÂß¼­É϶ÀÁ¢µÄµØÖ·¿Õ¼ä²¢ÇÒÓÐÖúÓÚ¹²ÏíºÍ±£»¤¡£ -## ???????? +## Ò³ÃæÖû»Ëã·¨ -????????§Û????§µ???????????????ÖÎ????????????????????—¨?????????????§á????????????????§Ö????????›Ô?????????§µ???????????????????????????§³????????????????????????????????????????????????? +ÔÚ³ÌÐòÔËÐйý³ÌÖУ¬ÈôÆäËùÒª·ÃÎʵÄÒ³Ãæ²»ÔÚÄÚ´æ¶øÐèÒª°ÑËüÃǵ÷ÈëÄڴ棬µ«ÊÇÄÚ´æÒÑÎÞ¿ÕÏпռäʱ£¬ÏµÍ³±ØÐë´ÓÄÚ´æÖе÷³öÒ»¸öÒ³Ãæµ½´ÅÅ̶Ի»ÇøÖУ¬²¢ÇÒ½«³ÌÐòËùÐèÒªµÄÒ³Ãæµ÷ÈëÄÚ´æÖС£Ò³ÃæÖû»Ëã·¨µÄÖ÷ҪĿ±êÊÇÊ¹Ò³ÃæÖû»ÆµÂÊ×îµÍ£¨Ò²¿ÉÒÔ˵ȱҳÂÊ×îµÍ£©¡£ -### 1. ????Optimal?? +### 1. ×î¼Ñ£¨Optimal£© -???????????????�Ÿ??????????????????????????????????????? +ËùÑ¡ÔñµÄ±»»»³öµÄÒ³Ãæ½«ÊÇ×ʱ¼äÄÚ²»ÔÙ±»·ÃÎÊ£¬Í¨³£¿ÉÒÔ±£Ö¤»ñµÃ×îµÍµÄȱҳÂÊ¡£ -???????????????????????????????????????????? +ÊÇÒ»ÖÖÀíÂÛÉϵÄËã·¨£¬ÒòΪÎÞ·¨ÖªµÀÒ»¸öÒ³Ãæ¶à³¤Ê±¼ä»á±»ÔÙ·ÃÎʵ½¡£ -??????????????????????????????ï…??????????????????§µ? +¾ÙÀý£ºÒ»¸öϵͳΪij½ø³Ì·ÖÅäÁËÈý¸öÎïÀí¿é£¬²¢ÓÐÈçÏÂÒ³ÃæÒýÓÃÐòÁУº -7??0??1??2??0??3??0??4??2??3??0??3??2??1??2??0??1??7??0??1 +7£¬0£¬1£¬2£¬0£¬3£¬0£¬4£¬2£¬3£¬0£¬3£¬2£¬1£¬2£¬0£¬1£¬7£¬0£¬1 -?????????????? 7,0,1 ????????????µµ?????????????? 2 ??????????§Ø??????? 7 ???????????? 7 ??¦Á????????????? +½ø³ÌÔËÐÐʱ£¬ÏȽ« 7,0,1 Èý¸öÒ³Ãæ×°ÈëÄÚ´æ¡£µ±½ø³ÌÒª·ÃÎÊÒ³Ãæ 2 ʱ£¬²úÉúȱҳÖжϣ¬»á½«Ò³Ãæ 7 »»³ö£¬ÒòÎªÒ³Ãæ 7 Ôٴα»·ÃÎʵÄʱ¼ä×¡£ -### 2. ????????FIFO?? +### 2. ÏȽøÏȳö£¨FIFO£© -???????????????????????µµ +ËùÑ¡Ôñ»»³öµÄÒ³ÃæÊÇ×îÏȽøÈëµÄÒ³Ãæ¡£ -????????§»???????????????????????????????????? +¸ÃËã·¨»á½«ÄÇЩ¾­³£±»·ÃÎʵÄÒ³ÃæÒ²±»»»³ö£¬´Ó¶øÊ¹È±Ò³ÂÊÉý¸ß¡£ -### 3. ??????¦Ä????LRU??Least Recently Used?? +### 3. ×î½ü×î¾ÃδʹÓã¨LRU£¬Least Recently Used£© -???????????????????????????????????????????????????LRU ????????¦Ä??????�I???? +ËäÈ»ÎÞ·¨ÖªµÀ½«À´ÒªÊ¹ÓõÄÒ³ÃæÇé¿ö£¬µ«ÊÇ¿ÉÒÔÖªµÀ¹ýȥʹÓÃÒ³ÃæµÄÇé¿ö¡£LRU ½«×î½ü×î¾ÃδʹÓõÄÒ³Ãæ»»³ö¡£ -???????????????????§Õ›¥???????????????????????????????????????????????????????????????????????????????????????????????????????¦Ä?????????????????????? +¿ÉÒÔÓÃÕ»À´ÊµÏÖ¸ÃËã·¨£¬Õ»ÖÐ´æ´¢Ò³ÃæµÄÒ³ÃæºÅ¡£µ±½ø³Ì·ÃÎÊÒ»¸öÒ³ÃæÊ±£¬½«¸ÃÒ³ÃæµÄÒ³ÃæºÅ´ÓÕ»ÒÆ³ý£¬²¢½«ËüѹÈëÕ»¶¥£¬ÕâÑù£¬×î½ü±»·ÃÎʵÄÒ³ÃæµÄÒ³ÃæºÅ×ÜÊÇÔÚÕ»¶¥£¬¶ø×î½ü×î¾ÃδʹÓõÄÒ³ÃæµÄÒ³ÃæºÅ×ÜÊÇÔÚÕ»µ×¡£ -4??7??0??7??1??0??1??2??1??2??6 +4£¬7£¬0£¬7£¬1£¬0£¬1£¬2£¬1£¬2£¬6 ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/eb859228-c0f2-4bce-910d-d9f76929352b.png) -### 4. ????Clock?? +### 4. ʱÖÓ£¨Clock£© -Clock ?????????????????????¦Ë?????????›R????????????????? 1?? +Clock Ò³ÃæÖû»Ëã·¨ÐèÒªÓõ½Ò»¸ö·ÃÎÊ룬µ±Ò»¸öÒ³Ãæ±»·ÃÎÊʱ£¬½«·ÃÎÊΪÖÃΪ 1¡£ -???????????§Ö??????????????????????§µ??????§Ø?????????ùn????????????????¦Ë?????????¦Ë? 0?????????�I???????????????¦Ë????? 0????????????¦Å???????????????î• +Ê×ÏÈ£¬½«ÄÚ´æÖеÄËùÓÐÒ³ÃæÁ´½Ó³ÉÒ»¸öÑ­»·¶ÓÁУ¬µ±È±Ò³ÖжϷ¢Éúʱ£¬¼ì²éµ±Ç°Ö¸ÕëËùÖ¸ÏòÒ³ÃæµÄ·ÃÎÊ룬Èç¹û·ÃÎÊλΪ 0£¬¾Í½«¸ÃÒ³Ãæ»»³ö£»·ñÔò½«¸ÃÒ³µÄ·ÃÎÊλÉèÖÃΪ 0£¬¸ø¸ÃÒ³ÃæµÚ¶þ´ÎµÄ»ú»á£¬Òƶ¯Ö¸Õë¼ÌÐø¼ì²é¡£ -# ?????? ?õô???? +# µÚÎåÕ É豸¹ÜÀí -## ????????? +## ´ÅÅ̵÷¶ÈËã·¨ -??????????????????????????????§Õ????????????????????????????????????????????????????????? +µ±¶à¸ö½ø³ÌͬʱÇëÇó·ÃÎÊ´ÅÅÌʱ£¬ÐèÒª½øÐдÅÅ̵÷¶ÈÀ´¿ØÖƶԴÅÅ̵ķÃÎÊ¡£´ÅÅ̵÷¶ÈµÄÖ÷ҪĿ±êÊÇʹ´ÅÅÌµÄÆ½¾ùѰµÀʱ¼ä×îÉÙ¡£ -### 1. ?????????FCFS??First Come First Serverd?? +### 1. ÏÈÀ´ÏÈ·þÎñ£¨FCFS£¬First Come First Serverd£© -?????????????????????????????§Ö?????????????????????????????¦Ä????????¦Ê??????????????????????? +¸ù¾Ý½ø³ÌÇëÇó·ÃÎÊ´ÅÅ̵ÄÏȺó´ÎÐòÀ´½øÐе÷¶È¡£ÓŵãÊǹ«Æ½ºÍ¼òµ¥£¬È±µãÒ²ºÜÃ÷ÏÔ£¬ÒòΪδ¶ÔѰµÀ×öÈκÎÓÅ»¯£¬Ê¹Æ½¾ùѰµÀʱ¼ä¿ÉÄܽϳ¤¡£ -### 2. ??????????????SSTF??Shortest Seek Time First?? +### 2. ×î¶ÌѰµÀʱ¼äÓÅÏÈ£¨SSTF£¬Shortest Seek Time First£© -????????????????????????????????????§Ö???????????????????????????????????? FCFS ?¨²?? +ÒªÇó·ÃÎʵĴŵÀÓ뵱ǰ´ÅÍ·ËùÔڴŵÀ¾àÀë×î½üµÄÓÅÏȽøÐе÷¶È¡£ÕâÖÖËã·¨²¢²»Äܱ£Ö¤Æ½¾ùѰµÀʱ¼ä×î¶Ì£¬µ«ÊÇ±È FCFS ºÃºÜ¶à¡£ -### 3. ???????SCAN?? +### 3. ɨÃèËã·¨£¨SCAN£© -SSTF ???????§Þ??????????????????????????????????????????????????????????????????????????????????????????????? +SSTF »á³öÏÖ½øÐм¢¶öÏÖÏ󡣿¼ÂÇÒÔÏÂÇé¿ö£¬Ð½ø³ÌÇëÇó·ÃÎʵĴŵÀÓë´ÅÍ·ËùÔڴŵÀµÄ¾àÀë×ÜÊDZÈÒ»¸öÔڵȴýµÄ½ø³ÌÀ´µÄ½ü£¬ÄÇôµÈ´ýµÄ½ø³Ì»áÒ»Ö±µÈ´ýÏÂÈ¥¡£ -SCAN ???? SSTF ???????????????????????????????????????????????????????????????????????????????????????????????????????????????? +SCAN Ëã·¨ÔÚ SSTF Ëã·¨Ö®ÉÏ¿¼ÂÇÁË´ÅÍ·µÄÒÆ¶¯·½Ïò£¬ÒªÇóËùÇëÇó·ÃÎʵĴŵÀÔÚ´ÅÍ·µ±Ç°Òƶ¯·½ÏòÉϲÅÄܹ»µÃµ½µ÷¶È¡£ÒòΪ¿¼ÂÇÁËÒÆ¶¯·½Ïò£¬ÄÇôһ¸ö½ø³ÌÇëÇó·ÃÎʵĴŵÀÒ»¶¨»áµÃµ½µ÷¶È¡£ -??????????????????????????????????????????????????????????????????????????§µ????????? SCAN ?????????????? +µ±Ò»¸ö´ÅÍ·×ÔÀïÏòÍâÒÆ¶¯Ê±£¬ÒƵ½×îÍâ²à»á¸Ä±äÒÆ¶¯·½ÏòΪ×ÔÍâÏòÀÕâÖÖÒÆ¶¯µÄ¹æÂÉÀàËÆÓÚµçÌݵÄÔËÐУ¬Òò´ËÓÖ³£³Æ SCAN Ë㷨ΪµçÌݵ÷¶ÈËã·¨¡£ -### 4. ??????????CSCAN?? +### 4. Ñ­»·É¨ÃèËã·¨£¨CSCAN£© -CSCAN ?? SCAN ?????????????????????????????????? +CSCAN ¶Ô SCAN ½øÐÐÁ˸͝£¬ÒªÇó´ÅͷʼÖÕÑØ×ÅÒ»¸ö·½ÏòÒÆ¶¯¡£ -# ?¦Ï????? +# ²Î¿¼×ÊÁÏ - Tanenbaum A S, Bos H. Modern operating systems[M]. Prentice Hall Press, 2014. -- ?????, ?????, ??§³??. ???????????[M]. ???????????????????, 2001. +- ÌÀ×Óå­, ÕÜ·ïÆÁ, ÌÀСµ¤. ¼ÆËã»ú²Ù×÷ϵͳ[M]. Î÷°²µç×ӿƼ¼´óѧ³ö°æÉç, 2001. -- Bryant, R. E., & O??Hallaron, D. R. (2004). ?????????????. +- Bryant, R. E., & O¡¯Hallaron, D. R. (2004). ÉîÈëÀí½â¼ÆËã»úϵͳ. -- [§³???????????????](http://wdxtub.com/interview/index.html) +- [СÍÁµ¶µÄÃæÊÔË¢Ìâ±Ê¼Ç](http://wdxtub.com/interview/index.html) -- [??????????????](http://blog.csdn.net/yufaw/article/details/7409596) +- [½ø³Ì¼äµÄ¼¸ÖÖͨÐÅ·½Ê½](http://blog.csdn.net/yufaw/article/details/7409596) diff --git a/notes/计算机网络.md b/notes/计算机网络.md index a202625f..b4581956 100644 --- a/notes/计算机网络.md +++ b/notes/计算机网络.md @@ -1,840 +1,840 @@ -* [????? ????](#?????-????) - * [?????????](#?????????) +* [µÚÒ»Õ ¸ÅÊö](#µÚÒ»ÕÂ-¸ÅÊö) + * [ÍøÂçµÄÍøÂç](#ÍøÂçµÄÍøÂç) * [ISP](#isp) - * [???????????](#???????????) - * [?????????????](#?????????????) - * [??¡¤????????ý‚??](#??¡¤????????ý‚??) - * [1. ??¡¤????](#1-??¡¤????) - * [2. ???????](#2-???????) - * [3. ???ý‚??](#3-???ý‚??) - * [???](#???) - * [1. ???????](#1-???????) - * [2. ???????](#2-???????) - * [3. ???????](#3-???????) - * [4. ??????](#4-??????) - * [??????????????*](#??????????????) - * [1. ???§¿??](#1-???§ï??) - * [2. ???§¿??](#2-???§ï??) - * [3. ???????????????????](#3-???????????????????) - * [4. TCP/IP ?????](#4-tcpip-?????) -* [????? ?????](#?????-?????) - * [?????](#?????) - * [???????](#???????) - * [??????¨¹???](#??????¨¹???) - * [1. ?????¨¢???????](#1-?????¨¢???????) - * [2. ?????????](#2-?????????) - * [3. ???????](#3-???????) - * [4. ??????](#4-??????) -* [?????? ??????¡¤??](#??????-??????¡¤??) - * [????????????](#????????????) - * [1. ??????](#1-??????) - * [2. ???????](#2-???????) - * [3. ?????](#3-?????) - * [??????? -PPP §¿??](#???????--ppp-§ï??) - * [????????????](#????????????) - * [????? - CSMA/CD §¿??*](#?????---csmacd-§ï??) - * [??????](#??????) - * [MAC ??](#mac-??) - * [?????????](#?????????) -* [?????? ?????*](#??????-?????) - * [????§¿?? IP ????](#????§ï??-ip-????) - * [IP ????????](#ip-????????) - * [IP ??????](#ip-??????) - * [1. ????? IP ???](#1-?????-ip-???) - * [2. ????????](#2-????????) - * [3. ??????? CIDR???????????](#3-???????-cidr???????????) - * [IP ????? MAC ???](#ip-?????-mac-???) - * [???????§¿?? ARP](#???????§ï??-arp) - * [¡¤???????](#¡¤???????) - * [????????¡¤??????????](#????????¡¤??????????) - * [¡¤???????????????](#¡¤???????????????) - * [¡¤?????§¿??](#¡¤?????§ï??) - * [1. ???????§¿?? RIP](#1-???????§ï??-rip) - * [2. ???????§¿?? OSPF](#2-???????§ï??-ospf) - * [3. ??????§¿?? BGP](#3-??????§ï??-bgp) - * [??????????§¿?? ICMP](#??????????§ï??-icmp) - * [??????????? PING](#???????????-ping) - * [IP ??](#ip-??) - * [????????? VPN](#?????????-vpn) - * [????????? NAT](#?????????-nat) -* [?????? ?????*](#??????-?????) - * [UDP ?? TCP ?????](#udp-??-tcp-?????) - * [UDP ??????](#udp-??????) - * [TCP ??????](#tcp-??????) - * [TCP ??????????](#tcp-??????????) - * [TCP ????¦Ë???](#tcp-????¦Ë???) - * [TCP ????????](#tcp-????????) - * [TCP ???????](#tcp-???????) - * [TCP ????????](#tcp-????????) - * [TCP ???????](#tcp-???????) - * [??????????????](#??????????????) - * [??????????](#??????????) -* [?????? ??¨°?*](#??????-??¨°?) - * [?????? DNS](#??????-dns) - * [1. ??¦Í?](#1-??¦Í?) - * [2. ????????](#2-????????) - * [???????§¿?? FTP](#???????§ï??-ftp) - * [??????§¿?? TELNET](#??????§ï??-telnet) - * [????? WWW](#?????-www) - * [???????§¿??](#???????§ï??) + * [»¥ÁªÍøµÄ×é³É](#»¥ÁªÍøµÄ×é³É) + * [Ö÷»úÖ®¼äµÄͨÐÅ·½Ê½](#Ö÷»úÖ®¼äµÄͨÐÅ·½Ê½) + * [µç·½»»»Óë·Ö×é½»»»](#µç·½»»»Óë·Ö×é½»»») + * [1. µç·½»»»](#1-µç·½»»») + * [2. ±¨ÎĽ»»»](#2-±¨ÎĽ»»») + * [3. ·Ö×é½»»»](#3-·Ö×é½»»») + * [ʱÑÓ](#ʱÑÓ) + * [1. ·¢ËÍʱÑÓ](#1-·¢ËÍʱÑÓ) + * [2. ´«²¥Ê±ÑÓ](#2-´«²¥Ê±ÑÓ) + * [3. ´¦ÀíʱÑÓ](#3-´¦ÀíʱÑÓ) + * [4. ÅŶÓʱÑÓ](#4-ÅŶÓʱÑÓ) + * [¼ÆËã»úÍøÂçÌåϵ½á¹¹*](#¼ÆËã»úÍøÂçÌåϵ½á¹¹) + * [1. Æß²ãЭÒé](#1-Æß²ãЭÒé) + * [2. Îå²ãЭÒé](#2-Îå²ãЭÒé) + * [3. Êý¾ÝÔÚ¸÷²ãÖ®¼äµÄ´«µÝ¹ý³Ì](#3-Êý¾ÝÔÚ¸÷²ãÖ®¼äµÄ´«µÝ¹ý³Ì) + * [4. TCP/IP Ìåϵ½á¹¹](#4-tcpip-Ìåϵ½á¹¹) +* [µÚ¶þÕ ÎïÀí²ã](#µÚ¶þÕÂ-ÎïÀí²ã) + * [ͨÐÅ·½Ê½](#ͨÐÅ·½Ê½) + * [´øÍ¨µ÷ÖÆ](#´øÍ¨µ÷ÖÆ) + * [ÐŵÀ¸´Óü¼Êõ](#ÐŵÀ¸´Óü¼Êõ) + * [1. Ƶ·Ö¸´Óá¢Ê±·Ö¸´ÓÃ](#1-Ƶ·Ö¸´ÓÃʱ·Ö¸´ÓÃ) + * [2. ͳ¼ÆÊ±·Ö¸´ÓÃ](#2-ͳ¼ÆÊ±·Ö¸´ÓÃ) + * [3. ²¨·Ö¸´ÓÃ](#3-²¨·Ö¸´ÓÃ) + * [4. Âë·Ö¸´ÓÃ](#4-Âë·Ö¸´ÓÃ) +* [µÚÈýÕ Êý¾ÝÁ´Â·²ã](#µÚÈýÕÂ-Êý¾ÝÁ´Â·²ã) + * [Èý¸ö»ù±¾ÎÊÌâ](#Èý¸ö»ù±¾ÎÊÌâ) + * [1. ·â×°³ÉÖ¡](#1-·â×°³ÉÖ¡) + * [2. ͸Ã÷´«Êä](#2-͸Ã÷´«Êä) + * [3. ²î´í¼ì²â](#3-²î´í¼ì²â) + * [µã¶ÔµãÐŵÀ -PPP ЭÒé](#µã¶ÔµãÐŵÀ--ppp-ЭÒé) + * [¾ÖÓòÍøµÄÍØÆË](#¾ÖÓòÍøµÄÍØÆË) + * [¹ã²¥ÐŵÀ - CSMA/CD ЭÒé*](#¹ã²¥ÐŵÀ---csmacd-ЭÒé) + * [¼¯Ï߯÷](#¼¯Ï߯÷) + * [MAC ²ã](#mac-²ã) + * [ÐéÄâ¾ÖÓòÍø](#ÐéÄâ¾ÖÓòÍø) +* [µÚËÄÕÂ ÍøÂç²ã*](#µÚËÄÕÂ-ÍøÂç²ã) + * [Íø¼ÊЭÒé IP ¸ÅÊö](#Íø¼ÊЭÒé-ip-¸ÅÊö) + * [IP Êý¾Ý±¨¸ñʽ](#ip-Êý¾Ý±¨¸ñʽ) + * [IP µØÖ·±àÖ·](#ip-µØÖ·±àÖ·) + * [1. ·ÖÀàµÄ IP µØÖ·](#1-·ÖÀàµÄ-ip-µØÖ·) + * [2. »®·Ö×ÓÍø](#2-»®·Ö×ÓÍø) + * [3. ÎÞ·ÖÀà±àÖ· CIDR£¨¹¹³É³¬Íø£©](#3-ÎÞ·ÖÀà±àÖ·-cidr¹¹³É³¬Íø) + * [IP µØÖ·ºÍ MAC µØÖ·](#ip-µØÖ·ºÍ-mac-µØÖ·) + * [µØÖ·½âÎöЭÒé ARP](#µØÖ·½âÎöЭÒé-arp) + * [·ÓÉÆ÷µÄ½á¹¹](#·ÓÉÆ÷µÄ½á¹¹) + * [½»»»»úÓë·ÓÉÆ÷µÄÇø±ð](#½»»»»úÓë·ÓÉÆ÷µÄÇø±ð) + * [·ÓÉÆ÷·Ö×éת·¢Á÷³Ì](#·ÓÉÆ÷·Ö×éת·¢Á÷³Ì) + * [·ÓÉÑ¡ÔñЭÒé](#·ÓÉÑ¡ÔñЭÒé) + * [1. ÄÚ²¿Íø¹ØÐ­Òé RIP](#1-ÄÚ²¿Íø¹ØÐ­Òé-rip) + * [2. ÄÚ²¿Íø¹ØÐ­Òé OSPF](#2-ÄÚ²¿Íø¹ØÐ­Òé-ospf) + * [3. Íâ²¿Íø¹ØÐ­Òé BGP](#3-Íâ²¿Íø¹ØÐ­Òé-bgp) + * [Íø¼Ê¿ØÖƱ¨ÎÄЭÒé ICMP](#Íø¼Ê¿ØÖƱ¨ÎÄЭÒé-icmp) + * [·Ö×éÍø¼ä̽²â PING](#·Ö×éÍø¼ä̽²â-ping) + * [IP ¶à²¥](#ip-¶à²¥) + * [ÐéÄâרÓÃÍø VPN](#ÐéÄâרÓÃÍø-vpn) + * [ÍøÂçµØÖ·×ª»» NAT](#ÍøÂçµØÖ·×ª»»-nat) +* [µÚÎåÕ ÔËÊä²ã*](#µÚÎåÕÂ-ÔËÊä²ã) + * [UDP ºÍ TCP µÄÌØµã](#udp-ºÍ-tcp-µÄÌØµã) + * [UDP Êײ¿¸ñʽ](#udp-Êײ¿¸ñʽ) + * [TCP Êײ¿¸ñʽ](#tcp-Êײ¿¸ñʽ) + * [TCP µÄÈý´ÎÎÕÊÖ](#tcp-µÄÈý´ÎÎÕÊÖ) + * [TCP µÄËĴλÓÊÖ](#tcp-µÄËĴλÓÊÖ) + * [TCP »¬¶¯´°¿Ú](#tcp-»¬¶¯´°¿Ú) + * [TCP ¿É¿¿´«Êä](#tcp-¿É¿¿´«Êä) + * [TCP Á÷Á¿¿ØÖÆ](#tcp-Á÷Á¿¿ØÖÆ) + * [TCP ÓµÈû¿ØÖÆ](#tcp-ÓµÈû¿ØÖÆ) + * [Âý¿ªÊ¼ÓëÓµÈû±ÜÃâ](#Âý¿ªÊ¼ÓëÓµÈû±ÜÃâ) + * [¿ìÖØ´«Óë¿ì»Ö¸´](#¿ìÖØ´«Óë¿ì»Ö¸´) +* [µÚÁùÕ ӦÓòã*](#µÚÁùÕÂ-Ó¦Óòã) + * [ÓòÃûϵͳ DNS](#ÓòÃûϵͳ-dns) + * [1. ²ã´Î½á¹¹](#1-²ã´Î½á¹¹) + * [2. ½âÎö¹ý³Ì](#2-½âÎö¹ý³Ì) + * [Îļþ´«ÊäЭÒé FTP](#Îļþ´«ÊäЭÒé-ftp) + * [Ô¶³ÌÖÕ¶ËЭÒé TELNET](#Ô¶³ÌÖÕ¶ËЭÒé-telnet) + * [ÍòÎ¬Íø WWW](#ÍòÎ¬Íø-www) + * [µç×ÓÓʼþЭÒé](#µç×ÓÓʼþЭÒé) * [POP3](#pop3) * [IMAP](#imap) * [SMTP](#smtp) - * [???????????§¿?? DHCP](#???????????§ï??-dhcp) - * [?????? P2P](#??????-p2p) - * [Web ??????????](#web-??????????) - * [??????](#??????) -* [?¦Ï?????](#?¦Ï?????) + * [¶¯Ì¬Ö÷»úÅäÖÃЭÒé DHCP](#¶¯Ì¬Ö÷»úÅäÖÃЭÒé-dhcp) + * [µã¶Ôµã´«Êä P2P](#µã¶Ôµã´«Êä-p2p) + * [Web Ò³ÃæÇëÇó¹ý³Ì](#web-Ò³ÃæÇëÇó¹ý³Ì) + * [³£Óö˿Ú](#³£Óö˿Ú) +* [²Î¿¼×ÊÁÏ](#²Î¿¼×ÊÁÏ) -# ????? ???? +# µÚÒ»Õ ¸ÅÊö -## ????????? +## ÍøÂçµÄÍøÂç -?????????????????????????????????????????????????????????????????????³‡ +ÍøÂç°ÑÖ÷»úÁ¬½ÓÆðÀ´£¬¶ø»¥ÁªÍøÊǰѶàÖÖ²»Í¬µÄÍøÂçÁ¬½ÓÆðÀ´£¬Òò´Ë»¥ÁªÍøÊÇÍøÂçµÄÍøÂç¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/04ff7ae6-7bee-4cf8-82f8-dfe2ba1f3616.jpg) ## ISP -?????????????? ISP ??????????????????????? IP ???????????????¡¤???¡¤???????????õô???????????? ISP ????????????????????????? +»¥ÁªÍø·þÎñÌṩÉÌ ISP ¿ÉÒÔ´Ó»¥ÁªÍø¹ÜÀí»ú¹¹»ñµÃÐí¶à IP µØÖ·£¬Í¬Ê±ÓµÓÐͨÐÅÏß·ÒÔ¼°Â·ÓÉÆ÷µÈÁªÍøÉ豸£¬¸öÈË»ò»ú¹¹Ïò ISP ½ÉÄÉÒ»¶¨µÄ·ÑÓþͿÉÒÔ½ÓÈ뻥ÁªÍø¡£ -????????????????? ISP ????ISP ?????????????§³??????? ISP?????? ISP ????? ISP?? +ĿǰµÄ»¥ÁªÍøÊÇÒ»ÖÖ¶à²ã´Î ISP ½á¹¹£¬ISP ¸ù¾Ý¸²¸ÇÃæ»ýµÄ´óС·ÖΪÖ÷¸É ISP¡¢µØÇø ISP ºÍ±¾µØ ISP¡£ -???????????? IXP ??????????????????????????????????????????î• +»¥ÁªÍø½»»»µã IXP ÔÊÐíÁ½¸öÍøÂçÖ±½ÓÏàÁ¬¶ø²»Óþ­¹ýµÚÈý¸öÀ´×ª·¢·Ö×é¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/17d807ef-03bf-4824-a97c-ea5fb58ec61d.jpg) -## ??????????? +## »¥ÁªÍøµÄ×é³É -1. ?????????????????????????????????????????????? -2. ??????????????????????????§»?????¡¤??????¨À???????????????????? +1. ±ßÔµ²¿·Ö£ºËùÓÐÁ¬½ÓÔÚ»¥ÁªÍøÉϵÄÖ÷»ú¡£Óû§¿ÉÒÔÖ±½ÓʹÓã» +2. ºËÐIJ¿·Ö£ºÓÉ´óÁ¿µÄÍøÂçºÍÁ¬½ÓÕâÐ©ÍøÂçµÄ·ÓÉÆ÷×é³É¡£Îª±ßÔµ²¿·ÖµÄÖ÷»úÌṩ·þÎñ¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/005d83c2-e64a-41f0-bbdd-51c71d494a18.jpg) -## ????????????? +## Ö÷»úÖ®¼äµÄͨÐÅ·½Ê½ -**1. ??? - ????????C/S??** +**1. ¿Í»§ - ·þÎñÆ÷£¨C/S£©** -???????????????????????????????? +¿Í»§¼´ÊÇ·þÎñÇëÇó·½£¬·þÎñÆ÷ÊÇ·þÎñÌṩ·½¡£ -**2. ????P2P??** +**2. ¶ÔµÈ£¨P2P£©** -????????????????? +²»Çø·Ö¿Í»§ºÍ·þÎñÆ÷¡£ -## ??¡¤????????ý‚?? +## µç·½»»»Óë·Ö×é½»»» ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/b97958dd-3e43-45f7-97f5-3ec20f3f8b88.jpg) -### 1. ??¡¤???? +### 1. µç·½»»» -??¡¤????????´Â????????????????????????????????????????¡¤?????????????????????????????¡¤??????????????§Ó?????????????????¡¤??????¡¤????????¡¤??????????????????? 10%?? +µç·½»»»ÓÃÓڵ绰ͨÐÅϵͳ£¬Á½¸öÓû§ÒªÍ¨ÐÅ֮ǰÐèÒª½¨Á¢Ò»ÌõרÓõÄÎïÀíÁ´Â·£¬²¢ÇÒÔÚÕû¸öͨÐŹý³ÌÖÐʼÖÕÕ¼ÓøÃÁ´Â·¡£ÓÉÓÚͨÐŵĹý³ÌÖв»¿ÉÄÜÒ»Ö±ÔÚʹÓô«ÊäÏß·£¬Òò´Ëµç·½»»»¶ÔÏß·µÄÀûÓÃÂʺܵͣ¬ÍùÍù²»µ½ 10%¡£ -### 2. ??????? +### 2. ±¨ÎĽ»»» -???????????????????????????????????????›¥???????????????????????????????????????????????????›¥???????? +±¨ÎĽ»»»ÓÃÓÚÓʾÖͨÐÅϵͳ£¬ÓʾֽÓÊÕµ½Ò»·Ý±¨ÎÄÖ®ºó£¬ÏÈ´æ´¢ÏÂÀ´£¬È»ºó¸ù¾ÝÄ¿µÄµØÑ¡ÔñÐԵذѱ¨ÎÄת·¢µ½ÏÂÒ»¸öÄ¿µÄµØ£¬Õâ¸ö¹ý³Ì¾ÍÊǴ洢ת·¢¹ý³Ì¡£ -### 3. ???ý‚?? +### 3. ·Ö×é½»»» -???ý‚????????›¥???????????????????????????????????????????????????????????????????????????§Ù??????????????????§³????????§Ù?????????????????????????ï…?????????????????????????????? +·Ö×é½»»»Ò²Ê¹ÓÃÁ˴洢ת·¢£¬µ«ÊÇת·¢µÄÊÇ·Ö×é¶ø²»ÊDZ¨ÎÄ¡£°ÑÕû¿éÊý¾Ý³ÆÎªÒ»¸ö±¨ÎÄ£¬ÓÉÓÚÒ»¸ö±¨ÎÄ¿ÉÄܺܳ¤£¬ÐèÒªÏȽøÐÐÇз֣¬À´Âú×ã·Ö×éÄÜ´¦ÀíµÄ´óС¡£ÔÚÿ¸öÇзֵÄÊý¾ÝÇ°Ãæ¼ÓÉÏÊײ¿Ö®ºó¾Í³ÉΪÁË·Ö×飬Êײ¿°üº¬ÁËÄ¿µÄµØÖ·ºÍÔ´µØÖ·µÈ¿ØÖÆÐÅÏ¢¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/6f4af159-8b03-4246-8d0e-222db65bb83c.jpg) -?›¥??????????????????¡¤???????????????ï…???????ý‚?????????????????¡¤????? +´æ´¢×ª·¢ÔÊÐíÔÚÒ»Ìõ´«ÊäÏß·ÉÏ´«ËͶà¸öÖ÷»úµÄ·Ö×飬Ҳ¾ÍÊÇ·Ö×é½»»»²»ÐèÒªÕ¼Óö˵½¶ËµÄÏß·×ÊÔ´¡£ -?????????????????????????§³???›¥?????????????? +Ïà±ÈÓÚ±¨ÎĽ»»»£¬ÓÉÓÚ·Ö×é±È±¨ÎĸüС£¬´æ´¢×ª·¢µÄËÙ¶ÈÒ²¾Í¸ü¿ì¡£ -## ??? +## ʱÑÓ -????? = ??????? + ??????? + ??????? + ?????? +×ÜʱÑÓ = ·¢ËÍʱÑÓ + ´«²¥Ê±ÑÓ + ´¦ÀíʱÑÓ + ÅŶÓʱÑÓ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/ceee91c2-da26-4169-94c3-e4608b46b9ac.png) -### 1. ??????? +### 1. ·¢ËÍʱÑÓ -??????¡¤??????????????????????? +Ö÷»ú»ò·ÓÉÆ÷·¢ËÍÊý¾ÝÖ¡ËùÐèÒªµÄʱ¼ä¡£ ![](http://latex.codecogs.com/gif.latex?\\\\delay=\frac{l(bit)}{v(bit/s)}) -???? l ??????????????v ???????????? +ÆäÖÐ l ±íʾÊý¾ÝÖ¡µÄ³¤¶È£¬v ±íʾ·¢ËÍËÙÂÊ¡£ -### 2. ??????? +### 2. ´«²¥Ê±ÑÓ -??????????§Õ???????????????????????????????????????? +µç´Å²¨ÔÚÐŵÀÖд«²¥Ò»¶¨µÄ¾àÀëÐèÒª»¨·ÑµÄʱ¼ä£¬µç´Å²¨´«²¥ËٶȽӽü¹âËÙ¡£ ![](http://latex.codecogs.com/gif.latex?\\\\delay=\frac{l(m)}{v(m/s)}) -???? l ???????????v ??????????????????????? +ÆäÖÐ l ±íʾÐŵÀ³¤¶È£¬v ±íʾµç´Å²¨ÔÚÐŵÀÉϵĴ«²¥ËÙÂÊ¡£ -### 3. ??????? +### 3. ´¦ÀíʱÑÓ -??????¡¤???????????????§Õ???????????????????????????????????????????? +Ö÷»ú»ò·ÓÉÆ÷ÊÕµ½·Ö×éʱ½øÐд¦ÀíËùÐèÒªµÄʱ¼ä£¬ÀýÈç·ÖÎöÊײ¿£¬´Ó·Ö×éÖÐÌáÈ¡Êý¾Ý²¿·ÖµÈ¡£ -### 4. ?????? +### 4. ÅŶÓʱÑÓ -??????¡¤????????????§Ü????????????????????????????½y?????????? +·Ö×éÔÚ·ÓÉÆ÷µÄÊäÈë¶ÓÁкÍÊä³ö¶ÓÁÐÖÐÅŶӵȴýµÄʱ¼ä£¬È¡¾öÓÚÍøÂ統ǰµÄͨÐÅÁ¿¡£ -## ??????????????* +## ¼ÆËã»úÍøÂçÌåϵ½á¹¹* ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/1005dc9d-9049-4b06-9524-6171e56ebd8c.png) -### 1. ???§¿?? +### 1. Æß²ãЭÒé -??? a ????????§Ò???????????????? +Èçͼ a Ëùʾ£¬ÆäÖбíʾ²ãºÍ»á»°²ãÓÃ;ÈçÏ£º -1. ??????????????????????????????????????????????????????? -2. ???????????????????�Ü??????????? +1. ±íʾ²ã£ºÐÅÏ¢µÄÓï·¨ÓïÒåÒÔ¼°ËüÃǵĹØÁª£¬Èç¼ÓÃܽâÃÜ¡¢×ª»»·­Ò롢ѹËõ½âѹËõ£» +2. »á»°²ã£º²»Í¬»úÆ÷ÉϵÄÓû§Ö®¼ä½¨Á¢¼°¹ÜÀí»á»°¡£ -### 2. ???§¿?? +### 2. Îå²ãЭÒé -1. ??¨°???????¨®??????????????????? HTTP??DNS ????????¦Ë?????? +1. Ó¦ÓÃ²ã£ºÎªÌØ¶¨Ó¦ÓóÌÐòÌṩÊý¾Ý´«Êä·þÎñ£¬ÀýÈç HTTP¡¢DNS µÈ¡£Êý¾Ýµ¥Î»Îª±¨ÎÄ¡£ -2. ???????????????????????????????????¨°?§¿?????????????????§¿???????????????????¨°?§¿?î•????????????§¿?ï“???????§¿?? TCP?????????????????????????????????¦Ë?????¦²?????????§¿?? UDP????????????????????????????????????¦Ë??????????? +2. ÔËÊä²ã£ºÌṩµÄÊǽø³Ì¼äµÄͨÓÃÊý¾Ý´«Êä·þÎñ¡£ÓÉÓÚÓ¦ÓòãЭÒéºÜ¶à£¬¶¨ÒåͨÓõÄÔËÊä²ãЭÒé¾Í¿ÉÒÔÖ§³Ö²»¶ÏÔö¶àµÄÓ¦ÓòãЭÒé¡£ÔËÊä²ã°üÀ¨Á½ÖÖЭÒ飺´«Êä¿ØÖÆÐ­Òé TCP£¬Ìá¹©ÃæÏòÁ¬½Ó¡¢¿É¿¿µÄÊý¾Ý´«Êä·þÎñ£¬Êý¾Ýµ¥Î»Îª±¨ÎĶΣ»Óû§Êý¾Ý±¨Ð­Òé UDP£¬ÌṩÎÞÁ¬½Ó¡¢¾¡×î´óŬÁ¦µÄÊý¾Ý´«Êä·þÎñ£¬Êý¾Ýµ¥Î»ÎªÓû§Êý¾Ý±¨¡£ -3. ???????????????????????????????§¿??????????????§Ö?????????????????????????????¦Ë????????????????????????§Õ??? +3. ÍøÂç²ã£ºÎªÖ÷»úÖ®¼äÌṩ·þÎñ£¬¶ø²»ÊÇÏñÔËÊä²ãЭÒéÄÇÑùÊÇΪÖ÷»úÖеĽø³ÌÌṩ·þÎñ¡£ÍøÂç²ã°ÑÔËÊä²ã²úÉúµÄ±¨ÎĶλòÕßÓû§Êý¾Ý±¨·â×°³É·Ö×éÀ´½øÐд«Êä¡£ -4. ??????¡¤??????????????????????????????????§Ü????¡¤????¡¤??§¿???????????????????????????¡¤?????????????????????? +4. Êý¾ÝÁ´Â·²ã£ºÍøÂç²ãÕë¶ÔµÄ»¹ÊÇÖ÷»úÖ®¼ä£¬¶øÖ÷»úÖ®¼ä¿ÉÒÔÓкܶàÁ´Â·£¬Á´Â·²ãЭÒé¾ÍÊÇΪÏàÁÚ½áµãÖ®¼äÌṩ·þÎñ¡£Êý¾ÝÁ´Â·²ã°ÑÍøÂç²ã´«À´µÄ·Ö×é·â×°³ÉÖ¡¡£ -5. ?????????????????????????????????????????????????????????‰^????????????????????¦Ä????????????¦Å???????????????????¡¤??§à???????§»???? +5. ÎïÀí²ã£º¿¼ÂǵÄÊÇÔõÑùÔÚ´«ÊäýÌåÉÏ´«ÊäÊý¾Ý±ÈÌØÁ÷£¬¶ø²»ÊÇÖ¸¾ßÌåµÄ´«ÊäýÌå¡£ÎïÀí²ãµÄ×÷ÓÃÊǾ¡¿ÉÄÜÆÁ±Î´«ÊäýÌåºÍͨÐÅÊֶεIJîÒ죬ʹÎïÀí²ãÉϵÄÊý¾ÝÁ´Â·²ã¸Ð¾õ²»µ½ÕâЩ²îÒì¡£ -### 3. ??????????????????? +### 3. Êý¾ÝÔÚ¸÷²ãÖ®¼äµÄ´«µÝ¹ý³Ì -???????????§µ??????????§¿????????????????¦Â?????????????????§Ó?????????¦Â???? +ÔÚÏòϵĹý³ÌÖУ¬ÐèÒªÌí¼ÓϲãЭÒéËùÐèÒªµÄÊײ¿»òÕßβ²¿£¬¶øÔÚÏòÉϵĹý³ÌÖв»¶Ï²ð¿ªÊײ¿ºÍβ²¿¡£ -¡¤???????????????§¿?ï…???¡¤????¦Ë??????????§µ????????????????¨®????????? +·ÓÉÆ÷Ö»ÓÐÏÂÃæÈý²ãЭÒ飬ÒòΪ·ÓÉÆ÷λÓÚÍøÂçºËÐÄÖУ¬²»ÐèҪΪ½ø³Ì»òÕßÓ¦ÓóÌÐòÌṩ·þÎñ¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/f7d5da89-2d75-4d8f-85e7-6b608865dc00.jpg) -### 4. TCP/IP ????? +### 4. TCP/IP Ìåϵ½á¹¹ -???????????????§¿??????????¡¤?????????????????? +ËüÖ»ÓÐËIJ㣬Ï൱ÓÚÎå²ãЭÒéÖÐÊý¾ÝÁ´Â·²ãºÍÎïÀí²ãºÏ²¢ÎªÍøÂç½Ó¿Ú²ã¡£ -????? TCP/IP ????????????? OSI ????????¨°??????????? IP ???????????? +ÏÖÔÚµÄ TCP/IP Ìåϵ½á¹¹²»Ñϸñ×ñÑ­ OSI ·Ö²ã¸ÅÄӦÓòã¿ÉÄÜ»áÖ±½ÓʹÓà IP ²ã»òÕßÍøÂç½Ó¿Ú²ã¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/3e2200b3-1c18-4853-ae42-7788e8e1f939.png) -TCP/IP §¿?????????????????§Þ?§³?????IP §¿????????????????????¦Ë?? +TCP/IP ЭÒé×åÊÇÒ»ÖÖɳ©ÐÎ×´£¬ÖмäСÁ½±ß´ó£¬IP ЭÒéÔÚÆäÖÐÕ¼ÓþÙ×ãÇáÖØµÄµØÎ»¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/9ecaebee-670e-4cb2-9cdb-3029c00f33bd.png) -# ????? ????? +# µÚ¶þÕ ÎïÀí²ã -## ????? +## ͨÐÅ·½Ê½ -1. ???????????????????? -2. ?????????????????????? -3. ????????????????????? +1. µ¥ÏòͨÐÅ£¬ÓÖ³ÆÎªµ¥¹¤Í¨ÐÅ£» +2. Ë«Ïò½»ÌæÍ¨ÐÅ£¬ÓÖ³ÆÎª°ëË«¹¤Í¨ÐÅ£» +3. Ë«ÏòͬʱͨÐÅ£¬ÓÖ³ÆÎªÈ«Ë«¹¤Í¨ÐÅ¡£ -## ??????? +## ´øÍ¨µ÷ÖÆ -?????????????????????????????????????????????????????????????? +Ä£ÄâÐźÅÊÇÁ¬ÐøµÄÐźţ¬Êý×ÖÐźÅÊÇÀëÉ¢µÄÐźš£´øÍ¨µ÷ÖÆ°ÑÊý×ÖÐźÅת»»ÎªÄ£ÄâÐźš£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/d2c55c84-aa1f-43c1-bd97-457bcb7816b3.png) -## ??????¨¹??? +## ÐŵÀ¸´Óü¼Êõ -### 1. ?????¨¢??????? +### 1. Ƶ·Ö¸´Óá¢Ê±·Ö¸´Óà -??????????????????????????¨°????????????????????????????????????????????????????????? +Ƶ·Ö¸´ÓõÄËùÓÐÓû§ÔÚÏàͬµÄʱ¼äÕ¼Óò»Í¬µÄƵÂÊ´ø¿í×ÊÔ´£»Ê±·Ö¸´ÓõÄËùÓÐÓû§ÔÚ²»Í¬µÄʱ¼äÕ¼ÓÃÏàͬµÄƵÂÊ´ø¿í×ÊÔ´¡£ -??????????????????????????????????????????????????????????????????????????????????????????????????¨®???????????????????????????????????????????? +ʹÓÃÕâÁ½ÖÖ·½Ê½½øÐÐͨÐÅ£¬ÔÚͨÐŵĹý³ÌÖÐÓû§»áÒ»Ö±Õ¼ÓÃÒ»²¿·ÖÐŵÀ×ÊÔ´¡£µ«ÊÇÓÉÓÚ¼ÆËã»úÊý¾ÝµÄÍ»·¢ÐÔÖÊ£¬Ã»±ØÒªÒ»Ö±Õ¼ÓÃÐŵÀ×ÊÔ´¶ø²»Èóö¸øÆäËüÓû§Ê¹Óã¬Òò´ËÕâÁ½ÖÖ·½Ê½¶ÔÐŵÀµÄÀûÓÃÂʶ¼²»¸ß¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/543d47a1-f0dd-414f-b23c-0c142c814854.png) -### 2. ????????? +### 2. ͳ¼ÆÊ±·Ö¸´Óà -??????????????????????????????????????§Ö?¦Ë??????????????????????????????????? +ÊǶÔʱ·Ö¸´ÓõÄÒ»ÖָĽø£¬²»¹Ì¶¨Ã¿¸öÓû§ÔÚʱ·Ö¸´ÓÃÖ¡ÖеÄλÖã¬Ö»ÒªÓÐÊý¾Ý¾Í¼¯ÖÐÆðÀ´×é³Éʱ·Ö¸´ÓÃÖ¡È»ºó·¢ËÍ¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/29058e09-bb72-4040-a73d-4c497895e9ce.jpg) -### 3. ??????? +### 3. ²¨·Ö¸´Óà -????????¨¢??????????????????????¨°????????????????????????????? +¹âµÄƵ·Ö¸´Óá£ÓÉÓÚ¹âµÄƵÂʺܸߣ¬Òò´Ëϰ¹ßÉÏÓò¨³¤¶ø²»ÊÇÆµÂÊÀ´±íʾËùʹÓõĹâÔØ²¨¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/78534153-88d1-4f83-a6e0-59064dbdc43a.png) -### 4. ?????? +### 4. Âë·Ö¸´Óà -??????????? m bit ??????????????§Ö????????????????????????? $\vec{S}$ ?? $\vec{T}$ ?? +Ϊÿ¸öÓû§·ÖÅä m bit µÄÂëÆ¬£¬²¢ÇÒËùÓеÄÂëÆ¬Õý½»£¬¶ÔÓÚÈÎÒâÁ½¸öÂëÆ¬ $\vec{S}$ ºÍ $\vec{T}$ ÓÐ ![](http://latex.codecogs.com/gif.latex?\\\\\vec{S}\cdot\vec{T}=0) -??????? m=8??????? $\vec{S}$ ? 00011011??????§Ú???????????????? 1 ??????????????????? 0 ??????????????? 11100100?? +ΪÁË·½±ã£¬È¡ m=8£¬ÉèÂëÆ¬ $\vec{S}$ Ϊ 00011011¡£ÔÚÓµÓиÃÂëÆ¬µÄÓû§·¢ËͱÈÌØ 1 ʱ¾Í·¢Ë͸ÃÂëÆ¬£¬·¢ËͱÈÌØ 0 ʱ¾Í·¢Ë͸ÃÂëÆ¬µÄ·´Âë 11100100¡£ -???????? 00011011 ???? (-1 -1 -1 +1 +1 -1 +1 +1)???????? +ÔÚ¼ÆËãʱ½« 00011011 ¼Ç×÷ (-1 -1 -1 +1 +1 -1 +1 +1)£¬¿ÉÒԵõ½ ![](http://latex.codecogs.com/gif.latex?\\\\\frac{1}{m}\vec{S}\cdot\vec{S}=1) ![](http://latex.codecogs.com/gif.latex?\\\\\frac{1}{m}\vec{S}\cdot\vec{S'}=-1) -???? $\vec{S'}$ ? $\vec{S}$ ????? +ÆäÖÐ $\vec{S'}$ Ϊ $\vec{S}$ µÄ·´Âë¡£ -?????????????????????????????????? $\vec{S}$ ????????????????????????????? 0 ????????????????????????? 1 ??????????????? 1?????? -1 ??????????????? 0?? +ÀûÓÃÉÏÃæµÄʽ×ÓÎÒÃÇÖªµÀ£¬µ±½ÓÊÕ¶ËʹÓÃÂëÆ¬ $\vec{S}$ ¶Ô½ÓÊÕµ½µÄÊý¾Ý½øÐÐÄÚ»ýÔËËãʱ£¬½á¹ûΪ 0 µÄÊÇÆäËüÓû§·¢Ë͵ÄÊý¾Ý£¬½á¹ûΪ 1 µÄÊÇÓû§·¢Ë͵ıÈÌØ 1£¬½á¹ûΪ -1 µÄÊÇÓû§·¢Ë͵ıÈÌØ 0¡£ -?????¡Â??????????????? m ???? +Âë·Ö¸´Ó÷¢Ë͵ÄÊý¾ÝÁ¿ÎªÔ­Ï鵀 m ±¶¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/0042edad-8e3b-4279-bd93-6906fcd1b640.jpg) -# ?????? ??????¡¤?? +# µÚÈýÕ Êý¾ÝÁ´Â·²ã -## ???????????? +## Èý¸ö»ù±¾ÎÊÌâ -### 1. ?????? +### 1. ·â×°³ÉÖ¡ -????????????????????????¦Â?????????????????????? +½«ÍøÂç²ã´«ÏÂÀ´µÄ·Ö×éÌí¼ÓÊײ¿ºÍβ²¿£¬ÓÃÓÚ±ê¼ÇÖ¡µÄ¿ªÊ¼ºÍ½áÊø¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/ea5ed9b2-6d9f-48fb-b890-0288caf9088a.jpg) -### 2. ??????? +### 2. ͸Ã÷´«Êä -???????????????????????????????????? +͸Ã÷±íʾһ¸öʵ¼Ê´æÔÚµÄÊÂÎï¿´ÆðÀ´ºÃÏñ²»´æÔÚÒ»Ñù¡£ -??????????¦Â???????????????????§Ü????¦Â?????????????????????????¦Ë??????????§Ø?????????????§Ô??????¦Â???????????????????????????????????????????????????????????????????????????????????????????§Õ???????????????????????????????????????????????????????????????????????? +Ö¡ÖÐÓÐÊײ¿ºÍβ²¿£¬Èç¹ûÖ¡µÄÊý¾Ý²¿·Öº¬ÓкÍÊײ¿Î²²¿ÏàͬµÄÄÚÈÝ£¬ÄÇô֡µÄ¿ªÊ¼ºÍ½áÊøÎ»Öþͻᱻ´íÎóµÄÅж¨¡£ÐèÒªÔÚÊý¾ÝÖгöÏÖÊײ¿Î²²¿ÏàͬµÄÄÚÈÝÇ°Ãæ²åÈëתÒå×Ö·û£¬Èç¹ûÐèÒª´«ÊäµÄÄÚÈÝÕýºÃ¾ÍÊÇתÒå×Ö·û£¬ÄÇô¾ÍÔÚתÒå×Ö·ûÇ°ÃæÔÙ¼Ó¸öתÒå×Ö·û£¬ÔÚ½ÓÊն˽øÐд¦ÀíÖ®ºó¿ÉÒÔ»¹Ô­³öԭʼÊý¾Ý¡£Õâ¸ö¹ý³Ì͸Ã÷´«ÊäµÄÄÚÈÝÊÇתÒå×Ö·û£¬Óû§ºÜÄѲì¾õµ½×ªÒå×Ö·ûµÄ´æÔÚ¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/44e1d90e-3fe6-4dd6-8dce-6daab12e7663.jpg) -### 3. ????? +### 3. ²î´í¼ì²â -????????¡¤?????????????????÷ÏCRC???????????? +ĿǰÊý¾ÝÁ´Â·²ã¹ã·ºÊ¹ÓÃÁËÑ­»·ÈßÓà¼ìÑ飨CRC£©À´¼ì²é±ÈÌØ²î´í¡£ -## ??????? -PPP §¿?? +## µã¶ÔµãÐŵÀ -PPP ЭÒé -??????????????????????? ISP ?????????????????PPP §¿??????????????? ISP ????????????????????¡¤??§¿?î• +»¥ÁªÍøÓû§Í¨³£ÐèÒªÁ¬½Óµ½Ä³¸ö ISP Ö®ºó²ÅÄܽÓÈëµ½»¥ÁªÍø£¬PPP ЭÒé¾ÍÊÇÓû§¼ÆËã»úºÍ ISP ½øÐÐͨÐÅʱËùʹÓõÄÊý¾ÝÁ´Â·²ãЭÒé¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/8b5bd2c8-8425-4a8b-89db-235c95800de9.jpg) -?? PPP ????§µ?F ?????????????A ?? C ?????????‰^FCS ????? CRC ????????§³??????¦Å????????? 1500?? +ÔÚ PPP µÄÖ¡ÖУ¬F ×Ö¶ÎΪ֡µÄ¶¨½ç·û£¬A ºÍ C ÔÝʱûÓÐÒâÒå¡£FCS ÊÇʹÓà CRC µÄ¼ìÑéÐòÁС£ÐÅÏ¢×ֶεij¤¶È²»³¬¹ý 1500¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/a5fa89e7-54b9-4e2f-8c48-a35712d7b2f5.jpg) -## ???????????? +## ¾ÖÓòÍøµÄÍØÆË ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/8b15e36f-69b4-46b6-a07c-7234ac7c7927.jpg) -## ????? - CSMA/CD §¿??* +## ¹ã²¥ÐŵÀ - CSMA/CD ЭÒé* -????????????????????????????????????? +Ôڹ㲥ÐŵÀÉÏ£¬Í¬Ò»Ê±¼äÖ»ÄÜÔÊÐíһ̨¼ÆËã»ú·¢ËÍÊý¾Ý¡£ -CSMA/CD ???????????????? / ?????? +CSMA/CD ±íÊ¾ÔØ²¨¼àÌý¶àµã½ÓÈë / Åöײ¼ì²â¡£ -**??????**??????????????????íà?????????????????????????? -**???????**?????????????????????????????????????????????????????????? -**??????**????????§µ??????????????????????????????????????????????????????????????????????????????????§µ??????????????????????????????§á??????????? +**¶àµã½ÓÈë**£ºËµÃ÷ÕâÊÇ×ÜÏßÐÍÍøÂ磬Ðí¶à¼ÆËã»úÒÔ¶àµãµÄ·½Ê½Á¬½Óµ½×ÜÏßÉÏ¡£ +**ÔØ²¨¼àÌý**£ºÃ¿¸öÕ¾¶¼±ØÐ벻ͣµØ¼ìÌýÐŵÀ¡£ÔÚ·¢ËÍǰ£¬Èç¹û¼ìÌýÐŵÀÕýÔÚʹÓ㬾ͱØÐëµÈ´ý¡£ +**Åöײ¼ì²â**£ºÔÚ·¢ËÍÖУ¬Èç¹û¼ìÌýÐŵÀÒÑÓÐÆäËüÕ¾ÕýÔÚ·¢ËÍÊý¾Ý£¬¾Í±íʾ·¢ÉúÁËÅöײ¡£ËäȻÿһ¸öÕ¾ÔÚ·¢ËÍÊý¾Ý֮ǰ¶¼ÒѾ­¼ìÌýÐŵÀΪ¿ÕÏУ¬µ«ÊÇÓÉÓÚµç´Å²¨µÄ´«²¥Ê±ÑӵĴæÔÚ£¬»¹ÊÇÓпÉÄܻᷢÉúÅöײ¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/f9ed4da5-0032-41e6-991a-36d995ec28fd.png) -?????????????? ??????????????????? 2?? ?????????????????????? 2?? ? **??????**????§à??????????????§Þ???????????????¦Ç????????????? +¼Ç¶Ëµ½¶ËµÄ´«²¥Ê±ÑÓΪ ¦Ó£¬×îÏÈ·¢Ë͵ÄÕ¾µã×î¶à¾­¹ý 2¦Ó ¾Í¿ÉÒÔÖªµÀÊÇ·ñ·¢ÉúÁËÅöײ£¬³Æ 2¦Ó Ϊ **ÕùÓÃÆÚ**¡£Ö»Óо­¹ýÕùÓÃÆÚÖ®ºó»¹Ã»Óмì²âµ½Åöײ£¬²ÅÄܿ϶¨Õâ´Î·¢ËͲ»»á·¢ÉúÅöײ¡£ -??????????????????????????????????????????????? **????????????????** ?????????????????????? {0, 1, .., (2k-1)} ??????????????????? r?????? r ?????????????????????? +µ±·¢ÉúÅöײʱ£¬Õ¾µãҪֹͣ·¢ËÍ£¬µÈ´ýÒ»¶Îʱ¼äÔÙ·¢ËÍ¡£Õâ¸öʱ¼ä²ÉÓà **½Ø¶Ï¶þ½øÖÆÖ¸ÊýÍ˱ÜËã·¨** À´È·¶¨£¬´ÓÀëÉ¢µÄÕûÊý¼¯ºÏ {0, 1, .., (2k-1)} ÖÐËæ»úÈ¡³öÒ»¸öÊý£¬¼Ç×÷ r£¬È»ºóÈ¡ r ±¶µÄÕùÓÃÆÚ×÷ÎªÖØ´«µÈ´ýʱ¼ä¡£ -## ?????? +## ¼¯Ï߯÷ -????????????¨¹??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§³? +´Ó±íÃæÉÏ¿´£¬Ê¹Óü¯Ï߯÷µÄ¾ÖÓòÍøÔÚÎïÀíÉÏÊÇÒ»¸öÐÇÐÍÍø¡£µ«ÊǼ¯Ï߯÷ʹÓõç×ÓÆ÷¼þÀ´Ä£Äâʵ¼ÊÀÂÏߵŤ×÷£¬Âß¼­ÉÏÈÔÊÇÒ»¸ö×ÜÏßÍø£¬Õû¸öϵͳÈÔÏñÒ»¸ö´«Í³ÒÔÌ«ÍøÄÇÑùÔËÐС£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/897a4f4e-2683-44e1-a26a-c0d0234dc576.jpg) ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/40c3f8e5-3a20-45b6-a60c-77b9b952e104.jpg) -## MAC ?? +## MAC ²ã -MAC ????? 6 ????48 ¦Ë????????????¦·????????????????????§Ø???????????§Ø?? MAC ?????????????????????????????????????????????????????? +MAC µØÖ·ÊÇ 6 ×Ö½Ú£¨48 룩µÄµØÖ·£¬ÓÃÓÚΨһ±íʾÊÊÅäÆ÷£¬Ò»Ì¨Ö÷»úÓµÓжà¸öÊÊÅäÆ÷¾ÍÓжà¸ö MAC µØÖ·£¬ÀýÈç±Ê¼Ç±¾µçÄÔÆÕ±é´æÔÚÎÞÏßÍøÂçÊÊÅäÆ÷ºÍÓÐÏßÍøÂçÊÊÅäÆ÷¡£ -MAC ???????????????????????§¿?ï”??????¦Ã????? 46-1500 ???????§³????????FCS ?????????§µ??????? CRC ???ú›?????????????????????????? FCS ???????????????????????? +MAC Ö¡ÓÃÀàÐÍ×Ö¶ÎÀ´±ê¼ÇÉϲãʹÓÃʲôЭÒ飻Êý¾Ý×ֶ㤶ÈÔÚ 46-1500 Ö®¼ä£¬Èç¹û̫СÔòÐèÒªÌî³ä£»FCS Ϊ֡¼ìÑéÐòÁУ¬Ê¹ÓõÄÊÇ CRC ¼ìÑé·½·¨£»Ç°Ãæ²åÈëµÄǰͬ²½ÂëÖ»ÊÇΪÁ˼ÆËã FCS ÁÙʱ¼ÓÈëµÄ£¬¼ÆËã½áÊøÖ®ºó»á¶ªÆú¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/50d38e84-238f-4081-8876-14ef6d7938b5.jpg) -## ????????? +## ÐéÄâ¾ÖÓòÍø -??????????????????????¦Ë??????????ï…???????????????????§Ö????????????????????????? (A1, A2, A3, A4) ??????????????????A1 ???????? A2??A3??A4 ????????????????????? +ÐéÄâ¾ÖÓòÍø¿ÉÒÔ½¨Á¢ÓëÎïÀíλÖÃÎ޹صÄÂß¼­×飬ֻÓÐÔÚͬһ¸öÐéÄâ¾ÖÓòÍøÖеijÉÔ±²Å»áÊÕµ½¹ã²¥ÐÅÏ¢£¬ÀýÈçÏÂͼÖÐ (A1, A2, A3, A4) ÊôÓÚÒ»¸öÐéÄâ¾ÖÓòÍø£¬A1 ·¢Ë͵Ĺ㲥»á±» A2¡¢A3¡¢A4 ÊÕµ½£¬¶øÆäËüÕ¾µãÊÕ²»µ½¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/a74b70ac-323a-4b31-b4d5-90569b8a944b.png) -# ?????? ?????* +# µÚËÄÕÂ ÍøÂç²ã* -## ????§¿?? IP ???? +## Íø¼ÊЭÒé IP ¸ÅÊö -??????????????????????????????????????????????????????????????????????????????????????????????? +ÒòÎªÍøÂç²ãÊÇÕû¸ö»¥ÁªÍøµÄºËÐÄ£¬Òò´ËÓ¦µ±ÈÃÍøÂç²ã¾¡¿ÉÄܼòµ¥¡£ÍøÂç²ãÏòÉÏÖ»Ìṩ¼òµ¥Áé»îµÄ¡¢ÎÞÁ¬½ÓµÄ¡¢¾¡×î´óŬÁ¦½»»¥µÄÊý¾Ý±¨·þÎñ¡£ -??? IP §¿?ï…?????????????????????????????????????????????????????????³‡ +ʹÓà IP ЭÒ飬¿ÉÒÔ°ÑÒì¹¹µÄÎïÀíÍøÂçÁ¬½ÓÆðÀ´£¬Ê¹µÃÔÚÍøÂç²ã¿´ÆðÀ´ºÃÏñÊÇÒ»¸öͳһµÄÍøÂç¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/fe3d224c-8ffd-40f9-85b1-86ffe1393f6c.jpg) -?? IP §¿?????????????????§¿?ï“ +Óë IP ЭÒéÅäÌ×ʹÓõϹÓÐÈý¸öЭÒ飺 -1. ???????§¿?? ARP??Address Resolution Protocol?? -2. ??????????§¿?? ICMP??Internet Control Message Protocol?? -3. ?????????§¿?? IGMP??Internet Group Management Protocol?? +1. µØÖ·½âÎöЭÒé ARP£¨Address Resolution Protocol£© +2. Íø¼Ê¿ØÖƱ¨ÎÄЭÒé ICMP£¨Internet Control Message Protocol£© +3. Íø¼Ê×é¹ÜÀíЭÒé IGMP£¨Internet Group Management Protocol£© ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/163cf8b4-5f30-46c9-af00-316a71b3c890.jpg) -## IP ???????? +## IP Êý¾Ý±¨¸ñʽ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/8681db55-0873-434b-aa98-83d07e8392ae.jpg) -**?·Ú** : ?? 4??IPv4???? 6??IPv6????????? +**°æ±¾** : ÓÐ 4£¨IPv4£©ºÍ 6£¨IPv6£©Á½¸öÖµ£» -**???????** : ? 4 ¦Ë?????????? 15???? 1 ??????? 1 ?? 32 ¦Ë???????????? 4 ?????????????????? 20 ???????????§³? 5??????????????????? 4 ????????????????¦Â?????????????? +**Êײ¿³¤¶È** : Õ¼ 4 룬Òò´Ë×î´óֵΪ 15¡£ÖµÎª 1 ±íʾµÄÊÇ 1 ¸ö 32 λ×ֵij¤¶È£¬Ò²¾ÍÊÇ 4 ×Ö½Ú¡£ÒòΪÊײ¿¹Ì¶¨³¤¶ÈΪ 20 ×Ö½Ú£¬Òò´Ë¸ÃÖµ×îСΪ 5¡£Èç¹û¿ÉÑ¡²¿·ÖµÄ³¤¶È²»ÊÇ 4 ×Ö½ÚµÄÕûÊý±¶£¬¾ÍÓÃβ²¿µÄÌî³ä²¿·ÖÀ´Ìî³ä¡£ -**???????** : ??????????????????????????¨¢? +**Çø·Ö·þÎñ** : ÓÃÀ´»ñµÃ¸üºÃµÄ·þÎñ£¬Ò»°ãÇé¿öϲ»ÊÊÓᣠ-**?????** : ??????????????????????? +**×ܳ¤¶È** : °üÀ¨Êײ¿³¤¶ÈºÍÊý¾Ý²¿·Ö³¤¶È¡£ -**???** : ?????????????????????????????????????????????????????????????? +**±êʶ** : ÔÚÊý¾Ý±¨³¤¶È¹ý³¤´Ó¶ø·¢Éú·ÖƬµÄÇé¿öÏ£¬ÏàͬÊý¾Ý±¨µÄ²»Í¬·ÖƬ¾ßÓÐÏàͬµÄ±êʶ·û¡£ -**????** : ????????????????????????????????¦Ë? 8 ???? +**Æ¬Æ«ÒÆ** : ºÍ±êʶ·ûÒ»Æð£¬ÓÃÓÚ·¢Éú·ÖƬµÄÇé¿ö¡£Æ¬Æ«ÒƵĵ¥Î»Îª 8 ×Ö½Ú¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/45c86855-9b18-4cf4-a9a7-f8b6eb78d133.png) -**???????** ??TTL????????????????????????????????????§Ó??????????¡¤???????????¦Ë???? TTL ? 0 ????????????? +**Éú´æÊ±¼ä** £ºTTL£¬ËüµÄ´æÔÚΪÁË·ÀÖ¹ÎÞ·¨½»¸¶µÄÊý¾Ý±¨ÔÚ»¥ÁªÍøÖв»¶Ï¶µÈ¦×Ó¡£ÒÔ·ÓÉÆ÷ÌøÊýΪµ¥Î»£¬µ± TTL Ϊ 0 ʱ¾Í¶ªÆúÊý¾Ý±¨¡£ -**§¿??**?????§Á???????????????????§¿????§Õ??????? ICMP??TCP??UDP ??? +**ЭÒé**£ºÖ¸³öЯ´øµÄÊý¾ÝÓ¦¸ÃÉϽ»¸øÄĸöЭÒé½øÐд¦Àí£¬ÀýÈç ICMP¡¢TCP¡¢UDP µÈ¡£ -**????????**??????????????????¡¤????????????????????????????????????????????????????????? +**Êײ¿¼ìÑéºÍ**£ºÒòΪÊý¾Ý±¨Ã¿¾­¹ýÒ»¸ö·ÓÉÆ÷£¬¶¼ÒªÖØÐ¼ÆËã¼ìÑéºÍ£¬Òò´Ë¼ìÑéºÍ²»°üº¬Êý¾Ý²¿·Ö¿ÉÒÔ¼õÉÙ¼ÆËãµÄ¹¤×÷Á¿¡£ -## IP ?????? +## IP µØÖ·±àÖ· -IP ?????????????????????????¦²? +IP µØÖ·µÄ±àÖ··½Ê½¾­ÀúÁËÈý¸öÀúÊ·½×¶Î£º -1. ????? IP ????? -2. ?????????? -3. ????????? +1. ·ÖÀàµÄ IP µØÖ·£» +2. ×ÓÍøµÄ»®·Ö£» +3. ¹¹³É³¬Íø¡£ -### 1. ????? IP ??? +### 1. ·ÖÀàµÄ IP µØÖ· -????????????????????????????§Ó???????§Ó???????????????????????? +ÓÉÁ½²¿·Ö×é³É£¬ÍøÂçºÅºÍÖ÷»úºÅ£¬ÆäÖв»Í¬Àà±ð¾ßÓв»Í¬µÄÍøÂçºÅ³¤¶È£¬²¢ÇÒÊǹ̶¨µÄ¡£ -IP ??? ::= {< ????? >, < ?????? >} +IP µØÖ· ::= {< ÍøÂçºÅ >, < Ö÷»úºÅ >} ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/2ddd6132-60be-4a72-9daa-3d9756191f4a.png) -### 2. ???????? +### 2. »®·Ö×ÓÍø -?????????????????????????????????????? IP ???????????? IP ?????????????ÂI?????????????? +ͨ¹ýÔÚÍøÂçºÅ×Ö¶ÎÖÐÄÃÒ»²¿·Ö×÷Ϊ×ÓÍøºÅ£¬°ÑÁ½¼¶ IP µØÖ·»®·ÖΪÈý¼¶ IP µØÖ·¡£×¢Ò⣬Íâ²¿ÍøÂç¿´²»µ½×ÓÍøµÄ´æÔÚ¡£ -IP ??? ::= {< ????? >, < ?????? >, < ?????? >} +IP µØÖ· ::= {< ÍøÂçºÅ >, < ×ÓÍøºÅ >, < Ö÷»úºÅ >} -????????????????????????????? B ?????????????????? 255.255.0.0????? B ???????????????????????????????? 11111111 11111111 11000000 000000??????? 255.255.192.0?? +ҪʹÓÃ×ÓÍø£¬±ØÐëÅäÖÃ×ÓÍøÑÚÂë¡£Ò»¸ö B ÀàµØÖ·µÄĬÈÏ×ÓÍøÑÚÂëΪ 255.255.0.0£¬Èç¹û B ÀàµØÖ·µÄ×ÓÍøÕ¼Á½¸ö±ÈÌØ£¬ÄÇô×ÓÍøÑÚÂëΪ 11111111 11111111 11000000 000000£¬Ò²¾ÍÊÇ 255.255.192.0¡£ -### 3. ??????? CIDR??????????? +### 3. ÎÞ·ÖÀà±àÖ· CIDR£¨¹¹³É³¬Íø£© -CIDR ???????? A ??B ??? C ????????????????????????????????????????? IP ??????§Ò????????????????????????�£?? +CIDR Ïû³ýÁË´«Í³ A Àà¡¢B ÀàºÍ C ÀàµØÖ·ÒÔ¼°»®·Ö×ÓÍøµÄ¸ÅÄʹÓÃÍøÂçǰ׺ºÍÖ÷»úºÅÀ´¶Ô IP µØÖ·½øÐбàÂë£¬ÍøÂçǰ׺µÄ³¤¶È¿ÉÒÔ¸ù¾ÝÐèÒª±ä»¯¡£ -IP ??? ::= {< ???????? >, < ?????? >} +IP µØÖ· ::= {< ÍøÂçǰ׺ºÅ >, < Ö÷»úºÅ >} -CIDR ??????????? IP ?????????????????????????????? 128.14.35.7/20 ???? 20 ¦Ë????????? +CIDR µÄ¼Ç·¨ÉϲÉÓÃÔÚ IP µØÖ·ºóÃæ¼ÓÉÏÍøÂçǰ׺³¤¶ÈµÄ·½·¨£¬ÀýÈç 128.14.35.7/20 ±íʾǰ 20 Î»ÎªÍøÂçǰ׺¡£ -CIDR ??????????????????????????????????? 1 ????????????????? +CIDR µÄµØÖ·ÑÚÂë¿ÉÒÔ¼ÌÐø³ÆÎª×ÓÍøÑÚÂ룬×ÓÍøÑÚÂëÊ× 1 ³¤¶ÈÎªÍøÂçǰ׺µÄ³¤¶È¡£ -??? CIDR ????????§Ü????????? CIDR ??????????????????????????íà??????¡¤????????????¡¤????????????????¡¤?????????¡¤????????????????????????????????????¡¤???????????¡¤?????????????????? +Ò»¸ö CIDR µØÖ·¿éÖÐÓÐºÜ¶àµØÖ·£¬Ò»¸ö CIDR ±íʾµÄÍøÂç¾Í¿ÉÒÔ±íʾԭÀ´µÄºÜ¶à¸öÍøÂ磬²¢ÇÒÔÚ·ÓɱíÖÐÖ»ÐèÒªÒ»¸ö·ÓɾͿÉÒÔ´úÌæÔ­À´µÄ¶à¸ö·ÓÉ£¬¼õÉÙÁË·ÓɱíÏîµÄÊýÁ¿¡£°ÑÕâÖÖͨ¹ýʹÓÃÍøÂçǰ׺À´¼õÉÙ·ÓɱíÏîµÄ·½Ê½³ÆÎªÂ·Óɾۺϣ¬Ò²³ÆÎª¹¹³É³¬Íø¡£ -??¡¤????????????¨À?????????????????????????????????????????????????????????????????? +ÔÚ·ÓɱíÖÐÿ¸öÏîÄ¿ÓÉ¡°ÍøÂçǰ׺¡±ºÍ¡°ÏÂÒ»ÌøµØÖ·¡±×é³É£¬ÔÚ²éÕÒʱ¿ÉÄÜ»áµÃµ½²»Ö¹Ò»¸öÆ¥Åä½á¹û£¬Ó¦µ±²ÉÓÃ×ǰ׺ƥÅä¡£ -## IP ????? MAC ??? +## IP µØÖ·ºÍ MAC µØÖ· -????????????????????????¡¤?????????????¡¤????????????????????§µ?IP ?????????????????????????? MAC ?????????¡¤???????? +ÍøÂç²ãʵÏÖÖ÷»úÖ®¼äµÄͨÐÅ£¬¶øÁ´Â·²ãʵÏÖ¾ßÌåÿ¶ÎÁ´Â·Ö®¼äµÄͨÐÅ¡£Òò´ËÔÚͨÐŹý³ÌÖУ¬IP Êý¾Ý±¨µÄÔ´µØÖ·ºÍÄ¿µÄµØÖ·Ê¼ÖÕ²»±ä£¬¶ø MAC µØÖ·Ëæ×ÅÁ´Â·µÄ¸Ä±ä¶ø¸Ä±ä¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/86b71296-0d1e-4a63-bcd9-54955b6b781b.jpg) -## ???????§¿?? ARP +## µØÖ·½âÎöЭÒé ARP -????? IP ?????? MAC ????? +ʵÏÖÓÉ IP µØÖ·µÃµ½ MAC µØÖ·¡£ -?????????????? ARP ??????—¨????????????? IP ??? ?? MAC ?????????????§µ?????????????????? ARP ??????ï…??? IP ????????????? ARP ????????? MAC ????? +ÿ¸öÖ÷»ú¶¼ÓÐÒ»¸ö ARP ¸ßËÙ»º´æ£¬´æ·ÅÓ³Éä±í¡£Èç¹ûÒ»¸ö IP µØÖ· µ½ MAC µØÖ·µÄÓ³Éä²»ÔڸñíÖУ¬Ö÷»úͨ¹ý¹ã²¥µÄ·½Ê½·¢ËÍ ARP ÇëÇó·Ö×飬ƥÅä IP µØÖ·µÄÖ÷»ú»á·¢ËÍ ARP ÏìÓ¦·Ö×é¸æÖª MAC µØÖ·¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/8bc6fc2c-d198-4759-b06c-18d94d851e97.png) -## ¡¤??????? +## ·ÓÉÆ÷µÄ½á¹¹ -¡¤??????????????????¡¤?????????????? +·ÓÉÆ÷¿ÉÒÔ»®·ÖΪÁ½´ó²¿·Ö£ºÂ·ÓÉÑ¡ÔñºÍ·Ö×éת·¢¡£ -??????????????????????????????????????????????????? +·Ö×éת·¢²¿·ÖÓÉÈý²¿·Ö×é³É£º½»»»½á¹¹¡¢Ò»×éÊäÈë¶Ë¿ÚºÍÒ»×éÊä³ö¶Ë¿Ú¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/3a676c54-b559-4466-9b21-eb10f1e25879.jpg) -???????????????????????????????? +½»»»½á¹¹µÄ½»»»ÍøÂçÓÐÒÔÏÂÈýÖÖʵÏÖ·½Ê½£º ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/7f82fd18-7f16-4125-ada6-bb6b795b4fda.png) -## ????????¡¤?????????? +## ½»»»»úÓë·ÓÉÆ÷µÄÇø±ð -- ??????????????????¡¤??????? MAC ????????? MAC ????????¡¤????????????????????????? IP ????? MAC ???????? +- ½»»»»ú¹¤×÷ÓÚÊý¾ÝÁ´Â·²ã£¬ÄÜʶ±ð MAC µØÖ·£¬¸ù¾Ý MAC µØÖ·×ª·¢Á´Â·²ãÊý¾ÝÖ¡¡£¾ßÓÐ×Ôѧ»úÖÆÀ´Î¬»¤ IP µØÖ·Óë MAC µØÖ·µÄÓ³Éä¡£ -- ¡¤????¦Ë???????????? IP ????????? IP ?????????î•?????¡¤???????¡¤?????????¡¤??? +- ·ÓÉÆ÷λÓÚÍøÂç²ã£¬ÄÜʶ±ð IP µØÖ·²¢¸ù¾Ý IP µØÖ·×ª·¢·Ö×顣ά»¤×Å·ÓÉ±í£¬¸ù¾Ý·ÓɱíÑ¡Ôñ×î¼Ñ·Ïß¡£ -## ¡¤??????????????? +## ·ÓÉÆ÷·Ö×éת·¢Á÷³Ì -1. ???????????????????????? IP ??? D?????????????? N????¡¤????????????????? IP ???????????????????¡¤???????????? -2. ?? N ???????¡¤????????????????????????????????????? -3. ??¡¤????????????? D ?????????¡¤????????????????????????????????¡¤?????? -4. ??¡¤??????§Ö??????? N ??¡¤????????????????¡¤?????????????????¡¤?????? -5. ??¡¤?????????????¡¤????????????????¡¤???????????????¡¤?????? -6. ?????????????? +1. ´ÓÊý¾Ý±¨µÄÊײ¿ÌáȡĿµÄÖ÷»úµÄ IP µØÖ· D£¬µÃµ½Ä¿µÄÍøÂçµØÖ· N¡££¨Â·ÓɱíÏîÊÇÍøÂçºÅ¶ø²»ÊÇ IP µØÖ·£¬ÕâÑù×ö´ó´ó¼õÉÙÁË·ÓɱíÌõÄ¿ÊýÁ¿£© +2. Èô N ¾ÍÊÇÓë´Ë·ÓÉÆ÷Ö±½ÓÏàÁ¬µÄij¸öÍøÂçµØÖ·£¬Ôò½øÐÐÖ±½Ó½»¸¶£» +3. Èô·ÓɱíÖÐÓÐÄ¿µÄµØÖ·Îª D µÄÌØ¶¨Ö÷»ú·ÓÉ£¬Ôò°ÑÊý¾Ý±¨´«Ë͸ø±íÖÐËùÖ¸Ã÷µÄÏÂÒ»ÌøÂ·ÓÉÆ÷£» +4. Èô·ÓɱíÖÐÓе½´ïÍøÂç N µÄ·ÓÉ£¬Ôò°ÑÊý¾Ý±¨´«Ë͸øÂ·ÓɱíÖÐËùÖ¸Ã÷µÄÏÂÒ»ÌøÂ·ÓÉÆ÷£» +5. Èô·ÓɱíÖÐÓÐÒ»¸öĬÈÏ·ÓÉ£¬Ôò°ÑÊý¾Ý±¨´«Ë͸øÂ·ÓɱíÖÐËùÖ¸Ã÷µÄĬÈÏ·ÓÉÆ÷£» +6. ±¨¸æ×ª·¢·Ö×é³ö´í¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/8d211911-0e62-4190-ab00-d8610adec4a0.jpg) -## ¡¤?????§¿?? +## ·ÓÉÑ¡ÔñЭÒé -??????????¡¤?????§¿?úY???????????????????????????????�£???????????§Ö????? +»¥ÁªÍøÊ¹ÓõÄ·ÓÉÑ¡ÔñЭÒé¶¼ÊÇ×ÔÊÊÓ¦µÄ£¬ÄÜËæ×ÅÍøÂçͨÐÅÁ¿ºÍÍØÆË±ä»¯¶ø×ÔÊÊÓ¦µØ½øÐе÷Õû¡£ -??????????????????§³???????? AS????? AS ????????????? AS ?????¡¤?????§¿?î• +»¥ÁªÍø¿ÉÒÔ»®·ÖΪÐí¶à½ÏСµÄ×ÔÖÎϵͳ AS£¬Ò»¸ö AS ¿ÉÒÔʹÓÃÒ»ÖֺͱðµÄ AS ²»Í¬µÄ·ÓÉÑ¡ÔñЭÒé¡£ -?????¡¤?????§¿?ül????????? +¿ÉÒÔ°Ñ·ÓÉÑ¡ÔñЭÒé»®·ÖΪÁ½´óÀࣺ -1. ???????§¿?? IGP??Interior Gateway Protocol?? ????????????????? RIP ?? OSPF?? -2. ??????§¿?? EGP??External Gateway Protocol?? ????????????????? BGP?? +1. ÄÚ²¿Íø¹ØÐ­Òé IGP£¨Interior Gateway Protocol£© ÔÚ×ÔÖÎϵͳÄÚ²¿Ê¹Óã¬Èç RIP ºÍ OSPF¡£ +2. Íâ²¿Íø¹ØÐ­Òé EGP£¨External Gateway Protocol£© ÔÚ×ÔÖÎϵͳ֮¼äʹÓã¬Èç BGP¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/e0be6970-5b0e-44a2-bc71-df4d61c42b8f.jpg) -### 1. ???????§¿?? RIP +### 1. ÄÚ²¿Íø¹ØÐ­Òé RIP -RIP ??????????????????????¡¤?????§¿?î•??????????????????????¡¤????????? 1?????????? 15?????? 15 ???????? +RIP ÊÇÒ»ÖÖ·Ö²¼Ê½µÄ»ùÓÚ¾àÀëÏòÁ¿µÄ·ÓÉÑ¡ÔñЭÒé¡£¾àÀëÊÇÖ¸ÌøÊý£¬Ö±½ÓÏàÁ¬µÄ·ÓÉÆ÷ÌøÊýΪ 1£¬ÌøÊý×î¶àΪ 15£¬³¬¹ý 15 ±íʾ²»¿É´ï¡£ -RIP ????????????????????¡¤?????????????¡¤???????????¦Í??????????¡¤?????????????????????????¦Ê?????????????????????¡¤????????? +RIP °´¹Ì¶¨µÄʱ¼ä¼ä¸ô½öºÍÏàÁÚ·ÓÉÆ÷½»»»×Ô¼ºµÄ·ÓÉ±í£¬¾­¹ýÈô¸É´Î½»»»Ö®ºó£¬ËùÓзÓÉÆ÷×îÖÕ»áÖªµÀµ½´ï±¾×ÔÖÎϵͳÖÐÈκÎÒ»¸öÍøÂçµÄ×î¶Ì¾àÀëºÍÏÂÒ»ÌøÂ·ÓÉÆ÷µØÖ·¡£ -???????????? +¾àÀëÏòÁ¿Ëã·¨£º -1. ????? X ??????¡¤?????????? RIP ??????????????§Ö?????????????????????§Ö?????? X?????????§Ö??????¦Ì? 1?? -2. ??????? RIP ?????§Ö????????????????????Ñs - - ???????¡¤??????????????? N?????????????¡¤????§µ? - - ???????????¡¤????????? X??????????????�I???¡¤????§Ö?????????????????????§Ö???? d §³??¡¤????§Ö????????§Ú??????????¡¤?????? Net2, 5, P???¡À???? Net2, 4, X??????????????????????? -3. ?? 3 ???????????????¡¤?????????¡¤???????????¡¤?????????????????????? 16?? +1. ¶ÔµØÖ·Îª X µÄÏàÁÚ·ÓÉÆ÷·¢À´µÄ RIP ±¨ÎÄ£¬ÏÈÐ޸ı¨ÎÄÖеÄËùÓÐÏîÄ¿£¬°ÑÏÂÒ»Ìø×Ö¶ÎÖеĵØÖ·¸ÄΪ X£¬²¢°ÑËùÓеľàÀë×Ö¶Î¼Ó 1£» +2. ¶ÔÐ޸ĺóµÄ RIP ±¨ÎÄÖеÄÿһ¸öÏîÄ¿£¬½øÐÐÒÔϲ½Ö裺 + - ÈôÔ­À´µÄ·ÓɱíÖÐûÓÐÄ¿µÄÍøÂç N£¬Ôò°Ñ¸ÃÏîÄ¿Ìí¼Óµ½Â·ÓɱíÖУ» + - ·ñÔò£ºÈôÏÂÒ»ÌøÂ·ÓÉÆ÷µØÖ·ÊÇ X£¬Ôò°ÑÊÕµ½µÄÏîÄ¿Ìæ»»Ô­À´Â·ÓɱíÖеÄÏîÄ¿£»·ñÔò£ºÈôÊÕµ½µÄÏîÄ¿ÖеľàÀë d СÓÚ·ÓɱíÖеľàÀ룬Ôò½øÐиüУ¨ÀýÈçԭʼ·ÓɱíÏîΪ Net2, 5, P£¬Ð±íÏîΪ Net2, 4, X£¬Ôò¸üУ©£»·ñÔòʲôҲ²»×ö¡£ +3. Èô 3 ·ÖÖÓ»¹Ã»ÓÐÊÕµ½ÏàÁÚ·ÓÉÆ÷µÄ¸üзÓÉ±í£¬Ôò°Ñ¸ÃÏàÁÚ·ÓÉÆ÷±êΪ²»¿É´ï£¬¼´°Ñ¾àÀëÖÃΪ 16¡£ -RIP §¿???????????§³?????? RIP ????????????? 15???????????????????????????????????????????????????????????????????¡¤?????? +RIP ЭÒéʵÏÖ¼òµ¥£¬¿ªÏúС£¬µ«ÊÇ RIP ÄÜʹÓõÄ×î´ó¾àÀëΪ 15£¬ÏÞÖÆÁËÍøÂçµÄ¹æÄ£¡£²¢ÇÒµ±ÍøÂç³öÏÖ¹ÊÕÏʱ£¬Òª¾­¹ý±È½Ï³¤µÄʱ¼ä²ÅÄܽ«´ËÏûÏ¢´«Ë͵½ËùÓзÓÉÆ÷¡£ -### 2. ???????§¿?? OSPF +### 2. ÄÚ²¿Íø¹ØÐ­Òé OSPF -???????¡¤?????? OSPF????????? RIP ????????????????? +¿ª·Å×î¶Ì·¾¶ÓÅÏÈ OSPF£¬ÊÇΪÁ˿˷þ RIP µÄȱµã¶ø¿ª·¢³öÀ´µÄ¡£ -?????? OSPF ???????????????????????????????¡¤???????????????? Dijkstra ????????¡¤???? SPF?? +¿ª·Å±íʾ OSPF ²»ÊÜijһ¼Ò³§ÉÌ¿ØÖÆ£¬¶øÊǹ«¿ª·¢±íµÄ£»×î¶Ì·¾¶ÓÅÏÈÊÇÒòΪʹÓÃÁË Dijkstra Ìá³öµÄ×î¶Ì·¾¶Ëã·¨ SPF¡£ -OSPF ??????????? +OSPF ¾ßÓÐÒÔÏÂÌØµã£º -1. ?????????§Ö?????¡¤??????????????????????ú˜???? -2. ??????????????????¡¤????????¡¤??????¡¤??????????§»¡¤?????????????¡¤????????????¡Â??¨¢????????????????????? -3. ??§Ö???¡¤???????�£???¡¤?????????????? +1. Ïò±¾×ÔÖÎϵͳÖеÄËùÓзÓÉÆ÷·¢ËÍÐÅÏ¢£¬ÕâÖÖ·½·¨ÊǺ鷺·¨¡£ +2. ·¢Ë͵ÄÐÅÏ¢¾ÍÊÇÓëÏàÁÚ·ÓÉÆ÷µÄÁ´Â·×´Ì¬£¬Á´Â·×´Ì¬°üÀ¨ÓëÄÄЩ·ÓÉÆ÷ÏàÁ¬ÒÔ¼°Á´Â·µÄ¶ÈÁ¿£¬¶ÈÁ¿Ó÷ÑÓᢾàÀ롢ʱÑÓ¡¢´ø¿íµÈÀ´±íʾ¡£ +3. Ö»Óе±Á´Â·×´Ì¬·¢Éú±ä»¯Ê±£¬Â·ÓÉÆ÷²Å»á·¢ËÍÐÅÏ¢¡£ -????¡¤??????????????????????????????????????? RIP??OSPF ???????????????? +ËùÓзÓÉÆ÷¶¼¾ßÓÐÈ«ÍøµÄÍØÆË½á¹¹Í¼£¬²¢ÇÒÊÇÒ»Öµġ£Ïà±ÈÓÚ RIP£¬OSPF µÄ¸üйý³ÌÊÕÁ²µÄºÜ¿ì¡£ -### 3. ??????§¿?? BGP +### 3. Íâ²¿Íø¹ØÐ­Òé BGP -AS ????¡¤????????????????????????????????? AS ?????¨°????¡¤?????§¿?ï…???????????¡¤????????????? AS ????¡¤???????????§Û????????????§» AS ??????????? AS ?????? +AS Ö®¼äµÄ·ÓÉÑ¡ÔñºÜÀ§ÄÑ£¬Ö÷ÒªÊÇ»¥ÁªÍø¹æÄ£ºÜ´ó¡£²¢ÇÒ¸÷¸ö AS ÄÚ²¿Ê¹Óò»Í¬µÄ·ÓÉÑ¡ÔñЭÒ飬¾ÍÎÞ·¨×¼È·¶¨Òå·¾¶µÄ¶ÈÁ¿¡£²¢ÇÒ AS Ö®¼äµÄ·ÓÉÑ¡Ôñ±ØÐ뿼ÂÇÓйصIJßÂÔ£¬±ÈÈçÓÐЩ AS ²»Ô¸ÒâÈÃÆäËü AS ¾­¹ý¡£ -BGP ??????????????¡¤????????????¡¤?¨À???????¡¤??????¡¤?????§¿?î• +BGP Ö»ÄÜѰÕÒÒ»Ìõ±È½ÏºÃµÄ·ÓÉ£¬¶ø²»ÊÇ×î¼Ñ·ÓÉ¡£Ëü²ÉÓ÷¾¶ÏòÁ¿Â·ÓÉÑ¡ÔñЭÒé¡£ -??? AS ?????????? BGP ???????????????????? BGP ????????�Ü?? TCP ??????????¡¤??????? +ÿ¸ö AS ¶¼±ØÐëÅäÖà BGP ·¢ÑÔÈË£¬Í¨¹ýÔÚÁ½¸öÏàÁÚ BGP ·¢ÑÔÈËÖ®¼ä½¨Á¢ TCP Á¬½ÓÀ´½»»»Â·ÓÉÐÅÏ¢¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/eb6271de-22c9-4f4b-8b31-eab1f560efac.png) -## ??????????§¿?? ICMP +## Íø¼Ê¿ØÖƱ¨ÎÄЭÒé ICMP -ICMP ????????§¹????? IP ???????????????????????????? IP ??????§µ????????????§¿?î• +ICMP ÊÇΪÁ˸üÓÐЧµØ×ª·¢ IP Êý¾Ý±¨ºÍÌá¸ß½»¸¶³É¹¦µÄ»ú»á¡£Ëü·â×°ÔÚ IP Êý¾Ý±¨ÖУ¬µ«ÊDz»ÊôÓڸ߲ãЭÒé¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/9b5e0fa0-9274-4219-a3a9-84fbb509c735.jpg) -ICMP ??????????ãè?????????? +ICMP ±¨ÎÄ·ÖΪ²î´í±¨¸æ±¨ÎĺÍѯÎʱ¨ÎÄ¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/6e11b122-95ce-4869-bf7d-3b0d7591707e.jpg) -## ??????????? PING +## ·Ö×éÍø¼ä̽²â PING -PING ?? ICMP ???????????????????????????????????????? +PING ÊÇ ICMP µÄÒ»¸öÖØÒªÓ¦Óã¬Ö÷ÒªÓÃÀ´²âÊÔÁ½Ì¨Ö÷»úÖ®¼äµÄÁ¬Í¨ÐÔ¡£ -PING ?????? +PING µÄ¹ý³Ì£º -1. PING ???????¦Å???????????????????? MAC ??????????????????????????? MAC ??????????????? ARP ???? -2. PING ??????¦Å?????????????????????????????????????????????????????????? MAC ????????? MAC ???????????? +1. PING ͬһ¸öÍø¶ÎµÄÖ÷»ú£¬²éÕÒÄ¿µÄÖ÷»úµÄ MAC µØÖ·£¬È»ºóÖ±½Ó½»¸¶¡£Èç¹ûÎÞ·¨²éÕÒµ½ MAC µØÖ·£¬¾ÍÒª½øÐÐÒ»´Î ARP ÇëÇó¡£ +2. PING ²»Í¬Íø¶ÎµÄÖ÷»ú£¬¾Í·¢Ë͸øÍø¹ØÈÃÆä½øÐÐת·¢¡£Í¬ÑùÒª·¢Ë͸øÍø¹ØÒ²ÐèҪͨ¹ý²éÕÒÍø¹ØµÄ MAC µØÖ·£¬¸ù¾Ý MAC µØÖ·½øÐÐת·¢¡£ -## IP ?? +## IP ¶à²¥ -???????????§µ?????????????û`?????????????????????? +ÔÚÒ»¶Ô¶àµÄͨÐÅÖУ¬¶à²¥²»ÐèÒª½«·Ö×鏴֯¶à·Ý£¬´Ó¶ø´ó´ó½ÚÔ¼ÍøÂç×ÊÔ´¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/c77b6a18-dfac-42a2-ac89-7e99481275dc.jpg) -## ????????? VPN +## ÐéÄâרÓÃÍø VPN -???? IP ???????????????????????? IP ??????????§³???????????§Ö????????????????????????????????§Ö???????????????????§µ?????????????????????????????§¹?? IP ?????????????? +ÓÉÓÚ IP µØÖ·µÄ½ôȱ£¬Ò»¸ö»ú¹¹ÄÜÉêÇëµ½µÄ IP µØÖ·ÊýÍùÍùԶСÓÚ±¾»ú¹¹ËùÓµÓеÄÖ÷»úÊý¡£²¢ÇÒÒ»¸ö»ú¹¹²¢²»ÐèÒª°ÑËùÓеÄÖ÷»ú½ÓÈëµ½ÍⲿµÄ»¥ÁªÍøÖУ¬»ú¹¹ÄڵļÆËã»ú¿ÉÒÔʹÓýöÔÚ±¾»ú¹¹ÓÐЧµÄ IP µØÖ·£¨×¨ÓõØÖ·£©¡£ -????????????ï“ +ÓÐÈý¸öרÓõØÖ·¿é£º 1. 10.0.0.0 \~ 10.255.255.255 2. 172.16.0.0 \~ 172.31.255.255 3. 192.168.0.0 \~ 192.168.255.255 -VPN ??¨´???????????????????????????????????‰^?????????????????????????????????????????????????????????????????????§à??????????????? +VPN ʹÓù«ÓõĻ¥ÁªÍø×÷Ϊ±¾»ú¹¹¸÷רÓÃÍøÖ®¼äµÄͨÐÅÔØÌ塣רÓÃÖ¸»ú¹¹ÄÚµÄÖ÷»úÖ»Óë±¾»ú¹¹Ä򵀮äËüÖ÷»úͨÐÅ£»ÐéÄâÖ¸¡°ºÃÏñÊÇ¡±£¬¶øÊµ¼ÊÉϲ¢²»ÊÇ£¬ËüÓо­¹ý¹«ÓõĻ¥ÁªÍø¡£ -????§µ????? A ?? B ????????????????????????? A ?????? X ???????????? B ?????? Y ????IP ????????????? 10.1.0.1????????? 10.2.0.3?????????????????????????¡¤???? R1??R1 ???????????§Þ????????????????????????????????¡¤???? R1 ??????? 125.1.2.3?????????¡¤???? R2 ??????? 194.4.5.6??¡¤???? R2 ???????????????????§ß???????????????????????????? 10.2.0.3????????? Y?? +ÏÂͼÖУ¬³¡Ëù A ºÍ B µÄͨÐŲ¿¾­¹ý»¥ÁªÍø£¬Èç¹û³¡Ëù A µÄÖ÷»ú X ÒªºÍÁíÒ»¸ö³¡Ëù B µÄÖ÷»ú Y ͨÐÅ£¬IP Êý¾Ý±¨µÄÔ´µØÖ·ÊÇ 10.1.0.1£¬Ä¿µÄµØÖ·ÊÇ 10.2.0.3¡£Êý¾Ý±¨ÏÈ·¢Ë͵½Ó뻥ÁªÍøÏàÁ¬µÄ·ÓÉÆ÷ R1£¬R1 ¶ÔÄÚ²¿Êý¾Ý½øÐмÓÃÜ£¬È»ºóÖØÐ¼ÓÉÏÊý¾Ý±¨µÄÊײ¿£¬Ô´µØÖ·ÊÇ·ÓÉÆ÷ R1 µÄÈ«ÇòµØÖ· 125.1.2.3£¬Ä¿µÄµØÖ·ÊÇ·ÓÉÆ÷ R2 µÄÈ«ÇòµØÖ· 194.4.5.6¡£Â·ÓÉÆ÷ R2 ÊÕµ½Êý¾Ý±¨ºó½«Êý¾Ý²¿·Ö½øÐнâÃÜ£¬»Ö¸´Ô­À´µÄÊý¾Ý±¨£¬´ËʱĿµÄµØÖ·Îª 10.2.0.3£¬¾Í½»¸¶¸ø Y¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/bf4ed077-d481-4db7-9e7a-85d841a5a8c3.jpg) -## ????????? NAT +## ÍøÂçµØÖ·×ª»» NAT -???????????????????? IP ????????????????????????????????? NAT ???????? IP ??????? IP?? +רÓÃÍøÄÚ²¿µÄÖ÷»úʹÓñ¾µØ IP µØÖ·ÓÖÏëºÍ»¥ÁªÍøÉϵÄÖ÷»úͨÐÅʱ£¬¿ÉÒÔʹÓà NAT À´½«±¾µØ IP ת»»ÎªÈ«Çò IP¡£ -???????NAT ?????? IP ????? IP ?????????????????? n ????? IP ???????????????????????? n ?????????????????????§¹????????? IP ????????????? NAT ???????????????????????????????????????????????????????????? IP ???????????? NAT ?????????????????? NAPT?? +ÔÚÒÔǰ£¬NAT ½«±¾µØ IP ºÍÈ«Çò IP Ò»Ò»¶ÔÓ¦£¬ÕâÖÖ·½Ê½ÏÂÓµÓÐ n ¸öÈ«Çò IP µØÖ·µÄרÓÃÍøÄÚ×î¶àÖ»¿ÉÒÔͬʱÓÐ n ̨Ö÷»ú½ÓÈ뻥ÁªÍø¡£ÎªÁ˸üÓÐЧµØÀûÓÃÈ«Çò IP µØÖ·£¬ÏÖÔÚ³£ÓÃµÄ NAT ת»»±í°ÑÔËÊä²ãµÄ¶Ë¿ÚºÅÒ²ÓÃÉÏÁË£¬ÕâÑù¿ÉÒÔʹµÃ¶à¸öרÓÃÍøÄÚ²¿µÄÖ÷»ú¹²ÓÃÒ»¸öÈ«Çò IP µØÖ·¡£Ê¹ÓÃ¶Ë¿ÚºÅµÄ NAT Ò²½Ð×öÍøÂçµØÖ·Óë¶Ë¿Úת»» NAPT¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/0f31bc7a-d60b-48a6-8e3f-597708369e52.png) -# ?????? ?????* +# µÚÎåÕ ÔËÊä²ã* -??????????ú€??????????????????????????????????????????§Ö????? +ÍøÂç²ãÖ»°Ñ·Ö×é·¢Ë͵½Ä¿µÄÖ÷»ú£¬µ«ÊÇÕæÕýͨÐŵIJ¢²»ÊÇÖ÷»ú¶øÊÇÖ÷»úÖеĽø³Ì¡£ -??????????????????????????????????????????????????????????????¨®???????????????????????????????????????????????? +ÔËÊä²ãÌṩÁËÓ¦Óýø³Ì¼äµÄÂß¼­Í¨ÐÅ¡£ÔËÊä²ãÏò¸ß²ãÓû§ÆÁ±ÎÁËÏÂÃæÍøÂç²ãµÄºËÐÄϸ½Ú£¬Ê¹Ó¦ÓóÌÐò¿´¼ûµÄºÃÏñÔÚÁ½¸öÔËÊä²ãʵÌåÖ®¼äÓÐÒ»Ìõ¶Ëµ½¶ËµÄÂß¼­Í¨ÐÅÐŵÀ¡£ -## UDP ?? TCP ????? +## UDP ºÍ TCP µÄÌØµã -????????§¿?? UDP??User Datagram Protocol?? -???????§¿?? TCP??Transmission Control Protocol?? +Óû§Êý¾Ý°üЭÒé UDP£¨User Datagram Protocol£© +´«Êä¿ØÖÆÐ­Òé TCP£¨Transmission Control Protocol£© -UDP ???????????????????????????????????????????????¨®????????????????????????????? UDP ??????? +UDP ÊÇÎÞÁ¬½ÓµÄ£¬¾¡×î´ó¿ÉÄܽ»¸¶£¬Ã»ÓÐÓµÈû¿ØÖÆ£¬ÃæÏò±¨ÎÄ£¨¶ÔÓÚÓ¦ÓóÌÐò´«ÏÂÀ´µÄ±¨ÎIJ»ºÏ²¢Ò²²»²ð·Ö£¬Ö»ÊÇÌí¼Ó UDP Êײ¿£©¡£ -TCP ???????????????????????????????????????????????????????????????????¨°?????????????????????????????????§³?????????ï‚ +TCP ÊÇÃæÏòÁ¬½ÓµÄ£¬Ìṩ¿É¿¿½»¸¶£¬ÓÐÁ÷Á¿¿ØÖÆ£¬ÓµÈû¿ØÖÆ£¬Ìṩȫ˫¹¤Í¨ÐÅ£¬ÃæÏò×Ö½ÚÁ÷£¨°ÑÓ¦Óò㴫ÏÂÀ´µÄ±¨ÎÄ¿´³É×Ö½ÚÁ÷£¬°Ñ×Ö½ÚÁ÷×éÖ¯³É´óС²»µÈµÄÊý¾Ý¿é£© -## UDP ?????? +## UDP Êײ¿¸ñʽ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/bd6c05f3-02ee-4c8a-b374-40c87154a898.jpg) -????????? 8 ????????????????????????????????12 ????¦Á???????????????????????? +Êײ¿×Ö¶ÎÖ»ÓÐ 8 ¸ö×Ö½Ú£¬°üÀ¨Ô´¶Ë¿Ú¡¢Ä¿µÄ¶Ë¿Ú¡¢³¤¶È¡¢¼ìÑéºÍ¡£12 ×Ö½ÚµÄαÊײ¿ÊÇΪÁ˼ÆËã¼ìÑéºÍ¶øÁÙʱÌí¼ÓµÄ¡£ -## TCP ?????? +## TCP Êײ¿¸ñʽ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/21a00b02-c0a6-4bcd-9af0-5ec6bb66e34c.jpg) -**???** ???????????????§Ò??????????? 301????????????????? 301?????§Á???????????? 100 ????????????????¦Å?????? 401?? +**ÐòºÅ** £ºÓÃÓÚ¶Ô×Ö½ÚÁ÷½øÐбàºÅ£¬ÀýÈçÐòºÅΪ 301£¬±íʾµÚÒ»¸ö×ֽڵıàºÅΪ 301£¬Èç¹ûЯ´øµÄÊý¾Ý³¤¶ÈΪ 100 ×Ö½Ú£¬ÄÇôÏÂÒ»¸ö±¨ÎĶεÄÐòºÅӦΪ 401¡£ -**????** ????????????????????¦Å????????? B ?????? A ???????????????¦²????? 501??§Á???????????? 200 ??????? B ?????????????¦Å????? 701??B ????? A ????????????????? 701?? +**È·ÈϺÅ** £ºÆÚÍûÊÕµ½µÄÏÂÒ»¸ö±¨ÎĶεÄÐòºÅ¡£ÀýÈç B ÕýÈ·ÊÕµ½ A ·¢ËÍÀ´µÄÒ»¸ö±¨ÎĶΣ¬ÐòºÅΪ 501£¬Ð¯´øµÄÊý¾Ý³¤¶ÈΪ 200 ×Ö½Ú£¬Òò´Ë B ÆÚÍûÏÂÒ»¸ö±¨ÎĶεÄÐòºÅΪ 701£¬B ·¢Ë͸ø A µÄÈ·Èϱ¨ÎĶÎÖÐÈ·ÈϺžÍΪ 701¡£ -**???????** ????????????????????????????????????????????????????? +**Êý¾ÝÆ«ÒÆ** £ºÖ¸µÄÊÇÊý¾Ý²¿·Ö¾àÀ뱨ÎÄ¶ÎÆðʼ´¦µÄÆ«ÒÆÁ¿£¬Êµ¼ÊÉÏÖ¸µÄÊÇÊײ¿µÄ³¤¶È¡£ -**??? ACK** ???? ACK=1 ??????????§¹????????§¹??TCP ?ÕÇ????????????????§Õ???????¦Æ?????? ACK ?? 1?? +**È·ÈÏ ACK** £ºµ± ACK=1 ʱȷÈϺÅ×Ö¶ÎÓÐЧ£¬·ñÔòÎÞЧ¡£TCP ¹æ¶¨£¬ÔÚÁ¬½Ó½¨Á¢ºóËùÓд«Ë͵ı¨ÎĶζ¼±ØÐë°Ñ ACK Öà 1¡£ -**??? SYN** ????????????????????????? SYN=1??ACK=0 ?????????????????????¦±??????????????????????????? SYN=1??ACK=1?? +**ͬ²½ SYN** £ºÔÚÁ¬½Ó½¨Á¢Ê±ÓÃÀ´Í¬²½ÐòºÅ¡£µ± SYN=1£¬ACK=0 ʱ±íʾÕâÊÇÒ»¸öÁ¬½ÓÇëÇó±¨ÎĶΡ£Èô¶Ô·½Í¬Ò⽨Á¢Á¬½Ó£¬ÔòÏìÓ¦±¨ÎÄÖÐ SYN=1£¬ACK=1¡£ -**??? FIN** ??????????????????? FIN=1 ???????????¦Å????????????????????????????????????? +**ÖÕÖ¹ FIN** £ºÓÃÀ´ÊÍ·ÅÒ»¸öÁ¬½Ó£¬µ± FIN=1 ʱ£¬±íʾ´Ë±¨ÎĶεķ¢ËÍ·½µÄÊý¾ÝÒÑ·¢ËÍÍê±Ï£¬²¢ÒªÇóÊÍ·ÅÔËÊäÁ¬½Ó¡£ -**????** ????????????????¡Â?????????????????????????????????????????????????????????????????? +**´°¿Ú** £º´°¿ÚÖµ×÷Ϊ½ÓÊÕ·½È÷¢ËÍ·½ÉèÖÃÆä·¢ËÍ´°¿ÚµÄÒÀ¾Ý¡£Ö®ËùÒÔÒªÓÐÕâ¸öÏÞÖÆ£¬ÊÇÒòΪ½ÓÊÕ·½µÄÊý¾Ý»º´æ¿Õ¼äÊÇÓÐÏ޵ġ£ -## TCP ?????????? +## TCP µÄÈý´ÎÎÕÊÖ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/086871db-5871-460f-97b7-126cd738bb0e.jpg) -???? A ???????B ?????????? +¼ÙÉè A Ϊ¿Í»§¶Ë£¬B Ϊ·þÎñÆ÷¶Ë¡£ -1. ???? B ???? LISTEN???????????????????????????? -2. A ?? B ??????????????¦²?SYN=1??ACK=0???????????????? x?? -3. B ?????????????¦²?????????????????? A ??????????????¦²?SYN=1??ACK=1??????? x+1??????????????????? y?? -4. A ??? B ????????????¦Ê????? B ????????????? y+1?????? x+1?? -5. B ??? A ??????????????? +1. Ê×ÏÈ B ´¦ÓÚ LISTEN£¨¼àÌý£©×´Ì¬£¬µÈ´ý¿Í»§µÄÁ¬½ÓÇëÇó¡£ +2. A Ïò B ·¢ËÍÁ¬½ÓÇëÇó±¨ÎĶΣ¬SYN=1£¬ACK=0£¬Ñ¡ÔñÒ»¸ö³õʼµÄÐòºÅ x¡£ +3. B ÊÕµ½Á¬½ÓÇëÇó±¨ÎĶΣ¬Èç¹ûͬÒ⽨Á¢Á¬½Ó£¬ÔòÏò A ·¢ËÍÁ¬½ÓÈ·Èϱ¨ÎĶΣ¬SYN=1£¬ACK=1£¬È·ÈϺÅΪ x+1£¬Í¬Ê±Ò²Ñ¡ÔñÒ»¸ö³õʼµÄÐòºÅ y¡£ +4. A ÊÕµ½ B µÄÁ¬½ÓÈ·Èϱ¨ÎĶκ󣬻¹ÒªÏò B ·¢³öÈ·ÈÏ£¬È·ÈϺÅΪ y+1£¬ÐòºÅΪ x+1¡£ +5. B ÊÕµ½ A µÄÈ·ÈϺó£¬Á¬½Ó½¨Á¢¡£ -## TCP ????¦Ë??? +## TCP µÄËĴλÓÊÖ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/78f65456-666b-4044-b4ee-f7692dbbc0d3.jpg) -??????????????????????????????????????????????????? ACK????? ACK ????????????? 1?? +ÒÔÏÂÃèÊö²»ÌÖÂÛÐòºÅºÍÈ·ÈϺţ¬ÒòΪÐòºÅºÍÈ·ÈϺŵĹæÔò±È½Ï¼òµ¥¡£²¢ÇÒ²»ÌÖÂÛ ACK£¬ÒòΪ ACK ÔÚÁ¬½Ó½¨Á¢Ö®ºó¶¼Îª 1¡£ -1. A ??????????????¦²?FIN=1?? -2. B ?????????????? TCP ???????????B ???? A ??????????? A ?????? B ????????? -3. ?? B ????????????????????????????????¦²?FIN=1?? -4. A ????????????????????? +1. A ·¢ËÍÁ¬½ÓÊͷű¨ÎĶΣ¬FIN=1£» +2. B ÊÕµ½Ö®ºó·¢³öÈ·ÈÏ£¬´Ëʱ TCP ÊôÓÚ°ë¹Ø±Õ״̬£¬B ÄÜÏò A ·¢ËÍÊý¾Ýµ«ÊÇ A ²»ÄÜÏò B ·¢ËÍÊý¾Ý£» +3. µ± B Òª²»ÔÙÐèÒªÁ¬½Óʱ£¬·¢ËÍÁ¬½ÓÊÍ·ÅÇëÇó±¨ÎĶΣ¬FIN=1£» +4. A ÊÕµ½ºó·¢³öÈ·ÈÏ£¬´ËʱÁ¬½ÓÊÍ·Å¡£ **TIME_WAIT** -?????????????????? FIN ???????????????????????????? CLOSED ?????????????????????????????????????????????? +¿Í»§¶Ë½ÓÊÕµ½·þÎñÆ÷¶ËµÄ FIN ±¨Îĺó½øÈë´Ë״̬£¬´Ëʱ²¢²»ÊÇÖ±½Ó½øÈë CLOSED ״̬£¬»¹ÐèÒªµÈ´ýÒ»¸öʱ¼ä¼ÆÊ±Æ÷ÉèÖõÄʱ¼ä¡£Õâô×öÓÐÁ½¸öÀíÓÉ£º -1. ?????????????????????????? B ???? A ??????????????¦²??????????¡¤????????????????¦²?A ???????????????????????????????? -2. ??????????????§¹????????????¦±???????????????¦Ã??????????????????????????? +1. È·±£×îºóÒ»¸öÈ·Èϱ¨ÎĶÎÄܹ»µ½´ï¡£Èç¹û B ûÊÕµ½ A ·¢ËÍÀ´µÄÈ·Èϱ¨ÎĶΣ¬ÄÇô¾Í»áÖØÐ·¢ËÍÁ¬½ÓÊÍ·ÅÇëÇó±¨ÎĶΣ¬A µÈ´ýÒ»¶Îʱ¼ä¾ÍÊÇΪÁË´¦ÀíÕâÖÖÇé¿öµÄ·¢Éú¡£ +2. Á¬½Ó¹ý³Ì¿ÉÄÜ¡°ÒÑʧЧµÄÁ¬½ÓÇëÇó±¨ÎĶΡ±£¬ÎªÁË·ÀÖ¹ÕâÖÖ±¨ÎĶγöÏÖÔÚ±¾´ÎÁ¬½ÓÖ®Í⣬ÐèÒªµÈ´ýÒ»¶Îʱ¼ä¡£ -## TCP ???????? +## TCP »¬¶¯´°¿Ú ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/223fc26e-2fd6-484c-bcb7-443cac134f15.jpg) -???????????????????????????????????????????????????????????????? TCP ??????§Ö??????¦È????????????????§³?????????????????????????????????????§³?? +´°¿ÚÊÇ»º´æµÄÒ»²¿·Ö£¬ÓÃÀ´ÔÝʱ´æ·Å×Ö½ÚÁ÷¡£·¢ËÍ·½ºÍ½ÓÊÕ·½¸÷ÓÐÒ»¸ö´°¿Ú£¬½ÓÊÕ·½Í¨¹ý TCP ±¨ÎĶÎÖеĴ°¿Ú×ֶθæËß·¢ËÍ·½×Ô¼ºµÄ´°¿Ú´óС£¬·¢ËÍ·½¸ù¾ÝÕâ¸öÖµºÍÆäËüÐÅÏ¢ÉèÖÃ×Ô¼ºµÄ´°¿Ú´óС¡£ -??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? +·¢ËÍ´°¿ÚÄÚµÄ×Ö½Ú¶¼ÔÊÐí±»·¢ËÍ£¬½ÓÊÕ´°¿ÚÄÚµÄ×Ö½Ú¶¼ÔÊÐí±»½ÓÊÕ¡£Èç¹û·¢ËÍ´°¿Ú×󲿵Ä×Ö½ÚÒѾ­·¢ËͲ¢ÇÒÊÕµ½ÁËÈ·ÈÏ£¬ÄÇô¾Í½«·¢ËÍ´°¿ÚÏòÓÒ»¬¶¯Ò»¶¨¾àÀ룬ֱµ½×󲿵ÚÒ»¸ö×Ö½Ú²»ÊÇÒÑ·¢ËͲ¢ÇÒÒÑÈ·ÈϵÄ״̬£»½ÓÊÕ´°¿ÚµÄ»¬¶¯ÀàËÆ£¬½ÓÊÕ´°¿Ú×ó²¿×Ö½ÚÒѾ­·¢ËÍÈ·Èϲ¢½»¸¶Ö÷»ú£¬¾ÍÏòÓÒ»¬¶¯½ÓÊÕ´°¿Ú¡£ -???????????????????????????????????????????????????????????? {31, 32, 34, 35}?????? {31, 32} ??????? {34, 35} ??????????????? 32 ????????????????????????????????????????????????????????????? +½ÓÊÕ´°¿ÚÖ»»á¶Ô´°¿ÚÄÚ×îºóÒ»¸ö°´Ðòµ½´ïµÄ×Ö½Ú½øÐÐÈ·ÈÏ£¬ÀýÈç½ÓÊÕ´°¿ÚÒѾ­ÊÕµ½µÄ×Ö½ÚΪ {31, 32, 34, 35}£¬ÆäÖÐ {31, 32} °´Ðòµ½´ï£¬¶ø {34, 35} ¾Í²»ÊÇ£¬Òò´ËÖ»¶Ô×Ö½Ú 32 ½øÐÐÈ·ÈÏ¡£·¢ËÍ·½µÃµ½Ò»¸ö×Ö½ÚµÄÈ·ÈÏÖ®ºó£¬¾ÍÖªµÀÕâ¸ö×Ö½Ú֮ǰµÄËùÓÐ×Ö½Ú¶¼ÒѾ­±»½ÓÊÕ¡£ -## TCP ??????? +## TCP ¿É¿¿´«Êä -TCP ??¨®????????????????????????????????????????????????????????????????????¦±? +TCP ʹÓó¬Ê±ÖØ´«À´ÊµÏÖ¿É¿¿´«Ê䣺Èç¹ûÒ»¸öÒѾ­·¢Ë͵ı¨ÎĶÎÔÚ³¬Ê±Ê±¼äÄÚûÓÐÊÕµ½È·ÈÏ£¬ÄÇô¾ÍÖØ´«Õâ¸ö±¨ÎĶΡ£ -???????¦Ä????????????????????????????????? RTT??????????????? RTTs ????????? +Ò»¸ö±¨ÎĶδӷ¢Ë͵½½ÓÊÕµ½È·ÈÏËù¾­¹ýµÄʱ¼ä³ÆÎªÍù·µÊ±¼ä RTT£¬¼ÓȨƽ¾ùÍù·µÊ±¼ä RTTs ¼ÆËãÈçÏ£º ![](http://latex.codecogs.com/gif.latex?\\\\RTTs=(1-a)*(RTTs)+a*RTT) -??????????????? RTO ???????? RRTs??TCP ????????????????? +¿ÉÒÔÖªµÀ£¬³¬Ê±Ê±¼ä RTO Ó¦¸ÃÂÔ´óÓÚ RRTs£¬TCP ʹÓõij¬Ê±Ê±¼ä¼ÆËãÈçÏ£º ![](http://latex.codecogs.com/gif.latex?\\\\RTO=RTTs+4*RTT_d) -???? RTTd ??????????? RRT ?? RRTs ?§Û?? +ÆäÖÐ RTTd Ϊƫ²î£¬ËüÓëÐ嵀 RRT ºÍ RRTs Óйء£ -## TCP ???????? +## TCP Á÷Á¿¿ØÖÆ -????????????????????????????????????????¨¹?????? +Á÷Á¿¿ØÖÆÊÇΪÁË¿ØÖÆ·¢ËÍ·½·¢ËÍËÙÂÊ£¬±£Ö¤½ÓÊÕ·½À´µÃ¼°½ÓÊÕ¡£ -?????????????????§Ö??????¦Ï????????????????????§³????????????????????????ÁL???????????? 0??????????????????? +½ÓÊÕ·½·¢Ë͵ÄÈ·Èϱ¨ÎÄÖеĴ°¿Ú×ֶοÉÒÔÓÃÀ´¿ØÖÆ·¢ËÍ·½´°¿Ú´óС£¬´Ó¶øÓ°Ïì·¢ËÍ·½µÄ·¢ËÍËÙÂÊ¡£ÀýÈ罫´°¿Ú×Ö¶ÎÉèÖÃΪ 0£¬Ôò·¢ËÍ·½²»ÄÜ·¢ËÍÊý¾Ý¡£ -## TCP ??????? +## TCP ÓµÈû¿ØÖÆ -??????????????????ýq????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????¨¹??????????????????????????????????????? +Èç¹ûÍøÂç³öÏÖÓµÈû£¬·Ö×齫»á¶ªÊ§£¬´Ëʱ·¢ËÍ·½»á¼ÌÐøÖØ´«£¬´Ó¶øµ¼ÖÂÍøÂçÓµÈû³Ì¶È¸ü¸ß¡£Òò´Ëµ±³öÏÖÓµÈûʱ£¬Ó¦µ±¿ØÖÆ·¢ËÍ·½µÄËÙÂÊ¡£ÕâÒ»µãºÍÁ÷Á¿¿ØÖƺÜÏñ£¬µ«Êdzö·¢µã²»Í¬¡£Á÷Á¿¿ØÖÆÊÇΪÁËÈýÓÊÕ·½ÄÜÀ´µÃ¼°½ÓÊÜ£¬¶øÓµÈû¿ØÖÆÊÇΪÁ˽µµÍÕû¸öÍøÂçµÄÓµÈû³Ì¶È¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/a69af9bb-b5ad-4896-862d-697e5ee4feb1.png) -TCP ?????????????????????????????????????????????????????????????????????????????????cwnd???????????????????????????????????????????????????????????????????????????????????????????? +TCP Ö÷Ҫͨ¹ýËÄÖÖËã·¨À´½øÐÐÓµÈû¿ØÖÆ£ºÂý¿ªÊ¼¡¢ÓµÈû±ÜÃâ¡¢¿ìÖØ´«¡¢¿ì»Ö¸´¡£·¢ËÍ·½ÐèҪά»¤ÓÐÒ»¸ö½Ð×öÓµÈû´°¿Ú£¨cwnd£©µÄ״̬±äÁ¿¡£×¢ÒâÓµÈû´°¿ÚÓë·¢ËÍ·½´°¿ÚµÄÇø±ð£¬ÓµÈû´°¿ÚÖ»ÊÇÒ»¸ö״̬±äÁ¿£¬Êµ¼Ê¾ö¶¨·¢ËÍ·½ÄÜ·¢ËͶàÉÙÊý¾ÝµÄÊÇ·¢ËÍ·½´°¿Ú¡£ -???????????????????Ñs +ΪÁ˱ãÓÚÌÖÂÛ£¬×öÈçϼÙÉ裺 -1. ?????????????????—¨????????????????? -2. ??? TCP ?????????????????????·¡????§³??¦Ë?????¦±? +1. ½ÓÊÕ·½ÓÐ×ã¹»´óµÄ½ÓÊÕ»º´æ£¬Òò´Ë²»»á·¢ÉúÁ÷Á¿¿ØÖÆ£» +2. ËäÈ» TCP µÄ´°¿Ú»ùÓÚ×Ö½Ú£¬µ«ÊÇÕâÀïÉè´°¿ÚµÄ´óСµ¥Î»Îª±¨ÎĶΡ£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/346244ff-98c1-4f12-9a87-d0832e8c04cf.jpg) -### ?????????????? +### Âý¿ªÊ¼ÓëÓµÈû±ÜÃâ -???????????????????? cwnd=1????????????? 1 ??????¦²??????????? cwnd ?????????????????????????????2??4??8 ... +·¢Ë͵Ä×î³õÖ´ÐÐÂý¿ªÊ¼£¬Áî cwnd=1£¬·¢ËÍ·½Ö»ÄÜ·¢ËÍ 1 ¸ö±¨ÎĶΣ»µ±ÊÕµ½È·ÈϺ󣬽« cwnd ¼Ó±¶£¬Òò´ËÖ®ºó·¢ËÍ·½Äܹ»·¢Ë͵ı¨ÎĶÎΪ£º2¡¢4¡¢8 ... -?????????????¦Æ??? cwnd ????????????? cwnd ????????????????¡Â????????????????????????????????????????????????????????? ssthresh???? cwnd >= ssthresh ??????????????????????? cwnd ?? 1?? +×¢Òâµ½Âý¿ªÊ¼Ã¿¸öÂִζ¼½« cwnd ¼Ó±¶£¬ÕâÑù»áÈà cwnd Ôö³¤Ëٶȷdz£¿ì£¬´Ó¶øÊ¹µÃ·¢ËÍ·½·¢Ë͵ÄËÙ¶ÈÔö³¤Ëٶȹý¿ì£¬ÍøÂçÓµÈûµÄ¿ÉÄÜÒ²¾Í¸ü¸ß¡£ÉèÖÃÒ»¸öÂý¿ªÊ¼ÃÅÏÞ ssthresh£¬µ± cwnd >= ssthresh ʱ£¬½øÈëÓµÈû±ÜÃ⣬ÿ¸öÂÖ´ÎÖ»½« cwnd ¼Ó 1¡£ -????????????????? ssthresh = cwnd / 2??????????????????? +Èç¹û³öÏÖÁ˳¬Ê±£¬ÔòÁî ssthresh = cwnd / 2£¬È»ºóÖØÐÂÖ´ÐÐÂý¿ªÊ¼¡£ -### ?????????? +### ¿ìÖØ´«Óë¿ì»Ö¸´ -?????????????¦Í????????¦Æ???¡Â???????????????¦Å????????????????? M1 ?? M2???????? M4?????????? M2 ?????? +ÔÚ½ÓÊÕ·½£¬ÒªÇóÿ´Î½ÓÊÕµ½±¨ÎĶζ¼Ó¦¸Ã·¢ËͶÔÒÑÊÕµ½ÓÐÐò±¨ÎĶεÄÈ·ÈÏ£¬ÀýÈçÒѾ­½ÓÊÕµ½ M1 ºÍ M2£¬´ËʱÊÕµ½ M4£¬Ó¦µ±·¢ËÍ¶Ô M2 µÄÈ·ÈÏ¡£ -????????????????????????????????????????????¦Æ??????????????? M2 ???? M3 ??????????§á??????????????????????¦±? +ÔÚ·¢ËÍ·½£¬Èç¹ûÊÕµ½Èý¸öÖØ¸´È·ÈÏ£¬ÄÇô¿ÉÒÔÈ·ÈÏÏÂÒ»¸ö±¨ÎĶζªÊ§£¬ÀýÈçÊÕµ½Èý¸ö M2 £¬Ôò M3 ¶ªÊ§¡£´ËʱִÐпìÖØ´«£¬Á¢¼´ÖØ´«ÏÂÒ»¸ö±¨ÎĶΡ£ -???????????????????????¦²?????????????????????§á??????? ssthresh = cwnd / 2 ??cwnd = ssthresh????????????????????? +ÔÚÕâÖÖÇé¿öÏ£¬Ö»ÊǶªÊ§¸ö±ð±¨ÎĶΣ¬¶ø²»ÊÇÍøÂçÓµÈû£¬Òò´ËÖ´Ðпì»Ö¸´£¬Áî ssthresh = cwnd / 2 £¬cwnd = ssthresh£¬×¢Òâµ½´Ëʱֱ½Ó½øÈëÓµÈû±ÜÃâ¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/b18d679b-c8e2-4564-88ee-7600090e46da.jpg) -# ?????? ??¨°?* +# µÚÁùÕ ӦÓòã* -## ?????? DNS +## ÓòÃûϵͳ DNS -????????????? IP ????? +°ÑÖ÷»úÃû½âÎöΪ IP µØÖ·¡£ -????????????? +±»Éè¼Æ³É·Ö²¼Ê½ÏµÍ³¡£ -### 1. ??¦Í? +### 1. ²ã´Î½á¹¹ -?????????????¦É????????????????????????????????????????????????????????????????????????????????? +Ò»¸öÓòÃûÓɶà¸ö²ã´Î¹¹³É£¬´ÓÉϲ㵽ϲã·Ö±ðΪ¶¥¼¶ÓòÃû¡¢¶þ¼¶ÓòÃû¡¢Èý¼¶ÓòÃûÒÔ¼°Ëļ¶ÓòÃû¡£ËùÓÐÓòÃû¿ÉÒÔ»­³ÉÒ»¿ÅÓòÃûÊ÷¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/c2117f61-1177-4768-bf33-cf4f950d911c.png) ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/a4b162e5-db2a-4a27-b213-1fe481c5a06a.png) -???????????????????????? +ÓòÃû·þÎñÆ÷¿ÉÒÔ·ÖΪÒÔÏÂËÄÀࣺ -**(1) ????????????**???????????????? +**(1) ¸ùÓòÃû·þÎñÆ÷**£º½âÎö¶¥¼¶ÓòÃû£» -**(2) ??????????????**???????????????? +**(2) ¶¥¼¶ÓòÃû·þÎñÆ÷**£º½âÎö¶þ¼¶ÓòÃû£» -**(3) ?????????????**????????????????? +**(3) ȨÏÞÓòÃû·þÎñÆ÷**£º½âÎöÇøÄÚµÄÓòÃû£» -?????????????????????????§Ý?????????? b ???? abc.com ?§Ý?????????????abc.com ?? y.abc.com +ÇøºÍÓòµÄ¸ÅÄͬ£¬¿ÉÒÔÔÚÒ»¸öÓòÖл®·Ö¶à¸öÇø¡£Í¼ b ÔÚÓò abc.com Öл®·ÖÁËÁ½¸öÇø£ºabc.com ºÍ y.abc.com ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/fc0c6b2d-68c7-4de8-aaaa-97355a4f0472.jpg) -?????????????????????????? +Òò´Ë¾ÍÐèÒªÁ½¸öȨÏÞÓòÃû·þÎñÆ÷£º ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/8b335d94-c1ca-42e1-ad48-bb179d28a4f1.jpg) -**(4) ??????????????**????????????????????????????????????????µµ +**(4) ±¾µØÓòÃû·þÎñÆ÷**£ºÒ²³ÆÎªÄ¬ÈÏÓòÃû·þÎñÆ÷¡£¿ÉÒÔÔÚÆäÖÐÅäÖøßËÙ»º´æ¡£ -### 2. ???????? +### 2. ½âÎö¹ý³Ì -??????????????????????????????ï…????????????????????????????????????????????????????????? +Ö÷»úÏò±¾µØÓòÃû·þÎñÆ÷½âÎöµÄ¹ý³Ì²ÉÓõݹ飬¶ø±¾µØÓòÃû·þÎñÆ÷ÏòÆäËüÓòÃû·þÎñÆ÷½âÎö¿ÉÒÔʹÓõݹéºÍµü´úÁ½ÖÖ·½Ê½¡£ -????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? +µü´úµÄ·½Ê½Ï£¬±¾µØÓòÃû·þÎñÆ÷ÏòÒ»¸öÓòÃû·þÎñÆ÷½âÎöÇëÇó½âÎöÖ®ºó£¬½á¹û·µ»Øµ½±¾µØÓòÃû·þÎñÆ÷£¬È»ºó±¾µØÓòÃû·þÎñÆ÷¼ÌÐøÏòÆäËüÓòÃû·þÎñÆ÷ÇëÇó½âÎö£»¶øµÝ¹éµØ·½Ê½Ï£¬½á¹û²»ÊÇÖ±½Ó·µ»ØµÄ£¬¶øÊǼÌÐøÏòǰÇëÇó½âÎö£¬×îºóµÄ½á¹û²Å»á·µ»Ø¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/6bc61bb8-3b1c-4dc8-ac25-cef925ace0eb.jpg) -## ???????§¿?? FTP +## Îļþ´«ÊäЭÒé FTP -FTP ?????????? TCP????????????????????§Ö? TCP ????????????????????????????????????????????????????????????????????????????????????????????? 21???????????????? 20?? +FTP ÔÚÔËÊä²ãʹÓà TCP£¬²¢ÇÒÐèÒª½¨Á¢Á½¸ö²¢ÐÐµÄ TCP Á¬½Ó£º¿ØÖÆÁ¬½ÓºÍÊý¾ÝÁ¬½Ó¡£¿ØÖÆÁ¬½ÓÔÚÕû¸ö»á»°ÆÚ¼äÒ»Ö±±£³Ö´ò¿ª£¬¶øÊý¾ÝÁ¬½ÓÔÚÊý¾Ý´«ËÍÍê±ÏÖ®ºó¾Í¹Ø±Õ¡£¿ØÖÆÁ¬½ÓʹÓö˿ںŠ21£¬Êý¾ÝÁ¬½ÓʹÓö˿ںŠ20¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/58633775-8584-4a01-ad3f-eee4d9a466e1.jpg) -## ??????§¿?? TELNET +## Ô¶³ÌÖÕ¶ËЭÒé TELNET -TELNET ????????????????????????????????????????? +TELNET ÓÃÓڵǼµ½Ô¶³ÌÖ÷»úÉÏ£¬²¢ÇÒÔ¶³ÌÖ÷»úÉϵÄÊä³öÒ²»á·µ»Ø¡£ -TELNET ?????????????????????????????» ?????????????§Ù????‰^ +TELNET ¿ÉÒÔÊÊÓ¦Ðí¶à¼ÆËã»úºÍ²Ù×÷ϵͳµÄ²îÒ죬ÀýÈ粻ͬ²Ù×÷ϵͳϵͳµÄ»»Ðзû¶¨Òå¡£ -## ????? WWW +## ÍòÎ¬Íø WWW -?? HTTP ???? +¼û HTTP ±Ê¼Ç¡£ -## ???????§¿?? +## µç×ÓÓʼþЭÒé -??????????????????????????????????????????????????§¿?????§¿?î•???§Ù???§¿?ø@?? SMTP?????§¿?ø@?? POP3 ?? IMAP?? +Ò»¸öµç×ÓÓʼþϵͳÓÉÈý²¿·Ö×é³É£ºÓû§´úÀí¡¢Óʼþ·þÎñÆ÷ÒÔ¼°Óʼþ·¢ËÍЭÒéºÍ¶ÁȡЭÒé¡£ÆäÖз¢ËÍЭÒé³£Óà SMTP£¬¶ÁȡЭÒé³£Óà POP3 ºÍ IMAP¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/de1e46d2-748f-4da3-a29e-7de7bc840366.jpg) ### POP3 -POP3 ?????????????????????????????????????????? +POP3 µÄÌØµãÊÇÖ»ÒªÓû§´Ó·þÎñÆ÷É϶ÁÈ¡ÁËÓʼþ£¬¾Í°Ñ¸ÃÓʼþɾ³ý¡£ ### IMAP -IMAP §¿???§á???????????????????????????????????????????????????????????????????IMAP ?????????????????????????????????????????IMAP §¿???????????????????§³? +IMAP ЭÒéÖпͻ§¶ËºÍ·þÎñÆ÷ÉϵÄÓʼþ±£³Öͬ²½£¬Èç¹û²»È¥ÊÖ¶¯É¾³ýÓʼþ£¬ÄÇô·þÎñÆ÷ÉϵÄÓʼþÒ²²»»á±»É¾³ý¡£IMAP ÕâÖÖ×ö·¨¿ÉÒÔÈÃÓû§ËæÊ±ËæµØÈ¥·ÃÎÊ·þÎñÆ÷ÉϵÄÓʼþ¡£IMAP ЭÒéÒ²Ö§³Ö´´½¨×Ô¶¨ÒåµÄÎļþ¼Ð¡£ ### SMTP -SMTP ?????? ASCII ????????????????? MIME ?????????????????MIME ????§Ú????????? SMTP???????????????????????????? ASCII ????????? +SMTP Ö»ÄÜ·¢ËÍ ASCII Â룬¶ø»¥ÁªÍøÓʼþÀ©³ä MIME ¿ÉÒÔ·¢ËͶþ½øÖÆÎļþ¡£MIME ²¢Ã»Óи͝»òÕßÈ¡´ú SMTP£¬¶øÊÇÔö¼ÓÓʼþÖ÷ÌâµÄ½á¹¹£¬¶¨ÒåÁË·Ç ASCII ÂëµÄ±àÂë¹æÔò¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/ed5522bb-3a60-481c-8654-43e7195a48fe.png) -## ???????????§¿?? DHCP +## ¶¯Ì¬Ö÷»úÅäÖÃЭÒé DHCP -DHCP ??????�‡?????????????????????????????? IP ?????????? +DHCP ÌṩÁ˼´²å¼´ÓõÄÁ¬Íø·½Ê½£¬Óû§²»ÔÙÐèҪȥÊÖ¶¯ÅäÖà IP µØÖ·µÈÐÅÏ¢¡£ -DHCP ?????????????? IP ??????????????????????¡¤???? IP ????????????????? IP ????? +DHCP ÅäÖõÄÄÚÈݲ»½öÊÇ IP µØÖ·£¬»¹°üÀ¨×ÓÍøÑÚÂ롢ĬÈÏ·ÓÉÆ÷ IP µØÖ·¡¢ÓòÃû·þÎñÆ÷µÄ IP µØÖ·¡£ -??????????????? IP ??????????????? DHCP ??????????????????? 1???? 255.255.255.255:67???????????? 0???? 0.0.0.0:68????DHCP ??????????????????????? IP ???????????????????? DHCP ??????????????? +¹¤×÷·½Ê½ÈçÏ£ºÐèÒª IP µØÖ·µÄÖ÷»ú¹ã²¥·¢ËÍ DHCP ·¢ÏÖ±¨ÎÄ£¨½«Ä¿µÄµØÖ·ÖÃΪȫ 1£¬¼´ 255.255.255.255:67£¬Ô´µØÖ·ÉèÖÃΪȫ 0£¬¼´ 0.0.0.0:68£©£¬DHCP ·þÎñÆ÷ÊÕµ½·¢ÏÖ±¨ÎÄÖ®ºó£¬ÔòÔÚ IP µØÖ·³ØÖÐȡһ¸öµØÖ·£¬·¢ËÍ DHCP Ìṩ±¨Îĸø¸ÃÖ÷»ú¡£ -## ?????? P2P +## µã¶Ôµã´«Êä P2P -????????????????§Ø??????????????????????????????????ï…?????§³??????????????????????????????????????????ï…????????????????????????????§»????ï…?????????????????????§»????î• +°Ñij¸öÎļþ·Ö·¢µÄËùÓжԵȼ¯ºÏ³ÆÎªÒ»¸öºéÁ÷¡£ÎļþµÄÊý¾Ýµ¥Ôª³ÆÎªÎļþ¿é£¬ËüµÄ´óСÊǹ̶¨µÄ¡£Ò»¸öеĶԵȷ½¼ÓÈëij¸öºéÁ÷£¬Ò»¿ªÊ¼²¢Ã»ÓÐÎļþ¿é£¬µ«ÊÇÄܹ»´ÓÆäËü¶ÔµÈ·½ÖÐÖð½¥µØÏÂÔØµ½Ò»Ð©Îļþ¿é£¬Óë´Ëͬʱ£¬ËüҲΪ±ðµÄ¶ÔµÈ·½ÉÏ´«Ò»Ð©Îļþ¿é¡£ -?????????????????????????????????????????????????????????????????????????????????????????????§³????????¦Ê???????????????????? +ÿ¸öºéÁ÷¶¼ÓÐÒ»¸ö»ù´¡ÉèÊ©£¬³ÆÎª×·×ÙÆ÷¡£µ±Ò»¸ö¶ÔµÈ·½¼ÓÈëºéÁ÷ʱ£¬±ØÐëÏò×·×ÙÆ÷µÇ¼Ç£¬²¢ÖÜÆÚÐÔµØÍ¨Öª×·×ÙÆ÷ËüÈÔÔÚºéÁ÷ÖС£¿ÉÒÔÔÚÈκÎʱ¼ä¼ÓÈëºÍÍ˳öij¸öºéÁ÷¡£ -???????????????????????????????????????????????????????????????§»?????????????????§»????????????????????????????úY????????????§ß??§³? +Ò»¸öеĶԵȷ½¼ÓÈëºéÁ÷ʱ£¬×·×ÙÆ÷»áËæ»ú´ÓºéÁ÷ÖÐÑ¡ÔñÈô¸É¸ö¶ÔµÈ·½£¬²¢ÈÃжԵȷ½ÓëÕâЩ¶ÔµÈ·½½¨Á¢Á¬½Ó£¬°ÑÕâЩ¶ÔµÈ·½³ÆÎªÏàÁڶԵȷ½¡£½ÓÊպͷ¢ËÍÎļþ¿é¶¼ÊÇÔÚÏàÁڶԵȷ½ÖнøÐС£ -???????????????????????????????????????????????????ï…???????????????????????§Ú????????????????????????????î• +µ±Ò»¸ö¶ÔµÈ·½ÐèÒªºÜ¶àÎļþ¿éʱ£¬Í¨¹ýʹÓÃ×îÏ¡ÓÐÓÅÏȵIJßÂÔÀ´È¡µÃÎļþ¿é£¬Ò²¾ÍÊÇÒ»¸öÎļþ¿éÔÚÏàÁڶԵȷ½Öи±±¾×îÉÙ£¬ÄÇô¾ÍÓÅÏÈÇëÇóÕâ¸öÎļþ¿é¡£ -???????????????????????????????????????????????????????????????????? +µ±ºÜ¶à¶ÔµÈ·½Ïòͬһ¸ö¶ÔµÈ·½ÇëÇóÎļþ¿éʱ£¬¸Ã¶ÔµÈ·½ÓÅÏÈÑ¡ÔñÒÔ×î¸ßËÙÂÊÏòÆä·¢ËÍÎļþ¿éµÄ¶ÔµÈ·½¡£ -P2P ??????????????¦Ê?????§Ø?????????????????¡Â?????§Ò? DHT?????????????§Ö?????? IP ?????? +P2P ÊÇÒ»¸ö·Ö²¼Ê½ÏµÍ³£¬ÈκÎʱºò¶¼ÓжԵȷ½¼ÓÈë»òÕßÍ˳ö¡£Ê¹Ó÷ֲ¼Ê½É¢Áбí DHT£¬¿ÉÒÔ²éÕÒºéÁ÷ÖеÄ×ÊÔ´ºÍ IP µØÖ·Ó³Éä¡£ -## Web ?????????? +## Web Ò³ÃæÇëÇó¹ý³Ì -1. ?? DNS ?????????? DNS ??????????????????? +1. Ïò DNS ·þÎñÆ÷·¢ËÍ DNS ²éѯ±¨ÎÄÀ´½âÎöÓòÃû¡£ -2. ??????? HTTP ???????????? TCP ????? +2. ¿ªÊ¼½øÐÐ HTTP »á»°£¬ÐèÒªÏȽ¨Á¢ TCP Á¬½Ó¡£ -3. ???????????????§µ?HTTP ?????????? TCP ?§³?HTTP ???????????? 80??????????????????? 80 ?????????????????????????????????????????????????? TCP ???????????????????? +3. ÔÚÔËÊä²ãµÄ´«Êä¹ý³ÌÖУ¬HTTP ±¨Îı»·â×°½ø TCP ÖС£HTTP ÇëÇó±¨ÎÄʹÓö˿ںŠ80£¬ÒòΪ·þÎñÆ÷¼àÌýµÄÊÇ 80 ¶Ë¿Ú¡£Á¬½Ó½¨Á¢Ö®ºó£¬·þÎñÆ÷»áËæ»ú·ÖÅäÒ»¸ö¶Ë¿ÚºÅ¸øÌض¨µÄ¿Í»§¶Ë£¬Ö®ºóµÄ TCP ´«Êä¶¼ÊÇÓÃÕâ¸ö·ÖÅäµÄ¶Ë¿ÚºÅ¡£ -4. ???????????????§µ?TCP ????¦Ë?????? IP ?????§µ?IP ??????¡¤?????????????? +4. ÔÚÍøÂç²ãµÄ´«Êä¹ý³ÌÖУ¬TCP ±¨ÎĶλᱻ·â×°½ø IP ·Ö×éÖУ¬IP ·Ö×é¾­¹ý·ÓÉÑ¡Ôñ£¬×îºóµ½´ïÄ¿µÄµØ¡£ -5. ????¡¤??IP ?????????? MAC ??§µ?IP ????????? MAC ????????? ARP?? +5. ÔÚÁ´Â·²ã£¬IP ·Ö×é»á±»·â×°½ø MAC Ö¡ÖУ¬IP µØÖ·½âÎö³É MAC µØÖ·ÐèҪʹÓà ARP¡£ -6. ???????? HTTP ???????????????µµ +6. ¿Í»§¶Ë·¢ËÍ HTTP ÇëÇó±¨ÎÄ£¬ÇëÇó»ñÈ¡Ò³Ãæ¡£ -7. ?????????? HTTP ??????????????????????µµ +7. ·þÎñÆ÷·¢ËÍ HTTP ÏàÓ¦±¨ÎÄ£¬¿Í»§¶Ë´Ó¶ø»ñÈ¡¸ÃÒ³Ãæ¡£ -8. ?????????????????????????????????????µµ +8. ä¯ÀÀÆ÷µÃµ½Ò³ÃæÄÚÈÝÖ®ºó£¬½âÎö²¢äÖȾ£¬ÏòÓû§Õ¹Ê¾Ò³Ãæ¡£ -## ?????? +## ³£ÓÃ¶Ë¿Ú -| ??¨°?§¿?? | ???? | ?????§¿?? | +| Ó¦ÓòãЭÒé | ¶Ë¿ÚºÅ | ÔËÊä²ãЭÒé | | -- | -- | -- | | DNS | 53 | UDP | -| FTP | ???????? 21?????????? 20 | TCP | +| FTP | ¿ØÖÆÁ¬½Ó 21£¬Êý¾ÝÁ¬½Ó 20 | TCP | | TELNET | 23 | TCP | | DHCP | 67 68 | UDP | | HTTP | 80 | TCP | @@ -842,7 +842,7 @@ P2P ?????????????? | POP3 | 110 | TCP | | IMAP | 143 | TCP | -# ?¦Ï????? +# ²Î¿¼×ÊÁÏ -- ????????? ????? -- ??????????????? +- ¼ÆËã»úÍøÂç µÚÆß°æ +- ×Ô¶¥ÏòϼÆËã»úÍøÂç diff --git a/notes/设计模å¼�.md b/notes/设计模å¼�.md index 27aae434..c4e44538 100644 --- a/notes/设计模å¼�.md +++ b/notes/设计模å¼�.md @@ -1,74 +1,74 @@ -* [?? 1 ?? ?????????](#??-1-??-?????????) -* [?? 2 ?? ???????](#??-2-??-???????) -* [?? 3 ?? ?????](#??-3-??-?????) -* [?? 4 ?? ??????](#??-4-??-??????) - * [4.1 ?????](#41-?????) - * [4.2 ??????????](#42-??????????) - * [4.3 ???????](#43-???????) -* [?? 5 ?? ??????](#??-5-??-??????) -* [?? 6 ?? ??????](#??-6-??-??????) -* [?? 7 ?? ???????????????](#??-7-??-???????????????) - * [7.1 ????????](#71-????????) - * [7.2 ?????](#72-?????) -* [?? 8 ?? ??Ùã????](#??-8-??-??Ùã????) -* [?? 9 ?? ?????????????](#??-9-??-?????????????) - * [9.1 ????????](#91-????????) - * [9.2 Java ??????????](#92-java-??????????) - * [9.3 ?????](#93-?????) -* [?? 10 ?? ????](#??-10-??-????) -* [?? 11 ?? ?????? // TODO](#??-11-??-??????--todo) -* [?? 12 ?? ??????](#??-12-??-??????) +* [µÚ 1 Õ Éè¼ÆÄ£Ê½ÈëÃÅ](#µÚ-1-ÕÂ-Éè¼ÆÄ£Ê½ÈëÃÅ) +* [µÚ 2 Õ ¹Û²ìÕßģʽ](#µÚ-2-ÕÂ-¹Û²ìÕßģʽ) +* [µÚ 3 Õ װÊÎģʽ](#µÚ-3-ÕÂ-×°ÊÎģʽ) +* [µÚ 4 Õ ¹¤³§Ä£Ê½](#µÚ-4-ÕÂ-¹¤³§Ä£Ê½) + * [4.1 ¼òµ¥¹¤³§](#41-¼òµ¥¹¤³§) + * [4.2 ¹¤³§·½·¨Ä£Ê½](#42-¹¤³§·½·¨Ä£Ê½) + * [4.3 ³éÏ󹤳§Ä£Ê½](#43-³éÏ󹤳§Ä£Ê½) +* [µÚ 5 Õ µ¥¼þģʽ](#µÚ-5-ÕÂ-µ¥¼þģʽ) +* [µÚ 6 Õ ÃüÁîģʽ](#µÚ-6-ÕÂ-ÃüÁîģʽ) +* [µÚ 7 Õ ÊÊÅäÆ÷ģʽÓëÍâ¹Ûģʽ](#µÚ-7-ÕÂ-ÊÊÅäÆ÷ģʽÓëÍâ¹Ûģʽ) + * [7.1 ÊÊÅäÆ÷ģʽ](#71-ÊÊÅäÆ÷ģʽ) + * [7.2 Íâ¹Ûģʽ](#72-Íâ¹Ûģʽ) +* [µÚ 8 Õ ģ°å·½·¨Ä£Ê½](#µÚ-8-ÕÂ-Ä£°å·½·¨Ä£Ê½) +* [µÚ 9 Õ µü´úÆ÷ºÍ×éºÏģʽ](#µÚ-9-ÕÂ-µü´úÆ÷ºÍ×éºÏģʽ) + * [9.1 µü´úÆ÷ģʽ](#91-µü´úÆ÷ģʽ) + * [9.2 Java ÄÚÖõĵü´úÆ÷](#92-java-ÄÚÖõĵü´úÆ÷) + * [9.3 ×éºÏģʽ](#93-×éºÏģʽ) +* [µÚ 10 Õ ״̬ģʽ](#µÚ-10-ÕÂ-״̬ģʽ) +* [µÚ 11 Õ ´úÀíģʽ // TODO](#µÚ-11-ÕÂ-´úÀíģʽ--todo) +* [µÚ 12 Õ ¸´ºÏģʽ](#µÚ-12-ÕÂ-¸´ºÏģʽ) * [12.1 MVC](#121-mvc) - * [12.1.1 ??? MVC](#1211-???-mvc) - * [12.1.2 Web ?§Ö? MVC](#1212-web-?§Ö?-mvc) -* [?? 13 ?? ?????????](#??-13-??-?????????) -* [?? 14 ?? ?????? // TODO](#??-14-??-??????--todo) + * [12.1.1 ´«Í³ MVC](#1211-´«Í³-mvc) + * [12.1.2 Web ÖÐµÄ MVC](#1212-web-ÖеÄ-mvc) +* [µÚ 13 Õ ÓëÉè¼ÆÄ£Ê½Ïà´¦](#µÚ-13-ÕÂ-ÓëÉè¼ÆÄ£Ê½Ïà´¦) +* [µÚ 14 Õ ʣϵÄģʽ // TODO](#µÚ-14-ÕÂ-ʣϵÄģʽ--todo) -# ?? 1 ?? ????????? +# µÚ 1 Õ Éè¼ÆÄ£Ê½ÈëÃÅ -**1. ?????????** +**1. Éè¼ÆÄ£Ê½¸ÅÄî** -?????????????????????????????????§Ö?????????????????û`?¨¢? +Éè¼ÆÄ£Ê½²»ÊÇ´úÂ룬¶øÊǽâ¾öÎÊÌâµÄ·½°¸£¬Ñ§Ï°ÏÖÓеÄÉè¼ÆÄ£Ê½¿ÉÒÔ×öµ½¾­Ñ鸴Óᣠ-???????????????????????????????????????????????????? +ÓµÓÐÉè¼ÆÄ£Ê½´Ê»ã£¬ÔÚ¹µÍ¨Ê±¾ÍÄÜÓøüÉٵĴʻãÀ´ÌÖÂÛ£¬²¢ÇÒ²»ÐèÒªÁ˽âµ×²ãϸ½Ú¡£ -**2. ????????** +**2. ÎÊÌâÃèÊö** -???????????????§Ó???????????§Ù???? +Éè¼Æ²»Í¬ÖÖÀàµÄѼ×ÓÓµÓв»Í¬µÄ½ÐÉùºÍ·ÉÐз½Ê½¡£ -**3. ????????** +**3. ¼òµ¥ÊµÏÖ·½°¸** -??¨¹?§Ö?????????????????????????????????????????????????????§Ù???????????????????? +ʹÓü̳еĽâ¾ö·½°¸ÈçÏ£¬ÕâÖÖ·½°¸´úÂëÎÞ·¨¸´Óã¬Èç¹ûÁ½¸öѼ×ÓÀàÓµÓÐͬÑùµÄ·ÉÐз½Ê½£¬¾ÍÓÐÁ½·ÝÖØ¸´µÄ´úÂë¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/144d28a0-1dc5-4aba-8961-ced5bc88428a.jpg) -**4. ??????** +**4. Éè¼ÆÔ­Ôò** -**????�£**??????�£???????§Ü???§Ö????????? +**·â×°±ä»¯**ÔÚÕâÀï±ä»¯µÄÊÇѼ×ӽкͷÉÐеÄÐÐΪ·½Ê½¡£ -**??????????????????????** ?????????????????????????????????????????§Ö???????????????????????????????????????????????????????????????? +**Õë¶Ô½Ó¿Ú±à³Ì£¬¶ø²»ÊÇÕë¶ÔʵÏÖ±à³Ì** ±äÁ¿ÉùÃ÷µÄÀàÐÍΪ¸¸À࣬¶ø²»ÊǾßÌåµÄij¸ö×ÓÀà¡£¸¸ÀàÖеķ½·¨ÊµÏÖ²»ÔÚ¸¸À࣬¶øÊÇÔÚ¸÷¸ö×ÓÀà¡£³ÌÐòÔÚÔËÐÐʱ¿ÉÒÔ¶¯Ì¬¸Ä±ä±äÁ¿ËùÖ¸ÏòµÄ×ÓÀàÀàÐÍ¡£ -????????????§Ü???§Ö???????????????????????§Ü???§Ö???????????????????§Ü???§Ù???? +ÔËÓÃÕâÒ»Ô­Ôò£¬½«½ÐºÍ·ÉÐеÄÐÐΪ³éÏó³öÀ´£¬ÊµÏÖ¶àÖÖ²»Í¬µÄ½ÐºÍ·ÉÐеÄ×ÓÀ࣬ÈÃ×ÓÀàȥʵÏÖ¾ßÌåµÄ½ÐºÍ·ÉÐз½Ê½¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/1c8ccf5c-7ecd-4b8a-b160-3f72a510ce26.png) -**???????????¨¹??** ???????? has-a ????????????????????????????????????????Íè???????????????????¨À?????§à??????????§»?????????????????????????? +**¶àÓÃ×éºÏ£¬ÉÙÓü̳Ð** ×éºÏÒ²¾ÍÊÇ has-a ¹ØÏµ£¬Í¨¹ý×éºÏ£¬¿ÉÒÔÔÚÔËÐÐʱ¶¯Ì¬¸Ä±äʵÏÖ£¬Ö»ÒªÍ¨¹ý¸Ä±ä¸¸Àà¶ÔÏó¾ßÌåÖ¸ÏòÄĸö×ÓÀ༴¿É¡£¶ø¼Ì³Ð¾Í²»ÄÜ×öµ½ÕâЩ£¬¼Ì³ÐÌåϵÔÚ´´½¨Ààʱ¾ÍÒѾ­È·¶¨¡£ -???????????? Duck ??????? FlyBehavior ?? QuackBehavior ??performQuack() ?? performFly() ??????§Ú???????????????????????????? Duck ??????????????????? FlyBehavior ?? QuackBehavior ???????????????????????§Ú?? +ÔËÓÃÕâÒ»Ô­Ôò£¬ÔÚ Duck ÀàÖÐ×éºÏ FlyBehavior ºÍ QuackBehavior À࣬performQuack() ºÍ performFly() ·½·¨Î¯ÍиøÕâÁ½¸öÀàÈ¥´¦Àí¡£Í¨¹ýÕâÖÖ·½Ê½£¬Ò»¸ö Duck ×ÓÀà¿ÉÒÔ¸ù¾ÝÐèҪȥʵÀý»¯ FlyBehavior ºÍ QuackBehavior µÄ×ÓÀà¶ÔÏ󣬲¢ÇÒÒ²¿ÉÒÔ¶¯Ì¬µØ½øÐиı䡣 ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/29574e6f-295c-444e-83c7-b162e8a73a83.jpg) -**5. ????????** +**5. ÕûÌåÉè¼ÆÍ¼** ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/e13833c8-e215-462e-855c-1d362bb8d4a0.jpg) -**6. ??????** +**6. ģʽ¶¨Òå** -**??????** ???????????ÈÉ???????????????????????????�I????????????�£????????????????? +**²ßÂÔģʽ** £º¶¨ÒåÁËËã·¨×壬·Ö±ð·â×°ÆðÀ´£¬ÈÃËüÃÇÖ®¼ä¿ÉÒÔ»¥ÏàÌæ»»£¬´ËģʽÈÃËã·¨µÄ±ä»¯¶ÀÁ¢ÓÚʹÓÃËã·¨µÄ¿Í»§¡£ -**7. ??????** +**7. ʵÏÖ´úÂë** ```java public abstract class Duck { @@ -164,42 +164,42 @@ public class MiniDuckSimulator { } } ``` -??§ß?? +Ö´Ðнá¹û ```html QuackBehavior.Quack FlyBehavior.FlyWithWings FlyBehavior.FlyNoWay ``` -# ?? 2 ?? ??????? +# µÚ 2 Õ ¹Û²ìÕßģʽ -**1. ??????** +**1. ģʽ¶¨Òå** -???????????????????????????????????????????????????????????????????????????Subject??????????????????????????Observer??????????? +¶¨ÒåÁ˶ÔÏóÖ®¼äµÄÒ»¶Ô¶àÒÀÀµ£¬µ±Ò»¸ö¶ÔÏó¸Ä±ä״̬ʱ£¬ËüµÄËùÓÐÒÀÀµÕß¶¼»áÊܵ½Í¨Öª²¢×Ô¶¯¸üС£Ö÷Ì⣨Subject£©ÊDZ»¹Û²ìµÄ¶ÔÏ󣬶øÆäËùÓÐÒÀÀµÕߣ¨Observer£©³ÉΪ¹Û²ìÕß¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/26cb5e7e-6fa3-44ad-854e-fe24d1a5278c.jpg) -**2. ?????** +**2. ģʽÀàͼ** -?????§à??????????????????????????????????????????????????????§Ò????????§»??????? +Ö÷ÌâÖоßÓÐ×¢²áºÍÒÆ³ý¹Û²ìÕߣ¬²¢Í¨ÖªËùÓÐ×¢²áÕߵŦÄÜ£¬Ö÷ÌâÊÇͨ¹ýά»¤Ò»ÕŹ۲ìÕßÁбíÀ´ÊµÏÖÕâЩ²Ù×÷µÄ¡£ -?????????????????????????????????????????????????§µ?????????????????????????????? +¹Û²ìÕßÓµÓÐÒ»¸öÖ÷Ìâ¶ÔÏóµÄÒýÓã¬ÒòΪע²á¡¢ÒƳý»¹ÓÐÊý¾Ý¶¼ÔÚÖ÷Ìâµ±ÖУ¬±ØÐëͨ¹ý²Ù×÷Ö÷Ìâ²ÅÄÜÍê³ÉÏàÓ¦¹¦ÄÜ¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/5c558190-fccd-4b5e-98ed-1896653fc97f.jpg) -**3. ????????** +**3. ÎÊÌâÃèÊö** -???????????????????????????????????????????????§Ø??????????????????????? +ÌìÆøÊý¾Ý²¼¸æ°å»áÔÚÌìÆøÐÅÏ¢·¢Éú¸Ä±äʱ¸üÐÂÆäÄÚÈÝ£¬²¼¸æ°åÓжà¸ö£¬²¢ÇÒÔÚ½«À´»á¼ÌÐøÔö¼Ó¡£ -**4. ??????????** +**4. ½â¾ö·½°¸Ààͼ** ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/760a5d63-d96d-4dd9-bf9a-c3d126b2f401.jpg) -**5. ??????** +**5. Éè¼ÆÔ­Ôò** -**?????????????????????????** ????????????????????????????????????????????????????????????????????????ÒÔ????????????????????§Ö??????????�£?? +**Ϊ½»»¥¶ÔÏóÖ®¼äµÄËÉñîºÏÉè¼Æ¶øÅ¬Á¦** µ±Á½¸ö¶ÔÏóÖ®¼äËÉñîºÏ£¬ËüÃÇÒÀÈ»¿ÉÒÔ½»»¥£¬µ«ÊDz»Ì«Çå³þ±Ë´ËµÄϸ½Ú¡£ÓÉÓÚËÉñîºÏµÄÁ½¸ö¶ÔÏóÖ®¼ä»¥ÏàÒÀÀµ³Ì¶ÈºÜµÍ£¬Òò´Ëϵͳ¾ßÓе¯ÐÔ£¬Äܹ»Ó¦¶Ô±ä»¯¡£ -**6. ??????** +**6. ʵÏÖ´úÂë** ```java public interface Subject { @@ -297,7 +297,7 @@ public class WeatherStation { } } ``` -??§ß?? +Ö´Ðнá¹û ```html CurrentConditionsDisplay.update:0.0 0.0 0.0 StatisticsDisplay.update:0.0 0.0 0.0 @@ -305,39 +305,39 @@ CurrentConditionsDisplay.update:1.0 1.0 1.0 StatisticsDisplay.update:1.0 1.0 1.0 ``` -# ?? 3 ?? ????? +# µÚ 3 Õ װÊÎģʽ -**1. ????????** +**1. ÎÊÌâÃèÊö** -????????????????????????????????????????????????????????????????????? +Éè¼Æ²»Í¬ÖÖÀàµÄÒûÁÏ£¬²¢ÇÒÿÖÖÒûÁÏ¿ÉÒÔ¶¯Ì¬Ìí¼ÓеIJÄÁÏ£¬±ÈÈç¿ÉÒÔÌí¼ÓÅ£ÄÌ¡£¼ÆËãÒ»ÖÖÒûÁϵļ۸ñ¡£ -**2. ??????** +**2. ģʽ¶¨Òå** -?????????¦È??????????????????????????????????§Ú??§Ö????????????? +¶¯Ì¬µØ½«ÔðÈθ½¼Óµ½¶ÔÏóÉÏ¡£ÔÚÀ©Õ¹¹¦ÄÜÉÏ£¬×°ÊÎÕßÌṩÁ˱ȼ̳иüÓе¯ÐÔµÄÌæ´ú·½°¸¡£ -????? DarkRoast ???? Mocha ??????Mocha ??????? Whip ??????????????????????????????? cost() ????????????????? cost() ??????????????????? cost() ???????????????? DarkRoast ????? Mocha??????????? Mocha ???? DarkRoast?????????? Whip ?????? Whip ???? Mocha???????? cost() ????????????????????????? +ÏÂͼÖÐ DarkRoast ¶ÔÏó±» Mocha °ü¹ü£¬Mocha ¶ÔÏóÓÖ±» Whip °ü¹ü£¬²¢ÇÒËûÃǶ¼¼Ì³Ð×ÔÏàͬ¸¸À࣬¶¼ÓÐ cost() ·½·¨£¬µ«ÊÇÍâ²ã¶ÔÏóµÄ cost() ·½·¨ÊµÏÖµ÷ÓÃÁËÄÚ²ã¶ÔÏóµÄ cost() ·½·¨¡£Òò´Ë£¬Èç¹ûÒªÔÚ DarkRoast ÉÏÌí¼Ó Mocha£¬ÄÇôֻÐèÒªÓà Mocha °ü¹ü DarkRoast£¬Èç¹û»¹ÐèÒª Whip £¬¾ÍÓà Whip °ü¹ü Mocha£¬×îºóµ÷Óà cost() ·½·¨ÄܰÑÈýÖÖ¶ÔÏóµÄ¼Û¸ñ¶¼°üº¬½øÈ¥¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/41a4cb30-f393-4b3b-abe4-9941ccf8fa1f.jpg) -**3. ?????** +**3. ģʽÀàͼ** -??????????????????????????????§à?????????????????????????????????????????????????????????????????????????????????????????¦Í??¦²?????????????????????¦Å??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????¦Â?¦Å??????????§à??????????????????????§Ú?????????????? +×°ÊÎÕߺ;ßÌå×é¼þ¶¼¼Ì³Ð×Ô×é¼þÀàÐÍ£¬ÆäÖоßÌå×é¼þµÄ·½·¨ÊµÏÖ²»ÐèÒªÒÀÀµÓÚÆäËü¶ÔÏ󣬶ø×°ÊÎÕßÓµÓÐÒ»¸ö×é¼þÀàÐͶÔÏó£¬ÕâÑùËü¿ÉÒÔ×°ÊÎÆäËü×°ÊÎÕß»òÕß¾ßÌå×é¼þ¡£ËùνװÊΣ¬¾ÍÊǰÑÕâ¸ö×°ÊÎÕßÌ×ÔÚ±»×°ÊεĶÔÏóÖ®Í⣬´Ó¶ø¶¯Ì¬À©Õ¹±»×°ÊÎÕߵŦÄÜ¡£×°ÊÎÕߵķ½·¨ÓÐÒ»²¿·ÖÊÇ×Ô¼ºµÄ£¬ÕâÊôÓÚËüµÄ¹¦ÄÜ£¬È»ºóµ÷Óñ»×°ÊÎÕߵķ½·¨ÊµÏÖ£¬´Ó¶øÒ²±£ÁôÁ˱»×°ÊÎÕߵŦÄÜ¡£¿ÉÒÔ¿´µ½£¬¾ßÌå×é¼þÓ¦µ±ÊÇ×°Êβã´ÎµÄ×îµÍ²ã£¬ÒòΪֻÓоßÌå×é¼þÓÐÖ±½ÓʵÏÖ¶ø²»ÐèҪίÍиøÆäËü¶ÔÏóÈ¥´¦Àí¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/3dc454fb-efd4-4eb8-afde-785b2182caeb.jpg) -**4. ???????????????** +**4. ÎÊÌâ½â¾ö·½°¸µÄÀàͼ** ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/9c997ac5-c8a7-44fe-bf45-2c10eb773e53.jpg) -**5. ??????** +**5. Éè¼ÆÔ­Ôò** -**??????????????????????**???????????????????????????????????§Ú??????????????????????????????????????????????????????????????????????????????????????????????????????????????§á?????????? +**ÀàÓ¦¸Ã¶ÔÀ©Õ¹¿ª·Å£¬¶ÔÐ޸Ĺرա£**Ò²¾ÍÊÇÌí¼Óй¦ÄÜʱ²»ÐèÒªÐ޸ĴúÂë¡£ÔÚ±¾ÕÂÎÊÌâÖиÃÔ­ÔòÌåÏÖÔÚ£¬ÔÚÒûÁÏÖÐÌí¼ÓеIJÄÁÏ£¬¶ø²»ÐèҪȥÐÞ¸ÄÒûÁϵĴúÂë¡£¹Û²ìÔòģʽҲ·ûºÏÕâ¸öÔ­Ôò¡£²»¿ÉÄÜËùÓÐÀà¶¼ÄÜʵÏÖÕâ¸öÔ­Ôò£¬Ó¦µ±°Ñ¸ÃÔ­ÔòÓ¦ÓÃÓÚÉè¼ÆÖÐ×îÓпÉÄܸıäµÄµØ·½¡£ -**6. Java I/O ?§Ö????????** +**6. Java I/O ÖеÄ×°ÊÎÕßģʽ** ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/2a40042a-03c8-4556-ad1f-72d89f8c555c.jpg) -**7. ???????** +**7. ´úÂëʵÏÖ** ```java public interface Beverage { @@ -402,32 +402,32 @@ public class StartbuzzCoffee { } ``` -??? +Êä³ö ```html 3.0 ``` -# ?? 4 ?? ?????? +# µÚ 4 Õ ¹¤³§Ä£Ê½ -## 4.1 ????? +## 4.1 ¼òµ¥¹¤³§ -**1. ????????** +**1. ÎÊÌâÃèÊö** -?§Ó???? Pizza??????????????¨°???????????????? Pizza ???? +Óв»Í¬µÄ Pizza£¬¸ù¾Ý²»Í¬µÄÇé¿öÓò»Í¬µÄ×ÓÀàʵÀý»¯Ò»¸ö Pizza ¶ÔÏó¡£ -**2. ????** +**2. ¶¨Òå** -?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§µ??¨´????????????????????????????????????????????????????????????????????????????????§»????????????????????????????????§Ø???????????¨¹????????????§Ö????????????????????????????????????????????????????§Ö????????????? +¼òµ¥¹¤³§²»ÊÇÉè¼ÆÄ£Ê½£¬¸üÏñÊÇÒ»ÖÖ±à³Ìϰ¹ß¡£ÔÚʵÀý»¯Ò»¸ö³¬ÀàµÄ¶ÔÏóʱ£¬¿ÉÒÔÓÃËüµÄËùÓÐ×ÓÀàÀ´½øÐÐʵÀý»¯£¬Òª¸ù¾Ý¾ßÌåÐèÇóÀ´¾ö¶¨Ê¹ÓÃÄĸö×ÓÀà¡£ÔÚÕâÖÖÇé¿öÏ£¬°ÑʵÀý»¯µÄ²Ù×÷·Åµ½¹¤³§À´ÖУ¬Èù¤³§ÀàÀ´¾ö¶¨Ó¦¸ÃÓÃÄĸö×ÓÀàÀ´ÊµÀý»¯¡£ÕâÑù×ö°Ñ¿Í»§¶ÔÏóºÍ¾ßÌå×ÓÀàµÄʵÏÖ½âñ¿Í»§¶ÔÏó²»ÔÙÐèÒªÖªµÀÓÐÄÄЩ×ÓÀàÒÔ¼°ÊµÀý»¯Äĸö×ÓÀà¡£ÒòΪ¿Í»§ÀàÍùÍùÓжà¸ö£¬Èç¹û²»Ê¹Óüòµ¥¹¤³§£¬ÄÇôËùÓеĿͻ§Àà¶¼ÒªÖªµÀËùÓÐ×ÓÀàµÄϸ½Ú£¬Ò»µ©×ÓÀà·¢Éú¸Ä±ä£¬ÀýÈçÔö¼Ó×ÓÀ࣬ÄÇôËùÓеĿͻ§Àà¶¼Òª·¢Éú¸Ä±ä¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/c470eb9b-fb05-45c5-8bb7-1057dc3c16de.jpg) -**3. ??????????** +**3. ½â¾ö·½°¸Ààͼ** ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/dc3e704c-7c57-42b8-93ea-ddd068665964.jpg) -**4. ???????** +**4. ´úÂëʵÏÖ** ```java public interface Pizza { @@ -473,33 +473,33 @@ public class PizzaStore { } ``` -???§ß?? +ÔËÐнá¹û ```java CheesePizza ``` -## 4.2 ?????????? +## 4.2 ¹¤³§·½·¨Ä£Ê½ -**1. ????????** +**1. ÎÊÌâÃèÊö** -????????? Pizza ???????????????????????????¦Æ?????????????????íà?????????????? cheese ????? Pizza ?????????????????? Pizza ??????? +ÿ¸öµØÇøµÄ Pizza µêËäÈ»ÖÖÀàÏàͬ£¬µ«ÊǶ¼ÓÐ×Ô¼ºµÄ·ç棬ÐèÒªµ¥¶ÀÇø·Ö¡£ÀýÈ磬һ¸ö¿Í»§µãÁËŦԼµÄ cheese ÖÖÀàµÄ Pizza ºÍÔÚÖ¥¼Ó¸çµãµÄÏàͬÖÖÀàµÄ Pizza ÊDz»Í¬µÄ¡£ -**2. ??????** +**2. ģʽ¶¨Òå** -????????????????????????????????????????????????????????????????????????????? +¶¨ÒåÁËÒ»¸ö´´½¨¶ÔÏóµÄ½Ó¿Ú£¬µ«ÓÉ×ÓÀà¾ö¶¨ÒªÊµÀý»¯µÄÀàÊÇÄÄÒ»¸ö¡£¹¤³§·½·¨ÈÃÀà°ÑʵÀý»¯ÍƳٵ½×ÓÀà¡£ -**3. ?????** +**3. ģʽÀàͼ** -???????§µ???????????????????????????????§µ???????????????????????????????????????????????????????????????????????????????????????????§Õ???????????????????????????????????????????????????????????????????? +ÔÚ¼òµ¥¹¤³§ÖУ¬´´½¨¶ÔÏóµÄÊÇÁíÒ»¸öÀ࣬¶øÔÚ¹¤³§·½·¨ÖУ¬ÊÇÓÉ×ÓÀàÀ´´´½¨¶ÔÏó¡£¹¤³§·½·¨³£ÓÃÔÚÔÚÿ¸ö×ÓÀà¶¼ÓÐ×Ô¼ºµÄÒ»×é²úÆ·Àà¡£¿ÉÒÔΪÿ¸ö×ÓÀà´´½¨µ¥¶ÀµÄ¼òµ¥¹¤³§£¬µ«ÊǰѼòµ¥¹¤³§Öд´½¨¶ÔÏóµÄ´úÂë·Åµ½×ÓÀàÖÐÀ´¿ÉÒÔ¼õÉÙÀàµÄÊýÄ¿£¬ÒòΪ×ÓÀ಻ËãÊDzúÆ·À࣬Òò´ËÍêÈ«¿ÉÒÔÕâô×ö¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/903093ec-acc8-4f9b-bf2c-b990b9a5390c.jpg) -**4. ??????????** +**4. ½â¾ö·½°¸Ààͼ** ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/664f8901-5dc7-4644-a072-dad88cc5133a.jpg) -**5. ???????** +**5. ´úÂëʵÏÖ** ```java public interface Pizza { @@ -588,36 +588,36 @@ public class PizzaTestDrive { } ``` -???§ß?? +ÔËÐнá¹û ```html NYStyleCheesePizza is making.. ChicagoStyleCheesePizza is making.. ``` -## 4.3 ??????? +## 4.3 ³éÏ󹤳§Ä£Ê½ -**1. ??????** +**1. Éè¼ÆÔ­Ôò** -**???????????**??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????íà????? PizzaStore ???????????????????????????? Pizza ?????????????????? Pizza ?????????????????¨´??? Pizza ???????????? +**ÒÀÀµµ¹ÖÃÔ­Ôò**£ºÒªÒÀÀµ³éÏ󣬲»ÒªÒÀÀµ¾ßÌåÀà¡£ÌýÆðÀ´ÏñÊÇÕë¶Ô½Ó¿Ú±à³Ì£¬²»Õë¶ÔʵÏÖ±à³Ì£¬µ«ÊÇÕâ¸öÔ­Ôò˵Ã÷ÁË£º²»ÄÜÈø߲ã×é¼þÒÀÀµµ×²ã×é¼þ£¬¶øÇÒ£¬²»¹Ü¸ß²ã»òµ×²ã×é¼þ£¬Á½Õß¶¼Ó¦¸ÃÒÀÀµÓÚ³éÏó¡£ÀýÈ磬ÏÂͼÖÐ PizzaStore ÊôÓڸ߲ã×é¼þ£¬µ«ÊÇËüÒÀÀµÓڵײã×é¼þ Pizza µÄ¾ßÌåÀà¡£Èç¹ûÒÀÀµµÄÊÇ Pizza µÄ³éÏóÀ࣬ÄÇô¾Í¿ÉÒÔ²»ÓùØÐÄ Pizza µÄ¾ßÌåʵÏÖϸ½Ú¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/ddf72ca9-c0be-49d7-ab81-57a99a974c8e.jpg) -**2. ??????** +**2. ģʽ¶¨Òå** -???????????????????????????????ÈÉ??????????????????? +Ìṩһ¸ö½Ó¿Ú£¬ÓÃÓÚ´´½¨Ïà¹Ø»òÒÀÀµ¶ÔÏóµÄ¼Ò×壬¶ø²»ÐèÒªÃ÷È·Ö¸¶¨¾ßÌåÀà¡£ -**3. ?????** +**3. ģʽÀàͼ** -????????????????????ÈÉ???????????????????????????§»??????????????????????????????????????????????????????????????????§Ü?????????????????????????????????????????????????AbstractFactory ?§Ö? CreateProductA ?? CreateProductB ????????????????????????????????????????????????????????????????????‰^?????????????????????????? Client ?????Client ???? AbstractFactory ????????????????????????????????????????????????§Ü?????????Client ??????????????§¿??????????????????????????????????????? Cilent ????? AbstractFactory ????????????????§³? +³éÏ󹤳§Ä£Ê½´´½¨µÄÊǶÔÏó¼Ò×壬Ҳ¾ÍÊǺܶà¶ÔÏó¶ø²»ÊÇÒ»¸ö¶ÔÏ󣬲¢ÇÒÕâЩ¶ÔÏóÊÇÏà¹ØµÄ£¬Ò²¾ÍÊÇ˵±ØÐëÒ»Æð´´½¨³öÀ´¡£¶ø¹¤³§Ä£Ê½Ö»ÊÇÓÃÓÚ´´½¨Ò»¸ö¶ÔÏó£¬ÕâºÍ³éÏ󹤳§Ä£Ê½Óкܴó²»Í¬¡£²¢ÇÒ£¬³éÏ󹤳§Ä£Ê½Ò²Óõ½Á˹¤³§Ä£Ê½À´´´½¨µ¥Ò»¶ÔÏó£¬ÔÚÀàͼ×󲿣¬AbstractFactory ÖÐµÄ CreateProductA ºÍ CreateProductB ·½·¨¶¼ÊÇÈÃ×ÓÀàÀ´ÊµÏÖ£¬ÕâÁ½¸ö·½·¨µ¥¶ÀÀ´¿´¾ÍÊÇÔÚ´´½¨Ò»¸ö¶ÔÏó£¬Õâ·ûºÏ¹¤³§Ä£Ê½µÄ¶¨Òå¡£ÖÁÓÚ´´½¨¶ÔÏóµÄ¼Ò×åÕâÒ»¸ÅÄîÊÇÔÚ Client ÌåÏÖ£¬Client Ҫͨ¹ý AbstractFactory ͬʱµ÷ÓÃÁ½¸ö·½·¨À´´´½¨³öÁ½¸ö¶ÔÏó£¬ÔÚÕâÀïÕâÁ½¸ö¶ÔÏó¾ÍÓкܴóµÄÏà¹ØÐÔ£¬Client ÐèÒªÕâÁ½¸ö¶ÔÏóµÄЭ×÷²ÅÄÜÍê³ÉÈÎÎñ¡£´Ó¸ß²ã´ÎÀ´¿´£¬³éÏ󹤳§Ê¹ÓÃÁË×éºÏ£¬¼´ Cilent ×éºÏÁË AbstractFactory £¬¶ø¹¤³§Ä£Ê½Ê¹ÓÃÁ˼̳С£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/d301774f-e0d2-41f3-95f4-bfe39859b52e.jpg) -**4. ??????????** +**4. ½â¾ö·½°¸Ààͼ** ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/8785dabd-1285-4bd0-b3aa-b05cc060a24a.jpg) -**5. ???????** +**5. ´úÂëʵÏÖ** ```java public interface Dough { @@ -719,28 +719,28 @@ public class NYPizzaStoreTestDrive { } ``` -???§ß?? +ÔËÐнá¹û ```html ThickCrustDough MarinaraSauce ``` -# ?? 5 ?? ?????? +# µÚ 5 Õ µ¥¼þģʽ -**1. ??????** +**1. ģʽ¶¨Òå** -??????????????????????????????????? +È·±£Ò»¸öÀàÖ»ÓÐÒ»¸öʵÀý£¬²¢ÌṩÁËÒ»¸öÈ«¾Ö·ÃÎʵ㡣 -**2. ?????** +**2. ģʽÀàͼ** -???????? Java ??????????§Û????????????§à???????????????§à?????????¨²?????????§Ò????????????????¨²?????????????????¦·?????§à???????? +µ¥¼þģʽµÄ Java ʵÏÖÓÃÒ»¸ö˽Óй¹ÔìÆ÷¡¢Ò»¸ö˽Óо²Ì¬±äÁ¿ÒÔ¼°Ò»¸ö¹«Óо²Ì¬º¯Êý£¬¸Ãº¯Êý·µ»ØË½ÓбäÁ¿£¬Ê¹µÃËùÓÐͨ¹ý¸Ãº¯Êý»ñÈ¡µÄ¶ÔÏó¶¼Ö¸ÏòÕâ¸öΨһµÄ˽Óо²Ì¬±äÁ¿¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/59aff6c1-8bc5-48e4-9e9c-082baeb2f274.jpg) -**3. ???????** +**3. ¾­µäʵÏÖ** -????????§µ???§à???????????????????????????????????????????????????????????§à??????????????????????????????????????????????????????????????? if(uniqueInstance == null) ??????ï…????????????? uniqueInstance ??§à???????? +ÒÔÏÂʵÏÖÖУ¬Ë½Óо²Ì¬±äÁ¿±»ÑÓ³Ù»¯ÊµÀý»¯£¬ÕâÑù×öµÄºÃ´¦ÊÇ£¬Èç¹ûûÓÐÓõ½¸ÃÀ࣬ÄÇô¾Í²»»á´´½¨¸Ã˽Óо²Ì¬±äÁ¿£¬´Ó¶ø½ÚÔ¼×ÊÔ´¡£Õâ¸öʵÏÖÔÚ¶àÏ̻߳·¾³ÏÂÊDz»°²È«µÄ£¬ÒòΪ¶à¸öÏß³ÌÄܹ»Í¬Ê±½øÈë if(uniqueInstance == null) ÄÚµÄÓï¾ä¿é£¬ÄÇô¾Í»á¶à´ÎʵÀý»¯ uniqueInstance ˽Óо²Ì¬±äÁ¿¡£ ```java public class Singleton { @@ -759,9 +759,9 @@ public class Singleton { } ``` -**4. ???????????????????** +**4. Ï̲߳»°²È«ÎÊÌâµÄ½â¾ö·½°¸Ò»** -?????? getUniqueInstance() ????????????????¡Â????????????????????????????? uniqueInstance ???????§Ø????????????????????????????????????????????????????????????????? +Ö»ÐèÒª¶Ô getUniqueInstance() ·½·¨¼ÓËø£¬¾ÍÄÜÈø÷½·¨Ò»´ÎÖ»ÄÜÒ»¸öÏ̷߳ÃÎÊ£¬´Ó¶ø±ÜÃâÁË¶Ô uniqueInstance ±äÁ¿½øÐжà´ÎʵÀý»¯µÄÎÊÌâ¡£µ«ÊÇÕâÑùÓÐÒ»¸öÎÊÌâÊÇÒ»´ÎÖ»ÄÜÒ»¸öÏ߳̽øÈ룬ÐÔÄÜÉÏ»áÓÐÒ»¶¨µÄÀË·Ñ¡£ ```java public static synchronized Singleton getUniqueInstance() { @@ -772,17 +772,17 @@ public class Singleton { } ``` -**5. ????????????????????** +**5. Ï̲߳»°²È«ÎÊÌâµÄ½â¾ö·½°¸¶þ** -???????????????????????????? +²»ÓÃÑÓ³ÙʵÀý»¯£¬²ÉÓÃÖ±½ÓʵÀý»¯¡£ ```java private static Singleton uniqueInstance = new Singleton(); ``` -**6. ????????????????????** +**6. Ï̲߳»°²È«ÎÊÌâµÄ½â¾ö·½°¸Èý** -????????????????????????? getUniqueInstance() ???????§Þ?????????????????? uniqueInstance = new Singleton(); ?????????????¨À??????????????????§Ø? uniqueInstance ??????????????????????????????????? +¿¼ÂǵÚÒ»¸ö½â¾ö·½°¸£¬ËüÊÇÖ±½Ó¶Ô getUniqueInstance() ·½·¨½øÐмÓËø£¬¶øÊµ¼ÊÉÏÖ»ÐèÒª¶Ô uniqueInstance = new Singleton(); ÕâÌõÓï¾ä¼ÓËø¼´¿É¡£Ê¹ÓÃÁ½¸öÌõ¼þÓï¾äÀ´ÅÐ¶Ï uniqueInstance ÊÇ·ñÒѾ­ÊµÀý»¯£¬Èç¹ûûÓÐʵÀý»¯²ÅÐèÒª¼ÓËø¡£ ```java public class Singleton { @@ -805,31 +805,31 @@ public class Singleton { } ``` -# ?? 6 ?? ?????? +# µÚ 6 Õ ÃüÁîģʽ -**1. ????????** +**1. ÎÊÌâÃèÊö** -????????????????§Ü??????????????????????????????????????????????§Ù??????íà????????????³‡ +Éè¼ÆÒ»¸öÒ£¿ØÆ÷£¬ËüÓкܶఴť£¬Ã¿¸ö°´Å¥¿ÉÒÔ·¢ÆðÒ»¸öÃüÁÈÃÒ»¸ö¼ÒµçÍê³ÉÏàÓ¦²Ù×÷¡£Óзdz£¶àµÄ¼Òµç£¬²¢ÇÒÒ²»áÔö¼Ó¼Òµç¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/7b8f0d8e-a4fa-4c9d-b9a0-3e6a11cb3e33.jpg) ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/c3ca36b2-8459-4cf1-98b0-cc95a0e94f20.jpg) -**2. ??????** +**2. ģʽ¶¨Òå** -??????????????????¨°???????????????????????? +½«ÃüÁî·â×°³É¶ÔÏó£¬ÒÔ±ãʹÓò»Í¬µÄÃüÁîÀ´²ÎÊý»¯ÆäËü¶ÔÏó¡£ -**3. ?????** +**3. ģʽÀàͼ** ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/1e09d75f-6268-4425-acf8-8ecd1b4a0ef3.jpg) -**4. ??????????** +**4. ½â¾ö·½°¸Ààͼ** -Invoker ?????????????????????????????????????? execute() ??????Receiver ???????????????????????ConcreteCommand ?????????? Receiver ??????????????§Ú? Receiver ??????????????? LightOnCommand ????? excute ??????§Ú? Light ??????????Light ??????????? on() ??????????????Invoker ???? Client ??????????????????????? Invoker ?????????????????? Client ????????????§»?????? +Invoker ÊÇÒ£¿ØÆ÷£¬Ëü¿ÉÒÔÉèÖÃÃüÁ²¢ÇÒµ÷ÓÃÃüÁî¶ÔÏóµÄ execute() ·½·¨¡£Receiver ÊÇµçµÆ£¬ÊÇÃüÁîÕæÕýµÄÖ´ÐÐÕß¡£ConcreteCommand Àà×éºÏÁËÒ»¸ö Receiver ¶ÔÏó£¬ÃüÁîµÄÖ´ÐÐίÍиø Receiver ¶ÔÏóÀ´´¦Àí£¬Ò²¾ÍÊÇ LightOnCommand ÃüÁîµÄ excute ·½·¨Î¯Íиø Light ¶ÔÏóÀ´´¦Àí£¬Light ¶ÔÏóͨ¹ýµ÷Óà on() ·½·¨À´Íê³É²Ù×÷¡£Invoker ²»ÊÇ Client ¶ÔÏó£¬ÊÇÒòΪÃüÁîµÄ´´½¨²»ÊÇÔÚ Invoker ÖÐÍê³ÉµÄ£¬Òò´ËÐèÒª¶îÍâµÄ Client ¶ÔÏóÀ´´¦ÀíÕâЩ²Ù×÷¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/5ef94f62-98ce-464d-a646-842d9c72c8b8.jpg) -**5. ???????** +**5. ´úÂëʵÏÖ** ```java public interface Command { @@ -864,7 +864,7 @@ public class LightOnCommand implements Command{ ``` ```java /** - * ??????? + * Ò£¿ØÆ÷Àà */ public class SimpleRemoteControl { Command slot; @@ -895,39 +895,39 @@ public class RemoteLoader { } ``` -??? +Êä³ö ```html Light is on! ``` -# ?? 7 ?? ??????????????? +# µÚ 7 Õ ÊÊÅäÆ÷ģʽÓëÍâ¹Ûģʽ -## 7.1 ???????? +## 7.1 ÊÊÅäÆ÷ģʽ -**1. ??????** +**1. ģʽ¶¨Òå** -?????????????????????????????????????????????????????????????? +½«Ò»¸öÀàµÄ½Ó¿Ú£¬×ª»»Îª¿Í»§ÆÚÍûµÄÁíÒ»¸ö½Ó¿Ú¡£ÊÊÅäÆ÷ÈÃÔ­±¾²»¼æÈݵÄÀà¿ÉÒÔºÏ×÷Î޼䡣 ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/8e8ba824-7a9e-4934-a212-e6a41dcc1602.jpg) -**2. ?????** +**2. ģʽÀàͼ** -??????????????????????????????????????????????????????????????????????Adapter??????????????????Adaptee???????????????????§Ú??????????????????????§µ?Adapter ??????? Target ?? Adaptee ?????????????? Adaptee ??????????????? Adapter ????????????? Target ?????????? Client ?????????????? Target ??????????? +ÓÐÁ½ÖÖÊÊÅäÆ÷ģʽµÄʵÏÖ£¬Ò»ÖÖÊǶÔÏó·½Ê½£¬Ò»ÖÖÊÇÀ෽ʽ¡£¶ÔÏó·½Ê½ÊÇͨ¹ý×éºÏµÄ·½·¨£¬ÈÃÊÊÅäÆ÷ÀࣨAdapter£©ÓµÓÐÒ»¸ö´ýÊÊÅäµÄ¶ÔÏó£¨Adaptee£©£¬´Ó¶ø°ÑÏàÓ¦µÄ´¦ÀíίÍиø´ýÊÊÅäµÄ¶ÔÏó¡£À෽ʽÓõ½¶àÖØ¼Ì³Ð£¬Adapter ¿ÉÒÔ¿´³É Target ºÍ Adaptee ÀàÐÍ£¬ÏȰÑËüµ±³É Adaptee ÀàÐÍÈ»ºóʵÀý»¯Ò»¸ö Adapter ¶ÔÏó£¬ÔÙ°ÑËüµ±³É Target ÀàÐ͵ģ¬ÕâÑù Client ¾Í¿ÉÒÔ°ÑÕâ¸ö¶ÔÏóµ±³É Target µÄ¶ÔÏóÀ´´¦Àí¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/253bd869-ea48-4092-9aed-6906ccb2f3b0.jpg) ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/a797959a-0ed5-475b-8d97-df157c672019.jpg) -**3. ????????** +**3. ÎÊÌâÃèÊö** -??????Duck????????Turkey????Duck ?? quack() ???????? Turkey ??? gobble() ?????????????? Turkey ??? Duck ?? quack() ?????? +ÈÃѼ×Ó£¨Duck£©ÊÊÅä»ð¼¦£¨Turkey£©£¬Duck ÓÐ quack() ·½·¨£¬¶ø Turkey Ö»ÓÐ gobble() ·½·¨¡£Ò²¾ÍÊÇÒªÈà Turkey Ò²ÓÐ Duck µÄ quack() ·½·¨¡£ -**4. ??????????** +**4. ½â¾ö·½°¸Ààͼ** ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/1a511c76-bb6b-40ab-b8aa-39eeb619d673.jpg) -**5. ???????** +**5. ´úÂëʵÏÖ** ```java public interface Duck { @@ -984,69 +984,69 @@ public class DuckTestDrive { } ``` -???§ß?? +ÔËÐнá¹û ```html gobble! fly! ``` -## 7.2 ????? +## 7.2 Íâ¹Ûģʽ -**1. ??????** +**1. ģʽ¶¨Òå** -???????????????????????????§Ö??????????????????????????????????????¨¢? +ÌṩÁËÒ»¸öͳһµÄ½Ó¿Ú£¬ÓÃÀ´·ÃÎÊ×ÓϵͳÖеÄһȺ½Ó¿Ú¡£Íâ¹Û¶¨ÒåÁËÒ»¸ö¸ß²ã½Ó¿Ú£¬ÈÃ×Óϵͳ¸üÈÝÒ×ʹÓᣠ-**2. ?????** +**2. ģʽÀàͼ** ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/78f2314e-2643-41df-8f3d-b7e28294094b.jpg) -**3. ????????** +**3. ÎÊÌâÃèÊö** -???????????????????????§Û???????????????????§Ó???????????§»????????¨¹??????????????????????????????????????????????????????? +¼ÒÍ¥Ó°ÔºÖÐÓÐÖÚ¶àµçÆ÷£¬µ±Òª½øÐйۿ´µçӰʱÐèÒª¶ÔºÜ¶àµçÆ÷½øÐвÙ×÷¡£ÒªÇó¼ò»¯ÕâЩ²Ù×÷£¬Ê¹µÃ¼ÒÍ¥Ó°ÔºÀàÖ»Ìṩһ¸ö¼ò»¯µÄ½Ó¿Ú£¬ÀýÈçÌṩһ¸ö¿´µçÓ°µÄ½Ó¿Ú¶ø²»ÓþßÌå²Ù×÷ÖÚ¶àµçÆ÷¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/106f5585-b2e7-4718-be5d-3b322d1ef42a.jpg) -**4. ??????????** +**4. ½â¾ö·½°¸Ààͼ** ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/25387681-89f8-4365-a2fa-83b86449ee84.jpg) -**5. ??????** +**5. Éè¼ÆÔ­Ôò** -**?????????**???????????????????????????????????????????????????????????? +**×îÉÙ֪ʶԭÔò**£ºÖ»ºÍÄãµÄÃÜÓÑ̸»°¡£Ò²¾ÍÊÇÓ¦µ±Ê¹µÃ¿Í»§¶ÔÏóËùÐèÒª½»»¥µÄ¶ÔÏóÓ¦µ±¾¡¿ÉÄÜÉÙ¡£ -# ?? 8 ?? ??Ùã???? +# µÚ 8 Õ ģ°å·½·¨Ä£Ê½ -**1. ??????** +**1. ģʽ¶¨Òå** -??????????§Ø??????????????????§»?????????????§³? +ÔÚÒ»¸ö·½·¨Öж¨ÒåÒ»¸öËã·¨µÄ¹Ç¼Ü£¬¶ø½«Ò»Ð©²½ÖèÑÓ³Ùµ½×ÓÀàÖС£ -??Ùã????????????????????????????????????????§Ö??§»???Ò +Ä£°å·½·¨Ê¹µÃ×ÓÀà¿ÉÒÔÔÚ²»¸Ä±äËã·¨½á¹¹µÄÇé¿öÏ£¬ÖØÐ¶¨ÒåËã·¨ÖеÄijЩ²½Öè¡£ -**2. ?????** +**2. ģʽÀàͼ** -??Ùã?? templateMethod() ?????????????????? primitiveOperation1() ?? primitiveOperation2() ??????§Ö????? primitiveOperation1() ?? primitiveOperation2() ??????????????? +Ä£°å·½·¨ templateMethod() ¶¨ÒåÁËËã·¨µÄ¹Ç¼Ü£¬È·¶¨ÁË primitiveOperation1() ºÍ primitiveOperation2() ·½·¨Ö´ÐеÄ˳Ðò£¬¶ø primitiveOperation1() ºÍ primitiveOperation2() ÈÃ×ÓÀàÈ¥¾ßÌåʵÏÖ¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/ed62f400-192c-4185-899b-187958201f0c.jpg) -**3. ????????** +**3. ÎÊÌâÃèÊö** -?ÓÇ????õÂ?????????????????§»??????§Ö?????? +³å¿§·ÈºÍ³å²è¶¼ÓÐÀàËÆµÄÁ÷³Ì£¬µ«ÊÇijЩ²½Öè»áÓе㲻һÑù¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/d8f873fc-00bc-41ee-a87c-c1b4c0172844.png) -**4. ??????????** +**4. ½â¾ö·½°¸Ààͼ** ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/aa20c123-b6b5-432a-83d3-45dc39172192.jpg) -**5. ??????** +**5. Éè¼ÆÔ­Ôò** -**?????????**??????????´Â????????????????????´Â??????????????????????????????????????????????????????????????????????????????Ùã?????????????§Ú??????????????????????? +**ºÃÀ³ÎëÔ­Ôò**£º±ðµ÷Ó㨴òµç»°¸ø£©ÎÒÃÇ£¬ÎÒÃÇ»áµ÷Ó㨴òµç»°¸ø£©Äã¡£ÕâÒ»Ô­Ôò¿ÉÒÔ·ÀÖ¹ÒÀÀµ¸¯°Ü£¬¼´·ÀÖ¹¸ß²ã×é¼þÒÀÀµµ×²ã×é¼þ£¬µ×²ã×é¼þÓÖÒÀÀµ¸ß²ã×é¼þ¡£¸ÃÔ­ÔòÔÚÄ£°å·½·¨µÄÌåÏÖΪ£¬Ö»Óи¸Àà»áµ÷ÓÃ×ÓÀ࣬×ÓÀ಻»áµ÷Óø¸Àà¡£ -**6. ????** +**6. ¹³×Ó** -?????hock?????§»????????????§á??§á????????????????????????????????????????Ùã?? templteMethod() ?§µ?????????????????????????????????????? +¹³×Ó£¨hock£©£ºÄ³Ð©²½ÖèÔÚ²»Í¬ÊµÏÖÖпÉÓпÉÎÞ£¬¿ÉÒÔÏȶ¨ÒåÒ»¸öʲô¶¼²»×öµÄ·½·¨£¬°ÑËü¼Óµ½Ä£°å·½·¨ templteMethod() ÖУ¬Èç¹û×ÓÀàÐèÒªËü¾Í¸²¸ÇĬÈÏʵÏÖ²¢¼ÓÉÏ×Ô¼ºµÄʵÏÖ¡£ -**7. ???????** +**7. ´úÂëʵÏÖ** ```java public abstract class CaffeineBeverage { @@ -1109,7 +1109,7 @@ public class CaffeineBeverageTestDrive { } ``` -???§ß?? +ÔËÐнá¹û ```html boilWater @@ -1123,21 +1123,21 @@ pourInCup Tea.addCondiments ``` -# ?? 9 ?? ????????????? +# µÚ 9 Õ µü´úÆ÷ºÍ×éºÏģʽ -## 9.1 ???????? +## 9.1 µü´úÆ÷ģʽ -**1. ??????** +**1. ģʽ¶¨Òå** -?????????????????????§Ö???????????????????????????????? +ÌṩһÖÖ˳Ðò·ÃÎÊÒ»¸ö¾ÛºÏ¶ÔÏóÖеĸ÷¸öÔªËØµÄ·½·¨£¬¶øÓÖ²»±©Â¶ÆäÄÚ²¿µÄ±íʾ¡£ -**2. ?????** +**2. ģʽÀàͼ** -????????????????????????????????????????????????????????????????????????????????????????????????? +¿Í»§ÀàÓµÓÐÒ»¸ö¾ÛºÏ¶ÔÏóºÍµü´úÆ÷¶ÔÏ󣬵ü´úÆ÷¶ÔÏóÊǾۺ϶ÔÏóÉú³ÉµÄ¡£Ö»ÐèÒªµü´úÆ÷¶¨ÒåºÃÒÆ¶¯µÄ²Ù×÷£¬¾Í¿ÉÒÔÈþۺ϶ÔÏóÄܹ»Ë³Ðò±éÀú¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/439deca7-fed0-4c89-87e5-7088d10f1fdb.jpg) -**3. ???????** +**3. ´úÂëʵÏÖ** ```java public class Aggregate { @@ -1195,7 +1195,7 @@ public class Client { } } ``` -???§ß?? +ÔËÐнá¹û ```html 0 1 @@ -1209,13 +1209,13 @@ public class Client { 9 ``` -## 9.2 Java ?????????? +## 9.2 Java ÄÚÖõĵü´úÆ÷ -**1. ?????** +**1. ʵÏÖ½Ó¿Ú** -Java ????????? Iterator ????????? Java ??????????????????? Iterable ????????????? iterator() ??????????? Iterator ??????? Java ??????????????????????????? foreach ????????????????§Ö???????? +Java ÖÐÒѾ­ÓÐÁË Iterator ½Ó¿Ú£¬ÔÚʹÓà Java ʵÏÖʱ£¬ÐèÒªÈþۺ϶ÔÏóʵÏÖ Iterable ½Ó¿Ú£¬¸Ã½Ó¿ÚÓÐÒ»¸ö iterator() ·½·¨»á·µ»ØÒ»¸ö Iterator ¶ÔÏó¡£Ê¹Óà Java ÄÚÖõĵü´úÆ÷ʵÏÖ£¬¿Í»§¶ÔÏó¿ÉÒÔʹÓà foreach Ñ­»·À´±éÀú¾ÛºÏ¶ÔÏóÖеÄÿ¸öÔªËØ¡£ -**2. ???????** +**2. ´úÂëʵÏÖ** ```java import java.util.Iterator; @@ -1271,25 +1271,25 @@ public class Client { } ``` -## 9.3 ????? +## 9.3 ×éºÏģʽ -**1. ??????** +**1. Éè¼ÆÔ­Ôò** -???????????????????????? +Ò»¸öÀàÓ¦¸ÃÖ»ÓÐÒ»¸öÒýÆð¸Ä±äµÄÔ­Òò¡£ -**2. ??????** +**2. ģʽ¶¨Òå** -???????????????¦Í???????????? / ???????¦Í??? +ÔÊÐí½«¶ÔÏó×éºÏ³ÉÊ÷ÐνṹÀ´±íÏÖ¡°ÕûÌå / ²¿·Ö¡±²ã´Î½á¹¹¡£ -?????????????????????????????????????? +×éºÏÄÜÈÿͻ§ÒÔÒ»Öµķ½Ê½´¦Àí¸ö±ð¶ÔÏóÒÔ¼°¶ÔÏó×éºÏ¡£ -**3. ?????** +**3. ģʽÀàͼ** -????????Composite???????????????Component???????????????¦Ë?????¦Í????§Þ??????????????????????????????????????????????? +ÓÉÓÚ×éºÏ£¨Composite£©ÀàÓµÓÐÒ»¸ö×é¼þ£¨Component£©¶ÔÏó£¬Òò´Ë×éºÏ¶ÔÏóλÓÚÊ÷ÐνṹµÄÖм䣬Ëü»¹¿ÉÒÔ¼ÌÐø²Ù×÷Õâ¸ö×é¼þ¶ÔÏ󣬲¢ºöÂÔ×é¼þ¶ÔÏóµÄ¾ßÌåÀàÐÍ¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/f99c019e-7e91-4c2e-b94d-b031c402dcb5.jpg) -**4. ???????** +**4. ´úÂëʵÏÖ** ```java public abstract class Component { @@ -1316,7 +1316,7 @@ public class Leaf extends Component { @Override public void addChild(Component component) { - throw new UnsupportedOperationException(); // ???????????????????? , ?????????????????????????? + throw new UnsupportedOperationException(); // ÎþÉü͸Ã÷ÐÔ»»È¡µ¥Ò»Ö°ÔðÔ­Ôò , ÕâÑù¾Í²»Óÿ¼ÂÇÊÇÒ¶×ӽڵ㻹ÊÇ×éºÏ½Úµã } @Override @@ -1378,7 +1378,7 @@ public class Client { } } ``` -???§ß?? +ÔËÐнá¹û ```html Composite:root @@ -1390,56 +1390,56 @@ Composite:root --left:3 ``` -# ?? 10 ?? ???? +# µÚ 10 Õ ״̬ģʽ -**1. ??????** +**1. ģʽ¶¨Òå** -????????????????????????????????????????????????????? +ÔÊÐí¶ÔÏóÔÚÄÚ²¿×´Ì¬¸Ä±äʱ¸Ä±äËüµÄÐÐΪ£¬¶ÔÏó¿´ÆðÀ´ºÃÏñÐÞ¸ÄÁËËüµÄÀà¡£ -???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????íà????????????????????????????????????????????????§á???????????????????????§Ö??????????????????????????????????????????????????????????????????????? +״̬ģʽµÄÀàͼºÍ²ßÂÔģʽһÑù£¬²¢ÇÒ¶¼ÊÇÄܹ»¶¯Ì¬¸Ä±ä¶ÔÏóµÄÐÐΪ¡£µ«ÊÇ״̬ģʽÊÇͨ¹ý״̬¶ÔÏóµÄ×´Ì¬×ªÒÆÀ´¸Ä±ä¿Í»§¶ÔÏó×éºÏµÄ״̬¶ÔÏ󣬶ø²ßÂÔģʽÊÇͨ¹ý¿Í»§¶ÔÏó±¾ÉíµÄ¾ö²ßÀ´¸Ä±ä×éºÏµÄ²ßÂÔ¶ÔÏó¡£ÀýÈ磬״̬ģʽÏ£¬¿Í»§¶ÔÏóίÍÐ״̬¶ÔÏó½øÐÐÒ»¸ö´¦Àí²Ù×÷£¬ÄÇô״̬¶ÔÏóÓпÉÄÜ·¢Éú×´Ì¬×ªÒÆ£¬Ê¹µÃ¿Í»§¶ÔÏóÓµÓеÄ״̬¶ÔÏó·¢Éú¸Ä±ä¡£×´Ì¬¶ÔÏó×éºÏÁ˿ͻ§¶ÔÏó£¬×´Ì¬×ªÒÆÊÇ״̬¶ÔÏóͨ¹ý¸Ä±ä¿Í»§¶ÔÏóËù×éºÏµÄ״̬¶ÔÏóʵÏֵġ£ -**2. ?????** +**2. ģʽÀàͼ** ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/c28fd93a-0d55-4a19-810f-72652feee00d.jpg) -**3. ????????** +**3. ÎÊÌâÃèÊö** -?????????§Ø????????????????????§Ó??????????????????????????????????????????? +ÌǹûÏúÊÛ»úÓжàÖÖ״̬£¬Ã¿ÖÖ״̬ÏÂÏúÊÛ»úÓв»Í¬µÄÐÐΪ£¬×´Ì¬¿ÉÒÔ·¢Éú×ªÒÆ£¬Ê¹µÃÏúÊÛ»úµÄÐÐΪҲ·¢Éú¸Ä±ä¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/f7d880c9-740a-4a16-ac6d-be502281b4b2.jpg) -**4. ?????????** +**4. Ö±½Ó½â¾ö·½°¸** -???????????????????????—¨?§Ø??????????????????????§Ó????????????????????????????????????????§Ö??????????????????????????????????????????????? +ÔÚÌǹû»úµÄÿ¸ö²Ù×÷º¯ÊýÀïÃæ£¬Åжϵ±Ç°µÄ״̬£¬¸ù¾Ý²»Í¬µÄ״̬½øÐв»Í¬µÄ´¦Àí£¬²¢ÇÒ·¢Éú²»Í¬µÄ×´Ì¬×ªÒÆ¡£ÕâÖÖ½â¾ö·½°¸°ÑËùÓеÄʵÏÖϸ½Ú¶¼·Åµ½¿Í»§À࣬ÕâÑùÔÚÐÂÔö״̬µÄʱºò¾ÍҪȥÐ޸Ŀͻ§ÀàµÄ´úÂë¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/62ebbb63-8fd7-4488-a866-76a9dc911662.png) -**5. ???????????????** +**5. ʹÓÃ״̬ģʽµÄ½â¾ö·½°¸** -??????????????????—¨???????????????????§Ú???????????????????????????????????¦Í???????? +״̬µÄ×ªÒÆ±»ÒƵ½×´Ì¬ÀàÀïÃæ£¬¿Í»§ÀàµÄÿ¸ö²Ù×÷Ö»ÐèҪίÍиø×´Ì¬À༴¿É£¬¶ø²»ÐèÒªÖªµÀµ±Ç°ÊÇʲô״̬ÒÔ¼°×´Ì¬Ê±ÈçºÎ½øÐÐ×ªÒÆµÄ¡£ -**6. ???????** +**6. ´úÂëʵÏÖ** ```java public interface State { /** - * ???25 ??? + * ͶÈë25 ·ÖÇ® */ void insertQuarter(); /** - * ???25 ??? + * ÍË»Ø25 ·ÖÇ® */ void ejectQuarter(); /** - * ??????? + * ת¶¯Çú±ú */ void turnCrank(); /** - * ??????? + * ·¢·ÅÌǹû */ void dispense(); } @@ -1667,7 +1667,7 @@ public class GumballMachineTestDrive { } } ``` -???§ß?? +ÔËÐнá¹û ```html You insert a quarter You turned... @@ -1696,34 +1696,34 @@ You turned, but there are no gumballs No gumball dispensed ``` -# ?? 11 ?? ?????? // TODO +# µÚ 11 Õ ´úÀíģʽ // TODO -# ?? 12 ?? ?????? +# µÚ 12 Õ ¸´ºÏģʽ ## 12.1 MVC -### 12.1.1 ??? MVC +### 12.1.1 ´«Í³ MVC -??????????????????????????????????????????????? +ÊÓͼʹÓÃ×éºÏģʽ£¬Ä£ÐÍʹÓÃÁ˹۲ìÕßģʽ£¬¿ØÖÆÆ÷ʹÓÃÁ˲ßÂÔģʽ¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/4f67611d-492f-4958-9fa0-4948010e345f.jpg) -### 12.1.2 Web ?§Ö? MVC +### 12.1.2 Web ÖÐµÄ MVC -????????¨´???????? +ģʽ²»ÔÙʹÓù۲ìÕßģʽ¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/1dd56e61-2970-4d27-97c2-6e81cee86978.jpg) -# ?? 13 ?? ????????? +# µÚ 13 Õ ÓëÉè¼ÆÄ£Ê½Ïà´¦ -???‰Ø??? **??** ??????? **????** ????? **???????**?? +¶¨Ò壺ÔÚij **Çé¾³** Ï£¬Õë¶Ôij **ÎÊÌâ** µÄijÖÖ **½â¾ö·½°¸**¡£ -????????????????????????????????????????????????????????????????????????????????????? +¹ý¶ÈʹÓÃÉè¼ÆÄ£Ê½¿ÉÄܵ¼Ö´úÂë±»¹ý¶È¹¤³Ì»¯£¬Ó¦¸Ã×ÜÊÇÓÃ×î¼òµ¥µÄ½â¾ö·½°¸Íê³É¹¤×÷£¬²¢ÔÚÕæÕýÐèҪģʽµÄµØ·½²ÅʹÓÃËü¡£ -???????????????????????????????????????????ÖÎ??????§»????????? +·´Ä£Ê½£º²»ºÃµÄ½â¾ö·½°¸À´½â¾öÒ»¸öÎÊÌâ¡£Ö÷Òª×÷ÓÃÊÇΪÁ˾¯¸æ²»ÒªÊ¹ÓÃÕâЩ½â¾ö·½°¸¡£ -?????? +ģʽ·ÖÀࣺ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/524a237c-ffd7-426f-99c2-929a6bf4c847.jpg) -# ?? 14 ?? ?????? // TODO +# µÚ 14 Õ ʣϵÄģʽ // TODO diff --git a/notes/é‡�æž„.md b/notes/é‡�æž„.md index 53a6b7b2..a7d15340 100644 --- a/notes/é‡�æž„.md +++ b/notes/é‡�æž„.md @@ -1,300 +1,300 @@ -* [????? ?????????](#?????-?????????) -* [????? ??????](#?????-??????) -* [?????? ??????¦Æ??](#??????-??????¦Æ??) - * [1. Duplicated Code?????????](#1-duplicated-code?????????) - * [2. Long Method????????????](#2-long-method????????????) - * [3. Large Class?????????](#3-large-class?????????) - * [4. Long Parameter List????????????§µ?](#4-long-parameter-list????????????§å?) - * [5. Divergent Change???????�£??](#5-divergent-change???????�£??) - * [6. Shotgun Surgery??????????](#6-shotgun-surgery??????????) - * [7. Feature Envy?????????](#7-feature-envy?????????) - * [8. Data Clumps???????????](#8-data-clumps???????????) - * [9. Primitive Obsession??????????????](#9-primitive-obsession??????????????) - * [10. Switch Statements??switch ???????](#10-switch-statements??switch-???????) - * [11. Parallel Inheritance Hierarchies????§Þ???????](#11-parallel-inheritance-hierarchies????§Þ???????) - * [12. Lazy Class????????](#12-lazy-class????????) - * [13. Speculative Generality????????¦Ä?????](#13-speculative-generality????????¦Ä?????) - * [14. Temporary Field???????????????¦²?](#14-temporary-field???????????????¦Ò?) - * [15. Message Chains?????????????????](#15-message-chains?????????????????) - * [16. Middle Man???§Þ????](#16-middle-man???§Þ????) - * [17. Inappropriate Intimacy??????????](#17-inappropriate-intimacy??????????) - * [18. Alernative Classes with Different Interfaces?????????????](#18-alernative-classes-with-different-interfaces?????????????) - * [19. Incomplete Library Class?????????????](#19-incomplete-library-class?????????????) - * [20. Data Class?????????????](#20-data-class?????????????) - * [21. Refused Bequest???????????????](#21-refused-bequest???????????????) - * [22. Comments???????????](#22-comments???????????) -* [?????? ???????????](#??????-???????????) -* [?????? ????§Ò?](#??????-????§Ò?) -* [?????? ???????????](#??????-???????????) - * [1. Extract Method????????????](#1-extract-method????????????) - * [2. Inline Method????????????](#2-inline-method????????????) - * [3. Inline Temp???????????????](#3-inline-temp???????????????) - * [4. Replace Temp with Query??????????????????](#4-replace-temp-with-query??????????????????) - * [5. Introduce Explaining Variable??????????????](#5-introduce-explaining-variable??????????????) - * [6. Split Temporary Variable??????????????](#6-split-temporary-variable??????????????) - * [7. Remove Assigments to Parameters????????????????](#7-remove-assigments-to-parameters????????????????) - * [8. Replace Method with Method Object????????????????????](#8-replace-method-with-method-object????????????????????) - * [9. Subsititute Algorithn???�I????](#9-subsititute-algorithn???�I????) -* [?????? ???????????????](#??????-???????????????) - * [1. Move Method???????????](#1-move-method???????????) - * [2. Move Field????????¦²?](#2-move-field????????¦Ò?) - * [3. Extract Class????????](#3-extract-class????????) - * [4. Inline Class??????????????](#4-inline-class??????????????) - * [5. Hide Delegate?????????§Û??????](#5-hide-delegate?????????§Û??????) - * [6. Remove Middle Man??????§Þ????](#6-remove-middle-man??????§Þ????) - * [7. Introduce Foreign Method??????????????](#7-introduce-foreign-method??????????????) - * [8. Introduce Local Extension?????????????](#8-introduce-local-extension?????????????) -* [????? ???????????](#?????-???????????) - * [1. Self Encapsulate Field????????¦²?](#1-self-encapsulate-field????????¦Ò?) - * [2. Replace Data Value with Object?????????????????](#2-replace-data-value-with-object?????????????????) - * [3. Change Value to Reference??????????????????](#3-change-value-to-reference??????????????????) - * [4. Change Reference to value??????????????????](#4-change-reference-to-value??????????????????) - * [5. Replace Array with Object?????????????ï‚](#5-replace-array-with-object?????????????ï‚) - * [6. Duplicate Observed Data????????????????????](#6-duplicate-observed-data????????????????????) - * [7. Change Unidirectional Association to Bidirectional??????????????????????](#7-change-unidirectional-association-to-bidirectional??????????????????????) - * [8. Change Bidirectional Association to Unidirectional??????????????????????](#8-change-bidirectional-association-to-unidirectional??????????????????????) - * [9. Replace Magic Number with Symbolic Constant???????Æü????????????](#9-replace-magic-number-with-symbolic-constant???????Æü????????????) - * [10. Encapsulate Field???????¦²?](#10-encapsulate-field???????¦Ò?) - * [11. Encapsulate Collection??????????](#11-encapsulate-collection??????????) - * [12. Replace Record with Data Class??????????????????](#12-replace-record-with-data-class??????????????????) - * [13. Replace Type Code with Class???????????????](#13-replace-type-code-with-class???????????????) - * [14. Replace Type Code with Subcalsses?????????????????](#14-replace-type-code-with-subcalsses?????????????????) - * [15. Replace Type Code with State/Strategy ???? State/Strategy ?????????](#15-replace-type-code-with-statestrategy-????-statestrategy-?????????) - * [16. Replace Subclass with Fields??????????????](#16-replace-subclass-with-fields??????????????) -* [????? ??????????](#?????-??????????) - * [1. Decompose Conditional???????????????](#1-decompose-conditional???????????????) - * [2. Consolidate Conditional Expression???????????????](#2-consolidate-conditional-expression???????????????) - * [3. Consolidate Duplicate Conditional Fragments ????????????????¦²?](#3-consolidate-duplicate-conditional-fragments-????????????????¦Ò?) - * [4. Remove Control Flag????????????](#4-remove-control-flag????????????) - * [5. Replace Nested Conditional with Guard Clauses ?????????????????????????](#5-replace-nested-conditional-with-guard-clauses-?????????????????????????) - * [6. Replace Conditional with Polymorphism ???????????????????](#6-replace-conditional-with-polymorphism-???????????????????) - * [7. Introduce Null Object??????Null????](#7-introduce-null-object??????null????) - * [8. Introduce Assertion??????????](#8-introduce-assertion??????????) -* [????? ?????????](#?????-?????????) - * [1. Rename Method????????????](#1-rename-method????????????) - * [2. Add Parameter??????????](#2-add-parameter??????????) - * [3. Remove Parameter???????????](#3-remove-parameter???????????) - * [4. Separate Query from Modifier???????????????????????](#4-separate-query-from-modifier???????????????????????) - * [5. Parameterize Method??????§Á????????](#5-parameterize-method??????§ñ????????) - * [6. Replace Parameter with Explicit Methods????????????????????](#6-replace-parameter-with-explicit-methods????????????????????) - * [7. Preserve Whole Object???????????????](#7-preserve-whole-object???????????????) - * [8. Replace Parameter with Methods????????????????](#8-replace-parameter-with-methods????????????????) - * [9. Introduce Parameter Object?????????????](#9-introduce-parameter-object?????????????) - * [10. Remove Setting Method??????????????](#10-remove-setting-method??????????????) - * [11. Hide Method???????????](#11-hide-method???????????) - * [12. Replace Constructor with Factory Method ??????????????????????](#12-replace-constructor-with-factory-method-??????????????????????) - * [13. Encapsulate Downcast?????????????](#13-encapsulate-downcast?????????????) - * [14. Replace Error Code with Exception ???????????????](#14-replace-error-code-with-exception-???????????????) - * [15. Replace Exception with Test??????????????](#15-replace-exception-with-test??????????????) -* [?????? ??????????](#??????-??????????) - * [1. Pull Up Field??????????](#1-pull-up-field??????????) - * [2. Pull Up Method???????????](#2-pull-up-method???????????) - * [3. Pull Up Constructor Body?????????????????](#3-pull-up-constructor-body?????????????????) - * [4. Push Down Method???????????](#4-push-down-method???????????) - * [5. Push Down Field??????????](#5-push-down-field??????????) - * [6. Extract Subclass??????????](#6-extract-subclass??????????) - * [7. Extract Superclass??????????](#7-extract-superclass??????????) - * [8. Extract Interface??????????](#8-extract-interface??????????) - * [9. Collapse Hierarchy?????????????](#9-collapse-hierarchy?????????????) - * [10. Form Template Method????????Žï????](#10-form-template-method????????Žï????) - * [11. Replace Inheritance with Delegation ????????????§µ?](#11-replace-inheritance-with-delegation-????????????§å?) - * [12. Replace Delegation with Inheritance ???????????§µ?](#12-replace-delegation-with-inheritance-???????????§å?) +* [µÚÒ»Õ µÚÒ»¸ö°¸Àý](#µÚÒ»ÕÂ-µÚÒ»¸ö°¸Àý) +* [µÚ¶þÕÂ ÖØ¹¹Ô­Ôò](#µÚ¶þÕÂ-ÖØ¹¹Ô­Ôò) +* [µÚÈýÕ ´úÂëµÄ»µÎ¶µÀ](#µÚÈýÕÂ-´úÂëµÄ»µÎ¶µÀ) + * [1. Duplicated Code£¨Öظ´´úÂ룩](#1-duplicated-codeÖØ¸´´úÂë) + * [2. Long Method£¨¹ý³¤º¯Êý£©](#2-long-method¹ý³¤º¯Êý) + * [3. Large Class£¨¹ý´óµÄÀࣩ](#3-large-class¹ý´óµÄÀà) + * [4. Long Parameter List£¨¹ý³¤µÄ²ÎÊýÁУ©](#4-long-parameter-list¹ý³¤µÄ²ÎÊýÁÐ) + * [5. Divergent Change£¨·¢É¢Ê½±ä»¯£©](#5-divergent-change·¢É¢Ê½±ä»¯) + * [6. Shotgun Surgery£¨É¢µ¯Ê½Ð޸ģ©](#6-shotgun-surgeryÉ¢µ¯Ê½ÐÞ¸Ä) + * [7. Feature Envy£¨ÒÀÁµÇé½á£©](#7-feature-envyÒÀÁµÇé½á) + * [8. Data Clumps£¨Êý¾ÝÄàÍÅ£©](#8-data-clumpsÊý¾ÝÄàÍÅ) + * [9. Primitive Obsession£¨»ù±¾ÀàÐÍÆ«Ö´£©](#9-primitive-obsession»ù±¾ÀàÐÍÆ«Ö´) + * [10. Switch Statements£¨switch ¾ªã¤ÏÖÉí£©](#10-switch-statementsswitch-¾ªã¤ÏÖÉí) + * [11. Parallel Inheritance Hierarchies£¨Æ½Ðм̳ÐÌåϵ£©](#11-parallel-inheritance-hierarchiesƽÐм̳ÐÌåϵ) + * [12. Lazy Class£¨ÈßÓàÀࣩ](#12-lazy-classÈßÓàÀà) + * [13. Speculative Generality£¨¿ä¿äÆä̸δÀ´ÐÔ£©](#13-speculative-generality¿ä¿äÆä̸δÀ´ÐÔ) + * [14. Temporary Field£¨ÁîÈËÃÔ»óµÄÔÝʱ×ֶΣ©](#14-temporary-fieldÁîÈËÃÔ»óµÄÔÝʱ×Ö¶Î) + * [15. Message Chains£¨¹ý¶ÈñîºÏµÄÏûÏ¢Á´£©](#15-message-chains¹ý¶ÈñîºÏµÄÏûÏ¢Á´) + * [16. Middle Man£¨ÖмäÈË£©](#16-middle-manÖмäÈË) + * [17. Inappropriate Intimacy£¨áòêǹØÏµ£©](#17-inappropriate-intimacyáòêǹØÏµ) + * [18. Alernative Classes with Different Interfaces£¨ÒìÇúͬ¹¤µÄÀࣩ](#18-alernative-classes-with-different-interfacesÒìÇúͬ¹¤µÄÀà) + * [19. Incomplete Library Class£¨²»ÍêÃÀµÄÀà¿â£©](#19-incomplete-library-class²»ÍêÃÀµÄÀà¿â) + * [20. Data Class£¨Ó×ÖɵÄÊý¾ÝÀࣩ](#20-data-classÓ×ÖɵÄÊý¾ÝÀà) + * [21. Refused Bequest£¨±»¾Ü¾øµÄÀ¡Ôù£©](#21-refused-bequest±»¾Ü¾øµÄÀ¡Ôù) + * [22. Comments£¨¹ý¶àµÄ×¢ÊÍ£©](#22-comments¹ý¶àµÄ×¢ÊÍ) +* [µÚËÄÕ ¹¹Öþ²âÊÔÌåϵ](#µÚËÄÕÂ-¹¹Öþ²âÊÔÌåϵ) +* [µÚÎåÕÂ ÖØ¹¹Áбí](#µÚÎåÕÂ-ÖØ¹¹Áбí) +* [µÚÁùÕÂ ÖØÐÂ×éÖ¯º¯Êý](#µÚÁùÕÂ-ÖØÐÂ×éÖ¯º¯Êý) + * [1. Extract Method£¨ÌáÁ¶º¯Êý£©](#1-extract-methodÌáÁ¶º¯Êý) + * [2. Inline Method£¨ÄÚÁªº¯Êý£©](#2-inline-methodÄÚÁªº¯Êý) + * [3. Inline Temp£¨ÄÚÁªÁÙʱ±äÁ¿£©](#3-inline-tempÄÚÁªÁÙʱ±äÁ¿) + * [4. Replace Temp with Query£¨ÒÔ²éѯȡ´úÁÙʱ±äÁ¿£©](#4-replace-temp-with-queryÒÔ²éѯȡ´úÁÙʱ±äÁ¿) + * [5. Introduce Explaining Variable£¨ÒýÆð½âÊͱäÁ¿£©](#5-introduce-explaining-variableÒýÆð½âÊͱäÁ¿) + * [6. Split Temporary Variable£¨·Ö½âÁÙʱ±äÁ¿£©](#6-split-temporary-variable·Ö½âÁÙʱ±äÁ¿) + * [7. Remove Assigments to Parameters£¨ÒƳý¶Ô²ÎÊýµÄ¸³Öµ£©](#7-remove-assigments-to-parametersÒÆ³ý¶Ô²ÎÊýµÄ¸³Öµ) + * [8. Replace Method with Method Object£¨ÒÔº¯Êý¶ÔÏóÈ¡´úº¯Êý£©](#8-replace-method-with-method-objectÒÔº¯Êý¶ÔÏóÈ¡´úº¯Êý) + * [9. Subsititute Algorithn£¨Ìæ»»Ëã·¨£©](#9-subsititute-algorithnÌæ»»Ëã·¨) +* [µÚÆßÕ ÔÚ¶ÔÏóÖ®¼ä°áÒÆÌØÐÔ](#µÚÆßÕÂ-ÔÚ¶ÔÏóÖ®¼ä°áÒÆÌØÐÔ) + * [1. Move Method£¨°áÒÆº¯Êý£©](#1-move-method°áÒÆº¯Êý) + * [2. Move Field£¨°áÒÆ×ֶΣ©](#2-move-field°áÒÆ×Ö¶Î) + * [3. Extract Class£¨ÌáÁ¶Àࣩ](#3-extract-classÌáÁ¶Àà) + * [4. Inline Class£¨½«ÀàÄÚÁª»¯£©](#4-inline-class½«ÀàÄÚÁª»¯) + * [5. Hide Delegate£¨Òþ²Ø¡°Î¯ÍйØÏµ¡±£©](#5-hide-delegateÒþ²Ø¡°Î¯ÍйØÏµ¡±) + * [6. Remove Middle Man£¨ÒƳýÖмäÈË£©](#6-remove-middle-manÒÆ³ýÖмäÈË) + * [7. Introduce Foreign Method£¨ÒýÈëÍâ¼Óº¯Êý£©](#7-introduce-foreign-methodÒýÈëÍâ¼Óº¯Êý) + * [8. Introduce Local Extension£¨ÒýÈë±¾µØÀ©Õ¹£©](#8-introduce-local-extensionÒýÈë±¾µØÀ©Õ¹) +* [µÚ°ËÕÂ ÖØÐÂ×éÖ¯Êý¾Ý](#µÚ°ËÕÂ-ÖØÐÂ×éÖ¯Êý¾Ý) + * [1. Self Encapsulate Field£¨×Ô·â×°×ֶΣ©](#1-self-encapsulate-field×Ô·â×°×Ö¶Î) + * [2. Replace Data Value with Object£¨ÒÔ¶ÔÏóÈ¡´úÊý¾ÝÖµ£©](#2-replace-data-value-with-objectÒÔ¶ÔÏóÈ¡´úÊý¾ÝÖµ) + * [3. Change Value to Reference£¨½«Öµ¶ÔÏó¸Ä³ÉÒýÓöÔÏó£©](#3-change-value-to-reference½«Öµ¶ÔÏó¸Ä³ÉÒýÓöÔÏó) + * [4. Change Reference to value£¨½«ÒýÓöÔÏó¸ÄΪֵ¶ÔÏó£©](#4-change-reference-to-value½«ÒýÓöÔÏó¸ÄΪֵ¶ÔÏó) + * [5. Replace Array with Object£¨ÒÔ¶ÔÏóÈ¡´úÊý×飩](#5-replace-array-with-objectÒÔ¶ÔÏóÈ¡´úÊý×é) + * [6. Duplicate Observed Data£¨¸³Öµ¡°±»¼àÊÓÊý¾Ý¡±£©](#6-duplicate-observed-data¸³Öµ¡°±»¼àÊÓÊý¾Ý¡±) + * [7. Change Unidirectional Association to Bidirectional£¨½«µ¥Ïò¹ØÁª¸ÄΪ˫Ïò¹ØÁª£©](#7-change-unidirectional-association-to-bidirectional½«µ¥Ïò¹ØÁª¸ÄΪ˫Ïò¹ØÁª) + * [8. Change Bidirectional Association to Unidirectional£¨½«Ë«Ïò¹ØÁª¸ÄΪµ¥Ïò¹ØÁª£©](#8-change-bidirectional-association-to-unidirectional½«Ë«Ïò¹ØÁª¸ÄΪµ¥Ïò¹ØÁª) + * [9. Replace Magic Number with Symbolic Constant£¨ÒÔ×ÖÃæ³£Á¿È¡´úħ·¨Êý£©](#9-replace-magic-number-with-symbolic-constantÒÔ×ÖÃæ³£Á¿È¡´úħ·¨Êý) + * [10. Encapsulate Field£¨·â×°×ֶΣ©](#10-encapsulate-field·â×°×Ö¶Î) + * [11. Encapsulate Collection£¨·â×°¼¯ºÏ£©](#11-encapsulate-collection·â×°¼¯ºÏ) + * [12. Replace Record with Data Class£¨ÒÔÊý¾ÝÀàÈ¡´ú¼Ç¼£©](#12-replace-record-with-data-classÒÔÊý¾ÝÀàÈ¡´ú¼Ç¼) + * [13. Replace Type Code with Class£¨ÒÔÀàÈ¡´úÀàÐÍÂ룩](#13-replace-type-code-with-classÒÔÀàÈ¡´úÀàÐÍÂë) + * [14. Replace Type Code with Subcalsses£¨ÒÔ×ÓÀàÈ¡´úÀàÐÍÂ룩](#14-replace-type-code-with-subcalssesÒÔ×ÓÀàÈ¡´úÀàÐÍÂë) + * [15. Replace Type Code with State/Strategy £¨ÒÔ State/Strategy È¡´úÀàÐÍÂ룩](#15-replace-type-code-with-statestrategy-ÒÔ-statestrategy-È¡´úÀàÐÍÂë) + * [16. Replace Subclass with Fields£¨ÒÔ×Ö¶ÎÈ¡´ú×ÓÀࣩ](#16-replace-subclass-with-fieldsÒÔ×Ö¶ÎÈ¡´ú×ÓÀà) +* [µÚ¾ÅÕ ¼ò»¯Ìõ¼þ±í´ïʽ](#µÚ¾ÅÕÂ-¼ò»¯Ìõ¼þ±í´ïʽ) + * [1. Decompose Conditional£¨·Ö½âÌõ¼þ±í´ïʽ£©](#1-decompose-conditional·Ö½âÌõ¼þ±í´ïʽ) + * [2. Consolidate Conditional Expression£¨ºÏ²¢Ìõ¼þ±í´ïʽ£©](#2-consolidate-conditional-expressionºÏ²¢Ìõ¼þ±í´ïʽ) + * [3. Consolidate Duplicate Conditional Fragments £¨ºÏ²¢Öظ´µÄÌõ¼þƬ¶Î£©](#3-consolidate-duplicate-conditional-fragments-ºÏ²¢Öظ´µÄÌõ¼þƬ¶Î) + * [4. Remove Control Flag£¨ÒƳý¿ØÖƱê¼Ç£©](#4-remove-control-flagÒÆ³ý¿ØÖƱê¼Ç) + * [5. Replace Nested Conditional with Guard Clauses £¨ÒÔÎÀÓï¾äÈ¡´úǶÌ×Ìõ¼þ±í´ïʽ£©](#5-replace-nested-conditional-with-guard-clauses-ÒÔÎÀÓï¾äÈ¡´úǶÌ×Ìõ¼þ±í´ïʽ) + * [6. Replace Conditional with Polymorphism £¨ÒÔ¶à̬ȡ´úÌõ¼þ±í´ïʽ£©](#6-replace-conditional-with-polymorphism-ÒÔ¶à̬ȡ´úÌõ¼þ±í´ïʽ) + * [7. Introduce Null Object£¨ÒýÈëNull¶ÔÏó£©](#7-introduce-null-objectÒýÈënull¶ÔÏó) + * [8. Introduce Assertion£¨ÒýÈë¶ÏÑÔ£©](#8-introduce-assertionÒýÈë¶ÏÑÔ) +* [µÚʮՠ¼ò»¯º¯Êýµ÷ÓÃ](#µÚÊ®ÕÂ-¼ò»¯º¯Êýµ÷ÓÃ) + * [1. Rename Method£¨º¯Êý¸ÄÃû£©](#1-rename-methodº¯Êý¸ÄÃû) + * [2. Add Parameter£¨Ìí¼Ó²ÎÊý£©](#2-add-parameterÌí¼Ó²ÎÊý) + * [3. Remove Parameter£¨ÒƳý²ÎÊý£©](#3-remove-parameterÒÆ³ý²ÎÊý) + * [4. Separate Query from Modifier£¨½«²éѯº¯ÊýºÍÐ޸ĺ¯Êý·ÖÀ룩](#4-separate-query-from-modifier½«²éѯº¯ÊýºÍÐ޸ĺ¯Êý·ÖÀë) + * [5. Parameterize Method£¨ÁÊýЯ´ø²ÎÊý£©](#5-parameterize-methodÁÊýЯ´ø²ÎÊý) + * [6. Replace Parameter with Explicit Methods£¨ÒÔÃ÷È·º¯ÊýÈ¡´ú²ÎÊý£©](#6-replace-parameter-with-explicit-methodsÒÔÃ÷È·º¯ÊýÈ¡´ú²ÎÊý) + * [7. Preserve Whole Object£¨±£³Ö¶ÔÏóÍêÕû£©](#7-preserve-whole-object±£³Ö¶ÔÏóÍêÕû) + * [8. Replace Parameter with Methods£¨ÒÔº¯ÊýÈ¡´ú²ÎÊý£©](#8-replace-parameter-with-methodsÒÔº¯ÊýÈ¡´ú²ÎÊý) + * [9. Introduce Parameter Object£¨ÒýÈë²ÎÊý¶ÔÏó£©](#9-introduce-parameter-objectÒýÈë²ÎÊý¶ÔÏó) + * [10. Remove Setting Method£¨ÒƳýÉèÖµº¯Êý£©](#10-remove-setting-methodÒÆ³ýÉèÖµº¯Êý) + * [11. Hide Method£¨Òþ²Øº¯Êý£©](#11-hide-methodÒþ²Øº¯Êý) + * [12. Replace Constructor with Factory Method £¨ÒÔ¹¤³§º¯ÊýÈ¡´ú¹¹Ô캯Êý£©](#12-replace-constructor-with-factory-method-ÒÔ¹¤³§º¯ÊýÈ¡´ú¹¹Ô캯Êý) + * [13. Encapsulate Downcast£¨·â×°ÏòÏÂתÐÍ£©](#13-encapsulate-downcast·â×°ÏòÏÂתÐÍ) + * [14. Replace Error Code with Exception £¨ÒÔÒ쳣ȡ´ú´íÎóÂ룩](#14-replace-error-code-with-exception-ÒÔÒ쳣ȡ´ú´íÎóÂë) + * [15. Replace Exception with Test£¨ÒÔ²âÊÔÈ¡´úÒì³££©](#15-replace-exception-with-testÒÔ²âÊÔÈ¡´úÒì³£) +* [µÚʮһÕ ´¦Àí¸ÅÀ¨¹ØÏµ](#µÚʮһÕÂ-´¦Àí¸ÅÀ¨¹ØÏµ) + * [1. Pull Up Field£¨×Ö¶ÎÉÏÒÆ£©](#1-pull-up-field×Ö¶ÎÉÏÒÆ) + * [2. Pull Up Method£¨º¯ÊýÉÏÒÆ£©](#2-pull-up-methodº¯ÊýÉÏÒÆ) + * [3. Pull Up Constructor Body£¨¹¹Ô캯Êý±¾ÌåÉÏÒÆ£©](#3-pull-up-constructor-body¹¹Ô캯Êý±¾ÌåÉÏÒÆ) + * [4. Push Down Method£¨º¯ÊýÏÂÒÆ£©](#4-push-down-methodº¯ÊýÏÂÒÆ) + * [5. Push Down Field£¨×Ö¶ÎÏÂÒÆ£©](#5-push-down-field×Ö¶ÎÏÂÒÆ) + * [6. Extract Subclass£¨ÌáÁ¶×ÓÀࣩ](#6-extract-subclassÌáÁ¶×ÓÀà) + * [7. Extract Superclass£¨ÌáÁ¶³¬Àࣩ](#7-extract-superclassÌáÁ¶³¬Àà) + * [8. Extract Interface£¨ÌáÁ¶½Ó¿Ú£©](#8-extract-interfaceÌáÁ¶½Ó¿Ú) + * [9. Collapse Hierarchy£¨ÕÛµþ¼Ì³ÐÌåϵ£©](#9-collapse-hierarchyÕÛµþ¼Ì³ÐÌåϵ) + * [10. Form Template Method£¨ËÜÔìÄ£°åº¯Êý£©](#10-form-template-methodËÜÔìÄ£°åº¯Êý) + * [11. Replace Inheritance with Delegation £¨ÒÔίÍÐÈ¡´ú¼Ì³Ð£©](#11-replace-inheritance-with-delegation-ÒÔίÍÐÈ¡´ú¼Ì³Ð) + * [12. Replace Delegation with Inheritance £¨ÒԼ̳ÐÈ¡´úίÍУ©](#12-replace-delegation-with-inheritance-ÒԼ̳ÐÈ¡´úίÍÐ) -# ????? ????????? +# µÚÒ»Õ µÚÒ»¸ö°¸Àý -????????????????????????????????????????????????????????????????????? +Èç¹ûÄã·¢ÏÖ×Ô¼ºÐèҪΪ³ÌÐòÌí¼ÓÒ»¸öÌØÐÔ£¬¶ø´úÂë½á¹¹Ê¹ÄãÎÞ·¨ºÜ·½±ãµØ´ï³ÉÄ¿µÄ£¬ÄǾÍÏÈÖØ¹¹Õâ¸ö³ÌÐò¡£ -??????????????????????????????????????????? +ÔÚÖØ¹¹Ç°£¬ÐèÒªÏȹ¹½¨ºÃ¿É¿¿µÄ²âÊÔ»·¾³£¬È·±£°²È«µØÖع¹¡£ -????????§³????????????????????????????????????? +ÖØ¹¹ÊÇÒÔ΢СµÄ²½·¥Ð޸ijÌÐò£¬Èç¹û·¸Ï´íÎ󣬺ÜÈÝÒ×±ã¿ÉÒÔ·¢ÏÖËü¡£ -**????????** +**°¸Àý·ÖÎö** -?????????¨®????????????Movie??Rental ?? Customer??Rental ????????? Movie ????????? +ӰƬ³ö×âµêÓ¦ÓóÌÐò£¬°üÀ¨Èý¸öÀࣺMovie¡¢Rental ºÍ Customer£¬Rental °üº¬×âÁÞµÄ Movie ÒÔ¼°ÌìÊý¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/a758c8b2-0ac7-438f-90c2-3923ffad6328.png) -??????????????§Ö?????????? Customer ???§µ???�£?????????????????????§Ú???????????§á????????�£?§µ??????????????????????????????????????????????????????????????????????????§Þ???????????? +×ʼµÄʵÏÖÊǰÑËùÓеļƷѴúÂë¶¼·ÅÔÚ Customer ÀàÖУ¬Ôڱ仯·¢Éúʱ£¬ÐèÒª¶ÔÕⲿ·Ö´úÂë½øÐиü¸Ä¡£±¾°¸ÀýÖпÉÄÜ·¢ÉúµÄ±ä»¯ÓУºÒ»ÖÖÀà±ðµÄ¼Æ·Ñ·½Ê½·¢Éú¸Ä±ä£»Ìí¼ÓеĵçÓ°Àà±ð¡£¿¼Âǵ½¼Æ·Ñ´úÂë¿ÉÄÜ´æÔÚÓÚ¶à´¦£¬Ò»µ©·¢Éú¸Ä±äʱ£¬¾ÍÐèÒª¶ÔËùÓмƷѴúÂë½øÐÐÐ޸ġ£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/9e5e3cc6-3107-4051-b584-8ff077638fe6.png) -???????? Movie ????????????????????? Movie ?????????????????????????§³? +ÒÔÏÂÊǼ̳РMovie µÄ¶à̬·½°¸¡£µ«ÊÇÓÉÓÚÒ»²¿ Movie µÄÀà±ð»á¶¯Ì¬¸Ä±ä£¬Òò´ËÕâÖÖ·½°¸²»¿ÉÐС£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/2a502516-5d34-4eef-8f39-916298a60035.png) -???? Price ???????????????????????? Movie ?§Þ??? Price ?????????????????????????????? Price ?????§µ????? Movie ?????????????????????????????????????????�£?? +ÒýÈë Price À´·´Ó¦Àà±ðÐÅÏ¢£¬Í¨¹ý×éºÏµÄ·½Ê½ÔÚ Movie ÖмÓÈë Price ¶ÔÏó£¬ÕâÑùÿÖÖÀà±ðµÄ¼Æ·Ñ·½Ê½¶¼·â×°ÔÚ²»Í¬µÄ Price ×ÓÀàÖУ¬²¢ÇÒ Movie ¶ÔÏóÒ²¿ÉÒÔ¶¯Ì¬¸Ä±äÀà±ð¡£ÕâÖÖ·½Ê½¿ÉÒԺܺõØÊÊÓ¦ÉÏÊöÌáµ½µÄ±ä»¯¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/c02a83b8-a6b9-4d00-a509-6f0516beaf5e.png) -????????????????? +ÖØ¹¹ºóµÄʱÐòͼºÍÀàͼ£º ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/95f4559c-3d2a-4176-b365-4fbc46c76cf1.png) ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/293b9326-02fc-4ad8-8c79-b4a7b5ba60d3.png) -# ????? ?????? +# µÚ¶þÕÂ ÖØ¹¹Ô­Ôò -?????????????????????????????????????????????????????????????????????????????? +ÖØ¹¹ÊǶÔÈí¼þÄÚ²¿½á¹¹µÄÒ»ÖÖµ÷Õû£¬Ä¿µÄÊÇÔÚ²»¸Ä±äÈí¼þ¿É¹Û²ìÐÐΪµÄǰÌáÏ£¬Ìá¸ßÆä¿ÉÀí½âÐÔ£¬½µµÍÆäÐ޸ijɱ¾¡£ -??????????????????????????????????????? bug??????????? +ÖØ¹¹µÄºÃ´¦£º¸Ä½øÈí¼þÉè¼Æ£»Ê¹Èí¼þ¸üÈÝÒ×Àí½â£»°ïÖúÕÒµ½ bug£»Ìá¸ß±à³ÌËÙ¶È¡£ -???¦Ç???????????????????????????????????????????????????????????????????????????? +Èý´Î·¨Ôò£ºµÚÒ»´Î×öij¼þÊÂʱֻ¹ÜÈ¥×ö£»µÚ¶þ´Î×öÀàËÆÊÂÇéʱ¿ÉÒÔÈ¥×ö£»µÚÈý´ÎÔÙ×öÀàËÆµÄÊ£¬¾ÍÓ¦¸ÃÖØ¹¹¡£ -????????????????????§Ö?????????????????????????????????????????????????????????????????????????????�£????????????????????????????????¦Ë?¨°??????????????????????? +¼ä½Ó²ãÓëÖØ¹¹£º¼ÆËã»ú¿ÆÑ§ÖеĺܶàÎÊÌâ¿ÉÒÔͨ¹ýÔö¼ÓÒ»¸ö¼ä½Ó²ãÀ´½â¾ö£¬¼ä½Ó²ã¾ßÓÐÒÔϼÛÖµ£ºÔÊÐíÂß¼­¹²Ïí£»·Ö¿ª½âÊÍÒâͼºÍʵÏÖ£»¸ôÀë±ä»¯£»·â×°Ìõ¼þÂß¼­¡£Öع¹¿ÉÒÔÀí½âΪÔÚÊʵ±µÄλÖòåÈë¼ä½Ó²ãÒÔ¼°ÔÚ²»ÐèÒªÊ±ÒÆ³ý¼ä½Ó²ã¡£ -???????????????????????????????????????? Java ???? @deprecation ????????????¨¢????????§Ò????????????????????????¾ˆ?????? +Ð޸Ľӿڣº¿ÉÒÔ±£Áô¾É½Ó¿Ú£¬ÈþɽӿÚÈ¥µ÷ÓÃнӿڣ¬²¢ÇÒʹÓà Java ÌṩµÄ @deprecation ½«¾É½Ó¿Ú±ê¼ÇΪÆúÓᣳý·ÇÕæÓбØÒª£¬²»Òª·¢²¼½Ó¿Ú£¬²¢ÇÒ²»Òª¹ýÔç·¢²¼½Ó¿Ú¡£ -?????§Õ?????????????????§Õ?????????????????§Ö???????????????????????????????????????§Õ?????????????? +µ±ÏÖÓдúÂë¹ýÓÚ»ìÂÒʱ£¬Ó¦µ±ÖØÐ´¶ø²»ÊÇÖØ¹¹¡£Ò»¸öÕÛÖеİ취ÊÇ£¬½«´úÂë·â×°³ÉÒ»¸ö¸ö×é¼þ£¬È»ºó¶Ô¸÷¸ö×é¼þ×öÖØÐ´»òÕßÖØ¹¹µÄ¾ö¶¨¡£ -?????????????????????????????§Ü??�£????????????????????????????????????????????????????????????????????????????�£??????????????????????�£??????????????????? +Èí¼þ¿ª·¢ÎÞ·¨Ô¤ÏÈÉè¼Æ£¬ÒòΪ¿ª·¢¹ý³ÌÓкܶà±ä»¯·¢Éú£¬ÔÚ×ʼ²»¿ÉÄܶ¼°ÑËùÓÐÇé¿ö¿¼ÂǽøÈ¥¡£Öع¹¿ÉÒÔ¼ò»¯Éè¼Æ£¬Öع¹ÔÚÒ»¸ö¼òµ¥µÄÉè¼ÆÉϽøÐÐÐÞÐ޸ĸ쬵±±ä»¯·¢Éúʱ£¬ÒÔÒ»ÖÖÁé»îµÄ·½Ê½È¥Ó¦¶Ô±ä»¯£¬½ø¶ø´øÀ´¸üºÃµÄÉè¼Æ¡£ -?????????????????????????????????????§Õ?????????????????????????????????????????????????????????????????????????????????§³???????????????? +ΪÁËÈí´úÂë¸üÈÝÒ×Àí½â£¬Öع¹¿ÉÄܻᵼÖÂÐÔÄܼõµÍ¡£ÔÚ±àд´úÂëʱ£¬²»ÓöÔÐÔÄܹý¶à¹Ø×¢£¬Ö»ÓÐÔÚ×îºóÐÔÄÜÓÅ»¯½×¶ÎÔÙ¿¼ÂÇÐÔÄÜÎÊÌâ¡£Ó¦µ±Ö»¹Ø×¢¹Ø¼ü´úÂëµÄÐÔÄÜ£¬ÒòΪֻÓÐһС²¿·ÖµÄ´úÂëÊǹؼü´úÂë¡£ -# ?????? ??????¦Æ?? +# µÚÈýÕ ´úÂëµÄ»µÎ¶µÀ -## 1. Duplicated Code????????? +## 1. Duplicated Code£¨Öظ´´úÂ룩 -?????????????????????????????? Extract Method ???????????? +ͬһ¸öÀàµÄÁ½¸öº¯ÊýÓÐÏàͬ±í´ïʽ£¬ÔòÓà Extract Method ÌáÈ¡³öÖØ¸´´úÂ룻 -???????????????????????????????? Extract Method?????????????????? Pull Up Method ?????? +Á½¸ö»¥ÎªÐֵܵÄ×ÓÀຬÓÐÏàͬµÄ±í´ïʽ£¬ÏÈʹÓà Extract Method£¬È»ºó°ÑÌáÈ¡³öÀ´µÄº¯Êý Pull Up Method ÍÆÈ볬Àà¡£ -???????????????? Extract Method ????????????????????????? Form Template Method ??????Ùã????????? +Èç¹ûÖ»ÊDz¿·ÖÏàͬ£¬Óà Extract Method ·ÖÀë³öÏàËÆ²¿·ÖºÍ²îÒ첿·Ö£¬È»ºóʹÓà Form Template Method ÕâÖÖÄ£°å·½·¨Éè¼ÆÄ£Ê½¡£ -???????????????????????????????? Extract Class ????????????????????????????§³? +Èç¹ûÁ½¸öºÁ²»Ïà¹ØµÄÀà³öÏÖÖØ¸´´úÂ룬ÔòʹÓà Extract Class ·½·¨½«Öظ´´úÂëÌáÈ¡µ½Ò»¸ö¶ÀÁ¢ÀàÖС£ -## 2. Long Method???????????? +## 2. Long Method£¨¹ý³¤º¯Êý£© -?????????????????????????????????????? +¼ä½Ó²ãµÄ¼ÛÖµ£º½âÊÍÄÜÁ¦¡¢¹²ÏíÄÜÁ¦¡¢Ñ¡ÔñÄÜÁ¦£» -??????????????????????????¦Ä????????????????????§Õ???????????????§³? +·Ö½âº¯ÊýµÄÔ­Ôò£ºµ±ÐèÒªÓÃ×¢ÊÍÀ´ËµÃ÷Ò»¶Î´úÂëʱ£¬¾ÍÐèÒª°ÑÕⲿ·Ö´úÂëдÈëÒ»¸ö¶ÀÁ¢µÄº¯ÊýÖС£ -Extract Method ??????????????????????????????????? Replace Temp with Query ?????????????Introduce Parameter Object ?? Preserve Whole Object ???????????????§Ò?????? +Extract Method »á°ÑºÜ¶à²ÎÊýºÍÁÙʱ±äÁ¿¶¼µ±×ö²ÎÊý£¬¿ÉÒÔÓà Replace Temp with Query Ïû³ýÁÙʱ±äÁ¿£¬Introduce Parameter Object ºÍ Preserve Whole Object ¿ÉÒÔ½«¹ý³¤µÄ²ÎÊýÁбäµÃ¸ü¼ò½à¡£ -?????????????????????????????§³? +Ìõ¼þºÍÑ­»·ÍùÍùÒ²ÐèÒªÌáÈ¡µ½Ðµĺ¯ÊýÖС£ -## 3. Large Class????????? +## 3. Large Class£¨¹ý´óµÄÀࣩ -?????????????????ï…?????? Extract Class ?? Extract Subclass?? +¹ý´óµÄÀà×öÁ˹ý¶àÊÂÇ飬ÐèҪʹÓà Extract Class »ò Extract Subclass¡£ -???????????????????????????? Extract Interface ???????¡Â?????????????? +ÏÈÈ·¶¨¿Í»§¶ËÈçºÎʹÓÃËüÃÇ£¬È»ºóÔËÓà Extract Interface ΪÿһÖÖʹÓ÷½Ê½ÌáÈ¡³öÒ»¸ö½Ó¿Ú¡£ -## 4. Long Parameter List????????????§µ? +## 4. Long Parameter List£¨¹ý³¤µÄ²ÎÊýÁУ© -## 5. Divergent Change???????�£?? +## 5. Divergent Change£¨·¢É¢Ê½±ä»¯£© -????????????�£????? +Ò»¸öÀàÊܵ½¶àÖֱ仯µÄÓ°Ï죻 -??????????�£????? Extract Class ????????????????§³? +Õë¶ÔijÖÖÔ­ÒòµÄ±ä»¯£¬Ê¹Óà Extract Class ½«ËüÌáÁ¶µ½Ò»¸öÀàÖС£ -## 6. Shotgun Surgery?????????? +## 6. Shotgun Surgery£¨É¢µ¯Ê½Ð޸ģ© -????�£???????????? +Ò»¸ö±ä»¯ÒýÆð¶à¸öÀàÐ޸ģ» -??? Move Method ?? Move Field ?????????????????????????§³? +ʹÓà Move Method ºÍ Move Field °ÑËùÓÐÐèÒªÐ޸ĵشúÂë·Åµ½Í¬Ò»¸öÀàÖС£ -## 7. Feature Envy????????? +## 7. Feature Envy£¨ÒÀÁµÇé½á£© -????????????????????????????????????????????????????????????? +Ò»¸öº¯Êý¶Ôij¸öÀàµÄÐËȤ¸ßÓÚ¶Ô×Ô¼ºËù´¦ÀàµÄÐËȤ£¬Í¨³£Êǹý¶à·ÃÎÊÆäËüÀàµÄÊý¾Ý¡£ -??? Move Method ??????????????????????????? Feature Envy?????? Extract Method ?????????????? +ʹÓà Move Method ½«ËüÒÆµ½¸ÃÈ¥µÄµØ·½£¬Èç¹û¶Ô¶à¸öÀà¶¼ÓÐ Feature Envy£¬ÏÈÓà Extract Method ÌáÈ¡³ö¶à¸öº¯Êý¡£ -## 8. Data Clumps??????????? +## 8. Data Clumps£¨Êý¾ÝÄàÍÅ£© -??§»??????????????????????????????????¦±????????????????????? Extract Class ???????????? +ÓÐЩÊý¾Ý¾­³£Ò»Æð³öÏÖ£¬±ÈÈçÁ½¸öÀà¾ßÓÐÏàͬµÄ×ֶΡ¢Ðí¶àº¯ÊýÓÐÏàͬµÄ²ÎÊý¡£Ê¹Óà Extract Class ½«ËüÃÇ·ÅÔÚÒ»Æð¡£ -## 9. Primitive Obsession?????????????? +## 9. Primitive Obsession£¨»ù±¾ÀàÐÍÆ«Ö´£© -???????????????????????????? Replace Data Value with Object ????????�I????? +ʹÓÃÀàÍùÍù±ÈʹÓûù±¾ÀàÐ͸üºÃ£¬Ê¹Óà Replace Data Value with Object ½«Êý¾ÝÖµÌæ»»Îª¶ÔÏó¡£ -## 10. Switch Statements??switch ??????? +## 10. Switch Statements£¨switch ¾ªã¤ÏÖÉí£© -## 11. Parallel Inheritance Hierarchies????§Þ??????? +## 11. Parallel Inheritance Hierarchies£¨Æ½Ðм̳ÐÌåϵ£© -??????????????????????????????????????????????? +ÿµ±ÎªÄ³¸öÀàÔö¼ÓÒ»¸ö×ÓÀ࣬±ØÐëҲΪÁíÒ»¸öÀàÏàÓ¦Ôö¼ÓÒ»¸ö×ÓÀà¡£ -????????????§»????????????????????????????????????????????????????????????? +ÕâÖÖ½á¹û»á´øÀ´Ò»Ð©Öظ´ÐÔ£¬Ïû³ýÖØ¸´ÐÔµÄÒ»°ã²ßÂÔ£ºÈÃÒ»¸ö¼Ì³ÐÌåϵµÄʵÀýÒýÓÃÁíÒ»¸ö¼Ì³ÐÌåϵµÄʵÀý¡£ -## 12. Lazy Class???????? +## 12. Lazy Class£¨ÈßÓàÀࣩ -????????????????????????????????? +Èç¹ûÒ»¸öÀàûÓÐ×ö×ã¹»¶àµÄ¹¤×÷£¬¾ÍÓ¦¸ÃÏûʧ¡£ -## 13. Speculative Generality????????¦Ä????? +## 13. Speculative Generality£¨¿ä¿äÆä̸δÀ´ÐÔ£© -??§»??????????????¦Ä???????????�£?????????????????????????????????????¦Ä????????????????????????????????????????????????????????? +ÓÐЩÄÚÈÝÊÇÓÃÀ´´¦ÀíδÀ´¿ÉÄÜ·¢ÉúµÄ±ä»¯£¬µ«ÊÇÍùÍù»áÔì³ÉϵͳÄÑÒÔÀí½âºÍά»¤£¬²¢ÇÒÔ¤²âδÀ´¿ÉÄÜ·¢ÉúµÄ¸Ä±äºÜ¿ÉÄܺÍ×ʼµÄÉèÏëÏà·´¡£Òò´Ë£¬Èç¹û²»ÊDZØÒª£¬¾Í²»ÒªÕâô×ö¡£ -## 14. Temporary Field???????????????¦²? +## 14. Temporary Field£¨ÁîÈËÃÔ»óµÄÔÝʱ×ֶΣ© -?????¦Í??????????????Ñk?????????????????????????????????????????????????¦±? +ij¸ö×ֶνöΪijÖÖÌØ¶¨Çé¿ö¶øÉ裬ÕâÑùµÄ´úÂë²»Ò×Àí½â£¬ÒòΪͨ³£ÈÏΪ¶ÔÏóÔÚËùÓÐʱºò¶¼ÐèÒªËüµÄËùÓÐ×ֶΡ£ -????????¦Ê?????????????????? Extract Class ????????????????§³? +°ÑÕâÖÖ×ֶκÍÌØ¶¨Çé¿öµÄ´¦Àí²Ù×÷ʹÓà Extract Class ÌáÁ¶µ½Ò»¸ö¶ÀÁ¢ÀàÖС£ -## 15. Message Chains????????????????? +## 15. Message Chains£¨¹ý¶ÈñîºÏµÄÏûÏ¢Á´£© -??????????????????????????????????????????????...????????????????????????????¦Æ????????????????????????? +Ò»¸ö¶ÔÏóÇëÇóÁíÒ»¸ö¶ÔÏó£¬È»ºóÔÙÏòºóÕßÇëÇóÁíÒ»¸ö¶ÔÏó£¬È»ºó...£¬Õâ¾ÍÊÇÏûÏ¢Á´¡£²ÉÓÃÕâÖÖ·½Ê½£¬Òâζ×ſͻ§´úÂ뽫Óë¶ÔÏó¼äµÄ¹ØÏµ½ôÃÜñîºÏ¡£ -???¨²????????¨²????????????????????? +¸ÄÓú¯ÊýÁ´£¬Óú¯ÊýίÍÐÁíÒ»¸ö¶ÔÏóÀ´´¦Àí¡£ -## 16. Middle Man???§Þ???? +## 16. Middle Man£¨ÖмäÈË£© -?§Þ??????????§Ú?????????????????????§Û???????????§Ú?????????????????????§µ???? Remove Middle Man????????????????? +ÖмäÈ˸ºÔð´¦ÀíίÍиøËüµÄ²Ù×÷£¬Èç¹ûÒ»¸öÀàÖÐÓйý¶àµÄº¯Êý¶¼Î¯ÍиøÆäËüÀ࣬ÄǾÍÊǹý¶ÈÔËÓÃίÍУ¬Ó¦µ± Remove Middle Man£¬Ö±½ÓÓ븺ÔðµÄ¶ÔÏó´ò½»µÀ¡£ -## 17. Inappropriate Intimacy?????????? +## 17. Inappropriate Intimacy£¨áòêǹØÏµ£© -??????????????????????????????? private ???? +Á½¸öÀà¶àÓÚÇ×ÃÜ£¬»¨·ÑÌ«¶àʱ¼äȥ̽ÌÖ±Ë´ËµÄ private ³É·Ö¡£ -## 18. Alernative Classes with Different Interfaces????????????? +## 18. Alernative Classes with Different Interfaces£¨ÒìÇúͬ¹¤µÄÀࣩ -## 19. Incomplete Library Class????????????? +## 19. Incomplete Library Class£¨²»ÍêÃÀµÄÀà¿â£© -?????????????????????????????????????????????§»????????????????????????????????????????????????? Introduce Foreign Method???????????????????????? Introduce Local Extension?? +Àà¿âµÄÉè¼ÆÕß²»¿ÉÄÜÉè¼Æ³öÍêÃÀµÄÀà¿â£¬µ±ÎÒÃÇÐèÒª¶ÔÀà¿â½øÐÐһЩÐÞ¸Äʱ£¬¿ÉÒÔʹÓÃÒÔÏÂÁ½ÖÖ·½·¨£ºÈç¹ûÖ»ÊÇÐÞ¸ÄÒ»Á½¸öº¯Êý£¬Ê¹Óà Introduce Foreign Method£»Èç¹ûÒªÌí¼ÓÒ»´ó¶Ñ¶îÍâÐÐΪ£¬Ê¹Óà Introduce Local Extension¡£ -## 20. Data Class????????????? +## 20. Data Class£¨Ó×ÖɵÄÊý¾ÝÀࣩ -???????§»??????¦±? +ËüÖ»ÓµÓÐһЩÊý¾Ý×ֶΡ£ -????????????????????????????? Data Class ?§³? +ÕÒ³ö×Ö¶ÎʹÓõĵط½£¬È»ºó°ÑÏàÓ¦µÄ²Ù×÷ÒÆµ½ Data Class ÖС£ -## 21. Refused Bequest??????????????? +## 21. Refused Bequest£¨±»¾Ü¾øµÄÀ¡Ôù£© -?????§Ô???????§Ü?????????????????????????? +×ÓÀà¼Ì³Ð³¬ÀàµÄËùÓк¯ÊýºÍÊý¾Ý£¬µ«ÊÇËüÖ»ÏëÒªÒ»²¿·Ö¡£ -??????????????????????????????????? Push Down Method ?? Push Down Field ???????????? +Ϊ×ÓÀàн¨Ò»¸öÐÖµÜÀ࣬²»ÐèÒªµÄº¯Êý»òÊý¾ÝʹÓà Push Down Method ºÍ Push Down Field ÏÂÍÆ¸øÄǸöÐֵܡ£ -## 22. Comments??????????? +## 22. Comments£¨¹ý¶àµÄ×¢ÊÍ£© -??? Extract Method ?????????????????????¨²????????????????????? +ʹÓà Extract Method ÌáÁ¶³öÐèҪעÊ͵IJ¿·Ö£¬È»ºóÓú¯ÊýÃûÀ´½âÊͺ¯ÊýµÄÐÐΪ¡£ -# ?????? ??????????? +# µÚËÄÕ ¹¹Öþ²âÊÔÌåϵ -Java ??????? Junit ???§Ö??????? +Java ¿ÉÒÔʹÓà Junit ½øÐе¥Ôª²âÊÔ¡£ -????????????????????????????????????????????????§³? +µ¥Ôª²âÊԵĶÔÏóÊÇÀàµÄ·½·¨£¬¶ø¹¦ÄܲâÒÔ¿Í»§µÄ½Ç¶È±£Ö¤Èí¼þÕý³£ÔËÐС£ -??????§Ó?????????????????? +Ó¦µ±¼¯ÖвâÊÔ¿ÉÄܳö´íµÄ±ß½çÌõ¼þ¡£ -# ?????? ????§Ò? +# µÚÎåÕÂ ÖØ¹¹Áбí -§³??????????????? +С²½Ç°½ø£¬Æµ·±²âÊÔ¡£ -# ?????? ??????????? +# µÚÁùÕÂ ÖØÐÂ×éÖ¯º¯Êý -## 1. Extract Method???????????? +## 1. Extract Method£¨ÌáÁ¶º¯Êý£© -????¦Ä?????????????????§µ????¨²??????????¨²?????????? +½«Õâ¶Î´úÂë·Å½øÒ»¸ö¶ÀÁ¢º¯ÊýÖУ¬²¢Èú¯ÊýÃû³Æ½âÊ͸ú¯ÊýµÄÓÃ;¡£ -## 2. Inline Method???????????? +## 2. Inline Method£¨ÄÚÁªº¯Êý£© -????????????????????????????? +Ò»¸öº¯ÊýµÄ±¾ÌåÓëÃû³ÆÍ¬ÑùÇå³þÒ×¶®¡£ -??????????????????ÈÉ???????¨²????? +ÔÚº¯Êýµ÷Óõã²åÈ뺯Êý±¾Ì壬ȻºóÒÆ³ý¸Ãº¯Êý¡£ -## 3. Inline Temp??????????????? +## 3. Inline Temp£¨ÄÚÁªÁÙʱ±äÁ¿£© -?????????????????????????¦²??????????????????????? +Ò»¸öÁÙʱ±äÁ¿£¬Ö»±»¼òµ¥±í´ïʽ¸³ÖµÒ»´Î£¬¶øËü·Á°­ÁËÆäËüÖØ¹¹ÊÖ·¨¡£ -?????§Ø????????????�I????????????????????? +½«ËùÓжԸñäÁ¿µÄÒýÓÃÌæ»»Îª¶ÔËü¸³ÖµµÄÄǸö±í´ïʽ×ÔÉí¡£ ```java double basePrice = anOrder.basePrice(); @@ -305,9 +305,9 @@ return basePrice > 1000; return anOrder.basePrice() > 1000; ``` -## 4. Replace Temp with Query?????????????????? +## 4. Replace Temp with Query£¨ÒÔ²éѯȡ´úÁÙʱ±äÁ¿£© -????????????????????????????????????????????????????????§µ??????§Ø????????????????�I????????????¨¢?Replace Temp with Query ?????? Extract Method ????????????????Ñk??????????????????????????? +ÒÔÁÙʱ±äÁ¿±£´æÄ³Ò»±í´ïʽµÄÔËËã½á¹û£¬½«Õâ¸ö±í´ïʽÌáÁ¶µ½Ò»¸ö¶ÀÁ¢º¯ÊýÖУ¬½«ËùÓжÔÁÙʱ±äÁ¿µÄÒýÓõãÌæ»»Îª¶Ôк¯ÊýµÄµ÷Óá£Replace Temp with Query ÍùÍùÊÇ Extract Method ֮ǰ±Ø²»¿ÉÉÙµÄÒ»¸ö²½Ö裬ÒòΪ¾Ö²¿±äÁ¿»áʹ´úÂëÄÑÒÔÌáÁ¶¡£ ```java double basePrice = quantity * itemPrice; @@ -329,9 +329,9 @@ double basePrice(){ } ``` -## 5. Introduce Explaining Variable?????????????? +## 5. Introduce Explaining Variable£¨ÒýÆð½âÊͱäÁ¿£© -?????????????????????????????????????????????????????????????????? +½«¸´ÔÓ±í´ïʽ£¨»òÆäÖÐÒ»²¿·Ö£©µÄ½á¹û·Å½øÒ»¸öÁÙʱ±äÁ¿£¬ÒԴ˱äÁ¿Ãû³ÆÀ´½âÊͱí´ïʽÓÃ;¡£ ```java if((platform.toUpperCase().indexOf("MAC") > -1) && @@ -351,15 +351,15 @@ if(isMacOS && isIEBrower && wasInitialized() && wasResized) { } ``` -## 6. Split Temporary Variable?????????????? +## 6. Split Temporary Variable£¨·Ö½âÁÙʱ±äÁ¿£© -?????????????????????¦²????????????????????????????????????? +ij¸öÁÙʱ±äÁ¿±»¸³Öµ³¬¹ýÒ»´Î£¬Ëü¼È²»ÊÇÑ­»·±äÁ¿£¬Ò²²»ÊÇÓÃÓÚÊÕ¼¯¼ÆËã½á¹û¡£ -?????¦È???????????????????????????????????????????§Ö???????¦±? +Õë¶Ôÿ´Î¸³Öµ£¬´´ÔìÒ»¸ö¶ÀÁ¢¡¢¶ÔÓ¦µÄÁÙʱ±äÁ¿£¬Ã¿¸öÁÙʱ±äÁ¿Ö»³Ðµ£Ò»¸öÔðÈΡ£ -## 7. Remove Assigments to Parameters???????????????? +## 7. Remove Assigments to Parameters£¨ÒƳý¶Ô²ÎÊýµÄ¸³Öµ£© -?????????????????¨°????????? +ÒÔÒ»¸öÁÙʱ±äÁ¿È¡´ú¶Ô¸Ã²ÎÊýµÄ¸³Öµ¡£ ```java int discount (int inputVal, int quentity, int yearToDate){ @@ -372,39 +372,39 @@ int discount (int inputVal, int quentity, int yearToDate){ if (inputVal > 50) result -= 2; ``` -## 8. Replace Method with Method Object???????????????????? +## 8. Replace Method with Method Object£¨ÒÔº¯Êý¶ÔÏóÈ¡´úº¯Êý£© -?????????????????? Extract Method ????????????????????¨²?????§Ú¨°????? +µ±¶ÔÒ»¸ö´óÐͺ¯Êý²ÉÓà Extract Method ʱ£¬ÓÉÓÚ°üº¬Á˾ֲ¿±äÁ¿Ê¹µÃºÜÄѽøÐиòÙ×÷¡£ -????????????????????????§µ???????????????????????????¦±??????????????????§ß??????????????????§³??????? +½«Õâ¸öº¯Êý·Å½øÒ»¸öµ¥¶À¶ÔÏóÖУ¬Èç´ËÒ»À´¾Ö²¿±äÁ¿¾Í³ÉÁ˶ÔÏóÄÚµÄ×ֶΡ£È»ºó¿ÉÒÔÔÚͬһ¸ö¶ÔÏóÖн«Õâ¸ö´óÐͺ¯Êý·Ö½âΪ¶à¸öСÐͺ¯Êý¡£ -## 9. Subsititute Algorithn???�I???? +## 9. Subsititute Algorithn£¨Ìæ»»Ëã·¨£© -# ?????? ??????????????? +# µÚÆßÕ ÔÚ¶ÔÏóÖ®¼ä°áÒÆÌØÐÔ -## 1. Move Method??????????? +## 1. Move Method£¨°áÒÆº¯Êý£© -???§Ö???????????????????§Ú??????????¨²?????????????¨¢? +ÀàÖеÄij¸öº¯ÊýÓëÁíÒ»¸öÀà½øÐиü¶à½»Á÷£ºµ÷ÓúóÕß»òÕß±»ºóÕßµ÷Óᣠ-??????????????????????§³? +½«Õâ¸öº¯Êý°áÒÆµ½ÁíÒ»¸öÀàÖС£ -## 2. Move Field????????¦²? +## 2. Move Field£¨°áÒÆ×ֶΣ© -???§Ö??????¦Á???????????????????????????????????????????????????????????????§³? +ÀàÖеÄij¸ö×ֶα»ÁíÒ»¸öÀà¸ü¶àµØÓõ½£¬ÕâÀïµÄÓõ½ÊÇÖ¸µ÷ÓÃȡֵÉèÖµº¯Êý£¬Ó¦µ±°Ñ¸Ã×Ö¶ÎÒÆµ½ÁíÒ»¸öÀàÖС£ -## 3. Extract Class???????? +## 3. Extract Class£¨ÌáÁ¶Àࣩ -??????????????????????????? +ij¸öÀà×öÁËÓ¦µ±ÓÉÁ½¸öÀà×öµÄÊ¡£ -??????????????????????¦Ê????????????????? +Ó¦µ±½¨Á¢Ò»¸öÐÂÀ࣬½«Ïà¹ØµÄ×ֶκͺ¯Êý´Ó¾ÉÀà°áÒÆµ½ÐÂÀà¡£ -## 4. Inline Class?????????????? +## 4. Inline Class£¨½«ÀàÄÚÁª»¯£© -?? Extract Class ???? +Óë Extract Class Ïà·´¡£ -## 5. Hide Delegate?????????§Û?????? +## 5. Hide Delegate£¨Òþ²Ø¡°Î¯ÍйØÏµ¡±£© -????????????????????§Û???? +½¨Á¢ËùÐèµÄº¯Êý£¬Òþ²ØÎ¯ÍйØÏµ¡£ ```java class Person{ @@ -424,13 +424,13 @@ class Department{ } ``` -?????????????????????????????? Department ?????????????????? Department ???????? +Èç¹û¿Í»§Ï£ÍûÖªµÀijÈ˵ľ­ÀíÊÇË­£¬±ØÐë»ñµÃ Department ¶ÔÏó£¬ÕâÑù¾Í¶Ô¿Í»§½Ò¶ÁË Department µÄ¹¤×÷Ô­Àí¡£ ```java Person manager = john.getDepartment().getManager(); ``` -???? Peron ???????????????????????§Û???? +ͨ¹ýΪ Peron ½¨Á¢Ò»¸öº¯ÊýÀ´Òþ²ØÕâÖÖίÍйØÏµ¡£ ```java public Person getManager(){ @@ -438,61 +438,61 @@ public Person getManager(){ } ``` -## 6. Remove Middle Man??????§Þ???? +## 6. Remove Middle Man£¨ÒƳýÖмäÈË£© -?? Hide Delegate ??????????????????§Ü???????????????????? +Óë Hide Delegate Ïà·´£¬±¾·½·¨ÐèÒªÒÆ³ýίÍк¯Êý£¬Èÿͻ§Ö±½Óµ÷ÓÃίÍÐÀà¡£ -Hide Delegate ?§Ü???????????????????????????????????????????????????????????????????????§Ü?????????????§Ö?????????????????????????????????§Þ?????? +Hide Delegate ÓкܴóºÃ´¦£¬µ«ÊÇËüµÄ´ú¼ÛÊÇ£ºÃ¿µ±¿Í»§ÒªÊ¹ÓÃÊÜÍÐÀàµÄÐÂÌØÐÔʱ£¬¾Í±ØÐëÔÚ·þÎñÆ÷¶ËÌí¼ÓÒ»¸ö¼òµ¥µÄίÍк¯Êý¡£Ëæ×ÅÊÜίÍеÄÌØÐÔÔ½À´Ô½¶à£¬·þÎñÆ÷ÀàÍêÈ«±ä³ÉÁËÒ»¸ö¡°ÖмäÈË¡±¡£ -## 7. Introduce Foreign Method?????????????? +## 7. Introduce Foreign Method£¨ÒýÈëÍâ¼Óº¯Êý£© -???????????????????????????????????????? +ÐèҪΪÌṩ·þÎñµÄÀàÌí¼ÓÒ»¸öº¯Êý£¬µ«ÊÇÎÞ·¨ÐÞ¸ÄÕâ¸öÀà¡£ -???????????§ß??????????????????????????????????????????????????????????????? +¿ÉÒÔÔÚ¿Í»§ÀàÖн¨Á¢Ò»¸öº¯Êý£¬²¢ÒÔµÚÒ»²ÎÊýÐÎʽ´«ÈëÒ»¸ö·þÎñÀàµÄʵÀý£¬Èÿͻ§Àà×éºÏ·þÎñÆ÷ʵÀý¡£ -## 8. Introduce Local Extension????????????? +## 8. Introduce Local Extension£¨ÒýÈë±¾µØÀ©Õ¹£© -?? Introduce Foreign Method ???????????? Introduce Local Extension ?????????????????????????????????????????????????????????????????????????? +ºÍ Introduce Foreign Method Ä¿µÄÒ»Ñù£¬µ«ÊÇ Introduce Local Extension ͨ¹ý½¨Á¢ÐµÄÀàÀ´ÊµÏÖ¡£ÓÐÁ½ÖÖ·½Ê½£º×ÓÀà»òÕß°ü×°À࣬×ÓÀà¾ÍÊÇͨ¹ý¼Ì³ÐʵÏÖ£¬°ü×°Àà¾ÍÊÇͨ¹ý×éºÏʵÏÖ¡£ -# ????? ??????????? +# µÚ°ËÕÂ ÖØÐÂ×éÖ¯Êý¾Ý -## 1. Self Encapsulate Field????????¦²? +## 1. Self Encapsulate Field£¨×Ô·â×°×ֶΣ© -???¦Í?????/???????????????§»????????????¦±???§Ö???????????????????¦²????????????§ß????????¦Ç??????????????????????????????????????????¦Å??????????? +Ϊ×ֶν¨Á¢È¡Öµ/ÉèÖµº¯Êý£¬²¢ÓÃÕâЩº¯ÊýÀ´·ÃÎÊ×ֶΡ£Ö»Óе±×ÓÀàÏë·ÃÎʳ¬ÀàµÄÒ»¸ö×ֶΣ¬ÓÖÏëÔÚ×ÓÀàÖн«¶ÔÕâ¸ö×ֶηÃÎʸÄΪһ¸ö¼ÆËãºóµÄÖµ£¬²ÅʹÓÃÕâÖÖ·½Ê½£¬·ñÔòÖ±½Ó·ÃÎÊ×ֶεķ½Ê½¼ò½àÃ÷ÁË¡£ -## 2. Replace Data Value with Object????????????????? +## 2. Replace Data Value with Object£¨ÒÔ¶ÔÏóÈ¡´úÊý¾ÝÖµ£© -?????????????????¨¹?????????????????????????????????§µ??§»?????????????§»????????????????????´Â??????????????????????´Â????????????????????????????????????????? +ÔÚ¿ª·¢³õÆÚ£¬ÍùÍù»áÓüòµ¥µÄÊý¾ÝÏî±íʾ¼òµ¥µÄÇé¿ö£¬µ«ÊÇËæ×Å¿ª·¢µÄ½øÐУ¬Ò»Ð©¼òµ¥Êý¾ÝÏî»á¾ßÓÐÒ»Ð©ÌØÊâÐÐΪ¡£±ÈÈçÒ»¿ªÊ¼»á°Ñµç»°ºÅÂë´æ³É×Ö·û´®£¬µ«ÊÇËæºó·¢Ïֵ绰ºÅÂëÐèÒª¡°¸ñʽ»¯¡±¡¢¡°³éÈ¡ÇøºÅ¡±Ö®ÀàµÄÌØÊâÐÐΪ¡£ -## 3. Change Value to Reference?????????????????? +## 3. Change Value to Reference£¨½«Öµ¶ÔÏó¸Ä³ÉÒýÓöÔÏó£© -?????????????�I????????????????????????????????¦·???????????????????????????????????§Ò???????????????????????????§Ò?????????????????????????????§Ò??§Ö??????????????????????????§Ò??§µ??????????? +½«±Ë´ËÏàµÈµÄʵÀýÌæ»»ÎªÍ¬Ò»¸ö¶ÔÏó¡£Õâ¾ÍÒªÓÃÒ»¸ö¹¤³§À´´´½¨ÕâÖÖΨһ¶ÔÏ󣬹¤³§ÀàÖÐÐèÒª±£ÁôÒ»·ÝÒѾ­´´½¨¶ÔÏóµÄÁÐ±í£¬µ±Òª´´½¨Ò»¸ö¶ÔÏóʱ£¬ÏȲéÕÒÕâ·ÝÁбíÖÐÊÇ·ñÒѾ­´æÔڸöÔÏó£¬Èç¹û´æÔÚ£¬Ôò·µ»ØÁбíÖеÄÕâ¸ö¶ÔÏó£»·ñÔò£¬Ð½¨Ò»¸ö¶ÔÏó£¬Ìí¼Óµ½ÁбíÖУ¬²¢·µ»Ø¸Ã¶ÔÏó¡£ -## 4. Change Reference to value?????????????????? +## 4. Change Reference to value£¨½«ÒýÓöÔÏó¸ÄΪֵ¶ÔÏó£© -?? Change Value to Reference ??????????§Ú??????????????????????????????????????????????????????????????�I????????????????? +ÒÔ Change Value to Reference Ïà·´¡£Öµ¶ÔÏóÓиö·Ç³£ÖØÒªµÄÌØÐÔ£ºËüÊDz»¿É±äµÄ£¬²»¿É±ä±íʾÈç¹ûÒª¸Ä±äÕâ¸ö¶ÔÏ󣬱ØÐëÓÃÒ»¸öеĶÔÏóÀ´Ìæ»»¾É¶ÔÏ󣬶ø²»ÊÇÐ޸ľɶÔÏó¡£ -???????????? equals() ?? hashCode() ???? +ÐèҪΪֵ¶ÔÏóʵÏÖ equals() ºÍ hashCode() ·½·¨ -## 5. Replace Array with Object?????????????ï‚ +## 5. Replace Array with Object£¨ÒÔ¶ÔÏóÈ¡´úÊý×飩 -????????ï…???§Ö?????????????????? +ÓÐÒ»¸öÊý×飬ÆäÖеÄÔªËØ¸÷×Ô´ú±í²»Í¬µÄ¶«Î÷¡£ -??????�I???ï…?????????§Ö?????????????????????????????????????????????? +ÒÔ¶ÔÏóÌæ»»Êý×飬¶ÔÓÚÊý×éÖеÄÿ¸öÔªËØ£¬ÒÔÒ»¸ö×Ö¶ÎÀ´±íʾ£¬ÕâÑù·½±ã²Ù×÷£¬Ò²¸üÈÝÒ×Àí½â¡£ -## 6. Duplicate Observed Data???????????????????? +## 6. Duplicate Observed Data£¨¸³Öµ¡°±»¼àÊÓÊý¾Ý¡±£© -?§»?????????????? GUI ????§µ??????????????????§»????? +һЩÁìÓòÊý¾ÝÖÃÉíÓÚ GUI ¿Ø¼þÖУ¬¶øÁìÓòº¯ÊýÐèÒª·ÃÎÊÕâЩÊý¾Ý¡£ -???????????????????????§µ???????? Oberver ??????????????????? GUI ??????????????? +½«¸ÃÊý¾Ý¸³Öµµ½Ò»¸öÁìÓò¶ÔÏóÖУ¬½¨Á¢Ò»¸ö Oberver ģʽ£¬ÓÃÒÔͬ²½ÁìÓò¶ÔÏóºÍ GUI ¶ÔÏóÄÚµÄÖØ¸´Êý¾Ý¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/e024bd7e-fb4e-4239-9451-9a6227f50b00.jpg) -## 7. Change Unidirectional Association to Bidirectional?????????????????????? +## 7. Change Unidirectional Association to Bidirectional£¨½«µ¥Ïò¹ØÁª¸ÄΪ˫Ïò¹ØÁª£© -?????????????????????????????????????? +µ±Á½¸öÀà¶¼ÐèÒª¶Ô·½µÄÌØÐÔʱ£¬¿ÉÒÔʹÓÃË«Ïò¹ØÁª¡£ -???????????????? Order ???? Customer??Order ?????? Customer??Customer ???????? Order ?????????§Ø??????î• +ÓÐÁ½¸öÀ࣬·Ö±ðΪ¶©µ¥ Order ºÍ¿Í»§ Customer£¬Order ÒýÓÃÁË Customer£¬Customer Ò²ÐèÒªÒýÓà Order À´²é¿´ÆäËùÓж©µ¥ÏêÇé¡£ ```java class Order{ @@ -517,59 +517,59 @@ class Curstomer{ } ``` -??????????? Curstomer ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? +×¢Òâµ½£¬ÕâÀïÈà Curstomer ÀàÀ´¿ØÖƹØÁª¹ØÏµ¡£ÓÐÒÔÏÂÔ­ÔòÀ´¾ö¶¨ÄĸöÀàÀ´¿ØÖƹØÁª¹ØÏµ£ºÈç¹ûij¸ö¶ÔÏóÊÇ×é³ÉÁíÒ»¸ö¶ÔÏóµÄ²¿¼þ£¬ÄÇôÓɺóÕ߸ºÔð¿ØÖƹØÁª¹ØÏµ£»Èç¹ûÊÇÒ»¶Ô¶à¹ØÏµ£¬ÔòÓɵ¥Ò»ÒýÓÃÄÇÒ»·½À´¿ØÖƹØÁª¹ØÏµ¡£ -## 8. Change Bidirectional Association to Unidirectional?????????????????????? +## 8. Change Bidirectional Association to Unidirectional£¨½«Ë«Ïò¹ØÁª¸ÄΪµ¥Ïò¹ØÁª£© -?? Change Unidirectional Association to Bidirectiona ????????? +ºÍ Change Unidirectional Association to Bidirectiona Ϊ·´²Ù×÷¡£ -?????????????????????????????????????????????????¨À??????????????????????????????????????§µ??????????????????????????? +Ë«Ïò¹ØÁªÎ¬»¤³É±¾¸ß£¬²¢ÇÒÒ²²»Ò×ÓÚÀí½â¡£´óÁ¿µÄË«ÏòÁ¬½ÓºÜÈÝÒ×Ôì³É¡°½©Ê¬¶ÔÏó¡±£ºÄ³¸ö¶ÔÏó±¾ÉíÒѾ­ËÀÍöÁË£¬È´±£ÁôÔÚϵͳÖУ¬ÒòΪËüµÄÒýÓû¹Ã»ÓÐÈ«²¿ÍêÈ«Çå³ý¡£ -## 9. Replace Magic Number with Symbolic Constant???????Æü???????????? +## 9. Replace Magic Number with Symbolic Constant£¨ÒÔ×ÖÃæ³£Á¿È¡´úħ·¨Êý£© -???????????????????????????????????????Æü????¦Ë????????? +´´½¨Ò»¸ö³£Á¿£¬¸ù¾ÝÆäÒâÒåΪËüÃüÃû£¬²¢½«×ÖÃæ³£Á¿»»Î»Õâ¸ö³£Á¿¡£ -## 10. Encapsulate Field???????¦²? +## 10. Encapsulate Field£¨·â×°×ֶΣ© -public ????????? private??????????????????? +public ×Ö¶ÎÓ¦µ±¸ÄΪ private£¬²¢ÌṩÏàÓ¦µÄ·ÃÎʺ¯Êý¡£ -## 11. Encapsulate Collection?????????? +## 11. Encapsulate Collection£¨·â×°¼¯ºÏ£© -????????????????????????????????????????/?????????????????????????????????????????????????????????????????????????? +º¯Êý·µ»Ø¼¯ºÏµÄÒ»¸öÖ»¶Á¸±±¾£¬²¢ÔÚÕâ¸öÀàÖÐÌṩÌí¼Ó/ÒÆ³ý¼¯ºÏÔªËØµÄº¯Êý¡£Èç¹ûº¯Êý·µ»Ø¼¯ºÏ×ÔÉí£¬»áÈÃÓû§µÃÒÔÐ޸ļ¯ºÏÄÚÈݶø¼¯ºÏÓµÓÐÕßÈ´Ò»ÎÞËùÖª¡£ -## 12. Replace Record with Data Class?????????????????? +## 12. Replace Record with Data Class£¨ÒÔÊý¾ÝÀàÈ¡´ú¼Ç¼£© -## 13. Replace Type Code with Class??????????????? +## 13. Replace Type Code with Class£¨ÒÔÀàÈ¡´úÀàÐÍÂ룩 -?????????????????????????????????????????????????�I????????????????????????? switch ????§µ??????? Replace Conditional with Polymorphism ??? switch????????????? Replace Type Code with Subcalss ?? Replace Type Code with State/Strategy ????????? +ÀàÖÐÓÐÒ»¸öÊýÖµÀàÐÍÂ룬µ«Ëü²¢²»Ó°ÏìÀàµÄÐÐΪ£¬¾ÍÓÃÒ»¸öÐÂÀàÌæ»»¸ÃÊýÖµÀàÐÍÂë¡£Èç¹ûÀàÐÍÂë³öÏÖÔÚ switch Óï¾äÖУ¬ÐèҪʹÓà Replace Conditional with Polymorphism È¥µô switch£¬Ê×ÏȱØÐëÔËÓà Replace Type Code with Subcalss »ò Replace Type Code with State/Strategy È¥µôÀàÐÍÂë¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/27c2e0b3-8f95-453d-bedc-6398a8566ce9.jpg) -## 14. Replace Type Code with Subcalsses????????????????? +## 14. Replace Type Code with Subcalsses£¨ÒÔ×ÓÀàÈ¡´úÀàÐÍÂ룩 -?????????????????????????????????????????????????? +ÓÐÒ»¸ö²»¿É±äµÄÀàÐÍÂ룬Ëü»áÓ°ÏìÀàµÄÐÐΪ£¬ÒÔ×ÓÀàÈ¡´úÕâ¸öÀàÐÍÂë¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/c41d3977-e0e7-4ee4-93e1-d84f1ae3e20e.jpg) -## 15. Replace Type Code with State/Strategy ???? State/Strategy ????????? +## 15. Replace Type Code with State/Strategy £¨ÒÔ State/Strategy È¡´úÀàÐÍÂ룩 -??????????????????????????????????????????????? +ÓÐÒ»¸ö¿É±äµÄÀàÐÍÂ룬Ëü»áÓ°ÏìÀàµÄÐÐΪ£¬ÒÔ״̬¶ÔÏóÈ¡´úÀàÐÍÂë¡£ -?? Replace Type Code with Subcalsses ???????? Replace Type Code with State/Strategy ?????????????????????????§Ö???????????????????????????????????????????????§Ö???????????????????????????????????????????????????????????????????????????????????????????????????????? +ºÍ Replace Type Code with Subcalsses µÄÇø±ðÊÇ Replace Type Code with State/Strategy µÄÀàÐÍÂëÊǶ¯Ì¬¿É±äµÄ£¬Ç°Õßͨ¹ý¼Ì³ÐµÄ·½Ê½À´ÊµÏÖ£¬ºóÕßͨ¹ý×éºÏµÄ·½Ê½À´ÊµÏÖ¡£ÒòΪÀàÐÍÂë¿É±ä£¬Èç¹ûͨ¹ý¼Ì³ÐµÄ·½Ê½£¬Ò»µ©Ò»¸ö¶ÔÏóµÄÀàÐÍÂë¸Ä±ä£¬ÄÇô¾ÍÒª¸Ä±äÓÃеĶÔÏóÀ´È¡´ú¾É¶ÔÏ󣬶ø¿Í»§¶ËÄÑÒԸıäеĶÔÏó¡£µ«ÊÇͨ¹ý×éºÏµÄ·½Ê½£¬¸Ä±äÒýÓõÄ״̬ÀàÊǺÜÈÝÒ׵ġ£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/81fd1d6f-a3b2-4160-9a0a-1f7cb50ba440.jpg) -## 16. Replace Subclass with Fields?????????????? +## 16. Replace Subclass with Fields£¨ÒÔ×Ö¶ÎÈ¡´ú×ÓÀࣩ -?????????¦·???????????????????????????? +¸÷¸ö×ÓÀàµÄΨһ²î±ðÖ»ÔÚ¡°·µ»Ø³£Á¿Êý¾Ý¡±µÄº¯ÊýÉÏ¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/f2e0cee9-ecdc-4a96-853f-d9f6a1ad6ad1.jpg) -# ????? ?????????? +# µÚ¾ÅÕ ¼ò»¯Ìõ¼þ±í´ïʽ -## 1. Decompose Conditional??????????????? +## 1. Decompose Conditional£¨·Ö½âÌõ¼þ±í´ïʽ£© -???????????????????????? if??then??else ?????????§Ù?????????????????? +¶ÔÓÚÒ»¸ö¸´ÔÓµÄÌõ¼þÓï¾ä£¬¿ÉÒÔ´Ó if¡¢then¡¢else Èý¸ö¶ÎÂäÖзֱðÌáÁ¶³ö¶ÀÁ¢º¯Êý¡£ ```java if(data.befor(SUMMER_START) || data.after(SUMMER_END)) @@ -583,11 +583,11 @@ if(notSummer(date)) else charge = summerCharge(quantity); ``` -## 2. Consolidate Conditional Expression??????????????? +## 2. Consolidate Conditional Expression£¨ºÏ²¢Ìõ¼þ±í´ïʽ£© -???????????????????????????? +ÓÐһϵÁÐÌõ¼þ²âÊÔ£¬¶¼µÃµ½Ïàͬ½á¹û¡£ -????§»??????????????????????????????????????????????????????? +½«ÕâЩ²âÊԺϲ¢ÎªÒ»¸öÌõ¼þ±í´ïʽ£¬²¢½«Õâ¸öÌõ¼þ±í´ïʽÌáÁ¶³ÉΪһ¸ö¶ÀÁ¢º¯Êý¡£ ```java double disabilityAmount(){ @@ -604,11 +604,11 @@ double disabilityAmount(){ } ``` -## 3. Consolidate Duplicate Conditional Fragments ????????????????¦²? +## 3. Consolidate Duplicate Conditional Fragments £¨ºÏ²¢Öظ´µÄÌõ¼þƬ¶Î£© -???????????????????????????????¦Ä??? +ÔÚÌõ¼þ±í´ïʽµÄÿ¸ö·ÖÖ§ÉÏÓÐ×ÅÏàͬµÄÒ»¶Î´úÂë¡£ -??????????????????????????? +½«Õâ¶ÎÖØ¸´´úÂë°áÒÆµ½Ìõ¼þ±í´ïʽ֮Íâ¡£ ```java if (isSpecialDeal()){ @@ -629,17 +629,17 @@ if (isSpecialDeal()) { send(); ``` -## 4. Remove Control Flag???????????? +## 4. Remove Control Flag£¨ÒƳý¿ØÖƱê¼Ç£© -?????§Ó????????§µ???????????§³?????????????¨¢? +ÔÚһϵÁв¼¶û±í´ïʽÖУ¬Ä³¸ö±äÁ¿´øÓС°¿ØÖƱê¼Ç¡±µÄ×÷Óᣠ-?? break?? ??? return ??????????????? +Óà breakÓï ¾ä»ò return Óï¾äÀ´È¡´ú¿ØÖƱê¼Ç¡£ -## 5. Replace Nested Conditional with Guard Clauses ????????????????????????? +## 5. Replace Nested Conditional with Guard Clauses £¨ÒÔÎÀÓï¾äÈ¡´úǶÌ×Ìõ¼þ±í´ïʽ£© -?????????????�‹????????????????????????????????????????????§Ù???????????????ø@????????????????guard clauses???? +Èç¹ûij¸öÌõ¼þ¼«Æäº±¼û£¬¾ÍÓ¦¸Ãµ¥¶À¼ì²é¸ÃÌõ¼þ£¬²¢ÔÚ¸ÃÌõ¼þÎªÕæÊ±Á¢¿Ì´Óº¯ÊýÖзµ»Ø£¬ÕâÑùµÄµ¥¶À¼ì²é³£³£±»³ÆÎª¡°ÎÀÓï¾ä¡±£¨guard clauses£©¡£ -???????????????????????????????????????§Ù?????????????????????????????????????????????????????????????????????????????????????????????????????????????? +Ìõ¼þ±í´ïʽͨ³£ÓÐÁ½ÖÖ±íÏÖÐÎʽ¡£µÚÒ»ÖÖÐÎʽÊÇ£ºËùÓзÖÖ§¶¼ÊôÓÚÕý³£ÐÐΪ¡£µÚ¶þÖÖÐÎʽÔòÊÇ£ºÌõ¼þ±í´ïʽÌṩµÄ´ð°¸ÖÐÖ»ÓÐÒ»ÖÖÊÇÕý³£ÐÐΪ£¬ÆäËû¶¼ÊDz»³£¼ûµÄÇé¿ö£¬¿ÉÒÔʹÓÃÎÀÓï¾ä±íÏÖËùÓÐÌØÊâÇé¿ö¡£ ```java double getPayAmount() { @@ -665,9 +665,9 @@ double getPayAmount() { }; ``` -## 6. Replace Conditional with Polymorphism ??????????????????? +## 6. Replace Conditional with Polymorphism £¨ÒÔ¶à̬ȡ´úÌõ¼þ±í´ïʽ£© -???????????????????????????????????§Õ?????§µ??????????????????????????????? Replace Type Code with Subclass ?? Replace Type Code with State/Strategy ????????§ß???? +½«Õâ¸öÌõ¼þ±í´ïʽµÄÿ¸ö·ÖÖ§·Å½øÒ»¸ö×ÓÀàÄڵĸ²Ð´º¯ÊýÖУ¬È»ºó½«Ô­Ê¼º¯ÊýÉùÃ÷Ϊ³éÏóº¯Êý¡£ÐèÒªÏÈʹÓà Replace Type Code with Subclass »ò Replace Type Code with State/Strategy À´½¨Á¢¼Ì³Ð½á¹û¡£ ```java double getSpeed() { @@ -685,18 +685,18 @@ double getSpeed() { ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/1c8432c8-2552-457f-b117-1da36c697221.jpg) -## 7. Introduce Null Object??????Null???? +## 7. Introduce Null Object£¨ÒýÈëNull¶ÔÏó£© -?? null ??�I? null ?????????????????????????????????????????????§³? +½« null ÖµÌæ»»Îª null ¶ÔÏó¡£ÕâÑù×öµÄºÃ´¦ÔÚÓÚ£¬²»ÐèҪѯÎʶÔÏóÊÇ·ñΪ¿Õ£¬Ö±½Óµ÷ÓþÍÐС£ ```java if (customer == null) plan = BillingPlan.basic(); else plan = customer.getPlan(); ``` -## 8. Introduce Assertion?????????? +## 8. Introduce Assertion£¨ÒýÈë¶ÏÑÔ£© -?????????????????ÒÂ???????????????????§µ?????????§Ó????§Ø???? +ÒÔ¶ÏÑÔÃ÷È·±íÏÖijÖÖ¼ÙÉè¡£¶ÏÑÔÖ»ÄÜÓÃÓÚ¿ª·¢¹ý³ÌÖУ¬²úÆ·´úÂëÖв»»áÓжÏÑÔ¡£ ```java double getExpenseLimit() { @@ -712,25 +712,25 @@ double getExpenseLimit() { } ``` -# ????? ????????? +# µÚʮՠ¼ò»¯º¯Êýµ÷Óà -## 1. Rename Method???????????? +## 1. Rename Method£¨º¯Êý¸ÄÃû£© -?????????????????????? +ʹº¯ÊýÃûÄܽâÊͺ¯ÊýµÄÓÃ;¡£ -## 2. Add Parameter?????????? +## 2. Add Parameter£¨Ìí¼Ó²ÎÊý£© -??????????????????????????? +ʹº¯Êý²»ÐèҪͨ¹ýµ÷ÓûñµÃij¸öÐÅÏ¢¡£ -## 3. Remove Parameter??????????? +## 3. Remove Parameter£¨ÒƳý²ÎÊý£© -?? Add Parameter ??????????????????????????? +Óë Add Parameter Ïà·´£¬¸ÄÓõ÷Óõķ½Ê½À´»ñµÃij¸öÐÅÏ¢¡£ -## 4. Separate Query from Modifier??????????????????????? +## 4. Separate Query from Modifier£¨½«²éѯº¯ÊýºÍÐ޸ĺ¯Êý·ÖÀ룩 -????????????????????????????????? +ij¸öº¯Êý¼´·µ»Ø¶ÔÏó״ֵ̬£¬ÓÖÐ޸ĶÔÏó״̬¡£ -??????????????????????????????????????????????????¦Ê??§Ù???????????????????§á??????????¨¢? +Ó¦µ±½¨Á¢Á½¸ö²»Í¬µÄº¯Êý£¬ÆäÖÐÒ»¸ö¸ºÔð²éѯ£¬ÁíÒ»¸ö¸ºÔðÐ޸ġ£ÈκÎÓзµ»ØÖµµÄº¯Êý£¬¶¼²»Ó¦¸ÃÓп´µÃµ½µÄ¸±×÷Óᣠ```java getTotalOutstandingAndSetReadyForSummaries(); @@ -741,11 +741,11 @@ getTotalOutstanding(); setReadyForSummaries(); ``` -## 5. Parameterize Method??????§Á???????? +## 5. Parameterize Method£¨ÁÊýЯ´ø²ÎÊý£© -???????????????????????????????????????????????? +Èô¸Éº¯Êý×öÁËÀàËÆµÄ¹¤×÷£¬µ«ÔÚº¯Êý±¾ÌåÖÐÈ´°üº¬Á˲»Í¬µÄÖµ¡£ -???????????????????????§»???????? +½¨Á¢µ¥Ò»º¯Êý£¬ÒÔ²ÎÊý±í´ïÄÇЩ²»Í¬µÄÖµ¡£ ```java fivePercentRaise(); @@ -755,11 +755,11 @@ tenPercentRaise(); raise(percentage); ``` -## 6. Replace Parameter with Explicit Methods???????????????????? +## 6. Replace Parameter with Explicit Methods£¨ÒÔÃ÷È·º¯ÊýÈ¡´ú²ÎÊý£© -???????????????????????????????????? +ÓÐÒ»¸öº¯Êý£¬Íêȫȡ¾öÓÚ²ÎÊýÖµ¶ø²ÉÈ¡²»Í¬ÐÐΪ¡£ -???¨°????????????????????????????????? +Õë¶Ô¸Ã²ÎÊýµÄÿһ¸ö¿ÉÄÜÖµ£¬½¨Á¢Ò»¸ö¶ÀÁ¢º¯Êý¡£ ```java void setValue(String name, int value){ @@ -784,11 +784,11 @@ void setWidth(int arg){ } ``` -## 7. Preserve Whole Object??????????????? +## 7. Preserve Whole Object£¨±£³Ö¶ÔÏóÍêÕû£© -?????????????????????????????????¦Ê??????????????? +´Óij¸ö¶ÔÏóÖÐÈ¡³öÈô¸ÉÖµ£¬½«ËüÃÇ×÷Ϊijһ´Îº¯Êýµ÷ÓÃʱµÄ²ÎÊý¡£ -??????????????? +¸ÄΪ´«µÝÕû¸ö¶ÔÏó¡£ ```java int low = daysTempRange().getLow(); @@ -800,11 +800,11 @@ withinPlan = plan.withinRange(low,high); withinPlan = plan.withinRange(daysTempRange()); ``` -## 8. Replace Parameter with Methods???????????????? +## 8. Replace Parameter with Methods£¨ÒÔº¯ÊýÈ¡´ú²ÎÊý£© -?????????????????????????????????????????????????????????¨°?????????????????????????????? +¶ÔÏóµ÷ÓÃij¸öº¯Êý£¬²¢½«ËùµÃ½á¹û×÷Ϊ²ÎÊý£¬´«µÝ¸øÁíÒ»¸öº¯Êý¡£¶ø½ÓÊܸòÎÊýµÄº¯Êý±¾ÉíÒ²Äܹ»µ÷ÓÃǰһ¸öº¯Êý¡£ -?¨°????????????????????????????????????????? +ÈòÎÊý½ÓÊÕÕßÈ¥³ý¸ÃÏî²ÎÊý£¬¶øÊÇÖ±½Óµ÷ÓÃǰһ¸öº¯Êý¡£ ```java int basePrice = _quantity * _itemPrice; @@ -817,37 +817,37 @@ int basePrice = _quantity * _itemPrice; double finalPrice = discountedPrice (basePrice); ``` -## 9. Introduce Parameter Object????????????? +## 9. Introduce Parameter Object£¨ÒýÈë²ÎÊý¶ÔÏó£© -?§»???????????????????????§»???????? Data Clumps?? +ijЩ²ÎÊý×ÜÊǺÜ×ÔÈ»µØÍ¬Ê±³öÏÖ£¬ÕâЩ²ÎÊý¾ÍÊÇ Data Clumps¡£ -??????????????§»?????? +ÒÔÒ»¸ö¶ÔÏóÈ¡´úÕâЩ²ÎÊý¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/08738dd0-ae8e-404a-ba78-a6b1b7d225b3.jpg) -## 10. Remove Setting Method?????????????? +## 10. Remove Setting Method£¨ÒƳýÉèÖµº¯Êý£© -???§Ö????????????????????????????????? +ÀàÖеÄij¸ö×Ö¶ÎÓ¦¸ÃÔÚ¶ÔÏó´´½¨Ê±±»ÉèÖµ£¬È»ºó¾Í²»Ôٸı䡣 -???????¦Å?????????????????????????? final?? +È¥µô¸Ã×ֶεÄËùÓÐÉèÖµº¯Êý£¬²¢½«¸Ã×Ö¶ÎÉèΪ final¡£ -## 11. Hide Method??????????? +## 11. Hide Method£¨Òþ²Øº¯Êý£© -?????????????????§Ò??????¦Ê???????? +ÓÐÒ»¸öº¯Êý£¬´ÓÀ´Ã»Óб»ÆäËûÈκÎÀàÓõ½¡£ -????????????? private?? +½«Õâ¸öº¯ÊýÐÞ¸ÄΪ private¡£ -## 12. Replace Constructor with Factory Method ?????????????????????? +## 12. Replace Constructor with Factory Method £¨ÒÔ¹¤³§º¯ÊýÈ¡´ú¹¹Ô캯Êý£© -??????????????????????????????????? +Ï£ÍûÔÚ´´½¨¶ÔÏóʱ²»½ö½öÊÇ×ö¼òµ¥µÄ½¨¹¹¶¯×÷¡£ -?????????�I??????????? +½«¹¹Ô캯ÊýÌæ»»Îª¹¤³§º¯Êý¡£ -## 13. Encapsulate Downcast????????????? +## 13. Encapsulate Downcast£¨·â×°ÏòÏÂתÐÍ£© -????????????????????????????????????????downcast???? +ij¸öº¯Êý·µ»ØµÄ¶ÔÏó£¬ÐèÒªÓɺ¯Êýµ÷ÓÃÕßÖ´ÐÐÏòÏÂתÐÍ£¨downcast£©¡£ -????????????????????§³? +½«ÏòÏÂתÐͶ¯×÷ÒÆµ½º¯ÊýÖС£ ```java Object lastReading(){ @@ -860,17 +860,17 @@ Reading lastReading(){ } ``` -## 14. Replace Error Code with Exception ??????????????? +## 14. Replace Error Code with Exception £¨ÒÔÒ쳣ȡ´ú´íÎóÂ룩 -??????????????????????????????????????? +ij¸öº¯Êý·µ»ØÒ»¸öÌØ¶¨µÄ´úÂ룬ÓÃÒÔ±íʾijÖÖ´íÎóÇé¿ö¡£ -?????????????????????????????????????????? +¸ÄÓÃÒì³££¬Òì³£½«ÆÕͨ³ÌÐòºÍ´íÎó´¦Àí·Ö¿ª£¬Ê¹´úÂë¸üÈÝÒ×Àí½â¡£ -## 15. Replace Exception with Test?????????????? +## 15. Replace Exception with Test£¨ÒÔ²âÊÔÈ¡´úÒì³££© -????????????????????????????????????????? +Ãæ¶ÔÒ»¸öµ÷ÓÃÕß¿ÉÒÔÔ¤Ïȼì²éµÄÌõ¼þ£¬ÄãÅ׳öÁËÒ»¸öÒì³£¡£ -????????????????¨²???????????î• +Ð޸ĵ÷ÓÃÕߣ¬Ê¹ËüÔÚµ÷Óú¯Êý֮ǰÏÈ×ö¼ì²é¡£ ```java double getValueForPeriod(int periodNumber) { @@ -887,25 +887,25 @@ double getValueForPeriod(int periodNumber) { return values[periodNumber]; ``` -# ?????? ?????????? +# µÚʮһÕ ´¦Àí¸ÅÀ¨¹ØÏµ -## 1. Pull Up Field?????????? +## 1. Pull Up Field£¨×Ö¶ÎÉÏÒÆ£© -??????????????????¦±? +Á½¸ö×ÓÀàÓµÓÐÏàͬµÄ×ֶΡ£ -??????????????? +½«¸Ã×Ö¶ÎÒÆÖÁ³¬Àà¡£ -## 2. Pull Up Method??????????? +## 2. Pull Up Method£¨º¯ÊýÉÏÒÆ£© -??§»????????????????§Ó??????????????? +ÓÐЩº¯Êý£¬ÔÚ¸÷¸ö×ÓÀàÖвúÉúÍêÈ«ÏàͬµÄ½á¹û¡£ -???¨²??????????? +½«¸Ãº¯ÊýÒÆÖÁ³¬Àà¡£ -## 3. Pull Up Constructor Body????????????????? +## 3. Pull Up Constructor Body£¨¹¹Ô캯Êý±¾ÌåÉÏÒÆ£© -?????????????????§»???????????????�‹????????? +ÄãÔÚ¸÷¸ö×ÓÀàÖÐÓµÓÐһЩ¹¹Ô캯Êý£¬ËüÃǵı¾Ì弸ºõÍêȫһÖ¡£ -??????????????????????????????????§Ö??????? +ÔÚ³¬ÀàÖÐн¨Ò»¸ö¹¹Ô캯Êý£¬²¢ÔÚ×ÓÀ๹Ô캯ÊýÖе÷ÓÃËü¡£ ```java class Manager extends Employee... @@ -924,56 +924,56 @@ public Manager(String name, String id, int grade) { } ``` -## 4. Push Down Method??????????? +## 4. Push Down Method£¨º¯ÊýÏÂÒÆ£© -?????§Ö??????????????????§Û?? +³¬ÀàÖеÄij¸öº¯ÊýÖ»Ó벿·Ö×ÓÀàÓйء£ -??????????????????§»??????? +½«Õâ¸öº¯ÊýÒÆµ½Ïà¹ØµÄÄÇЩ×ÓÀàÈ¥¡£ -## 5. Push Down Field?????????? +## 5. Push Down Field£¨×Ö¶ÎÏÂÒÆ£© -?????§Ö??????????????????????? +³¬ÀàÖеÄij¸ö×Ö¶ÎÖ»±»²¿·Ö×ÓÀàÓõ½¡£ -????????????????????§»??????? +½«Õâ¸ö×Ö¶ÎÒÆµ½ÐèÒªËüµÄÄÇЩ×ÓÀàÈ¥¡£ -## 6. Extract Subclass?????????? +## 6. Extract Subclass£¨ÌáÁ¶×ÓÀࣩ -???§Ö??§»????????§»???????? +ÀàÖеÄÄ³Ð©ÌØÐÔÖ»±»Ä³Ð©ÊµÀýÓõ½¡£ -????????????????????????????????????????§³? +н¨Ò»¸ö×ÓÀ࣬½«ÉÏÃæËù˵µÄÄÇÒ»²¿·ÖÌØÐÔÒÆµ½×ÓÀàÖС£ -## 7. Extract Superclass?????????? +## 7. Extract Superclass£¨ÌáÁ¶³¬Àࣩ -????????????????? +Á½¸öÀàÓÐÏàËÆÌØÐÔ¡£ -??????????????????????????????????? +ΪÕâÁ½¸öÀཨÁ¢Ò»¸ö³¬À࣬½«ÏàÍ¬ÌØÐÔÒÆÖÁ³¬Àà¡£ -## 8. Extract Interface?????????? +## 8. Extract Interface£¨ÌáÁ¶½Ó¿Ú£© -??????????????§Ö??????????????????????§Ó???????? +Èô¸É¿Í»§Ê¹ÓÃÀà½Ó¿ÚÖеÄͬһ×Ó¼¯£¬»òÕßÁ½¸öÀàµÄ½Ó¿ÚÓв¿·ÖÏàͬ¡£ -???????????????????????????§³? +½«ÏàͬµÄ×Ó¼¯ÌáÁ¶µ½Ò»¸ö¶ÀÁ¢½Ó¿ÚÖС£ -## 9. Collapse Hierarchy????????????? +## 9. Collapse Hierarchy£¨ÕÛµþ¼Ì³ÐÌåϵ£© -????????????????????? +³¬ÀàºÍ×ÓÀàÖ®¼äÎÞÌ«´óÇø±ð¡£ -??????????‰^ +½«ËüÃǺÏΪһÌå¡£ -## 10. Form Template Method????????Žï???? +## 10. Form Template Method£¨ËÜÔìÄ£°åº¯Êý£© -?????§»??????????????§»??????????????????????????????????????????????????? +ÄãÓÐһЩ×ÓÀ࣬ÆäÖÐÏàÓ¦µÄijЩº¯ÊýÒÔÏàͬ˳ÐòÖ´ÐÐÀàËÆµÄ²Ù×÷£¬µ«¸÷¸ö²Ù×÷µÄϸ½ÚÉÏÓÐËù²»Í¬¡£ -????§»??????????????????§µ??????????????????????????????????????????????????????????????(??Ùã????) +½«ÕâЩ²Ù×÷·Ö±ð·Å½ø¶ÀÁ¢º¯ÊýÖУ¬²¢±£³ÖËüÃǶ¼ÓÐÏàͬµÄÇ©Ãû£¬ÓÚÊÇÔ­º¯ÊýÒ²¾Í±äµÃÏàͬÁË¡£È»ºó½«Ô­º¯ÊýÉÏÒÆÖÁ³¬Àà¡£(Ä£°å·½·¨Ä£Ê½) -## 11. Replace Inheritance with Delegation ????????????§µ? +## 11. Replace Inheritance with Delegation £¨ÒÔίÍÐÈ¡´ú¼Ì³Ð£© -??????????¨®??????§Ö?????????????????????§Ø?????????? +ij¸ö×ÓÀàֻʹÓó¬Àà½Ó¿ÚÖеÄÒ»²¿·Ö£¬»òÊǸù±¾²»ÐèÒª¼Ì³Ð¶øÀ´µÄÊý¾Ý¡£ -???????????????????????›‰???????????????????????§Ô??????????????????§Û???? +ÔÚ×ÓÀàÖÐн¨Ò»¸ö×Ö¶ÎÓÃÒÔ±£´æ³¬À࣬µ÷Õû×ÓÀຯÊý£¬ÁîËü¸Ä¶øÎ¯Íг¬À࣬ȻºóÈ¥µôÁ½ÕßÖ®¼äµÄ¼Ì³Ð¹ØÏµ¡£ -## 12. Replace Delegation with Inheritance ???????????§µ? +## 12. Replace Delegation with Inheritance £¨ÒԼ̳ÐÈ¡´úίÍУ© -??????????????????§Û???????????????????§Õ????????§Ü????? +ÄãÔÚÁ½¸öÀàÖ®¼äʹÓÃίÍйØÏµ£¬²¢¾­³£ÎªÕû¸ö½Ó¿Ú±àдÐí¶à¼«¼òµ¥µÄίÍк¯Êý¡£ -??????????????? +ÈÃίÍÐÀà¼Ì³ÐÊÜÍÐÀà¡£ diff --git a/notes/é�¢å�‘对象æ€�想.md b/notes/é�¢å�‘对象æ€�想.md index 0cf0b96e..0403888d 100644 --- a/notes/é�¢å�‘对象æ€�想.md +++ b/notes/é�¢å�‘对象æ€�想.md @@ -1,75 +1,75 @@ * [S.O.L.I.D](#solid) - * [1. ??????????](#1-??????????) - * [2. ?????????](#2-?????????) - * [3. ?????�I???](#3-?????�I???) - * [4. ?????????](#4-?????????) - * [5. ???????????](#5-???????????) -* [???????§³????](#???????§ã????) - * [1. ???](#1-???) - * [2. ???](#2-???) - * [3. ???](#3-???) + * [1. µ¥Ò»ÔðÈÎÔ­Ôò](#1-µ¥Ò»ÔðÈÎÔ­Ôò) + * [2. ¿ª·Å·â±ÕÔ­Ôò](#2-¿ª·Å·â±ÕÔ­Ôò) + * [3. ÀïÊÏÌæ»»Ô­Ôò](#3-ÀïÊÏÌæ»»Ô­Ôò) + * [4. ½Ó¿Ú·ÖÀëÔ­Ôò](#4-½Ó¿Ú·ÖÀëÔ­Ôò) + * [5. ÒÀÀµµ¹ÖÃÔ­Ôò](#5-ÒÀÀµµ¹ÖÃÔ­Ôò) +* [·â×°¡¢¼Ì³Ð¡¢¶à̬](#·â×°¼Ì³Ð¶à̬) + * [1. ·â×°](#1-·â×°) + * [2. ¼Ì³Ð](#2-¼Ì³Ð) + * [3. ¶à̬](#3-¶à̬) * [UML](#uml) - * [1. ???](#1-???) - * [2. ????](#2-????) -* [?¦Ï?????](#?¦Ï?????) + * [1. Ààͼ](#1-Ààͼ) + * [2. ʱÐòͼ](#2-ʱÐòͼ) +* [²Î¿¼×ÊÁÏ](#²Î¿¼×ÊÁÏ) # S.O.L.I.D -S.O.L.I.D???????????????(OOD&OOP)?§Þ?????????????(Programming Priciple)?????????§Õ?? +S.O.L.I.DÊÇÃæÏò¶ÔÏóÉè¼ÆºÍ±à³Ì(OOD&OOP)Öм¸¸öÖØÒª±àÂëÔ­Ôò(Programming Priciple)µÄÊ××ÖĸËõд¡£ -|??§Õ |?? |???????| +|¼òд |ȫƴ |ÖÐÎÄ·­Òë| | -- | -- | -- | -|SRP| The Single Responsibility Principle |??????????| -|OCP| The Open Closed Principle | ?????????| -|LSP| The Liskov Substitution Principle |?????�I???| -|ISP| The Interface Segregation Principle |?????????| -|DIP| The Dependency Inversion Principle |???????????| +|SRP| The Single Responsibility Principle |µ¥Ò»ÔðÈÎÔ­Ôò| +|OCP| The Open Closed Principle | ¿ª·Å·â±ÕÔ­Ôò| +|LSP| The Liskov Substitution Principle |ÀïÊÏÌæ»»Ô­Ôò| +|ISP| The Interface Segregation Principle |½Ó¿Ú·ÖÀëÔ­Ôò| +|DIP| The Dependency Inversion Principle |ÒÀÀµµ¹ÖÃÔ­Ôò| -## 1. ?????????? +## 1. µ¥Ò»ÔðÈÎÔ­Ôò -???????????????????????????????????Ñö?????????????????????????¦²????????????§Ö?????????????¦Å???????????????? +µ±ÐèÒªÐÞ¸Äij¸öÀàµÄʱºòÔ­ÒòÓÐÇÒÖ»ÓÐÒ»¸ö¡£»»¾ä»°Ëµ¾ÍÊÇÈÃÒ»¸öÀàÖ»×öÒ»ÖÖÀàÐÍÔðÈΣ¬µ±Õâ¸öÀàÐèÒª³Ðµ±ÆäËûÀàÐ͵ÄÔðÈεÄʱºò£¬¾ÍÐèÒª·Ö½âÕâ¸öÀà¡£ -## 2. ????????? +## 2. ¿ª·Å·â±ÕÔ­Ôò -????????????????????????????????????????????????????????????? +Èí¼þʵÌåÓ¦¸ÃÊÇ¿ÉÀ©Õ¹£¬¶ø²»¿ÉÐ޸ĵġ£Ò²¾ÍÊÇ˵£¬¶ÔÀ©Õ¹ÊÇ¿ª·ÅµÄ£¬¶ø¶ÔÐÞ¸ÄÊÇ·â±ÕµÄ¡£ -## 3. ?????�I??? +## 3. ÀïÊÏÌæ»»Ô­Ôò -????????????????????�I?¦Ê??????????????????????? is-a ????? +µ±Ò»¸ö×ÓÀàµÄʵÀýÓ¦¸ÃÄܹ»Ìæ»»ÈÎºÎÆä³¬ÀàµÄʵÀýʱ£¬ËüÃÇÖ®¼ä²Å¾ßÓÐ is-a ¹ØÏµ¡£ -## 4. ????????? +## 4. ½Ó¿Ú·ÖÀëÔ­Ôò -?????????????????§»???????????????Ñö??????????????????????????????¨¢? +²»ÄÜÇ¿ÆÈÓû§È¥ÒÀÀµÄÇЩËûÃDz»Ê¹ÓõĽӿڡ£»»¾ä»°Ëµ£¬Ê¹Óöà¸öרÃŵĽӿڱÈʹÓõ¥Ò»µÄ×ܽӿÚ×ÜÒªºÃ¡£ -## 5. ??????????? +## 5. ÒÀÀµµ¹ÖÃÔ­Ôò -1. ?????öö?????????????ï…????????????????? -2. ???????????????????????????????? +1. ¸ß²ãÄ£¿é²»Ó¦¸ÃÒÀÀµÓڵͲãÄ£¿é£¬¶þÕß¶¼Ó¦¸ÃÒÀÀµÓÚ³éÏó +2. ³éÏó²»Ó¦¸ÃÒÀÀµÓÚϸ½Ú£¬Ï¸½ÚÓ¦¸ÃÒÀÀµÓÚ³éÏó -# ???????§³???? +# ·â×°¡¢¼Ì³Ð¡¢¶à̬ -???????§³??????????????????????? +·â×°¡¢¼Ì³Ð¡¢¶à̬ÊÇÃæÏò¶ÔÏóµÄÈý´óÌØÐÔ¡£ -## 1. ??? +## 1. ·â×° -???¨®??????????????????????????????????????�q?????????????????ÈÉ??????????????????????????????????????????????????????§»???????????????????????????????????????????????????????????????????????????????? +ÀûÓóéÏóÊý¾ÝÀàÐͽ«Êý¾ÝºÍ»ùÓÚÊý¾ÝµÄ²Ù×÷·â×°ÔÚÒ»Æð£¬Ê¹Æä¹¹³ÉÒ»¸ö²»¿É·Ö¸îµÄ¶ÀÁ¢ÊµÌ壬Êý¾Ý±»±£»¤ÔÚ³éÏóÊý¾ÝÀàÐ͵ÄÄÚ²¿£¬¾¡¿ÉÄܵØÒþ²ØÄÚ²¿µÄϸ½Ú£¬Ö»±£ÁôһЩ¶ÔÍâ½Ó¿Úʹ֮ÓëÍⲿ·¢ÉúÁªÏµ¡£Óû§ÊÇÎÞÐèÖªµÀ¶ÔÏóÄÚ²¿µÄϸ½Ú£¬µ«¿ÉÒÔͨ¹ý¸Ã¶ÔÏó¶ÔÍâµÄÌṩµÄ½Ó¿ÚÀ´·ÃÎʸöÔÏó¡£ -????????????? +·â×°ÓÐÈý´óºÃ´¦£º -1. ?????????????????? +1. Á¼ºÃµÄ·â×°Äܹ»¼õÉÙñîºÏ¡£ -2. ???????????????????? +2. ÀàÄÚ²¿µÄ½á¹¹¿ÉÒÔ×ÔÓÉÐ޸ġ£ -3. ??????????§Ú?????????? +3. ¿ÉÒÔ¶Ô³ÉÔ±½øÐиü¾«È·µÄ¿ØÖÆ¡£ -4. ???????????????? +4. Òþ²ØÐÅÏ¢£¬ÊµÏÖϸ½Ú¡£ -???? Person ???? name??gender??age ???????????????? get() ?????????? Person ????? name ????? gender ????????????? age ????????? age ???????? work() ??????¨¢? +ÒÔÏ Person Àà·â×° name¡¢gender¡¢age µÈÊôÐÔ£¬Íâ½çÖ»ÄÜͨ¹ý get() ·½·¨»ñȡһ¸ö Person ¶ÔÏóµÄ name ÊôÐÔºÍ gender ÊôÐÔ£¬¶øÎÞ·¨»ñÈ¡ age ÊôÐÔ£¬µ«ÊÇ age ÊôÐÔ¿ÉÒÔ¹© work() ·½·¨Ê¹Óᣠ-??? gender ??????? int ??????????§Õ›¥????????????????????????????????????????????????????????????????????????????????§³? +×¢Òâµ½ gender ÊôÐÔʹÓà int Êý¾ÝÀàÐͽøÐд洢£¬·âװʹµÃÓû§×¢Òâ²»µ½ÕâÖÖʵÏÖϸ½Ú¡£²¢ÇÒÔÚÐèÒªÐÞ¸ÄʹÓõÄÊý¾ÝÀàÐÍʱ£¬Ò²¿ÉÒÔÔÚ²»Ó°Ïì¿Í»§¶Ë´úÂëµÄÇé¿öϽøÐС£ ```java public class Person { @@ -95,25 +95,25 @@ public class Person { } ``` -## 2. ??? +## 2. ¼Ì³Ð -???????? **is-a** ????????? Cat ?? Animal ??????? is-a ???????????? Cat ????? Animal???????? Animal ?? private ???????????? +¼Ì³ÐʵÏÖÁË **is-a** ¹ØÏµ£¬ÀýÈç Cat ºÍ Animal ¾ÍÊÇÒ»ÖÖ is-a ¹ØÏµ£¬Òò´Ë¿ÉÒÔ½« Cat ¼Ì³Ð×Ô Animal£¬´Ó¶ø»ñµÃ Animal ·Ç private µÄÊôÐԺͷ½·¨¡£ -Cat ??????? Animal ????????????????? Animal ???? Cat ?????????????????????? **???????**?? +Cat ¿ÉÒÔµ±×ö Animal À´Ê¹Óã¬Ò²¾ÍÊÇ¿ÉÒÔʹÓà Animal ÒýÓà Cat ¶ÔÏó£¬ÕâÖÖ×ÓÀàת»»Îª¸¸Àà³ÆÎª **ÏòÉÏתÐÍ**¡£ -??????????????�I??????????????????????�I?¦Ê??????????????????????? is-a ????? +¼Ì³ÐÓ¦¸Ã×ñÑ­ÀïÊÏÌæ»»Ô­Ôò£ºµ±Ò»¸ö×ÓÀàµÄʵÀýÓ¦¸ÃÄܹ»Ìæ»»ÈÎºÎÆä³¬ÀàµÄʵÀýʱ£¬ËüÃÇÖ®¼ä²Å¾ßÓÐ is-a ¹ØÏµ¡£ ```java Animal animal = new Cat(); ``` -## 3. ??? +## 3. ¶à̬ -???????????????????????????????????????????????????????????????§Ø??????????????????????????????????????? +¶à̬·ÖΪ±àÒëʱ¶à̬ºÍÔËÐÐʱ¶à̬¡£±àÒëʱ¶à̬Ö÷ÒªÖ¸·½·¨µÄ֨װ£¬ÔËÐÐʱ¶àָ̬³ÌÐòÖж¨ÒåµÄ¶ÔÏóÒýÓÃËùÖ¸ÏòµÄ¾ßÌåÀàÐÍÔÚÔËÐÐÆÚ¼ä²ÅÈ·¶¨¡£ -???????????????1. ??§µ?2. ???????????3. ???????? +¶à̬ÓÐÈý¸öÌõ¼þ£º1. ¼Ì³Ð£»2. ¸²¸Ç¸¸Àà·½·¨£»3. ÏòÉÏתÐÍ¡£ -?????????§µ???????Instrument????????????Wind ?? Percussion????????????? play() ???????????? main() ???????????? Instrument ?????? Wind ?? Percussion ?????? Instrument ??????? play() ????????????????????????????? play() ???????????? Instrument ???????? +ÏÂÃæµÄ´úÂëÖУ¬ÀÖÆ÷ÀࣨInstrument£©ÓÐÁ½¸ö×ÓÀࣺWind ºÍ Percussion£¬ËüÃǶ¼¸²¸ÇÁË play() ·½·¨£¬²¢ÇÒÔÚ main() ·½·¨ÖÐʹÓø¸Àà Instrument À´ÒýÓà Wind ºÍ Percussion ¶ÔÏó¡£ÔÚ Instrument ÒýÓõ÷Óà play() ·½·¨Ê±£¬»áÖ´ÐÐʵ¼ÊÒýÓöÔÏóËùÔÚÀàµÄ play() ·½·¨£¬¶ø²»ÊÇ Instrument ÀàµÄ·½·¨¡£ ```java public class Instrument { @@ -151,157 +151,157 @@ public class Music { # UML -## 1. ??? +## 1. Ààͼ -**1.1 ??????** +**1.1 ¼Ì³ÐÏà¹Ø** -????????????: ??????generalize????????realize????????? is-a ????? +¼Ì³ÐÓÐÁ½ÖÖÐÎʽ: ·º»¯£¨generalize£©ºÍʵÏÖ£¨realize£©£¬±íÏÖΪ is-a ¹ØÏµ¡£ -?? ???????(generalization) +¢Ù ·º»¯¹ØÏµ(generalization) -????????§Þ?? +´Ó¾ßÌåÀàÖм̳Р![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/29badd92-109f-4f29-abb9-9857f5973928.png) -?? ?????(realize) +¢Ú ʵÏÖ¹ØÏµ(realize) -?????????????§Þ?? +´Ó³éÏóÀà»òÕß½Ó¿ÚÖм̳Р![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/4b16e1d3-3a60-472c-9756-2f31b1c48abe.png) -**1.2 ????????** +**1.2 ÕûÌåºÍ²¿·Ö** -?? ?????(aggregation) +¢Ù ¾ÛºÏ¹ØÏµ(aggregation) -??????????????????????????????????????????�I????????????????????¡À?? B ?? A ???? +±íʾÕûÌåÓɲ¿·Ö×é³É£¬µ«ÊÇÕûÌåºÍ²¿·Ö²»ÊÇÇ¿ÒÀÀµµÄ£¬ÕûÌå²»´æÔÚÁ˲¿·Ö»¹ÊÇ»á´æÔÚ¡£ÒÔϱíʾ B ÓÉ A ×é³É£º ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/34259bb8-ca3a-4872-8771-9e946782d9c3.png) -?? ?????(composition) +¢Ú ×éºÏ¹ØÏµ(composition) -??????????????????????????????????�I??????????????????????ÀM?????????????????????????????????????????????????????????????????? +ºÍ¾ÛºÏ²»Í¬£¬×éºÏÖÐÕûÌåºÍ²¿·ÖÊÇÇ¿ÒÀÀµµÄ£¬ÕûÌå²»´æÔÚÁ˲¿·ÖÒ²²»´æÔÚÁË¡£±ÈÈ繫˾ºÍ²¿ÃÅ£¬¹«Ë¾Ã»Á˲¿ÃžͲ»´æÔÚÁË¡£µ«Êǹ«Ë¾ºÍÔ±¹¤¾ÍÊôÓھۺϹØÏµÁË£¬ÒòΪ¹«Ë¾Ã»ÁËÔ±¹¤»¹ÔÚ¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/7dda050d-ac35-4f47-9f51-18f18ed6fa9a.png) -**1.3 ?????** +**1.3 Ï໥ÁªÏµ** -?? ???????(association) +¢Ù ¹ØÁª¹ØÏµ(association) -???????????????§Û????????????????????????§Û??????????????????????????????????? 1 ?? 1????? 1?????????????????????????????????§µ???????????????????§µ?????§Ü??????????????????????????§µ??????????????????????????§á?????????????? +±íʾ²»Í¬Àà¶ÔÏóÖ®¼äÓйØÁª£¬ÕâÊÇÒ»ÖÖ¾²Ì¬¹ØÏµ£¬ÓëÔËÐйý³ÌµÄ״̬Î޹أ¬ÔÚ×ʼ¾Í¿ÉÒÔÈ·¶¨¡£Òò´ËÒ²¿ÉÒÔÓà 1 ¶Ô 1¡¢¶à¶Ô 1¡¢¶à¶Ô¶àÕâÖÖ¹ØÁª¹ØÏµÀ´±íʾ¡£±ÈÈçѧÉúºÍѧУ¾ÍÊÇÒ»ÖÖ¹ØÁª¹ØÏµ£¬Ò»¸öѧУ¿ÉÒÔÓкܶàѧÉú£¬µ«ÊÇÒ»¸öѧÉúÖ»ÊôÓÚÒ»¸öѧУ£¬Òò´ËÕâÊÇÒ»ÖÖ¶à¶ÔÒ»µÄ¹ØÏµ£¬ÔÚÔËÐпªÊ¼Ö®Ç°¾Í¿ÉÒÔÈ·¶¨¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/4ccd294c-d6b2-421b-839e-d88336ff5fb7.png) -?? ???????(dependency) +¢Ú ÒÀÀµ¹ØÏµ(dependency) -???????????????, ??????????????§Û?????????????????????????????????????????????????????????????????? +ºÍ¹ØÁª¹ØÏµ²»Í¬µÄÊÇ, ÒÀÀµ¹ØÏµÊÇÔÚÔËÐйý³ÌÖÐÆð×÷Óõġ£Ò»°ãÒÀÀµ×÷ΪÀàµÄ¹¹ÔìÆ÷»òÕß·½·¨µÄ²ÎÊý´«È롣˫ÏòÒÀÀµÊ±Ò»ÖÖ²»ºÃµÄÉè¼Æ¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/47ca2614-509f-476e-98fc-50ec9f9d43c0.png) -## 2. ???? +## 2. ʱÐòͼ -**2.1 ????** +**2.1 ¶¨Òå** -?????????????????????????????????????????????????????????????????????????????????????????????????????????????? +ʱÐòͼÃèÊöÁ˶ÔÏóÖ®¼ä´«µÝÏûÏ¢µÄʱ¼ä˳Ðò£¬ËüÓÃÀ´±íʾÓÃÀýµÄÐÐΪ˳Ðò¡£ËüµÄÖ÷Òª×÷ÓÃÊÇͨ¹ý¶ÔÏó¼äµÄ½»»¥À´ÃèÊöÓÃÀý£¨×¢ÒâÊǶÔÏ󣩣¬´Ó¶øÑ°ÕÒÀàµÄ²Ù×÷¡£ -**2.2 ?????????** +**2.2 ³à±Ú֮սʱÐòͼ** -????????????¡À??????????? +´ÓÐéÏß´ÓÉÏÍùϱíʾʱ¼äµÄÍÆ½ø¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/80c5aff8-fc46-4810-aeaa-215b5c60a003.png) -???????????????????????????????????? +¿É¼û£¬Í¨¹ýʱÐòͼ¿ÉÒÔÖªµÀÿ¸öÀà¾ßÓÐÒÔϲÙ×÷£º ```java -publc class ???? { - public void ??(); +publc class Áõ±¸ { + public void Ó¦Õ½(); } -publc class ???? { - public void ??????(); - public void ???????(); - private void ?Úˆ???(); +publc class ¿×Ã÷ { + public void Äⶨ²ßÂÔ(); + public void ÁªºÏËïȨ(); + private void ½è¶«·ç»ð¹¥(); } -public class ???? { - public void ?????G??(); +public class ¹ØÓð { + public void ·ÀÊØÇGÖÝ(); } -public class ??? { - public void ??????????(); +public class ÕÅ·É { + public void ·ÀÊØ¾£ÖÝǰÏß(); } -public class ??? { - public void ???????(); +public class ËïȨ { + public void Áì±øÏàÖú(); } ``` -**2.3 ???????????????** +**2.3 »î¶¯Í¼¡¢Ê±Ðòͼ֮¼äµÄ¹ØÏµ** -????????????????????????? +»î¶¯Í¼Ê¾´ÓÓû§µÄ½Ç¶ÈÀ´ÃèÊöÓÃÀý£» -????????????????????????????????????? +ʱÐòͼÊÇ´Ó¼ÆËã»úµÄ½Ç¶È£¨¶ÔÏó¼äµÄ½»»¥£©ÃèÊöÓÃÀý¡£ -**2.4 ?????????????** +**2.4 ÀàͼÓëʱÐòͼµÄ¹ØÏµ** -???????????????????????????????????? +ÀàͼÃèÊöϵͳµÄ¾²Ì¬½á¹¹£¬Ê±ÐòͼÃèÊöϵͳµÄ¶¯Ì¬ÐÐΪ¡£ -**2.5 ?????????** +**2.5 ʱÐòͼµÄ×é³É** -?? ???? +¢Ù ¶ÔÏó -???????????? +ÓÐÈýÖÖ±íÏÖÐÎʽ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/25b8adad-2ef6-4f30-9012-c306b4e49897.png) -???????????????????? +ÔÚ»­Í¼Ê±£¬Ó¦¸Ã×ñÑ­ÒÔÏÂÔ­Ôò£º -1. ????????????????????? +1. °Ñ½»»¥Æµ·±µÄ¶ÔÏ󾡿ÉÄܵؿ¿Â£¡£ -2. ???????????????????????????????????????????????? +2. °Ñ³õʼ»¯Õû¸ö½»»¥»î¶¯µÄ¶ÔÏó£¨ÓÐʱÊÇÒ»¸ö²ÎÓëÕߣ©·ÅÖÃÔÚ×î×ó±ß¡£ -?? ?????? +¢Ú ÉúÃüÏß -??????????????????????????????? +ÉúÃüÏß´Ó¶ÔÏóµÄ´´½¨¿ªÊ¼µ½¶ÔÏóÏú»ÙʱÖÕÖ¹ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/b7b0eac6-e7ea-4fb6-8bfb-95fec6f235e2.png) -?? ??? +¢Û ÏûÏ¢ -????????????????????????????? +¶ÔÏóÖ®¼äµÄ½»»¥Ê½Í¨¹ý·¢ËÍÏûÏ¢À´ÊµÏֵġ£ -?????4??????? +ÏûÏ¢ÓÐ4ÖÖÀàÐÍ£º -1\. ???????????????????? +1\. ¼òµ¥ÏûÏ¢£¬²»Çø·Öͬ²½Òì²½¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/a13b62da-0fa8-4224-a615-4cadacc08871.png) -2\. ???????????????????????????????????? +2\. ͬ²½ÏûÏ¢£¬·¢ËÍÏûÏ¢Ö®ºóÐèÒªÔÝÍ£»î¶¯À´µÈ´ý»ØÓ¦¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/33821037-dc40-4266-901c-e5b38e618426.png) -3\. ????????????????????????? +3\. Òì²½ÏûÏ¢£¬·¢ËÍÏûÏ¢Ö®ºó²»ÐèÒªµÈ´ý¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/dec6c6cc-1b5f-44ed-b8fd-464fcf849dac.png) -4\. ?????????????? +4\. ·µ»ØÏûÏ¢£¬¿ÉÑ¡¡£ -?? ???? +¢Ü ¼¤»î -??????????????????????????????????????? +ÉúÃüÏßÉϵķ½¿ò±íʾ¼¤»î״̬£¬ÆäËüʱ¼ä´¦ÓÚÐÝÃß״̬¡£ ![](https://github.com/CyC2018/InterviewNotes/blob/master/pics/6ab5de9b-1c1e-4118-b2c3-fb6c7ed7de6f.png) -# ?¦Ï????? +# ²Î¿¼×ÊÁÏ -- Java ?????? +- Java ±à³Ì˼Ïë -- [???????????SOLID???](http://www.cnblogs.com/shanyou/archive/2009/09/21/1570716.html) +- [ÃæÏò¶ÔÏóÉè¼ÆµÄSOLIDÔ­Ôò](http://www.cnblogs.com/shanyou/archive/2009/09/21/1570716.html) -- [????UML?????????](http://design-patterns.readthedocs.io/zh_CN/latest/read_uml.html#generalization) +- [¿´¶®UMLÀàͼºÍʱÐòͼ](http://design-patterns.readthedocs.io/zh_CN/latest/read_uml.html#generalization) -- [UML??§³???????????????sequence diagram](http://www.cnblogs.com/wolf-sun/p/UML-Sequence-diagram.html) +- [UMLϵÁСª¡ªÊ±Ðòͼ£¨Ë³Ðòͼ£©sequence diagram](http://www.cnblogs.com/wolf-sun/p/UML-Sequence-diagram.html) -- [?????????????????------???????§³????](http://blog.csdn.net/jianyuerensheng/article/details/51602015) +- [ÃæÏò¶ÔÏó±à³ÌÈý´óÌØÐÔ------·â×°¡¢¼Ì³Ð¡¢¶à̬](http://blog.csdn.net/jianyuerensheng/article/details/51602015) diff --git a/notes/黑客与画家.md b/notes/黑客与画家.md index ca3464f3..a50f6453 100644 --- a/notes/黑客与画家.md +++ b/notes/黑客与画家.md @@ -1,135 +1,135 @@ -* [??????](#??????) -* [?????????????](#?????????????) -* [???????](#???????) -* [????????](#????????) -* [?????¡¤](#?????¡¤) -* [??????§à?](#??????§à?) +* [ÒëÕßÐò](#ÒëÕßÐò) +* [ΪʲôÊé´ô×Ó²»ÊÜ»¶Ó­](#ΪʲôÊé´ô×Ó²»ÊÜ»¶Ó­) +* [ºÚ¿ÍÓë»­¼Ò](#ºÚ¿ÍÓë»­¼Ò) +* [²»ÄÜ˵µÄ»°](#²»ÄÜ˵µÄ»°) +* [ÁíÒ»Ìõ·](#ÁíÒ»Ìõ·) +* [Éè¼ÆÓëÑо¿](#Éè¼ÆÓëÑо¿) -# ?????? +# ÒëÕßÐò -????????????????????? +×÷ÕߣºÃÀ¹ú»¥ÁªÍø´´ÒµÖ®¸¸ -??? hack ??????????????????§»???????????? hacker??????????????????????èå?????????????????????????????????????????????????????¨¢???????????????????§»??????????? +×ʼ hack Ö¸µÄÊÇÄÑÌâµÄ½â¾ö°ì·¨£¬ÄÇЩ×îÄܸɵÄÈ˱»³ÉΪ hacker¡£ºÚ¿Í°üº¬ÒÔÏÂÈý¸öÌØµã£ººÃÍæ¡¢¸ßÖÇÉÌ¡¢Ì½Ë÷¾«Éñ¡£ºÚ¿ÍµÄºËÐļÛÖµ¹Û£º·ÖÏí¡¢¿ª·Å¡¢ÃñÖ÷¡¢¼ÆËã»úµÄ×ÔÓÉʹÓᢽø²½¡£Òò´ËºÚ¿ÍÖ¸µÄÊÇÄÇЩר¼Ò¼¶³ÌÐòÔ±¡£ -?????????????????????????§»???????????????????????????????????????????????????????????????????????????????¨¢? +ÓÉÓںڿͳ£³£ÈëÇÖϵͳ£¬Òò´Ë±»ÓëÄÇÐ©ÆÆ»µ¼ÆËã»úϵͳµÄÈËÁªÏµÆðÀ´¡£È»¶øÆÆ»µ¼ÆËã»úϵͳµÄÈ˳ÆÎªº§¿Í£¬ÕæÕýµÄºÚ¿Í²»Õâô×ö£¬·´¶øÊÇÈÃÊÀ½ç±äµÃ¸üºÃ¡£ -# ????????????? +# ΪʲôÊé´ô×Ó²»ÊÜ»¶Ó­ -?????????????????????????????????????????????????????????? +×÷ÕßÈÏΪ£¬¡°Êé´ô×Ó¡±ºÍ¡°¸ßÖÇÉÌ¡±ÕýÏà¹Ø£¬¶ø¡°Êé´ô×Ó¡±ºÍ¡°ÊÜ»¶Ó­¡±¸ºÏà¹Ø¡£ -??????????????????????????????????????????????????????????????????‚A??????????????????????????????????????????????????????????????????????????????????????????? +Ìá³öÎÊÌ⣺¼ÈÈ»Êé´ô×ÓÖÇÉ̸ߣ¬ÄÇôΪʲô²»Ïë³öÊÜ»¶Ó­µÄ·½·¨£¿ÒòΪҪÏëÊÜ»¶Ó­£¬ÐèҪͶÈëºÜ´óµÄʱ¼ä¾«Á¦È¥ËÜÔì¸öÈË÷ÈÁ¦¡£¶øÊé´ô×ÓûÓÐÄÇô¶àµÄʱ¼äºÍ¾«Á¦£¬Ïà±ÈÓÚÊÜ»¶Ó­£¬ËûÃǸüÔÚºõÆäËü¸üÓÐȤµÄÊ£¬±ÈÈçÉè¼ÆÆæÃîµÄ»ð¼ýµÈ¡£ -???????????? +ÆÛ¸ºÊé´ô×ÓµÄÔ­Òò£º -- ?????????????????????????????¦Æ??????????????? - > 11 ???????§³??????????????????????????????????? ??????????????§³??????????????????????????§à????????§³??????????????¦Ï???????�£?????? 11 ???????????????????????????????? ??????????§á??????????????íà??????????????????????????????????????????????????????????????????? ?????????????????????????????????????????????????³‡???????????????????????????????????????????????????³‡?????????????????§Ñ????????? ??????????????????????????????????????¦Å?????????????????¨²???µµ???????????????????????????????? +- ÇàÉÙÄêµÄº¢×Ó¸ü¼Ó²ÐÈÌ£¬Êé´ô×Ó²»ÊÜ»¶Ó­Òâζ×ű»ÆçÊÓºÍÊÜÆÛ¸º¡£ + > 11 ËêÒÔǰ£¬Ð¡º¢µÄÉú»îÓɼҳ¤Ö÷µ¼£¬ÆäËûº¢×ÓµÄÓ°ÏìÓÐÏÞ¡£ º¢×ÓÃDz»ÊDz»¹ØÐÄСѧÀïÆäËûͬѧµÄÏë·¨£¬µ«ÊǺóÕß²»¾ßÓоö¶¨ÐÔÓ°Ï졣Сѧ±ÏÒµÒÔºó£¬ÕâÖÖÇéÐοªÊ¼·¢Éú±ä»¯¡£µ½ÁË 11 Ëê×óÓÒ£¬º¢×ÓÃÇÖ𽥰ѼÒÍ¥Éú»îµ±×÷Ѱ³£ÊÂÁË¡£ ËûÃÇÔÚͬ°éÖпª±ÙÁËÒ»¸öеÄÊÀ½ç£¬²¢ÈÏΪÄǸöÊÀ½ç²ÅÊÇÖØÒªµÄ£¬±È¼ÒÀïµÄÊÀ½ç¸üÖØÒª¡£Êµ¼ÊÉÏ£¬Èç¹ûËûÃÇÔÚ¼ÒÀïÓ븸ĸ·¢Éú³åÍ»£¬ ·´¶øÄÜÔÚÄǸöеÄÊÀ½çÖÐÕõµÃÃæ×Ó£¬¶øËûÃÇҲȷʵ¸üÔÚºõÄǸöÊÀ½ç¡£µ«ÊÇ£¬ÎÊÌâÔÚÓÚ£¬º¢×ÓÃÇ×Ô¼º´´Ôì³öÀ´µÄÊÀ½çÊÇÒ»¸ö·Ç³£Ô­Ê¼µÄÊÀ½ç¡£ÇàÉÙÄêÔÚÐÄÀíÉÏ»¹Ã»ÓаÚÍѶùͯ״̬£¬ Ðí¶àÈ˶¼»á²ÐÈ̵ضԴýËûÈË¡£ËûÃÇÕÛÄ¥Êé´ô×ÓµÄÔ­Òò¾ÍÏñ°ÎµôÒ»ÌõÖ©ÖëÍÈÒ»Ñù£¬¾õµÃºÜºÃÍæ¡£ÔÚÒ»¸öÈ˲úÉúÁ¼ÖªÖ®Ç°£¬ÕÛÄ¥¾ÍÊÇÒ»ÖÖÓéÀÖ¡£ -- ??????????? - > ???¦Ê??????????§µ???§»????????????????????????????§Ö???????????????????????????????????????????????????????§Ö???????????????§á????‰^?????????????????????????????????????????????????????????????????????????????????????§»??????§Þ?? +- ΪÁË͹ÏÔ×Ô¼º¡£ + > ÔÚÈκÎÉç»áµÈ¼¶ÖƶÈÖУ¬ÄÇЩ¶Ô×Ô¼ºÃ»×ÔÐŵÄÈ˾ͻáͨ¹ýŰ´ýËûÃÇÑÛÖеÄϵÈÈËÀ´Í»ÏÔ×Ô¼ºµÄÉí·Ý¡£ÎÒÒѾ­Òâʶµ½£¬ÕýÊÇÒòΪÕâ¸öÔ­Òò£¬ÔÚÃÀ¹úÉç»áÖеײã°×ÈËÊǶԴýºÚÈË×î²Ð¿áµÄȺÌå¡£×îÊÜ»¶Ó­µÄº¢×Ó²¢²»ÆÛ¸ºÊé´ô×Ó£¬ËûÃDz»ÐèÒª¿¿²ÈÔÚÊé´ô×ÓÉíÉÏÀ´µæ¸ß×Ô¼º¡£´ó²¿·ÖµÄÆÛ¸ºÀ´×Ô´¦ÓÚÏÂÒ»µÈ¼¶µÄѧÉú£¬ÄÇЩ½¹ÂǵÄÖмä²ã¡£ -- ?????????????????? - > ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§Û??????????????????????????????????????????????????§á??? +- ΪÁ˺ÍÊÜ»¶Ó­µÄÈ˽á³ÉͬÃË¡£ + > ûÓÐʲô±ÈÒ»¸ö¹²Í¬µÄµÐÈ˸üÄÜʹµÃÈËÃÇÍŽáÆðÀ´ÁË¡£Õâ¾ÍºÃ±ÈÒ»¸öÕþ¿Í£¬ËûÏëÈÃÑ¡ÃñÍü¼ÇÔã¸âµÄ¹úÄÚ¾ÖÊÆ£¬·½·¨¾ÍÊÇΪ¹ú¼ÒÕÒ³öÒ»¸öµÐÈË£¬ÄÄŵÐÈ˲¢²»ÕæµÄ´æÔÚ£¬ËûÒ²¿ÉÒÔ´´ÔìÒ»¸ö³öÀ´¡£Ò»ÈºÈËÔÚÒ»Æð£¬Ìô³öÒ»¸öÊé´ô×Ó£¬¾Ó¸ßÁÙÏÂµØÆÛ¸ºËû£¬¾Í»á°Ñ±Ë´ËÁªÏµÆðÀ´¡£Ò»Æð¹¥»÷Ò»¸öÍâÈË£¬ËùÓÐÈËÒò´Ë¾Í¶¼³ÉÁË×Ô¼ºÈË¡£Õâ¾ÍÊÇΪʲô×î¶ñÁÓµÄÒÔÇ¿ÁèÈõµÄʼþ¶¼ÓëÍÅÌåÓйصÄÔ­Òò¡£Ëæ±ãÕÒÒ»¸öÊé´ô×Ó£¬Ëû¶¼»á¸æËßÄ㣬һȺÈ˵ÄŰ´ý±ÈÒ»¸öÈ˵ÄŰ´ý²Ð¿áµÃ¶à¡£ -?§µ???????????ùn??????? -> ?????§µ????????????????????????????????????????????????????????¦Ë?¨¢?????¡Â????§Ø???????????????????????????????????????? +ѧУÀÏʦµÄÖ»ÊǰѽÌÊéµ±³É¹¤×÷¡£ +> ¹«Á¢Ñ§Ð£µÄÀÏʦºÜÏñ¼àÓüµÄÓü×ä¡£¿´¹Ü¼àÓüµÄÈËÖ÷Òª¹ØÐĵÄÊÇ·¸È˶¼´ýÔÚ×Ô¼ºÓ¦¸Ã´ýµÄλÖá£È»ºó£¬È÷¸ÈËÓж«Î÷³Ô£¬¾¡¿ÉÄܲ»Òª·¢Éú¶·Å¹ºÍÉ˺¦Ê¼þ£¬Õâ¾Í¿ÉÒÔÁË¡£ -?????????????????????????????????????????????????????????????§»??? +µ½Éç»áÖ®ºó£¬Êé´ô×ӻᱻÓѺöԴý£¬ÒòΪËûÃÇ×öµÄÊÂÄܹ»²úÉú¸ü¶àµÄÓ°Ï죬¶øÉç»áÕýÐèÒªÕâЩӰÏì¡£ -?????????????§µ???????????????????????????????????§µ??????????????§µ????????????????????????????????????§µ??????????????? +³ÉÄêÈ˰Ѻ¢×ÓÔÚѧУÊÜ¿àÊÜÄѹé½áΪÇà´ºÆÚµÄ¼¤ËØÓ°Ï죬µ«ÊÇʵ¼ÊÉÏÕâÊÇѧУÕâÖÖÌåÖÆµÄÎÊÌ⣬ѧУֻÊǰѺ¢×ÓÈ¦ÑøÆðÀ´£¬²»ÈÃËûÃǵ½´¦ÂÒÅÜ£¬È»¶øÑ§Ð£ÄÚ²¿´æÔÚןܶà²ÐÈÌ¡£ -???????????????????????????????? -> ?????????§µ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§³????????????????????????????????????????????????????????????????¨¹??????????????????????????????????????????????????????????????????????????????????????????§µ?????¦Ä??????????????????§Ü?????? +¹ýÈ¥µÄº¢×Ó¸üÔçͶÈëÉç»á£¬Ò²¸üÄܹ»ÕæÕýѧ»á±¾Áì¡£ +> ¹ýÈ¥µÄÉç»áÖУ¬ÇàÉÙÄê°çÑÝ×ÅÒ»¸ö¸ü»ý¼«µÄ½ÇÉ«¡£¹¤Òµ»¯Ê±´úµ½À´Ç°£¬ÇàÉÙÄê¶¼ÊÇijÖÖÐÎʽµÄѧͽ£¬²»ÊÇÔÚij¸ö×÷·»£¬¾ÍÊÇÔÚij¸öũׯ£¬ÉõÖÁÔÚijËÒ¾ü½¢ÉÏ¡£ËûÃDz»»á±»ÈÓµ½Ò»ÅÔ£¬´´Ôì×Ô¼ºµÄСÉç»á¡£ËûÃÇÊdzÉÄêÈËÉç»áµÄµÍ¼¶³ÉÔ±¡£ÒÔǰµÄÇàÉÙÄêËÆºõÒ²¸ü×ð¾´³ÉÄêÈË£¬ÒòΪ³ÉÄêÈ˶¼ÊÇ¿´µÃ¼ûµÄר¼Ò£¬»á´«ÊÚËûÃÇËùҪѧϰµÄ¼¼ÄÜ¡£Èç½ñµÄ´ó¶àÊýÇàÉÙÄ꣬¶ÔËûÃǵļҳ¤ÔÚÒ£Ô¶µÄ°ì¹«ÊÒËù´ÓÊµĹ¤×÷¼¸ºõÒ»ÎÞËùÖª¡£ËûÃÇ¿´²»µ½Ñ§Ð£×÷ÒµÓëδÀ´×ßÉÏÉç»áºó´ÓÊµĹ¤×÷ÓкÎÁªÏµ¡£ -?§µ?????????????????????????????????????????????????????????????????????????? +ѧУµÄʹÃüÊǽÌÊéÓýÈË£¬¶ø²¢Ã»ÓÐÍâ½çµÄѹÁ¦È¥¼à¶½ËûÃÇÕâô×ö£¬ËùÒÔÀÏʦºÍѧÉúË«·½ÍùÍù¶¼ÊÇ·óÑÜÁËÊ¡£ -?????????????????????????????????? +ûÓÐÍâÔڵĶÔÊÖ£¬º¢×ÓÃǾͻ¥Ïà°Ñ¶Ô·½µ±×÷¶ÔÊÖ¡£ -?????????????????????????³�???? -> ???????????????????????????§Ò????????????????????????????????????????????????????????????????????????????????³�????????????????????????????§»???????????????§»???????????????????????????????§»????????????¦Í?????????????????????�á???????????????????????????????????????????????????????????????????????????????????????????? +³ÉÄêÈ˱áµÍÁ˺ܶàÃÀºÃµÄ¶«Î÷£¬±ÈÈç¡°È˸ñ¡±¡£ +> Ðí¶àÊé´ô×Ó¿ÉÄܶ¼ÓëÎÒÒ»Ñù£¬Ö±µ½¸ßÖбÏÒµ¶àÄêºó£¬²ÅÈ¥¶ÁÖÐѧÀïµÄÖ¸¶¨¶ÁÎï¡£µ«ÊÇ£¬ÎÒ´í¹ýµÄ¾ø²»½ö½öÖ»ÊǼ¸±¾Êé¶øÒÑ¡£ÎÒ¶ÔÐí¶àÃÀºÃµÄ×ÖÑÛ¶¼àÍÖ®ÒԱǣ¬±ÈÈç¡°È˸ñ¡±¡¢¡°ÕýÖ±¡±£¬ÒòΪ³ÉÄêÈ˱áµÍÁËÕâЩ´Ê¡£ÔÚËûÃÇ×ìÀÕâЩ´ÊËÆºõ¶¼ÊÇͬһ¸öÒâ˼¡ª¡ª¡°Ìý»°¡±¡£Ò»Ð©º¢×ÓÒòΪ¾ß±¸ËùνµÄ¡°È˸ñ¡±ºÍ¡°ÕýÖ±¡±£¬¶øÊܵ½¿ä½±£¬¿ÉÊÇËûÃDz»ÊÇ´ôµÃÏñһͷ´ó±¿Å££¬¾ÍÊÇÇḡµÃÏñÒ»¸ö²»¶¯ÄÔ½îµÄ´µÅ£Õß¡£Èç¹û¡°È˸ñ¡±ºÍ¡°ÕýÖ±¡±¾ÍÊÇÕâÖÖÑù×Ó£¬ÎÒÄþÔ¸²»ÒªËüÃÇ¡£ -# ??????? +# ºÚ¿ÍÓë»­¼Ò -?????????????????????????????§Õ????? +ºÚ¿ÍºÍ»­¼ÒÒ»Ñù£¬¶¼ÊÇÒÕÊõ¼Ò£¬¶¼ÔÚ½øÐд´×÷¡£ -?????????????????????????????????????????????????????? -> ???????????????????????????????malleable??????????????????????????????????????????????????????????????????????????????????????????§µ??????????????????????static typing??????????????þŸ??????????????????????????????????????????????????????????????????????????????????????????¦²????????????????????????Øj??§³?????????????????????????????????????????????????????????????????????????????????????¨°??????? +ºÚ¿Í±È½Ïϲ»¶½Å±¾ÓïÑÔÄÇÖÖ¿ÉÒÔ¶¯Ì¬À©Õ¹£¬²¢ÇÒ¿ÉÒÔÏñǦ±Ê»­»­Ò»ÑùÐÞÐ޸ĸġ£ +> ±à³ÌÓïÑÔÊ×ÒªµÄÌØÐÔÓ¦¸ÃÊÇÔÊÐí¶¯Ì¬À©Õ¹£¨malleable£©¡£±à³ÌÓïÑÔÊÇÓÃÀ´°ïÖú˼¿¼³ÌÐòµÄ£¬¶ø²»ÊÇÓÃÀ´±í´ïÄãÒѾ­ÏëºÃµÄ³ÌÐò¡£ËüÓ¦¸ÃÊÇһ֧Ǧ±Ê£¬¶ø²»ÊÇÒ»Ö§¸Ö±Ê¡£Èç¹û´ó¼Ò¶¼ÏñѧУ½ÌµÄÄÇÑù±à³Ì£¬ÄÇô¾²Ì¬ÀàÐÍ£¨static typing£©ÊÇÒ»¸ö²»´íµÄ¸ÅÄî¡£µ«ÊÇ£¬ÎÒÈÏʶµÄºÚ¿Í£¬Ã»ÓÐÒ»¸öÈËϲ»¶Óþ²Ì¬ÀàÐÍÓïÑÔ±à³Ì¡£ÎÒÃÇÐèÒªµÄÊÇÒ»ÖÖ¿ÉÒÔËæÒâͿĨ¡¢²Á²Á¸Ä¸ÄµÄÓïÑÔ£¬ÎÒÃDz»ÏëÕý½óÎ£×ø£¬°ÑÒ»¸öÊ¢Âú¸÷ÖÖ±äÁ¿ÀàÐ͵IJ豭£¬Ð¡ÐÄÒíÒí·ÅÔÚ×Ô¼ºµÄÏ¥¸ÇÉÏ£¬ÎªÁËÓëһ˿²»¹¶µÄ±àÒëÆ÷´óÉô½»Ì¸£¬Å¬Á¦µØÌôÑ¡´ÊÓȷ±£±äÁ¿ÀàÐÍÆ¥Å䣬ºÃÈÃ×Ô¼ºÏÔµÃÀñòÓÖÖܵ½¡£ -???????????§à???????????????§Õ??????? -> ?????????????????????????§Ü?????????????????????????????????????????????????????????????????????¨À??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? +±àÂë²¢²»ÊÇ¿ÆÑ§Ñо¿£¬Òò´ËÊýѧ¼Ò²»Ò»¶¨Ð´Ò»ÊֺôúÂë¡£ +> ´´×÷Õß²»Í¬ÓÚ¿ÆÑ§¼Ò£¬Ã÷°×ÕâÒ»µãÓкܶàºÃ´¦¡£³ýÁ˲»ÓÃΪ¾²Ì¬ÀàÐÍ·³ÄÕÒÔÍ⣬»¹¿ÉÒÔÃâÈ¥ÁíÒ»¸öÕÛÄ¥¿ÆÑ§¼ÒµÄÄÑÌ⣬ÄǾÍÊÇ¡°¶ÔÊýѧµÄ¶Ê¼É¡±¡£¿ÆÑ§½çµÄÿһ¸öÈË£¬°µµØÀï¶¼ÏàÐÅÊýѧ¼Ò±È×Ô¼º´ÏÃ÷¡£ÎÒ¾õµÃ£¬Êýѧ¼Ò×Ô¼ºÒ²ÏàÐÅÕâÒ»µã¡£×îºóµÄ½á¹û¾ÍÊÇ¿ÆÑ§¼ÒÍùÍù»á°Ñ×Ô¼ºµÄ¹¤×÷¾¡¿ÉÄÜŪµÃ¿´ÉÏÈ¥ÏñÊýѧ¡£¶ÔÓÚÎïÀíѧÕâÑùµÄÁìÓò£¬Õâ¿ÉÄܲ»»áÓÐÌ«´ó²»Á¼Ó°Ïì¡£µ«ÊÇ£¬ÄãÔ½Íù×ÔÈ»¿ÆÑ§µÄ·½Ïò·¢Õ¹£¬Ëü¾ÍÔ½³ÉΪһ¸öÑÏÖØµÄÎÊÌâ¡£ -????????????????????????????????????????????????????????????? +ºÚ¿ÍΪÁËÄÜ×ö×Ô¼ºÏ²»¶×öµÄʲ¢ÇÒ¿ÉÒÔÑø»î×Ô¼º£¬ÍùÍù°×Ì칤×÷ÍíÉÏ×ö×Ô¼ºµÄÊ¡£ -????????????????????????????? -> ??????????????????????????????????????????§Õ???????????????????????????????????????????????????????????????????????????????????? +ÈȰ®±à³ÌµÄÈ˲»¿É±ÜÃâµÄ»á¿ª·¢×Ô¼ºµÄÏîÄ¿¡£ +> ÎÒÃÇÃæÊÔ³ÌÐòÔ±µÄʱºò£¬Ö÷Òª¹Ø×¢µÄÊÂÇé¾ÍÊÇÒµÓàʱ¼äËûÃÇдÁËʲôÈí¼þ¡£ÒòΪÈç¹ûÄã²»°®Ò»¼þÊ£¬Äã²»¿ÉÄܰÑËü×öµÃÕæÕýÓÅÐ㣬ҪÊÇÄãºÜÈȰ®±à³Ì£¬Äã¾Í²»¿É±ÜÃâµØ»á¿ª·¢Äã×Ô¼ºµÄÏîÄ¿¡£ -???????§Ö???????????????????¦Ë??????? -> ??????????????????????????????????????????????????§Õ?????????????????????????????????????????????????????????????????????????????????????????????§Ö??????????????????§³? +ºÚ¿Í²»ÊÇ»úе¹¤×÷µÄ¼¼Êõ¹¤ÈË£¬¶øÊÇһλ´´×÷Õß¡£ +> Èç¹ûºÚ¿ÍÖ»ÊÇÒ»¸ö¸ºÔðʵÏÖÁìµ¼ÒâÖ¾µÄ¼¼Êõ¹¤ÈË£¬Ö°Ôð¾ÍÊǸù¾Ý¹æ¸ñ˵Ã÷Êéд³ö´úÂ룬ÄÇôËûÆäʵÓëÒ»¸öÍÚË®¹µµÄ¹¤ÈËÊÇÒ»ÑùµÄ£¬´ÓÕâÍ·ÍÚµ½ÄÇÍ·£¬½ö´Ë¶øÒÑ¡£µ«ÊÇ£¬Èç¹ûºÚ¿ÍÊÇÒ»¸ö´´×÷Õߣ¬Ëû´ÓʵľͲ»ÊÇ»úеÐԵŤ×÷£¬Ëû±ØÐë¾ß±¸Áé¸Ð¡£ -# ???????? +# ²»ÄÜ˵µÄ»° -???§Ö?????????????????????????????????????????¦´????§»?????????§»????????????????????????ú‘??§³? +Á÷ÐеĵÀµÂ¹ÛÄîËäÈ»ÔÚºóÊÀ¿´À´»áÊǻĵ®µÄ£¬µ«ÊÇÈç¹ûÔÚÏÖ½ñȥΥ±³ÕâЩµÀµÂ¹ÛÄ˵һЩ²»ºÏÊʵÄÑÔÂÛ£¬»áÈÃ×Ô¼º´¦ÓÚÂé·³Ö®ÖС£ -?????????????????????????????????????????????????§»???????????????????????????????????????? +×Ô¼º»áÉîÉîÔÞͬ×Ô¼ºµÄ¹Ûµã£¬²¢ÇÒÈ·ÐÅ»áµÃµ½±ðÈ˵ÄÈÏͬ£¬ºÜ¿ÉÄÜÊÇ£¬ÕâЩ¹ÛµãÊDZðÈ˸ø×Ô¼º¹àÊäµÄ£¬±ðÈË˵ʲô£¬×Ô¼º¾ÍÏàÐÅʲô¡£ -?????????????????????????????????????????§»?????????? +²»ÄÜ˵µÄ»°ÍùÍùÊÇÕýÈ·µÄ»°£¬ÒòΪ¾ßÓÐÕùÒéÐÔ£¬»áÈÃijЩÈ˱©ÌøÈçÀס£ -??§»??????????????????????????????????§Ñ????????????????????????????????????????? -> ???????????????î”????????????????????????????????????????ç³???????‰]????????????? +ÄÇЩ²»Ò»¶¨ÕýÈ·£¬¼«¸»ÕùÒéÐÔµÄÑÔÂÛ±»³ÉΪ¡°Òì¶Ëа˵¡°£¬ÈËÃdz£³£»á¸øËüÃǼÓÉϱêÇ©£¬Ä¿µÄÊÇΪÁË·âɱËüÃÇ¡£ +> ÙôäÂÉñÃ÷¡¢Ã°·¸Ê¥Áé¡¢Òì¶Ë¶¼ÊÇÎ÷·½ÀúÊ·Éϳ£¼ûµÄ±êÇ©£¬µ±´úµÄ±êÇ©ÔòÊÇÓÐÉ˷绯¡¢²»µÃÌå¡¢ÆÆ»µ¹ú¼ÒÀûÒæµÈ¡£ -??????????????§»?????§Ö?????????????????????????????????????????—¨???????????????????????§³? +½û¼ÉµÄÍÆ³çÕßÊÇÄÇЩ´¦ÓÚÖеȽײãµÄÈË£¬ËûÃDz»Ïñ¸ßµÈ½×²ãÄÇÑùÓÐ×ã¹»×ÔÐű£»¤×Ô¼ºµÄÀûÒæ£¬ÓÖ²»Í¬Óڵ͵Ƚײ㣬ËûÃÇÓÐʵÁ¦È¥ÍÆÐС£ -???§Û?????????????????????????????????????????????????????? +Á÷Ðй۵ãµÄµÚÒ»Åú×·ÖðÕßÊÇΪÁËÈÃ×Ô¼ºÓëÖÚ²»Í¬£¬¶øµÚ¶þÅúÔòÊÇÅÂ×Ô¼ºÓëÖÚ²»Í¬¡£ -???????????????????§Û???????????? +¿ÆÑ§¼ÒÍùÍùÐèÒª´òÆÆÁ÷Ðй۵㣬´Ó¶øÈ¡µÃÍ»ÆÆ¡£ -??????????§»?????????????????????????????? -> ??????????????????????????????????????§Ö?????????§»????????????????????????????????????????????????????????????????????????????????????????????????????????????????�¢????????????????????????????????????????????????????????????????§»???????????????????????????????????????????????????????????????????????????????????????????????????????? +Èç¹ûÒòΪ˵ÁËijЩ»°¶øÈøÉÈÅÁË×Ô¼ºµÄÉú»î£¬×îºÃ»¹ÊDZð˵¡£ +> ÕâʱÄãÒªÃ÷°×£¬×ÔÓÉ˼¿¼±È³©ËùÓûÑÔ¸üÖØÒª¡£Èç¹ûÄã¸Ðµ½Ò»¶¨Òª¸úÄÇЩÈ˱ç¸öÃ÷°×£¬¾ø²»ÑÊÏÂÕâ¿ÚÆø£¬Ò»¶¨Òª°Ñ»°ËµÇå³þ£¬½á¹ûºÜ¿ÉÄÜÊÇ´Ó´ËÄãÔÙÒ²ÎÞ·¨×ÔÓÉÀíÐÔµØË¼¿¼ÁË¡£ÎÒÈÏΪÕâÑù×ö²»¿ÉÈ¡£¬¸üºÃµÄ·½·¨ÊÇÔÚ˼ÏëºÍÑÔÂÛÖ®¼ä»®Ò»ÌõÃ÷È·µÄ½çÏß¡£ÔÚÐÄÀïÎÞËù²»Ï룬µ«ÊDz»Ò»¶¨ÒªËµ³öÀ´¡£ÎҾ͹ÄÀø×Ô¼ºÔÚÐÄÀïĬĬ˼¿¼ÄÇЩ×îÎÞ·¨ÎÞÌìµÄÏë·¨¡£ÄãµÄ˼ÏëÊÇÒ»¸öµØÏÂ×éÖ¯£¬¾ø²»Òª°ÑÄÇÀï·¢ÉúµÄÊÂÇéÒ»¹ÉÄÔ˵¸øÍâÈËÌý¡£¡°¸ñ¶·¾ãÀÖ²¿¡±µÄµÚÒ»Ìõ¹æÔò£¬¾ÍÊDz»ÒªÌáµ½¸ñ¶·¾ãÀÖ²¿¡£ -???????????????????????????????????¨¢? +µ±¿ñÈÈ·Ö×ÓÖÊÎÊÄãµÄ¹Ûµãʱ£¬×îºÃÊÇ˵×Ô¼º»¹Ã»ÏëºÃ¡£ -????????????????????????????????????????????????????????????????? +ÈËÃÇ»áÎóÈÏΪ×Ô¼ºË¼Ï뿪·Å£¬µ«ÊÇËûÃÇÐÄÀïÔç¾ÍÓÐÒ»¸ù½çÏÞ£¬ÈÏΪʲôÊÇÕýÈ·µÄʲôÊÇ´íÎóµÄ¡£ -??????????????? -> ????????????????????????????????????????????????????????????????????????????????????????????????????? +¸üÉîÈëµÄÈÏʶ×Ô¼º¡£ +> ¶ùͯ¾«Æ£Á¦½ßʱ£¬¿ÉÄÜ»á´ó·¢Æ¢Æø£¬ÒòΪËû²»ÖªµÀΪÁËʲô£»³ÉÄêÈËÔò»áÁ˽âÊǸöÈ˵ÄÉíÌå×´¿öÎÊÌ⣬ÓëÍâ½çÎ޹أ¬ËµÒ»¾ä¡°Ã»¹ØÏµ£¬ÎÒÖ»ÊÇÀÛÁË¡±¡£ -# ?????¡¤ +# ÁíÒ»Ìõ· -?????????????? +»¥ÁªÍøÈí¼þµÄÓŵã -1. ????????????????????????????????????????????????????? -2. ??????????????????????????????????????????õô???§µ? -3. ???????????????????? -4. ??????????????????????????????? -5. ?????????????????????????????????????????????????? -6. ??????? bug ?????????? bug ???? -7. ?????????????????????????????????? +1. ²»ÐèÒªÓû§À´¹ÜÀíϵͳ£¬Òò´Ë²»ÐèҪרÃŵļÆËã»ú֪ʶ£¬Ê¹ÓÃä¯ÀÀÆ÷¼´¿ÉʹÓã» +2. ÐèÒªµÄÓ²¼þ×ÊÔ´ºÜÉÙ£¬Ö»ÐèÒªÄÜÔËÐÐä¯ÀÀÆ÷²¢ÇÒÁªÍøµÄÉ豸¾ÍÐУ» +3. ¸ü·½±ã£¬ËæÊ±ËæµØ¾Í¿ÉÒÔʹÓã» +4. ²»Óõ£ÐÄÊý¾Ý¶ªÊ§£¬ÒòΪÊý¾Ý±£´æÔÚÔÆ¶Ë£» +5. Ò×ÓÚ¶ÔÈí¼þ½øÐÐÉý¼¶£¬¶øÓû§¿ÉÒÔÔÚÍêÈ«²»ÖªÇéµÄÇé¿öϼÌÐøÊ¹Óã» +6. ¸üÈÝÒ×µÄ bug ·¢ÏÖ£¬¸ü¿ìµÄ bug Ð޸ģ» +7. ÓÐרÃŵļ¼ÊõÈËÔ±¹ÜÀí·þÎñÆ÷£¬ÒòΪ¸ü¼Ó°²È«£» -bug ????????????????????????????????????????????? bug ?????????? +bug Ô½¿ì·¢ÏÖÔ½ºÃ£¬¶ø»¥ÁªÍøÈí¼þÒòΪ·¢²¼ÖÜÆÚ¶Ì£¬Óû§·´À¡¿ì£¬Òò´Ë bug µÄ·¢ÏÖÒ²¸ü¿ì¡£ -?????????????????? bug?? -> ????????????????? bug ??????????????????????????????????????????????????????????????§»??????????????????????????? bug ????????????????????§» bug ????????????????????????????§»?????????????????????????????????????????????? bug ????????§à????§»?????????????????????????????????????????????? bug ?§Ö???????????´Â???????????????????????????????????????????????????????????¡Â???????? +¸ß¼¶Óû§ºÜÀÖÒâ°ïÖúѰÕÒ bug¡£ +> ÒòΪÈí¼þ·¢²¼ÒԺ󣬴ó¶àÊý bug ¶¼ÊǺ±¼ûÇé¿öϲŻᷢÉúµÄ¸ö°¸£¬Êܵ½Ó°ÏìµÄÓû§ÍùÍù¶¼ÊǸ߼¶Ê¹ÓÃÕߣ¬ËûÃÇϲ»¶ÊÔÑéÄÇЩ²»³£Óõġ¢ÄѶȴóµÄ²Ù×÷¡£¸ß¼¶Ê¹ÓÃÕß¶Ô bug µÄÈÝÈ̶ȱȽϸߣ¬ÓÈÆäÈç¹ûÕâЩ bug ÊÇÔÚ¿ª·¢Ð¹¦ÄܵĹý³ÌÖÐÒýÈëµÄ£¬¶øÕâЩй¦ÄÜÓÖÕýÊÇËûÃÇËùÐèÒªµÄ£¬ËûÃǾ͸üÄÜÀí½âÁË¡£ÊÂʵÉÏ£¬ÒòΪ bug ²»¶à£¬ÄãÖ»Óо­¹ýһЩ¸´ÔӵĹý³ÌÒÔºó²Å»áÓöµ½ËüÃÇ£¬ËùÒԸ߼¶Ê¹ÓÃÕßÍùÍùÒòΪ·¢ÏÖÁË bug ¸Ðµ½ºÜµÃÒâ¡£ËûÃÇ´òµç»°¸ø¿Í·þʱ£¬¶à°ëÊÇÒ»¸±Ê¤ÀûÕߵĿÚÎÇ£¬¶ø²»ÊÇÅ­Æø³å³åµÄÑù×Ó£¬ºÃÏñËûÃÇ»÷°ÜÎÒÃǵ÷ÖÁËÒ»Ñù¡£ -????????????????????????????¨²?????????????? bug?? +ºÃµÄ¼¼ÊõÖ§³ÖÊÇ£º¿Í·þÈËÔ±ºÍ¼¼ÊõÈËÔ±ÀëµÃºÜ½ü£¬²¢ÇÒµ±³¡ÐÞ¸´ bug¡£ -????????????????????????????????????????????????????????????????????? +Ò»¸öºÃµÄÏë·¨ÔÚʵÏÖ¹ý³ÌÖÐÄÜÒýÆð¸ü¶àÏë·¨£¬Òò´Ë¾¡ÔçȥʵÏÖËü±È½«ËüÊøÖ®¸ß¸óÄܹ»´øÀ´¸ü¶àºÃ´¦¡£ -????????????????????????????????????????§Ô???????? -> ??????????????????????§Ü?????????????????????????§»???????????????????????????????—¨??????¦Ê???????????????????????????????????????????????§Ô??????????????§»??????????????????????????????????? +²»»á¹ºÂòÈí¼þµÄÓû§Ê¹ÓÃÁ˵Á°æÈí¼þÄܹ»ÈÃÈí¼þ¸ü¾ßÓÐÊг¡Ó°ÏìÁ¦¡£ +> Ò»¶¨ÊýÁ¿µÄµÁ°æ¶ÔÈí¼þ¹«Ë¾ÊÇÓкô¦µÄ¡£²»¹ÜÄãµÄÈí¼þ¶¨¼Û¶àÉÙ£¬ÓÐЩÓû§ÓÀÔ¶¶¼²»»á¹ºÂò¡£Èç¹ûÕâÑùµÄÓû§Ê¹ÓõÁ°æ£¬Ä㲢ûÓÐÈκÎËðʧ¡£ÊÂʵÉÏ£¬Äã·´¶ø×¬µ½ÁË£¬ÒòΪÄãµÄÈí¼þÏÖÔÚ¶àÁËÒ»¸öÓû§£¬Êг¡Ó°ÏìÁ¦¾Í¸ü´óÁËһЩ£¬¶øÕâ¸öÓû§¿ÉÄܱÏÒµÒÔºó¾Í»á³öÇ®¹ºÂòÄãµÄÈí¼þ¡£ -# ??????§à? +# Éè¼ÆÓëÑо¿ -??????????????§à?????????? +Éè¼Æ×·ÇóµÄÊǺ㬶øÑо¿×·ÇóµÄÊÇС£ -????????????????????????????????????????????????????????????????????????????????? +Óû§ÒªÇóºÍÓû§ÐèÇóÓÐÇø±ð£¬Óû§¿ÉÄܲ¢²»Á˽â×Ô¼ºÒªÊ²Ã´£¬ËùÒÔÓû§ÒªÇóµÄÄÚÈÝÍùÍù²»ÊÇÓû§ÕæÕýÐèÇóµÄ¶«Î÷¡£ -??????????????????????§à????????????????????????????????????????????????ú‘???????????????????????????????????????????????????????????????????????? +ÒÕÊõÉè¼ÆÓëÈËΪ±¾£¬¶ø¿ÆÑ§Ñо¿×·Çó¼ò½àÕýÈ·¡£±ÈÈçÊýѧ¼Ò²»»áΪÁËÈöÁÕ߸üÈÝÒ×¶®¶ø²ÉÓÃÒ»ÖÖ¸üÂé·³µÄÖ¤Ã÷£¬¶øÊÇ»áÑ¡Ôñ×îÖ±½Ó¼ò½àµÄÖ¤Ã÷¡£±à³ÌÓïÑÔÒ²ÊÇÓëÈËΪ±¾µÄ£¬Òò´Ë±à³ÌÓïÑÔÒ²ÊÇͨ¹ýÉè¼Æ²úÉúµÄ¡£ -???????????????????????????????????????????????§Ö??????????????????????????????????????????????????????????????????????????????????? +´óÀíʯ×ö³öµÄ¶«Î÷ƯÁÁ£¬µ«ÊÇÖÆ×÷¹ý³ÌÈ´ºÜÄÑ£¬ÎÞ·¨²»¶ÏµÄ½øÐеñ×Á¡£±à³ÌÓïÑÔÒ²ÐèÒªÕâÖÖµñ×Á¹ý³Ì£¬Èç¹ûÒ»ÖÖ±à³ÌÓïÑÔÏñ´óÀíʯһÑù£¬Ö»Êǽá¹ûºÃ¿´£¬ÄÇôËü¾Í²»ÊÇÒ»Öֺõıà³ÌÓïÑÔ¡£ -??????????????¨®???????????????????????¨¹???????????????????????????????????? -> ????????????????????????????????????????????????????¨®???????????????????????????????????????????????????????????????§Ô?????????????????????????????????????????????????????????????§Û???????????????????????????????????????????????????? +Éè¼ÆÈí¼þÓ¦µ±¾¡¿ìÄóöÔ­ÐÍÀ´¡£¾ÍÏñ»­»­Ò»Ñù£¬ÊÇÏÈÓü¸¸ùÏß»­³öÒ»¸ö´óÖÂ׼ȷµÄÂÖÀª£¬È»ºóÔÙÖð²½¼Ó¹¤¡£ +> »¹ÓÐÁíÒ»ÖÖÈí¼þÉè¼ÆË¼Ï룬ҲÐí¿ÉÒÔ±»³ÆÎª¡°Ê¥Ä¸ÂêÀöÑÇ¡±Ä£Ê½¡£Ëü²»ÒªÇ󾡿ìÄóöÔ­ÐÍ£¬È»ºóÔÙÖð²½ÓÅ»¯£¬ËüµÄ¹ÛµãÊÇÄãÓ¦¸ÃµÈµ½ÍêÕûµÄ³ÉÆ·³öÀ´ÒÔºóÔÙÒ»ÏÂ×ÓÂ¡ÖØµØÍÆÏòÊг¡£¬¾ÍÏñʥĸÂêÀöÑǽµÁÙÒ»Ñù£¬ÄÄÅÂÕû¸ö¹ý³ÌÂþ³¤µÃÏñéÏé­ÇòÔ˶¯Ô±³¤Í¾±¼Ï®Ò²Ã»ÓйØÏµ¡£ÔÚ»¥ÁªÍøÅÝĭʱÆÚ£¬ÎÞÊý´´Òµ¹«Ë¾ÒòΪÏàÐÅÁËÕâÖÖģʽ¶ø×Ô»Ùǰ³Ì¡£ -????????????????¦Æ?????????????????????¦Æ??????????????¨®?????§Ú???????????????????????????????????????????????????? +Èç¹û¾õµÃ×öij¼þʺܷ¦Î¶£¬ÄÇô×ö³öÀ´µÄ¶«Î÷¾Í»áºÜ·¦Î¶¡£¿ìËÙµÄÔ­ÐÍÄܹ»ÈóÌÐòÔ±Óиü¸ßµÄÊ¿Æø£¬´Ó¶øÈÃËûÃǸüÓÐÐËȤȥʵÏÖ¡£Ò²¿ÉÒÔÀí½âΪ¿ìËÙ·´À¡ºÜÖØÒª¡£