diff --git a/404.html b/404.html index a3ca58ae..e12274fe 100644 --- a/404.html +++ b/404.html @@ -6,14 +6,14 @@ 404 | mx52jing - +
Skip to content

404

PAGE NOT FOUND

But if you don't change your direction, and if you keep looking, you may end up where you are heading.
- - + + \ No newline at end of file diff --git "a/algorithm/LeetCode\345\210\267\351\242\230/1-\344\270\244\346\225\260\344\271\213\345\222\214.html" "b/algorithm/LeetCode\345\210\267\351\242\230/1-\344\270\244\346\225\260\344\271\213\345\222\214.html" index f05f1040..e10669d2 100644 --- "a/algorithm/LeetCode\345\210\267\351\242\230/1-\344\270\244\346\225\260\344\271\213\345\222\214.html" +++ "b/algorithm/LeetCode\345\210\267\351\242\230/1-\344\270\244\346\225\260\344\271\213\345\222\214.html" @@ -6,9 +6,9 @@ 1-两数之和 | mx52jing - - - + + + @@ -64,8 +64,8 @@ } }; - - + + \ No newline at end of file diff --git "a/algorithm/LeetCode\345\210\267\351\242\230/1047-\345\210\240\351\231\244\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\346\211\200\346\234\211\347\233\270\351\202\273\351\207\215\345\244\215\351\241\271.html" "b/algorithm/LeetCode\345\210\267\351\242\230/1047-\345\210\240\351\231\244\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\346\211\200\346\234\211\347\233\270\351\202\273\351\207\215\345\244\215\351\241\271.html" index 6593b772..89af3f4b 100644 --- "a/algorithm/LeetCode\345\210\267\351\242\230/1047-\345\210\240\351\231\244\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\346\211\200\346\234\211\347\233\270\351\202\273\351\207\215\345\244\215\351\241\271.html" +++ "b/algorithm/LeetCode\345\210\267\351\242\230/1047-\345\210\240\351\231\244\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\346\211\200\346\234\211\347\233\270\351\202\273\351\207\215\345\244\215\351\241\271.html" @@ -6,9 +6,9 @@ 1047-删除字符串中的所有相邻重复项 | mx52jing - - - + + + @@ -65,8 +65,8 @@ return res.join('') }; - - + + \ No newline at end of file diff --git "a/algorithm/LeetCode\345\210\267\351\242\230/136-\345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227.html" "b/algorithm/LeetCode\345\210\267\351\242\230/136-\345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227.html" index e3277940..5693be52 100644 --- "a/algorithm/LeetCode\345\210\267\351\242\230/136-\345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227.html" +++ "b/algorithm/LeetCode\345\210\267\351\242\230/136-\345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227.html" @@ -6,9 +6,9 @@ 136-只出现一次的数字 | mx52jing - - - + + + @@ -71,8 +71,8 @@ return nums.reduce((prev, cur) => prev ^ cur, 0) }; - - + + \ No newline at end of file diff --git "a/algorithm/LeetCode\345\210\267\351\242\230/14-\346\234\200\351\225\277\345\205\254\345\205\261\345\211\215\347\274\200.html" "b/algorithm/LeetCode\345\210\267\351\242\230/14-\346\234\200\351\225\277\345\205\254\345\205\261\345\211\215\347\274\200.html" index b28609c7..5847e608 100644 --- "a/algorithm/LeetCode\345\210\267\351\242\230/14-\346\234\200\351\225\277\345\205\254\345\205\261\345\211\215\347\274\200.html" +++ "b/algorithm/LeetCode\345\210\267\351\242\230/14-\346\234\200\351\225\277\345\205\254\345\205\261\345\211\215\347\274\200.html" @@ -6,9 +6,9 @@ 14-最长公共前缀 | mx52jing - - - + + + @@ -53,8 +53,8 @@ return commonStr }; - - + + \ No newline at end of file diff --git "a/algorithm/LeetCode\345\210\267\351\242\230/144-94-145-\351\201\215\345\216\206\344\272\214\345\217\211\346\240\221.html" "b/algorithm/LeetCode\345\210\267\351\242\230/144-94-145-\351\201\215\345\216\206\344\272\214\345\217\211\346\240\221.html" index 7a29e5b3..01ee43dc 100644 --- "a/algorithm/LeetCode\345\210\267\351\242\230/144-94-145-\351\201\215\345\216\206\344\272\214\345\217\211\346\240\221.html" +++ "b/algorithm/LeetCode\345\210\267\351\242\230/144-94-145-\351\201\215\345\216\206\344\272\214\345\217\211\346\240\221.html" @@ -6,9 +6,9 @@ 144-94-145-遍历二叉树 | mx52jing - - - + + + @@ -176,8 +176,8 @@ return res }; - - + + \ No newline at end of file diff --git "a/algorithm/LeetCode\345\210\267\351\242\230/15-\344\270\211\346\225\260\344\271\213\345\222\214.html" "b/algorithm/LeetCode\345\210\267\351\242\230/15-\344\270\211\346\225\260\344\271\213\345\222\214.html" index 5d4a790e..8a29be1a 100644 --- "a/algorithm/LeetCode\345\210\267\351\242\230/15-\344\270\211\346\225\260\344\271\213\345\222\214.html" +++ "b/algorithm/LeetCode\345\210\267\351\242\230/15-\344\270\211\346\225\260\344\271\213\345\222\214.html" @@ -6,9 +6,9 @@ 15-三数之和 | mx52jing - - - + + + @@ -88,8 +88,8 @@ return res }; - - + + \ No newline at end of file diff --git "a/algorithm/LeetCode\345\210\267\351\242\230/150-\351\200\206\346\263\242\345\205\260\350\241\250\350\276\276\345\274\217\346\261\202\345\200\274.html" "b/algorithm/LeetCode\345\210\267\351\242\230/150-\351\200\206\346\263\242\345\205\260\350\241\250\350\276\276\345\274\217\346\261\202\345\200\274.html" index 8b92c1ba..fdb39737 100644 --- "a/algorithm/LeetCode\345\210\267\351\242\230/150-\351\200\206\346\263\242\345\205\260\350\241\250\350\276\276\345\274\217\346\261\202\345\200\274.html" +++ "b/algorithm/LeetCode\345\210\267\351\242\230/150-\351\200\206\346\263\242\345\205\260\350\241\250\350\276\276\345\274\217\346\261\202\345\200\274.html" @@ -6,9 +6,9 @@ 150-逆波兰表达式求值 | mx52jing - - - + + + @@ -107,8 +107,8 @@ return stack.pop() }; - - + + \ No newline at end of file diff --git "a/algorithm/LeetCode\345\210\267\351\242\230/151-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\215\225\350\257\215.html" "b/algorithm/LeetCode\345\210\267\351\242\230/151-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\215\225\350\257\215.html" index 877a4a56..b3abcfda 100644 --- "a/algorithm/LeetCode\345\210\267\351\242\230/151-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\215\225\350\257\215.html" +++ "b/algorithm/LeetCode\345\210\267\351\242\230/151-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\215\225\350\257\215.html" @@ -6,9 +6,9 @@ 151-反转字符串中的单词 | mx52jing - - - + + + @@ -62,8 +62,8 @@ return reverseResult.join(' ').trim() }; - - + + \ No newline at end of file diff --git "a/algorithm/LeetCode\345\210\267\351\242\230/17-\347\224\265\350\257\235\345\217\267\347\240\201\347\232\204\345\255\227\346\257\215\347\273\204\345\220\210.html" "b/algorithm/LeetCode\345\210\267\351\242\230/17-\347\224\265\350\257\235\345\217\267\347\240\201\347\232\204\345\255\227\346\257\215\347\273\204\345\220\210.html" index 4284b8bb..401beea2 100644 --- "a/algorithm/LeetCode\345\210\267\351\242\230/17-\347\224\265\350\257\235\345\217\267\347\240\201\347\232\204\345\255\227\346\257\215\347\273\204\345\220\210.html" +++ "b/algorithm/LeetCode\345\210\267\351\242\230/17-\347\224\265\350\257\235\345\217\267\347\240\201\347\232\204\345\255\227\346\257\215\347\273\204\345\220\210.html" @@ -6,9 +6,9 @@ 17-电话号码的字母组合 | mx52jing - - - + + + @@ -99,8 +99,8 @@ return res; }; - - + + \ No newline at end of file diff --git "a/algorithm/LeetCode\345\210\267\351\242\230/18-\345\233\233\346\225\260\344\271\213\345\222\214.html" "b/algorithm/LeetCode\345\210\267\351\242\230/18-\345\233\233\346\225\260\344\271\213\345\222\214.html" index 5782a884..49a29183 100644 --- "a/algorithm/LeetCode\345\210\267\351\242\230/18-\345\233\233\346\225\260\344\271\213\345\222\214.html" +++ "b/algorithm/LeetCode\345\210\267\351\242\230/18-\345\233\233\346\225\260\344\271\213\345\222\214.html" @@ -6,9 +6,9 @@ 18-四数之和 | mx52jing - - - + + + @@ -92,8 +92,8 @@ return res }; - - + + \ No newline at end of file diff --git "a/algorithm/LeetCode\345\210\267\351\242\230/19-\345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254N\344\270\252\347\273\223\347\202\271.html" "b/algorithm/LeetCode\345\210\267\351\242\230/19-\345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254N\344\270\252\347\273\223\347\202\271.html" index b1b0c1dd..0155ef7c 100644 --- "a/algorithm/LeetCode\345\210\267\351\242\230/19-\345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254N\344\270\252\347\273\223\347\202\271.html" +++ "b/algorithm/LeetCode\345\210\267\351\242\230/19-\345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254N\344\270\252\347\273\223\347\202\271.html" @@ -6,9 +6,9 @@ 19-删除链表的倒数第N个结点 | mx52jing - - - + + + @@ -65,8 +65,8 @@ return dummyHead.next }; - - + + \ No newline at end of file diff --git "a/algorithm/LeetCode\345\210\267\351\242\230/20-\346\234\211\346\225\210\347\232\204\346\213\254\345\217\267.html" "b/algorithm/LeetCode\345\210\267\351\242\230/20-\346\234\211\346\225\210\347\232\204\346\213\254\345\217\267.html" index 4e07197a..1085128f 100644 --- "a/algorithm/LeetCode\345\210\267\351\242\230/20-\346\234\211\346\225\210\347\232\204\346\213\254\345\217\267.html" +++ "b/algorithm/LeetCode\345\210\267\351\242\230/20-\346\234\211\346\225\210\347\232\204\346\213\254\345\217\267.html" @@ -6,9 +6,9 @@ 20-有效的括号 | mx52jing - - - + + + @@ -92,8 +92,8 @@ return !stack.length; }; - - + + \ No newline at end of file diff --git "a/algorithm/LeetCode\345\210\267\351\242\230/202-\345\277\253\344\271\220\346\225\260.html" "b/algorithm/LeetCode\345\210\267\351\242\230/202-\345\277\253\344\271\220\346\225\260.html" index f39dbc41..20357bcf 100644 --- "a/algorithm/LeetCode\345\210\267\351\242\230/202-\345\277\253\344\271\220\346\225\260.html" +++ "b/algorithm/LeetCode\345\210\267\351\242\230/202-\345\277\253\344\271\220\346\225\260.html" @@ -6,9 +6,9 @@ 202-快乐数 | mx52jing - - - + + + @@ -80,8 +80,8 @@ return fastNode === 1 }; - - + + \ No newline at end of file diff --git "a/algorithm/LeetCode\345\210\267\351\242\230/203-\347\247\273\351\231\244\351\223\276\350\241\250\345\205\203\347\264\240.html" "b/algorithm/LeetCode\345\210\267\351\242\230/203-\347\247\273\351\231\244\351\223\276\350\241\250\345\205\203\347\264\240.html" index ef416fab..49492dcd 100644 --- "a/algorithm/LeetCode\345\210\267\351\242\230/203-\347\247\273\351\231\244\351\223\276\350\241\250\345\205\203\347\264\240.html" +++ "b/algorithm/LeetCode\345\210\267\351\242\230/203-\347\247\273\351\231\244\351\223\276\350\241\250\345\205\203\347\264\240.html" @@ -6,9 +6,9 @@ 203-移除链表元素 | mx52jing - - - + + + @@ -83,8 +83,8 @@ return dummyHead.next }; - - + + \ No newline at end of file diff --git "a/algorithm/LeetCode\345\210\267\351\242\230/206-\345\217\215\350\275\254\351\223\276\350\241\250.html" "b/algorithm/LeetCode\345\210\267\351\242\230/206-\345\217\215\350\275\254\351\223\276\350\241\250.html" index a9e9c3b3..4e3e5744 100644 --- "a/algorithm/LeetCode\345\210\267\351\242\230/206-\345\217\215\350\275\254\351\223\276\350\241\250.html" +++ "b/algorithm/LeetCode\345\210\267\351\242\230/206-\345\217\215\350\275\254\351\223\276\350\241\250.html" @@ -6,9 +6,9 @@ 206-反转链表 | mx52jing - - - + + + @@ -68,8 +68,8 @@ return reverseLinklist(null, head) }; - - + + \ No newline at end of file diff --git "a/algorithm/LeetCode\345\210\267\351\242\230/209-\351\225\277\345\272\246\346\234\200\345\260\217\347\232\204\345\255\220\346\225\260\347\273\204.html" "b/algorithm/LeetCode\345\210\267\351\242\230/209-\351\225\277\345\272\246\346\234\200\345\260\217\347\232\204\345\255\220\346\225\260\347\273\204.html" index a9727ae6..9d0eaa62 100644 --- "a/algorithm/LeetCode\345\210\267\351\242\230/209-\351\225\277\345\272\246\346\234\200\345\260\217\347\232\204\345\255\220\346\225\260\347\273\204.html" +++ "b/algorithm/LeetCode\345\210\267\351\242\230/209-\351\225\277\345\272\246\346\234\200\345\260\217\347\232\204\345\255\220\346\225\260\347\273\204.html" @@ -6,9 +6,9 @@ 209-长度最小的子数组 | mx52jing - - - + + + @@ -78,8 +78,8 @@ return minLength === Infinity ? 0 : minLength }; - - + + \ No newline at end of file diff --git "a/algorithm/LeetCode\345\210\267\351\242\230/24-\344\270\244\344\270\244\344\272\244\346\215\242\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.html" "b/algorithm/LeetCode\345\210\267\351\242\230/24-\344\270\244\344\270\244\344\272\244\346\215\242\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.html" index 576368e0..019d39a3 100644 --- "a/algorithm/LeetCode\345\210\267\351\242\230/24-\344\270\244\344\270\244\344\272\244\346\215\242\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.html" +++ "b/algorithm/LeetCode\345\210\267\351\242\230/24-\344\270\244\344\270\244\344\272\244\346\215\242\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.html" @@ -6,9 +6,9 @@ 24-两两交换链表中的节点 | mx52jing - - - + + + @@ -87,8 +87,8 @@ return dummyHead.next }; - - + + \ No newline at end of file diff --git "a/algorithm/LeetCode\345\210\267\351\242\230/242-\346\234\211\346\225\210\347\232\204\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.html" "b/algorithm/LeetCode\345\210\267\351\242\230/242-\346\234\211\346\225\210\347\232\204\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.html" index bdedbd49..896ead4e 100644 --- "a/algorithm/LeetCode\345\210\267\351\242\230/242-\346\234\211\346\225\210\347\232\204\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.html" +++ "b/algorithm/LeetCode\345\210\267\351\242\230/242-\346\234\211\346\225\210\347\232\204\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.html" @@ -6,9 +6,9 @@ 242-有效的字母异位词 | mx52jing - - - + + + @@ -108,8 +108,8 @@ return genStrCharCode(s) === genStrCharCode(t) }; - - + + \ No newline at end of file diff --git "a/algorithm/LeetCode\345\210\267\351\242\230/26-\345\210\240\351\231\244\346\234\211\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\351\207\215\345\244\215\351\241\271.html" "b/algorithm/LeetCode\345\210\267\351\242\230/26-\345\210\240\351\231\244\346\234\211\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\351\207\215\345\244\215\351\241\271.html" index a9e791e0..635ff451 100644 --- "a/algorithm/LeetCode\345\210\267\351\242\230/26-\345\210\240\351\231\244\346\234\211\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\351\207\215\345\244\215\351\241\271.html" +++ "b/algorithm/LeetCode\345\210\267\351\242\230/26-\345\210\240\351\231\244\346\234\211\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\351\207\215\345\244\215\351\241\271.html" @@ -6,9 +6,9 @@ 26-删除有序数组中的重复项 | mx52jing - - - + + + @@ -61,8 +61,8 @@ return nums.length }; - - + + \ No newline at end of file diff --git "a/algorithm/LeetCode\345\210\267\351\242\230/27-\347\247\273\351\231\244\345\205\203\347\264\240.html" "b/algorithm/LeetCode\345\210\267\351\242\230/27-\347\247\273\351\231\244\345\205\203\347\264\240.html" index de6eafc0..7b1f2702 100644 --- "a/algorithm/LeetCode\345\210\267\351\242\230/27-\347\247\273\351\231\244\345\205\203\347\264\240.html" +++ "b/algorithm/LeetCode\345\210\267\351\242\230/27-\347\247\273\351\231\244\345\205\203\347\264\240.html" @@ -6,9 +6,9 @@ 27-移除元素 | mx52jing - - - + + + @@ -82,8 +82,8 @@ return i }; - - + + \ No newline at end of file diff --git "a/algorithm/LeetCode\345\210\267\351\242\230/28-\346\211\276\345\207\272\345\255\227\347\254\246\344\270\262\344\270\255\347\254\254\344\270\200\344\270\252\345\214\271\351\205\215\351\241\271\347\232\204\344\270\213\346\240\207.html" "b/algorithm/LeetCode\345\210\267\351\242\230/28-\346\211\276\345\207\272\345\255\227\347\254\246\344\270\262\344\270\255\347\254\254\344\270\200\344\270\252\345\214\271\351\205\215\351\241\271\347\232\204\344\270\213\346\240\207.html" index 03e0a941..9499c2df 100644 --- "a/algorithm/LeetCode\345\210\267\351\242\230/28-\346\211\276\345\207\272\345\255\227\347\254\246\344\270\262\344\270\255\347\254\254\344\270\200\344\270\252\345\214\271\351\205\215\351\241\271\347\232\204\344\270\213\346\240\207.html" +++ "b/algorithm/LeetCode\345\210\267\351\242\230/28-\346\211\276\345\207\272\345\255\227\347\254\246\344\270\262\344\270\255\347\254\254\344\270\200\344\270\252\345\214\271\351\205\215\351\241\271\347\232\204\344\270\213\346\240\207.html" @@ -6,9 +6,9 @@ 28-找出字符串中第一个匹配项的下标 | mx52jing - - - + + + @@ -62,8 +62,8 @@ return -1 }; - - + + \ No newline at end of file diff --git "a/algorithm/LeetCode\345\210\267\351\242\230/3-\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.html" "b/algorithm/LeetCode\345\210\267\351\242\230/3-\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.html" index 6baa61b2..31793558 100644 --- "a/algorithm/LeetCode\345\210\267\351\242\230/3-\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.html" +++ "b/algorithm/LeetCode\345\210\267\351\242\230/3-\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.html" @@ -6,9 +6,9 @@ 3-无重复字符的最长子串 | mx52jing - - - + + + @@ -96,8 +96,8 @@ return max }; - - + + \ No newline at end of file diff --git "a/algorithm/LeetCode\345\210\267\351\242\230/344-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262.html" "b/algorithm/LeetCode\345\210\267\351\242\230/344-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262.html" index c6859197..60f0c467 100644 --- "a/algorithm/LeetCode\345\210\267\351\242\230/344-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262.html" +++ "b/algorithm/LeetCode\345\210\267\351\242\230/344-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262.html" @@ -6,9 +6,9 @@ 344-反转字符串 | mx52jing - - - + + + @@ -61,8 +61,8 @@ return s }; - - + + \ No newline at end of file diff --git "a/algorithm/LeetCode\345\210\267\351\242\230/349-\344\270\244\344\270\252\346\225\260\347\273\204\347\232\204\344\272\244\351\233\206.html" "b/algorithm/LeetCode\345\210\267\351\242\230/349-\344\270\244\344\270\252\346\225\260\347\273\204\347\232\204\344\272\244\351\233\206.html" index 1c1b2a06..11071718 100644 --- "a/algorithm/LeetCode\345\210\267\351\242\230/349-\344\270\244\344\270\252\346\225\260\347\273\204\347\232\204\344\272\244\351\233\206.html" +++ "b/algorithm/LeetCode\345\210\267\351\242\230/349-\344\270\244\344\270\252\346\225\260\347\273\204\347\232\204\344\272\244\351\233\206.html" @@ -6,9 +6,9 @@ 349-两个数组的交集 | mx52jing - - - + + + @@ -65,8 +65,8 @@ return res }; - - + + \ No newline at end of file diff --git "a/algorithm/LeetCode\345\210\267\351\242\230/35-\346\220\234\347\264\242\346\217\222\345\205\245\344\275\215\347\275\256.html" "b/algorithm/LeetCode\345\210\267\351\242\230/35-\346\220\234\347\264\242\346\217\222\345\205\245\344\275\215\347\275\256.html" index 5e072893..435d2946 100644 --- "a/algorithm/LeetCode\345\210\267\351\242\230/35-\346\220\234\347\264\242\346\217\222\345\205\245\344\275\215\347\275\256.html" +++ "b/algorithm/LeetCode\345\210\267\351\242\230/35-\346\220\234\347\264\242\346\217\222\345\205\245\344\275\215\347\275\256.html" @@ -6,9 +6,9 @@ 35-搜索插入位置 | mx52jing - - - + + + @@ -56,8 +56,8 @@ return left; }; - - + + \ No newline at end of file diff --git "a/algorithm/LeetCode\345\210\267\351\242\230/414-\347\254\254\344\270\211\345\244\247\347\232\204\346\225\260.html" "b/algorithm/LeetCode\345\210\267\351\242\230/414-\347\254\254\344\270\211\345\244\247\347\232\204\346\225\260.html" index 51453181..03f5ebc4 100644 --- "a/algorithm/LeetCode\345\210\267\351\242\230/414-\347\254\254\344\270\211\345\244\247\347\232\204\346\225\260.html" +++ "b/algorithm/LeetCode\345\210\267\351\242\230/414-\347\254\254\344\270\211\345\244\247\347\232\204\346\225\260.html" @@ -6,9 +6,9 @@ 414-第三大的数 | mx52jing - - - + + + @@ -77,8 +77,8 @@ return max3 === -Infinity ? max1 : max3 }; - - + + \ No newline at end of file diff --git "a/algorithm/LeetCode\345\210\267\351\242\230/454-\345\233\233\346\225\260\347\233\270\345\212\240II.html" "b/algorithm/LeetCode\345\210\267\351\242\230/454-\345\233\233\346\225\260\347\233\270\345\212\240II.html" index e7268018..f89f1ac1 100644 --- "a/algorithm/LeetCode\345\210\267\351\242\230/454-\345\233\233\346\225\260\347\233\270\345\212\240II.html" +++ "b/algorithm/LeetCode\345\210\267\351\242\230/454-\345\233\233\346\225\260\347\233\270\345\212\240II.html" @@ -6,9 +6,9 @@ 454-四数相加II | mx52jing - - - + + + @@ -76,8 +76,8 @@ return count }; - - + + \ No newline at end of file diff --git "a/algorithm/LeetCode\345\210\267\351\242\230/485-\346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260.html" "b/algorithm/LeetCode\345\210\267\351\242\230/485-\346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260.html" index baf6a8ff..7509f368 100644 --- "a/algorithm/LeetCode\345\210\267\351\242\230/485-\346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260.html" +++ "b/algorithm/LeetCode\345\210\267\351\242\230/485-\346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260.html" @@ -6,9 +6,9 @@ 485-最大连续 1 的个数 | mx52jing - - - + + + @@ -61,8 +61,8 @@ return Math.max(maxCount, currentNumCount) }; - - + + \ No newline at end of file diff --git "a/algorithm/LeetCode\345\210\267\351\242\230/520-\346\243\200\346\265\213\345\244\247\345\206\231\345\255\227\346\257\215.html" "b/algorithm/LeetCode\345\210\267\351\242\230/520-\346\243\200\346\265\213\345\244\247\345\206\231\345\255\227\346\257\215.html" index e8f3da33..d801d99a 100644 --- "a/algorithm/LeetCode\345\210\267\351\242\230/520-\346\243\200\346\265\213\345\244\247\345\206\231\345\255\227\346\257\215.html" +++ "b/algorithm/LeetCode\345\210\267\351\242\230/520-\346\243\200\346\265\213\345\244\247\345\206\231\345\255\227\346\257\215.html" @@ -6,9 +6,9 @@ 520-检测大写字母 | mx52jing - - - + + + @@ -70,8 +70,8 @@ return upperStrCount === len || (upperStrCount === 0 && upperSreIndex === -1) || (upperStrCount === 1 && upperSreIndex === 0) }; - - + + \ No newline at end of file diff --git "a/algorithm/LeetCode\345\210\267\351\242\230/541-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262II.html" "b/algorithm/LeetCode\345\210\267\351\242\230/541-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262II.html" index 004af90b..6555bbb1 100644 --- "a/algorithm/LeetCode\345\210\267\351\242\230/541-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262II.html" +++ "b/algorithm/LeetCode\345\210\267\351\242\230/541-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262II.html" @@ -6,9 +6,9 @@ 541-反转字符串II | mx52jing - - - + + + @@ -58,8 +58,8 @@ return s }; - - + + \ No newline at end of file diff --git "a/algorithm/LeetCode\345\210\267\351\242\230/58-\346\234\200\345\220\216\344\270\200\344\270\252\345\215\225\350\257\215\347\232\204\351\225\277\345\272\246.html" "b/algorithm/LeetCode\345\210\267\351\242\230/58-\346\234\200\345\220\216\344\270\200\344\270\252\345\215\225\350\257\215\347\232\204\351\225\277\345\272\246.html" index 2876012e..6a6dd7de 100644 --- "a/algorithm/LeetCode\345\210\267\351\242\230/58-\346\234\200\345\220\216\344\270\200\344\270\252\345\215\225\350\257\215\347\232\204\351\225\277\345\272\246.html" +++ "b/algorithm/LeetCode\345\210\267\351\242\230/58-\346\234\200\345\220\216\344\270\200\344\270\252\345\215\225\350\257\215\347\232\204\351\225\277\345\272\246.html" @@ -6,9 +6,9 @@ 58-最后一个单词的长度 | mx52jing - - - + + + @@ -60,8 +60,8 @@ } }; - - + + \ No newline at end of file diff --git "a/algorithm/LeetCode\345\210\267\351\242\230/628-\344\270\211\344\270\252\346\225\260\347\232\204\346\234\200\345\244\247\344\271\230\347\247\257.html" "b/algorithm/LeetCode\345\210\267\351\242\230/628-\344\270\211\344\270\252\346\225\260\347\232\204\346\234\200\345\244\247\344\271\230\347\247\257.html" index b7d06c24..f4dc97dd 100644 --- "a/algorithm/LeetCode\345\210\267\351\242\230/628-\344\270\211\344\270\252\346\225\260\347\232\204\346\234\200\345\244\247\344\271\230\347\247\257.html" +++ "b/algorithm/LeetCode\345\210\267\351\242\230/628-\344\270\211\344\270\252\346\225\260\347\232\204\346\234\200\345\244\247\344\271\230\347\247\257.html" @@ -6,9 +6,9 @@ 628-三个数的最大乘积 | mx52jing - - - + + + @@ -75,8 +75,8 @@ ) }; - - + + \ No newline at end of file diff --git "a/algorithm/LeetCode\345\210\267\351\242\230/707-\350\256\276\350\256\241\351\223\276\350\241\250.html" "b/algorithm/LeetCode\345\210\267\351\242\230/707-\350\256\276\350\256\241\351\223\276\350\241\250.html" index 8a97b861..0418cc2f 100644 --- "a/algorithm/LeetCode\345\210\267\351\242\230/707-\350\256\276\350\256\241\351\223\276\350\241\250.html" +++ "b/algorithm/LeetCode\345\210\267\351\242\230/707-\350\256\276\350\256\241\351\223\276\350\241\250.html" @@ -6,9 +6,9 @@ 707-设计链表 | mx52jing - - - + + + @@ -166,8 +166,8 @@ * obj.deleteAtIndex(index) */ - - + + \ No newline at end of file diff --git "a/algorithm/LeetCode\345\210\267\351\242\230/9-\345\233\236\346\226\207\346\225\260.html" "b/algorithm/LeetCode\345\210\267\351\242\230/9-\345\233\236\346\226\207\346\225\260.html" index d93ef3de..409c6cc6 100644 --- "a/algorithm/LeetCode\345\210\267\351\242\230/9-\345\233\236\346\226\207\346\225\260.html" +++ "b/algorithm/LeetCode\345\210\267\351\242\230/9-\345\233\236\346\226\207\346\225\260.html" @@ -6,9 +6,9 @@ 9-回文数 | mx52jing - - - + + + @@ -65,8 +65,8 @@ return x === revertedNumber || x === Math.floor(revertedNumber / 10) }; - - + + \ No newline at end of file diff --git "a/algorithm/LeetCode\345\210\267\351\242\230/977-\346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\345\271\263\346\226\271.html" "b/algorithm/LeetCode\345\210\267\351\242\230/977-\346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\345\271\263\346\226\271.html" index 0e848d00..f0359442 100644 --- "a/algorithm/LeetCode\345\210\267\351\242\230/977-\346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\345\271\263\346\226\271.html" +++ "b/algorithm/LeetCode\345\210\267\351\242\230/977-\346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\345\271\263\346\226\271.html" @@ -6,9 +6,9 @@ 977-有序数组的平方 | mx52jing - - - + + + @@ -65,8 +65,8 @@ return result }; - - + + \ No newline at end of file diff --git "a/algorithm/LeetCode\345\210\267\351\242\230/LCR-018-\351\252\214\350\257\201\345\233\236\346\226\207\344\270\262.html" "b/algorithm/LeetCode\345\210\267\351\242\230/LCR-018-\351\252\214\350\257\201\345\233\236\346\226\207\344\270\262.html" index 7c0e830b..e6f57765 100644 --- "a/algorithm/LeetCode\345\210\267\351\242\230/LCR-018-\351\252\214\350\257\201\345\233\236\346\226\207\344\270\262.html" +++ "b/algorithm/LeetCode\345\210\267\351\242\230/LCR-018-\351\252\214\350\257\201\345\233\236\346\226\207\344\270\262.html" @@ -6,9 +6,9 @@ LCR-018-验证回文串 | mx52jing - - - + + + @@ -48,8 +48,8 @@ return true }; - - + + \ No newline at end of file diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_1-\344\270\244\346\225\260\344\271\213\345\222\214.md.4a4443fd.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_1-\344\270\244\346\225\260\344\271\213\345\222\214.md.b7a16a78.js" similarity index 99% rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_1-\344\270\244\346\225\260\344\271\213\345\222\214.md.4a4443fd.js" rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_1-\344\270\244\346\225\260\344\271\213\345\222\214.md.b7a16a78.js" index a92c6996..1418257b 100644 --- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_1-\344\270\244\346\225\260\344\271\213\345\222\214.md.4a4443fd.js" +++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_1-\344\270\244\346\225\260\344\271\213\345\222\214.md.b7a16a78.js" @@ -1,4 +1,4 @@ -import{_ as o,c as p,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.fa87702c.js";const g=JSON.parse('{"title":"1-两数之和","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/1-两数之和.md"}'),r={name:"algorithm/LeetCode刷题/1-两数之和.md"},y=s("h1",{id:"_1-两数之和",tabindex:"-1"},[n("1-两数之和 "),s("a",{class:"header-anchor",href:"#_1-两数之和","aria-hidden":"true"},"#")],-1),F=t(`

题目信息

题目地址两数之和

题目内容:

javascript
给定一个整数数组nums和一个整数目标值target
+import{_ as o,c as p,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.2f6419f0.js";const g=JSON.parse('{"title":"1-两数之和","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/1-两数之和.md"}'),r={name:"algorithm/LeetCode刷题/1-两数之和.md"},y=s("h1",{id:"_1-两数之和",tabindex:"-1"},[n("1-两数之和 "),s("a",{class:"header-anchor",href:"#_1-两数之和","aria-hidden":"true"},"#")],-1),F=t(`

题目信息

题目地址两数之和

题目内容:

javascript
给定一个整数数组nums和一个整数目标值target
 
 请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。
 
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_1-\344\270\244\346\225\260\344\271\213\345\222\214.md.4a4443fd.lean.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_1-\344\270\244\346\225\260\344\271\213\345\222\214.md.b7a16a78.lean.js"
similarity index 93%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_1-\344\270\244\346\225\260\344\271\213\345\222\214.md.4a4443fd.lean.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_1-\344\270\244\346\225\260\344\271\213\345\222\214.md.b7a16a78.lean.js"
index 808e060d..d52d7458 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_1-\344\270\244\346\225\260\344\271\213\345\222\214.md.4a4443fd.lean.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_1-\344\270\244\346\225\260\344\271\213\345\222\214.md.b7a16a78.lean.js"
@@ -1 +1 @@
-import{_ as o,c as p,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.fa87702c.js";const g=JSON.parse('{"title":"1-两数之和","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/1-两数之和.md"}'),r={name:"algorithm/LeetCode刷题/1-两数之和.md"},y=s("h1",{id:"_1-两数之和",tabindex:"-1"},[n("1-两数之和 "),s("a",{class:"header-anchor",href:"#_1-两数之和","aria-hidden":"true"},"#")],-1),F=t("",15);function D(i,C,A,d,f,u){const a=c("Badge");return e(),p("div",null,[y,s("p",null,[n("标签:"),l(a,{type:"tip",text:"数组"}),n(),l(a,{type:"tip",text:"哈希表"})]),F])}const m=o(r,[["render",D]]);export{g as __pageData,m as default};
+import{_ as o,c as p,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.2f6419f0.js";const g=JSON.parse('{"title":"1-两数之和","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/1-两数之和.md"}'),r={name:"algorithm/LeetCode刷题/1-两数之和.md"},y=s("h1",{id:"_1-两数之和",tabindex:"-1"},[n("1-两数之和 "),s("a",{class:"header-anchor",href:"#_1-两数之和","aria-hidden":"true"},"#")],-1),F=t("",15);function D(i,C,A,d,f,u){const a=c("Badge");return e(),p("div",null,[y,s("p",null,[n("标签:"),l(a,{type:"tip",text:"数组"}),n(),l(a,{type:"tip",text:"哈希表"})]),F])}const m=o(r,[["render",D]]);export{g as __pageData,m as default};
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_1047-\345\210\240\351\231\244\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\346\211\200\346\234\211\347\233\270\351\202\273\351\207\215\345\244\215\351\241\271.md.1b8de632.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_1047-\345\210\240\351\231\244\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\346\211\200\346\234\211\347\233\270\351\202\273\351\207\215\345\244\215\351\241\271.md.ba4c16c2.js"
similarity index 99%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_1047-\345\210\240\351\231\244\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\346\211\200\346\234\211\347\233\270\351\202\273\351\207\215\345\244\215\351\241\271.md.1b8de632.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_1047-\345\210\240\351\231\244\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\346\211\200\346\234\211\347\233\270\351\202\273\351\207\215\345\244\215\351\241\271.md.ba4c16c2.js"
index 1ec709a0..8741633f 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_1047-\345\210\240\351\231\244\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\346\211\200\346\234\211\347\233\270\351\202\273\351\207\215\345\244\215\351\241\271.md.1b8de632.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_1047-\345\210\240\351\231\244\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\346\211\200\346\234\211\347\233\270\351\202\273\351\207\215\345\244\215\351\241\271.md.ba4c16c2.js"
@@ -1,4 +1,4 @@
-import{_ as p,c as o,a as s,b as n,d as l,e,o as t,r as c}from"./app.fa87702c.js";const _=JSON.parse('{"title":"1047-删除字符串中的所有相邻重复项","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/1047-删除字符串中的所有相邻重复项.md"}'),r={name:"algorithm/LeetCode刷题/1047-删除字符串中的所有相邻重复项.md"},y=s("h1",{id:"_1047-删除字符串中的所有相邻重复项",tabindex:"-1"},[n("1047-删除字符串中的所有相邻重复项 "),s("a",{class:"header-anchor",href:"#_1047-删除字符串中的所有相邻重复项","aria-hidden":"true"},"#")],-1),F=e(`

题目信息

题目地址1047. 删除字符串中的所有相邻重复项

题目内容:

javascript
给出由小写字母组成的字符串S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。
+import{_ as p,c as o,a as s,b as n,d as l,e,o as t,r as c}from"./app.2f6419f0.js";const _=JSON.parse('{"title":"1047-删除字符串中的所有相邻重复项","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/1047-删除字符串中的所有相邻重复项.md"}'),r={name:"algorithm/LeetCode刷题/1047-删除字符串中的所有相邻重复项.md"},y=s("h1",{id:"_1047-删除字符串中的所有相邻重复项",tabindex:"-1"},[n("1047-删除字符串中的所有相邻重复项 "),s("a",{class:"header-anchor",href:"#_1047-删除字符串中的所有相邻重复项","aria-hidden":"true"},"#")],-1),F=e(`

题目信息

题目地址1047. 删除字符串中的所有相邻重复项

题目内容:

javascript
给出由小写字母组成的字符串S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。
 在S上反复执行重复项删除操作,直到无法继续删除。
 
 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_1047-\345\210\240\351\231\244\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\346\211\200\346\234\211\347\233\270\351\202\273\351\207\215\345\244\215\351\241\271.md.1b8de632.lean.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_1047-\345\210\240\351\231\244\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\346\211\200\346\234\211\347\233\270\351\202\273\351\207\215\345\244\215\351\241\271.md.ba4c16c2.lean.js"
similarity index 94%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_1047-\345\210\240\351\231\244\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\346\211\200\346\234\211\347\233\270\351\202\273\351\207\215\345\244\215\351\241\271.md.1b8de632.lean.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_1047-\345\210\240\351\231\244\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\346\211\200\346\234\211\347\233\270\351\202\273\351\207\215\345\244\215\351\241\271.md.ba4c16c2.lean.js"
index 0fbf4be3..5869fe81 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_1047-\345\210\240\351\231\244\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\346\211\200\346\234\211\347\233\270\351\202\273\351\207\215\345\244\215\351\241\271.md.1b8de632.lean.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_1047-\345\210\240\351\231\244\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\346\211\200\346\234\211\347\233\270\351\202\273\351\207\215\345\244\215\351\241\271.md.ba4c16c2.lean.js"
@@ -1 +1 @@
-import{_ as p,c as o,a as s,b as n,d as l,e,o as t,r as c}from"./app.fa87702c.js";const _=JSON.parse('{"title":"1047-删除字符串中的所有相邻重复项","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/1047-删除字符串中的所有相邻重复项.md"}'),r={name:"algorithm/LeetCode刷题/1047-删除字符串中的所有相邻重复项.md"},y=s("h1",{id:"_1047-删除字符串中的所有相邻重复项",tabindex:"-1"},[n("1047-删除字符串中的所有相邻重复项 "),s("a",{class:"header-anchor",href:"#_1047-删除字符串中的所有相邻重复项","aria-hidden":"true"},"#")],-1),F=e("",15);function D(i,C,A,d,f,u){const a=c("Badge");return t(),o("div",null,[y,s("p",null,[n("标签:"),l(a,{type:"tip",text:"栈"}),n(),l(a,{type:"tip",text:"字符串"})]),F])}const g=p(r,[["render",D]]);export{_ as __pageData,g as default};
+import{_ as p,c as o,a as s,b as n,d as l,e,o as t,r as c}from"./app.2f6419f0.js";const _=JSON.parse('{"title":"1047-删除字符串中的所有相邻重复项","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/1047-删除字符串中的所有相邻重复项.md"}'),r={name:"algorithm/LeetCode刷题/1047-删除字符串中的所有相邻重复项.md"},y=s("h1",{id:"_1047-删除字符串中的所有相邻重复项",tabindex:"-1"},[n("1047-删除字符串中的所有相邻重复项 "),s("a",{class:"header-anchor",href:"#_1047-删除字符串中的所有相邻重复项","aria-hidden":"true"},"#")],-1),F=e("",15);function D(i,C,A,d,f,u){const a=c("Badge");return t(),o("div",null,[y,s("p",null,[n("标签:"),l(a,{type:"tip",text:"栈"}),n(),l(a,{type:"tip",text:"字符串"})]),F])}const g=p(r,[["render",D]]);export{_ as __pageData,g as default};
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_136-\345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227.md.b8de6059.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_136-\345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227.md.f1073a70.js"
similarity index 99%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_136-\345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227.md.b8de6059.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_136-\345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227.md.f1073a70.js"
index 8acd8300..8d34a70c 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_136-\345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227.md.b8de6059.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_136-\345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227.md.f1073a70.js"
@@ -1,4 +1,4 @@
-import{_ as p,c as o,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.fa87702c.js";const m=JSON.parse('{"title":"136-只出现一次的数字","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/136-只出现一次的数字.md"}'),r={name:"algorithm/LeetCode刷题/136-只出现一次的数字.md"},y=s("h1",{id:"_136-只出现一次的数字",tabindex:"-1"},[n("136-只出现一次的数字 "),s("a",{class:"header-anchor",href:"#_136-只出现一次的数字","aria-hidden":"true"},"#")],-1),F=t(`

题目信息

题目地址只出现一次的数字

题目内容:

javascript
给你一个非空整数数组nums,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
+import{_ as p,c as o,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.2f6419f0.js";const m=JSON.parse('{"title":"136-只出现一次的数字","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/136-只出现一次的数字.md"}'),r={name:"algorithm/LeetCode刷题/136-只出现一次的数字.md"},y=s("h1",{id:"_136-只出现一次的数字",tabindex:"-1"},[n("136-只出现一次的数字 "),s("a",{class:"header-anchor",href:"#_136-只出现一次的数字","aria-hidden":"true"},"#")],-1),F=t(`

题目信息

题目地址只出现一次的数字

题目内容:

javascript
给你一个非空整数数组nums,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
 
 你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。
  
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_136-\345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227.md.b8de6059.lean.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_136-\345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227.md.f1073a70.lean.js"
similarity index 94%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_136-\345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227.md.b8de6059.lean.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_136-\345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227.md.f1073a70.lean.js"
index c1f56932..c5192f44 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_136-\345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227.md.b8de6059.lean.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_136-\345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227.md.f1073a70.lean.js"
@@ -1 +1 @@
-import{_ as p,c as o,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.fa87702c.js";const m=JSON.parse('{"title":"136-只出现一次的数字","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/136-只出现一次的数字.md"}'),r={name:"algorithm/LeetCode刷题/136-只出现一次的数字.md"},y=s("h1",{id:"_136-只出现一次的数字",tabindex:"-1"},[n("136-只出现一次的数字 "),s("a",{class:"header-anchor",href:"#_136-只出现一次的数字","aria-hidden":"true"},"#")],-1),F=t("",18);function i(D,C,A,d,f,u){const a=c("Badge");return e(),o("div",null,[y,s("p",null,[n("标签:"),l(a,{type:"tip",text:"位运算"}),n(),l(a,{type:"tip",text:"数组"})]),F])}const g=p(r,[["render",i]]);export{m as __pageData,g as default};
+import{_ as p,c as o,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.2f6419f0.js";const m=JSON.parse('{"title":"136-只出现一次的数字","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/136-只出现一次的数字.md"}'),r={name:"algorithm/LeetCode刷题/136-只出现一次的数字.md"},y=s("h1",{id:"_136-只出现一次的数字",tabindex:"-1"},[n("136-只出现一次的数字 "),s("a",{class:"header-anchor",href:"#_136-只出现一次的数字","aria-hidden":"true"},"#")],-1),F=t("",18);function i(D,C,A,d,f,u){const a=c("Badge");return e(),o("div",null,[y,s("p",null,[n("标签:"),l(a,{type:"tip",text:"位运算"}),n(),l(a,{type:"tip",text:"数组"})]),F])}const g=p(r,[["render",i]]);export{m as __pageData,g as default};
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_14-\346\234\200\351\225\277\345\205\254\345\205\261\345\211\215\347\274\200.md.988c3016.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_14-\346\234\200\351\225\277\345\205\254\345\205\261\345\211\215\347\274\200.md.2013bd84.js"
similarity index 99%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_14-\346\234\200\351\225\277\345\205\254\345\205\261\345\211\215\347\274\200.md.988c3016.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_14-\346\234\200\351\225\277\345\205\254\345\205\261\345\211\215\347\274\200.md.2013bd84.js"
index 89b268e4..551930e5 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_14-\346\234\200\351\225\277\345\205\254\345\205\261\345\211\215\347\274\200.md.988c3016.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_14-\346\234\200\351\225\277\345\205\254\345\205\261\345\211\215\347\274\200.md.2013bd84.js"
@@ -1,4 +1,4 @@
-import{_ as o,c as p,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.fa87702c.js";const _=JSON.parse('{"title":"14-最长公共前缀","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/14-最长公共前缀.md"}'),r={name:"algorithm/LeetCode刷题/14-最长公共前缀.md"},y=s("h1",{id:"_14-最长公共前缀",tabindex:"-1"},[n("14-最长公共前缀 "),s("a",{class:"header-anchor",href:"#_14-最长公共前缀","aria-hidden":"true"},"#")],-1),F=t(`

题目信息

题目地址最长公共前缀

题目内容:

javascript
编写一个函数来查找字符串数组中的最长公共前缀。
+import{_ as o,c as p,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.2f6419f0.js";const _=JSON.parse('{"title":"14-最长公共前缀","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/14-最长公共前缀.md"}'),r={name:"algorithm/LeetCode刷题/14-最长公共前缀.md"},y=s("h1",{id:"_14-最长公共前缀",tabindex:"-1"},[n("14-最长公共前缀 "),s("a",{class:"header-anchor",href:"#_14-最长公共前缀","aria-hidden":"true"},"#")],-1),F=t(`

题目信息

题目地址最长公共前缀

题目内容:

javascript
编写一个函数来查找字符串数组中的最长公共前缀。
 
 如果不存在公共前缀,返回空字符串 ""
 
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_14-\346\234\200\351\225\277\345\205\254\345\205\261\345\211\215\347\274\200.md.988c3016.lean.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_14-\346\234\200\351\225\277\345\205\254\345\205\261\345\211\215\347\274\200.md.2013bd84.lean.js"
similarity index 93%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_14-\346\234\200\351\225\277\345\205\254\345\205\261\345\211\215\347\274\200.md.988c3016.lean.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_14-\346\234\200\351\225\277\345\205\254\345\205\261\345\211\215\347\274\200.md.2013bd84.lean.js"
index 420216d3..7eae8a25 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_14-\346\234\200\351\225\277\345\205\254\345\205\261\345\211\215\347\274\200.md.988c3016.lean.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_14-\346\234\200\351\225\277\345\205\254\345\205\261\345\211\215\347\274\200.md.2013bd84.lean.js"
@@ -1 +1 @@
-import{_ as o,c as p,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.fa87702c.js";const _=JSON.parse('{"title":"14-最长公共前缀","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/14-最长公共前缀.md"}'),r={name:"algorithm/LeetCode刷题/14-最长公共前缀.md"},y=s("h1",{id:"_14-最长公共前缀",tabindex:"-1"},[n("14-最长公共前缀 "),s("a",{class:"header-anchor",href:"#_14-最长公共前缀","aria-hidden":"true"},"#")],-1),F=t("",10);function D(i,C,A,d,f,h){const a=c("Badge");return e(),p("div",null,[y,s("p",null,[n("标签:"),l(a,{type:"tip",text:"字典树"}),n(),l(a,{type:"tip",text:"字符串"})]),F])}const m=o(r,[["render",D]]);export{_ as __pageData,m as default};
+import{_ as o,c as p,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.2f6419f0.js";const _=JSON.parse('{"title":"14-最长公共前缀","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/14-最长公共前缀.md"}'),r={name:"algorithm/LeetCode刷题/14-最长公共前缀.md"},y=s("h1",{id:"_14-最长公共前缀",tabindex:"-1"},[n("14-最长公共前缀 "),s("a",{class:"header-anchor",href:"#_14-最长公共前缀","aria-hidden":"true"},"#")],-1),F=t("",10);function D(i,C,A,d,f,h){const a=c("Badge");return e(),p("div",null,[y,s("p",null,[n("标签:"),l(a,{type:"tip",text:"字典树"}),n(),l(a,{type:"tip",text:"字符串"})]),F])}const m=o(r,[["render",D]]);export{_ as __pageData,m as default};
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_144-94-145-\351\201\215\345\216\206\344\272\214\345\217\211\346\240\221.md.85a99d88.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_144-94-145-\351\201\215\345\216\206\344\272\214\345\217\211\346\240\221.md.9885ccaa.js"
similarity index 99%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_144-94-145-\351\201\215\345\216\206\344\272\214\345\217\211\346\240\221.md.85a99d88.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_144-94-145-\351\201\215\345\216\206\344\272\214\345\217\211\346\240\221.md.9885ccaa.js"
index 6356432c..e1ebbb74 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_144-94-145-\351\201\215\345\216\206\344\272\214\345\217\211\346\240\221.md.85a99d88.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_144-94-145-\351\201\215\345\216\206\344\272\214\345\217\211\346\240\221.md.9885ccaa.js"
@@ -1,4 +1,4 @@
-import{_ as p,c as o,a as l,b as s,d as a,e,o as t,r as c}from"./app.fa87702c.js";const g=JSON.parse('{"title":"144-94-145-遍历二叉树","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[{"level":3,"title":"144. 二叉树的前序遍历","slug":"_144-二叉树的前序遍历","link":"#_144-二叉树的前序遍历","children":[]},{"level":3,"title":"94. 二叉树的中序遍历","slug":"_94-二叉树的中序遍历","link":"#_94-二叉树的中序遍历","children":[]},{"level":3,"title":"145. 二叉树的后序遍历","slug":"_145-二叉树的后序遍历","link":"#_145-二叉树的后序遍历","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/144-94-145-遍历二叉树.md"}'),r={name:"algorithm/LeetCode刷题/144-94-145-遍历二叉树.md"},y=l("h1",{id:"_144-94-145-遍历二叉树",tabindex:"-1"},[s("144-94-145-遍历二叉树 "),l("a",{class:"header-anchor",href:"#_144-94-145-遍历二叉树","aria-hidden":"true"},"#")],-1),i=e(`

题目信息

144. 二叉树的前序遍历

题目地址144. 二叉树的前序遍历

题目内容:

javascript
给你二叉树的根节点root,返回它节点值的前序遍历。
+import{_ as p,c as o,a as l,b as s,d as a,e,o as t,r as c}from"./app.2f6419f0.js";const g=JSON.parse('{"title":"144-94-145-遍历二叉树","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[{"level":3,"title":"144. 二叉树的前序遍历","slug":"_144-二叉树的前序遍历","link":"#_144-二叉树的前序遍历","children":[]},{"level":3,"title":"94. 二叉树的中序遍历","slug":"_94-二叉树的中序遍历","link":"#_94-二叉树的中序遍历","children":[]},{"level":3,"title":"145. 二叉树的后序遍历","slug":"_145-二叉树的后序遍历","link":"#_145-二叉树的后序遍历","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/144-94-145-遍历二叉树.md"}'),r={name:"algorithm/LeetCode刷题/144-94-145-遍历二叉树.md"},y=l("h1",{id:"_144-94-145-遍历二叉树",tabindex:"-1"},[s("144-94-145-遍历二叉树 "),l("a",{class:"header-anchor",href:"#_144-94-145-遍历二叉树","aria-hidden":"true"},"#")],-1),i=e(`

题目信息

144. 二叉树的前序遍历

题目地址144. 二叉树的前序遍历

题目内容:

javascript
给你二叉树的根节点root,返回它节点值的前序遍历。
 
 示例1:
     输入:root = [1,null,2,3]
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_144-94-145-\351\201\215\345\216\206\344\272\214\345\217\211\346\240\221.md.85a99d88.lean.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_144-94-145-\351\201\215\345\216\206\344\272\214\345\217\211\346\240\221.md.9885ccaa.lean.js"
similarity index 95%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_144-94-145-\351\201\215\345\216\206\344\272\214\345\217\211\346\240\221.md.85a99d88.lean.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_144-94-145-\351\201\215\345\216\206\344\272\214\345\217\211\346\240\221.md.9885ccaa.lean.js"
index 04e7e0d2..02fa687c 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_144-94-145-\351\201\215\345\216\206\344\272\214\345\217\211\346\240\221.md.85a99d88.lean.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_144-94-145-\351\201\215\345\216\206\344\272\214\345\217\211\346\240\221.md.9885ccaa.lean.js"
@@ -1 +1 @@
-import{_ as p,c as o,a as l,b as s,d as a,e,o as t,r as c}from"./app.fa87702c.js";const g=JSON.parse('{"title":"144-94-145-遍历二叉树","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[{"level":3,"title":"144. 二叉树的前序遍历","slug":"_144-二叉树的前序遍历","link":"#_144-二叉树的前序遍历","children":[]},{"level":3,"title":"94. 二叉树的中序遍历","slug":"_94-二叉树的中序遍历","link":"#_94-二叉树的中序遍历","children":[]},{"level":3,"title":"145. 二叉树的后序遍历","slug":"_145-二叉树的后序遍历","link":"#_145-二叉树的后序遍历","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/144-94-145-遍历二叉树.md"}'),r={name:"algorithm/LeetCode刷题/144-94-145-遍历二叉树.md"},y=l("h1",{id:"_144-94-145-遍历二叉树",tabindex:"-1"},[s("144-94-145-遍历二叉树 "),l("a",{class:"header-anchor",href:"#_144-94-145-遍历二叉树","aria-hidden":"true"},"#")],-1),i=e("",35);function F(D,C,A,d,f,h){const n=c("Badge");return t(),o("div",null,[y,l("p",null,[s("标签:"),a(n,{type:"tip",text:"栈"}),s(),a(n,{type:"tip",text:"树"}),s(),a(n,{type:"tip",text:"深度优先搜索"}),s(),a(n,{type:"tip",text:"二叉树"})]),i])}const E=p(r,[["render",F]]);export{g as __pageData,E as default};
+import{_ as p,c as o,a as l,b as s,d as a,e,o as t,r as c}from"./app.2f6419f0.js";const g=JSON.parse('{"title":"144-94-145-遍历二叉树","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[{"level":3,"title":"144. 二叉树的前序遍历","slug":"_144-二叉树的前序遍历","link":"#_144-二叉树的前序遍历","children":[]},{"level":3,"title":"94. 二叉树的中序遍历","slug":"_94-二叉树的中序遍历","link":"#_94-二叉树的中序遍历","children":[]},{"level":3,"title":"145. 二叉树的后序遍历","slug":"_145-二叉树的后序遍历","link":"#_145-二叉树的后序遍历","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/144-94-145-遍历二叉树.md"}'),r={name:"algorithm/LeetCode刷题/144-94-145-遍历二叉树.md"},y=l("h1",{id:"_144-94-145-遍历二叉树",tabindex:"-1"},[s("144-94-145-遍历二叉树 "),l("a",{class:"header-anchor",href:"#_144-94-145-遍历二叉树","aria-hidden":"true"},"#")],-1),i=e("",35);function F(D,C,A,d,f,h){const n=c("Badge");return t(),o("div",null,[y,l("p",null,[s("标签:"),a(n,{type:"tip",text:"栈"}),s(),a(n,{type:"tip",text:"树"}),s(),a(n,{type:"tip",text:"深度优先搜索"}),s(),a(n,{type:"tip",text:"二叉树"})]),i])}const E=p(r,[["render",F]]);export{g as __pageData,E as default};
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_15-\344\270\211\346\225\260\344\271\213\345\222\214.md.ed48e4a2.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_15-\344\270\211\346\225\260\344\271\213\345\222\214.md.a70729e7.js"
similarity index 99%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_15-\344\270\211\346\225\260\344\271\213\345\222\214.md.ed48e4a2.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_15-\344\270\211\346\225\260\344\271\213\345\222\214.md.a70729e7.js"
index 25f595a5..36e4eabf 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_15-\344\270\211\346\225\260\344\271\213\345\222\214.md.ed48e4a2.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_15-\344\270\211\346\225\260\344\271\213\345\222\214.md.a70729e7.js"
@@ -1,4 +1,4 @@
-import{_ as p,c as o,a as l,b as s,d as a,e,o as t,r as c}from"./app.fa87702c.js";const h=JSON.parse('{"title":"15-三数之和","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/15-三数之和.md"}'),r={name:"algorithm/LeetCode刷题/15-三数之和.md"},y=l("h1",{id:"_15-三数之和",tabindex:"-1"},[s("15-三数之和 "),l("a",{class:"header-anchor",href:"#_15-三数之和","aria-hidden":"true"},"#")],-1),F=e(`

题目信息

题目地址15. 三数之和

题目内容:

javascript
给你一个整数数组nums
+import{_ as p,c as o,a as l,b as s,d as a,e,o as t,r as c}from"./app.2f6419f0.js";const h=JSON.parse('{"title":"15-三数之和","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/15-三数之和.md"}'),r={name:"algorithm/LeetCode刷题/15-三数之和.md"},y=l("h1",{id:"_15-三数之和",tabindex:"-1"},[s("15-三数之和 "),l("a",{class:"header-anchor",href:"#_15-三数之和","aria-hidden":"true"},"#")],-1),F=e(`

题目信息

题目地址15. 三数之和

题目内容:

javascript
给你一个整数数组nums
 
 判断是否存在三元组[nums[i], nums[j], nums[k]]满足 i != j、i != k 且 j != k,
 
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_15-\344\270\211\346\225\260\344\271\213\345\222\214.md.ed48e4a2.lean.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_15-\344\270\211\346\225\260\344\271\213\345\222\214.md.a70729e7.lean.js"
similarity index 93%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_15-\344\270\211\346\225\260\344\271\213\345\222\214.md.ed48e4a2.lean.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_15-\344\270\211\346\225\260\344\271\213\345\222\214.md.a70729e7.lean.js"
index 24f9d7f7..65c53ac2 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_15-\344\270\211\346\225\260\344\271\213\345\222\214.md.ed48e4a2.lean.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_15-\344\270\211\346\225\260\344\271\213\345\222\214.md.a70729e7.lean.js"
@@ -1 +1 @@
-import{_ as p,c as o,a as l,b as s,d as a,e,o as t,r as c}from"./app.fa87702c.js";const h=JSON.parse('{"title":"15-三数之和","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/15-三数之和.md"}'),r={name:"algorithm/LeetCode刷题/15-三数之和.md"},y=l("h1",{id:"_15-三数之和",tabindex:"-1"},[s("15-三数之和 "),l("a",{class:"header-anchor",href:"#_15-三数之和","aria-hidden":"true"},"#")],-1),F=e("",10);function C(D,A,i,d,f,u){const n=c("Badge");return t(),o("div",null,[y,l("p",null,[s("标签:"),a(n,{type:"tip",text:"数组"}),s(),a(n,{type:"tip",text:"双指针"}),s(),a(n,{type:"tip",text:"排序"})]),F])}const g=p(r,[["render",C]]);export{h as __pageData,g as default};
+import{_ as p,c as o,a as l,b as s,d as a,e,o as t,r as c}from"./app.2f6419f0.js";const h=JSON.parse('{"title":"15-三数之和","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/15-三数之和.md"}'),r={name:"algorithm/LeetCode刷题/15-三数之和.md"},y=l("h1",{id:"_15-三数之和",tabindex:"-1"},[s("15-三数之和 "),l("a",{class:"header-anchor",href:"#_15-三数之和","aria-hidden":"true"},"#")],-1),F=e("",10);function C(D,A,i,d,f,u){const n=c("Badge");return t(),o("div",null,[y,l("p",null,[s("标签:"),a(n,{type:"tip",text:"数组"}),s(),a(n,{type:"tip",text:"双指针"}),s(),a(n,{type:"tip",text:"排序"})]),F])}const g=p(r,[["render",C]]);export{h as __pageData,g as default};
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_150-\351\200\206\346\263\242\345\205\260\350\241\250\350\276\276\345\274\217\346\261\202\345\200\274.md.c743e8d2.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_150-\351\200\206\346\263\242\345\205\260\350\241\250\350\276\276\345\274\217\346\261\202\345\200\274.md.5679f162.js"
similarity index 99%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_150-\351\200\206\346\263\242\345\205\260\350\241\250\350\276\276\345\274\217\346\261\202\345\200\274.md.c743e8d2.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_150-\351\200\206\346\263\242\345\205\260\350\241\250\350\276\276\345\274\217\346\261\202\345\200\274.md.5679f162.js"
index b2c1a814..34d84182 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_150-\351\200\206\346\263\242\345\205\260\350\241\250\350\276\276\345\274\217\346\261\202\345\200\274.md.c743e8d2.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_150-\351\200\206\346\263\242\345\205\260\350\241\250\350\276\276\345\274\217\346\261\202\345\200\274.md.5679f162.js"
@@ -1,4 +1,4 @@
-import{_ as o,c as p,a as l,b as s,d as a,e as t,o as e,r as c}from"./app.fa87702c.js";const q=JSON.parse('{"title":"150-逆波兰表达式求值","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/150-逆波兰表达式求值.md"}'),r={name:"algorithm/LeetCode刷题/150-逆波兰表达式求值.md"},y=l("h1",{id:"_150-逆波兰表达式求值",tabindex:"-1"},[s("150-逆波兰表达式求值 "),l("a",{class:"header-anchor",href:"#_150-逆波兰表达式求值","aria-hidden":"true"},"#")],-1),D=t(`

题目信息

题目地址150. 逆波兰表达式求值

题目内容:

javascript
给你一个字符串数组tokens,表示一个根据逆波兰表示法表示的算术表达式。
+import{_ as o,c as p,a as l,b as s,d as a,e as t,o as e,r as c}from"./app.2f6419f0.js";const q=JSON.parse('{"title":"150-逆波兰表达式求值","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/150-逆波兰表达式求值.md"}'),r={name:"algorithm/LeetCode刷题/150-逆波兰表达式求值.md"},y=l("h1",{id:"_150-逆波兰表达式求值",tabindex:"-1"},[s("150-逆波兰表达式求值 "),l("a",{class:"header-anchor",href:"#_150-逆波兰表达式求值","aria-hidden":"true"},"#")],-1),D=t(`

题目信息

题目地址150. 逆波兰表达式求值

题目内容:

javascript
给你一个字符串数组tokens,表示一个根据逆波兰表示法表示的算术表达式。
 
 请你计算该表达式。返回一个表示表达式值的整数。
 
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_150-\351\200\206\346\263\242\345\205\260\350\241\250\350\276\276\345\274\217\346\261\202\345\200\274.md.c743e8d2.lean.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_150-\351\200\206\346\263\242\345\205\260\350\241\250\350\276\276\345\274\217\346\261\202\345\200\274.md.5679f162.lean.js"
similarity index 94%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_150-\351\200\206\346\263\242\345\205\260\350\241\250\350\276\276\345\274\217\346\261\202\345\200\274.md.c743e8d2.lean.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_150-\351\200\206\346\263\242\345\205\260\350\241\250\350\276\276\345\274\217\346\261\202\345\200\274.md.5679f162.lean.js"
index 5f4c5072..1fcbc770 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_150-\351\200\206\346\263\242\345\205\260\350\241\250\350\276\276\345\274\217\346\261\202\345\200\274.md.c743e8d2.lean.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_150-\351\200\206\346\263\242\345\205\260\350\241\250\350\276\276\345\274\217\346\261\202\345\200\274.md.5679f162.lean.js"
@@ -1 +1 @@
-import{_ as o,c as p,a as l,b as s,d as a,e as t,o as e,r as c}from"./app.fa87702c.js";const q=JSON.parse('{"title":"150-逆波兰表达式求值","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/150-逆波兰表达式求值.md"}'),r={name:"algorithm/LeetCode刷题/150-逆波兰表达式求值.md"},y=l("h1",{id:"_150-逆波兰表达式求值",tabindex:"-1"},[s("150-逆波兰表达式求值 "),l("a",{class:"header-anchor",href:"#_150-逆波兰表达式求值","aria-hidden":"true"},"#")],-1),D=t("",14);function F(C,A,i,u,d,f){const n=c("Badge");return e(),p("div",null,[y,l("p",null,[s("标签:"),a(n,{type:"tip",text:"栈"}),s(),a(n,{type:"tip",text:"数组"}),s(),a(n,{type:"tip",text:"数学"})]),D])}const h=o(r,[["render",F]]);export{q as __pageData,h as default};
+import{_ as o,c as p,a as l,b as s,d as a,e as t,o as e,r as c}from"./app.2f6419f0.js";const q=JSON.parse('{"title":"150-逆波兰表达式求值","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/150-逆波兰表达式求值.md"}'),r={name:"algorithm/LeetCode刷题/150-逆波兰表达式求值.md"},y=l("h1",{id:"_150-逆波兰表达式求值",tabindex:"-1"},[s("150-逆波兰表达式求值 "),l("a",{class:"header-anchor",href:"#_150-逆波兰表达式求值","aria-hidden":"true"},"#")],-1),D=t("",14);function F(C,A,i,u,d,f){const n=c("Badge");return e(),p("div",null,[y,l("p",null,[s("标签:"),a(n,{type:"tip",text:"栈"}),s(),a(n,{type:"tip",text:"数组"}),s(),a(n,{type:"tip",text:"数学"})]),D])}const h=o(r,[["render",F]]);export{q as __pageData,h as default};
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_151-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\215\225\350\257\215.md.0ba3267d.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_151-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\215\225\350\257\215.md.2b9140da.js"
similarity index 99%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_151-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\215\225\350\257\215.md.0ba3267d.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_151-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\215\225\350\257\215.md.2b9140da.js"
index 175a680e..b9f2a85f 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_151-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\215\225\350\257\215.md.0ba3267d.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_151-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\215\225\350\257\215.md.2b9140da.js"
@@ -1,4 +1,4 @@
-import{_ as p,c as o,a as s,b as n,d as l,e,o as t,r as c}from"./app.fa87702c.js";const f=JSON.parse('{"title":"151-反转字符串中的单词","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/151-反转字符串中的单词.md"}'),r={name:"algorithm/LeetCode刷题/151-反转字符串中的单词.md"},y=s("h1",{id:"_151-反转字符串中的单词",tabindex:"-1"},[n("151-反转字符串中的单词 "),s("a",{class:"header-anchor",href:"#_151-反转字符串中的单词","aria-hidden":"true"},"#")],-1),F=e(`

题目信息

题目地址151. 反转字符串中的单词

题目内容:

javascript
给你一个字符串s,请你反转字符串中单词的顺序。
+import{_ as p,c as o,a as s,b as n,d as l,e,o as t,r as c}from"./app.2f6419f0.js";const f=JSON.parse('{"title":"151-反转字符串中的单词","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/151-反转字符串中的单词.md"}'),r={name:"algorithm/LeetCode刷题/151-反转字符串中的单词.md"},y=s("h1",{id:"_151-反转字符串中的单词",tabindex:"-1"},[n("151-反转字符串中的单词 "),s("a",{class:"header-anchor",href:"#_151-反转字符串中的单词","aria-hidden":"true"},"#")],-1),F=e(`

题目信息

题目地址151. 反转字符串中的单词

题目内容:

javascript
给你一个字符串s,请你反转字符串中单词的顺序。
 
 单词是由非空格字符组成的字符串。s中使用至少一个空格将字符串中的单词分隔开。
 
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_151-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\215\225\350\257\215.md.0ba3267d.lean.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_151-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\215\225\350\257\215.md.2b9140da.lean.js"
similarity index 94%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_151-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\215\225\350\257\215.md.0ba3267d.lean.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_151-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\215\225\350\257\215.md.2b9140da.lean.js"
index cc36f01b..f6d2a30f 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_151-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\215\225\350\257\215.md.0ba3267d.lean.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_151-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\215\225\350\257\215.md.2b9140da.lean.js"
@@ -1 +1 @@
-import{_ as p,c as o,a as s,b as n,d as l,e,o as t,r as c}from"./app.fa87702c.js";const f=JSON.parse('{"title":"151-反转字符串中的单词","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/151-反转字符串中的单词.md"}'),r={name:"algorithm/LeetCode刷题/151-反转字符串中的单词.md"},y=s("h1",{id:"_151-反转字符串中的单词",tabindex:"-1"},[n("151-反转字符串中的单词 "),s("a",{class:"header-anchor",href:"#_151-反转字符串中的单词","aria-hidden":"true"},"#")],-1),F=e("",10);function D(C,i,A,d,h,_){const a=c("Badge");return t(),o("div",null,[y,s("p",null,[n("标签:"),l(a,{type:"tip",text:"双指针"}),n(),l(a,{type:"tip",text:"字符串"})]),F])}const g=p(r,[["render",D]]);export{f as __pageData,g as default};
+import{_ as p,c as o,a as s,b as n,d as l,e,o as t,r as c}from"./app.2f6419f0.js";const f=JSON.parse('{"title":"151-反转字符串中的单词","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/151-反转字符串中的单词.md"}'),r={name:"algorithm/LeetCode刷题/151-反转字符串中的单词.md"},y=s("h1",{id:"_151-反转字符串中的单词",tabindex:"-1"},[n("151-反转字符串中的单词 "),s("a",{class:"header-anchor",href:"#_151-反转字符串中的单词","aria-hidden":"true"},"#")],-1),F=e("",10);function D(C,i,A,d,h,_){const a=c("Badge");return t(),o("div",null,[y,s("p",null,[n("标签:"),l(a,{type:"tip",text:"双指针"}),n(),l(a,{type:"tip",text:"字符串"})]),F])}const g=p(r,[["render",D]]);export{f as __pageData,g as default};
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_17-\347\224\265\350\257\235\345\217\267\347\240\201\347\232\204\345\255\227\346\257\215\347\273\204\345\220\210.md.7fbe5bd8.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_17-\347\224\265\350\257\235\345\217\267\347\240\201\347\232\204\345\255\227\346\257\215\347\273\204\345\220\210.md.51dfa9a4.js"
similarity index 99%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_17-\347\224\265\350\257\235\345\217\267\347\240\201\347\232\204\345\255\227\346\257\215\347\273\204\345\220\210.md.7fbe5bd8.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_17-\347\224\265\350\257\235\345\217\267\347\240\201\347\232\204\345\255\227\346\257\215\347\273\204\345\220\210.md.51dfa9a4.js"
index ba1ef1b2..2cbc9c36 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_17-\347\224\265\350\257\235\345\217\267\347\240\201\347\232\204\345\255\227\346\257\215\347\273\204\345\220\210.md.7fbe5bd8.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_17-\347\224\265\350\257\235\345\217\267\347\240\201\347\232\204\345\255\227\346\257\215\347\273\204\345\220\210.md.51dfa9a4.js"
@@ -1,4 +1,4 @@
-import{_ as p,c as o,a as l,b as s,d as a,e as t,o as e,r as c}from"./app.fa87702c.js";const g=JSON.parse('{"title":"17-电话号码的字母组合","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/17-电话号码的字母组合.md"}'),r={name:"algorithm/LeetCode刷题/17-电话号码的字母组合.md"},F=l("h1",{id:"_17-电话号码的字母组合",tabindex:"-1"},[s("17-电话号码的字母组合 "),l("a",{class:"header-anchor",href:"#_17-电话号码的字母组合","aria-hidden":"true"},"#")],-1),y=t(`

题目信息

题目地址17-电话号码的字母组合

题目内容:

javascript
给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。答案可以按任意顺序返回。
+import{_ as p,c as o,a as l,b as s,d as a,e as t,o as e,r as c}from"./app.2f6419f0.js";const g=JSON.parse('{"title":"17-电话号码的字母组合","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/17-电话号码的字母组合.md"}'),r={name:"algorithm/LeetCode刷题/17-电话号码的字母组合.md"},F=l("h1",{id:"_17-电话号码的字母组合",tabindex:"-1"},[s("17-电话号码的字母组合 "),l("a",{class:"header-anchor",href:"#_17-电话号码的字母组合","aria-hidden":"true"},"#")],-1),y=t(`

题目信息

题目地址17-电话号码的字母组合

题目内容:

javascript
给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。答案可以按任意顺序返回。
 
 给出数字到字母的映射如下(与电话按键相同)。注意1不对应任何字母。
 
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_17-\347\224\265\350\257\235\345\217\267\347\240\201\347\232\204\345\255\227\346\257\215\347\273\204\345\220\210.md.7fbe5bd8.lean.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_17-\347\224\265\350\257\235\345\217\267\347\240\201\347\232\204\345\255\227\346\257\215\347\273\204\345\220\210.md.51dfa9a4.lean.js"
similarity index 94%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_17-\347\224\265\350\257\235\345\217\267\347\240\201\347\232\204\345\255\227\346\257\215\347\273\204\345\220\210.md.7fbe5bd8.lean.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_17-\347\224\265\350\257\235\345\217\267\347\240\201\347\232\204\345\255\227\346\257\215\347\273\204\345\220\210.md.51dfa9a4.lean.js"
index 4ad0b8fb..0f1096a5 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_17-\347\224\265\350\257\235\345\217\267\347\240\201\347\232\204\345\255\227\346\257\215\347\273\204\345\220\210.md.7fbe5bd8.lean.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_17-\347\224\265\350\257\235\345\217\267\347\240\201\347\232\204\345\255\227\346\257\215\347\273\204\345\220\210.md.51dfa9a4.lean.js"
@@ -1 +1 @@
-import{_ as p,c as o,a as l,b as s,d as a,e as t,o as e,r as c}from"./app.fa87702c.js";const g=JSON.parse('{"title":"17-电话号码的字母组合","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/17-电话号码的字母组合.md"}'),r={name:"algorithm/LeetCode刷题/17-电话号码的字母组合.md"},F=l("h1",{id:"_17-电话号码的字母组合",tabindex:"-1"},[s("17-电话号码的字母组合 "),l("a",{class:"header-anchor",href:"#_17-电话号码的字母组合","aria-hidden":"true"},"#")],-1),y=t("",16);function D(i,C,A,u,d,f){const n=c("Badge");return e(),o("div",null,[F,l("p",null,[s("标签:"),a(n,{type:"tip",text:"哈希表"}),s(),a(n,{type:"tip",text:"字符串"}),s(),a(n,{type:"tip",text:"回溯"})]),y])}const h=p(r,[["render",D]]);export{g as __pageData,h as default};
+import{_ as p,c as o,a as l,b as s,d as a,e as t,o as e,r as c}from"./app.2f6419f0.js";const g=JSON.parse('{"title":"17-电话号码的字母组合","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/17-电话号码的字母组合.md"}'),r={name:"algorithm/LeetCode刷题/17-电话号码的字母组合.md"},F=l("h1",{id:"_17-电话号码的字母组合",tabindex:"-1"},[s("17-电话号码的字母组合 "),l("a",{class:"header-anchor",href:"#_17-电话号码的字母组合","aria-hidden":"true"},"#")],-1),y=t("",16);function D(i,C,A,u,d,f){const n=c("Badge");return e(),o("div",null,[F,l("p",null,[s("标签:"),a(n,{type:"tip",text:"哈希表"}),s(),a(n,{type:"tip",text:"字符串"}),s(),a(n,{type:"tip",text:"回溯"})]),y])}const h=p(r,[["render",D]]);export{g as __pageData,h as default};
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_18-\345\233\233\346\225\260\344\271\213\345\222\214.md.7c2d4f0d.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_18-\345\233\233\346\225\260\344\271\213\345\222\214.md.d7702f79.js"
similarity index 99%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_18-\345\233\233\346\225\260\344\271\213\345\222\214.md.7c2d4f0d.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_18-\345\233\233\346\225\260\344\271\213\345\222\214.md.d7702f79.js"
index 5c0551bd..b4a9993c 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_18-\345\233\233\346\225\260\344\271\213\345\222\214.md.7c2d4f0d.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_18-\345\233\233\346\225\260\344\271\213\345\222\214.md.d7702f79.js"
@@ -1,4 +1,4 @@
-import{_ as p,c as o,a as l,b as s,d as a,e as t,o as e,r as c}from"./app.fa87702c.js";const g=JSON.parse('{"title":"18-四数之和","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/18-四数之和.md"}'),r={name:"algorithm/LeetCode刷题/18-四数之和.md"},y=l("h1",{id:"_18-四数之和",tabindex:"-1"},[s("18-四数之和 "),l("a",{class:"header-anchor",href:"#_18-四数之和","aria-hidden":"true"},"#")],-1),F=t(`

题目信息

题目地址18. 四数之和

题目内容:

javascript
给你一个由n个整数组成的数组nums,和一个目标值target。
+import{_ as p,c as o,a as l,b as s,d as a,e as t,o as e,r as c}from"./app.2f6419f0.js";const g=JSON.parse('{"title":"18-四数之和","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/18-四数之和.md"}'),r={name:"algorithm/LeetCode刷题/18-四数之和.md"},y=l("h1",{id:"_18-四数之和",tabindex:"-1"},[s("18-四数之和 "),l("a",{class:"header-anchor",href:"#_18-四数之和","aria-hidden":"true"},"#")],-1),F=t(`

题目信息

题目地址18. 四数之和

题目内容:

javascript
给你一个由n个整数组成的数组nums,和一个目标值target。
 
 请你找出并返回满足下述全部条件且不重复的四元组[nums[a], nums[b], nums[c], nums[d]] 
 (若两个四元组元素一一对应,则认为两个四元组重复):
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_18-\345\233\233\346\225\260\344\271\213\345\222\214.md.7c2d4f0d.lean.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_18-\345\233\233\346\225\260\344\271\213\345\222\214.md.d7702f79.lean.js"
similarity index 93%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_18-\345\233\233\346\225\260\344\271\213\345\222\214.md.7c2d4f0d.lean.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_18-\345\233\233\346\225\260\344\271\213\345\222\214.md.d7702f79.lean.js"
index aface14d..ff45b1ee 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_18-\345\233\233\346\225\260\344\271\213\345\222\214.md.7c2d4f0d.lean.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_18-\345\233\233\346\225\260\344\271\213\345\222\214.md.d7702f79.lean.js"
@@ -1 +1 @@
-import{_ as p,c as o,a as l,b as s,d as a,e as t,o as e,r as c}from"./app.fa87702c.js";const g=JSON.parse('{"title":"18-四数之和","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/18-四数之和.md"}'),r={name:"algorithm/LeetCode刷题/18-四数之和.md"},y=l("h1",{id:"_18-四数之和",tabindex:"-1"},[s("18-四数之和 "),l("a",{class:"header-anchor",href:"#_18-四数之和","aria-hidden":"true"},"#")],-1),F=t("",10);function D(C,i,A,d,f,u){const n=c("Badge");return e(),o("div",null,[y,l("p",null,[s("标签:"),a(n,{type:"tip",text:"数组"}),s(),a(n,{type:"tip",text:"双指针"}),s(),a(n,{type:"tip",text:"排序"})]),F])}const h=p(r,[["render",D]]);export{g as __pageData,h as default};
+import{_ as p,c as o,a as l,b as s,d as a,e as t,o as e,r as c}from"./app.2f6419f0.js";const g=JSON.parse('{"title":"18-四数之和","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/18-四数之和.md"}'),r={name:"algorithm/LeetCode刷题/18-四数之和.md"},y=l("h1",{id:"_18-四数之和",tabindex:"-1"},[s("18-四数之和 "),l("a",{class:"header-anchor",href:"#_18-四数之和","aria-hidden":"true"},"#")],-1),F=t("",10);function D(C,i,A,d,f,u){const n=c("Badge");return e(),o("div",null,[y,l("p",null,[s("标签:"),a(n,{type:"tip",text:"数组"}),s(),a(n,{type:"tip",text:"双指针"}),s(),a(n,{type:"tip",text:"排序"})]),F])}const h=p(r,[["render",D]]);export{g as __pageData,h as default};
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_19-\345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254N\344\270\252\347\273\223\347\202\271.md.24424baa.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_19-\345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254N\344\270\252\347\273\223\347\202\271.md.8f83684a.js"
similarity index 99%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_19-\345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254N\344\270\252\347\273\223\347\202\271.md.24424baa.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_19-\345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254N\344\270\252\347\273\223\347\202\271.md.8f83684a.js"
index 74c8709e..162c1f81 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_19-\345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254N\344\270\252\347\273\223\347\202\271.md.24424baa.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_19-\345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254N\344\270\252\347\273\223\347\202\271.md.8f83684a.js"
@@ -1,4 +1,4 @@
-import{_ as o,c as p,a as s,b as n,d as l,e,o as t,r as c}from"./app.fa87702c.js";const u=JSON.parse('{"title":"19-删除链表的倒数第N个结点","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/19-删除链表的倒数第N个结点.md"}'),r={name:"algorithm/LeetCode刷题/19-删除链表的倒数第N个结点.md"},y=s("h1",{id:"_19-删除链表的倒数第n个结点",tabindex:"-1"},[n("19-删除链表的倒数第N个结点 "),s("a",{class:"header-anchor",href:"#_19-删除链表的倒数第n个结点","aria-hidden":"true"},"#")],-1),i=e(`

题目信息

题目地址19.删除链表的倒数第N个结点

题目内容:

javascript
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。
+import{_ as o,c as p,a as s,b as n,d as l,e,o as t,r as c}from"./app.2f6419f0.js";const u=JSON.parse('{"title":"19-删除链表的倒数第N个结点","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/19-删除链表的倒数第N个结点.md"}'),r={name:"algorithm/LeetCode刷题/19-删除链表的倒数第N个结点.md"},y=s("h1",{id:"_19-删除链表的倒数第n个结点",tabindex:"-1"},[n("19-删除链表的倒数第N个结点 "),s("a",{class:"header-anchor",href:"#_19-删除链表的倒数第n个结点","aria-hidden":"true"},"#")],-1),i=e(`

题目信息

题目地址19.删除链表的倒数第N个结点

题目内容:

javascript
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。
 
 示例1:
     输入:head = [1,2,3,4,5], n = 2
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_19-\345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254N\344\270\252\347\273\223\347\202\271.md.24424baa.lean.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_19-\345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254N\344\270\252\347\273\223\347\202\271.md.8f83684a.lean.js"
similarity index 94%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_19-\345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254N\344\270\252\347\273\223\347\202\271.md.24424baa.lean.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_19-\345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254N\344\270\252\347\273\223\347\202\271.md.8f83684a.lean.js"
index 014fd277..66dda2ea 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_19-\345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254N\344\270\252\347\273\223\347\202\271.md.24424baa.lean.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_19-\345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254N\344\270\252\347\273\223\347\202\271.md.8f83684a.lean.js"
@@ -1 +1 @@
-import{_ as o,c as p,a as s,b as n,d as l,e,o as t,r as c}from"./app.fa87702c.js";const u=JSON.parse('{"title":"19-删除链表的倒数第N个结点","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/19-删除链表的倒数第N个结点.md"}'),r={name:"algorithm/LeetCode刷题/19-删除链表的倒数第N个结点.md"},y=s("h1",{id:"_19-删除链表的倒数第n个结点",tabindex:"-1"},[n("19-删除链表的倒数第N个结点 "),s("a",{class:"header-anchor",href:"#_19-删除链表的倒数第n个结点","aria-hidden":"true"},"#")],-1),i=e("",13);function F(D,C,A,d,f,h){const a=c("Badge");return t(),p("div",null,[y,s("p",null,[n("标签:"),l(a,{type:"tip",text:"链表"}),n(),l(a,{type:"tip",text:"双指针"})]),i])}const _=o(r,[["render",F]]);export{u as __pageData,_ as default};
+import{_ as o,c as p,a as s,b as n,d as l,e,o as t,r as c}from"./app.2f6419f0.js";const u=JSON.parse('{"title":"19-删除链表的倒数第N个结点","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/19-删除链表的倒数第N个结点.md"}'),r={name:"algorithm/LeetCode刷题/19-删除链表的倒数第N个结点.md"},y=s("h1",{id:"_19-删除链表的倒数第n个结点",tabindex:"-1"},[n("19-删除链表的倒数第N个结点 "),s("a",{class:"header-anchor",href:"#_19-删除链表的倒数第n个结点","aria-hidden":"true"},"#")],-1),i=e("",13);function F(D,C,A,d,f,h){const a=c("Badge");return t(),p("div",null,[y,s("p",null,[n("标签:"),l(a,{type:"tip",text:"链表"}),n(),l(a,{type:"tip",text:"双指针"})]),i])}const _=o(r,[["render",F]]);export{u as __pageData,_ as default};
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_20-\346\234\211\346\225\210\347\232\204\346\213\254\345\217\267.md.bb5cfe80.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_20-\346\234\211\346\225\210\347\232\204\346\213\254\345\217\267.md.64ab3b52.js"
similarity index 99%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_20-\346\234\211\346\225\210\347\232\204\346\213\254\345\217\267.md.bb5cfe80.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_20-\346\234\211\346\225\210\347\232\204\346\213\254\345\217\267.md.64ab3b52.js"
index eaeb326a..422da07f 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_20-\346\234\211\346\225\210\347\232\204\346\213\254\345\217\267.md.bb5cfe80.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_20-\346\234\211\346\225\210\347\232\204\346\213\254\345\217\267.md.64ab3b52.js"
@@ -1,4 +1,4 @@
-import{_ as p,c as o,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.fa87702c.js";const h=JSON.parse('{"title":"20-有效的括号","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/20-有效的括号.md"}'),r={name:"algorithm/LeetCode刷题/20-有效的括号.md"},y=s("h1",{id:"_20-有效的括号",tabindex:"-1"},[n("20-有效的括号 "),s("a",{class:"header-anchor",href:"#_20-有效的括号","aria-hidden":"true"},"#")],-1),F=t(`

题目信息

题目地址有效的括号

题目内容:

javascript
给定一个只包括 '('')''{''}''['']' 的字符串 s ,判断字符串是否有效。
+import{_ as p,c as o,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.2f6419f0.js";const h=JSON.parse('{"title":"20-有效的括号","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/20-有效的括号.md"}'),r={name:"algorithm/LeetCode刷题/20-有效的括号.md"},y=s("h1",{id:"_20-有效的括号",tabindex:"-1"},[n("20-有效的括号 "),s("a",{class:"header-anchor",href:"#_20-有效的括号","aria-hidden":"true"},"#")],-1),F=t(`

题目信息

题目地址有效的括号

题目内容:

javascript
给定一个只包括 '('')''{''}''['']' 的字符串 s ,判断字符串是否有效。
 
 有效字符串需满足:
    左括号必须用相同类型的右括号闭合。
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_20-\346\234\211\346\225\210\347\232\204\346\213\254\345\217\267.md.bb5cfe80.lean.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_20-\346\234\211\346\225\210\347\232\204\346\213\254\345\217\267.md.64ab3b52.lean.js"
similarity index 93%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_20-\346\234\211\346\225\210\347\232\204\346\213\254\345\217\267.md.bb5cfe80.lean.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_20-\346\234\211\346\225\210\347\232\204\346\213\254\345\217\267.md.64ab3b52.lean.js"
index 19cfa49b..bed69771 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_20-\346\234\211\346\225\210\347\232\204\346\213\254\345\217\267.md.bb5cfe80.lean.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_20-\346\234\211\346\225\210\347\232\204\346\213\254\345\217\267.md.64ab3b52.lean.js"
@@ -1 +1 @@
-import{_ as p,c as o,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.fa87702c.js";const h=JSON.parse('{"title":"20-有效的括号","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/20-有效的括号.md"}'),r={name:"algorithm/LeetCode刷题/20-有效的括号.md"},y=s("h1",{id:"_20-有效的括号",tabindex:"-1"},[n("20-有效的括号 "),s("a",{class:"header-anchor",href:"#_20-有效的括号","aria-hidden":"true"},"#")],-1),F=t("",12);function D(i,C,A,f,d,E){const a=c("Badge");return e(),o("div",null,[y,s("p",null,[n("标签:"),l(a,{type:"tip",text:"栈"}),n(),l(a,{type:"tip",text:"字符串"})]),F])}const k=p(r,[["render",D]]);export{h as __pageData,k as default};
+import{_ as p,c as o,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.2f6419f0.js";const h=JSON.parse('{"title":"20-有效的括号","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/20-有效的括号.md"}'),r={name:"algorithm/LeetCode刷题/20-有效的括号.md"},y=s("h1",{id:"_20-有效的括号",tabindex:"-1"},[n("20-有效的括号 "),s("a",{class:"header-anchor",href:"#_20-有效的括号","aria-hidden":"true"},"#")],-1),F=t("",12);function D(i,C,A,f,d,E){const a=c("Badge");return e(),o("div",null,[y,s("p",null,[n("标签:"),l(a,{type:"tip",text:"栈"}),n(),l(a,{type:"tip",text:"字符串"})]),F])}const k=p(r,[["render",D]]);export{h as __pageData,k as default};
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_202-\345\277\253\344\271\220\346\225\260.md.1895aaa0.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_202-\345\277\253\344\271\220\346\225\260.md.403eb033.js"
similarity index 99%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_202-\345\277\253\344\271\220\346\225\260.md.1895aaa0.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_202-\345\277\253\344\271\220\346\225\260.md.403eb033.js"
index 60209a41..f96f49f4 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_202-\345\277\253\344\271\220\346\225\260.md.1895aaa0.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_202-\345\277\253\344\271\220\346\225\260.md.403eb033.js"
@@ -1,4 +1,4 @@
-import{_ as p,c as o,a as l,b as s,d as a,e,o as t,r as c}from"./app.fa87702c.js";const m=JSON.parse('{"title":"202-快乐数","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/202-快乐数.md"}'),r={name:"algorithm/LeetCode刷题/202-快乐数.md"},y=l("h1",{id:"_202-快乐数",tabindex:"-1"},[s("202-快乐数 "),l("a",{class:"header-anchor",href:"#_202-快乐数","aria-hidden":"true"},"#")],-1),F=e(`

题目信息

题目地址202. 快乐数

题目内容:

javascript
编写一个算法来判断一个数n是不是快乐数。
+import{_ as p,c as o,a as l,b as s,d as a,e,o as t,r as c}from"./app.2f6419f0.js";const m=JSON.parse('{"title":"202-快乐数","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/202-快乐数.md"}'),r={name:"algorithm/LeetCode刷题/202-快乐数.md"},y=l("h1",{id:"_202-快乐数",tabindex:"-1"},[s("202-快乐数 "),l("a",{class:"header-anchor",href:"#_202-快乐数","aria-hidden":"true"},"#")],-1),F=e(`

题目信息

题目地址202. 快乐数

题目内容:

javascript
编写一个算法来判断一个数n是不是快乐数。
 
 「快乐数」定义为:
 
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_202-\345\277\253\344\271\220\346\225\260.md.1895aaa0.lean.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_202-\345\277\253\344\271\220\346\225\260.md.403eb033.lean.js"
similarity index 94%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_202-\345\277\253\344\271\220\346\225\260.md.1895aaa0.lean.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_202-\345\277\253\344\271\220\346\225\260.md.403eb033.lean.js"
index 0efc1176..131829f9 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_202-\345\277\253\344\271\220\346\225\260.md.1895aaa0.lean.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_202-\345\277\253\344\271\220\346\225\260.md.403eb033.lean.js"
@@ -1 +1 @@
-import{_ as p,c as o,a as l,b as s,d as a,e,o as t,r as c}from"./app.fa87702c.js";const m=JSON.parse('{"title":"202-快乐数","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/202-快乐数.md"}'),r={name:"algorithm/LeetCode刷题/202-快乐数.md"},y=l("h1",{id:"_202-快乐数",tabindex:"-1"},[s("202-快乐数 "),l("a",{class:"header-anchor",href:"#_202-快乐数","aria-hidden":"true"},"#")],-1),F=e("",16);function C(D,A,i,d,f,u){const n=c("Badge");return t(),o("div",null,[y,l("p",null,[s("标签:"),a(n,{type:"tip",text:"哈希表"}),s(),a(n,{type:"tip",text:"数学"}),s(),a(n,{type:"tip",text:"双指针"})]),F])}const g=p(r,[["render",C]]);export{m as __pageData,g as default};
+import{_ as p,c as o,a as l,b as s,d as a,e,o as t,r as c}from"./app.2f6419f0.js";const m=JSON.parse('{"title":"202-快乐数","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/202-快乐数.md"}'),r={name:"algorithm/LeetCode刷题/202-快乐数.md"},y=l("h1",{id:"_202-快乐数",tabindex:"-1"},[s("202-快乐数 "),l("a",{class:"header-anchor",href:"#_202-快乐数","aria-hidden":"true"},"#")],-1),F=e("",16);function C(D,A,i,d,f,u){const n=c("Badge");return t(),o("div",null,[y,l("p",null,[s("标签:"),a(n,{type:"tip",text:"哈希表"}),s(),a(n,{type:"tip",text:"数学"}),s(),a(n,{type:"tip",text:"双指针"})]),F])}const g=p(r,[["render",C]]);export{m as __pageData,g as default};
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_203-\347\247\273\351\231\244\351\223\276\350\241\250\345\205\203\347\264\240.md.36715e65.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_203-\347\247\273\351\231\244\351\223\276\350\241\250\345\205\203\347\264\240.md.020363ec.js"
similarity index 99%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_203-\347\247\273\351\231\244\351\223\276\350\241\250\345\205\203\347\264\240.md.36715e65.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_203-\347\247\273\351\231\244\351\223\276\350\241\250\345\205\203\347\264\240.md.020363ec.js"
index b0322e44..b702e679 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_203-\347\247\273\351\231\244\351\223\276\350\241\250\345\205\203\347\264\240.md.36715e65.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_203-\347\247\273\351\231\244\351\223\276\350\241\250\345\205\203\347\264\240.md.020363ec.js"
@@ -1,4 +1,4 @@
-import{_ as o,c as p,a as s,b as n,d as l,e,o as t,r as c}from"./app.fa87702c.js";const v=JSON.parse('{"title":"203-移除链表元素","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/203-移除链表元素.md"}'),r={name:"algorithm/LeetCode刷题/203-移除链表元素.md"},y=s("h1",{id:"_203-移除链表元素",tabindex:"-1"},[n("203-移除链表元素 "),s("a",{class:"header-anchor",href:"#_203-移除链表元素","aria-hidden":"true"},"#")],-1),i=e(`

题目信息

题目地址203. 移除链表元素

题目内容:

javascript
给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.val == val的节点,并返回新的头节点 。
+import{_ as o,c as p,a as s,b as n,d as l,e,o as t,r as c}from"./app.2f6419f0.js";const v=JSON.parse('{"title":"203-移除链表元素","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/203-移除链表元素.md"}'),r={name:"algorithm/LeetCode刷题/203-移除链表元素.md"},y=s("h1",{id:"_203-移除链表元素",tabindex:"-1"},[n("203-移除链表元素 "),s("a",{class:"header-anchor",href:"#_203-移除链表元素","aria-hidden":"true"},"#")],-1),i=e(`

题目信息

题目地址203. 移除链表元素

题目内容:

javascript
给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.val == val的节点,并返回新的头节点 。
  
 示例 1
     输入:head = [1,2,6,3,4,5,6], val = 6
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_203-\347\247\273\351\231\244\351\223\276\350\241\250\345\205\203\347\264\240.md.36715e65.lean.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_203-\347\247\273\351\231\244\351\223\276\350\241\250\345\205\203\347\264\240.md.020363ec.lean.js"
similarity index 94%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_203-\347\247\273\351\231\244\351\223\276\350\241\250\345\205\203\347\264\240.md.36715e65.lean.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_203-\347\247\273\351\231\244\351\223\276\350\241\250\345\205\203\347\264\240.md.020363ec.lean.js"
index 41906426..e47c32f7 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_203-\347\247\273\351\231\244\351\223\276\350\241\250\345\205\203\347\264\240.md.36715e65.lean.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_203-\347\247\273\351\231\244\351\223\276\350\241\250\345\205\203\347\264\240.md.020363ec.lean.js"
@@ -1 +1 @@
-import{_ as o,c as p,a as s,b as n,d as l,e,o as t,r as c}from"./app.fa87702c.js";const v=JSON.parse('{"title":"203-移除链表元素","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/203-移除链表元素.md"}'),r={name:"algorithm/LeetCode刷题/203-移除链表元素.md"},y=s("h1",{id:"_203-移除链表元素",tabindex:"-1"},[n("203-移除链表元素 "),s("a",{class:"header-anchor",href:"#_203-移除链表元素","aria-hidden":"true"},"#")],-1),i=e("",18);function F(D,C,A,d,f,u){const a=c("Badge");return t(),p("div",null,[y,s("p",null,[n("标签:"),l(a,{type:"tip",text:"递归"}),n(),l(a,{type:"tip",text:"链表"})]),i])}const m=o(r,[["render",F]]);export{v as __pageData,m as default};
+import{_ as o,c as p,a as s,b as n,d as l,e,o as t,r as c}from"./app.2f6419f0.js";const v=JSON.parse('{"title":"203-移除链表元素","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/203-移除链表元素.md"}'),r={name:"algorithm/LeetCode刷题/203-移除链表元素.md"},y=s("h1",{id:"_203-移除链表元素",tabindex:"-1"},[n("203-移除链表元素 "),s("a",{class:"header-anchor",href:"#_203-移除链表元素","aria-hidden":"true"},"#")],-1),i=e("",18);function F(D,C,A,d,f,u){const a=c("Badge");return t(),p("div",null,[y,s("p",null,[n("标签:"),l(a,{type:"tip",text:"递归"}),n(),l(a,{type:"tip",text:"链表"})]),i])}const m=o(r,[["render",F]]);export{v as __pageData,m as default};
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_206-\345\217\215\350\275\254\351\223\276\350\241\250.md.2fc76b3e.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_206-\345\217\215\350\275\254\351\223\276\350\241\250.md.7cf0d63f.js"
similarity index 99%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_206-\345\217\215\350\275\254\351\223\276\350\241\250.md.2fc76b3e.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_206-\345\217\215\350\275\254\351\223\276\350\241\250.md.7cf0d63f.js"
index 743e9898..cec8e28e 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_206-\345\217\215\350\275\254\351\223\276\350\241\250.md.2fc76b3e.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_206-\345\217\215\350\275\254\351\223\276\350\241\250.md.7cf0d63f.js"
@@ -1,4 +1,4 @@
-import{_ as o,c as e,a as s,b as n,d as l,e as p,o as t,r as c}from"./app.fa87702c.js";const v=JSON.parse('{"title":"206-反转链表","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/206-反转链表.md"}'),r={name:"algorithm/LeetCode刷题/206-反转链表.md"},i=s("h1",{id:"_206-反转链表",tabindex:"-1"},[n("206-反转链表 "),s("a",{class:"header-anchor",href:"#_206-反转链表","aria-hidden":"true"},"#")],-1),y=p(`

题目信息

题目地址206. 反转链表

题目内容:

javascript
给你单链表的头节点head,请你反转链表,并返回反转后的链表。
+import{_ as o,c as e,a as s,b as n,d as l,e as p,o as t,r as c}from"./app.2f6419f0.js";const v=JSON.parse('{"title":"206-反转链表","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/206-反转链表.md"}'),r={name:"algorithm/LeetCode刷题/206-反转链表.md"},i=s("h1",{id:"_206-反转链表",tabindex:"-1"},[n("206-反转链表 "),s("a",{class:"header-anchor",href:"#_206-反转链表","aria-hidden":"true"},"#")],-1),y=p(`

题目信息

题目地址206. 反转链表

题目内容:

javascript
给你单链表的头节点head,请你反转链表,并返回反转后的链表。
 

示例 1:

rev1ex1

输入:head = [1,2,3,4,5]

输出:[5,4,3,2,1]

示例 2:

rev1ex2

输入:head = [1,2]

输出:[2,1]

示例 3:

输入:head = []

输出:[]

javascript
提示:
 
     链表中节点的数目范围是 [0, 5000]
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_206-\345\217\215\350\275\254\351\223\276\350\241\250.md.2fc76b3e.lean.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_206-\345\217\215\350\275\254\351\223\276\350\241\250.md.7cf0d63f.lean.js"
similarity index 93%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_206-\345\217\215\350\275\254\351\223\276\350\241\250.md.2fc76b3e.lean.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_206-\345\217\215\350\275\254\351\223\276\350\241\250.md.7cf0d63f.lean.js"
index ec4e2daa..e14609bb 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_206-\345\217\215\350\275\254\351\223\276\350\241\250.md.2fc76b3e.lean.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_206-\345\217\215\350\275\254\351\223\276\350\241\250.md.7cf0d63f.lean.js"
@@ -1 +1 @@
-import{_ as o,c as e,a as s,b as n,d as l,e as p,o as t,r as c}from"./app.fa87702c.js";const v=JSON.parse('{"title":"206-反转链表","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/206-反转链表.md"}'),r={name:"algorithm/LeetCode刷题/206-反转链表.md"},i=s("h1",{id:"_206-反转链表",tabindex:"-1"},[n("206-反转链表 "),s("a",{class:"header-anchor",href:"#_206-反转链表","aria-hidden":"true"},"#")],-1),y=p("",25);function F(d,D,C,A,u,f){const a=c("Badge");return t(),e("div",null,[i,s("p",null,[n("标签:"),l(a,{type:"tip",text:"递归"}),n(),l(a,{type:"tip",text:"链表"})]),y])}const g=o(r,[["render",F]]);export{v as __pageData,g as default};
+import{_ as o,c as e,a as s,b as n,d as l,e as p,o as t,r as c}from"./app.2f6419f0.js";const v=JSON.parse('{"title":"206-反转链表","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/206-反转链表.md"}'),r={name:"algorithm/LeetCode刷题/206-反转链表.md"},i=s("h1",{id:"_206-反转链表",tabindex:"-1"},[n("206-反转链表 "),s("a",{class:"header-anchor",href:"#_206-反转链表","aria-hidden":"true"},"#")],-1),y=p("",25);function F(d,D,C,A,u,f){const a=c("Badge");return t(),e("div",null,[i,s("p",null,[n("标签:"),l(a,{type:"tip",text:"递归"}),n(),l(a,{type:"tip",text:"链表"})]),y])}const g=o(r,[["render",F]]);export{v as __pageData,g as default};
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_209-\351\225\277\345\272\246\346\234\200\345\260\217\347\232\204\345\255\220\346\225\260\347\273\204.md.70c53887.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_209-\351\225\277\345\272\246\346\234\200\345\260\217\347\232\204\345\255\220\346\225\260\347\273\204.md.9032535d.js"
similarity index 99%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_209-\351\225\277\345\272\246\346\234\200\345\260\217\347\232\204\345\255\220\346\225\260\347\273\204.md.70c53887.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_209-\351\225\277\345\272\246\346\234\200\345\260\217\347\232\204\345\255\220\346\225\260\347\273\204.md.9032535d.js"
index 7a5e09f7..f072e58b 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_209-\351\225\277\345\272\246\346\234\200\345\260\217\347\232\204\345\255\220\346\225\260\347\273\204.md.70c53887.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_209-\351\225\277\345\272\246\346\234\200\345\260\217\347\232\204\345\255\220\346\225\260\347\273\204.md.9032535d.js"
@@ -1,4 +1,4 @@
-import{_ as p,c as o,a as l,b as s,d as a,e as t,o as e,r as c}from"./app.fa87702c.js";const h=JSON.parse('{"title":"209-长度最小的子数组","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/209-长度最小的子数组.md"}'),r={name:"algorithm/LeetCode刷题/209-长度最小的子数组.md"},y=l("h1",{id:"_209-长度最小的子数组",tabindex:"-1"},[s("209-长度最小的子数组 "),l("a",{class:"header-anchor",href:"#_209-长度最小的子数组","aria-hidden":"true"},"#")],-1),F=t(`

题目信息

题目地址209. 长度最小的子数组

题目内容:

javascript
给定一个含有n个正整数的数组和一个正整数target。
+import{_ as p,c as o,a as l,b as s,d as a,e as t,o as e,r as c}from"./app.2f6419f0.js";const h=JSON.parse('{"title":"209-长度最小的子数组","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/209-长度最小的子数组.md"}'),r={name:"algorithm/LeetCode刷题/209-长度最小的子数组.md"},y=l("h1",{id:"_209-长度最小的子数组",tabindex:"-1"},[s("209-长度最小的子数组 "),l("a",{class:"header-anchor",href:"#_209-长度最小的子数组","aria-hidden":"true"},"#")],-1),F=t(`

题目信息

题目地址209. 长度最小的子数组

题目内容:

javascript
给定一个含有n个正整数的数组和一个正整数target。
 
 找出该数组中满足其总和大于等于target的长度最小的连续子数组[numsl, numsl+1, ..., numsr-1, numsr],并返回其长度。如果不存在符合条件的子数组,返回0。
 
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_209-\351\225\277\345\272\246\346\234\200\345\260\217\347\232\204\345\255\220\346\225\260\347\273\204.md.70c53887.lean.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_209-\351\225\277\345\272\246\346\234\200\345\260\217\347\232\204\345\255\220\346\225\260\347\273\204.md.9032535d.lean.js"
similarity index 94%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_209-\351\225\277\345\272\246\346\234\200\345\260\217\347\232\204\345\255\220\346\225\260\347\273\204.md.70c53887.lean.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_209-\351\225\277\345\272\246\346\234\200\345\260\217\347\232\204\345\255\220\346\225\260\347\273\204.md.9032535d.lean.js"
index 686ac6ed..43157c80 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_209-\351\225\277\345\272\246\346\234\200\345\260\217\347\232\204\345\255\220\346\225\260\347\273\204.md.70c53887.lean.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_209-\351\225\277\345\272\246\346\234\200\345\260\217\347\232\204\345\255\220\346\225\260\347\273\204.md.9032535d.lean.js"
@@ -1 +1 @@
-import{_ as p,c as o,a as l,b as s,d as a,e as t,o as e,r as c}from"./app.fa87702c.js";const h=JSON.parse('{"title":"209-长度最小的子数组","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/209-长度最小的子数组.md"}'),r={name:"algorithm/LeetCode刷题/209-长度最小的子数组.md"},y=l("h1",{id:"_209-长度最小的子数组",tabindex:"-1"},[s("209-长度最小的子数组 "),l("a",{class:"header-anchor",href:"#_209-长度最小的子数组","aria-hidden":"true"},"#")],-1),F=t("",13);function D(C,i,A,d,m,f){const n=c("Badge");return e(),o("div",null,[y,l("p",null,[s("标签:"),a(n,{type:"tip",text:"数组"}),s(),a(n,{type:"tip",text:"二分查找"}),s(),a(n,{type:"tip",text:"前缀和"}),s(),a(n,{type:"tip",text:"滑动窗口"})]),F])}const u=p(r,[["render",D]]);export{h as __pageData,u as default};
+import{_ as p,c as o,a as l,b as s,d as a,e as t,o as e,r as c}from"./app.2f6419f0.js";const h=JSON.parse('{"title":"209-长度最小的子数组","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/209-长度最小的子数组.md"}'),r={name:"algorithm/LeetCode刷题/209-长度最小的子数组.md"},y=l("h1",{id:"_209-长度最小的子数组",tabindex:"-1"},[s("209-长度最小的子数组 "),l("a",{class:"header-anchor",href:"#_209-长度最小的子数组","aria-hidden":"true"},"#")],-1),F=t("",13);function D(C,i,A,d,m,f){const n=c("Badge");return e(),o("div",null,[y,l("p",null,[s("标签:"),a(n,{type:"tip",text:"数组"}),s(),a(n,{type:"tip",text:"二分查找"}),s(),a(n,{type:"tip",text:"前缀和"}),s(),a(n,{type:"tip",text:"滑动窗口"})]),F])}const u=p(r,[["render",D]]);export{h as __pageData,u as default};
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_24-\344\270\244\344\270\244\344\272\244\346\215\242\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.md.523e7e5c.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_24-\344\270\244\344\270\244\344\272\244\346\215\242\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.md.785040ef.js"
similarity index 99%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_24-\344\270\244\344\270\244\344\272\244\346\215\242\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.md.523e7e5c.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_24-\344\270\244\344\270\244\344\272\244\346\215\242\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.md.785040ef.js"
index a4bdcbc8..7565b7aa 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_24-\344\270\244\344\270\244\344\272\244\346\215\242\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.md.523e7e5c.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_24-\344\270\244\344\270\244\344\272\244\346\215\242\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.md.785040ef.js"
@@ -1,4 +1,4 @@
-import{_ as p,c as o,a as s,b as n,d as l,e,o as t,r as c}from"./app.fa87702c.js";const x=JSON.parse('{"title":"24-两两交换链表中的节点","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/24-两两交换链表中的节点.md"}'),r={name:"algorithm/LeetCode刷题/24-两两交换链表中的节点.md"},y=s("h1",{id:"_24-两两交换链表中的节点",tabindex:"-1"},[n("24-两两交换链表中的节点 "),s("a",{class:"header-anchor",href:"#_24-两两交换链表中的节点","aria-hidden":"true"},"#")],-1),F=e(`

题目信息

题目地址24. 两两交换链表中的节点

题目内容:

javascript
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
+import{_ as p,c as o,a as s,b as n,d as l,e,o as t,r as c}from"./app.2f6419f0.js";const x=JSON.parse('{"title":"24-两两交换链表中的节点","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/24-两两交换链表中的节点.md"}'),r={name:"algorithm/LeetCode刷题/24-两两交换链表中的节点.md"},y=s("h1",{id:"_24-两两交换链表中的节点",tabindex:"-1"},[n("24-两两交换链表中的节点 "),s("a",{class:"header-anchor",href:"#_24-两两交换链表中的节点","aria-hidden":"true"},"#")],-1),F=e(`

题目信息

题目地址24. 两两交换链表中的节点

题目内容:

javascript
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
 
 示例 1
     输入:head = [1,2,3,4]
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_24-\344\270\244\344\270\244\344\272\244\346\215\242\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.md.523e7e5c.lean.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_24-\344\270\244\344\270\244\344\272\244\346\215\242\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.md.785040ef.lean.js"
similarity index 94%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_24-\344\270\244\344\270\244\344\272\244\346\215\242\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.md.523e7e5c.lean.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_24-\344\270\244\344\270\244\344\272\244\346\215\242\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.md.785040ef.lean.js"
index ff68b778..1f0dc5bd 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_24-\344\270\244\344\270\244\344\272\244\346\215\242\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.md.523e7e5c.lean.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_24-\344\270\244\344\270\244\344\272\244\346\215\242\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.md.785040ef.lean.js"
@@ -1 +1 @@
-import{_ as p,c as o,a as s,b as n,d as l,e,o as t,r as c}from"./app.fa87702c.js";const x=JSON.parse('{"title":"24-两两交换链表中的节点","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/24-两两交换链表中的节点.md"}'),r={name:"algorithm/LeetCode刷题/24-两两交换链表中的节点.md"},y=s("h1",{id:"_24-两两交换链表中的节点",tabindex:"-1"},[n("24-两两交换链表中的节点 "),s("a",{class:"header-anchor",href:"#_24-两两交换链表中的节点","aria-hidden":"true"},"#")],-1),F=e("",19);function D(i,C,A,d,u,f){const a=c("Badge");return t(),o("div",null,[y,s("p",null,[n("标签:"),l(a,{type:"tip",text:"递归"}),n(),l(a,{type:"tip",text:"链表"})]),F])}const m=p(r,[["render",D]]);export{x as __pageData,m as default};
+import{_ as p,c as o,a as s,b as n,d as l,e,o as t,r as c}from"./app.2f6419f0.js";const x=JSON.parse('{"title":"24-两两交换链表中的节点","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/24-两两交换链表中的节点.md"}'),r={name:"algorithm/LeetCode刷题/24-两两交换链表中的节点.md"},y=s("h1",{id:"_24-两两交换链表中的节点",tabindex:"-1"},[n("24-两两交换链表中的节点 "),s("a",{class:"header-anchor",href:"#_24-两两交换链表中的节点","aria-hidden":"true"},"#")],-1),F=e("",19);function D(i,C,A,d,u,f){const a=c("Badge");return t(),o("div",null,[y,s("p",null,[n("标签:"),l(a,{type:"tip",text:"递归"}),n(),l(a,{type:"tip",text:"链表"})]),F])}const m=p(r,[["render",D]]);export{x as __pageData,m as default};
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_242-\346\234\211\346\225\210\347\232\204\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.md.542b06e8.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_242-\346\234\211\346\225\210\347\232\204\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.md.6f5cb629.js"
similarity index 99%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_242-\346\234\211\346\225\210\347\232\204\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.md.542b06e8.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_242-\346\234\211\346\225\210\347\232\204\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.md.6f5cb629.js"
index d34e91f7..86f8d050 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_242-\346\234\211\346\225\210\347\232\204\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.md.542b06e8.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_242-\346\234\211\346\225\210\347\232\204\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.md.6f5cb629.js"
@@ -1,4 +1,4 @@
-import{_ as o,c as p,a as l,b as s,d as a,e as t,o as e,r as c}from"./app.fa87702c.js";const h=JSON.parse('{"title":"242-有效的字母异位词","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]},{"level":3,"title":"解法三","slug":"解法三","link":"#解法三","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/242-有效的字母异位词.md"}'),r={name:"algorithm/LeetCode刷题/242-有效的字母异位词.md"},y=l("h1",{id:"_242-有效的字母异位词",tabindex:"-1"},[s("242-有效的字母异位词 "),l("a",{class:"header-anchor",href:"#_242-有效的字母异位词","aria-hidden":"true"},"#")],-1),F=t(`

题目信息

题目地址242. 有效的字母异位词

题目内容:

javascript
给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。
+import{_ as o,c as p,a as l,b as s,d as a,e as t,o as e,r as c}from"./app.2f6419f0.js";const h=JSON.parse('{"title":"242-有效的字母异位词","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]},{"level":3,"title":"解法三","slug":"解法三","link":"#解法三","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/242-有效的字母异位词.md"}'),r={name:"algorithm/LeetCode刷题/242-有效的字母异位词.md"},y=l("h1",{id:"_242-有效的字母异位词",tabindex:"-1"},[s("242-有效的字母异位词 "),l("a",{class:"header-anchor",href:"#_242-有效的字母异位词","aria-hidden":"true"},"#")],-1),F=t(`

题目信息

题目地址242. 有效的字母异位词

题目内容:

javascript
给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。
 
 注意:若s和t中每个字符出现的次数都相同,则称s和t互为字母异位词。
 
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_242-\346\234\211\346\225\210\347\232\204\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.md.542b06e8.lean.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_242-\346\234\211\346\225\210\347\232\204\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.md.6f5cb629.lean.js"
similarity index 94%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_242-\346\234\211\346\225\210\347\232\204\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.md.542b06e8.lean.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_242-\346\234\211\346\225\210\347\232\204\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.md.6f5cb629.lean.js"
index 94c03025..6e1cd395 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_242-\346\234\211\346\225\210\347\232\204\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.md.542b06e8.lean.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_242-\346\234\211\346\225\210\347\232\204\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.md.6f5cb629.lean.js"
@@ -1 +1 @@
-import{_ as o,c as p,a as l,b as s,d as a,e as t,o as e,r as c}from"./app.fa87702c.js";const h=JSON.parse('{"title":"242-有效的字母异位词","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]},{"level":3,"title":"解法三","slug":"解法三","link":"#解法三","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/242-有效的字母异位词.md"}'),r={name:"algorithm/LeetCode刷题/242-有效的字母异位词.md"},y=l("h1",{id:"_242-有效的字母异位词",tabindex:"-1"},[s("242-有效的字母异位词 "),l("a",{class:"header-anchor",href:"#_242-有效的字母异位词","aria-hidden":"true"},"#")],-1),F=t("",18);function D(i,C,A,f,u,d){const n=c("Badge");return e(),p("div",null,[y,l("p",null,[s("标签:"),a(n,{type:"tip",text:"哈希表"}),s(),a(n,{type:"tip",text:"字符串"}),s(),a(n,{type:"tip",text:"排序"})]),F])}const g=o(r,[["render",D]]);export{h as __pageData,g as default};
+import{_ as o,c as p,a as l,b as s,d as a,e as t,o as e,r as c}from"./app.2f6419f0.js";const h=JSON.parse('{"title":"242-有效的字母异位词","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]},{"level":3,"title":"解法三","slug":"解法三","link":"#解法三","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/242-有效的字母异位词.md"}'),r={name:"algorithm/LeetCode刷题/242-有效的字母异位词.md"},y=l("h1",{id:"_242-有效的字母异位词",tabindex:"-1"},[s("242-有效的字母异位词 "),l("a",{class:"header-anchor",href:"#_242-有效的字母异位词","aria-hidden":"true"},"#")],-1),F=t("",18);function D(i,C,A,f,u,d){const n=c("Badge");return e(),p("div",null,[y,l("p",null,[s("标签:"),a(n,{type:"tip",text:"哈希表"}),s(),a(n,{type:"tip",text:"字符串"}),s(),a(n,{type:"tip",text:"排序"})]),F])}const g=o(r,[["render",D]]);export{h as __pageData,g as default};
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_26-\345\210\240\351\231\244\346\234\211\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\351\207\215\345\244\215\351\241\271.md.2b71935b.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_26-\345\210\240\351\231\244\346\234\211\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\351\207\215\345\244\215\351\241\271.md.074da58c.js"
similarity index 99%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_26-\345\210\240\351\231\244\346\234\211\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\351\207\215\345\244\215\351\241\271.md.2b71935b.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_26-\345\210\240\351\231\244\346\234\211\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\351\207\215\345\244\215\351\241\271.md.074da58c.js"
index d4894b0a..5ef20fa6 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_26-\345\210\240\351\231\244\346\234\211\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\351\207\215\345\244\215\351\241\271.md.2b71935b.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_26-\345\210\240\351\231\244\346\234\211\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\351\207\215\345\244\215\351\241\271.md.074da58c.js"
@@ -1,4 +1,4 @@
-import{_ as p,c as o,a as s,b as n,d as l,e,o as t,r as c}from"./app.fa87702c.js";const h=JSON.parse('{"title":"26-删除有序数组中的重复项","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/26-删除有序数组中的重复项.md"}'),r={name:"algorithm/LeetCode刷题/26-删除有序数组中的重复项.md"},y=s("h1",{id:"_26-删除有序数组中的重复项",tabindex:"-1"},[n("26-删除有序数组中的重复项 "),s("a",{class:"header-anchor",href:"#_26-删除有序数组中的重复项","aria-hidden":"true"},"#")],-1),F=e(`

题目信息

题目地址删除有序数组中的重复项

题目内容:

javascript
给你一个非严格递增排列的数组nums
+import{_ as p,c as o,a as s,b as n,d as l,e,o as t,r as c}from"./app.2f6419f0.js";const h=JSON.parse('{"title":"26-删除有序数组中的重复项","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/26-删除有序数组中的重复项.md"}'),r={name:"algorithm/LeetCode刷题/26-删除有序数组中的重复项.md"},y=s("h1",{id:"_26-删除有序数组中的重复项",tabindex:"-1"},[n("26-删除有序数组中的重复项 "),s("a",{class:"header-anchor",href:"#_26-删除有序数组中的重复项","aria-hidden":"true"},"#")],-1),F=e(`

题目信息

题目地址删除有序数组中的重复项

题目内容:

javascript
给你一个非严格递增排列的数组nums
 
 请你原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度。
 
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_26-\345\210\240\351\231\244\346\234\211\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\351\207\215\345\244\215\351\241\271.md.2b71935b.lean.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_26-\345\210\240\351\231\244\346\234\211\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\351\207\215\345\244\215\351\241\271.md.074da58c.lean.js"
similarity index 94%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_26-\345\210\240\351\231\244\346\234\211\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\351\207\215\345\244\215\351\241\271.md.2b71935b.lean.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_26-\345\210\240\351\231\244\346\234\211\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\351\207\215\345\244\215\351\241\271.md.074da58c.lean.js"
index 86420d76..4e459675 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_26-\345\210\240\351\231\244\346\234\211\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\351\207\215\345\244\215\351\241\271.md.2b71935b.lean.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_26-\345\210\240\351\231\244\346\234\211\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\351\207\215\345\244\215\351\241\271.md.074da58c.lean.js"
@@ -1 +1 @@
-import{_ as p,c as o,a as s,b as n,d as l,e,o as t,r as c}from"./app.fa87702c.js";const h=JSON.parse('{"title":"26-删除有序数组中的重复项","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/26-删除有序数组中的重复项.md"}'),r={name:"algorithm/LeetCode刷题/26-删除有序数组中的重复项.md"},y=s("h1",{id:"_26-删除有序数组中的重复项",tabindex:"-1"},[n("26-删除有序数组中的重复项 "),s("a",{class:"header-anchor",href:"#_26-删除有序数组中的重复项","aria-hidden":"true"},"#")],-1),F=e("",10);function C(D,i,A,d,u,f){const a=c("Badge");return t(),o("div",null,[y,s("p",null,[n("标签:"),l(a,{type:"tip",text:"数组"}),n(),l(a,{type:"tip",text:"双指针"})]),F])}const m=p(r,[["render",C]]);export{h as __pageData,m as default};
+import{_ as p,c as o,a as s,b as n,d as l,e,o as t,r as c}from"./app.2f6419f0.js";const h=JSON.parse('{"title":"26-删除有序数组中的重复项","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/26-删除有序数组中的重复项.md"}'),r={name:"algorithm/LeetCode刷题/26-删除有序数组中的重复项.md"},y=s("h1",{id:"_26-删除有序数组中的重复项",tabindex:"-1"},[n("26-删除有序数组中的重复项 "),s("a",{class:"header-anchor",href:"#_26-删除有序数组中的重复项","aria-hidden":"true"},"#")],-1),F=e("",10);function C(D,i,A,d,u,f){const a=c("Badge");return t(),o("div",null,[y,s("p",null,[n("标签:"),l(a,{type:"tip",text:"数组"}),n(),l(a,{type:"tip",text:"双指针"})]),F])}const m=p(r,[["render",C]]);export{h as __pageData,m as default};
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_27-\347\247\273\351\231\244\345\205\203\347\264\240.md.d4cb0564.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_27-\347\247\273\351\231\244\345\205\203\347\264\240.md.05aef25d.js"
similarity index 99%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_27-\347\247\273\351\231\244\345\205\203\347\264\240.md.d4cb0564.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_27-\347\247\273\351\231\244\345\205\203\347\264\240.md.05aef25d.js"
index c915e81f..64db0518 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_27-\347\247\273\351\231\244\345\205\203\347\264\240.md.d4cb0564.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_27-\347\247\273\351\231\244\345\205\203\347\264\240.md.05aef25d.js"
@@ -1,4 +1,4 @@
-import{_ as o,c as p,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.fa87702c.js";const h=JSON.parse('{"title":"27-移除元素","description":"","frontmatter":{"0":"l","1":"a","2":"y","3":"o","4":"u","5":"t","6":":","7":"d","8":"o","9":"c"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]},{"level":3,"title":"解法三","slug":"解法三","link":"#解法三","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/27-移除元素.md"}'),r={name:"algorithm/LeetCode刷题/27-移除元素.md"},y=s("h1",{id:"_27-移除元素",tabindex:"-1"},[n("27-移除元素 "),s("a",{class:"header-anchor",href:"#_27-移除元素","aria-hidden":"true"},"#")],-1),F=t(`

题目信息

题目地址移除元素

题目内容:

javascript
给你一个数组nums和一个值val,你需要原地移除所有数值等于val的元素,并返回移除后数组的新长度。
+import{_ as o,c as p,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.2f6419f0.js";const h=JSON.parse('{"title":"27-移除元素","description":"","frontmatter":{"0":"l","1":"a","2":"y","3":"o","4":"u","5":"t","6":":","7":"d","8":"o","9":"c"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]},{"level":3,"title":"解法三","slug":"解法三","link":"#解法三","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/27-移除元素.md"}'),r={name:"algorithm/LeetCode刷题/27-移除元素.md"},y=s("h1",{id:"_27-移除元素",tabindex:"-1"},[n("27-移除元素 "),s("a",{class:"header-anchor",href:"#_27-移除元素","aria-hidden":"true"},"#")],-1),F=t(`

题目信息

题目地址移除元素

题目内容:

javascript
给你一个数组nums和一个值val,你需要原地移除所有数值等于val的元素,并返回移除后数组的新长度。
 
 不要使用额外的数组空间,你必须仅使用O(1)额外空间并原地修改输入数组。
 
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_27-\347\247\273\351\231\244\345\205\203\347\264\240.md.d4cb0564.lean.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_27-\347\247\273\351\231\244\345\205\203\347\264\240.md.05aef25d.lean.js"
similarity index 94%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_27-\347\247\273\351\231\244\345\205\203\347\264\240.md.d4cb0564.lean.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_27-\347\247\273\351\231\244\345\205\203\347\264\240.md.05aef25d.lean.js"
index 74f6edbb..41042d2a 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_27-\347\247\273\351\231\244\345\205\203\347\264\240.md.d4cb0564.lean.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_27-\347\247\273\351\231\244\345\205\203\347\264\240.md.05aef25d.lean.js"
@@ -1 +1 @@
-import{_ as o,c as p,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.fa87702c.js";const h=JSON.parse('{"title":"27-移除元素","description":"","frontmatter":{"0":"l","1":"a","2":"y","3":"o","4":"u","5":"t","6":":","7":"d","8":"o","9":"c"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]},{"level":3,"title":"解法三","slug":"解法三","link":"#解法三","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/27-移除元素.md"}'),r={name:"algorithm/LeetCode刷题/27-移除元素.md"},y=s("h1",{id:"_27-移除元素",tabindex:"-1"},[n("27-移除元素 "),s("a",{class:"header-anchor",href:"#_27-移除元素","aria-hidden":"true"},"#")],-1),F=t("",20);function i(D,C,A,d,f,u){const a=c("Badge");return e(),p("div",null,[y,s("p",null,[n("标签:"),l(a,{type:"tip",text:"数组"}),n(),l(a,{type:"tip",text:"双指针"})]),F])}const E=o(r,[["render",i]]);export{h as __pageData,E as default};
+import{_ as o,c as p,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.2f6419f0.js";const h=JSON.parse('{"title":"27-移除元素","description":"","frontmatter":{"0":"l","1":"a","2":"y","3":"o","4":"u","5":"t","6":":","7":"d","8":"o","9":"c"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]},{"level":3,"title":"解法三","slug":"解法三","link":"#解法三","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/27-移除元素.md"}'),r={name:"algorithm/LeetCode刷题/27-移除元素.md"},y=s("h1",{id:"_27-移除元素",tabindex:"-1"},[n("27-移除元素 "),s("a",{class:"header-anchor",href:"#_27-移除元素","aria-hidden":"true"},"#")],-1),F=t("",20);function i(D,C,A,d,f,u){const a=c("Badge");return e(),p("div",null,[y,s("p",null,[n("标签:"),l(a,{type:"tip",text:"数组"}),n(),l(a,{type:"tip",text:"双指针"})]),F])}const E=o(r,[["render",i]]);export{h as __pageData,E as default};
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_28-\346\211\276\345\207\272\345\255\227\347\254\246\344\270\262\344\270\255\347\254\254\344\270\200\344\270\252\345\214\271\351\205\215\351\241\271\347\232\204\344\270\213\346\240\207.md.b772ec49.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_28-\346\211\276\345\207\272\345\255\227\347\254\246\344\270\262\344\270\255\347\254\254\344\270\200\344\270\252\345\214\271\351\205\215\351\241\271\347\232\204\344\270\213\346\240\207.md.33df99a2.js"
similarity index 99%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_28-\346\211\276\345\207\272\345\255\227\347\254\246\344\270\262\344\270\255\347\254\254\344\270\200\344\270\252\345\214\271\351\205\215\351\241\271\347\232\204\344\270\213\346\240\207.md.b772ec49.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_28-\346\211\276\345\207\272\345\255\227\347\254\246\344\270\262\344\270\255\347\254\254\344\270\200\344\270\252\345\214\271\351\205\215\351\241\271\347\232\204\344\270\213\346\240\207.md.33df99a2.js"
index 7136fca4..30b89bfb 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_28-\346\211\276\345\207\272\345\255\227\347\254\246\344\270\262\344\270\255\347\254\254\344\270\200\344\270\252\345\214\271\351\205\215\351\241\271\347\232\204\344\270\213\346\240\207.md.b772ec49.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_28-\346\211\276\345\207\272\345\255\227\347\254\246\344\270\262\344\270\255\347\254\254\344\270\200\344\270\252\345\214\271\351\205\215\351\241\271\347\232\204\344\270\213\346\240\207.md.33df99a2.js"
@@ -1,4 +1,4 @@
-import{_ as o,c as p,a as l,b as s,d as a,e as t,o as e,r as c}from"./app.fa87702c.js";const _=JSON.parse('{"title":"28-找出字符串中第一个匹配项的下标","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/28-找出字符串中第一个匹配项的下标.md"}'),r={name:"algorithm/LeetCode刷题/28-找出字符串中第一个匹配项的下标.md"},y=l("h1",{id:"_28-找出字符串中第一个匹配项的下标",tabindex:"-1"},[s("28-找出字符串中第一个匹配项的下标 "),l("a",{class:"header-anchor",href:"#_28-找出字符串中第一个匹配项的下标","aria-hidden":"true"},"#")],-1),i=t(`

题目信息

题目地址找出字符串中第一个匹配项的下标

题目内容:

javascript
给你两个字符串haystack和needle
+import{_ as o,c as p,a as l,b as s,d as a,e as t,o as e,r as c}from"./app.2f6419f0.js";const _=JSON.parse('{"title":"28-找出字符串中第一个匹配项的下标","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/28-找出字符串中第一个匹配项的下标.md"}'),r={name:"algorithm/LeetCode刷题/28-找出字符串中第一个匹配项的下标.md"},y=l("h1",{id:"_28-找出字符串中第一个匹配项的下标",tabindex:"-1"},[s("28-找出字符串中第一个匹配项的下标 "),l("a",{class:"header-anchor",href:"#_28-找出字符串中第一个匹配项的下标","aria-hidden":"true"},"#")],-1),i=t(`

题目信息

题目地址找出字符串中第一个匹配项的下标

题目内容:

javascript
给你两个字符串haystack和needle
 
 请你在haystack字符串中找出needle字符串的第一个匹配项的下标(下标从0开始)。
 
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_28-\346\211\276\345\207\272\345\255\227\347\254\246\344\270\262\344\270\255\347\254\254\344\270\200\344\270\252\345\214\271\351\205\215\351\241\271\347\232\204\344\270\213\346\240\207.md.b772ec49.lean.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_28-\346\211\276\345\207\272\345\255\227\347\254\246\344\270\262\344\270\255\347\254\254\344\270\200\344\270\252\345\214\271\351\205\215\351\241\271\347\232\204\344\270\213\346\240\207.md.33df99a2.lean.js"
similarity index 95%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_28-\346\211\276\345\207\272\345\255\227\347\254\246\344\270\262\344\270\255\347\254\254\344\270\200\344\270\252\345\214\271\351\205\215\351\241\271\347\232\204\344\270\213\346\240\207.md.b772ec49.lean.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_28-\346\211\276\345\207\272\345\255\227\347\254\246\344\270\262\344\270\255\347\254\254\344\270\200\344\270\252\345\214\271\351\205\215\351\241\271\347\232\204\344\270\213\346\240\207.md.33df99a2.lean.js"
index 9a64121c..93593d33 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_28-\346\211\276\345\207\272\345\255\227\347\254\246\344\270\262\344\270\255\347\254\254\344\270\200\344\270\252\345\214\271\351\205\215\351\241\271\347\232\204\344\270\213\346\240\207.md.b772ec49.lean.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_28-\346\211\276\345\207\272\345\255\227\347\254\246\344\270\262\344\270\255\347\254\254\344\270\200\344\270\252\345\214\271\351\205\215\351\241\271\347\232\204\344\270\213\346\240\207.md.33df99a2.lean.js"
@@ -1 +1 @@
-import{_ as o,c as p,a as l,b as s,d as a,e as t,o as e,r as c}from"./app.fa87702c.js";const _=JSON.parse('{"title":"28-找出字符串中第一个匹配项的下标","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/28-找出字符串中第一个匹配项的下标.md"}'),r={name:"algorithm/LeetCode刷题/28-找出字符串中第一个匹配项的下标.md"},y=l("h1",{id:"_28-找出字符串中第一个匹配项的下标",tabindex:"-1"},[s("28-找出字符串中第一个匹配项的下标 "),l("a",{class:"header-anchor",href:"#_28-找出字符串中第一个匹配项的下标","aria-hidden":"true"},"#")],-1),i=t("",15);function F(D,C,A,d,f,h){const n=c("Badge");return e(),p("div",null,[y,l("p",null,[s("标签:"),a(n,{type:"tip",text:"双指针"}),s(),a(n,{type:"tip",text:"字符串"}),s(),a(n,{type:"tip",text:"字符串匹配"})]),i])}const g=o(r,[["render",F]]);export{_ as __pageData,g as default};
+import{_ as o,c as p,a as l,b as s,d as a,e as t,o as e,r as c}from"./app.2f6419f0.js";const _=JSON.parse('{"title":"28-找出字符串中第一个匹配项的下标","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/28-找出字符串中第一个匹配项的下标.md"}'),r={name:"algorithm/LeetCode刷题/28-找出字符串中第一个匹配项的下标.md"},y=l("h1",{id:"_28-找出字符串中第一个匹配项的下标",tabindex:"-1"},[s("28-找出字符串中第一个匹配项的下标 "),l("a",{class:"header-anchor",href:"#_28-找出字符串中第一个匹配项的下标","aria-hidden":"true"},"#")],-1),i=t("",15);function F(D,C,A,d,f,h){const n=c("Badge");return e(),p("div",null,[y,l("p",null,[s("标签:"),a(n,{type:"tip",text:"双指针"}),s(),a(n,{type:"tip",text:"字符串"}),s(),a(n,{type:"tip",text:"字符串匹配"})]),i])}const g=o(r,[["render",F]]);export{_ as __pageData,g as default};
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_3-\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md.97f7d9a5.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_3-\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md.fd6b8d95.js"
similarity index 99%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_3-\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md.97f7d9a5.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_3-\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md.fd6b8d95.js"
index 020bbc26..537910dc 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_3-\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md.97f7d9a5.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_3-\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md.fd6b8d95.js"
@@ -1,4 +1,4 @@
-import{_ as p,c as o,a as l,b as s,d as a,e as t,o as e,r as c}from"./app.fa87702c.js";const g=JSON.parse('{"title":"3-无重复字符的最长子串","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/3-无重复字符的最长子串.md"}'),r={name:"algorithm/LeetCode刷题/3-无重复字符的最长子串.md"},y=l("h1",{id:"_3-无重复字符的最长子串",tabindex:"-1"},[s("3-无重复字符的最长子串 "),l("a",{class:"header-anchor",href:"#_3-无重复字符的最长子串","aria-hidden":"true"},"#")],-1),F=t(`

题目信息

题目地址无重复字符的最长子串

题目内容:

javascript
给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。
+import{_ as p,c as o,a as l,b as s,d as a,e as t,o as e,r as c}from"./app.2f6419f0.js";const g=JSON.parse('{"title":"3-无重复字符的最长子串","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/3-无重复字符的最长子串.md"}'),r={name:"algorithm/LeetCode刷题/3-无重复字符的最长子串.md"},y=l("h1",{id:"_3-无重复字符的最长子串",tabindex:"-1"},[s("3-无重复字符的最长子串 "),l("a",{class:"header-anchor",href:"#_3-无重复字符的最长子串","aria-hidden":"true"},"#")],-1),F=t(`

题目信息

题目地址无重复字符的最长子串

题目内容:

javascript
给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。
 
 示例 1:
   输入: s = "abcabcbb"
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_3-\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md.97f7d9a5.lean.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_3-\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md.fd6b8d95.lean.js"
similarity index 94%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_3-\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md.97f7d9a5.lean.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_3-\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md.fd6b8d95.lean.js"
index 32d1ac8e..f9fc9363 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_3-\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md.97f7d9a5.lean.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_3-\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md.fd6b8d95.lean.js"
@@ -1 +1 @@
-import{_ as p,c as o,a as l,b as s,d as a,e as t,o as e,r as c}from"./app.fa87702c.js";const g=JSON.parse('{"title":"3-无重复字符的最长子串","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/3-无重复字符的最长子串.md"}'),r={name:"algorithm/LeetCode刷题/3-无重复字符的最长子串.md"},y=l("h1",{id:"_3-无重复字符的最长子串",tabindex:"-1"},[s("3-无重复字符的最长子串 "),l("a",{class:"header-anchor",href:"#_3-无重复字符的最长子串","aria-hidden":"true"},"#")],-1),F=t("",19);function D(C,i,A,d,f,u){const n=c("Badge");return e(),o("div",null,[y,l("p",null,[s("标签:"),a(n,{type:"tip",text:"哈希表"}),s(),a(n,{type:"tip",text:"字符串"}),s(),a(n,{type:"tip",text:"滑动窗口"})]),F])}const E=p(r,[["render",D]]);export{g as __pageData,E as default};
+import{_ as p,c as o,a as l,b as s,d as a,e as t,o as e,r as c}from"./app.2f6419f0.js";const g=JSON.parse('{"title":"3-无重复字符的最长子串","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/3-无重复字符的最长子串.md"}'),r={name:"algorithm/LeetCode刷题/3-无重复字符的最长子串.md"},y=l("h1",{id:"_3-无重复字符的最长子串",tabindex:"-1"},[s("3-无重复字符的最长子串 "),l("a",{class:"header-anchor",href:"#_3-无重复字符的最长子串","aria-hidden":"true"},"#")],-1),F=t("",19);function D(C,i,A,d,f,u){const n=c("Badge");return e(),o("div",null,[y,l("p",null,[s("标签:"),a(n,{type:"tip",text:"哈希表"}),s(),a(n,{type:"tip",text:"字符串"}),s(),a(n,{type:"tip",text:"滑动窗口"})]),F])}const E=p(r,[["render",D]]);export{g as __pageData,E as default};
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_344-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262.md.039ea20c.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_344-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262.md.9282e1dd.js"
similarity index 99%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_344-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262.md.039ea20c.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_344-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262.md.9282e1dd.js"
index c3f8558c..dbf818d0 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_344-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262.md.039ea20c.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_344-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262.md.9282e1dd.js"
@@ -1,4 +1,4 @@
-import{_ as o,c as p,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.fa87702c.js";const E=JSON.parse('{"title":"344-反转字符串","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/344-反转字符串.md"}'),r={name:"algorithm/LeetCode刷题/344-反转字符串.md"},y=s("h1",{id:"_344-反转字符串",tabindex:"-1"},[n("344-反转字符串 "),s("a",{class:"header-anchor",href:"#_344-反转字符串","aria-hidden":"true"},"#")],-1),F=t(`

题目信息

题目地址344. 反转字符串

题目内容:

javascript
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组s的形式给出。
+import{_ as o,c as p,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.2f6419f0.js";const E=JSON.parse('{"title":"344-反转字符串","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/344-反转字符串.md"}'),r={name:"algorithm/LeetCode刷题/344-反转字符串.md"},y=s("h1",{id:"_344-反转字符串",tabindex:"-1"},[n("344-反转字符串 "),s("a",{class:"header-anchor",href:"#_344-反转字符串","aria-hidden":"true"},"#")],-1),F=t(`

题目信息

题目地址344. 反转字符串

题目内容:

javascript
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组s的形式给出。
 
 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
 
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_344-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262.md.039ea20c.lean.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_344-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262.md.9282e1dd.lean.js"
similarity index 93%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_344-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262.md.039ea20c.lean.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_344-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262.md.9282e1dd.lean.js"
index 4e2ea890..ab2bff55 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_344-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262.md.039ea20c.lean.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_344-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262.md.9282e1dd.lean.js"
@@ -1 +1 @@
-import{_ as o,c as p,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.fa87702c.js";const E=JSON.parse('{"title":"344-反转字符串","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/344-反转字符串.md"}'),r={name:"algorithm/LeetCode刷题/344-反转字符串.md"},y=s("h1",{id:"_344-反转字符串",tabindex:"-1"},[n("344-反转字符串 "),s("a",{class:"header-anchor",href:"#_344-反转字符串","aria-hidden":"true"},"#")],-1),F=t("",12);function D(i,C,A,d,f,u){const a=c("Badge");return e(),p("div",null,[y,s("p",null,[n("标签:"),l(a,{type:"tip",text:"字符串"}),n(),l(a,{type:"tip",text:"双指针"})]),F])}const g=o(r,[["render",D]]);export{E as __pageData,g as default};
+import{_ as o,c as p,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.2f6419f0.js";const E=JSON.parse('{"title":"344-反转字符串","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/344-反转字符串.md"}'),r={name:"algorithm/LeetCode刷题/344-反转字符串.md"},y=s("h1",{id:"_344-反转字符串",tabindex:"-1"},[n("344-反转字符串 "),s("a",{class:"header-anchor",href:"#_344-反转字符串","aria-hidden":"true"},"#")],-1),F=t("",12);function D(i,C,A,d,f,u){const a=c("Badge");return e(),p("div",null,[y,s("p",null,[n("标签:"),l(a,{type:"tip",text:"字符串"}),n(),l(a,{type:"tip",text:"双指针"})]),F])}const g=o(r,[["render",D]]);export{E as __pageData,g as default};
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_349-\344\270\244\344\270\252\346\225\260\347\273\204\347\232\204\344\272\244\351\233\206.md.09761f50.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_349-\344\270\244\344\270\252\346\225\260\347\273\204\347\232\204\344\272\244\351\233\206.md.370a303a.js"
similarity index 99%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_349-\344\270\244\344\270\252\346\225\260\347\273\204\347\232\204\344\272\244\351\233\206.md.09761f50.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_349-\344\270\244\344\270\252\346\225\260\347\273\204\347\232\204\344\272\244\351\233\206.md.370a303a.js"
index d65fb5b8..7abb68c8 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_349-\344\270\244\344\270\252\346\225\260\347\273\204\347\232\204\344\272\244\351\233\206.md.09761f50.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_349-\344\270\244\344\270\252\346\225\260\347\273\204\347\232\204\344\272\244\351\233\206.md.370a303a.js"
@@ -1,4 +1,4 @@
-import{_ as p,c as o,a as l,b as s,d as a,e as t,o as e,r as c}from"./app.fa87702c.js";const h=JSON.parse('{"title":"349-两个数组的交集","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/349-两个数组的交集.md"}'),r={name:"algorithm/LeetCode刷题/349-两个数组的交集.md"},y=l("h1",{id:"_349-两个数组的交集",tabindex:"-1"},[s("349-两个数组的交集 "),l("a",{class:"header-anchor",href:"#_349-两个数组的交集","aria-hidden":"true"},"#")],-1),F=t(`

题目信息

题目地址349. 两个数组的交集

题目内容:

javascript
给定两个数组nums1和nums2,返回它们的交集。
+import{_ as p,c as o,a as l,b as s,d as a,e as t,o as e,r as c}from"./app.2f6419f0.js";const h=JSON.parse('{"title":"349-两个数组的交集","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/349-两个数组的交集.md"}'),r={name:"algorithm/LeetCode刷题/349-两个数组的交集.md"},y=l("h1",{id:"_349-两个数组的交集",tabindex:"-1"},[s("349-两个数组的交集 "),l("a",{class:"header-anchor",href:"#_349-两个数组的交集","aria-hidden":"true"},"#")],-1),F=t(`

题目信息

题目地址349. 两个数组的交集

题目内容:

javascript
给定两个数组nums1和nums2,返回它们的交集。
 
 输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序 。
 
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_349-\344\270\244\344\270\252\346\225\260\347\273\204\347\232\204\344\272\244\351\233\206.md.09761f50.lean.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_349-\344\270\244\344\270\252\346\225\260\347\273\204\347\232\204\344\272\244\351\233\206.md.370a303a.lean.js"
similarity index 94%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_349-\344\270\244\344\270\252\346\225\260\347\273\204\347\232\204\344\272\244\351\233\206.md.09761f50.lean.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_349-\344\270\244\344\270\252\346\225\260\347\273\204\347\232\204\344\272\244\351\233\206.md.370a303a.lean.js"
index c54413f5..04d9ef15 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_349-\344\270\244\344\270\252\346\225\260\347\273\204\347\232\204\344\272\244\351\233\206.md.09761f50.lean.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_349-\344\270\244\344\270\252\346\225\260\347\273\204\347\232\204\344\272\244\351\233\206.md.370a303a.lean.js"
@@ -1 +1 @@
-import{_ as p,c as o,a as l,b as s,d as a,e as t,o as e,r as c}from"./app.fa87702c.js";const h=JSON.parse('{"title":"349-两个数组的交集","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/349-两个数组的交集.md"}'),r={name:"algorithm/LeetCode刷题/349-两个数组的交集.md"},y=l("h1",{id:"_349-两个数组的交集",tabindex:"-1"},[s("349-两个数组的交集 "),l("a",{class:"header-anchor",href:"#_349-两个数组的交集","aria-hidden":"true"},"#")],-1),F=t("",15);function i(D,C,A,d,f,m){const n=c("Badge");return e(),o("div",null,[y,l("p",null,[s("标签:"),a(n,{type:"tip",text:"数组"}),s(),a(n,{type:"tip",text:"哈希表"}),s(),a(n,{type:"tip",text:"双指针"}),s(),a(n,{type:"tip",text:"二分查找"}),s(),a(n,{type:"tip",text:"排序"})]),F])}const E=p(r,[["render",i]]);export{h as __pageData,E as default};
+import{_ as p,c as o,a as l,b as s,d as a,e as t,o as e,r as c}from"./app.2f6419f0.js";const h=JSON.parse('{"title":"349-两个数组的交集","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/349-两个数组的交集.md"}'),r={name:"algorithm/LeetCode刷题/349-两个数组的交集.md"},y=l("h1",{id:"_349-两个数组的交集",tabindex:"-1"},[s("349-两个数组的交集 "),l("a",{class:"header-anchor",href:"#_349-两个数组的交集","aria-hidden":"true"},"#")],-1),F=t("",15);function i(D,C,A,d,f,m){const n=c("Badge");return e(),o("div",null,[y,l("p",null,[s("标签:"),a(n,{type:"tip",text:"数组"}),s(),a(n,{type:"tip",text:"哈希表"}),s(),a(n,{type:"tip",text:"双指针"}),s(),a(n,{type:"tip",text:"二分查找"}),s(),a(n,{type:"tip",text:"排序"})]),F])}const E=p(r,[["render",i]]);export{h as __pageData,E as default};
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_35-\346\220\234\347\264\242\346\217\222\345\205\245\344\275\215\347\275\256.md.a661fc45.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_35-\346\220\234\347\264\242\346\217\222\345\205\245\344\275\215\347\275\256.md.26492779.js"
similarity index 99%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_35-\346\220\234\347\264\242\346\217\222\345\205\245\344\275\215\347\275\256.md.a661fc45.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_35-\346\220\234\347\264\242\346\217\222\345\205\245\344\275\215\347\275\256.md.26492779.js"
index 3e1153da..ca800d8f 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_35-\346\220\234\347\264\242\346\217\222\345\205\245\344\275\215\347\275\256.md.a661fc45.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_35-\346\220\234\347\264\242\346\217\222\345\205\245\344\275\215\347\275\256.md.26492779.js"
@@ -1,4 +1,4 @@
-import{_ as p,c as o,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.fa87702c.js";const m=JSON.parse('{"title":"35-搜索插入位置","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/35-搜索插入位置.md"}'),r={name:"algorithm/LeetCode刷题/35-搜索插入位置.md"},y=s("h1",{id:"_35-搜索插入位置",tabindex:"-1"},[n("35-搜索插入位置 "),s("a",{class:"header-anchor",href:"#_35-搜索插入位置","aria-hidden":"true"},"#")],-1),F=t(`

题目信息

题目地址搜索插入位置

题目内容:

javascript
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
+import{_ as p,c as o,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.2f6419f0.js";const m=JSON.parse('{"title":"35-搜索插入位置","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/35-搜索插入位置.md"}'),r={name:"algorithm/LeetCode刷题/35-搜索插入位置.md"},y=s("h1",{id:"_35-搜索插入位置",tabindex:"-1"},[n("35-搜索插入位置 "),s("a",{class:"header-anchor",href:"#_35-搜索插入位置","aria-hidden":"true"},"#")],-1),F=t(`

题目信息

题目地址搜索插入位置

题目内容:

javascript
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
 
 请必须使用时间复杂度为O(log n) 的算法。
 
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_35-\346\220\234\347\264\242\346\217\222\345\205\245\344\275\215\347\275\256.md.a661fc45.lean.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_35-\346\220\234\347\264\242\346\217\222\345\205\245\344\275\215\347\275\256.md.26492779.lean.js"
similarity index 93%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_35-\346\220\234\347\264\242\346\217\222\345\205\245\344\275\215\347\275\256.md.a661fc45.lean.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_35-\346\220\234\347\264\242\346\217\222\345\205\245\344\275\215\347\275\256.md.26492779.lean.js"
index 53adb861..427485bd 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_35-\346\220\234\347\264\242\346\217\222\345\205\245\344\275\215\347\275\256.md.a661fc45.lean.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_35-\346\220\234\347\264\242\346\217\222\345\205\245\344\275\215\347\275\256.md.26492779.lean.js"
@@ -1 +1 @@
-import{_ as p,c as o,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.fa87702c.js";const m=JSON.parse('{"title":"35-搜索插入位置","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/35-搜索插入位置.md"}'),r={name:"algorithm/LeetCode刷题/35-搜索插入位置.md"},y=s("h1",{id:"_35-搜索插入位置",tabindex:"-1"},[n("35-搜索插入位置 "),s("a",{class:"header-anchor",href:"#_35-搜索插入位置","aria-hidden":"true"},"#")],-1),F=t("",10);function D(C,i,A,d,f,h){const a=c("Badge");return e(),o("div",null,[y,s("p",null,[n("标签:"),l(a,{type:"tip",text:"数组"}),n(),l(a,{type:"tip",text:"二分查找"})]),F])}const u=p(r,[["render",D]]);export{m as __pageData,u as default};
+import{_ as p,c as o,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.2f6419f0.js";const m=JSON.parse('{"title":"35-搜索插入位置","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/35-搜索插入位置.md"}'),r={name:"algorithm/LeetCode刷题/35-搜索插入位置.md"},y=s("h1",{id:"_35-搜索插入位置",tabindex:"-1"},[n("35-搜索插入位置 "),s("a",{class:"header-anchor",href:"#_35-搜索插入位置","aria-hidden":"true"},"#")],-1),F=t("",10);function D(C,i,A,d,f,h){const a=c("Badge");return e(),o("div",null,[y,s("p",null,[n("标签:"),l(a,{type:"tip",text:"数组"}),n(),l(a,{type:"tip",text:"二分查找"})]),F])}const u=p(r,[["render",D]]);export{m as __pageData,u as default};
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_414-\347\254\254\344\270\211\345\244\247\347\232\204\346\225\260.md.c59ee823.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_414-\347\254\254\344\270\211\345\244\247\347\232\204\346\225\260.md.b657972b.js"
similarity index 99%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_414-\347\254\254\344\270\211\345\244\247\347\232\204\346\225\260.md.c59ee823.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_414-\347\254\254\344\270\211\345\244\247\347\232\204\346\225\260.md.b657972b.js"
index a4044dc0..0aef688d 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_414-\347\254\254\344\270\211\345\244\247\347\232\204\346\225\260.md.c59ee823.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_414-\347\254\254\344\270\211\345\244\247\347\232\204\346\225\260.md.b657972b.js"
@@ -1,4 +1,4 @@
-import{_ as p,c as o,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.fa87702c.js";const h=JSON.parse('{"title":"414-第三大的数","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/414-第三大的数.md"}'),r={name:"algorithm/LeetCode刷题/414-第三大的数.md"},y=s("h1",{id:"_414-第三大的数",tabindex:"-1"},[n("414-第三大的数 "),s("a",{class:"header-anchor",href:"#_414-第三大的数","aria-hidden":"true"},"#")],-1),F=t(`

题目信息

题目地址414. 第三大的数

题目内容:

javascript
给你一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。
+import{_ as p,c as o,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.2f6419f0.js";const h=JSON.parse('{"title":"414-第三大的数","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/414-第三大的数.md"}'),r={name:"algorithm/LeetCode刷题/414-第三大的数.md"},y=s("h1",{id:"_414-第三大的数",tabindex:"-1"},[n("414-第三大的数 "),s("a",{class:"header-anchor",href:"#_414-第三大的数","aria-hidden":"true"},"#")],-1),F=t(`

题目信息

题目地址414. 第三大的数

题目内容:

javascript
给你一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。
 
 示例 1
     输入:[3, 2, 1]
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_414-\347\254\254\344\270\211\345\244\247\347\232\204\346\225\260.md.c59ee823.lean.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_414-\347\254\254\344\270\211\345\244\247\347\232\204\346\225\260.md.b657972b.lean.js"
similarity index 94%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_414-\347\254\254\344\270\211\345\244\247\347\232\204\346\225\260.md.c59ee823.lean.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_414-\347\254\254\344\270\211\345\244\247\347\232\204\346\225\260.md.b657972b.lean.js"
index f2cbe126..c006f7f6 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_414-\347\254\254\344\270\211\345\244\247\347\232\204\346\225\260.md.c59ee823.lean.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_414-\347\254\254\344\270\211\345\244\247\347\232\204\346\225\260.md.b657972b.lean.js"
@@ -1 +1 @@
-import{_ as p,c as o,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.fa87702c.js";const h=JSON.parse('{"title":"414-第三大的数","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/414-第三大的数.md"}'),r={name:"algorithm/LeetCode刷题/414-第三大的数.md"},y=s("h1",{id:"_414-第三大的数",tabindex:"-1"},[n("414-第三大的数 "),s("a",{class:"header-anchor",href:"#_414-第三大的数","aria-hidden":"true"},"#")],-1),F=t("",17);function D(C,i,A,f,m,d){const a=c("Badge");return e(),o("div",null,[y,s("p",null,[n("标签:"),l(a,{type:"tip",text:"数组"}),n(),l(a,{type:"tip",text:"排序"})]),F])}const g=p(r,[["render",D]]);export{h as __pageData,g as default};
+import{_ as p,c as o,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.2f6419f0.js";const h=JSON.parse('{"title":"414-第三大的数","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/414-第三大的数.md"}'),r={name:"algorithm/LeetCode刷题/414-第三大的数.md"},y=s("h1",{id:"_414-第三大的数",tabindex:"-1"},[n("414-第三大的数 "),s("a",{class:"header-anchor",href:"#_414-第三大的数","aria-hidden":"true"},"#")],-1),F=t("",17);function D(C,i,A,f,m,d){const a=c("Badge");return e(),o("div",null,[y,s("p",null,[n("标签:"),l(a,{type:"tip",text:"数组"}),n(),l(a,{type:"tip",text:"排序"})]),F])}const g=p(r,[["render",D]]);export{h as __pageData,g as default};
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_454-\345\233\233\346\225\260\347\233\270\345\212\240II.md.3918f4a0.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_454-\345\233\233\346\225\260\347\233\270\345\212\240II.md.5441f9bc.js"
similarity index 99%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_454-\345\233\233\346\225\260\347\233\270\345\212\240II.md.3918f4a0.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_454-\345\233\233\346\225\260\347\233\270\345\212\240II.md.5441f9bc.js"
index 10fe1924..18516478 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_454-\345\233\233\346\225\260\347\233\270\345\212\240II.md.3918f4a0.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_454-\345\233\233\346\225\260\347\233\270\345\212\240II.md.5441f9bc.js"
@@ -1,4 +1,4 @@
-import{_ as p,c as o,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.fa87702c.js";const h=JSON.parse('{"title":"454-四数相加II","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/454-四数相加II.md"}'),r={name:"algorithm/LeetCode刷题/454-四数相加II.md"},y=s("h1",{id:"_454-四数相加ii",tabindex:"-1"},[n("454-四数相加II "),s("a",{class:"header-anchor",href:"#_454-四数相加ii","aria-hidden":"true"},"#")],-1),F=t(`

题目信息

题目地址454. 四数相加 II

题目内容:

javascript
给你四个整数数组nums1、nums2、nums3和nums4,数组长度都是n
+import{_ as p,c as o,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.2f6419f0.js";const h=JSON.parse('{"title":"454-四数相加II","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/454-四数相加II.md"}'),r={name:"algorithm/LeetCode刷题/454-四数相加II.md"},y=s("h1",{id:"_454-四数相加ii",tabindex:"-1"},[n("454-四数相加II "),s("a",{class:"header-anchor",href:"#_454-四数相加ii","aria-hidden":"true"},"#")],-1),F=t(`

题目信息

题目地址454. 四数相加 II

题目内容:

javascript
给你四个整数数组nums1、nums2、nums3和nums4,数组长度都是n
 
 请你计算有多少个元组 (i, j, k, l)能满足:
 
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_454-\345\233\233\346\225\260\347\233\270\345\212\240II.md.3918f4a0.lean.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_454-\345\233\233\346\225\260\347\233\270\345\212\240II.md.5441f9bc.lean.js"
similarity index 93%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_454-\345\233\233\346\225\260\347\233\270\345\212\240II.md.3918f4a0.lean.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_454-\345\233\233\346\225\260\347\233\270\345\212\240II.md.5441f9bc.lean.js"
index 1fe02316..f97a5975 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_454-\345\233\233\346\225\260\347\233\270\345\212\240II.md.3918f4a0.lean.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_454-\345\233\233\346\225\260\347\233\270\345\212\240II.md.5441f9bc.lean.js"
@@ -1 +1 @@
-import{_ as p,c as o,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.fa87702c.js";const h=JSON.parse('{"title":"454-四数相加II","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/454-四数相加II.md"}'),r={name:"algorithm/LeetCode刷题/454-四数相加II.md"},y=s("h1",{id:"_454-四数相加ii",tabindex:"-1"},[n("454-四数相加II "),s("a",{class:"header-anchor",href:"#_454-四数相加ii","aria-hidden":"true"},"#")],-1),F=t("",10);function C(D,A,i,u,m,d){const a=c("Badge");return e(),o("div",null,[y,s("p",null,[n("标签:"),l(a,{type:"tip",text:"数组"}),n(),l(a,{type:"tip",text:"哈希表"})]),F])}const E=p(r,[["render",C]]);export{h as __pageData,E as default};
+import{_ as p,c as o,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.2f6419f0.js";const h=JSON.parse('{"title":"454-四数相加II","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/454-四数相加II.md"}'),r={name:"algorithm/LeetCode刷题/454-四数相加II.md"},y=s("h1",{id:"_454-四数相加ii",tabindex:"-1"},[n("454-四数相加II "),s("a",{class:"header-anchor",href:"#_454-四数相加ii","aria-hidden":"true"},"#")],-1),F=t("",10);function C(D,A,i,u,m,d){const a=c("Badge");return e(),o("div",null,[y,s("p",null,[n("标签:"),l(a,{type:"tip",text:"数组"}),n(),l(a,{type:"tip",text:"哈希表"})]),F])}const E=p(r,[["render",C]]);export{h as __pageData,E as default};
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_485-\346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260.md.be64e975.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_485-\346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260.md.0e538c21.js"
similarity index 99%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_485-\346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260.md.be64e975.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_485-\346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260.md.0e538c21.js"
index b98e1c88..62088b70 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_485-\346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260.md.be64e975.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_485-\346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260.md.0e538c21.js"
@@ -1,4 +1,4 @@
-import{_ as l,c as o,a as s,b as n,d as p,e as t,o as e,r as c}from"./app.fa87702c.js";const m=JSON.parse('{"title":"485-最大连续 1 的个数","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/485-最大连续1的个数.md"}'),r={name:"algorithm/LeetCode刷题/485-最大连续1的个数.md"},y=s("h1",{id:"_485-最大连续-1-的个数",tabindex:"-1"},[n("485-最大连续 1 的个数 "),s("a",{class:"header-anchor",href:"#_485-最大连续-1-的个数","aria-hidden":"true"},"#")],-1),F=t(`

题目信息

题目地址485. 最大连续1的个数

题目内容:

javascript
给定一个二进制数组nums,计算其中最大连续1的个数。
+import{_ as l,c as o,a as s,b as n,d as p,e as t,o as e,r as c}from"./app.2f6419f0.js";const m=JSON.parse('{"title":"485-最大连续 1 的个数","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/485-最大连续1的个数.md"}'),r={name:"algorithm/LeetCode刷题/485-最大连续1的个数.md"},y=s("h1",{id:"_485-最大连续-1-的个数",tabindex:"-1"},[n("485-最大连续 1 的个数 "),s("a",{class:"header-anchor",href:"#_485-最大连续-1-的个数","aria-hidden":"true"},"#")],-1),F=t(`

题目信息

题目地址485. 最大连续1的个数

题目内容:

javascript
给定一个二进制数组nums,计算其中最大连续1的个数。
 
 示例 1
     输入:nums = [1,1,0,1,1,1]
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_485-\346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260.md.be64e975.lean.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_485-\346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260.md.0e538c21.lean.js"
similarity index 94%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_485-\346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260.md.be64e975.lean.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_485-\346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260.md.0e538c21.lean.js"
index d45a6c1f..fdd00f3a 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_485-\346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260.md.be64e975.lean.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_485-\346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260.md.0e538c21.lean.js"
@@ -1 +1 @@
-import{_ as l,c as o,a as s,b as n,d as p,e as t,o as e,r as c}from"./app.fa87702c.js";const m=JSON.parse('{"title":"485-最大连续 1 的个数","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/485-最大连续1的个数.md"}'),r={name:"algorithm/LeetCode刷题/485-最大连续1的个数.md"},y=s("h1",{id:"_485-最大连续-1-的个数",tabindex:"-1"},[n("485-最大连续 1 的个数 "),s("a",{class:"header-anchor",href:"#_485-最大连续-1-的个数","aria-hidden":"true"},"#")],-1),F=t("",15);function D(i,C,A,d,u,f){const a=c("Badge");return e(),o("div",null,[y,s("p",null,[n("标签:"),p(a,{type:"tip",text:"数组"})]),F])}const _=l(r,[["render",D]]);export{m as __pageData,_ as default};
+import{_ as l,c as o,a as s,b as n,d as p,e as t,o as e,r as c}from"./app.2f6419f0.js";const m=JSON.parse('{"title":"485-最大连续 1 的个数","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/485-最大连续1的个数.md"}'),r={name:"algorithm/LeetCode刷题/485-最大连续1的个数.md"},y=s("h1",{id:"_485-最大连续-1-的个数",tabindex:"-1"},[n("485-最大连续 1 的个数 "),s("a",{class:"header-anchor",href:"#_485-最大连续-1-的个数","aria-hidden":"true"},"#")],-1),F=t("",15);function D(i,C,A,d,u,f){const a=c("Badge");return e(),o("div",null,[y,s("p",null,[n("标签:"),p(a,{type:"tip",text:"数组"})]),F])}const _=l(r,[["render",D]]);export{m as __pageData,_ as default};
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_520-\346\243\200\346\265\213\345\244\247\345\206\231\345\255\227\346\257\215.md.7e6cb759.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_520-\346\243\200\346\265\213\345\244\247\345\206\231\345\255\227\346\257\215.md.021bc6bd.js"
similarity index 99%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_520-\346\243\200\346\265\213\345\244\247\345\206\231\345\255\227\346\257\215.md.7e6cb759.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_520-\346\243\200\346\265\213\345\244\247\345\206\231\345\255\227\346\257\215.md.021bc6bd.js"
index f0554765..17511b25 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_520-\346\243\200\346\265\213\345\244\247\345\206\231\345\255\227\346\257\215.md.7e6cb759.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_520-\346\243\200\346\265\213\345\244\247\345\206\231\345\255\227\346\257\215.md.021bc6bd.js"
@@ -1,4 +1,4 @@
-import{_ as l,c as p,a as s,b as a,d as o,e as t,o as e,r as c}from"./app.fa87702c.js";const g=JSON.parse('{"title":"520-检测大写字母","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/520-检测大写字母.md"}'),r={name:"algorithm/LeetCode刷题/520-检测大写字母.md"},y=s("h1",{id:"_520-检测大写字母",tabindex:"-1"},[a("520-检测大写字母 "),s("a",{class:"header-anchor",href:"#_520-检测大写字母","aria-hidden":"true"},"#")],-1),F=t(`

题目信息

题目地址520. 检测大写字母

题目内容:

javascript
我们定义,在以下情况时,单词的大写用法是正确的:
+import{_ as l,c as p,a as s,b as a,d as o,e as t,o as e,r as c}from"./app.2f6419f0.js";const g=JSON.parse('{"title":"520-检测大写字母","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/520-检测大写字母.md"}'),r={name:"algorithm/LeetCode刷题/520-检测大写字母.md"},y=s("h1",{id:"_520-检测大写字母",tabindex:"-1"},[a("520-检测大写字母 "),s("a",{class:"header-anchor",href:"#_520-检测大写字母","aria-hidden":"true"},"#")],-1),F=t(`

题目信息

题目地址520. 检测大写字母

题目内容:

javascript
我们定义,在以下情况时,单词的大写用法是正确的:
 
 全部字母都是大写,比如"USA"
 单词中所有字母都不是大写,比如"leetcode"
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_520-\346\243\200\346\265\213\345\244\247\345\206\231\345\255\227\346\257\215.md.7e6cb759.lean.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_520-\346\243\200\346\265\213\345\244\247\345\206\231\345\255\227\346\257\215.md.021bc6bd.lean.js"
similarity index 93%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_520-\346\243\200\346\265\213\345\244\247\345\206\231\345\255\227\346\257\215.md.7e6cb759.lean.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_520-\346\243\200\346\265\213\345\244\247\345\206\231\345\255\227\346\257\215.md.021bc6bd.lean.js"
index 48246104..8995f1b1 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_520-\346\243\200\346\265\213\345\244\247\345\206\231\345\255\227\346\257\215.md.7e6cb759.lean.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_520-\346\243\200\346\265\213\345\244\247\345\206\231\345\255\227\346\257\215.md.021bc6bd.lean.js"
@@ -1 +1 @@
-import{_ as l,c as p,a as s,b as a,d as o,e as t,o as e,r as c}from"./app.fa87702c.js";const g=JSON.parse('{"title":"520-检测大写字母","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/520-检测大写字母.md"}'),r={name:"algorithm/LeetCode刷题/520-检测大写字母.md"},y=s("h1",{id:"_520-检测大写字母",tabindex:"-1"},[a("520-检测大写字母 "),s("a",{class:"header-anchor",href:"#_520-检测大写字母","aria-hidden":"true"},"#")],-1),F=t("",16);function D(i,C,A,d,f,u){const n=c("Badge");return e(),p("div",null,[y,s("p",null,[a("标签:"),o(n,{type:"tip",text:"字符串"})]),F])}const E=l(r,[["render",D]]);export{g as __pageData,E as default};
+import{_ as l,c as p,a as s,b as a,d as o,e as t,o as e,r as c}from"./app.2f6419f0.js";const g=JSON.parse('{"title":"520-检测大写字母","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/520-检测大写字母.md"}'),r={name:"algorithm/LeetCode刷题/520-检测大写字母.md"},y=s("h1",{id:"_520-检测大写字母",tabindex:"-1"},[a("520-检测大写字母 "),s("a",{class:"header-anchor",href:"#_520-检测大写字母","aria-hidden":"true"},"#")],-1),F=t("",16);function D(i,C,A,d,f,u){const n=c("Badge");return e(),p("div",null,[y,s("p",null,[a("标签:"),o(n,{type:"tip",text:"字符串"})]),F])}const E=l(r,[["render",D]]);export{g as __pageData,E as default};
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_541-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262II.md.13001378.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_541-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262II.md.9cc898dc.js"
similarity index 99%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_541-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262II.md.13001378.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_541-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262II.md.9cc898dc.js"
index 14e764a8..2aee805a 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_541-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262II.md.13001378.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_541-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262II.md.9cc898dc.js"
@@ -1,4 +1,4 @@
-import{_ as p,c as o,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.fa87702c.js";const u=JSON.parse('{"title":"541-反转字符串II","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/541-反转字符串II.md"}'),r={name:"algorithm/LeetCode刷题/541-反转字符串II.md"},y=s("h1",{id:"_541-反转字符串ii",tabindex:"-1"},[n("541-反转字符串II "),s("a",{class:"header-anchor",href:"#_541-反转字符串ii","aria-hidden":"true"},"#")],-1),F=t(`

题目信息

题目地址541. 反转字符串 II

题目内容:

javascript
给定一个字符串s和一个整数k,从字符串开头算起,每计数至2k个字符,就反转这2k字符中的前k个字符。
+import{_ as p,c as o,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.2f6419f0.js";const u=JSON.parse('{"title":"541-反转字符串II","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/541-反转字符串II.md"}'),r={name:"algorithm/LeetCode刷题/541-反转字符串II.md"},y=s("h1",{id:"_541-反转字符串ii",tabindex:"-1"},[n("541-反转字符串II "),s("a",{class:"header-anchor",href:"#_541-反转字符串ii","aria-hidden":"true"},"#")],-1),F=t(`

题目信息

题目地址541. 反转字符串 II

题目内容:

javascript
给定一个字符串s和一个整数k,从字符串开头算起,每计数至2k个字符,就反转这2k字符中的前k个字符。
 
 如果剩余字符少于 k 个,则将剩余字符全部反转。
 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_541-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262II.md.13001378.lean.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_541-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262II.md.9cc898dc.lean.js"
similarity index 93%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_541-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262II.md.13001378.lean.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_541-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262II.md.9cc898dc.lean.js"
index 3953ddfb..9de9fd01 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_541-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262II.md.13001378.lean.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_541-\345\217\215\350\275\254\345\255\227\347\254\246\344\270\262II.md.9cc898dc.lean.js"
@@ -1 +1 @@
-import{_ as p,c as o,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.fa87702c.js";const u=JSON.parse('{"title":"541-反转字符串II","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/541-反转字符串II.md"}'),r={name:"algorithm/LeetCode刷题/541-反转字符串II.md"},y=s("h1",{id:"_541-反转字符串ii",tabindex:"-1"},[n("541-反转字符串II "),s("a",{class:"header-anchor",href:"#_541-反转字符串ii","aria-hidden":"true"},"#")],-1),F=t("",11);function D(i,C,A,d,f,g){const a=c("Badge");return e(),o("div",null,[y,s("p",null,[n("标签:"),l(a,{type:"tip",text:"双指针"}),n(),l(a,{type:"tip",text:"字符串"})]),F])}const _=p(r,[["render",D]]);export{u as __pageData,_ as default};
+import{_ as p,c as o,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.2f6419f0.js";const u=JSON.parse('{"title":"541-反转字符串II","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/541-反转字符串II.md"}'),r={name:"algorithm/LeetCode刷题/541-反转字符串II.md"},y=s("h1",{id:"_541-反转字符串ii",tabindex:"-1"},[n("541-反转字符串II "),s("a",{class:"header-anchor",href:"#_541-反转字符串ii","aria-hidden":"true"},"#")],-1),F=t("",11);function D(i,C,A,d,f,g){const a=c("Badge");return e(),o("div",null,[y,s("p",null,[n("标签:"),l(a,{type:"tip",text:"双指针"}),n(),l(a,{type:"tip",text:"字符串"})]),F])}const _=p(r,[["render",D]]);export{u as __pageData,_ as default};
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_58-\346\234\200\345\220\216\344\270\200\344\270\252\345\215\225\350\257\215\347\232\204\351\225\277\345\272\246.md.0594f4ac.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_58-\346\234\200\345\220\216\344\270\200\344\270\252\345\215\225\350\257\215\347\232\204\351\225\277\345\272\246.md.d95f4d76.js"
similarity index 99%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_58-\346\234\200\345\220\216\344\270\200\344\270\252\345\215\225\350\257\215\347\232\204\351\225\277\345\272\246.md.0594f4ac.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_58-\346\234\200\345\220\216\344\270\200\344\270\252\345\215\225\350\257\215\347\232\204\351\225\277\345\272\246.md.d95f4d76.js"
index 4afd2e86..7c64df25 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_58-\346\234\200\345\220\216\344\270\200\344\270\252\345\215\225\350\257\215\347\232\204\351\225\277\345\272\246.md.0594f4ac.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_58-\346\234\200\345\220\216\344\270\200\344\270\252\345\215\225\350\257\215\347\232\204\351\225\277\345\272\246.md.d95f4d76.js"
@@ -1,4 +1,4 @@
-import{_ as l,c as o,a as s,b as n,d as p,e as t,o as e,r as c}from"./app.fa87702c.js";const g=JSON.parse('{"title":"58-最后一个单词的长度","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/58-最后一个单词的长度.md"}'),r={name:"algorithm/LeetCode刷题/58-最后一个单词的长度.md"},y=s("h1",{id:"_58-最后一个单词的长度",tabindex:"-1"},[n("58-最后一个单词的长度 "),s("a",{class:"header-anchor",href:"#_58-最后一个单词的长度","aria-hidden":"true"},"#")],-1),i=t(`

题目信息

题目地址最后一个单词的长度

题目内容:

javascript
给你一个字符串s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。
+import{_ as l,c as o,a as s,b as n,d as p,e as t,o as e,r as c}from"./app.2f6419f0.js";const g=JSON.parse('{"title":"58-最后一个单词的长度","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/58-最后一个单词的长度.md"}'),r={name:"algorithm/LeetCode刷题/58-最后一个单词的长度.md"},y=s("h1",{id:"_58-最后一个单词的长度",tabindex:"-1"},[n("58-最后一个单词的长度 "),s("a",{class:"header-anchor",href:"#_58-最后一个单词的长度","aria-hidden":"true"},"#")],-1),i=t(`

题目信息

题目地址最后一个单词的长度

题目内容:

javascript
给你一个字符串s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。
 
 单词 是指仅由字母组成、不包含任何空格字符的最大
 子字符串
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_58-\346\234\200\345\220\216\344\270\200\344\270\252\345\215\225\350\257\215\347\232\204\351\225\277\345\272\246.md.0594f4ac.lean.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_58-\346\234\200\345\220\216\344\270\200\344\270\252\345\215\225\350\257\215\347\232\204\351\225\277\345\272\246.md.d95f4d76.lean.js"
similarity index 94%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_58-\346\234\200\345\220\216\344\270\200\344\270\252\345\215\225\350\257\215\347\232\204\351\225\277\345\272\246.md.0594f4ac.lean.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_58-\346\234\200\345\220\216\344\270\200\344\270\252\345\215\225\350\257\215\347\232\204\351\225\277\345\272\246.md.d95f4d76.lean.js"
index 26ab7577..e4ad6304 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_58-\346\234\200\345\220\216\344\270\200\344\270\252\345\215\225\350\257\215\347\232\204\351\225\277\345\272\246.md.0594f4ac.lean.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_58-\346\234\200\345\220\216\344\270\200\344\270\252\345\215\225\350\257\215\347\232\204\351\225\277\345\272\246.md.d95f4d76.lean.js"
@@ -1 +1 @@
-import{_ as l,c as o,a as s,b as n,d as p,e as t,o as e,r as c}from"./app.fa87702c.js";const g=JSON.parse('{"title":"58-最后一个单词的长度","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/58-最后一个单词的长度.md"}'),r={name:"algorithm/LeetCode刷题/58-最后一个单词的长度.md"},y=s("h1",{id:"_58-最后一个单词的长度",tabindex:"-1"},[n("58-最后一个单词的长度 "),s("a",{class:"header-anchor",href:"#_58-最后一个单词的长度","aria-hidden":"true"},"#")],-1),i=t("",15);function D(F,C,A,d,f,h){const a=c("Badge");return e(),o("div",null,[y,s("p",null,[n("标签:"),p(a,{type:"tip",text:"字符串"})]),i])}const _=l(r,[["render",D]]);export{g as __pageData,_ as default};
+import{_ as l,c as o,a as s,b as n,d as p,e as t,o as e,r as c}from"./app.2f6419f0.js";const g=JSON.parse('{"title":"58-最后一个单词的长度","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/58-最后一个单词的长度.md"}'),r={name:"algorithm/LeetCode刷题/58-最后一个单词的长度.md"},y=s("h1",{id:"_58-最后一个单词的长度",tabindex:"-1"},[n("58-最后一个单词的长度 "),s("a",{class:"header-anchor",href:"#_58-最后一个单词的长度","aria-hidden":"true"},"#")],-1),i=t("",15);function D(F,C,A,d,f,h){const a=c("Badge");return e(),o("div",null,[y,s("p",null,[n("标签:"),p(a,{type:"tip",text:"字符串"})]),i])}const _=l(r,[["render",D]]);export{g as __pageData,_ as default};
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_628-\344\270\211\344\270\252\346\225\260\347\232\204\346\234\200\345\244\247\344\271\230\347\247\257.md.d3b08e18.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_628-\344\270\211\344\270\252\346\225\260\347\232\204\346\234\200\345\244\247\344\271\230\347\247\257.md.98f7284f.js"
similarity index 99%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_628-\344\270\211\344\270\252\346\225\260\347\232\204\346\234\200\345\244\247\344\271\230\347\247\257.md.d3b08e18.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_628-\344\270\211\344\270\252\346\225\260\347\232\204\346\234\200\345\244\247\344\271\230\347\247\257.md.98f7284f.js"
index 481207e0..0ff9de68 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_628-\344\270\211\344\270\252\346\225\260\347\232\204\346\234\200\345\244\247\344\271\230\347\247\257.md.d3b08e18.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_628-\344\270\211\344\270\252\346\225\260\347\232\204\346\234\200\345\244\247\344\271\230\347\247\257.md.98f7284f.js"
@@ -1,4 +1,4 @@
-import{_ as p,c as o,a as l,b as s,d as a,e as t,o as e,r as c}from"./app.fa87702c.js";const h=JSON.parse('{"title":"628-三个数的最大乘积","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/628-三个数的最大乘积.md"}'),r={name:"algorithm/LeetCode刷题/628-三个数的最大乘积.md"},y=l("h1",{id:"_628-三个数的最大乘积",tabindex:"-1"},[s("628-三个数的最大乘积 "),l("a",{class:"header-anchor",href:"#_628-三个数的最大乘积","aria-hidden":"true"},"#")],-1),F=t(`

题目信息

题目地址628. 三个数的最大乘积

题目内容:

javascript
给你一个整型数组nums,在数组中找出由三个数组成的最大乘积,并输出这个乘积。
+import{_ as p,c as o,a as l,b as s,d as a,e as t,o as e,r as c}from"./app.2f6419f0.js";const h=JSON.parse('{"title":"628-三个数的最大乘积","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/628-三个数的最大乘积.md"}'),r={name:"algorithm/LeetCode刷题/628-三个数的最大乘积.md"},y=l("h1",{id:"_628-三个数的最大乘积",tabindex:"-1"},[s("628-三个数的最大乘积 "),l("a",{class:"header-anchor",href:"#_628-三个数的最大乘积","aria-hidden":"true"},"#")],-1),F=t(`

题目信息

题目地址628. 三个数的最大乘积

题目内容:

javascript
给你一个整型数组nums,在数组中找出由三个数组成的最大乘积,并输出这个乘积。
 
 示例 1
     输入:nums = [1,2,3]
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_628-\344\270\211\344\270\252\346\225\260\347\232\204\346\234\200\345\244\247\344\271\230\347\247\257.md.d3b08e18.lean.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_628-\344\270\211\344\270\252\346\225\260\347\232\204\346\234\200\345\244\247\344\271\230\347\247\257.md.98f7284f.lean.js"
similarity index 94%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_628-\344\270\211\344\270\252\346\225\260\347\232\204\346\234\200\345\244\247\344\271\230\347\247\257.md.d3b08e18.lean.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_628-\344\270\211\344\270\252\346\225\260\347\232\204\346\234\200\345\244\247\344\271\230\347\247\257.md.98f7284f.lean.js"
index ad411baa..9902a1e4 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_628-\344\270\211\344\270\252\346\225\260\347\232\204\346\234\200\345\244\247\344\271\230\347\247\257.md.d3b08e18.lean.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_628-\344\270\211\344\270\252\346\225\260\347\232\204\346\234\200\345\244\247\344\271\230\347\247\257.md.98f7284f.lean.js"
@@ -1 +1 @@
-import{_ as p,c as o,a as l,b as s,d as a,e as t,o as e,r as c}from"./app.fa87702c.js";const h=JSON.parse('{"title":"628-三个数的最大乘积","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/628-三个数的最大乘积.md"}'),r={name:"algorithm/LeetCode刷题/628-三个数的最大乘积.md"},y=l("h1",{id:"_628-三个数的最大乘积",tabindex:"-1"},[s("628-三个数的最大乘积 "),l("a",{class:"header-anchor",href:"#_628-三个数的最大乘积","aria-hidden":"true"},"#")],-1),F=t("",15);function D(i,C,A,m,d,f){const n=c("Badge");return e(),o("div",null,[y,l("p",null,[s("标签:"),a(n,{type:"tip",text:"数组"}),s(),a(n,{type:"tip",text:"数学"}),s(),a(n,{type:"tip",text:"排序"})]),F])}const _=p(r,[["render",D]]);export{h as __pageData,_ as default};
+import{_ as p,c as o,a as l,b as s,d as a,e as t,o as e,r as c}from"./app.2f6419f0.js";const h=JSON.parse('{"title":"628-三个数的最大乘积","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/628-三个数的最大乘积.md"}'),r={name:"algorithm/LeetCode刷题/628-三个数的最大乘积.md"},y=l("h1",{id:"_628-三个数的最大乘积",tabindex:"-1"},[s("628-三个数的最大乘积 "),l("a",{class:"header-anchor",href:"#_628-三个数的最大乘积","aria-hidden":"true"},"#")],-1),F=t("",15);function D(i,C,A,m,d,f){const n=c("Badge");return e(),o("div",null,[y,l("p",null,[s("标签:"),a(n,{type:"tip",text:"数组"}),s(),a(n,{type:"tip",text:"数学"}),s(),a(n,{type:"tip",text:"排序"})]),F])}const _=p(r,[["render",D]]);export{h as __pageData,_ as default};
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_707-\350\256\276\350\256\241\351\223\276\350\241\250.md.4e1bd779.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_707-\350\256\276\350\256\241\351\223\276\350\241\250.md.6454d777.js"
similarity index 99%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_707-\350\256\276\350\256\241\351\223\276\350\241\250.md.4e1bd779.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_707-\350\256\276\350\256\241\351\223\276\350\241\250.md.6454d777.js"
index ecfca502..ede5fbac 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_707-\350\256\276\350\256\241\351\223\276\350\241\250.md.4e1bd779.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_707-\350\256\276\350\256\241\351\223\276\350\241\250.md.6454d777.js"
@@ -1,4 +1,4 @@
-import{_ as p,c as o,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.fa87702c.js";const x=JSON.parse('{"title":"707-设计链表","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/707-设计链表.md"}'),y={name:"algorithm/LeetCode刷题/707-设计链表.md"},r=s("h1",{id:"_707-设计链表",tabindex:"-1"},[n("707-设计链表 "),s("a",{class:"header-anchor",href:"#_707-设计链表","aria-hidden":"true"},"#")],-1),F=t(`

题目信息

题目地址707. 设计链表

题目内容:

javascript
你可以选择使用单链表或者双链表,设计并实现自己的链表。
+import{_ as p,c as o,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.2f6419f0.js";const x=JSON.parse('{"title":"707-设计链表","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/707-设计链表.md"}'),y={name:"algorithm/LeetCode刷题/707-设计链表.md"},r=s("h1",{id:"_707-设计链表",tabindex:"-1"},[n("707-设计链表 "),s("a",{class:"header-anchor",href:"#_707-设计链表","aria-hidden":"true"},"#")],-1),F=t(`

题目信息

题目地址707. 设计链表

题目内容:

javascript
你可以选择使用单链表或者双链表,设计并实现自己的链表。
 
 单链表中的节点应该具备两个属性:val和next。val是当前节点的值,next是指向下一个节点的指针/引用。
 
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_707-\350\256\276\350\256\241\351\223\276\350\241\250.md.4e1bd779.lean.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_707-\350\256\276\350\256\241\351\223\276\350\241\250.md.6454d777.lean.js"
similarity index 93%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_707-\350\256\276\350\256\241\351\223\276\350\241\250.md.4e1bd779.lean.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_707-\350\256\276\350\256\241\351\223\276\350\241\250.md.6454d777.lean.js"
index 87ccda3d..5150187d 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_707-\350\256\276\350\256\241\351\223\276\350\241\250.md.4e1bd779.lean.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_707-\350\256\276\350\256\241\351\223\276\350\241\250.md.6454d777.lean.js"
@@ -1 +1 @@
-import{_ as p,c as o,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.fa87702c.js";const x=JSON.parse('{"title":"707-设计链表","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/707-设计链表.md"}'),y={name:"algorithm/LeetCode刷题/707-设计链表.md"},r=s("h1",{id:"_707-设计链表",tabindex:"-1"},[n("707-设计链表 "),s("a",{class:"header-anchor",href:"#_707-设计链表","aria-hidden":"true"},"#")],-1),F=t("",10);function D(i,C,A,d,f,u){const a=c("Badge");return e(),o("div",null,[r,s("p",null,[n("标签:"),l(a,{type:"tip",text:"设计"}),n(),l(a,{type:"tip",text:"链表"})]),F])}const h=p(y,[["render",D]]);export{x as __pageData,h as default};
+import{_ as p,c as o,a as s,b as n,d as l,e as t,o as e,r as c}from"./app.2f6419f0.js";const x=JSON.parse('{"title":"707-设计链表","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/707-设计链表.md"}'),y={name:"algorithm/LeetCode刷题/707-设计链表.md"},r=s("h1",{id:"_707-设计链表",tabindex:"-1"},[n("707-设计链表 "),s("a",{class:"header-anchor",href:"#_707-设计链表","aria-hidden":"true"},"#")],-1),F=t("",10);function D(i,C,A,d,f,u){const a=c("Badge");return e(),o("div",null,[r,s("p",null,[n("标签:"),l(a,{type:"tip",text:"设计"}),n(),l(a,{type:"tip",text:"链表"})]),F])}const h=p(y,[["render",D]]);export{x as __pageData,h as default};
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_9-\345\233\236\346\226\207\346\225\260.md.e7522f1c.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_9-\345\233\236\346\226\207\346\225\260.md.d2072e45.js"
similarity index 99%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_9-\345\233\236\346\226\207\346\225\260.md.e7522f1c.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_9-\345\233\236\346\226\207\346\225\260.md.d2072e45.js"
index 950762ac..f0f469dc 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_9-\345\233\236\346\226\207\346\225\260.md.e7522f1c.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_9-\345\233\236\346\226\207\346\225\260.md.d2072e45.js"
@@ -1,4 +1,4 @@
-import{_ as l,c as p,a as s,b as n,d as o,e,o as t,r as c}from"./app.fa87702c.js";const g=JSON.parse('{"title":"9-回文数","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/9-回文数.md"}'),r={name:"algorithm/LeetCode刷题/9-回文数.md"},y=s("h1",{id:"_9-回文数",tabindex:"-1"},[n("9-回文数 "),s("a",{class:"header-anchor",href:"#_9-回文数","aria-hidden":"true"},"#")],-1),F=e(`

题目信息

题目地址回文数

题目内容:

javascript
给你一个整数x,如果x是一个回文整数,返回true;否则,返回false。
+import{_ as l,c as p,a as s,b as n,d as o,e,o as t,r as c}from"./app.2f6419f0.js";const g=JSON.parse('{"title":"9-回文数","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/9-回文数.md"}'),r={name:"algorithm/LeetCode刷题/9-回文数.md"},y=s("h1",{id:"_9-回文数",tabindex:"-1"},[n("9-回文数 "),s("a",{class:"header-anchor",href:"#_9-回文数","aria-hidden":"true"},"#")],-1),F=e(`

题目信息

题目地址回文数

题目内容:

javascript
给你一个整数x,如果x是一个回文整数,返回true;否则,返回false。
 
 回文数
 是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_9-\345\233\236\346\226\207\346\225\260.md.e7522f1c.lean.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_9-\345\233\236\346\226\207\346\225\260.md.d2072e45.lean.js"
similarity index 93%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_9-\345\233\236\346\226\207\346\225\260.md.e7522f1c.lean.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_9-\345\233\236\346\226\207\346\225\260.md.d2072e45.lean.js"
index 80105257..2cab1a4d 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_9-\345\233\236\346\226\207\346\225\260.md.e7522f1c.lean.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_9-\345\233\236\346\226\207\346\225\260.md.d2072e45.lean.js"
@@ -1 +1 @@
-import{_ as l,c as p,a as s,b as n,d as o,e,o as t,r as c}from"./app.fa87702c.js";const g=JSON.parse('{"title":"9-回文数","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/9-回文数.md"}'),r={name:"algorithm/LeetCode刷题/9-回文数.md"},y=s("h1",{id:"_9-回文数",tabindex:"-1"},[n("9-回文数 "),s("a",{class:"header-anchor",href:"#_9-回文数","aria-hidden":"true"},"#")],-1),F=e("",15);function D(C,i,A,d,f,h){const a=c("Badge");return t(),p("div",null,[y,s("p",null,[n("标签:"),o(a,{type:"tip",text:"数学"})]),F])}const _=l(r,[["render",D]]);export{g as __pageData,_ as default};
+import{_ as l,c as p,a as s,b as n,d as o,e,o as t,r as c}from"./app.2f6419f0.js";const g=JSON.parse('{"title":"9-回文数","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/9-回文数.md"}'),r={name:"algorithm/LeetCode刷题/9-回文数.md"},y=s("h1",{id:"_9-回文数",tabindex:"-1"},[n("9-回文数 "),s("a",{class:"header-anchor",href:"#_9-回文数","aria-hidden":"true"},"#")],-1),F=e("",15);function D(C,i,A,d,f,h){const a=c("Badge");return t(),p("div",null,[y,s("p",null,[n("标签:"),o(a,{type:"tip",text:"数学"})]),F])}const _=l(r,[["render",D]]);export{g as __pageData,_ as default};
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_977-\346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\345\271\263\346\226\271.md.48537ab1.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_977-\346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\345\271\263\346\226\271.md.a2f1b7c0.js"
similarity index 99%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_977-\346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\345\271\263\346\226\271.md.48537ab1.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_977-\346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\345\271\263\346\226\271.md.a2f1b7c0.js"
index fdb3bf59..fbdea6ec 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_977-\346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\345\271\263\346\226\271.md.48537ab1.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_977-\346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\345\271\263\346\226\271.md.a2f1b7c0.js"
@@ -1,4 +1,4 @@
-import{_ as o,c as p,a as l,b as s,d as a,e,o as t,r as c}from"./app.fa87702c.js";const g=JSON.parse('{"title":"977-有序数组的平方","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/977-有序数组的平方.md"}'),r={name:"algorithm/LeetCode刷题/977-有序数组的平方.md"},y=l("h1",{id:"_977-有序数组的平方",tabindex:"-1"},[s("977-有序数组的平方 "),l("a",{class:"header-anchor",href:"#_977-有序数组的平方","aria-hidden":"true"},"#")],-1),F=e(`

题目信息

题目地址977. 有序数组的平方

题目内容:

javascript
给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。
+import{_ as o,c as p,a as l,b as s,d as a,e,o as t,r as c}from"./app.2f6419f0.js";const g=JSON.parse('{"title":"977-有序数组的平方","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/977-有序数组的平方.md"}'),r={name:"algorithm/LeetCode刷题/977-有序数组的平方.md"},y=l("h1",{id:"_977-有序数组的平方",tabindex:"-1"},[s("977-有序数组的平方 "),l("a",{class:"header-anchor",href:"#_977-有序数组的平方","aria-hidden":"true"},"#")],-1),F=e(`

题目信息

题目地址977. 有序数组的平方

题目内容:

javascript
给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。
 
 示例 1
     输入:nums = [-4,-1,0,3,10]
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_977-\346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\345\271\263\346\226\271.md.48537ab1.lean.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_977-\346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\345\271\263\346\226\271.md.a2f1b7c0.lean.js"
similarity index 94%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_977-\346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\345\271\263\346\226\271.md.48537ab1.lean.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_977-\346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\345\271\263\346\226\271.md.a2f1b7c0.lean.js"
index 849b95d9..c20bffc5 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_977-\346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\345\271\263\346\226\271.md.48537ab1.lean.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_977-\346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\345\271\263\346\226\271.md.a2f1b7c0.lean.js"
@@ -1 +1 @@
-import{_ as o,c as p,a as l,b as s,d as a,e,o as t,r as c}from"./app.fa87702c.js";const g=JSON.parse('{"title":"977-有序数组的平方","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/977-有序数组的平方.md"}'),r={name:"algorithm/LeetCode刷题/977-有序数组的平方.md"},y=l("h1",{id:"_977-有序数组的平方",tabindex:"-1"},[s("977-有序数组的平方 "),l("a",{class:"header-anchor",href:"#_977-有序数组的平方","aria-hidden":"true"},"#")],-1),F=e("",15);function C(D,i,A,d,f,h){const n=c("Badge");return t(),p("div",null,[y,l("p",null,[s("标签:"),a(n,{type:"tip",text:"数组"}),s(),a(n,{type:"tip",text:"双指针"}),s(),a(n,{type:"tip",text:"排序"})]),F])}const m=o(r,[["render",C]]);export{g as __pageData,m as default};
+import{_ as o,c as p,a as l,b as s,d as a,e,o as t,r as c}from"./app.2f6419f0.js";const g=JSON.parse('{"title":"977-有序数组的平方","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]},{"level":3,"title":"解法二","slug":"解法二","link":"#解法二","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/977-有序数组的平方.md"}'),r={name:"algorithm/LeetCode刷题/977-有序数组的平方.md"},y=l("h1",{id:"_977-有序数组的平方",tabindex:"-1"},[s("977-有序数组的平方 "),l("a",{class:"header-anchor",href:"#_977-有序数组的平方","aria-hidden":"true"},"#")],-1),F=e("",15);function C(D,i,A,d,f,h){const n=c("Badge");return t(),p("div",null,[y,l("p",null,[s("标签:"),a(n,{type:"tip",text:"数组"}),s(),a(n,{type:"tip",text:"双指针"}),s(),a(n,{type:"tip",text:"排序"})]),F])}const m=o(r,[["render",C]]);export{g as __pageData,m as default};
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_LCR-018-\351\252\214\350\257\201\345\233\236\346\226\207\344\270\262.md.849492ac.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_LCR-018-\351\252\214\350\257\201\345\233\236\346\226\207\344\270\262.md.e6eac031.js"
similarity index 99%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_LCR-018-\351\252\214\350\257\201\345\233\236\346\226\207\344\270\262.md.849492ac.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_LCR-018-\351\252\214\350\257\201\345\233\236\346\226\207\344\270\262.md.e6eac031.js"
index 3378b421..8ed92f28 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_LCR-018-\351\252\214\350\257\201\345\233\236\346\226\207\344\270\262.md.849492ac.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_LCR-018-\351\252\214\350\257\201\345\233\236\346\226\207\344\270\262.md.e6eac031.js"
@@ -1,4 +1,4 @@
-import{_ as o,c as p,a as s,b as a,d as l,e,o as t,r as c}from"./app.fa87702c.js";const u=JSON.parse('{"title":"LCR-018-验证回文串","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/LCR-018-验证回文串.md"}'),r={name:"algorithm/LeetCode刷题/LCR-018-验证回文串.md"},y=s("h1",{id:"lcr-018-验证回文串",tabindex:"-1"},[a("LCR-018-验证回文串 "),s("a",{class:"header-anchor",href:"#lcr-018-验证回文串","aria-hidden":"true"},"#")],-1),F=e(`

题目信息

题目地址LCR-018-验证回文串

题目内容:

javascript
给定一个字符串s,验证s是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
+import{_ as o,c as p,a as s,b as a,d as l,e,o as t,r as c}from"./app.2f6419f0.js";const u=JSON.parse('{"title":"LCR-018-验证回文串","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/LCR-018-验证回文串.md"}'),r={name:"algorithm/LeetCode刷题/LCR-018-验证回文串.md"},y=s("h1",{id:"lcr-018-验证回文串",tabindex:"-1"},[a("LCR-018-验证回文串 "),s("a",{class:"header-anchor",href:"#lcr-018-验证回文串","aria-hidden":"true"},"#")],-1),F=e(`

题目信息

题目地址LCR-018-验证回文串

题目内容:

javascript
给定一个字符串s,验证s是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
 
 本题中,将空字符串定义为有效的回文串。
 
diff --git "a/assets/algorithm_LeetCode\345\210\267\351\242\230_LCR-018-\351\252\214\350\257\201\345\233\236\346\226\207\344\270\262.md.849492ac.lean.js" "b/assets/algorithm_LeetCode\345\210\267\351\242\230_LCR-018-\351\252\214\350\257\201\345\233\236\346\226\207\344\270\262.md.e6eac031.lean.js"
similarity index 93%
rename from "assets/algorithm_LeetCode\345\210\267\351\242\230_LCR-018-\351\252\214\350\257\201\345\233\236\346\226\207\344\270\262.md.849492ac.lean.js"
rename to "assets/algorithm_LeetCode\345\210\267\351\242\230_LCR-018-\351\252\214\350\257\201\345\233\236\346\226\207\344\270\262.md.e6eac031.lean.js"
index 92438bab..7d78d5b3 100644
--- "a/assets/algorithm_LeetCode\345\210\267\351\242\230_LCR-018-\351\252\214\350\257\201\345\233\236\346\226\207\344\270\262.md.849492ac.lean.js"
+++ "b/assets/algorithm_LeetCode\345\210\267\351\242\230_LCR-018-\351\252\214\350\257\201\345\233\236\346\226\207\344\270\262.md.e6eac031.lean.js"
@@ -1 +1 @@
-import{_ as o,c as p,a as s,b as a,d as l,e,o as t,r as c}from"./app.fa87702c.js";const u=JSON.parse('{"title":"LCR-018-验证回文串","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/LCR-018-验证回文串.md"}'),r={name:"algorithm/LeetCode刷题/LCR-018-验证回文串.md"},y=s("h1",{id:"lcr-018-验证回文串",tabindex:"-1"},[a("LCR-018-验证回文串 "),s("a",{class:"header-anchor",href:"#lcr-018-验证回文串","aria-hidden":"true"},"#")],-1),F=e("",10);function i(D,C,A,d,h,f){const n=c("Badge");return t(),p("div",null,[y,s("p",null,[a("标签:"),l(n,{type:"tip",text:"双指针"}),a(),l(n,{type:"tip",text:"字符串"})]),F])}const _=o(r,[["render",i]]);export{u as __pageData,_ as default};
+import{_ as o,c as p,a as s,b as a,d as l,e,o as t,r as c}from"./app.2f6419f0.js";const u=JSON.parse('{"title":"LCR-018-验证回文串","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"题目信息","slug":"题目信息","link":"#题目信息","children":[]},{"level":2,"title":"题解","slug":"题解","link":"#题解","children":[{"level":3,"title":"解法一","slug":"解法一","link":"#解法一","children":[]}]}],"relativePath":"algorithm/LeetCode刷题/LCR-018-验证回文串.md"}'),r={name:"algorithm/LeetCode刷题/LCR-018-验证回文串.md"},y=s("h1",{id:"lcr-018-验证回文串",tabindex:"-1"},[a("LCR-018-验证回文串 "),s("a",{class:"header-anchor",href:"#lcr-018-验证回文串","aria-hidden":"true"},"#")],-1),F=e("",10);function i(D,C,A,d,h,f){const n=c("Badge");return t(),p("div",null,[y,s("p",null,[a("标签:"),l(n,{type:"tip",text:"双指针"}),a(),l(n,{type:"tip",text:"字符串"})]),F])}const _=o(r,[["render",i]]);export{u as __pageData,_ as default};
diff --git a/assets/app.fa87702c.js b/assets/app.2f6419f0.js
similarity index 73%
rename from assets/app.fa87702c.js
rename to assets/app.2f6419f0.js
index 55247a1e..d7e787bf 100644
--- a/assets/app.fa87702c.js
+++ b/assets/app.2f6419f0.js
@@ -1,4 +1,4 @@
-function Fs(e,t){const n=Object.create(null),s=e.split(",");for(let o=0;o!!n[o.toLowerCase()]:o=>!!n[o]}function Hs(e){if(W(e)){const t={};for(let n=0;n{if(n){const s=n.split(Hl);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function ge(e){let t="";if(ke(e))t=e;else if(W(e))for(let n=0;nke(e)?e:e==null?"":W(e)||ve(e)&&(e.toString===vi||!X(e.toString))?JSON.stringify(e,pi,2):String(e),pi=(e,t)=>t&&t.__v_isRef?pi(e,t.value):Ft(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,o])=>(n[`${s} =>`]=o,n),{})}:_i(t)?{[`Set(${t.size})`]:[...t.values()]}:ve(t)&&!W(t)&&!mi(t)?String(t):t,me={},Ot=[],ze=()=>{},jl=()=>!1,zl=/^on[^a-z]/,vn=e=>zl.test(e),Rs=e=>e.startsWith("onUpdate:"),we=Object.assign,Ds=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Kl=Object.prototype.hasOwnProperty,ie=(e,t)=>Kl.call(e,t),W=Array.isArray,Ft=e=>zn(e)==="[object Map]",_i=e=>zn(e)==="[object Set]",X=e=>typeof e=="function",ke=e=>typeof e=="string",Gs=e=>typeof e=="symbol",ve=e=>e!==null&&typeof e=="object",gi=e=>ve(e)&&X(e.then)&&X(e.catch),vi=Object.prototype.toString,zn=e=>vi.call(e),ql=e=>zn(e).slice(8,-1),mi=e=>zn(e)==="[object Object]",Us=e=>ke(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,nn=Fs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Kn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Wl=/-(\w)/g,Xe=Kn(e=>e.replace(Wl,(t,n)=>n?n.toUpperCase():"")),Ql=/\B([A-Z])/g,Yt=Kn(e=>e.replace(Ql,"-$1").toLowerCase()),qn=Kn(e=>e.charAt(0).toUpperCase()+e.slice(1)),cs=Kn(e=>e?`on${qn(e)}`:""),cn=(e,t)=>!Object.is(e,t),us=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Yl=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Jl=e=>{const t=ke(e)?Number(e):NaN;return isNaN(t)?e:t};let yo;const Xl=()=>yo||(yo=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});let Ne;class Zl{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=Ne,!t&&Ne&&(this.index=(Ne.scopes||(Ne.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=Ne;try{return Ne=this,t()}finally{Ne=n}}}on(){Ne=this}off(){Ne=this.parent}stop(t){if(this._active){let n,s;for(n=0,s=this.effects.length;n{const t=new Set(e);return t.w=0,t.n=0,t},yi=e=>(e.w&pt)>0,ki=e=>(e.n&pt)>0,nr=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let s=0;s{(f==="length"||f>=a)&&r.push(u)})}else switch(n!==void 0&&r.push(l.get(n)),t){case"add":W(e)?Us(n)&&r.push(l.get("length")):(r.push(l.get(Tt)),Ft(e)&&r.push(l.get(ws)));break;case"delete":W(e)||(r.push(l.get(Tt)),Ft(e)&&r.push(l.get(ws)));break;case"set":Ft(e)&&r.push(l.get(Tt));break}if(r.length===1)r[0]&&$s(r[0]);else{const a=[];for(const u of r)u&&a.push(...u);$s(js(a))}}function $s(e,t){const n=W(e)?e:[...e];for(const s of n)s.computed&&xo(s);for(const s of n)s.computed||xo(s)}function xo(e,t){(e!==Ue||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}const or=Fs("__proto__,__v_isRef,__isVue"),$i=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Gs)),ir=Ks(),lr=Ks(!1,!0),rr=Ks(!0),wo=ar();function ar(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const s=ae(this);for(let i=0,l=this.length;i{e[t]=function(...n){Jt();const s=ae(this)[t].apply(this,n);return Xt(),s}}),e}function cr(e){const t=ae(this);return Me(t,"has",e),t.hasOwnProperty(e)}function Ks(e=!1,t=!1){return function(s,o,i){if(o==="__v_isReactive")return!e;if(o==="__v_isReadonly")return e;if(o==="__v_isShallow")return t;if(o==="__v_raw"&&i===(e?t?Cr:Ti:t?Si:Li).get(s))return s;const l=W(s);if(!e){if(l&&ie(wo,o))return Reflect.get(wo,o,i);if(o==="hasOwnProperty")return cr}const r=Reflect.get(s,o,i);return(Gs(o)?$i.has(o):or(o))||(e||Me(s,"get",o),t)?r:Pe(r)?l&&Us(o)?r:r.value:ve(r)?e?Qs(r):Qn(r):r}}const ur=Ci(),dr=Ci(!0);function Ci(e=!1){return function(n,s,o,i){let l=n[s];if(Kt(l)&&Pe(l)&&!Pe(o))return!1;if(!e&&(!Nn(o)&&!Kt(o)&&(l=ae(l),o=ae(o)),!W(n)&&Pe(l)&&!Pe(o)))return l.value=o,!0;const r=W(n)&&Us(s)?Number(s)e,Wn=e=>Reflect.getPrototypeOf(e);function wn(e,t,n=!1,s=!1){e=e.__v_raw;const o=ae(e),i=ae(t);n||(t!==i&&Me(o,"get",t),Me(o,"get",i));const{has:l}=Wn(o),r=s?qs:n?Js:un;if(l.call(o,t))return r(e.get(t));if(l.call(o,i))return r(e.get(i));e!==o&&e.get(t)}function $n(e,t=!1){const n=this.__v_raw,s=ae(n),o=ae(e);return t||(e!==o&&Me(s,"has",e),Me(s,"has",o)),e===o?n.has(e):n.has(e)||n.has(o)}function Cn(e,t=!1){return e=e.__v_raw,!t&&Me(ae(e),"iterate",Tt),Reflect.get(e,"size",e)}function $o(e){e=ae(e);const t=ae(this);return Wn(t).has.call(t,e)||(t.add(e),st(t,"add",e,e)),this}function Co(e,t){t=ae(t);const n=ae(this),{has:s,get:o}=Wn(n);let i=s.call(n,e);i||(e=ae(e),i=s.call(n,e));const l=o.call(n,e);return n.set(e,t),i?cn(t,l)&&st(n,"set",e,t):st(n,"add",e,t),this}function Po(e){const t=ae(this),{has:n,get:s}=Wn(t);let o=n.call(t,e);o||(e=ae(e),o=n.call(t,e)),s&&s.call(t,e);const i=t.delete(e);return o&&st(t,"delete",e,void 0),i}function Lo(){const e=ae(this),t=e.size!==0,n=e.clear();return t&&st(e,"clear",void 0,void 0),n}function Pn(e,t){return function(s,o){const i=this,l=i.__v_raw,r=ae(l),a=t?qs:e?Js:un;return!e&&Me(r,"iterate",Tt),l.forEach((u,f)=>s.call(o,a(u),a(f),i))}}function Ln(e,t,n){return function(...s){const o=this.__v_raw,i=ae(o),l=Ft(i),r=e==="entries"||e===Symbol.iterator&&l,a=e==="keys"&&l,u=o[e](...s),f=n?qs:t?Js:un;return!t&&Me(i,"iterate",a?ws:Tt),{next(){const{value:_,done:g}=u.next();return g?{value:_,done:g}:{value:r?[f(_[0]),f(_[1])]:f(_),done:g}},[Symbol.iterator](){return this}}}}function lt(e){return function(...t){return e==="delete"?!1:this}}function vr(){const e={get(i){return wn(this,i)},get size(){return Cn(this)},has:$n,add:$o,set:Co,delete:Po,clear:Lo,forEach:Pn(!1,!1)},t={get(i){return wn(this,i,!1,!0)},get size(){return Cn(this)},has:$n,add:$o,set:Co,delete:Po,clear:Lo,forEach:Pn(!1,!0)},n={get(i){return wn(this,i,!0)},get size(){return Cn(this,!0)},has(i){return $n.call(this,i,!0)},add:lt("add"),set:lt("set"),delete:lt("delete"),clear:lt("clear"),forEach:Pn(!0,!1)},s={get(i){return wn(this,i,!0,!0)},get size(){return Cn(this,!0)},has(i){return $n.call(this,i,!0)},add:lt("add"),set:lt("set"),delete:lt("delete"),clear:lt("clear"),forEach:Pn(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{e[i]=Ln(i,!1,!1),n[i]=Ln(i,!0,!1),t[i]=Ln(i,!1,!0),s[i]=Ln(i,!0,!0)}),[e,n,t,s]}const[mr,br,yr,kr]=vr();function Ws(e,t){const n=t?e?kr:yr:e?br:mr;return(s,o,i)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?s:Reflect.get(ie(n,o)&&o in s?n:s,o,i)}const xr={get:Ws(!1,!1)},wr={get:Ws(!1,!0)},$r={get:Ws(!0,!1)},Li=new WeakMap,Si=new WeakMap,Ti=new WeakMap,Cr=new WeakMap;function Pr(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Lr(e){return e.__v_skip||!Object.isExtensible(e)?0:Pr(ql(e))}function Qn(e){return Kt(e)?e:Ys(e,!1,Pi,xr,Li)}function Sr(e){return Ys(e,!1,gr,wr,Si)}function Qs(e){return Ys(e,!0,_r,$r,Ti)}function Ys(e,t,n,s,o){if(!ve(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=o.get(e);if(i)return i;const l=Lr(e);if(l===0)return e;const r=new Proxy(e,l===2?s:n);return o.set(e,r),r}function Ht(e){return Kt(e)?Ht(e.__v_raw):!!(e&&e.__v_isReactive)}function Kt(e){return!!(e&&e.__v_isReadonly)}function Nn(e){return!!(e&&e.__v_isShallow)}function Vi(e){return Ht(e)||Kt(e)}function ae(e){const t=e&&e.__v_raw;return t?ae(t):e}function sn(e){return In(e,"__v_skip",!0),e}const un=e=>ve(e)?Qn(e):e,Js=e=>ve(e)?Qs(e):e;function Ei(e){ft&&Ue&&(e=ae(e),wi(e.dep||(e.dep=js())))}function Mi(e,t){e=ae(e);const n=e.dep;n&&$s(n)}function Pe(e){return!!(e&&e.__v_isRef===!0)}function le(e){return Ai(e,!1)}function Tr(e){return Ai(e,!0)}function Ai(e,t){return Pe(e)?e:new Vr(e,t)}class Vr{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:ae(t),this._value=n?t:un(t)}get value(){return Ei(this),this._value}set value(t){const n=this.__v_isShallow||Nn(t)||Kt(t);t=n?t:ae(t),cn(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:un(t),Mi(this))}}function p(e){return Pe(e)?e.value:e}const Er={get:(e,t,n)=>p(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const o=e[t];return Pe(o)&&!Pe(n)?(o.value=n,!0):Reflect.set(e,t,n,s)}};function Ii(e){return Ht(e)?e:new Proxy(e,Er)}var Ni;class Mr{constructor(t,n,s,o){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this[Ni]=!1,this._dirty=!0,this.effect=new zs(t,()=>{this._dirty||(this._dirty=!0,Mi(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!o,this.__v_isReadonly=s}get value(){const t=ae(this);return Ei(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}Ni="__v_isReadonly";function Ar(e,t,n=!1){let s,o;const i=X(e);return i?(s=e,o=ze):(s=e.get,o=e.set),new Mr(s,o,i||!o,n)}function ht(e,t,n,s){let o;try{o=s?e(...s):e()}catch(i){mn(i,t,n)}return o}function Re(e,t,n,s){if(X(e)){const i=ht(e,t,n,s);return i&&gi(i)&&i.catch(l=>{mn(l,t,n)}),i}const o=[];for(let i=0;i>>1;fn(Ce[s])Ye&&Ce.splice(t,1)}function Or(e){W(e)?Rt.push(...e):(!nt||!nt.includes(e,e.allowRecurse?Ct+1:Ct))&&Rt.push(e),Oi()}function So(e,t=dn?Ye+1:0){for(;tfn(n)-fn(s)),Ct=0;Cte.id==null?1/0:e.id,Fr=(e,t)=>{const n=fn(e)-fn(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Fi(e){Cs=!1,dn=!0,Ce.sort(Fr);const t=ze;try{for(Ye=0;Yeke(y)?y.trim():y)),_&&(o=n.map(Yl))}let r,a=s[r=cs(t)]||s[r=cs(Xe(t))];!a&&i&&(a=s[r=cs(Yt(t))]),a&&Re(a,e,6,o);const u=s[r+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[r])return;e.emitted[r]=!0,Re(u,e,6,o)}}function Hi(e,t,n=!1){const s=t.emitsCache,o=s.get(e);if(o!==void 0)return o;const i=e.emits;let l={},r=!1;if(!X(e)){const a=u=>{const f=Hi(u,t,!0);f&&(r=!0,we(l,f))};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}return!i&&!r?(ve(e)&&s.set(e,null),null):(W(i)?i.forEach(a=>l[a]=null):we(l,i),ve(e)&&s.set(e,l),l)}function Jn(e,t){return!e||!vn(t)?!1:(t=t.slice(2).replace(/Once$/,""),ie(e,t[0].toLowerCase()+t.slice(1))||ie(e,Yt(t))||ie(e,t))}let Le=null,Xn=null;function On(e){const t=Le;return Le=e,Xn=e&&e.type.__scopeId||null,t}function Ze(e){Xn=e}function et(){Xn=null}function I(e,t=Le,n){if(!t||e._n)return e;const s=(...o)=>{s._d&&Fo(-1);const i=On(t);let l;try{l=e(...o)}finally{On(i),s._d&&Fo(1)}return l};return s._n=!0,s._c=!0,s._d=!0,s}function ds(e){const{type:t,vnode:n,proxy:s,withProxy:o,props:i,propsOptions:[l],slots:r,attrs:a,emit:u,render:f,renderCache:_,data:g,setupState:y,ctx:T,inheritAttrs:M}=e;let K,m;const C=On(e);try{if(n.shapeFlag&4){const Y=o||s;K=Ge(f.call(Y,Y,_,i,y,g,T)),m=a}else{const Y=t;K=Ge(Y.length>1?Y(i,{attrs:a,slots:r,emit:u}):Y(i,null)),m=t.props?a:Rr(a)}}catch(Y){ln.length=0,mn(Y,e,1),K=V(Be)}let B=K;if(m&&M!==!1){const Y=Object.keys(m),{shapeFlag:te}=B;Y.length&&te&7&&(l&&Y.some(Rs)&&(m=Dr(m,l)),B=_t(B,m))}return n.dirs&&(B=_t(B),B.dirs=B.dirs?B.dirs.concat(n.dirs):n.dirs),n.transition&&(B.transition=n.transition),K=B,On(C),K}const Rr=e=>{let t;for(const n in e)(n==="class"||n==="style"||vn(n))&&((t||(t={}))[n]=e[n]);return t},Dr=(e,t)=>{const n={};for(const s in e)(!Rs(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Gr(e,t,n){const{props:s,children:o,component:i}=e,{props:l,children:r,patchFlag:a}=t,u=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&a>=0){if(a&1024)return!0;if(a&16)return s?To(s,l,u):!!l;if(a&8){const f=t.dynamicProps;for(let _=0;_e.__isSuspense;function Ri(e,t){t&&t.pendingBranch?W(e)?t.effects.push(...e):t.effects.push(e):Or(e)}function Dt(e,t){if(ye){let n=ye.provides;const s=ye.parent&&ye.parent.provides;s===n&&(n=ye.provides=Object.create(s)),n[e]=t}}function Ke(e,t,n=!1){const s=ye||Le;if(s){const o=s.parent==null?s.vnode.appContext&&s.vnode.appContext.provides:s.parent.provides;if(o&&e in o)return o[e];if(arguments.length>1)return n&&X(t)?t.call(s.proxy):t}}function Et(e,t){return Zn(e,null,t)}function Di(e,t){return Zn(e,null,{flush:"post"})}const Sn={};function Je(e,t,n){return Zn(e,t,n)}function Zn(e,t,{immediate:n,deep:s,flush:o,onTrack:i,onTrigger:l}=me){const r=bi()===(ye==null?void 0:ye.scope)?ye:null;let a,u=!1,f=!1;if(Pe(e)?(a=()=>e.value,u=Nn(e)):Ht(e)?(a=()=>e,s=!0):W(e)?(f=!0,u=e.some(B=>Ht(B)||Nn(B)),a=()=>e.map(B=>{if(Pe(B))return B.value;if(Ht(B))return Bt(B);if(X(B))return ht(B,r,2)})):X(e)?t?a=()=>ht(e,r,2):a=()=>{if(!(r&&r.isUnmounted))return _&&_(),Re(e,r,3,[g])}:a=ze,t&&s){const B=a;a=()=>Bt(B())}let _,g=B=>{_=m.onStop=()=>{ht(B,r,4)}},y;if(Qt)if(g=ze,t?n&&Re(t,r,3,[a(),f?[]:void 0,g]):a(),o==="sync"){const B=Oa();y=B.__watcherHandles||(B.__watcherHandles=[])}else return ze;let T=f?new Array(e.length).fill(Sn):Sn;const M=()=>{if(m.active)if(t){const B=m.run();(s||u||(f?B.some((Y,te)=>cn(Y,T[te])):cn(B,T)))&&(_&&_(),Re(t,r,3,[B,T===Sn?void 0:f&&T[0]===Sn?[]:T,g]),T=B)}else m.run()};M.allowRecurse=!!t;let K;o==="sync"?K=M:o==="post"?K=()=>Ee(M,r&&r.suspense):(M.pre=!0,r&&(M.id=r.uid),K=()=>Yn(M));const m=new zs(a,K);t?n?M():T=m.run():o==="post"?Ee(m.run.bind(m),r&&r.suspense):m.run();const C=()=>{m.stop(),r&&r.scope&&Ds(r.scope.effects,m)};return y&&y.push(C),C}function zr(e,t,n){const s=this.proxy,o=ke(e)?e.includes(".")?Gi(s,e):()=>s[e]:e.bind(s,s);let i;X(t)?i=t:(i=t.handler,n=t);const l=ye;Wt(this);const r=Zn(o,i.bind(s),n);return l?Wt(l):Vt(),r}function Gi(e,t){const n=t.split(".");return()=>{let s=e;for(let o=0;o{Bt(n,t)});else if(mi(e))for(const n in e)Bt(e[n],t);return e}function Kr(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Oe(()=>{e.isMounted=!0}),qi(()=>{e.isUnmounting=!0}),e}const Fe=[Function,Array],qr={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Fe,onEnter:Fe,onAfterEnter:Fe,onEnterCancelled:Fe,onBeforeLeave:Fe,onLeave:Fe,onAfterLeave:Fe,onLeaveCancelled:Fe,onBeforeAppear:Fe,onAppear:Fe,onAfterAppear:Fe,onAppearCancelled:Fe},setup(e,{slots:t}){const n=ns(),s=Kr();let o;return()=>{const i=t.default&&zi(t.default(),!0);if(!i||!i.length)return;let l=i[0];if(i.length>1){for(const M of i)if(M.type!==Be){l=M;break}}const r=ae(e),{mode:a}=r;if(s.isLeaving)return fs(l);const u=Vo(l);if(!u)return fs(l);const f=Ps(u,r,s,n);Ls(u,f);const _=n.subTree,g=_&&Vo(_);let y=!1;const{getTransitionKey:T}=u.type;if(T){const M=T();o===void 0?o=M:M!==o&&(o=M,y=!0)}if(g&&g.type!==Be&&(!Pt(u,g)||y)){const M=Ps(g,r,s,n);if(Ls(g,M),a==="out-in")return s.isLeaving=!0,M.afterLeave=()=>{s.isLeaving=!1,n.update.active!==!1&&n.update()},fs(l);a==="in-out"&&u.type!==Be&&(M.delayLeave=(K,m,C)=>{const B=ji(s,g);B[String(g.key)]=g,K._leaveCb=()=>{m(),K._leaveCb=void 0,delete f.delayedLeave},f.delayedLeave=C})}return l}}},Ui=qr;function ji(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function Ps(e,t,n,s){const{appear:o,mode:i,persisted:l=!1,onBeforeEnter:r,onEnter:a,onAfterEnter:u,onEnterCancelled:f,onBeforeLeave:_,onLeave:g,onAfterLeave:y,onLeaveCancelled:T,onBeforeAppear:M,onAppear:K,onAfterAppear:m,onAppearCancelled:C}=t,B=String(e.key),Y=ji(n,e),te=(N,ee)=>{N&&Re(N,s,9,ee)},he=(N,ee)=>{const J=ee[1];te(N,ee),W(N)?N.every(re=>re.length<=1)&&J():N.length<=1&&J()},oe={mode:i,persisted:l,beforeEnter(N){let ee=r;if(!n.isMounted)if(o)ee=M||r;else return;N._leaveCb&&N._leaveCb(!0);const J=Y[B];J&&Pt(e,J)&&J.el._leaveCb&&J.el._leaveCb(),te(ee,[N])},enter(N){let ee=a,J=u,re=f;if(!n.isMounted)if(o)ee=K||a,J=m||u,re=C||f;else return;let O=!1;const ne=N._enterCb=G=>{O||(O=!0,G?te(re,[N]):te(J,[N]),oe.delayedLeave&&oe.delayedLeave(),N._enterCb=void 0)};ee?he(ee,[N,ne]):ne()},leave(N,ee){const J=String(e.key);if(N._enterCb&&N._enterCb(!0),n.isUnmounting)return ee();te(_,[N]);let re=!1;const O=N._leaveCb=ne=>{re||(re=!0,ee(),ne?te(T,[N]):te(y,[N]),N._leaveCb=void 0,Y[J]===e&&delete Y[J])};Y[J]=e,g?he(g,[N,O]):O()},clone(N){return Ps(N,t,n,s)}};return oe}function fs(e){if(bn(e))return e=_t(e),e.children=null,e}function Vo(e){return bn(e)?e.children?e.children[0]:void 0:e}function Ls(e,t){e.shapeFlag&6&&e.component?Ls(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function zi(e,t=!1,n){let s=[],o=0;for(let i=0;i1)for(let i=0;i!!e.type.__asyncLoader;function Wr(e){X(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:s,delay:o=200,timeout:i,suspensible:l=!0,onError:r}=e;let a=null,u,f=0;const _=()=>(f++,a=null,g()),g=()=>{let y;return a||(y=a=t().catch(T=>{if(T=T instanceof Error?T:new Error(String(T)),r)return new Promise((M,K)=>{r(T,()=>M(_()),()=>K(T),f+1)});throw T}).then(T=>y!==a&&a?a:(T&&(T.__esModule||T[Symbol.toStringTag]==="Module")&&(T=T.default),u=T,T)))};return R({name:"AsyncComponentWrapper",__asyncLoader:g,get __asyncResolved(){return u},setup(){const y=ye;if(u)return()=>hs(u,y);const T=C=>{a=null,mn(C,y,13,!s)};if(l&&y.suspense||Qt)return g().then(C=>()=>hs(C,y)).catch(C=>(T(C),()=>s?V(s,{error:C}):null));const M=le(!1),K=le(),m=le(!!o);return o&&setTimeout(()=>{m.value=!1},o),i!=null&&setTimeout(()=>{if(!M.value&&!K.value){const C=new Error(`Async component timed out after ${i}ms.`);T(C),K.value=C}},i),g().then(()=>{M.value=!0,y.parent&&bn(y.parent.vnode)&&Yn(y.parent.update)}).catch(C=>{T(C),K.value=C}),()=>{if(M.value&&u)return hs(u,y);if(K.value&&s)return V(s,{error:K.value});if(n&&!m.value)return V(n)}}})}function hs(e,t){const{ref:n,props:s,children:o,ce:i}=t.vnode,l=V(e,s,o);return l.ref=n,l.ce=i,delete t.vnode.ce,l}const bn=e=>e.type.__isKeepAlive;function Qr(e,t){Ki(e,"a",t)}function Yr(e,t){Ki(e,"da",t)}function Ki(e,t,n=ye){const s=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(es(t,s,n),n){let o=n.parent;for(;o&&o.parent;)bn(o.parent.vnode)&&Jr(s,t,n,o),o=o.parent}}function Jr(e,t,n,s){const o=es(t,e,s,!0);gt(()=>{Ds(s[t],o)},n)}function es(e,t,n=ye,s=!1){if(n){const o=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...l)=>{if(n.isUnmounted)return;Jt(),Wt(n);const r=Re(t,n,e,l);return Vt(),Xt(),r});return s?o.unshift(i):o.push(i),i}}const ot=e=>(t,n=ye)=>(!Qt||e==="sp")&&es(e,(...s)=>t(...s),n),Xr=ot("bm"),Oe=ot("m"),Zr=ot("bu"),eo=ot("u"),qi=ot("bum"),gt=ot("um"),ea=ot("sp"),ta=ot("rtg"),na=ot("rtc");function sa(e,t=ye){es("ec",e,t)}function Qe(e,t,n,s){const o=e.dirs,i=t&&t.dirs;for(let l=0;lt(l,r,void 0,i&&i[r]));else{const l=Object.keys(e);o=new Array(l.length);for(let r=0,a=l.length;rRn(t)?!(t.type===Be||t.type===Z&&!Yi(t.children)):!0)?e:null}const Ss=e=>e?rl(e)?io(e)||e.proxy:Ss(e.parent):null,on=we(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Ss(e.parent),$root:e=>Ss(e.root),$emit:e=>e.emit,$options:e=>no(e),$forceUpdate:e=>e.f||(e.f=()=>Yn(e.update)),$nextTick:e=>e.n||(e.n=Zs.bind(e.proxy)),$watch:e=>zr.bind(e)}),ps=(e,t)=>e!==me&&!e.__isScriptSetup&&ie(e,t),oa={get({_:e},t){const{ctx:n,setupState:s,data:o,props:i,accessCache:l,type:r,appContext:a}=e;let u;if(t[0]!=="$"){const y=l[t];if(y!==void 0)switch(y){case 1:return s[t];case 2:return o[t];case 4:return n[t];case 3:return i[t]}else{if(ps(s,t))return l[t]=1,s[t];if(o!==me&&ie(o,t))return l[t]=2,o[t];if((u=e.propsOptions[0])&&ie(u,t))return l[t]=3,i[t];if(n!==me&&ie(n,t))return l[t]=4,n[t];Ts&&(l[t]=0)}}const f=on[t];let _,g;if(f)return t==="$attrs"&&Me(e,"get",t),f(e);if((_=r.__cssModules)&&(_=_[t]))return _;if(n!==me&&ie(n,t))return l[t]=4,n[t];if(g=a.config.globalProperties,ie(g,t))return g[t]},set({_:e},t,n){const{data:s,setupState:o,ctx:i}=e;return ps(o,t)?(o[t]=n,!0):s!==me&&ie(s,t)?(s[t]=n,!0):ie(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:o,propsOptions:i}},l){let r;return!!n[l]||e!==me&&ie(e,l)||ps(t,l)||(r=i[0])&&ie(r,l)||ie(s,l)||ie(on,l)||ie(o.config.globalProperties,l)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:ie(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};let Ts=!0;function ia(e){const t=no(e),n=e.proxy,s=e.ctx;Ts=!1,t.beforeCreate&&Mo(t.beforeCreate,e,"bc");const{data:o,computed:i,methods:l,watch:r,provide:a,inject:u,created:f,beforeMount:_,mounted:g,beforeUpdate:y,updated:T,activated:M,deactivated:K,beforeDestroy:m,beforeUnmount:C,destroyed:B,unmounted:Y,render:te,renderTracked:he,renderTriggered:oe,errorCaptured:N,serverPrefetch:ee,expose:J,inheritAttrs:re,components:O,directives:ne,filters:G}=t;if(u&&la(u,s,null,e.appContext.config.unwrapInjectedRef),l)for(const be in l){const pe=l[be];X(pe)&&(s[be]=pe.bind(n))}if(o){const be=o.call(n,n);ve(be)&&(e.data=Qn(be))}if(Ts=!0,i)for(const be in i){const pe=i[be],bt=X(pe)?pe.bind(n,n):X(pe.get)?pe.get.bind(n,n):ze,kn=!X(pe)&&X(pe.set)?pe.set.bind(n):ze,yt=z({get:bt,set:kn});Object.defineProperty(s,be,{enumerable:!0,configurable:!0,get:()=>yt.value,set:qe=>yt.value=qe})}if(r)for(const be in r)Ji(r[be],s,n,be);if(a){const be=X(a)?a.call(n):a;Reflect.ownKeys(be).forEach(pe=>{Dt(pe,be[pe])})}f&&Mo(f,e,"c");function de(be,pe){W(pe)?pe.forEach(bt=>be(bt.bind(n))):pe&&be(pe.bind(n))}if(de(Xr,_),de(Oe,g),de(Zr,y),de(eo,T),de(Qr,M),de(Yr,K),de(sa,N),de(na,he),de(ta,oe),de(qi,C),de(gt,Y),de(ea,ee),W(J))if(J.length){const be=e.exposed||(e.exposed={});J.forEach(pe=>{Object.defineProperty(be,pe,{get:()=>n[pe],set:bt=>n[pe]=bt})})}else e.exposed||(e.exposed={});te&&e.render===ze&&(e.render=te),re!=null&&(e.inheritAttrs=re),O&&(e.components=O),ne&&(e.directives=ne)}function la(e,t,n=ze,s=!1){W(e)&&(e=Vs(e));for(const o in e){const i=e[o];let l;ve(i)?"default"in i?l=Ke(i.from||o,i.default,!0):l=Ke(i.from||o):l=Ke(i),Pe(l)&&s?Object.defineProperty(t,o,{enumerable:!0,configurable:!0,get:()=>l.value,set:r=>l.value=r}):t[o]=l}}function Mo(e,t,n){Re(W(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Ji(e,t,n,s){const o=s.includes(".")?Gi(n,s):()=>n[s];if(ke(e)){const i=t[e];X(i)&&Je(o,i)}else if(X(e))Je(o,e.bind(n));else if(ve(e))if(W(e))e.forEach(i=>Ji(i,t,n,s));else{const i=X(e.handler)?e.handler.bind(n):t[e.handler];X(i)&&Je(o,i,e)}}function no(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:o,optionsCache:i,config:{optionMergeStrategies:l}}=e.appContext,r=i.get(t);let a;return r?a=r:!o.length&&!n&&!s?a=t:(a={},o.length&&o.forEach(u=>Fn(a,u,l,!0)),Fn(a,t,l)),ve(t)&&i.set(t,a),a}function Fn(e,t,n,s=!1){const{mixins:o,extends:i}=t;i&&Fn(e,i,n,!0),o&&o.forEach(l=>Fn(e,l,n,!0));for(const l in t)if(!(s&&l==="expose")){const r=ra[l]||n&&n[l];e[l]=r?r(e[l],t[l]):t[l]}return e}const ra={data:Ao,props:$t,emits:$t,methods:$t,computed:$t,beforeCreate:Te,created:Te,beforeMount:Te,mounted:Te,beforeUpdate:Te,updated:Te,beforeDestroy:Te,beforeUnmount:Te,destroyed:Te,unmounted:Te,activated:Te,deactivated:Te,errorCaptured:Te,serverPrefetch:Te,components:$t,directives:$t,watch:ca,provide:Ao,inject:aa};function Ao(e,t){return t?e?function(){return we(X(e)?e.call(this,this):e,X(t)?t.call(this,this):t)}:t:e}function aa(e,t){return $t(Vs(e),Vs(t))}function Vs(e){if(W(e)){const t={};for(let n=0;n0)&&!(l&16)){if(l&8){const f=e.vnode.dynamicProps;for(let _=0;_{a=!0;const[g,y]=Zi(_,t,!0);we(l,g),y&&r.push(...y)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!i&&!a)return ve(e)&&s.set(e,Ot),Ot;if(W(i))for(let f=0;f-1,y[1]=M<0||T-1||ie(y,"default"))&&r.push(_)}}}const u=[l,r];return ve(e)&&s.set(e,u),u}function Io(e){return e[0]!=="$"}function No(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:e===null?"null":""}function Bo(e,t){return No(e)===No(t)}function Oo(e,t){return W(t)?t.findIndex(n=>Bo(n,e)):X(t)&&Bo(t,e)?0:-1}const el=e=>e[0]==="_"||e==="$stable",so=e=>W(e)?e.map(Ge):[Ge(e)],fa=(e,t,n)=>{if(t._n)return t;const s=I((...o)=>so(t(...o)),n);return s._c=!1,s},tl=(e,t,n)=>{const s=e._ctx;for(const o in e){if(el(o))continue;const i=e[o];if(X(i))t[o]=fa(o,i,s);else if(i!=null){const l=so(i);t[o]=()=>l}}},nl=(e,t)=>{const n=so(t);e.slots.default=()=>n},ha=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=ae(t),In(t,"_",n)):tl(t,e.slots={})}else e.slots={},t&&nl(e,t);In(e.slots,ts,1)},pa=(e,t,n)=>{const{vnode:s,slots:o}=e;let i=!0,l=me;if(s.shapeFlag&32){const r=t._;r?n&&r===1?i=!1:(we(o,t),!n&&r===1&&delete o._):(i=!t.$stable,tl(t,o)),l=t}else t&&(nl(e,t),l={default:1});if(i)for(const r in o)!el(r)&&!(r in l)&&delete o[r]};function sl(){return{app:null,config:{isNativeTag:jl,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let _a=0;function ga(e,t){return function(s,o=null){X(s)||(s=Object.assign({},s)),o!=null&&!ve(o)&&(o=null);const i=sl(),l=new Set;let r=!1;const a=i.app={_uid:_a++,_component:s,_props:o,_container:null,_context:i,_instance:null,version:Fa,get config(){return i.config},set config(u){},use(u,...f){return l.has(u)||(u&&X(u.install)?(l.add(u),u.install(a,...f)):X(u)&&(l.add(u),u(a,...f))),a},mixin(u){return i.mixins.includes(u)||i.mixins.push(u),a},component(u,f){return f?(i.components[u]=f,a):i.components[u]},directive(u,f){return f?(i.directives[u]=f,a):i.directives[u]},mount(u,f,_){if(!r){const g=V(s,o);return g.appContext=i,f&&t?t(g,u):e(g,u,_),r=!0,a._container=u,u.__vue_app__=a,io(g.component)||g.component.proxy}},unmount(){r&&(e(null,a._container),delete a._container.__vue_app__)},provide(u,f){return i.provides[u]=f,a}};return a}}function Hn(e,t,n,s,o=!1){if(W(e)){e.forEach((g,y)=>Hn(g,t&&(W(t)?t[y]:t),n,s,o));return}if(Gt(s)&&!o)return;const i=s.shapeFlag&4?io(s.component)||s.component.proxy:s.el,l=o?null:i,{i:r,r:a}=e,u=t&&t.r,f=r.refs===me?r.refs={}:r.refs,_=r.setupState;if(u!=null&&u!==a&&(ke(u)?(f[u]=null,ie(_,u)&&(_[u]=null)):Pe(u)&&(u.value=null)),X(a))ht(a,r,12,[l,f]);else{const g=ke(a),y=Pe(a);if(g||y){const T=()=>{if(e.f){const M=g?ie(_,a)?_[a]:f[a]:a.value;o?W(M)&&Ds(M,i):W(M)?M.includes(i)||M.push(i):g?(f[a]=[i],ie(_,a)&&(_[a]=f[a])):(a.value=[i],e.k&&(f[e.k]=a.value))}else g?(f[a]=l,ie(_,a)&&(_[a]=l)):y&&(a.value=l,e.k&&(f[e.k]=l))};l?(T.id=-1,Ee(T,n)):T()}}}let rt=!1;const Tn=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",Vn=e=>e.nodeType===8;function va(e){const{mt:t,p:n,o:{patchProp:s,createText:o,nextSibling:i,parentNode:l,remove:r,insert:a,createComment:u}}=e,f=(m,C)=>{if(!C.hasChildNodes()){n(null,m,C),Bn(),C._vnode=m;return}rt=!1,_(C.firstChild,m,null,null,null),Bn(),C._vnode=m,rt&&console.error("Hydration completed but contains mismatches.")},_=(m,C,B,Y,te,he=!1)=>{const oe=Vn(m)&&m.data==="[",N=()=>M(m,C,B,Y,te,oe),{type:ee,ref:J,shapeFlag:re,patchFlag:O}=C;let ne=m.nodeType;C.el=m,O===-2&&(he=!1,C.dynamicChildren=null);let G=null;switch(ee){case qt:ne!==3?C.children===""?(a(C.el=o(""),l(m),m),G=m):G=N():(m.data!==C.children&&(rt=!0,m.data=C.children),G=i(m));break;case Be:ne!==8||oe?G=N():G=i(m);break;case Ut:if(oe&&(m=i(m),ne=m.nodeType),ne===1||ne===3){G=m;const Ae=!C.children.length;for(let de=0;de{he=he||!!C.dynamicChildren;const{type:oe,props:N,patchFlag:ee,shapeFlag:J,dirs:re}=C,O=oe==="input"&&re||oe==="option";if(O||ee!==-1){if(re&&Qe(C,null,B,"created"),N)if(O||!he||ee&48)for(const G in N)(O&&G.endsWith("value")||vn(G)&&!nn(G))&&s(m,G,null,N[G],!1,void 0,B);else N.onClick&&s(m,"onClick",null,N.onClick,!1,void 0,B);let ne;if((ne=N&&N.onVnodeBeforeMount)&&He(ne,B,C),re&&Qe(C,null,B,"beforeMount"),((ne=N&&N.onVnodeMounted)||re)&&Ri(()=>{ne&&He(ne,B,C),re&&Qe(C,null,B,"mounted")},Y),J&16&&!(N&&(N.innerHTML||N.textContent))){let G=y(m.firstChild,C,m,B,Y,te,he);for(;G;){rt=!0;const Ae=G;G=G.nextSibling,r(Ae)}}else J&8&&m.textContent!==C.children&&(rt=!0,m.textContent=C.children)}return m.nextSibling},y=(m,C,B,Y,te,he,oe)=>{oe=oe||!!C.dynamicChildren;const N=C.children,ee=N.length;for(let J=0;J{const{slotScopeIds:oe}=C;oe&&(te=te?te.concat(oe):oe);const N=l(m),ee=y(i(m),C,N,B,Y,te,he);return ee&&Vn(ee)&&ee.data==="]"?i(C.anchor=ee):(rt=!0,a(C.anchor=u("]"),N,ee),ee)},M=(m,C,B,Y,te,he)=>{if(rt=!0,C.el=null,he){const ee=K(m);for(;;){const J=i(m);if(J&&J!==ee)r(J);else break}}const oe=i(m),N=l(m);return r(m),n(null,C,N,oe,B,Y,Tn(N),te),oe},K=m=>{let C=0;for(;m;)if(m=i(m),m&&Vn(m)&&(m.data==="["&&C++,m.data==="]")){if(C===0)return i(m);C--}return m};return[f,_]}const Ee=Ri;function ma(e){return ba(e,va)}function ba(e,t){const n=Xl();n.__VUE__=!0;const{insert:s,remove:o,patchProp:i,createElement:l,createText:r,createComment:a,setText:u,setElementText:f,parentNode:_,nextSibling:g,setScopeId:y=ze,insertStaticContent:T}=e,M=(c,d,v,w=null,x=null,L=null,A=!1,P=null,E=!!d.dynamicChildren)=>{if(c===d)return;c&&!Pt(c,d)&&(w=xn(c),qe(c,x,L,!0),c=null),d.patchFlag===-2&&(E=!1,d.dynamicChildren=null);const{type:$,ref:U,shapeFlag:F}=d;switch($){case qt:K(c,d,v,w);break;case Be:m(c,d,v,w);break;case Ut:c==null&&C(d,v,w,A);break;case Z:O(c,d,v,w,x,L,A,P,E);break;default:F&1?te(c,d,v,w,x,L,A,P,E):F&6?ne(c,d,v,w,x,L,A,P,E):(F&64||F&128)&&$.process(c,d,v,w,x,L,A,P,E,It)}U!=null&&x&&Hn(U,c&&c.ref,L,d||c,!d)},K=(c,d,v,w)=>{if(c==null)s(d.el=r(d.children),v,w);else{const x=d.el=c.el;d.children!==c.children&&u(x,d.children)}},m=(c,d,v,w)=>{c==null?s(d.el=a(d.children||""),v,w):d.el=c.el},C=(c,d,v,w)=>{[c.el,c.anchor]=T(c.children,d,v,w,c.el,c.anchor)},B=({el:c,anchor:d},v,w)=>{let x;for(;c&&c!==d;)x=g(c),s(c,v,w),c=x;s(d,v,w)},Y=({el:c,anchor:d})=>{let v;for(;c&&c!==d;)v=g(c),o(c),c=v;o(d)},te=(c,d,v,w,x,L,A,P,E)=>{A=A||d.type==="svg",c==null?he(d,v,w,x,L,A,P,E):ee(c,d,x,L,A,P,E)},he=(c,d,v,w,x,L,A,P)=>{let E,$;const{type:U,props:F,shapeFlag:j,transition:Q,dirs:se}=c;if(E=c.el=l(c.type,L,F&&F.is,F),j&8?f(E,c.children):j&16&&N(c.children,E,null,w,x,L&&U!=="foreignObject",A,P),se&&Qe(c,null,w,"created"),oe(E,c,c.scopeId,A,w),F){for(const fe in F)fe!=="value"&&!nn(fe)&&i(E,fe,null,F[fe],L,c.children,w,x,tt);"value"in F&&i(E,"value",null,F.value),($=F.onVnodeBeforeMount)&&He($,w,c)}se&&Qe(c,null,w,"beforeMount");const _e=(!x||x&&!x.pendingBranch)&&Q&&!Q.persisted;_e&&Q.beforeEnter(E),s(E,d,v),(($=F&&F.onVnodeMounted)||_e||se)&&Ee(()=>{$&&He($,w,c),_e&&Q.enter(E),se&&Qe(c,null,w,"mounted")},x)},oe=(c,d,v,w,x)=>{if(v&&y(c,v),w)for(let L=0;L{for(let $=E;${const P=d.el=c.el;let{patchFlag:E,dynamicChildren:$,dirs:U}=d;E|=c.patchFlag&16;const F=c.props||me,j=d.props||me;let Q;v&&kt(v,!1),(Q=j.onVnodeBeforeUpdate)&&He(Q,v,d,c),U&&Qe(d,c,v,"beforeUpdate"),v&&kt(v,!0);const se=x&&d.type!=="foreignObject";if($?J(c.dynamicChildren,$,P,v,w,se,L):A||pe(c,d,P,null,v,w,se,L,!1),E>0){if(E&16)re(P,d,F,j,v,w,x);else if(E&2&&F.class!==j.class&&i(P,"class",null,j.class,x),E&4&&i(P,"style",F.style,j.style,x),E&8){const _e=d.dynamicProps;for(let fe=0;fe<_e.length;fe++){const xe=_e[fe],De=F[xe],Nt=j[xe];(Nt!==De||xe==="value")&&i(P,xe,De,Nt,x,c.children,v,w,tt)}}E&1&&c.children!==d.children&&f(P,d.children)}else!A&&$==null&&re(P,d,F,j,v,w,x);((Q=j.onVnodeUpdated)||U)&&Ee(()=>{Q&&He(Q,v,d,c),U&&Qe(d,c,v,"updated")},w)},J=(c,d,v,w,x,L,A)=>{for(let P=0;P{if(v!==w){if(v!==me)for(const P in v)!nn(P)&&!(P in w)&&i(c,P,v[P],null,A,d.children,x,L,tt);for(const P in w){if(nn(P))continue;const E=w[P],$=v[P];E!==$&&P!=="value"&&i(c,P,$,E,A,d.children,x,L,tt)}"value"in w&&i(c,"value",v.value,w.value)}},O=(c,d,v,w,x,L,A,P,E)=>{const $=d.el=c?c.el:r(""),U=d.anchor=c?c.anchor:r("");let{patchFlag:F,dynamicChildren:j,slotScopeIds:Q}=d;Q&&(P=P?P.concat(Q):Q),c==null?(s($,v,w),s(U,v,w),N(d.children,v,U,x,L,A,P,E)):F>0&&F&64&&j&&c.dynamicChildren?(J(c.dynamicChildren,j,v,x,L,A,P),(d.key!=null||x&&d===x.subTree)&&ol(c,d,!0)):pe(c,d,v,U,x,L,A,P,E)},ne=(c,d,v,w,x,L,A,P,E)=>{d.slotScopeIds=P,c==null?d.shapeFlag&512?x.ctx.activate(d,v,w,A,E):G(d,v,w,x,L,A,E):Ae(c,d,E)},G=(c,d,v,w,x,L,A)=>{const P=c.component=Sa(c,w,x);if(bn(c)&&(P.ctx.renderer=It),Ta(P),P.asyncDep){if(x&&x.registerDep(P,de),!c.el){const E=P.subTree=V(Be);m(null,E,d,v)}return}de(P,c,d,v,x,L,A)},Ae=(c,d,v)=>{const w=d.component=c.component;if(Gr(c,d,v))if(w.asyncDep&&!w.asyncResolved){be(w,d,v);return}else w.next=d,Br(w.update),w.update();else d.el=c.el,w.vnode=d},de=(c,d,v,w,x,L,A)=>{const P=()=>{if(c.isMounted){let{next:U,bu:F,u:j,parent:Q,vnode:se}=c,_e=U,fe;kt(c,!1),U?(U.el=se.el,be(c,U,A)):U=se,F&&us(F),(fe=U.props&&U.props.onVnodeBeforeUpdate)&&He(fe,Q,U,se),kt(c,!0);const xe=ds(c),De=c.subTree;c.subTree=xe,M(De,xe,_(De.el),xn(De),c,x,L),U.el=xe.el,_e===null&&Ur(c,xe.el),j&&Ee(j,x),(fe=U.props&&U.props.onVnodeUpdated)&&Ee(()=>He(fe,Q,U,se),x)}else{let U;const{el:F,props:j}=d,{bm:Q,m:se,parent:_e}=c,fe=Gt(d);if(kt(c,!1),Q&&us(Q),!fe&&(U=j&&j.onVnodeBeforeMount)&&He(U,_e,d),kt(c,!0),F&&as){const xe=()=>{c.subTree=ds(c),as(F,c.subTree,c,x,null)};fe?d.type.__asyncLoader().then(()=>!c.isUnmounted&&xe()):xe()}else{const xe=c.subTree=ds(c);M(null,xe,v,w,c,x,L),d.el=xe.el}if(se&&Ee(se,x),!fe&&(U=j&&j.onVnodeMounted)){const xe=d;Ee(()=>He(U,_e,xe),x)}(d.shapeFlag&256||_e&&Gt(_e.vnode)&&_e.vnode.shapeFlag&256)&&c.a&&Ee(c.a,x),c.isMounted=!0,d=v=w=null}},E=c.effect=new zs(P,()=>Yn($),c.scope),$=c.update=()=>E.run();$.id=c.uid,kt(c,!0),$()},be=(c,d,v)=>{d.component=c;const w=c.vnode.props;c.vnode=d,c.next=null,da(c,d.props,w,v),pa(c,d.children,v),Jt(),So(),Xt()},pe=(c,d,v,w,x,L,A,P,E=!1)=>{const $=c&&c.children,U=c?c.shapeFlag:0,F=d.children,{patchFlag:j,shapeFlag:Q}=d;if(j>0){if(j&128){kn($,F,v,w,x,L,A,P,E);return}else if(j&256){bt($,F,v,w,x,L,A,P,E);return}}Q&8?(U&16&&tt($,x,L),F!==$&&f(v,F)):U&16?Q&16?kn($,F,v,w,x,L,A,P,E):tt($,x,L,!0):(U&8&&f(v,""),Q&16&&N(F,v,w,x,L,A,P,E))},bt=(c,d,v,w,x,L,A,P,E)=>{c=c||Ot,d=d||Ot;const $=c.length,U=d.length,F=Math.min($,U);let j;for(j=0;jU?tt(c,x,L,!0,!1,F):N(d,v,w,x,L,A,P,E,F)},kn=(c,d,v,w,x,L,A,P,E)=>{let $=0;const U=d.length;let F=c.length-1,j=U-1;for(;$<=F&&$<=j;){const Q=c[$],se=d[$]=E?ut(d[$]):Ge(d[$]);if(Pt(Q,se))M(Q,se,v,null,x,L,A,P,E);else break;$++}for(;$<=F&&$<=j;){const Q=c[F],se=d[j]=E?ut(d[j]):Ge(d[j]);if(Pt(Q,se))M(Q,se,v,null,x,L,A,P,E);else break;F--,j--}if($>F){if($<=j){const Q=j+1,se=Qj)for(;$<=F;)qe(c[$],x,L,!0),$++;else{const Q=$,se=$,_e=new Map;for($=se;$<=j;$++){const Ie=d[$]=E?ut(d[$]):Ge(d[$]);Ie.key!=null&&_e.set(Ie.key,$)}let fe,xe=0;const De=j-se+1;let Nt=!1,vo=0;const Zt=new Array(De);for($=0;$=De){qe(Ie,x,L,!0);continue}let We;if(Ie.key!=null)We=_e.get(Ie.key);else for(fe=se;fe<=j;fe++)if(Zt[fe-se]===0&&Pt(Ie,d[fe])){We=fe;break}We===void 0?qe(Ie,x,L,!0):(Zt[We-se]=$+1,We>=vo?vo=We:Nt=!0,M(Ie,d[We],v,null,x,L,A,P,E),xe++)}const mo=Nt?ya(Zt):Ot;for(fe=mo.length-1,$=De-1;$>=0;$--){const Ie=se+$,We=d[Ie],bo=Ie+1{const{el:L,type:A,transition:P,children:E,shapeFlag:$}=c;if($&6){yt(c.component.subTree,d,v,w);return}if($&128){c.suspense.move(d,v,w);return}if($&64){A.move(c,d,v,It);return}if(A===Z){s(L,d,v);for(let F=0;FP.enter(L),x);else{const{leave:F,delayLeave:j,afterLeave:Q}=P,se=()=>s(L,d,v),_e=()=>{F(L,()=>{se(),Q&&Q()})};j?j(L,se,_e):_e()}else s(L,d,v)},qe=(c,d,v,w=!1,x=!1)=>{const{type:L,props:A,ref:P,children:E,dynamicChildren:$,shapeFlag:U,patchFlag:F,dirs:j}=c;if(P!=null&&Hn(P,null,v,c,!0),U&256){d.ctx.deactivate(c);return}const Q=U&1&&j,se=!Gt(c);let _e;if(se&&(_e=A&&A.onVnodeBeforeUnmount)&&He(_e,d,c),U&6)Ol(c.component,v,w);else{if(U&128){c.suspense.unmount(v,w);return}Q&&Qe(c,null,d,"beforeUnmount"),U&64?c.type.remove(c,d,v,x,It,w):$&&(L!==Z||F>0&&F&64)?tt($,d,v,!1,!0):(L===Z&&F&384||!x&&U&16)&&tt(E,d,v),w&&_o(c)}(se&&(_e=A&&A.onVnodeUnmounted)||Q)&&Ee(()=>{_e&&He(_e,d,c),Q&&Qe(c,null,d,"unmounted")},v)},_o=c=>{const{type:d,el:v,anchor:w,transition:x}=c;if(d===Z){Bl(v,w);return}if(d===Ut){Y(c);return}const L=()=>{o(v),x&&!x.persisted&&x.afterLeave&&x.afterLeave()};if(c.shapeFlag&1&&x&&!x.persisted){const{leave:A,delayLeave:P}=x,E=()=>A(v,L);P?P(c.el,L,E):E()}else L()},Bl=(c,d)=>{let v;for(;c!==d;)v=g(c),o(c),c=v;o(d)},Ol=(c,d,v)=>{const{bum:w,scope:x,update:L,subTree:A,um:P}=c;w&&us(w),x.stop(),L&&(L.active=!1,qe(A,c,d,v)),P&&Ee(P,d),Ee(()=>{c.isUnmounted=!0},d),d&&d.pendingBranch&&!d.isUnmounted&&c.asyncDep&&!c.asyncResolved&&c.suspenseId===d.pendingId&&(d.deps--,d.deps===0&&d.resolve())},tt=(c,d,v,w=!1,x=!1,L=0)=>{for(let A=L;Ac.shapeFlag&6?xn(c.component.subTree):c.shapeFlag&128?c.suspense.next():g(c.anchor||c.el),go=(c,d,v)=>{c==null?d._vnode&&qe(d._vnode,null,null,!0):M(d._vnode||null,c,d,null,null,null,v),So(),Bn(),d._vnode=c},It={p:M,um:qe,m:yt,r:_o,mt:G,mc:N,pc:pe,pbc:J,n:xn,o:e};let rs,as;return t&&([rs,as]=t(It)),{render:go,hydrate:rs,createApp:ga(go,rs)}}function kt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function ol(e,t,n=!1){const s=e.children,o=t.children;if(W(s)&&W(o))for(let i=0;i>1,e[n[r]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,l=n[i-1];i-- >0;)n[i]=l,l=t[l];return n}const ka=e=>e.__isTeleport,Z=Symbol(void 0),qt=Symbol(void 0),Be=Symbol(void 0),Ut=Symbol(void 0),ln=[];let je=null;function h(e=!1){ln.push(je=e?null:[])}function xa(){ln.pop(),je=ln[ln.length-1]||null}let pn=1;function Fo(e){pn+=e}function il(e){return e.dynamicChildren=pn>0?je||Ot:null,xa(),pn>0&&je&&je.push(e),e}function b(e,t,n,s,o,i){return il(k(e,t,n,s,o,i,!0))}function q(e,t,n,s,o){return il(V(e,t,n,s,o,!0))}function Rn(e){return e?e.__v_isVNode===!0:!1}function Pt(e,t){return e.type===t.type&&e.key===t.key}const ts="__vInternal",ll=({key:e})=>e??null,Mn=({ref:e,ref_key:t,ref_for:n})=>e!=null?ke(e)||Pe(e)||X(e)?{i:Le,r:e,k:t,f:!!n}:e:null;function k(e,t=null,n=null,s=0,o=null,i=e===Z?0:1,l=!1,r=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ll(t),ref:t&&Mn(t),scopeId:Xn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:Le};return r?(oo(a,n),i&128&&e.normalize(a)):n&&(a.shapeFlag|=ke(n)?8:16),pn>0&&!l&&je&&(a.patchFlag>0||i&6)&&a.patchFlag!==32&&je.push(a),a}const V=wa;function wa(e,t=null,n=null,s=0,o=null,i=!1){if((!e||e===Wi)&&(e=Be),Rn(e)){const r=_t(e,t,!0);return n&&oo(r,n),pn>0&&!i&&je&&(r.shapeFlag&6?je[je.indexOf(e)]=r:je.push(r)),r.patchFlag|=-2,r}if(Aa(e)&&(e=e.__vccOpts),t){t=$a(t);let{class:r,style:a}=t;r&&!ke(r)&&(t.class=ge(r)),ve(a)&&(Vi(a)&&!W(a)&&(a=we({},a)),t.style=Hs(a))}const l=ke(e)?1:jr(e)?128:ka(e)?64:ve(e)?4:X(e)?2:0;return k(e,t,n,s,o,l,i,!0)}function $a(e){return e?Vi(e)||ts in e?we({},e):e:null}function _t(e,t,n=!1){const{props:s,ref:o,patchFlag:i,children:l}=e,r=t?An(s||{},t):s;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:r,key:r&&ll(r),ref:t&&t.ref?n&&o?W(o)?o.concat(Mn(t)):[o,Mn(t)]:Mn(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Z?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&_t(e.ssContent),ssFallback:e.ssFallback&&_t(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function Se(e=" ",t=0){return V(qt,null,e,t)}function Ca(e,t){const n=V(Ut,null,e);return n.staticCount=t,n}function D(e="",t=!1){return t?(h(),q(Be,null,e)):V(Be,null,e)}function Ge(e){return e==null||typeof e=="boolean"?V(Be):W(e)?V(Z,null,e.slice()):typeof e=="object"?ut(e):V(qt,null,String(e))}function ut(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:_t(e)}function oo(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(W(t))n=16;else if(typeof t=="object")if(s&65){const o=t.default;o&&(o._c&&(o._d=!1),oo(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!(ts in t)?t._ctx=Le:o===3&&Le&&(Le.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else X(t)?(t={default:t,_ctx:Le},n=32):(t=String(t),s&64?(n=16,t=[Se(t)]):n=8);e.children=t,e.shapeFlag|=n}function An(...e){const t={};for(let n=0;nye||Le,Wt=e=>{ye=e,e.scope.on()},Vt=()=>{ye&&ye.scope.off(),ye=null};function rl(e){return e.vnode.shapeFlag&4}let Qt=!1;function Ta(e,t=!1){Qt=t;const{props:n,children:s}=e.vnode,o=rl(e);ua(e,n,o,t),ha(e,s);const i=o?Va(e,t):void 0;return Qt=!1,i}function Va(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=sn(new Proxy(e.ctx,oa));const{setup:s}=n;if(s){const o=e.setupContext=s.length>1?cl(e):null;Wt(e),Jt();const i=ht(s,e,0,[e.props,o]);if(Xt(),Vt(),gi(i)){if(i.then(Vt,Vt),t)return i.then(l=>{Ho(e,l,t)}).catch(l=>{mn(l,e,0)});e.asyncDep=i}else Ho(e,i,t)}else al(e,t)}function Ho(e,t,n){X(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ve(t)&&(e.setupState=Ii(t)),al(e,n)}let Ro;function al(e,t,n){const s=e.type;if(!e.render){if(!t&&Ro&&!s.render){const o=s.template||no(e).template;if(o){const{isCustomElement:i,compilerOptions:l}=e.appContext.config,{delimiters:r,compilerOptions:a}=s,u=we(we({isCustomElement:i,delimiters:r},l),a);s.render=Ro(o,u)}}e.render=s.render||ze}Wt(e),Jt(),ia(e),Xt(),Vt()}function Ea(e){return new Proxy(e.attrs,{get(t,n){return Me(e,"get","$attrs"),t[n]}})}function cl(e){const t=s=>{e.exposed=s||{}};let n;return{get attrs(){return n||(n=Ea(e))},slots:e.slots,emit:e.emit,expose:t}}function io(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Ii(sn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in on)return on[n](e)},has(t,n){return n in t||n in on}}))}function Ma(e,t=!0){return X(e)?e.displayName||e.name:e.name||t&&e.__name}function Aa(e){return X(e)&&"__vccOpts"in e}const z=(e,t)=>Ar(e,t,Qt);function Ia(){return Na().slots}function Na(){const e=ns();return e.setupContext||(e.setupContext=cl(e))}function Dn(e,t,n){const s=arguments.length;return s===2?ve(t)&&!W(t)?Rn(t)?V(e,null,[t]):V(e,t):V(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&Rn(n)&&(n=[n]),V(e,t,n))}const Ba=Symbol(""),Oa=()=>Ke(Ba),Fa="3.2.47",Ha="http://www.w3.org/2000/svg",Lt=typeof document<"u"?document:null,Do=Lt&&Lt.createElement("template"),Ra={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const o=t?Lt.createElementNS(Ha,e):Lt.createElement(e,n?{is:n}:void 0);return e==="select"&&s&&s.multiple!=null&&o.setAttribute("multiple",s.multiple),o},createText:e=>Lt.createTextNode(e),createComment:e=>Lt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Lt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,o,i){const l=n?n.previousSibling:t.lastChild;if(o&&(o===i||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===i||!(o=o.nextSibling)););else{Do.innerHTML=s?`${e}`:e;const r=Do.content;if(s){const a=r.firstChild;for(;a.firstChild;)r.appendChild(a.firstChild);r.removeChild(a)}t.insertBefore(r,n)}return[l?l.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function Da(e,t,n){const s=e._vtc;s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function Ga(e,t,n){const s=e.style,o=ke(n);if(n&&!o){if(t&&!ke(t))for(const i in t)n[i]==null&&Ms(s,i,"");for(const i in n)Ms(s,i,n[i])}else{const i=s.display;o?t!==n&&(s.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(s.display=i)}}const Go=/\s*!important$/;function Ms(e,t,n){if(W(n))n.forEach(s=>Ms(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Ua(e,t);Go.test(n)?e.setProperty(Yt(s),n.replace(Go,""),"important"):e[s]=n}}const Uo=["Webkit","Moz","ms"],_s={};function Ua(e,t){const n=_s[t];if(n)return n;let s=Xe(t);if(s!=="filter"&&s in e)return _s[t]=s;s=qn(s);for(let o=0;ogs||(Ya.then(()=>gs=0),gs=Date.now());function Xa(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Re(Za(s,n.value),t,5,[s])};return n.value=e,n.attached=Ja(),n}function Za(e,t){if(W(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>o=>!o._stopped&&s&&s(o))}else return t}const Ko=/^on[a-z]/,ec=(e,t,n,s,o=!1,i,l,r,a)=>{t==="class"?Da(e,s,o):t==="style"?Ga(e,n,s):vn(t)?Rs(t)||Wa(e,t,n,s,l):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):tc(e,t,s,o))?za(e,t,s,i,l,r,a):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),ja(e,t,s,o))};function tc(e,t,n,s){return s?!!(t==="innerHTML"||t==="textContent"||t in e&&Ko.test(t)&&X(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||Ko.test(t)&&ke(n)?!1:t in e}function nc(e){const t=ns();if(!t)return;const n=t.ut=(o=e(t.proxy))=>{Array.from(document.querySelectorAll(`[data-v-owner="${t.uid}"]`)).forEach(i=>Is(i,o))},s=()=>{const o=e(t.proxy);As(t.subTree,o),n(o)};Di(s),Oe(()=>{const o=new MutationObserver(s);o.observe(t.subTree.el.parentNode,{childList:!0}),gt(()=>o.disconnect())})}function As(e,t){if(e.shapeFlag&128){const n=e.suspense;e=n.activeBranch,n.pendingBranch&&!n.isHydrating&&n.effects.push(()=>{As(n.activeBranch,t)})}for(;e.component;)e=e.component.subTree;if(e.shapeFlag&1&&e.el)Is(e.el,t);else if(e.type===Z)e.children.forEach(n=>As(n,t));else if(e.type===Ut){let{el:n,anchor:s}=e;for(;n&&(Is(n,t),n!==s);)n=n.nextSibling}}function Is(e,t){if(e.nodeType===1){const n=e.style;for(const s in t)n.setProperty(`--${s}`,t[s])}}const at="transition",en="animation",ss=(e,{slots:t})=>Dn(Ui,sc(e),t);ss.displayName="Transition";const ul={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};ss.props=we({},Ui.props,ul);const xt=(e,t=[])=>{W(e)?e.forEach(n=>n(...t)):e&&e(...t)},qo=e=>e?W(e)?e.some(t=>t.length>1):e.length>1:!1;function sc(e){const t={};for(const O in e)O in ul||(t[O]=e[O]);if(e.css===!1)return t;const{name:n="v",type:s,duration:o,enterFromClass:i=`${n}-enter-from`,enterActiveClass:l=`${n}-enter-active`,enterToClass:r=`${n}-enter-to`,appearFromClass:a=i,appearActiveClass:u=l,appearToClass:f=r,leaveFromClass:_=`${n}-leave-from`,leaveActiveClass:g=`${n}-leave-active`,leaveToClass:y=`${n}-leave-to`}=e,T=oc(o),M=T&&T[0],K=T&&T[1],{onBeforeEnter:m,onEnter:C,onEnterCancelled:B,onLeave:Y,onLeaveCancelled:te,onBeforeAppear:he=m,onAppear:oe=C,onAppearCancelled:N=B}=t,ee=(O,ne,G)=>{wt(O,ne?f:r),wt(O,ne?u:l),G&&G()},J=(O,ne)=>{O._isLeaving=!1,wt(O,_),wt(O,y),wt(O,g),ne&&ne()},re=O=>(ne,G)=>{const Ae=O?oe:C,de=()=>ee(ne,O,G);xt(Ae,[ne,de]),Wo(()=>{wt(ne,O?a:i),ct(ne,O?f:r),qo(Ae)||Qo(ne,s,M,de)})};return we(t,{onBeforeEnter(O){xt(m,[O]),ct(O,i),ct(O,l)},onBeforeAppear(O){xt(he,[O]),ct(O,a),ct(O,u)},onEnter:re(!1),onAppear:re(!0),onLeave(O,ne){O._isLeaving=!0;const G=()=>J(O,ne);ct(O,_),rc(),ct(O,g),Wo(()=>{O._isLeaving&&(wt(O,_),ct(O,y),qo(Y)||Qo(O,s,K,G))}),xt(Y,[O,G])},onEnterCancelled(O){ee(O,!1),xt(B,[O])},onAppearCancelled(O){ee(O,!0),xt(N,[O])},onLeaveCancelled(O){J(O),xt(te,[O])}})}function oc(e){if(e==null)return null;if(ve(e))return[vs(e.enter),vs(e.leave)];{const t=vs(e);return[t,t]}}function vs(e){return Jl(e)}function ct(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e._vtc||(e._vtc=new Set)).add(t)}function wt(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function Wo(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let ic=0;function Qo(e,t,n,s){const o=e._endId=++ic,i=()=>{o===e._endId&&s()};if(n)return setTimeout(i,n);const{type:l,timeout:r,propCount:a}=lc(e,t);if(!l)return s();const u=l+"end";let f=0;const _=()=>{e.removeEventListener(u,g),i()},g=y=>{y.target===e&&++f>=a&&_()};setTimeout(()=>{f(n[T]||"").split(", "),o=s(`${at}Delay`),i=s(`${at}Duration`),l=Yo(o,i),r=s(`${en}Delay`),a=s(`${en}Duration`),u=Yo(r,a);let f=null,_=0,g=0;t===at?l>0&&(f=at,_=l,g=i.length):t===en?u>0&&(f=en,_=u,g=a.length):(_=Math.max(l,u),f=_>0?l>u?at:en:null,g=f?f===at?i.length:a.length:0);const y=f===at&&/\b(transform|all)(,|$)/.test(s(`${at}Property`).toString());return{type:f,timeout:_,propCount:g,hasTransform:y}}function Yo(e,t){for(;e.lengthJo(n)+Jo(e[s])))}function Jo(e){return Number(e.slice(0,-1).replace(",","."))*1e3}function rc(){return document.body.offsetHeight}const ac=["ctrl","shift","alt","meta"],cc={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>ac.some(n=>e[`${n}Key`]&&!t.includes(n))},uc=(e,t)=>(n,...s)=>{for(let o=0;o{const t=fc().createApp(...e),{mount:n}=t;return t.mount=s=>{const o=pc(s);if(o)return n(o,!0,o instanceof SVGElement)},t};function pc(e){return ke(e)?document.querySelector(e):e}const H=(e,t)=>{const n=e.__vccOpts||e;for(const[s,o]of t)n[s]=o;return n},_c="modulepreload",gc=function(e){return"/static-blog/"+e},Zo={},dl=function(t,n,s){if(!n||n.length===0)return t();const o=document.getElementsByTagName("link");return Promise.all(n.map(i=>{if(i=gc(i),i in Zo)return;Zo[i]=!0;const l=i.endsWith(".css"),r=l?'[rel="stylesheet"]':"";if(!!s)for(let f=o.length-1;f>=0;f--){const _=o[f];if(_.href===i&&(!l||_.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${i}"]${r}`))return;const u=document.createElement("link");if(u.rel=l?"stylesheet":_c,l||(u.as="script",u.crossOrigin=""),u.href=i,document.head.appendChild(u),l)return new Promise((f,_)=>{u.addEventListener("load",f),u.addEventListener("error",()=>_(new Error(`Unable to preload CSS for ${i}`)))})})).then(()=>t())};const vc=R({__name:"VPBadge",props:{text:null,type:null},setup(e){return(t,n)=>(h(),b("span",{class:ge(["VPBadge",e.type??"tip"])},[S(t.$slots,"default",{},()=>[Se(ce(e.text),1)],!0)],2))}});const mc=H(vc,[["__scopeId","data-v-9ecb65e4"]]),bc=JSON.parse('{"lang":"en-US","dir":"ltr","title":"mx52jing","description":"mx52jing的博客","base":"/static-blog/","head":[],"appearance":true,"themeConfig":{"siteTitle":"mx52jing","smoothScroll":true,"nav":[{"text":"首页","link":"/"},{"text":"随手一记","link":"/hand-notes/JavaScript/数字四舍五入"},{"text":"知识沉淀","link":"/knowledge-deposition/前端工程化/Babel/Babel基础"},{"text":"算法","link":"/algorithm/LeetCode刷题/1-两数之和"},{"text":"收藏夹","link":"/favorites/CSS/"}],"sidebar":{"/hand-notes/":[{"text":"JavaScript","collapsible":false,"collapsed":false,"items":[{"text":"数字四舍五入","link":"/hand-notes/JavaScript/数字四舍五入"},{"text":"根据生日计算年龄","link":"/hand-notes/JavaScript/根据生日计算年龄"},{"text":"控制并发执行函数","link":"/hand-notes/JavaScript/控制并发执行函数"},{"text":"随机数的应用","link":"/hand-notes/JavaScript/随机数的应用"},{"text":"判断字母大小写","link":"/hand-notes/JavaScript/判断字母大小写"}]},{"text":"React","collapsible":false,"collapsed":false,"items":[{"text":"ProComponents","collapsible":false,"collapsed":false,"items":[{"text":"ProTable","link":"/hand-notes/React/ProComponents/ProTable"}]}]},{"text":"Chart","collapsible":false,"collapsed":false,"items":[{"text":"AntVF2","collapsible":false,"collapsed":false,"items":[{"text":"使用小记","link":"/hand-notes/Chart/AntVF2/使用小记"}]}]},{"text":"CSS","collapsible":true,"collapsed":false,"items":[{"text":"CSS实现文字渐变","link":"/hand-notes/CSS/CSS实现文字渐变"},{"text":"CSS实现突出不同颜色的圆角","link":"/hand-notes/CSS/CSS实现突出不同颜色的圆角"},{"text":"CSS计数器-counter","link":"/hand-notes/CSS/CSS计数器-counter"},{"text":"CSS模拟数字loading","link":"/hand-notes/CSS/CSS模拟数字loading"},{"text":"实现高度过渡","link":"/hand-notes/CSS/实现高度过渡"},{"text":"CSS实现类似微信头像效果","link":"/hand-notes/CSS/CSS实现类似微信头像效果"},{"text":"虚线边框","link":"/hand-notes/CSS/虚线边框"},{"text":"图片加载出错样式设置","link":"/hand-notes/CSS/图片加载出错样式设置"}]},{"text":"Sass","collapsible":false,"collapsed":false,"items":[{"text":"sass小技巧","link":"/hand-notes/Sass/sass小技巧"},{"text":"通过mixin简化响应式代码","link":"/hand-notes/Sass/通过mixin简化响应式代码"},{"text":"sass实现星空效果","link":"/hand-notes/Sass/sass实现星空效果"},{"text":"小球交互loading","link":"/hand-notes/Sass/小球交互loading"}]},{"text":"Canvas","collapsible":false,"collapsed":false,"items":[{"text":"绘制图片不清晰问题","link":"/hand-notes/Canvas/绘制图片不清晰问题"}]},{"text":"Linux","collapsible":false,"collapsed":false,"items":[{"text":"Bash实用方法","link":"/hand-notes/Linux/practice-method"},{"text":"图片压缩和格式转换","link":"/hand-notes/Linux/图片压缩和格式转换"},{"text":"计算升级版本号","link":"/hand-notes/Linux/计算升级版本号"},{"text":"文件压缩","link":"/hand-notes/Linux/文件压缩"},{"text":"用户操作相关","link":"/hand-notes/Linux/用户操作相关"},{"text":"权限相关","link":"/hand-notes/Linux/权限相关"}]},{"text":"Mac","collapsible":false,"collapsed":false,"items":[{"text":"环境初始化","link":"/hand-notes/Mac/init"},{"text":"使用小记","link":"/hand-notes/Mac/frequently-commands"},{"text":"快捷运行自定义shell脚本","link":"/hand-notes/Mac/快捷运行自定义shell脚本"}]},{"text":"Charles","collapsible":false,"collapsed":false,"items":[{"text":"抓包配置","link":"/hand-notes/Charles/抓包配置"},{"text":"修改请求或响应","link":"/hand-notes/Charles/修改请求或响应"}]},{"text":"Git","collapsible":false,"collapsed":false,"items":[{"text":"Mac环境下和Windows环境下Git换行结尾冲突","link":"/hand-notes/Git/Mac环境下和Windows环境下Git换行结尾冲突"}]}],"/knowledge-deposition/":[{"text":"前端工程化","collapsible":false,"collapsed":false,"items":[{"text":"Babel","collapsible":false,"collapsed":false,"items":[{"text":"Babel基础","link":"/knowledge-deposition/前端工程化/Babel/Babel基础"}]},{"text":"Vite","collapsible":false,"collapsed":false,"items":[{"text":"初体验","link":"/knowledge-deposition/前端工程化/Vite/初体验"},{"text":"区分不同环境","link":"/knowledge-deposition/前端工程化/Vite/区分不同环境"},{"text":"处理样式","link":"/knowledge-deposition/前端工程化/Vite/处理样式"},{"text":"处理静态资源","link":"/knowledge-deposition/前端工程化/Vite/处理静态资源"},{"text":"依赖预构建","link":"/knowledge-deposition/前端工程化/Vite/依赖预构建"},{"text":"esbuild相关","link":"/knowledge-deposition/前端工程化/Vite/esbuild相关"},{"text":"Rollup的插件机制","link":"/knowledge-deposition/前端工程化/Vite/Rollup的插件机制"},{"text":"Vite插件机制","link":"/knowledge-deposition/前端工程化/Vite/Vite插件机制"}]}]},{"text":"Docker","collapsible":false,"collapsed":false,"items":[{"text":"Docker基础知识","link":"/knowledge-deposition/Docker/Docker基础知识"},{"text":"Dockerfile","link":"/knowledge-deposition/Docker/Dockerfile"}]},{"text":"MySQL","collapsible":false,"collapsed":false,"items":[{"text":"基础","link":"/knowledge-deposition/MySQL/基础知识"},{"text":"SQL","link":"/knowledge-deposition/MySQL/SQL"},{"text":"数据操作和查询","link":"/knowledge-deposition/MySQL/数据操作和查询"},{"text":"函数","link":"/knowledge-deposition/MySQL/函数"},{"text":"分组和子查询","link":"/knowledge-deposition/MySQL/分组和子查询"},{"text":"表连接","link":"/knowledge-deposition/MySQL/表连接"}]},{"text":"SSH","collapsible":false,"collapsed":false,"items":[{"text":"SSH基础","link":"/knowledge-deposition/SSH/ssh-base"}]},{"text":"Linux","collapsible":false,"collapsed":false,"items":[{"text":"Bash基础知识","link":"/knowledge-deposition/Linux/Bash基础知识"}]},{"text":"GoLang","collapsible":false,"collapsed":false,"items":[{"text":"基础知识","collapsible":false,"collapsed":true,"items":[{"text":"环境搭建","link":"/knowledge-deposition/GoLang/基础知识/环境搭建"},{"text":"fmt格式输出含义","link":"/knowledge-deposition/GoLang/基础知识/fmt输出含义"},{"text":"变量常量","link":"/knowledge-deposition/GoLang/基础知识/变量常量"},{"text":"流程控制","link":"/knowledge-deposition/GoLang/基础知识/流程控制"},{"text":"基础数据类型","link":"/knowledge-deposition/GoLang/基础知识/基础数据类型"},{"text":"数组、切片、Map","link":"/knowledge-deposition/GoLang/基础知识/数组、切片、Map"},{"text":"strings包","link":"/knowledge-deposition/GoLang/基础知识/strings包"},{"text":"函数","link":"/knowledge-deposition/GoLang/基础知识/函数"},{"text":"指针","link":"/knowledge-deposition/GoLang/基础知识/指针"},{"text":"结构体","link":"/knowledge-deposition/GoLang/基础知识/结构体"},{"text":"接口","link":"/knowledge-deposition/GoLang/基础知识/接口"},{"text":"协程","link":"/knowledge-deposition/GoLang/基础知识/协程"},{"text":"协程安全","link":"/knowledge-deposition/GoLang/基础知识/协程安全"},{"text":"通道channel","link":"/knowledge-deposition/GoLang/基础知识/通道channel"},{"text":"Select","link":"/knowledge-deposition/GoLang/基础知识/Select"},{"text":"time包","link":"/knowledge-deposition/GoLang/基础知识/time包"},{"text":"url包","link":"/knowledge-deposition/GoLang/基础知识/url包"},{"text":"json序列化","link":"/knowledge-deposition/GoLang/基础知识/json序列化"},{"text":"Context","link":"/knowledge-deposition/GoLang/基础知识/Context"},{"text":"文件操作","collapsible":false,"collapsed":true,"link":"/knowledge-deposition/GoLang/基础知识/文件操作/","items":[{"text":"读文件","link":"/knowledge-deposition/GoLang/基础知识/文件操作/读文件"},{"text":"写文件","link":"/knowledge-deposition/GoLang/基础知识/文件操作/写文件"},{"text":"文件复制","link":"/knowledge-deposition/GoLang/基础知识/文件操作/文件复制"},{"text":"目录操作","link":"/knowledge-deposition/GoLang/基础知识/文件操作/目录操作"},{"text":"读取配置文件","link":"/knowledge-deposition/GoLang/基础知识/文件操作/读取配置文件"},{"text":"并发下载远程文件","link":"/knowledge-deposition/GoLang/基础知识/文件操作/并发下载远程文件"}]},{"text":"网络","collapsible":false,"collapsed":true,"items":[{"text":"TCP","link":"/knowledge-deposition/GoLang/基础知识/网络/TCP"},{"text":"HTTP","link":"/knowledge-deposition/GoLang/基础知识/网络/HTTP"},{"text":"RPC","link":"/knowledge-deposition/GoLang/基础知识/网络/RPC"}]},{"text":"Test","link":"/knowledge-deposition/GoLang/基础知识/Test"}]},{"text":"Gin","collapsible":false,"collapsed":true,"items":[{"text":"hello-world","link":"/knowledge-deposition/GoLang/Gin/hello-world"},{"text":"响应数据","link":"/knowledge-deposition/GoLang/Gin/响应数据"},{"text":"请求参数","link":"/knowledge-deposition/GoLang/Gin/请求参数"},{"text":"bind绑定器","link":"/knowledge-deposition/GoLang/Gin/bind绑定器"},{"text":"请求头和响应头","link":"/knowledge-deposition/GoLang/Gin/请求头和响应头"},{"text":"上传和下载文件","link":"/knowledge-deposition/GoLang/Gin/上传和下载文件"},{"text":"路由分组","link":"/knowledge-deposition/GoLang/Gin/路由分组"},{"text":"中间件","link":"/knowledge-deposition/GoLang/Gin/中间件"},{"text":"支持跨域","link":"/knowledge-deposition/GoLang/Gin/支持跨域"},{"text":"集成Swagger","link":"/knowledge-deposition/GoLang/Gin/集成Swagger"}]},{"text":"Gorm","collapsible":false,"collapsed":true,"items":[{"text":"连接数据库","link":"/knowledge-deposition/GoLang/Gorm/连接数据库"},{"text":"模型定义","link":"/knowledge-deposition/GoLang/Gorm/模型定义"},{"text":"Create","link":"/knowledge-deposition/GoLang/Gorm/Create"},{"text":"Query","link":"/knowledge-deposition/GoLang/Gorm/Query"},{"text":"AdvancedQuery","link":"/knowledge-deposition/GoLang/Gorm/AdvancedQuery"},{"text":"Update","link":"/knowledge-deposition/GoLang/Gorm/Update"},{"text":"Delete","link":"/knowledge-deposition/GoLang/Gorm/Delete"},{"text":"关联之一对一","link":"/knowledge-deposition/GoLang/Gorm/关联之一对一"},{"text":"关联之一对多","link":"/knowledge-deposition/GoLang/Gorm/关联之一对多"},{"text":"关联之多对多","link":"/knowledge-deposition/GoLang/Gorm/关联之多对多"},{"text":"事务","link":"/knowledge-deposition/GoLang/Gorm/事务"},{"text":"自定义数据类型","link":"/knowledge-deposition/GoLang/Gorm/自定义数据类型"}]},{"text":"Logger","collapsible":false,"collapsed":true,"items":[{"text":"Logrus","collapsible":false,"collapsed":true,"items":[{"text":"基础用法","link":"/knowledge-deposition/GoLang/Logger/Logrus/基础用法"},{"text":"Hook","link":"/knowledge-deposition/GoLang/Logger/Logrus/Hook"},{"text":"日志分割","link":"/knowledge-deposition/GoLang/Logger/Logrus/日志分割"}]},{"text":"Zap","collapsible":false,"collapsed":true,"items":[{"text":"zap使用","link":"/knowledge-deposition/GoLang/Logger/Zap/zap使用"}]}]},{"text":"Crawler","collapsible":false,"collapsed":true,"items":[{"text":"HTTP请求方法","link":"/knowledge-deposition/GoLang/Crawler/HTTP请求方法"}]},{"text":"加密","collapsible":false,"collapsed":true,"items":[{"text":"AES加密","link":"/knowledge-deposition/GoLang/加密/AES加密"},{"text":"RSA加密","link":"/knowledge-deposition/GoLang/加密/RSA加密"}]}]},{"text":"Nacos","collapsible":false,"collapsed":false,"items":[{"text":"基本概念和安装启动","link":"/knowledge-deposition/Nacos/基本概念和安装启动"},{"text":"操作动态配置文件","link":"/knowledge-deposition/Nacos/操作动态配置文件"}]},{"text":"RabbitMQ","collapsible":false,"collapsed":false,"items":[{"text":"基本概念和安装启动","link":"/knowledge-deposition/RabbitMQ/基本概念和安装启动"},{"text":"工作队列","link":"/knowledge-deposition/RabbitMQ/工作队列"},{"text":"发布订阅","link":"/knowledge-deposition/RabbitMQ/发布订阅"},{"text":"Routing","link":"/knowledge-deposition/RabbitMQ/Routing"},{"text":"Topics","link":"/knowledge-deposition/RabbitMQ/Topics"}]}],"/algorithm/":[{"text":"LeetCode刷题","collapsible":false,"collapsed":true,"items":[{"text":"1-两数之和","link":"/algorithm/LeetCode刷题/1-两数之和"},{"text":"20-有效的括号","link":"/algorithm/LeetCode刷题/20-有效的括号"},{"text":"26-删除有序数组中的重复项","link":"/algorithm/LeetCode刷题/26-删除有序数组中的重复项"},{"text":"27-移除元素","link":"/algorithm/LeetCode刷题/27-移除元素"},{"text":"28-找出字符串中第一个匹配项的下标","link":"/algorithm/LeetCode刷题/28-找出字符串中第一个匹配项的下标"},{"text":"3-无重复字符的最长子串","link":"/algorithm/LeetCode刷题/3-无重复字符的最长子串"},{"text":"35-搜索插入位置","link":"/algorithm/LeetCode刷题/35-搜索插入位置"},{"text":"14-最长公共前缀","link":"/algorithm/LeetCode刷题/14-最长公共前缀"},{"text":"58-最后一个单词的长度","link":"/algorithm/LeetCode刷题/58-最后一个单词的长度"},{"text":"136-只出现一次的数字","link":"/algorithm/LeetCode刷题/136-只出现一次的数字"},{"text":"LCR-018-验证回文串","link":"/algorithm/LeetCode刷题/LCR-018-验证回文串"},{"text":"9-回文数","link":"/algorithm/LeetCode刷题/9-回文数"},{"text":"17-电话号码的字母组合","link":"/algorithm/LeetCode刷题/17-电话号码的字母组合"},{"text":"202-快乐数","link":"/algorithm/LeetCode刷题/202-快乐数"},{"text":"485-最大连续1的个数","link":"/algorithm/LeetCode刷题/485-最大连续1的个数"},{"text":"628-三个数的最大乘积","link":"/algorithm/LeetCode刷题/628-三个数的最大乘积"},{"text":"414-第三大的数","link":"/algorithm/LeetCode刷题/414-第三大的数"},{"text":"520-检测大写字母","link":"/algorithm/LeetCode刷题/520-检测大写字母"},{"text":"977-有序数组的平方","link":"/algorithm/LeetCode刷题/977-有序数组的平方"},{"text":"209-长度最小的子数组","link":"/algorithm/LeetCode刷题/209-长度最小的子数组"},{"text":"203-移除链表元素","link":"/algorithm/LeetCode刷题/203-移除链表元素"},{"text":"707-设计链表","link":"/algorithm/LeetCode刷题/707-设计链表"},{"text":"206-反转链表","link":"/algorithm/LeetCode刷题/206-反转链表"},{"text":"24-两两交换链表中的节点","link":"/algorithm/LeetCode刷题/24-两两交换链表中的节点"},{"text":"19-删除链表的倒数第N个结点","link":"/algorithm/LeetCode刷题/19-删除链表的倒数第N个结点"},{"text":"242-有效的字母异位词","link":"/algorithm/LeetCode刷题/242-有效的字母异位词"},{"text":"349-两个数组的交集","link":"/algorithm/LeetCode刷题/349-两个数组的交集"},{"text":"454-四数相加II","link":"/algorithm/LeetCode刷题/454-四数相加II"},{"text":"15-三数之和","link":"/algorithm/LeetCode刷题/15-三数之和"},{"text":"18-四数之和","link":"/algorithm/LeetCode刷题/18-四数之和"},{"text":"344-反转字符串","link":"/algorithm/LeetCode刷题/344-反转字符串"},{"text":"541-反转字符串II","link":"/algorithm/LeetCode刷题/541-反转字符串II"},{"text":"151-反转字符串中的单词","link":"/algorithm/LeetCode刷题/151-反转字符串中的单词"},{"text":"1047-删除字符串中的所有相邻重复项","link":"/algorithm/LeetCode刷题/1047-删除字符串中的所有相邻重复项"},{"text":"150-逆波兰表达式求值","link":"/algorithm/LeetCode刷题/150-逆波兰表达式求值"},{"text":"144-94-145-遍历二叉树","link":"/algorithm/LeetCode刷题/144-94-145-遍历二叉树"}]}],"/favorites/":[{"text":"CSS","link":"/favorites/CSS/"},{"text":"Git","link":"/favorites/Git/"},{"text":"Mobile Side","link":"/favorites/Mobile/"},{"text":"Nginx","link":"/favorites/Nginx/"},{"text":"Mac","link":"/favorites/Mac/"},{"text":"Canvas","link":"/favorites/Canvas/"},{"text":"Browser","link":"/favorites/Browser/"},{"text":"ProblemSolving","link":"/favorites/ProblemSolving/"},{"text":"React","link":"/favorites/React/"},{"text":"Docker","link":"/favorites/Docker/"},{"text":"算法","link":"/favorites/算法/"},{"text":"Golang","link":"/favorites/Golang/"},{"text":"IDE","link":"/favorites/IDE/"},{"text":"Linux","link":"/favorites/Linux/"},{"text":"UI设计灵感","link":"/favorites/UI设计灵感/"},{"text":"Books","link":"/favorites/Books/"},{"text":"其他","link":"/favorites/其他/"}]},"socialLinks":[{"icon":"github","link":"https://github.com/mx52jing"}],"algolia":{"appId":"OZ2LZP2CGA","apiKey":"f4ad8bb32fae6abf12202305c27f286e","indexName":"static"},"lastUpdated":true,"aside":true,"outline":"deep"},"locales":{},"scrollOffset":90,"cleanUrls":true}'),os=/^[a-z]+:/i,yc=/^pathname:\/\//,ei="vitepress-theme-appearance",fl=/#.*$/,kc=/(index)?\.(md|html)$/,$e=typeof document<"u",hl={relativePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0};function At(e,t,n=!1){if(t===void 0)return!1;if(e=ti(`/${e}`),n)return new RegExp(t).test(e);if(ti(t)!==e)return!1;const s=t.match(fl);return s?($e?location.hash:"")===s[0]:!0}function ti(e){return decodeURI(e).replace(fl,"").replace(kc,"")}function pl(e){return os.test(e)}function xc(e,t){var s,o,i,l,r,a,u;const n=Object.keys(e.locales).find(f=>f!=="root"&&!pl(f)&&At(t,`/${f}/`,!0))||"root";return Object.assign({},e,{localeIndex:n,lang:((s=e.locales[n])==null?void 0:s.lang)??e.lang,dir:((o=e.locales[n])==null?void 0:o.dir)??e.dir,title:((i=e.locales[n])==null?void 0:i.title)??e.title,titleTemplate:((l=e.locales[n])==null?void 0:l.titleTemplate)??e.titleTemplate,description:((r=e.locales[n])==null?void 0:r.description)??e.description,head:gl(e.head,((a=e.locales[n])==null?void 0:a.head)??[]),themeConfig:{...e.themeConfig,...(u=e.locales[n])==null?void 0:u.themeConfig}})}function _l(e,t){const n=t.title||e.title,s=t.titleTemplate??e.titleTemplate;if(typeof s=="string"&&s.includes(":title"))return s.replace(/:title/g,n);const o=wc(e.title,s);return`${n}${o}`}function wc(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function $c(e,t){const[n,s]=t;if(n!=="meta")return!1;const o=Object.entries(s)[0];return o==null?!1:e.some(([i,l])=>i===n&&l[o[0]]===o[1])}function gl(e,t){return[...e.filter(n=>!$c(t,n)),...t]}const Cc=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,Pc=/^[a-z]:/i;function ni(e){const t=Pc.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(Cc,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const vl=Symbol(),dt=Tr(bc);function Lc(e){const t=z(()=>xc(dt.value,e.data.relativePath));return{site:t,theme:z(()=>t.value.themeConfig),page:z(()=>e.data),frontmatter:z(()=>e.data.frontmatter),lang:z(()=>t.value.lang),dir:z(()=>t.value.dir),localeIndex:z(()=>t.value.localeIndex||"root"),title:z(()=>_l(t.value,e.data)),description:z(()=>e.data.description||t.value.description),isDark:le(!1)}}function ml(){const e=Ke(vl);if(!e)throw new Error("vitepress data not properly injected in app");return e}function Sc(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function _n(e){return os.test(e)||e.startsWith(".")?e:Sc(dt.value.base,e)}function bl(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),$e){const n="/static-blog/";t=ni(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let s=__VP_HASH_MAP__[t.toLowerCase()];s||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",s=__VP_HASH_MAP__[t.toLowerCase()]),t=`${n}assets/${t}.${s}.js`}else t=`./${ni(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}const yl=Symbol(),si="http://a.com",Tc=()=>({path:"/",component:null,data:hl});function Vc(e,t){const n=Qn(Tc()),s={route:n,go:o};async function o(r=$e?location.href:"/"){var u,f;await((u=s.onBeforeRouteChange)==null?void 0:u.call(s,r));const a=new URL(r,si);dt.value.cleanUrls||!a.pathname.endsWith("/")&&!a.pathname.endsWith(".html")&&(a.pathname+=".html",r=a.pathname+a.search+a.hash),$e&&r!==location.href&&(history.replaceState({scrollPosition:window.scrollY},document.title),history.pushState(null,"",r)),await l(r),await((f=s.onAfterRouteChanged)==null?void 0:f.call(s,r))}let i=null;async function l(r,a=0,u=!1){const f=new URL(r,si),_=i=f.pathname;try{let g=await e(_);if(i===_){i=null;const{default:y,__pageData:T}=g;if(!y)throw new Error(`Invalid route component: ${y}`);n.path=$e?_:_n(_),n.component=sn(y),n.data=sn(T),$e&&Zs(()=>{let M=dt.value.base+T.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!dt.value.cleanUrls&&!M.endsWith("/")&&(M+=".html"),M!==f.pathname&&(f.pathname=M,r=M+f.search+f.hash,history.replaceState(null,"",r)),f.hash&&!a){let K=null;try{K=document.querySelector(decodeURIComponent(f.hash))}catch(m){console.warn(m)}if(K){oi(K,f.hash);return}}window.scrollTo(0,a)})}}catch(g){if(!/fetch/.test(g.message)&&!/^\/404(\.html|\/)?$/.test(r)&&console.error(g),!u)try{const y=await fetch(dt.value.base+"hashmap.json");window.__VP_HASH_MAP__=await y.json(),await l(r,a,!0);return}catch{}i===_&&(i=null,n.path=$e?_:_n(_),n.component=t?sn(t):null,n.data=hl)}}return $e&&(window.addEventListener("click",r=>{if(r.target.closest("button"))return;const u=r.target.closest("a");if(u&&!u.closest(".vp-raw")&&(u instanceof SVGElement||!u.download)){const{target:f}=u,{href:_,origin:g,pathname:y,hash:T,search:M}=new URL(u.href instanceof SVGAnimatedString?u.href.animVal:u.href,u.baseURI),K=window.location,m=y.match(/\.\w+$/);!r.ctrlKey&&!r.shiftKey&&!r.altKey&&!r.metaKey&&f!=="_blank"&&g===K.origin&&!(m&&m[0]!==".html")&&(r.preventDefault(),y===K.pathname&&M===K.search?T&&T!==K.hash&&(history.pushState(null,"",T),window.dispatchEvent(new Event("hashchange")),oi(u,T,u.classList.contains("header-anchor"))):o(_))}},{capture:!0}),window.addEventListener("popstate",r=>{l(location.href,r.state&&r.state.scrollPosition||0)}),window.addEventListener("hashchange",r=>{r.preventDefault()})),s}function Ec(){const e=Ke(yl);if(!e)throw new Error("useRouter() is called without provider.");return e}function vt(){return Ec().route}function oi(e,t,n=!1){let s=null;try{s=e.classList.contains("header-anchor")?e:document.querySelector(decodeURIComponent(t))}catch(o){console.warn(o)}if(s){let o=dt.value.scrollOffset;typeof o=="string"&&(o=document.querySelector(o).getBoundingClientRect().bottom+24);const i=parseInt(window.getComputedStyle(s).paddingTop,10),l=window.scrollY+s.getBoundingClientRect().top-o+i;!n||Math.abs(l-window.scrollY)>window.innerHeight?window.scrollTo(0,l):window.scrollTo({left:0,top:l,behavior:"smooth"})}}const Mc=R({name:"VitePressContent",props:{onContentUpdated:Function},setup(e){const t=vt();return eo(()=>{var n;(n=e.onContentUpdated)==null||n.call(e)}),()=>Dn("div",{style:{position:"relative"}},[t.component?Dn(t.component):null])}}),ue=ml;var ii;const kl=typeof window<"u",Ac=e=>typeof e=="string",Ic=()=>{};kl&&((ii=window==null?void 0:window.navigator)!=null&&ii.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);function xl(e){return typeof e=="function"?e():p(e)}function Nc(e){return e}function wl(e){return bi()?(tr(e),!0):!1}function Bc(e){return typeof e=="function"?z(e):le(e)}function Oc(e,t=!0){ns()?Oe(e):t?e():Zs(e)}function Fc(e){var t;const n=xl(e);return(t=n==null?void 0:n.$el)!=null?t:n}const lo=kl?window:void 0;function Hc(...e){let t,n,s,o;if(Ac(e[0])||Array.isArray(e[0])?([n,s,o]=e,t=lo):[t,n,s,o]=e,!t)return Ic;Array.isArray(n)||(n=[n]),Array.isArray(s)||(s=[s]);const i=[],l=()=>{i.forEach(f=>f()),i.length=0},r=(f,_,g,y)=>(f.addEventListener(_,g,y),()=>f.removeEventListener(_,g,y)),a=Je(()=>[Fc(t),xl(o)],([f,_])=>{l(),f&&i.push(...n.flatMap(g=>s.map(y=>r(f,g,y,_))))},{immediate:!0,flush:"post"}),u=()=>{a(),l()};return wl(u),u}function Rc(e,t=!1){const n=le(),s=()=>n.value=!!e();return s(),Oc(s,t),n}function Ns(e,t={}){const{window:n=lo}=t,s=Rc(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let o;const i=le(!1),l=()=>{o&&("removeEventListener"in o?o.removeEventListener("change",r):o.removeListener(r))},r=()=>{s.value&&(l(),o=n.matchMedia(Bc(e).value),i.value=o.matches,"addEventListener"in o?o.addEventListener("change",r):o.addListener(r))};return Et(r),wl(()=>l()),i}const li=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},ri="__vueuse_ssr_handlers__";li[ri]=li[ri]||{};var ai;(function(e){e.UP="UP",e.RIGHT="RIGHT",e.DOWN="DOWN",e.LEFT="LEFT",e.NONE="NONE"})(ai||(ai={}));var Dc=Object.defineProperty,ci=Object.getOwnPropertySymbols,Gc=Object.prototype.hasOwnProperty,Uc=Object.prototype.propertyIsEnumerable,ui=(e,t,n)=>t in e?Dc(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,jc=(e,t)=>{for(var n in t||(t={}))Gc.call(t,n)&&ui(e,n,t[n]);if(ci)for(var n of ci(t))Uc.call(t,n)&&ui(e,n,t[n]);return e};const zc={easeInSine:[.12,0,.39,0],easeOutSine:[.61,1,.88,1],easeInOutSine:[.37,0,.63,1],easeInQuad:[.11,0,.5,0],easeOutQuad:[.5,1,.89,1],easeInOutQuad:[.45,0,.55,1],easeInCubic:[.32,0,.67,0],easeOutCubic:[.33,1,.68,1],easeInOutCubic:[.65,0,.35,1],easeInQuart:[.5,0,.75,0],easeOutQuart:[.25,1,.5,1],easeInOutQuart:[.76,0,.24,1],easeInQuint:[.64,0,.78,0],easeOutQuint:[.22,1,.36,1],easeInOutQuint:[.83,0,.17,1],easeInExpo:[.7,0,.84,0],easeOutExpo:[.16,1,.3,1],easeInOutExpo:[.87,0,.13,1],easeInCirc:[.55,0,1,.45],easeOutCirc:[0,.55,.45,1],easeInOutCirc:[.85,0,.15,1],easeInBack:[.36,0,.66,-.56],easeOutBack:[.34,1.56,.64,1],easeInOutBack:[.68,-.6,.32,1.6]};jc({linear:Nc},zc);function Kc({window:e=lo}={}){if(!e)return{x:le(0),y:le(0)};const t=le(e.scrollX),n=le(e.scrollY);return Hc(e,"scroll",()=>{t.value=e.scrollX,n.value=e.scrollY},{capture:!1,passive:!0}),{x:t,y:n}}function qc(e,t){let n,s=!1;return()=>{n&&clearTimeout(n),s?n=setTimeout(e,t):(e(),s=!0,setTimeout(()=>{s=!1},t))}}function Bs(e){return/^\//.test(e)?e:`/${e}`}function gn(e){if(pl(e))return e.replace(yc,"");const{site:t}=ue(),{pathname:n,search:s,hash:o}=new URL(e,"http://example.com"),i=n.endsWith("/")||n.endsWith(".html")?e:e.replace(/(?:(^\.+)\/)?.*$/,`$1${n.replace(/(\.md)?$/,t.value.cleanUrls?"":".html")}${s}${o}`);return _n(i)}function $l(e,t){if(Array.isArray(e))return e;if(e==null)return[];t=Bs(t);const n=Object.keys(e).sort((s,o)=>o.split("/").length-s.split("/").length).find(s=>t.startsWith(Bs(s)));return n?e[n]:[]}function Wc(e){const t=[];let n=0;for(const s in e){const o=e[s];if(o.items){n=t.push(o);continue}t[n]||t.push({items:[]}),t[n].items.push(o)}return t}function Qc(e){const t=[];function n(s){for(const o of s)o.text&&o.link&&t.push({text:o.text,link:o.link}),o.items&&n(o.items)}return n(e),t}function Os(e,t){return Array.isArray(t)?t.some(n=>Os(e,n)):At(e,t.link)?!0:t.items?Os(e,t.items):!1}function it(){const e=vt(),{theme:t,frontmatter:n}=ue(),s=Ns("(min-width: 960px)"),o=le(!1),i=z(()=>{const y=t.value.sidebar,T=e.data.relativePath;return y?$l(y,T):[]}),l=z(()=>n.value.sidebar!==!1&&i.value.length>0&&n.value.layout!=="home"),r=z(()=>n.value.layout==="home"?!1:n.value.aside!=null?!!n.value.aside:t.value.aside!==!1),a=z(()=>l.value&&s.value),u=z(()=>l.value?Wc(i.value):[]);function f(){o.value=!0}function _(){o.value=!1}function g(){o.value?_():f()}return{isOpen:o,sidebar:i,sidebarGroups:u,hasSidebar:l,hasAside:r,isSidebarEnabled:a,open:f,close:_,toggle:g}}function Yc(e,t){let n;Et(()=>{n=e.value?document.activeElement:void 0}),Oe(()=>{window.addEventListener("keyup",s)}),gt(()=>{window.removeEventListener("keyup",s)});function s(o){o.key==="Escape"&&e.value&&(t(),n==null||n.focus())}}function Jc(e){const{page:t}=ue(),n=le(!1),s=z(()=>e.value.collapsed!=null),o=z(()=>!!e.value.link),i=z(()=>At(t.value.relativePath,e.value.link)),l=z(()=>i.value?!0:e.value.items?Os(t.value.relativePath,e.value.items):!1),r=z(()=>!!(e.value.items&&e.value.items.length));Et(()=>{n.value=!!(s.value&&e.value.collapsed)}),Et(()=>{(i.value||l.value)&&(n.value=!1)});function a(){s.value&&(n.value=!n.value)}return{collapsed:n,collapsible:s,isLink:o,isActiveLink:i,hasActiveLink:l,hasChildren:r,toggle:a}}const Xc=R({__name:"VPSkipLink",setup(e){const t=vt(),n=le();Je(()=>t.path,()=>n.value.focus());function s({target:o}){const i=document.querySelector(o.hash);if(i){const l=()=>{i.removeAttribute("tabindex"),i.removeEventListener("blur",l)};i.setAttribute("tabindex","-1"),i.addEventListener("blur",l),i.focus(),window.scrollTo(0,0)}}return(o,i)=>(h(),b(Z,null,[k("span",{ref_key:"backToTop",ref:n,tabindex:"-1"},null,512),k("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:s}," Skip to content ")],64))}});const Zc=H(Xc,[["__scopeId","data-v-0c14bf17"]]),eu={key:0,class:"VPBackdrop"},tu=R({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(e){return(t,n)=>(h(),q(ss,{name:"fade"},{default:I(()=>[e.show?(h(),b("div",eu)):D("",!0)]),_:1}))}});const nu=H(tu,[["__scopeId","data-v-f156ed5b"]]);function su(){const e=le(!1);function t(){e.value=!0,window.addEventListener("resize",o)}function n(){e.value=!1,window.removeEventListener("resize",o)}function s(){e.value?n():t()}function o(){window.outerWidth>=768&&n()}const i=vt();return Je(()=>i.path,n),{isScreenOpen:e,openScreen:t,closeScreen:n,toggleScreen:s}}function yn({removeCurrent:e=!0,correspondingLink:t=!1}={}){const{site:n,localeIndex:s,page:o,theme:i}=ue(),l=z(()=>{var a,u;return{label:(a=n.value.locales[s.value])==null?void 0:a.label,link:((u=n.value.locales[s.value])==null?void 0:u.link)||(s.value==="root"?"/":`/${s.value}/`)}});return{localeLinks:z(()=>Object.entries(n.value.locales).flatMap(([a,u])=>e&&l.value.label===u.label?[]:{text:u.label,link:ou(u.link||(a==="root"?"/":`/${a}/`),i.value.i18nRouting!==!1&&t,o.value.relativePath.slice(l.value.link.length-1),!n.value.cleanUrls)})),currentLang:l}}function ou(e,t,n,s){return t?e.replace(/\/$/,"")+Bs(n.replace(/(^|\/)?index.md$/,"$1").replace(/\.md$/,s?".html":"")):e}const iu=["src","alt"],lu={inheritAttrs:!1},ru=R({...lu,__name:"VPImage",props:{image:null,alt:null},setup(e){return(t,n)=>{const s=Mt("VPImage",!0);return e.image?(h(),b(Z,{key:0},[typeof e.image=="string"||"src"in e.image?(h(),b("img",An({key:0,class:"VPImage"},typeof e.image=="string"?t.$attrs:{...e.image,...t.$attrs},{src:p(_n)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,iu)):(h(),b(Z,{key:1},[V(s,An({class:"dark",image:e.image.dark,alt:e.image.alt},t.$attrs),null,16,["image","alt"]),V(s,An({class:"light",image:e.image.light,alt:e.image.alt},t.$attrs),null,16,["image","alt"])],64))],64)):D("",!0)}}});const ro=H(ru,[["__scopeId","data-v-2ecb366c"]]),au=["href"],cu=R({__name:"VPNavBarTitle",setup(e){const{site:t,theme:n}=ue(),{hasSidebar:s}=it(),{currentLang:o}=yn();return(i,l)=>(h(),b("div",{class:ge(["VPNavBarTitle",{"has-sidebar":p(s)}])},[k("a",{class:"title",href:p(gn)(p(o).link)},[S(i.$slots,"nav-bar-title-before",{},void 0,!0),p(n).logo?(h(),q(ro,{key:0,class:"logo",image:p(n).logo},null,8,["image"])):D("",!0),p(n).siteTitle?(h(),b(Z,{key:1},[Se(ce(p(n).siteTitle),1)],64)):p(n).siteTitle===void 0?(h(),b(Z,{key:2},[Se(ce(p(t).title),1)],64)):D("",!0),S(i.$slots,"nav-bar-title-after",{},void 0,!0)],8,au)],2))}});const uu=H(cu,[["__scopeId","data-v-fb6ffc33"]]);const du={key:0,class:"VPNavBarSearch"},fu={type:"button",class:"DocSearch DocSearch-Button","aria-label":"Search"},hu={class:"DocSearch-Button-Container"},pu=k("svg",{class:"DocSearch-Search-Icon",width:"20",height:"20",viewBox:"0 0 20 20"},[k("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none","fill-rule":"evenodd","stroke-linecap":"round","stroke-linejoin":"round"})],-1),_u={class:"DocSearch-Button-Placeholder"},gu=k("span",{class:"DocSearch-Button-Keys"},[k("kbd",{class:"DocSearch-Button-Key"}),k("kbd",{class:"DocSearch-Button-Key"},"K")],-1),vu=R({__name:"VPNavBarSearch",setup(e){nc(f=>({"2475c8e4":i.value}));const t=Wr(()=>dl(()=>import("./chunks/VPAlgoliaSearchBox.ff7413f2.js"),[])),{theme:n,localeIndex:s}=ue(),o=le(!1),i=le("'Meta'"),l=z(()=>{var f,_,g,y,T,M,K,m;return((T=(y=(g=(_=(f=n.value.algolia)==null?void 0:f.locales)==null?void 0:_[s.value])==null?void 0:g.translations)==null?void 0:y.button)==null?void 0:T.buttonText)||((m=(K=(M=n.value.algolia)==null?void 0:M.translations)==null?void 0:K.button)==null?void 0:m.buttonText)||"Search"}),r=()=>{const f="VPAlgoliaPreconnect";(window.requestIdleCallback||setTimeout)(()=>{const g=document.createElement("link");g.id=f,g.rel="preconnect",g.href=`https://${n.value.algolia.appId}-dsn.algolia.net`,g.crossOrigin="",document.head.appendChild(g)})};Oe(()=>{if(!n.value.algolia)return;r(),i.value=/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?"'⌘'":"'Ctrl'";const f=g=>{g.key==="k"&&(g.ctrlKey||g.metaKey)&&(g.preventDefault(),a(),_())},_=()=>{window.removeEventListener("keydown",f)};window.addEventListener("keydown",f),gt(_)});function a(){o.value||(o.value=!0,setTimeout(u,16))}function u(){const f=new Event("keydown");f.key="k",f.metaKey=!0,window.dispatchEvent(f),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||u()},16)}return(f,_)=>p(n).algolia?(h(),b("div",du,[o.value?(h(),q(p(t),{key:0,algolia:p(n).algolia},null,8,["algolia"])):(h(),b("div",{key:1,id:"docsearch",onClick:a},[k("button",fu,[k("span",hu,[pu,k("span",_u,ce(p(l)),1)]),gu])]))])):D("",!0)}});const mu={},bu={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",height:"24px",viewBox:"0 0 24 24",width:"24px"},yu=k("path",{d:"M0 0h24v24H0V0z",fill:"none"},null,-1),ku=k("path",{d:"M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z"},null,-1),xu=[yu,ku];function wu(e,t){return h(),b("svg",bu,xu)}const $u=H(mu,[["render",wu]]),Cu=R({__name:"VPLink",props:{tag:null,href:null,noIcon:{type:Boolean},target:null,rel:null},setup(e){const t=e,n=z(()=>t.tag??t.href?"a":"span"),s=z(()=>t.href&&os.test(t.href));return(o,i)=>(h(),q(hn(p(n)),{class:ge(["VPLink",{link:e.href}]),href:e.href?p(gn)(e.href):void 0,target:e.target||(p(s)?"_blank":void 0),rel:e.rel||(p(s)?"noreferrer":void 0)},{default:I(()=>[S(o.$slots,"default",{},void 0,!0),p(s)&&!e.noIcon?(h(),q($u,{key:0,class:"icon"})):D("",!0)]),_:3},8,["class","href","target","rel"]))}});const mt=H(Cu,[["__scopeId","data-v-b9be72d4"]]),Pu=R({__name:"VPNavBarMenuLink",props:{item:null},setup(e){const{page:t}=ue();return(n,s)=>(h(),q(mt,{class:ge({VPNavBarMenuLink:!0,active:p(At)(p(t).relativePath,e.item.activeMatch||e.item.link,!!e.item.activeMatch)}),href:e.item.link,target:e.item.target,rel:e.item.rel},{default:I(()=>[Se(ce(e.item.text),1)]),_:1},8,["class","href","target","rel"]))}});const Lu=H(Pu,[["__scopeId","data-v-eaade15b"]]),ao=le();let Cl=!1,bs=0;function Su(e){const t=le(!1);if($e){!Cl&&Tu(),bs++;const n=Je(ao,s=>{var o,i,l;s===e.el.value||(o=e.el.value)!=null&&o.contains(s)?(t.value=!0,(i=e.onFocus)==null||i.call(e)):(t.value=!1,(l=e.onBlur)==null||l.call(e))});gt(()=>{n(),bs--,bs||Vu()})}return Qs(t)}function Tu(){document.addEventListener("focusin",Pl),Cl=!0,ao.value=document.activeElement}function Vu(){document.removeEventListener("focusin",Pl)}function Pl(){ao.value=document.activeElement}const Eu={},Mu={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Au=k("path",{d:"M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"},null,-1),Iu=[Au];function Nu(e,t){return h(),b("svg",Mu,Iu)}const Ll=H(Eu,[["render",Nu]]),Bu={},Ou={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Fu=k("circle",{cx:"12",cy:"12",r:"2"},null,-1),Hu=k("circle",{cx:"19",cy:"12",r:"2"},null,-1),Ru=k("circle",{cx:"5",cy:"12",r:"2"},null,-1),Du=[Fu,Hu,Ru];function Gu(e,t){return h(),b("svg",Ou,Du)}const Uu=H(Bu,[["render",Gu]]),ju={class:"VPMenuLink"},zu=R({__name:"VPMenuLink",props:{item:null},setup(e){const{page:t}=ue();return(n,s)=>(h(),b("div",ju,[V(mt,{class:ge({active:p(At)(p(t).relativePath,e.item.activeMatch||e.item.link,!!e.item.activeMatch)}),href:e.item.link,target:e.item.target,rel:e.item.rel},{default:I(()=>[Se(ce(e.item.text),1)]),_:1},8,["class","href","target","rel"])]))}});const is=H(zu,[["__scopeId","data-v-c8305630"]]),Ku={class:"VPMenuGroup"},qu={key:0,class:"title"},Wu=R({__name:"VPMenuGroup",props:{text:null,items:null},setup(e){return(t,n)=>(h(),b("div",Ku,[e.text?(h(),b("p",qu,ce(e.text),1)):D("",!0),(h(!0),b(Z,null,Ve(e.items,s=>(h(),b(Z,null,["link"in s?(h(),q(is,{key:0,item:s},null,8,["item"])):D("",!0)],64))),256))]))}});const Qu=H(Wu,[["__scopeId","data-v-4ed46b20"]]),Yu={class:"VPMenu"},Ju={key:0,class:"items"},Xu=R({__name:"VPMenu",props:{items:null},setup(e){return(t,n)=>(h(),b("div",Yu,[e.items?(h(),b("div",Ju,[(h(!0),b(Z,null,Ve(e.items,s=>(h(),b(Z,{key:s.text},["link"in s?(h(),q(is,{key:0,item:s},null,8,["item"])):(h(),q(Qu,{key:1,text:s.text,items:s.items},null,8,["text","items"]))],64))),128))])):D("",!0),S(t.$slots,"default",{},void 0,!0)]))}});const Zu=H(Xu,[["__scopeId","data-v-ad9b1221"]]),ed=["aria-expanded","aria-label"],td={key:0,class:"text"},nd={class:"menu"},sd=R({__name:"VPFlyout",props:{icon:null,button:null,label:null,items:null},setup(e){const t=le(!1),n=le();Su({el:n,onBlur:s});function s(){t.value=!1}return(o,i)=>(h(),b("div",{class:"VPFlyout",ref_key:"el",ref:n,onMouseenter:i[1]||(i[1]=l=>t.value=!0),onMouseleave:i[2]||(i[2]=l=>t.value=!1)},[k("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":t.value,"aria-label":e.label,onClick:i[0]||(i[0]=l=>t.value=!t.value)},[e.button||e.icon?(h(),b("span",td,[e.icon?(h(),q(hn(e.icon),{key:0,class:"option-icon"})):D("",!0),Se(" "+ce(e.button)+" ",1),V(Ll,{class:"text-icon"})])):(h(),q(Uu,{key:1,class:"icon"}))],8,ed),k("div",nd,[V(Zu,{items:e.items},{default:I(()=>[S(o.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}});const co=H(sd,[["__scopeId","data-v-5ade3574"]]),od=R({__name:"VPNavBarMenuGroup",props:{item:null},setup(e){const{page:t}=ue();return(n,s)=>(h(),q(co,{class:ge({VPNavBarMenuGroup:!0,active:p(At)(p(t).relativePath,e.item.activeMatch,!!e.item.activeMatch)}),button:e.item.text,items:e.item.items},null,8,["class","button","items"]))}}),id=e=>(Ze("data-v-f7e0d92f"),e=e(),et(),e),ld={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},rd=id(()=>k("span",{id:"main-nav-aria-label",class:"visually-hidden"},"Main Navigation",-1)),ad=R({__name:"VPNavBarMenu",setup(e){const{theme:t}=ue();return(n,s)=>p(t).nav?(h(),b("nav",ld,[rd,(h(!0),b(Z,null,Ve(p(t).nav,o=>(h(),b(Z,{key:o.text},["link"in o?(h(),q(Lu,{key:0,item:o},null,8,["item"])):(h(),q(od,{key:1,item:o},null,8,["item"]))],64))),128))])):D("",!0)}});const cd=H(ad,[["__scopeId","data-v-f7e0d92f"]]),ud={},dd={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},fd=k("path",{d:"M0 0h24v24H0z",fill:"none"},null,-1),hd=k("path",{d:" M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z ",class:"css-c4d79v"},null,-1),pd=[fd,hd];function _d(e,t){return h(),b("svg",dd,pd)}const Sl=H(ud,[["render",_d]]),gd={class:"items"},vd={class:"title"},md=R({__name:"VPNavBarTranslations",setup(e){const{localeLinks:t,currentLang:n}=yn({correspondingLink:!0});return(s,o)=>p(t).length&&p(n).label?(h(),q(co,{key:0,class:"VPNavBarTranslations",icon:Sl},{default:I(()=>[k("div",gd,[k("p",vd,ce(p(n).label),1),(h(!0),b(Z,null,Ve(p(t),i=>(h(),q(is,{key:i.link,item:i},null,8,["item"]))),128))])]),_:1})):D("",!0)}});const bd=H(md,[["__scopeId","data-v-d8bbd8f6"]]);const yd={},kd={class:"VPSwitch",type:"button",role:"switch"},xd={class:"check"},wd={key:0,class:"icon"};function $d(e,t){return h(),b("button",kd,[k("span",xd,[e.$slots.default?(h(),b("span",wd,[S(e.$slots,"default",{},void 0,!0)])):D("",!0)])])}const Cd=H(yd,[["render",$d],["__scopeId","data-v-f4e143c6"]]),Pd={},Ld={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Sd=Ca('',9),Td=[Sd];function Vd(e,t){return h(),b("svg",Ld,Td)}const Ed=H(Pd,[["render",Vd]]),Md={},Ad={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Id=k("path",{d:"M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"},null,-1),Nd=[Id];function Bd(e,t){return h(),b("svg",Ad,Nd)}const Od=H(Md,[["render",Bd]]),Fd=R({__name:"VPSwitchAppearance",setup(e){const{site:t,isDark:n}=ue(),s=le(!1),o=typeof localStorage<"u"?i():()=>{};Oe(()=>{s.value=document.documentElement.classList.contains("dark")});function i(){const l=window.matchMedia("(prefers-color-scheme: dark)"),r=document.documentElement.classList;let a=localStorage.getItem(ei),u=t.value.appearance==="dark"&&a==null||(a==="auto"||a==null?l.matches:a==="dark");l.onchange=g=>{a==="auto"&&_(u=g.matches)};function f(){_(u=!u),a=u?l.matches?"auto":"dark":l.matches?"light":"auto",localStorage.setItem(ei,a)}function _(g){const y=document.createElement("style");y.type="text/css",y.appendChild(document.createTextNode(`:not(.VPSwitchAppearance):not(.VPSwitchAppearance *) {
+function Fs(e,t){const n=Object.create(null),s=e.split(",");for(let o=0;o!!n[o.toLowerCase()]:o=>!!n[o]}function Hs(e){if(W(e)){const t={};for(let n=0;n{if(n){const s=n.split(Hl);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function ge(e){let t="";if(ke(e))t=e;else if(W(e))for(let n=0;nke(e)?e:e==null?"":W(e)||ve(e)&&(e.toString===vi||!X(e.toString))?JSON.stringify(e,pi,2):String(e),pi=(e,t)=>t&&t.__v_isRef?pi(e,t.value):Ft(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,o])=>(n[`${s} =>`]=o,n),{})}:_i(t)?{[`Set(${t.size})`]:[...t.values()]}:ve(t)&&!W(t)&&!mi(t)?String(t):t,me={},Ot=[],ze=()=>{},jl=()=>!1,zl=/^on[^a-z]/,vn=e=>zl.test(e),Rs=e=>e.startsWith("onUpdate:"),we=Object.assign,Ds=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Kl=Object.prototype.hasOwnProperty,ie=(e,t)=>Kl.call(e,t),W=Array.isArray,Ft=e=>zn(e)==="[object Map]",_i=e=>zn(e)==="[object Set]",X=e=>typeof e=="function",ke=e=>typeof e=="string",Gs=e=>typeof e=="symbol",ve=e=>e!==null&&typeof e=="object",gi=e=>ve(e)&&X(e.then)&&X(e.catch),vi=Object.prototype.toString,zn=e=>vi.call(e),ql=e=>zn(e).slice(8,-1),mi=e=>zn(e)==="[object Object]",Us=e=>ke(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,nn=Fs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Kn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Wl=/-(\w)/g,Xe=Kn(e=>e.replace(Wl,(t,n)=>n?n.toUpperCase():"")),Ql=/\B([A-Z])/g,Yt=Kn(e=>e.replace(Ql,"-$1").toLowerCase()),qn=Kn(e=>e.charAt(0).toUpperCase()+e.slice(1)),cs=Kn(e=>e?`on${qn(e)}`:""),cn=(e,t)=>!Object.is(e,t),us=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Yl=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Jl=e=>{const t=ke(e)?Number(e):NaN;return isNaN(t)?e:t};let yo;const Xl=()=>yo||(yo=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});let Ne;class Zl{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=Ne,!t&&Ne&&(this.index=(Ne.scopes||(Ne.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=Ne;try{return Ne=this,t()}finally{Ne=n}}}on(){Ne=this}off(){Ne=this.parent}stop(t){if(this._active){let n,s;for(n=0,s=this.effects.length;n{const t=new Set(e);return t.w=0,t.n=0,t},yi=e=>(e.w&pt)>0,ki=e=>(e.n&pt)>0,nr=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let s=0;s{(f==="length"||f>=a)&&r.push(u)})}else switch(n!==void 0&&r.push(l.get(n)),t){case"add":W(e)?Us(n)&&r.push(l.get("length")):(r.push(l.get(Tt)),Ft(e)&&r.push(l.get(ws)));break;case"delete":W(e)||(r.push(l.get(Tt)),Ft(e)&&r.push(l.get(ws)));break;case"set":Ft(e)&&r.push(l.get(Tt));break}if(r.length===1)r[0]&&$s(r[0]);else{const a=[];for(const u of r)u&&a.push(...u);$s(js(a))}}function $s(e,t){const n=W(e)?e:[...e];for(const s of n)s.computed&&xo(s);for(const s of n)s.computed||xo(s)}function xo(e,t){(e!==Ue||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}const or=Fs("__proto__,__v_isRef,__isVue"),$i=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Gs)),ir=Ks(),lr=Ks(!1,!0),rr=Ks(!0),wo=ar();function ar(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const s=ae(this);for(let i=0,l=this.length;i{e[t]=function(...n){Jt();const s=ae(this)[t].apply(this,n);return Xt(),s}}),e}function cr(e){const t=ae(this);return Me(t,"has",e),t.hasOwnProperty(e)}function Ks(e=!1,t=!1){return function(s,o,i){if(o==="__v_isReactive")return!e;if(o==="__v_isReadonly")return e;if(o==="__v_isShallow")return t;if(o==="__v_raw"&&i===(e?t?Cr:Ti:t?Si:Li).get(s))return s;const l=W(s);if(!e){if(l&&ie(wo,o))return Reflect.get(wo,o,i);if(o==="hasOwnProperty")return cr}const r=Reflect.get(s,o,i);return(Gs(o)?$i.has(o):or(o))||(e||Me(s,"get",o),t)?r:Pe(r)?l&&Us(o)?r:r.value:ve(r)?e?Qs(r):Qn(r):r}}const ur=Ci(),dr=Ci(!0);function Ci(e=!1){return function(n,s,o,i){let l=n[s];if(Kt(l)&&Pe(l)&&!Pe(o))return!1;if(!e&&(!Nn(o)&&!Kt(o)&&(l=ae(l),o=ae(o)),!W(n)&&Pe(l)&&!Pe(o)))return l.value=o,!0;const r=W(n)&&Us(s)?Number(s)e,Wn=e=>Reflect.getPrototypeOf(e);function wn(e,t,n=!1,s=!1){e=e.__v_raw;const o=ae(e),i=ae(t);n||(t!==i&&Me(o,"get",t),Me(o,"get",i));const{has:l}=Wn(o),r=s?qs:n?Js:un;if(l.call(o,t))return r(e.get(t));if(l.call(o,i))return r(e.get(i));e!==o&&e.get(t)}function $n(e,t=!1){const n=this.__v_raw,s=ae(n),o=ae(e);return t||(e!==o&&Me(s,"has",e),Me(s,"has",o)),e===o?n.has(e):n.has(e)||n.has(o)}function Cn(e,t=!1){return e=e.__v_raw,!t&&Me(ae(e),"iterate",Tt),Reflect.get(e,"size",e)}function $o(e){e=ae(e);const t=ae(this);return Wn(t).has.call(t,e)||(t.add(e),st(t,"add",e,e)),this}function Co(e,t){t=ae(t);const n=ae(this),{has:s,get:o}=Wn(n);let i=s.call(n,e);i||(e=ae(e),i=s.call(n,e));const l=o.call(n,e);return n.set(e,t),i?cn(t,l)&&st(n,"set",e,t):st(n,"add",e,t),this}function Po(e){const t=ae(this),{has:n,get:s}=Wn(t);let o=n.call(t,e);o||(e=ae(e),o=n.call(t,e)),s&&s.call(t,e);const i=t.delete(e);return o&&st(t,"delete",e,void 0),i}function Lo(){const e=ae(this),t=e.size!==0,n=e.clear();return t&&st(e,"clear",void 0,void 0),n}function Pn(e,t){return function(s,o){const i=this,l=i.__v_raw,r=ae(l),a=t?qs:e?Js:un;return!e&&Me(r,"iterate",Tt),l.forEach((u,f)=>s.call(o,a(u),a(f),i))}}function Ln(e,t,n){return function(...s){const o=this.__v_raw,i=ae(o),l=Ft(i),r=e==="entries"||e===Symbol.iterator&&l,a=e==="keys"&&l,u=o[e](...s),f=n?qs:t?Js:un;return!t&&Me(i,"iterate",a?ws:Tt),{next(){const{value:_,done:g}=u.next();return g?{value:_,done:g}:{value:r?[f(_[0]),f(_[1])]:f(_),done:g}},[Symbol.iterator](){return this}}}}function lt(e){return function(...t){return e==="delete"?!1:this}}function vr(){const e={get(i){return wn(this,i)},get size(){return Cn(this)},has:$n,add:$o,set:Co,delete:Po,clear:Lo,forEach:Pn(!1,!1)},t={get(i){return wn(this,i,!1,!0)},get size(){return Cn(this)},has:$n,add:$o,set:Co,delete:Po,clear:Lo,forEach:Pn(!1,!0)},n={get(i){return wn(this,i,!0)},get size(){return Cn(this,!0)},has(i){return $n.call(this,i,!0)},add:lt("add"),set:lt("set"),delete:lt("delete"),clear:lt("clear"),forEach:Pn(!0,!1)},s={get(i){return wn(this,i,!0,!0)},get size(){return Cn(this,!0)},has(i){return $n.call(this,i,!0)},add:lt("add"),set:lt("set"),delete:lt("delete"),clear:lt("clear"),forEach:Pn(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{e[i]=Ln(i,!1,!1),n[i]=Ln(i,!0,!1),t[i]=Ln(i,!1,!0),s[i]=Ln(i,!0,!0)}),[e,n,t,s]}const[mr,br,yr,kr]=vr();function Ws(e,t){const n=t?e?kr:yr:e?br:mr;return(s,o,i)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?s:Reflect.get(ie(n,o)&&o in s?n:s,o,i)}const xr={get:Ws(!1,!1)},wr={get:Ws(!1,!0)},$r={get:Ws(!0,!1)},Li=new WeakMap,Si=new WeakMap,Ti=new WeakMap,Cr=new WeakMap;function Pr(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Lr(e){return e.__v_skip||!Object.isExtensible(e)?0:Pr(ql(e))}function Qn(e){return Kt(e)?e:Ys(e,!1,Pi,xr,Li)}function Sr(e){return Ys(e,!1,gr,wr,Si)}function Qs(e){return Ys(e,!0,_r,$r,Ti)}function Ys(e,t,n,s,o){if(!ve(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=o.get(e);if(i)return i;const l=Lr(e);if(l===0)return e;const r=new Proxy(e,l===2?s:n);return o.set(e,r),r}function Ht(e){return Kt(e)?Ht(e.__v_raw):!!(e&&e.__v_isReactive)}function Kt(e){return!!(e&&e.__v_isReadonly)}function Nn(e){return!!(e&&e.__v_isShallow)}function Vi(e){return Ht(e)||Kt(e)}function ae(e){const t=e&&e.__v_raw;return t?ae(t):e}function sn(e){return In(e,"__v_skip",!0),e}const un=e=>ve(e)?Qn(e):e,Js=e=>ve(e)?Qs(e):e;function Ei(e){ft&&Ue&&(e=ae(e),wi(e.dep||(e.dep=js())))}function Mi(e,t){e=ae(e);const n=e.dep;n&&$s(n)}function Pe(e){return!!(e&&e.__v_isRef===!0)}function le(e){return Ai(e,!1)}function Tr(e){return Ai(e,!0)}function Ai(e,t){return Pe(e)?e:new Vr(e,t)}class Vr{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:ae(t),this._value=n?t:un(t)}get value(){return Ei(this),this._value}set value(t){const n=this.__v_isShallow||Nn(t)||Kt(t);t=n?t:ae(t),cn(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:un(t),Mi(this))}}function p(e){return Pe(e)?e.value:e}const Er={get:(e,t,n)=>p(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const o=e[t];return Pe(o)&&!Pe(n)?(o.value=n,!0):Reflect.set(e,t,n,s)}};function Ii(e){return Ht(e)?e:new Proxy(e,Er)}var Ni;class Mr{constructor(t,n,s,o){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this[Ni]=!1,this._dirty=!0,this.effect=new zs(t,()=>{this._dirty||(this._dirty=!0,Mi(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!o,this.__v_isReadonly=s}get value(){const t=ae(this);return Ei(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}Ni="__v_isReadonly";function Ar(e,t,n=!1){let s,o;const i=X(e);return i?(s=e,o=ze):(s=e.get,o=e.set),new Mr(s,o,i||!o,n)}function ht(e,t,n,s){let o;try{o=s?e(...s):e()}catch(i){mn(i,t,n)}return o}function Re(e,t,n,s){if(X(e)){const i=ht(e,t,n,s);return i&&gi(i)&&i.catch(l=>{mn(l,t,n)}),i}const o=[];for(let i=0;i>>1;fn(Ce[s])Ye&&Ce.splice(t,1)}function Or(e){W(e)?Rt.push(...e):(!nt||!nt.includes(e,e.allowRecurse?Ct+1:Ct))&&Rt.push(e),Oi()}function So(e,t=dn?Ye+1:0){for(;tfn(n)-fn(s)),Ct=0;Cte.id==null?1/0:e.id,Fr=(e,t)=>{const n=fn(e)-fn(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Fi(e){Cs=!1,dn=!0,Ce.sort(Fr);const t=ze;try{for(Ye=0;Yeke(y)?y.trim():y)),_&&(o=n.map(Yl))}let r,a=s[r=cs(t)]||s[r=cs(Xe(t))];!a&&i&&(a=s[r=cs(Yt(t))]),a&&Re(a,e,6,o);const u=s[r+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[r])return;e.emitted[r]=!0,Re(u,e,6,o)}}function Hi(e,t,n=!1){const s=t.emitsCache,o=s.get(e);if(o!==void 0)return o;const i=e.emits;let l={},r=!1;if(!X(e)){const a=u=>{const f=Hi(u,t,!0);f&&(r=!0,we(l,f))};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}return!i&&!r?(ve(e)&&s.set(e,null),null):(W(i)?i.forEach(a=>l[a]=null):we(l,i),ve(e)&&s.set(e,l),l)}function Jn(e,t){return!e||!vn(t)?!1:(t=t.slice(2).replace(/Once$/,""),ie(e,t[0].toLowerCase()+t.slice(1))||ie(e,Yt(t))||ie(e,t))}let Le=null,Xn=null;function On(e){const t=Le;return Le=e,Xn=e&&e.type.__scopeId||null,t}function Ze(e){Xn=e}function et(){Xn=null}function I(e,t=Le,n){if(!t||e._n)return e;const s=(...o)=>{s._d&&Fo(-1);const i=On(t);let l;try{l=e(...o)}finally{On(i),s._d&&Fo(1)}return l};return s._n=!0,s._c=!0,s._d=!0,s}function ds(e){const{type:t,vnode:n,proxy:s,withProxy:o,props:i,propsOptions:[l],slots:r,attrs:a,emit:u,render:f,renderCache:_,data:g,setupState:y,ctx:T,inheritAttrs:M}=e;let K,m;const C=On(e);try{if(n.shapeFlag&4){const Y=o||s;K=Ge(f.call(Y,Y,_,i,y,g,T)),m=a}else{const Y=t;K=Ge(Y.length>1?Y(i,{attrs:a,slots:r,emit:u}):Y(i,null)),m=t.props?a:Rr(a)}}catch(Y){ln.length=0,mn(Y,e,1),K=V(Be)}let B=K;if(m&&M!==!1){const Y=Object.keys(m),{shapeFlag:te}=B;Y.length&&te&7&&(l&&Y.some(Rs)&&(m=Dr(m,l)),B=_t(B,m))}return n.dirs&&(B=_t(B),B.dirs=B.dirs?B.dirs.concat(n.dirs):n.dirs),n.transition&&(B.transition=n.transition),K=B,On(C),K}const Rr=e=>{let t;for(const n in e)(n==="class"||n==="style"||vn(n))&&((t||(t={}))[n]=e[n]);return t},Dr=(e,t)=>{const n={};for(const s in e)(!Rs(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Gr(e,t,n){const{props:s,children:o,component:i}=e,{props:l,children:r,patchFlag:a}=t,u=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&a>=0){if(a&1024)return!0;if(a&16)return s?To(s,l,u):!!l;if(a&8){const f=t.dynamicProps;for(let _=0;_e.__isSuspense;function Ri(e,t){t&&t.pendingBranch?W(e)?t.effects.push(...e):t.effects.push(e):Or(e)}function Dt(e,t){if(ye){let n=ye.provides;const s=ye.parent&&ye.parent.provides;s===n&&(n=ye.provides=Object.create(s)),n[e]=t}}function Ke(e,t,n=!1){const s=ye||Le;if(s){const o=s.parent==null?s.vnode.appContext&&s.vnode.appContext.provides:s.parent.provides;if(o&&e in o)return o[e];if(arguments.length>1)return n&&X(t)?t.call(s.proxy):t}}function Et(e,t){return Zn(e,null,t)}function Di(e,t){return Zn(e,null,{flush:"post"})}const Sn={};function Je(e,t,n){return Zn(e,t,n)}function Zn(e,t,{immediate:n,deep:s,flush:o,onTrack:i,onTrigger:l}=me){const r=bi()===(ye==null?void 0:ye.scope)?ye:null;let a,u=!1,f=!1;if(Pe(e)?(a=()=>e.value,u=Nn(e)):Ht(e)?(a=()=>e,s=!0):W(e)?(f=!0,u=e.some(B=>Ht(B)||Nn(B)),a=()=>e.map(B=>{if(Pe(B))return B.value;if(Ht(B))return Bt(B);if(X(B))return ht(B,r,2)})):X(e)?t?a=()=>ht(e,r,2):a=()=>{if(!(r&&r.isUnmounted))return _&&_(),Re(e,r,3,[g])}:a=ze,t&&s){const B=a;a=()=>Bt(B())}let _,g=B=>{_=m.onStop=()=>{ht(B,r,4)}},y;if(Qt)if(g=ze,t?n&&Re(t,r,3,[a(),f?[]:void 0,g]):a(),o==="sync"){const B=Oa();y=B.__watcherHandles||(B.__watcherHandles=[])}else return ze;let T=f?new Array(e.length).fill(Sn):Sn;const M=()=>{if(m.active)if(t){const B=m.run();(s||u||(f?B.some((Y,te)=>cn(Y,T[te])):cn(B,T)))&&(_&&_(),Re(t,r,3,[B,T===Sn?void 0:f&&T[0]===Sn?[]:T,g]),T=B)}else m.run()};M.allowRecurse=!!t;let K;o==="sync"?K=M:o==="post"?K=()=>Ee(M,r&&r.suspense):(M.pre=!0,r&&(M.id=r.uid),K=()=>Yn(M));const m=new zs(a,K);t?n?M():T=m.run():o==="post"?Ee(m.run.bind(m),r&&r.suspense):m.run();const C=()=>{m.stop(),r&&r.scope&&Ds(r.scope.effects,m)};return y&&y.push(C),C}function zr(e,t,n){const s=this.proxy,o=ke(e)?e.includes(".")?Gi(s,e):()=>s[e]:e.bind(s,s);let i;X(t)?i=t:(i=t.handler,n=t);const l=ye;Wt(this);const r=Zn(o,i.bind(s),n);return l?Wt(l):Vt(),r}function Gi(e,t){const n=t.split(".");return()=>{let s=e;for(let o=0;o{Bt(n,t)});else if(mi(e))for(const n in e)Bt(e[n],t);return e}function Kr(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Oe(()=>{e.isMounted=!0}),qi(()=>{e.isUnmounting=!0}),e}const Fe=[Function,Array],qr={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Fe,onEnter:Fe,onAfterEnter:Fe,onEnterCancelled:Fe,onBeforeLeave:Fe,onLeave:Fe,onAfterLeave:Fe,onLeaveCancelled:Fe,onBeforeAppear:Fe,onAppear:Fe,onAfterAppear:Fe,onAppearCancelled:Fe},setup(e,{slots:t}){const n=ns(),s=Kr();let o;return()=>{const i=t.default&&zi(t.default(),!0);if(!i||!i.length)return;let l=i[0];if(i.length>1){for(const M of i)if(M.type!==Be){l=M;break}}const r=ae(e),{mode:a}=r;if(s.isLeaving)return fs(l);const u=Vo(l);if(!u)return fs(l);const f=Ps(u,r,s,n);Ls(u,f);const _=n.subTree,g=_&&Vo(_);let y=!1;const{getTransitionKey:T}=u.type;if(T){const M=T();o===void 0?o=M:M!==o&&(o=M,y=!0)}if(g&&g.type!==Be&&(!Pt(u,g)||y)){const M=Ps(g,r,s,n);if(Ls(g,M),a==="out-in")return s.isLeaving=!0,M.afterLeave=()=>{s.isLeaving=!1,n.update.active!==!1&&n.update()},fs(l);a==="in-out"&&u.type!==Be&&(M.delayLeave=(K,m,C)=>{const B=ji(s,g);B[String(g.key)]=g,K._leaveCb=()=>{m(),K._leaveCb=void 0,delete f.delayedLeave},f.delayedLeave=C})}return l}}},Ui=qr;function ji(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function Ps(e,t,n,s){const{appear:o,mode:i,persisted:l=!1,onBeforeEnter:r,onEnter:a,onAfterEnter:u,onEnterCancelled:f,onBeforeLeave:_,onLeave:g,onAfterLeave:y,onLeaveCancelled:T,onBeforeAppear:M,onAppear:K,onAfterAppear:m,onAppearCancelled:C}=t,B=String(e.key),Y=ji(n,e),te=(N,ee)=>{N&&Re(N,s,9,ee)},he=(N,ee)=>{const J=ee[1];te(N,ee),W(N)?N.every(re=>re.length<=1)&&J():N.length<=1&&J()},oe={mode:i,persisted:l,beforeEnter(N){let ee=r;if(!n.isMounted)if(o)ee=M||r;else return;N._leaveCb&&N._leaveCb(!0);const J=Y[B];J&&Pt(e,J)&&J.el._leaveCb&&J.el._leaveCb(),te(ee,[N])},enter(N){let ee=a,J=u,re=f;if(!n.isMounted)if(o)ee=K||a,J=m||u,re=C||f;else return;let O=!1;const ne=N._enterCb=G=>{O||(O=!0,G?te(re,[N]):te(J,[N]),oe.delayedLeave&&oe.delayedLeave(),N._enterCb=void 0)};ee?he(ee,[N,ne]):ne()},leave(N,ee){const J=String(e.key);if(N._enterCb&&N._enterCb(!0),n.isUnmounting)return ee();te(_,[N]);let re=!1;const O=N._leaveCb=ne=>{re||(re=!0,ee(),ne?te(T,[N]):te(y,[N]),N._leaveCb=void 0,Y[J]===e&&delete Y[J])};Y[J]=e,g?he(g,[N,O]):O()},clone(N){return Ps(N,t,n,s)}};return oe}function fs(e){if(bn(e))return e=_t(e),e.children=null,e}function Vo(e){return bn(e)?e.children?e.children[0]:void 0:e}function Ls(e,t){e.shapeFlag&6&&e.component?Ls(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function zi(e,t=!1,n){let s=[],o=0;for(let i=0;i1)for(let i=0;i!!e.type.__asyncLoader;function Wr(e){X(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:s,delay:o=200,timeout:i,suspensible:l=!0,onError:r}=e;let a=null,u,f=0;const _=()=>(f++,a=null,g()),g=()=>{let y;return a||(y=a=t().catch(T=>{if(T=T instanceof Error?T:new Error(String(T)),r)return new Promise((M,K)=>{r(T,()=>M(_()),()=>K(T),f+1)});throw T}).then(T=>y!==a&&a?a:(T&&(T.__esModule||T[Symbol.toStringTag]==="Module")&&(T=T.default),u=T,T)))};return R({name:"AsyncComponentWrapper",__asyncLoader:g,get __asyncResolved(){return u},setup(){const y=ye;if(u)return()=>hs(u,y);const T=C=>{a=null,mn(C,y,13,!s)};if(l&&y.suspense||Qt)return g().then(C=>()=>hs(C,y)).catch(C=>(T(C),()=>s?V(s,{error:C}):null));const M=le(!1),K=le(),m=le(!!o);return o&&setTimeout(()=>{m.value=!1},o),i!=null&&setTimeout(()=>{if(!M.value&&!K.value){const C=new Error(`Async component timed out after ${i}ms.`);T(C),K.value=C}},i),g().then(()=>{M.value=!0,y.parent&&bn(y.parent.vnode)&&Yn(y.parent.update)}).catch(C=>{T(C),K.value=C}),()=>{if(M.value&&u)return hs(u,y);if(K.value&&s)return V(s,{error:K.value});if(n&&!m.value)return V(n)}}})}function hs(e,t){const{ref:n,props:s,children:o,ce:i}=t.vnode,l=V(e,s,o);return l.ref=n,l.ce=i,delete t.vnode.ce,l}const bn=e=>e.type.__isKeepAlive;function Qr(e,t){Ki(e,"a",t)}function Yr(e,t){Ki(e,"da",t)}function Ki(e,t,n=ye){const s=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(es(t,s,n),n){let o=n.parent;for(;o&&o.parent;)bn(o.parent.vnode)&&Jr(s,t,n,o),o=o.parent}}function Jr(e,t,n,s){const o=es(t,e,s,!0);gt(()=>{Ds(s[t],o)},n)}function es(e,t,n=ye,s=!1){if(n){const o=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...l)=>{if(n.isUnmounted)return;Jt(),Wt(n);const r=Re(t,n,e,l);return Vt(),Xt(),r});return s?o.unshift(i):o.push(i),i}}const ot=e=>(t,n=ye)=>(!Qt||e==="sp")&&es(e,(...s)=>t(...s),n),Xr=ot("bm"),Oe=ot("m"),Zr=ot("bu"),eo=ot("u"),qi=ot("bum"),gt=ot("um"),ea=ot("sp"),ta=ot("rtg"),na=ot("rtc");function sa(e,t=ye){es("ec",e,t)}function Qe(e,t,n,s){const o=e.dirs,i=t&&t.dirs;for(let l=0;lt(l,r,void 0,i&&i[r]));else{const l=Object.keys(e);o=new Array(l.length);for(let r=0,a=l.length;rRn(t)?!(t.type===Be||t.type===Z&&!Yi(t.children)):!0)?e:null}const Ss=e=>e?rl(e)?io(e)||e.proxy:Ss(e.parent):null,on=we(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Ss(e.parent),$root:e=>Ss(e.root),$emit:e=>e.emit,$options:e=>no(e),$forceUpdate:e=>e.f||(e.f=()=>Yn(e.update)),$nextTick:e=>e.n||(e.n=Zs.bind(e.proxy)),$watch:e=>zr.bind(e)}),ps=(e,t)=>e!==me&&!e.__isScriptSetup&&ie(e,t),oa={get({_:e},t){const{ctx:n,setupState:s,data:o,props:i,accessCache:l,type:r,appContext:a}=e;let u;if(t[0]!=="$"){const y=l[t];if(y!==void 0)switch(y){case 1:return s[t];case 2:return o[t];case 4:return n[t];case 3:return i[t]}else{if(ps(s,t))return l[t]=1,s[t];if(o!==me&&ie(o,t))return l[t]=2,o[t];if((u=e.propsOptions[0])&&ie(u,t))return l[t]=3,i[t];if(n!==me&&ie(n,t))return l[t]=4,n[t];Ts&&(l[t]=0)}}const f=on[t];let _,g;if(f)return t==="$attrs"&&Me(e,"get",t),f(e);if((_=r.__cssModules)&&(_=_[t]))return _;if(n!==me&&ie(n,t))return l[t]=4,n[t];if(g=a.config.globalProperties,ie(g,t))return g[t]},set({_:e},t,n){const{data:s,setupState:o,ctx:i}=e;return ps(o,t)?(o[t]=n,!0):s!==me&&ie(s,t)?(s[t]=n,!0):ie(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:o,propsOptions:i}},l){let r;return!!n[l]||e!==me&&ie(e,l)||ps(t,l)||(r=i[0])&&ie(r,l)||ie(s,l)||ie(on,l)||ie(o.config.globalProperties,l)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:ie(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};let Ts=!0;function ia(e){const t=no(e),n=e.proxy,s=e.ctx;Ts=!1,t.beforeCreate&&Mo(t.beforeCreate,e,"bc");const{data:o,computed:i,methods:l,watch:r,provide:a,inject:u,created:f,beforeMount:_,mounted:g,beforeUpdate:y,updated:T,activated:M,deactivated:K,beforeDestroy:m,beforeUnmount:C,destroyed:B,unmounted:Y,render:te,renderTracked:he,renderTriggered:oe,errorCaptured:N,serverPrefetch:ee,expose:J,inheritAttrs:re,components:O,directives:ne,filters:G}=t;if(u&&la(u,s,null,e.appContext.config.unwrapInjectedRef),l)for(const be in l){const pe=l[be];X(pe)&&(s[be]=pe.bind(n))}if(o){const be=o.call(n,n);ve(be)&&(e.data=Qn(be))}if(Ts=!0,i)for(const be in i){const pe=i[be],bt=X(pe)?pe.bind(n,n):X(pe.get)?pe.get.bind(n,n):ze,kn=!X(pe)&&X(pe.set)?pe.set.bind(n):ze,yt=z({get:bt,set:kn});Object.defineProperty(s,be,{enumerable:!0,configurable:!0,get:()=>yt.value,set:qe=>yt.value=qe})}if(r)for(const be in r)Ji(r[be],s,n,be);if(a){const be=X(a)?a.call(n):a;Reflect.ownKeys(be).forEach(pe=>{Dt(pe,be[pe])})}f&&Mo(f,e,"c");function de(be,pe){W(pe)?pe.forEach(bt=>be(bt.bind(n))):pe&&be(pe.bind(n))}if(de(Xr,_),de(Oe,g),de(Zr,y),de(eo,T),de(Qr,M),de(Yr,K),de(sa,N),de(na,he),de(ta,oe),de(qi,C),de(gt,Y),de(ea,ee),W(J))if(J.length){const be=e.exposed||(e.exposed={});J.forEach(pe=>{Object.defineProperty(be,pe,{get:()=>n[pe],set:bt=>n[pe]=bt})})}else e.exposed||(e.exposed={});te&&e.render===ze&&(e.render=te),re!=null&&(e.inheritAttrs=re),O&&(e.components=O),ne&&(e.directives=ne)}function la(e,t,n=ze,s=!1){W(e)&&(e=Vs(e));for(const o in e){const i=e[o];let l;ve(i)?"default"in i?l=Ke(i.from||o,i.default,!0):l=Ke(i.from||o):l=Ke(i),Pe(l)&&s?Object.defineProperty(t,o,{enumerable:!0,configurable:!0,get:()=>l.value,set:r=>l.value=r}):t[o]=l}}function Mo(e,t,n){Re(W(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Ji(e,t,n,s){const o=s.includes(".")?Gi(n,s):()=>n[s];if(ke(e)){const i=t[e];X(i)&&Je(o,i)}else if(X(e))Je(o,e.bind(n));else if(ve(e))if(W(e))e.forEach(i=>Ji(i,t,n,s));else{const i=X(e.handler)?e.handler.bind(n):t[e.handler];X(i)&&Je(o,i,e)}}function no(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:o,optionsCache:i,config:{optionMergeStrategies:l}}=e.appContext,r=i.get(t);let a;return r?a=r:!o.length&&!n&&!s?a=t:(a={},o.length&&o.forEach(u=>Fn(a,u,l,!0)),Fn(a,t,l)),ve(t)&&i.set(t,a),a}function Fn(e,t,n,s=!1){const{mixins:o,extends:i}=t;i&&Fn(e,i,n,!0),o&&o.forEach(l=>Fn(e,l,n,!0));for(const l in t)if(!(s&&l==="expose")){const r=ra[l]||n&&n[l];e[l]=r?r(e[l],t[l]):t[l]}return e}const ra={data:Ao,props:$t,emits:$t,methods:$t,computed:$t,beforeCreate:Te,created:Te,beforeMount:Te,mounted:Te,beforeUpdate:Te,updated:Te,beforeDestroy:Te,beforeUnmount:Te,destroyed:Te,unmounted:Te,activated:Te,deactivated:Te,errorCaptured:Te,serverPrefetch:Te,components:$t,directives:$t,watch:ca,provide:Ao,inject:aa};function Ao(e,t){return t?e?function(){return we(X(e)?e.call(this,this):e,X(t)?t.call(this,this):t)}:t:e}function aa(e,t){return $t(Vs(e),Vs(t))}function Vs(e){if(W(e)){const t={};for(let n=0;n0)&&!(l&16)){if(l&8){const f=e.vnode.dynamicProps;for(let _=0;_{a=!0;const[g,y]=Zi(_,t,!0);we(l,g),y&&r.push(...y)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!i&&!a)return ve(e)&&s.set(e,Ot),Ot;if(W(i))for(let f=0;f-1,y[1]=M<0||T-1||ie(y,"default"))&&r.push(_)}}}const u=[l,r];return ve(e)&&s.set(e,u),u}function Io(e){return e[0]!=="$"}function No(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:e===null?"null":""}function Bo(e,t){return No(e)===No(t)}function Oo(e,t){return W(t)?t.findIndex(n=>Bo(n,e)):X(t)&&Bo(t,e)?0:-1}const el=e=>e[0]==="_"||e==="$stable",so=e=>W(e)?e.map(Ge):[Ge(e)],fa=(e,t,n)=>{if(t._n)return t;const s=I((...o)=>so(t(...o)),n);return s._c=!1,s},tl=(e,t,n)=>{const s=e._ctx;for(const o in e){if(el(o))continue;const i=e[o];if(X(i))t[o]=fa(o,i,s);else if(i!=null){const l=so(i);t[o]=()=>l}}},nl=(e,t)=>{const n=so(t);e.slots.default=()=>n},ha=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=ae(t),In(t,"_",n)):tl(t,e.slots={})}else e.slots={},t&&nl(e,t);In(e.slots,ts,1)},pa=(e,t,n)=>{const{vnode:s,slots:o}=e;let i=!0,l=me;if(s.shapeFlag&32){const r=t._;r?n&&r===1?i=!1:(we(o,t),!n&&r===1&&delete o._):(i=!t.$stable,tl(t,o)),l=t}else t&&(nl(e,t),l={default:1});if(i)for(const r in o)!el(r)&&!(r in l)&&delete o[r]};function sl(){return{app:null,config:{isNativeTag:jl,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let _a=0;function ga(e,t){return function(s,o=null){X(s)||(s=Object.assign({},s)),o!=null&&!ve(o)&&(o=null);const i=sl(),l=new Set;let r=!1;const a=i.app={_uid:_a++,_component:s,_props:o,_container:null,_context:i,_instance:null,version:Fa,get config(){return i.config},set config(u){},use(u,...f){return l.has(u)||(u&&X(u.install)?(l.add(u),u.install(a,...f)):X(u)&&(l.add(u),u(a,...f))),a},mixin(u){return i.mixins.includes(u)||i.mixins.push(u),a},component(u,f){return f?(i.components[u]=f,a):i.components[u]},directive(u,f){return f?(i.directives[u]=f,a):i.directives[u]},mount(u,f,_){if(!r){const g=V(s,o);return g.appContext=i,f&&t?t(g,u):e(g,u,_),r=!0,a._container=u,u.__vue_app__=a,io(g.component)||g.component.proxy}},unmount(){r&&(e(null,a._container),delete a._container.__vue_app__)},provide(u,f){return i.provides[u]=f,a}};return a}}function Hn(e,t,n,s,o=!1){if(W(e)){e.forEach((g,y)=>Hn(g,t&&(W(t)?t[y]:t),n,s,o));return}if(Gt(s)&&!o)return;const i=s.shapeFlag&4?io(s.component)||s.component.proxy:s.el,l=o?null:i,{i:r,r:a}=e,u=t&&t.r,f=r.refs===me?r.refs={}:r.refs,_=r.setupState;if(u!=null&&u!==a&&(ke(u)?(f[u]=null,ie(_,u)&&(_[u]=null)):Pe(u)&&(u.value=null)),X(a))ht(a,r,12,[l,f]);else{const g=ke(a),y=Pe(a);if(g||y){const T=()=>{if(e.f){const M=g?ie(_,a)?_[a]:f[a]:a.value;o?W(M)&&Ds(M,i):W(M)?M.includes(i)||M.push(i):g?(f[a]=[i],ie(_,a)&&(_[a]=f[a])):(a.value=[i],e.k&&(f[e.k]=a.value))}else g?(f[a]=l,ie(_,a)&&(_[a]=l)):y&&(a.value=l,e.k&&(f[e.k]=l))};l?(T.id=-1,Ee(T,n)):T()}}}let rt=!1;const Tn=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",Vn=e=>e.nodeType===8;function va(e){const{mt:t,p:n,o:{patchProp:s,createText:o,nextSibling:i,parentNode:l,remove:r,insert:a,createComment:u}}=e,f=(m,C)=>{if(!C.hasChildNodes()){n(null,m,C),Bn(),C._vnode=m;return}rt=!1,_(C.firstChild,m,null,null,null),Bn(),C._vnode=m,rt&&console.error("Hydration completed but contains mismatches.")},_=(m,C,B,Y,te,he=!1)=>{const oe=Vn(m)&&m.data==="[",N=()=>M(m,C,B,Y,te,oe),{type:ee,ref:J,shapeFlag:re,patchFlag:O}=C;let ne=m.nodeType;C.el=m,O===-2&&(he=!1,C.dynamicChildren=null);let G=null;switch(ee){case qt:ne!==3?C.children===""?(a(C.el=o(""),l(m),m),G=m):G=N():(m.data!==C.children&&(rt=!0,m.data=C.children),G=i(m));break;case Be:ne!==8||oe?G=N():G=i(m);break;case Ut:if(oe&&(m=i(m),ne=m.nodeType),ne===1||ne===3){G=m;const Ae=!C.children.length;for(let de=0;de{he=he||!!C.dynamicChildren;const{type:oe,props:N,patchFlag:ee,shapeFlag:J,dirs:re}=C,O=oe==="input"&&re||oe==="option";if(O||ee!==-1){if(re&&Qe(C,null,B,"created"),N)if(O||!he||ee&48)for(const G in N)(O&&G.endsWith("value")||vn(G)&&!nn(G))&&s(m,G,null,N[G],!1,void 0,B);else N.onClick&&s(m,"onClick",null,N.onClick,!1,void 0,B);let ne;if((ne=N&&N.onVnodeBeforeMount)&&He(ne,B,C),re&&Qe(C,null,B,"beforeMount"),((ne=N&&N.onVnodeMounted)||re)&&Ri(()=>{ne&&He(ne,B,C),re&&Qe(C,null,B,"mounted")},Y),J&16&&!(N&&(N.innerHTML||N.textContent))){let G=y(m.firstChild,C,m,B,Y,te,he);for(;G;){rt=!0;const Ae=G;G=G.nextSibling,r(Ae)}}else J&8&&m.textContent!==C.children&&(rt=!0,m.textContent=C.children)}return m.nextSibling},y=(m,C,B,Y,te,he,oe)=>{oe=oe||!!C.dynamicChildren;const N=C.children,ee=N.length;for(let J=0;J{const{slotScopeIds:oe}=C;oe&&(te=te?te.concat(oe):oe);const N=l(m),ee=y(i(m),C,N,B,Y,te,he);return ee&&Vn(ee)&&ee.data==="]"?i(C.anchor=ee):(rt=!0,a(C.anchor=u("]"),N,ee),ee)},M=(m,C,B,Y,te,he)=>{if(rt=!0,C.el=null,he){const ee=K(m);for(;;){const J=i(m);if(J&&J!==ee)r(J);else break}}const oe=i(m),N=l(m);return r(m),n(null,C,N,oe,B,Y,Tn(N),te),oe},K=m=>{let C=0;for(;m;)if(m=i(m),m&&Vn(m)&&(m.data==="["&&C++,m.data==="]")){if(C===0)return i(m);C--}return m};return[f,_]}const Ee=Ri;function ma(e){return ba(e,va)}function ba(e,t){const n=Xl();n.__VUE__=!0;const{insert:s,remove:o,patchProp:i,createElement:l,createText:r,createComment:a,setText:u,setElementText:f,parentNode:_,nextSibling:g,setScopeId:y=ze,insertStaticContent:T}=e,M=(c,d,v,w=null,x=null,L=null,A=!1,P=null,E=!!d.dynamicChildren)=>{if(c===d)return;c&&!Pt(c,d)&&(w=xn(c),qe(c,x,L,!0),c=null),d.patchFlag===-2&&(E=!1,d.dynamicChildren=null);const{type:$,ref:U,shapeFlag:F}=d;switch($){case qt:K(c,d,v,w);break;case Be:m(c,d,v,w);break;case Ut:c==null&&C(d,v,w,A);break;case Z:O(c,d,v,w,x,L,A,P,E);break;default:F&1?te(c,d,v,w,x,L,A,P,E):F&6?ne(c,d,v,w,x,L,A,P,E):(F&64||F&128)&&$.process(c,d,v,w,x,L,A,P,E,It)}U!=null&&x&&Hn(U,c&&c.ref,L,d||c,!d)},K=(c,d,v,w)=>{if(c==null)s(d.el=r(d.children),v,w);else{const x=d.el=c.el;d.children!==c.children&&u(x,d.children)}},m=(c,d,v,w)=>{c==null?s(d.el=a(d.children||""),v,w):d.el=c.el},C=(c,d,v,w)=>{[c.el,c.anchor]=T(c.children,d,v,w,c.el,c.anchor)},B=({el:c,anchor:d},v,w)=>{let x;for(;c&&c!==d;)x=g(c),s(c,v,w),c=x;s(d,v,w)},Y=({el:c,anchor:d})=>{let v;for(;c&&c!==d;)v=g(c),o(c),c=v;o(d)},te=(c,d,v,w,x,L,A,P,E)=>{A=A||d.type==="svg",c==null?he(d,v,w,x,L,A,P,E):ee(c,d,x,L,A,P,E)},he=(c,d,v,w,x,L,A,P)=>{let E,$;const{type:U,props:F,shapeFlag:j,transition:Q,dirs:se}=c;if(E=c.el=l(c.type,L,F&&F.is,F),j&8?f(E,c.children):j&16&&N(c.children,E,null,w,x,L&&U!=="foreignObject",A,P),se&&Qe(c,null,w,"created"),oe(E,c,c.scopeId,A,w),F){for(const fe in F)fe!=="value"&&!nn(fe)&&i(E,fe,null,F[fe],L,c.children,w,x,tt);"value"in F&&i(E,"value",null,F.value),($=F.onVnodeBeforeMount)&&He($,w,c)}se&&Qe(c,null,w,"beforeMount");const _e=(!x||x&&!x.pendingBranch)&&Q&&!Q.persisted;_e&&Q.beforeEnter(E),s(E,d,v),(($=F&&F.onVnodeMounted)||_e||se)&&Ee(()=>{$&&He($,w,c),_e&&Q.enter(E),se&&Qe(c,null,w,"mounted")},x)},oe=(c,d,v,w,x)=>{if(v&&y(c,v),w)for(let L=0;L{for(let $=E;${const P=d.el=c.el;let{patchFlag:E,dynamicChildren:$,dirs:U}=d;E|=c.patchFlag&16;const F=c.props||me,j=d.props||me;let Q;v&&kt(v,!1),(Q=j.onVnodeBeforeUpdate)&&He(Q,v,d,c),U&&Qe(d,c,v,"beforeUpdate"),v&&kt(v,!0);const se=x&&d.type!=="foreignObject";if($?J(c.dynamicChildren,$,P,v,w,se,L):A||pe(c,d,P,null,v,w,se,L,!1),E>0){if(E&16)re(P,d,F,j,v,w,x);else if(E&2&&F.class!==j.class&&i(P,"class",null,j.class,x),E&4&&i(P,"style",F.style,j.style,x),E&8){const _e=d.dynamicProps;for(let fe=0;fe<_e.length;fe++){const xe=_e[fe],De=F[xe],Nt=j[xe];(Nt!==De||xe==="value")&&i(P,xe,De,Nt,x,c.children,v,w,tt)}}E&1&&c.children!==d.children&&f(P,d.children)}else!A&&$==null&&re(P,d,F,j,v,w,x);((Q=j.onVnodeUpdated)||U)&&Ee(()=>{Q&&He(Q,v,d,c),U&&Qe(d,c,v,"updated")},w)},J=(c,d,v,w,x,L,A)=>{for(let P=0;P{if(v!==w){if(v!==me)for(const P in v)!nn(P)&&!(P in w)&&i(c,P,v[P],null,A,d.children,x,L,tt);for(const P in w){if(nn(P))continue;const E=w[P],$=v[P];E!==$&&P!=="value"&&i(c,P,$,E,A,d.children,x,L,tt)}"value"in w&&i(c,"value",v.value,w.value)}},O=(c,d,v,w,x,L,A,P,E)=>{const $=d.el=c?c.el:r(""),U=d.anchor=c?c.anchor:r("");let{patchFlag:F,dynamicChildren:j,slotScopeIds:Q}=d;Q&&(P=P?P.concat(Q):Q),c==null?(s($,v,w),s(U,v,w),N(d.children,v,U,x,L,A,P,E)):F>0&&F&64&&j&&c.dynamicChildren?(J(c.dynamicChildren,j,v,x,L,A,P),(d.key!=null||x&&d===x.subTree)&&ol(c,d,!0)):pe(c,d,v,U,x,L,A,P,E)},ne=(c,d,v,w,x,L,A,P,E)=>{d.slotScopeIds=P,c==null?d.shapeFlag&512?x.ctx.activate(d,v,w,A,E):G(d,v,w,x,L,A,E):Ae(c,d,E)},G=(c,d,v,w,x,L,A)=>{const P=c.component=Sa(c,w,x);if(bn(c)&&(P.ctx.renderer=It),Ta(P),P.asyncDep){if(x&&x.registerDep(P,de),!c.el){const E=P.subTree=V(Be);m(null,E,d,v)}return}de(P,c,d,v,x,L,A)},Ae=(c,d,v)=>{const w=d.component=c.component;if(Gr(c,d,v))if(w.asyncDep&&!w.asyncResolved){be(w,d,v);return}else w.next=d,Br(w.update),w.update();else d.el=c.el,w.vnode=d},de=(c,d,v,w,x,L,A)=>{const P=()=>{if(c.isMounted){let{next:U,bu:F,u:j,parent:Q,vnode:se}=c,_e=U,fe;kt(c,!1),U?(U.el=se.el,be(c,U,A)):U=se,F&&us(F),(fe=U.props&&U.props.onVnodeBeforeUpdate)&&He(fe,Q,U,se),kt(c,!0);const xe=ds(c),De=c.subTree;c.subTree=xe,M(De,xe,_(De.el),xn(De),c,x,L),U.el=xe.el,_e===null&&Ur(c,xe.el),j&&Ee(j,x),(fe=U.props&&U.props.onVnodeUpdated)&&Ee(()=>He(fe,Q,U,se),x)}else{let U;const{el:F,props:j}=d,{bm:Q,m:se,parent:_e}=c,fe=Gt(d);if(kt(c,!1),Q&&us(Q),!fe&&(U=j&&j.onVnodeBeforeMount)&&He(U,_e,d),kt(c,!0),F&&as){const xe=()=>{c.subTree=ds(c),as(F,c.subTree,c,x,null)};fe?d.type.__asyncLoader().then(()=>!c.isUnmounted&&xe()):xe()}else{const xe=c.subTree=ds(c);M(null,xe,v,w,c,x,L),d.el=xe.el}if(se&&Ee(se,x),!fe&&(U=j&&j.onVnodeMounted)){const xe=d;Ee(()=>He(U,_e,xe),x)}(d.shapeFlag&256||_e&&Gt(_e.vnode)&&_e.vnode.shapeFlag&256)&&c.a&&Ee(c.a,x),c.isMounted=!0,d=v=w=null}},E=c.effect=new zs(P,()=>Yn($),c.scope),$=c.update=()=>E.run();$.id=c.uid,kt(c,!0),$()},be=(c,d,v)=>{d.component=c;const w=c.vnode.props;c.vnode=d,c.next=null,da(c,d.props,w,v),pa(c,d.children,v),Jt(),So(),Xt()},pe=(c,d,v,w,x,L,A,P,E=!1)=>{const $=c&&c.children,U=c?c.shapeFlag:0,F=d.children,{patchFlag:j,shapeFlag:Q}=d;if(j>0){if(j&128){kn($,F,v,w,x,L,A,P,E);return}else if(j&256){bt($,F,v,w,x,L,A,P,E);return}}Q&8?(U&16&&tt($,x,L),F!==$&&f(v,F)):U&16?Q&16?kn($,F,v,w,x,L,A,P,E):tt($,x,L,!0):(U&8&&f(v,""),Q&16&&N(F,v,w,x,L,A,P,E))},bt=(c,d,v,w,x,L,A,P,E)=>{c=c||Ot,d=d||Ot;const $=c.length,U=d.length,F=Math.min($,U);let j;for(j=0;jU?tt(c,x,L,!0,!1,F):N(d,v,w,x,L,A,P,E,F)},kn=(c,d,v,w,x,L,A,P,E)=>{let $=0;const U=d.length;let F=c.length-1,j=U-1;for(;$<=F&&$<=j;){const Q=c[$],se=d[$]=E?ut(d[$]):Ge(d[$]);if(Pt(Q,se))M(Q,se,v,null,x,L,A,P,E);else break;$++}for(;$<=F&&$<=j;){const Q=c[F],se=d[j]=E?ut(d[j]):Ge(d[j]);if(Pt(Q,se))M(Q,se,v,null,x,L,A,P,E);else break;F--,j--}if($>F){if($<=j){const Q=j+1,se=Qj)for(;$<=F;)qe(c[$],x,L,!0),$++;else{const Q=$,se=$,_e=new Map;for($=se;$<=j;$++){const Ie=d[$]=E?ut(d[$]):Ge(d[$]);Ie.key!=null&&_e.set(Ie.key,$)}let fe,xe=0;const De=j-se+1;let Nt=!1,vo=0;const Zt=new Array(De);for($=0;$=De){qe(Ie,x,L,!0);continue}let We;if(Ie.key!=null)We=_e.get(Ie.key);else for(fe=se;fe<=j;fe++)if(Zt[fe-se]===0&&Pt(Ie,d[fe])){We=fe;break}We===void 0?qe(Ie,x,L,!0):(Zt[We-se]=$+1,We>=vo?vo=We:Nt=!0,M(Ie,d[We],v,null,x,L,A,P,E),xe++)}const mo=Nt?ya(Zt):Ot;for(fe=mo.length-1,$=De-1;$>=0;$--){const Ie=se+$,We=d[Ie],bo=Ie+1{const{el:L,type:A,transition:P,children:E,shapeFlag:$}=c;if($&6){yt(c.component.subTree,d,v,w);return}if($&128){c.suspense.move(d,v,w);return}if($&64){A.move(c,d,v,It);return}if(A===Z){s(L,d,v);for(let F=0;FP.enter(L),x);else{const{leave:F,delayLeave:j,afterLeave:Q}=P,se=()=>s(L,d,v),_e=()=>{F(L,()=>{se(),Q&&Q()})};j?j(L,se,_e):_e()}else s(L,d,v)},qe=(c,d,v,w=!1,x=!1)=>{const{type:L,props:A,ref:P,children:E,dynamicChildren:$,shapeFlag:U,patchFlag:F,dirs:j}=c;if(P!=null&&Hn(P,null,v,c,!0),U&256){d.ctx.deactivate(c);return}const Q=U&1&&j,se=!Gt(c);let _e;if(se&&(_e=A&&A.onVnodeBeforeUnmount)&&He(_e,d,c),U&6)Ol(c.component,v,w);else{if(U&128){c.suspense.unmount(v,w);return}Q&&Qe(c,null,d,"beforeUnmount"),U&64?c.type.remove(c,d,v,x,It,w):$&&(L!==Z||F>0&&F&64)?tt($,d,v,!1,!0):(L===Z&&F&384||!x&&U&16)&&tt(E,d,v),w&&_o(c)}(se&&(_e=A&&A.onVnodeUnmounted)||Q)&&Ee(()=>{_e&&He(_e,d,c),Q&&Qe(c,null,d,"unmounted")},v)},_o=c=>{const{type:d,el:v,anchor:w,transition:x}=c;if(d===Z){Bl(v,w);return}if(d===Ut){Y(c);return}const L=()=>{o(v),x&&!x.persisted&&x.afterLeave&&x.afterLeave()};if(c.shapeFlag&1&&x&&!x.persisted){const{leave:A,delayLeave:P}=x,E=()=>A(v,L);P?P(c.el,L,E):E()}else L()},Bl=(c,d)=>{let v;for(;c!==d;)v=g(c),o(c),c=v;o(d)},Ol=(c,d,v)=>{const{bum:w,scope:x,update:L,subTree:A,um:P}=c;w&&us(w),x.stop(),L&&(L.active=!1,qe(A,c,d,v)),P&&Ee(P,d),Ee(()=>{c.isUnmounted=!0},d),d&&d.pendingBranch&&!d.isUnmounted&&c.asyncDep&&!c.asyncResolved&&c.suspenseId===d.pendingId&&(d.deps--,d.deps===0&&d.resolve())},tt=(c,d,v,w=!1,x=!1,L=0)=>{for(let A=L;Ac.shapeFlag&6?xn(c.component.subTree):c.shapeFlag&128?c.suspense.next():g(c.anchor||c.el),go=(c,d,v)=>{c==null?d._vnode&&qe(d._vnode,null,null,!0):M(d._vnode||null,c,d,null,null,null,v),So(),Bn(),d._vnode=c},It={p:M,um:qe,m:yt,r:_o,mt:G,mc:N,pc:pe,pbc:J,n:xn,o:e};let rs,as;return t&&([rs,as]=t(It)),{render:go,hydrate:rs,createApp:ga(go,rs)}}function kt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function ol(e,t,n=!1){const s=e.children,o=t.children;if(W(s)&&W(o))for(let i=0;i>1,e[n[r]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,l=n[i-1];i-- >0;)n[i]=l,l=t[l];return n}const ka=e=>e.__isTeleport,Z=Symbol(void 0),qt=Symbol(void 0),Be=Symbol(void 0),Ut=Symbol(void 0),ln=[];let je=null;function h(e=!1){ln.push(je=e?null:[])}function xa(){ln.pop(),je=ln[ln.length-1]||null}let pn=1;function Fo(e){pn+=e}function il(e){return e.dynamicChildren=pn>0?je||Ot:null,xa(),pn>0&&je&&je.push(e),e}function b(e,t,n,s,o,i){return il(k(e,t,n,s,o,i,!0))}function q(e,t,n,s,o){return il(V(e,t,n,s,o,!0))}function Rn(e){return e?e.__v_isVNode===!0:!1}function Pt(e,t){return e.type===t.type&&e.key===t.key}const ts="__vInternal",ll=({key:e})=>e??null,Mn=({ref:e,ref_key:t,ref_for:n})=>e!=null?ke(e)||Pe(e)||X(e)?{i:Le,r:e,k:t,f:!!n}:e:null;function k(e,t=null,n=null,s=0,o=null,i=e===Z?0:1,l=!1,r=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ll(t),ref:t&&Mn(t),scopeId:Xn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:Le};return r?(oo(a,n),i&128&&e.normalize(a)):n&&(a.shapeFlag|=ke(n)?8:16),pn>0&&!l&&je&&(a.patchFlag>0||i&6)&&a.patchFlag!==32&&je.push(a),a}const V=wa;function wa(e,t=null,n=null,s=0,o=null,i=!1){if((!e||e===Wi)&&(e=Be),Rn(e)){const r=_t(e,t,!0);return n&&oo(r,n),pn>0&&!i&&je&&(r.shapeFlag&6?je[je.indexOf(e)]=r:je.push(r)),r.patchFlag|=-2,r}if(Aa(e)&&(e=e.__vccOpts),t){t=$a(t);let{class:r,style:a}=t;r&&!ke(r)&&(t.class=ge(r)),ve(a)&&(Vi(a)&&!W(a)&&(a=we({},a)),t.style=Hs(a))}const l=ke(e)?1:jr(e)?128:ka(e)?64:ve(e)?4:X(e)?2:0;return k(e,t,n,s,o,l,i,!0)}function $a(e){return e?Vi(e)||ts in e?we({},e):e:null}function _t(e,t,n=!1){const{props:s,ref:o,patchFlag:i,children:l}=e,r=t?An(s||{},t):s;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:r,key:r&&ll(r),ref:t&&t.ref?n&&o?W(o)?o.concat(Mn(t)):[o,Mn(t)]:Mn(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Z?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&_t(e.ssContent),ssFallback:e.ssFallback&&_t(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function Se(e=" ",t=0){return V(qt,null,e,t)}function Ca(e,t){const n=V(Ut,null,e);return n.staticCount=t,n}function D(e="",t=!1){return t?(h(),q(Be,null,e)):V(Be,null,e)}function Ge(e){return e==null||typeof e=="boolean"?V(Be):W(e)?V(Z,null,e.slice()):typeof e=="object"?ut(e):V(qt,null,String(e))}function ut(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:_t(e)}function oo(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(W(t))n=16;else if(typeof t=="object")if(s&65){const o=t.default;o&&(o._c&&(o._d=!1),oo(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!(ts in t)?t._ctx=Le:o===3&&Le&&(Le.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else X(t)?(t={default:t,_ctx:Le},n=32):(t=String(t),s&64?(n=16,t=[Se(t)]):n=8);e.children=t,e.shapeFlag|=n}function An(...e){const t={};for(let n=0;nye||Le,Wt=e=>{ye=e,e.scope.on()},Vt=()=>{ye&&ye.scope.off(),ye=null};function rl(e){return e.vnode.shapeFlag&4}let Qt=!1;function Ta(e,t=!1){Qt=t;const{props:n,children:s}=e.vnode,o=rl(e);ua(e,n,o,t),ha(e,s);const i=o?Va(e,t):void 0;return Qt=!1,i}function Va(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=sn(new Proxy(e.ctx,oa));const{setup:s}=n;if(s){const o=e.setupContext=s.length>1?cl(e):null;Wt(e),Jt();const i=ht(s,e,0,[e.props,o]);if(Xt(),Vt(),gi(i)){if(i.then(Vt,Vt),t)return i.then(l=>{Ho(e,l,t)}).catch(l=>{mn(l,e,0)});e.asyncDep=i}else Ho(e,i,t)}else al(e,t)}function Ho(e,t,n){X(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ve(t)&&(e.setupState=Ii(t)),al(e,n)}let Ro;function al(e,t,n){const s=e.type;if(!e.render){if(!t&&Ro&&!s.render){const o=s.template||no(e).template;if(o){const{isCustomElement:i,compilerOptions:l}=e.appContext.config,{delimiters:r,compilerOptions:a}=s,u=we(we({isCustomElement:i,delimiters:r},l),a);s.render=Ro(o,u)}}e.render=s.render||ze}Wt(e),Jt(),ia(e),Xt(),Vt()}function Ea(e){return new Proxy(e.attrs,{get(t,n){return Me(e,"get","$attrs"),t[n]}})}function cl(e){const t=s=>{e.exposed=s||{}};let n;return{get attrs(){return n||(n=Ea(e))},slots:e.slots,emit:e.emit,expose:t}}function io(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Ii(sn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in on)return on[n](e)},has(t,n){return n in t||n in on}}))}function Ma(e,t=!0){return X(e)?e.displayName||e.name:e.name||t&&e.__name}function Aa(e){return X(e)&&"__vccOpts"in e}const z=(e,t)=>Ar(e,t,Qt);function Ia(){return Na().slots}function Na(){const e=ns();return e.setupContext||(e.setupContext=cl(e))}function Dn(e,t,n){const s=arguments.length;return s===2?ve(t)&&!W(t)?Rn(t)?V(e,null,[t]):V(e,t):V(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&Rn(n)&&(n=[n]),V(e,t,n))}const Ba=Symbol(""),Oa=()=>Ke(Ba),Fa="3.2.47",Ha="http://www.w3.org/2000/svg",Lt=typeof document<"u"?document:null,Do=Lt&&Lt.createElement("template"),Ra={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const o=t?Lt.createElementNS(Ha,e):Lt.createElement(e,n?{is:n}:void 0);return e==="select"&&s&&s.multiple!=null&&o.setAttribute("multiple",s.multiple),o},createText:e=>Lt.createTextNode(e),createComment:e=>Lt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Lt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,o,i){const l=n?n.previousSibling:t.lastChild;if(o&&(o===i||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===i||!(o=o.nextSibling)););else{Do.innerHTML=s?`${e}`:e;const r=Do.content;if(s){const a=r.firstChild;for(;a.firstChild;)r.appendChild(a.firstChild);r.removeChild(a)}t.insertBefore(r,n)}return[l?l.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function Da(e,t,n){const s=e._vtc;s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function Ga(e,t,n){const s=e.style,o=ke(n);if(n&&!o){if(t&&!ke(t))for(const i in t)n[i]==null&&Ms(s,i,"");for(const i in n)Ms(s,i,n[i])}else{const i=s.display;o?t!==n&&(s.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(s.display=i)}}const Go=/\s*!important$/;function Ms(e,t,n){if(W(n))n.forEach(s=>Ms(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Ua(e,t);Go.test(n)?e.setProperty(Yt(s),n.replace(Go,""),"important"):e[s]=n}}const Uo=["Webkit","Moz","ms"],_s={};function Ua(e,t){const n=_s[t];if(n)return n;let s=Xe(t);if(s!=="filter"&&s in e)return _s[t]=s;s=qn(s);for(let o=0;ogs||(Ya.then(()=>gs=0),gs=Date.now());function Xa(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Re(Za(s,n.value),t,5,[s])};return n.value=e,n.attached=Ja(),n}function Za(e,t){if(W(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>o=>!o._stopped&&s&&s(o))}else return t}const Ko=/^on[a-z]/,ec=(e,t,n,s,o=!1,i,l,r,a)=>{t==="class"?Da(e,s,o):t==="style"?Ga(e,n,s):vn(t)?Rs(t)||Wa(e,t,n,s,l):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):tc(e,t,s,o))?za(e,t,s,i,l,r,a):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),ja(e,t,s,o))};function tc(e,t,n,s){return s?!!(t==="innerHTML"||t==="textContent"||t in e&&Ko.test(t)&&X(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||Ko.test(t)&&ke(n)?!1:t in e}function nc(e){const t=ns();if(!t)return;const n=t.ut=(o=e(t.proxy))=>{Array.from(document.querySelectorAll(`[data-v-owner="${t.uid}"]`)).forEach(i=>Is(i,o))},s=()=>{const o=e(t.proxy);As(t.subTree,o),n(o)};Di(s),Oe(()=>{const o=new MutationObserver(s);o.observe(t.subTree.el.parentNode,{childList:!0}),gt(()=>o.disconnect())})}function As(e,t){if(e.shapeFlag&128){const n=e.suspense;e=n.activeBranch,n.pendingBranch&&!n.isHydrating&&n.effects.push(()=>{As(n.activeBranch,t)})}for(;e.component;)e=e.component.subTree;if(e.shapeFlag&1&&e.el)Is(e.el,t);else if(e.type===Z)e.children.forEach(n=>As(n,t));else if(e.type===Ut){let{el:n,anchor:s}=e;for(;n&&(Is(n,t),n!==s);)n=n.nextSibling}}function Is(e,t){if(e.nodeType===1){const n=e.style;for(const s in t)n.setProperty(`--${s}`,t[s])}}const at="transition",en="animation",ss=(e,{slots:t})=>Dn(Ui,sc(e),t);ss.displayName="Transition";const ul={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};ss.props=we({},Ui.props,ul);const xt=(e,t=[])=>{W(e)?e.forEach(n=>n(...t)):e&&e(...t)},qo=e=>e?W(e)?e.some(t=>t.length>1):e.length>1:!1;function sc(e){const t={};for(const O in e)O in ul||(t[O]=e[O]);if(e.css===!1)return t;const{name:n="v",type:s,duration:o,enterFromClass:i=`${n}-enter-from`,enterActiveClass:l=`${n}-enter-active`,enterToClass:r=`${n}-enter-to`,appearFromClass:a=i,appearActiveClass:u=l,appearToClass:f=r,leaveFromClass:_=`${n}-leave-from`,leaveActiveClass:g=`${n}-leave-active`,leaveToClass:y=`${n}-leave-to`}=e,T=oc(o),M=T&&T[0],K=T&&T[1],{onBeforeEnter:m,onEnter:C,onEnterCancelled:B,onLeave:Y,onLeaveCancelled:te,onBeforeAppear:he=m,onAppear:oe=C,onAppearCancelled:N=B}=t,ee=(O,ne,G)=>{wt(O,ne?f:r),wt(O,ne?u:l),G&&G()},J=(O,ne)=>{O._isLeaving=!1,wt(O,_),wt(O,y),wt(O,g),ne&&ne()},re=O=>(ne,G)=>{const Ae=O?oe:C,de=()=>ee(ne,O,G);xt(Ae,[ne,de]),Wo(()=>{wt(ne,O?a:i),ct(ne,O?f:r),qo(Ae)||Qo(ne,s,M,de)})};return we(t,{onBeforeEnter(O){xt(m,[O]),ct(O,i),ct(O,l)},onBeforeAppear(O){xt(he,[O]),ct(O,a),ct(O,u)},onEnter:re(!1),onAppear:re(!0),onLeave(O,ne){O._isLeaving=!0;const G=()=>J(O,ne);ct(O,_),rc(),ct(O,g),Wo(()=>{O._isLeaving&&(wt(O,_),ct(O,y),qo(Y)||Qo(O,s,K,G))}),xt(Y,[O,G])},onEnterCancelled(O){ee(O,!1),xt(B,[O])},onAppearCancelled(O){ee(O,!0),xt(N,[O])},onLeaveCancelled(O){J(O),xt(te,[O])}})}function oc(e){if(e==null)return null;if(ve(e))return[vs(e.enter),vs(e.leave)];{const t=vs(e);return[t,t]}}function vs(e){return Jl(e)}function ct(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e._vtc||(e._vtc=new Set)).add(t)}function wt(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function Wo(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let ic=0;function Qo(e,t,n,s){const o=e._endId=++ic,i=()=>{o===e._endId&&s()};if(n)return setTimeout(i,n);const{type:l,timeout:r,propCount:a}=lc(e,t);if(!l)return s();const u=l+"end";let f=0;const _=()=>{e.removeEventListener(u,g),i()},g=y=>{y.target===e&&++f>=a&&_()};setTimeout(()=>{f(n[T]||"").split(", "),o=s(`${at}Delay`),i=s(`${at}Duration`),l=Yo(o,i),r=s(`${en}Delay`),a=s(`${en}Duration`),u=Yo(r,a);let f=null,_=0,g=0;t===at?l>0&&(f=at,_=l,g=i.length):t===en?u>0&&(f=en,_=u,g=a.length):(_=Math.max(l,u),f=_>0?l>u?at:en:null,g=f?f===at?i.length:a.length:0);const y=f===at&&/\b(transform|all)(,|$)/.test(s(`${at}Property`).toString());return{type:f,timeout:_,propCount:g,hasTransform:y}}function Yo(e,t){for(;e.lengthJo(n)+Jo(e[s])))}function Jo(e){return Number(e.slice(0,-1).replace(",","."))*1e3}function rc(){return document.body.offsetHeight}const ac=["ctrl","shift","alt","meta"],cc={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>ac.some(n=>e[`${n}Key`]&&!t.includes(n))},uc=(e,t)=>(n,...s)=>{for(let o=0;o{const t=fc().createApp(...e),{mount:n}=t;return t.mount=s=>{const o=pc(s);if(o)return n(o,!0,o instanceof SVGElement)},t};function pc(e){return ke(e)?document.querySelector(e):e}const H=(e,t)=>{const n=e.__vccOpts||e;for(const[s,o]of t)n[s]=o;return n},_c="modulepreload",gc=function(e){return"/static-blog/"+e},Zo={},dl=function(t,n,s){if(!n||n.length===0)return t();const o=document.getElementsByTagName("link");return Promise.all(n.map(i=>{if(i=gc(i),i in Zo)return;Zo[i]=!0;const l=i.endsWith(".css"),r=l?'[rel="stylesheet"]':"";if(!!s)for(let f=o.length-1;f>=0;f--){const _=o[f];if(_.href===i&&(!l||_.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${i}"]${r}`))return;const u=document.createElement("link");if(u.rel=l?"stylesheet":_c,l||(u.as="script",u.crossOrigin=""),u.href=i,document.head.appendChild(u),l)return new Promise((f,_)=>{u.addEventListener("load",f),u.addEventListener("error",()=>_(new Error(`Unable to preload CSS for ${i}`)))})})).then(()=>t())};const vc=R({__name:"VPBadge",props:{text:null,type:null},setup(e){return(t,n)=>(h(),b("span",{class:ge(["VPBadge",e.type??"tip"])},[S(t.$slots,"default",{},()=>[Se(ce(e.text),1)],!0)],2))}});const mc=H(vc,[["__scopeId","data-v-9ecb65e4"]]),bc=JSON.parse('{"lang":"en-US","dir":"ltr","title":"mx52jing","description":"mx52jing的博客","base":"/static-blog/","head":[],"appearance":true,"themeConfig":{"siteTitle":"mx52jing","smoothScroll":true,"nav":[{"text":"首页","link":"/"},{"text":"随手一记","link":"/hand-notes/JavaScript/数字四舍五入"},{"text":"知识沉淀","link":"/knowledge-deposition/前端工程化/Babel/Babel基础"},{"text":"算法","link":"/algorithm/LeetCode刷题/1-两数之和"},{"text":"收藏夹","link":"/favorites/CSS/"}],"sidebar":{"/hand-notes/":[{"text":"JavaScript","collapsible":false,"collapsed":false,"items":[{"text":"数字四舍五入","link":"/hand-notes/JavaScript/数字四舍五入"},{"text":"根据生日计算年龄","link":"/hand-notes/JavaScript/根据生日计算年龄"},{"text":"控制并发执行函数","link":"/hand-notes/JavaScript/控制并发执行函数"},{"text":"随机数的应用","link":"/hand-notes/JavaScript/随机数的应用"},{"text":"判断字母大小写","link":"/hand-notes/JavaScript/判断字母大小写"}]},{"text":"React","collapsible":false,"collapsed":false,"items":[{"text":"ProComponents","collapsible":false,"collapsed":false,"items":[{"text":"ProTable","link":"/hand-notes/React/ProComponents/ProTable"}]}]},{"text":"Chart","collapsible":false,"collapsed":false,"items":[{"text":"AntVF2","collapsible":false,"collapsed":false,"items":[{"text":"使用小记","link":"/hand-notes/Chart/AntVF2/使用小记"}]}]},{"text":"CSS","collapsible":true,"collapsed":false,"items":[{"text":"CSS实现文字渐变","link":"/hand-notes/CSS/CSS实现文字渐变"},{"text":"CSS实现突出不同颜色的圆角","link":"/hand-notes/CSS/CSS实现突出不同颜色的圆角"},{"text":"CSS计数器-counter","link":"/hand-notes/CSS/CSS计数器-counter"},{"text":"CSS模拟数字loading","link":"/hand-notes/CSS/CSS模拟数字loading"},{"text":"实现高度过渡","link":"/hand-notes/CSS/实现高度过渡"},{"text":"CSS实现类似微信头像效果","link":"/hand-notes/CSS/CSS实现类似微信头像效果"},{"text":"虚线边框","link":"/hand-notes/CSS/虚线边框"},{"text":"图片加载出错样式设置","link":"/hand-notes/CSS/图片加载出错样式设置"},{"text":"Tabs圆角","link":"/hand-notes/CSS/Tabs圆角"}]},{"text":"Sass","collapsible":false,"collapsed":false,"items":[{"text":"sass小技巧","link":"/hand-notes/Sass/sass小技巧"},{"text":"通过mixin简化响应式代码","link":"/hand-notes/Sass/通过mixin简化响应式代码"},{"text":"sass实现星空效果","link":"/hand-notes/Sass/sass实现星空效果"},{"text":"小球交互loading","link":"/hand-notes/Sass/小球交互loading"}]},{"text":"Canvas","collapsible":false,"collapsed":false,"items":[{"text":"绘制图片不清晰问题","link":"/hand-notes/Canvas/绘制图片不清晰问题"}]},{"text":"Linux","collapsible":false,"collapsed":false,"items":[{"text":"Bash实用方法","link":"/hand-notes/Linux/practice-method"},{"text":"图片压缩和格式转换","link":"/hand-notes/Linux/图片压缩和格式转换"},{"text":"计算升级版本号","link":"/hand-notes/Linux/计算升级版本号"},{"text":"文件压缩","link":"/hand-notes/Linux/文件压缩"},{"text":"用户操作相关","link":"/hand-notes/Linux/用户操作相关"},{"text":"权限相关","link":"/hand-notes/Linux/权限相关"}]},{"text":"Mac","collapsible":false,"collapsed":false,"items":[{"text":"环境初始化","link":"/hand-notes/Mac/init"},{"text":"使用小记","link":"/hand-notes/Mac/frequently-commands"},{"text":"快捷运行自定义shell脚本","link":"/hand-notes/Mac/快捷运行自定义shell脚本"}]},{"text":"Charles","collapsible":false,"collapsed":false,"items":[{"text":"抓包配置","link":"/hand-notes/Charles/抓包配置"},{"text":"修改请求或响应","link":"/hand-notes/Charles/修改请求或响应"}]},{"text":"Git","collapsible":false,"collapsed":false,"items":[{"text":"Mac环境下和Windows环境下Git换行结尾冲突","link":"/hand-notes/Git/Mac环境下和Windows环境下Git换行结尾冲突"}]}],"/knowledge-deposition/":[{"text":"前端工程化","collapsible":false,"collapsed":false,"items":[{"text":"Babel","collapsible":false,"collapsed":false,"items":[{"text":"Babel基础","link":"/knowledge-deposition/前端工程化/Babel/Babel基础"}]},{"text":"Vite","collapsible":false,"collapsed":false,"items":[{"text":"初体验","link":"/knowledge-deposition/前端工程化/Vite/初体验"},{"text":"区分不同环境","link":"/knowledge-deposition/前端工程化/Vite/区分不同环境"},{"text":"处理样式","link":"/knowledge-deposition/前端工程化/Vite/处理样式"},{"text":"处理静态资源","link":"/knowledge-deposition/前端工程化/Vite/处理静态资源"},{"text":"依赖预构建","link":"/knowledge-deposition/前端工程化/Vite/依赖预构建"},{"text":"esbuild相关","link":"/knowledge-deposition/前端工程化/Vite/esbuild相关"},{"text":"Rollup的插件机制","link":"/knowledge-deposition/前端工程化/Vite/Rollup的插件机制"},{"text":"Vite插件机制","link":"/knowledge-deposition/前端工程化/Vite/Vite插件机制"}]}]},{"text":"Docker","collapsible":false,"collapsed":false,"items":[{"text":"Docker基础知识","link":"/knowledge-deposition/Docker/Docker基础知识"},{"text":"Dockerfile","link":"/knowledge-deposition/Docker/Dockerfile"}]},{"text":"MySQL","collapsible":false,"collapsed":false,"items":[{"text":"基础","link":"/knowledge-deposition/MySQL/基础知识"},{"text":"SQL","link":"/knowledge-deposition/MySQL/SQL"},{"text":"数据操作和查询","link":"/knowledge-deposition/MySQL/数据操作和查询"},{"text":"函数","link":"/knowledge-deposition/MySQL/函数"},{"text":"分组和子查询","link":"/knowledge-deposition/MySQL/分组和子查询"},{"text":"表连接","link":"/knowledge-deposition/MySQL/表连接"}]},{"text":"SSH","collapsible":false,"collapsed":false,"items":[{"text":"SSH基础","link":"/knowledge-deposition/SSH/ssh-base"}]},{"text":"Linux","collapsible":false,"collapsed":false,"items":[{"text":"Bash基础知识","link":"/knowledge-deposition/Linux/Bash基础知识"}]},{"text":"GoLang","collapsible":false,"collapsed":false,"items":[{"text":"基础知识","collapsible":false,"collapsed":true,"items":[{"text":"环境搭建","link":"/knowledge-deposition/GoLang/基础知识/环境搭建"},{"text":"fmt格式输出含义","link":"/knowledge-deposition/GoLang/基础知识/fmt输出含义"},{"text":"变量常量","link":"/knowledge-deposition/GoLang/基础知识/变量常量"},{"text":"流程控制","link":"/knowledge-deposition/GoLang/基础知识/流程控制"},{"text":"基础数据类型","link":"/knowledge-deposition/GoLang/基础知识/基础数据类型"},{"text":"数组、切片、Map","link":"/knowledge-deposition/GoLang/基础知识/数组、切片、Map"},{"text":"strings包","link":"/knowledge-deposition/GoLang/基础知识/strings包"},{"text":"函数","link":"/knowledge-deposition/GoLang/基础知识/函数"},{"text":"指针","link":"/knowledge-deposition/GoLang/基础知识/指针"},{"text":"结构体","link":"/knowledge-deposition/GoLang/基础知识/结构体"},{"text":"接口","link":"/knowledge-deposition/GoLang/基础知识/接口"},{"text":"协程","link":"/knowledge-deposition/GoLang/基础知识/协程"},{"text":"协程安全","link":"/knowledge-deposition/GoLang/基础知识/协程安全"},{"text":"通道channel","link":"/knowledge-deposition/GoLang/基础知识/通道channel"},{"text":"Select","link":"/knowledge-deposition/GoLang/基础知识/Select"},{"text":"time包","link":"/knowledge-deposition/GoLang/基础知识/time包"},{"text":"url包","link":"/knowledge-deposition/GoLang/基础知识/url包"},{"text":"json序列化","link":"/knowledge-deposition/GoLang/基础知识/json序列化"},{"text":"Context","link":"/knowledge-deposition/GoLang/基础知识/Context"},{"text":"文件操作","collapsible":false,"collapsed":true,"link":"/knowledge-deposition/GoLang/基础知识/文件操作/","items":[{"text":"读文件","link":"/knowledge-deposition/GoLang/基础知识/文件操作/读文件"},{"text":"写文件","link":"/knowledge-deposition/GoLang/基础知识/文件操作/写文件"},{"text":"文件复制","link":"/knowledge-deposition/GoLang/基础知识/文件操作/文件复制"},{"text":"目录操作","link":"/knowledge-deposition/GoLang/基础知识/文件操作/目录操作"},{"text":"读取配置文件","link":"/knowledge-deposition/GoLang/基础知识/文件操作/读取配置文件"},{"text":"并发下载远程文件","link":"/knowledge-deposition/GoLang/基础知识/文件操作/并发下载远程文件"}]},{"text":"网络","collapsible":false,"collapsed":true,"items":[{"text":"TCP","link":"/knowledge-deposition/GoLang/基础知识/网络/TCP"},{"text":"HTTP","link":"/knowledge-deposition/GoLang/基础知识/网络/HTTP"},{"text":"RPC","link":"/knowledge-deposition/GoLang/基础知识/网络/RPC"}]},{"text":"Test","link":"/knowledge-deposition/GoLang/基础知识/Test"}]},{"text":"Gin","collapsible":false,"collapsed":true,"items":[{"text":"hello-world","link":"/knowledge-deposition/GoLang/Gin/hello-world"},{"text":"响应数据","link":"/knowledge-deposition/GoLang/Gin/响应数据"},{"text":"请求参数","link":"/knowledge-deposition/GoLang/Gin/请求参数"},{"text":"bind绑定器","link":"/knowledge-deposition/GoLang/Gin/bind绑定器"},{"text":"请求头和响应头","link":"/knowledge-deposition/GoLang/Gin/请求头和响应头"},{"text":"上传和下载文件","link":"/knowledge-deposition/GoLang/Gin/上传和下载文件"},{"text":"路由分组","link":"/knowledge-deposition/GoLang/Gin/路由分组"},{"text":"中间件","link":"/knowledge-deposition/GoLang/Gin/中间件"},{"text":"支持跨域","link":"/knowledge-deposition/GoLang/Gin/支持跨域"},{"text":"集成Swagger","link":"/knowledge-deposition/GoLang/Gin/集成Swagger"}]},{"text":"Gorm","collapsible":false,"collapsed":true,"items":[{"text":"连接数据库","link":"/knowledge-deposition/GoLang/Gorm/连接数据库"},{"text":"模型定义","link":"/knowledge-deposition/GoLang/Gorm/模型定义"},{"text":"Create","link":"/knowledge-deposition/GoLang/Gorm/Create"},{"text":"Query","link":"/knowledge-deposition/GoLang/Gorm/Query"},{"text":"AdvancedQuery","link":"/knowledge-deposition/GoLang/Gorm/AdvancedQuery"},{"text":"Update","link":"/knowledge-deposition/GoLang/Gorm/Update"},{"text":"Delete","link":"/knowledge-deposition/GoLang/Gorm/Delete"},{"text":"关联之一对一","link":"/knowledge-deposition/GoLang/Gorm/关联之一对一"},{"text":"关联之一对多","link":"/knowledge-deposition/GoLang/Gorm/关联之一对多"},{"text":"关联之多对多","link":"/knowledge-deposition/GoLang/Gorm/关联之多对多"},{"text":"事务","link":"/knowledge-deposition/GoLang/Gorm/事务"},{"text":"自定义数据类型","link":"/knowledge-deposition/GoLang/Gorm/自定义数据类型"}]},{"text":"Logger","collapsible":false,"collapsed":true,"items":[{"text":"Logrus","collapsible":false,"collapsed":true,"items":[{"text":"基础用法","link":"/knowledge-deposition/GoLang/Logger/Logrus/基础用法"},{"text":"Hook","link":"/knowledge-deposition/GoLang/Logger/Logrus/Hook"},{"text":"日志分割","link":"/knowledge-deposition/GoLang/Logger/Logrus/日志分割"}]},{"text":"Zap","collapsible":false,"collapsed":true,"items":[{"text":"zap使用","link":"/knowledge-deposition/GoLang/Logger/Zap/zap使用"}]}]},{"text":"Crawler","collapsible":false,"collapsed":true,"items":[{"text":"HTTP请求方法","link":"/knowledge-deposition/GoLang/Crawler/HTTP请求方法"}]},{"text":"加密","collapsible":false,"collapsed":true,"items":[{"text":"AES加密","link":"/knowledge-deposition/GoLang/加密/AES加密"},{"text":"RSA加密","link":"/knowledge-deposition/GoLang/加密/RSA加密"}]}]},{"text":"Nacos","collapsible":false,"collapsed":false,"items":[{"text":"基本概念和安装启动","link":"/knowledge-deposition/Nacos/基本概念和安装启动"},{"text":"操作动态配置文件","link":"/knowledge-deposition/Nacos/操作动态配置文件"}]},{"text":"RabbitMQ","collapsible":false,"collapsed":false,"items":[{"text":"基本概念和安装启动","link":"/knowledge-deposition/RabbitMQ/基本概念和安装启动"},{"text":"工作队列","link":"/knowledge-deposition/RabbitMQ/工作队列"},{"text":"发布订阅","link":"/knowledge-deposition/RabbitMQ/发布订阅"},{"text":"Routing","link":"/knowledge-deposition/RabbitMQ/Routing"},{"text":"Topics","link":"/knowledge-deposition/RabbitMQ/Topics"}]}],"/algorithm/":[{"text":"LeetCode刷题","collapsible":false,"collapsed":true,"items":[{"text":"1-两数之和","link":"/algorithm/LeetCode刷题/1-两数之和"},{"text":"20-有效的括号","link":"/algorithm/LeetCode刷题/20-有效的括号"},{"text":"26-删除有序数组中的重复项","link":"/algorithm/LeetCode刷题/26-删除有序数组中的重复项"},{"text":"27-移除元素","link":"/algorithm/LeetCode刷题/27-移除元素"},{"text":"28-找出字符串中第一个匹配项的下标","link":"/algorithm/LeetCode刷题/28-找出字符串中第一个匹配项的下标"},{"text":"3-无重复字符的最长子串","link":"/algorithm/LeetCode刷题/3-无重复字符的最长子串"},{"text":"35-搜索插入位置","link":"/algorithm/LeetCode刷题/35-搜索插入位置"},{"text":"14-最长公共前缀","link":"/algorithm/LeetCode刷题/14-最长公共前缀"},{"text":"58-最后一个单词的长度","link":"/algorithm/LeetCode刷题/58-最后一个单词的长度"},{"text":"136-只出现一次的数字","link":"/algorithm/LeetCode刷题/136-只出现一次的数字"},{"text":"LCR-018-验证回文串","link":"/algorithm/LeetCode刷题/LCR-018-验证回文串"},{"text":"9-回文数","link":"/algorithm/LeetCode刷题/9-回文数"},{"text":"17-电话号码的字母组合","link":"/algorithm/LeetCode刷题/17-电话号码的字母组合"},{"text":"202-快乐数","link":"/algorithm/LeetCode刷题/202-快乐数"},{"text":"485-最大连续1的个数","link":"/algorithm/LeetCode刷题/485-最大连续1的个数"},{"text":"628-三个数的最大乘积","link":"/algorithm/LeetCode刷题/628-三个数的最大乘积"},{"text":"414-第三大的数","link":"/algorithm/LeetCode刷题/414-第三大的数"},{"text":"520-检测大写字母","link":"/algorithm/LeetCode刷题/520-检测大写字母"},{"text":"977-有序数组的平方","link":"/algorithm/LeetCode刷题/977-有序数组的平方"},{"text":"209-长度最小的子数组","link":"/algorithm/LeetCode刷题/209-长度最小的子数组"},{"text":"203-移除链表元素","link":"/algorithm/LeetCode刷题/203-移除链表元素"},{"text":"707-设计链表","link":"/algorithm/LeetCode刷题/707-设计链表"},{"text":"206-反转链表","link":"/algorithm/LeetCode刷题/206-反转链表"},{"text":"24-两两交换链表中的节点","link":"/algorithm/LeetCode刷题/24-两两交换链表中的节点"},{"text":"19-删除链表的倒数第N个结点","link":"/algorithm/LeetCode刷题/19-删除链表的倒数第N个结点"},{"text":"242-有效的字母异位词","link":"/algorithm/LeetCode刷题/242-有效的字母异位词"},{"text":"349-两个数组的交集","link":"/algorithm/LeetCode刷题/349-两个数组的交集"},{"text":"454-四数相加II","link":"/algorithm/LeetCode刷题/454-四数相加II"},{"text":"15-三数之和","link":"/algorithm/LeetCode刷题/15-三数之和"},{"text":"18-四数之和","link":"/algorithm/LeetCode刷题/18-四数之和"},{"text":"344-反转字符串","link":"/algorithm/LeetCode刷题/344-反转字符串"},{"text":"541-反转字符串II","link":"/algorithm/LeetCode刷题/541-反转字符串II"},{"text":"151-反转字符串中的单词","link":"/algorithm/LeetCode刷题/151-反转字符串中的单词"},{"text":"1047-删除字符串中的所有相邻重复项","link":"/algorithm/LeetCode刷题/1047-删除字符串中的所有相邻重复项"},{"text":"150-逆波兰表达式求值","link":"/algorithm/LeetCode刷题/150-逆波兰表达式求值"},{"text":"144-94-145-遍历二叉树","link":"/algorithm/LeetCode刷题/144-94-145-遍历二叉树"}]}],"/favorites/":[{"text":"CSS","link":"/favorites/CSS/"},{"text":"Git","link":"/favorites/Git/"},{"text":"Mobile Side","link":"/favorites/Mobile/"},{"text":"Nginx","link":"/favorites/Nginx/"},{"text":"Mac","link":"/favorites/Mac/"},{"text":"Canvas","link":"/favorites/Canvas/"},{"text":"Browser","link":"/favorites/Browser/"},{"text":"ProblemSolving","link":"/favorites/ProblemSolving/"},{"text":"React","link":"/favorites/React/"},{"text":"Docker","link":"/favorites/Docker/"},{"text":"算法","link":"/favorites/算法/"},{"text":"Golang","link":"/favorites/Golang/"},{"text":"IDE","link":"/favorites/IDE/"},{"text":"Linux","link":"/favorites/Linux/"},{"text":"UI设计灵感","link":"/favorites/UI设计灵感/"},{"text":"Books","link":"/favorites/Books/"},{"text":"其他","link":"/favorites/其他/"}]},"socialLinks":[{"icon":"github","link":"https://github.com/mx52jing"}],"algolia":{"appId":"OZ2LZP2CGA","apiKey":"f4ad8bb32fae6abf12202305c27f286e","indexName":"static"},"lastUpdated":true,"aside":true,"outline":"deep"},"locales":{},"scrollOffset":90,"cleanUrls":true}'),os=/^[a-z]+:/i,yc=/^pathname:\/\//,ei="vitepress-theme-appearance",fl=/#.*$/,kc=/(index)?\.(md|html)$/,$e=typeof document<"u",hl={relativePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0};function At(e,t,n=!1){if(t===void 0)return!1;if(e=ti(`/${e}`),n)return new RegExp(t).test(e);if(ti(t)!==e)return!1;const s=t.match(fl);return s?($e?location.hash:"")===s[0]:!0}function ti(e){return decodeURI(e).replace(fl,"").replace(kc,"")}function pl(e){return os.test(e)}function xc(e,t){var s,o,i,l,r,a,u;const n=Object.keys(e.locales).find(f=>f!=="root"&&!pl(f)&&At(t,`/${f}/`,!0))||"root";return Object.assign({},e,{localeIndex:n,lang:((s=e.locales[n])==null?void 0:s.lang)??e.lang,dir:((o=e.locales[n])==null?void 0:o.dir)??e.dir,title:((i=e.locales[n])==null?void 0:i.title)??e.title,titleTemplate:((l=e.locales[n])==null?void 0:l.titleTemplate)??e.titleTemplate,description:((r=e.locales[n])==null?void 0:r.description)??e.description,head:gl(e.head,((a=e.locales[n])==null?void 0:a.head)??[]),themeConfig:{...e.themeConfig,...(u=e.locales[n])==null?void 0:u.themeConfig}})}function _l(e,t){const n=t.title||e.title,s=t.titleTemplate??e.titleTemplate;if(typeof s=="string"&&s.includes(":title"))return s.replace(/:title/g,n);const o=wc(e.title,s);return`${n}${o}`}function wc(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function $c(e,t){const[n,s]=t;if(n!=="meta")return!1;const o=Object.entries(s)[0];return o==null?!1:e.some(([i,l])=>i===n&&l[o[0]]===o[1])}function gl(e,t){return[...e.filter(n=>!$c(t,n)),...t]}const Cc=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,Pc=/^[a-z]:/i;function ni(e){const t=Pc.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(Cc,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const vl=Symbol(),dt=Tr(bc);function Lc(e){const t=z(()=>xc(dt.value,e.data.relativePath));return{site:t,theme:z(()=>t.value.themeConfig),page:z(()=>e.data),frontmatter:z(()=>e.data.frontmatter),lang:z(()=>t.value.lang),dir:z(()=>t.value.dir),localeIndex:z(()=>t.value.localeIndex||"root"),title:z(()=>_l(t.value,e.data)),description:z(()=>e.data.description||t.value.description),isDark:le(!1)}}function ml(){const e=Ke(vl);if(!e)throw new Error("vitepress data not properly injected in app");return e}function Sc(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function _n(e){return os.test(e)||e.startsWith(".")?e:Sc(dt.value.base,e)}function bl(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),$e){const n="/static-blog/";t=ni(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let s=__VP_HASH_MAP__[t.toLowerCase()];s||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",s=__VP_HASH_MAP__[t.toLowerCase()]),t=`${n}assets/${t}.${s}.js`}else t=`./${ni(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}const yl=Symbol(),si="http://a.com",Tc=()=>({path:"/",component:null,data:hl});function Vc(e,t){const n=Qn(Tc()),s={route:n,go:o};async function o(r=$e?location.href:"/"){var u,f;await((u=s.onBeforeRouteChange)==null?void 0:u.call(s,r));const a=new URL(r,si);dt.value.cleanUrls||!a.pathname.endsWith("/")&&!a.pathname.endsWith(".html")&&(a.pathname+=".html",r=a.pathname+a.search+a.hash),$e&&r!==location.href&&(history.replaceState({scrollPosition:window.scrollY},document.title),history.pushState(null,"",r)),await l(r),await((f=s.onAfterRouteChanged)==null?void 0:f.call(s,r))}let i=null;async function l(r,a=0,u=!1){const f=new URL(r,si),_=i=f.pathname;try{let g=await e(_);if(i===_){i=null;const{default:y,__pageData:T}=g;if(!y)throw new Error(`Invalid route component: ${y}`);n.path=$e?_:_n(_),n.component=sn(y),n.data=sn(T),$e&&Zs(()=>{let M=dt.value.base+T.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!dt.value.cleanUrls&&!M.endsWith("/")&&(M+=".html"),M!==f.pathname&&(f.pathname=M,r=M+f.search+f.hash,history.replaceState(null,"",r)),f.hash&&!a){let K=null;try{K=document.querySelector(decodeURIComponent(f.hash))}catch(m){console.warn(m)}if(K){oi(K,f.hash);return}}window.scrollTo(0,a)})}}catch(g){if(!/fetch/.test(g.message)&&!/^\/404(\.html|\/)?$/.test(r)&&console.error(g),!u)try{const y=await fetch(dt.value.base+"hashmap.json");window.__VP_HASH_MAP__=await y.json(),await l(r,a,!0);return}catch{}i===_&&(i=null,n.path=$e?_:_n(_),n.component=t?sn(t):null,n.data=hl)}}return $e&&(window.addEventListener("click",r=>{if(r.target.closest("button"))return;const u=r.target.closest("a");if(u&&!u.closest(".vp-raw")&&(u instanceof SVGElement||!u.download)){const{target:f}=u,{href:_,origin:g,pathname:y,hash:T,search:M}=new URL(u.href instanceof SVGAnimatedString?u.href.animVal:u.href,u.baseURI),K=window.location,m=y.match(/\.\w+$/);!r.ctrlKey&&!r.shiftKey&&!r.altKey&&!r.metaKey&&f!=="_blank"&&g===K.origin&&!(m&&m[0]!==".html")&&(r.preventDefault(),y===K.pathname&&M===K.search?T&&T!==K.hash&&(history.pushState(null,"",T),window.dispatchEvent(new Event("hashchange")),oi(u,T,u.classList.contains("header-anchor"))):o(_))}},{capture:!0}),window.addEventListener("popstate",r=>{l(location.href,r.state&&r.state.scrollPosition||0)}),window.addEventListener("hashchange",r=>{r.preventDefault()})),s}function Ec(){const e=Ke(yl);if(!e)throw new Error("useRouter() is called without provider.");return e}function vt(){return Ec().route}function oi(e,t,n=!1){let s=null;try{s=e.classList.contains("header-anchor")?e:document.querySelector(decodeURIComponent(t))}catch(o){console.warn(o)}if(s){let o=dt.value.scrollOffset;typeof o=="string"&&(o=document.querySelector(o).getBoundingClientRect().bottom+24);const i=parseInt(window.getComputedStyle(s).paddingTop,10),l=window.scrollY+s.getBoundingClientRect().top-o+i;!n||Math.abs(l-window.scrollY)>window.innerHeight?window.scrollTo(0,l):window.scrollTo({left:0,top:l,behavior:"smooth"})}}const Mc=R({name:"VitePressContent",props:{onContentUpdated:Function},setup(e){const t=vt();return eo(()=>{var n;(n=e.onContentUpdated)==null||n.call(e)}),()=>Dn("div",{style:{position:"relative"}},[t.component?Dn(t.component):null])}}),ue=ml;var ii;const kl=typeof window<"u",Ac=e=>typeof e=="string",Ic=()=>{};kl&&((ii=window==null?void 0:window.navigator)!=null&&ii.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);function xl(e){return typeof e=="function"?e():p(e)}function Nc(e){return e}function wl(e){return bi()?(tr(e),!0):!1}function Bc(e){return typeof e=="function"?z(e):le(e)}function Oc(e,t=!0){ns()?Oe(e):t?e():Zs(e)}function Fc(e){var t;const n=xl(e);return(t=n==null?void 0:n.$el)!=null?t:n}const lo=kl?window:void 0;function Hc(...e){let t,n,s,o;if(Ac(e[0])||Array.isArray(e[0])?([n,s,o]=e,t=lo):[t,n,s,o]=e,!t)return Ic;Array.isArray(n)||(n=[n]),Array.isArray(s)||(s=[s]);const i=[],l=()=>{i.forEach(f=>f()),i.length=0},r=(f,_,g,y)=>(f.addEventListener(_,g,y),()=>f.removeEventListener(_,g,y)),a=Je(()=>[Fc(t),xl(o)],([f,_])=>{l(),f&&i.push(...n.flatMap(g=>s.map(y=>r(f,g,y,_))))},{immediate:!0,flush:"post"}),u=()=>{a(),l()};return wl(u),u}function Rc(e,t=!1){const n=le(),s=()=>n.value=!!e();return s(),Oc(s,t),n}function Ns(e,t={}){const{window:n=lo}=t,s=Rc(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let o;const i=le(!1),l=()=>{o&&("removeEventListener"in o?o.removeEventListener("change",r):o.removeListener(r))},r=()=>{s.value&&(l(),o=n.matchMedia(Bc(e).value),i.value=o.matches,"addEventListener"in o?o.addEventListener("change",r):o.addListener(r))};return Et(r),wl(()=>l()),i}const li=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},ri="__vueuse_ssr_handlers__";li[ri]=li[ri]||{};var ai;(function(e){e.UP="UP",e.RIGHT="RIGHT",e.DOWN="DOWN",e.LEFT="LEFT",e.NONE="NONE"})(ai||(ai={}));var Dc=Object.defineProperty,ci=Object.getOwnPropertySymbols,Gc=Object.prototype.hasOwnProperty,Uc=Object.prototype.propertyIsEnumerable,ui=(e,t,n)=>t in e?Dc(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,jc=(e,t)=>{for(var n in t||(t={}))Gc.call(t,n)&&ui(e,n,t[n]);if(ci)for(var n of ci(t))Uc.call(t,n)&&ui(e,n,t[n]);return e};const zc={easeInSine:[.12,0,.39,0],easeOutSine:[.61,1,.88,1],easeInOutSine:[.37,0,.63,1],easeInQuad:[.11,0,.5,0],easeOutQuad:[.5,1,.89,1],easeInOutQuad:[.45,0,.55,1],easeInCubic:[.32,0,.67,0],easeOutCubic:[.33,1,.68,1],easeInOutCubic:[.65,0,.35,1],easeInQuart:[.5,0,.75,0],easeOutQuart:[.25,1,.5,1],easeInOutQuart:[.76,0,.24,1],easeInQuint:[.64,0,.78,0],easeOutQuint:[.22,1,.36,1],easeInOutQuint:[.83,0,.17,1],easeInExpo:[.7,0,.84,0],easeOutExpo:[.16,1,.3,1],easeInOutExpo:[.87,0,.13,1],easeInCirc:[.55,0,1,.45],easeOutCirc:[0,.55,.45,1],easeInOutCirc:[.85,0,.15,1],easeInBack:[.36,0,.66,-.56],easeOutBack:[.34,1.56,.64,1],easeInOutBack:[.68,-.6,.32,1.6]};jc({linear:Nc},zc);function Kc({window:e=lo}={}){if(!e)return{x:le(0),y:le(0)};const t=le(e.scrollX),n=le(e.scrollY);return Hc(e,"scroll",()=>{t.value=e.scrollX,n.value=e.scrollY},{capture:!1,passive:!0}),{x:t,y:n}}function qc(e,t){let n,s=!1;return()=>{n&&clearTimeout(n),s?n=setTimeout(e,t):(e(),s=!0,setTimeout(()=>{s=!1},t))}}function Bs(e){return/^\//.test(e)?e:`/${e}`}function gn(e){if(pl(e))return e.replace(yc,"");const{site:t}=ue(),{pathname:n,search:s,hash:o}=new URL(e,"http://example.com"),i=n.endsWith("/")||n.endsWith(".html")?e:e.replace(/(?:(^\.+)\/)?.*$/,`$1${n.replace(/(\.md)?$/,t.value.cleanUrls?"":".html")}${s}${o}`);return _n(i)}function $l(e,t){if(Array.isArray(e))return e;if(e==null)return[];t=Bs(t);const n=Object.keys(e).sort((s,o)=>o.split("/").length-s.split("/").length).find(s=>t.startsWith(Bs(s)));return n?e[n]:[]}function Wc(e){const t=[];let n=0;for(const s in e){const o=e[s];if(o.items){n=t.push(o);continue}t[n]||t.push({items:[]}),t[n].items.push(o)}return t}function Qc(e){const t=[];function n(s){for(const o of s)o.text&&o.link&&t.push({text:o.text,link:o.link}),o.items&&n(o.items)}return n(e),t}function Os(e,t){return Array.isArray(t)?t.some(n=>Os(e,n)):At(e,t.link)?!0:t.items?Os(e,t.items):!1}function it(){const e=vt(),{theme:t,frontmatter:n}=ue(),s=Ns("(min-width: 960px)"),o=le(!1),i=z(()=>{const y=t.value.sidebar,T=e.data.relativePath;return y?$l(y,T):[]}),l=z(()=>n.value.sidebar!==!1&&i.value.length>0&&n.value.layout!=="home"),r=z(()=>n.value.layout==="home"?!1:n.value.aside!=null?!!n.value.aside:t.value.aside!==!1),a=z(()=>l.value&&s.value),u=z(()=>l.value?Wc(i.value):[]);function f(){o.value=!0}function _(){o.value=!1}function g(){o.value?_():f()}return{isOpen:o,sidebar:i,sidebarGroups:u,hasSidebar:l,hasAside:r,isSidebarEnabled:a,open:f,close:_,toggle:g}}function Yc(e,t){let n;Et(()=>{n=e.value?document.activeElement:void 0}),Oe(()=>{window.addEventListener("keyup",s)}),gt(()=>{window.removeEventListener("keyup",s)});function s(o){o.key==="Escape"&&e.value&&(t(),n==null||n.focus())}}function Jc(e){const{page:t}=ue(),n=le(!1),s=z(()=>e.value.collapsed!=null),o=z(()=>!!e.value.link),i=z(()=>At(t.value.relativePath,e.value.link)),l=z(()=>i.value?!0:e.value.items?Os(t.value.relativePath,e.value.items):!1),r=z(()=>!!(e.value.items&&e.value.items.length));Et(()=>{n.value=!!(s.value&&e.value.collapsed)}),Et(()=>{(i.value||l.value)&&(n.value=!1)});function a(){s.value&&(n.value=!n.value)}return{collapsed:n,collapsible:s,isLink:o,isActiveLink:i,hasActiveLink:l,hasChildren:r,toggle:a}}const Xc=R({__name:"VPSkipLink",setup(e){const t=vt(),n=le();Je(()=>t.path,()=>n.value.focus());function s({target:o}){const i=document.querySelector(o.hash);if(i){const l=()=>{i.removeAttribute("tabindex"),i.removeEventListener("blur",l)};i.setAttribute("tabindex","-1"),i.addEventListener("blur",l),i.focus(),window.scrollTo(0,0)}}return(o,i)=>(h(),b(Z,null,[k("span",{ref_key:"backToTop",ref:n,tabindex:"-1"},null,512),k("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:s}," Skip to content ")],64))}});const Zc=H(Xc,[["__scopeId","data-v-0c14bf17"]]),eu={key:0,class:"VPBackdrop"},tu=R({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(e){return(t,n)=>(h(),q(ss,{name:"fade"},{default:I(()=>[e.show?(h(),b("div",eu)):D("",!0)]),_:1}))}});const nu=H(tu,[["__scopeId","data-v-f156ed5b"]]);function su(){const e=le(!1);function t(){e.value=!0,window.addEventListener("resize",o)}function n(){e.value=!1,window.removeEventListener("resize",o)}function s(){e.value?n():t()}function o(){window.outerWidth>=768&&n()}const i=vt();return Je(()=>i.path,n),{isScreenOpen:e,openScreen:t,closeScreen:n,toggleScreen:s}}function yn({removeCurrent:e=!0,correspondingLink:t=!1}={}){const{site:n,localeIndex:s,page:o,theme:i}=ue(),l=z(()=>{var a,u;return{label:(a=n.value.locales[s.value])==null?void 0:a.label,link:((u=n.value.locales[s.value])==null?void 0:u.link)||(s.value==="root"?"/":`/${s.value}/`)}});return{localeLinks:z(()=>Object.entries(n.value.locales).flatMap(([a,u])=>e&&l.value.label===u.label?[]:{text:u.label,link:ou(u.link||(a==="root"?"/":`/${a}/`),i.value.i18nRouting!==!1&&t,o.value.relativePath.slice(l.value.link.length-1),!n.value.cleanUrls)})),currentLang:l}}function ou(e,t,n,s){return t?e.replace(/\/$/,"")+Bs(n.replace(/(^|\/)?index.md$/,"$1").replace(/\.md$/,s?".html":"")):e}const iu=["src","alt"],lu={inheritAttrs:!1},ru=R({...lu,__name:"VPImage",props:{image:null,alt:null},setup(e){return(t,n)=>{const s=Mt("VPImage",!0);return e.image?(h(),b(Z,{key:0},[typeof e.image=="string"||"src"in e.image?(h(),b("img",An({key:0,class:"VPImage"},typeof e.image=="string"?t.$attrs:{...e.image,...t.$attrs},{src:p(_n)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,iu)):(h(),b(Z,{key:1},[V(s,An({class:"dark",image:e.image.dark,alt:e.image.alt},t.$attrs),null,16,["image","alt"]),V(s,An({class:"light",image:e.image.light,alt:e.image.alt},t.$attrs),null,16,["image","alt"])],64))],64)):D("",!0)}}});const ro=H(ru,[["__scopeId","data-v-2ecb366c"]]),au=["href"],cu=R({__name:"VPNavBarTitle",setup(e){const{site:t,theme:n}=ue(),{hasSidebar:s}=it(),{currentLang:o}=yn();return(i,l)=>(h(),b("div",{class:ge(["VPNavBarTitle",{"has-sidebar":p(s)}])},[k("a",{class:"title",href:p(gn)(p(o).link)},[S(i.$slots,"nav-bar-title-before",{},void 0,!0),p(n).logo?(h(),q(ro,{key:0,class:"logo",image:p(n).logo},null,8,["image"])):D("",!0),p(n).siteTitle?(h(),b(Z,{key:1},[Se(ce(p(n).siteTitle),1)],64)):p(n).siteTitle===void 0?(h(),b(Z,{key:2},[Se(ce(p(t).title),1)],64)):D("",!0),S(i.$slots,"nav-bar-title-after",{},void 0,!0)],8,au)],2))}});const uu=H(cu,[["__scopeId","data-v-fb6ffc33"]]);const du={key:0,class:"VPNavBarSearch"},fu={type:"button",class:"DocSearch DocSearch-Button","aria-label":"Search"},hu={class:"DocSearch-Button-Container"},pu=k("svg",{class:"DocSearch-Search-Icon",width:"20",height:"20",viewBox:"0 0 20 20"},[k("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none","fill-rule":"evenodd","stroke-linecap":"round","stroke-linejoin":"round"})],-1),_u={class:"DocSearch-Button-Placeholder"},gu=k("span",{class:"DocSearch-Button-Keys"},[k("kbd",{class:"DocSearch-Button-Key"}),k("kbd",{class:"DocSearch-Button-Key"},"K")],-1),vu=R({__name:"VPNavBarSearch",setup(e){nc(f=>({"2475c8e4":i.value}));const t=Wr(()=>dl(()=>import("./chunks/VPAlgoliaSearchBox.77010989.js"),[])),{theme:n,localeIndex:s}=ue(),o=le(!1),i=le("'Meta'"),l=z(()=>{var f,_,g,y,T,M,K,m;return((T=(y=(g=(_=(f=n.value.algolia)==null?void 0:f.locales)==null?void 0:_[s.value])==null?void 0:g.translations)==null?void 0:y.button)==null?void 0:T.buttonText)||((m=(K=(M=n.value.algolia)==null?void 0:M.translations)==null?void 0:K.button)==null?void 0:m.buttonText)||"Search"}),r=()=>{const f="VPAlgoliaPreconnect";(window.requestIdleCallback||setTimeout)(()=>{const g=document.createElement("link");g.id=f,g.rel="preconnect",g.href=`https://${n.value.algolia.appId}-dsn.algolia.net`,g.crossOrigin="",document.head.appendChild(g)})};Oe(()=>{if(!n.value.algolia)return;r(),i.value=/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?"'⌘'":"'Ctrl'";const f=g=>{g.key==="k"&&(g.ctrlKey||g.metaKey)&&(g.preventDefault(),a(),_())},_=()=>{window.removeEventListener("keydown",f)};window.addEventListener("keydown",f),gt(_)});function a(){o.value||(o.value=!0,setTimeout(u,16))}function u(){const f=new Event("keydown");f.key="k",f.metaKey=!0,window.dispatchEvent(f),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||u()},16)}return(f,_)=>p(n).algolia?(h(),b("div",du,[o.value?(h(),q(p(t),{key:0,algolia:p(n).algolia},null,8,["algolia"])):(h(),b("div",{key:1,id:"docsearch",onClick:a},[k("button",fu,[k("span",hu,[pu,k("span",_u,ce(p(l)),1)]),gu])]))])):D("",!0)}});const mu={},bu={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",height:"24px",viewBox:"0 0 24 24",width:"24px"},yu=k("path",{d:"M0 0h24v24H0V0z",fill:"none"},null,-1),ku=k("path",{d:"M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z"},null,-1),xu=[yu,ku];function wu(e,t){return h(),b("svg",bu,xu)}const $u=H(mu,[["render",wu]]),Cu=R({__name:"VPLink",props:{tag:null,href:null,noIcon:{type:Boolean},target:null,rel:null},setup(e){const t=e,n=z(()=>t.tag??t.href?"a":"span"),s=z(()=>t.href&&os.test(t.href));return(o,i)=>(h(),q(hn(p(n)),{class:ge(["VPLink",{link:e.href}]),href:e.href?p(gn)(e.href):void 0,target:e.target||(p(s)?"_blank":void 0),rel:e.rel||(p(s)?"noreferrer":void 0)},{default:I(()=>[S(o.$slots,"default",{},void 0,!0),p(s)&&!e.noIcon?(h(),q($u,{key:0,class:"icon"})):D("",!0)]),_:3},8,["class","href","target","rel"]))}});const mt=H(Cu,[["__scopeId","data-v-b9be72d4"]]),Pu=R({__name:"VPNavBarMenuLink",props:{item:null},setup(e){const{page:t}=ue();return(n,s)=>(h(),q(mt,{class:ge({VPNavBarMenuLink:!0,active:p(At)(p(t).relativePath,e.item.activeMatch||e.item.link,!!e.item.activeMatch)}),href:e.item.link,target:e.item.target,rel:e.item.rel},{default:I(()=>[Se(ce(e.item.text),1)]),_:1},8,["class","href","target","rel"]))}});const Lu=H(Pu,[["__scopeId","data-v-eaade15b"]]),ao=le();let Cl=!1,bs=0;function Su(e){const t=le(!1);if($e){!Cl&&Tu(),bs++;const n=Je(ao,s=>{var o,i,l;s===e.el.value||(o=e.el.value)!=null&&o.contains(s)?(t.value=!0,(i=e.onFocus)==null||i.call(e)):(t.value=!1,(l=e.onBlur)==null||l.call(e))});gt(()=>{n(),bs--,bs||Vu()})}return Qs(t)}function Tu(){document.addEventListener("focusin",Pl),Cl=!0,ao.value=document.activeElement}function Vu(){document.removeEventListener("focusin",Pl)}function Pl(){ao.value=document.activeElement}const Eu={},Mu={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Au=k("path",{d:"M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"},null,-1),Iu=[Au];function Nu(e,t){return h(),b("svg",Mu,Iu)}const Ll=H(Eu,[["render",Nu]]),Bu={},Ou={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Fu=k("circle",{cx:"12",cy:"12",r:"2"},null,-1),Hu=k("circle",{cx:"19",cy:"12",r:"2"},null,-1),Ru=k("circle",{cx:"5",cy:"12",r:"2"},null,-1),Du=[Fu,Hu,Ru];function Gu(e,t){return h(),b("svg",Ou,Du)}const Uu=H(Bu,[["render",Gu]]),ju={class:"VPMenuLink"},zu=R({__name:"VPMenuLink",props:{item:null},setup(e){const{page:t}=ue();return(n,s)=>(h(),b("div",ju,[V(mt,{class:ge({active:p(At)(p(t).relativePath,e.item.activeMatch||e.item.link,!!e.item.activeMatch)}),href:e.item.link,target:e.item.target,rel:e.item.rel},{default:I(()=>[Se(ce(e.item.text),1)]),_:1},8,["class","href","target","rel"])]))}});const is=H(zu,[["__scopeId","data-v-c8305630"]]),Ku={class:"VPMenuGroup"},qu={key:0,class:"title"},Wu=R({__name:"VPMenuGroup",props:{text:null,items:null},setup(e){return(t,n)=>(h(),b("div",Ku,[e.text?(h(),b("p",qu,ce(e.text),1)):D("",!0),(h(!0),b(Z,null,Ve(e.items,s=>(h(),b(Z,null,["link"in s?(h(),q(is,{key:0,item:s},null,8,["item"])):D("",!0)],64))),256))]))}});const Qu=H(Wu,[["__scopeId","data-v-4ed46b20"]]),Yu={class:"VPMenu"},Ju={key:0,class:"items"},Xu=R({__name:"VPMenu",props:{items:null},setup(e){return(t,n)=>(h(),b("div",Yu,[e.items?(h(),b("div",Ju,[(h(!0),b(Z,null,Ve(e.items,s=>(h(),b(Z,{key:s.text},["link"in s?(h(),q(is,{key:0,item:s},null,8,["item"])):(h(),q(Qu,{key:1,text:s.text,items:s.items},null,8,["text","items"]))],64))),128))])):D("",!0),S(t.$slots,"default",{},void 0,!0)]))}});const Zu=H(Xu,[["__scopeId","data-v-ad9b1221"]]),ed=["aria-expanded","aria-label"],td={key:0,class:"text"},nd={class:"menu"},sd=R({__name:"VPFlyout",props:{icon:null,button:null,label:null,items:null},setup(e){const t=le(!1),n=le();Su({el:n,onBlur:s});function s(){t.value=!1}return(o,i)=>(h(),b("div",{class:"VPFlyout",ref_key:"el",ref:n,onMouseenter:i[1]||(i[1]=l=>t.value=!0),onMouseleave:i[2]||(i[2]=l=>t.value=!1)},[k("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":t.value,"aria-label":e.label,onClick:i[0]||(i[0]=l=>t.value=!t.value)},[e.button||e.icon?(h(),b("span",td,[e.icon?(h(),q(hn(e.icon),{key:0,class:"option-icon"})):D("",!0),Se(" "+ce(e.button)+" ",1),V(Ll,{class:"text-icon"})])):(h(),q(Uu,{key:1,class:"icon"}))],8,ed),k("div",nd,[V(Zu,{items:e.items},{default:I(()=>[S(o.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}});const co=H(sd,[["__scopeId","data-v-5ade3574"]]),od=R({__name:"VPNavBarMenuGroup",props:{item:null},setup(e){const{page:t}=ue();return(n,s)=>(h(),q(co,{class:ge({VPNavBarMenuGroup:!0,active:p(At)(p(t).relativePath,e.item.activeMatch,!!e.item.activeMatch)}),button:e.item.text,items:e.item.items},null,8,["class","button","items"]))}}),id=e=>(Ze("data-v-f7e0d92f"),e=e(),et(),e),ld={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},rd=id(()=>k("span",{id:"main-nav-aria-label",class:"visually-hidden"},"Main Navigation",-1)),ad=R({__name:"VPNavBarMenu",setup(e){const{theme:t}=ue();return(n,s)=>p(t).nav?(h(),b("nav",ld,[rd,(h(!0),b(Z,null,Ve(p(t).nav,o=>(h(),b(Z,{key:o.text},["link"in o?(h(),q(Lu,{key:0,item:o},null,8,["item"])):(h(),q(od,{key:1,item:o},null,8,["item"]))],64))),128))])):D("",!0)}});const cd=H(ad,[["__scopeId","data-v-f7e0d92f"]]),ud={},dd={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},fd=k("path",{d:"M0 0h24v24H0z",fill:"none"},null,-1),hd=k("path",{d:" M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z ",class:"css-c4d79v"},null,-1),pd=[fd,hd];function _d(e,t){return h(),b("svg",dd,pd)}const Sl=H(ud,[["render",_d]]),gd={class:"items"},vd={class:"title"},md=R({__name:"VPNavBarTranslations",setup(e){const{localeLinks:t,currentLang:n}=yn({correspondingLink:!0});return(s,o)=>p(t).length&&p(n).label?(h(),q(co,{key:0,class:"VPNavBarTranslations",icon:Sl},{default:I(()=>[k("div",gd,[k("p",vd,ce(p(n).label),1),(h(!0),b(Z,null,Ve(p(t),i=>(h(),q(is,{key:i.link,item:i},null,8,["item"]))),128))])]),_:1})):D("",!0)}});const bd=H(md,[["__scopeId","data-v-d8bbd8f6"]]);const yd={},kd={class:"VPSwitch",type:"button",role:"switch"},xd={class:"check"},wd={key:0,class:"icon"};function $d(e,t){return h(),b("button",kd,[k("span",xd,[e.$slots.default?(h(),b("span",wd,[S(e.$slots,"default",{},void 0,!0)])):D("",!0)])])}const Cd=H(yd,[["render",$d],["__scopeId","data-v-f4e143c6"]]),Pd={},Ld={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Sd=Ca('',9),Td=[Sd];function Vd(e,t){return h(),b("svg",Ld,Td)}const Ed=H(Pd,[["render",Vd]]),Md={},Ad={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Id=k("path",{d:"M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"},null,-1),Nd=[Id];function Bd(e,t){return h(),b("svg",Ad,Nd)}const Od=H(Md,[["render",Bd]]),Fd=R({__name:"VPSwitchAppearance",setup(e){const{site:t,isDark:n}=ue(),s=le(!1),o=typeof localStorage<"u"?i():()=>{};Oe(()=>{s.value=document.documentElement.classList.contains("dark")});function i(){const l=window.matchMedia("(prefers-color-scheme: dark)"),r=document.documentElement.classList;let a=localStorage.getItem(ei),u=t.value.appearance==="dark"&&a==null||(a==="auto"||a==null?l.matches:a==="dark");l.onchange=g=>{a==="auto"&&_(u=g.matches)};function f(){_(u=!u),a=u?l.matches?"auto":"dark":l.matches?"light":"auto",localStorage.setItem(ei,a)}function _(g){const y=document.createElement("style");y.type="text/css",y.appendChild(document.createTextNode(`:not(.VPSwitchAppearance):not(.VPSwitchAppearance *) {
   -webkit-transition: none !important;
   -moz-transition: none !important;
   -o-transition: none !important;
diff --git a/assets/chunks/VPAlgoliaSearchBox.ff7413f2.js b/assets/chunks/VPAlgoliaSearchBox.77010989.js
similarity index 99%
rename from assets/chunks/VPAlgoliaSearchBox.ff7413f2.js
rename to assets/chunks/VPAlgoliaSearchBox.77010989.js
index 52f93f61..e6657128 100644
--- a/assets/chunks/VPAlgoliaSearchBox.ff7413f2.js
+++ b/assets/chunks/VPAlgoliaSearchBox.77010989.js
@@ -1,4 +1,4 @@
-import{f as Pr,u as Ir,g as kr,h as Dr,i as Cr,w as Ar,o as xr,c as Nr}from"../app.fa87702c.js";/*! @docsearch/js 3.3.3 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */function Ct(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),n.push.apply(n,r)}return n}function P(e){for(var t=1;t=0||(i[l]=c[l]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function Ve(e,t){return function(n){if(Array.isArray(n))return n}(e)||function(n,r){var o=n==null?null:typeof Symbol<"u"&&n[Symbol.iterator]||n["@@iterator"];if(o!=null){var a,c,u=[],l=!0,s=!1;try{for(o=o.call(n);!(l=(a=o.next()).done)&&(u.push(a.value),!r||u.length!==r);l=!0);}catch(i){s=!0,c=i}finally{try{l||o.return==null||o.return()}finally{if(s)throw c}}return u}}(e,t)||Mn(e,t)||function(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
+import{f as Pr,u as Ir,g as kr,h as Dr,i as Cr,w as Ar,o as xr,c as Nr}from"../app.2f6419f0.js";/*! @docsearch/js 3.3.3 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */function Ct(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),n.push.apply(n,r)}return n}function P(e){for(var t=1;t=0||(i[l]=c[l]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function Ve(e,t){return function(n){if(Array.isArray(n))return n}(e)||function(n,r){var o=n==null?null:typeof Symbol<"u"&&n[Symbol.iterator]||n["@@iterator"];if(o!=null){var a,c,u=[],l=!0,s=!1;try{for(o=o.call(n);!(l=(a=o.next()).done)&&(u.push(a.value),!r||u.length!==r);l=!0);}catch(i){s=!0,c=i}finally{try{l||o.return==null||o.return()}finally{if(s)throw c}}return u}}(e,t)||Mn(e,t)||function(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
 In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function We(e){return function(t){if(Array.isArray(t))return ft(t)}(e)||function(t){if(typeof Symbol<"u"&&t[Symbol.iterator]!=null||t["@@iterator"]!=null)return Array.from(t)}(e)||Mn(e)||function(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
 In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function Mn(e,t){if(e){if(typeof e=="string")return ft(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set"?Array.from(e):n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ft(e,t):void 0}}function ft(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n3)for(n=[n],a=3;a0?Se(p.type,p.props,p.key,null,p.__v):p)!=null){if(p.__=n,p.__b=n.__b+1,(d=y[i])===null||d&&p.key==d.key&&p.type===d.type)y[i]=void 0;else for(m=0;m3)for(n=[n],a=3;a=n.__.length&&n.__.push({}),n.__[e]}function Zn(e){return ue=1,Yn(Xn,e)}function Yn(e,t,n){var r=ke(le++,2);return r.t=e,r.__c||(r.__=[n?n(t):Xn(void 0,t),function(o){var a=r.t(r.__[0],o);r.__[0]!==a&&(r.__=[a,r.__[1]],r.__c.setState({}))}],r.__c=T),r.__}function Gn(e,t){var n=ke(le++,3);!w.__s&&jt(n.__H,t)&&(n.__=e,n.__H=t,T.__H.__h.push(n))}function Ft(e,t){var n=ke(le++,4);!w.__s&&jt(n.__H,t)&&(n.__=e,n.__H=t,T.__h.push(n))}function rt(e,t){var n=ke(le++,7);return jt(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function Ur(){mt.forEach(function(e){if(e.__P)try{e.__H.__h.forEach(He),e.__H.__h.forEach(dt),e.__H.__h=[]}catch(t){e.__H.__h=[],w.__e(t,e.__v)}}),mt=[]}w.__b=function(e){T=null,Lt&&Lt(e)},w.__r=function(e){qt&&qt(e),le=0;var t=(T=e.__c).__H;t&&(t.__h.forEach(He),t.__h.forEach(dt),t.__h=[])},w.diffed=function(e){Mt&&Mt(e);var t=e.__c;t&&t.__H&&t.__H.__h.length&&(mt.push(t)!==1&&Tt===w.requestAnimationFrame||((Tt=w.requestAnimationFrame)||function(n){var r,o=function(){clearTimeout(a),Bt&&cancelAnimationFrame(r),setTimeout(n)},a=setTimeout(o,100);Bt&&(r=requestAnimationFrame(o))})(Ur)),T=void 0},w.__c=function(e,t){t.some(function(n){try{n.__h.forEach(He),n.__h=n.__h.filter(function(r){return!r.__||dt(r)})}catch(r){t.some(function(o){o.__h&&(o.__h=[])}),t=[],w.__e(r,n.__v)}}),Ht&&Ht(e,t)},w.unmount=function(e){Ut&&Ut(e);var t=e.__c;if(t&&t.__H)try{t.__H.__.forEach(He)}catch(n){w.__e(n,t.__v)}};var Bt=typeof requestAnimationFrame=="function";function He(e){var t=T;typeof e.__c=="function"&&e.__c(),T=t}function dt(e){var t=T;e.__c=e.__(),T=t}function jt(e,t){return!e||e.length!==t.length||t.some(function(n,r){return n!==e[r]})}function Xn(e,t){return typeof t=="function"?t(e):t}function er(e,t){for(var n in t)e[n]=t[n];return e}function ht(e,t){for(var n in e)if(n!=="__source"&&!(n in t))return!0;for(var r in t)if(r!=="__source"&&e[r]!==t[r])return!0;return!1}function vt(e){this.props=e}(vt.prototype=new W).isPureReactComponent=!0,vt.prototype.shouldComponentUpdate=function(e,t){return ht(this.props,e)||ht(this.state,t)};var Vt=w.__b;w.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),Vt&&Vt(e)};var Fr=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.forward_ref")||3911,Wt=function(e,t){return e==null?null:J(J(e).map(t))},Br={map:Wt,forEach:Wt,count:function(e){return e?J(e).length:0},only:function(e){var t=J(e);if(t.length!==1)throw"Children.only";return t[0]},toArray:J},Vr=w.__e;function Ue(){this.__u=0,this.t=null,this.__b=null}function tr(e){var t=e.__.__c;return t&&t.__e&&t.__e(e)}function ge(){this.u=null,this.o=null}w.__e=function(e,t,n){if(e.then){for(var r,o=t;o=o.__;)if((r=o.__c)&&r.__c)return t.__e==null&&(t.__e=n.__e,t.__k=n.__k),r.__c(e,t)}Vr(e,t,n)},(Ue.prototype=new W).__c=function(e,t){var n=t.__c,r=this;r.t==null&&(r.t=[]),r.t.push(n);var o=tr(r.__v),a=!1,c=function(){a||(a=!0,n.componentWillUnmount=n.__c,o?o(u):u())};n.__c=n.componentWillUnmount,n.componentWillUnmount=function(){c(),n.__c&&n.__c()};var u=function(){if(!--r.__u){if(r.state.__e){var s=r.state.__e;r.__v.__k[0]=function m(d,p,v){return d&&(d.__v=null,d.__k=d.__k&&d.__k.map(function(h){return m(h,p,v)}),d.__c&&d.__c.__P===p&&(d.__e&&v.insertBefore(d.__e,d.__d),d.__c.__e=!0,d.__c.__P=v)),d}(s,s.__c.__P,s.__c.__O)}var i;for(r.setState({__e:r.__b=null});i=r.t.pop();)i.forceUpdate()}},l=t.__h===!0;r.__u++||l||r.setState({__e:r.__b=r.__v.__k[0]}),e.then(c,c)},Ue.prototype.componentWillUnmount=function(){this.t=[]},Ue.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var n=document.createElement("div"),r=this.__v.__k[0].__c;this.__v.__k[0]=function a(c,u,l){return c&&(c.__c&&c.__c.__H&&(c.__c.__H.__.forEach(function(s){typeof s.__c=="function"&&s.__c()}),c.__c.__H=null),(c=er({},c)).__c!=null&&(c.__c.__P===l&&(c.__c.__P=u),c.__c=null),c.__k=c.__k&&c.__k.map(function(s){return a(s,u,l)})),c}(this.__b,n,r.__O=r.__P)}this.__b=null}var o=t.__e&&V(Z,null,e.fallback);return o&&(o.__h=null),[V(Z,null,t.__e?null:e.children),o]};var Kt=function(e,t,n){if(++n[1]===n[0]&&e.o.delete(t),e.props.revealOrder&&(e.props.revealOrder[0]!=="t"||!e.o.size))for(n=e.u;n;){for(;n.length>3;)n.pop()();if(n[1]>>1,1),t.i.removeChild(r)}}),Pe(V(Wr,{context:t.context},e.__v),t.l)):t.l&&t.componentWillUnmount()}function nr(e,t){return V(Kr,{__v:e,i:t})}(ge.prototype=new W).__e=function(e){var t=this,n=tr(t.__v),r=t.o.get(e);return r[0]++,function(o){var a=function(){t.props.revealOrder?(r.push(o),Kt(t,e,r)):o()};n?n(a):a()}},ge.prototype.render=function(e){this.u=null,this.o=new Map;var t=J(e.children);e.revealOrder&&e.revealOrder[0]==="b"&&t.reverse();for(var n=t.length;n--;)this.o.set(t[n],this.u=[1,0,this.u]);return e.children},ge.prototype.componentDidUpdate=ge.prototype.componentDidMount=function(){var e=this;this.o.forEach(function(t,n){Kt(e,n,t)})};var rr=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.element")||60103,zr=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,Jr=function(e){return(typeof Symbol<"u"&&Ee(Symbol())=="symbol"?/fil|che|rad/i:/fil|che|ra/i).test(e)};function or(e,t,n){return t.__k==null&&(t.textContent=""),Pe(e,t),typeof n=="function"&&n(),e?e.__c:null}W.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(e){Object.defineProperty(W.prototype,e,{configurable:!0,get:function(){return this["UNSAFE_"+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var zt=w.event;function $r(){}function Qr(){return this.cancelBubble}function Zr(){return this.defaultPrevented}w.event=function(e){return zt&&(e=zt(e)),e.persist=$r,e.isPropagationStopped=Qr,e.isDefaultPrevented=Zr,e.nativeEvent=e};var ar,Jt={configurable:!0,get:function(){return this.class}},$t=w.vnode;w.vnode=function(e){var t=e.type,n=e.props,r=n;if(typeof t=="string"){for(var o in r={},n){var a=n[o];o==="value"&&"defaultValue"in n&&a==null||(o==="defaultValue"&&"value"in n&&n.value==null?o="value":o==="download"&&a===!0?a="":/ondoubleclick/i.test(o)?o="ondblclick":/^onchange(textarea|input)/i.test(o+t)&&!Jr(n.type)?o="oninput":/^on(Ani|Tra|Tou|BeforeInp)/.test(o)?o=o.toLowerCase():zr.test(o)?o=o.replace(/[A-Z0-9]/,"-$&").toLowerCase():a===null&&(a=void 0),r[o]=a)}t=="select"&&r.multiple&&Array.isArray(r.value)&&(r.value=J(n.children).forEach(function(c){c.props.selected=r.value.indexOf(c.props.value)!=-1})),t=="select"&&r.defaultValue!=null&&(r.value=J(n.children).forEach(function(c){c.props.selected=r.multiple?r.defaultValue.indexOf(c.props.value)!=-1:r.defaultValue==c.props.value})),e.props=r}t&&n.class!=n.className&&(Jt.enumerable="className"in n,n.className!=null&&(r.class=n.className),Object.defineProperty(r,"className",Jt)),e.$$typeof=rr,$t&&$t(e)};var Qt=w.__r;w.__r=function(e){Qt&&Qt(e),ar=e.__c};var Yr={ReactCurrentDispatcher:{current:{readContext:function(e){return ar.__n[e.__c].props.value}}}};(typeof performance>"u"?"undefined":Ee(performance))=="object"&&typeof performance.now=="function"&&performance.now.bind(performance);function Zt(e){return!!e&&e.$$typeof===rr}var f={useState:Zn,useReducer:Yn,useEffect:Gn,useLayoutEffect:Ft,useRef:function(e){return ue=5,rt(function(){return{current:e}},[])},useImperativeHandle:function(e,t,n){ue=6,Ft(function(){typeof e=="function"?e(t()):e&&(e.current=t())},n==null?n:n.concat(e))},useMemo:rt,useCallback:function(e,t){return ue=8,rt(function(){return e},t)},useContext:function(e){var t=T.context[e.__c],n=ke(le++,9);return n.__c=e,t?(n.__==null&&(n.__=!0,t.sub(T)),t.props.value):e.__},useDebugValue:function(e,t){w.useDebugValue&&w.useDebugValue(t?t(e):e)},version:"16.8.0",Children:Br,render:or,hydrate:function(e,t,n){return Qn(e,t),typeof n=="function"&&n(),e?e.__c:null},unmountComponentAtNode:function(e){return!!e.__k&&(Pe(null,e),!0)},createPortal:nr,createElement:V,createContext:function(e,t){var n={__c:t="__cC"+Un++,__:e,Consumer:function(r,o){return r.children(o)},Provider:function(r){var o,a;return this.getChildContext||(o=[],(a={})[t]=this,this.getChildContext=function(){return a},this.shouldComponentUpdate=function(c){this.props.value!==c.value&&o.some(pt)},this.sub=function(c){o.push(c);var u=c.componentWillUnmount;c.componentWillUnmount=function(){o.splice(o.indexOf(c),1),u&&u.call(c)}}),r.children}};return n.Provider.__=n.Consumer.contextType=n},createFactory:function(e){return V.bind(null,e)},cloneElement:function(e){return Zt(e)?Hr.apply(null,arguments):e},createRef:function(){return{current:null}},Fragment:Z,isValidElement:Zt,findDOMNode:function(e){return e&&(e.base||e.nodeType===1&&e)||null},Component:W,PureComponent:vt,memo:function(e,t){function n(o){var a=this.props.ref,c=a==o.ref;return!c&&a&&(a.call?a(null):a.current=null),t?!t(this.props,o)||!c:ht(this.props,o)}function r(o){return this.shouldComponentUpdate=n,V(e,o)}return r.displayName="Memo("+(e.displayName||e.name)+")",r.prototype.isReactComponent=!0,r.__f=!0,r},forwardRef:function(e){function t(n,r){var o=er({},n);return delete o.ref,e(o,(r=n.ref||r)&&(Ee(r)!="object"||"current"in r)?r:null)}return t.$$typeof=Fr,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName="ForwardRef("+(e.displayName||e.name)+")",t},unstable_batchedUpdates:function(e,t){return e(t)},StrictMode:Z,Suspense:Ue,SuspenseList:ge,lazy:function(e){var t,n,r;function o(a){if(t||(t=e()).then(function(c){n=c.default||c},function(c){r=c}),r)throw r;if(!n)throw t;return V(n,a)}return o.displayName="Lazy",o.__f=!0,o},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:Yr};function Gr(){return f.createElement("svg",{width:"15",height:"15",className:"DocSearch-Control-Key-Icon"},f.createElement("path",{d:"M4.505 4.496h2M5.505 5.496v5M8.216 4.496l.055 5.993M10 7.5c.333.333.5.667.5 1v2M12.326 4.5v5.996M8.384 4.496c1.674 0 2.116 0 2.116 1.5s-.442 1.5-2.116 1.5M3.205 9.303c-.09.448-.277 1.21-1.241 1.203C1 10.5.5 9.513.5 8V7c0-1.57.5-2.5 1.464-2.494.964.006 1.134.598 1.24 1.342M12.553 10.5h1.953",strokeWidth:"1.2",stroke:"currentColor",fill:"none",strokeLinecap:"square"}))}function cr(){return f.createElement("svg",{width:"20",height:"20",className:"DocSearch-Search-Icon",viewBox:"0 0 20 20"},f.createElement("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}var Xr=["translations"];function yt(){return yt=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(i[l]=c[l]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var no=f.forwardRef(function(e,t){var n=e.translations,r=n===void 0?{}:n,o=to(e,Xr),a=r.buttonText,c=a===void 0?"Search":a,u=r.buttonAriaLabel,l=u===void 0?"Search":u,s=eo(Zn(null),2),i=s[0],m=s[1];return Gn(function(){typeof navigator<"u"&&(/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?m("⌘"):m("Ctrl"))},[]),f.createElement("button",yt({type:"button",className:"DocSearch DocSearch-Button","aria-label":l},o,{ref:t}),f.createElement("span",{className:"DocSearch-Button-Container"},f.createElement(cr,null),f.createElement("span",{className:"DocSearch-Button-Placeholder"},c)),f.createElement("span",{className:"DocSearch-Button-Keys"},i!==null&&f.createElement(f.Fragment,null,f.createElement("kbd",{className:"DocSearch-Button-Key"},i==="Ctrl"?f.createElement(Gr,null):i),f.createElement("kbd",{className:"DocSearch-Button-Key"},"K"))))});function Ie(e){return e.reduce(function(t,n){return t.concat(n)},[])}var ro=0;function _t(e){return e.collections.length===0?0:e.collections.reduce(function(t,n){return t+n.items.length},0)}var ir=function(){},oo=[{segment:"autocomplete-core",version:"1.7.4"}];function Fe(e,t){var n=t;return{then:function(r,o){return Fe(e.then(xe(r,n,e),xe(o,n,e)),n)},catch:function(r){return Fe(e.catch(xe(r,n,e)),n)},finally:function(r){return r&&n.onCancelList.push(r),Fe(e.finally(xe(r&&function(){return n.onCancelList=[],r()},n,e)),n)},cancel:function(){n.isCanceled=!0;var r=n.onCancelList;n.onCancelList=[],r.forEach(function(o){o()})},isCanceled:function(){return n.isCanceled===!0}}}function Gt(e){return Fe(e,{isCanceled:!1,onCancelList:[]})}function xe(e,t,n){return e?function(r){return t.isCanceled?r:e(r)}:n}function Xt(e,t,n,r){if(!n)return null;if(e<0&&(t===null||r!==null&&t===0))return n+e;var o=(t===null?-1:t)+e;return o<=-1||o>=n?r===null?null:0:o}function en(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),n.push.apply(n,r)}return n}function ao(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function co(e,t){var n=[];return Promise.resolve(e(t)).then(function(r){return Promise.all(r.filter(function(o){return!!o}).map(function(o){if(o.sourceId,n.includes(o.sourceId))throw new Error("[Autocomplete] The `sourceId` ".concat(JSON.stringify(o.sourceId)," is not unique."));n.push(o.sourceId);var a=function(c){for(var u=1;uBooks 

E-book

',3),i=[s];function n(_,d,c,l,h,k){return t(),o("div",null,i)}const p=e(r,[["render",n]]);export{f as __pageData,p as default}; +import{_ as e,c as o,o as t,e as a}from"./app.2f6419f0.js";const f=JSON.parse('{"title":"Books","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"E-book","slug":"e-book","link":"#e-book","children":[]}],"relativePath":"favorites/Books/index.md"}'),r={name:"favorites/Books/index.md"},s=a('

Books

E-book

',3),i=[s];function n(_,d,c,l,h,k){return t(),o("div",null,i)}const p=e(r,[["render",n]]);export{f as __pageData,p as default}; diff --git a/assets/favorites_Books_index.md.1fa45f2c.lean.js b/assets/favorites_Books_index.md.e70623a0.lean.js similarity index 85% rename from assets/favorites_Books_index.md.1fa45f2c.lean.js rename to assets/favorites_Books_index.md.e70623a0.lean.js index b03fe7fa..c89138f7 100644 --- a/assets/favorites_Books_index.md.1fa45f2c.lean.js +++ b/assets/favorites_Books_index.md.e70623a0.lean.js @@ -1 +1 @@ -import{_ as e,c as o,o as t,e as a}from"./app.fa87702c.js";const f=JSON.parse('{"title":"Books","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"E-book","slug":"e-book","link":"#e-book","children":[]}],"relativePath":"favorites/Books/index.md"}'),r={name:"favorites/Books/index.md"},s=a("",3),i=[s];function n(_,d,c,l,h,k){return t(),o("div",null,i)}const p=e(r,[["render",n]]);export{f as __pageData,p as default}; +import{_ as e,c as o,o as t,e as a}from"./app.2f6419f0.js";const f=JSON.parse('{"title":"Books","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"E-book","slug":"e-book","link":"#e-book","children":[]}],"relativePath":"favorites/Books/index.md"}'),r={name:"favorites/Books/index.md"},s=a("",3),i=[s];function n(_,d,c,l,h,k){return t(),o("div",null,i)}const p=e(r,[["render",n]]);export{f as __pageData,p as default}; diff --git a/assets/favorites_Browser_index.md.9955bf7e.js b/assets/favorites_Browser_index.md.409dbc56.js similarity index 93% rename from assets/favorites_Browser_index.md.9955bf7e.js rename to assets/favorites_Browser_index.md.409dbc56.js index 4a784f8d..f1cfb6a6 100644 --- a/assets/favorites_Browser_index.md.9955bf7e.js +++ b/assets/favorites_Browser_index.md.409dbc56.js @@ -1 +1 @@ -import{_ as r,c as t,o as a,a as e,b as s}from"./app.fa87702c.js";const u=JSON.parse('{"title":"Browser相关","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/Browser/index.md"}'),o={name:"favorites/Browser/index.md"},n=e("h1",{id:"browser相关",tabindex:"-1"},[s("Browser相关 "),e("a",{class:"header-anchor",href:"#browser相关","aria-hidden":"true"},"#")],-1),c=e("ul",null,[e("li",null,[e("a",{href:"https://learn.scriptcat.org",target:"_blank",rel:"noreferrer"},"油猴开发指南")]),e("li",null,[e("a",{href:"https://mp.weixin.qq.com/s?__biz=MzIyMjg2ODExMA==&mid=2247485484&idx=1&sn=bbec1d0d3dcaa3bc1b875c35b6c05ad2&scene=21#wechat_redirect",target:"_blank",rel:"noreferrer"},"实用油猴脚本推荐,让你的谷歌浏览器更强大(公众号【苏生不惑】)")])],-1),d=[n,c];function i(l,_,h,p,f,b){return a(),t("div",null,d)}const x=r(o,[["render",i]]);export{u as __pageData,x as default}; +import{_ as r,c as t,o as a,a as e,b as s}from"./app.2f6419f0.js";const u=JSON.parse('{"title":"Browser相关","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/Browser/index.md"}'),o={name:"favorites/Browser/index.md"},n=e("h1",{id:"browser相关",tabindex:"-1"},[s("Browser相关 "),e("a",{class:"header-anchor",href:"#browser相关","aria-hidden":"true"},"#")],-1),c=e("ul",null,[e("li",null,[e("a",{href:"https://learn.scriptcat.org",target:"_blank",rel:"noreferrer"},"油猴开发指南")]),e("li",null,[e("a",{href:"https://mp.weixin.qq.com/s?__biz=MzIyMjg2ODExMA==&mid=2247485484&idx=1&sn=bbec1d0d3dcaa3bc1b875c35b6c05ad2&scene=21#wechat_redirect",target:"_blank",rel:"noreferrer"},"实用油猴脚本推荐,让你的谷歌浏览器更强大(公众号【苏生不惑】)")])],-1),d=[n,c];function i(l,_,h,p,f,b){return a(),t("div",null,d)}const x=r(o,[["render",i]]);export{u as __pageData,x as default}; diff --git a/assets/favorites_Browser_index.md.9955bf7e.lean.js b/assets/favorites_Browser_index.md.409dbc56.lean.js similarity index 93% rename from assets/favorites_Browser_index.md.9955bf7e.lean.js rename to assets/favorites_Browser_index.md.409dbc56.lean.js index 4a784f8d..f1cfb6a6 100644 --- a/assets/favorites_Browser_index.md.9955bf7e.lean.js +++ b/assets/favorites_Browser_index.md.409dbc56.lean.js @@ -1 +1 @@ -import{_ as r,c as t,o as a,a as e,b as s}from"./app.fa87702c.js";const u=JSON.parse('{"title":"Browser相关","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/Browser/index.md"}'),o={name:"favorites/Browser/index.md"},n=e("h1",{id:"browser相关",tabindex:"-1"},[s("Browser相关 "),e("a",{class:"header-anchor",href:"#browser相关","aria-hidden":"true"},"#")],-1),c=e("ul",null,[e("li",null,[e("a",{href:"https://learn.scriptcat.org",target:"_blank",rel:"noreferrer"},"油猴开发指南")]),e("li",null,[e("a",{href:"https://mp.weixin.qq.com/s?__biz=MzIyMjg2ODExMA==&mid=2247485484&idx=1&sn=bbec1d0d3dcaa3bc1b875c35b6c05ad2&scene=21#wechat_redirect",target:"_blank",rel:"noreferrer"},"实用油猴脚本推荐,让你的谷歌浏览器更强大(公众号【苏生不惑】)")])],-1),d=[n,c];function i(l,_,h,p,f,b){return a(),t("div",null,d)}const x=r(o,[["render",i]]);export{u as __pageData,x as default}; +import{_ as r,c as t,o as a,a as e,b as s}from"./app.2f6419f0.js";const u=JSON.parse('{"title":"Browser相关","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/Browser/index.md"}'),o={name:"favorites/Browser/index.md"},n=e("h1",{id:"browser相关",tabindex:"-1"},[s("Browser相关 "),e("a",{class:"header-anchor",href:"#browser相关","aria-hidden":"true"},"#")],-1),c=e("ul",null,[e("li",null,[e("a",{href:"https://learn.scriptcat.org",target:"_blank",rel:"noreferrer"},"油猴开发指南")]),e("li",null,[e("a",{href:"https://mp.weixin.qq.com/s?__biz=MzIyMjg2ODExMA==&mid=2247485484&idx=1&sn=bbec1d0d3dcaa3bc1b875c35b6c05ad2&scene=21#wechat_redirect",target:"_blank",rel:"noreferrer"},"实用油猴脚本推荐,让你的谷歌浏览器更强大(公众号【苏生不惑】)")])],-1),d=[n,c];function i(l,_,h,p,f,b){return a(),t("div",null,d)}const x=r(o,[["render",i]]);export{u as __pageData,x as default}; diff --git a/assets/favorites_CSS_index.md.6bef34af.js b/assets/favorites_CSS_index.md.8c4df966.js similarity index 97% rename from assets/favorites_CSS_index.md.6bef34af.js rename to assets/favorites_CSS_index.md.8c4df966.js index d620df14..52962f5c 100644 --- a/assets/favorites_CSS_index.md.6bef34af.js +++ b/assets/favorites_CSS_index.md.8c4df966.js @@ -1 +1 @@ -import{_ as e,c as r,o as a,e as t}from"./app.fa87702c.js";const S=JSON.parse('{"title":"CSS","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"CSS相关","slug":"css相关","link":"#css相关","children":[]},{"level":2,"title":"SCSS相关","slug":"scss相关","link":"#scss相关","children":[]}],"relativePath":"favorites/CSS/index.md"}'),s={name:"favorites/CSS/index.md"},i=t('

CSS

CSS相关

SCSS相关

',5),l=[i];function n(o,c,h,f,d,_){return a(),r("div",null,l)}const u=e(s,[["render",n]]);export{S as __pageData,u as default}; +import{_ as e,c as r,o as a,e as t}from"./app.2f6419f0.js";const S=JSON.parse('{"title":"CSS","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"CSS相关","slug":"css相关","link":"#css相关","children":[]},{"level":2,"title":"SCSS相关","slug":"scss相关","link":"#scss相关","children":[]}],"relativePath":"favorites/CSS/index.md"}'),s={name:"favorites/CSS/index.md"},i=t('

CSS

CSS相关

SCSS相关

',5),l=[i];function n(o,c,h,f,d,_){return a(),r("div",null,l)}const u=e(s,[["render",n]]);export{S as __pageData,u as default}; diff --git a/assets/favorites_CSS_index.md.6bef34af.lean.js b/assets/favorites_CSS_index.md.8c4df966.lean.js similarity index 88% rename from assets/favorites_CSS_index.md.6bef34af.lean.js rename to assets/favorites_CSS_index.md.8c4df966.lean.js index 07f53b13..7bd5eee1 100644 --- a/assets/favorites_CSS_index.md.6bef34af.lean.js +++ b/assets/favorites_CSS_index.md.8c4df966.lean.js @@ -1 +1 @@ -import{_ as e,c as r,o as a,e as t}from"./app.fa87702c.js";const S=JSON.parse('{"title":"CSS","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"CSS相关","slug":"css相关","link":"#css相关","children":[]},{"level":2,"title":"SCSS相关","slug":"scss相关","link":"#scss相关","children":[]}],"relativePath":"favorites/CSS/index.md"}'),s={name:"favorites/CSS/index.md"},i=t("",5),l=[i];function n(o,c,h,f,d,_){return a(),r("div",null,l)}const u=e(s,[["render",n]]);export{S as __pageData,u as default}; +import{_ as e,c as r,o as a,e as t}from"./app.2f6419f0.js";const S=JSON.parse('{"title":"CSS","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"CSS相关","slug":"css相关","link":"#css相关","children":[]},{"level":2,"title":"SCSS相关","slug":"scss相关","link":"#scss相关","children":[]}],"relativePath":"favorites/CSS/index.md"}'),s={name:"favorites/CSS/index.md"},i=t("",5),l=[i];function n(o,c,h,f,d,_){return a(),r("div",null,l)}const u=e(s,[["render",n]]);export{S as __pageData,u as default}; diff --git a/assets/favorites_Canvas_index.md.99d52141.js b/assets/favorites_Canvas_index.md.d276d270.js similarity index 91% rename from assets/favorites_Canvas_index.md.99d52141.js rename to assets/favorites_Canvas_index.md.d276d270.js index ec208e39..83969149 100644 --- a/assets/favorites_Canvas_index.md.99d52141.js +++ b/assets/favorites_Canvas_index.md.d276d270.js @@ -1 +1 @@ -import{_ as e,c as t,o as n,a,b as r}from"./app.fa87702c.js";const m=JSON.parse('{"title":"Canvas相关","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/Canvas/index.md"}'),s={name:"favorites/Canvas/index.md"},o=a("h1",{id:"canvas相关",tabindex:"-1"},[r("Canvas相关 "),a("a",{class:"header-anchor",href:"#canvas相关","aria-hidden":"true"},"#")],-1),c=a("ul",null,[a("li",null,[a("a",{href:"https://www.canvasapi.cn/",target:"_blank",rel:"noreferrer"},"Canvas API中文文档")]),a("li",null,[a("a",{href:"https://juejin.cn/post/7014765000916992036",target:"_blank",rel:"noreferrer"},"Canvas 模糊问题解析和解决")])],-1),i=[o,c];function d(l,_,h,p,f,v){return n(),t("div",null,i)}const x=e(s,[["render",d]]);export{m as __pageData,x as default}; +import{_ as e,c as t,o as n,a,b as r}from"./app.2f6419f0.js";const m=JSON.parse('{"title":"Canvas相关","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/Canvas/index.md"}'),s={name:"favorites/Canvas/index.md"},o=a("h1",{id:"canvas相关",tabindex:"-1"},[r("Canvas相关 "),a("a",{class:"header-anchor",href:"#canvas相关","aria-hidden":"true"},"#")],-1),c=a("ul",null,[a("li",null,[a("a",{href:"https://www.canvasapi.cn/",target:"_blank",rel:"noreferrer"},"Canvas API中文文档")]),a("li",null,[a("a",{href:"https://juejin.cn/post/7014765000916992036",target:"_blank",rel:"noreferrer"},"Canvas 模糊问题解析和解决")])],-1),i=[o,c];function d(l,_,h,p,f,v){return n(),t("div",null,i)}const x=e(s,[["render",d]]);export{m as __pageData,x as default}; diff --git a/assets/favorites_Canvas_index.md.99d52141.lean.js b/assets/favorites_Canvas_index.md.d276d270.lean.js similarity index 91% rename from assets/favorites_Canvas_index.md.99d52141.lean.js rename to assets/favorites_Canvas_index.md.d276d270.lean.js index ec208e39..83969149 100644 --- a/assets/favorites_Canvas_index.md.99d52141.lean.js +++ b/assets/favorites_Canvas_index.md.d276d270.lean.js @@ -1 +1 @@ -import{_ as e,c as t,o as n,a,b as r}from"./app.fa87702c.js";const m=JSON.parse('{"title":"Canvas相关","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/Canvas/index.md"}'),s={name:"favorites/Canvas/index.md"},o=a("h1",{id:"canvas相关",tabindex:"-1"},[r("Canvas相关 "),a("a",{class:"header-anchor",href:"#canvas相关","aria-hidden":"true"},"#")],-1),c=a("ul",null,[a("li",null,[a("a",{href:"https://www.canvasapi.cn/",target:"_blank",rel:"noreferrer"},"Canvas API中文文档")]),a("li",null,[a("a",{href:"https://juejin.cn/post/7014765000916992036",target:"_blank",rel:"noreferrer"},"Canvas 模糊问题解析和解决")])],-1),i=[o,c];function d(l,_,h,p,f,v){return n(),t("div",null,i)}const x=e(s,[["render",d]]);export{m as __pageData,x as default}; +import{_ as e,c as t,o as n,a,b as r}from"./app.2f6419f0.js";const m=JSON.parse('{"title":"Canvas相关","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/Canvas/index.md"}'),s={name:"favorites/Canvas/index.md"},o=a("h1",{id:"canvas相关",tabindex:"-1"},[r("Canvas相关 "),a("a",{class:"header-anchor",href:"#canvas相关","aria-hidden":"true"},"#")],-1),c=a("ul",null,[a("li",null,[a("a",{href:"https://www.canvasapi.cn/",target:"_blank",rel:"noreferrer"},"Canvas API中文文档")]),a("li",null,[a("a",{href:"https://juejin.cn/post/7014765000916992036",target:"_blank",rel:"noreferrer"},"Canvas 模糊问题解析和解决")])],-1),i=[o,c];function d(l,_,h,p,f,v){return n(),t("div",null,i)}const x=e(s,[["render",d]]);export{m as __pageData,x as default}; diff --git a/assets/favorites_Docker_index.md.53b99cb9.js b/assets/favorites_Docker_index.md.0e03ccaa.js similarity index 92% rename from assets/favorites_Docker_index.md.53b99cb9.js rename to assets/favorites_Docker_index.md.0e03ccaa.js index 4eec329a..f6b6cfed 100644 --- a/assets/favorites_Docker_index.md.53b99cb9.js +++ b/assets/favorites_Docker_index.md.0e03ccaa.js @@ -1 +1 @@ -import{_ as r,c as t,o,a as e,b as a}from"./app.fa87702c.js";const m=JSON.parse('{"title":"Docker","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/Docker/index.md"}'),c={name:"favorites/Docker/index.md"},n=e("h1",{id:"docker",tabindex:"-1"},[a("Docker "),e("a",{class:"header-anchor",href:"#docker","aria-hidden":"true"},"#")],-1),s=e("ul",null,[e("li",null,[e("a",{href:"https://docker.easydoc.net/doc/81170005/cCewZWoN/lTKfePfP",target:"_blank",rel:"noreferrer"},"一小时快速上手Docker")]),e("li",null,[e("a",{href:"https://yeasy.gitbook.io/docker_practice",target:"_blank",rel:"noreferrer"},"Docker — 从入门到实践")])],-1),d=[n,s];function i(l,_,f,h,k,p){return o(),t("div",null,d)}const x=r(c,[["render",i]]);export{m as __pageData,x as default}; +import{_ as r,c as t,o,a as e,b as a}from"./app.2f6419f0.js";const m=JSON.parse('{"title":"Docker","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/Docker/index.md"}'),c={name:"favorites/Docker/index.md"},n=e("h1",{id:"docker",tabindex:"-1"},[a("Docker "),e("a",{class:"header-anchor",href:"#docker","aria-hidden":"true"},"#")],-1),s=e("ul",null,[e("li",null,[e("a",{href:"https://docker.easydoc.net/doc/81170005/cCewZWoN/lTKfePfP",target:"_blank",rel:"noreferrer"},"一小时快速上手Docker")]),e("li",null,[e("a",{href:"https://yeasy.gitbook.io/docker_practice",target:"_blank",rel:"noreferrer"},"Docker — 从入门到实践")])],-1),d=[n,s];function i(l,_,f,h,k,p){return o(),t("div",null,d)}const x=r(c,[["render",i]]);export{m as __pageData,x as default}; diff --git a/assets/favorites_Docker_index.md.53b99cb9.lean.js b/assets/favorites_Docker_index.md.0e03ccaa.lean.js similarity index 92% rename from assets/favorites_Docker_index.md.53b99cb9.lean.js rename to assets/favorites_Docker_index.md.0e03ccaa.lean.js index 4eec329a..f6b6cfed 100644 --- a/assets/favorites_Docker_index.md.53b99cb9.lean.js +++ b/assets/favorites_Docker_index.md.0e03ccaa.lean.js @@ -1 +1 @@ -import{_ as r,c as t,o,a as e,b as a}from"./app.fa87702c.js";const m=JSON.parse('{"title":"Docker","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/Docker/index.md"}'),c={name:"favorites/Docker/index.md"},n=e("h1",{id:"docker",tabindex:"-1"},[a("Docker "),e("a",{class:"header-anchor",href:"#docker","aria-hidden":"true"},"#")],-1),s=e("ul",null,[e("li",null,[e("a",{href:"https://docker.easydoc.net/doc/81170005/cCewZWoN/lTKfePfP",target:"_blank",rel:"noreferrer"},"一小时快速上手Docker")]),e("li",null,[e("a",{href:"https://yeasy.gitbook.io/docker_practice",target:"_blank",rel:"noreferrer"},"Docker — 从入门到实践")])],-1),d=[n,s];function i(l,_,f,h,k,p){return o(),t("div",null,d)}const x=r(c,[["render",i]]);export{m as __pageData,x as default}; +import{_ as r,c as t,o,a as e,b as a}from"./app.2f6419f0.js";const m=JSON.parse('{"title":"Docker","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/Docker/index.md"}'),c={name:"favorites/Docker/index.md"},n=e("h1",{id:"docker",tabindex:"-1"},[a("Docker "),e("a",{class:"header-anchor",href:"#docker","aria-hidden":"true"},"#")],-1),s=e("ul",null,[e("li",null,[e("a",{href:"https://docker.easydoc.net/doc/81170005/cCewZWoN/lTKfePfP",target:"_blank",rel:"noreferrer"},"一小时快速上手Docker")]),e("li",null,[e("a",{href:"https://yeasy.gitbook.io/docker_practice",target:"_blank",rel:"noreferrer"},"Docker — 从入门到实践")])],-1),d=[n,s];function i(l,_,f,h,k,p){return o(),t("div",null,d)}const x=r(c,[["render",i]]);export{m as __pageData,x as default}; diff --git a/assets/favorites_Git_index.md.927d01a0.js b/assets/favorites_Git_index.md.145715fb.js similarity index 95% rename from assets/favorites_Git_index.md.927d01a0.js rename to assets/favorites_Git_index.md.145715fb.js index a369c576..44af4d2e 100644 --- a/assets/favorites_Git_index.md.927d01a0.js +++ b/assets/favorites_Git_index.md.145715fb.js @@ -1 +1 @@ -import{_ as e,c as t,o as r,e as a}from"./app.fa87702c.js";const g=JSON.parse('{"title":"Git","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/Git/index.md"}'),i={name:"favorites/Git/index.md"},n=a('

Git

',2),o=[n];function l(s,_,c,h,f,p){return r(),t("div",null,o)}const m=e(i,[["render",l]]);export{g as __pageData,m as default}; +import{_ as e,c as t,o as r,e as a}from"./app.2f6419f0.js";const g=JSON.parse('{"title":"Git","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/Git/index.md"}'),i={name:"favorites/Git/index.md"},n=a('

Git

',2),o=[n];function l(s,_,c,h,f,p){return r(),t("div",null,o)}const m=e(i,[["render",l]]);export{g as __pageData,m as default}; diff --git a/assets/favorites_Git_index.md.927d01a0.lean.js b/assets/favorites_Git_index.md.145715fb.lean.js similarity index 82% rename from assets/favorites_Git_index.md.927d01a0.lean.js rename to assets/favorites_Git_index.md.145715fb.lean.js index e6804b01..f5492f1e 100644 --- a/assets/favorites_Git_index.md.927d01a0.lean.js +++ b/assets/favorites_Git_index.md.145715fb.lean.js @@ -1 +1 @@ -import{_ as e,c as t,o as r,e as a}from"./app.fa87702c.js";const g=JSON.parse('{"title":"Git","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/Git/index.md"}'),i={name:"favorites/Git/index.md"},n=a("",2),o=[n];function l(s,_,c,h,f,p){return r(),t("div",null,o)}const m=e(i,[["render",l]]);export{g as __pageData,m as default}; +import{_ as e,c as t,o as r,e as a}from"./app.2f6419f0.js";const g=JSON.parse('{"title":"Git","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/Git/index.md"}'),i={name:"favorites/Git/index.md"},n=a("",2),o=[n];function l(s,_,c,h,f,p){return r(),t("div",null,o)}const m=e(i,[["render",l]]);export{g as __pageData,m as default}; diff --git a/assets/favorites_Golang_index.md.de3eebbf.js b/assets/favorites_Golang_index.md.33ca8701.js similarity index 96% rename from assets/favorites_Golang_index.md.de3eebbf.js rename to assets/favorites_Golang_index.md.33ca8701.js index ac722690..37a4d455 100644 --- a/assets/favorites_Golang_index.md.de3eebbf.js +++ b/assets/favorites_Golang_index.md.33ca8701.js @@ -1 +1 @@ -import{_ as e,c as a,o as r,e as l}from"./app.fa87702c.js";const u=JSON.parse('{"title":"Golang","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"教程类","slug":"教程类","link":"#教程类","children":[]},{"level":2,"title":"Blog","slug":"blog","link":"#blog","children":[]},{"level":2,"title":"问题处理","slug":"问题处理","link":"#问题处理","children":[]}],"relativePath":"favorites/Golang/index.md"}'),t={name:"favorites/Golang/index.md"},o=l('

Golang

教程类

Blog

问题处理

',7),n=[o];function i(h,s,d,c,g,_){return r(),a("div",null,n)}const f=e(t,[["render",i]]);export{u as __pageData,f as default}; +import{_ as e,c as a,o as r,e as l}from"./app.2f6419f0.js";const u=JSON.parse('{"title":"Golang","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"教程类","slug":"教程类","link":"#教程类","children":[]},{"level":2,"title":"Blog","slug":"blog","link":"#blog","children":[]},{"level":2,"title":"问题处理","slug":"问题处理","link":"#问题处理","children":[]}],"relativePath":"favorites/Golang/index.md"}'),t={name:"favorites/Golang/index.md"},o=l('

Golang

教程类

Blog

问题处理

',7),n=[o];function i(h,s,d,c,g,_){return r(),a("div",null,n)}const f=e(t,[["render",i]]);export{u as __pageData,f as default}; diff --git a/assets/favorites_Golang_index.md.de3eebbf.lean.js b/assets/favorites_Golang_index.md.33ca8701.lean.js similarity index 89% rename from assets/favorites_Golang_index.md.de3eebbf.lean.js rename to assets/favorites_Golang_index.md.33ca8701.lean.js index 53576adb..b02fd925 100644 --- a/assets/favorites_Golang_index.md.de3eebbf.lean.js +++ b/assets/favorites_Golang_index.md.33ca8701.lean.js @@ -1 +1 @@ -import{_ as e,c as a,o as r,e as l}from"./app.fa87702c.js";const u=JSON.parse('{"title":"Golang","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"教程类","slug":"教程类","link":"#教程类","children":[]},{"level":2,"title":"Blog","slug":"blog","link":"#blog","children":[]},{"level":2,"title":"问题处理","slug":"问题处理","link":"#问题处理","children":[]}],"relativePath":"favorites/Golang/index.md"}'),t={name:"favorites/Golang/index.md"},o=l("",7),n=[o];function i(h,s,d,c,g,_){return r(),a("div",null,n)}const f=e(t,[["render",i]]);export{u as __pageData,f as default}; +import{_ as e,c as a,o as r,e as l}from"./app.2f6419f0.js";const u=JSON.parse('{"title":"Golang","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"教程类","slug":"教程类","link":"#教程类","children":[]},{"level":2,"title":"Blog","slug":"blog","link":"#blog","children":[]},{"level":2,"title":"问题处理","slug":"问题处理","link":"#问题处理","children":[]}],"relativePath":"favorites/Golang/index.md"}'),t={name:"favorites/Golang/index.md"},o=l("",7),n=[o];function i(h,s,d,c,g,_){return r(),a("div",null,n)}const f=e(t,[["render",i]]);export{u as __pageData,f as default}; diff --git a/assets/favorites_IDE_index.md.46431c05.js b/assets/favorites_IDE_index.md.f4fa25a7.js similarity index 89% rename from assets/favorites_IDE_index.md.46431c05.js rename to assets/favorites_IDE_index.md.f4fa25a7.js index 46fd8916..cb1b022e 100644 --- a/assets/favorites_IDE_index.md.46431c05.js +++ b/assets/favorites_IDE_index.md.f4fa25a7.js @@ -1 +1 @@ -import{_ as t,c as a,o as r,a as e,b as o}from"./app.fa87702c.js";const m=JSON.parse('{"title":"IDE","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/IDE/index.md"}'),s={name:"favorites/IDE/index.md"},n=e("h1",{id:"ide",tabindex:"-1"},[o("IDE "),e("a",{class:"header-anchor",href:"#ide","aria-hidden":"true"},"#")],-1),i=e("ul",null,[e("li",null,[e("a",{href:"https://www.exception.site/",target:"_blank",rel:"noreferrer"},"exception.site")])],-1),c=[n,i];function d(l,_,p,h,f,u){return r(),a("div",null,c)}const D=t(s,[["render",d]]);export{m as __pageData,D as default}; +import{_ as t,c as a,o as r,a as e,b as o}from"./app.2f6419f0.js";const m=JSON.parse('{"title":"IDE","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/IDE/index.md"}'),s={name:"favorites/IDE/index.md"},n=e("h1",{id:"ide",tabindex:"-1"},[o("IDE "),e("a",{class:"header-anchor",href:"#ide","aria-hidden":"true"},"#")],-1),i=e("ul",null,[e("li",null,[e("a",{href:"https://www.exception.site/",target:"_blank",rel:"noreferrer"},"exception.site")])],-1),c=[n,i];function d(l,_,p,h,f,u){return r(),a("div",null,c)}const D=t(s,[["render",d]]);export{m as __pageData,D as default}; diff --git a/assets/favorites_IDE_index.md.46431c05.lean.js b/assets/favorites_IDE_index.md.f4fa25a7.lean.js similarity index 89% rename from assets/favorites_IDE_index.md.46431c05.lean.js rename to assets/favorites_IDE_index.md.f4fa25a7.lean.js index 46fd8916..cb1b022e 100644 --- a/assets/favorites_IDE_index.md.46431c05.lean.js +++ b/assets/favorites_IDE_index.md.f4fa25a7.lean.js @@ -1 +1 @@ -import{_ as t,c as a,o as r,a as e,b as o}from"./app.fa87702c.js";const m=JSON.parse('{"title":"IDE","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/IDE/index.md"}'),s={name:"favorites/IDE/index.md"},n=e("h1",{id:"ide",tabindex:"-1"},[o("IDE "),e("a",{class:"header-anchor",href:"#ide","aria-hidden":"true"},"#")],-1),i=e("ul",null,[e("li",null,[e("a",{href:"https://www.exception.site/",target:"_blank",rel:"noreferrer"},"exception.site")])],-1),c=[n,i];function d(l,_,p,h,f,u){return r(),a("div",null,c)}const D=t(s,[["render",d]]);export{m as __pageData,D as default}; +import{_ as t,c as a,o as r,a as e,b as o}from"./app.2f6419f0.js";const m=JSON.parse('{"title":"IDE","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/IDE/index.md"}'),s={name:"favorites/IDE/index.md"},n=e("h1",{id:"ide",tabindex:"-1"},[o("IDE "),e("a",{class:"header-anchor",href:"#ide","aria-hidden":"true"},"#")],-1),i=e("ul",null,[e("li",null,[e("a",{href:"https://www.exception.site/",target:"_blank",rel:"noreferrer"},"exception.site")])],-1),c=[n,i];function d(l,_,p,h,f,u){return r(),a("div",null,c)}const D=t(s,[["render",d]]);export{m as __pageData,D as default}; diff --git a/assets/favorites_JavasSript_index.md.c6dd1c6f.js b/assets/favorites_JavasSript_index.md.adfa8c07.js similarity index 87% rename from assets/favorites_JavasSript_index.md.c6dd1c6f.js rename to assets/favorites_JavasSript_index.md.adfa8c07.js index dc1e1fed..78d013ae 100644 --- a/assets/favorites_JavasSript_index.md.c6dd1c6f.js +++ b/assets/favorites_JavasSript_index.md.adfa8c07.js @@ -1 +1 @@ -import{_ as e,c as t,o as r,a,b as s}from"./app.fa87702c.js";const m=JSON.parse('{"title":"JavaScript","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/JavasSript/index.md"}'),o={name:"favorites/JavasSript/index.md"},c=a("h1",{id:"javascript",tabindex:"-1"},[s("JavaScript "),a("a",{class:"header-anchor",href:"#javascript","aria-hidden":"true"},"#")],-1),i=[c];function n(d,p,_,f,h,l){return r(),t("div",null,i)}const x=e(o,[["render",n]]);export{m as __pageData,x as default}; +import{_ as e,c as t,o as r,a,b as s}from"./app.2f6419f0.js";const m=JSON.parse('{"title":"JavaScript","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/JavasSript/index.md"}'),o={name:"favorites/JavasSript/index.md"},c=a("h1",{id:"javascript",tabindex:"-1"},[s("JavaScript "),a("a",{class:"header-anchor",href:"#javascript","aria-hidden":"true"},"#")],-1),i=[c];function n(d,p,_,f,h,l){return r(),t("div",null,i)}const x=e(o,[["render",n]]);export{m as __pageData,x as default}; diff --git a/assets/favorites_JavasSript_index.md.c6dd1c6f.lean.js b/assets/favorites_JavasSript_index.md.adfa8c07.lean.js similarity index 87% rename from assets/favorites_JavasSript_index.md.c6dd1c6f.lean.js rename to assets/favorites_JavasSript_index.md.adfa8c07.lean.js index dc1e1fed..78d013ae 100644 --- a/assets/favorites_JavasSript_index.md.c6dd1c6f.lean.js +++ b/assets/favorites_JavasSript_index.md.adfa8c07.lean.js @@ -1 +1 @@ -import{_ as e,c as t,o as r,a,b as s}from"./app.fa87702c.js";const m=JSON.parse('{"title":"JavaScript","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/JavasSript/index.md"}'),o={name:"favorites/JavasSript/index.md"},c=a("h1",{id:"javascript",tabindex:"-1"},[s("JavaScript "),a("a",{class:"header-anchor",href:"#javascript","aria-hidden":"true"},"#")],-1),i=[c];function n(d,p,_,f,h,l){return r(),t("div",null,i)}const x=e(o,[["render",n]]);export{m as __pageData,x as default}; +import{_ as e,c as t,o as r,a,b as s}from"./app.2f6419f0.js";const m=JSON.parse('{"title":"JavaScript","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/JavasSript/index.md"}'),o={name:"favorites/JavasSript/index.md"},c=a("h1",{id:"javascript",tabindex:"-1"},[s("JavaScript "),a("a",{class:"header-anchor",href:"#javascript","aria-hidden":"true"},"#")],-1),i=[c];function n(d,p,_,f,h,l){return r(),t("div",null,i)}const x=e(o,[["render",n]]);export{m as __pageData,x as default}; diff --git a/assets/favorites_Linux_index.md.7c838ffc.js b/assets/favorites_Linux_index.md.298c4d45.js similarity index 91% rename from assets/favorites_Linux_index.md.7c838ffc.js rename to assets/favorites_Linux_index.md.298c4d45.js index 62500d17..9162e014 100644 --- a/assets/favorites_Linux_index.md.7c838ffc.js +++ b/assets/favorites_Linux_index.md.298c4d45.js @@ -1 +1 @@ -import{_ as t,c as a,o as n,a as e,b as r}from"./app.fa87702c.js";const m=JSON.parse('{"title":"Linux","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/Linux/index.md"}'),l={name:"favorites/Linux/index.md"},o=e("h1",{id:"linux",tabindex:"-1"},[r("Linux "),e("a",{class:"header-anchor",href:"#linux","aria-hidden":"true"},"#")],-1),i=e("ul",null,[e("li",null,[e("p",null,[e("a",{href:"https://github.com/jaywcjlove/linux-command",target:"_blank",rel:"noreferrer"},"Linux命令大全搜索工具")])]),e("li",null,[e("p",null,[e("a",{href:"https://explainshell.com/",target:"_blank",rel:"noreferrer"},"explainshell")])])],-1),s=[o,i];function c(d,u,_,h,x,p){return n(),a("div",null,s)}const b=t(l,[["render",c]]);export{m as __pageData,b as default}; +import{_ as t,c as a,o as n,a as e,b as r}from"./app.2f6419f0.js";const m=JSON.parse('{"title":"Linux","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/Linux/index.md"}'),l={name:"favorites/Linux/index.md"},o=e("h1",{id:"linux",tabindex:"-1"},[r("Linux "),e("a",{class:"header-anchor",href:"#linux","aria-hidden":"true"},"#")],-1),i=e("ul",null,[e("li",null,[e("p",null,[e("a",{href:"https://github.com/jaywcjlove/linux-command",target:"_blank",rel:"noreferrer"},"Linux命令大全搜索工具")])]),e("li",null,[e("p",null,[e("a",{href:"https://explainshell.com/",target:"_blank",rel:"noreferrer"},"explainshell")])])],-1),s=[o,i];function c(d,u,_,h,x,p){return n(),a("div",null,s)}const b=t(l,[["render",c]]);export{m as __pageData,b as default}; diff --git a/assets/favorites_Linux_index.md.7c838ffc.lean.js b/assets/favorites_Linux_index.md.298c4d45.lean.js similarity index 91% rename from assets/favorites_Linux_index.md.7c838ffc.lean.js rename to assets/favorites_Linux_index.md.298c4d45.lean.js index 62500d17..9162e014 100644 --- a/assets/favorites_Linux_index.md.7c838ffc.lean.js +++ b/assets/favorites_Linux_index.md.298c4d45.lean.js @@ -1 +1 @@ -import{_ as t,c as a,o as n,a as e,b as r}from"./app.fa87702c.js";const m=JSON.parse('{"title":"Linux","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/Linux/index.md"}'),l={name:"favorites/Linux/index.md"},o=e("h1",{id:"linux",tabindex:"-1"},[r("Linux "),e("a",{class:"header-anchor",href:"#linux","aria-hidden":"true"},"#")],-1),i=e("ul",null,[e("li",null,[e("p",null,[e("a",{href:"https://github.com/jaywcjlove/linux-command",target:"_blank",rel:"noreferrer"},"Linux命令大全搜索工具")])]),e("li",null,[e("p",null,[e("a",{href:"https://explainshell.com/",target:"_blank",rel:"noreferrer"},"explainshell")])])],-1),s=[o,i];function c(d,u,_,h,x,p){return n(),a("div",null,s)}const b=t(l,[["render",c]]);export{m as __pageData,b as default}; +import{_ as t,c as a,o as n,a as e,b as r}from"./app.2f6419f0.js";const m=JSON.parse('{"title":"Linux","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/Linux/index.md"}'),l={name:"favorites/Linux/index.md"},o=e("h1",{id:"linux",tabindex:"-1"},[r("Linux "),e("a",{class:"header-anchor",href:"#linux","aria-hidden":"true"},"#")],-1),i=e("ul",null,[e("li",null,[e("p",null,[e("a",{href:"https://github.com/jaywcjlove/linux-command",target:"_blank",rel:"noreferrer"},"Linux命令大全搜索工具")])]),e("li",null,[e("p",null,[e("a",{href:"https://explainshell.com/",target:"_blank",rel:"noreferrer"},"explainshell")])])],-1),s=[o,i];function c(d,u,_,h,x,p){return n(),a("div",null,s)}const b=t(l,[["render",c]]);export{m as __pageData,b as default}; diff --git a/assets/favorites_Mac_index.md.3e76e115.js b/assets/favorites_Mac_index.md.9780baf3.js similarity index 92% rename from assets/favorites_Mac_index.md.3e76e115.js rename to assets/favorites_Mac_index.md.9780baf3.js index 18abe244..e4ef668e 100644 --- a/assets/favorites_Mac_index.md.3e76e115.js +++ b/assets/favorites_Mac_index.md.9780baf3.js @@ -1 +1 @@ -import{_ as e,c as a,o as t,e as r}from"./app.fa87702c.js";const p=JSON.parse('{"title":"Mac","description":"","frontmatter":{},"headers":[],"relativePath":"favorites/Mac/index.md"}'),c={name:"favorites/Mac/index.md"},i=r('

Mac

',2),n=[i];function o(s,_,l,d,h,f){return t(),a("div",null,n)}const u=e(c,[["render",o]]);export{p as __pageData,u as default}; +import{_ as e,c as a,o as t,e as r}from"./app.2f6419f0.js";const p=JSON.parse('{"title":"Mac","description":"","frontmatter":{},"headers":[],"relativePath":"favorites/Mac/index.md"}'),c={name:"favorites/Mac/index.md"},i=r('

Mac

',2),n=[i];function o(s,_,l,d,h,f){return t(),a("div",null,n)}const u=e(c,[["render",o]]);export{p as __pageData,u as default}; diff --git a/assets/favorites_Mac_index.md.3e76e115.lean.js b/assets/favorites_Mac_index.md.9780baf3.lean.js similarity index 81% rename from assets/favorites_Mac_index.md.3e76e115.lean.js rename to assets/favorites_Mac_index.md.9780baf3.lean.js index c970dd44..05859af3 100644 --- a/assets/favorites_Mac_index.md.3e76e115.lean.js +++ b/assets/favorites_Mac_index.md.9780baf3.lean.js @@ -1 +1 @@ -import{_ as e,c as a,o as t,e as r}from"./app.fa87702c.js";const p=JSON.parse('{"title":"Mac","description":"","frontmatter":{},"headers":[],"relativePath":"favorites/Mac/index.md"}'),c={name:"favorites/Mac/index.md"},i=r("",2),n=[i];function o(s,_,l,d,h,f){return t(),a("div",null,n)}const u=e(c,[["render",o]]);export{p as __pageData,u as default}; +import{_ as e,c as a,o as t,e as r}from"./app.2f6419f0.js";const p=JSON.parse('{"title":"Mac","description":"","frontmatter":{},"headers":[],"relativePath":"favorites/Mac/index.md"}'),c={name:"favorites/Mac/index.md"},i=r("",2),n=[i];function o(s,_,l,d,h,f){return t(),a("div",null,n)}const u=e(c,[["render",o]]);export{p as __pageData,u as default}; diff --git a/assets/favorites_Mobile_index.md.9a696ab8.js b/assets/favorites_Mobile_index.md.e09905ea.js similarity index 95% rename from assets/favorites_Mobile_index.md.9a696ab8.js rename to assets/favorites_Mobile_index.md.e09905ea.js index 69acd796..f13d1a46 100644 --- a/assets/favorites_Mobile_index.md.9a696ab8.js +++ b/assets/favorites_Mobile_index.md.e09905ea.js @@ -1 +1 @@ -import{_ as e,c as r,o as t,e as a}from"./app.fa87702c.js";const u=JSON.parse('{"title":"Mobile Side","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/Mobile/index.md"}'),i={name:"favorites/Mobile/index.md"},o=a('

Mobile Side

',2),l=[o];function n(s,h,_,c,d,p){return t(),r("div",null,l)}const b=e(i,[["render",n]]);export{u as __pageData,b as default}; +import{_ as e,c as r,o as t,e as a}from"./app.2f6419f0.js";const u=JSON.parse('{"title":"Mobile Side","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/Mobile/index.md"}'),i={name:"favorites/Mobile/index.md"},o=a('

Mobile Side

',2),l=[o];function n(s,h,_,c,d,p){return t(),r("div",null,l)}const b=e(i,[["render",n]]);export{u as __pageData,b as default}; diff --git a/assets/favorites_Mobile_index.md.9a696ab8.lean.js b/assets/favorites_Mobile_index.md.e09905ea.lean.js similarity index 83% rename from assets/favorites_Mobile_index.md.9a696ab8.lean.js rename to assets/favorites_Mobile_index.md.e09905ea.lean.js index df3efb45..6506e60b 100644 --- a/assets/favorites_Mobile_index.md.9a696ab8.lean.js +++ b/assets/favorites_Mobile_index.md.e09905ea.lean.js @@ -1 +1 @@ -import{_ as e,c as r,o as t,e as a}from"./app.fa87702c.js";const u=JSON.parse('{"title":"Mobile Side","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/Mobile/index.md"}'),i={name:"favorites/Mobile/index.md"},o=a("",2),l=[o];function n(s,h,_,c,d,p){return t(),r("div",null,l)}const b=e(i,[["render",n]]);export{u as __pageData,b as default}; +import{_ as e,c as r,o as t,e as a}from"./app.2f6419f0.js";const u=JSON.parse('{"title":"Mobile Side","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/Mobile/index.md"}'),i={name:"favorites/Mobile/index.md"},o=a("",2),l=[o];function n(s,h,_,c,d,p){return t(),r("div",null,l)}const b=e(i,[["render",n]]);export{u as __pageData,b as default}; diff --git a/assets/favorites_Nginx_index.md.14256c59.js b/assets/favorites_Nginx_index.md.045ab197.js similarity index 93% rename from assets/favorites_Nginx_index.md.14256c59.js rename to assets/favorites_Nginx_index.md.045ab197.js index 76acdd1c..2b261036 100644 --- a/assets/favorites_Nginx_index.md.14256c59.js +++ b/assets/favorites_Nginx_index.md.045ab197.js @@ -1 +1 @@ -import{_ as e,c as t,o as n,e as r}from"./app.fa87702c.js";const f=JSON.parse('{"title":"Nginx","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/Nginx/index.md"}'),a={name:"favorites/Nginx/index.md"},i=r('

Nginx

',2),o=[i];function s(_,l,c,d,h,x){return n(),t("div",null,o)}const p=e(a,[["render",s]]);export{f as __pageData,p as default}; +import{_ as e,c as t,o as n,e as r}from"./app.2f6419f0.js";const f=JSON.parse('{"title":"Nginx","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/Nginx/index.md"}'),a={name:"favorites/Nginx/index.md"},i=r('

Nginx

',2),o=[i];function s(_,l,c,d,h,x){return n(),t("div",null,o)}const p=e(a,[["render",s]]);export{f as __pageData,p as default}; diff --git a/assets/favorites_Nginx_index.md.14256c59.lean.js b/assets/favorites_Nginx_index.md.045ab197.lean.js similarity index 82% rename from assets/favorites_Nginx_index.md.14256c59.lean.js rename to assets/favorites_Nginx_index.md.045ab197.lean.js index e33bd3c3..755be6b5 100644 --- a/assets/favorites_Nginx_index.md.14256c59.lean.js +++ b/assets/favorites_Nginx_index.md.045ab197.lean.js @@ -1 +1 @@ -import{_ as e,c as t,o as n,e as r}from"./app.fa87702c.js";const f=JSON.parse('{"title":"Nginx","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/Nginx/index.md"}'),a={name:"favorites/Nginx/index.md"},i=r("",2),o=[i];function s(_,l,c,d,h,x){return n(),t("div",null,o)}const p=e(a,[["render",s]]);export{f as __pageData,p as default}; +import{_ as e,c as t,o as n,e as r}from"./app.2f6419f0.js";const f=JSON.parse('{"title":"Nginx","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/Nginx/index.md"}'),a={name:"favorites/Nginx/index.md"},i=r("",2),o=[i];function s(_,l,c,d,h,x){return n(),t("div",null,o)}const p=e(a,[["render",s]]);export{f as __pageData,p as default}; diff --git a/assets/favorites_ProblemSolving_index.md.ad26ae26.js b/assets/favorites_ProblemSolving_index.md.f65fb5c5.js similarity index 92% rename from assets/favorites_ProblemSolving_index.md.ad26ae26.js rename to assets/favorites_ProblemSolving_index.md.f65fb5c5.js index f74e9592..e7be1f1c 100644 --- a/assets/favorites_ProblemSolving_index.md.ad26ae26.js +++ b/assets/favorites_ProblemSolving_index.md.f65fb5c5.js @@ -1 +1 @@ -import{_ as e,c as a,o as r,e as t}from"./app.fa87702c.js";const m=JSON.parse('{"title":"Problem Solving","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"PDF","slug":"pdf","link":"#pdf","children":[]}],"relativePath":"favorites/ProblemSolving/index.md"}'),o={name:"favorites/ProblemSolving/index.md"},n=t('

Problem Solving

PDF

',3),i=[n];function l(d,s,_,c,h,p){return r(),a("div",null,i)}const u=e(o,[["render",l]]);export{m as __pageData,u as default}; +import{_ as e,c as a,o as r,e as t}from"./app.2f6419f0.js";const m=JSON.parse('{"title":"Problem Solving","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"PDF","slug":"pdf","link":"#pdf","children":[]}],"relativePath":"favorites/ProblemSolving/index.md"}'),o={name:"favorites/ProblemSolving/index.md"},n=t('

Problem Solving

PDF

',3),i=[n];function l(d,s,_,c,h,p){return r(),a("div",null,i)}const u=e(o,[["render",l]]);export{m as __pageData,u as default}; diff --git a/assets/favorites_ProblemSolving_index.md.ad26ae26.lean.js b/assets/favorites_ProblemSolving_index.md.f65fb5c5.lean.js similarity index 86% rename from assets/favorites_ProblemSolving_index.md.ad26ae26.lean.js rename to assets/favorites_ProblemSolving_index.md.f65fb5c5.lean.js index 53b60383..f3b6caf9 100644 --- a/assets/favorites_ProblemSolving_index.md.ad26ae26.lean.js +++ b/assets/favorites_ProblemSolving_index.md.f65fb5c5.lean.js @@ -1 +1 @@ -import{_ as e,c as a,o as r,e as t}from"./app.fa87702c.js";const m=JSON.parse('{"title":"Problem Solving","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"PDF","slug":"pdf","link":"#pdf","children":[]}],"relativePath":"favorites/ProblemSolving/index.md"}'),o={name:"favorites/ProblemSolving/index.md"},n=t("",3),i=[n];function l(d,s,_,c,h,p){return r(),a("div",null,i)}const u=e(o,[["render",l]]);export{m as __pageData,u as default}; +import{_ as e,c as a,o as r,e as t}from"./app.2f6419f0.js";const m=JSON.parse('{"title":"Problem Solving","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"PDF","slug":"pdf","link":"#pdf","children":[]}],"relativePath":"favorites/ProblemSolving/index.md"}'),o={name:"favorites/ProblemSolving/index.md"},n=t("",3),i=[n];function l(d,s,_,c,h,p){return r(),a("div",null,i)}const u=e(o,[["render",l]]);export{m as __pageData,u as default}; diff --git a/assets/favorites_React_index.md.56a06095.js b/assets/favorites_React_index.md.df510430.js similarity index 90% rename from assets/favorites_React_index.md.56a06095.js rename to assets/favorites_React_index.md.df510430.js index f78c62c2..30e36578 100644 --- a/assets/favorites_React_index.md.56a06095.js +++ b/assets/favorites_React_index.md.df510430.js @@ -1 +1 @@ -import{_ as t,c as a,o as r,a as e,b as o}from"./app.fa87702c.js";const x=JSON.parse('{"title":"React","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/React/index.md"}'),c={name:"favorites/React/index.md"},n=e("h1",{id:"react",tabindex:"-1"},[o("React "),e("a",{class:"header-anchor",href:"#react","aria-hidden":"true"},"#")],-1),s=e("ul",null,[e("li",null,[e("a",{href:"https://www.framer.com/motion/",target:"_blank",rel:"noreferrer"},"A production-ready motion library for React")])],-1),i=[n,s];function d(l,_,f,h,p,m){return r(),a("div",null,i)}const R=t(c,[["render",d]]);export{x as __pageData,R as default}; +import{_ as t,c as a,o as r,a as e,b as o}from"./app.2f6419f0.js";const x=JSON.parse('{"title":"React","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/React/index.md"}'),c={name:"favorites/React/index.md"},n=e("h1",{id:"react",tabindex:"-1"},[o("React "),e("a",{class:"header-anchor",href:"#react","aria-hidden":"true"},"#")],-1),s=e("ul",null,[e("li",null,[e("a",{href:"https://www.framer.com/motion/",target:"_blank",rel:"noreferrer"},"A production-ready motion library for React")])],-1),i=[n,s];function d(l,_,f,h,p,m){return r(),a("div",null,i)}const R=t(c,[["render",d]]);export{x as __pageData,R as default}; diff --git a/assets/favorites_React_index.md.56a06095.lean.js b/assets/favorites_React_index.md.df510430.lean.js similarity index 90% rename from assets/favorites_React_index.md.56a06095.lean.js rename to assets/favorites_React_index.md.df510430.lean.js index f78c62c2..30e36578 100644 --- a/assets/favorites_React_index.md.56a06095.lean.js +++ b/assets/favorites_React_index.md.df510430.lean.js @@ -1 +1 @@ -import{_ as t,c as a,o as r,a as e,b as o}from"./app.fa87702c.js";const x=JSON.parse('{"title":"React","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/React/index.md"}'),c={name:"favorites/React/index.md"},n=e("h1",{id:"react",tabindex:"-1"},[o("React "),e("a",{class:"header-anchor",href:"#react","aria-hidden":"true"},"#")],-1),s=e("ul",null,[e("li",null,[e("a",{href:"https://www.framer.com/motion/",target:"_blank",rel:"noreferrer"},"A production-ready motion library for React")])],-1),i=[n,s];function d(l,_,f,h,p,m){return r(),a("div",null,i)}const R=t(c,[["render",d]]);export{x as __pageData,R as default}; +import{_ as t,c as a,o as r,a as e,b as o}from"./app.2f6419f0.js";const x=JSON.parse('{"title":"React","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/React/index.md"}'),c={name:"favorites/React/index.md"},n=e("h1",{id:"react",tabindex:"-1"},[o("React "),e("a",{class:"header-anchor",href:"#react","aria-hidden":"true"},"#")],-1),s=e("ul",null,[e("li",null,[e("a",{href:"https://www.framer.com/motion/",target:"_blank",rel:"noreferrer"},"A production-ready motion library for React")])],-1),i=[n,s];function d(l,_,f,h,p,m){return r(),a("div",null,i)}const R=t(c,[["render",d]]);export{x as __pageData,R as default}; diff --git a/assets/favorites_Typescript_index.md.8f2790ad.js b/assets/favorites_Typescript_index.md.837b6f2b.js similarity index 88% rename from assets/favorites_Typescript_index.md.8f2790ad.js rename to assets/favorites_Typescript_index.md.837b6f2b.js index 2ed75711..44cfdf6e 100644 --- a/assets/favorites_Typescript_index.md.8f2790ad.js +++ b/assets/favorites_Typescript_index.md.837b6f2b.js @@ -1 +1 @@ -import{_ as t,c as a,o as s,a as e,b as r}from"./app.fa87702c.js";const x=JSON.parse('{"title":"Typescript","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/Typescript/index.md"}'),o={name:"favorites/Typescript/index.md"},c=e("h1",{id:"typescript",tabindex:"-1"},[r("Typescript "),e("a",{class:"header-anchor",href:"#typescript","aria-hidden":"true"},"#")],-1),i=e("ul",null,[e("li")],-1),n=[c,i];function d(p,_,l,h,f,u){return s(),a("div",null,n)}const y=t(o,[["render",d]]);export{x as __pageData,y as default}; +import{_ as t,c as a,o as s,a as e,b as r}from"./app.2f6419f0.js";const x=JSON.parse('{"title":"Typescript","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/Typescript/index.md"}'),o={name:"favorites/Typescript/index.md"},c=e("h1",{id:"typescript",tabindex:"-1"},[r("Typescript "),e("a",{class:"header-anchor",href:"#typescript","aria-hidden":"true"},"#")],-1),i=e("ul",null,[e("li")],-1),n=[c,i];function d(p,_,l,h,f,u){return s(),a("div",null,n)}const y=t(o,[["render",d]]);export{x as __pageData,y as default}; diff --git a/assets/favorites_Typescript_index.md.8f2790ad.lean.js b/assets/favorites_Typescript_index.md.837b6f2b.lean.js similarity index 88% rename from assets/favorites_Typescript_index.md.8f2790ad.lean.js rename to assets/favorites_Typescript_index.md.837b6f2b.lean.js index 2ed75711..44cfdf6e 100644 --- a/assets/favorites_Typescript_index.md.8f2790ad.lean.js +++ b/assets/favorites_Typescript_index.md.837b6f2b.lean.js @@ -1 +1 @@ -import{_ as t,c as a,o as s,a as e,b as r}from"./app.fa87702c.js";const x=JSON.parse('{"title":"Typescript","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/Typescript/index.md"}'),o={name:"favorites/Typescript/index.md"},c=e("h1",{id:"typescript",tabindex:"-1"},[r("Typescript "),e("a",{class:"header-anchor",href:"#typescript","aria-hidden":"true"},"#")],-1),i=e("ul",null,[e("li")],-1),n=[c,i];function d(p,_,l,h,f,u){return s(),a("div",null,n)}const y=t(o,[["render",d]]);export{x as __pageData,y as default}; +import{_ as t,c as a,o as s,a as e,b as r}from"./app.2f6419f0.js";const x=JSON.parse('{"title":"Typescript","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/Typescript/index.md"}'),o={name:"favorites/Typescript/index.md"},c=e("h1",{id:"typescript",tabindex:"-1"},[r("Typescript "),e("a",{class:"header-anchor",href:"#typescript","aria-hidden":"true"},"#")],-1),i=e("ul",null,[e("li")],-1),n=[c,i];function d(p,_,l,h,f,u){return s(),a("div",null,n)}const y=t(o,[["render",d]]);export{x as __pageData,y as default}; diff --git "a/assets/favorites_UI\350\256\276\350\256\241\347\201\265\346\204\237_index.md.edcd0886.js" "b/assets/favorites_UI\350\256\276\350\256\241\347\201\265\346\204\237_index.md.3ec44d20.js" similarity index 90% rename from "assets/favorites_UI\350\256\276\350\256\241\347\201\265\346\204\237_index.md.edcd0886.js" rename to "assets/favorites_UI\350\256\276\350\256\241\347\201\265\346\204\237_index.md.3ec44d20.js" index 43572da8..647fcd0e 100644 --- "a/assets/favorites_UI\350\256\276\350\256\241\347\201\265\346\204\237_index.md.edcd0886.js" +++ "b/assets/favorites_UI\350\256\276\350\256\241\347\201\265\346\204\237_index.md.3ec44d20.js" @@ -1 +1 @@ -import{_ as t,c as a,o,a as e,b as r}from"./app.fa87702c.js";const x=JSON.parse('{"title":"UI设计灵感","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/UI设计灵感/index.md"}'),s={name:"favorites/UI设计灵感/index.md"},n=e("h1",{id:"ui设计灵感",tabindex:"-1"},[r("UI设计灵感 "),e("a",{class:"header-anchor",href:"#ui设计灵感","aria-hidden":"true"},"#")],-1),i=e("ul",null,[e("li",null,[e("a",{href:"https://uinotes.com/",target:"_blank",rel:"noreferrer"},"uinotes")])],-1),c=[n,i];function d(l,_,u,h,f,p){return o(),a("div",null,c)}const v=t(s,[["render",d]]);export{x as __pageData,v as default}; +import{_ as t,c as a,o,a as e,b as r}from"./app.2f6419f0.js";const x=JSON.parse('{"title":"UI设计灵感","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/UI设计灵感/index.md"}'),s={name:"favorites/UI设计灵感/index.md"},n=e("h1",{id:"ui设计灵感",tabindex:"-1"},[r("UI设计灵感 "),e("a",{class:"header-anchor",href:"#ui设计灵感","aria-hidden":"true"},"#")],-1),i=e("ul",null,[e("li",null,[e("a",{href:"https://uinotes.com/",target:"_blank",rel:"noreferrer"},"uinotes")])],-1),c=[n,i];function d(l,_,u,h,f,p){return o(),a("div",null,c)}const v=t(s,[["render",d]]);export{x as __pageData,v as default}; diff --git "a/assets/favorites_UI\350\256\276\350\256\241\347\201\265\346\204\237_index.md.edcd0886.lean.js" "b/assets/favorites_UI\350\256\276\350\256\241\347\201\265\346\204\237_index.md.3ec44d20.lean.js" similarity index 90% rename from "assets/favorites_UI\350\256\276\350\256\241\347\201\265\346\204\237_index.md.edcd0886.lean.js" rename to "assets/favorites_UI\350\256\276\350\256\241\347\201\265\346\204\237_index.md.3ec44d20.lean.js" index 43572da8..647fcd0e 100644 --- "a/assets/favorites_UI\350\256\276\350\256\241\347\201\265\346\204\237_index.md.edcd0886.lean.js" +++ "b/assets/favorites_UI\350\256\276\350\256\241\347\201\265\346\204\237_index.md.3ec44d20.lean.js" @@ -1 +1 @@ -import{_ as t,c as a,o,a as e,b as r}from"./app.fa87702c.js";const x=JSON.parse('{"title":"UI设计灵感","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/UI设计灵感/index.md"}'),s={name:"favorites/UI设计灵感/index.md"},n=e("h1",{id:"ui设计灵感",tabindex:"-1"},[r("UI设计灵感 "),e("a",{class:"header-anchor",href:"#ui设计灵感","aria-hidden":"true"},"#")],-1),i=e("ul",null,[e("li",null,[e("a",{href:"https://uinotes.com/",target:"_blank",rel:"noreferrer"},"uinotes")])],-1),c=[n,i];function d(l,_,u,h,f,p){return o(),a("div",null,c)}const v=t(s,[["render",d]]);export{x as __pageData,v as default}; +import{_ as t,c as a,o,a as e,b as r}from"./app.2f6419f0.js";const x=JSON.parse('{"title":"UI设计灵感","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/UI设计灵感/index.md"}'),s={name:"favorites/UI设计灵感/index.md"},n=e("h1",{id:"ui设计灵感",tabindex:"-1"},[r("UI设计灵感 "),e("a",{class:"header-anchor",href:"#ui设计灵感","aria-hidden":"true"},"#")],-1),i=e("ul",null,[e("li",null,[e("a",{href:"https://uinotes.com/",target:"_blank",rel:"noreferrer"},"uinotes")])],-1),c=[n,i];function d(l,_,u,h,f,p){return o(),a("div",null,c)}const v=t(s,[["render",d]]);export{x as __pageData,v as default}; diff --git a/assets/favorites_Vue_index.md.9b6ccf34.js b/assets/favorites_Vue_index.md.2d5aa8bb.js similarity index 86% rename from assets/favorites_Vue_index.md.9b6ccf34.js rename to assets/favorites_Vue_index.md.2d5aa8bb.js index e7b2481f..ffa9be77 100644 --- a/assets/favorites_Vue_index.md.9b6ccf34.js +++ b/assets/favorites_Vue_index.md.2d5aa8bb.js @@ -1 +1 @@ -import{_ as t,c as a,o,a as e,b as r}from"./app.fa87702c.js";const m=JSON.parse('{"title":"Vue","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/Vue/index.md"}'),s={name:"favorites/Vue/index.md"},n=e("h1",{id:"vue",tabindex:"-1"},[r("Vue "),e("a",{class:"header-anchor",href:"#vue","aria-hidden":"true"},"#")],-1),c=[n];function d(i,_,u,p,f,h){return o(),a("div",null,c)}const x=t(s,[["render",d]]);export{m as __pageData,x as default}; +import{_ as t,c as a,o,a as e,b as r}from"./app.2f6419f0.js";const m=JSON.parse('{"title":"Vue","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/Vue/index.md"}'),s={name:"favorites/Vue/index.md"},n=e("h1",{id:"vue",tabindex:"-1"},[r("Vue "),e("a",{class:"header-anchor",href:"#vue","aria-hidden":"true"},"#")],-1),c=[n];function d(i,_,u,p,f,h){return o(),a("div",null,c)}const x=t(s,[["render",d]]);export{m as __pageData,x as default}; diff --git a/assets/favorites_Vue_index.md.9b6ccf34.lean.js b/assets/favorites_Vue_index.md.2d5aa8bb.lean.js similarity index 86% rename from assets/favorites_Vue_index.md.9b6ccf34.lean.js rename to assets/favorites_Vue_index.md.2d5aa8bb.lean.js index e7b2481f..ffa9be77 100644 --- a/assets/favorites_Vue_index.md.9b6ccf34.lean.js +++ b/assets/favorites_Vue_index.md.2d5aa8bb.lean.js @@ -1 +1 @@ -import{_ as t,c as a,o,a as e,b as r}from"./app.fa87702c.js";const m=JSON.parse('{"title":"Vue","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/Vue/index.md"}'),s={name:"favorites/Vue/index.md"},n=e("h1",{id:"vue",tabindex:"-1"},[r("Vue "),e("a",{class:"header-anchor",href:"#vue","aria-hidden":"true"},"#")],-1),c=[n];function d(i,_,u,p,f,h){return o(),a("div",null,c)}const x=t(s,[["render",d]]);export{m as __pageData,x as default}; +import{_ as t,c as a,o,a as e,b as r}from"./app.2f6419f0.js";const m=JSON.parse('{"title":"Vue","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/Vue/index.md"}'),s={name:"favorites/Vue/index.md"},n=e("h1",{id:"vue",tabindex:"-1"},[r("Vue "),e("a",{class:"header-anchor",href:"#vue","aria-hidden":"true"},"#")],-1),c=[n];function d(i,_,u,p,f,h){return o(),a("div",null,c)}const x=t(s,[["render",d]]);export{m as __pageData,x as default}; diff --git "a/assets/favorites_\345\205\266\344\273\226_index.md.2b04e138.js" "b/assets/favorites_\345\205\266\344\273\226_index.md.bf9ebb90.js" similarity index 97% rename from "assets/favorites_\345\205\266\344\273\226_index.md.2b04e138.js" rename to "assets/favorites_\345\205\266\344\273\226_index.md.bf9ebb90.js" index 962ca6ad..88634dbc 100644 --- "a/assets/favorites_\345\205\266\344\273\226_index.md.2b04e138.js" +++ "b/assets/favorites_\345\205\266\344\273\226_index.md.bf9ebb90.js" @@ -1 +1 @@ -import{_ as e,c as r,o as t,e as a}from"./app.fa87702c.js";const _=JSON.parse('{"title":"其他","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"tools","slug":"tools","link":"#tools","children":[]},{"level":2,"title":"fonts","slug":"fonts","link":"#fonts","children":[]},{"level":2,"title":"Internet Related","slug":"internet-related","link":"#internet-related","children":[]},{"level":2,"title":"Resource","slug":"resource","link":"#resource","children":[]}],"relativePath":"favorites/其他/index.md"}'),l={name:"favorites/其他/index.md"},n=a('

其他

tools

fonts

Resource

',9),o=[n];function i(s,h,d,c,f,p){return t(),r("div",null,o)}const g=e(l,[["render",i]]);export{_ as __pageData,g as default}; +import{_ as e,c as r,o as t,e as a}from"./app.2f6419f0.js";const _=JSON.parse('{"title":"其他","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"tools","slug":"tools","link":"#tools","children":[]},{"level":2,"title":"fonts","slug":"fonts","link":"#fonts","children":[]},{"level":2,"title":"Internet Related","slug":"internet-related","link":"#internet-related","children":[]},{"level":2,"title":"Resource","slug":"resource","link":"#resource","children":[]}],"relativePath":"favorites/其他/index.md"}'),l={name:"favorites/其他/index.md"},n=a('

其他

tools

fonts

Resource

',9),o=[n];function i(s,h,d,c,f,p){return t(),r("div",null,o)}const g=e(l,[["render",i]]);export{_ as __pageData,g as default}; diff --git "a/assets/favorites_\345\205\266\344\273\226_index.md.2b04e138.lean.js" "b/assets/favorites_\345\205\266\344\273\226_index.md.bf9ebb90.lean.js" similarity index 90% rename from "assets/favorites_\345\205\266\344\273\226_index.md.2b04e138.lean.js" rename to "assets/favorites_\345\205\266\344\273\226_index.md.bf9ebb90.lean.js" index 68731a4a..2e0e03f3 100644 --- "a/assets/favorites_\345\205\266\344\273\226_index.md.2b04e138.lean.js" +++ "b/assets/favorites_\345\205\266\344\273\226_index.md.bf9ebb90.lean.js" @@ -1 +1 @@ -import{_ as e,c as r,o as t,e as a}from"./app.fa87702c.js";const _=JSON.parse('{"title":"其他","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"tools","slug":"tools","link":"#tools","children":[]},{"level":2,"title":"fonts","slug":"fonts","link":"#fonts","children":[]},{"level":2,"title":"Internet Related","slug":"internet-related","link":"#internet-related","children":[]},{"level":2,"title":"Resource","slug":"resource","link":"#resource","children":[]}],"relativePath":"favorites/其他/index.md"}'),l={name:"favorites/其他/index.md"},n=a("",9),o=[n];function i(s,h,d,c,f,p){return t(),r("div",null,o)}const g=e(l,[["render",i]]);export{_ as __pageData,g as default}; +import{_ as e,c as r,o as t,e as a}from"./app.2f6419f0.js";const _=JSON.parse('{"title":"其他","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"tools","slug":"tools","link":"#tools","children":[]},{"level":2,"title":"fonts","slug":"fonts","link":"#fonts","children":[]},{"level":2,"title":"Internet Related","slug":"internet-related","link":"#internet-related","children":[]},{"level":2,"title":"Resource","slug":"resource","link":"#resource","children":[]}],"relativePath":"favorites/其他/index.md"}'),l={name:"favorites/其他/index.md"},n=a("",9),o=[n];function i(s,h,d,c,f,p){return t(),r("div",null,o)}const g=e(l,[["render",i]]);export{_ as __pageData,g as default}; diff --git "a/assets/favorites_\347\256\227\346\263\225_index.md.9e4e1f1b.js" "b/assets/favorites_\347\256\227\346\263\225_index.md.8e792f6a.js" similarity index 92% rename from "assets/favorites_\347\256\227\346\263\225_index.md.9e4e1f1b.js" rename to "assets/favorites_\347\256\227\346\263\225_index.md.8e792f6a.js" index 51e391af..8f0fa05d 100644 --- "a/assets/favorites_\347\256\227\346\263\225_index.md.9e4e1f1b.js" +++ "b/assets/favorites_\347\256\227\346\263\225_index.md.8e792f6a.js" @@ -1 +1 @@ -import{_ as t,c as r,o as a,a as e,b as o}from"./app.fa87702c.js";const x=JSON.parse('{"title":"算法","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/算法/index.md"}'),n={name:"favorites/算法/index.md"},s=e("h1",{id:"算法",tabindex:"-1"},[o("算法 "),e("a",{class:"header-anchor",href:"#算法","aria-hidden":"true"},"#")],-1),l=e("ul",null,[e("li",null,[e("p",null,[e("a",{href:"https://github.com/krahets/hello-algo",target:"_blank",rel:"noreferrer"},"动画图解、一键运行的数据结构与算法教程")])]),e("li",null,[e("p",null,[e("a",{href:"https://programmercarl.com/",target:"_blank",rel:"noreferrer"},"代码随想录")])])],-1),c=[s,l];function i(d,_,h,p,f,u){return a(),r("div",null,c)}const g=t(n,[["render",i]]);export{x as __pageData,g as default}; +import{_ as t,c as r,o as a,a as e,b as o}from"./app.2f6419f0.js";const x=JSON.parse('{"title":"算法","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/算法/index.md"}'),n={name:"favorites/算法/index.md"},s=e("h1",{id:"算法",tabindex:"-1"},[o("算法 "),e("a",{class:"header-anchor",href:"#算法","aria-hidden":"true"},"#")],-1),l=e("ul",null,[e("li",null,[e("p",null,[e("a",{href:"https://github.com/krahets/hello-algo",target:"_blank",rel:"noreferrer"},"动画图解、一键运行的数据结构与算法教程")])]),e("li",null,[e("p",null,[e("a",{href:"https://programmercarl.com/",target:"_blank",rel:"noreferrer"},"代码随想录")])])],-1),c=[s,l];function i(d,_,h,p,f,u){return a(),r("div",null,c)}const g=t(n,[["render",i]]);export{x as __pageData,g as default}; diff --git "a/assets/favorites_\347\256\227\346\263\225_index.md.9e4e1f1b.lean.js" "b/assets/favorites_\347\256\227\346\263\225_index.md.8e792f6a.lean.js" similarity index 92% rename from "assets/favorites_\347\256\227\346\263\225_index.md.9e4e1f1b.lean.js" rename to "assets/favorites_\347\256\227\346\263\225_index.md.8e792f6a.lean.js" index 51e391af..8f0fa05d 100644 --- "a/assets/favorites_\347\256\227\346\263\225_index.md.9e4e1f1b.lean.js" +++ "b/assets/favorites_\347\256\227\346\263\225_index.md.8e792f6a.lean.js" @@ -1 +1 @@ -import{_ as t,c as r,o as a,a as e,b as o}from"./app.fa87702c.js";const x=JSON.parse('{"title":"算法","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/算法/index.md"}'),n={name:"favorites/算法/index.md"},s=e("h1",{id:"算法",tabindex:"-1"},[o("算法 "),e("a",{class:"header-anchor",href:"#算法","aria-hidden":"true"},"#")],-1),l=e("ul",null,[e("li",null,[e("p",null,[e("a",{href:"https://github.com/krahets/hello-algo",target:"_blank",rel:"noreferrer"},"动画图解、一键运行的数据结构与算法教程")])]),e("li",null,[e("p",null,[e("a",{href:"https://programmercarl.com/",target:"_blank",rel:"noreferrer"},"代码随想录")])])],-1),c=[s,l];function i(d,_,h,p,f,u){return a(),r("div",null,c)}const g=t(n,[["render",i]]);export{x as __pageData,g as default}; +import{_ as t,c as r,o as a,a as e,b as o}from"./app.2f6419f0.js";const x=JSON.parse('{"title":"算法","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"favorites/算法/index.md"}'),n={name:"favorites/算法/index.md"},s=e("h1",{id:"算法",tabindex:"-1"},[o("算法 "),e("a",{class:"header-anchor",href:"#算法","aria-hidden":"true"},"#")],-1),l=e("ul",null,[e("li",null,[e("p",null,[e("a",{href:"https://github.com/krahets/hello-algo",target:"_blank",rel:"noreferrer"},"动画图解、一键运行的数据结构与算法教程")])]),e("li",null,[e("p",null,[e("a",{href:"https://programmercarl.com/",target:"_blank",rel:"noreferrer"},"代码随想录")])])],-1),c=[s,l];function i(d,_,h,p,f,u){return a(),r("div",null,c)}const g=t(n,[["render",i]]);export{x as __pageData,g as default}; diff --git "a/assets/hand-notes_CSS_CSS\345\256\236\347\216\260\346\226\207\345\255\227\346\270\220\345\217\230.md.9697050f.js" "b/assets/hand-notes_CSS_CSS\345\256\236\347\216\260\346\226\207\345\255\227\346\270\220\345\217\230.md.67c61cca.js" similarity index 98% rename from "assets/hand-notes_CSS_CSS\345\256\236\347\216\260\346\226\207\345\255\227\346\270\220\345\217\230.md.9697050f.js" rename to "assets/hand-notes_CSS_CSS\345\256\236\347\216\260\346\226\207\345\255\227\346\270\220\345\217\230.md.67c61cca.js" index 355c7664..cca34930 100644 --- "a/assets/hand-notes_CSS_CSS\345\256\236\347\216\260\346\226\207\345\255\227\346\270\220\345\217\230.md.9697050f.js" +++ "b/assets/hand-notes_CSS_CSS\345\256\236\347\216\260\346\226\207\345\255\227\346\270\220\345\217\230.md.67c61cca.js" @@ -1,4 +1,4 @@ -import{_ as s,c as a,o as e,e as n}from"./app.fa87702c.js";const F=JSON.parse('{"title":"CSS实现文字渐变","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"代码展示","slug":"代码展示","link":"#代码展示","children":[]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[{"level":3,"title":"效果预览","slug":"效果预览","link":"#效果预览","children":[]},{"level":3,"title":"查看代码","slug":"查看代码","link":"#查看代码","children":[]}]}],"relativePath":"hand-notes/CSS/CSS实现文字渐变.md"}'),l={name:"hand-notes/CSS/CSS实现文字渐变.md"},o=n(`

CSS实现文字渐变

代码展示

  • 关于linear-gradient更多用法详见这里
  • 关于background-clip更多用法详见这里
css
.gradient-text {
+import{_ as s,c as a,o as e,e as n}from"./app.2f6419f0.js";const F=JSON.parse('{"title":"CSS实现文字渐变","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"代码展示","slug":"代码展示","link":"#代码展示","children":[]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[{"level":3,"title":"效果预览","slug":"效果预览","link":"#效果预览","children":[]},{"level":3,"title":"查看代码","slug":"查看代码","link":"#查看代码","children":[]}]}],"relativePath":"hand-notes/CSS/CSS实现文字渐变.md"}'),l={name:"hand-notes/CSS/CSS实现文字渐变.md"},o=n(`

CSS实现文字渐变

代码展示

  • 关于linear-gradient更多用法详见这里
  • 关于background-clip更多用法详见这里
css
.gradient-text {
   background: linear-gradient(to right, blue 20%, red 50%, #FFFFFF);
   width: max-content;
   color: transparent;
diff --git "a/assets/hand-notes_CSS_CSS\345\256\236\347\216\260\346\226\207\345\255\227\346\270\220\345\217\230.md.9697050f.lean.js" "b/assets/hand-notes_CSS_CSS\345\256\236\347\216\260\346\226\207\345\255\227\346\270\220\345\217\230.md.67c61cca.lean.js"
similarity index 91%
rename from "assets/hand-notes_CSS_CSS\345\256\236\347\216\260\346\226\207\345\255\227\346\270\220\345\217\230.md.9697050f.lean.js"
rename to "assets/hand-notes_CSS_CSS\345\256\236\347\216\260\346\226\207\345\255\227\346\270\220\345\217\230.md.67c61cca.lean.js"
index f8f4d7e6..22914d40 100644
--- "a/assets/hand-notes_CSS_CSS\345\256\236\347\216\260\346\226\207\345\255\227\346\270\220\345\217\230.md.9697050f.lean.js"
+++ "b/assets/hand-notes_CSS_CSS\345\256\236\347\216\260\346\226\207\345\255\227\346\270\220\345\217\230.md.67c61cca.lean.js"
@@ -1 +1 @@
-import{_ as s,c as a,o as e,e as n}from"./app.fa87702c.js";const F=JSON.parse('{"title":"CSS实现文字渐变","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"代码展示","slug":"代码展示","link":"#代码展示","children":[]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[{"level":3,"title":"效果预览","slug":"效果预览","link":"#效果预览","children":[]},{"level":3,"title":"查看代码","slug":"查看代码","link":"#查看代码","children":[]}]}],"relativePath":"hand-notes/CSS/CSS实现文字渐变.md"}'),l={name:"hand-notes/CSS/CSS实现文字渐变.md"},o=n("",9),t=[o];function r(p,c,i,d,C,D){return e(),a("div",null,t)}const y=s(l,[["render",r]]);export{F as __pageData,y as default};
+import{_ as s,c as a,o as e,e as n}from"./app.2f6419f0.js";const F=JSON.parse('{"title":"CSS实现文字渐变","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"代码展示","slug":"代码展示","link":"#代码展示","children":[]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[{"level":3,"title":"效果预览","slug":"效果预览","link":"#效果预览","children":[]},{"level":3,"title":"查看代码","slug":"查看代码","link":"#查看代码","children":[]}]}],"relativePath":"hand-notes/CSS/CSS实现文字渐变.md"}'),l={name:"hand-notes/CSS/CSS实现文字渐变.md"},o=n("",9),t=[o];function r(p,c,i,d,C,D){return e(),a("div",null,t)}const y=s(l,[["render",r]]);export{F as __pageData,y as default};
diff --git "a/assets/hand-notes_CSS_CSS\345\256\236\347\216\260\347\252\201\345\207\272\344\270\215\345\220\214\351\242\234\350\211\262\347\232\204\345\234\206\350\247\222.md.c9272a3c.js" "b/assets/hand-notes_CSS_CSS\345\256\236\347\216\260\347\252\201\345\207\272\344\270\215\345\220\214\351\242\234\350\211\262\347\232\204\345\234\206\350\247\222.md.79fe9ff6.js"
similarity index 99%
rename from "assets/hand-notes_CSS_CSS\345\256\236\347\216\260\347\252\201\345\207\272\344\270\215\345\220\214\351\242\234\350\211\262\347\232\204\345\234\206\350\247\222.md.c9272a3c.js"
rename to "assets/hand-notes_CSS_CSS\345\256\236\347\216\260\347\252\201\345\207\272\344\270\215\345\220\214\351\242\234\350\211\262\347\232\204\345\234\206\350\247\222.md.79fe9ff6.js"
index 0a1a7572..3910af8c 100644
--- "a/assets/hand-notes_CSS_CSS\345\256\236\347\216\260\347\252\201\345\207\272\344\270\215\345\220\214\351\242\234\350\211\262\347\232\204\345\234\206\350\247\222.md.c9272a3c.js"
+++ "b/assets/hand-notes_CSS_CSS\345\256\236\347\216\260\347\252\201\345\207\272\344\270\215\345\220\214\351\242\234\350\211\262\347\232\204\345\234\206\350\247\222.md.79fe9ff6.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const A=JSON.parse('{"title":"CSS实现突出不同颜色的圆角","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"代码展示","slug":"代码展示","link":"#代码展示","children":[]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[{"level":3,"title":"效果预览","slug":"效果预览","link":"#效果预览","children":[]},{"level":3,"title":"查看代码","slug":"查看代码","link":"#查看代码","children":[]}]}],"relativePath":"hand-notes/CSS/CSS实现突出不同颜色的圆角.md"}'),p={name:"hand-notes/CSS/CSS实现突出不同颜色的圆角.md"},o=l(`

CSS实现突出不同颜色的圆角

代码展示

html

html
<!DOCTYPE html>
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const A=JSON.parse('{"title":"CSS实现突出不同颜色的圆角","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"代码展示","slug":"代码展示","link":"#代码展示","children":[]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[{"level":3,"title":"效果预览","slug":"效果预览","link":"#效果预览","children":[]},{"level":3,"title":"查看代码","slug":"查看代码","link":"#查看代码","children":[]}]}],"relativePath":"hand-notes/CSS/CSS实现突出不同颜色的圆角.md"}'),p={name:"hand-notes/CSS/CSS实现突出不同颜色的圆角.md"},o=l(`

CSS实现突出不同颜色的圆角

代码展示

html

html
<!DOCTYPE html>
 <html lang="en">
 <head>
   <meta charset="UTF-8">
diff --git "a/assets/hand-notes_CSS_CSS\345\256\236\347\216\260\347\252\201\345\207\272\344\270\215\345\220\214\351\242\234\350\211\262\347\232\204\345\234\206\350\247\222.md.c9272a3c.lean.js" "b/assets/hand-notes_CSS_CSS\345\256\236\347\216\260\347\252\201\345\207\272\344\270\215\345\220\214\351\242\234\350\211\262\347\232\204\345\234\206\350\247\222.md.79fe9ff6.lean.js"
similarity index 92%
rename from "assets/hand-notes_CSS_CSS\345\256\236\347\216\260\347\252\201\345\207\272\344\270\215\345\220\214\351\242\234\350\211\262\347\232\204\345\234\206\350\247\222.md.c9272a3c.lean.js"
rename to "assets/hand-notes_CSS_CSS\345\256\236\347\216\260\347\252\201\345\207\272\344\270\215\345\220\214\351\242\234\350\211\262\347\232\204\345\234\206\350\247\222.md.79fe9ff6.lean.js"
index f2e65e26..f8fbffca 100644
--- "a/assets/hand-notes_CSS_CSS\345\256\236\347\216\260\347\252\201\345\207\272\344\270\215\345\220\214\351\242\234\350\211\262\347\232\204\345\234\206\350\247\222.md.c9272a3c.lean.js"
+++ "b/assets/hand-notes_CSS_CSS\345\256\236\347\216\260\347\252\201\345\207\272\344\270\215\345\220\214\351\242\234\350\211\262\347\232\204\345\234\206\350\247\222.md.79fe9ff6.lean.js"
@@ -1 +1 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const A=JSON.parse('{"title":"CSS实现突出不同颜色的圆角","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"代码展示","slug":"代码展示","link":"#代码展示","children":[]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[{"level":3,"title":"效果预览","slug":"效果预览","link":"#效果预览","children":[]},{"level":3,"title":"查看代码","slug":"查看代码","link":"#查看代码","children":[]}]}],"relativePath":"hand-notes/CSS/CSS实现突出不同颜色的圆角.md"}'),p={name:"hand-notes/CSS/CSS实现突出不同颜色的圆角.md"},o=l("",11),e=[o];function t(c,r,D,F,y,C){return n(),a("div",null,e)}const d=s(p,[["render",t]]);export{A as __pageData,d as default};
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const A=JSON.parse('{"title":"CSS实现突出不同颜色的圆角","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"代码展示","slug":"代码展示","link":"#代码展示","children":[]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[{"level":3,"title":"效果预览","slug":"效果预览","link":"#效果预览","children":[]},{"level":3,"title":"查看代码","slug":"查看代码","link":"#查看代码","children":[]}]}],"relativePath":"hand-notes/CSS/CSS实现突出不同颜色的圆角.md"}'),p={name:"hand-notes/CSS/CSS实现突出不同颜色的圆角.md"},o=l("",11),e=[o];function t(c,r,D,F,y,C){return n(),a("div",null,e)}const d=s(p,[["render",t]]);export{A as __pageData,d as default};
diff --git "a/assets/hand-notes_CSS_CSS\345\256\236\347\216\260\347\261\273\344\274\274\345\276\256\344\277\241\345\244\264\345\203\217\346\225\210\346\236\234.md.378fb473.js" "b/assets/hand-notes_CSS_CSS\345\256\236\347\216\260\347\261\273\344\274\274\345\276\256\344\277\241\345\244\264\345\203\217\346\225\210\346\236\234.md.344f246b.js"
similarity index 99%
rename from "assets/hand-notes_CSS_CSS\345\256\236\347\216\260\347\261\273\344\274\274\345\276\256\344\277\241\345\244\264\345\203\217\346\225\210\346\236\234.md.378fb473.js"
rename to "assets/hand-notes_CSS_CSS\345\256\236\347\216\260\347\261\273\344\274\274\345\276\256\344\277\241\345\244\264\345\203\217\346\225\210\346\236\234.md.344f246b.js"
index 8ed925c7..0358e82d 100644
--- "a/assets/hand-notes_CSS_CSS\345\256\236\347\216\260\347\261\273\344\274\274\345\276\256\344\277\241\345\244\264\345\203\217\346\225\210\346\236\234.md.378fb473.js"
+++ "b/assets/hand-notes_CSS_CSS\345\256\236\347\216\260\347\261\273\344\274\274\345\276\256\344\277\241\345\244\264\345\203\217\346\225\210\346\236\234.md.344f246b.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const p="/static-blog/image/css/wechat_avatar.gif",d=JSON.parse('{"title":"CSS实现类似微信头像效果","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"用到的知识点","slug":"用到的知识点","link":"#用到的知识点","children":[{"level":3,"title":":only-child","slug":"only-child","link":"#only-child","children":[]},{"level":3,"title":":first-child","slug":"first-child","link":"#first-child","children":[]},{"level":3,"title":"~一般兄弟组合器","slug":"一般兄弟组合器","link":"#一般兄弟组合器","children":[]}]},{"level":2,"title":"代码实现","slug":"代码实现","link":"#代码实现","children":[]},{"level":2,"title":"效果预览","slug":"效果预览","link":"#效果预览","children":[]}],"relativePath":"hand-notes/CSS/CSS实现类似微信头像效果.md"}'),o={name:"hand-notes/CSS/CSS实现类似微信头像效果.md"},e=l(`

CSS实现类似微信头像效果

工作中可能会遇到实现类似于微信群聊头像自适应的效果,可以借助flex来实现

用到的知识点

:only-child

  • :only-child伪类表示没有任何兄弟元素的元素

  • 该伪类与:first-child:last-child:nth-child(1):nth-last-child(1)相同,但是:only-child权重小

:first-child

  • :first-child伪类表示一组兄弟元素中的第一个元素

一般兄弟组合器

语法: A ~ B

例如:p ~ span 表示同一父元素下,p元素后面的所有span元素

TIP

  • .avatar-img:first-child:nth-last-child(2) 表示该元素既是第一个元素,也是倒数第二个元素,表明当前总共有2个类名为.avatar-img的元素

代码实现

html

html
<!doctype html>
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const p="/static-blog/image/css/wechat_avatar.gif",d=JSON.parse('{"title":"CSS实现类似微信头像效果","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"用到的知识点","slug":"用到的知识点","link":"#用到的知识点","children":[{"level":3,"title":":only-child","slug":"only-child","link":"#only-child","children":[]},{"level":3,"title":":first-child","slug":"first-child","link":"#first-child","children":[]},{"level":3,"title":"~一般兄弟组合器","slug":"一般兄弟组合器","link":"#一般兄弟组合器","children":[]}]},{"level":2,"title":"代码实现","slug":"代码实现","link":"#代码实现","children":[]},{"level":2,"title":"效果预览","slug":"效果预览","link":"#效果预览","children":[]}],"relativePath":"hand-notes/CSS/CSS实现类似微信头像效果.md"}'),o={name:"hand-notes/CSS/CSS实现类似微信头像效果.md"},e=l(`

CSS实现类似微信头像效果

工作中可能会遇到实现类似于微信群聊头像自适应的效果,可以借助flex来实现

用到的知识点

:only-child

  • :only-child伪类表示没有任何兄弟元素的元素

  • 该伪类与:first-child:last-child:nth-child(1):nth-last-child(1)相同,但是:only-child权重小

:first-child

  • :first-child伪类表示一组兄弟元素中的第一个元素

一般兄弟组合器

语法: A ~ B

例如:p ~ span 表示同一父元素下,p元素后面的所有span元素

TIP

  • .avatar-img:first-child:nth-last-child(2) 表示该元素既是第一个元素,也是倒数第二个元素,表明当前总共有2个类名为.avatar-img的元素

代码实现

html

html
<!doctype html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
diff --git "a/assets/hand-notes_CSS_CSS\345\256\236\347\216\260\347\261\273\344\274\274\345\276\256\344\277\241\345\244\264\345\203\217\346\225\210\346\236\234.md.378fb473.lean.js" "b/assets/hand-notes_CSS_CSS\345\256\236\347\216\260\347\261\273\344\274\274\345\276\256\344\277\241\345\244\264\345\203\217\346\225\210\346\236\234.md.344f246b.lean.js"
similarity index 94%
rename from "assets/hand-notes_CSS_CSS\345\256\236\347\216\260\347\261\273\344\274\274\345\276\256\344\277\241\345\244\264\345\203\217\346\225\210\346\236\234.md.378fb473.lean.js"
rename to "assets/hand-notes_CSS_CSS\345\256\236\347\216\260\347\261\273\344\274\274\345\276\256\344\277\241\345\244\264\345\203\217\346\225\210\346\236\234.md.344f246b.lean.js"
index c535da79..106c1bf2 100644
--- "a/assets/hand-notes_CSS_CSS\345\256\236\347\216\260\347\261\273\344\274\274\345\276\256\344\277\241\345\244\264\345\203\217\346\225\210\346\236\234.md.378fb473.lean.js"
+++ "b/assets/hand-notes_CSS_CSS\345\256\236\347\216\260\347\261\273\344\274\274\345\276\256\344\277\241\345\244\264\345\203\217\346\225\210\346\236\234.md.344f246b.lean.js"
@@ -1 +1 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const p="/static-blog/image/css/wechat_avatar.gif",d=JSON.parse('{"title":"CSS实现类似微信头像效果","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"用到的知识点","slug":"用到的知识点","link":"#用到的知识点","children":[{"level":3,"title":":only-child","slug":"only-child","link":"#only-child","children":[]},{"level":3,"title":":first-child","slug":"first-child","link":"#first-child","children":[]},{"level":3,"title":"~一般兄弟组合器","slug":"一般兄弟组合器","link":"#一般兄弟组合器","children":[]}]},{"level":2,"title":"代码实现","slug":"代码实现","link":"#代码实现","children":[]},{"level":2,"title":"效果预览","slug":"效果预览","link":"#效果预览","children":[]}],"relativePath":"hand-notes/CSS/CSS实现类似微信头像效果.md"}'),o={name:"hand-notes/CSS/CSS实现类似微信头像效果.md"},e=l("",19),t=[e];function c(r,D,F,y,C,i){return n(),a("div",null,t)}const h=s(o,[["render",c]]);export{d as __pageData,h as default};
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const p="/static-blog/image/css/wechat_avatar.gif",d=JSON.parse('{"title":"CSS实现类似微信头像效果","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"用到的知识点","slug":"用到的知识点","link":"#用到的知识点","children":[{"level":3,"title":":only-child","slug":"only-child","link":"#only-child","children":[]},{"level":3,"title":":first-child","slug":"first-child","link":"#first-child","children":[]},{"level":3,"title":"~一般兄弟组合器","slug":"一般兄弟组合器","link":"#一般兄弟组合器","children":[]}]},{"level":2,"title":"代码实现","slug":"代码实现","link":"#代码实现","children":[]},{"level":2,"title":"效果预览","slug":"效果预览","link":"#效果预览","children":[]}],"relativePath":"hand-notes/CSS/CSS实现类似微信头像效果.md"}'),o={name:"hand-notes/CSS/CSS实现类似微信头像效果.md"},e=l("",19),t=[e];function c(r,D,F,y,C,i){return n(),a("div",null,t)}const h=s(o,[["render",c]]);export{d as __pageData,h as default};
diff --git "a/assets/hand-notes_CSS_CSS\346\250\241\346\213\237\346\225\260\345\255\227loading.md.1238daf3.js" "b/assets/hand-notes_CSS_CSS\346\250\241\346\213\237\346\225\260\345\255\227loading.md.87467d4b.js"
similarity index 99%
rename from "assets/hand-notes_CSS_CSS\346\250\241\346\213\237\346\225\260\345\255\227loading.md.1238daf3.js"
rename to "assets/hand-notes_CSS_CSS\346\250\241\346\213\237\346\225\260\345\255\227loading.md.87467d4b.js"
index 012c39ba..fd36257a 100644
--- "a/assets/hand-notes_CSS_CSS\346\250\241\346\213\237\346\225\260\345\255\227loading.md.1238daf3.js"
+++ "b/assets/hand-notes_CSS_CSS\346\250\241\346\213\237\346\225\260\345\255\227loading.md.87467d4b.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const p="/static-blog/image/css/houdini-1.png",d=JSON.parse('{"title":"CSS模拟数字loading","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"实现方案","slug":"实现方案","link":"#实现方案","children":[]},{"level":2,"title":"CSS Houdini @proerty","slug":"css-houdini-proerty","link":"#css-houdini-proerty","children":[]},{"level":2,"title":"倒计时demo","slug":"倒计时demo","link":"#倒计时demo","children":[]},{"level":2,"title":"文字loading","slug":"文字loading","link":"#文字loading","children":[]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[{"level":3,"title":"兼容性","slug":"兼容性","link":"#兼容性","children":[]},{"level":3,"title":"效果预览","slug":"效果预览","link":"#效果预览","children":[]},{"level":3,"title":"相关代码","slug":"相关代码","link":"#相关代码","children":[]}]}],"relativePath":"hand-notes/CSS/CSS模拟数字loading.md"}'),o={name:"hand-notes/CSS/CSS模拟数字loading.md"},e=l(`

CSS模拟数字loading

实现方案

  • 使用css计数器展示进度数字

  • 使用CSS Houdini中的@property自定义css属性,并且可以在动画中修改该属性的值

CSS Houdini @proerty

@proerty可以让我们自定义一些CSS属性,然后在样式中使用,使用方法和displayfont-size等这些相同

TIP

  • 自定义属性的命名和CSS变量相似,要以--开头,比如@property --aaa {}

CSS Houdini中的@property语法如下:

css
@property --property-name {
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const p="/static-blog/image/css/houdini-1.png",d=JSON.parse('{"title":"CSS模拟数字loading","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"实现方案","slug":"实现方案","link":"#实现方案","children":[]},{"level":2,"title":"CSS Houdini @proerty","slug":"css-houdini-proerty","link":"#css-houdini-proerty","children":[]},{"level":2,"title":"倒计时demo","slug":"倒计时demo","link":"#倒计时demo","children":[]},{"level":2,"title":"文字loading","slug":"文字loading","link":"#文字loading","children":[]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[{"level":3,"title":"兼容性","slug":"兼容性","link":"#兼容性","children":[]},{"level":3,"title":"效果预览","slug":"效果预览","link":"#效果预览","children":[]},{"level":3,"title":"相关代码","slug":"相关代码","link":"#相关代码","children":[]}]}],"relativePath":"hand-notes/CSS/CSS模拟数字loading.md"}'),o={name:"hand-notes/CSS/CSS模拟数字loading.md"},e=l(`

CSS模拟数字loading

实现方案

  • 使用css计数器展示进度数字

  • 使用CSS Houdini中的@property自定义css属性,并且可以在动画中修改该属性的值

CSS Houdini @proerty

@proerty可以让我们自定义一些CSS属性,然后在样式中使用,使用方法和displayfont-size等这些相同

TIP

  • 自定义属性的命名和CSS变量相似,要以--开头,比如@property --aaa {}

CSS Houdini中的@property语法如下:

css
@property --property-name {
   syntax: "<color>";
   inherits: false;
   initial-value: #c0ffee;
diff --git "a/assets/hand-notes_CSS_CSS\346\250\241\346\213\237\346\225\260\345\255\227loading.md.1238daf3.lean.js" "b/assets/hand-notes_CSS_CSS\346\250\241\346\213\237\346\225\260\345\255\227loading.md.87467d4b.lean.js"
similarity index 94%
rename from "assets/hand-notes_CSS_CSS\346\250\241\346\213\237\346\225\260\345\255\227loading.md.1238daf3.lean.js"
rename to "assets/hand-notes_CSS_CSS\346\250\241\346\213\237\346\225\260\345\255\227loading.md.87467d4b.lean.js"
index 8d201777..b96fde7b 100644
--- "a/assets/hand-notes_CSS_CSS\346\250\241\346\213\237\346\225\260\345\255\227loading.md.1238daf3.lean.js"
+++ "b/assets/hand-notes_CSS_CSS\346\250\241\346\213\237\346\225\260\345\255\227loading.md.87467d4b.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const p="/static-blog/image/css/houdini-1.png",d=JSON.parse('{"title":"CSS模拟数字loading","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"实现方案","slug":"实现方案","link":"#实现方案","children":[]},{"level":2,"title":"CSS Houdini @proerty","slug":"css-houdini-proerty","link":"#css-houdini-proerty","children":[]},{"level":2,"title":"倒计时demo","slug":"倒计时demo","link":"#倒计时demo","children":[]},{"level":2,"title":"文字loading","slug":"文字loading","link":"#文字loading","children":[]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[{"level":3,"title":"兼容性","slug":"兼容性","link":"#兼容性","children":[]},{"level":3,"title":"效果预览","slug":"效果预览","link":"#效果预览","children":[]},{"level":3,"title":"相关代码","slug":"相关代码","link":"#相关代码","children":[]}]}],"relativePath":"hand-notes/CSS/CSS模拟数字loading.md"}'),o={name:"hand-notes/CSS/CSS模拟数字loading.md"},e=l("",28),t=[e];function c(r,D,F,y,i,C){return a(),n("div",null,t)}const u=s(o,[["render",c]]);export{d as __pageData,u as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const p="/static-blog/image/css/houdini-1.png",d=JSON.parse('{"title":"CSS模拟数字loading","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"实现方案","slug":"实现方案","link":"#实现方案","children":[]},{"level":2,"title":"CSS Houdini @proerty","slug":"css-houdini-proerty","link":"#css-houdini-proerty","children":[]},{"level":2,"title":"倒计时demo","slug":"倒计时demo","link":"#倒计时demo","children":[]},{"level":2,"title":"文字loading","slug":"文字loading","link":"#文字loading","children":[]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[{"level":3,"title":"兼容性","slug":"兼容性","link":"#兼容性","children":[]},{"level":3,"title":"效果预览","slug":"效果预览","link":"#效果预览","children":[]},{"level":3,"title":"相关代码","slug":"相关代码","link":"#相关代码","children":[]}]}],"relativePath":"hand-notes/CSS/CSS模拟数字loading.md"}'),o={name:"hand-notes/CSS/CSS模拟数字loading.md"},e=l("",28),t=[e];function c(r,D,F,y,i,C){return a(),n("div",null,t)}const u=s(o,[["render",c]]);export{d as __pageData,u as default};
diff --git "a/assets/hand-notes_CSS_CSS\350\256\241\346\225\260\345\231\250-counter.md.09fa3208.js" "b/assets/hand-notes_CSS_CSS\350\256\241\346\225\260\345\231\250-counter.md.c3604348.js"
similarity index 99%
rename from "assets/hand-notes_CSS_CSS\350\256\241\346\225\260\345\231\250-counter.md.09fa3208.js"
rename to "assets/hand-notes_CSS_CSS\350\256\241\346\225\260\345\231\250-counter.md.c3604348.js"
index 1c5484cf..b7687274 100644
--- "a/assets/hand-notes_CSS_CSS\350\256\241\346\225\260\345\231\250-counter.md.09fa3208.js"
+++ "b/assets/hand-notes_CSS_CSS\350\256\241\346\225\260\345\231\250-counter.md.c3604348.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const o="/static-blog/image/css/counter-1.png",p="/static-blog/image/css/counter-2.png",e="/static-blog/image/css/counter-3.png",g=JSON.parse('{"title":"CSS计数器-counter","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"counter-reset","slug":"counter-reset","link":"#counter-reset","children":[]},{"level":2,"title":"counter-increment","slug":"counter-increment","link":"#counter-increment","children":[]},{"level":2,"title":"counter()/counters()","slug":"counter-counters","link":"#counter-counters","children":[{"level":3,"title":"counter","slug":"counter","link":"#counter","children":[]},{"level":3,"title":"counters","slug":"counters","link":"#counters","children":[]}]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[{"level":3,"title":"效果预览","slug":"效果预览","link":"#效果预览","children":[]},{"level":3,"title":"相关代码","slug":"相关代码","link":"#相关代码","children":[]}]}],"relativePath":"hand-notes/CSS/CSS计数器-counter.md"}'),t={name:"hand-notes/CSS/CSS计数器-counter.md"},c=l(`

CSS计数器-counter

CSS计数器一般和伪元素content属性一起使用,有几个关键的属性

counter-reset

为计数器命名,并设置计数器的初始值,如果没设置,初始值默认是0

counter-reset的值可以是负数,但是不支持小数(Chrome Version 118.0.5993.117 (Official Build) (arm64)),小数都会被处理为0

css
.counter-box {
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const o="/static-blog/image/css/counter-1.png",p="/static-blog/image/css/counter-2.png",e="/static-blog/image/css/counter-3.png",g=JSON.parse('{"title":"CSS计数器-counter","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"counter-reset","slug":"counter-reset","link":"#counter-reset","children":[]},{"level":2,"title":"counter-increment","slug":"counter-increment","link":"#counter-increment","children":[]},{"level":2,"title":"counter()/counters()","slug":"counter-counters","link":"#counter-counters","children":[{"level":3,"title":"counter","slug":"counter","link":"#counter","children":[]},{"level":3,"title":"counters","slug":"counters","link":"#counters","children":[]}]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[{"level":3,"title":"效果预览","slug":"效果预览","link":"#效果预览","children":[]},{"level":3,"title":"相关代码","slug":"相关代码","link":"#相关代码","children":[]}]}],"relativePath":"hand-notes/CSS/CSS计数器-counter.md"}'),t={name:"hand-notes/CSS/CSS计数器-counter.md"},c=l(`

CSS计数器-counter

CSS计数器一般和伪元素content属性一起使用,有几个关键的属性

counter-reset

为计数器命名,并设置计数器的初始值,如果没设置,初始值默认是0

counter-reset的值可以是负数,但是不支持小数(Chrome Version 118.0.5993.117 (Official Build) (arm64)),小数都会被处理为0

css
.counter-box {
     counter-reset: box-count; // 设置计数器名称为 box-count,为设置默认值,默认值为0
 }
 
diff --git "a/assets/hand-notes_CSS_CSS\350\256\241\346\225\260\345\231\250-counter.md.09fa3208.lean.js" "b/assets/hand-notes_CSS_CSS\350\256\241\346\225\260\345\231\250-counter.md.c3604348.lean.js"
similarity index 94%
rename from "assets/hand-notes_CSS_CSS\350\256\241\346\225\260\345\231\250-counter.md.09fa3208.lean.js"
rename to "assets/hand-notes_CSS_CSS\350\256\241\346\225\260\345\231\250-counter.md.c3604348.lean.js"
index 130da9ff..b40aa147 100644
--- "a/assets/hand-notes_CSS_CSS\350\256\241\346\225\260\345\231\250-counter.md.09fa3208.lean.js"
+++ "b/assets/hand-notes_CSS_CSS\350\256\241\346\225\260\345\231\250-counter.md.c3604348.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const o="/static-blog/image/css/counter-1.png",p="/static-blog/image/css/counter-2.png",e="/static-blog/image/css/counter-3.png",g=JSON.parse('{"title":"CSS计数器-counter","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"counter-reset","slug":"counter-reset","link":"#counter-reset","children":[]},{"level":2,"title":"counter-increment","slug":"counter-increment","link":"#counter-increment","children":[]},{"level":2,"title":"counter()/counters()","slug":"counter-counters","link":"#counter-counters","children":[{"level":3,"title":"counter","slug":"counter","link":"#counter","children":[]},{"level":3,"title":"counters","slug":"counters","link":"#counters","children":[]}]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[{"level":3,"title":"效果预览","slug":"效果预览","link":"#效果预览","children":[]},{"level":3,"title":"相关代码","slug":"相关代码","link":"#相关代码","children":[]}]}],"relativePath":"hand-notes/CSS/CSS计数器-counter.md"}'),t={name:"hand-notes/CSS/CSS计数器-counter.md"},c=l("",45),r=[c];function D(F,y,i,C,A,u){return a(),n("div",null,r)}const h=s(t,[["render",D]]);export{g as __pageData,h as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const o="/static-blog/image/css/counter-1.png",p="/static-blog/image/css/counter-2.png",e="/static-blog/image/css/counter-3.png",g=JSON.parse('{"title":"CSS计数器-counter","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"counter-reset","slug":"counter-reset","link":"#counter-reset","children":[]},{"level":2,"title":"counter-increment","slug":"counter-increment","link":"#counter-increment","children":[]},{"level":2,"title":"counter()/counters()","slug":"counter-counters","link":"#counter-counters","children":[{"level":3,"title":"counter","slug":"counter","link":"#counter","children":[]},{"level":3,"title":"counters","slug":"counters","link":"#counters","children":[]}]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[{"level":3,"title":"效果预览","slug":"效果预览","link":"#效果预览","children":[]},{"level":3,"title":"相关代码","slug":"相关代码","link":"#相关代码","children":[]}]}],"relativePath":"hand-notes/CSS/CSS计数器-counter.md"}'),t={name:"hand-notes/CSS/CSS计数器-counter.md"},c=l("",45),r=[c];function D(F,y,i,C,A,u){return a(),n("div",null,r)}const h=s(t,[["render",D]]);export{g as __pageData,h as default};
diff --git "a/assets/hand-notes_CSS_Tabs\345\234\206\350\247\222.md.36efb80a.js" "b/assets/hand-notes_CSS_Tabs\345\234\206\350\247\222.md.36efb80a.js"
new file mode 100644
index 00000000..34df8d53
--- /dev/null
+++ "b/assets/hand-notes_CSS_Tabs\345\234\206\350\247\222.md.36efb80a.js"
@@ -0,0 +1,158 @@
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"Tabs圆角","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"Tabs圆角简单效果","slug":"tabs圆角简单效果","link":"#tabs圆角简单效果","children":[]},{"level":2,"title":"Tabs圆角升级效果","slug":"tabs圆角升级效果","link":"#tabs圆角升级效果","children":[]},{"level":2,"title":"参考","slug":"参考","link":"#参考","children":[]}],"relativePath":"hand-notes/CSS/Tabs圆角.md"}'),p={name:"hand-notes/CSS/Tabs圆角.md"},o=l(`

Tabs圆角

Tabs圆角简单效果

css代码

css
* {
+    padding: 0;
+    margin: 0;
+}
+#app {
+    width: 100vw;
+    height: 100vh;
+    background-color: #F7F8F9;
+    padding-top: 100px;
+    box-sizing: border-box;
+    overflow: hidden;
+}
+.tabs-box {
+    --text-primary-color: #EF4034;
+    --bg-primary-color: #E08638;
+    --h: 50px;
+    --base-radius: 12px;
+    width: 380px;
+    height: var(--h);
+    display: flex;
+    background-color: var(--bg-primary-color);
+    border-radius: var(--base-radius) var(--base-radius) 0 0;
+    margin: 0 auto;
+    overflow: hidden;
+    cursor: pointer;
+}
+.tabs-item {
+    flex: 1;
+    height: var(--h);
+    position: relative;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    font-size: 16px;
+    font-weight: 600;
+    color: #FFFFFF;
+}
+.tabs-item--selected {
+    color: var(--text-primary-color);
+    background-color: #FFFFFF;
+    /*添加上面两个圆角*/
+    border-radius: var(--base-radius) var(--base-radius) 0 0;
+    /*添加box-shadow*/
+    box-shadow: var(--base-radius) var(--base-radius) 0 0 #FFFFFF, calc(-1 * var(--base-radius)) var(--base-radius) 0 0 #FFFFFF;
+}
+
+.tabs-item--selected::before,
+.tabs-item--selected::after {
+    content: "";
+    width: var(--base-radius);
+    height: var(--h);
+    position: absolute;
+    top: 0;
+    background-color: var(--bg-primary-color);
+}
+
+.tabs-item--selected::before {
+    left: calc(-1 * var(--base-radius));
+    border-radius: 0 0 var(--base-radius) 0;
+}
+
+.tabs-item--selected::after {
+    right: calc(-1 * var(--base-radius));
+    border-radius: 0 0 0 var(--base-radius);
+}
+

Tabs圆角升级效果

css代码

css
* {
+    padding: 0;
+    margin: 0;
+}
+#app {
+    width: 100vw;
+    height: 100vh;
+    background-color: #F7F8F9;
+    padding-top: 100px;
+    box-sizing: border-box;
+    overflow: hidden;
+}
+.tabs-box {
+    --text-primary-color: #EF4034;
+    --bg-primary-color: #E08638;
+    --h: 50px;
+    --base-radius: 12px;
+    width: 800px;
+    height: var(--h);
+    display: flex;
+    background-color: var(--bg-primary-color);
+    margin: 0 auto;
+    border-radius: var(--base-radius) var(--base-radius) 0 0;
+    overflow: hidden;
+    cursor: pointer;
+}
+.tabs-item {
+    flex: 1;
+    height: var(--h);
+    position: relative;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    font-size: 16px;
+    font-weight: 600;
+    color: #FFFFFF;
+    border-radius: var(--base-radius) var(--base-radius) 0 0;
+}
+.tabs-item--selected {
+    color: var(--text-primary-color);
+    background-color: #FFFFFF;
+    /*添加box-shadow  必须要有这个 这个设置的颜色其实就是圆角的背景色*/
+    box-shadow: calc(var(--base-radius) * -2) 40px 0 0 #FFFFFF, calc(var(--base-radius) * 2) 40px 0 0 #FFFFFF;
+}
+
+.tabs-item--selected::before,
+.tabs-item--selected::after {
+    content: "";
+    width: var(--base-radius);
+    height: var(--h);
+    position: absolute;
+    top: 0;
+    background-color: #FFFFFF;
+}
+
+.tabs-item--selected::before {
+    left: calc(-.5 * var(--base-radius));
+    transform: skewX(-15deg);
+    border-radius: var(--base-radius) 0 0 0;
+}
+
+.tabs-item--selected::after {
+    right: calc(-.5 * var(--base-radius));
+    transform: skewX(15deg);
+    border-radius: 0 var(--base-radius) 0 0;
+}
+
+.tabs-item--not-selected {
+    z-index: 2;
+}
+
+.tabs-item--not-selected::before,
+.tabs-item--not-selected::after {
+    content: "";
+    width: var(--base-radius);
+    height: var(--h);
+    position: absolute;
+    top: 0;
+    background-color: var(--bg-primary-color);
+}
+
+.tabs-item--not-selected::before {
+    transform: skewX(15deg);
+    left: calc(.5 * var(--base-radius));
+    border-radius: 0 0 0 var(--base-radius);
+}
+
+.tabs-item--not-selected::after {
+    transform: skewX(-15deg);
+    right: calc(.5 * var(--base-radius));
+    border-radius: 0 0 var(--base-radius) 0;
+}
+

参考

`,11),e=[o];function c(r,t,D,C,F,y){return n(),a("div",null,e)}const d=s(p,[["render",c]]);export{i as __pageData,d as default}; diff --git "a/assets/hand-notes_CSS_Tabs\345\234\206\350\247\222.md.36efb80a.lean.js" "b/assets/hand-notes_CSS_Tabs\345\234\206\350\247\222.md.36efb80a.lean.js" new file mode 100644 index 00000000..db0a09b4 --- /dev/null +++ "b/assets/hand-notes_CSS_Tabs\345\234\206\350\247\222.md.36efb80a.lean.js" @@ -0,0 +1 @@ +import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"Tabs圆角","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"Tabs圆角简单效果","slug":"tabs圆角简单效果","link":"#tabs圆角简单效果","children":[]},{"level":2,"title":"Tabs圆角升级效果","slug":"tabs圆角升级效果","link":"#tabs圆角升级效果","children":[]},{"level":2,"title":"参考","slug":"参考","link":"#参考","children":[]}],"relativePath":"hand-notes/CSS/Tabs圆角.md"}'),p={name:"hand-notes/CSS/Tabs圆角.md"},o=l("",11),e=[o];function c(r,t,D,C,F,y){return n(),a("div",null,e)}const d=s(p,[["render",c]]);export{i as __pageData,d as default}; diff --git "a/assets/hand-notes_CSS_\345\233\276\347\211\207\345\212\240\350\275\275\345\207\272\351\224\231\346\240\267\345\274\217\350\256\276\347\275\256.md.58a2fa90.js" "b/assets/hand-notes_CSS_\345\233\276\347\211\207\345\212\240\350\275\275\345\207\272\351\224\231\346\240\267\345\274\217\350\256\276\347\275\256.md.8992d802.js" similarity index 99% rename from "assets/hand-notes_CSS_\345\233\276\347\211\207\345\212\240\350\275\275\345\207\272\351\224\231\346\240\267\345\274\217\350\256\276\347\275\256.md.58a2fa90.js" rename to "assets/hand-notes_CSS_\345\233\276\347\211\207\345\212\240\350\275\275\345\207\272\351\224\231\346\240\267\345\274\217\350\256\276\347\275\256.md.8992d802.js" index 3ed3b001..96741e53 100644 --- "a/assets/hand-notes_CSS_\345\233\276\347\211\207\345\212\240\350\275\275\345\207\272\351\224\231\346\240\267\345\274\217\350\256\276\347\275\256.md.58a2fa90.js" +++ "b/assets/hand-notes_CSS_\345\233\276\347\211\207\345\212\240\350\275\275\345\207\272\351\224\231\346\240\267\345\274\217\350\256\276\347\275\256.md.8992d802.js" @@ -1,4 +1,4 @@ -import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"图片加载出错样式设置","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"代码展示","slug":"代码展示","link":"#代码展示","children":[]},{"level":2,"title":"效果预览","slug":"效果预览","link":"#效果预览","children":[]}],"relativePath":"hand-notes/CSS/图片加载出错样式设置.md"}'),p={name:"hand-notes/CSS/图片加载出错样式设置.md"},o=l(`

图片加载出错样式设置

TIP

冷知识:图片加载出错时,为img元素设置的伪元素::before/::after会生效,图片正常加载时,不会生效

代码展示

html代码

html
<!doctype html>
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"图片加载出错样式设置","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"代码展示","slug":"代码展示","link":"#代码展示","children":[]},{"level":2,"title":"效果预览","slug":"效果预览","link":"#效果预览","children":[]}],"relativePath":"hand-notes/CSS/图片加载出错样式设置.md"}'),p={name:"hand-notes/CSS/图片加载出错样式设置.md"},o=l(`

图片加载出错样式设置

TIP

冷知识:图片加载出错时,为img元素设置的伪元素::before/::after会生效,图片正常加载时,不会生效

代码展示

html代码

html
<!doctype html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
diff --git "a/assets/hand-notes_CSS_\345\233\276\347\211\207\345\212\240\350\275\275\345\207\272\351\224\231\346\240\267\345\274\217\350\256\276\347\275\256.md.58a2fa90.lean.js" "b/assets/hand-notes_CSS_\345\233\276\347\211\207\345\212\240\350\275\275\345\207\272\351\224\231\346\240\267\345\274\217\350\256\276\347\275\256.md.8992d802.lean.js"
similarity index 89%
rename from "assets/hand-notes_CSS_\345\233\276\347\211\207\345\212\240\350\275\275\345\207\272\351\224\231\346\240\267\345\274\217\350\256\276\347\275\256.md.58a2fa90.lean.js"
rename to "assets/hand-notes_CSS_\345\233\276\347\211\207\345\212\240\350\275\275\345\207\272\351\224\231\346\240\267\345\274\217\350\256\276\347\275\256.md.8992d802.lean.js"
index 46c007ff..536b262d 100644
--- "a/assets/hand-notes_CSS_\345\233\276\347\211\207\345\212\240\350\275\275\345\207\272\351\224\231\346\240\267\345\274\217\350\256\276\347\275\256.md.58a2fa90.lean.js"
+++ "b/assets/hand-notes_CSS_\345\233\276\347\211\207\345\212\240\350\275\275\345\207\272\351\224\231\346\240\267\345\274\217\350\256\276\347\275\256.md.8992d802.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"图片加载出错样式设置","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"代码展示","slug":"代码展示","link":"#代码展示","children":[]},{"level":2,"title":"效果预览","slug":"效果预览","link":"#效果预览","children":[]}],"relativePath":"hand-notes/CSS/图片加载出错样式设置.md"}'),p={name:"hand-notes/CSS/图片加载出错样式设置.md"},o=l("",9),e=[o];function t(c,D,r,F,y,C){return a(),n("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"图片加载出错样式设置","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"代码展示","slug":"代码展示","link":"#代码展示","children":[]},{"level":2,"title":"效果预览","slug":"效果预览","link":"#效果预览","children":[]}],"relativePath":"hand-notes/CSS/图片加载出错样式设置.md"}'),p={name:"hand-notes/CSS/图片加载出错样式设置.md"},o=l("",9),e=[o];function t(c,D,r,F,y,C){return a(),n("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
diff --git "a/assets/hand-notes_CSS_\345\256\236\347\216\260\351\253\230\345\272\246\350\277\207\346\270\241.md.61e2fce5.js" "b/assets/hand-notes_CSS_\345\256\236\347\216\260\351\253\230\345\272\246\350\277\207\346\270\241.md.ba3322a7.js"
similarity index 99%
rename from "assets/hand-notes_CSS_\345\256\236\347\216\260\351\253\230\345\272\246\350\277\207\346\270\241.md.61e2fce5.js"
rename to "assets/hand-notes_CSS_\345\256\236\347\216\260\351\253\230\345\272\246\350\277\207\346\270\241.md.ba3322a7.js"
index f6372931..a4f93a1a 100644
--- "a/assets/hand-notes_CSS_\345\256\236\347\216\260\351\253\230\345\272\246\350\277\207\346\270\241.md.61e2fce5.js"
+++ "b/assets/hand-notes_CSS_\345\256\236\347\216\260\351\253\230\345\272\246\350\277\207\346\270\241.md.ba3322a7.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const p="/static-blog/image/css/transition-height-1.gif",o="/static-blog/image/css/transition-height-2.gif",e="/static-blog/image/css/transition-height-3.gif",t="/static-blog/image/css/transition-height-4.gif",u=JSON.parse('{"title":"实现高度过渡","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"max-height","slug":"max-height","link":"#max-height","children":[]},{"level":2,"title":"scale","slug":"scale","link":"#scale","children":[]},{"level":2,"title":"grid","slug":"grid","link":"#grid","children":[]},{"level":2,"title":"使用js+css来实现","slug":"使用js-css来实现","link":"#使用js-css来实现","children":[]}],"relativePath":"hand-notes/CSS/实现高度过渡.md"}'),c={name:"hand-notes/CSS/实现高度过渡.md"},r=l(`

实现高度过渡

在工作中有时候会遇到点击实现Collapse折叠效果,而折叠的元素高度可能不固定的,使用height: 0height: auto的方法是行不通的,因为一个值从数字变为非数字是不能使用过渡效果的,要实现该效果可使用其他方法。

html
<div id="root">
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const p="/static-blog/image/css/transition-height-1.gif",o="/static-blog/image/css/transition-height-2.gif",e="/static-blog/image/css/transition-height-3.gif",t="/static-blog/image/css/transition-height-4.gif",u=JSON.parse('{"title":"实现高度过渡","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"max-height","slug":"max-height","link":"#max-height","children":[]},{"level":2,"title":"scale","slug":"scale","link":"#scale","children":[]},{"level":2,"title":"grid","slug":"grid","link":"#grid","children":[]},{"level":2,"title":"使用js+css来实现","slug":"使用js-css来实现","link":"#使用js-css来实现","children":[]}],"relativePath":"hand-notes/CSS/实现高度过渡.md"}'),c={name:"hand-notes/CSS/实现高度过渡.md"},r=l(`

实现高度过渡

在工作中有时候会遇到点击实现Collapse折叠效果,而折叠的元素高度可能不固定的,使用height: 0height: auto的方法是行不通的,因为一个值从数字变为非数字是不能使用过渡效果的,要实现该效果可使用其他方法。

html
<div id="root">
     <h1>元素高度过渡效果(通过max-height实现)</h1>
     <button class="btn">hover me</button>
     <div class="parent">
diff --git "a/assets/hand-notes_CSS_\345\256\236\347\216\260\351\253\230\345\272\246\350\277\207\346\270\241.md.61e2fce5.lean.js" "b/assets/hand-notes_CSS_\345\256\236\347\216\260\351\253\230\345\272\246\350\277\207\346\270\241.md.ba3322a7.lean.js"
similarity index 93%
rename from "assets/hand-notes_CSS_\345\256\236\347\216\260\351\253\230\345\272\246\350\277\207\346\270\241.md.61e2fce5.lean.js"
rename to "assets/hand-notes_CSS_\345\256\236\347\216\260\351\253\230\345\272\246\350\277\207\346\270\241.md.ba3322a7.lean.js"
index 5f2badc6..722b5ca5 100644
--- "a/assets/hand-notes_CSS_\345\256\236\347\216\260\351\253\230\345\272\246\350\277\207\346\270\241.md.61e2fce5.lean.js"
+++ "b/assets/hand-notes_CSS_\345\256\236\347\216\260\351\253\230\345\272\246\350\277\207\346\270\241.md.ba3322a7.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const p="/static-blog/image/css/transition-height-1.gif",o="/static-blog/image/css/transition-height-2.gif",e="/static-blog/image/css/transition-height-3.gif",t="/static-blog/image/css/transition-height-4.gif",u=JSON.parse('{"title":"实现高度过渡","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"max-height","slug":"max-height","link":"#max-height","children":[]},{"level":2,"title":"scale","slug":"scale","link":"#scale","children":[]},{"level":2,"title":"grid","slug":"grid","link":"#grid","children":[]},{"level":2,"title":"使用js+css来实现","slug":"使用js-css来实现","link":"#使用js-css来实现","children":[]}],"relativePath":"hand-notes/CSS/实现高度过渡.md"}'),c={name:"hand-notes/CSS/实现高度过渡.md"},r=l("",32),D=[r];function F(y,C,i,A,d,h){return a(),n("div",null,D)}const m=s(c,[["render",F]]);export{u as __pageData,m as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const p="/static-blog/image/css/transition-height-1.gif",o="/static-blog/image/css/transition-height-2.gif",e="/static-blog/image/css/transition-height-3.gif",t="/static-blog/image/css/transition-height-4.gif",u=JSON.parse('{"title":"实现高度过渡","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"max-height","slug":"max-height","link":"#max-height","children":[]},{"level":2,"title":"scale","slug":"scale","link":"#scale","children":[]},{"level":2,"title":"grid","slug":"grid","link":"#grid","children":[]},{"level":2,"title":"使用js+css来实现","slug":"使用js-css来实现","link":"#使用js-css来实现","children":[]}],"relativePath":"hand-notes/CSS/实现高度过渡.md"}'),c={name:"hand-notes/CSS/实现高度过渡.md"},r=l("",32),D=[r];function F(y,C,i,A,d,h){return a(),n("div",null,D)}const m=s(c,[["render",F]]);export{u as __pageData,m as default};
diff --git "a/assets/hand-notes_CSS_\350\231\232\347\272\277\350\276\271\346\241\206.md.d396c891.js" "b/assets/hand-notes_CSS_\350\231\232\347\272\277\350\276\271\346\241\206.md.811b6119.js"
similarity index 98%
rename from "assets/hand-notes_CSS_\350\231\232\347\272\277\350\276\271\346\241\206.md.d396c891.js"
rename to "assets/hand-notes_CSS_\350\231\232\347\272\277\350\276\271\346\241\206.md.811b6119.js"
index c45be1f0..adf22f9e 100644
--- "a/assets/hand-notes_CSS_\350\231\232\347\272\277\350\276\271\346\241\206.md.d396c891.js"
+++ "b/assets/hand-notes_CSS_\350\231\232\347\272\277\350\276\271\346\241\206.md.811b6119.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"虚线边框","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"代码实现","slug":"代码实现","link":"#代码实现","children":[]},{"level":2,"title":"效果预览","slug":"效果预览","link":"#效果预览","children":[]}],"relativePath":"hand-notes/CSS/虚线边框.md"}'),p={name:"hand-notes/CSS/虚线边框.md"},o=l(`

虚线边框

代码实现

代码如下:

css
.dashed-border {
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"虚线边框","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"代码实现","slug":"代码实现","link":"#代码实现","children":[]},{"level":2,"title":"效果预览","slug":"效果预览","link":"#效果预览","children":[]}],"relativePath":"hand-notes/CSS/虚线边框.md"}'),p={name:"hand-notes/CSS/虚线边框.md"},o=l(`

虚线边框

代码实现

代码如下:

css
.dashed-border {
     display: flex;
     align-items: center;
     justify-content: center;
diff --git "a/assets/hand-notes_CSS_\350\231\232\347\272\277\350\276\271\346\241\206.md.d396c891.lean.js" "b/assets/hand-notes_CSS_\350\231\232\347\272\277\350\276\271\346\241\206.md.811b6119.lean.js"
similarity index 88%
rename from "assets/hand-notes_CSS_\350\231\232\347\272\277\350\276\271\346\241\206.md.d396c891.lean.js"
rename to "assets/hand-notes_CSS_\350\231\232\347\272\277\350\276\271\346\241\206.md.811b6119.lean.js"
index f0785b21..4b12fff4 100644
--- "a/assets/hand-notes_CSS_\350\231\232\347\272\277\350\276\271\346\241\206.md.d396c891.lean.js"
+++ "b/assets/hand-notes_CSS_\350\231\232\347\272\277\350\276\271\346\241\206.md.811b6119.lean.js"
@@ -1 +1 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"虚线边框","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"代码实现","slug":"代码实现","link":"#代码实现","children":[]},{"level":2,"title":"效果预览","slug":"效果预览","link":"#效果预览","children":[]}],"relativePath":"hand-notes/CSS/虚线边框.md"}'),p={name:"hand-notes/CSS/虚线边框.md"},o=l("",6),e=[o];function t(r,c,C,D,F,y){return n(),a("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"虚线边框","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"代码实现","slug":"代码实现","link":"#代码实现","children":[]},{"level":2,"title":"效果预览","slug":"效果预览","link":"#效果预览","children":[]}],"relativePath":"hand-notes/CSS/虚线边框.md"}'),p={name:"hand-notes/CSS/虚线边框.md"},o=l("",6),e=[o];function t(r,c,C,D,F,y){return n(),a("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
diff --git "a/assets/hand-notes_Canvas_\347\273\230\345\210\266\345\233\276\347\211\207\344\270\215\346\270\205\346\231\260\351\227\256\351\242\230.md.847e50b0.js" "b/assets/hand-notes_Canvas_\347\273\230\345\210\266\345\233\276\347\211\207\344\270\215\346\270\205\346\231\260\351\227\256\351\242\230.md.a6cd2754.js"
similarity index 99%
rename from "assets/hand-notes_Canvas_\347\273\230\345\210\266\345\233\276\347\211\207\344\270\215\346\270\205\346\231\260\351\227\256\351\242\230.md.847e50b0.js"
rename to "assets/hand-notes_Canvas_\347\273\230\345\210\266\345\233\276\347\211\207\344\270\215\346\270\205\346\231\260\351\227\256\351\242\230.md.a6cd2754.js"
index 8b130652..a4235649 100644
--- "a/assets/hand-notes_Canvas_\347\273\230\345\210\266\345\233\276\347\211\207\344\270\215\346\270\205\346\231\260\351\227\256\351\242\230.md.847e50b0.js"
+++ "b/assets/hand-notes_Canvas_\347\273\230\345\210\266\345\233\276\347\211\207\344\270\215\346\270\205\346\231\260\351\227\256\351\242\230.md.a6cd2754.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const F=JSON.parse('{"title":"绘制图片不清晰问题","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"问题原因和解决","slug":"问题原因和解决","link":"#问题原因和解决","children":[]},{"level":2,"title":"查看效果","slug":"查看效果","link":"#查看效果","children":[]}],"relativePath":"hand-notes/Canvas/绘制图片不清晰问题.md"}'),o={name:"hand-notes/Canvas/绘制图片不清晰问题.md"},p=l(`

绘制图片不清晰问题

问题原因和解决

canvas其实本质上也是一张图片,不管在canvas中绘制图片还是绘制其他图形,都是一样的道理

首先要明确,图片/canvas有以下两种尺寸

  • 原始尺寸

例如:这样设置

javascript
canvas.width = 600
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const F=JSON.parse('{"title":"绘制图片不清晰问题","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"问题原因和解决","slug":"问题原因和解决","link":"#问题原因和解决","children":[]},{"level":2,"title":"查看效果","slug":"查看效果","link":"#查看效果","children":[]}],"relativePath":"hand-notes/Canvas/绘制图片不清晰问题.md"}'),o={name:"hand-notes/Canvas/绘制图片不清晰问题.md"},p=l(`

绘制图片不清晰问题

问题原因和解决

canvas其实本质上也是一张图片,不管在canvas中绘制图片还是绘制其他图形,都是一样的道理

首先要明确,图片/canvas有以下两种尺寸

  • 原始尺寸

例如:这样设置

javascript
canvas.width = 600
 canvas.height = 600
 // 或者
 img.naturalWidth
diff --git "a/assets/hand-notes_Canvas_\347\273\230\345\210\266\345\233\276\347\211\207\344\270\215\346\270\205\346\231\260\351\227\256\351\242\230.md.847e50b0.lean.js" "b/assets/hand-notes_Canvas_\347\273\230\345\210\266\345\233\276\347\211\207\344\270\215\346\270\205\346\231\260\351\227\256\351\242\230.md.a6cd2754.lean.js"
similarity index 90%
rename from "assets/hand-notes_Canvas_\347\273\230\345\210\266\345\233\276\347\211\207\344\270\215\346\270\205\346\231\260\351\227\256\351\242\230.md.847e50b0.lean.js"
rename to "assets/hand-notes_Canvas_\347\273\230\345\210\266\345\233\276\347\211\207\344\270\215\346\270\205\346\231\260\351\227\256\351\242\230.md.a6cd2754.lean.js"
index 207a9721..8ba4fc7a 100644
--- "a/assets/hand-notes_Canvas_\347\273\230\345\210\266\345\233\276\347\211\207\344\270\215\346\270\205\346\231\260\351\227\256\351\242\230.md.847e50b0.lean.js"
+++ "b/assets/hand-notes_Canvas_\347\273\230\345\210\266\345\233\276\347\211\207\344\270\215\346\270\205\346\231\260\351\227\256\351\242\230.md.a6cd2754.lean.js"
@@ -1 +1 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const F=JSON.parse('{"title":"绘制图片不清晰问题","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"问题原因和解决","slug":"问题原因和解决","link":"#问题原因和解决","children":[]},{"level":2,"title":"查看效果","slug":"查看效果","link":"#查看效果","children":[]}],"relativePath":"hand-notes/Canvas/绘制图片不清晰问题.md"}'),o={name:"hand-notes/Canvas/绘制图片不清晰问题.md"},p=l("",21),e=[p];function c(t,r,D,C,y,i){return n(),a("div",null,e)}const d=s(o,[["render",c]]);export{F as __pageData,d as default};
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const F=JSON.parse('{"title":"绘制图片不清晰问题","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"问题原因和解决","slug":"问题原因和解决","link":"#问题原因和解决","children":[]},{"level":2,"title":"查看效果","slug":"查看效果","link":"#查看效果","children":[]}],"relativePath":"hand-notes/Canvas/绘制图片不清晰问题.md"}'),o={name:"hand-notes/Canvas/绘制图片不清晰问题.md"},p=l("",21),e=[p];function c(t,r,D,C,y,i){return n(),a("div",null,e)}const d=s(o,[["render",c]]);export{F as __pageData,d as default};
diff --git "a/assets/hand-notes_Charles_\344\277\256\346\224\271\350\257\267\346\261\202\346\210\226\345\223\215\345\272\224.md.ab3f20c9.js" "b/assets/hand-notes_Charles_\344\277\256\346\224\271\350\257\267\346\261\202\346\210\226\345\223\215\345\272\224.md.f727a970.js"
similarity index 98%
rename from "assets/hand-notes_Charles_\344\277\256\346\224\271\350\257\267\346\261\202\346\210\226\345\223\215\345\272\224.md.ab3f20c9.js"
rename to "assets/hand-notes_Charles_\344\277\256\346\224\271\350\257\267\346\261\202\346\210\226\345\223\215\345\272\224.md.f727a970.js"
index ada29c02..27522ddc 100644
--- "a/assets/hand-notes_Charles_\344\277\256\346\224\271\350\257\267\346\261\202\346\210\226\345\223\215\345\272\224.md.ab3f20c9.js"
+++ "b/assets/hand-notes_Charles_\344\277\256\346\224\271\350\257\267\346\261\202\346\210\226\345\223\215\345\272\224.md.f727a970.js"
@@ -1 +1 @@
-import{_ as e,c as i,o as t,e as o}from"./app.fa87702c.js";const u=JSON.parse('{"title":"修改请求或响应","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"修改接口请求/响应数据","slug":"修改接口请求-响应数据","link":"#修改接口请求-响应数据","children":[]},{"level":2,"title":"修改响应文件内容","slug":"修改响应文件内容","link":"#修改响应文件内容","children":[]}],"relativePath":"hand-notes/Charles/修改请求或响应.md"}'),a={name:"hand-notes/Charles/修改请求或响应.md"},s=o('

修改请求或响应

修改接口请求/响应数据

  • 打开Charles,请求接口后,选中要修改的接口,右键,点击Breakpoints

breakpoints

  • 打开CharlesProxy => Breakpoint Settings

breakpoint-settings

  • 打开后展示如下,这里可以看到添加的要拦截的接口,想拦截哪个接口就双击哪个

open-breaking-settings

  • 双击后打开窗口如下

edit-breakpoint

TIP

  • 请求的query中如果有随机字符串最好去掉,不然不同的参数就不会拦截,也可以把query整体删掉

  • 如果要修改请求的数据,勾选Request

  • 如果要修改接口响应数据,勾选Response

  • APP/网页重新请求接口,这里演示的是修改Response

  • 响应数据返回后会自动锁定到如下图,等待修改Response,点击Edit Response

install

  • 修改完毕后,点击Excute即可

修改响应文件内容

  • 点击CharlesTools => Map Local

map-local

  • 勾选Enable Map Local,添加拦截的文件路径

map-local-settings

  • 填写文件路径Path,如/a/b.txt,然后选择本地替换文件路径

  • 其他HostPort等想限制也可以填写

mapping-edit

',21),c=[s];function l(n,d,r,p,g,h){return t(),i("div",null,c)}const _=e(a,[["render",l]]);export{u as __pageData,_ as default}; +import{_ as e,c as i,o as t,e as o}from"./app.2f6419f0.js";const u=JSON.parse('{"title":"修改请求或响应","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"修改接口请求/响应数据","slug":"修改接口请求-响应数据","link":"#修改接口请求-响应数据","children":[]},{"level":2,"title":"修改响应文件内容","slug":"修改响应文件内容","link":"#修改响应文件内容","children":[]}],"relativePath":"hand-notes/Charles/修改请求或响应.md"}'),a={name:"hand-notes/Charles/修改请求或响应.md"},s=o('

修改请求或响应

修改接口请求/响应数据

  • 打开Charles,请求接口后,选中要修改的接口,右键,点击Breakpoints

breakpoints

  • 打开CharlesProxy => Breakpoint Settings

breakpoint-settings

  • 打开后展示如下,这里可以看到添加的要拦截的接口,想拦截哪个接口就双击哪个

open-breaking-settings

  • 双击后打开窗口如下

edit-breakpoint

TIP

  • 请求的query中如果有随机字符串最好去掉,不然不同的参数就不会拦截,也可以把query整体删掉

  • 如果要修改请求的数据,勾选Request

  • 如果要修改接口响应数据,勾选Response

  • APP/网页重新请求接口,这里演示的是修改Response

  • 响应数据返回后会自动锁定到如下图,等待修改Response,点击Edit Response

install

  • 修改完毕后,点击Excute即可

修改响应文件内容

  • 点击CharlesTools => Map Local

map-local

  • 勾选Enable Map Local,添加拦截的文件路径

map-local-settings

  • 填写文件路径Path,如/a/b.txt,然后选择本地替换文件路径

  • 其他HostPort等想限制也可以填写

mapping-edit

',21),c=[s];function l(n,d,r,p,g,h){return t(),i("div",null,c)}const _=e(a,[["render",l]]);export{u as __pageData,_ as default}; diff --git "a/assets/hand-notes_Charles_\344\277\256\346\224\271\350\257\267\346\261\202\346\210\226\345\223\215\345\272\224.md.ab3f20c9.lean.js" "b/assets/hand-notes_Charles_\344\277\256\346\224\271\350\257\267\346\261\202\346\210\226\345\223\215\345\272\224.md.f727a970.lean.js" similarity index 90% rename from "assets/hand-notes_Charles_\344\277\256\346\224\271\350\257\267\346\261\202\346\210\226\345\223\215\345\272\224.md.ab3f20c9.lean.js" rename to "assets/hand-notes_Charles_\344\277\256\346\224\271\350\257\267\346\261\202\346\210\226\345\223\215\345\272\224.md.f727a970.lean.js" index fd03c96a..f8704b46 100644 --- "a/assets/hand-notes_Charles_\344\277\256\346\224\271\350\257\267\346\261\202\346\210\226\345\223\215\345\272\224.md.ab3f20c9.lean.js" +++ "b/assets/hand-notes_Charles_\344\277\256\346\224\271\350\257\267\346\261\202\346\210\226\345\223\215\345\272\224.md.f727a970.lean.js" @@ -1 +1 @@ -import{_ as e,c as i,o as t,e as o}from"./app.fa87702c.js";const u=JSON.parse('{"title":"修改请求或响应","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"修改接口请求/响应数据","slug":"修改接口请求-响应数据","link":"#修改接口请求-响应数据","children":[]},{"level":2,"title":"修改响应文件内容","slug":"修改响应文件内容","link":"#修改响应文件内容","children":[]}],"relativePath":"hand-notes/Charles/修改请求或响应.md"}'),a={name:"hand-notes/Charles/修改请求或响应.md"},s=o("",21),c=[s];function l(n,d,r,p,g,h){return t(),i("div",null,c)}const _=e(a,[["render",l]]);export{u as __pageData,_ as default}; +import{_ as e,c as i,o as t,e as o}from"./app.2f6419f0.js";const u=JSON.parse('{"title":"修改请求或响应","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"修改接口请求/响应数据","slug":"修改接口请求-响应数据","link":"#修改接口请求-响应数据","children":[]},{"level":2,"title":"修改响应文件内容","slug":"修改响应文件内容","link":"#修改响应文件内容","children":[]}],"relativePath":"hand-notes/Charles/修改请求或响应.md"}'),a={name:"hand-notes/Charles/修改请求或响应.md"},s=o("",21),c=[s];function l(n,d,r,p,g,h){return t(),i("div",null,c)}const _=e(a,[["render",l]]);export{u as __pageData,_ as default}; diff --git "a/assets/hand-notes_Charles_\346\212\223\345\214\205\351\205\215\347\275\256.md.642788c9.js" "b/assets/hand-notes_Charles_\346\212\223\345\214\205\351\205\215\347\275\256.md.cc694c60.js" similarity index 99% rename from "assets/hand-notes_Charles_\346\212\223\345\214\205\351\205\215\347\275\256.md.642788c9.js" rename to "assets/hand-notes_Charles_\346\212\223\345\214\205\351\205\215\347\275\256.md.cc694c60.js" index 3bed1bd2..f4a5ba98 100644 --- "a/assets/hand-notes_Charles_\346\212\223\345\214\205\351\205\215\347\275\256.md.642788c9.js" +++ "b/assets/hand-notes_Charles_\346\212\223\345\214\205\351\205\215\347\275\256.md.cc694c60.js" @@ -1 +1 @@ -import{_ as e,c as i,o as a,e as t}from"./app.fa87702c.js";const u=JSON.parse('{"title":"Charles配置","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"电脑端操作","slug":"电脑端操作","link":"#电脑端操作","children":[{"level":3,"title":"安装证书","slug":"安装证书","link":"#安装证书","children":[]},{"level":3,"title":"查找证书","slug":"查找证书","link":"#查找证书","children":[]},{"level":3,"title":"信任证书","slug":"信任证书","link":"#信任证书","children":[]},{"level":3,"title":"设置支持HTTPS","slug":"设置支持https","link":"#设置支持https","children":[]},{"level":3,"title":"查看IP","slug":"查看ip","link":"#查看ip","children":[]}]},{"level":2,"title":"手机端设置","slug":"手机端设置","link":"#手机端设置","children":[{"level":3,"title":"IOS","slug":"ios","link":"#ios","children":[]},{"level":3,"title":"安卓","slug":"安卓","link":"#安卓","children":[]}]}],"relativePath":"hand-notes/Charles/抓包配置.md"}'),l={name:"hand-notes/Charles/抓包配置.md"},o=t('

Charles配置

电脑端操作

安装证书

  • 打开Charles,选择Help => SSL Proxying => Install Charles Root Certificate,安装完成后,会启动钥匙串访问

install

查找证书

  • 钥匙串访问程序中,找到刚才的证书Charles Proxy CA

install

信任证书

  • 选中该证书,右键 => 显示简介 => 信任 => 在使用此证书时选项中选择始终信任

install

install

TIP

上述操作完成后,关闭窗口,此时会提示输入电脑密码,按照提示输入即可

设置支持HTTPS

HTTPS

HTTPS

HTTPS

查看IP

  • 使用Charles查看电脑IP

local-ip

local-ip

手机端设置

WARNING

保证手机和电脑连接同一个WIFI

IOS


进入WIFI设置

  • 进入设置 => 无线局域网,找到当前手机链接的wifi,点击后面的info icon进入wifi详情

wifi-info

设置代理IP

  • WIFI详情滑动到最下面,找到HTTP Proxy

http-proxy

  • 进入,选择手动(Manual),设置Serverport

    • Server就是刚才查看的本机IP

    • port一直都是8888

configure-proxy

下载证书

  • 打开Safari浏览器,访问:chls.pro/ssl,此时电脑上会有连接提示,点击allow允许,然后在手机端下载证书

  • 电脑端展示

connect-from

  • 手机端下载确认

download

信任证书

  • 证书下载完成后,点击设置 => 通用 => VPN和设备管理,找到刚才的证书,并下载

device-manage

  • 点击下载

install-profile

  • 完成上述步骤就可以进行抓包了

安卓

  • 设置手机wifi代理和IOS的操作基本一样,设置完wifi代理后进行下一步

  • 本人使用的小米6自带的浏览器是下载不下来证书的,最后下载了Edge浏览器,访问:chls.pro/ssl,此时电脑上会有连接提示,点击allow允许,然后在手机端下载证书并且安装

  • 然后就可以使用了

',46),c=[o];function s(d,n,r,h,g,p){return a(),i("div",null,c)}const f=e(l,[["render",s]]);export{u as __pageData,f as default}; +import{_ as e,c as i,o as a,e as t}from"./app.2f6419f0.js";const u=JSON.parse('{"title":"Charles配置","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"电脑端操作","slug":"电脑端操作","link":"#电脑端操作","children":[{"level":3,"title":"安装证书","slug":"安装证书","link":"#安装证书","children":[]},{"level":3,"title":"查找证书","slug":"查找证书","link":"#查找证书","children":[]},{"level":3,"title":"信任证书","slug":"信任证书","link":"#信任证书","children":[]},{"level":3,"title":"设置支持HTTPS","slug":"设置支持https","link":"#设置支持https","children":[]},{"level":3,"title":"查看IP","slug":"查看ip","link":"#查看ip","children":[]}]},{"level":2,"title":"手机端设置","slug":"手机端设置","link":"#手机端设置","children":[{"level":3,"title":"IOS","slug":"ios","link":"#ios","children":[]},{"level":3,"title":"安卓","slug":"安卓","link":"#安卓","children":[]}]}],"relativePath":"hand-notes/Charles/抓包配置.md"}'),l={name:"hand-notes/Charles/抓包配置.md"},o=t('

Charles配置

电脑端操作

安装证书

  • 打开Charles,选择Help => SSL Proxying => Install Charles Root Certificate,安装完成后,会启动钥匙串访问

install

查找证书

  • 钥匙串访问程序中,找到刚才的证书Charles Proxy CA

install

信任证书

  • 选中该证书,右键 => 显示简介 => 信任 => 在使用此证书时选项中选择始终信任

install

install

TIP

上述操作完成后,关闭窗口,此时会提示输入电脑密码,按照提示输入即可

设置支持HTTPS

HTTPS

HTTPS

HTTPS

查看IP

  • 使用Charles查看电脑IP

local-ip

local-ip

手机端设置

WARNING

保证手机和电脑连接同一个WIFI

IOS


进入WIFI设置

  • 进入设置 => 无线局域网,找到当前手机链接的wifi,点击后面的info icon进入wifi详情

wifi-info

设置代理IP

  • WIFI详情滑动到最下面,找到HTTP Proxy

http-proxy

  • 进入,选择手动(Manual),设置Serverport

    • Server就是刚才查看的本机IP

    • port一直都是8888

configure-proxy

下载证书

  • 打开Safari浏览器,访问:chls.pro/ssl,此时电脑上会有连接提示,点击allow允许,然后在手机端下载证书

  • 电脑端展示

connect-from

  • 手机端下载确认

download

信任证书

  • 证书下载完成后,点击设置 => 通用 => VPN和设备管理,找到刚才的证书,并下载

device-manage

  • 点击下载

install-profile

  • 完成上述步骤就可以进行抓包了

安卓

  • 设置手机wifi代理和IOS的操作基本一样,设置完wifi代理后进行下一步

  • 本人使用的小米6自带的浏览器是下载不下来证书的,最后下载了Edge浏览器,访问:chls.pro/ssl,此时电脑上会有连接提示,点击allow允许,然后在手机端下载证书并且安装

  • 然后就可以使用了

',46),c=[o];function s(d,n,r,h,g,p){return a(),i("div",null,c)}const f=e(l,[["render",s]]);export{u as __pageData,f as default}; diff --git "a/assets/hand-notes_Charles_\346\212\223\345\214\205\351\205\215\347\275\256.md.642788c9.lean.js" "b/assets/hand-notes_Charles_\346\212\223\345\214\205\351\205\215\347\275\256.md.cc694c60.lean.js" similarity index 94% rename from "assets/hand-notes_Charles_\346\212\223\345\214\205\351\205\215\347\275\256.md.642788c9.lean.js" rename to "assets/hand-notes_Charles_\346\212\223\345\214\205\351\205\215\347\275\256.md.cc694c60.lean.js" index af4d870b..5f8d2eec 100644 --- "a/assets/hand-notes_Charles_\346\212\223\345\214\205\351\205\215\347\275\256.md.642788c9.lean.js" +++ "b/assets/hand-notes_Charles_\346\212\223\345\214\205\351\205\215\347\275\256.md.cc694c60.lean.js" @@ -1 +1 @@ -import{_ as e,c as i,o as a,e as t}from"./app.fa87702c.js";const u=JSON.parse('{"title":"Charles配置","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"电脑端操作","slug":"电脑端操作","link":"#电脑端操作","children":[{"level":3,"title":"安装证书","slug":"安装证书","link":"#安装证书","children":[]},{"level":3,"title":"查找证书","slug":"查找证书","link":"#查找证书","children":[]},{"level":3,"title":"信任证书","slug":"信任证书","link":"#信任证书","children":[]},{"level":3,"title":"设置支持HTTPS","slug":"设置支持https","link":"#设置支持https","children":[]},{"level":3,"title":"查看IP","slug":"查看ip","link":"#查看ip","children":[]}]},{"level":2,"title":"手机端设置","slug":"手机端设置","link":"#手机端设置","children":[{"level":3,"title":"IOS","slug":"ios","link":"#ios","children":[]},{"level":3,"title":"安卓","slug":"安卓","link":"#安卓","children":[]}]}],"relativePath":"hand-notes/Charles/抓包配置.md"}'),l={name:"hand-notes/Charles/抓包配置.md"},o=t("",46),c=[o];function s(d,n,r,h,g,p){return a(),i("div",null,c)}const f=e(l,[["render",s]]);export{u as __pageData,f as default}; +import{_ as e,c as i,o as a,e as t}from"./app.2f6419f0.js";const u=JSON.parse('{"title":"Charles配置","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"电脑端操作","slug":"电脑端操作","link":"#电脑端操作","children":[{"level":3,"title":"安装证书","slug":"安装证书","link":"#安装证书","children":[]},{"level":3,"title":"查找证书","slug":"查找证书","link":"#查找证书","children":[]},{"level":3,"title":"信任证书","slug":"信任证书","link":"#信任证书","children":[]},{"level":3,"title":"设置支持HTTPS","slug":"设置支持https","link":"#设置支持https","children":[]},{"level":3,"title":"查看IP","slug":"查看ip","link":"#查看ip","children":[]}]},{"level":2,"title":"手机端设置","slug":"手机端设置","link":"#手机端设置","children":[{"level":3,"title":"IOS","slug":"ios","link":"#ios","children":[]},{"level":3,"title":"安卓","slug":"安卓","link":"#安卓","children":[]}]}],"relativePath":"hand-notes/Charles/抓包配置.md"}'),l={name:"hand-notes/Charles/抓包配置.md"},o=t("",46),c=[o];function s(d,n,r,h,g,p){return a(),i("div",null,c)}const f=e(l,[["render",s]]);export{u as __pageData,f as default}; diff --git "a/assets/hand-notes_Chart_AntVF2_\344\275\277\347\224\250\345\260\217\350\256\260.md.129d6649.js" "b/assets/hand-notes_Chart_AntVF2_\344\275\277\347\224\250\345\260\217\350\256\260.md.dbcb2dcf.js" similarity index 99% rename from "assets/hand-notes_Chart_AntVF2_\344\275\277\347\224\250\345\260\217\350\256\260.md.129d6649.js" rename to "assets/hand-notes_Chart_AntVF2_\344\275\277\347\224\250\345\260\217\350\256\260.md.dbcb2dcf.js" index ae254090..e20ffbca 100644 --- "a/assets/hand-notes_Chart_AntVF2_\344\275\277\347\224\250\345\260\217\350\256\260.md.129d6649.js" +++ "b/assets/hand-notes_Chart_AntVF2_\344\275\277\347\224\250\345\260\217\350\256\260.md.dbcb2dcf.js" @@ -1,4 +1,4 @@ -import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const p="/static-blog/image/AntVF2/column_1.png",d=JSON.parse('{"title":"AntV F2 使用小记","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"设置Tooltip","slug":"设置tooltip","link":"#设置tooltip","children":[]},{"level":2,"title":"设置坐标轴文案对齐方式","slug":"设置坐标轴文案对齐方式","link":"#设置坐标轴文案对齐方式","children":[]},{"level":2,"title":"柱状图","slug":"柱状图","link":"#柱状图","children":[{"level":3,"title":"设置柱状图堆叠方式","slug":"设置柱状图堆叠方式","link":"#设置柱状图堆叠方式","children":[]}]}],"relativePath":"hand-notes/Chart/AntVF2/使用小记.md"}'),o={name:"hand-notes/Chart/AntVF2/使用小记.md"},t=l(`

AntV F2 使用小记

设置Tooltip

typescript
// 关闭或启用 Tooltip enable 是否启用
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const p="/static-blog/image/AntVF2/column_1.png",d=JSON.parse('{"title":"AntV F2 使用小记","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"设置Tooltip","slug":"设置tooltip","link":"#设置tooltip","children":[]},{"level":2,"title":"设置坐标轴文案对齐方式","slug":"设置坐标轴文案对齐方式","link":"#设置坐标轴文案对齐方式","children":[]},{"level":2,"title":"柱状图","slug":"柱状图","link":"#柱状图","children":[{"level":3,"title":"设置柱状图堆叠方式","slug":"设置柱状图堆叠方式","link":"#设置柱状图堆叠方式","children":[]}]}],"relativePath":"hand-notes/Chart/AntVF2/使用小记.md"}'),o={name:"hand-notes/Chart/AntVF2/使用小记.md"},t=l(`

AntV F2 使用小记

设置Tooltip

typescript
// 关闭或启用 Tooltip enable 是否启用
 tooltip(enable: boolean): this;
 // 配置 Tooltip
 tooltip(params: TooltipParams<TRecord>): this;
diff --git "a/assets/hand-notes_Chart_AntVF2_\344\275\277\347\224\250\345\260\217\350\256\260.md.129d6649.lean.js" "b/assets/hand-notes_Chart_AntVF2_\344\275\277\347\224\250\345\260\217\350\256\260.md.dbcb2dcf.lean.js"
similarity index 93%
rename from "assets/hand-notes_Chart_AntVF2_\344\275\277\347\224\250\345\260\217\350\256\260.md.129d6649.lean.js"
rename to "assets/hand-notes_Chart_AntVF2_\344\275\277\347\224\250\345\260\217\350\256\260.md.dbcb2dcf.lean.js"
index b73d9c07..d1877040 100644
--- "a/assets/hand-notes_Chart_AntVF2_\344\275\277\347\224\250\345\260\217\350\256\260.md.129d6649.lean.js"
+++ "b/assets/hand-notes_Chart_AntVF2_\344\275\277\347\224\250\345\260\217\350\256\260.md.dbcb2dcf.lean.js"
@@ -1 +1 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const p="/static-blog/image/AntVF2/column_1.png",d=JSON.parse('{"title":"AntV F2 使用小记","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"设置Tooltip","slug":"设置tooltip","link":"#设置tooltip","children":[]},{"level":2,"title":"设置坐标轴文案对齐方式","slug":"设置坐标轴文案对齐方式","link":"#设置坐标轴文案对齐方式","children":[]},{"level":2,"title":"柱状图","slug":"柱状图","link":"#柱状图","children":[{"level":3,"title":"设置柱状图堆叠方式","slug":"设置柱状图堆叠方式","link":"#设置柱状图堆叠方式","children":[]}]}],"relativePath":"hand-notes/Chart/AntVF2/使用小记.md"}'),o={name:"hand-notes/Chart/AntVF2/使用小记.md"},t=l("",17),e=[t];function c(r,y,D,F,i,C){return n(),a("div",null,e)}const h=s(o,[["render",c]]);export{d as __pageData,h as default};
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const p="/static-blog/image/AntVF2/column_1.png",d=JSON.parse('{"title":"AntV F2 使用小记","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"设置Tooltip","slug":"设置tooltip","link":"#设置tooltip","children":[]},{"level":2,"title":"设置坐标轴文案对齐方式","slug":"设置坐标轴文案对齐方式","link":"#设置坐标轴文案对齐方式","children":[]},{"level":2,"title":"柱状图","slug":"柱状图","link":"#柱状图","children":[{"level":3,"title":"设置柱状图堆叠方式","slug":"设置柱状图堆叠方式","link":"#设置柱状图堆叠方式","children":[]}]}],"relativePath":"hand-notes/Chart/AntVF2/使用小记.md"}'),o={name:"hand-notes/Chart/AntVF2/使用小记.md"},t=l("",17),e=[t];function c(r,y,D,F,i,C){return n(),a("div",null,e)}const h=s(o,[["render",c]]);export{d as __pageData,h as default};
diff --git "a/assets/hand-notes_Git_Mac\347\216\257\345\242\203\344\270\213\345\222\214Windows\347\216\257\345\242\203\344\270\213Git\346\215\242\350\241\214\347\273\223\345\260\276\345\206\262\347\252\201.md.7b27b653.js" "b/assets/hand-notes_Git_Mac\347\216\257\345\242\203\344\270\213\345\222\214Windows\347\216\257\345\242\203\344\270\213Git\346\215\242\350\241\214\347\273\223\345\260\276\345\206\262\347\252\201.md.abac10ea.js"
similarity index 99%
rename from "assets/hand-notes_Git_Mac\347\216\257\345\242\203\344\270\213\345\222\214Windows\347\216\257\345\242\203\344\270\213Git\346\215\242\350\241\214\347\273\223\345\260\276\345\206\262\347\252\201.md.7b27b653.js"
rename to "assets/hand-notes_Git_Mac\347\216\257\345\242\203\344\270\213\345\222\214Windows\347\216\257\345\242\203\344\270\213Git\346\215\242\350\241\214\347\273\223\345\260\276\345\206\262\347\252\201.md.abac10ea.js"
index a1d7aad8..8e7b0e22 100644
--- "a/assets/hand-notes_Git_Mac\347\216\257\345\242\203\344\270\213\345\222\214Windows\347\216\257\345\242\203\344\270\213Git\346\215\242\350\241\214\347\273\223\345\260\276\345\206\262\347\252\201.md.7b27b653.js"
+++ "b/assets/hand-notes_Git_Mac\347\216\257\345\242\203\344\270\213\345\222\214Windows\347\216\257\345\242\203\344\270\213Git\346\215\242\350\241\214\347\273\223\345\260\276\345\206\262\347\252\201.md.abac10ea.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as e,o,e as a}from"./app.fa87702c.js";const h=JSON.parse('{"title":"Mac环境下和Windows环境下Git换行结尾冲突","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"原因","slug":"原因","link":"#原因","children":[]},{"level":2,"title":"Git配置项","slug":"git配置项","link":"#git配置项","children":[{"level":3,"title":"eol","slug":"eol","link":"#eol","children":[]},{"level":3,"title":"autocrlf","slug":"autocrlf","link":"#autocrlf","children":[]},{"level":3,"title":"safecrlf","slug":"safecrlf","link":"#safecrlf","children":[]}]},{"level":2,"title":"解决方法","slug":"解决方法","link":"#解决方法","children":[]},{"level":2,"title":"参考","slug":"参考","link":"#参考","children":[]}],"relativePath":"hand-notes/Git/Mac环境下和Windows环境下Git换行结尾冲突.md"}'),l={name:"hand-notes/Git/Mac环境下和Windows环境下Git换行结尾冲突.md"},n=a(`

Mac环境下和Windows环境下Git换行结尾冲突

今天遇到一个问题(我的电脑是Mac)

基于某个项目的main分支开发功能,开发完毕后,合并到基于main分支创建的测试分支上,结果发现了上百处冲突,顿时惊呆了

比如下面这样的冲突:

WechatIMG456

看起来内容都没改变,但是就是有冲突

原因

造成上面的冲突的原因是:文本文件所使用的换行符,在不同的系统平台上是不一样的

UNIX/Linux使用的是0x0A(LF),早期的Mac OS使用的是0x0D(CR),后来的OS X在更换内核后与UNIX保持一致了

DOS/Windows一直使用0x0D0A(CRLF)作为换行符

在不同平台上,换行符发生改变时,Git会认为整个文件被修改,这就造成我们没法diff,不能正确反映本次的修改

Git配置项

eol

  • 设置工作目录中文件的换行符,有三个值LF, CRLFnative(默认,跟随操作系统)

Git还提供了一些配置选项,用于在提交检出自动转换换行符

autocrlf

该配置可设置为下面几个值:

  • true: 表示提交时转换为LF检出时转换为CRLF,

  • false: 表示提交检出均不转换

  • input: 表示提交时转换为LF检出时不转换

shell
# 提交时转换为LF,检出时转换为CRLF
+import{_ as s,c as e,o,e as a}from"./app.2f6419f0.js";const h=JSON.parse('{"title":"Mac环境下和Windows环境下Git换行结尾冲突","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"原因","slug":"原因","link":"#原因","children":[]},{"level":2,"title":"Git配置项","slug":"git配置项","link":"#git配置项","children":[{"level":3,"title":"eol","slug":"eol","link":"#eol","children":[]},{"level":3,"title":"autocrlf","slug":"autocrlf","link":"#autocrlf","children":[]},{"level":3,"title":"safecrlf","slug":"safecrlf","link":"#safecrlf","children":[]}]},{"level":2,"title":"解决方法","slug":"解决方法","link":"#解决方法","children":[]},{"level":2,"title":"参考","slug":"参考","link":"#参考","children":[]}],"relativePath":"hand-notes/Git/Mac环境下和Windows环境下Git换行结尾冲突.md"}'),l={name:"hand-notes/Git/Mac环境下和Windows环境下Git换行结尾冲突.md"},n=a(`

Mac环境下和Windows环境下Git换行结尾冲突

今天遇到一个问题(我的电脑是Mac)

基于某个项目的main分支开发功能,开发完毕后,合并到基于main分支创建的测试分支上,结果发现了上百处冲突,顿时惊呆了

比如下面这样的冲突:

WechatIMG456

看起来内容都没改变,但是就是有冲突

原因

造成上面的冲突的原因是:文本文件所使用的换行符,在不同的系统平台上是不一样的

UNIX/Linux使用的是0x0A(LF),早期的Mac OS使用的是0x0D(CR),后来的OS X在更换内核后与UNIX保持一致了

DOS/Windows一直使用0x0D0A(CRLF)作为换行符

在不同平台上,换行符发生改变时,Git会认为整个文件被修改,这就造成我们没法diff,不能正确反映本次的修改

Git配置项

eol

  • 设置工作目录中文件的换行符,有三个值LF, CRLFnative(默认,跟随操作系统)

Git还提供了一些配置选项,用于在提交检出自动转换换行符

autocrlf

该配置可设置为下面几个值:

  • true: 表示提交时转换为LF检出时转换为CRLF,

  • false: 表示提交检出均不转换

  • input: 表示提交时转换为LF检出时不转换

shell
# 提交时转换为LF,检出时转换为CRLF
 git config --global core.autocrlf true
 
 # 设置提交检出均不自动转换换行符
diff --git "a/assets/hand-notes_Git_Mac\347\216\257\345\242\203\344\270\213\345\222\214Windows\347\216\257\345\242\203\344\270\213Git\346\215\242\350\241\214\347\273\223\345\260\276\345\206\262\347\252\201.md.7b27b653.lean.js" "b/assets/hand-notes_Git_Mac\347\216\257\345\242\203\344\270\213\345\222\214Windows\347\216\257\345\242\203\344\270\213Git\346\215\242\350\241\214\347\273\223\345\260\276\345\206\262\347\252\201.md.abac10ea.lean.js"
similarity index 94%
rename from "assets/hand-notes_Git_Mac\347\216\257\345\242\203\344\270\213\345\222\214Windows\347\216\257\345\242\203\344\270\213Git\346\215\242\350\241\214\347\273\223\345\260\276\345\206\262\347\252\201.md.7b27b653.lean.js"
rename to "assets/hand-notes_Git_Mac\347\216\257\345\242\203\344\270\213\345\222\214Windows\347\216\257\345\242\203\344\270\213Git\346\215\242\350\241\214\347\273\223\345\260\276\345\206\262\347\252\201.md.abac10ea.lean.js"
index 4f10b686..a7b62795 100644
--- "a/assets/hand-notes_Git_Mac\347\216\257\345\242\203\344\270\213\345\222\214Windows\347\216\257\345\242\203\344\270\213Git\346\215\242\350\241\214\347\273\223\345\260\276\345\206\262\347\252\201.md.7b27b653.lean.js"
+++ "b/assets/hand-notes_Git_Mac\347\216\257\345\242\203\344\270\213\345\222\214Windows\347\216\257\345\242\203\344\270\213Git\346\215\242\350\241\214\347\273\223\345\260\276\345\206\262\347\252\201.md.abac10ea.lean.js"
@@ -1 +1 @@
-import{_ as s,c as e,o,e as a}from"./app.fa87702c.js";const h=JSON.parse('{"title":"Mac环境下和Windows环境下Git换行结尾冲突","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"原因","slug":"原因","link":"#原因","children":[]},{"level":2,"title":"Git配置项","slug":"git配置项","link":"#git配置项","children":[{"level":3,"title":"eol","slug":"eol","link":"#eol","children":[]},{"level":3,"title":"autocrlf","slug":"autocrlf","link":"#autocrlf","children":[]},{"level":3,"title":"safecrlf","slug":"safecrlf","link":"#safecrlf","children":[]}]},{"level":2,"title":"解决方法","slug":"解决方法","link":"#解决方法","children":[]},{"level":2,"title":"参考","slug":"参考","link":"#参考","children":[]}],"relativePath":"hand-notes/Git/Mac环境下和Windows环境下Git换行结尾冲突.md"}'),l={name:"hand-notes/Git/Mac环境下和Windows环境下Git换行结尾冲突.md"},n=a("",37),c=[n];function p(t,r,i,d,C,y){return o(),e("div",null,c)}const D=s(l,[["render",p]]);export{h as __pageData,D as default};
+import{_ as s,c as e,o,e as a}from"./app.2f6419f0.js";const h=JSON.parse('{"title":"Mac环境下和Windows环境下Git换行结尾冲突","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"原因","slug":"原因","link":"#原因","children":[]},{"level":2,"title":"Git配置项","slug":"git配置项","link":"#git配置项","children":[{"level":3,"title":"eol","slug":"eol","link":"#eol","children":[]},{"level":3,"title":"autocrlf","slug":"autocrlf","link":"#autocrlf","children":[]},{"level":3,"title":"safecrlf","slug":"safecrlf","link":"#safecrlf","children":[]}]},{"level":2,"title":"解决方法","slug":"解决方法","link":"#解决方法","children":[]},{"level":2,"title":"参考","slug":"参考","link":"#参考","children":[]}],"relativePath":"hand-notes/Git/Mac环境下和Windows环境下Git换行结尾冲突.md"}'),l={name:"hand-notes/Git/Mac环境下和Windows环境下Git换行结尾冲突.md"},n=a("",37),c=[n];function p(t,r,i,d,C,y){return o(),e("div",null,c)}const D=s(l,[["render",p]]);export{h as __pageData,D as default};
diff --git "a/assets/hand-notes_JavaScript_\345\210\244\346\226\255\345\255\227\346\257\215\345\244\247\345\260\217\345\206\231.md.59ebc52b.js" "b/assets/hand-notes_JavaScript_\345\210\244\346\226\255\345\255\227\346\257\215\345\244\247\345\260\217\345\206\231.md.f22cd4c1.js"
similarity index 98%
rename from "assets/hand-notes_JavaScript_\345\210\244\346\226\255\345\255\227\346\257\215\345\244\247\345\260\217\345\206\231.md.59ebc52b.js"
rename to "assets/hand-notes_JavaScript_\345\210\244\346\226\255\345\255\227\346\257\215\345\244\247\345\260\217\345\206\231.md.f22cd4c1.js"
index 74989d79..0b371067 100644
--- "a/assets/hand-notes_JavaScript_\345\210\244\346\226\255\345\255\227\346\257\215\345\244\247\345\260\217\345\206\231.md.59ebc52b.js"
+++ "b/assets/hand-notes_JavaScript_\345\210\244\346\226\255\345\255\227\346\257\215\345\244\247\345\260\217\345\206\231.md.f22cd4c1.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const C=JSON.parse('{"title":"判断字母大小写","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"判断字母是否是大写字母","slug":"判断字母是否是大写字母","link":"#判断字母是否是大写字母","children":[]},{"level":2,"title":"判断字母是否是小写字母","slug":"判断字母是否是小写字母","link":"#判断字母是否是小写字母","children":[]}],"relativePath":"hand-notes/JavaScript/判断字母大小写.md"}'),o={name:"hand-notes/JavaScript/判断字母大小写.md"},p=l(`

判断字母大小写

TIP

  • 每个字符(包括字母)在计算机中都有一个对应的ASCII码值。

  • 大写字母的ASCII码值范围是65到90(包括65和90)

  • 小写字母的ASCII码值范围是97到122(包括97和122)

判断字母是否是大写字母

javascript
function isLetterUppercase(letter) {
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const C=JSON.parse('{"title":"判断字母大小写","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"判断字母是否是大写字母","slug":"判断字母是否是大写字母","link":"#判断字母是否是大写字母","children":[]},{"level":2,"title":"判断字母是否是小写字母","slug":"判断字母是否是小写字母","link":"#判断字母是否是小写字母","children":[]}],"relativePath":"hand-notes/JavaScript/判断字母大小写.md"}'),o={name:"hand-notes/JavaScript/判断字母大小写.md"},p=l(`

判断字母大小写

TIP

  • 每个字符(包括字母)在计算机中都有一个对应的ASCII码值。

  • 大写字母的ASCII码值范围是65到90(包括65和90)

  • 小写字母的ASCII码值范围是97到122(包括97和122)

判断字母是否是大写字母

javascript
function isLetterUppercase(letter) {
     const ascii = letter.charCodeAt(0);
     return ascii >= 65 && ascii <= 90;
 }
diff --git "a/assets/hand-notes_JavaScript_\345\210\244\346\226\255\345\255\227\346\257\215\345\244\247\345\260\217\345\206\231.md.59ebc52b.lean.js" "b/assets/hand-notes_JavaScript_\345\210\244\346\226\255\345\255\227\346\257\215\345\244\247\345\260\217\345\206\231.md.f22cd4c1.lean.js"
similarity index 91%
rename from "assets/hand-notes_JavaScript_\345\210\244\346\226\255\345\255\227\346\257\215\345\244\247\345\260\217\345\206\231.md.59ebc52b.lean.js"
rename to "assets/hand-notes_JavaScript_\345\210\244\346\226\255\345\255\227\346\257\215\345\244\247\345\260\217\345\206\231.md.f22cd4c1.lean.js"
index 5933c60f..4a0619e9 100644
--- "a/assets/hand-notes_JavaScript_\345\210\244\346\226\255\345\255\227\346\257\215\345\244\247\345\260\217\345\206\231.md.59ebc52b.lean.js"
+++ "b/assets/hand-notes_JavaScript_\345\210\244\346\226\255\345\255\227\346\257\215\345\244\247\345\260\217\345\206\231.md.f22cd4c1.lean.js"
@@ -1 +1 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const C=JSON.parse('{"title":"判断字母大小写","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"判断字母是否是大写字母","slug":"判断字母是否是大写字母","link":"#判断字母是否是大写字母","children":[]},{"level":2,"title":"判断字母是否是小写字母","slug":"判断字母是否是小写字母","link":"#判断字母是否是小写字母","children":[]}],"relativePath":"hand-notes/JavaScript/判断字母大小写.md"}'),o={name:"hand-notes/JavaScript/判断字母大小写.md"},p=l("",7),e=[p];function t(c,r,i,F,y,D){return n(),a("div",null,e)}const A=s(o,[["render",t]]);export{C as __pageData,A as default};
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const C=JSON.parse('{"title":"判断字母大小写","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"判断字母是否是大写字母","slug":"判断字母是否是大写字母","link":"#判断字母是否是大写字母","children":[]},{"level":2,"title":"判断字母是否是小写字母","slug":"判断字母是否是小写字母","link":"#判断字母是否是小写字母","children":[]}],"relativePath":"hand-notes/JavaScript/判断字母大小写.md"}'),o={name:"hand-notes/JavaScript/判断字母大小写.md"},p=l("",7),e=[p];function t(c,r,i,F,y,D){return n(),a("div",null,e)}const A=s(o,[["render",t]]);export{C as __pageData,A as default};
diff --git "a/assets/hand-notes_JavaScript_\346\216\247\345\210\266\345\271\266\345\217\221\346\211\247\350\241\214\345\207\275\346\225\260.md.504bc730.js" "b/assets/hand-notes_JavaScript_\346\216\247\345\210\266\345\271\266\345\217\221\346\211\247\350\241\214\345\207\275\346\225\260.md.45e0df0b.js"
similarity index 99%
rename from "assets/hand-notes_JavaScript_\346\216\247\345\210\266\345\271\266\345\217\221\346\211\247\350\241\214\345\207\275\346\225\260.md.504bc730.js"
rename to "assets/hand-notes_JavaScript_\346\216\247\345\210\266\345\271\266\345\217\221\346\211\247\350\241\214\345\207\275\346\225\260.md.45e0df0b.js"
index 531d0f7d..4ef2393b 100644
--- "a/assets/hand-notes_JavaScript_\346\216\247\345\210\266\345\271\266\345\217\221\346\211\247\350\241\214\345\207\275\346\225\260.md.504bc730.js"
+++ "b/assets/hand-notes_JavaScript_\346\216\247\345\210\266\345\271\266\345\217\221\346\211\247\350\241\214\345\207\275\346\225\260.md.45e0df0b.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"控制并发执行函数","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"hand-notes/JavaScript/控制并发执行函数.md"}'),p={name:"hand-notes/JavaScript/控制并发执行函数.md"},o=l(`

控制并发执行函数

typescript
type TTask = (...args: any[]) => Promise<any>;
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"控制并发执行函数","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"hand-notes/JavaScript/控制并发执行函数.md"}'),p={name:"hand-notes/JavaScript/控制并发执行函数.md"},o=l(`

控制并发执行函数

typescript
type TTask = (...args: any[]) => Promise<any>;
 
 type TTaskResult = {
 	status: 'resolved' | 'rejected';
diff --git "a/assets/hand-notes_JavaScript_\346\216\247\345\210\266\345\271\266\345\217\221\346\211\247\350\241\214\345\207\275\346\225\260.md.504bc730.lean.js" "b/assets/hand-notes_JavaScript_\346\216\247\345\210\266\345\271\266\345\217\221\346\211\247\350\241\214\345\207\275\346\225\260.md.45e0df0b.lean.js"
similarity index 85%
rename from "assets/hand-notes_JavaScript_\346\216\247\345\210\266\345\271\266\345\217\221\346\211\247\350\241\214\345\207\275\346\225\260.md.504bc730.lean.js"
rename to "assets/hand-notes_JavaScript_\346\216\247\345\210\266\345\271\266\345\217\221\346\211\247\350\241\214\345\207\275\346\225\260.md.45e0df0b.lean.js"
index a6192783..4297fb13 100644
--- "a/assets/hand-notes_JavaScript_\346\216\247\345\210\266\345\271\266\345\217\221\346\211\247\350\241\214\345\207\275\346\225\260.md.504bc730.lean.js"
+++ "b/assets/hand-notes_JavaScript_\346\216\247\345\210\266\345\271\266\345\217\221\346\211\247\350\241\214\345\207\275\346\225\260.md.45e0df0b.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"控制并发执行函数","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"hand-notes/JavaScript/控制并发执行函数.md"}'),p={name:"hand-notes/JavaScript/控制并发执行函数.md"},o=l("",2),e=[o];function t(c,r,F,y,D,C){return a(),n("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"控制并发执行函数","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"hand-notes/JavaScript/控制并发执行函数.md"}'),p={name:"hand-notes/JavaScript/控制并发执行函数.md"},o=l("",2),e=[o];function t(c,r,F,y,D,C){return a(),n("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
diff --git "a/assets/hand-notes_JavaScript_\346\225\260\345\255\227\345\233\233\350\210\215\344\272\224\345\205\245.md.cfb90e5b.js" "b/assets/hand-notes_JavaScript_\346\225\260\345\255\227\345\233\233\350\210\215\344\272\224\345\205\245.md.6d43bfc2.js"
similarity index 97%
rename from "assets/hand-notes_JavaScript_\346\225\260\345\255\227\345\233\233\350\210\215\344\272\224\345\205\245.md.cfb90e5b.js"
rename to "assets/hand-notes_JavaScript_\346\225\260\345\255\227\345\233\233\350\210\215\344\272\224\345\205\245.md.6d43bfc2.js"
index ee73d6e7..ee0bd51d 100644
--- "a/assets/hand-notes_JavaScript_\346\225\260\345\255\227\345\233\233\350\210\215\344\272\224\345\205\245.md.cfb90e5b.js"
+++ "b/assets/hand-notes_JavaScript_\346\225\260\345\255\227\345\233\233\350\210\215\344\272\224\345\205\245.md.6d43bfc2.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as n,e as o}from"./app.fa87702c.js";const d=JSON.parse('{"title":"数字四舍五入","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"hand-notes/JavaScript/数字四舍五入.md"}'),l={name:"hand-notes/JavaScript/数字四舍五入.md"},p=o(`

数字四舍五入

javascript
/**
+import{_ as s,c as a,o as n,e as o}from"./app.2f6419f0.js";const d=JSON.parse('{"title":"数字四舍五入","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"hand-notes/JavaScript/数字四舍五入.md"}'),l={name:"hand-notes/JavaScript/数字四舍五入.md"},p=o(`

数字四舍五入

javascript
/**
  * 对数字进行四舍五入,可精确小数点位置
  */
 function round(number, precision) {
diff --git "a/assets/hand-notes_JavaScript_\346\225\260\345\255\227\345\233\233\350\210\215\344\272\224\345\205\245.md.cfb90e5b.lean.js" "b/assets/hand-notes_JavaScript_\346\225\260\345\255\227\345\233\233\350\210\215\344\272\224\345\205\245.md.6d43bfc2.lean.js"
similarity index 84%
rename from "assets/hand-notes_JavaScript_\346\225\260\345\255\227\345\233\233\350\210\215\344\272\224\345\205\245.md.cfb90e5b.lean.js"
rename to "assets/hand-notes_JavaScript_\346\225\260\345\255\227\345\233\233\350\210\215\344\272\224\345\205\245.md.6d43bfc2.lean.js"
index d2d5bdb2..6d661a27 100644
--- "a/assets/hand-notes_JavaScript_\346\225\260\345\255\227\345\233\233\350\210\215\344\272\224\345\205\245.md.cfb90e5b.lean.js"
+++ "b/assets/hand-notes_JavaScript_\346\225\260\345\255\227\345\233\233\350\210\215\344\272\224\345\205\245.md.6d43bfc2.lean.js"
@@ -1 +1 @@
-import{_ as s,c as a,o as n,e as o}from"./app.fa87702c.js";const d=JSON.parse('{"title":"数字四舍五入","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"hand-notes/JavaScript/数字四舍五入.md"}'),l={name:"hand-notes/JavaScript/数字四舍五入.md"},p=o("",3),e=[p];function t(c,r,i,y,F,D){return n(),a("div",null,e)}const A=s(l,[["render",t]]);export{d as __pageData,A as default};
+import{_ as s,c as a,o as n,e as o}from"./app.2f6419f0.js";const d=JSON.parse('{"title":"数字四舍五入","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"hand-notes/JavaScript/数字四舍五入.md"}'),l={name:"hand-notes/JavaScript/数字四舍五入.md"},p=o("",3),e=[p];function t(c,r,i,y,F,D){return n(),a("div",null,e)}const A=s(l,[["render",t]]);export{d as __pageData,A as default};
diff --git "a/assets/hand-notes_JavaScript_\346\240\271\346\215\256\347\224\237\346\227\245\350\256\241\347\256\227\345\271\264\351\276\204.md.1232e091.js" "b/assets/hand-notes_JavaScript_\346\240\271\346\215\256\347\224\237\346\227\245\350\256\241\347\256\227\345\271\264\351\276\204.md.23f191aa.js"
similarity index 99%
rename from "assets/hand-notes_JavaScript_\346\240\271\346\215\256\347\224\237\346\227\245\350\256\241\347\256\227\345\271\264\351\276\204.md.1232e091.js"
rename to "assets/hand-notes_JavaScript_\346\240\271\346\215\256\347\224\237\346\227\245\350\256\241\347\256\227\345\271\264\351\276\204.md.23f191aa.js"
index 4bdef3c1..e9db6c1f 100644
--- "a/assets/hand-notes_JavaScript_\346\240\271\346\215\256\347\224\237\346\227\245\350\256\241\347\256\227\345\271\264\351\276\204.md.1232e091.js"
+++ "b/assets/hand-notes_JavaScript_\346\240\271\346\215\256\347\224\237\346\227\245\350\256\241\347\256\227\345\271\264\351\276\204.md.23f191aa.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const A=JSON.parse('{"title":"根据生日计算年龄","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"hand-notes/JavaScript/根据生日计算年龄.md"}'),o={name:"hand-notes/JavaScript/根据生日计算年龄.md"},p=l(`

根据生日计算年龄

javascript
const birthdateReg = /^(\\d{4})[-/]?(\\d{1,2})[-/]?(\\d{1,2})$/;
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const A=JSON.parse('{"title":"根据生日计算年龄","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"hand-notes/JavaScript/根据生日计算年龄.md"}'),o={name:"hand-notes/JavaScript/根据生日计算年龄.md"},p=l(`

根据生日计算年龄

javascript
const birthdateReg = /^(\\d{4})[-/]?(\\d{1,2})[-/]?(\\d{1,2})$/;
 // birthday => 格式 年-月-日 例如: 2022-08-18
 const calcAge = (birthday) => {
     const birthDateArr = birthdateReg.exec(\`\${birthday}\`);
diff --git "a/assets/hand-notes_JavaScript_\346\240\271\346\215\256\347\224\237\346\227\245\350\256\241\347\256\227\345\271\264\351\276\204.md.1232e091.lean.js" "b/assets/hand-notes_JavaScript_\346\240\271\346\215\256\347\224\237\346\227\245\350\256\241\347\256\227\345\271\264\351\276\204.md.23f191aa.lean.js"
similarity index 85%
rename from "assets/hand-notes_JavaScript_\346\240\271\346\215\256\347\224\237\346\227\245\350\256\241\347\256\227\345\271\264\351\276\204.md.1232e091.lean.js"
rename to "assets/hand-notes_JavaScript_\346\240\271\346\215\256\347\224\237\346\227\245\350\256\241\347\256\227\345\271\264\351\276\204.md.23f191aa.lean.js"
index 8f4b7eea..29068096 100644
--- "a/assets/hand-notes_JavaScript_\346\240\271\346\215\256\347\224\237\346\227\245\350\256\241\347\256\227\345\271\264\351\276\204.md.1232e091.lean.js"
+++ "b/assets/hand-notes_JavaScript_\346\240\271\346\215\256\347\224\237\346\227\245\350\256\241\347\256\227\345\271\264\351\276\204.md.23f191aa.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const A=JSON.parse('{"title":"根据生日计算年龄","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"hand-notes/JavaScript/根据生日计算年龄.md"}'),o={name:"hand-notes/JavaScript/根据生日计算年龄.md"},p=l("",2),t=[p];function e(c,r,y,F,D,i){return a(),n("div",null,t)}const f=s(o,[["render",e]]);export{A as __pageData,f as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const A=JSON.parse('{"title":"根据生日计算年龄","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"hand-notes/JavaScript/根据生日计算年龄.md"}'),o={name:"hand-notes/JavaScript/根据生日计算年龄.md"},p=l("",2),t=[p];function e(c,r,y,F,D,i){return a(),n("div",null,t)}const f=s(o,[["render",e]]);export{A as __pageData,f as default};
diff --git "a/assets/hand-notes_JavaScript_\351\232\217\346\234\272\346\225\260\347\232\204\345\272\224\347\224\250.md.c11015e7.js" "b/assets/hand-notes_JavaScript_\351\232\217\346\234\272\346\225\260\347\232\204\345\272\224\347\224\250.md.e72b523c.js"
similarity index 99%
rename from "assets/hand-notes_JavaScript_\351\232\217\346\234\272\346\225\260\347\232\204\345\272\224\347\224\250.md.c11015e7.js"
rename to "assets/hand-notes_JavaScript_\351\232\217\346\234\272\346\225\260\347\232\204\345\272\224\347\224\250.md.e72b523c.js"
index dfcd7ca3..a5ea5f8a 100644
--- "a/assets/hand-notes_JavaScript_\351\232\217\346\234\272\346\225\260\347\232\204\345\272\224\347\224\250.md.c11015e7.js"
+++ "b/assets/hand-notes_JavaScript_\351\232\217\346\234\272\346\225\260\347\232\204\345\272\224\347\224\250.md.e72b523c.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"随机数的应用","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"生成指定长度的随机字符串(只包含数字和字母)","slug":"生成指定长度的随机字符串-只包含数字和字母","link":"#生成指定长度的随机字符串-只包含数字和字母","children":[]},{"level":2,"title":"生成两个数字之间的随机数数字","slug":"生成两个数字之间的随机数数字","link":"#生成两个数字之间的随机数数字","children":[]},{"level":2,"title":"生成随机颜色","slug":"生成随机颜色","link":"#生成随机颜色","children":[{"level":3,"title":"生成16进制的颜色","slug":"生成16进制的颜色","link":"#生成16进制的颜色","children":[]},{"level":3,"title":"生成RGB颜色","slug":"生成rgb颜色","link":"#生成rgb颜色","children":[]}]}],"relativePath":"hand-notes/JavaScript/随机数的应用.md"}'),p={name:"hand-notes/JavaScript/随机数的应用.md"},o=l(`

随机数的应用

生成指定长度的随机字符串(只包含数字和字母)

javascript
const generateRandomStr = (strLength = 16) => {
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"随机数的应用","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"生成指定长度的随机字符串(只包含数字和字母)","slug":"生成指定长度的随机字符串-只包含数字和字母","link":"#生成指定长度的随机字符串-只包含数字和字母","children":[]},{"level":2,"title":"生成两个数字之间的随机数数字","slug":"生成两个数字之间的随机数数字","link":"#生成两个数字之间的随机数数字","children":[]},{"level":2,"title":"生成随机颜色","slug":"生成随机颜色","link":"#生成随机颜色","children":[{"level":3,"title":"生成16进制的颜色","slug":"生成16进制的颜色","link":"#生成16进制的颜色","children":[]},{"level":3,"title":"生成RGB颜色","slug":"生成rgb颜色","link":"#生成rgb颜色","children":[]}]}],"relativePath":"hand-notes/JavaScript/随机数的应用.md"}'),p={name:"hand-notes/JavaScript/随机数的应用.md"},o=l(`

随机数的应用

生成指定长度的随机字符串(只包含数字和字母)

javascript
const generateRandomStr = (strLength = 16) => {
     let key = Math.random().toString(36).substring(2)
     while (key.length < strLength) {
         key += Math.random().toString(36).substring(2)
diff --git "a/assets/hand-notes_JavaScript_\351\232\217\346\234\272\346\225\260\347\232\204\345\272\224\347\224\250.md.c11015e7.lean.js" "b/assets/hand-notes_JavaScript_\351\232\217\346\234\272\346\225\260\347\232\204\345\272\224\347\224\250.md.e72b523c.lean.js"
similarity index 94%
rename from "assets/hand-notes_JavaScript_\351\232\217\346\234\272\346\225\260\347\232\204\345\272\224\347\224\250.md.c11015e7.lean.js"
rename to "assets/hand-notes_JavaScript_\351\232\217\346\234\272\346\225\260\347\232\204\345\272\224\347\224\250.md.e72b523c.lean.js"
index cdcc2d97..73a723fb 100644
--- "a/assets/hand-notes_JavaScript_\351\232\217\346\234\272\346\225\260\347\232\204\345\272\224\347\224\250.md.c11015e7.lean.js"
+++ "b/assets/hand-notes_JavaScript_\351\232\217\346\234\272\346\225\260\347\232\204\345\272\224\347\224\250.md.e72b523c.lean.js"
@@ -1 +1 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"随机数的应用","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"生成指定长度的随机字符串(只包含数字和字母)","slug":"生成指定长度的随机字符串-只包含数字和字母","link":"#生成指定长度的随机字符串-只包含数字和字母","children":[]},{"level":2,"title":"生成两个数字之间的随机数数字","slug":"生成两个数字之间的随机数数字","link":"#生成两个数字之间的随机数数字","children":[]},{"level":2,"title":"生成随机颜色","slug":"生成随机颜色","link":"#生成随机颜色","children":[{"level":3,"title":"生成16进制的颜色","slug":"生成16进制的颜色","link":"#生成16进制的颜色","children":[]},{"level":3,"title":"生成RGB颜色","slug":"生成rgb颜色","link":"#生成rgb颜色","children":[]}]}],"relativePath":"hand-notes/JavaScript/随机数的应用.md"}'),p={name:"hand-notes/JavaScript/随机数的应用.md"},o=l("",10),e=[o];function t(r,c,y,F,D,C){return n(),a("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"随机数的应用","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"生成指定长度的随机字符串(只包含数字和字母)","slug":"生成指定长度的随机字符串-只包含数字和字母","link":"#生成指定长度的随机字符串-只包含数字和字母","children":[]},{"level":2,"title":"生成两个数字之间的随机数数字","slug":"生成两个数字之间的随机数数字","link":"#生成两个数字之间的随机数数字","children":[]},{"level":2,"title":"生成随机颜色","slug":"生成随机颜色","link":"#生成随机颜色","children":[{"level":3,"title":"生成16进制的颜色","slug":"生成16进制的颜色","link":"#生成16进制的颜色","children":[]},{"level":3,"title":"生成RGB颜色","slug":"生成rgb颜色","link":"#生成rgb颜色","children":[]}]}],"relativePath":"hand-notes/JavaScript/随机数的应用.md"}'),p={name:"hand-notes/JavaScript/随机数的应用.md"},o=l("",10),e=[o];function t(r,c,y,F,D,C){return n(),a("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
diff --git a/assets/hand-notes_Linux_practice-method.md.b405bc5d.js b/assets/hand-notes_Linux_practice-method.md.79d41611.js
similarity index 99%
rename from assets/hand-notes_Linux_practice-method.md.b405bc5d.js
rename to assets/hand-notes_Linux_practice-method.md.79d41611.js
index eccc6ec2..05d83f5a 100644
--- a/assets/hand-notes_Linux_practice-method.md.b405bc5d.js
+++ b/assets/hand-notes_Linux_practice-method.md.79d41611.js
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const F=JSON.parse('{"title":"Bash实用方法","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"通过文件路径提取文件名称/所在目录","slug":"通过文件路径提取文件名称-所在目录","link":"#通过文件路径提取文件名称-所在目录","children":[{"level":3,"title":"使用dirname获取文件所在目录","slug":"使用dirname获取文件所在目录","link":"#使用dirname获取文件所在目录","children":[]},{"level":3,"title":"使用basename获取文件名称","slug":"使用basename获取文件名称","link":"#使用basename获取文件名称","children":[]},{"level":3,"title":"使用${str##*x}截取字符串","slug":"使用-str-x-截取字符串","link":"#使用-str-x-截取字符串","children":[]},{"level":3,"title":"使用${str%.*}截取字符串","slug":"使用-str-截取字符串","link":"#使用-str-截取字符串","children":[]},{"level":3,"title":"如果不知道该文件的后缀,但是想获取该文件的名称","slug":"如果不知道该文件的后缀-但是想获取该文件的名称","link":"#如果不知道该文件的后缀-但是想获取该文件的名称","children":[]}]},{"level":2,"title":"判断变量是否包含某个字符串","slug":"判断变量是否包含某个字符串","link":"#判断变量是否包含某个字符串","children":[{"level":3,"title":"使用grep","slug":"使用grep","link":"#使用grep","children":[]},{"level":3,"title":"使用字符串运算符","slug":"使用字符串运算符","link":"#使用字符串运算符","children":[]}]},{"level":2,"title":"xargs","slug":"xargs","link":"#xargs","children":[]},{"level":2,"title":"检测某个目录是否是git仓库","slug":"检测某个目录是否是git仓库","link":"#检测某个目录是否是git仓库","children":[]},{"level":2,"title":"获取命令行参数","slug":"获取命令行参数","link":"#获取命令行参数","children":[{"level":3,"title":"使用getopts方法","slug":"使用getopts方法","link":"#使用getopts方法","children":[]}]},{"level":2,"title":"获取当前时间","slug":"获取当前时间","link":"#获取当前时间","children":[]},{"level":2,"title":"使用read和用户交互","slug":"使用read和用户交互","link":"#使用read和用户交互","children":[]},{"level":2,"title":"重定向输入和输出","slug":"重定向输入和输出","link":"#重定向输入和输出","children":[]},{"level":2,"title":"获取当前机器IP","slug":"获取当前机器ip","link":"#获取当前机器ip","children":[]}],"relativePath":"hand-notes/Linux/practice-method.md"}'),o={name:"hand-notes/Linux/practice-method.md"},e=l(`

Bash实用方法

通过文件路径提取文件名称/所在目录

使用dirname获取文件所在目录

TIP

该方法不仅可以提取文件所在的目录,还能提取目录所在的目录

使用方法:

shell
dirname NAME
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const F=JSON.parse('{"title":"Bash实用方法","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"通过文件路径提取文件名称/所在目录","slug":"通过文件路径提取文件名称-所在目录","link":"#通过文件路径提取文件名称-所在目录","children":[{"level":3,"title":"使用dirname获取文件所在目录","slug":"使用dirname获取文件所在目录","link":"#使用dirname获取文件所在目录","children":[]},{"level":3,"title":"使用basename获取文件名称","slug":"使用basename获取文件名称","link":"#使用basename获取文件名称","children":[]},{"level":3,"title":"使用${str##*x}截取字符串","slug":"使用-str-x-截取字符串","link":"#使用-str-x-截取字符串","children":[]},{"level":3,"title":"使用${str%.*}截取字符串","slug":"使用-str-截取字符串","link":"#使用-str-截取字符串","children":[]},{"level":3,"title":"如果不知道该文件的后缀,但是想获取该文件的名称","slug":"如果不知道该文件的后缀-但是想获取该文件的名称","link":"#如果不知道该文件的后缀-但是想获取该文件的名称","children":[]}]},{"level":2,"title":"判断变量是否包含某个字符串","slug":"判断变量是否包含某个字符串","link":"#判断变量是否包含某个字符串","children":[{"level":3,"title":"使用grep","slug":"使用grep","link":"#使用grep","children":[]},{"level":3,"title":"使用字符串运算符","slug":"使用字符串运算符","link":"#使用字符串运算符","children":[]}]},{"level":2,"title":"xargs","slug":"xargs","link":"#xargs","children":[]},{"level":2,"title":"检测某个目录是否是git仓库","slug":"检测某个目录是否是git仓库","link":"#检测某个目录是否是git仓库","children":[]},{"level":2,"title":"获取命令行参数","slug":"获取命令行参数","link":"#获取命令行参数","children":[{"level":3,"title":"使用getopts方法","slug":"使用getopts方法","link":"#使用getopts方法","children":[]}]},{"level":2,"title":"获取当前时间","slug":"获取当前时间","link":"#获取当前时间","children":[]},{"level":2,"title":"使用read和用户交互","slug":"使用read和用户交互","link":"#使用read和用户交互","children":[]},{"level":2,"title":"重定向输入和输出","slug":"重定向输入和输出","link":"#重定向输入和输出","children":[]},{"level":2,"title":"获取当前机器IP","slug":"获取当前机器ip","link":"#获取当前机器ip","children":[]}],"relativePath":"hand-notes/Linux/practice-method.md"}'),o={name:"hand-notes/Linux/practice-method.md"},e=l(`

Bash实用方法

通过文件路径提取文件名称/所在目录

使用dirname获取文件所在目录

TIP

该方法不仅可以提取文件所在的目录,还能提取目录所在的目录

使用方法:

shell
dirname NAME
 

示例:

shell
str="/a1/b1/c1/foo.png"
 # 输出 /a1/b1/c1
 echo $(dirname $str)
diff --git a/assets/hand-notes_Linux_practice-method.md.b405bc5d.lean.js b/assets/hand-notes_Linux_practice-method.md.79d41611.lean.js
similarity index 97%
rename from assets/hand-notes_Linux_practice-method.md.b405bc5d.lean.js
rename to assets/hand-notes_Linux_practice-method.md.79d41611.lean.js
index 26f29f06..c09b6eff 100644
--- a/assets/hand-notes_Linux_practice-method.md.b405bc5d.lean.js
+++ b/assets/hand-notes_Linux_practice-method.md.79d41611.lean.js
@@ -1 +1 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const F=JSON.parse('{"title":"Bash实用方法","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"通过文件路径提取文件名称/所在目录","slug":"通过文件路径提取文件名称-所在目录","link":"#通过文件路径提取文件名称-所在目录","children":[{"level":3,"title":"使用dirname获取文件所在目录","slug":"使用dirname获取文件所在目录","link":"#使用dirname获取文件所在目录","children":[]},{"level":3,"title":"使用basename获取文件名称","slug":"使用basename获取文件名称","link":"#使用basename获取文件名称","children":[]},{"level":3,"title":"使用${str##*x}截取字符串","slug":"使用-str-x-截取字符串","link":"#使用-str-x-截取字符串","children":[]},{"level":3,"title":"使用${str%.*}截取字符串","slug":"使用-str-截取字符串","link":"#使用-str-截取字符串","children":[]},{"level":3,"title":"如果不知道该文件的后缀,但是想获取该文件的名称","slug":"如果不知道该文件的后缀-但是想获取该文件的名称","link":"#如果不知道该文件的后缀-但是想获取该文件的名称","children":[]}]},{"level":2,"title":"判断变量是否包含某个字符串","slug":"判断变量是否包含某个字符串","link":"#判断变量是否包含某个字符串","children":[{"level":3,"title":"使用grep","slug":"使用grep","link":"#使用grep","children":[]},{"level":3,"title":"使用字符串运算符","slug":"使用字符串运算符","link":"#使用字符串运算符","children":[]}]},{"level":2,"title":"xargs","slug":"xargs","link":"#xargs","children":[]},{"level":2,"title":"检测某个目录是否是git仓库","slug":"检测某个目录是否是git仓库","link":"#检测某个目录是否是git仓库","children":[]},{"level":2,"title":"获取命令行参数","slug":"获取命令行参数","link":"#获取命令行参数","children":[{"level":3,"title":"使用getopts方法","slug":"使用getopts方法","link":"#使用getopts方法","children":[]}]},{"level":2,"title":"获取当前时间","slug":"获取当前时间","link":"#获取当前时间","children":[]},{"level":2,"title":"使用read和用户交互","slug":"使用read和用户交互","link":"#使用read和用户交互","children":[]},{"level":2,"title":"重定向输入和输出","slug":"重定向输入和输出","link":"#重定向输入和输出","children":[]},{"level":2,"title":"获取当前机器IP","slug":"获取当前机器ip","link":"#获取当前机器ip","children":[]}],"relativePath":"hand-notes/Linux/practice-method.md"}'),o={name:"hand-notes/Linux/practice-method.md"},e=l("",54),p=[e];function t(c,r,i,D,y,d){return n(),a("div",null,p)}const A=s(o,[["render",t]]);export{F as __pageData,A as default};
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const F=JSON.parse('{"title":"Bash实用方法","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"通过文件路径提取文件名称/所在目录","slug":"通过文件路径提取文件名称-所在目录","link":"#通过文件路径提取文件名称-所在目录","children":[{"level":3,"title":"使用dirname获取文件所在目录","slug":"使用dirname获取文件所在目录","link":"#使用dirname获取文件所在目录","children":[]},{"level":3,"title":"使用basename获取文件名称","slug":"使用basename获取文件名称","link":"#使用basename获取文件名称","children":[]},{"level":3,"title":"使用${str##*x}截取字符串","slug":"使用-str-x-截取字符串","link":"#使用-str-x-截取字符串","children":[]},{"level":3,"title":"使用${str%.*}截取字符串","slug":"使用-str-截取字符串","link":"#使用-str-截取字符串","children":[]},{"level":3,"title":"如果不知道该文件的后缀,但是想获取该文件的名称","slug":"如果不知道该文件的后缀-但是想获取该文件的名称","link":"#如果不知道该文件的后缀-但是想获取该文件的名称","children":[]}]},{"level":2,"title":"判断变量是否包含某个字符串","slug":"判断变量是否包含某个字符串","link":"#判断变量是否包含某个字符串","children":[{"level":3,"title":"使用grep","slug":"使用grep","link":"#使用grep","children":[]},{"level":3,"title":"使用字符串运算符","slug":"使用字符串运算符","link":"#使用字符串运算符","children":[]}]},{"level":2,"title":"xargs","slug":"xargs","link":"#xargs","children":[]},{"level":2,"title":"检测某个目录是否是git仓库","slug":"检测某个目录是否是git仓库","link":"#检测某个目录是否是git仓库","children":[]},{"level":2,"title":"获取命令行参数","slug":"获取命令行参数","link":"#获取命令行参数","children":[{"level":3,"title":"使用getopts方法","slug":"使用getopts方法","link":"#使用getopts方法","children":[]}]},{"level":2,"title":"获取当前时间","slug":"获取当前时间","link":"#获取当前时间","children":[]},{"level":2,"title":"使用read和用户交互","slug":"使用read和用户交互","link":"#使用read和用户交互","children":[]},{"level":2,"title":"重定向输入和输出","slug":"重定向输入和输出","link":"#重定向输入和输出","children":[]},{"level":2,"title":"获取当前机器IP","slug":"获取当前机器ip","link":"#获取当前机器ip","children":[]}],"relativePath":"hand-notes/Linux/practice-method.md"}'),o={name:"hand-notes/Linux/practice-method.md"},e=l("",54),p=[e];function t(c,r,i,D,y,d){return n(),a("div",null,p)}const A=s(o,[["render",t]]);export{F as __pageData,A as default};
diff --git "a/assets/hand-notes_Linux_\345\233\276\347\211\207\345\216\213\347\274\251\345\222\214\346\240\274\345\274\217\350\275\254\346\215\242.md.8a51bff9.js" "b/assets/hand-notes_Linux_\345\233\276\347\211\207\345\216\213\347\274\251\345\222\214\346\240\274\345\274\217\350\275\254\346\215\242.md.0fac0544.js"
similarity index 99%
rename from "assets/hand-notes_Linux_\345\233\276\347\211\207\345\216\213\347\274\251\345\222\214\346\240\274\345\274\217\350\275\254\346\215\242.md.8a51bff9.js"
rename to "assets/hand-notes_Linux_\345\233\276\347\211\207\345\216\213\347\274\251\345\222\214\346\240\274\345\274\217\350\275\254\346\215\242.md.0fac0544.js"
index 0a6a44d6..86e18fb5 100644
--- "a/assets/hand-notes_Linux_\345\233\276\347\211\207\345\216\213\347\274\251\345\222\214\346\240\274\345\274\217\350\275\254\346\215\242.md.8a51bff9.js"
+++ "b/assets/hand-notes_Linux_\345\233\276\347\211\207\345\216\213\347\274\251\345\222\214\346\240\274\345\274\217\350\275\254\346\215\242.md.0fac0544.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"Bash 脚本记录","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"图片转为webp格式","slug":"图片转为webp格式","link":"#图片转为webp格式","children":[]},{"level":2,"title":"图片压缩","slug":"图片压缩","link":"#图片压缩","children":[]}],"relativePath":"hand-notes/Linux/图片压缩和格式转换.md"}'),p={name:"hand-notes/Linux/图片压缩和格式转换.md"},o=l(`

Bash 脚本记录

图片转为webp格式

找出指定文件夹下所有非webp格式的图片,并转换成webp

  • 支持传入单张图片地址/图片所在文件夹地址
  • 解决文件名称带空格问题参考链接
  • cwebp文档链接
shell
#! /bin/Bash
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"Bash 脚本记录","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"图片转为webp格式","slug":"图片转为webp格式","link":"#图片转为webp格式","children":[]},{"level":2,"title":"图片压缩","slug":"图片压缩","link":"#图片压缩","children":[]}],"relativePath":"hand-notes/Linux/图片压缩和格式转换.md"}'),p={name:"hand-notes/Linux/图片压缩和格式转换.md"},o=l(`

Bash 脚本记录

图片转为webp格式

找出指定文件夹下所有非webp格式的图片,并转换成webp

  • 支持传入单张图片地址/图片所在文件夹地址
  • 解决文件名称带空格问题参考链接
  • cwebp文档链接
shell
#! /bin/Bash
 set -e;
 read -p "是否删除原文件(y/n,默认n不删除): " isDeleteOriginalFile
 dir=".";
diff --git "a/assets/hand-notes_Linux_\345\233\276\347\211\207\345\216\213\347\274\251\345\222\214\346\240\274\345\274\217\350\275\254\346\215\242.md.8a51bff9.lean.js" "b/assets/hand-notes_Linux_\345\233\276\347\211\207\345\216\213\347\274\251\345\222\214\346\240\274\345\274\217\350\275\254\346\215\242.md.0fac0544.lean.js"
similarity index 90%
rename from "assets/hand-notes_Linux_\345\233\276\347\211\207\345\216\213\347\274\251\345\222\214\346\240\274\345\274\217\350\275\254\346\215\242.md.8a51bff9.lean.js"
rename to "assets/hand-notes_Linux_\345\233\276\347\211\207\345\216\213\347\274\251\345\222\214\346\240\274\345\274\217\350\275\254\346\215\242.md.0fac0544.lean.js"
index 02f82d54..c892c88d 100644
--- "a/assets/hand-notes_Linux_\345\233\276\347\211\207\345\216\213\347\274\251\345\222\214\346\240\274\345\274\217\350\275\254\346\215\242.md.8a51bff9.lean.js"
+++ "b/assets/hand-notes_Linux_\345\233\276\347\211\207\345\216\213\347\274\251\345\222\214\346\240\274\345\274\217\350\275\254\346\215\242.md.0fac0544.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"Bash 脚本记录","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"图片转为webp格式","slug":"图片转为webp格式","link":"#图片转为webp格式","children":[]},{"level":2,"title":"图片压缩","slug":"图片压缩","link":"#图片压缩","children":[]}],"relativePath":"hand-notes/Linux/图片压缩和格式转换.md"}'),p={name:"hand-notes/Linux/图片压缩和格式转换.md"},o=l("",9),e=[o];function t(D,c,r,y,F,C){return a(),n("div",null,e)}const E=s(p,[["render",t]]);export{i as __pageData,E as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"Bash 脚本记录","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"图片转为webp格式","slug":"图片转为webp格式","link":"#图片转为webp格式","children":[]},{"level":2,"title":"图片压缩","slug":"图片压缩","link":"#图片压缩","children":[]}],"relativePath":"hand-notes/Linux/图片压缩和格式转换.md"}'),p={name:"hand-notes/Linux/图片压缩和格式转换.md"},o=l("",9),e=[o];function t(D,c,r,y,F,C){return a(),n("div",null,e)}const E=s(p,[["render",t]]);export{i as __pageData,E as default};
diff --git "a/assets/hand-notes_Linux_\346\226\207\344\273\266\345\216\213\347\274\251.md.8465c61c.js" "b/assets/hand-notes_Linux_\346\226\207\344\273\266\345\216\213\347\274\251.md.aa1a8929.js"
similarity index 99%
rename from "assets/hand-notes_Linux_\346\226\207\344\273\266\345\216\213\347\274\251.md.8465c61c.js"
rename to "assets/hand-notes_Linux_\346\226\207\344\273\266\345\216\213\347\274\251.md.aa1a8929.js"
index 3e6ef801..34eabd88 100644
--- "a/assets/hand-notes_Linux_\346\226\207\344\273\266\345\216\213\347\274\251.md.8465c61c.js"
+++ "b/assets/hand-notes_Linux_\346\226\207\344\273\266\345\216\213\347\274\251.md.aa1a8929.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as l,e as n}from"./app.fa87702c.js";const D=JSON.parse('{"title":"文件压缩","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"zip","slug":"zip","link":"#zip","children":[{"level":3,"title":"压缩文件","slug":"压缩文件","link":"#压缩文件","children":[]},{"level":3,"title":"压缩目录","slug":"压缩目录","link":"#压缩目录","children":[]},{"level":3,"title":"解压缩文件","slug":"解压缩文件","link":"#解压缩文件","children":[]}]},{"level":2,"title":"gzip","slug":"gzip","link":"#gzip","children":[{"level":3,"title":"压缩单个文件","slug":"压缩单个文件","link":"#压缩单个文件","children":[]},{"level":3,"title":"压缩目录下的所有文件","slug":"压缩目录下的所有文件","link":"#压缩目录下的所有文件","children":[]},{"level":3,"title":"解压缩","slug":"解压缩","link":"#解压缩","children":[]}]},{"level":2,"title":"tar打包命令","slug":"tar打包命令","link":"#tar打包命令","children":[{"level":3,"title":"tar打包","slug":"tar打包","link":"#tar打包","children":[]},{"level":3,"title":"解压 tar文件","slug":"解压-tar文件","link":"#解压-tar文件","children":[]}]},{"level":2,"title":"tar.gz压缩格式","slug":"tar-gz压缩格式","link":"#tar-gz压缩格式","children":[{"level":3,"title":"打包并压缩","slug":"打包并压缩","link":"#打包并压缩","children":[]},{"level":3,"title":"解压缩","slug":"解压缩-1","link":"#解压缩-1","children":[]},{"level":3,"title":"解压.rar文件","slug":"解压-rar文件","link":"#解压-rar文件","children":[]}]}],"relativePath":"hand-notes/Linux/文件压缩.md"}'),e={name:"hand-notes/Linux/文件压缩.md"},p=n(`

文件压缩

zip

压缩文件

shell
zip targetFile.zip sourceFile
+import{_ as s,c as a,o as l,e as n}from"./app.2f6419f0.js";const D=JSON.parse('{"title":"文件压缩","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"zip","slug":"zip","link":"#zip","children":[{"level":3,"title":"压缩文件","slug":"压缩文件","link":"#压缩文件","children":[]},{"level":3,"title":"压缩目录","slug":"压缩目录","link":"#压缩目录","children":[]},{"level":3,"title":"解压缩文件","slug":"解压缩文件","link":"#解压缩文件","children":[]}]},{"level":2,"title":"gzip","slug":"gzip","link":"#gzip","children":[{"level":3,"title":"压缩单个文件","slug":"压缩单个文件","link":"#压缩单个文件","children":[]},{"level":3,"title":"压缩目录下的所有文件","slug":"压缩目录下的所有文件","link":"#压缩目录下的所有文件","children":[]},{"level":3,"title":"解压缩","slug":"解压缩","link":"#解压缩","children":[]}]},{"level":2,"title":"tar打包命令","slug":"tar打包命令","link":"#tar打包命令","children":[{"level":3,"title":"tar打包","slug":"tar打包","link":"#tar打包","children":[]},{"level":3,"title":"解压 tar文件","slug":"解压-tar文件","link":"#解压-tar文件","children":[]}]},{"level":2,"title":"tar.gz压缩格式","slug":"tar-gz压缩格式","link":"#tar-gz压缩格式","children":[{"level":3,"title":"打包并压缩","slug":"打包并压缩","link":"#打包并压缩","children":[]},{"level":3,"title":"解压缩","slug":"解压缩-1","link":"#解压缩-1","children":[]},{"level":3,"title":"解压.rar文件","slug":"解压-rar文件","link":"#解压-rar文件","children":[]}]}],"relativePath":"hand-notes/Linux/文件压缩.md"}'),e={name:"hand-notes/Linux/文件压缩.md"},p=n(`

文件压缩

zip

压缩文件

shell
zip targetFile.zip sourceFile
 

示例:

shell
zip target.zip source.txt
 

压缩目录

  • -r表示递归遍历文件夹,包括子文件夹和文件,将它们一起压缩到目标ZIP文件中
shell
zip -r targetFile.zip sourceFile
 

解压缩文件

shell
unzip source.zip	
diff --git "a/assets/hand-notes_Linux_\346\226\207\344\273\266\345\216\213\347\274\251.md.8465c61c.lean.js" "b/assets/hand-notes_Linux_\346\226\207\344\273\266\345\216\213\347\274\251.md.aa1a8929.lean.js"
similarity index 96%
rename from "assets/hand-notes_Linux_\346\226\207\344\273\266\345\216\213\347\274\251.md.8465c61c.lean.js"
rename to "assets/hand-notes_Linux_\346\226\207\344\273\266\345\216\213\347\274\251.md.aa1a8929.lean.js"
index 2c8eed6e..b54e0cd0 100644
--- "a/assets/hand-notes_Linux_\346\226\207\344\273\266\345\216\213\347\274\251.md.8465c61c.lean.js"
+++ "b/assets/hand-notes_Linux_\346\226\207\344\273\266\345\216\213\347\274\251.md.aa1a8929.lean.js"
@@ -1 +1 @@
-import{_ as s,c as a,o as l,e as n}from"./app.fa87702c.js";const D=JSON.parse('{"title":"文件压缩","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"zip","slug":"zip","link":"#zip","children":[{"level":3,"title":"压缩文件","slug":"压缩文件","link":"#压缩文件","children":[]},{"level":3,"title":"压缩目录","slug":"压缩目录","link":"#压缩目录","children":[]},{"level":3,"title":"解压缩文件","slug":"解压缩文件","link":"#解压缩文件","children":[]}]},{"level":2,"title":"gzip","slug":"gzip","link":"#gzip","children":[{"level":3,"title":"压缩单个文件","slug":"压缩单个文件","link":"#压缩单个文件","children":[]},{"level":3,"title":"压缩目录下的所有文件","slug":"压缩目录下的所有文件","link":"#压缩目录下的所有文件","children":[]},{"level":3,"title":"解压缩","slug":"解压缩","link":"#解压缩","children":[]}]},{"level":2,"title":"tar打包命令","slug":"tar打包命令","link":"#tar打包命令","children":[{"level":3,"title":"tar打包","slug":"tar打包","link":"#tar打包","children":[]},{"level":3,"title":"解压 tar文件","slug":"解压-tar文件","link":"#解压-tar文件","children":[]}]},{"level":2,"title":"tar.gz压缩格式","slug":"tar-gz压缩格式","link":"#tar-gz压缩格式","children":[{"level":3,"title":"打包并压缩","slug":"打包并压缩","link":"#打包并压缩","children":[]},{"level":3,"title":"解压缩","slug":"解压缩-1","link":"#解压缩-1","children":[]},{"level":3,"title":"解压.rar文件","slug":"解压-rar文件","link":"#解压-rar文件","children":[]}]}],"relativePath":"hand-notes/Linux/文件压缩.md"}'),e={name:"hand-notes/Linux/文件压缩.md"},p=n("",55),o=[p];function c(t,r,i,C,d,y){return l(),a("div",null,o)}const A=s(e,[["render",c]]);export{D as __pageData,A as default};
+import{_ as s,c as a,o as l,e as n}from"./app.2f6419f0.js";const D=JSON.parse('{"title":"文件压缩","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"zip","slug":"zip","link":"#zip","children":[{"level":3,"title":"压缩文件","slug":"压缩文件","link":"#压缩文件","children":[]},{"level":3,"title":"压缩目录","slug":"压缩目录","link":"#压缩目录","children":[]},{"level":3,"title":"解压缩文件","slug":"解压缩文件","link":"#解压缩文件","children":[]}]},{"level":2,"title":"gzip","slug":"gzip","link":"#gzip","children":[{"level":3,"title":"压缩单个文件","slug":"压缩单个文件","link":"#压缩单个文件","children":[]},{"level":3,"title":"压缩目录下的所有文件","slug":"压缩目录下的所有文件","link":"#压缩目录下的所有文件","children":[]},{"level":3,"title":"解压缩","slug":"解压缩","link":"#解压缩","children":[]}]},{"level":2,"title":"tar打包命令","slug":"tar打包命令","link":"#tar打包命令","children":[{"level":3,"title":"tar打包","slug":"tar打包","link":"#tar打包","children":[]},{"level":3,"title":"解压 tar文件","slug":"解压-tar文件","link":"#解压-tar文件","children":[]}]},{"level":2,"title":"tar.gz压缩格式","slug":"tar-gz压缩格式","link":"#tar-gz压缩格式","children":[{"level":3,"title":"打包并压缩","slug":"打包并压缩","link":"#打包并压缩","children":[]},{"level":3,"title":"解压缩","slug":"解压缩-1","link":"#解压缩-1","children":[]},{"level":3,"title":"解压.rar文件","slug":"解压-rar文件","link":"#解压-rar文件","children":[]}]}],"relativePath":"hand-notes/Linux/文件压缩.md"}'),e={name:"hand-notes/Linux/文件压缩.md"},p=n("",55),o=[p];function c(t,r,i,C,d,y){return l(),a("div",null,o)}const A=s(e,[["render",c]]);export{D as __pageData,A as default};
diff --git "a/assets/hand-notes_Linux_\346\235\203\351\231\220\347\233\270\345\205\263.md.237bf565.js" "b/assets/hand-notes_Linux_\346\235\203\351\231\220\347\233\270\345\205\263.md.660314ae.js"
similarity index 99%
rename from "assets/hand-notes_Linux_\346\235\203\351\231\220\347\233\270\345\205\263.md.237bf565.js"
rename to "assets/hand-notes_Linux_\346\235\203\351\231\220\347\233\270\345\205\263.md.660314ae.js"
index 9eb2045e..022af4bc 100644
--- "a/assets/hand-notes_Linux_\346\235\203\351\231\220\347\233\270\345\205\263.md.237bf565.js"
+++ "b/assets/hand-notes_Linux_\346\235\203\351\231\220\347\233\270\345\205\263.md.660314ae.js"
@@ -1,4 +1,4 @@
-import{_ as e,c as l,o as t,e as s}from"./app.fa87702c.js";const x=JSON.parse('{"title":"权限相关","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"权限的作用","slug":"权限的作用","link":"#权限的作用","children":[]},{"level":2,"title":"权限详情","slug":"权限详情","link":"#权限详情","children":[{"level":3,"title":"文件权限","slug":"文件权限","link":"#文件权限","children":[]},{"level":3,"title":"文件夹(目录)权限","slug":"文件夹-目录-权限","link":"#文件夹-目录-权限","children":[]},{"level":3,"title":"权限位","slug":"权限位","link":"#权限位","children":[]}]},{"level":2,"title":"修改权限","slug":"修改权限","link":"#修改权限","children":[{"level":3,"title":"chmod","slug":"chmod","link":"#chmod","children":[]},{"level":3,"title":"chown","slug":"chown","link":"#chown","children":[]},{"level":3,"title":"chgrp","slug":"chgrp","link":"#chgrp","children":[]}]}],"relativePath":"hand-notes/Linux/权限相关.md"}'),a={name:"hand-notes/Linux/权限相关.md"},o=s(`

权限相关

权限的作用

  • 文件来说最高权限是x(可执行)

  • 目录来讲最高权限是w(可写),对目录有了w权限,就可以做任何事情

权限详情

权限项执行
字符表示rwx
数字表示421

文件权限

权限含义示例
r读取文件内容catmoreheadtail
w编辑、新增、修改文件内容,不能删除文件,除非对目录有写权限vimecho
x可执行./xxx.sh

文件夹(目录)权限

权限含义示例
r可以查看目录下的文件名lsllla
w具有修改目录结构的权限。如新建删除重命名此目录下的文件和目录touchrmmvcp
x可进入目录cd

权限位

执行la,查看权限,例如:drwx------

shell
  js-project la
+import{_ as e,c as l,o as t,e as s}from"./app.2f6419f0.js";const x=JSON.parse('{"title":"权限相关","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"权限的作用","slug":"权限的作用","link":"#权限的作用","children":[]},{"level":2,"title":"权限详情","slug":"权限详情","link":"#权限详情","children":[{"level":3,"title":"文件权限","slug":"文件权限","link":"#文件权限","children":[]},{"level":3,"title":"文件夹(目录)权限","slug":"文件夹-目录-权限","link":"#文件夹-目录-权限","children":[]},{"level":3,"title":"权限位","slug":"权限位","link":"#权限位","children":[]}]},{"level":2,"title":"修改权限","slug":"修改权限","link":"#修改权限","children":[{"level":3,"title":"chmod","slug":"chmod","link":"#chmod","children":[]},{"level":3,"title":"chown","slug":"chown","link":"#chown","children":[]},{"level":3,"title":"chgrp","slug":"chgrp","link":"#chgrp","children":[]}]}],"relativePath":"hand-notes/Linux/权限相关.md"}'),a={name:"hand-notes/Linux/权限相关.md"},o=s(`

权限相关

权限的作用

  • 文件来说最高权限是x(可执行)

  • 目录来讲最高权限是w(可写),对目录有了w权限,就可以做任何事情

权限详情

权限项执行
字符表示rwx
数字表示421

文件权限

权限含义示例
r读取文件内容catmoreheadtail
w编辑、新增、修改文件内容,不能删除文件,除非对目录有写权限vimecho
x可执行./xxx.sh

文件夹(目录)权限

权限含义示例
r可以查看目录下的文件名lsllla
w具有修改目录结构的权限。如新建删除重命名此目录下的文件和目录touchrmmvcp
x可进入目录cd

权限位

执行la,查看权限,例如:drwx------

shell
  js-project la
 total 72
 drwxr-xr-x@  
 drwxr-xr-x@ 
diff --git "a/assets/hand-notes_Linux_\346\235\203\351\231\220\347\233\270\345\205\263.md.237bf565.lean.js" "b/assets/hand-notes_Linux_\346\235\203\351\231\220\347\233\270\345\205\263.md.660314ae.lean.js"
similarity index 94%
rename from "assets/hand-notes_Linux_\346\235\203\351\231\220\347\233\270\345\205\263.md.237bf565.lean.js"
rename to "assets/hand-notes_Linux_\346\235\203\351\231\220\347\233\270\345\205\263.md.660314ae.lean.js"
index 28314e1f..43e8dc37 100644
--- "a/assets/hand-notes_Linux_\346\235\203\351\231\220\347\233\270\345\205\263.md.237bf565.lean.js"
+++ "b/assets/hand-notes_Linux_\346\235\203\351\231\220\347\233\270\345\205\263.md.660314ae.lean.js"
@@ -1 +1 @@
-import{_ as e,c as l,o as t,e as s}from"./app.fa87702c.js";const x=JSON.parse('{"title":"权限相关","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"权限的作用","slug":"权限的作用","link":"#权限的作用","children":[]},{"level":2,"title":"权限详情","slug":"权限详情","link":"#权限详情","children":[{"level":3,"title":"文件权限","slug":"文件权限","link":"#文件权限","children":[]},{"level":3,"title":"文件夹(目录)权限","slug":"文件夹-目录-权限","link":"#文件夹-目录-权限","children":[]},{"level":3,"title":"权限位","slug":"权限位","link":"#权限位","children":[]}]},{"level":2,"title":"修改权限","slug":"修改权限","link":"#修改权限","children":[{"level":3,"title":"chmod","slug":"chmod","link":"#chmod","children":[]},{"level":3,"title":"chown","slug":"chown","link":"#chown","children":[]},{"level":3,"title":"chgrp","slug":"chgrp","link":"#chgrp","children":[]}]}],"relativePath":"hand-notes/Linux/权限相关.md"}'),a={name:"hand-notes/Linux/权限相关.md"},o=s("",27),n=[o];function c(d,r,i,p,h,y){return t(),l("div",null,n)}const g=e(a,[["render",c]]);export{x as __pageData,g as default};
+import{_ as e,c as l,o as t,e as s}from"./app.2f6419f0.js";const x=JSON.parse('{"title":"权限相关","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"权限的作用","slug":"权限的作用","link":"#权限的作用","children":[]},{"level":2,"title":"权限详情","slug":"权限详情","link":"#权限详情","children":[{"level":3,"title":"文件权限","slug":"文件权限","link":"#文件权限","children":[]},{"level":3,"title":"文件夹(目录)权限","slug":"文件夹-目录-权限","link":"#文件夹-目录-权限","children":[]},{"level":3,"title":"权限位","slug":"权限位","link":"#权限位","children":[]}]},{"level":2,"title":"修改权限","slug":"修改权限","link":"#修改权限","children":[{"level":3,"title":"chmod","slug":"chmod","link":"#chmod","children":[]},{"level":3,"title":"chown","slug":"chown","link":"#chown","children":[]},{"level":3,"title":"chgrp","slug":"chgrp","link":"#chgrp","children":[]}]}],"relativePath":"hand-notes/Linux/权限相关.md"}'),a={name:"hand-notes/Linux/权限相关.md"},o=s("",27),n=[o];function c(d,r,i,p,h,y){return t(),l("div",null,n)}const g=e(a,[["render",c]]);export{x as __pageData,g as default};
diff --git "a/assets/hand-notes_Linux_\347\224\250\346\210\267\346\223\215\344\275\234\347\233\270\345\205\263.md.766df05f.js" "b/assets/hand-notes_Linux_\347\224\250\346\210\267\346\223\215\344\275\234\347\233\270\345\205\263.md.c6701662.js"
similarity index 98%
rename from "assets/hand-notes_Linux_\347\224\250\346\210\267\346\223\215\344\275\234\347\233\270\345\205\263.md.766df05f.js"
rename to "assets/hand-notes_Linux_\347\224\250\346\210\267\346\223\215\344\275\234\347\233\270\345\205\263.md.c6701662.js"
index 1424bb41..f633404e 100644
--- "a/assets/hand-notes_Linux_\347\224\250\346\210\267\346\223\215\344\275\234\347\233\270\345\205\263.md.766df05f.js"
+++ "b/assets/hand-notes_Linux_\347\224\250\346\210\267\346\223\215\344\275\234\347\233\270\345\205\263.md.c6701662.js"
@@ -1,4 +1,4 @@
-import{_ as a,c as s,o as e,e as l}from"./app.fa87702c.js";const _=JSON.parse('{"title":"用户操作相关","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"查看用户列表","slug":"查看用户列表","link":"#查看用户列表","children":[]},{"level":2,"title":"切换用户","slug":"切换用户","link":"#切换用户","children":[]},{"level":2,"title":"root用户才有的操作","slug":"root用户才有的操作","link":"#root用户才有的操作","children":[{"level":3,"title":"添加新用户","slug":"添加新用户","link":"#添加新用户","children":[]},{"level":3,"title":"给已创建的用户user设置密码","slug":"给已创建的用户user设置密码","link":"#给已创建的用户user设置密码","children":[]},{"level":3,"title":"为用户添加权限","slug":"为用户添加权限","link":"#为用户添加权限","children":[]}]}],"relativePath":"hand-notes/Linux/用户操作相关.md"}'),n={name:"hand-notes/Linux/用户操作相关.md"},t=l(`

用户操作相关

查看用户列表

shell
cat /etc/passwd
+import{_ as a,c as s,o as e,e as l}from"./app.2f6419f0.js";const _=JSON.parse('{"title":"用户操作相关","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"查看用户列表","slug":"查看用户列表","link":"#查看用户列表","children":[]},{"level":2,"title":"切换用户","slug":"切换用户","link":"#切换用户","children":[]},{"level":2,"title":"root用户才有的操作","slug":"root用户才有的操作","link":"#root用户才有的操作","children":[{"level":3,"title":"添加新用户","slug":"添加新用户","link":"#添加新用户","children":[]},{"level":3,"title":"给已创建的用户user设置密码","slug":"给已创建的用户user设置密码","link":"#给已创建的用户user设置密码","children":[]},{"level":3,"title":"为用户添加权限","slug":"为用户添加权限","link":"#为用户添加权限","children":[]}]}],"relativePath":"hand-notes/Linux/用户操作相关.md"}'),n={name:"hand-notes/Linux/用户操作相关.md"},t=l(`

用户操作相关

查看用户列表

shell
cat /etc/passwd
 

切换用户

shell
su username
 

root用户才有的操作

WARNING

以下操作只有root账号才可以可用

添加新用户

shell
adduser username
 

给已创建的用户user设置密码

shell
passwd username
diff --git "a/assets/hand-notes_Linux_\347\224\250\346\210\267\346\223\215\344\275\234\347\233\270\345\205\263.md.766df05f.lean.js" "b/assets/hand-notes_Linux_\347\224\250\346\210\267\346\223\215\344\275\234\347\233\270\345\205\263.md.c6701662.lean.js"
similarity index 94%
rename from "assets/hand-notes_Linux_\347\224\250\346\210\267\346\223\215\344\275\234\347\233\270\345\205\263.md.766df05f.lean.js"
rename to "assets/hand-notes_Linux_\347\224\250\346\210\267\346\223\215\344\275\234\347\233\270\345\205\263.md.c6701662.lean.js"
index 6cd1132c..41b03e66 100644
--- "a/assets/hand-notes_Linux_\347\224\250\346\210\267\346\223\215\344\275\234\347\233\270\345\205\263.md.766df05f.lean.js"
+++ "b/assets/hand-notes_Linux_\347\224\250\346\210\267\346\223\215\344\275\234\347\233\270\345\205\263.md.c6701662.lean.js"
@@ -1 +1 @@
-import{_ as a,c as s,o as e,e as l}from"./app.fa87702c.js";const _=JSON.parse('{"title":"用户操作相关","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"查看用户列表","slug":"查看用户列表","link":"#查看用户列表","children":[]},{"level":2,"title":"切换用户","slug":"切换用户","link":"#切换用户","children":[]},{"level":2,"title":"root用户才有的操作","slug":"root用户才有的操作","link":"#root用户才有的操作","children":[{"level":3,"title":"添加新用户","slug":"添加新用户","link":"#添加新用户","children":[]},{"level":3,"title":"给已创建的用户user设置密码","slug":"给已创建的用户user设置密码","link":"#给已创建的用户user设置密码","children":[]},{"level":3,"title":"为用户添加权限","slug":"为用户添加权限","link":"#为用户添加权限","children":[]}]}],"relativePath":"hand-notes/Linux/用户操作相关.md"}'),n={name:"hand-notes/Linux/用户操作相关.md"},t=l("",14),o=[t];function i(c,p,r,d,h,u){return e(),s("div",null,o)}const g=a(n,[["render",i]]);export{_ as __pageData,g as default};
+import{_ as a,c as s,o as e,e as l}from"./app.2f6419f0.js";const _=JSON.parse('{"title":"用户操作相关","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"查看用户列表","slug":"查看用户列表","link":"#查看用户列表","children":[]},{"level":2,"title":"切换用户","slug":"切换用户","link":"#切换用户","children":[]},{"level":2,"title":"root用户才有的操作","slug":"root用户才有的操作","link":"#root用户才有的操作","children":[{"level":3,"title":"添加新用户","slug":"添加新用户","link":"#添加新用户","children":[]},{"level":3,"title":"给已创建的用户user设置密码","slug":"给已创建的用户user设置密码","link":"#给已创建的用户user设置密码","children":[]},{"level":3,"title":"为用户添加权限","slug":"为用户添加权限","link":"#为用户添加权限","children":[]}]}],"relativePath":"hand-notes/Linux/用户操作相关.md"}'),n={name:"hand-notes/Linux/用户操作相关.md"},t=l("",14),o=[t];function i(c,p,r,d,h,u){return e(),s("div",null,o)}const g=a(n,[["render",i]]);export{_ as __pageData,g as default};
diff --git "a/assets/hand-notes_Linux_\350\256\241\347\256\227\345\215\207\347\272\247\347\211\210\346\234\254\345\217\267.md.c15e0ba4.js" "b/assets/hand-notes_Linux_\350\256\241\347\256\227\345\215\207\347\272\247\347\211\210\346\234\254\345\217\267.md.36063e61.js"
similarity index 99%
rename from "assets/hand-notes_Linux_\350\256\241\347\256\227\345\215\207\347\272\247\347\211\210\346\234\254\345\217\267.md.c15e0ba4.js"
rename to "assets/hand-notes_Linux_\350\256\241\347\256\227\345\215\207\347\272\247\347\211\210\346\234\254\345\217\267.md.36063e61.js"
index 029baf18..a5f197a1 100644
--- "a/assets/hand-notes_Linux_\350\256\241\347\256\227\345\215\207\347\272\247\347\211\210\346\234\254\345\217\267.md.c15e0ba4.js"
+++ "b/assets/hand-notes_Linux_\350\256\241\347\256\227\345\215\207\347\272\247\347\211\210\346\234\254\345\217\267.md.36063e61.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as o}from"./app.fa87702c.js";const l="/static-blog/image/Linux/version.png",_=JSON.parse('{"title":"计算升级版本号","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"hand-notes/Linux/计算升级版本号.md"}'),p={name:"hand-notes/Linux/计算升级版本号.md"},e=o('

计算升级版本号

  • 根据当前的版本号计算升级版本后的号,支持自定义版本号

效果如下:

version

shell
current_version="5.0.0"
+import{_ as s,c as n,o as a,e as o}from"./app.2f6419f0.js";const l="/static-blog/image/Linux/version.png",_=JSON.parse('{"title":"计算升级版本号","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"hand-notes/Linux/计算升级版本号.md"}'),p={name:"hand-notes/Linux/计算升级版本号.md"},e=o('

计算升级版本号

  • 根据当前的版本号计算升级版本后的号,支持自定义版本号

效果如下:

version

shell
current_version="5.0.0"
 echo "当前的版本为【\${current_version}"
 # 计算要升级的版本号
 # 分割当前版本号为主版本、次版本和修订版本
diff --git "a/assets/hand-notes_Linux_\350\256\241\347\256\227\345\215\207\347\272\247\347\211\210\346\234\254\345\217\267.md.c15e0ba4.lean.js" "b/assets/hand-notes_Linux_\350\256\241\347\256\227\345\215\207\347\272\247\347\211\210\346\234\254\345\217\267.md.36063e61.lean.js"
similarity index 86%
rename from "assets/hand-notes_Linux_\350\256\241\347\256\227\345\215\207\347\272\247\347\211\210\346\234\254\345\217\267.md.c15e0ba4.lean.js"
rename to "assets/hand-notes_Linux_\350\256\241\347\256\227\345\215\207\347\272\247\347\211\210\346\234\254\345\217\267.md.36063e61.lean.js"
index 986acca6..47b44ef1 100644
--- "a/assets/hand-notes_Linux_\350\256\241\347\256\227\345\215\207\347\272\247\347\211\210\346\234\254\345\217\267.md.c15e0ba4.lean.js"
+++ "b/assets/hand-notes_Linux_\350\256\241\347\256\227\345\215\207\347\272\247\347\211\210\346\234\254\345\217\267.md.36063e61.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as o}from"./app.fa87702c.js";const l="/static-blog/image/Linux/version.png",_=JSON.parse('{"title":"计算升级版本号","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"hand-notes/Linux/计算升级版本号.md"}'),p={name:"hand-notes/Linux/计算升级版本号.md"},e=o("",8),t=[e];function c(r,D,y,F,i,C){return a(),n("div",null,t)}const d=s(p,[["render",c]]);export{_ as __pageData,d as default};
+import{_ as s,c as n,o as a,e as o}from"./app.2f6419f0.js";const l="/static-blog/image/Linux/version.png",_=JSON.parse('{"title":"计算升级版本号","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"hand-notes/Linux/计算升级版本号.md"}'),p={name:"hand-notes/Linux/计算升级版本号.md"},e=o("",8),t=[e];function c(r,D,y,F,i,C){return a(),n("div",null,t)}const d=s(p,[["render",c]]);export{_ as __pageData,d as default};
diff --git a/assets/hand-notes_Mac_frequently-commands.md.a1a6087f.js b/assets/hand-notes_Mac_frequently-commands.md.fbd4cd01.js
similarity index 99%
rename from assets/hand-notes_Mac_frequently-commands.md.a1a6087f.js
rename to assets/hand-notes_Mac_frequently-commands.md.fbd4cd01.js
index 29ed5db7..af09d784 100644
--- a/assets/hand-notes_Mac_frequently-commands.md.a1a6087f.js
+++ b/assets/hand-notes_Mac_frequently-commands.md.fbd4cd01.js
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as l,e as n}from"./app.fa87702c.js";const d=JSON.parse('{"title":"Mac 使用小记","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"电脑没声音,播放不出声音","slug":"电脑没声音-播放不出声音","link":"#电脑没声音-播放不出声音","children":[]},{"level":2,"title":"设置mac光标移动速度","slug":"设置mac光标移动速度","link":"#设置mac光标移动速度","children":[]},{"level":2,"title":"安装软件失败问题解决","slug":"安装软件失败问题解决","link":"#安装软件失败问题解决","children":[]},{"level":2,"title":"命令行关机","slug":"命令行关机","link":"#命令行关机","children":[]},{"level":2,"title":"Mac中开启一个不存在跨域的Chrome窗口","slug":"mac中开启一个不存在跨域的chrome窗口","link":"#mac中开启一个不存在跨域的chrome窗口","children":[]},{"level":2,"title":"解决Mac升级为Big Sur系统后brew命令失效的问题","slug":"解决mac升级为big-sur系统后brew命令失效的问题","link":"#解决mac升级为big-sur系统后brew命令失效的问题","children":[]},{"level":2,"title":"电脑连接WIFI失败","slug":"电脑连接wifi失败","link":"#电脑连接wifi失败","children":[]},{"level":2,"title":"homebrew下载软件出错","slug":"homebrew下载软件出错","link":"#homebrew下载软件出错","children":[]},{"level":2,"title":"Mac双开微信","slug":"mac双开微信","link":"#mac双开微信","children":[]}],"relativePath":"hand-notes/Mac/frequently-commands.md"}'),o={name:"hand-notes/Mac/frequently-commands.md"},p=n(`

Mac 使用小记

电脑没声音,播放不出声音

  • 重启电脑声音
shell
sudo killall coreaudiod
+import{_ as s,c as a,o as l,e as n}from"./app.2f6419f0.js";const d=JSON.parse('{"title":"Mac 使用小记","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"电脑没声音,播放不出声音","slug":"电脑没声音-播放不出声音","link":"#电脑没声音-播放不出声音","children":[]},{"level":2,"title":"设置mac光标移动速度","slug":"设置mac光标移动速度","link":"#设置mac光标移动速度","children":[]},{"level":2,"title":"安装软件失败问题解决","slug":"安装软件失败问题解决","link":"#安装软件失败问题解决","children":[]},{"level":2,"title":"命令行关机","slug":"命令行关机","link":"#命令行关机","children":[]},{"level":2,"title":"Mac中开启一个不存在跨域的Chrome窗口","slug":"mac中开启一个不存在跨域的chrome窗口","link":"#mac中开启一个不存在跨域的chrome窗口","children":[]},{"level":2,"title":"解决Mac升级为Big Sur系统后brew命令失效的问题","slug":"解决mac升级为big-sur系统后brew命令失效的问题","link":"#解决mac升级为big-sur系统后brew命令失效的问题","children":[]},{"level":2,"title":"电脑连接WIFI失败","slug":"电脑连接wifi失败","link":"#电脑连接wifi失败","children":[]},{"level":2,"title":"homebrew下载软件出错","slug":"homebrew下载软件出错","link":"#homebrew下载软件出错","children":[]},{"level":2,"title":"Mac双开微信","slug":"mac双开微信","link":"#mac双开微信","children":[]}],"relativePath":"hand-notes/Mac/frequently-commands.md"}'),o={name:"hand-notes/Mac/frequently-commands.md"},p=n(`

Mac 使用小记

电脑没声音,播放不出声音

  • 重启电脑声音
shell
sudo killall coreaudiod
 

设置mac光标移动速度

shell
defaults write NSGlobalDomain KeyRepeat -int 1
 

KeyRepeat对应的是按键重复,系统设置里调到最快对应的值是2,你可以调成0或者1(建议调为10可能会太快)

shell
defaults write NSGlobalDomain InitialKeyRepeat -int 15
 

InitialKeyRepeat对应的是重复前延迟,系统设置里调到最快对应的值是15,可以尝试调成10或者更小,不过建议保持15,因为反应时间太快会容易导致误操作(比如Esc键和Command-Z这样的快捷键)

安装软件失败问题解决

问题: 安装一些软件可能会出现这个报错:「xxx.app已损坏,打不开。你应该将它移到废纸篓」,并非你安装的软件已损坏,而是Mac系统的安全设置问题

解决方法:

shell
sudo spctl --master-disable
diff --git a/assets/hand-notes_Mac_frequently-commands.md.a1a6087f.lean.js b/assets/hand-notes_Mac_frequently-commands.md.fbd4cd01.lean.js
similarity index 96%
rename from assets/hand-notes_Mac_frequently-commands.md.a1a6087f.lean.js
rename to assets/hand-notes_Mac_frequently-commands.md.fbd4cd01.lean.js
index 18fdc80c..0dc5642c 100644
--- a/assets/hand-notes_Mac_frequently-commands.md.a1a6087f.lean.js
+++ b/assets/hand-notes_Mac_frequently-commands.md.fbd4cd01.lean.js
@@ -1 +1 @@
-import{_ as s,c as a,o as l,e as n}from"./app.fa87702c.js";const d=JSON.parse('{"title":"Mac 使用小记","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"电脑没声音,播放不出声音","slug":"电脑没声音-播放不出声音","link":"#电脑没声音-播放不出声音","children":[]},{"level":2,"title":"设置mac光标移动速度","slug":"设置mac光标移动速度","link":"#设置mac光标移动速度","children":[]},{"level":2,"title":"安装软件失败问题解决","slug":"安装软件失败问题解决","link":"#安装软件失败问题解决","children":[]},{"level":2,"title":"命令行关机","slug":"命令行关机","link":"#命令行关机","children":[]},{"level":2,"title":"Mac中开启一个不存在跨域的Chrome窗口","slug":"mac中开启一个不存在跨域的chrome窗口","link":"#mac中开启一个不存在跨域的chrome窗口","children":[]},{"level":2,"title":"解决Mac升级为Big Sur系统后brew命令失效的问题","slug":"解决mac升级为big-sur系统后brew命令失效的问题","link":"#解决mac升级为big-sur系统后brew命令失效的问题","children":[]},{"level":2,"title":"电脑连接WIFI失败","slug":"电脑连接wifi失败","link":"#电脑连接wifi失败","children":[]},{"level":2,"title":"homebrew下载软件出错","slug":"homebrew下载软件出错","link":"#homebrew下载软件出错","children":[]},{"level":2,"title":"Mac双开微信","slug":"mac双开微信","link":"#mac双开微信","children":[]}],"relativePath":"hand-notes/Mac/frequently-commands.md"}'),o={name:"hand-notes/Mac/frequently-commands.md"},p=n("",55),e=[p];function c(t,r,C,y,i,D){return l(),a("div",null,e)}const h=s(o,[["render",c]]);export{d as __pageData,h as default};
+import{_ as s,c as a,o as l,e as n}from"./app.2f6419f0.js";const d=JSON.parse('{"title":"Mac 使用小记","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"电脑没声音,播放不出声音","slug":"电脑没声音-播放不出声音","link":"#电脑没声音-播放不出声音","children":[]},{"level":2,"title":"设置mac光标移动速度","slug":"设置mac光标移动速度","link":"#设置mac光标移动速度","children":[]},{"level":2,"title":"安装软件失败问题解决","slug":"安装软件失败问题解决","link":"#安装软件失败问题解决","children":[]},{"level":2,"title":"命令行关机","slug":"命令行关机","link":"#命令行关机","children":[]},{"level":2,"title":"Mac中开启一个不存在跨域的Chrome窗口","slug":"mac中开启一个不存在跨域的chrome窗口","link":"#mac中开启一个不存在跨域的chrome窗口","children":[]},{"level":2,"title":"解决Mac升级为Big Sur系统后brew命令失效的问题","slug":"解决mac升级为big-sur系统后brew命令失效的问题","link":"#解决mac升级为big-sur系统后brew命令失效的问题","children":[]},{"level":2,"title":"电脑连接WIFI失败","slug":"电脑连接wifi失败","link":"#电脑连接wifi失败","children":[]},{"level":2,"title":"homebrew下载软件出错","slug":"homebrew下载软件出错","link":"#homebrew下载软件出错","children":[]},{"level":2,"title":"Mac双开微信","slug":"mac双开微信","link":"#mac双开微信","children":[]}],"relativePath":"hand-notes/Mac/frequently-commands.md"}'),o={name:"hand-notes/Mac/frequently-commands.md"},p=n("",55),e=[p];function c(t,r,C,y,i,D){return l(),a("div",null,e)}const h=s(o,[["render",c]]);export{d as __pageData,h as default};
diff --git a/assets/hand-notes_Mac_init.md.556fa76c.js b/assets/hand-notes_Mac_init.md.668e7b49.js
similarity index 99%
rename from assets/hand-notes_Mac_init.md.556fa76c.js
rename to assets/hand-notes_Mac_init.md.668e7b49.js
index 52ba04b9..77a831f1 100644
--- a/assets/hand-notes_Mac_init.md.556fa76c.js
+++ b/assets/hand-notes_Mac_init.md.668e7b49.js
@@ -1,4 +1,4 @@
-import{_ as e,c as a,o as l,e as s}from"./app.fa87702c.js";const y=JSON.parse('{"title":"Mac环境初始化","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"Mac软件","slug":"mac软件","link":"#mac软件","children":[{"level":3,"title":"Homebrew","slug":"homebrew","link":"#homebrew","children":[]},{"level":3,"title":"iterm2","slug":"iterm2","link":"#iterm2","children":[]},{"level":3,"title":"Warp","slug":"warp","link":"#warp","children":[]},{"level":3,"title":"Bob","slug":"bob","link":"#bob","children":[]},{"level":3,"title":"lrzsz","slug":"lrzsz","link":"#lrzsz","children":[]},{"level":3,"title":"Hammerspoon","slug":"hammerspoon","link":"#hammerspoon","children":[]},{"level":3,"title":"charles","slug":"charles","link":"#charles","children":[]}]},{"level":2,"title":"开发环境配置","slug":"开发环境配置","link":"#开发环境配置","children":[{"level":3,"title":"fnm","slug":"fnm","link":"#fnm","children":[]},{"level":3,"title":"pnpm","slug":"pnpm","link":"#pnpm","children":[]},{"level":3,"title":"yarn","slug":"yarn","link":"#yarn","children":[]},{"level":3,"title":"docker","slug":"docker","link":"#docker","children":[]},{"level":3,"title":"neovim","slug":"neovim","link":"#neovim","children":[]},{"level":3,"title":"Android Studio","slug":"android-studio","link":"#android-studio","children":[]},{"level":3,"title":"Conda","slug":"conda","link":"#conda","children":[]},{"level":3,"title":"jenv","slug":"jenv","link":"#jenv","children":[]}]},{"level":2,"title":"其他软件","slug":"其他软件","link":"#其他软件","children":[]},{"level":2,"title":"其他收藏/参考","slug":"其他收藏-参考","link":"#其他收藏-参考","children":[]}],"relativePath":"hand-notes/Mac/init.md"}'),n={name:"hand-notes/Mac/init.md"},t=s(`

Mac环境初始化

Mac软件


Homebrew

官网地址

shell
/bin/Bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
+import{_ as e,c as a,o as l,e as s}from"./app.2f6419f0.js";const y=JSON.parse('{"title":"Mac环境初始化","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"Mac软件","slug":"mac软件","link":"#mac软件","children":[{"level":3,"title":"Homebrew","slug":"homebrew","link":"#homebrew","children":[]},{"level":3,"title":"iterm2","slug":"iterm2","link":"#iterm2","children":[]},{"level":3,"title":"Warp","slug":"warp","link":"#warp","children":[]},{"level":3,"title":"Bob","slug":"bob","link":"#bob","children":[]},{"level":3,"title":"lrzsz","slug":"lrzsz","link":"#lrzsz","children":[]},{"level":3,"title":"Hammerspoon","slug":"hammerspoon","link":"#hammerspoon","children":[]},{"level":3,"title":"charles","slug":"charles","link":"#charles","children":[]}]},{"level":2,"title":"开发环境配置","slug":"开发环境配置","link":"#开发环境配置","children":[{"level":3,"title":"fnm","slug":"fnm","link":"#fnm","children":[]},{"level":3,"title":"pnpm","slug":"pnpm","link":"#pnpm","children":[]},{"level":3,"title":"yarn","slug":"yarn","link":"#yarn","children":[]},{"level":3,"title":"docker","slug":"docker","link":"#docker","children":[]},{"level":3,"title":"neovim","slug":"neovim","link":"#neovim","children":[]},{"level":3,"title":"Android Studio","slug":"android-studio","link":"#android-studio","children":[]},{"level":3,"title":"Conda","slug":"conda","link":"#conda","children":[]},{"level":3,"title":"jenv","slug":"jenv","link":"#jenv","children":[]}]},{"level":2,"title":"其他软件","slug":"其他软件","link":"#其他软件","children":[]},{"level":2,"title":"其他收藏/参考","slug":"其他收藏-参考","link":"#其他收藏-参考","children":[]}],"relativePath":"hand-notes/Mac/init.md"}'),n={name:"hand-notes/Mac/init.md"},t=s(`

Mac环境初始化

Mac软件


Homebrew

官网地址

shell
/bin/Bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
 

brew所有命令执行完注意查看warning或相应提示,避免掉坑,例如M1环境安装后会有以下提示

shell
==> Next steps:
 - Run these two commands in your terminal to add Homebrew to your PATH:
     echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
diff --git a/assets/hand-notes_Mac_init.md.556fa76c.lean.js b/assets/hand-notes_Mac_init.md.668e7b49.lean.js
similarity index 96%
rename from assets/hand-notes_Mac_init.md.556fa76c.lean.js
rename to assets/hand-notes_Mac_init.md.668e7b49.lean.js
index d2e5f7a7..dbfc88f6 100644
--- a/assets/hand-notes_Mac_init.md.556fa76c.lean.js
+++ b/assets/hand-notes_Mac_init.md.668e7b49.lean.js
@@ -1 +1 @@
-import{_ as e,c as a,o as l,e as s}from"./app.fa87702c.js";const y=JSON.parse('{"title":"Mac环境初始化","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"Mac软件","slug":"mac软件","link":"#mac软件","children":[{"level":3,"title":"Homebrew","slug":"homebrew","link":"#homebrew","children":[]},{"level":3,"title":"iterm2","slug":"iterm2","link":"#iterm2","children":[]},{"level":3,"title":"Warp","slug":"warp","link":"#warp","children":[]},{"level":3,"title":"Bob","slug":"bob","link":"#bob","children":[]},{"level":3,"title":"lrzsz","slug":"lrzsz","link":"#lrzsz","children":[]},{"level":3,"title":"Hammerspoon","slug":"hammerspoon","link":"#hammerspoon","children":[]},{"level":3,"title":"charles","slug":"charles","link":"#charles","children":[]}]},{"level":2,"title":"开发环境配置","slug":"开发环境配置","link":"#开发环境配置","children":[{"level":3,"title":"fnm","slug":"fnm","link":"#fnm","children":[]},{"level":3,"title":"pnpm","slug":"pnpm","link":"#pnpm","children":[]},{"level":3,"title":"yarn","slug":"yarn","link":"#yarn","children":[]},{"level":3,"title":"docker","slug":"docker","link":"#docker","children":[]},{"level":3,"title":"neovim","slug":"neovim","link":"#neovim","children":[]},{"level":3,"title":"Android Studio","slug":"android-studio","link":"#android-studio","children":[]},{"level":3,"title":"Conda","slug":"conda","link":"#conda","children":[]},{"level":3,"title":"jenv","slug":"jenv","link":"#jenv","children":[]}]},{"level":2,"title":"其他软件","slug":"其他软件","link":"#其他软件","children":[]},{"level":2,"title":"其他收藏/参考","slug":"其他收藏-参考","link":"#其他收藏-参考","children":[]}],"relativePath":"hand-notes/Mac/init.md"}'),n={name:"hand-notes/Mac/init.md"},t=s("",77),r=[t];function o(c,i,p,d,h,u){return l(),a("div",null,r)}const C=e(n,[["render",o]]);export{y as __pageData,C as default};
+import{_ as e,c as a,o as l,e as s}from"./app.2f6419f0.js";const y=JSON.parse('{"title":"Mac环境初始化","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"Mac软件","slug":"mac软件","link":"#mac软件","children":[{"level":3,"title":"Homebrew","slug":"homebrew","link":"#homebrew","children":[]},{"level":3,"title":"iterm2","slug":"iterm2","link":"#iterm2","children":[]},{"level":3,"title":"Warp","slug":"warp","link":"#warp","children":[]},{"level":3,"title":"Bob","slug":"bob","link":"#bob","children":[]},{"level":3,"title":"lrzsz","slug":"lrzsz","link":"#lrzsz","children":[]},{"level":3,"title":"Hammerspoon","slug":"hammerspoon","link":"#hammerspoon","children":[]},{"level":3,"title":"charles","slug":"charles","link":"#charles","children":[]}]},{"level":2,"title":"开发环境配置","slug":"开发环境配置","link":"#开发环境配置","children":[{"level":3,"title":"fnm","slug":"fnm","link":"#fnm","children":[]},{"level":3,"title":"pnpm","slug":"pnpm","link":"#pnpm","children":[]},{"level":3,"title":"yarn","slug":"yarn","link":"#yarn","children":[]},{"level":3,"title":"docker","slug":"docker","link":"#docker","children":[]},{"level":3,"title":"neovim","slug":"neovim","link":"#neovim","children":[]},{"level":3,"title":"Android Studio","slug":"android-studio","link":"#android-studio","children":[]},{"level":3,"title":"Conda","slug":"conda","link":"#conda","children":[]},{"level":3,"title":"jenv","slug":"jenv","link":"#jenv","children":[]}]},{"level":2,"title":"其他软件","slug":"其他软件","link":"#其他软件","children":[]},{"level":2,"title":"其他收藏/参考","slug":"其他收藏-参考","link":"#其他收藏-参考","children":[]}],"relativePath":"hand-notes/Mac/init.md"}'),n={name:"hand-notes/Mac/init.md"},t=s("",77),r=[t];function o(c,i,p,d,h,u){return l(),a("div",null,r)}const C=e(n,[["render",o]]);export{y as __pageData,C as default};
diff --git "a/assets/hand-notes_Mac_\345\277\253\346\215\267\350\277\220\350\241\214\350\207\252\345\256\232\344\271\211shell\350\204\232\346\234\254.md.6159f234.js" "b/assets/hand-notes_Mac_\345\277\253\346\215\267\350\277\220\350\241\214\350\207\252\345\256\232\344\271\211shell\350\204\232\346\234\254.md.cdfd57b5.js"
similarity index 98%
rename from "assets/hand-notes_Mac_\345\277\253\346\215\267\350\277\220\350\241\214\350\207\252\345\256\232\344\271\211shell\350\204\232\346\234\254.md.6159f234.js"
rename to "assets/hand-notes_Mac_\345\277\253\346\215\267\350\277\220\350\241\214\350\207\252\345\256\232\344\271\211shell\350\204\232\346\234\254.md.cdfd57b5.js"
index 0b198f6c..9c2e0ca3 100644
--- "a/assets/hand-notes_Mac_\345\277\253\346\215\267\350\277\220\350\241\214\350\207\252\345\256\232\344\271\211shell\350\204\232\346\234\254.md.6159f234.js"
+++ "b/assets/hand-notes_Mac_\345\277\253\346\215\267\350\277\220\350\241\214\350\207\252\345\256\232\344\271\211shell\350\204\232\346\234\254.md.cdfd57b5.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as l,e as n}from"./app.fa87702c.js";const A=JSON.parse('{"title":"快捷使用自定义shell脚本","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"hand-notes/Mac/快捷运行自定义shell脚本.md"}'),o={name:"hand-notes/Mac/快捷运行自定义shell脚本.md"},e=n(`

快捷使用自定义shell脚本

如果需要在自己的电脑中经常会用到自己写的shell脚本,可以将其添加到环境变量中,然后可以像使用全局命令一样执行自己的脚本,设置步骤如下:

  1. 创建新文件夹

新建一个文件夹存放自己的所有shell脚本 新建一个脚本文件并为其添加执行权限

shell
mkdir ~/.my_scripts
+import{_ as s,c as a,o as l,e as n}from"./app.2f6419f0.js";const A=JSON.parse('{"title":"快捷使用自定义shell脚本","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"hand-notes/Mac/快捷运行自定义shell脚本.md"}'),o={name:"hand-notes/Mac/快捷运行自定义shell脚本.md"},e=n(`

快捷使用自定义shell脚本

如果需要在自己的电脑中经常会用到自己写的shell脚本,可以将其添加到环境变量中,然后可以像使用全局命令一样执行自己的脚本,设置步骤如下:

  1. 创建新文件夹

新建一个文件夹存放自己的所有shell脚本 新建一个脚本文件并为其添加执行权限

shell
mkdir ~/.my_scripts
 cd ~/.my_scripts
 # 编辑完后:wq保存退出
 nvim x.sh
diff --git "a/assets/hand-notes_Mac_\345\277\253\346\215\267\350\277\220\350\241\214\350\207\252\345\256\232\344\271\211shell\350\204\232\346\234\254.md.6159f234.lean.js" "b/assets/hand-notes_Mac_\345\277\253\346\215\267\350\277\220\350\241\214\350\207\252\345\256\232\344\271\211shell\350\204\232\346\234\254.md.cdfd57b5.lean.js"
similarity index 85%
rename from "assets/hand-notes_Mac_\345\277\253\346\215\267\350\277\220\350\241\214\350\207\252\345\256\232\344\271\211shell\350\204\232\346\234\254.md.6159f234.lean.js"
rename to "assets/hand-notes_Mac_\345\277\253\346\215\267\350\277\220\350\241\214\350\207\252\345\256\232\344\271\211shell\350\204\232\346\234\254.md.cdfd57b5.lean.js"
index 527de694..c23d5b26 100644
--- "a/assets/hand-notes_Mac_\345\277\253\346\215\267\350\277\220\350\241\214\350\207\252\345\256\232\344\271\211shell\350\204\232\346\234\254.md.6159f234.lean.js"
+++ "b/assets/hand-notes_Mac_\345\277\253\346\215\267\350\277\220\350\241\214\350\207\252\345\256\232\344\271\211shell\350\204\232\346\234\254.md.cdfd57b5.lean.js"
@@ -1 +1 @@
-import{_ as s,c as a,o as l,e as n}from"./app.fa87702c.js";const A=JSON.parse('{"title":"快捷使用自定义shell脚本","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"hand-notes/Mac/快捷运行自定义shell脚本.md"}'),o={name:"hand-notes/Mac/快捷运行自定义shell脚本.md"},e=n("",12),p=[e];function c(t,r,i,d,C,y){return l(),a("div",null,p)}const D=s(o,[["render",c]]);export{A as __pageData,D as default};
+import{_ as s,c as a,o as l,e as n}from"./app.2f6419f0.js";const A=JSON.parse('{"title":"快捷使用自定义shell脚本","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"hand-notes/Mac/快捷运行自定义shell脚本.md"}'),o={name:"hand-notes/Mac/快捷运行自定义shell脚本.md"},e=n("",12),p=[e];function c(t,r,i,d,C,y){return l(),a("div",null,p)}const D=s(o,[["render",c]]);export{A as __pageData,D as default};
diff --git a/assets/hand-notes_React_ProComponents_ProTable.md.96bfef60.js b/assets/hand-notes_React_ProComponents_ProTable.md.fd2b5626.js
similarity index 99%
rename from assets/hand-notes_React_ProComponents_ProTable.md.96bfef60.js
rename to assets/hand-notes_React_ProComponents_ProTable.md.fd2b5626.js
index c346adb4..9d7d07a6 100644
--- a/assets/hand-notes_React_ProComponents_ProTable.md.96bfef60.js
+++ b/assets/hand-notes_React_ProComponents_ProTable.md.fd2b5626.js
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"ProTable","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"表格搜索修改","slug":"表格搜索修改","link":"#表格搜索修改","children":[]}],"relativePath":"hand-notes/React/ProComponents/ProTable.md"}'),p={name:"hand-notes/React/ProComponents/ProTable.md"},o=l(`

ProTable

表格搜索修改

ProTable高级表格添加search={true}后,默认所有的column都会支持搜索,搜索的key就是dataIndex字段,

例如:下面的columndataIndexrealName,那么启用搜索后,传入的params就是{realName: "输入的值""},如果想改变传给接口的key需要进一步处理

javascript
const columns = [
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"ProTable","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"表格搜索修改","slug":"表格搜索修改","link":"#表格搜索修改","children":[]}],"relativePath":"hand-notes/React/ProComponents/ProTable.md"}'),p={name:"hand-notes/React/ProComponents/ProTable.md"},o=l(`

ProTable

表格搜索修改

ProTable高级表格添加search={true}后,默认所有的column都会支持搜索,搜索的key就是dataIndex字段,

例如:下面的columndataIndexrealName,那么启用搜索后,传入的params就是{realName: "输入的值""},如果想改变传给接口的key需要进一步处理

javascript
const columns = [
     {
         title: 'xxxxxx',
         dataIndex: 'realName',
diff --git a/assets/hand-notes_React_ProComponents_ProTable.md.96bfef60.lean.js b/assets/hand-notes_React_ProComponents_ProTable.md.fd2b5626.lean.js
similarity index 87%
rename from assets/hand-notes_React_ProComponents_ProTable.md.96bfef60.lean.js
rename to assets/hand-notes_React_ProComponents_ProTable.md.fd2b5626.lean.js
index 689659b7..1290b31e 100644
--- a/assets/hand-notes_React_ProComponents_ProTable.md.96bfef60.lean.js
+++ b/assets/hand-notes_React_ProComponents_ProTable.md.fd2b5626.lean.js
@@ -1 +1 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"ProTable","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"表格搜索修改","slug":"表格搜索修改","link":"#表格搜索修改","children":[]}],"relativePath":"hand-notes/React/ProComponents/ProTable.md"}'),p={name:"hand-notes/React/ProComponents/ProTable.md"},o=l("",7),e=[o];function t(c,r,F,y,D,C){return n(),a("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"ProTable","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"表格搜索修改","slug":"表格搜索修改","link":"#表格搜索修改","children":[]}],"relativePath":"hand-notes/React/ProComponents/ProTable.md"}'),p={name:"hand-notes/React/ProComponents/ProTable.md"},o=l("",7),e=[o];function t(c,r,F,y,D,C){return n(),a("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
diff --git "a/assets/hand-notes_Sass_sass\345\256\236\347\216\260\346\230\237\347\251\272\346\225\210\346\236\234.md.02d1f420.js" "b/assets/hand-notes_Sass_sass\345\256\236\347\216\260\346\230\237\347\251\272\346\225\210\346\236\234.md.f61ef1da.js"
similarity index 99%
rename from "assets/hand-notes_Sass_sass\345\256\236\347\216\260\346\230\237\347\251\272\346\225\210\346\236\234.md.02d1f420.js"
rename to "assets/hand-notes_Sass_sass\345\256\236\347\216\260\346\230\237\347\251\272\346\225\210\346\236\234.md.f61ef1da.js"
index 02ea0758..f313e657 100644
--- "a/assets/hand-notes_Sass_sass\345\256\236\347\216\260\346\230\237\347\251\272\346\225\210\346\236\234.md.02d1f420.js"
+++ "b/assets/hand-notes_Sass_sass\345\256\236\347\216\260\346\230\237\347\251\272\346\225\210\346\236\234.md.f61ef1da.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"sass实现星空效果","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"代码展示","slug":"代码展示","link":"#代码展示","children":[]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[{"level":3,"title":"效果预览","slug":"效果预览","link":"#效果预览","children":[]}]}],"relativePath":"hand-notes/Sass/sass实现星空效果.md"}'),p={name:"hand-notes/Sass/sass实现星空效果.md"},o=l(`

sass实现星空效果

代码展示

html代码

html
<!doctype html>
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"sass实现星空效果","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"代码展示","slug":"代码展示","link":"#代码展示","children":[]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[{"level":3,"title":"效果预览","slug":"效果预览","link":"#效果预览","children":[]}]}],"relativePath":"hand-notes/Sass/sass实现星空效果.md"}'),p={name:"hand-notes/Sass/sass实现星空效果.md"},o=l(`

sass实现星空效果

代码展示

html代码

html
<!doctype html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
diff --git "a/assets/hand-notes_Sass_sass\345\256\236\347\216\260\346\230\237\347\251\272\346\225\210\346\236\234.md.02d1f420.lean.js" "b/assets/hand-notes_Sass_sass\345\256\236\347\216\260\346\230\237\347\251\272\346\225\210\346\236\234.md.f61ef1da.lean.js"
similarity index 90%
rename from "assets/hand-notes_Sass_sass\345\256\236\347\216\260\346\230\237\347\251\272\346\225\210\346\236\234.md.02d1f420.lean.js"
rename to "assets/hand-notes_Sass_sass\345\256\236\347\216\260\346\230\237\347\251\272\346\225\210\346\236\234.md.f61ef1da.lean.js"
index e0189c8b..6566257f 100644
--- "a/assets/hand-notes_Sass_sass\345\256\236\347\216\260\346\230\237\347\251\272\346\225\210\346\236\234.md.02d1f420.lean.js"
+++ "b/assets/hand-notes_Sass_sass\345\256\236\347\216\260\346\230\237\347\251\272\346\225\210\346\236\234.md.f61ef1da.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"sass实现星空效果","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"代码展示","slug":"代码展示","link":"#代码展示","children":[]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[{"level":3,"title":"效果预览","slug":"效果预览","link":"#效果预览","children":[]}]}],"relativePath":"hand-notes/Sass/sass实现星空效果.md"}'),p={name:"hand-notes/Sass/sass实现星空效果.md"},o=l("",9),t=[o];function e(c,D,r,F,y,C){return a(),n("div",null,t)}const d=s(p,[["render",e]]);export{i as __pageData,d as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"sass实现星空效果","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"代码展示","slug":"代码展示","link":"#代码展示","children":[]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[{"level":3,"title":"效果预览","slug":"效果预览","link":"#效果预览","children":[]}]}],"relativePath":"hand-notes/Sass/sass实现星空效果.md"}'),p={name:"hand-notes/Sass/sass实现星空效果.md"},o=l("",9),t=[o];function e(c,D,r,F,y,C){return a(),n("div",null,t)}const d=s(p,[["render",e]]);export{i as __pageData,d as default};
diff --git "a/assets/hand-notes_Sass_sass\345\260\217\346\212\200\345\267\247.md.cd72a367.js" "b/assets/hand-notes_Sass_sass\345\260\217\346\212\200\345\267\247.md.916954ca.js"
similarity index 99%
rename from "assets/hand-notes_Sass_sass\345\260\217\346\212\200\345\267\247.md.cd72a367.js"
rename to "assets/hand-notes_Sass_sass\345\260\217\346\212\200\345\267\247.md.916954ca.js"
index e70d0ecf..ca50a97c 100644
--- "a/assets/hand-notes_Sass_sass\345\260\217\346\212\200\345\267\247.md.cd72a367.js"
+++ "b/assets/hand-notes_Sass_sass\345\260\217\346\212\200\345\267\247.md.916954ca.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const A=JSON.parse('{"title":"sass小技巧","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"在sass中debug","slug":"在sass中debug","link":"#在sass中debug","children":[]},{"level":2,"title":"scss中的数学函数","slug":"scss中的数学函数","link":"#scss中的数学函数","children":[{"level":3,"title":"math.random","slug":"math-random","link":"#math-random","children":[]},{"level":3,"title":"math.floor($number)","slug":"math-floor-number","link":"#math-floor-number","children":[]}]},{"level":2,"title":"sass中的字符串函数","slug":"sass中的字符串函数","link":"#sass中的字符串函数","children":[{"level":3,"title":"string.unquote($str)","slug":"string-unquote-str","link":"#string-unquote-str","children":[]}]},{"level":2,"title":"sass中Map对象操作","slug":"sass中map对象操作","link":"#sass中map对象操作","children":[{"level":3,"title":"get($map, $key)","slug":"get-map-key","link":"#get-map-key","children":[]}]},{"level":2,"title":"sass中列表操作","slug":"sass中列表操作","link":"#sass中列表操作","children":[{"level":3,"title":"nth($list, $n)","slug":"nth-list-n","link":"#nth-list-n","children":[]}]}],"relativePath":"hand-notes/Sass/sass小技巧.md"}'),p={name:"hand-notes/Sass/sass小技巧.md"},o=l(`

sass小技巧

在sass中debug

在sass中,可以通过@debug <expression> 很方便地在控制台打印出表达式返回的值

scss
.a {
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const A=JSON.parse('{"title":"sass小技巧","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"在sass中debug","slug":"在sass中debug","link":"#在sass中debug","children":[]},{"level":2,"title":"scss中的数学函数","slug":"scss中的数学函数","link":"#scss中的数学函数","children":[{"level":3,"title":"math.random","slug":"math-random","link":"#math-random","children":[]},{"level":3,"title":"math.floor($number)","slug":"math-floor-number","link":"#math-floor-number","children":[]}]},{"level":2,"title":"sass中的字符串函数","slug":"sass中的字符串函数","link":"#sass中的字符串函数","children":[{"level":3,"title":"string.unquote($str)","slug":"string-unquote-str","link":"#string-unquote-str","children":[]}]},{"level":2,"title":"sass中Map对象操作","slug":"sass中map对象操作","link":"#sass中map对象操作","children":[{"level":3,"title":"get($map, $key)","slug":"get-map-key","link":"#get-map-key","children":[]}]},{"level":2,"title":"sass中列表操作","slug":"sass中列表操作","link":"#sass中列表操作","children":[{"level":3,"title":"nth($list, $n)","slug":"nth-list-n","link":"#nth-list-n","children":[]}]}],"relativePath":"hand-notes/Sass/sass小技巧.md"}'),p={name:"hand-notes/Sass/sass小技巧.md"},o=l(`

sass小技巧

在sass中debug

在sass中,可以通过@debug <expression> 很方便地在控制台打印出表达式返回的值

scss
.a {
   @debug '#{1 + 1}'; // 可以看到控制台输出 Debug: 2
   $n: 100;
   @debug '#{$n}' // 可以看到控制台输出 Debug: 100
diff --git "a/assets/hand-notes_Sass_sass\345\260\217\346\212\200\345\267\247.md.cd72a367.lean.js" "b/assets/hand-notes_Sass_sass\345\260\217\346\212\200\345\267\247.md.916954ca.lean.js"
similarity index 95%
rename from "assets/hand-notes_Sass_sass\345\260\217\346\212\200\345\267\247.md.cd72a367.lean.js"
rename to "assets/hand-notes_Sass_sass\345\260\217\346\212\200\345\267\247.md.916954ca.lean.js"
index c4cdde3c..691dc820 100644
--- "a/assets/hand-notes_Sass_sass\345\260\217\346\212\200\345\267\247.md.cd72a367.lean.js"
+++ "b/assets/hand-notes_Sass_sass\345\260\217\346\212\200\345\267\247.md.916954ca.lean.js"
@@ -1 +1 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const A=JSON.parse('{"title":"sass小技巧","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"在sass中debug","slug":"在sass中debug","link":"#在sass中debug","children":[]},{"level":2,"title":"scss中的数学函数","slug":"scss中的数学函数","link":"#scss中的数学函数","children":[{"level":3,"title":"math.random","slug":"math-random","link":"#math-random","children":[]},{"level":3,"title":"math.floor($number)","slug":"math-floor-number","link":"#math-floor-number","children":[]}]},{"level":2,"title":"sass中的字符串函数","slug":"sass中的字符串函数","link":"#sass中的字符串函数","children":[{"level":3,"title":"string.unquote($str)","slug":"string-unquote-str","link":"#string-unquote-str","children":[]}]},{"level":2,"title":"sass中Map对象操作","slug":"sass中map对象操作","link":"#sass中map对象操作","children":[{"level":3,"title":"get($map, $key)","slug":"get-map-key","link":"#get-map-key","children":[]}]},{"level":2,"title":"sass中列表操作","slug":"sass中列表操作","link":"#sass中列表操作","children":[{"level":3,"title":"nth($list, $n)","slug":"nth-list-n","link":"#nth-list-n","children":[]}]}],"relativePath":"hand-notes/Sass/sass小技巧.md"}'),p={name:"hand-notes/Sass/sass小技巧.md"},o=l("",29),e=[o];function t(c,r,D,i,y,F){return n(),a("div",null,e)}const d=s(p,[["render",t]]);export{A as __pageData,d as default};
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const A=JSON.parse('{"title":"sass小技巧","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"在sass中debug","slug":"在sass中debug","link":"#在sass中debug","children":[]},{"level":2,"title":"scss中的数学函数","slug":"scss中的数学函数","link":"#scss中的数学函数","children":[{"level":3,"title":"math.random","slug":"math-random","link":"#math-random","children":[]},{"level":3,"title":"math.floor($number)","slug":"math-floor-number","link":"#math-floor-number","children":[]}]},{"level":2,"title":"sass中的字符串函数","slug":"sass中的字符串函数","link":"#sass中的字符串函数","children":[{"level":3,"title":"string.unquote($str)","slug":"string-unquote-str","link":"#string-unquote-str","children":[]}]},{"level":2,"title":"sass中Map对象操作","slug":"sass中map对象操作","link":"#sass中map对象操作","children":[{"level":3,"title":"get($map, $key)","slug":"get-map-key","link":"#get-map-key","children":[]}]},{"level":2,"title":"sass中列表操作","slug":"sass中列表操作","link":"#sass中列表操作","children":[{"level":3,"title":"nth($list, $n)","slug":"nth-list-n","link":"#nth-list-n","children":[]}]}],"relativePath":"hand-notes/Sass/sass小技巧.md"}'),p={name:"hand-notes/Sass/sass小技巧.md"},o=l("",29),e=[o];function t(c,r,D,i,y,F){return n(),a("div",null,e)}const d=s(p,[["render",t]]);export{A as __pageData,d as default};
diff --git "a/assets/hand-notes_Sass_\345\260\217\347\220\203\344\272\244\344\272\222loading.md.d6e6ea0d.js" "b/assets/hand-notes_Sass_\345\260\217\347\220\203\344\272\244\344\272\222loading.md.06b019ea.js"
similarity index 99%
rename from "assets/hand-notes_Sass_\345\260\217\347\220\203\344\272\244\344\272\222loading.md.d6e6ea0d.js"
rename to "assets/hand-notes_Sass_\345\260\217\347\220\203\344\272\244\344\272\222loading.md.06b019ea.js"
index 7de3a5e9..2a8ceca2 100644
--- "a/assets/hand-notes_Sass_\345\260\217\347\220\203\344\272\244\344\272\222loading.md.d6e6ea0d.js"
+++ "b/assets/hand-notes_Sass_\345\260\217\347\220\203\344\272\244\344\272\222loading.md.06b019ea.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"小球交互loading","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"代码实现","slug":"代码实现","link":"#代码实现","children":[]},{"level":2,"title":"预览和源码","slug":"预览和源码","link":"#预览和源码","children":[]}],"relativePath":"hand-notes/Sass/小球交互loading.md"}'),p={name:"hand-notes/Sass/小球交互loading.md"},o=l(`

小球交互loading

代码实现

scss代码

scss
@use "sass:math";
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"小球交互loading","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"代码实现","slug":"代码实现","link":"#代码实现","children":[]},{"level":2,"title":"预览和源码","slug":"预览和源码","link":"#预览和源码","children":[]}],"relativePath":"hand-notes/Sass/小球交互loading.md"}'),p={name:"hand-notes/Sass/小球交互loading.md"},o=l(`

小球交互loading

代码实现

scss代码

scss
@use "sass:math";
 .root {
   width: 100vw;
   height: 100vh;
diff --git "a/assets/hand-notes_Sass_\345\260\217\347\220\203\344\272\244\344\272\222loading.md.d6e6ea0d.lean.js" "b/assets/hand-notes_Sass_\345\260\217\347\220\203\344\272\244\344\272\222loading.md.06b019ea.lean.js"
similarity index 89%
rename from "assets/hand-notes_Sass_\345\260\217\347\220\203\344\272\244\344\272\222loading.md.d6e6ea0d.lean.js"
rename to "assets/hand-notes_Sass_\345\260\217\347\220\203\344\272\244\344\272\222loading.md.06b019ea.lean.js"
index 5d1799bb..e537cbd9 100644
--- "a/assets/hand-notes_Sass_\345\260\217\347\220\203\344\272\244\344\272\222loading.md.d6e6ea0d.lean.js"
+++ "b/assets/hand-notes_Sass_\345\260\217\347\220\203\344\272\244\344\272\222loading.md.06b019ea.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"小球交互loading","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"代码实现","slug":"代码实现","link":"#代码实现","children":[]},{"level":2,"title":"预览和源码","slug":"预览和源码","link":"#预览和源码","children":[]}],"relativePath":"hand-notes/Sass/小球交互loading.md"}'),p={name:"hand-notes/Sass/小球交互loading.md"},o=l("",8),t=[o];function e(D,c,F,r,y,C){return a(),n("div",null,t)}const d=s(p,[["render",e]]);export{i as __pageData,d as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"小球交互loading","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"代码实现","slug":"代码实现","link":"#代码实现","children":[]},{"level":2,"title":"预览和源码","slug":"预览和源码","link":"#预览和源码","children":[]}],"relativePath":"hand-notes/Sass/小球交互loading.md"}'),p={name:"hand-notes/Sass/小球交互loading.md"},o=l("",8),t=[o];function e(D,c,F,r,y,C){return a(),n("div",null,t)}const d=s(p,[["render",e]]);export{i as __pageData,d as default};
diff --git "a/assets/hand-notes_Sass_\351\200\232\350\277\207mixin\347\256\200\345\214\226\345\223\215\345\272\224\345\274\217\344\273\243\347\240\201.md.60a1edb2.js" "b/assets/hand-notes_Sass_\351\200\232\350\277\207mixin\347\256\200\345\214\226\345\223\215\345\272\224\345\274\217\344\273\243\347\240\201.md.bec98a0d.js"
similarity index 99%
rename from "assets/hand-notes_Sass_\351\200\232\350\277\207mixin\347\256\200\345\214\226\345\223\215\345\272\224\345\274\217\344\273\243\347\240\201.md.60a1edb2.js"
rename to "assets/hand-notes_Sass_\351\200\232\350\277\207mixin\347\256\200\345\214\226\345\223\215\345\272\224\345\274\217\344\273\243\347\240\201.md.bec98a0d.js"
index cc8ffb0d..14e6f087 100644
--- "a/assets/hand-notes_Sass_\351\200\232\350\277\207mixin\347\256\200\345\214\226\345\223\215\345\272\224\345\274\217\344\273\243\347\240\201.md.60a1edb2.js"
+++ "b/assets/hand-notes_Sass_\351\200\232\350\277\207mixin\347\256\200\345\214\226\345\223\215\345\272\224\345\274\217\344\273\243\347\240\201.md.bec98a0d.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"通过mixin简化响应式代码","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"代码展示","slug":"代码展示","link":"#代码展示","children":[]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[{"level":3,"title":"查看代码","slug":"查看代码","link":"#查看代码","children":[]},{"level":3,"title":"效果预览","slug":"效果预览","link":"#效果预览","children":[]}]}],"relativePath":"hand-notes/Sass/通过mixin简化响应式代码.md"}'),p={name:"hand-notes/Sass/通过mixin简化响应式代码.md"},o=l(`

通过mixin简化响应式代码

代码展示

有的响应式代码可能需要写一些适配代码,例如

css
.home {
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"通过mixin简化响应式代码","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"代码展示","slug":"代码展示","link":"#代码展示","children":[]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[{"level":3,"title":"查看代码","slug":"查看代码","link":"#查看代码","children":[]},{"level":3,"title":"效果预览","slug":"效果预览","link":"#效果预览","children":[]}]}],"relativePath":"hand-notes/Sass/通过mixin简化响应式代码.md"}'),p={name:"hand-notes/Sass/通过mixin简化响应式代码.md"},o=l(`

通过mixin简化响应式代码

代码展示

有的响应式代码可能需要写一些适配代码,例如

css
.home {
   width: 200px;
   height: 300px;
 }
diff --git "a/assets/hand-notes_Sass_\351\200\232\350\277\207mixin\347\256\200\345\214\226\345\223\215\345\272\224\345\274\217\344\273\243\347\240\201.md.60a1edb2.lean.js" "b/assets/hand-notes_Sass_\351\200\232\350\277\207mixin\347\256\200\345\214\226\345\223\215\345\272\224\345\274\217\344\273\243\347\240\201.md.bec98a0d.lean.js"
similarity index 92%
rename from "assets/hand-notes_Sass_\351\200\232\350\277\207mixin\347\256\200\345\214\226\345\223\215\345\272\224\345\274\217\344\273\243\347\240\201.md.60a1edb2.lean.js"
rename to "assets/hand-notes_Sass_\351\200\232\350\277\207mixin\347\256\200\345\214\226\345\223\215\345\272\224\345\274\217\344\273\243\347\240\201.md.bec98a0d.lean.js"
index 9adc1280..cc39ca90 100644
--- "a/assets/hand-notes_Sass_\351\200\232\350\277\207mixin\347\256\200\345\214\226\345\223\215\345\272\224\345\274\217\344\273\243\347\240\201.md.60a1edb2.lean.js"
+++ "b/assets/hand-notes_Sass_\351\200\232\350\277\207mixin\347\256\200\345\214\226\345\223\215\345\272\224\345\274\217\344\273\243\347\240\201.md.bec98a0d.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"通过mixin简化响应式代码","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"代码展示","slug":"代码展示","link":"#代码展示","children":[]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[{"level":3,"title":"查看代码","slug":"查看代码","link":"#查看代码","children":[]},{"level":3,"title":"效果预览","slug":"效果预览","link":"#效果预览","children":[]}]}],"relativePath":"hand-notes/Sass/通过mixin简化响应式代码.md"}'),p={name:"hand-notes/Sass/通过mixin简化响应式代码.md"},o=l("",23),e=[o];function t(c,D,r,F,y,C){return a(),n("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"通过mixin简化响应式代码","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"代码展示","slug":"代码展示","link":"#代码展示","children":[]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[{"level":3,"title":"查看代码","slug":"查看代码","link":"#查看代码","children":[]},{"level":3,"title":"效果预览","slug":"效果预览","link":"#效果预览","children":[]}]}],"relativePath":"hand-notes/Sass/通过mixin简化响应式代码.md"}'),p={name:"hand-notes/Sass/通过mixin简化响应式代码.md"},o=l("",23),e=[o];function t(c,D,r,F,y,C){return a(),n("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
diff --git a/assets/index.md.737c7db9.js b/assets/index.md.bec8f389.js
similarity index 89%
rename from assets/index.md.737c7db9.js
rename to assets/index.md.bec8f389.js
index 8c30fa5e..7543dca1 100644
--- a/assets/index.md.737c7db9.js
+++ b/assets/index.md.bec8f389.js
@@ -1 +1 @@
-import{_ as t,c as e,o as n}from"./app.fa87702c.js";const l=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"mx52jing的博客","text":"前端路上的点滴","tagline":"小知识汇聚成大海洋","actions":[{"theme":"brand","text":"进入正题吧","link":"/hand-notes/JavaScript/数字四舍五入"},{"theme":"alt","text":"View on GitHub","link":"https://github.com/mx52jing"}]}},"headers":[],"relativePath":"index.md"}'),a={name:"index.md"};function o(i,r,s,c,m,d){return n(),e("div")}const x=t(a,[["render",o]]);export{l as __pageData,x as default};
+import{_ as t,c as e,o as n}from"./app.2f6419f0.js";const l=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"mx52jing的博客","text":"前端路上的点滴","tagline":"小知识汇聚成大海洋","actions":[{"theme":"brand","text":"进入正题吧","link":"/hand-notes/JavaScript/数字四舍五入"},{"theme":"alt","text":"View on GitHub","link":"https://github.com/mx52jing"}]}},"headers":[],"relativePath":"index.md"}'),a={name:"index.md"};function o(i,r,s,c,m,d){return n(),e("div")}const x=t(a,[["render",o]]);export{l as __pageData,x as default};
diff --git a/assets/index.md.737c7db9.lean.js b/assets/index.md.bec8f389.lean.js
similarity index 89%
rename from assets/index.md.737c7db9.lean.js
rename to assets/index.md.bec8f389.lean.js
index 8c30fa5e..7543dca1 100644
--- a/assets/index.md.737c7db9.lean.js
+++ b/assets/index.md.bec8f389.lean.js
@@ -1 +1 @@
-import{_ as t,c as e,o as n}from"./app.fa87702c.js";const l=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"mx52jing的博客","text":"前端路上的点滴","tagline":"小知识汇聚成大海洋","actions":[{"theme":"brand","text":"进入正题吧","link":"/hand-notes/JavaScript/数字四舍五入"},{"theme":"alt","text":"View on GitHub","link":"https://github.com/mx52jing"}]}},"headers":[],"relativePath":"index.md"}'),a={name:"index.md"};function o(i,r,s,c,m,d){return n(),e("div")}const x=t(a,[["render",o]]);export{l as __pageData,x as default};
+import{_ as t,c as e,o as n}from"./app.2f6419f0.js";const l=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"mx52jing的博客","text":"前端路上的点滴","tagline":"小知识汇聚成大海洋","actions":[{"theme":"brand","text":"进入正题吧","link":"/hand-notes/JavaScript/数字四舍五入"},{"theme":"alt","text":"View on GitHub","link":"https://github.com/mx52jing"}]}},"headers":[],"relativePath":"index.md"}'),a={name:"index.md"};function o(i,r,s,c,m,d){return n(),e("div")}const x=t(a,[["render",o]]);export{l as __pageData,x as default};
diff --git a/assets/knowledge-deposition_Docker_Dockerfile.md.55bce5bc.js b/assets/knowledge-deposition_Docker_Dockerfile.md.f5db5b29.js
similarity index 99%
rename from assets/knowledge-deposition_Docker_Dockerfile.md.55bce5bc.js
rename to assets/knowledge-deposition_Docker_Dockerfile.md.f5db5b29.js
index 3e2a902e..41ae1250 100644
--- a/assets/knowledge-deposition_Docker_Dockerfile.md.55bce5bc.js
+++ b/assets/knowledge-deposition_Docker_Dockerfile.md.f5db5b29.js
@@ -1,4 +1,4 @@
-import{_ as s,c as l,o as e,e as a}from"./app.fa87702c.js";const u=JSON.parse('{"title":"Dockerfile","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"Dockerfile指令","slug":"dockerfile指令","link":"#dockerfile指令","children":[{"level":3,"title":"FROM","slug":"from","link":"#from","children":[]},{"level":3,"title":"RUN","slug":"run","link":"#run","children":[]},{"level":3,"title":"COPY","slug":"copy","link":"#copy","children":[]},{"level":3,"title":"ADD","slug":"add","link":"#add","children":[]},{"level":3,"title":"CMD","slug":"cmd","link":"#cmd","children":[]},{"level":3,"title":"ENTRYPOINT","slug":"entrypoint","link":"#entrypoint","children":[]},{"level":3,"title":"ENV","slug":"env","link":"#env","children":[]},{"level":3,"title":"EXPOSE","slug":"expose","link":"#expose","children":[]},{"level":3,"title":"WORKDIR","slug":"workdir","link":"#workdir","children":[]}]},{"level":2,"title":"build","slug":"build","link":"#build","children":[]}],"relativePath":"knowledge-deposition/Docker/Dockerfile.md"}'),o={name:"knowledge-deposition/Docker/Dockerfile.md"},n=a(`

Dockerfile

Dockerfile是一个文本文件,其内包含了一条条的指令(Instruction)每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。

Dockerfile指令

FROM

  • FROM指定基础镜像
shell
FROM basicImage
+import{_ as s,c as l,o as e,e as a}from"./app.2f6419f0.js";const u=JSON.parse('{"title":"Dockerfile","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"Dockerfile指令","slug":"dockerfile指令","link":"#dockerfile指令","children":[{"level":3,"title":"FROM","slug":"from","link":"#from","children":[]},{"level":3,"title":"RUN","slug":"run","link":"#run","children":[]},{"level":3,"title":"COPY","slug":"copy","link":"#copy","children":[]},{"level":3,"title":"ADD","slug":"add","link":"#add","children":[]},{"level":3,"title":"CMD","slug":"cmd","link":"#cmd","children":[]},{"level":3,"title":"ENTRYPOINT","slug":"entrypoint","link":"#entrypoint","children":[]},{"level":3,"title":"ENV","slug":"env","link":"#env","children":[]},{"level":3,"title":"EXPOSE","slug":"expose","link":"#expose","children":[]},{"level":3,"title":"WORKDIR","slug":"workdir","link":"#workdir","children":[]}]},{"level":2,"title":"build","slug":"build","link":"#build","children":[]}],"relativePath":"knowledge-deposition/Docker/Dockerfile.md"}'),o={name:"knowledge-deposition/Docker/Dockerfile.md"},n=a(`

Dockerfile

Dockerfile是一个文本文件,其内包含了一条条的指令(Instruction)每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。

Dockerfile指令

FROM

  • FROM指定基础镜像
shell
FROM basicImage
 
  • 定制镜像都要以一个镜像为基础,FROM作用就是指定基础镜像

  • Dockerfile中,FROM必须的,必须是第一条指令

特殊空白镜像

  • Docker存在一个特殊的scratch镜像。这个镜像是虚拟的概念,不实际存在,表示一个空白的镜像

  • scratch为基础镜像的,表示不以任何镜像为基础,所写的指令将作为镜像第一层开始存在。

RUN

  • RUN表示执行命令

两种格式:

  • shell格式: RUN <命令>\`,如下:
shell
RUN echo '<h1>hello</h1>' > /usr/share/nginx/html/index.html
 
  • exec格式:RUN ["可执行文件", "参数1", "参数2"]

WARNING

注意:不要用下面这种写法

FROM basicImage
 RUN operation1
diff --git a/assets/knowledge-deposition_Docker_Dockerfile.md.55bce5bc.lean.js b/assets/knowledge-deposition_Docker_Dockerfile.md.f5db5b29.lean.js
similarity index 94%
rename from assets/knowledge-deposition_Docker_Dockerfile.md.55bce5bc.lean.js
rename to assets/knowledge-deposition_Docker_Dockerfile.md.f5db5b29.lean.js
index 2739627c..f8f0247a 100644
--- a/assets/knowledge-deposition_Docker_Dockerfile.md.55bce5bc.lean.js
+++ b/assets/knowledge-deposition_Docker_Dockerfile.md.f5db5b29.lean.js
@@ -1 +1 @@
-import{_ as s,c as l,o as e,e as a}from"./app.fa87702c.js";const u=JSON.parse('{"title":"Dockerfile","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"Dockerfile指令","slug":"dockerfile指令","link":"#dockerfile指令","children":[{"level":3,"title":"FROM","slug":"from","link":"#from","children":[]},{"level":3,"title":"RUN","slug":"run","link":"#run","children":[]},{"level":3,"title":"COPY","slug":"copy","link":"#copy","children":[]},{"level":3,"title":"ADD","slug":"add","link":"#add","children":[]},{"level":3,"title":"CMD","slug":"cmd","link":"#cmd","children":[]},{"level":3,"title":"ENTRYPOINT","slug":"entrypoint","link":"#entrypoint","children":[]},{"level":3,"title":"ENV","slug":"env","link":"#env","children":[]},{"level":3,"title":"EXPOSE","slug":"expose","link":"#expose","children":[]},{"level":3,"title":"WORKDIR","slug":"workdir","link":"#workdir","children":[]}]},{"level":2,"title":"build","slug":"build","link":"#build","children":[]}],"relativePath":"knowledge-deposition/Docker/Dockerfile.md"}'),o={name:"knowledge-deposition/Docker/Dockerfile.md"},n=a("",73),p=[n];function c(t,d,i,r,C,D){return e(),l("div",null,p)}const A=s(o,[["render",c]]);export{u as __pageData,A as default};
+import{_ as s,c as l,o as e,e as a}from"./app.2f6419f0.js";const u=JSON.parse('{"title":"Dockerfile","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"Dockerfile指令","slug":"dockerfile指令","link":"#dockerfile指令","children":[{"level":3,"title":"FROM","slug":"from","link":"#from","children":[]},{"level":3,"title":"RUN","slug":"run","link":"#run","children":[]},{"level":3,"title":"COPY","slug":"copy","link":"#copy","children":[]},{"level":3,"title":"ADD","slug":"add","link":"#add","children":[]},{"level":3,"title":"CMD","slug":"cmd","link":"#cmd","children":[]},{"level":3,"title":"ENTRYPOINT","slug":"entrypoint","link":"#entrypoint","children":[]},{"level":3,"title":"ENV","slug":"env","link":"#env","children":[]},{"level":3,"title":"EXPOSE","slug":"expose","link":"#expose","children":[]},{"level":3,"title":"WORKDIR","slug":"workdir","link":"#workdir","children":[]}]},{"level":2,"title":"build","slug":"build","link":"#build","children":[]}],"relativePath":"knowledge-deposition/Docker/Dockerfile.md"}'),o={name:"knowledge-deposition/Docker/Dockerfile.md"},n=a("",73),p=[n];function c(t,d,i,r,C,D){return e(),l("div",null,p)}const A=s(o,[["render",c]]);export{u as __pageData,A as default};
diff --git "a/assets/knowledge-deposition_Docker_Docker\345\237\272\347\241\200\347\237\245\350\257\206.md.d2b13d56.js" "b/assets/knowledge-deposition_Docker_Docker\345\237\272\347\241\200\347\237\245\350\257\206.md.5ccd25a3.js"
similarity index 99%
rename from "assets/knowledge-deposition_Docker_Docker\345\237\272\347\241\200\347\237\245\350\257\206.md.d2b13d56.js"
rename to "assets/knowledge-deposition_Docker_Docker\345\237\272\347\241\200\347\237\245\350\257\206.md.5ccd25a3.js"
index 765aaf54..3977b3f4 100644
--- "a/assets/knowledge-deposition_Docker_Docker\345\237\272\347\241\200\347\237\245\350\257\206.md.d2b13d56.js"
+++ "b/assets/knowledge-deposition_Docker_Docker\345\237\272\347\241\200\347\237\245\350\257\206.md.5ccd25a3.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as l,e}from"./app.fa87702c.js";const n="/static-blog/image/docker/image_none.png",o="/static-blog/image/docker/image_middle.png",p="/static-blog/image/docker/dorit.png",u=JSON.parse('{"title":"Docker基础知识","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"基本概念","slug":"基本概念","link":"#基本概念","children":[{"level":3,"title":"Docker镜像(Image)","slug":"docker镜像-image","link":"#docker镜像-image","children":[]},{"level":3,"title":"Docker容器(Container)","slug":"docker容器-container","link":"#docker容器-container","children":[]},{"level":3,"title":"Docker仓库(Repository)","slug":"docker仓库-repository","link":"#docker仓库-repository","children":[]},{"level":3,"title":"安装","slug":"安装","link":"#安装","children":[]}]},{"level":2,"title":"查看docker占用磁盘空间信息","slug":"查看docker占用磁盘空间信息","link":"#查看docker占用磁盘空间信息","children":[]},{"level":2,"title":"镜像","slug":"镜像","link":"#镜像","children":[{"level":3,"title":"拉取镜像","slug":"拉取镜像","link":"#拉取镜像","children":[]},{"level":3,"title":"列出镜像","slug":"列出镜像","link":"#列出镜像","children":[]},{"level":3,"title":"虚悬镜像","slug":"虚悬镜像","link":"#虚悬镜像","children":[]},{"level":3,"title":"中间层镜像","slug":"中间层镜像","link":"#中间层镜像","children":[]},{"level":3,"title":"删除镜像","slug":"删除镜像","link":"#删除镜像","children":[]}]},{"level":2,"title":"容器","slug":"容器","link":"#容器","children":[{"level":3,"title":"启动容器","slug":"启动容器","link":"#启动容器","children":[]},{"level":3,"title":"查看运行中的容器:","slug":"查看运行中的容器","link":"#查看运行中的容器","children":[]},{"level":3,"title":"终止容器","slug":"终止容器","link":"#终止容器","children":[]},{"level":3,"title":"重启容器","slug":"重启容器","link":"#重启容器","children":[]},{"level":3,"title":"进入运行中的容器","slug":"进入运行中的容器","link":"#进入运行中的容器","children":[]},{"level":3,"title":"导出、导入容器","slug":"导出、导入容器","link":"#导出、导入容器","children":[]},{"level":3,"title":"删除容器","slug":"删除容器","link":"#删除容器","children":[]}]}],"relativePath":"knowledge-deposition/Docker/Docker基础知识.md"}'),c={name:"knowledge-deposition/Docker/Docker基础知识.md"},t=e(`

Docker基础知识

基本概念

Docker包括3个基本概念:

  • 镜像(Image)

  • 容器(Container)

  • 仓库(Repository)

Docker镜像(Image)

  • Docker镜像是一个特殊的文件系统,提供容器运行时所需的仓库、资源、配置等文件以及容器运行所需参数。

  • 镜像是分层的,每一层叫做一个镜像层,使用docker history [IMAGE ID]查看

  • 镜像是有依赖关系的,上层的镜像依赖下层的镜像,这样设计的好处是,镜像可以复用

  • 镜像是只读的,下层的镜像层不会被修改,只能新增镜像层,所以会越来越多

获取镜像的几种方式

  • 从仓库获取(docker pull)

  • 基于Dockerfile使用docker build命令构建

  • 文件载入docker load

Docker容器(Container)

容器的特点:

  • 容器是基于镜像来运行的,docker run命令使用image启动了一个运行中的系统,就是container(容器)

  • 容器是可读写的

  • 在容器里面进行的操作不会影响image,删除文件也只是在容器里面标记为已删除

  • 容器删除,则保存在容器中的数据也会被删除,容器停止,数据不会被删除

  • 容器只有被保存成镜像才能被移植到其他地方

Docker仓库(Repository)

  • Docker的仓库和git仓库差不多,拥有tag仓库名,在本地构建完镜像以后,就可以通过仓库分发

  • 官方仓库

  • 阿里云

安装

  • 进入官网安装系统对应的客户端

如果需要配置镜像源,可以在客户端设置中配置,如下:

任务栏 => Perferences => Docker Engine 配置,设置完后点击Apply & restart按钮重启

执行docker info可以查看Registry Mirrors查询镜像源是否配置成功

查看docker占用磁盘空间信息

  • 查看镜像、容器、数据卷所占用空间
shell
docker system df
+import{_ as s,c as a,o as l,e}from"./app.2f6419f0.js";const n="/static-blog/image/docker/image_none.png",o="/static-blog/image/docker/image_middle.png",p="/static-blog/image/docker/dorit.png",u=JSON.parse('{"title":"Docker基础知识","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"基本概念","slug":"基本概念","link":"#基本概念","children":[{"level":3,"title":"Docker镜像(Image)","slug":"docker镜像-image","link":"#docker镜像-image","children":[]},{"level":3,"title":"Docker容器(Container)","slug":"docker容器-container","link":"#docker容器-container","children":[]},{"level":3,"title":"Docker仓库(Repository)","slug":"docker仓库-repository","link":"#docker仓库-repository","children":[]},{"level":3,"title":"安装","slug":"安装","link":"#安装","children":[]}]},{"level":2,"title":"查看docker占用磁盘空间信息","slug":"查看docker占用磁盘空间信息","link":"#查看docker占用磁盘空间信息","children":[]},{"level":2,"title":"镜像","slug":"镜像","link":"#镜像","children":[{"level":3,"title":"拉取镜像","slug":"拉取镜像","link":"#拉取镜像","children":[]},{"level":3,"title":"列出镜像","slug":"列出镜像","link":"#列出镜像","children":[]},{"level":3,"title":"虚悬镜像","slug":"虚悬镜像","link":"#虚悬镜像","children":[]},{"level":3,"title":"中间层镜像","slug":"中间层镜像","link":"#中间层镜像","children":[]},{"level":3,"title":"删除镜像","slug":"删除镜像","link":"#删除镜像","children":[]}]},{"level":2,"title":"容器","slug":"容器","link":"#容器","children":[{"level":3,"title":"启动容器","slug":"启动容器","link":"#启动容器","children":[]},{"level":3,"title":"查看运行中的容器:","slug":"查看运行中的容器","link":"#查看运行中的容器","children":[]},{"level":3,"title":"终止容器","slug":"终止容器","link":"#终止容器","children":[]},{"level":3,"title":"重启容器","slug":"重启容器","link":"#重启容器","children":[]},{"level":3,"title":"进入运行中的容器","slug":"进入运行中的容器","link":"#进入运行中的容器","children":[]},{"level":3,"title":"导出、导入容器","slug":"导出、导入容器","link":"#导出、导入容器","children":[]},{"level":3,"title":"删除容器","slug":"删除容器","link":"#删除容器","children":[]}]}],"relativePath":"knowledge-deposition/Docker/Docker基础知识.md"}'),c={name:"knowledge-deposition/Docker/Docker基础知识.md"},t=e(`

Docker基础知识

基本概念

Docker包括3个基本概念:

  • 镜像(Image)

  • 容器(Container)

  • 仓库(Repository)

Docker镜像(Image)

  • Docker镜像是一个特殊的文件系统,提供容器运行时所需的仓库、资源、配置等文件以及容器运行所需参数。

  • 镜像是分层的,每一层叫做一个镜像层,使用docker history [IMAGE ID]查看

  • 镜像是有依赖关系的,上层的镜像依赖下层的镜像,这样设计的好处是,镜像可以复用

  • 镜像是只读的,下层的镜像层不会被修改,只能新增镜像层,所以会越来越多

获取镜像的几种方式

  • 从仓库获取(docker pull)

  • 基于Dockerfile使用docker build命令构建

  • 文件载入docker load

Docker容器(Container)

容器的特点:

  • 容器是基于镜像来运行的,docker run命令使用image启动了一个运行中的系统,就是container(容器)

  • 容器是可读写的

  • 在容器里面进行的操作不会影响image,删除文件也只是在容器里面标记为已删除

  • 容器删除,则保存在容器中的数据也会被删除,容器停止,数据不会被删除

  • 容器只有被保存成镜像才能被移植到其他地方

Docker仓库(Repository)

  • Docker的仓库和git仓库差不多,拥有tag仓库名,在本地构建完镜像以后,就可以通过仓库分发

  • 官方仓库

  • 阿里云

安装

  • 进入官网安装系统对应的客户端

如果需要配置镜像源,可以在客户端设置中配置,如下:

任务栏 => Perferences => Docker Engine 配置,设置完后点击Apply & restart按钮重启

执行docker info可以查看Registry Mirrors查询镜像源是否配置成功

查看docker占用磁盘空间信息

  • 查看镜像、容器、数据卷所占用空间
shell
docker system df
 

如下所示:

shell
TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
 Images          2         2         565.8MB   0B (0%)
 Containers      3         3         14B       0B (0%)
diff --git "a/assets/knowledge-deposition_Docker_Docker\345\237\272\347\241\200\347\237\245\350\257\206.md.d2b13d56.lean.js" "b/assets/knowledge-deposition_Docker_Docker\345\237\272\347\241\200\347\237\245\350\257\206.md.5ccd25a3.lean.js"
similarity index 97%
rename from "assets/knowledge-deposition_Docker_Docker\345\237\272\347\241\200\347\237\245\350\257\206.md.d2b13d56.lean.js"
rename to "assets/knowledge-deposition_Docker_Docker\345\237\272\347\241\200\347\237\245\350\257\206.md.5ccd25a3.lean.js"
index 77d3ab24..e0487428 100644
--- "a/assets/knowledge-deposition_Docker_Docker\345\237\272\347\241\200\347\237\245\350\257\206.md.d2b13d56.lean.js"
+++ "b/assets/knowledge-deposition_Docker_Docker\345\237\272\347\241\200\347\237\245\350\257\206.md.5ccd25a3.lean.js"
@@ -1 +1 @@
-import{_ as s,c as a,o as l,e}from"./app.fa87702c.js";const n="/static-blog/image/docker/image_none.png",o="/static-blog/image/docker/image_middle.png",p="/static-blog/image/docker/dorit.png",u=JSON.parse('{"title":"Docker基础知识","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"基本概念","slug":"基本概念","link":"#基本概念","children":[{"level":3,"title":"Docker镜像(Image)","slug":"docker镜像-image","link":"#docker镜像-image","children":[]},{"level":3,"title":"Docker容器(Container)","slug":"docker容器-container","link":"#docker容器-container","children":[]},{"level":3,"title":"Docker仓库(Repository)","slug":"docker仓库-repository","link":"#docker仓库-repository","children":[]},{"level":3,"title":"安装","slug":"安装","link":"#安装","children":[]}]},{"level":2,"title":"查看docker占用磁盘空间信息","slug":"查看docker占用磁盘空间信息","link":"#查看docker占用磁盘空间信息","children":[]},{"level":2,"title":"镜像","slug":"镜像","link":"#镜像","children":[{"level":3,"title":"拉取镜像","slug":"拉取镜像","link":"#拉取镜像","children":[]},{"level":3,"title":"列出镜像","slug":"列出镜像","link":"#列出镜像","children":[]},{"level":3,"title":"虚悬镜像","slug":"虚悬镜像","link":"#虚悬镜像","children":[]},{"level":3,"title":"中间层镜像","slug":"中间层镜像","link":"#中间层镜像","children":[]},{"level":3,"title":"删除镜像","slug":"删除镜像","link":"#删除镜像","children":[]}]},{"level":2,"title":"容器","slug":"容器","link":"#容器","children":[{"level":3,"title":"启动容器","slug":"启动容器","link":"#启动容器","children":[]},{"level":3,"title":"查看运行中的容器:","slug":"查看运行中的容器","link":"#查看运行中的容器","children":[]},{"level":3,"title":"终止容器","slug":"终止容器","link":"#终止容器","children":[]},{"level":3,"title":"重启容器","slug":"重启容器","link":"#重启容器","children":[]},{"level":3,"title":"进入运行中的容器","slug":"进入运行中的容器","link":"#进入运行中的容器","children":[]},{"level":3,"title":"导出、导入容器","slug":"导出、导入容器","link":"#导出、导入容器","children":[]},{"level":3,"title":"删除容器","slug":"删除容器","link":"#删除容器","children":[]}]}],"relativePath":"knowledge-deposition/Docker/Docker基础知识.md"}'),c={name:"knowledge-deposition/Docker/Docker基础知识.md"},t=e("",92),r=[t];function i(d,C,y,D,A,h){return l(),a("div",null,r)}const F=s(c,[["render",i]]);export{u as __pageData,F as default};
+import{_ as s,c as a,o as l,e}from"./app.2f6419f0.js";const n="/static-blog/image/docker/image_none.png",o="/static-blog/image/docker/image_middle.png",p="/static-blog/image/docker/dorit.png",u=JSON.parse('{"title":"Docker基础知识","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"基本概念","slug":"基本概念","link":"#基本概念","children":[{"level":3,"title":"Docker镜像(Image)","slug":"docker镜像-image","link":"#docker镜像-image","children":[]},{"level":3,"title":"Docker容器(Container)","slug":"docker容器-container","link":"#docker容器-container","children":[]},{"level":3,"title":"Docker仓库(Repository)","slug":"docker仓库-repository","link":"#docker仓库-repository","children":[]},{"level":3,"title":"安装","slug":"安装","link":"#安装","children":[]}]},{"level":2,"title":"查看docker占用磁盘空间信息","slug":"查看docker占用磁盘空间信息","link":"#查看docker占用磁盘空间信息","children":[]},{"level":2,"title":"镜像","slug":"镜像","link":"#镜像","children":[{"level":3,"title":"拉取镜像","slug":"拉取镜像","link":"#拉取镜像","children":[]},{"level":3,"title":"列出镜像","slug":"列出镜像","link":"#列出镜像","children":[]},{"level":3,"title":"虚悬镜像","slug":"虚悬镜像","link":"#虚悬镜像","children":[]},{"level":3,"title":"中间层镜像","slug":"中间层镜像","link":"#中间层镜像","children":[]},{"level":3,"title":"删除镜像","slug":"删除镜像","link":"#删除镜像","children":[]}]},{"level":2,"title":"容器","slug":"容器","link":"#容器","children":[{"level":3,"title":"启动容器","slug":"启动容器","link":"#启动容器","children":[]},{"level":3,"title":"查看运行中的容器:","slug":"查看运行中的容器","link":"#查看运行中的容器","children":[]},{"level":3,"title":"终止容器","slug":"终止容器","link":"#终止容器","children":[]},{"level":3,"title":"重启容器","slug":"重启容器","link":"#重启容器","children":[]},{"level":3,"title":"进入运行中的容器","slug":"进入运行中的容器","link":"#进入运行中的容器","children":[]},{"level":3,"title":"导出、导入容器","slug":"导出、导入容器","link":"#导出、导入容器","children":[]},{"level":3,"title":"删除容器","slug":"删除容器","link":"#删除容器","children":[]}]}],"relativePath":"knowledge-deposition/Docker/Docker基础知识.md"}'),c={name:"knowledge-deposition/Docker/Docker基础知识.md"},t=e("",92),r=[t];function i(d,C,y,D,A,h){return l(),a("div",null,r)}const F=s(c,[["render",i]]);export{u as __pageData,F as default};
diff --git "a/assets/knowledge-deposition_GoLang_Crawler_HTTP\350\257\267\346\261\202\346\226\271\346\263\225.md.193ce00d.js" "b/assets/knowledge-deposition_GoLang_Crawler_HTTP\350\257\267\346\261\202\346\226\271\346\263\225.md.0bcdf6f7.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_Crawler_HTTP\350\257\267\346\261\202\346\226\271\346\263\225.md.193ce00d.js"
rename to "assets/knowledge-deposition_GoLang_Crawler_HTTP\350\257\267\346\261\202\346\226\271\346\263\225.md.0bcdf6f7.js"
index 1f09b164..b788d1a1 100644
--- "a/assets/knowledge-deposition_GoLang_Crawler_HTTP\350\257\267\346\261\202\346\226\271\346\263\225.md.193ce00d.js"
+++ "b/assets/knowledge-deposition_GoLang_Crawler_HTTP\350\257\267\346\261\202\346\226\271\346\263\225.md.0bcdf6f7.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"HTTP请求方法","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"GET","slug":"get","link":"#get","children":[{"level":3,"title":"不带参数的get请求","slug":"不带参数的get请求","link":"#不带参数的get请求","children":[]},{"level":3,"title":"带query查询参数","slug":"带query查询参数","link":"#带query查询参数","children":[]}]},{"level":2,"title":"HEAD","slug":"head","link":"#head","children":[]},{"level":2,"title":"POST","slug":"post","link":"#post","children":[{"level":3,"title":"不带请求body的POST","slug":"不带请求body的post","link":"#不带请求body的post","children":[]},{"level":3,"title":"带请求body","slug":"带请求body","link":"#带请求body","children":[]},{"level":3,"title":"POST请求参数放到form中","slug":"post请求参数放到form中","link":"#post请求参数放到form中","children":[]}]},{"level":2,"title":"万能方法","slug":"万能方法","link":"#万能方法","children":[]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[{"level":3,"title":"以上代码用到的公共方法","slug":"以上代码用到的公共方法","link":"#以上代码用到的公共方法","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/Crawler/HTTP请求方法.md"}'),p={name:"knowledge-deposition/GoLang/Crawler/HTTP请求方法.md"},o=l(`

HTTP请求方法

GET

GET请求函数源码如下:

Go
func Get(url string) (resp *Response, err error) {
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"HTTP请求方法","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"GET","slug":"get","link":"#get","children":[{"level":3,"title":"不带参数的get请求","slug":"不带参数的get请求","link":"#不带参数的get请求","children":[]},{"level":3,"title":"带query查询参数","slug":"带query查询参数","link":"#带query查询参数","children":[]}]},{"level":2,"title":"HEAD","slug":"head","link":"#head","children":[]},{"level":2,"title":"POST","slug":"post","link":"#post","children":[{"level":3,"title":"不带请求body的POST","slug":"不带请求body的post","link":"#不带请求body的post","children":[]},{"level":3,"title":"带请求body","slug":"带请求body","link":"#带请求body","children":[]},{"level":3,"title":"POST请求参数放到form中","slug":"post请求参数放到form中","link":"#post请求参数放到form中","children":[]}]},{"level":2,"title":"万能方法","slug":"万能方法","link":"#万能方法","children":[]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[{"level":3,"title":"以上代码用到的公共方法","slug":"以上代码用到的公共方法","link":"#以上代码用到的公共方法","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/Crawler/HTTP请求方法.md"}'),p={name:"knowledge-deposition/GoLang/Crawler/HTTP请求方法.md"},o=l(`

HTTP请求方法

GET

GET请求函数源码如下:

Go
func Get(url string) (resp *Response, err error) {
 	return DefaultClient.Get(url)
 }
 

不带参数的get请求

例子:

Go
func getNoParams() {
diff --git "a/assets/knowledge-deposition_GoLang_Crawler_HTTP\350\257\267\346\261\202\346\226\271\346\263\225.md.193ce00d.lean.js" "b/assets/knowledge-deposition_GoLang_Crawler_HTTP\350\257\267\346\261\202\346\226\271\346\263\225.md.0bcdf6f7.lean.js"
similarity index 95%
rename from "assets/knowledge-deposition_GoLang_Crawler_HTTP\350\257\267\346\261\202\346\226\271\346\263\225.md.193ce00d.lean.js"
rename to "assets/knowledge-deposition_GoLang_Crawler_HTTP\350\257\267\346\261\202\346\226\271\346\263\225.md.0bcdf6f7.lean.js"
index 4036c8c7..0ecf76b6 100644
--- "a/assets/knowledge-deposition_GoLang_Crawler_HTTP\350\257\267\346\261\202\346\226\271\346\263\225.md.193ce00d.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_Crawler_HTTP\350\257\267\346\261\202\346\226\271\346\263\225.md.0bcdf6f7.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"HTTP请求方法","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"GET","slug":"get","link":"#get","children":[{"level":3,"title":"不带参数的get请求","slug":"不带参数的get请求","link":"#不带参数的get请求","children":[]},{"level":3,"title":"带query查询参数","slug":"带query查询参数","link":"#带query查询参数","children":[]}]},{"level":2,"title":"HEAD","slug":"head","link":"#head","children":[]},{"level":2,"title":"POST","slug":"post","link":"#post","children":[{"level":3,"title":"不带请求body的POST","slug":"不带请求body的post","link":"#不带请求body的post","children":[]},{"level":3,"title":"带请求body","slug":"带请求body","link":"#带请求body","children":[]},{"level":3,"title":"POST请求参数放到form中","slug":"post请求参数放到form中","link":"#post请求参数放到form中","children":[]}]},{"level":2,"title":"万能方法","slug":"万能方法","link":"#万能方法","children":[]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[{"level":3,"title":"以上代码用到的公共方法","slug":"以上代码用到的公共方法","link":"#以上代码用到的公共方法","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/Crawler/HTTP请求方法.md"}'),p={name:"knowledge-deposition/GoLang/Crawler/HTTP请求方法.md"},o=l("",35),e=[o];function t(D,r,c,F,y,A){return a(),n("div",null,e)}const u=s(p,[["render",t]]);export{i as __pageData,u as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"HTTP请求方法","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"GET","slug":"get","link":"#get","children":[{"level":3,"title":"不带参数的get请求","slug":"不带参数的get请求","link":"#不带参数的get请求","children":[]},{"level":3,"title":"带query查询参数","slug":"带query查询参数","link":"#带query查询参数","children":[]}]},{"level":2,"title":"HEAD","slug":"head","link":"#head","children":[]},{"level":2,"title":"POST","slug":"post","link":"#post","children":[{"level":3,"title":"不带请求body的POST","slug":"不带请求body的post","link":"#不带请求body的post","children":[]},{"level":3,"title":"带请求body","slug":"带请求body","link":"#带请求body","children":[]},{"level":3,"title":"POST请求参数放到form中","slug":"post请求参数放到form中","link":"#post请求参数放到form中","children":[]}]},{"level":2,"title":"万能方法","slug":"万能方法","link":"#万能方法","children":[]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[{"level":3,"title":"以上代码用到的公共方法","slug":"以上代码用到的公共方法","link":"#以上代码用到的公共方法","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/Crawler/HTTP请求方法.md"}'),p={name:"knowledge-deposition/GoLang/Crawler/HTTP请求方法.md"},o=l("",35),e=[o];function t(D,r,c,F,y,A){return a(),n("div",null,e)}const u=s(p,[["render",t]]);export{i as __pageData,u as default};
diff --git "a/assets/knowledge-deposition_GoLang_Gin_bind\347\273\221\345\256\232\345\231\250.md.7963bc3b.js" "b/assets/knowledge-deposition_GoLang_Gin_bind\347\273\221\345\256\232\345\231\250.md.551210fe.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_Gin_bind\347\273\221\345\256\232\345\231\250.md.7963bc3b.js"
rename to "assets/knowledge-deposition_GoLang_Gin_bind\347\273\221\345\256\232\345\231\250.md.551210fe.js"
index 6f80a243..db5d6bbd 100644
--- "a/assets/knowledge-deposition_GoLang_Gin_bind\347\273\221\345\256\232\345\231\250.md.7963bc3b.js"
+++ "b/assets/knowledge-deposition_GoLang_Gin_bind\347\273\221\345\256\232\345\231\250.md.551210fe.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const o="/static-blog/image/go/ShouldBindJSON.png",p="/static-blog/image/go/ShouldBindQuery.png",t="/static-blog/image/go/ShouldBindUri.png",e="/static-blog/image/go/ShouldBind.png",q=JSON.parse('{"title":"bind绑定器","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"绑定器API","slug":"绑定器api","link":"#绑定器api","children":[{"level":3,"title":"ShouldBindJSON","slug":"shouldbindjson","link":"#shouldbindjson","children":[]},{"level":3,"title":"ShouldBindQuery","slug":"shouldbindquery","link":"#shouldbindquery","children":[]},{"level":3,"title":"ShouldBindUri","slug":"shouldbinduri","link":"#shouldbinduri","children":[]},{"level":3,"title":"ShouldBind","slug":"shouldbind","link":"#shouldbind","children":[]}]},{"level":2,"title":"参数校验","slug":"参数校验","link":"#参数校验","children":[{"level":3,"title":"必填校验","slug":"必填校验","link":"#必填校验","children":[]},{"level":3,"title":"范围约束","slug":"范围约束","link":"#范围约束","children":[]},{"level":3,"title":"唯一性unique","slug":"唯一性unique","link":"#唯一性unique","children":[]},{"level":3,"title":"字符串约束","slug":"字符串约束","link":"#字符串约束","children":[]},{"level":3,"title":"约束其他字段","slug":"约束其他字段","link":"#约束其他字段","children":[]}]},{"level":2,"title":"自定义校验器","slug":"自定义校验器","link":"#自定义校验器","children":[]},{"level":2,"title":"自定义错误信息","slug":"自定义错误信息","link":"#自定义错误信息","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gin/bind绑定器.md"}'),c={name:"knowledge-deposition/GoLang/Gin/bind绑定器.md"},r=l(`

bind绑定器

  • gin中的绑定器bind可以很方便的将前端传递来的数据与结构体进行参数绑定,以及参数校验

  • 在使用这个功能的时候,需要给结构体加上Tag, 如:jsonformurixmlyaml

绑定器API

ShouldBindJSON

Go
type User struct {
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const o="/static-blog/image/go/ShouldBindJSON.png",p="/static-blog/image/go/ShouldBindQuery.png",t="/static-blog/image/go/ShouldBindUri.png",e="/static-blog/image/go/ShouldBind.png",q=JSON.parse('{"title":"bind绑定器","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"绑定器API","slug":"绑定器api","link":"#绑定器api","children":[{"level":3,"title":"ShouldBindJSON","slug":"shouldbindjson","link":"#shouldbindjson","children":[]},{"level":3,"title":"ShouldBindQuery","slug":"shouldbindquery","link":"#shouldbindquery","children":[]},{"level":3,"title":"ShouldBindUri","slug":"shouldbinduri","link":"#shouldbinduri","children":[]},{"level":3,"title":"ShouldBind","slug":"shouldbind","link":"#shouldbind","children":[]}]},{"level":2,"title":"参数校验","slug":"参数校验","link":"#参数校验","children":[{"level":3,"title":"必填校验","slug":"必填校验","link":"#必填校验","children":[]},{"level":3,"title":"范围约束","slug":"范围约束","link":"#范围约束","children":[]},{"level":3,"title":"唯一性unique","slug":"唯一性unique","link":"#唯一性unique","children":[]},{"level":3,"title":"字符串约束","slug":"字符串约束","link":"#字符串约束","children":[]},{"level":3,"title":"约束其他字段","slug":"约束其他字段","link":"#约束其他字段","children":[]}]},{"level":2,"title":"自定义校验器","slug":"自定义校验器","link":"#自定义校验器","children":[]},{"level":2,"title":"自定义错误信息","slug":"自定义错误信息","link":"#自定义错误信息","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gin/bind绑定器.md"}'),c={name:"knowledge-deposition/GoLang/Gin/bind绑定器.md"},r=l(`

bind绑定器

  • gin中的绑定器bind可以很方便的将前端传递来的数据与结构体进行参数绑定,以及参数校验

  • 在使用这个功能的时候,需要给结构体加上Tag, 如:jsonformurixmlyaml

绑定器API

ShouldBindJSON

Go
type User struct {
 	UserName string \`json:"user_name" form:"user_name" uri:"user_name"\`
 	Age int \`json:"age" form:"age" uri:"age"\`
 	Sex string \`json:"sex" form:"sex" uri:"sex"\`
diff --git "a/assets/knowledge-deposition_GoLang_Gin_bind\347\273\221\345\256\232\345\231\250.md.7963bc3b.lean.js" "b/assets/knowledge-deposition_GoLang_Gin_bind\347\273\221\345\256\232\345\231\250.md.551210fe.lean.js"
similarity index 96%
rename from "assets/knowledge-deposition_GoLang_Gin_bind\347\273\221\345\256\232\345\231\250.md.7963bc3b.lean.js"
rename to "assets/knowledge-deposition_GoLang_Gin_bind\347\273\221\345\256\232\345\231\250.md.551210fe.lean.js"
index ce39b20f..29c93ce5 100644
--- "a/assets/knowledge-deposition_GoLang_Gin_bind\347\273\221\345\256\232\345\231\250.md.7963bc3b.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_Gin_bind\347\273\221\345\256\232\345\231\250.md.551210fe.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const o="/static-blog/image/go/ShouldBindJSON.png",p="/static-blog/image/go/ShouldBindQuery.png",t="/static-blog/image/go/ShouldBindUri.png",e="/static-blog/image/go/ShouldBind.png",q=JSON.parse('{"title":"bind绑定器","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"绑定器API","slug":"绑定器api","link":"#绑定器api","children":[{"level":3,"title":"ShouldBindJSON","slug":"shouldbindjson","link":"#shouldbindjson","children":[]},{"level":3,"title":"ShouldBindQuery","slug":"shouldbindquery","link":"#shouldbindquery","children":[]},{"level":3,"title":"ShouldBindUri","slug":"shouldbinduri","link":"#shouldbinduri","children":[]},{"level":3,"title":"ShouldBind","slug":"shouldbind","link":"#shouldbind","children":[]}]},{"level":2,"title":"参数校验","slug":"参数校验","link":"#参数校验","children":[{"level":3,"title":"必填校验","slug":"必填校验","link":"#必填校验","children":[]},{"level":3,"title":"范围约束","slug":"范围约束","link":"#范围约束","children":[]},{"level":3,"title":"唯一性unique","slug":"唯一性unique","link":"#唯一性unique","children":[]},{"level":3,"title":"字符串约束","slug":"字符串约束","link":"#字符串约束","children":[]},{"level":3,"title":"约束其他字段","slug":"约束其他字段","link":"#约束其他字段","children":[]}]},{"level":2,"title":"自定义校验器","slug":"自定义校验器","link":"#自定义校验器","children":[]},{"level":2,"title":"自定义错误信息","slug":"自定义错误信息","link":"#自定义错误信息","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gin/bind绑定器.md"}'),c={name:"knowledge-deposition/GoLang/Gin/bind绑定器.md"},r=l("",54),D=[r];function y(F,A,C,i,u,d){return a(),n("div",null,D)}const m=s(c,[["render",y]]);export{q as __pageData,m as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const o="/static-blog/image/go/ShouldBindJSON.png",p="/static-blog/image/go/ShouldBindQuery.png",t="/static-blog/image/go/ShouldBindUri.png",e="/static-blog/image/go/ShouldBind.png",q=JSON.parse('{"title":"bind绑定器","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"绑定器API","slug":"绑定器api","link":"#绑定器api","children":[{"level":3,"title":"ShouldBindJSON","slug":"shouldbindjson","link":"#shouldbindjson","children":[]},{"level":3,"title":"ShouldBindQuery","slug":"shouldbindquery","link":"#shouldbindquery","children":[]},{"level":3,"title":"ShouldBindUri","slug":"shouldbinduri","link":"#shouldbinduri","children":[]},{"level":3,"title":"ShouldBind","slug":"shouldbind","link":"#shouldbind","children":[]}]},{"level":2,"title":"参数校验","slug":"参数校验","link":"#参数校验","children":[{"level":3,"title":"必填校验","slug":"必填校验","link":"#必填校验","children":[]},{"level":3,"title":"范围约束","slug":"范围约束","link":"#范围约束","children":[]},{"level":3,"title":"唯一性unique","slug":"唯一性unique","link":"#唯一性unique","children":[]},{"level":3,"title":"字符串约束","slug":"字符串约束","link":"#字符串约束","children":[]},{"level":3,"title":"约束其他字段","slug":"约束其他字段","link":"#约束其他字段","children":[]}]},{"level":2,"title":"自定义校验器","slug":"自定义校验器","link":"#自定义校验器","children":[]},{"level":2,"title":"自定义错误信息","slug":"自定义错误信息","link":"#自定义错误信息","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gin/bind绑定器.md"}'),c={name:"knowledge-deposition/GoLang/Gin/bind绑定器.md"},r=l("",54),D=[r];function y(F,A,C,i,u,d){return a(),n("div",null,D)}const m=s(c,[["render",y]]);export{q as __pageData,m as default};
diff --git a/assets/knowledge-deposition_GoLang_Gin_hello-world.md.cd43f77f.js b/assets/knowledge-deposition_GoLang_Gin_hello-world.md.f9d5c871.js
similarity index 99%
rename from assets/knowledge-deposition_GoLang_Gin_hello-world.md.cd43f77f.js
rename to assets/knowledge-deposition_GoLang_Gin_hello-world.md.f9d5c871.js
index cfe7d775..e867781d 100644
--- a/assets/knowledge-deposition_GoLang_Gin_hello-world.md.cd43f77f.js
+++ b/assets/knowledge-deposition_GoLang_Gin_hello-world.md.f9d5c871.js
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const A=JSON.parse('{"title":"hello-world","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"项目初始化并启动","slug":"项目初始化并启动","link":"#项目初始化并启动","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gin/hello-world.md"}'),o={name:"knowledge-deposition/GoLang/Gin/hello-world.md"},p=l(`

hello-world

项目初始化并启动

  • 初始化
shell
go mod init projectname
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const A=JSON.parse('{"title":"hello-world","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"项目初始化并启动","slug":"项目初始化并启动","link":"#项目初始化并启动","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gin/hello-world.md"}'),o={name:"knowledge-deposition/GoLang/Gin/hello-world.md"},p=l(`

hello-world

项目初始化并启动

  • 初始化
shell
go mod init projectname
 
 go mod init github.com/username/projectname
 
  • 下载gin
shell
go get -u github.com/gin-gonic/gin
diff --git a/assets/knowledge-deposition_GoLang_Gin_hello-world.md.cd43f77f.lean.js b/assets/knowledge-deposition_GoLang_Gin_hello-world.md.f9d5c871.lean.js
similarity index 88%
rename from assets/knowledge-deposition_GoLang_Gin_hello-world.md.cd43f77f.lean.js
rename to assets/knowledge-deposition_GoLang_Gin_hello-world.md.f9d5c871.lean.js
index 856e7080..86a17b81 100644
--- a/assets/knowledge-deposition_GoLang_Gin_hello-world.md.cd43f77f.lean.js
+++ b/assets/knowledge-deposition_GoLang_Gin_hello-world.md.f9d5c871.lean.js
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const A=JSON.parse('{"title":"hello-world","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"项目初始化并启动","slug":"项目初始化并启动","link":"#项目初始化并启动","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gin/hello-world.md"}'),o={name:"knowledge-deposition/GoLang/Gin/hello-world.md"},p=l("",10),e=[p];function t(c,r,D,i,y,F){return a(),n("div",null,e)}const d=s(o,[["render",t]]);export{A as __pageData,d as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const A=JSON.parse('{"title":"hello-world","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"项目初始化并启动","slug":"项目初始化并启动","link":"#项目初始化并启动","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gin/hello-world.md"}'),o={name:"knowledge-deposition/GoLang/Gin/hello-world.md"},p=l("",10),e=[p];function t(c,r,D,i,y,F){return a(),n("div",null,e)}const d=s(o,[["render",t]]);export{A as __pageData,d as default};
diff --git "a/assets/knowledge-deposition_GoLang_Gin_\344\270\212\344\274\240\345\222\214\344\270\213\350\275\275\346\226\207\344\273\266.md.6e560366.js" "b/assets/knowledge-deposition_GoLang_Gin_\344\270\212\344\274\240\345\222\214\344\270\213\350\275\275\346\226\207\344\273\266.md.d1d54fbc.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_Gin_\344\270\212\344\274\240\345\222\214\344\270\213\350\275\275\346\226\207\344\273\266.md.6e560366.js"
rename to "assets/knowledge-deposition_GoLang_Gin_\344\270\212\344\274\240\345\222\214\344\270\213\350\275\275\346\226\207\344\273\266.md.d1d54fbc.js"
index a6d445c9..40b8d542 100644
--- "a/assets/knowledge-deposition_GoLang_Gin_\344\270\212\344\274\240\345\222\214\344\270\213\350\275\275\346\226\207\344\273\266.md.6e560366.js"
+++ "b/assets/knowledge-deposition_GoLang_Gin_\344\270\212\344\274\240\345\222\214\344\270\213\350\275\275\346\226\207\344\273\266.md.d1d54fbc.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"上传和下载文件","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"上传文件","slug":"上传文件","link":"#上传文件","children":[{"level":3,"title":"上传单个文件","slug":"上传单个文件","link":"#上传单个文件","children":[]},{"level":3,"title":"上传多个文件","slug":"上传多个文件","link":"#上传多个文件","children":[]}]},{"level":2,"title":"文件下载","slug":"文件下载","link":"#文件下载","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gin/上传和下载文件.md"}'),p={name:"knowledge-deposition/GoLang/Gin/上传和下载文件.md"},o=l(`

上传和下载文件

上传文件

  • 服务端使用ctx.SaveUploadedFile保存文件到服务器
Go
// 通过name获取form file
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"上传和下载文件","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"上传文件","slug":"上传文件","link":"#上传文件","children":[{"level":3,"title":"上传单个文件","slug":"上传单个文件","link":"#上传单个文件","children":[]},{"level":3,"title":"上传多个文件","slug":"上传多个文件","link":"#上传多个文件","children":[]}]},{"level":2,"title":"文件下载","slug":"文件下载","link":"#文件下载","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gin/上传和下载文件.md"}'),p={name:"knowledge-deposition/GoLang/Gin/上传和下载文件.md"},o=l(`

上传和下载文件

上传文件

  • 服务端使用ctx.SaveUploadedFile保存文件到服务器
Go
// 通过name获取form file
 func (c *Context) FormFile(name string) (*multipart.FileHeader, error)
 // 获取上传的整个form
 func (c *Context) MultipartForm() (*multipart.Form, error)
diff --git "a/assets/knowledge-deposition_GoLang_Gin_\344\270\212\344\274\240\345\222\214\344\270\213\350\275\275\346\226\207\344\273\266.md.6e560366.lean.js" "b/assets/knowledge-deposition_GoLang_Gin_\344\270\212\344\274\240\345\222\214\344\270\213\350\275\275\346\226\207\344\273\266.md.d1d54fbc.lean.js"
similarity index 92%
rename from "assets/knowledge-deposition_GoLang_Gin_\344\270\212\344\274\240\345\222\214\344\270\213\350\275\275\346\226\207\344\273\266.md.6e560366.lean.js"
rename to "assets/knowledge-deposition_GoLang_Gin_\344\270\212\344\274\240\345\222\214\344\270\213\350\275\275\346\226\207\344\273\266.md.d1d54fbc.lean.js"
index ee1b66da..85b3e2e4 100644
--- "a/assets/knowledge-deposition_GoLang_Gin_\344\270\212\344\274\240\345\222\214\344\270\213\350\275\275\346\226\207\344\273\266.md.6e560366.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_Gin_\344\270\212\344\274\240\345\222\214\344\270\213\350\275\275\346\226\207\344\273\266.md.d1d54fbc.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"上传和下载文件","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"上传文件","slug":"上传文件","link":"#上传文件","children":[{"level":3,"title":"上传单个文件","slug":"上传单个文件","link":"#上传单个文件","children":[]},{"level":3,"title":"上传多个文件","slug":"上传多个文件","link":"#上传多个文件","children":[]}]},{"level":2,"title":"文件下载","slug":"文件下载","link":"#文件下载","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gin/上传和下载文件.md"}'),p={name:"knowledge-deposition/GoLang/Gin/上传和下载文件.md"},o=l("",25),t=[o];function e(c,D,F,r,y,A){return a(),n("div",null,t)}const u=s(p,[["render",e]]);export{i as __pageData,u as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"上传和下载文件","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"上传文件","slug":"上传文件","link":"#上传文件","children":[{"level":3,"title":"上传单个文件","slug":"上传单个文件","link":"#上传单个文件","children":[]},{"level":3,"title":"上传多个文件","slug":"上传多个文件","link":"#上传多个文件","children":[]}]},{"level":2,"title":"文件下载","slug":"文件下载","link":"#文件下载","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gin/上传和下载文件.md"}'),p={name:"knowledge-deposition/GoLang/Gin/上传和下载文件.md"},o=l("",25),t=[o];function e(c,D,F,r,y,A){return a(),n("div",null,t)}const u=s(p,[["render",e]]);export{i as __pageData,u as default};
diff --git "a/assets/knowledge-deposition_GoLang_Gin_\344\270\255\351\227\264\344\273\266.md.8c88a93a.js" "b/assets/knowledge-deposition_GoLang_Gin_\344\270\255\351\227\264\344\273\266.md.d3de42d7.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_Gin_\344\270\255\351\227\264\344\273\266.md.8c88a93a.js"
rename to "assets/knowledge-deposition_GoLang_Gin_\344\270\255\351\227\264\344\273\266.md.d3de42d7.js"
index abfefebf..e6443036 100644
--- "a/assets/knowledge-deposition_GoLang_Gin_\344\270\255\351\227\264\344\273\266.md.8c88a93a.js"
+++ "b/assets/knowledge-deposition_GoLang_Gin_\344\270\255\351\227\264\344\273\266.md.d3de42d7.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"中间件","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"单个路由中间件","slug":"单个路由中间件","link":"#单个路由中间件","children":[{"level":3,"title":"阻断中间件继续执行","slug":"阻断中间件继续执行","link":"#阻断中间件继续执行","children":[]}]},{"level":2,"title":"全局中间件","slug":"全局中间件","link":"#全局中间件","children":[]},{"level":2,"title":"分组路由中间件","slug":"分组路由中间件","link":"#分组路由中间件","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gin/中间件.md"}'),p={name:"knowledge-deposition/GoLang/Gin/中间件.md"},o=l(`

中间件

  • gin中间件和Koa的中间件思想一致,都是洋葱模型

  • 使用ctx.Next方法表示调用下一个中间件

  • 使用ctx.Abort方法表示阻断当前中间件之后的其他中间件执行

单个路由中间件

Go
package main
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"中间件","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"单个路由中间件","slug":"单个路由中间件","link":"#单个路由中间件","children":[{"level":3,"title":"阻断中间件继续执行","slug":"阻断中间件继续执行","link":"#阻断中间件继续执行","children":[]}]},{"level":2,"title":"全局中间件","slug":"全局中间件","link":"#全局中间件","children":[]},{"level":2,"title":"分组路由中间件","slug":"分组路由中间件","link":"#分组路由中间件","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gin/中间件.md"}'),p={name:"knowledge-deposition/GoLang/Gin/中间件.md"},o=l(`

中间件

  • gin中间件和Koa的中间件思想一致,都是洋葱模型

  • 使用ctx.Next方法表示调用下一个中间件

  • 使用ctx.Abort方法表示阻断当前中间件之后的其他中间件执行

单个路由中间件

Go
package main
 
 import (
 	"fmt"
diff --git "a/assets/knowledge-deposition_GoLang_Gin_\344\270\255\351\227\264\344\273\266.md.8c88a93a.lean.js" "b/assets/knowledge-deposition_GoLang_Gin_\344\270\255\351\227\264\344\273\266.md.d3de42d7.lean.js"
similarity index 92%
rename from "assets/knowledge-deposition_GoLang_Gin_\344\270\255\351\227\264\344\273\266.md.8c88a93a.lean.js"
rename to "assets/knowledge-deposition_GoLang_Gin_\344\270\255\351\227\264\344\273\266.md.d3de42d7.lean.js"
index 684aa1c5..943dbe37 100644
--- "a/assets/knowledge-deposition_GoLang_Gin_\344\270\255\351\227\264\344\273\266.md.8c88a93a.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_Gin_\344\270\255\351\227\264\344\273\266.md.d3de42d7.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"中间件","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"单个路由中间件","slug":"单个路由中间件","link":"#单个路由中间件","children":[{"level":3,"title":"阻断中间件继续执行","slug":"阻断中间件继续执行","link":"#阻断中间件继续执行","children":[]}]},{"level":2,"title":"全局中间件","slug":"全局中间件","link":"#全局中间件","children":[]},{"level":2,"title":"分组路由中间件","slug":"分组路由中间件","link":"#分组路由中间件","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gin/中间件.md"}'),p={name:"knowledge-deposition/GoLang/Gin/中间件.md"},o=l("",22),e=[o];function t(c,D,r,F,y,A){return a(),n("div",null,e)}const u=s(p,[["render",t]]);export{i as __pageData,u as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"中间件","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"单个路由中间件","slug":"单个路由中间件","link":"#单个路由中间件","children":[{"level":3,"title":"阻断中间件继续执行","slug":"阻断中间件继续执行","link":"#阻断中间件继续执行","children":[]}]},{"level":2,"title":"全局中间件","slug":"全局中间件","link":"#全局中间件","children":[]},{"level":2,"title":"分组路由中间件","slug":"分组路由中间件","link":"#分组路由中间件","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gin/中间件.md"}'),p={name:"knowledge-deposition/GoLang/Gin/中间件.md"},o=l("",22),e=[o];function t(c,D,r,F,y,A){return a(),n("div",null,e)}const u=s(p,[["render",t]]);export{i as __pageData,u as default};
diff --git "a/assets/knowledge-deposition_GoLang_Gin_\345\223\215\345\272\224\346\225\260\346\215\256.md.ff126266.js" "b/assets/knowledge-deposition_GoLang_Gin_\345\223\215\345\272\224\346\225\260\346\215\256.md.56bc77b7.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_Gin_\345\223\215\345\272\224\346\225\260\346\215\256.md.ff126266.js"
rename to "assets/knowledge-deposition_GoLang_Gin_\345\223\215\345\272\224\346\225\260\346\215\256.md.56bc77b7.js"
index 38312fc3..6bd40818 100644
--- "a/assets/knowledge-deposition_GoLang_Gin_\345\223\215\345\272\224\346\225\260\346\215\256.md.ff126266.js"
+++ "b/assets/knowledge-deposition_GoLang_Gin_\345\223\215\345\272\224\346\225\260\346\215\256.md.56bc77b7.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"响应数据","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"响应字符串","slug":"响应字符串","link":"#响应字符串","children":[]},{"level":2,"title":"响应JSON","slug":"响应json","link":"#响应json","children":[{"level":3,"title":"使用结构体","slug":"使用结构体","link":"#使用结构体","children":[]},{"level":3,"title":"使用map","slug":"使用map","link":"#使用map","children":[]},{"level":3,"title":"直接响应JSON","slug":"直接响应json","link":"#直接响应json","children":[]}]},{"level":2,"title":"响应XML","slug":"响应xml","link":"#响应xml","children":[{"level":3,"title":"字符串返回","slug":"字符串返回","link":"#字符串返回","children":[]},{"level":3,"title":"结构体返回","slug":"结构体返回","link":"#结构体返回","children":[]},{"level":3,"title":"通过gin.H返回","slug":"通过gin-h返回","link":"#通过gin-h返回","children":[]}]},{"level":2,"title":"响应yaml","slug":"响应yaml","link":"#响应yaml","children":[{"level":3,"title":"结构体返回","slug":"结构体返回-1","link":"#结构体返回-1","children":[]},{"level":3,"title":"通过gin.H返回","slug":"通过gin-h返回-1","link":"#通过gin-h返回-1","children":[]}]},{"level":2,"title":"响应HTML","slug":"响应html","link":"#响应html","children":[]},{"level":2,"title":"响应文件","slug":"响应文件","link":"#响应文件","children":[{"level":3,"title":"Serving static files提供静态文件服务","slug":"serving-static-files提供静态文件服务","link":"#serving-static-files提供静态文件服务","children":[]},{"level":3,"title":"Serving data from file返回文件数据","slug":"serving-data-from-file返回文件数据","link":"#serving-data-from-file返回文件数据","children":[]}]},{"level":2,"title":"重定向","slug":"重定向","link":"#重定向","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gin/响应数据.md"}'),p={name:"knowledge-deposition/GoLang/Gin/响应数据.md"},o=l(`

响应数据

响应字符串

Go
func UserHandle(ctx *gin.Context) {
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"响应数据","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"响应字符串","slug":"响应字符串","link":"#响应字符串","children":[]},{"level":2,"title":"响应JSON","slug":"响应json","link":"#响应json","children":[{"level":3,"title":"使用结构体","slug":"使用结构体","link":"#使用结构体","children":[]},{"level":3,"title":"使用map","slug":"使用map","link":"#使用map","children":[]},{"level":3,"title":"直接响应JSON","slug":"直接响应json","link":"#直接响应json","children":[]}]},{"level":2,"title":"响应XML","slug":"响应xml","link":"#响应xml","children":[{"level":3,"title":"字符串返回","slug":"字符串返回","link":"#字符串返回","children":[]},{"level":3,"title":"结构体返回","slug":"结构体返回","link":"#结构体返回","children":[]},{"level":3,"title":"通过gin.H返回","slug":"通过gin-h返回","link":"#通过gin-h返回","children":[]}]},{"level":2,"title":"响应yaml","slug":"响应yaml","link":"#响应yaml","children":[{"level":3,"title":"结构体返回","slug":"结构体返回-1","link":"#结构体返回-1","children":[]},{"level":3,"title":"通过gin.H返回","slug":"通过gin-h返回-1","link":"#通过gin-h返回-1","children":[]}]},{"level":2,"title":"响应HTML","slug":"响应html","link":"#响应html","children":[]},{"level":2,"title":"响应文件","slug":"响应文件","link":"#响应文件","children":[{"level":3,"title":"Serving static files提供静态文件服务","slug":"serving-static-files提供静态文件服务","link":"#serving-static-files提供静态文件服务","children":[]},{"level":3,"title":"Serving data from file返回文件数据","slug":"serving-data-from-file返回文件数据","link":"#serving-data-from-file返回文件数据","children":[]}]},{"level":2,"title":"重定向","slug":"重定向","link":"#重定向","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gin/响应数据.md"}'),p={name:"knowledge-deposition/GoLang/Gin/响应数据.md"},o=l(`

响应数据

响应字符串

Go
func UserHandle(ctx *gin.Context) {
 	ctx.String(http.StatusOK, "hello world")
 } 
 

响应JSON

使用结构体

  • 可以通过json tag来设置返回数据的别名,格式如下,这样返回的json数据的key就是设置的别名
Go
type User struct {
diff --git "a/assets/knowledge-deposition_GoLang_Gin_\345\223\215\345\272\224\346\225\260\346\215\256.md.ff126266.lean.js" "b/assets/knowledge-deposition_GoLang_Gin_\345\223\215\345\272\224\346\225\260\346\215\256.md.56bc77b7.lean.js"
similarity index 97%
rename from "assets/knowledge-deposition_GoLang_Gin_\345\223\215\345\272\224\346\225\260\346\215\256.md.ff126266.lean.js"
rename to "assets/knowledge-deposition_GoLang_Gin_\345\223\215\345\272\224\346\225\260\346\215\256.md.56bc77b7.lean.js"
index bec2bbb4..c07f6e51 100644
--- "a/assets/knowledge-deposition_GoLang_Gin_\345\223\215\345\272\224\346\225\260\346\215\256.md.ff126266.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_Gin_\345\223\215\345\272\224\346\225\260\346\215\256.md.56bc77b7.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"响应数据","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"响应字符串","slug":"响应字符串","link":"#响应字符串","children":[]},{"level":2,"title":"响应JSON","slug":"响应json","link":"#响应json","children":[{"level":3,"title":"使用结构体","slug":"使用结构体","link":"#使用结构体","children":[]},{"level":3,"title":"使用map","slug":"使用map","link":"#使用map","children":[]},{"level":3,"title":"直接响应JSON","slug":"直接响应json","link":"#直接响应json","children":[]}]},{"level":2,"title":"响应XML","slug":"响应xml","link":"#响应xml","children":[{"level":3,"title":"字符串返回","slug":"字符串返回","link":"#字符串返回","children":[]},{"level":3,"title":"结构体返回","slug":"结构体返回","link":"#结构体返回","children":[]},{"level":3,"title":"通过gin.H返回","slug":"通过gin-h返回","link":"#通过gin-h返回","children":[]}]},{"level":2,"title":"响应yaml","slug":"响应yaml","link":"#响应yaml","children":[{"level":3,"title":"结构体返回","slug":"结构体返回-1","link":"#结构体返回-1","children":[]},{"level":3,"title":"通过gin.H返回","slug":"通过gin-h返回-1","link":"#通过gin-h返回-1","children":[]}]},{"level":2,"title":"响应HTML","slug":"响应html","link":"#响应html","children":[]},{"level":2,"title":"响应文件","slug":"响应文件","link":"#响应文件","children":[{"level":3,"title":"Serving static files提供静态文件服务","slug":"serving-static-files提供静态文件服务","link":"#serving-static-files提供静态文件服务","children":[]},{"level":3,"title":"Serving data from file返回文件数据","slug":"serving-data-from-file返回文件数据","link":"#serving-data-from-file返回文件数据","children":[]}]},{"level":2,"title":"重定向","slug":"重定向","link":"#重定向","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gin/响应数据.md"}'),p={name:"knowledge-deposition/GoLang/Gin/响应数据.md"},o=l("",75),t=[o];function e(c,D,r,F,y,C){return a(),n("div",null,t)}const u=s(p,[["render",e]]);export{i as __pageData,u as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"响应数据","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"响应字符串","slug":"响应字符串","link":"#响应字符串","children":[]},{"level":2,"title":"响应JSON","slug":"响应json","link":"#响应json","children":[{"level":3,"title":"使用结构体","slug":"使用结构体","link":"#使用结构体","children":[]},{"level":3,"title":"使用map","slug":"使用map","link":"#使用map","children":[]},{"level":3,"title":"直接响应JSON","slug":"直接响应json","link":"#直接响应json","children":[]}]},{"level":2,"title":"响应XML","slug":"响应xml","link":"#响应xml","children":[{"level":3,"title":"字符串返回","slug":"字符串返回","link":"#字符串返回","children":[]},{"level":3,"title":"结构体返回","slug":"结构体返回","link":"#结构体返回","children":[]},{"level":3,"title":"通过gin.H返回","slug":"通过gin-h返回","link":"#通过gin-h返回","children":[]}]},{"level":2,"title":"响应yaml","slug":"响应yaml","link":"#响应yaml","children":[{"level":3,"title":"结构体返回","slug":"结构体返回-1","link":"#结构体返回-1","children":[]},{"level":3,"title":"通过gin.H返回","slug":"通过gin-h返回-1","link":"#通过gin-h返回-1","children":[]}]},{"level":2,"title":"响应HTML","slug":"响应html","link":"#响应html","children":[]},{"level":2,"title":"响应文件","slug":"响应文件","link":"#响应文件","children":[{"level":3,"title":"Serving static files提供静态文件服务","slug":"serving-static-files提供静态文件服务","link":"#serving-static-files提供静态文件服务","children":[]},{"level":3,"title":"Serving data from file返回文件数据","slug":"serving-data-from-file返回文件数据","link":"#serving-data-from-file返回文件数据","children":[]}]},{"level":2,"title":"重定向","slug":"重定向","link":"#重定向","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gin/响应数据.md"}'),p={name:"knowledge-deposition/GoLang/Gin/响应数据.md"},o=l("",75),t=[o];function e(c,D,r,F,y,C){return a(),n("div",null,t)}const u=s(p,[["render",e]]);export{i as __pageData,u as default};
diff --git "a/assets/knowledge-deposition_GoLang_Gin_\346\224\257\346\214\201\350\267\250\345\237\237.md.beb258ef.js" "b/assets/knowledge-deposition_GoLang_Gin_\346\224\257\346\214\201\350\267\250\345\237\237.md.1cee88e9.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_Gin_\346\224\257\346\214\201\350\267\250\345\237\237.md.beb258ef.js"
rename to "assets/knowledge-deposition_GoLang_Gin_\346\224\257\346\214\201\350\267\250\345\237\237.md.1cee88e9.js"
index 6e86db23..f4d05c39 100644
--- "a/assets/knowledge-deposition_GoLang_Gin_\346\224\257\346\214\201\350\267\250\345\237\237.md.beb258ef.js"
+++ "b/assets/knowledge-deposition_GoLang_Gin_\346\224\257\346\214\201\350\267\250\345\237\237.md.1cee88e9.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const C=JSON.parse('{"title":"支持跨域","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"下载依赖","slug":"下载依赖","link":"#下载依赖","children":[]},{"level":2,"title":"配置","slug":"配置","link":"#配置","children":[{"level":3,"title":"典型的例子","slug":"典型的例子","link":"#典型的例子","children":[]},{"level":3,"title":"使用DefaultConfig","slug":"使用defaultconfig","link":"#使用defaultconfig","children":[]},{"level":3,"title":"使用Default","slug":"使用default","link":"#使用default","children":[]}]},{"level":2,"title":"原理","slug":"原理","link":"#原理","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gin/支持跨域.md"}'),o={name:"knowledge-deposition/GoLang/Gin/支持跨域.md"},p=l(`

支持跨域

下载依赖

shell
go get -u github.com/gin-contrib/cors
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const C=JSON.parse('{"title":"支持跨域","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"下载依赖","slug":"下载依赖","link":"#下载依赖","children":[]},{"level":2,"title":"配置","slug":"配置","link":"#配置","children":[{"level":3,"title":"典型的例子","slug":"典型的例子","link":"#典型的例子","children":[]},{"level":3,"title":"使用DefaultConfig","slug":"使用defaultconfig","link":"#使用defaultconfig","children":[]},{"level":3,"title":"使用Default","slug":"使用default","link":"#使用default","children":[]}]},{"level":2,"title":"原理","slug":"原理","link":"#原理","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gin/支持跨域.md"}'),o={name:"knowledge-deposition/GoLang/Gin/支持跨域.md"},p=l(`

支持跨域

下载依赖

shell
go get -u github.com/gin-contrib/cors
 

配置

  • 下面这几种配置都可以

典型的例子

Go

 package main
 
diff --git "a/assets/knowledge-deposition_GoLang_Gin_\346\224\257\346\214\201\350\267\250\345\237\237.md.beb258ef.lean.js" "b/assets/knowledge-deposition_GoLang_Gin_\346\224\257\346\214\201\350\267\250\345\237\237.md.1cee88e9.lean.js"
similarity index 93%
rename from "assets/knowledge-deposition_GoLang_Gin_\346\224\257\346\214\201\350\267\250\345\237\237.md.beb258ef.lean.js"
rename to "assets/knowledge-deposition_GoLang_Gin_\346\224\257\346\214\201\350\267\250\345\237\237.md.1cee88e9.lean.js"
index 62937f53..2ff1eb8a 100644
--- "a/assets/knowledge-deposition_GoLang_Gin_\346\224\257\346\214\201\350\267\250\345\237\237.md.beb258ef.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_Gin_\346\224\257\346\214\201\350\267\250\345\237\237.md.1cee88e9.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const C=JSON.parse('{"title":"支持跨域","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"下载依赖","slug":"下载依赖","link":"#下载依赖","children":[]},{"level":2,"title":"配置","slug":"配置","link":"#配置","children":[{"level":3,"title":"典型的例子","slug":"典型的例子","link":"#典型的例子","children":[]},{"level":3,"title":"使用DefaultConfig","slug":"使用defaultconfig","link":"#使用defaultconfig","children":[]},{"level":3,"title":"使用Default","slug":"使用default","link":"#使用default","children":[]}]},{"level":2,"title":"原理","slug":"原理","link":"#原理","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gin/支持跨域.md"}'),o={name:"knowledge-deposition/GoLang/Gin/支持跨域.md"},p=l("",14),e=[p];function t(c,r,D,F,y,i){return a(),n("div",null,e)}const u=s(o,[["render",t]]);export{C as __pageData,u as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const C=JSON.parse('{"title":"支持跨域","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"下载依赖","slug":"下载依赖","link":"#下载依赖","children":[]},{"level":2,"title":"配置","slug":"配置","link":"#配置","children":[{"level":3,"title":"典型的例子","slug":"典型的例子","link":"#典型的例子","children":[]},{"level":3,"title":"使用DefaultConfig","slug":"使用defaultconfig","link":"#使用defaultconfig","children":[]},{"level":3,"title":"使用Default","slug":"使用default","link":"#使用default","children":[]}]},{"level":2,"title":"原理","slug":"原理","link":"#原理","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gin/支持跨域.md"}'),o={name:"knowledge-deposition/GoLang/Gin/支持跨域.md"},p=l("",14),e=[p];function t(c,r,D,F,y,i){return a(),n("div",null,e)}const u=s(o,[["render",t]]);export{C as __pageData,u as default};
diff --git "a/assets/knowledge-deposition_GoLang_Gin_\350\257\267\346\261\202\345\217\202\346\225\260.md.908d2ad3.js" "b/assets/knowledge-deposition_GoLang_Gin_\350\257\267\346\261\202\345\217\202\346\225\260.md.e5d42454.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_Gin_\350\257\267\346\261\202\345\217\202\346\225\260.md.908d2ad3.js"
rename to "assets/knowledge-deposition_GoLang_Gin_\350\257\267\346\261\202\345\217\202\346\225\260.md.e5d42454.js"
index e33c658a..18911666 100644
--- "a/assets/knowledge-deposition_GoLang_Gin_\350\257\267\346\261\202\345\217\202\346\225\260.md.908d2ad3.js"
+++ "b/assets/knowledge-deposition_GoLang_Gin_\350\257\267\346\261\202\345\217\202\346\225\260.md.e5d42454.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const o="/static-blog/image/go/form_data.png",u=JSON.parse('{"title":"请求参数","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"GET请求","slug":"get请求","link":"#get请求","children":[{"level":3,"title":"普通参数","slug":"普通参数","link":"#普通参数","children":[]},{"level":3,"title":"数组参数","slug":"数组参数","link":"#数组参数","children":[]},{"level":3,"title":"map参数","slug":"map参数","link":"#map参数","children":[]}]},{"level":2,"title":"POST请求","slug":"post请求","link":"#post请求","children":[{"level":3,"title":"form表单参数","slug":"form表单参数","link":"#form表单参数","children":[]},{"level":3,"title":"json参数","slug":"json参数","link":"#json参数","children":[]}]},{"level":2,"title":"Param参数","slug":"param参数","link":"#param参数","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gin/请求参数.md"}'),p={name:"knowledge-deposition/GoLang/Gin/请求参数.md"},e=l(`

请求参数

GET请求

普通参数

  • ctx.Query:获取参数

  • ctx.DefaultQuery:可设置参数默认值

  • ctx.GetQuery:可验证参数是否传递

Go
func (*gin.Context).Query(key string) (value string)
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const o="/static-blog/image/go/form_data.png",u=JSON.parse('{"title":"请求参数","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"GET请求","slug":"get请求","link":"#get请求","children":[{"level":3,"title":"普通参数","slug":"普通参数","link":"#普通参数","children":[]},{"level":3,"title":"数组参数","slug":"数组参数","link":"#数组参数","children":[]},{"level":3,"title":"map参数","slug":"map参数","link":"#map参数","children":[]}]},{"level":2,"title":"POST请求","slug":"post请求","link":"#post请求","children":[{"level":3,"title":"form表单参数","slug":"form表单参数","link":"#form表单参数","children":[]},{"level":3,"title":"json参数","slug":"json参数","link":"#json参数","children":[]}]},{"level":2,"title":"Param参数","slug":"param参数","link":"#param参数","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gin/请求参数.md"}'),p={name:"knowledge-deposition/GoLang/Gin/请求参数.md"},e=l(`

请求参数

GET请求

普通参数

  • ctx.Query:获取参数

  • ctx.DefaultQuery:可设置参数默认值

  • ctx.GetQuery:可验证参数是否传递

Go
func (*gin.Context).Query(key string) (value string)
 
 func (*gin.Context).DefaultQuery(key string, defaultValue string) string
 
diff --git "a/assets/knowledge-deposition_GoLang_Gin_\350\257\267\346\261\202\345\217\202\346\225\260.md.908d2ad3.lean.js" "b/assets/knowledge-deposition_GoLang_Gin_\350\257\267\346\261\202\345\217\202\346\225\260.md.e5d42454.lean.js"
similarity index 94%
rename from "assets/knowledge-deposition_GoLang_Gin_\350\257\267\346\261\202\345\217\202\346\225\260.md.908d2ad3.lean.js"
rename to "assets/knowledge-deposition_GoLang_Gin_\350\257\267\346\261\202\345\217\202\346\225\260.md.e5d42454.lean.js"
index a90c2aea..da771466 100644
--- "a/assets/knowledge-deposition_GoLang_Gin_\350\257\267\346\261\202\345\217\202\346\225\260.md.908d2ad3.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_Gin_\350\257\267\346\261\202\345\217\202\346\225\260.md.e5d42454.lean.js"
@@ -1 +1 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const o="/static-blog/image/go/form_data.png",u=JSON.parse('{"title":"请求参数","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"GET请求","slug":"get请求","link":"#get请求","children":[{"level":3,"title":"普通参数","slug":"普通参数","link":"#普通参数","children":[]},{"level":3,"title":"数组参数","slug":"数组参数","link":"#数组参数","children":[]},{"level":3,"title":"map参数","slug":"map参数","link":"#map参数","children":[]}]},{"level":2,"title":"POST请求","slug":"post请求","link":"#post请求","children":[{"level":3,"title":"form表单参数","slug":"form表单参数","link":"#form表单参数","children":[]},{"level":3,"title":"json参数","slug":"json参数","link":"#json参数","children":[]}]},{"level":2,"title":"Param参数","slug":"param参数","link":"#param参数","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gin/请求参数.md"}'),p={name:"knowledge-deposition/GoLang/Gin/请求参数.md"},e=l("",50),t=[e];function c(D,r,F,y,C,A){return n(),a("div",null,t)}const d=s(p,[["render",c]]);export{u as __pageData,d as default};
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const o="/static-blog/image/go/form_data.png",u=JSON.parse('{"title":"请求参数","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"GET请求","slug":"get请求","link":"#get请求","children":[{"level":3,"title":"普通参数","slug":"普通参数","link":"#普通参数","children":[]},{"level":3,"title":"数组参数","slug":"数组参数","link":"#数组参数","children":[]},{"level":3,"title":"map参数","slug":"map参数","link":"#map参数","children":[]}]},{"level":2,"title":"POST请求","slug":"post请求","link":"#post请求","children":[{"level":3,"title":"form表单参数","slug":"form表单参数","link":"#form表单参数","children":[]},{"level":3,"title":"json参数","slug":"json参数","link":"#json参数","children":[]}]},{"level":2,"title":"Param参数","slug":"param参数","link":"#param参数","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gin/请求参数.md"}'),p={name:"knowledge-deposition/GoLang/Gin/请求参数.md"},e=l("",50),t=[e];function c(D,r,F,y,C,A){return n(),a("div",null,t)}const d=s(p,[["render",c]]);export{u as __pageData,d as default};
diff --git "a/assets/knowledge-deposition_GoLang_Gin_\350\257\267\346\261\202\345\244\264\345\222\214\345\223\215\345\272\224\345\244\264.md.e44f68c8.js" "b/assets/knowledge-deposition_GoLang_Gin_\350\257\267\346\261\202\345\244\264\345\222\214\345\223\215\345\272\224\345\244\264.md.cb5a6ee4.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_Gin_\350\257\267\346\261\202\345\244\264\345\222\214\345\223\215\345\272\224\345\244\264.md.e44f68c8.js"
rename to "assets/knowledge-deposition_GoLang_Gin_\350\257\267\346\261\202\345\244\264\345\222\214\345\223\215\345\272\224\345\244\264.md.cb5a6ee4.js"
index 42413922..4b9f7c85 100644
--- "a/assets/knowledge-deposition_GoLang_Gin_\350\257\267\346\261\202\345\244\264\345\222\214\345\223\215\345\272\224\345\244\264.md.e44f68c8.js"
+++ "b/assets/knowledge-deposition_GoLang_Gin_\350\257\267\346\261\202\345\244\264\345\222\214\345\223\215\345\272\224\345\244\264.md.cb5a6ee4.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as n,e as o}from"./app.fa87702c.js";const i=JSON.parse('{"title":"请求头和响应头","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"请求头","slug":"请求头","link":"#请求头","children":[]},{"level":2,"title":"响应头","slug":"响应头","link":"#响应头","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gin/请求头和响应头.md"}'),l={name:"knowledge-deposition/GoLang/Gin/请求头和响应头.md"},p=o(`

请求头和响应头

请求头

  • 获取请求头,使用ctx.GetHeader("xx")或者ctx.Request.Header.Get("xxx")
Go
func getHeaderHandler(ctx *gin.Context) {
+import{_ as s,c as a,o as n,e as o}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"请求头和响应头","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"请求头","slug":"请求头","link":"#请求头","children":[]},{"level":2,"title":"响应头","slug":"响应头","link":"#响应头","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gin/请求头和响应头.md"}'),l={name:"knowledge-deposition/GoLang/Gin/请求头和响应头.md"},p=o(`

请求头和响应头

请求头

  • 获取请求头,使用ctx.GetHeader("xx")或者ctx.Request.Header.Get("xxx")
Go
func getHeaderHandler(ctx *gin.Context) {
 	// 首字母大小写不区分  单词与单词之间用 - 连接
 	fmt.Printf("ctx.GetHeader(\\"user-agent\\"): %v\\n", ctx.GetHeader("user-agent"))
 	fmt.Printf("ctx.GetHeader(\\"admin-token\\"): %v\\n", ctx.GetHeader("admin-token"))
diff --git "a/assets/knowledge-deposition_GoLang_Gin_\350\257\267\346\261\202\345\244\264\345\222\214\345\223\215\345\272\224\345\244\264.md.e44f68c8.lean.js" "b/assets/knowledge-deposition_GoLang_Gin_\350\257\267\346\261\202\345\244\264\345\222\214\345\223\215\345\272\224\345\244\264.md.cb5a6ee4.lean.js"
similarity index 89%
rename from "assets/knowledge-deposition_GoLang_Gin_\350\257\267\346\261\202\345\244\264\345\222\214\345\223\215\345\272\224\345\244\264.md.e44f68c8.lean.js"
rename to "assets/knowledge-deposition_GoLang_Gin_\350\257\267\346\261\202\345\244\264\345\222\214\345\223\215\345\272\224\345\244\264.md.cb5a6ee4.lean.js"
index dd232db2..a6005c1e 100644
--- "a/assets/knowledge-deposition_GoLang_Gin_\350\257\267\346\261\202\345\244\264\345\222\214\345\223\215\345\272\224\345\244\264.md.e44f68c8.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_Gin_\350\257\267\346\261\202\345\244\264\345\222\214\345\223\215\345\272\224\345\244\264.md.cb5a6ee4.lean.js"
@@ -1 +1 @@
-import{_ as s,c as a,o as n,e as o}from"./app.fa87702c.js";const i=JSON.parse('{"title":"请求头和响应头","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"请求头","slug":"请求头","link":"#请求头","children":[]},{"level":2,"title":"响应头","slug":"响应头","link":"#响应头","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gin/请求头和响应头.md"}'),l={name:"knowledge-deposition/GoLang/Gin/请求头和响应头.md"},p=o("",6),e=[p];function t(r,c,D,F,y,A){return n(),a("div",null,e)}const d=s(l,[["render",t]]);export{i as __pageData,d as default};
+import{_ as s,c as a,o as n,e as o}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"请求头和响应头","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"请求头","slug":"请求头","link":"#请求头","children":[]},{"level":2,"title":"响应头","slug":"响应头","link":"#响应头","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gin/请求头和响应头.md"}'),l={name:"knowledge-deposition/GoLang/Gin/请求头和响应头.md"},p=o("",6),e=[p];function t(r,c,D,F,y,A){return n(),a("div",null,e)}const d=s(l,[["render",t]]);export{i as __pageData,d as default};
diff --git "a/assets/knowledge-deposition_GoLang_Gin_\350\267\257\347\224\261\345\210\206\347\273\204.md.8d173941.js" "b/assets/knowledge-deposition_GoLang_Gin_\350\267\257\347\224\261\345\210\206\347\273\204.md.00601519.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_Gin_\350\267\257\347\224\261\345\210\206\347\273\204.md.8d173941.js"
rename to "assets/knowledge-deposition_GoLang_Gin_\350\267\257\347\224\261\345\210\206\347\273\204.md.00601519.js"
index 2829d5ab..a35ee949 100644
--- "a/assets/knowledge-deposition_GoLang_Gin_\350\267\257\347\224\261\345\210\206\347\273\204.md.8d173941.js"
+++ "b/assets/knowledge-deposition_GoLang_Gin_\350\267\257\347\224\261\345\210\206\347\273\204.md.00601519.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as o}from"./app.fa87702c.js";const i=JSON.parse('{"title":"路由分组","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"knowledge-deposition/GoLang/Gin/路由分组.md"}'),l={name:"knowledge-deposition/GoLang/Gin/路由分组.md"},p=o(`

路由分组

可以针对不同的功能模块对路由分组

  • 使用router.Group(name)定义一个群组
Go
package main
+import{_ as s,c as n,o as a,e as o}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"路由分组","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"knowledge-deposition/GoLang/Gin/路由分组.md"}'),l={name:"knowledge-deposition/GoLang/Gin/路由分组.md"},p=o(`

路由分组

可以针对不同的功能模块对路由分组

  • 使用router.Group(name)定义一个群组
Go
package main
 
 import "github.com/gin-gonic/gin"
 
diff --git "a/assets/knowledge-deposition_GoLang_Gin_\350\267\257\347\224\261\345\210\206\347\273\204.md.8d173941.lean.js" "b/assets/knowledge-deposition_GoLang_Gin_\350\267\257\347\224\261\345\210\206\347\273\204.md.00601519.lean.js"
similarity index 84%
rename from "assets/knowledge-deposition_GoLang_Gin_\350\267\257\347\224\261\345\210\206\347\273\204.md.8d173941.lean.js"
rename to "assets/knowledge-deposition_GoLang_Gin_\350\267\257\347\224\261\345\210\206\347\273\204.md.00601519.lean.js"
index 56f5d995..d66b595e 100644
--- "a/assets/knowledge-deposition_GoLang_Gin_\350\267\257\347\224\261\345\210\206\347\273\204.md.8d173941.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_Gin_\350\267\257\347\224\261\345\210\206\347\273\204.md.00601519.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as o}from"./app.fa87702c.js";const i=JSON.parse('{"title":"路由分组","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"knowledge-deposition/GoLang/Gin/路由分组.md"}'),l={name:"knowledge-deposition/GoLang/Gin/路由分组.md"},p=o("",8),t=[p];function e(D,c,F,r,y,C){return a(),n("div",null,t)}const u=s(l,[["render",e]]);export{i as __pageData,u as default};
+import{_ as s,c as n,o as a,e as o}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"路由分组","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"knowledge-deposition/GoLang/Gin/路由分组.md"}'),l={name:"knowledge-deposition/GoLang/Gin/路由分组.md"},p=o("",8),t=[p];function e(D,c,F,r,y,C){return a(),n("div",null,t)}const u=s(l,[["render",e]]);export{i as __pageData,u as default};
diff --git "a/assets/knowledge-deposition_GoLang_Gin_\351\233\206\346\210\220Swagger.md.ddba4d53.js" "b/assets/knowledge-deposition_GoLang_Gin_\351\233\206\346\210\220Swagger.md.0e8f970c.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_Gin_\351\233\206\346\210\220Swagger.md.ddba4d53.js"
rename to "assets/knowledge-deposition_GoLang_Gin_\351\233\206\346\210\220Swagger.md.0e8f970c.js"
index 75c0abff..6ec2b45d 100644
--- "a/assets/knowledge-deposition_GoLang_Gin_\351\233\206\346\210\220Swagger.md.ddba4d53.js"
+++ "b/assets/knowledge-deposition_GoLang_Gin_\351\233\206\346\210\220Swagger.md.0e8f970c.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const C=JSON.parse('{"title":"集成Swagger","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"依赖安装和初始化","slug":"依赖安装和初始化","link":"#依赖安装和初始化","children":[{"level":3,"title":"安装Swagger","slug":"安装swagger","link":"#安装swagger","children":[]},{"level":3,"title":"安装gin-swagger扩展","slug":"安装gin-swagger扩展","link":"#安装gin-swagger扩展","children":[]},{"level":3,"title":"在Go项目的根目录初始化Swagger","slug":"在go项目的根目录初始化swagger","link":"#在go项目的根目录初始化swagger","children":[]}]},{"level":2,"title":"gin-swagger注解","slug":"gin-swagger注解","link":"#gin-swagger注解","children":[{"level":3,"title":"全局注解","slug":"全局注解","link":"#全局注解","children":[]},{"level":3,"title":"API层面注解","slug":"api层面注解","link":"#api层面注解","children":[]}]},{"level":2,"title":"代码示例","slug":"代码示例","link":"#代码示例","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gin/集成Swagger.md"}'),o={name:"knowledge-deposition/GoLang/Gin/集成Swagger.md"},e=l(`

集成Swagger

通过在代码中添加符合swagger规范的注解,可以自动生成文档

依赖安装和初始化

安装Swagger

shell
go get github.com/swaggo/swag/cmd/swag
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const C=JSON.parse('{"title":"集成Swagger","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"依赖安装和初始化","slug":"依赖安装和初始化","link":"#依赖安装和初始化","children":[{"level":3,"title":"安装Swagger","slug":"安装swagger","link":"#安装swagger","children":[]},{"level":3,"title":"安装gin-swagger扩展","slug":"安装gin-swagger扩展","link":"#安装gin-swagger扩展","children":[]},{"level":3,"title":"在Go项目的根目录初始化Swagger","slug":"在go项目的根目录初始化swagger","link":"#在go项目的根目录初始化swagger","children":[]}]},{"level":2,"title":"gin-swagger注解","slug":"gin-swagger注解","link":"#gin-swagger注解","children":[{"level":3,"title":"全局注解","slug":"全局注解","link":"#全局注解","children":[]},{"level":3,"title":"API层面注解","slug":"api层面注解","link":"#api层面注解","children":[]}]},{"level":2,"title":"代码示例","slug":"代码示例","link":"#代码示例","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gin/集成Swagger.md"}'),o={name:"knowledge-deposition/GoLang/Gin/集成Swagger.md"},e=l(`

集成Swagger

通过在代码中添加符合swagger规范的注解,可以自动生成文档

依赖安装和初始化

安装Swagger

shell
go get github.com/swaggo/swag/cmd/swag
 # 生成可执行文件
 go install github.com/swaggo/swag/cmd/swag@latest
 

查看swagger版本

shell
swag -v
diff --git "a/assets/knowledge-deposition_GoLang_Gin_\351\233\206\346\210\220Swagger.md.ddba4d53.lean.js" "b/assets/knowledge-deposition_GoLang_Gin_\351\233\206\346\210\220Swagger.md.0e8f970c.lean.js"
similarity index 95%
rename from "assets/knowledge-deposition_GoLang_Gin_\351\233\206\346\210\220Swagger.md.ddba4d53.lean.js"
rename to "assets/knowledge-deposition_GoLang_Gin_\351\233\206\346\210\220Swagger.md.0e8f970c.lean.js"
index 9fc7a0f4..17f0e380 100644
--- "a/assets/knowledge-deposition_GoLang_Gin_\351\233\206\346\210\220Swagger.md.ddba4d53.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_Gin_\351\233\206\346\210\220Swagger.md.0e8f970c.lean.js"
@@ -1 +1 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const C=JSON.parse('{"title":"集成Swagger","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"依赖安装和初始化","slug":"依赖安装和初始化","link":"#依赖安装和初始化","children":[{"level":3,"title":"安装Swagger","slug":"安装swagger","link":"#安装swagger","children":[]},{"level":3,"title":"安装gin-swagger扩展","slug":"安装gin-swagger扩展","link":"#安装gin-swagger扩展","children":[]},{"level":3,"title":"在Go项目的根目录初始化Swagger","slug":"在go项目的根目录初始化swagger","link":"#在go项目的根目录初始化swagger","children":[]}]},{"level":2,"title":"gin-swagger注解","slug":"gin-swagger注解","link":"#gin-swagger注解","children":[{"level":3,"title":"全局注解","slug":"全局注解","link":"#全局注解","children":[]},{"level":3,"title":"API层面注解","slug":"api层面注解","link":"#api层面注解","children":[]}]},{"level":2,"title":"代码示例","slug":"代码示例","link":"#代码示例","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gin/集成Swagger.md"}'),o={name:"knowledge-deposition/GoLang/Gin/集成Swagger.md"},e=l("",57),p=[e];function t(c,r,i,D,y,F){return n(),a("div",null,p)}const A=s(o,[["render",t]]);export{C as __pageData,A as default};
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const C=JSON.parse('{"title":"集成Swagger","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"依赖安装和初始化","slug":"依赖安装和初始化","link":"#依赖安装和初始化","children":[{"level":3,"title":"安装Swagger","slug":"安装swagger","link":"#安装swagger","children":[]},{"level":3,"title":"安装gin-swagger扩展","slug":"安装gin-swagger扩展","link":"#安装gin-swagger扩展","children":[]},{"level":3,"title":"在Go项目的根目录初始化Swagger","slug":"在go项目的根目录初始化swagger","link":"#在go项目的根目录初始化swagger","children":[]}]},{"level":2,"title":"gin-swagger注解","slug":"gin-swagger注解","link":"#gin-swagger注解","children":[{"level":3,"title":"全局注解","slug":"全局注解","link":"#全局注解","children":[]},{"level":3,"title":"API层面注解","slug":"api层面注解","link":"#api层面注解","children":[]}]},{"level":2,"title":"代码示例","slug":"代码示例","link":"#代码示例","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gin/集成Swagger.md"}'),o={name:"knowledge-deposition/GoLang/Gin/集成Swagger.md"},e=l("",57),p=[e];function t(c,r,i,D,y,F){return n(),a("div",null,p)}const A=s(o,[["render",t]]);export{C as __pageData,A as default};
diff --git a/assets/knowledge-deposition_GoLang_Gorm_AdvancedQuery.md.74d2a4b9.js b/assets/knowledge-deposition_GoLang_Gorm_AdvancedQuery.md.27c5ce11.js
similarity index 99%
rename from assets/knowledge-deposition_GoLang_Gorm_AdvancedQuery.md.74d2a4b9.js
rename to assets/knowledge-deposition_GoLang_Gorm_AdvancedQuery.md.27c5ce11.js
index 5c07fa84..e188b832 100644
--- a/assets/knowledge-deposition_GoLang_Gorm_AdvancedQuery.md.74d2a4b9.js
+++ b/assets/knowledge-deposition_GoLang_Gorm_AdvancedQuery.md.27c5ce11.js
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const C=JSON.parse('{"title":"Advanced Query","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"智能选择字段","slug":"智能选择字段","link":"#智能选择字段","children":[]},{"level":2,"title":"子查询","slug":"子查询","link":"#子查询","children":[{"level":3,"title":"FROM子查询","slug":"from子查询","link":"#from子查询","children":[]}]},{"level":2,"title":"命名参数","slug":"命名参数","link":"#命名参数","children":[]},{"level":2,"title":"Find到Map中","slug":"find到map中","link":"#find到map中","children":[]},{"level":2,"title":"Scopes","slug":"scopes","link":"#scopes","children":[]},{"level":2,"title":"Count","slug":"count","link":"#count","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gorm/AdvancedQuery.md"}'),o={name:"knowledge-deposition/GoLang/Gorm/AdvancedQuery.md"},p=l(`

Advanced Query

智能选择字段

  • 选择字段可以使用Select,但是如果有多个Select操作,可以定义一个结构体,查询的时候会自动检索结构体中的字段
Go
type SmartFields struct {
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const C=JSON.parse('{"title":"Advanced Query","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"智能选择字段","slug":"智能选择字段","link":"#智能选择字段","children":[]},{"level":2,"title":"子查询","slug":"子查询","link":"#子查询","children":[{"level":3,"title":"FROM子查询","slug":"from子查询","link":"#from子查询","children":[]}]},{"level":2,"title":"命名参数","slug":"命名参数","link":"#命名参数","children":[]},{"level":2,"title":"Find到Map中","slug":"find到map中","link":"#find到map中","children":[]},{"level":2,"title":"Scopes","slug":"scopes","link":"#scopes","children":[]},{"level":2,"title":"Count","slug":"count","link":"#count","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gorm/AdvancedQuery.md"}'),o={name:"knowledge-deposition/GoLang/Gorm/AdvancedQuery.md"},p=l(`

Advanced Query

智能选择字段

  • 选择字段可以使用Select,但是如果有多个Select操作,可以定义一个结构体,查询的时候会自动检索结构体中的字段
Go
type SmartFields struct {
 	Name   string
 	Age    int
 	Gender int
diff --git a/assets/knowledge-deposition_GoLang_Gorm_AdvancedQuery.md.74d2a4b9.lean.js b/assets/knowledge-deposition_GoLang_Gorm_AdvancedQuery.md.27c5ce11.lean.js
similarity index 93%
rename from assets/knowledge-deposition_GoLang_Gorm_AdvancedQuery.md.74d2a4b9.lean.js
rename to assets/knowledge-deposition_GoLang_Gorm_AdvancedQuery.md.27c5ce11.lean.js
index fb1f05bf..af45e52d 100644
--- a/assets/knowledge-deposition_GoLang_Gorm_AdvancedQuery.md.74d2a4b9.lean.js
+++ b/assets/knowledge-deposition_GoLang_Gorm_AdvancedQuery.md.27c5ce11.lean.js
@@ -1 +1 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const C=JSON.parse('{"title":"Advanced Query","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"智能选择字段","slug":"智能选择字段","link":"#智能选择字段","children":[]},{"level":2,"title":"子查询","slug":"子查询","link":"#子查询","children":[{"level":3,"title":"FROM子查询","slug":"from子查询","link":"#from子查询","children":[]}]},{"level":2,"title":"命名参数","slug":"命名参数","link":"#命名参数","children":[]},{"level":2,"title":"Find到Map中","slug":"find到map中","link":"#find到map中","children":[]},{"level":2,"title":"Scopes","slug":"scopes","link":"#scopes","children":[]},{"level":2,"title":"Count","slug":"count","link":"#count","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gorm/AdvancedQuery.md"}'),o={name:"knowledge-deposition/GoLang/Gorm/AdvancedQuery.md"},p=l("",23),e=[p];function t(c,r,D,F,y,i){return n(),a("div",null,e)}const d=s(o,[["render",t]]);export{C as __pageData,d as default};
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const C=JSON.parse('{"title":"Advanced Query","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"智能选择字段","slug":"智能选择字段","link":"#智能选择字段","children":[]},{"level":2,"title":"子查询","slug":"子查询","link":"#子查询","children":[{"level":3,"title":"FROM子查询","slug":"from子查询","link":"#from子查询","children":[]}]},{"level":2,"title":"命名参数","slug":"命名参数","link":"#命名参数","children":[]},{"level":2,"title":"Find到Map中","slug":"find到map中","link":"#find到map中","children":[]},{"level":2,"title":"Scopes","slug":"scopes","link":"#scopes","children":[]},{"level":2,"title":"Count","slug":"count","link":"#count","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gorm/AdvancedQuery.md"}'),o={name:"knowledge-deposition/GoLang/Gorm/AdvancedQuery.md"},p=l("",23),e=[p];function t(c,r,D,F,y,i){return n(),a("div",null,e)}const d=s(o,[["render",t]]);export{C as __pageData,d as default};
diff --git a/assets/knowledge-deposition_GoLang_Gorm_Create.md.de0bc8bb.js b/assets/knowledge-deposition_GoLang_Gorm_Create.md.35aa8083.js
similarity index 99%
rename from assets/knowledge-deposition_GoLang_Gorm_Create.md.de0bc8bb.js
rename to assets/knowledge-deposition_GoLang_Gorm_Create.md.35aa8083.js
index d71d6ca9..51a657ad 100644
--- a/assets/knowledge-deposition_GoLang_Gorm_Create.md.de0bc8bb.js
+++ b/assets/knowledge-deposition_GoLang_Gorm_Create.md.35aa8083.js
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"Create","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"创建记录","slug":"创建记录","link":"#创建记录","children":[{"level":3,"title":"创建单条","slug":"创建单条","link":"#创建单条","children":[]},{"level":3,"title":"创建多条","slug":"创建多条","link":"#创建多条","children":[]}]},{"level":2,"title":"使用选择的字段创建","slug":"使用选择的字段创建","link":"#使用选择的字段创建","children":[{"level":3,"title":"DB.Select","slug":"db-select","link":"#db-select","children":[]},{"level":3,"title":"DB.Omit","slug":"db-omit","link":"#db-omit","children":[]}]},{"level":2,"title":"通过map创建记录","slug":"通过map创建记录","link":"#通过map创建记录","children":[{"level":3,"title":"单个map","slug":"单个map","link":"#单个map","children":[]},{"level":3,"title":"批量插入map","slug":"批量插入map","link":"#批量插入map","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/Gorm/Create.md"}'),p={name:"knowledge-deposition/GoLang/Gorm/Create.md"},o=l(`

Create

  • 下面的操作都以该Teacher结构体为基础
Go
type Teacher struct {
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"Create","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"创建记录","slug":"创建记录","link":"#创建记录","children":[{"level":3,"title":"创建单条","slug":"创建单条","link":"#创建单条","children":[]},{"level":3,"title":"创建多条","slug":"创建多条","link":"#创建多条","children":[]}]},{"level":2,"title":"使用选择的字段创建","slug":"使用选择的字段创建","link":"#使用选择的字段创建","children":[{"level":3,"title":"DB.Select","slug":"db-select","link":"#db-select","children":[]},{"level":3,"title":"DB.Omit","slug":"db-omit","link":"#db-omit","children":[]}]},{"level":2,"title":"通过map创建记录","slug":"通过map创建记录","link":"#通过map创建记录","children":[{"level":3,"title":"单个map","slug":"单个map","link":"#单个map","children":[]},{"level":3,"title":"批量插入map","slug":"批量插入map","link":"#批量插入map","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/Gorm/Create.md"}'),p={name:"knowledge-deposition/GoLang/Gorm/Create.md"},o=l(`

Create

  • 下面的操作都以该Teacher结构体为基础
Go
type Teacher struct {
 	gorm.Model
 	Name    string \`gorm:"type:varchar(32)"\`
 	Age     uint8
diff --git a/assets/knowledge-deposition_GoLang_Gorm_Create.md.de0bc8bb.lean.js b/assets/knowledge-deposition_GoLang_Gorm_Create.md.35aa8083.lean.js
similarity index 95%
rename from assets/knowledge-deposition_GoLang_Gorm_Create.md.de0bc8bb.lean.js
rename to assets/knowledge-deposition_GoLang_Gorm_Create.md.35aa8083.lean.js
index 5067af94..94bcc871 100644
--- a/assets/knowledge-deposition_GoLang_Gorm_Create.md.de0bc8bb.lean.js
+++ b/assets/knowledge-deposition_GoLang_Gorm_Create.md.35aa8083.lean.js
@@ -1 +1 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"Create","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"创建记录","slug":"创建记录","link":"#创建记录","children":[{"level":3,"title":"创建单条","slug":"创建单条","link":"#创建单条","children":[]},{"level":3,"title":"创建多条","slug":"创建多条","link":"#创建多条","children":[]}]},{"level":2,"title":"使用选择的字段创建","slug":"使用选择的字段创建","link":"#使用选择的字段创建","children":[{"level":3,"title":"DB.Select","slug":"db-select","link":"#db-select","children":[]},{"level":3,"title":"DB.Omit","slug":"db-omit","link":"#db-omit","children":[]}]},{"level":2,"title":"通过map创建记录","slug":"通过map创建记录","link":"#通过map创建记录","children":[{"level":3,"title":"单个map","slug":"单个map","link":"#单个map","children":[]},{"level":3,"title":"批量插入map","slug":"批量插入map","link":"#批量插入map","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/Gorm/Create.md"}'),p={name:"knowledge-deposition/GoLang/Gorm/Create.md"},o=l("",30),e=[o];function t(c,D,r,F,y,C){return n(),a("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"Create","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"创建记录","slug":"创建记录","link":"#创建记录","children":[{"level":3,"title":"创建单条","slug":"创建单条","link":"#创建单条","children":[]},{"level":3,"title":"创建多条","slug":"创建多条","link":"#创建多条","children":[]}]},{"level":2,"title":"使用选择的字段创建","slug":"使用选择的字段创建","link":"#使用选择的字段创建","children":[{"level":3,"title":"DB.Select","slug":"db-select","link":"#db-select","children":[]},{"level":3,"title":"DB.Omit","slug":"db-omit","link":"#db-omit","children":[]}]},{"level":2,"title":"通过map创建记录","slug":"通过map创建记录","link":"#通过map创建记录","children":[{"level":3,"title":"单个map","slug":"单个map","link":"#单个map","children":[]},{"level":3,"title":"批量插入map","slug":"批量插入map","link":"#批量插入map","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/Gorm/Create.md"}'),p={name:"knowledge-deposition/GoLang/Gorm/Create.md"},o=l("",30),e=[o];function t(c,D,r,F,y,C){return n(),a("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
diff --git a/assets/knowledge-deposition_GoLang_Gorm_Delete.md.5d3b039a.js b/assets/knowledge-deposition_GoLang_Gorm_Delete.md.d62096bf.js
similarity index 99%
rename from assets/knowledge-deposition_GoLang_Gorm_Delete.md.5d3b039a.js
rename to assets/knowledge-deposition_GoLang_Gorm_Delete.md.d62096bf.js
index e130f4fb..4e0b02d3 100644
--- a/assets/knowledge-deposition_GoLang_Gorm_Delete.md.5d3b039a.js
+++ b/assets/knowledge-deposition_GoLang_Gorm_Delete.md.d62096bf.js
@@ -1 +1 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const d=JSON.parse('{"title":"Delete","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"删除单条","slug":"删除单条","link":"#删除单条","children":[]},{"level":2,"title":"根据主键删除","slug":"根据主键删除","link":"#根据主键删除","children":[]},{"level":2,"title":"批量删除","slug":"批量删除","link":"#批量删除","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gorm/Delete.md"}'),e={name:"knowledge-deposition/GoLang/Gorm/Delete.md"},o=l('

Delete

删除单条

  • 删除一条记录时,删除对象需要指定主键,否则会触发批量删除
Go
singleD := Teacher{ID: 2}\nDB.Delete(&singleD)\n// DELETE FROM `teachers` WHERE `teachers`.`id` = 2\n\nsingleD := Teacher{ID: 2}\nDB.Where("age >= ?", 80).Delete(singleD)\n// DELETE FROM `teachers` WHERE age >= 80 AND `teachers`.`id` = 2\n

根据主键删除

  • GORM允许通过内联条件指定主键来检索对象,但只支持整型数值,因为string可能导致SQL注入
Go
DB.Delete(&Teacher{}, "10")\n// DELETE FROM `teachers` WHERE `teachers`.`id` = '10'\n\nDB.Delete(&Teacher{}, []int{20, 22, 26, 28})\n// DELETE FROM `teachers` WHERE `teachers`.`id` IN (20,22,26,28)\n

批量删除

  • 如果指定的条件不包括主键,那么会执行批量删除,将会删除所有匹配的记录
Go
DB.Where("name LIKE ?", "元%").Delete(&Teacher{})\n// DELETE FROM `teachers` WHERE name LIKE '元%'\n\nDB.Delete(&Teacher{}, "name LIKE ?", "元%")\n// DELETE FROM `teachers` WHERE name LIKE '元%'\n
',10),p=[o];function t(c,r,D,F,y,i){return n(),a("div",null,p)}const A=s(e,[["render",t]]);export{d as __pageData,A as default}; +import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const d=JSON.parse('{"title":"Delete","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"删除单条","slug":"删除单条","link":"#删除单条","children":[]},{"level":2,"title":"根据主键删除","slug":"根据主键删除","link":"#根据主键删除","children":[]},{"level":2,"title":"批量删除","slug":"批量删除","link":"#批量删除","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gorm/Delete.md"}'),e={name:"knowledge-deposition/GoLang/Gorm/Delete.md"},o=l('

Delete

删除单条

  • 删除一条记录时,删除对象需要指定主键,否则会触发批量删除
Go
singleD := Teacher{ID: 2}\nDB.Delete(&singleD)\n// DELETE FROM `teachers` WHERE `teachers`.`id` = 2\n\nsingleD := Teacher{ID: 2}\nDB.Where("age >= ?", 80).Delete(singleD)\n// DELETE FROM `teachers` WHERE age >= 80 AND `teachers`.`id` = 2\n

根据主键删除

  • GORM允许通过内联条件指定主键来检索对象,但只支持整型数值,因为string可能导致SQL注入
Go
DB.Delete(&Teacher{}, "10")\n// DELETE FROM `teachers` WHERE `teachers`.`id` = '10'\n\nDB.Delete(&Teacher{}, []int{20, 22, 26, 28})\n// DELETE FROM `teachers` WHERE `teachers`.`id` IN (20,22,26,28)\n

批量删除

  • 如果指定的条件不包括主键,那么会执行批量删除,将会删除所有匹配的记录
Go
DB.Where("name LIKE ?", "元%").Delete(&Teacher{})\n// DELETE FROM `teachers` WHERE name LIKE '元%'\n\nDB.Delete(&Teacher{}, "name LIKE ?", "元%")\n// DELETE FROM `teachers` WHERE name LIKE '元%'\n
',10),p=[o];function t(c,r,D,F,y,i){return n(),a("div",null,p)}const A=s(e,[["render",t]]);export{d as __pageData,A as default}; diff --git a/assets/knowledge-deposition_GoLang_Gorm_Delete.md.5d3b039a.lean.js b/assets/knowledge-deposition_GoLang_Gorm_Delete.md.d62096bf.lean.js similarity index 90% rename from assets/knowledge-deposition_GoLang_Gorm_Delete.md.5d3b039a.lean.js rename to assets/knowledge-deposition_GoLang_Gorm_Delete.md.d62096bf.lean.js index 61258454..5d073ee4 100644 --- a/assets/knowledge-deposition_GoLang_Gorm_Delete.md.5d3b039a.lean.js +++ b/assets/knowledge-deposition_GoLang_Gorm_Delete.md.d62096bf.lean.js @@ -1 +1 @@ -import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const d=JSON.parse('{"title":"Delete","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"删除单条","slug":"删除单条","link":"#删除单条","children":[]},{"level":2,"title":"根据主键删除","slug":"根据主键删除","link":"#根据主键删除","children":[]},{"level":2,"title":"批量删除","slug":"批量删除","link":"#批量删除","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gorm/Delete.md"}'),e={name:"knowledge-deposition/GoLang/Gorm/Delete.md"},o=l("",10),p=[o];function t(c,r,D,F,y,i){return n(),a("div",null,p)}const A=s(e,[["render",t]]);export{d as __pageData,A as default}; +import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const d=JSON.parse('{"title":"Delete","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"删除单条","slug":"删除单条","link":"#删除单条","children":[]},{"level":2,"title":"根据主键删除","slug":"根据主键删除","link":"#根据主键删除","children":[]},{"level":2,"title":"批量删除","slug":"批量删除","link":"#批量删除","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gorm/Delete.md"}'),e={name:"knowledge-deposition/GoLang/Gorm/Delete.md"},o=l("",10),p=[o];function t(c,r,D,F,y,i){return n(),a("div",null,p)}const A=s(e,[["render",t]]);export{d as __pageData,A as default}; diff --git a/assets/knowledge-deposition_GoLang_Gorm_Query.md.fa5259b4.js b/assets/knowledge-deposition_GoLang_Gorm_Query.md.92a03a34.js similarity index 99% rename from assets/knowledge-deposition_GoLang_Gorm_Query.md.fa5259b4.js rename to assets/knowledge-deposition_GoLang_Gorm_Query.md.92a03a34.js index 9f4b15b6..ed009a27 100644 --- a/assets/knowledge-deposition_GoLang_Gorm_Query.md.fa5259b4.js +++ b/assets/knowledge-deposition_GoLang_Gorm_Query.md.92a03a34.js @@ -1,4 +1,4 @@ -import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const A=JSON.parse('{"title":"Query","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"检索单个","slug":"检索单个","link":"#检索单个","children":[{"level":3,"title":"First","slug":"first","link":"#first","children":[]},{"level":3,"title":"Last","slug":"last","link":"#last","children":[]},{"level":3,"title":"Take","slug":"take","link":"#take","children":[]},{"level":3,"title":"使用Take根据主键id查询","slug":"使用take根据主键id查询","link":"#使用take根据主键id查询","children":[]},{"level":3,"title":"使用Find根据主键id查询","slug":"使用find根据主键id查询","link":"#使用find根据主键id查询","children":[]}]},{"level":2,"title":"查询全部","slug":"查询全部","link":"#查询全部","children":[{"level":3,"title":"Find","slug":"find","link":"#find","children":[]}]},{"level":2,"title":"条件查询","slug":"条件查询","link":"#条件查询","children":[{"level":3,"title":"Where","slug":"where","link":"#where","children":[]},{"level":3,"title":"根据Struct、Map、Slice查询","slug":"根据struct、map、slice查询","link":"#根据struct、map、slice查询","children":[]}]},{"level":2,"title":"内联条件查询","slug":"内联条件查询","link":"#内联条件查询","children":[{"level":3,"title":"根据主键id查询","slug":"根据主键id查询","link":"#根据主键id查询","children":[]},{"level":3,"title":"使用普通查询条件","slug":"使用普通查询条件","link":"#使用普通查询条件","children":[]},{"level":3,"title":"使用结构体、Slice、Map","slug":"使用结构体、slice、map","link":"#使用结构体、slice、map","children":[]}]},{"level":2,"title":"Not条件","slug":"not条件","link":"#not条件","children":[]},{"level":2,"title":"Or条件","slug":"or条件","link":"#or条件","children":[]},{"level":2,"title":"Select查询选择的字段","slug":"select查询选择的字段","link":"#select查询选择的字段","children":[]},{"level":2,"title":"Order 排序","slug":"order-排序","link":"#order-排序","children":[]},{"level":2,"title":"Limit、Offset","slug":"limit、offset","link":"#limit、offset","children":[]},{"level":2,"title":"Scan","slug":"scan","link":"#scan","children":[]},{"level":2,"title":"Group分组","slug":"group分组","link":"#group分组","children":[]},{"level":2,"title":"Raw使用原生SQL","slug":"raw使用原生sql","link":"#raw使用原生sql","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gorm/Query.md"}'),o={name:"knowledge-deposition/GoLang/Gorm/Query.md"},p=l(`

Query

  • 下面的操作都以该Teacher结构体为基础
Go
type Teacher struct {
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const A=JSON.parse('{"title":"Query","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"检索单个","slug":"检索单个","link":"#检索单个","children":[{"level":3,"title":"First","slug":"first","link":"#first","children":[]},{"level":3,"title":"Last","slug":"last","link":"#last","children":[]},{"level":3,"title":"Take","slug":"take","link":"#take","children":[]},{"level":3,"title":"使用Take根据主键id查询","slug":"使用take根据主键id查询","link":"#使用take根据主键id查询","children":[]},{"level":3,"title":"使用Find根据主键id查询","slug":"使用find根据主键id查询","link":"#使用find根据主键id查询","children":[]}]},{"level":2,"title":"查询全部","slug":"查询全部","link":"#查询全部","children":[{"level":3,"title":"Find","slug":"find","link":"#find","children":[]}]},{"level":2,"title":"条件查询","slug":"条件查询","link":"#条件查询","children":[{"level":3,"title":"Where","slug":"where","link":"#where","children":[]},{"level":3,"title":"根据Struct、Map、Slice查询","slug":"根据struct、map、slice查询","link":"#根据struct、map、slice查询","children":[]}]},{"level":2,"title":"内联条件查询","slug":"内联条件查询","link":"#内联条件查询","children":[{"level":3,"title":"根据主键id查询","slug":"根据主键id查询","link":"#根据主键id查询","children":[]},{"level":3,"title":"使用普通查询条件","slug":"使用普通查询条件","link":"#使用普通查询条件","children":[]},{"level":3,"title":"使用结构体、Slice、Map","slug":"使用结构体、slice、map","link":"#使用结构体、slice、map","children":[]}]},{"level":2,"title":"Not条件","slug":"not条件","link":"#not条件","children":[]},{"level":2,"title":"Or条件","slug":"or条件","link":"#or条件","children":[]},{"level":2,"title":"Select查询选择的字段","slug":"select查询选择的字段","link":"#select查询选择的字段","children":[]},{"level":2,"title":"Order 排序","slug":"order-排序","link":"#order-排序","children":[]},{"level":2,"title":"Limit、Offset","slug":"limit、offset","link":"#limit、offset","children":[]},{"level":2,"title":"Scan","slug":"scan","link":"#scan","children":[]},{"level":2,"title":"Group分组","slug":"group分组","link":"#group分组","children":[]},{"level":2,"title":"Raw使用原生SQL","slug":"raw使用原生sql","link":"#raw使用原生sql","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gorm/Query.md"}'),o={name:"knowledge-deposition/GoLang/Gorm/Query.md"},p=l(`

Query

  • 下面的操作都以该Teacher结构体为基础
Go
type Teacher struct {
 	gorm.Model
 	Name    string \`gorm:"type:varchar(32)"\`
 	Age     uint8
diff --git a/assets/knowledge-deposition_GoLang_Gorm_Query.md.fa5259b4.lean.js b/assets/knowledge-deposition_GoLang_Gorm_Query.md.92a03a34.lean.js
similarity index 97%
rename from assets/knowledge-deposition_GoLang_Gorm_Query.md.fa5259b4.lean.js
rename to assets/knowledge-deposition_GoLang_Gorm_Query.md.92a03a34.lean.js
index ed5d6907..00dd0f9e 100644
--- a/assets/knowledge-deposition_GoLang_Gorm_Query.md.fa5259b4.lean.js
+++ b/assets/knowledge-deposition_GoLang_Gorm_Query.md.92a03a34.lean.js
@@ -1 +1 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const A=JSON.parse('{"title":"Query","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"检索单个","slug":"检索单个","link":"#检索单个","children":[{"level":3,"title":"First","slug":"first","link":"#first","children":[]},{"level":3,"title":"Last","slug":"last","link":"#last","children":[]},{"level":3,"title":"Take","slug":"take","link":"#take","children":[]},{"level":3,"title":"使用Take根据主键id查询","slug":"使用take根据主键id查询","link":"#使用take根据主键id查询","children":[]},{"level":3,"title":"使用Find根据主键id查询","slug":"使用find根据主键id查询","link":"#使用find根据主键id查询","children":[]}]},{"level":2,"title":"查询全部","slug":"查询全部","link":"#查询全部","children":[{"level":3,"title":"Find","slug":"find","link":"#find","children":[]}]},{"level":2,"title":"条件查询","slug":"条件查询","link":"#条件查询","children":[{"level":3,"title":"Where","slug":"where","link":"#where","children":[]},{"level":3,"title":"根据Struct、Map、Slice查询","slug":"根据struct、map、slice查询","link":"#根据struct、map、slice查询","children":[]}]},{"level":2,"title":"内联条件查询","slug":"内联条件查询","link":"#内联条件查询","children":[{"level":3,"title":"根据主键id查询","slug":"根据主键id查询","link":"#根据主键id查询","children":[]},{"level":3,"title":"使用普通查询条件","slug":"使用普通查询条件","link":"#使用普通查询条件","children":[]},{"level":3,"title":"使用结构体、Slice、Map","slug":"使用结构体、slice、map","link":"#使用结构体、slice、map","children":[]}]},{"level":2,"title":"Not条件","slug":"not条件","link":"#not条件","children":[]},{"level":2,"title":"Or条件","slug":"or条件","link":"#or条件","children":[]},{"level":2,"title":"Select查询选择的字段","slug":"select查询选择的字段","link":"#select查询选择的字段","children":[]},{"level":2,"title":"Order 排序","slug":"order-排序","link":"#order-排序","children":[]},{"level":2,"title":"Limit、Offset","slug":"limit、offset","link":"#limit、offset","children":[]},{"level":2,"title":"Scan","slug":"scan","link":"#scan","children":[]},{"level":2,"title":"Group分组","slug":"group分组","link":"#group分组","children":[]},{"level":2,"title":"Raw使用原生SQL","slug":"raw使用原生sql","link":"#raw使用原生sql","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gorm/Query.md"}'),o={name:"knowledge-deposition/GoLang/Gorm/Query.md"},p=l("",70),e=[p];function t(c,r,D,F,y,i){return n(),a("div",null,e)}const d=s(o,[["render",t]]);export{A as __pageData,d as default};
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const A=JSON.parse('{"title":"Query","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"检索单个","slug":"检索单个","link":"#检索单个","children":[{"level":3,"title":"First","slug":"first","link":"#first","children":[]},{"level":3,"title":"Last","slug":"last","link":"#last","children":[]},{"level":3,"title":"Take","slug":"take","link":"#take","children":[]},{"level":3,"title":"使用Take根据主键id查询","slug":"使用take根据主键id查询","link":"#使用take根据主键id查询","children":[]},{"level":3,"title":"使用Find根据主键id查询","slug":"使用find根据主键id查询","link":"#使用find根据主键id查询","children":[]}]},{"level":2,"title":"查询全部","slug":"查询全部","link":"#查询全部","children":[{"level":3,"title":"Find","slug":"find","link":"#find","children":[]}]},{"level":2,"title":"条件查询","slug":"条件查询","link":"#条件查询","children":[{"level":3,"title":"Where","slug":"where","link":"#where","children":[]},{"level":3,"title":"根据Struct、Map、Slice查询","slug":"根据struct、map、slice查询","link":"#根据struct、map、slice查询","children":[]}]},{"level":2,"title":"内联条件查询","slug":"内联条件查询","link":"#内联条件查询","children":[{"level":3,"title":"根据主键id查询","slug":"根据主键id查询","link":"#根据主键id查询","children":[]},{"level":3,"title":"使用普通查询条件","slug":"使用普通查询条件","link":"#使用普通查询条件","children":[]},{"level":3,"title":"使用结构体、Slice、Map","slug":"使用结构体、slice、map","link":"#使用结构体、slice、map","children":[]}]},{"level":2,"title":"Not条件","slug":"not条件","link":"#not条件","children":[]},{"level":2,"title":"Or条件","slug":"or条件","link":"#or条件","children":[]},{"level":2,"title":"Select查询选择的字段","slug":"select查询选择的字段","link":"#select查询选择的字段","children":[]},{"level":2,"title":"Order 排序","slug":"order-排序","link":"#order-排序","children":[]},{"level":2,"title":"Limit、Offset","slug":"limit、offset","link":"#limit、offset","children":[]},{"level":2,"title":"Scan","slug":"scan","link":"#scan","children":[]},{"level":2,"title":"Group分组","slug":"group分组","link":"#group分组","children":[]},{"level":2,"title":"Raw使用原生SQL","slug":"raw使用原生sql","link":"#raw使用原生sql","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gorm/Query.md"}'),o={name:"knowledge-deposition/GoLang/Gorm/Query.md"},p=l("",70),e=[p];function t(c,r,D,F,y,i){return n(),a("div",null,e)}const d=s(o,[["render",t]]);export{A as __pageData,d as default};
diff --git a/assets/knowledge-deposition_GoLang_Gorm_Update.md.5660fb43.js b/assets/knowledge-deposition_GoLang_Gorm_Update.md.0967da68.js
similarity index 99%
rename from assets/knowledge-deposition_GoLang_Gorm_Update.md.5660fb43.js
rename to assets/knowledge-deposition_GoLang_Gorm_Update.md.0967da68.js
index 06870b3a..4282bb0a 100644
--- a/assets/knowledge-deposition_GoLang_Gorm_Update.md.5660fb43.js
+++ b/assets/knowledge-deposition_GoLang_Gorm_Update.md.0967da68.js
@@ -1 +1 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"Update","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"保存所有字段","slug":"保存所有字段","link":"#保存所有字段","children":[]},{"level":2,"title":"更新单列","slug":"更新单列","link":"#更新单列","children":[]},{"level":2,"title":"更新多列","slug":"更新多列","link":"#更新多列","children":[]},{"level":2,"title":"更新指定字段","slug":"更新指定字段","link":"#更新指定字段","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gorm/Update.md"}'),o={name:"knowledge-deposition/GoLang/Gorm/Update.md"},p=l('

Update

保存所有字段

  • Save会保存所有字段,包括零值

  • Save是一个组合函数,如果保存的数据不包含主键,它将执行Create,否则将执行Update(包含所有字段)

Go
var first Teacher\nDB.First(&first)\nfirst.Name = "First Save"\nfirst.Age = 88\nDB.Save(&first)\n// UPDATE `teachers` SET `name`='First Save',`age`=88,`gender`=1 WHERE `id` = 1\n\nvar s Teacher\ns.Age = 98\nDB.Save(&s)\n// INSERT INTO `teachers` (`name`,`age`,`gender`) VALUES ('',98,0)\n\nDB.Save(&Teacher{ID: 11, Name: "魔灵", Age: 20, Gender: 1})\n// UPDATE `teachers` SET `name`='魔灵',`age`=20,`gender`=1 WHERE `id` = 11\n

更新单列

  • 使用Update更新单列时,需要指定条件,否则的话会返回ErrMissingWhereClause错误

  • 当使用了Model方法,且该对象主键有值,该值会被用于构建条件

Go
DB.Model(&Teacher{}).Where("age = ? AND gender = ?", "98", "0").Update("name", "动灵")\n// UPDATE `teachers` SET `name`='动灵' WHERE age = '98' AND gender = '0'\n\nvar u Teacher\nDB.Take(&u)\nDB.Model(&u).Update("name", "剑灵")\n// SELECT * FROM `teachers` LIMIT 1\n// UPDATE `teachers` SET `name`='剑灵' WHERE `id` = 1\n

更新多列

  • Updates方法支持structmap[string]interface{}参数

  • 当使用struct更新时,默认情况下,GORM只会更新非零值的字段

Go
s := Teacher{ID: 2}\nDB.Model(&s).Updates(Teacher{Age: 19})\n// UPDATE `teachers` SET `age`=19 WHERE `id` = 2\n\ns := Teacher{ID: 2}\nDB.Model(&s).Updates(Teacher{Age: 19, Name: "吴文登"})\n// UPDATE `teachers` SET `name`='吴文登',`age`=19 WHERE `id` = 2\n

更新指定字段

Go
// 使用Select指定更新的字段\ns := Teacher{ID: 2}\nDB.Model(&s).Select("age", "gender").Updates(Teacher{Age: 19, Name: "吴文登", Gender: 1})\n// UPDATE `teachers` SET `age`=19,`gender`=1 WHERE `id` = 2\n
',12),e=[p];function t(c,r,D,F,y,A){return n(),a("div",null,e)}const d=s(o,[["render",t]]);export{i as __pageData,d as default}; +import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"Update","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"保存所有字段","slug":"保存所有字段","link":"#保存所有字段","children":[]},{"level":2,"title":"更新单列","slug":"更新单列","link":"#更新单列","children":[]},{"level":2,"title":"更新多列","slug":"更新多列","link":"#更新多列","children":[]},{"level":2,"title":"更新指定字段","slug":"更新指定字段","link":"#更新指定字段","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gorm/Update.md"}'),o={name:"knowledge-deposition/GoLang/Gorm/Update.md"},p=l('

Update

保存所有字段

  • Save会保存所有字段,包括零值

  • Save是一个组合函数,如果保存的数据不包含主键,它将执行Create,否则将执行Update(包含所有字段)

Go
var first Teacher\nDB.First(&first)\nfirst.Name = "First Save"\nfirst.Age = 88\nDB.Save(&first)\n// UPDATE `teachers` SET `name`='First Save',`age`=88,`gender`=1 WHERE `id` = 1\n\nvar s Teacher\ns.Age = 98\nDB.Save(&s)\n// INSERT INTO `teachers` (`name`,`age`,`gender`) VALUES ('',98,0)\n\nDB.Save(&Teacher{ID: 11, Name: "魔灵", Age: 20, Gender: 1})\n// UPDATE `teachers` SET `name`='魔灵',`age`=20,`gender`=1 WHERE `id` = 11\n

更新单列

  • 使用Update更新单列时,需要指定条件,否则的话会返回ErrMissingWhereClause错误

  • 当使用了Model方法,且该对象主键有值,该值会被用于构建条件

Go
DB.Model(&Teacher{}).Where("age = ? AND gender = ?", "98", "0").Update("name", "动灵")\n// UPDATE `teachers` SET `name`='动灵' WHERE age = '98' AND gender = '0'\n\nvar u Teacher\nDB.Take(&u)\nDB.Model(&u).Update("name", "剑灵")\n// SELECT * FROM `teachers` LIMIT 1\n// UPDATE `teachers` SET `name`='剑灵' WHERE `id` = 1\n

更新多列

  • Updates方法支持structmap[string]interface{}参数

  • 当使用struct更新时,默认情况下,GORM只会更新非零值的字段

Go
s := Teacher{ID: 2}\nDB.Model(&s).Updates(Teacher{Age: 19})\n// UPDATE `teachers` SET `age`=19 WHERE `id` = 2\n\ns := Teacher{ID: 2}\nDB.Model(&s).Updates(Teacher{Age: 19, Name: "吴文登"})\n// UPDATE `teachers` SET `name`='吴文登',`age`=19 WHERE `id` = 2\n

更新指定字段

Go
// 使用Select指定更新的字段\ns := Teacher{ID: 2}\nDB.Model(&s).Select("age", "gender").Updates(Teacher{Age: 19, Name: "吴文登", Gender: 1})\n// UPDATE `teachers` SET `age`=19,`gender`=1 WHERE `id` = 2\n
',12),e=[p];function t(c,r,D,F,y,A){return n(),a("div",null,e)}const d=s(o,[["render",t]]);export{i as __pageData,d as default}; diff --git a/assets/knowledge-deposition_GoLang_Gorm_Update.md.5660fb43.lean.js b/assets/knowledge-deposition_GoLang_Gorm_Update.md.0967da68.lean.js similarity index 92% rename from assets/knowledge-deposition_GoLang_Gorm_Update.md.5660fb43.lean.js rename to assets/knowledge-deposition_GoLang_Gorm_Update.md.0967da68.lean.js index 75522cad..c3977744 100644 --- a/assets/knowledge-deposition_GoLang_Gorm_Update.md.5660fb43.lean.js +++ b/assets/knowledge-deposition_GoLang_Gorm_Update.md.0967da68.lean.js @@ -1 +1 @@ -import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"Update","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"保存所有字段","slug":"保存所有字段","link":"#保存所有字段","children":[]},{"level":2,"title":"更新单列","slug":"更新单列","link":"#更新单列","children":[]},{"level":2,"title":"更新多列","slug":"更新多列","link":"#更新多列","children":[]},{"level":2,"title":"更新指定字段","slug":"更新指定字段","link":"#更新指定字段","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gorm/Update.md"}'),o={name:"knowledge-deposition/GoLang/Gorm/Update.md"},p=l("",12),e=[p];function t(c,r,D,F,y,A){return n(),a("div",null,e)}const d=s(o,[["render",t]]);export{i as __pageData,d as default}; +import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"Update","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"保存所有字段","slug":"保存所有字段","link":"#保存所有字段","children":[]},{"level":2,"title":"更新单列","slug":"更新单列","link":"#更新单列","children":[]},{"level":2,"title":"更新多列","slug":"更新多列","link":"#更新多列","children":[]},{"level":2,"title":"更新指定字段","slug":"更新指定字段","link":"#更新指定字段","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gorm/Update.md"}'),o={name:"knowledge-deposition/GoLang/Gorm/Update.md"},p=l("",12),e=[p];function t(c,r,D,F,y,A){return n(),a("div",null,e)}const d=s(o,[["render",t]]);export{i as __pageData,d as default}; diff --git "a/assets/knowledge-deposition_GoLang_Gorm_\344\272\213\345\212\241.md.9638a1c8.js" "b/assets/knowledge-deposition_GoLang_Gorm_\344\272\213\345\212\241.md.6d41e534.js" similarity index 99% rename from "assets/knowledge-deposition_GoLang_Gorm_\344\272\213\345\212\241.md.9638a1c8.js" rename to "assets/knowledge-deposition_GoLang_Gorm_\344\272\213\345\212\241.md.6d41e534.js" index e56d0aa4..077f6197 100644 --- "a/assets/knowledge-deposition_GoLang_Gorm_\344\272\213\345\212\241.md.9638a1c8.js" +++ "b/assets/knowledge-deposition_GoLang_Gorm_\344\272\213\345\212\241.md.6d41e534.js" @@ -1,4 +1,4 @@ -import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"事务","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"普通事务","slug":"普通事务","link":"#普通事务","children":[]},{"level":2,"title":"嵌套事务","slug":"嵌套事务","link":"#嵌套事务","children":[]},{"level":2,"title":"手动事务","slug":"手动事务","link":"#手动事务","children":[{"level":3,"title":"Commit","slug":"commit","link":"#commit","children":[]},{"level":3,"title":"Rollback","slug":"rollback","link":"#rollback","children":[]},{"level":3,"title":"记录回滚点","slug":"记录回滚点","link":"#记录回滚点","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/Gorm/事务.md"}'),o={name:"knowledge-deposition/GoLang/Gorm/事务.md"},p=l(`

事务

数据准备,会自动创建t_dogs

Go
type TDog struct {
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"事务","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"普通事务","slug":"普通事务","link":"#普通事务","children":[]},{"level":2,"title":"嵌套事务","slug":"嵌套事务","link":"#嵌套事务","children":[]},{"level":2,"title":"手动事务","slug":"手动事务","link":"#手动事务","children":[{"level":3,"title":"Commit","slug":"commit","link":"#commit","children":[]},{"level":3,"title":"Rollback","slug":"rollback","link":"#rollback","children":[]},{"level":3,"title":"记录回滚点","slug":"记录回滚点","link":"#记录回滚点","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/Gorm/事务.md"}'),o={name:"knowledge-deposition/GoLang/Gorm/事务.md"},p=l(`

事务

数据准备,会自动创建t_dogs

Go
type TDog struct {
 	Name string
 }
 
diff --git "a/assets/knowledge-deposition_GoLang_Gorm_\344\272\213\345\212\241.md.9638a1c8.lean.js" "b/assets/knowledge-deposition_GoLang_Gorm_\344\272\213\345\212\241.md.6d41e534.lean.js"
similarity index 93%
rename from "assets/knowledge-deposition_GoLang_Gorm_\344\272\213\345\212\241.md.9638a1c8.lean.js"
rename to "assets/knowledge-deposition_GoLang_Gorm_\344\272\213\345\212\241.md.6d41e534.lean.js"
index 72ce3ae2..fd0d57ff 100644
--- "a/assets/knowledge-deposition_GoLang_Gorm_\344\272\213\345\212\241.md.9638a1c8.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_Gorm_\344\272\213\345\212\241.md.6d41e534.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"事务","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"普通事务","slug":"普通事务","link":"#普通事务","children":[]},{"level":2,"title":"嵌套事务","slug":"嵌套事务","link":"#嵌套事务","children":[]},{"level":2,"title":"手动事务","slug":"手动事务","link":"#手动事务","children":[{"level":3,"title":"Commit","slug":"commit","link":"#commit","children":[]},{"level":3,"title":"Rollback","slug":"rollback","link":"#rollback","children":[]},{"level":3,"title":"记录回滚点","slug":"记录回滚点","link":"#记录回滚点","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/Gorm/事务.md"}'),o={name:"knowledge-deposition/GoLang/Gorm/事务.md"},p=l("",43),e=[p];function t(c,D,r,F,y,A){return a(),n("div",null,e)}const d=s(o,[["render",t]]);export{i as __pageData,d as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"事务","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"普通事务","slug":"普通事务","link":"#普通事务","children":[]},{"level":2,"title":"嵌套事务","slug":"嵌套事务","link":"#嵌套事务","children":[]},{"level":2,"title":"手动事务","slug":"手动事务","link":"#手动事务","children":[{"level":3,"title":"Commit","slug":"commit","link":"#commit","children":[]},{"level":3,"title":"Rollback","slug":"rollback","link":"#rollback","children":[]},{"level":3,"title":"记录回滚点","slug":"记录回滚点","link":"#记录回滚点","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/Gorm/事务.md"}'),o={name:"knowledge-deposition/GoLang/Gorm/事务.md"},p=l("",43),e=[p];function t(c,D,r,F,y,A){return a(),n("div",null,e)}const d=s(o,[["render",t]]);export{i as __pageData,d as default};
diff --git "a/assets/knowledge-deposition_GoLang_Gorm_\345\205\263\350\201\224\344\271\213\344\270\200\345\257\271\344\270\200.md.1db24d02.js" "b/assets/knowledge-deposition_GoLang_Gorm_\345\205\263\350\201\224\344\271\213\344\270\200\345\257\271\344\270\200.md.0444c4b8.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_Gorm_\345\205\263\350\201\224\344\271\213\344\270\200\345\257\271\344\270\200.md.1db24d02.js"
rename to "assets/knowledge-deposition_GoLang_Gorm_\345\205\263\350\201\224\344\271\213\344\270\200\345\257\271\344\270\200.md.0444c4b8.js"
index 7375be5f..b43dff2e 100644
--- "a/assets/knowledge-deposition_GoLang_Gorm_\345\205\263\350\201\224\344\271\213\344\270\200\345\257\271\344\270\200.md.1db24d02.js"
+++ "b/assets/knowledge-deposition_GoLang_Gorm_\345\205\263\350\201\224\344\271\213\344\270\200\345\257\271\344\270\200.md.0444c4b8.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"关联之一对一","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"Belongs To","slug":"belongs-to","link":"#belongs-to","children":[{"level":3,"title":"创建关联","slug":"创建关联","link":"#创建关联","children":[]},{"level":3,"title":"Append替换关联","slug":"append替换关联","link":"#append替换关联","children":[]},{"level":3,"title":"Replace替换关联","slug":"replace替换关联","link":"#replace替换关联","children":[]},{"level":3,"title":"Delete删除关联","slug":"delete删除关联","link":"#delete删除关联","children":[]},{"level":3,"title":"Clear清除所有关联","slug":"clear清除所有关联","link":"#clear清除所有关联","children":[]},{"level":3,"title":"查询关联数据","slug":"查询关联数据","link":"#查询关联数据","children":[]}]},{"level":2,"title":"Has One","slug":"has-one","link":"#has-one","children":[{"level":3,"title":"创建数据","slug":"创建数据","link":"#创建数据","children":[]},{"level":3,"title":"Append替换数据","slug":"append替换数据","link":"#append替换数据","children":[]},{"level":3,"title":"Replace替换数据","slug":"replace替换数据","link":"#replace替换数据","children":[]},{"level":3,"title":"Delete、Clear","slug":"delete、clear","link":"#delete、clear","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/Gorm/关联之一对一.md"}'),p={name:"knowledge-deposition/GoLang/Gorm/关联之一对一.md"},o=l(`

关联之一对一

一对一的场景下,有两种模式,一种是Belongs To(属于),一种是Has One(拥有一个)

Belongs To

belongs to可以理解为A身上打了B标签A知道B的所有信息,但是BA一无所知,可以理解为单相思自作多情,一方会在自己这边记住对方,而对方却毫不知情

Go
type Dog struct {
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"关联之一对一","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"Belongs To","slug":"belongs-to","link":"#belongs-to","children":[{"level":3,"title":"创建关联","slug":"创建关联","link":"#创建关联","children":[]},{"level":3,"title":"Append替换关联","slug":"append替换关联","link":"#append替换关联","children":[]},{"level":3,"title":"Replace替换关联","slug":"replace替换关联","link":"#replace替换关联","children":[]},{"level":3,"title":"Delete删除关联","slug":"delete删除关联","link":"#delete删除关联","children":[]},{"level":3,"title":"Clear清除所有关联","slug":"clear清除所有关联","link":"#clear清除所有关联","children":[]},{"level":3,"title":"查询关联数据","slug":"查询关联数据","link":"#查询关联数据","children":[]}]},{"level":2,"title":"Has One","slug":"has-one","link":"#has-one","children":[{"level":3,"title":"创建数据","slug":"创建数据","link":"#创建数据","children":[]},{"level":3,"title":"Append替换数据","slug":"append替换数据","link":"#append替换数据","children":[]},{"level":3,"title":"Replace替换数据","slug":"replace替换数据","link":"#replace替换数据","children":[]},{"level":3,"title":"Delete、Clear","slug":"delete、clear","link":"#delete、clear","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/Gorm/关联之一对一.md"}'),p={name:"knowledge-deposition/GoLang/Gorm/关联之一对一.md"},o=l(`

关联之一对一

一对一的场景下,有两种模式,一种是Belongs To(属于),一种是Has One(拥有一个)

Belongs To

belongs to可以理解为A身上打了B标签A知道B的所有信息,但是BA一无所知,可以理解为单相思自作多情,一方会在自己这边记住对方,而对方却毫不知情

Go
type Dog struct {
 	ID        uint
 	Name      string
 	GirlGod   GirlGod
diff --git "a/assets/knowledge-deposition_GoLang_Gorm_\345\205\263\350\201\224\344\271\213\344\270\200\345\257\271\344\270\200.md.1db24d02.lean.js" "b/assets/knowledge-deposition_GoLang_Gorm_\345\205\263\350\201\224\344\271\213\344\270\200\345\257\271\344\270\200.md.0444c4b8.lean.js"
similarity index 96%
rename from "assets/knowledge-deposition_GoLang_Gorm_\345\205\263\350\201\224\344\271\213\344\270\200\345\257\271\344\270\200.md.1db24d02.lean.js"
rename to "assets/knowledge-deposition_GoLang_Gorm_\345\205\263\350\201\224\344\271\213\344\270\200\345\257\271\344\270\200.md.0444c4b8.lean.js"
index bcd0a942..7f74a6df 100644
--- "a/assets/knowledge-deposition_GoLang_Gorm_\345\205\263\350\201\224\344\271\213\344\270\200\345\257\271\344\270\200.md.1db24d02.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_Gorm_\345\205\263\350\201\224\344\271\213\344\270\200\345\257\271\344\270\200.md.0444c4b8.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"关联之一对一","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"Belongs To","slug":"belongs-to","link":"#belongs-to","children":[{"level":3,"title":"创建关联","slug":"创建关联","link":"#创建关联","children":[]},{"level":3,"title":"Append替换关联","slug":"append替换关联","link":"#append替换关联","children":[]},{"level":3,"title":"Replace替换关联","slug":"replace替换关联","link":"#replace替换关联","children":[]},{"level":3,"title":"Delete删除关联","slug":"delete删除关联","link":"#delete删除关联","children":[]},{"level":3,"title":"Clear清除所有关联","slug":"clear清除所有关联","link":"#clear清除所有关联","children":[]},{"level":3,"title":"查询关联数据","slug":"查询关联数据","link":"#查询关联数据","children":[]}]},{"level":2,"title":"Has One","slug":"has-one","link":"#has-one","children":[{"level":3,"title":"创建数据","slug":"创建数据","link":"#创建数据","children":[]},{"level":3,"title":"Append替换数据","slug":"append替换数据","link":"#append替换数据","children":[]},{"level":3,"title":"Replace替换数据","slug":"replace替换数据","link":"#replace替换数据","children":[]},{"level":3,"title":"Delete、Clear","slug":"delete、clear","link":"#delete、clear","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/Gorm/关联之一对一.md"}'),p={name:"knowledge-deposition/GoLang/Gorm/关联之一对一.md"},o=l("",73),e=[o];function t(c,D,r,F,y,C){return a(),n("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"关联之一对一","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"Belongs To","slug":"belongs-to","link":"#belongs-to","children":[{"level":3,"title":"创建关联","slug":"创建关联","link":"#创建关联","children":[]},{"level":3,"title":"Append替换关联","slug":"append替换关联","link":"#append替换关联","children":[]},{"level":3,"title":"Replace替换关联","slug":"replace替换关联","link":"#replace替换关联","children":[]},{"level":3,"title":"Delete删除关联","slug":"delete删除关联","link":"#delete删除关联","children":[]},{"level":3,"title":"Clear清除所有关联","slug":"clear清除所有关联","link":"#clear清除所有关联","children":[]},{"level":3,"title":"查询关联数据","slug":"查询关联数据","link":"#查询关联数据","children":[]}]},{"level":2,"title":"Has One","slug":"has-one","link":"#has-one","children":[{"level":3,"title":"创建数据","slug":"创建数据","link":"#创建数据","children":[]},{"level":3,"title":"Append替换数据","slug":"append替换数据","link":"#append替换数据","children":[]},{"level":3,"title":"Replace替换数据","slug":"replace替换数据","link":"#replace替换数据","children":[]},{"level":3,"title":"Delete、Clear","slug":"delete、clear","link":"#delete、clear","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/Gorm/关联之一对一.md"}'),p={name:"knowledge-deposition/GoLang/Gorm/关联之一对一.md"},o=l("",73),e=[o];function t(c,D,r,F,y,C){return a(),n("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
diff --git "a/assets/knowledge-deposition_GoLang_Gorm_\345\205\263\350\201\224\344\271\213\344\270\200\345\257\271\345\244\232.md.423d4a22.js" "b/assets/knowledge-deposition_GoLang_Gorm_\345\205\263\350\201\224\344\271\213\344\270\200\345\257\271\345\244\232.md.1cfdacb2.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_Gorm_\345\205\263\350\201\224\344\271\213\344\270\200\345\257\271\345\244\232.md.423d4a22.js"
rename to "assets/knowledge-deposition_GoLang_Gorm_\345\205\263\350\201\224\344\271\213\344\270\200\345\257\271\345\244\232.md.1cfdacb2.js"
index fe5a0c66..20ff1bed 100644
--- "a/assets/knowledge-deposition_GoLang_Gorm_\345\205\263\350\201\224\344\271\213\344\270\200\345\257\271\345\244\232.md.423d4a22.js"
+++ "b/assets/knowledge-deposition_GoLang_Gorm_\345\205\263\350\201\224\344\271\213\344\270\200\345\257\271\345\244\232.md.1cfdacb2.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"关联之一对多","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"操作数据","slug":"操作数据","link":"#操作数据","children":[{"level":3,"title":"Append","slug":"append","link":"#append","children":[]},{"level":3,"title":"Replace","slug":"replace","link":"#replace","children":[]},{"level":3,"title":"Delete","slug":"delete","link":"#delete","children":[]},{"level":3,"title":"Clear","slug":"clear","link":"#clear","children":[]}]},{"level":2,"title":"查询数据","slug":"查询数据","link":"#查询数据","children":[{"level":3,"title":"使用自定义预加载SQL方式查询","slug":"使用自定义预加载sql方式查询","link":"#使用自定义预加载sql方式查询","children":[]},{"level":3,"title":"使用预加载条件查询方式","slug":"使用预加载条件查询方式","link":"#使用预加载条件查询方式","children":[]},{"level":3,"title":"链式预加载方式查询","slug":"链式预加载方式查询","link":"#链式预加载方式查询","children":[]},{"level":3,"title":"Joins查询","slug":"joins查询","link":"#joins查询","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/Gorm/关联之一对多.md"}'),p={name:"knowledge-deposition/GoLang/Gorm/关联之一对多.md"},o=l(`

关联之一对多

一个女神可以有多个狗哥,一个狗哥只属于一个女神

结构体如下:

Go
type HMDog struct {
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"关联之一对多","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"操作数据","slug":"操作数据","link":"#操作数据","children":[{"level":3,"title":"Append","slug":"append","link":"#append","children":[]},{"level":3,"title":"Replace","slug":"replace","link":"#replace","children":[]},{"level":3,"title":"Delete","slug":"delete","link":"#delete","children":[]},{"level":3,"title":"Clear","slug":"clear","link":"#clear","children":[]}]},{"level":2,"title":"查询数据","slug":"查询数据","link":"#查询数据","children":[{"level":3,"title":"使用自定义预加载SQL方式查询","slug":"使用自定义预加载sql方式查询","link":"#使用自定义预加载sql方式查询","children":[]},{"level":3,"title":"使用预加载条件查询方式","slug":"使用预加载条件查询方式","link":"#使用预加载条件查询方式","children":[]},{"level":3,"title":"链式预加载方式查询","slug":"链式预加载方式查询","link":"#链式预加载方式查询","children":[]},{"level":3,"title":"Joins查询","slug":"joins查询","link":"#joins查询","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/Gorm/关联之一对多.md"}'),p={name:"knowledge-deposition/GoLang/Gorm/关联之一对多.md"},o=l(`

关联之一对多

一个女神可以有多个狗哥,一个狗哥只属于一个女神

结构体如下:

Go
type HMDog struct {
 	ID          uint
 	Name        string
 	HMGirlGodID uint // 外键,就是HMGirlGod.ID
diff --git "a/assets/knowledge-deposition_GoLang_Gorm_\345\205\263\350\201\224\344\271\213\344\270\200\345\257\271\345\244\232.md.423d4a22.lean.js" "b/assets/knowledge-deposition_GoLang_Gorm_\345\205\263\350\201\224\344\271\213\344\270\200\345\257\271\345\244\232.md.1cfdacb2.lean.js"
similarity index 95%
rename from "assets/knowledge-deposition_GoLang_Gorm_\345\205\263\350\201\224\344\271\213\344\270\200\345\257\271\345\244\232.md.423d4a22.lean.js"
rename to "assets/knowledge-deposition_GoLang_Gorm_\345\205\263\350\201\224\344\271\213\344\270\200\345\257\271\345\244\232.md.1cfdacb2.lean.js"
index 7975a3bc..521c3f5a 100644
--- "a/assets/knowledge-deposition_GoLang_Gorm_\345\205\263\350\201\224\344\271\213\344\270\200\345\257\271\345\244\232.md.423d4a22.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_Gorm_\345\205\263\350\201\224\344\271\213\344\270\200\345\257\271\345\244\232.md.1cfdacb2.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"关联之一对多","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"操作数据","slug":"操作数据","link":"#操作数据","children":[{"level":3,"title":"Append","slug":"append","link":"#append","children":[]},{"level":3,"title":"Replace","slug":"replace","link":"#replace","children":[]},{"level":3,"title":"Delete","slug":"delete","link":"#delete","children":[]},{"level":3,"title":"Clear","slug":"clear","link":"#clear","children":[]}]},{"level":2,"title":"查询数据","slug":"查询数据","link":"#查询数据","children":[{"level":3,"title":"使用自定义预加载SQL方式查询","slug":"使用自定义预加载sql方式查询","link":"#使用自定义预加载sql方式查询","children":[]},{"level":3,"title":"使用预加载条件查询方式","slug":"使用预加载条件查询方式","link":"#使用预加载条件查询方式","children":[]},{"level":3,"title":"链式预加载方式查询","slug":"链式预加载方式查询","link":"#链式预加载方式查询","children":[]},{"level":3,"title":"Joins查询","slug":"joins查询","link":"#joins查询","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/Gorm/关联之一对多.md"}'),p={name:"knowledge-deposition/GoLang/Gorm/关联之一对多.md"},o=l("",75),e=[o];function t(c,D,r,F,y,C){return a(),n("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"关联之一对多","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"操作数据","slug":"操作数据","link":"#操作数据","children":[{"level":3,"title":"Append","slug":"append","link":"#append","children":[]},{"level":3,"title":"Replace","slug":"replace","link":"#replace","children":[]},{"level":3,"title":"Delete","slug":"delete","link":"#delete","children":[]},{"level":3,"title":"Clear","slug":"clear","link":"#clear","children":[]}]},{"level":2,"title":"查询数据","slug":"查询数据","link":"#查询数据","children":[{"level":3,"title":"使用自定义预加载SQL方式查询","slug":"使用自定义预加载sql方式查询","link":"#使用自定义预加载sql方式查询","children":[]},{"level":3,"title":"使用预加载条件查询方式","slug":"使用预加载条件查询方式","link":"#使用预加载条件查询方式","children":[]},{"level":3,"title":"链式预加载方式查询","slug":"链式预加载方式查询","link":"#链式预加载方式查询","children":[]},{"level":3,"title":"Joins查询","slug":"joins查询","link":"#joins查询","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/Gorm/关联之一对多.md"}'),p={name:"knowledge-deposition/GoLang/Gorm/关联之一对多.md"},o=l("",75),e=[o];function t(c,D,r,F,y,C){return a(),n("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
diff --git "a/assets/knowledge-deposition_GoLang_Gorm_\345\205\263\350\201\224\344\271\213\345\244\232\345\257\271\345\244\232.md.f4eb4b53.js" "b/assets/knowledge-deposition_GoLang_Gorm_\345\205\263\350\201\224\344\271\213\345\244\232\345\257\271\345\244\232.md.4ddf88f6.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_Gorm_\345\205\263\350\201\224\344\271\213\345\244\232\345\257\271\345\244\232.md.f4eb4b53.js"
rename to "assets/knowledge-deposition_GoLang_Gorm_\345\205\263\350\201\224\344\271\213\345\244\232\345\257\271\345\244\232.md.4ddf88f6.js"
index 063b5408..d0afe5e1 100644
--- "a/assets/knowledge-deposition_GoLang_Gorm_\345\205\263\350\201\224\344\271\213\345\244\232\345\257\271\345\244\232.md.f4eb4b53.js"
+++ "b/assets/knowledge-deposition_GoLang_Gorm_\345\205\263\350\201\224\344\271\213\345\244\232\345\257\271\345\244\232.md.4ddf88f6.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"关联之多对多","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"自动迁移","slug":"自动迁移","link":"#自动迁移","children":[]},{"level":2,"title":"准备数据","slug":"准备数据","link":"#准备数据","children":[]},{"level":2,"title":"增删改","slug":"增删改","link":"#增删改","children":[]},{"level":2,"title":"查询","slug":"查询","link":"#查询","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gorm/关联之多对多.md"}'),o={name:"knowledge-deposition/GoLang/Gorm/关联之多对多.md"},p=l(`

关联之多对多

一个女神可以有多个狗哥,一个狗哥也可以有多个女神

Go
type M2MWallet struct {
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"关联之多对多","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"自动迁移","slug":"自动迁移","link":"#自动迁移","children":[]},{"level":2,"title":"准备数据","slug":"准备数据","link":"#准备数据","children":[]},{"level":2,"title":"增删改","slug":"增删改","link":"#增删改","children":[]},{"level":2,"title":"查询","slug":"查询","link":"#查询","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gorm/关联之多对多.md"}'),o={name:"knowledge-deposition/GoLang/Gorm/关联之多对多.md"},p=l(`

关联之多对多

一个女神可以有多个狗哥,一个狗哥也可以有多个女神

Go
type M2MWallet struct {
 	ID       uint
 	Amount   float64
 	M2MDogID uint // 外键,就是M2MDog.ID
diff --git "a/assets/knowledge-deposition_GoLang_Gorm_\345\205\263\350\201\224\344\271\213\345\244\232\345\257\271\345\244\232.md.f4eb4b53.lean.js" "b/assets/knowledge-deposition_GoLang_Gorm_\345\205\263\350\201\224\344\271\213\345\244\232\345\257\271\345\244\232.md.4ddf88f6.lean.js"
similarity index 91%
rename from "assets/knowledge-deposition_GoLang_Gorm_\345\205\263\350\201\224\344\271\213\345\244\232\345\257\271\345\244\232.md.f4eb4b53.lean.js"
rename to "assets/knowledge-deposition_GoLang_Gorm_\345\205\263\350\201\224\344\271\213\345\244\232\345\257\271\345\244\232.md.4ddf88f6.lean.js"
index f24dfc08..4d538b1c 100644
--- "a/assets/knowledge-deposition_GoLang_Gorm_\345\205\263\350\201\224\344\271\213\345\244\232\345\257\271\345\244\232.md.f4eb4b53.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_Gorm_\345\205\263\350\201\224\344\271\213\345\244\232\345\257\271\345\244\232.md.4ddf88f6.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"关联之多对多","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"自动迁移","slug":"自动迁移","link":"#自动迁移","children":[]},{"level":2,"title":"准备数据","slug":"准备数据","link":"#准备数据","children":[]},{"level":2,"title":"增删改","slug":"增删改","link":"#增删改","children":[]},{"level":2,"title":"查询","slug":"查询","link":"#查询","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gorm/关联之多对多.md"}'),o={name:"knowledge-deposition/GoLang/Gorm/关联之多对多.md"},p=l("",24),e=[p];function t(c,D,r,y,F,C){return a(),n("div",null,e)}const d=s(o,[["render",t]]);export{i as __pageData,d as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"关联之多对多","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"自动迁移","slug":"自动迁移","link":"#自动迁移","children":[]},{"level":2,"title":"准备数据","slug":"准备数据","link":"#准备数据","children":[]},{"level":2,"title":"增删改","slug":"增删改","link":"#增删改","children":[]},{"level":2,"title":"查询","slug":"查询","link":"#查询","children":[]}],"relativePath":"knowledge-deposition/GoLang/Gorm/关联之多对多.md"}'),o={name:"knowledge-deposition/GoLang/Gorm/关联之多对多.md"},p=l("",24),e=[p];function t(c,D,r,y,F,C){return a(),n("div",null,e)}const d=s(o,[["render",t]]);export{i as __pageData,d as default};
diff --git "a/assets/knowledge-deposition_GoLang_Gorm_\346\250\241\345\236\213\345\256\232\344\271\211.md.3baa4e5f.js" "b/assets/knowledge-deposition_GoLang_Gorm_\346\250\241\345\236\213\345\256\232\344\271\211.md.f6ad849b.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_Gorm_\346\250\241\345\236\213\345\256\232\344\271\211.md.3baa4e5f.js"
rename to "assets/knowledge-deposition_GoLang_Gorm_\346\250\241\345\236\213\345\256\232\344\271\211.md.f6ad849b.js"
index 44473985..0c81e712 100644
--- "a/assets/knowledge-deposition_GoLang_Gorm_\346\250\241\345\236\213\345\256\232\344\271\211.md.3baa4e5f.js"
+++ "b/assets/knowledge-deposition_GoLang_Gorm_\346\250\241\345\236\213\345\256\232\344\271\211.md.f6ad849b.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const d=JSON.parse('{"title":"模型定义","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"模型定义","slug":"模型定义-1","link":"#模型定义-1","children":[]},{"level":2,"title":"约定","slug":"约定","link":"#约定","children":[{"level":3,"title":"命名策略","slug":"命名策略","link":"#命名策略","children":[]},{"level":3,"title":"自定义表/字段名","slug":"自定义表-字段名","link":"#自定义表-字段名","children":[]}]},{"level":2,"title":"gorm.Model","slug":"gorm-model","link":"#gorm-model","children":[]},{"level":2,"title":"高级选项","slug":"高级选项","link":"#高级选项","children":[{"level":3,"title":"嵌套结构体","slug":"嵌套结构体","link":"#嵌套结构体","children":[]},{"level":3,"title":"设置时间格式","slug":"设置时间格式","link":"#设置时间格式","children":[]},{"level":3,"title":"字段标签","slug":"字段标签","link":"#字段标签","children":[]},{"level":3,"title":"自动生成表结构","slug":"自动生成表结构","link":"#自动生成表结构","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/Gorm/模型定义.md"}'),e={name:"knowledge-deposition/GoLang/Gorm/模型定义.md"},o=l(`

模型定义

模型定义

模型是标准的struct,由Go的基本数据类型、实现了ScannerValuer接口的自定义类型及其指针或别名组成

例如:

Go
type User struct {
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const d=JSON.parse('{"title":"模型定义","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"模型定义","slug":"模型定义-1","link":"#模型定义-1","children":[]},{"level":2,"title":"约定","slug":"约定","link":"#约定","children":[{"level":3,"title":"命名策略","slug":"命名策略","link":"#命名策略","children":[]},{"level":3,"title":"自定义表/字段名","slug":"自定义表-字段名","link":"#自定义表-字段名","children":[]}]},{"level":2,"title":"gorm.Model","slug":"gorm-model","link":"#gorm-model","children":[]},{"level":2,"title":"高级选项","slug":"高级选项","link":"#高级选项","children":[{"level":3,"title":"嵌套结构体","slug":"嵌套结构体","link":"#嵌套结构体","children":[]},{"level":3,"title":"设置时间格式","slug":"设置时间格式","link":"#设置时间格式","children":[]},{"level":3,"title":"字段标签","slug":"字段标签","link":"#字段标签","children":[]},{"level":3,"title":"自动生成表结构","slug":"自动生成表结构","link":"#自动生成表结构","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/Gorm/模型定义.md"}'),e={name:"knowledge-deposition/GoLang/Gorm/模型定义.md"},o=l(`

模型定义

模型定义

模型是标准的struct,由Go的基本数据类型、实现了ScannerValuer接口的自定义类型及其指针或别名组成

例如:

Go
type User struct {
   ID           uint
   Name         string
   Email        *string
diff --git "a/assets/knowledge-deposition_GoLang_Gorm_\346\250\241\345\236\213\345\256\232\344\271\211.md.3baa4e5f.lean.js" "b/assets/knowledge-deposition_GoLang_Gorm_\346\250\241\345\236\213\345\256\232\344\271\211.md.f6ad849b.lean.js"
similarity index 95%
rename from "assets/knowledge-deposition_GoLang_Gorm_\346\250\241\345\236\213\345\256\232\344\271\211.md.3baa4e5f.lean.js"
rename to "assets/knowledge-deposition_GoLang_Gorm_\346\250\241\345\236\213\345\256\232\344\271\211.md.f6ad849b.lean.js"
index 80a9e268..2f98ddd7 100644
--- "a/assets/knowledge-deposition_GoLang_Gorm_\346\250\241\345\236\213\345\256\232\344\271\211.md.3baa4e5f.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_Gorm_\346\250\241\345\236\213\345\256\232\344\271\211.md.f6ad849b.lean.js"
@@ -1 +1 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const d=JSON.parse('{"title":"模型定义","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"模型定义","slug":"模型定义-1","link":"#模型定义-1","children":[]},{"level":2,"title":"约定","slug":"约定","link":"#约定","children":[{"level":3,"title":"命名策略","slug":"命名策略","link":"#命名策略","children":[]},{"level":3,"title":"自定义表/字段名","slug":"自定义表-字段名","link":"#自定义表-字段名","children":[]}]},{"level":2,"title":"gorm.Model","slug":"gorm-model","link":"#gorm-model","children":[]},{"level":2,"title":"高级选项","slug":"高级选项","link":"#高级选项","children":[{"level":3,"title":"嵌套结构体","slug":"嵌套结构体","link":"#嵌套结构体","children":[]},{"level":3,"title":"设置时间格式","slug":"设置时间格式","link":"#设置时间格式","children":[]},{"level":3,"title":"字段标签","slug":"字段标签","link":"#字段标签","children":[]},{"level":3,"title":"自动生成表结构","slug":"自动生成表结构","link":"#自动生成表结构","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/Gorm/模型定义.md"}'),e={name:"knowledge-deposition/GoLang/Gorm/模型定义.md"},o=l("",44),p=[o];function t(c,r,i,C,y,D){return n(),a("div",null,p)}const F=s(e,[["render",t]]);export{d as __pageData,F as default};
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const d=JSON.parse('{"title":"模型定义","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"模型定义","slug":"模型定义-1","link":"#模型定义-1","children":[]},{"level":2,"title":"约定","slug":"约定","link":"#约定","children":[{"level":3,"title":"命名策略","slug":"命名策略","link":"#命名策略","children":[]},{"level":3,"title":"自定义表/字段名","slug":"自定义表-字段名","link":"#自定义表-字段名","children":[]}]},{"level":2,"title":"gorm.Model","slug":"gorm-model","link":"#gorm-model","children":[]},{"level":2,"title":"高级选项","slug":"高级选项","link":"#高级选项","children":[{"level":3,"title":"嵌套结构体","slug":"嵌套结构体","link":"#嵌套结构体","children":[]},{"level":3,"title":"设置时间格式","slug":"设置时间格式","link":"#设置时间格式","children":[]},{"level":3,"title":"字段标签","slug":"字段标签","link":"#字段标签","children":[]},{"level":3,"title":"自动生成表结构","slug":"自动生成表结构","link":"#自动生成表结构","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/Gorm/模型定义.md"}'),e={name:"knowledge-deposition/GoLang/Gorm/模型定义.md"},o=l("",44),p=[o];function t(c,r,i,C,y,D){return n(),a("div",null,p)}const F=s(e,[["render",t]]);export{d as __pageData,F as default};
diff --git "a/assets/knowledge-deposition_GoLang_Gorm_\350\207\252\345\256\232\344\271\211\346\225\260\346\215\256\347\261\273\345\236\213.md.5f12eb67.js" "b/assets/knowledge-deposition_GoLang_Gorm_\350\207\252\345\256\232\344\271\211\346\225\260\346\215\256\347\261\273\345\236\213.md.064b4bb3.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_Gorm_\350\207\252\345\256\232\344\271\211\346\225\260\346\215\256\347\261\273\345\236\213.md.5f12eb67.js"
rename to "assets/knowledge-deposition_GoLang_Gorm_\350\207\252\345\256\232\344\271\211\346\225\260\346\215\256\347\261\273\345\236\213.md.064b4bb3.js"
index df9e6115..3cde7427 100644
--- "a/assets/knowledge-deposition_GoLang_Gorm_\350\207\252\345\256\232\344\271\211\346\225\260\346\215\256\347\261\273\345\236\213.md.5f12eb67.js"
+++ "b/assets/knowledge-deposition_GoLang_Gorm_\350\207\252\345\256\232\344\271\211\346\225\260\346\215\256\347\261\273\345\236\213.md.064b4bb3.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"自定义数据类型","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"代码示例","slug":"代码示例","link":"#代码示例","children":[{"level":3,"title":"准备数据和自动建表","slug":"准备数据和自动建表","link":"#准备数据和自动建表","children":[]},{"level":3,"title":"实现Valuer接口,处理存入数据库中的值","slug":"实现valuer接口-处理存入数据库中的值","link":"#实现valuer接口-处理存入数据库中的值","children":[]},{"level":3,"title":"实现Scanner接口,将从数据库中取到的值进行格式化","slug":"实现scanner接口-将从数据库中取到的值进行格式化","link":"#实现scanner接口-将从数据库中取到的值进行格式化","children":[]},{"level":3,"title":"完整代码","slug":"完整代码","link":"#完整代码","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/Gorm/自定义数据类型.md"}'),p={name:"knowledge-deposition/GoLang/Gorm/自定义数据类型.md"},o=l(`

自定义数据类型

在使用GORM进行Go语言的数据库操作时,有时候会遇到内置数据类型不能满足需求的情况。可以通过实现GORM的ScannerValuer接口来创建自定义数据类型,使其能够与数据库交互。

TIP

要在GORM中使用这些自定义类型,需要实现两个接口

  • Scanner:用于从数据库读取值

  • Valuer:用于将值写入数据库

ScannerValuer接口定义如下,如果要使用自定义数据类型,需要实现ScanValue方法

Go
type Scanner interface {
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"自定义数据类型","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"代码示例","slug":"代码示例","link":"#代码示例","children":[{"level":3,"title":"准备数据和自动建表","slug":"准备数据和自动建表","link":"#准备数据和自动建表","children":[]},{"level":3,"title":"实现Valuer接口,处理存入数据库中的值","slug":"实现valuer接口-处理存入数据库中的值","link":"#实现valuer接口-处理存入数据库中的值","children":[]},{"level":3,"title":"实现Scanner接口,将从数据库中取到的值进行格式化","slug":"实现scanner接口-将从数据库中取到的值进行格式化","link":"#实现scanner接口-将从数据库中取到的值进行格式化","children":[]},{"level":3,"title":"完整代码","slug":"完整代码","link":"#完整代码","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/Gorm/自定义数据类型.md"}'),p={name:"knowledge-deposition/GoLang/Gorm/自定义数据类型.md"},o=l(`

自定义数据类型

在使用GORM进行Go语言的数据库操作时,有时候会遇到内置数据类型不能满足需求的情况。可以通过实现GORM的ScannerValuer接口来创建自定义数据类型,使其能够与数据库交互。

TIP

要在GORM中使用这些自定义类型,需要实现两个接口

  • Scanner:用于从数据库读取值

  • Valuer:用于将值写入数据库

ScannerValuer接口定义如下,如果要使用自定义数据类型,需要实现ScanValue方法

Go
type Scanner interface {
 	// Scan assigns a value from a database driver.
 	//
 	// The src value will be of one of the following types:
diff --git "a/assets/knowledge-deposition_GoLang_Gorm_\350\207\252\345\256\232\344\271\211\346\225\260\346\215\256\347\261\273\345\236\213.md.5f12eb67.lean.js" "b/assets/knowledge-deposition_GoLang_Gorm_\350\207\252\345\256\232\344\271\211\346\225\260\346\215\256\347\261\273\345\236\213.md.064b4bb3.lean.js"
similarity index 94%
rename from "assets/knowledge-deposition_GoLang_Gorm_\350\207\252\345\256\232\344\271\211\346\225\260\346\215\256\347\261\273\345\236\213.md.5f12eb67.lean.js"
rename to "assets/knowledge-deposition_GoLang_Gorm_\350\207\252\345\256\232\344\271\211\346\225\260\346\215\256\347\261\273\345\236\213.md.064b4bb3.lean.js"
index f735b0f4..808114f0 100644
--- "a/assets/knowledge-deposition_GoLang_Gorm_\350\207\252\345\256\232\344\271\211\346\225\260\346\215\256\347\261\273\345\236\213.md.5f12eb67.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_Gorm_\350\207\252\345\256\232\344\271\211\346\225\260\346\215\256\347\261\273\345\236\213.md.064b4bb3.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"自定义数据类型","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"代码示例","slug":"代码示例","link":"#代码示例","children":[{"level":3,"title":"准备数据和自动建表","slug":"准备数据和自动建表","link":"#准备数据和自动建表","children":[]},{"level":3,"title":"实现Valuer接口,处理存入数据库中的值","slug":"实现valuer接口-处理存入数据库中的值","link":"#实现valuer接口-处理存入数据库中的值","children":[]},{"level":3,"title":"实现Scanner接口,将从数据库中取到的值进行格式化","slug":"实现scanner接口-将从数据库中取到的值进行格式化","link":"#实现scanner接口-将从数据库中取到的值进行格式化","children":[]},{"level":3,"title":"完整代码","slug":"完整代码","link":"#完整代码","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/Gorm/自定义数据类型.md"}'),p={name:"knowledge-deposition/GoLang/Gorm/自定义数据类型.md"},o=l("",16),e=[o];function t(c,r,D,y,F,A){return a(),n("div",null,e)}const u=s(p,[["render",t]]);export{i as __pageData,u as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"自定义数据类型","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"代码示例","slug":"代码示例","link":"#代码示例","children":[{"level":3,"title":"准备数据和自动建表","slug":"准备数据和自动建表","link":"#准备数据和自动建表","children":[]},{"level":3,"title":"实现Valuer接口,处理存入数据库中的值","slug":"实现valuer接口-处理存入数据库中的值","link":"#实现valuer接口-处理存入数据库中的值","children":[]},{"level":3,"title":"实现Scanner接口,将从数据库中取到的值进行格式化","slug":"实现scanner接口-将从数据库中取到的值进行格式化","link":"#实现scanner接口-将从数据库中取到的值进行格式化","children":[]},{"level":3,"title":"完整代码","slug":"完整代码","link":"#完整代码","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/Gorm/自定义数据类型.md"}'),p={name:"knowledge-deposition/GoLang/Gorm/自定义数据类型.md"},o=l("",16),e=[o];function t(c,r,D,y,F,A){return a(),n("div",null,e)}const u=s(p,[["render",t]]);export{i as __pageData,u as default};
diff --git "a/assets/knowledge-deposition_GoLang_Gorm_\350\277\236\346\216\245\346\225\260\346\215\256\345\272\223.md.9a7e4fad.js" "b/assets/knowledge-deposition_GoLang_Gorm_\350\277\236\346\216\245\346\225\260\346\215\256\345\272\223.md.3f9c3f24.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_Gorm_\350\277\236\346\216\245\346\225\260\346\215\256\345\272\223.md.9a7e4fad.js"
rename to "assets/knowledge-deposition_GoLang_Gorm_\350\277\236\346\216\245\346\225\260\346\215\256\345\272\223.md.3f9c3f24.js"
index 3260b6d0..d29f804e 100644
--- "a/assets/knowledge-deposition_GoLang_Gorm_\350\277\236\346\216\245\346\225\260\346\215\256\345\272\223.md.9a7e4fad.js"
+++ "b/assets/knowledge-deposition_GoLang_Gorm_\350\277\236\346\216\245\346\225\260\346\215\256\345\272\223.md.3f9c3f24.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"连接数据库","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"连接Mysql数据库","slug":"连接mysql数据库","link":"#连接mysql数据库","children":[{"level":3,"title":"项目初始化","slug":"项目初始化","link":"#项目初始化","children":[]},{"level":3,"title":"下载依赖","slug":"下载依赖","link":"#下载依赖","children":[]},{"level":3,"title":"连接数据库","slug":"连接数据库-1","link":"#连接数据库-1","children":[]}]},{"level":2,"title":"高级配置","slug":"高级配置","link":"#高级配置","children":[{"level":3,"title":"日志配置","slug":"日志配置","link":"#日志配置","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/Gorm/连接数据库.md"}'),o={name:"knowledge-deposition/GoLang/Gorm/连接数据库.md"},p=l(`

连接数据库

  • GORM官方支持的数据库类型有:MySQLPostgreSQLSQliteSQL Server

连接Mysql数据库

项目初始化

shell
go mod init gorm-related
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"连接数据库","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"连接Mysql数据库","slug":"连接mysql数据库","link":"#连接mysql数据库","children":[{"level":3,"title":"项目初始化","slug":"项目初始化","link":"#项目初始化","children":[]},{"level":3,"title":"下载依赖","slug":"下载依赖","link":"#下载依赖","children":[]},{"level":3,"title":"连接数据库","slug":"连接数据库-1","link":"#连接数据库-1","children":[]}]},{"level":2,"title":"高级配置","slug":"高级配置","link":"#高级配置","children":[{"level":3,"title":"日志配置","slug":"日志配置","link":"#日志配置","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/Gorm/连接数据库.md"}'),o={name:"knowledge-deposition/GoLang/Gorm/连接数据库.md"},p=l(`

连接数据库

  • GORM官方支持的数据库类型有:MySQLPostgreSQLSQliteSQL Server

连接Mysql数据库

项目初始化

shell
go mod init gorm-related
 
  • 项目目录
shell
.
 ├── config
    └── db.yaml # 配置文件
diff --git "a/assets/knowledge-deposition_GoLang_Gorm_\350\277\236\346\216\245\346\225\260\346\215\256\345\272\223.md.9a7e4fad.lean.js" "b/assets/knowledge-deposition_GoLang_Gorm_\350\277\236\346\216\245\346\225\260\346\215\256\345\272\223.md.3f9c3f24.lean.js"
similarity index 93%
rename from "assets/knowledge-deposition_GoLang_Gorm_\350\277\236\346\216\245\346\225\260\346\215\256\345\272\223.md.9a7e4fad.lean.js"
rename to "assets/knowledge-deposition_GoLang_Gorm_\350\277\236\346\216\245\346\225\260\346\215\256\345\272\223.md.3f9c3f24.lean.js"
index a4debaaf..b126a900 100644
--- "a/assets/knowledge-deposition_GoLang_Gorm_\350\277\236\346\216\245\346\225\260\346\215\256\345\272\223.md.9a7e4fad.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_Gorm_\350\277\236\346\216\245\346\225\260\346\215\256\345\272\223.md.3f9c3f24.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"连接数据库","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"连接Mysql数据库","slug":"连接mysql数据库","link":"#连接mysql数据库","children":[{"level":3,"title":"项目初始化","slug":"项目初始化","link":"#项目初始化","children":[]},{"level":3,"title":"下载依赖","slug":"下载依赖","link":"#下载依赖","children":[]},{"level":3,"title":"连接数据库","slug":"连接数据库-1","link":"#连接数据库-1","children":[]}]},{"level":2,"title":"高级配置","slug":"高级配置","link":"#高级配置","children":[{"level":3,"title":"日志配置","slug":"日志配置","link":"#日志配置","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/Gorm/连接数据库.md"}'),o={name:"knowledge-deposition/GoLang/Gorm/连接数据库.md"},p=l("",37),e=[p];function t(c,r,D,y,F,C){return a(),n("div",null,e)}const d=s(o,[["render",t]]);export{i as __pageData,d as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"连接数据库","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"连接Mysql数据库","slug":"连接mysql数据库","link":"#连接mysql数据库","children":[{"level":3,"title":"项目初始化","slug":"项目初始化","link":"#项目初始化","children":[]},{"level":3,"title":"下载依赖","slug":"下载依赖","link":"#下载依赖","children":[]},{"level":3,"title":"连接数据库","slug":"连接数据库-1","link":"#连接数据库-1","children":[]}]},{"level":2,"title":"高级配置","slug":"高级配置","link":"#高级配置","children":[{"level":3,"title":"日志配置","slug":"日志配置","link":"#日志配置","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/Gorm/连接数据库.md"}'),o={name:"knowledge-deposition/GoLang/Gorm/连接数据库.md"},p=l("",37),e=[p];function t(c,r,D,y,F,C){return a(),n("div",null,e)}const d=s(o,[["render",t]]);export{i as __pageData,d as default};
diff --git a/assets/knowledge-deposition_GoLang_JWT_JWT.md.025dbd2e.js b/assets/knowledge-deposition_GoLang_JWT_JWT.md.5d3ebb0f.js
similarity index 92%
rename from assets/knowledge-deposition_GoLang_JWT_JWT.md.025dbd2e.js
rename to assets/knowledge-deposition_GoLang_JWT_JWT.md.5d3ebb0f.js
index c60b8118..39ccfc0b 100644
--- a/assets/knowledge-deposition_GoLang_JWT_JWT.md.025dbd2e.js
+++ b/assets/knowledge-deposition_GoLang_JWT_JWT.md.5d3ebb0f.js
@@ -1 +1 @@
-import{_ as a,c as o,o as n,a as e,b as t}from"./app.fa87702c.js";const W=JSON.parse('{"title":"JWT","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"原理","slug":"原理","link":"#原理","children":[]}],"relativePath":"knowledge-deposition/GoLang/JWT/JWT.md"}'),s={name:"knowledge-deposition/GoLang/JWT/JWT.md"},d=e("h1",{id:"jwt",tabindex:"-1"},[t("JWT "),e("a",{class:"header-anchor",href:"#jwt","aria-hidden":"true"},"#")],-1),r=e("p",null,"JWT(JSON Web Token)是目前最流行的跨域认证解决方案",-1),i=e("h2",{id:"原理",tabindex:"-1"},[t("原理 "),e("a",{class:"header-anchor",href:"#原理","aria-hidden":"true"},"#")],-1),c=[d,r,i];function l(_,h,p,u,J,T){return n(),o("div",null,c)}const m=a(s,[["render",l]]);export{W as __pageData,m as default};
+import{_ as a,c as o,o as n,a as e,b as t}from"./app.2f6419f0.js";const W=JSON.parse('{"title":"JWT","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"原理","slug":"原理","link":"#原理","children":[]}],"relativePath":"knowledge-deposition/GoLang/JWT/JWT.md"}'),s={name:"knowledge-deposition/GoLang/JWT/JWT.md"},d=e("h1",{id:"jwt",tabindex:"-1"},[t("JWT "),e("a",{class:"header-anchor",href:"#jwt","aria-hidden":"true"},"#")],-1),r=e("p",null,"JWT(JSON Web Token)是目前最流行的跨域认证解决方案",-1),i=e("h2",{id:"原理",tabindex:"-1"},[t("原理 "),e("a",{class:"header-anchor",href:"#原理","aria-hidden":"true"},"#")],-1),c=[d,r,i];function l(_,h,p,u,J,T){return n(),o("div",null,c)}const m=a(s,[["render",l]]);export{W as __pageData,m as default};
diff --git a/assets/knowledge-deposition_GoLang_JWT_JWT.md.025dbd2e.lean.js b/assets/knowledge-deposition_GoLang_JWT_JWT.md.5d3ebb0f.lean.js
similarity index 92%
rename from assets/knowledge-deposition_GoLang_JWT_JWT.md.025dbd2e.lean.js
rename to assets/knowledge-deposition_GoLang_JWT_JWT.md.5d3ebb0f.lean.js
index c60b8118..39ccfc0b 100644
--- a/assets/knowledge-deposition_GoLang_JWT_JWT.md.025dbd2e.lean.js
+++ b/assets/knowledge-deposition_GoLang_JWT_JWT.md.5d3ebb0f.lean.js
@@ -1 +1 @@
-import{_ as a,c as o,o as n,a as e,b as t}from"./app.fa87702c.js";const W=JSON.parse('{"title":"JWT","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"原理","slug":"原理","link":"#原理","children":[]}],"relativePath":"knowledge-deposition/GoLang/JWT/JWT.md"}'),s={name:"knowledge-deposition/GoLang/JWT/JWT.md"},d=e("h1",{id:"jwt",tabindex:"-1"},[t("JWT "),e("a",{class:"header-anchor",href:"#jwt","aria-hidden":"true"},"#")],-1),r=e("p",null,"JWT(JSON Web Token)是目前最流行的跨域认证解决方案",-1),i=e("h2",{id:"原理",tabindex:"-1"},[t("原理 "),e("a",{class:"header-anchor",href:"#原理","aria-hidden":"true"},"#")],-1),c=[d,r,i];function l(_,h,p,u,J,T){return n(),o("div",null,c)}const m=a(s,[["render",l]]);export{W as __pageData,m as default};
+import{_ as a,c as o,o as n,a as e,b as t}from"./app.2f6419f0.js";const W=JSON.parse('{"title":"JWT","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"原理","slug":"原理","link":"#原理","children":[]}],"relativePath":"knowledge-deposition/GoLang/JWT/JWT.md"}'),s={name:"knowledge-deposition/GoLang/JWT/JWT.md"},d=e("h1",{id:"jwt",tabindex:"-1"},[t("JWT "),e("a",{class:"header-anchor",href:"#jwt","aria-hidden":"true"},"#")],-1),r=e("p",null,"JWT(JSON Web Token)是目前最流行的跨域认证解决方案",-1),i=e("h2",{id:"原理",tabindex:"-1"},[t("原理 "),e("a",{class:"header-anchor",href:"#原理","aria-hidden":"true"},"#")],-1),c=[d,r,i];function l(_,h,p,u,J,T){return n(),o("div",null,c)}const m=a(s,[["render",l]]);export{W as __pageData,m as default};
diff --git a/assets/knowledge-deposition_GoLang_Logger_Logrus_Hook.md.288db373.js b/assets/knowledge-deposition_GoLang_Logger_Logrus_Hook.md.cabd46fa.js
similarity index 99%
rename from assets/knowledge-deposition_GoLang_Logger_Logrus_Hook.md.288db373.js
rename to assets/knowledge-deposition_GoLang_Logger_Logrus_Hook.md.cabd46fa.js
index 47f4e823..d6720a7e 100644
--- a/assets/knowledge-deposition_GoLang_Logger_Logrus_Hook.md.288db373.js
+++ b/assets/knowledge-deposition_GoLang_Logger_Logrus_Hook.md.cabd46fa.js
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as o}from"./app.fa87702c.js";const i=JSON.parse('{"title":"Hook","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"knowledge-deposition/GoLang/Logger/Logrus/Hook.md"}'),l={name:"knowledge-deposition/GoLang/Logger/Logrus/Hook.md"},p=o(`

Hook

  • 通过使用hook,可以扩展logrus的功能

  • 可以为logrus设置hook,每条日志输出前都会执行hook的特定方法

  • 点击查看更多

Hook定义如下

Go
type Hook interface {
+import{_ as s,c as n,o as a,e as o}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"Hook","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"knowledge-deposition/GoLang/Logger/Logrus/Hook.md"}'),l={name:"knowledge-deposition/GoLang/Logger/Logrus/Hook.md"},p=o(`

Hook

  • 通过使用hook,可以扩展logrus的功能

  • 可以为logrus设置hook,每条日志输出前都会执行hook的特定方法

  • 点击查看更多

Hook定义如下

Go
type Hook interface {
 	Levels() []Level
 	Fire(*Entry) error
 }
diff --git a/assets/knowledge-deposition_GoLang_Logger_Logrus_Hook.md.288db373.lean.js b/assets/knowledge-deposition_GoLang_Logger_Logrus_Hook.md.cabd46fa.lean.js
similarity index 84%
rename from assets/knowledge-deposition_GoLang_Logger_Logrus_Hook.md.288db373.lean.js
rename to assets/knowledge-deposition_GoLang_Logger_Logrus_Hook.md.cabd46fa.lean.js
index d83aa421..cd731d1c 100644
--- a/assets/knowledge-deposition_GoLang_Logger_Logrus_Hook.md.288db373.lean.js
+++ b/assets/knowledge-deposition_GoLang_Logger_Logrus_Hook.md.cabd46fa.lean.js
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as o}from"./app.fa87702c.js";const i=JSON.parse('{"title":"Hook","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"knowledge-deposition/GoLang/Logger/Logrus/Hook.md"}'),l={name:"knowledge-deposition/GoLang/Logger/Logrus/Hook.md"},p=o("",8),e=[p];function t(c,r,D,F,y,A){return a(),n("div",null,e)}const u=s(l,[["render",t]]);export{i as __pageData,u as default};
+import{_ as s,c as n,o as a,e as o}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"Hook","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"knowledge-deposition/GoLang/Logger/Logrus/Hook.md"}'),l={name:"knowledge-deposition/GoLang/Logger/Logrus/Hook.md"},p=o("",8),e=[p];function t(c,r,D,F,y,A){return a(),n("div",null,e)}const u=s(l,[["render",t]]);export{i as __pageData,u as default};
diff --git "a/assets/knowledge-deposition_GoLang_Logger_Logrus_\345\237\272\347\241\200\347\224\250\346\263\225.md.faaf0fca.js" "b/assets/knowledge-deposition_GoLang_Logger_Logrus_\345\237\272\347\241\200\347\224\250\346\263\225.md.6f17f0be.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_Logger_Logrus_\345\237\272\347\241\200\347\224\250\346\263\225.md.faaf0fca.js"
rename to "assets/knowledge-deposition_GoLang_Logger_Logrus_\345\237\272\347\241\200\347\224\250\346\263\225.md.6f17f0be.js"
index 07fa51ff..3a0ba224 100644
--- "a/assets/knowledge-deposition_GoLang_Logger_Logrus_\345\237\272\347\241\200\347\224\250\346\263\225.md.faaf0fca.js"
+++ "b/assets/knowledge-deposition_GoLang_Logger_Logrus_\345\237\272\347\241\200\347\224\250\346\263\225.md.6f17f0be.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const o="/static-blog/image/go/logrus_1.png",p="/static-blog/image/go/logrus_2.png",e="/static-blog/image/go/logrus_text_color.png",t="/static-blog/image/go/logrus_bg_color.png",c="/static-blog/image/go/logrus_custom_color.png",m=JSON.parse('{"title":"基础用法","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"下载依赖","slug":"下载依赖","link":"#下载依赖","children":[]},{"level":2,"title":"输出log","slug":"输出log","link":"#输出log","children":[]},{"level":2,"title":"日志等级","slug":"日志等级","link":"#日志等级","children":[]},{"level":2,"title":"获取日志等级","slug":"获取日志等级","link":"#获取日志等级","children":[]},{"level":2,"title":"修改日志等级","slug":"修改日志等级","link":"#修改日志等级","children":[]},{"level":2,"title":"输出日志添加额外字段","slug":"输出日志添加额外字段","link":"#输出日志添加额外字段","children":[{"level":3,"title":"添加单个字段","slug":"添加单个字段","link":"#添加单个字段","children":[]},{"level":3,"title":"同时添加多个字段","slug":"同时添加多个字段","link":"#同时添加多个字段","children":[]}]},{"level":2,"title":"设置日志展示调用文件路径、行数、函数名称","slug":"设置日志展示调用文件路径、行数、函数名称","link":"#设置日志展示调用文件路径、行数、函数名称","children":[]},{"level":2,"title":"设置日志格式","slug":"设置日志格式","link":"#设置日志格式","children":[{"level":3,"title":"修改日志为json格式","slug":"修改日志为json格式","link":"#修改日志为json格式","children":[]}]},{"level":2,"title":"将日志输出到日志文件中","slug":"将日志输出到日志文件中","link":"#将日志输出到日志文件中","children":[]},{"level":2,"title":"自定义颜色","slug":"自定义颜色","link":"#自定义颜色","children":[{"level":3,"title":"文本颜色","slug":"文本颜色","link":"#文本颜色","children":[]},{"level":3,"title":"文本背景色","slug":"文本背景色","link":"#文本背景色","children":[]}]},{"level":2,"title":"实现自定义设置输入日志颜色","slug":"实现自定义设置输入日志颜色","link":"#实现自定义设置输入日志颜色","children":[]}],"relativePath":"knowledge-deposition/GoLang/Logger/Logrus/基础用法.md"}'),r={name:"knowledge-deposition/GoLang/Logger/Logrus/基础用法.md"},D=l(`

基础用法

下载依赖

Go
go get github.com/sirupsen/logrus
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const o="/static-blog/image/go/logrus_1.png",p="/static-blog/image/go/logrus_2.png",e="/static-blog/image/go/logrus_text_color.png",t="/static-blog/image/go/logrus_bg_color.png",c="/static-blog/image/go/logrus_custom_color.png",m=JSON.parse('{"title":"基础用法","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"下载依赖","slug":"下载依赖","link":"#下载依赖","children":[]},{"level":2,"title":"输出log","slug":"输出log","link":"#输出log","children":[]},{"level":2,"title":"日志等级","slug":"日志等级","link":"#日志等级","children":[]},{"level":2,"title":"获取日志等级","slug":"获取日志等级","link":"#获取日志等级","children":[]},{"level":2,"title":"修改日志等级","slug":"修改日志等级","link":"#修改日志等级","children":[]},{"level":2,"title":"输出日志添加额外字段","slug":"输出日志添加额外字段","link":"#输出日志添加额外字段","children":[{"level":3,"title":"添加单个字段","slug":"添加单个字段","link":"#添加单个字段","children":[]},{"level":3,"title":"同时添加多个字段","slug":"同时添加多个字段","link":"#同时添加多个字段","children":[]}]},{"level":2,"title":"设置日志展示调用文件路径、行数、函数名称","slug":"设置日志展示调用文件路径、行数、函数名称","link":"#设置日志展示调用文件路径、行数、函数名称","children":[]},{"level":2,"title":"设置日志格式","slug":"设置日志格式","link":"#设置日志格式","children":[{"level":3,"title":"修改日志为json格式","slug":"修改日志为json格式","link":"#修改日志为json格式","children":[]}]},{"level":2,"title":"将日志输出到日志文件中","slug":"将日志输出到日志文件中","link":"#将日志输出到日志文件中","children":[]},{"level":2,"title":"自定义颜色","slug":"自定义颜色","link":"#自定义颜色","children":[{"level":3,"title":"文本颜色","slug":"文本颜色","link":"#文本颜色","children":[]},{"level":3,"title":"文本背景色","slug":"文本背景色","link":"#文本背景色","children":[]}]},{"level":2,"title":"实现自定义设置输入日志颜色","slug":"实现自定义设置输入日志颜色","link":"#实现自定义设置输入日志颜色","children":[]}],"relativePath":"knowledge-deposition/GoLang/Logger/Logrus/基础用法.md"}'),r={name:"knowledge-deposition/GoLang/Logger/Logrus/基础用法.md"},D=l(`

基础用法

下载依赖

Go
go get github.com/sirupsen/logrus
 

输出log

Go
logrus.Errorln("logrus => Error")
 logrus.Warningln("logrus => Warn")
 logrus.Infoln("logrus => Info")
diff --git "a/assets/knowledge-deposition_GoLang_Logger_Logrus_\345\237\272\347\241\200\347\224\250\346\263\225.md.faaf0fca.lean.js" "b/assets/knowledge-deposition_GoLang_Logger_Logrus_\345\237\272\347\241\200\347\224\250\346\263\225.md.6f17f0be.lean.js"
similarity index 97%
rename from "assets/knowledge-deposition_GoLang_Logger_Logrus_\345\237\272\347\241\200\347\224\250\346\263\225.md.faaf0fca.lean.js"
rename to "assets/knowledge-deposition_GoLang_Logger_Logrus_\345\237\272\347\241\200\347\224\250\346\263\225.md.6f17f0be.lean.js"
index ac8bfdd5..4a27d944 100644
--- "a/assets/knowledge-deposition_GoLang_Logger_Logrus_\345\237\272\347\241\200\347\224\250\346\263\225.md.faaf0fca.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_Logger_Logrus_\345\237\272\347\241\200\347\224\250\346\263\225.md.6f17f0be.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const o="/static-blog/image/go/logrus_1.png",p="/static-blog/image/go/logrus_2.png",e="/static-blog/image/go/logrus_text_color.png",t="/static-blog/image/go/logrus_bg_color.png",c="/static-blog/image/go/logrus_custom_color.png",m=JSON.parse('{"title":"基础用法","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"下载依赖","slug":"下载依赖","link":"#下载依赖","children":[]},{"level":2,"title":"输出log","slug":"输出log","link":"#输出log","children":[]},{"level":2,"title":"日志等级","slug":"日志等级","link":"#日志等级","children":[]},{"level":2,"title":"获取日志等级","slug":"获取日志等级","link":"#获取日志等级","children":[]},{"level":2,"title":"修改日志等级","slug":"修改日志等级","link":"#修改日志等级","children":[]},{"level":2,"title":"输出日志添加额外字段","slug":"输出日志添加额外字段","link":"#输出日志添加额外字段","children":[{"level":3,"title":"添加单个字段","slug":"添加单个字段","link":"#添加单个字段","children":[]},{"level":3,"title":"同时添加多个字段","slug":"同时添加多个字段","link":"#同时添加多个字段","children":[]}]},{"level":2,"title":"设置日志展示调用文件路径、行数、函数名称","slug":"设置日志展示调用文件路径、行数、函数名称","link":"#设置日志展示调用文件路径、行数、函数名称","children":[]},{"level":2,"title":"设置日志格式","slug":"设置日志格式","link":"#设置日志格式","children":[{"level":3,"title":"修改日志为json格式","slug":"修改日志为json格式","link":"#修改日志为json格式","children":[]}]},{"level":2,"title":"将日志输出到日志文件中","slug":"将日志输出到日志文件中","link":"#将日志输出到日志文件中","children":[]},{"level":2,"title":"自定义颜色","slug":"自定义颜色","link":"#自定义颜色","children":[{"level":3,"title":"文本颜色","slug":"文本颜色","link":"#文本颜色","children":[]},{"level":3,"title":"文本背景色","slug":"文本背景色","link":"#文本背景色","children":[]}]},{"level":2,"title":"实现自定义设置输入日志颜色","slug":"实现自定义设置输入日志颜色","link":"#实现自定义设置输入日志颜色","children":[]}],"relativePath":"knowledge-deposition/GoLang/Logger/Logrus/基础用法.md"}'),r={name:"knowledge-deposition/GoLang/Logger/Logrus/基础用法.md"},D=l("",50),F=[D];function y(C,A,i,u,d,g){return a(),n("div",null,F)}const f=s(r,[["render",y]]);export{m as __pageData,f as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const o="/static-blog/image/go/logrus_1.png",p="/static-blog/image/go/logrus_2.png",e="/static-blog/image/go/logrus_text_color.png",t="/static-blog/image/go/logrus_bg_color.png",c="/static-blog/image/go/logrus_custom_color.png",m=JSON.parse('{"title":"基础用法","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"下载依赖","slug":"下载依赖","link":"#下载依赖","children":[]},{"level":2,"title":"输出log","slug":"输出log","link":"#输出log","children":[]},{"level":2,"title":"日志等级","slug":"日志等级","link":"#日志等级","children":[]},{"level":2,"title":"获取日志等级","slug":"获取日志等级","link":"#获取日志等级","children":[]},{"level":2,"title":"修改日志等级","slug":"修改日志等级","link":"#修改日志等级","children":[]},{"level":2,"title":"输出日志添加额外字段","slug":"输出日志添加额外字段","link":"#输出日志添加额外字段","children":[{"level":3,"title":"添加单个字段","slug":"添加单个字段","link":"#添加单个字段","children":[]},{"level":3,"title":"同时添加多个字段","slug":"同时添加多个字段","link":"#同时添加多个字段","children":[]}]},{"level":2,"title":"设置日志展示调用文件路径、行数、函数名称","slug":"设置日志展示调用文件路径、行数、函数名称","link":"#设置日志展示调用文件路径、行数、函数名称","children":[]},{"level":2,"title":"设置日志格式","slug":"设置日志格式","link":"#设置日志格式","children":[{"level":3,"title":"修改日志为json格式","slug":"修改日志为json格式","link":"#修改日志为json格式","children":[]}]},{"level":2,"title":"将日志输出到日志文件中","slug":"将日志输出到日志文件中","link":"#将日志输出到日志文件中","children":[]},{"level":2,"title":"自定义颜色","slug":"自定义颜色","link":"#自定义颜色","children":[{"level":3,"title":"文本颜色","slug":"文本颜色","link":"#文本颜色","children":[]},{"level":3,"title":"文本背景色","slug":"文本背景色","link":"#文本背景色","children":[]}]},{"level":2,"title":"实现自定义设置输入日志颜色","slug":"实现自定义设置输入日志颜色","link":"#实现自定义设置输入日志颜色","children":[]}],"relativePath":"knowledge-deposition/GoLang/Logger/Logrus/基础用法.md"}'),r={name:"knowledge-deposition/GoLang/Logger/Logrus/基础用法.md"},D=l("",50),F=[D];function y(C,A,i,u,d,g){return a(),n("div",null,F)}const f=s(r,[["render",y]]);export{m as __pageData,f as default};
diff --git "a/assets/knowledge-deposition_GoLang_Logger_Logrus_\346\227\245\345\277\227\345\210\206\345\211\262.md.bea6b9a2.js" "b/assets/knowledge-deposition_GoLang_Logger_Logrus_\346\227\245\345\277\227\345\210\206\345\211\262.md.a993b07c.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_Logger_Logrus_\346\227\245\345\277\227\345\210\206\345\211\262.md.bea6b9a2.js"
rename to "assets/knowledge-deposition_GoLang_Logger_Logrus_\346\227\245\345\277\227\345\210\206\345\211\262.md.a993b07c.js"
index 85b650e1..281b4a9f 100644
--- "a/assets/knowledge-deposition_GoLang_Logger_Logrus_\346\227\245\345\277\227\345\210\206\345\211\262.md.bea6b9a2.js"
+++ "b/assets/knowledge-deposition_GoLang_Logger_Logrus_\346\227\245\345\277\227\345\210\206\345\211\262.md.a993b07c.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"日志分割","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"knowledge-deposition/GoLang/Logger/Logrus/日志分割.md"}'),p={name:"knowledge-deposition/GoLang/Logger/Logrus/日志分割.md"},o=l(`

日志分割

功能

  • 根据设置的时间纬度切割日志,每个时间点都新创建一个文件夹

  • 单个日志文件超过一定大小就压缩成.gz文件

  • 只输出DEBUGERROR日志(想要定制也可以)

按照分钟切割生成logs文件目录如下

shell
logs
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"日志分割","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"knowledge-deposition/GoLang/Logger/Logrus/日志分割.md"}'),p={name:"knowledge-deposition/GoLang/Logger/Logrus/日志分割.md"},o=l(`

日志分割

功能

  • 根据设置的时间纬度切割日志,每个时间点都新创建一个文件夹

  • 单个日志文件超过一定大小就压缩成.gz文件

  • 只输出DEBUGERROR日志(想要定制也可以)

按照分钟切割生成logs文件目录如下

shell
logs
 ├── debug
    ├── 202308232347
    │   ├── 202308232347-debug-0.log.gz
diff --git "a/assets/knowledge-deposition_GoLang_Logger_Logrus_\346\227\245\345\277\227\345\210\206\345\211\262.md.bea6b9a2.lean.js" "b/assets/knowledge-deposition_GoLang_Logger_Logrus_\346\227\245\345\277\227\345\210\206\345\211\262.md.a993b07c.lean.js"
similarity index 85%
rename from "assets/knowledge-deposition_GoLang_Logger_Logrus_\346\227\245\345\277\227\345\210\206\345\211\262.md.bea6b9a2.lean.js"
rename to "assets/knowledge-deposition_GoLang_Logger_Logrus_\346\227\245\345\277\227\345\210\206\345\211\262.md.a993b07c.lean.js"
index 8c81b6b1..4be97930 100644
--- "a/assets/knowledge-deposition_GoLang_Logger_Logrus_\346\227\245\345\277\227\345\210\206\345\211\262.md.bea6b9a2.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_Logger_Logrus_\346\227\245\345\277\227\345\210\206\345\211\262.md.a993b07c.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"日志分割","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"knowledge-deposition/GoLang/Logger/Logrus/日志分割.md"}'),p={name:"knowledge-deposition/GoLang/Logger/Logrus/日志分割.md"},o=l("",7),t=[o];function e(c,r,D,y,C,F){return a(),n("div",null,t)}const u=s(p,[["render",e]]);export{i as __pageData,u as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"日志分割","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"knowledge-deposition/GoLang/Logger/Logrus/日志分割.md"}'),p={name:"knowledge-deposition/GoLang/Logger/Logrus/日志分割.md"},o=l("",7),t=[o];function e(c,r,D,y,C,F){return a(),n("div",null,t)}const u=s(p,[["render",e]]);export{i as __pageData,u as default};
diff --git "a/assets/knowledge-deposition_GoLang_Logger_Zap_zap\344\275\277\347\224\250.md.84117e9f.js" "b/assets/knowledge-deposition_GoLang_Logger_Zap_zap\344\275\277\347\224\250.md.a01e8c11.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_Logger_Zap_zap\344\275\277\347\224\250.md.84117e9f.js"
rename to "assets/knowledge-deposition_GoLang_Logger_Zap_zap\344\275\277\347\224\250.md.a01e8c11.js"
index 0699fbaa..6633f00c 100644
--- "a/assets/knowledge-deposition_GoLang_Logger_Zap_zap\344\275\277\347\224\250.md.84117e9f.js"
+++ "b/assets/knowledge-deposition_GoLang_Logger_Zap_zap\344\275\277\347\224\250.md.a01e8c11.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"zap使用","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"日志记录器","slug":"日志记录器","link":"#日志记录器","children":[]},{"level":2,"title":"基础用法","slug":"基础用法","link":"#基础用法","children":[]},{"level":2,"title":"定制Logger","slug":"定制logger","link":"#定制logger","children":[{"level":3,"title":"将日志写入文件并在控制台打印","slug":"将日志写入文件并在控制台打印","link":"#将日志写入文件并在控制台打印","children":[]},{"level":3,"title":"将error日志单独生成文件","slug":"将error日志单独生成文件","link":"#将error日志单独生成文件","children":[]},{"level":3,"title":"日志切割归档","slug":"日志切割归档","link":"#日志切割归档","children":[]}]},{"level":2,"title":"将zap集成到gin中","slug":"将zap集成到gin中","link":"#将zap集成到gin中","children":[{"level":3,"title":"完整代码","slug":"完整代码","link":"#完整代码","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/Logger/Zap/zap使用.md"}'),o={name:"knowledge-deposition/GoLang/Logger/Zap/zap使用.md"},p=l(`

zap使用

zapUber开发的一款高性能、结构化日志库,以其极低的内存分配和CPU消耗而著称

下载依赖

shell
go get -u go.uber.org/zap
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"zap使用","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"日志记录器","slug":"日志记录器","link":"#日志记录器","children":[]},{"level":2,"title":"基础用法","slug":"基础用法","link":"#基础用法","children":[]},{"level":2,"title":"定制Logger","slug":"定制logger","link":"#定制logger","children":[{"level":3,"title":"将日志写入文件并在控制台打印","slug":"将日志写入文件并在控制台打印","link":"#将日志写入文件并在控制台打印","children":[]},{"level":3,"title":"将error日志单独生成文件","slug":"将error日志单独生成文件","link":"#将error日志单独生成文件","children":[]},{"level":3,"title":"日志切割归档","slug":"日志切割归档","link":"#日志切割归档","children":[]}]},{"level":2,"title":"将zap集成到gin中","slug":"将zap集成到gin中","link":"#将zap集成到gin中","children":[{"level":3,"title":"完整代码","slug":"完整代码","link":"#完整代码","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/Logger/Zap/zap使用.md"}'),o={name:"knowledge-deposition/GoLang/Logger/Zap/zap使用.md"},p=l(`

zap使用

zapUber开发的一款高性能、结构化日志库,以其极低的内存分配和CPU消耗而著称

下载依赖

shell
go get -u go.uber.org/zap
 

日志记录器

zap提供了两种日志记录器:LoggerSugaredLogger,它们在性能易用性方面有所不同

  • *zap.Logger:提供了更为结构化且性能更高的日志记录。它使用强类型的API,在编译时就能获得类型安全检测,但是使用起来稍微复杂一些。它非常适合需要高性能和强类型的场景。使用*zap.Logger时,需要明确日志字段的类型
Go
logger.Info("failed to fetch URL",
     zap.String("url", url),
     zap.Int("attempt", 3),
diff --git "a/assets/knowledge-deposition_GoLang_Logger_Zap_zap\344\275\277\347\224\250.md.84117e9f.lean.js" "b/assets/knowledge-deposition_GoLang_Logger_Zap_zap\344\275\277\347\224\250.md.a01e8c11.lean.js"
similarity index 95%
rename from "assets/knowledge-deposition_GoLang_Logger_Zap_zap\344\275\277\347\224\250.md.84117e9f.lean.js"
rename to "assets/knowledge-deposition_GoLang_Logger_Zap_zap\344\275\277\347\224\250.md.a01e8c11.lean.js"
index 9c20bd4c..150cd75d 100644
--- "a/assets/knowledge-deposition_GoLang_Logger_Zap_zap\344\275\277\347\224\250.md.84117e9f.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_Logger_Zap_zap\344\275\277\347\224\250.md.a01e8c11.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"zap使用","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"日志记录器","slug":"日志记录器","link":"#日志记录器","children":[]},{"level":2,"title":"基础用法","slug":"基础用法","link":"#基础用法","children":[]},{"level":2,"title":"定制Logger","slug":"定制logger","link":"#定制logger","children":[{"level":3,"title":"将日志写入文件并在控制台打印","slug":"将日志写入文件并在控制台打印","link":"#将日志写入文件并在控制台打印","children":[]},{"level":3,"title":"将error日志单独生成文件","slug":"将error日志单独生成文件","link":"#将error日志单独生成文件","children":[]},{"level":3,"title":"日志切割归档","slug":"日志切割归档","link":"#日志切割归档","children":[]}]},{"level":2,"title":"将zap集成到gin中","slug":"将zap集成到gin中","link":"#将zap集成到gin中","children":[{"level":3,"title":"完整代码","slug":"完整代码","link":"#完整代码","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/Logger/Zap/zap使用.md"}'),o={name:"knowledge-deposition/GoLang/Logger/Zap/zap使用.md"},p=l("",64),t=[p];function e(c,D,r,F,y,A){return a(),n("div",null,t)}const u=s(o,[["render",e]]);export{i as __pageData,u as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"zap使用","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"日志记录器","slug":"日志记录器","link":"#日志记录器","children":[]},{"level":2,"title":"基础用法","slug":"基础用法","link":"#基础用法","children":[]},{"level":2,"title":"定制Logger","slug":"定制logger","link":"#定制logger","children":[{"level":3,"title":"将日志写入文件并在控制台打印","slug":"将日志写入文件并在控制台打印","link":"#将日志写入文件并在控制台打印","children":[]},{"level":3,"title":"将error日志单独生成文件","slug":"将error日志单独生成文件","link":"#将error日志单独生成文件","children":[]},{"level":3,"title":"日志切割归档","slug":"日志切割归档","link":"#日志切割归档","children":[]}]},{"level":2,"title":"将zap集成到gin中","slug":"将zap集成到gin中","link":"#将zap集成到gin中","children":[{"level":3,"title":"完整代码","slug":"完整代码","link":"#完整代码","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/Logger/Zap/zap使用.md"}'),o={name:"knowledge-deposition/GoLang/Logger/Zap/zap使用.md"},p=l("",64),t=[p];function e(c,D,r,F,y,A){return a(),n("div",null,t)}const u=s(o,[["render",e]]);export{i as __pageData,u as default};
diff --git "a/assets/knowledge-deposition_GoLang_\345\212\240\345\257\206_AES\345\212\240\345\257\206.md.ac61d4b4.js" "b/assets/knowledge-deposition_GoLang_\345\212\240\345\257\206_AES\345\212\240\345\257\206.md.e9df1c50.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_\345\212\240\345\257\206_AES\345\212\240\345\257\206.md.ac61d4b4.js"
rename to "assets/knowledge-deposition_GoLang_\345\212\240\345\257\206_AES\345\212\240\345\257\206.md.e9df1c50.js"
index 381005cb..186269b1 100644
--- "a/assets/knowledge-deposition_GoLang_\345\212\240\345\257\206_AES\345\212\240\345\257\206.md.ac61d4b4.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\212\240\345\257\206_AES\345\212\240\345\257\206.md.e9df1c50.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"AES加密","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"前端代码","slug":"前端代码","link":"#前端代码","children":[]},{"level":2,"title":"后端代码","slug":"后端代码","link":"#后端代码","children":[]},{"level":2,"title":"参考","slug":"参考","link":"#参考","children":[]}],"relativePath":"knowledge-deposition/GoLang/加密/AES加密.md"}'),p={name:"knowledge-deposition/GoLang/加密/AES加密.md"},o=l(`

AES加密

AES是常用的一种对称加密,加密和解密使用相同的key

记录前端实现AES加/解密,配合后端使用Go实现AES加/解密的过程

前端代码

  • 下载crypto-js
shell
pnpm install crypto-js
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"AES加密","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"前端代码","slug":"前端代码","link":"#前端代码","children":[]},{"level":2,"title":"后端代码","slug":"后端代码","link":"#后端代码","children":[]},{"level":2,"title":"参考","slug":"参考","link":"#参考","children":[]}],"relativePath":"knowledge-deposition/GoLang/加密/AES加密.md"}'),p={name:"knowledge-deposition/GoLang/加密/AES加密.md"},o=l(`

AES加密

AES是常用的一种对称加密,加密和解密使用相同的key

记录前端实现AES加/解密,配合后端使用Go实现AES加/解密的过程

前端代码

  • 下载crypto-js
shell
pnpm install crypto-js
 

前端实现

javascript
/**
  * AES 对称加密
  * 加密解密,加密的解密使用相同的key
diff --git "a/assets/knowledge-deposition_GoLang_\345\212\240\345\257\206_AES\345\212\240\345\257\206.md.ac61d4b4.lean.js" "b/assets/knowledge-deposition_GoLang_\345\212\240\345\257\206_AES\345\212\240\345\257\206.md.e9df1c50.lean.js"
similarity index 90%
rename from "assets/knowledge-deposition_GoLang_\345\212\240\345\257\206_AES\345\212\240\345\257\206.md.ac61d4b4.lean.js"
rename to "assets/knowledge-deposition_GoLang_\345\212\240\345\257\206_AES\345\212\240\345\257\206.md.e9df1c50.lean.js"
index 31ba0c32..30b70e6c 100644
--- "a/assets/knowledge-deposition_GoLang_\345\212\240\345\257\206_AES\345\212\240\345\257\206.md.ac61d4b4.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\212\240\345\257\206_AES\345\212\240\345\257\206.md.e9df1c50.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"AES加密","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"前端代码","slug":"前端代码","link":"#前端代码","children":[]},{"level":2,"title":"后端代码","slug":"后端代码","link":"#后端代码","children":[]},{"level":2,"title":"参考","slug":"参考","link":"#参考","children":[]}],"relativePath":"knowledge-deposition/GoLang/加密/AES加密.md"}'),p={name:"knowledge-deposition/GoLang/加密/AES加密.md"},o=l("",20),t=[o];function e(c,r,D,y,F,A){return a(),n("div",null,t)}const d=s(p,[["render",e]]);export{i as __pageData,d as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"AES加密","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"前端代码","slug":"前端代码","link":"#前端代码","children":[]},{"level":2,"title":"后端代码","slug":"后端代码","link":"#后端代码","children":[]},{"level":2,"title":"参考","slug":"参考","link":"#参考","children":[]}],"relativePath":"knowledge-deposition/GoLang/加密/AES加密.md"}'),p={name:"knowledge-deposition/GoLang/加密/AES加密.md"},o=l("",20),t=[o];function e(c,r,D,y,F,A){return a(),n("div",null,t)}const d=s(p,[["render",e]]);export{i as __pageData,d as default};
diff --git "a/assets/knowledge-deposition_GoLang_\345\212\240\345\257\206_RSA\345\212\240\345\257\206.md.44036afe.js" "b/assets/knowledge-deposition_GoLang_\345\212\240\345\257\206_RSA\345\212\240\345\257\206.md.4a63c350.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_\345\212\240\345\257\206_RSA\345\212\240\345\257\206.md.44036afe.js"
rename to "assets/knowledge-deposition_GoLang_\345\212\240\345\257\206_RSA\345\212\240\345\257\206.md.4a63c350.js"
index 1ddb353a..752c303d 100644
--- "a/assets/knowledge-deposition_GoLang_\345\212\240\345\257\206_RSA\345\212\240\345\257\206.md.44036afe.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\212\240\345\257\206_RSA\345\212\240\345\257\206.md.4a63c350.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"RSA","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"生成公钥和私钥","slug":"生成公钥和私钥","link":"#生成公钥和私钥","children":[]},{"level":2,"title":"前端代码","slug":"前端代码","link":"#前端代码","children":[]},{"level":2,"title":"后端代码","slug":"后端代码","link":"#后端代码","children":[]},{"level":2,"title":"参考","slug":"参考","link":"#参考","children":[]}],"relativePath":"knowledge-deposition/GoLang/加密/RSA加密.md"}'),p={name:"knowledge-deposition/GoLang/加密/RSA加密.md"},o=l(`

RSA

AES是常用的一种非对称加密,有公钥私钥,使用公钥加密可以通过私钥解密,同样使用私钥加密可以通过公钥解密

记录前端实现RSA加/解密,配合后端使用Go实现AES加/解密的过程

生成公钥和私钥

shell
# 生成1024位的RSA私钥:
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"RSA","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"生成公钥和私钥","slug":"生成公钥和私钥","link":"#生成公钥和私钥","children":[]},{"level":2,"title":"前端代码","slug":"前端代码","link":"#前端代码","children":[]},{"level":2,"title":"后端代码","slug":"后端代码","link":"#后端代码","children":[]},{"level":2,"title":"参考","slug":"参考","link":"#参考","children":[]}],"relativePath":"knowledge-deposition/GoLang/加密/RSA加密.md"}'),p={name:"knowledge-deposition/GoLang/加密/RSA加密.md"},o=l(`

RSA

AES是常用的一种非对称加密,有公钥私钥,使用公钥加密可以通过私钥解密,同样使用私钥加密可以通过公钥解密

记录前端实现RSA加/解密,配合后端使用Go实现AES加/解密的过程

生成公钥和私钥

shell
# 生成1024位的RSA私钥:
 openssl genrsa -out data/rsa_private_key.pem 1024
 
 # 根据私钥生成公钥:
diff --git "a/assets/knowledge-deposition_GoLang_\345\212\240\345\257\206_RSA\345\212\240\345\257\206.md.44036afe.lean.js" "b/assets/knowledge-deposition_GoLang_\345\212\240\345\257\206_RSA\345\212\240\345\257\206.md.4a63c350.lean.js"
similarity index 92%
rename from "assets/knowledge-deposition_GoLang_\345\212\240\345\257\206_RSA\345\212\240\345\257\206.md.44036afe.lean.js"
rename to "assets/knowledge-deposition_GoLang_\345\212\240\345\257\206_RSA\345\212\240\345\257\206.md.4a63c350.lean.js"
index 193fb18a..72bef94b 100644
--- "a/assets/knowledge-deposition_GoLang_\345\212\240\345\257\206_RSA\345\212\240\345\257\206.md.44036afe.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\212\240\345\257\206_RSA\345\212\240\345\257\206.md.4a63c350.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"RSA","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"生成公钥和私钥","slug":"生成公钥和私钥","link":"#生成公钥和私钥","children":[]},{"level":2,"title":"前端代码","slug":"前端代码","link":"#前端代码","children":[]},{"level":2,"title":"后端代码","slug":"后端代码","link":"#后端代码","children":[]},{"level":2,"title":"参考","slug":"参考","link":"#参考","children":[]}],"relativePath":"knowledge-deposition/GoLang/加密/RSA加密.md"}'),p={name:"knowledge-deposition/GoLang/加密/RSA加密.md"},o=l("",19),t=[o];function e(c,r,D,y,F,A){return a(),n("div",null,t)}const u=s(p,[["render",e]]);export{i as __pageData,u as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"RSA","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"生成公钥和私钥","slug":"生成公钥和私钥","link":"#生成公钥和私钥","children":[]},{"level":2,"title":"前端代码","slug":"前端代码","link":"#前端代码","children":[]},{"level":2,"title":"后端代码","slug":"后端代码","link":"#后端代码","children":[]},{"level":2,"title":"参考","slug":"参考","link":"#参考","children":[]}],"relativePath":"knowledge-deposition/GoLang/加密/RSA加密.md"}'),p={name:"knowledge-deposition/GoLang/加密/RSA加密.md"},o=l("",19),t=[o];function e(c,r,D,y,F,A){return a(),n("div",null,t)}const u=s(p,[["render",e]]);export{i as __pageData,u as default};
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_Context.md.830f0986.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_Context.md.381181ea.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_Context.md.830f0986.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_Context.md.381181ea.js"
index f7c801a9..3b01d5d4 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_Context.md.830f0986.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_Context.md.381181ea.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"Context","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"概念","slug":"概念","link":"#概念","children":[]},{"level":2,"title":"新建Context","slug":"新建context","link":"#新建context","children":[]},{"level":2,"title":"WithTimeout","slug":"withtimeout","link":"#withtimeout","children":[{"level":3,"title":"Timeout的继承问题","slug":"timeout的继承问题","link":"#timeout的继承问题","children":[]}]},{"level":2,"title":"WithCancel","slug":"withcancel","link":"#withcancel","children":[]},{"level":2,"title":"WithValue","slug":"withvalue","link":"#withvalue","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/Context.md"}'),o={name:"knowledge-deposition/GoLang/基础知识/Context.md"},p=l(`

Context

概念

  • Context本质上是一个接口
Go
type Context interface {
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"Context","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"概念","slug":"概念","link":"#概念","children":[]},{"level":2,"title":"新建Context","slug":"新建context","link":"#新建context","children":[]},{"level":2,"title":"WithTimeout","slug":"withtimeout","link":"#withtimeout","children":[{"level":3,"title":"Timeout的继承问题","slug":"timeout的继承问题","link":"#timeout的继承问题","children":[]}]},{"level":2,"title":"WithCancel","slug":"withcancel","link":"#withcancel","children":[]},{"level":2,"title":"WithValue","slug":"withvalue","link":"#withvalue","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/Context.md"}'),o={name:"knowledge-deposition/GoLang/基础知识/Context.md"},p=l(`

Context

概念

  • Context本质上是一个接口
Go
type Context interface {
     Deadline() (deadline time.Time, ok bool)
     Done() <-chan struct{}
     Err() error
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_Context.md.830f0986.lean.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_Context.md.381181ea.lean.js"
similarity index 93%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_Context.md.830f0986.lean.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_Context.md.381181ea.lean.js"
index 267c8dd5..459ec275 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_Context.md.830f0986.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_Context.md.381181ea.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"Context","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"概念","slug":"概念","link":"#概念","children":[]},{"level":2,"title":"新建Context","slug":"新建context","link":"#新建context","children":[]},{"level":2,"title":"WithTimeout","slug":"withtimeout","link":"#withtimeout","children":[{"level":3,"title":"Timeout的继承问题","slug":"timeout的继承问题","link":"#timeout的继承问题","children":[]}]},{"level":2,"title":"WithCancel","slug":"withcancel","link":"#withcancel","children":[]},{"level":2,"title":"WithValue","slug":"withvalue","link":"#withvalue","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/Context.md"}'),o={name:"knowledge-deposition/GoLang/基础知识/Context.md"},p=l("",30),e=[p];function t(c,D,r,F,y,A){return a(),n("div",null,e)}const d=s(o,[["render",t]]);export{i as __pageData,d as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"Context","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"概念","slug":"概念","link":"#概念","children":[]},{"level":2,"title":"新建Context","slug":"新建context","link":"#新建context","children":[]},{"level":2,"title":"WithTimeout","slug":"withtimeout","link":"#withtimeout","children":[{"level":3,"title":"Timeout的继承问题","slug":"timeout的继承问题","link":"#timeout的继承问题","children":[]}]},{"level":2,"title":"WithCancel","slug":"withcancel","link":"#withcancel","children":[]},{"level":2,"title":"WithValue","slug":"withvalue","link":"#withvalue","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/Context.md"}'),o={name:"knowledge-deposition/GoLang/基础知识/Context.md"},p=l("",30),e=[p];function t(c,D,r,F,y,A){return a(),n("div",null,e)}const d=s(o,[["render",t]]);export{i as __pageData,d as default};
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_Select.md.ebe3f150.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_Select.md.f7af1982.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_Select.md.ebe3f150.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_Select.md.f7af1982.js"
index bd8a462f..d4f5365d 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_Select.md.ebe3f150.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_Select.md.f7af1982.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"Select","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"select应用","slug":"select应用","link":"#select应用","children":[]},{"level":2,"title":"死锁","slug":"死锁","link":"#死锁","children":[]},{"level":2,"title":"select超时处理","slug":"select超时处理","link":"#select超时处理","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/Select.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/Select.md"},o=l(`

Select

  • select语句用在多个发送/接收通道操作中进行选择
    • select语句会一直阻塞,直到发送/接收操作准备就绪
    • 如果有多个通道操作准备完毕, select随机地选取其中之一执行
  • select里的case表达式只能对通道进行操作,不管是往通道写入数据,还是从通道读出数据

语法如下

Go
select {
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"Select","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"select应用","slug":"select应用","link":"#select应用","children":[]},{"level":2,"title":"死锁","slug":"死锁","link":"#死锁","children":[]},{"level":2,"title":"select超时处理","slug":"select超时处理","link":"#select超时处理","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/Select.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/Select.md"},o=l(`

Select

  • select语句用在多个发送/接收通道操作中进行选择
    • select语句会一直阻塞,直到发送/接收操作准备就绪
    • 如果有多个通道操作准备完毕, select随机地选取其中之一执行
  • select里的case表达式只能对通道进行操作,不管是往通道写入数据,还是从通道读出数据

语法如下

Go
select {
   case expression1:
     ...
   case expression2:
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_Select.md.ebe3f150.lean.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_Select.md.f7af1982.lean.js"
similarity index 90%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_Select.md.ebe3f150.lean.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_Select.md.f7af1982.lean.js"
index 72192dfc..44f3dfee 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_Select.md.ebe3f150.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_Select.md.f7af1982.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"Select","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"select应用","slug":"select应用","link":"#select应用","children":[]},{"level":2,"title":"死锁","slug":"死锁","link":"#死锁","children":[]},{"level":2,"title":"select超时处理","slug":"select超时处理","link":"#select超时处理","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/Select.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/Select.md"},o=l("",25),e=[o];function t(c,D,r,F,y,A){return a(),n("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"Select","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"select应用","slug":"select应用","link":"#select应用","children":[]},{"level":2,"title":"死锁","slug":"死锁","link":"#死锁","children":[]},{"level":2,"title":"select超时处理","slug":"select超时处理","link":"#select超时处理","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/Select.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/Select.md"},o=l("",25),e=[o];function t(c,D,r,F,y,A){return a(),n("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_Test.md.510674c5.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_Test.md.1c7cb86b.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_Test.md.510674c5.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_Test.md.1c7cb86b.js"
index cf4dfedf..920a3d6a 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_Test.md.510674c5.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_Test.md.1c7cb86b.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"Test","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"单元测试","slug":"单元测试","link":"#单元测试","children":[{"level":3,"title":"简单测试","slug":"简单测试","link":"#简单测试","children":[]},{"level":3,"title":"子测试","slug":"子测试","link":"#子测试","children":[]},{"level":3,"title":"表驱动测试","slug":"表驱动测试","link":"#表驱动测试","children":[]},{"level":3,"title":"测试覆盖率","slug":"测试覆盖率","link":"#测试覆盖率","children":[]}]},{"level":2,"title":"基准测试","slug":"基准测试","link":"#基准测试","children":[{"level":3,"title":"常用的基准测试命令","slug":"常用的基准测试命令","link":"#常用的基准测试命令","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/基础知识/Test.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/Test.md"},o=l(`

Test

Go中,可以使用内置的测试框架来进行单元测试基准测试,帮助开发者编写、运行和管理测试代码,以确保代码的质量和稳定性

单元测试

简单测试

Go中编写一个简单测试的流程:

  1. 创建测试文件:测试文件应该与被测试的代码所在的文件放在同一个包中,测试文件需要以_test.go结尾

例如:要测试名为foo文件中的函数,需要创建一个名为foo_test.go的文件

  1. 编写测试函数:测试函数都要以Test开头,Test后面跟被测试函数的名称,参数是t *testing.T

例如:要测试名为foo的函数,可以创建一个名为TestFoo的测试函数,func TestFoo(t *testing.T)

  1. 编写测试代码:测试函数中需要编写测试代码,用来验证被测试函数的行为是否符合预期。

测试代码中,应该使用t.Errort.Fail等函数来报告测试失败结果

  1. 运行测试代码:

在命令行中使用go test命令来运行测试,如果测试通过,将输出PASS,如果测试失败,将输出失败的测试用例的详细信息

代码示例

代码目录结构

shell
.test-related
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"Test","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"单元测试","slug":"单元测试","link":"#单元测试","children":[{"level":3,"title":"简单测试","slug":"简单测试","link":"#简单测试","children":[]},{"level":3,"title":"子测试","slug":"子测试","link":"#子测试","children":[]},{"level":3,"title":"表驱动测试","slug":"表驱动测试","link":"#表驱动测试","children":[]},{"level":3,"title":"测试覆盖率","slug":"测试覆盖率","link":"#测试覆盖率","children":[]}]},{"level":2,"title":"基准测试","slug":"基准测试","link":"#基准测试","children":[{"level":3,"title":"常用的基准测试命令","slug":"常用的基准测试命令","link":"#常用的基准测试命令","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/基础知识/Test.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/Test.md"},o=l(`

Test

Go中,可以使用内置的测试框架来进行单元测试基准测试,帮助开发者编写、运行和管理测试代码,以确保代码的质量和稳定性

单元测试

简单测试

Go中编写一个简单测试的流程:

  1. 创建测试文件:测试文件应该与被测试的代码所在的文件放在同一个包中,测试文件需要以_test.go结尾

例如:要测试名为foo文件中的函数,需要创建一个名为foo_test.go的文件

  1. 编写测试函数:测试函数都要以Test开头,Test后面跟被测试函数的名称,参数是t *testing.T

例如:要测试名为foo的函数,可以创建一个名为TestFoo的测试函数,func TestFoo(t *testing.T)

  1. 编写测试代码:测试函数中需要编写测试代码,用来验证被测试函数的行为是否符合预期。

测试代码中,应该使用t.Errort.Fail等函数来报告测试失败结果

  1. 运行测试代码:

在命令行中使用go test命令来运行测试,如果测试通过,将输出PASS,如果测试失败,将输出失败的测试用例的详细信息

代码示例

代码目录结构

shell
.test-related
 ├── foo.go
 └── foo_test.go
 
Go
// foo.go
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_Test.md.510674c5.lean.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_Test.md.1c7cb86b.lean.js"
similarity index 94%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_Test.md.510674c5.lean.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_Test.md.1c7cb86b.lean.js"
index 9e63471d..070d1130 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_Test.md.510674c5.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_Test.md.1c7cb86b.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"Test","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"单元测试","slug":"单元测试","link":"#单元测试","children":[{"level":3,"title":"简单测试","slug":"简单测试","link":"#简单测试","children":[]},{"level":3,"title":"子测试","slug":"子测试","link":"#子测试","children":[]},{"level":3,"title":"表驱动测试","slug":"表驱动测试","link":"#表驱动测试","children":[]},{"level":3,"title":"测试覆盖率","slug":"测试覆盖率","link":"#测试覆盖率","children":[]}]},{"level":2,"title":"基准测试","slug":"基准测试","link":"#基准测试","children":[{"level":3,"title":"常用的基准测试命令","slug":"常用的基准测试命令","link":"#常用的基准测试命令","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/基础知识/Test.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/Test.md"},o=l("",51),e=[o];function t(c,r,D,C,y,F){return a(),n("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"Test","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"单元测试","slug":"单元测试","link":"#单元测试","children":[{"level":3,"title":"简单测试","slug":"简单测试","link":"#简单测试","children":[]},{"level":3,"title":"子测试","slug":"子测试","link":"#子测试","children":[]},{"level":3,"title":"表驱动测试","slug":"表驱动测试","link":"#表驱动测试","children":[]},{"level":3,"title":"测试覆盖率","slug":"测试覆盖率","link":"#测试覆盖率","children":[]}]},{"level":2,"title":"基准测试","slug":"基准测试","link":"#基准测试","children":[{"level":3,"title":"常用的基准测试命令","slug":"常用的基准测试命令","link":"#常用的基准测试命令","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/基础知识/Test.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/Test.md"},o=l("",51),e=[o];function t(c,r,D,C,y,F){return a(),n("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_fmt\350\276\223\345\207\272\345\220\253\344\271\211.md.591e9212.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_fmt\350\276\223\345\207\272\345\220\253\344\271\211.md.383b4093.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_fmt\350\276\223\345\207\272\345\220\253\344\271\211.md.591e9212.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_fmt\350\276\223\345\207\272\345\220\253\344\271\211.md.383b4093.js"
index 8dcec315..c46c64e5 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_fmt\350\276\223\345\207\272\345\220\253\344\271\211.md.591e9212.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_fmt\350\276\223\345\207\272\345\220\253\344\271\211.md.383b4093.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as e,o as n,e as a}from"./app.fa87702c.js";const C=JSON.parse('{"title":"fmt使用","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"占位符含义","slug":"占位符含义","link":"#占位符含义","children":[]},{"level":2,"title":"方法","slug":"方法","link":"#方法","children":[{"level":3,"title":"fmt.Fprintf","slug":"fmt-fprintf","link":"#fmt-fprintf","children":[]},{"level":3,"title":"fmt.Println","slug":"fmt-println","link":"#fmt-println","children":[]},{"level":3,"title":"fmt.Printf","slug":"fmt-printf","link":"#fmt-printf","children":[]},{"level":3,"title":"fmt.Sprintf","slug":"fmt-sprintf","link":"#fmt-sprintf","children":[]},{"level":3,"title":"总结","slug":"总结","link":"#总结","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/基础知识/fmt输出含义.md"}'),t={name:"knowledge-deposition/GoLang/基础知识/fmt输出含义.md"},o=a(`

fmt使用

占位符含义

格式含义
%b一个二进制整数值(基数为2),或者是一个(高级的)用科学计数法表示的指数为2的浮点数
%c字符型,可以把输入的数字按照ASCII码相应转换为对应的字符
%d一个十进制数值(基数为10)
%f标准记数法表示的浮点数或者复数值
%o一个以八进制表示的数字(基数为8)
%p十六进制(基数为16)表示的一个值的地址,前缀为0x,字母使用小写的a-f表示
%q使用Go语法以及必须时使用转义,以双引号括起来的字符串或者字节切片[]byte,或者是以单引号括起来的数字
%s字符串,输出字符串中的字符直至字符串中的空字符(字符串以’\\0‘结尾,这个’\\0’即空字符)
%ttrue或者false输出的布尔值
%T使用Go语法输出的值的类型
%v输出变量的
%x十六进制表示的整型值(基数为十六),数字a-f使用小写表示
%X十六进制表示的整型值(基数为十六),数字A-F使用大写表示

方法

fmt.Fprintf

  • Fprintf函数将格式化的字符串写入io.Writer接口实现(如标准输出文件等)
Go
func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error)
+import{_ as s,c as e,o as n,e as a}from"./app.2f6419f0.js";const C=JSON.parse('{"title":"fmt使用","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"占位符含义","slug":"占位符含义","link":"#占位符含义","children":[]},{"level":2,"title":"方法","slug":"方法","link":"#方法","children":[{"level":3,"title":"fmt.Fprintf","slug":"fmt-fprintf","link":"#fmt-fprintf","children":[]},{"level":3,"title":"fmt.Println","slug":"fmt-println","link":"#fmt-println","children":[]},{"level":3,"title":"fmt.Printf","slug":"fmt-printf","link":"#fmt-printf","children":[]},{"level":3,"title":"fmt.Sprintf","slug":"fmt-sprintf","link":"#fmt-sprintf","children":[]},{"level":3,"title":"总结","slug":"总结","link":"#总结","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/基础知识/fmt输出含义.md"}'),t={name:"knowledge-deposition/GoLang/基础知识/fmt输出含义.md"},o=a(`

fmt使用

占位符含义

格式含义
%b一个二进制整数值(基数为2),或者是一个(高级的)用科学计数法表示的指数为2的浮点数
%c字符型,可以把输入的数字按照ASCII码相应转换为对应的字符
%d一个十进制数值(基数为10)
%f标准记数法表示的浮点数或者复数值
%o一个以八进制表示的数字(基数为8)
%p十六进制(基数为16)表示的一个值的地址,前缀为0x,字母使用小写的a-f表示
%q使用Go语法以及必须时使用转义,以双引号括起来的字符串或者字节切片[]byte,或者是以单引号括起来的数字
%s字符串,输出字符串中的字符直至字符串中的空字符(字符串以’\\0‘结尾,这个’\\0’即空字符)
%ttrue或者false输出的布尔值
%T使用Go语法输出的值的类型
%v输出变量的
%x十六进制表示的整型值(基数为十六),数字a-f使用小写表示
%X十六进制表示的整型值(基数为十六),数字A-F使用大写表示

方法

fmt.Fprintf

  • Fprintf函数将格式化的字符串写入io.Writer接口实现(如标准输出文件等)
Go
func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error)
 

使用示例

Go
fmt.Fprintf(os.Stdout, "Hello, %s!\\n", "Go")
 

fmt.Println

  • Println函数将给定的参数格式化为字符串并输出到标准输出,并在输出后添加一个换行符
Go
func Println(a ...interface{}) (n int, err error)
 

使用示例

Go
fmt.Println("Hello, Go!")
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_fmt\350\276\223\345\207\272\345\220\253\344\271\211.md.591e9212.lean.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_fmt\350\276\223\345\207\272\345\220\253\344\271\211.md.383b4093.lean.js"
similarity index 93%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_fmt\350\276\223\345\207\272\345\220\253\344\271\211.md.591e9212.lean.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_fmt\350\276\223\345\207\272\345\220\253\344\271\211.md.383b4093.lean.js"
index 9590f078..e168c960 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_fmt\350\276\223\345\207\272\345\220\253\344\271\211.md.591e9212.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_fmt\350\276\223\345\207\272\345\220\253\344\271\211.md.383b4093.lean.js"
@@ -1 +1 @@
-import{_ as s,c as e,o as n,e as a}from"./app.fa87702c.js";const C=JSON.parse('{"title":"fmt使用","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"占位符含义","slug":"占位符含义","link":"#占位符含义","children":[]},{"level":2,"title":"方法","slug":"方法","link":"#方法","children":[{"level":3,"title":"fmt.Fprintf","slug":"fmt-fprintf","link":"#fmt-fprintf","children":[]},{"level":3,"title":"fmt.Println","slug":"fmt-println","link":"#fmt-println","children":[]},{"level":3,"title":"fmt.Printf","slug":"fmt-printf","link":"#fmt-printf","children":[]},{"level":3,"title":"fmt.Sprintf","slug":"fmt-sprintf","link":"#fmt-sprintf","children":[]},{"level":3,"title":"总结","slug":"总结","link":"#总结","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/基础知识/fmt输出含义.md"}'),t={name:"knowledge-deposition/GoLang/基础知识/fmt输出含义.md"},o=a("",26),l=[o];function p(c,r,d,i,D,y){return n(),e("div",null,l)}const A=s(t,[["render",p]]);export{C as __pageData,A as default};
+import{_ as s,c as e,o as n,e as a}from"./app.2f6419f0.js";const C=JSON.parse('{"title":"fmt使用","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"占位符含义","slug":"占位符含义","link":"#占位符含义","children":[]},{"level":2,"title":"方法","slug":"方法","link":"#方法","children":[{"level":3,"title":"fmt.Fprintf","slug":"fmt-fprintf","link":"#fmt-fprintf","children":[]},{"level":3,"title":"fmt.Println","slug":"fmt-println","link":"#fmt-println","children":[]},{"level":3,"title":"fmt.Printf","slug":"fmt-printf","link":"#fmt-printf","children":[]},{"level":3,"title":"fmt.Sprintf","slug":"fmt-sprintf","link":"#fmt-sprintf","children":[]},{"level":3,"title":"总结","slug":"总结","link":"#总结","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/基础知识/fmt输出含义.md"}'),t={name:"knowledge-deposition/GoLang/基础知识/fmt输出含义.md"},o=a("",26),l=[o];function p(c,r,d,i,D,y){return n(),e("div",null,l)}const A=s(t,[["render",p]]);export{C as __pageData,A as default};
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_json\345\272\217\345\210\227\345\214\226.md.22767fa1.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_json\345\272\217\345\210\227\345\214\226.md.d5e77d9b.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_json\345\272\217\345\210\227\345\214\226.md.22767fa1.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_json\345\272\217\345\210\227\345\214\226.md.d5e77d9b.js"
index a4b7c3df..51cdb8e3 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_json\345\272\217\345\210\227\345\214\226.md.22767fa1.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_json\345\272\217\345\210\227\345\214\226.md.d5e77d9b.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"json序列化","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"json.Marshal","slug":"json-marshal","link":"#json-marshal","children":[]},{"level":2,"title":"json.Unmarshal","slug":"json-unmarshal","link":"#json-unmarshal","children":[]},{"level":2,"title":"sonic","slug":"sonic","link":"#sonic","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/json序列化.md"}'),o={name:"knowledge-deposition/GoLang/基础知识/json序列化.md"},p=l(`

json序列化

json.Marshal

  • 可以使用json.Marshal方法将结构体转换为二进制流
Go
func json.Marshal(v any) ([]byte, error)
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"json序列化","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"json.Marshal","slug":"json-marshal","link":"#json-marshal","children":[]},{"level":2,"title":"json.Unmarshal","slug":"json-unmarshal","link":"#json-unmarshal","children":[]},{"level":2,"title":"sonic","slug":"sonic","link":"#sonic","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/json序列化.md"}'),o={name:"knowledge-deposition/GoLang/基础知识/json序列化.md"},p=l(`

json序列化

json.Marshal

  • 可以使用json.Marshal方法将结构体转换为二进制流
Go
func json.Marshal(v any) ([]byte, error)
 

代码示例

Go
package main
 
 import (
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_json\345\272\217\345\210\227\345\214\226.md.22767fa1.lean.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_json\345\272\217\345\210\227\345\214\226.md.d5e77d9b.lean.js"
similarity index 91%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_json\345\272\217\345\210\227\345\214\226.md.22767fa1.lean.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_json\345\272\217\345\210\227\345\214\226.md.d5e77d9b.lean.js"
index a5eae8d1..d3675bf1 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_json\345\272\217\345\210\227\345\214\226.md.22767fa1.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_json\345\272\217\345\210\227\345\214\226.md.d5e77d9b.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"json序列化","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"json.Marshal","slug":"json-marshal","link":"#json-marshal","children":[]},{"level":2,"title":"json.Unmarshal","slug":"json-unmarshal","link":"#json-unmarshal","children":[]},{"level":2,"title":"sonic","slug":"sonic","link":"#sonic","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/json序列化.md"}'),o={name:"knowledge-deposition/GoLang/基础知识/json序列化.md"},p=l("",13),t=[p];function e(c,r,D,y,F,C){return a(),n("div",null,t)}const u=s(o,[["render",e]]);export{i as __pageData,u as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"json序列化","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"json.Marshal","slug":"json-marshal","link":"#json-marshal","children":[]},{"level":2,"title":"json.Unmarshal","slug":"json-unmarshal","link":"#json-unmarshal","children":[]},{"level":2,"title":"sonic","slug":"sonic","link":"#sonic","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/json序列化.md"}'),o={name:"knowledge-deposition/GoLang/基础知识/json序列化.md"},p=l("",13),t=[p];function e(c,r,D,y,F,C){return a(),n("div",null,t)}const u=s(o,[["render",e]]);export{i as __pageData,u as default};
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_strings\345\214\205.md.b87e7a71.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_strings\345\214\205.md.81622654.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_strings\345\214\205.md.b87e7a71.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_strings\345\214\205.md.81622654.js"
index d39e6e5a..e76b53d9 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_strings\345\214\205.md.b87e7a71.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_strings\345\214\205.md.81622654.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const C=JSON.parse('{"title":"strings包","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"判断前缀/后缀","slug":"判断前缀-后缀","link":"#判断前缀-后缀","children":[{"level":3,"title":"HasPrefix","slug":"hasprefix","link":"#hasprefix","children":[]},{"level":3,"title":"HasSuffix","slug":"hassuffix","link":"#hassuffix","children":[]}]},{"level":2,"title":"字符串包含","slug":"字符串包含","link":"#字符串包含","children":[]},{"level":2,"title":"字符串索引","slug":"字符串索引","link":"#字符串索引","children":[{"level":3,"title":"Index","slug":"index","link":"#index","children":[]},{"level":3,"title":"LastIndex","slug":"lastindex","link":"#lastindex","children":[]}]},{"level":2,"title":"字符串替换","slug":"字符串替换","link":"#字符串替换","children":[]},{"level":2,"title":"统计字符串出现次数","slug":"统计字符串出现次数","link":"#统计字符串出现次数","children":[]},{"level":2,"title":"重复字符串","slug":"重复字符串","link":"#重复字符串","children":[]},{"level":2,"title":"转换大小写","slug":"转换大小写","link":"#转换大小写","children":[]},{"level":2,"title":"字符串格式化","slug":"字符串格式化","link":"#字符串格式化","children":[]},{"level":2,"title":"字符串切割","slug":"字符串切割","link":"#字符串切割","children":[]},{"level":2,"title":"拼接slice到字符串","slug":"拼接slice到字符串","link":"#拼接slice到字符串","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/strings包.md"}'),o={name:"knowledge-deposition/GoLang/基础知识/strings包.md"},p=l(`

strings包

Go中使用strings包来完成对字符串的操作

判断前缀/后缀

HasPrefix

  • 使用strings.HasPrefix判断字符串str是否以prefix开头
Go
strings.HasPrefix(str, prefix string) bool
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const C=JSON.parse('{"title":"strings包","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"判断前缀/后缀","slug":"判断前缀-后缀","link":"#判断前缀-后缀","children":[{"level":3,"title":"HasPrefix","slug":"hasprefix","link":"#hasprefix","children":[]},{"level":3,"title":"HasSuffix","slug":"hassuffix","link":"#hassuffix","children":[]}]},{"level":2,"title":"字符串包含","slug":"字符串包含","link":"#字符串包含","children":[]},{"level":2,"title":"字符串索引","slug":"字符串索引","link":"#字符串索引","children":[{"level":3,"title":"Index","slug":"index","link":"#index","children":[]},{"level":3,"title":"LastIndex","slug":"lastindex","link":"#lastindex","children":[]}]},{"level":2,"title":"字符串替换","slug":"字符串替换","link":"#字符串替换","children":[]},{"level":2,"title":"统计字符串出现次数","slug":"统计字符串出现次数","link":"#统计字符串出现次数","children":[]},{"level":2,"title":"重复字符串","slug":"重复字符串","link":"#重复字符串","children":[]},{"level":2,"title":"转换大小写","slug":"转换大小写","link":"#转换大小写","children":[]},{"level":2,"title":"字符串格式化","slug":"字符串格式化","link":"#字符串格式化","children":[]},{"level":2,"title":"字符串切割","slug":"字符串切割","link":"#字符串切割","children":[]},{"level":2,"title":"拼接slice到字符串","slug":"拼接slice到字符串","link":"#拼接slice到字符串","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/strings包.md"}'),o={name:"knowledge-deposition/GoLang/基础知识/strings包.md"},p=l(`

strings包

Go中使用strings包来完成对字符串的操作

判断前缀/后缀

HasPrefix

  • 使用strings.HasPrefix判断字符串str是否以prefix开头
Go
strings.HasPrefix(str, prefix string) bool
 

代码示例

Go
str1 := "hash是开发计划"
 fmt.Println(strings.HasPrefix(str1, "hash")) // true
 fmt.Println(strings.HasPrefix(str1, "ha")) // true
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_strings\345\214\205.md.b87e7a71.lean.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_strings\345\214\205.md.81622654.lean.js"
similarity index 96%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_strings\345\214\205.md.b87e7a71.lean.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_strings\345\214\205.md.81622654.lean.js"
index 6d28c6c3..bf06f5bc 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_strings\345\214\205.md.b87e7a71.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_strings\345\214\205.md.81622654.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const C=JSON.parse('{"title":"strings包","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"判断前缀/后缀","slug":"判断前缀-后缀","link":"#判断前缀-后缀","children":[{"level":3,"title":"HasPrefix","slug":"hasprefix","link":"#hasprefix","children":[]},{"level":3,"title":"HasSuffix","slug":"hassuffix","link":"#hassuffix","children":[]}]},{"level":2,"title":"字符串包含","slug":"字符串包含","link":"#字符串包含","children":[]},{"level":2,"title":"字符串索引","slug":"字符串索引","link":"#字符串索引","children":[{"level":3,"title":"Index","slug":"index","link":"#index","children":[]},{"level":3,"title":"LastIndex","slug":"lastindex","link":"#lastindex","children":[]}]},{"level":2,"title":"字符串替换","slug":"字符串替换","link":"#字符串替换","children":[]},{"level":2,"title":"统计字符串出现次数","slug":"统计字符串出现次数","link":"#统计字符串出现次数","children":[]},{"level":2,"title":"重复字符串","slug":"重复字符串","link":"#重复字符串","children":[]},{"level":2,"title":"转换大小写","slug":"转换大小写","link":"#转换大小写","children":[]},{"level":2,"title":"字符串格式化","slug":"字符串格式化","link":"#字符串格式化","children":[]},{"level":2,"title":"字符串切割","slug":"字符串切割","link":"#字符串切割","children":[]},{"level":2,"title":"拼接slice到字符串","slug":"拼接slice到字符串","link":"#拼接slice到字符串","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/strings包.md"}'),o={name:"knowledge-deposition/GoLang/基础知识/strings包.md"},p=l("",64),t=[p];function e(c,r,D,F,y,A){return a(),n("div",null,t)}const d=s(o,[["render",e]]);export{C as __pageData,d as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const C=JSON.parse('{"title":"strings包","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"判断前缀/后缀","slug":"判断前缀-后缀","link":"#判断前缀-后缀","children":[{"level":3,"title":"HasPrefix","slug":"hasprefix","link":"#hasprefix","children":[]},{"level":3,"title":"HasSuffix","slug":"hassuffix","link":"#hassuffix","children":[]}]},{"level":2,"title":"字符串包含","slug":"字符串包含","link":"#字符串包含","children":[]},{"level":2,"title":"字符串索引","slug":"字符串索引","link":"#字符串索引","children":[{"level":3,"title":"Index","slug":"index","link":"#index","children":[]},{"level":3,"title":"LastIndex","slug":"lastindex","link":"#lastindex","children":[]}]},{"level":2,"title":"字符串替换","slug":"字符串替换","link":"#字符串替换","children":[]},{"level":2,"title":"统计字符串出现次数","slug":"统计字符串出现次数","link":"#统计字符串出现次数","children":[]},{"level":2,"title":"重复字符串","slug":"重复字符串","link":"#重复字符串","children":[]},{"level":2,"title":"转换大小写","slug":"转换大小写","link":"#转换大小写","children":[]},{"level":2,"title":"字符串格式化","slug":"字符串格式化","link":"#字符串格式化","children":[]},{"level":2,"title":"字符串切割","slug":"字符串切割","link":"#字符串切割","children":[]},{"level":2,"title":"拼接slice到字符串","slug":"拼接slice到字符串","link":"#拼接slice到字符串","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/strings包.md"}'),o={name:"knowledge-deposition/GoLang/基础知识/strings包.md"},p=l("",64),t=[p];function e(c,r,D,F,y,A){return a(),n("div",null,t)}const d=s(o,[["render",e]]);export{C as __pageData,d as default};
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_time\345\214\205.md.3c7c1419.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_time\345\214\205.md.b6fcbbbc.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_time\345\214\205.md.3c7c1419.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_time\345\214\205.md.b6fcbbbc.js"
index a6c5c367..b7cb3a13 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_time\345\214\205.md.3c7c1419.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_time\345\214\205.md.b6fcbbbc.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const C=JSON.parse('{"title":"time包","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"查看当前时间","slug":"查看当前时间","link":"#查看当前时间","children":[]},{"level":2,"title":"获取两个时间的间隔","slug":"获取两个时间的间隔","link":"#获取两个时间的间隔","children":[{"level":3,"title":"time.Time.Sub","slug":"time-time-sub","link":"#time-time-sub","children":[]},{"level":3,"title":"time.Since","slug":"time-since","link":"#time-since","children":[]}]},{"level":2,"title":"两个时间相加","slug":"两个时间相加","link":"#两个时间相加","children":[{"level":3,"title":"time.Time.Add","slug":"time-time-add","link":"#time-time-add","children":[]}]},{"level":2,"title":"时间格式化","slug":"时间格式化","link":"#时间格式化","children":[]},{"level":2,"title":"Timer和Ticker","slug":"timer和ticker","link":"#timer和ticker","children":[{"level":3,"title":"Timer","slug":"timer","link":"#timer","children":[]},{"level":3,"title":"计时器","slug":"计时器","link":"#计时器","children":[]},{"level":3,"title":"速率限制","slug":"速率限制","link":"#速率限制","children":[]},{"level":3,"title":"控制并发数量","slug":"控制并发数量","link":"#控制并发数量","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/基础知识/time包.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/time包.md"},o=l(`

time包

查看当前时间

Go
func Now() Time
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const C=JSON.parse('{"title":"time包","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"查看当前时间","slug":"查看当前时间","link":"#查看当前时间","children":[]},{"level":2,"title":"获取两个时间的间隔","slug":"获取两个时间的间隔","link":"#获取两个时间的间隔","children":[{"level":3,"title":"time.Time.Sub","slug":"time-time-sub","link":"#time-time-sub","children":[]},{"level":3,"title":"time.Since","slug":"time-since","link":"#time-since","children":[]}]},{"level":2,"title":"两个时间相加","slug":"两个时间相加","link":"#两个时间相加","children":[{"level":3,"title":"time.Time.Add","slug":"time-time-add","link":"#time-time-add","children":[]}]},{"level":2,"title":"时间格式化","slug":"时间格式化","link":"#时间格式化","children":[]},{"level":2,"title":"Timer和Ticker","slug":"timer和ticker","link":"#timer和ticker","children":[{"level":3,"title":"Timer","slug":"timer","link":"#timer","children":[]},{"level":3,"title":"计时器","slug":"计时器","link":"#计时器","children":[]},{"level":3,"title":"速率限制","slug":"速率限制","link":"#速率限制","children":[]},{"level":3,"title":"控制并发数量","slug":"控制并发数量","link":"#控制并发数量","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/基础知识/time包.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/time包.md"},o=l(`

time包

查看当前时间

Go
func Now() Time
 

TIP

时间戳精确到

代码示例

Go
// 获取当前时间
 t := time.Now()
 // 获取当前时间戳
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_time\345\214\205.md.3c7c1419.lean.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_time\345\214\205.md.b6fcbbbc.lean.js"
similarity index 96%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_time\345\214\205.md.3c7c1419.lean.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_time\345\214\205.md.b6fcbbbc.lean.js"
index 03b812dd..4ae338ff 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_time\345\214\205.md.3c7c1419.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_time\345\214\205.md.b6fcbbbc.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const C=JSON.parse('{"title":"time包","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"查看当前时间","slug":"查看当前时间","link":"#查看当前时间","children":[]},{"level":2,"title":"获取两个时间的间隔","slug":"获取两个时间的间隔","link":"#获取两个时间的间隔","children":[{"level":3,"title":"time.Time.Sub","slug":"time-time-sub","link":"#time-time-sub","children":[]},{"level":3,"title":"time.Since","slug":"time-since","link":"#time-since","children":[]}]},{"level":2,"title":"两个时间相加","slug":"两个时间相加","link":"#两个时间相加","children":[{"level":3,"title":"time.Time.Add","slug":"time-time-add","link":"#time-time-add","children":[]}]},{"level":2,"title":"时间格式化","slug":"时间格式化","link":"#时间格式化","children":[]},{"level":2,"title":"Timer和Ticker","slug":"timer和ticker","link":"#timer和ticker","children":[{"level":3,"title":"Timer","slug":"timer","link":"#timer","children":[]},{"level":3,"title":"计时器","slug":"计时器","link":"#计时器","children":[]},{"level":3,"title":"速率限制","slug":"速率限制","link":"#速率限制","children":[]},{"level":3,"title":"控制并发数量","slug":"控制并发数量","link":"#控制并发数量","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/基础知识/time包.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/time包.md"},o=l("",39),t=[o];function e(c,r,D,y,F,i){return a(),n("div",null,t)}const d=s(p,[["render",e]]);export{C as __pageData,d as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const C=JSON.parse('{"title":"time包","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"查看当前时间","slug":"查看当前时间","link":"#查看当前时间","children":[]},{"level":2,"title":"获取两个时间的间隔","slug":"获取两个时间的间隔","link":"#获取两个时间的间隔","children":[{"level":3,"title":"time.Time.Sub","slug":"time-time-sub","link":"#time-time-sub","children":[]},{"level":3,"title":"time.Since","slug":"time-since","link":"#time-since","children":[]}]},{"level":2,"title":"两个时间相加","slug":"两个时间相加","link":"#两个时间相加","children":[{"level":3,"title":"time.Time.Add","slug":"time-time-add","link":"#time-time-add","children":[]}]},{"level":2,"title":"时间格式化","slug":"时间格式化","link":"#时间格式化","children":[]},{"level":2,"title":"Timer和Ticker","slug":"timer和ticker","link":"#timer和ticker","children":[{"level":3,"title":"Timer","slug":"timer","link":"#timer","children":[]},{"level":3,"title":"计时器","slug":"计时器","link":"#计时器","children":[]},{"level":3,"title":"速率限制","slug":"速率限制","link":"#速率限制","children":[]},{"level":3,"title":"控制并发数量","slug":"控制并发数量","link":"#控制并发数量","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/基础知识/time包.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/time包.md"},o=l("",39),t=[o];function e(c,r,D,y,F,i){return a(),n("div",null,t)}const d=s(p,[["render",e]]);export{C as __pageData,d as default};
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_url\345\214\205.md.97a21a31.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_url\345\214\205.md.ea6873a4.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_url\345\214\205.md.97a21a31.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_url\345\214\205.md.ea6873a4.js"
index 3d1b729d..652c09e4 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_url\345\214\205.md.97a21a31.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_url\345\214\205.md.ea6873a4.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const C=JSON.parse('{"title":"url包","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"url.Parse","slug":"url-parse","link":"#url-parse","children":[]},{"level":2,"title":"url.ParseRequestURI","slug":"url-parserequesturi","link":"#url-parserequesturi","children":[]},{"level":2,"title":"url.PathEscape和url.PathUnescape","slug":"url-pathescape和url-pathunescape","link":"#url-pathescape和url-pathunescape","children":[]},{"level":2,"title":"url.QueryEscape和url.QueryUnescape","slug":"url-queryescape和url-queryunescape","link":"#url-queryescape和url-queryunescape","children":[]},{"level":2,"title":"url.ParseQuery","slug":"url-parsequery","link":"#url-parsequery","children":[]},{"level":2,"title":"url.Values","slug":"url-values","link":"#url-values","children":[]},{"level":2,"title":"url.JoinPath","slug":"url-joinpath","link":"#url-joinpath","children":[]},{"level":2,"title":"url.UserInfo","slug":"url-userinfo","link":"#url-userinfo","children":[]},{"level":2,"title":"url.URL.String","slug":"url-url-string","link":"#url-url-string","children":[]},{"level":2,"title":"url.URL.Query","slug":"url-url-query","link":"#url-url-query","children":[]},{"level":2,"title":"url.URL.Hostname和url.URL.Port","slug":"url-url-hostname和url-url-port","link":"#url-url-hostname和url-url-port","children":[]},{"level":2,"title":"url.URL.IsAbs","slug":"url-url-isabs","link":"#url-url-isabs","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/url包.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/url包.md"},o=l(`

url包

net/url包在Go语言中用于解析和构建URL

url.Parse

url.Parse方法用于解析一个URL字符串并返回一个*url.URL对象。url.URL对象如下:

Go
// URL's String method uses the EscapedPath method to obtain the path.
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const C=JSON.parse('{"title":"url包","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"url.Parse","slug":"url-parse","link":"#url-parse","children":[]},{"level":2,"title":"url.ParseRequestURI","slug":"url-parserequesturi","link":"#url-parserequesturi","children":[]},{"level":2,"title":"url.PathEscape和url.PathUnescape","slug":"url-pathescape和url-pathunescape","link":"#url-pathescape和url-pathunescape","children":[]},{"level":2,"title":"url.QueryEscape和url.QueryUnescape","slug":"url-queryescape和url-queryunescape","link":"#url-queryescape和url-queryunescape","children":[]},{"level":2,"title":"url.ParseQuery","slug":"url-parsequery","link":"#url-parsequery","children":[]},{"level":2,"title":"url.Values","slug":"url-values","link":"#url-values","children":[]},{"level":2,"title":"url.JoinPath","slug":"url-joinpath","link":"#url-joinpath","children":[]},{"level":2,"title":"url.UserInfo","slug":"url-userinfo","link":"#url-userinfo","children":[]},{"level":2,"title":"url.URL.String","slug":"url-url-string","link":"#url-url-string","children":[]},{"level":2,"title":"url.URL.Query","slug":"url-url-query","link":"#url-url-query","children":[]},{"level":2,"title":"url.URL.Hostname和url.URL.Port","slug":"url-url-hostname和url-url-port","link":"#url-url-hostname和url-url-port","children":[]},{"level":2,"title":"url.URL.IsAbs","slug":"url-url-isabs","link":"#url-url-isabs","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/url包.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/url包.md"},o=l(`

url包

net/url包在Go语言中用于解析和构建URL

url.Parse

url.Parse方法用于解析一个URL字符串并返回一个*url.URL对象。url.URL对象如下:

Go
// URL's String method uses the EscapedPath method to obtain the path.
 type URL struct {
 	Scheme      string
 	Opaque      string    // encoded opaque data
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_url\345\214\205.md.97a21a31.lean.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_url\345\214\205.md.ea6873a4.lean.js"
similarity index 96%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_url\345\214\205.md.97a21a31.lean.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_url\345\214\205.md.ea6873a4.lean.js"
index 413fcb45..16f6aa80 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_url\345\214\205.md.97a21a31.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_url\345\214\205.md.ea6873a4.lean.js"
@@ -1 +1 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const C=JSON.parse('{"title":"url包","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"url.Parse","slug":"url-parse","link":"#url-parse","children":[]},{"level":2,"title":"url.ParseRequestURI","slug":"url-parserequesturi","link":"#url-parserequesturi","children":[]},{"level":2,"title":"url.PathEscape和url.PathUnescape","slug":"url-pathescape和url-pathunescape","link":"#url-pathescape和url-pathunescape","children":[]},{"level":2,"title":"url.QueryEscape和url.QueryUnescape","slug":"url-queryescape和url-queryunescape","link":"#url-queryescape和url-queryunescape","children":[]},{"level":2,"title":"url.ParseQuery","slug":"url-parsequery","link":"#url-parsequery","children":[]},{"level":2,"title":"url.Values","slug":"url-values","link":"#url-values","children":[]},{"level":2,"title":"url.JoinPath","slug":"url-joinpath","link":"#url-joinpath","children":[]},{"level":2,"title":"url.UserInfo","slug":"url-userinfo","link":"#url-userinfo","children":[]},{"level":2,"title":"url.URL.String","slug":"url-url-string","link":"#url-url-string","children":[]},{"level":2,"title":"url.URL.Query","slug":"url-url-query","link":"#url-url-query","children":[]},{"level":2,"title":"url.URL.Hostname和url.URL.Port","slug":"url-url-hostname和url-url-port","link":"#url-url-hostname和url-url-port","children":[]},{"level":2,"title":"url.URL.IsAbs","slug":"url-url-isabs","link":"#url-url-isabs","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/url包.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/url包.md"},o=l("",51),e=[o];function t(c,r,D,F,y,A){return n(),a("div",null,e)}const u=s(p,[["render",t]]);export{C as __pageData,u as default};
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const C=JSON.parse('{"title":"url包","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"url.Parse","slug":"url-parse","link":"#url-parse","children":[]},{"level":2,"title":"url.ParseRequestURI","slug":"url-parserequesturi","link":"#url-parserequesturi","children":[]},{"level":2,"title":"url.PathEscape和url.PathUnescape","slug":"url-pathescape和url-pathunescape","link":"#url-pathescape和url-pathunescape","children":[]},{"level":2,"title":"url.QueryEscape和url.QueryUnescape","slug":"url-queryescape和url-queryunescape","link":"#url-queryescape和url-queryunescape","children":[]},{"level":2,"title":"url.ParseQuery","slug":"url-parsequery","link":"#url-parsequery","children":[]},{"level":2,"title":"url.Values","slug":"url-values","link":"#url-values","children":[]},{"level":2,"title":"url.JoinPath","slug":"url-joinpath","link":"#url-joinpath","children":[]},{"level":2,"title":"url.UserInfo","slug":"url-userinfo","link":"#url-userinfo","children":[]},{"level":2,"title":"url.URL.String","slug":"url-url-string","link":"#url-url-string","children":[]},{"level":2,"title":"url.URL.Query","slug":"url-url-query","link":"#url-url-query","children":[]},{"level":2,"title":"url.URL.Hostname和url.URL.Port","slug":"url-url-hostname和url-url-port","link":"#url-url-hostname和url-url-port","children":[]},{"level":2,"title":"url.URL.IsAbs","slug":"url-url-isabs","link":"#url-url-isabs","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/url包.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/url包.md"},o=l("",51),e=[o];function t(c,r,D,F,y,A){return n(),a("div",null,e)}const u=s(p,[["render",t]]);export{C as __pageData,u as default};
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\207\275\346\225\260.md.005b7241.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\207\275\346\225\260.md.d0c078b3.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\207\275\346\225\260.md.005b7241.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\207\275\346\225\260.md.d0c078b3.js"
index ccabf4de..43ac5703 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\207\275\346\225\260.md.005b7241.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\207\275\346\225\260.md.d0c078b3.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"函数","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"函数声明","slug":"函数声明","link":"#函数声明","children":[]},{"level":2,"title":"函数参数","slug":"函数参数","link":"#函数参数","children":[{"level":3,"title":"固定长度的参数","slug":"固定长度的参数","link":"#固定长度的参数","children":[]},{"level":3,"title":"不固定长度,多个参数类型一致","slug":"不固定长度-多个参数类型一致","link":"#不固定长度-多个参数类型一致","children":[]},{"level":3,"title":"不固定长度,参数类型不一致","slug":"不固定长度-参数类型不一致","link":"#不固定长度-参数类型不一致","children":[]}]},{"level":2,"title":"解序列","slug":"解序列","link":"#解序列","children":[]},{"level":2,"title":"函数返回值","slug":"函数返回值","link":"#函数返回值","children":[{"level":3,"title":"一个返回值","slug":"一个返回值","link":"#一个返回值","children":[]},{"level":3,"title":"多个返回值","slug":"多个返回值","link":"#多个返回值","children":[]},{"level":3,"title":"返回值命名","slug":"返回值命名","link":"#返回值命名","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/基础知识/函数.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/函数.md"},o=l(`

函数

函数声明

Go
func function_name(arguments) [function_result_value] {
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"函数","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"函数声明","slug":"函数声明","link":"#函数声明","children":[]},{"level":2,"title":"函数参数","slug":"函数参数","link":"#函数参数","children":[{"level":3,"title":"固定长度的参数","slug":"固定长度的参数","link":"#固定长度的参数","children":[]},{"level":3,"title":"不固定长度,多个参数类型一致","slug":"不固定长度-多个参数类型一致","link":"#不固定长度-多个参数类型一致","children":[]},{"level":3,"title":"不固定长度,参数类型不一致","slug":"不固定长度-参数类型不一致","link":"#不固定长度-参数类型不一致","children":[]}]},{"level":2,"title":"解序列","slug":"解序列","link":"#解序列","children":[]},{"level":2,"title":"函数返回值","slug":"函数返回值","link":"#函数返回值","children":[{"level":3,"title":"一个返回值","slug":"一个返回值","link":"#一个返回值","children":[]},{"level":3,"title":"多个返回值","slug":"多个返回值","link":"#多个返回值","children":[]},{"level":3,"title":"返回值命名","slug":"返回值命名","link":"#返回值命名","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/基础知识/函数.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/函数.md"},o=l(`

函数

函数声明

Go
func function_name(arguments) [function_result_value] {
   ...
 }
 

函数参数

固定长度的参数

  • 如果函数参数的类型都一样可以只在最后一个参数后面写类型
Go
// 如果参数的类型都一样可以只在最后一个参数后面写类型
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\207\275\346\225\260.md.005b7241.lean.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\207\275\346\225\260.md.d0c078b3.lean.js"
similarity index 95%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\207\275\346\225\260.md.005b7241.lean.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\207\275\346\225\260.md.d0c078b3.lean.js"
index b4e61348..4efefcf0 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\207\275\346\225\260.md.005b7241.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\207\275\346\225\260.md.d0c078b3.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"函数","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"函数声明","slug":"函数声明","link":"#函数声明","children":[]},{"level":2,"title":"函数参数","slug":"函数参数","link":"#函数参数","children":[{"level":3,"title":"固定长度的参数","slug":"固定长度的参数","link":"#固定长度的参数","children":[]},{"level":3,"title":"不固定长度,多个参数类型一致","slug":"不固定长度-多个参数类型一致","link":"#不固定长度-多个参数类型一致","children":[]},{"level":3,"title":"不固定长度,参数类型不一致","slug":"不固定长度-参数类型不一致","link":"#不固定长度-参数类型不一致","children":[]}]},{"level":2,"title":"解序列","slug":"解序列","link":"#解序列","children":[]},{"level":2,"title":"函数返回值","slug":"函数返回值","link":"#函数返回值","children":[{"level":3,"title":"一个返回值","slug":"一个返回值","link":"#一个返回值","children":[]},{"level":3,"title":"多个返回值","slug":"多个返回值","link":"#多个返回值","children":[]},{"level":3,"title":"返回值命名","slug":"返回值命名","link":"#返回值命名","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/基础知识/函数.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/函数.md"},o=l("",35),e=[o];function t(c,D,r,y,F,A){return a(),n("div",null,e)}const u=s(p,[["render",t]]);export{i as __pageData,u as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"函数","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"函数声明","slug":"函数声明","link":"#函数声明","children":[]},{"level":2,"title":"函数参数","slug":"函数参数","link":"#函数参数","children":[{"level":3,"title":"固定长度的参数","slug":"固定长度的参数","link":"#固定长度的参数","children":[]},{"level":3,"title":"不固定长度,多个参数类型一致","slug":"不固定长度-多个参数类型一致","link":"#不固定长度-多个参数类型一致","children":[]},{"level":3,"title":"不固定长度,参数类型不一致","slug":"不固定长度-参数类型不一致","link":"#不固定长度-参数类型不一致","children":[]}]},{"level":2,"title":"解序列","slug":"解序列","link":"#解序列","children":[]},{"level":2,"title":"函数返回值","slug":"函数返回值","link":"#函数返回值","children":[{"level":3,"title":"一个返回值","slug":"一个返回值","link":"#一个返回值","children":[]},{"level":3,"title":"多个返回值","slug":"多个返回值","link":"#多个返回值","children":[]},{"level":3,"title":"返回值命名","slug":"返回值命名","link":"#返回值命名","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/基础知识/函数.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/函数.md"},o=l("",35),e=[o];function t(c,D,r,y,F,A){return a(),n("div",null,e)}const u=s(p,[["render",t]]);export{i as __pageData,u as default};
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\215\217\347\250\213.md.beabafa5.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\215\217\347\250\213.md.e34dff3f.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\215\217\347\250\213.md.beabafa5.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\215\217\347\250\213.md.e34dff3f.js"
index f0b115a4..9fb88db3 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\215\217\347\250\213.md.beabafa5.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\215\217\347\250\213.md.e34dff3f.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const C=JSON.parse('{"title":"协程Groutine","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"启动一个协程","slug":"启动一个协程","link":"#启动一个协程","children":[]},{"level":2,"title":"启动多个协程","slug":"启动多个协程","link":"#启动多个协程","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/协程.md"}'),o={name:"knowledge-deposition/GoLang/基础知识/协程.md"},p=l(`

协程Groutine

  • Go语言的协程(Groutine)是与其他函数或方法一起并发运行的工作方式

  • 协程可以看作是轻量级线程,与线程相比,创建一个协程的成本很小,因此在Go应用中,常常会看到会有很多协程并发地运行

启动一个协程

  • 调用函数或者方法时,如果在前面加上关键字go,就可以让一个新的Go协程并发地运行
Go
// 定义一个函数
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const C=JSON.parse('{"title":"协程Groutine","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"启动一个协程","slug":"启动一个协程","link":"#启动一个协程","children":[]},{"level":2,"title":"启动多个协程","slug":"启动多个协程","link":"#启动多个协程","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/协程.md"}'),o={name:"knowledge-deposition/GoLang/基础知识/协程.md"},p=l(`

协程Groutine

  • Go语言的协程(Groutine)是与其他函数或方法一起并发运行的工作方式

  • 协程可以看作是轻量级线程,与线程相比,创建一个协程的成本很小,因此在Go应用中,常常会看到会有很多协程并发地运行

启动一个协程

  • 调用函数或者方法时,如果在前面加上关键字go,就可以让一个新的Go协程并发地运行
Go
// 定义一个函数
 func func_name(arguments) return_value {
   ...
 }
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\215\217\347\250\213.md.beabafa5.lean.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\215\217\347\250\213.md.e34dff3f.lean.js"
similarity index 90%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\215\217\347\250\213.md.beabafa5.lean.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\215\217\347\250\213.md.e34dff3f.lean.js"
index 873d34d1..24084f44 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\215\217\347\250\213.md.beabafa5.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\215\217\347\250\213.md.e34dff3f.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const C=JSON.parse('{"title":"协程Groutine","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"启动一个协程","slug":"启动一个协程","link":"#启动一个协程","children":[]},{"level":2,"title":"启动多个协程","slug":"启动多个协程","link":"#启动多个协程","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/协程.md"}'),o={name:"knowledge-deposition/GoLang/基础知识/协程.md"},p=l("",10),e=[p];function t(c,r,D,y,i,F){return a(),n("div",null,e)}const d=s(o,[["render",t]]);export{C as __pageData,d as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const C=JSON.parse('{"title":"协程Groutine","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"启动一个协程","slug":"启动一个协程","link":"#启动一个协程","children":[]},{"level":2,"title":"启动多个协程","slug":"启动多个协程","link":"#启动多个协程","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/协程.md"}'),o={name:"knowledge-deposition/GoLang/基础知识/协程.md"},p=l("",10),e=[p];function t(c,r,D,y,i,F){return a(),n("div",null,e)}const d=s(o,[["render",t]]);export{C as __pageData,d as default};
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\215\217\347\250\213\345\256\211\345\205\250.md.8b333de6.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\215\217\347\250\213\345\256\211\345\205\250.md.705e648e.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\215\217\347\250\213\345\256\211\345\205\250.md.8b333de6.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\215\217\347\250\213\345\256\211\345\205\250.md.705e648e.js"
index 20f69266..331d893b 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\215\217\347\250\213\345\256\211\345\205\250.md.8b333de6.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\215\217\347\250\213\345\256\211\345\205\250.md.705e648e.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"协程安全","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"互斥锁(Mutex)","slug":"互斥锁-mutex","link":"#互斥锁-mutex","children":[]},{"level":2,"title":"读写锁RWMutex","slug":"读写锁rwmutex","link":"#读写锁rwmutex","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/协程安全.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/协程安全.md"},o=l(`

协程安全

当程序并发执行时,如果同时操作一份数据, 就可能会出现问题,如下:

我想让钱包中的钱增加,于是开启了1万个协程,每次将钱包的钱增加1万,理想的结果最终是10000*10000 = 100000000,但运行结果却不尽人意

第一次结果:93380000,第二次结果92660000,第三次结果92560000

Go
type WalletV1 struct {
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"协程安全","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"互斥锁(Mutex)","slug":"互斥锁-mutex","link":"#互斥锁-mutex","children":[]},{"level":2,"title":"读写锁RWMutex","slug":"读写锁rwmutex","link":"#读写锁rwmutex","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/协程安全.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/协程安全.md"},o=l(`

协程安全

当程序并发执行时,如果同时操作一份数据, 就可能会出现问题,如下:

我想让钱包中的钱增加,于是开启了1万个协程,每次将钱包的钱增加1万,理想的结果最终是10000*10000 = 100000000,但运行结果却不尽人意

第一次结果:93380000,第二次结果92660000,第三次结果92560000

Go
type WalletV1 struct {
 	balance int
 }
 
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\215\217\347\250\213\345\256\211\345\205\250.md.8b333de6.lean.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\215\217\347\250\213\345\256\211\345\205\250.md.705e648e.lean.js"
similarity index 90%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\215\217\347\250\213\345\256\211\345\205\250.md.8b333de6.lean.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\215\217\347\250\213\345\256\211\345\205\250.md.705e648e.lean.js"
index fb72bf00..69da2ae8 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\215\217\347\250\213\345\256\211\345\205\250.md.8b333de6.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\215\217\347\250\213\345\256\211\345\205\250.md.705e648e.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"协程安全","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"互斥锁(Mutex)","slug":"互斥锁-mutex","link":"#互斥锁-mutex","children":[]},{"level":2,"title":"读写锁RWMutex","slug":"读写锁rwmutex","link":"#读写锁rwmutex","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/协程安全.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/协程安全.md"},o=l("",16),e=[o];function t(c,D,r,F,y,A){return a(),n("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"协程安全","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"互斥锁(Mutex)","slug":"互斥锁-mutex","link":"#互斥锁-mutex","children":[]},{"level":2,"title":"读写锁RWMutex","slug":"读写锁rwmutex","link":"#读写锁rwmutex","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/协程安全.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/协程安全.md"},o=l("",16),e=[o];function t(c,D,r,F,y,A){return a(),n("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\217\230\351\207\217\345\270\270\351\207\217.md.02f1f284.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\217\230\351\207\217\345\270\270\351\207\217.md.a257dd1e.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\217\230\351\207\217\345\270\270\351\207\217.md.02f1f284.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\217\230\351\207\217\345\270\270\351\207\217.md.a257dd1e.js"
index a80ed4dd..9a660911 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\217\230\351\207\217\345\270\270\351\207\217.md.02f1f284.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\217\230\351\207\217\345\270\270\351\207\217.md.a257dd1e.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const A=JSON.parse('{"title":"变量常量","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"声明变量","slug":"声明变量","link":"#声明变量","children":[{"level":3,"title":"使用var关键字来声明变量","slug":"使用var关键字来声明变量","link":"#使用var关键字来声明变量","children":[]},{"level":3,"title":"使用:=来声明变量","slug":"使用-来声明变量","link":"#使用-来声明变量","children":[]}]},{"level":2,"title":"常量","slug":"常量","link":"#常量","children":[{"level":3,"title":"使用const关键字来声明常量","slug":"使用const关键字来声明常量","link":"#使用const关键字来声明常量","children":[]},{"level":3,"title":"使用iota设置自增","slug":"使用iota设置自增","link":"#使用iota设置自增","children":[]},{"level":3,"title":"iota也支持运算","slug":"iota也支持运算","link":"#iota也支持运算","children":[]},{"level":3,"title":"使用_忽略一些值","slug":"使用-忽略一些值","link":"#使用-忽略一些值","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/基础知识/变量常量.md"}'),o={name:"knowledge-deposition/GoLang/基础知识/变量常量.md"},p=l(`

变量常量

声明变量

Go
// 下面两种形式都可以声明一个变量
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const A=JSON.parse('{"title":"变量常量","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"声明变量","slug":"声明变量","link":"#声明变量","children":[{"level":3,"title":"使用var关键字来声明变量","slug":"使用var关键字来声明变量","link":"#使用var关键字来声明变量","children":[]},{"level":3,"title":"使用:=来声明变量","slug":"使用-来声明变量","link":"#使用-来声明变量","children":[]}]},{"level":2,"title":"常量","slug":"常量","link":"#常量","children":[{"level":3,"title":"使用const关键字来声明常量","slug":"使用const关键字来声明常量","link":"#使用const关键字来声明常量","children":[]},{"level":3,"title":"使用iota设置自增","slug":"使用iota设置自增","link":"#使用iota设置自增","children":[]},{"level":3,"title":"iota也支持运算","slug":"iota也支持运算","link":"#iota也支持运算","children":[]},{"level":3,"title":"使用_忽略一些值","slug":"使用-忽略一些值","link":"#使用-忽略一些值","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/基础知识/变量常量.md"}'),o={name:"knowledge-deposition/GoLang/基础知识/变量常量.md"},p=l(`

变量常量

声明变量

Go
// 下面两种形式都可以声明一个变量
 var varibale_name [variable_type] = variable_value
 varibale_name := variable_value
 

使用var关键字来声明变量

Go
var a int = 1
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\217\230\351\207\217\345\270\270\351\207\217.md.02f1f284.lean.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\217\230\351\207\217\345\270\270\351\207\217.md.a257dd1e.lean.js"
similarity index 95%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\217\230\351\207\217\345\270\270\351\207\217.md.02f1f284.lean.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\217\230\351\207\217\345\270\270\351\207\217.md.a257dd1e.lean.js"
index 228c5194..de3cff2b 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\217\230\351\207\217\345\270\270\351\207\217.md.02f1f284.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\217\230\351\207\217\345\270\270\351\207\217.md.a257dd1e.lean.js"
@@ -1 +1 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const A=JSON.parse('{"title":"变量常量","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"声明变量","slug":"声明变量","link":"#声明变量","children":[{"level":3,"title":"使用var关键字来声明变量","slug":"使用var关键字来声明变量","link":"#使用var关键字来声明变量","children":[]},{"level":3,"title":"使用:=来声明变量","slug":"使用-来声明变量","link":"#使用-来声明变量","children":[]}]},{"level":2,"title":"常量","slug":"常量","link":"#常量","children":[{"level":3,"title":"使用const关键字来声明常量","slug":"使用const关键字来声明常量","link":"#使用const关键字来声明常量","children":[]},{"level":3,"title":"使用iota设置自增","slug":"使用iota设置自增","link":"#使用iota设置自增","children":[]},{"level":3,"title":"iota也支持运算","slug":"iota也支持运算","link":"#iota也支持运算","children":[]},{"level":3,"title":"使用_忽略一些值","slug":"使用-忽略一些值","link":"#使用-忽略一些值","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/基础知识/变量常量.md"}'),o={name:"knowledge-deposition/GoLang/基础知识/变量常量.md"},p=l("",19),e=[p];function t(c,r,D,y,i,C){return n(),a("div",null,e)}const d=s(o,[["render",t]]);export{A as __pageData,d as default};
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const A=JSON.parse('{"title":"变量常量","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"声明变量","slug":"声明变量","link":"#声明变量","children":[{"level":3,"title":"使用var关键字来声明变量","slug":"使用var关键字来声明变量","link":"#使用var关键字来声明变量","children":[]},{"level":3,"title":"使用:=来声明变量","slug":"使用-来声明变量","link":"#使用-来声明变量","children":[]}]},{"level":2,"title":"常量","slug":"常量","link":"#常量","children":[{"level":3,"title":"使用const关键字来声明常量","slug":"使用const关键字来声明常量","link":"#使用const关键字来声明常量","children":[]},{"level":3,"title":"使用iota设置自增","slug":"使用iota设置自增","link":"#使用iota设置自增","children":[]},{"level":3,"title":"iota也支持运算","slug":"iota也支持运算","link":"#iota也支持运算","children":[]},{"level":3,"title":"使用_忽略一些值","slug":"使用-忽略一些值","link":"#使用-忽略一些值","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/基础知识/变量常量.md"}'),o={name:"knowledge-deposition/GoLang/基础知识/变量常量.md"},p=l("",19),e=[p];function t(c,r,D,y,i,C){return n(),a("div",null,e)}const d=s(o,[["render",t]]);export{A as __pageData,d as default};
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\237\272\347\241\200\346\225\260\346\215\256\347\261\273\345\236\213.md.e448fb93.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\237\272\347\241\200\346\225\260\346\215\256\347\261\273\345\236\213.md.b80e74a0.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\237\272\347\241\200\346\225\260\346\215\256\347\261\273\345\236\213.md.e448fb93.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\237\272\347\241\200\346\225\260\346\215\256\347\261\273\345\236\213.md.b80e74a0.js"
index 6e105b1d..1a6e9b26 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\237\272\347\241\200\346\225\260\346\215\256\347\261\273\345\236\213.md.e448fb93.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\237\272\347\241\200\346\225\260\346\215\256\347\261\273\345\236\213.md.b80e74a0.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const C=JSON.parse('{"title":"基础数据类型","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"整型","slug":"整型","link":"#整型","children":[{"level":3,"title":"有符号整型","slug":"有符号整型","link":"#有符号整型","children":[]},{"level":3,"title":"无符号整型","slug":"无符号整型","link":"#无符号整型","children":[]}]},{"level":2,"title":"浮点型","slug":"浮点型","link":"#浮点型","children":[]},{"level":2,"title":"字符","slug":"字符","link":"#字符","children":[]},{"level":2,"title":"字符串","slug":"字符串","link":"#字符串","children":[]},{"level":2,"title":"布尔","slug":"布尔","link":"#布尔","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/基础数据类型.md"}'),t={name:"knowledge-deposition/GoLang/基础知识/基础数据类型.md"},o=l(`

基础数据类型

整型

有符号整型

  • int8
  • int16
  • int32
  • int64
  • int

示例

Go
package main
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const C=JSON.parse('{"title":"基础数据类型","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"整型","slug":"整型","link":"#整型","children":[{"level":3,"title":"有符号整型","slug":"有符号整型","link":"#有符号整型","children":[]},{"level":3,"title":"无符号整型","slug":"无符号整型","link":"#无符号整型","children":[]}]},{"level":2,"title":"浮点型","slug":"浮点型","link":"#浮点型","children":[]},{"level":2,"title":"字符","slug":"字符","link":"#字符","children":[]},{"level":2,"title":"字符串","slug":"字符串","link":"#字符串","children":[]},{"level":2,"title":"布尔","slug":"布尔","link":"#布尔","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/基础数据类型.md"}'),t={name:"knowledge-deposition/GoLang/基础知识/基础数据类型.md"},o=l(`

基础数据类型

整型

有符号整型

  • int8
  • int16
  • int32
  • int64
  • int

示例

Go
package main
 
 import (
 	"fmt"
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\237\272\347\241\200\346\225\260\346\215\256\347\261\273\345\236\213.md.e448fb93.lean.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\237\272\347\241\200\346\225\260\346\215\256\347\261\273\345\236\213.md.b80e74a0.lean.js"
similarity index 93%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\237\272\347\241\200\346\225\260\346\215\256\347\261\273\345\236\213.md.e448fb93.lean.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\237\272\347\241\200\346\225\260\346\215\256\347\261\273\345\236\213.md.b80e74a0.lean.js"
index e2c04c7a..0a29d150 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\237\272\347\241\200\346\225\260\346\215\256\347\261\273\345\236\213.md.e448fb93.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\345\237\272\347\241\200\346\225\260\346\215\256\347\261\273\345\236\213.md.b80e74a0.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const C=JSON.parse('{"title":"基础数据类型","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"整型","slug":"整型","link":"#整型","children":[{"level":3,"title":"有符号整型","slug":"有符号整型","link":"#有符号整型","children":[]},{"level":3,"title":"无符号整型","slug":"无符号整型","link":"#无符号整型","children":[]}]},{"level":2,"title":"浮点型","slug":"浮点型","link":"#浮点型","children":[]},{"level":2,"title":"字符","slug":"字符","link":"#字符","children":[]},{"level":2,"title":"字符串","slug":"字符串","link":"#字符串","children":[]},{"level":2,"title":"布尔","slug":"布尔","link":"#布尔","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/基础数据类型.md"}'),t={name:"knowledge-deposition/GoLang/基础知识/基础数据类型.md"},o=l("",29),p=[o];function e(c,r,D,y,F,i){return a(),n("div",null,p)}const d=s(t,[["render",e]]);export{C as __pageData,d as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const C=JSON.parse('{"title":"基础数据类型","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"整型","slug":"整型","link":"#整型","children":[{"level":3,"title":"有符号整型","slug":"有符号整型","link":"#有符号整型","children":[]},{"level":3,"title":"无符号整型","slug":"无符号整型","link":"#无符号整型","children":[]}]},{"level":2,"title":"浮点型","slug":"浮点型","link":"#浮点型","children":[]},{"level":2,"title":"字符","slug":"字符","link":"#字符","children":[]},{"level":2,"title":"字符串","slug":"字符串","link":"#字符串","children":[]},{"level":2,"title":"布尔","slug":"布尔","link":"#布尔","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/基础数据类型.md"}'),t={name:"knowledge-deposition/GoLang/基础知识/基础数据类型.md"},o=l("",29),p=[o];function e(c,r,D,y,F,i){return a(),n("div",null,p)}const d=s(t,[["render",e]]);export{C as __pageData,d as default};
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\214\207\351\222\210.md.9e504237.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\214\207\351\222\210.md.1436a3f5.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\214\207\351\222\210.md.9e504237.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\214\207\351\222\210.md.1436a3f5.js"
index 9e215736..b91a4e3f 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\214\207\351\222\210.md.9e504237.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\214\207\351\222\210.md.1436a3f5.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"指针","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"指针操作符","slug":"指针操作符","link":"#指针操作符","children":[]},{"level":2,"title":"创建指针","slug":"创建指针","link":"#创建指针","children":[]},{"level":2,"title":"指针的类型","slug":"指针的类型","link":"#指针的类型","children":[]},{"level":2,"title":"指针的零值","slug":"指针的零值","link":"#指针的零值","children":[]},{"level":2,"title":"函数传递指针参数","slug":"函数传递指针参数","link":"#函数传递指针参数","children":[]},{"level":2,"title":"指针和切片","slug":"指针和切片","link":"#指针和切片","children":[{"level":3,"title":"通过传入切片改变原数组的值","slug":"通过传入切片改变原数组的值","link":"#通过传入切片改变原数组的值","children":[]},{"level":3,"title":"通过传入数组的指针来修改原数组","slug":"通过传入数组的指针来修改原数组","link":"#通过传入数组的指针来修改原数组","children":[]}]},{"level":2,"title":"Go中不支持指针运算","slug":"go中不支持指针运算","link":"#go中不支持指针运算","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/指针.md"}'),o={name:"knowledge-deposition/GoLang/基础知识/指针.md"},p=l(`

指针

  • 指针也是一种类型,也可以创建变量,称之为指针变量;

  • 指针变量的类型为*Type,该指针指向一个Type类型的变量;

  • 指针存储某个实际变量的内存地址,通过记录某个变量的地址,从而间接的操作该变量;

指针操作符

  • &: 该操作符可以获取到一个变量的内存地址

  • *: 有两种含义:

    • 如果*操作符在赋值操作的左边(也就是等号(=)的左边),则表示该指针指向的变量
    • 如果*操作符在赋值操作的右边(也就是等号(=)的右边边),则表示该指针指向的变量的值,又称指针的解引用
Go
func p() {
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"指针","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"指针操作符","slug":"指针操作符","link":"#指针操作符","children":[]},{"level":2,"title":"创建指针","slug":"创建指针","link":"#创建指针","children":[]},{"level":2,"title":"指针的类型","slug":"指针的类型","link":"#指针的类型","children":[]},{"level":2,"title":"指针的零值","slug":"指针的零值","link":"#指针的零值","children":[]},{"level":2,"title":"函数传递指针参数","slug":"函数传递指针参数","link":"#函数传递指针参数","children":[]},{"level":2,"title":"指针和切片","slug":"指针和切片","link":"#指针和切片","children":[{"level":3,"title":"通过传入切片改变原数组的值","slug":"通过传入切片改变原数组的值","link":"#通过传入切片改变原数组的值","children":[]},{"level":3,"title":"通过传入数组的指针来修改原数组","slug":"通过传入数组的指针来修改原数组","link":"#通过传入数组的指针来修改原数组","children":[]}]},{"level":2,"title":"Go中不支持指针运算","slug":"go中不支持指针运算","link":"#go中不支持指针运算","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/指针.md"}'),o={name:"knowledge-deposition/GoLang/基础知识/指针.md"},p=l(`

指针

  • 指针也是一种类型,也可以创建变量,称之为指针变量;

  • 指针变量的类型为*Type,该指针指向一个Type类型的变量;

  • 指针存储某个实际变量的内存地址,通过记录某个变量的地址,从而间接的操作该变量;

指针操作符

  • &: 该操作符可以获取到一个变量的内存地址

  • *: 有两种含义:

    • 如果*操作符在赋值操作的左边(也就是等号(=)的左边),则表示该指针指向的变量
    • 如果*操作符在赋值操作的右边(也就是等号(=)的右边边),则表示该指针指向的变量的值,又称指针的解引用
Go
func p() {
 	x := "蛇灵-血灵"
 	y := &x
 	
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\214\207\351\222\210.md.9e504237.lean.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\214\207\351\222\210.md.1436a3f5.lean.js"
similarity index 95%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\214\207\351\222\210.md.9e504237.lean.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\214\207\351\222\210.md.1436a3f5.lean.js"
index e06ecb92..f1003cf8 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\214\207\351\222\210.md.9e504237.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\214\207\351\222\210.md.1436a3f5.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"指针","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"指针操作符","slug":"指针操作符","link":"#指针操作符","children":[]},{"level":2,"title":"创建指针","slug":"创建指针","link":"#创建指针","children":[]},{"level":2,"title":"指针的类型","slug":"指针的类型","link":"#指针的类型","children":[]},{"level":2,"title":"指针的零值","slug":"指针的零值","link":"#指针的零值","children":[]},{"level":2,"title":"函数传递指针参数","slug":"函数传递指针参数","link":"#函数传递指针参数","children":[]},{"level":2,"title":"指针和切片","slug":"指针和切片","link":"#指针和切片","children":[{"level":3,"title":"通过传入切片改变原数组的值","slug":"通过传入切片改变原数组的值","link":"#通过传入切片改变原数组的值","children":[]},{"level":3,"title":"通过传入数组的指针来修改原数组","slug":"通过传入数组的指针来修改原数组","link":"#通过传入数组的指针来修改原数组","children":[]}]},{"level":2,"title":"Go中不支持指针运算","slug":"go中不支持指针运算","link":"#go中不支持指针运算","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/指针.md"}'),o={name:"knowledge-deposition/GoLang/基础知识/指针.md"},p=l("",32),e=[p];function t(c,r,D,y,F,A){return a(),n("div",null,e)}const d=s(o,[["render",t]]);export{i as __pageData,d as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"指针","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"指针操作符","slug":"指针操作符","link":"#指针操作符","children":[]},{"level":2,"title":"创建指针","slug":"创建指针","link":"#创建指针","children":[]},{"level":2,"title":"指针的类型","slug":"指针的类型","link":"#指针的类型","children":[]},{"level":2,"title":"指针的零值","slug":"指针的零值","link":"#指针的零值","children":[]},{"level":2,"title":"函数传递指针参数","slug":"函数传递指针参数","link":"#函数传递指针参数","children":[]},{"level":2,"title":"指针和切片","slug":"指针和切片","link":"#指针和切片","children":[{"level":3,"title":"通过传入切片改变原数组的值","slug":"通过传入切片改变原数组的值","link":"#通过传入切片改变原数组的值","children":[]},{"level":3,"title":"通过传入数组的指针来修改原数组","slug":"通过传入数组的指针来修改原数组","link":"#通过传入数组的指针来修改原数组","children":[]}]},{"level":2,"title":"Go中不支持指针运算","slug":"go中不支持指针运算","link":"#go中不支持指针运算","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/指针.md"}'),o={name:"knowledge-deposition/GoLang/基础知识/指针.md"},p=l("",32),e=[p];function t(c,r,D,y,F,A){return a(),n("div",null,e)}const d=s(o,[["render",t]]);export{i as __pageData,d as default};
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\216\245\345\217\243.md.44cdbe82.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\216\245\345\217\243.md.c21fbfdf.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\216\245\345\217\243.md.44cdbe82.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\216\245\345\217\243.md.c21fbfdf.js"
index f4115473..4a201058 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\216\245\345\217\243.md.44cdbe82.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\216\245\345\217\243.md.c21fbfdf.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"接口","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"定义接口","slug":"定义接口","link":"#定义接口","children":[]},{"level":2,"title":"实现接口","slug":"实现接口","link":"#实现接口","children":[]},{"level":2,"title":"接口的多态","slug":"接口的多态","link":"#接口的多态","children":[]},{"level":2,"title":"接口内部表示","slug":"接口内部表示","link":"#接口内部表示","children":[]},{"level":2,"title":"空接口","slug":"空接口","link":"#空接口","children":[]},{"level":2,"title":"类型断言","slug":"类型断言","link":"#类型断言","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/接口.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/接口.md"},o=l(`

接口

  • go的接口是一种抽象的自定义类型,没法直接实例化,它声明了一个或者多个方法的签名;
  • 如果一个struct实现了一个接口定义的所有方法,我们就说这个struct实现了这个接口。注意这里的实现隐式的,不用显示声明某个struct实现了哪个接口

定义接口

Go
type interface_name interface {
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"接口","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"定义接口","slug":"定义接口","link":"#定义接口","children":[]},{"level":2,"title":"实现接口","slug":"实现接口","link":"#实现接口","children":[]},{"level":2,"title":"接口的多态","slug":"接口的多态","link":"#接口的多态","children":[]},{"level":2,"title":"接口内部表示","slug":"接口内部表示","link":"#接口内部表示","children":[]},{"level":2,"title":"空接口","slug":"空接口","link":"#空接口","children":[]},{"level":2,"title":"类型断言","slug":"类型断言","link":"#类型断言","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/接口.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/接口.md"},o=l(`

接口

  • go的接口是一种抽象的自定义类型,没法直接实例化,它声明了一个或者多个方法的签名;
  • 如果一个struct实现了一个接口定义的所有方法,我们就说这个struct实现了这个接口。注意这里的实现隐式的,不用显示声明某个struct实现了哪个接口

定义接口

Go
type interface_name interface {
   method1()
   method2()
   ...
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\216\245\345\217\243.md.44cdbe82.lean.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\216\245\345\217\243.md.c21fbfdf.lean.js"
similarity index 93%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\216\245\345\217\243.md.44cdbe82.lean.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\216\245\345\217\243.md.c21fbfdf.lean.js"
index a93e96e3..9e87de47 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\216\245\345\217\243.md.44cdbe82.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\216\245\345\217\243.md.c21fbfdf.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"接口","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"定义接口","slug":"定义接口","link":"#定义接口","children":[]},{"level":2,"title":"实现接口","slug":"实现接口","link":"#实现接口","children":[]},{"level":2,"title":"接口的多态","slug":"接口的多态","link":"#接口的多态","children":[]},{"level":2,"title":"接口内部表示","slug":"接口内部表示","link":"#接口内部表示","children":[]},{"level":2,"title":"空接口","slug":"空接口","link":"#空接口","children":[]},{"level":2,"title":"类型断言","slug":"类型断言","link":"#类型断言","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/接口.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/接口.md"},o=l("",25),e=[o];function t(c,D,r,y,F,A){return a(),n("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"接口","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"定义接口","slug":"定义接口","link":"#定义接口","children":[]},{"level":2,"title":"实现接口","slug":"实现接口","link":"#实现接口","children":[]},{"level":2,"title":"接口的多态","slug":"接口的多态","link":"#接口的多态","children":[]},{"level":2,"title":"接口内部表示","slug":"接口内部表示","link":"#接口内部表示","children":[]},{"level":2,"title":"空接口","slug":"空接口","link":"#空接口","children":[]},{"level":2,"title":"类型断言","slug":"类型断言","link":"#类型断言","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/接口.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/接口.md"},o=l("",25),e=[o];function t(c,D,r,y,F,A){return a(),n("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\225\260\347\273\204\343\200\201\345\210\207\347\211\207\343\200\201Map.md.3d867f93.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\225\260\347\273\204\343\200\201\345\210\207\347\211\207\343\200\201Map.md.e6dccd63.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\225\260\347\273\204\343\200\201\345\210\207\347\211\207\343\200\201Map.md.3d867f93.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\225\260\347\273\204\343\200\201\345\210\207\347\211\207\343\200\201Map.md.e6dccd63.js"
index 13f1c30d..2d873d88 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\225\260\347\273\204\343\200\201\345\210\207\347\211\207\343\200\201Map.md.3d867f93.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\225\260\347\273\204\343\200\201\345\210\207\347\211\207\343\200\201Map.md.e6dccd63.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"数组、切片、Map","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"数组","slug":"数组","link":"#数组","children":[{"level":3,"title":"数组声明","slug":"数组声明","link":"#数组声明","children":[]},{"level":3,"title":"获取数组长度","slug":"获取数组长度","link":"#获取数组长度","children":[]},{"level":3,"title":"遍历数组","slug":"遍历数组","link":"#遍历数组","children":[]},{"level":3,"title":"数组是值类型","slug":"数组是值类型","link":"#数组是值类型","children":[]}]},{"level":2,"title":"Slice切片","slug":"slice切片","link":"#slice切片","children":[{"level":3,"title":"创建切片","slug":"创建切片","link":"#创建切片","children":[]},{"level":3,"title":"切片的长度和容量","slug":"切片的长度和容量","link":"#切片的长度和容量","children":[]},{"level":3,"title":"获取切片元素","slug":"获取切片元素","link":"#获取切片元素","children":[]},{"level":3,"title":"为切片追加元素","slug":"为切片追加元素","link":"#为切片追加元素","children":[]},{"level":3,"title":"多维切片","slug":"多维切片","link":"#多维切片","children":[]},{"level":3,"title":"Map","slug":"map","link":"#map","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/基础知识/数组、切片、Map.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/数组、切片、Map.md"},o=l(`

数组、切片、Map

数组

TIP

数组是值类型不是引用类型

数组是一个由固定长度特定类型元素组成的序列,一个数组可以由零个多个元素组成。由于长度固定,所以在实际应用中很少使用,一般都使用Slice(切片),它是可以动态的增长和收缩的序列

数组声明

声明数组的几种方式

Go
var variable_name [arr_length]value_type
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"数组、切片、Map","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"数组","slug":"数组","link":"#数组","children":[{"level":3,"title":"数组声明","slug":"数组声明","link":"#数组声明","children":[]},{"level":3,"title":"获取数组长度","slug":"获取数组长度","link":"#获取数组长度","children":[]},{"level":3,"title":"遍历数组","slug":"遍历数组","link":"#遍历数组","children":[]},{"level":3,"title":"数组是值类型","slug":"数组是值类型","link":"#数组是值类型","children":[]}]},{"level":2,"title":"Slice切片","slug":"slice切片","link":"#slice切片","children":[{"level":3,"title":"创建切片","slug":"创建切片","link":"#创建切片","children":[]},{"level":3,"title":"切片的长度和容量","slug":"切片的长度和容量","link":"#切片的长度和容量","children":[]},{"level":3,"title":"获取切片元素","slug":"获取切片元素","link":"#获取切片元素","children":[]},{"level":3,"title":"为切片追加元素","slug":"为切片追加元素","link":"#为切片追加元素","children":[]},{"level":3,"title":"多维切片","slug":"多维切片","link":"#多维切片","children":[]},{"level":3,"title":"Map","slug":"map","link":"#map","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/基础知识/数组、切片、Map.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/数组、切片、Map.md"},o=l(`

数组、切片、Map

数组

TIP

数组是值类型不是引用类型

数组是一个由固定长度特定类型元素组成的序列,一个数组可以由零个多个元素组成。由于长度固定,所以在实际应用中很少使用,一般都使用Slice(切片),它是可以动态的增长和收缩的序列

数组声明

声明数组的几种方式

Go
var variable_name [arr_length]value_type
 var variable_name = [arr_length]value_type{val1, val2, ...}
 variable_name := [arr_length]value_type{val1, val2, ...}
 variable_name := [...]value_type{val1, val2, ...}
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\225\260\347\273\204\343\200\201\345\210\207\347\211\207\343\200\201Map.md.3d867f93.lean.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\225\260\347\273\204\343\200\201\345\210\207\347\211\207\343\200\201Map.md.e6dccd63.lean.js"
similarity index 96%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\225\260\347\273\204\343\200\201\345\210\207\347\211\207\343\200\201Map.md.3d867f93.lean.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\225\260\347\273\204\343\200\201\345\210\207\347\211\207\343\200\201Map.md.e6dccd63.lean.js"
index 76f9e841..4a3be051 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\225\260\347\273\204\343\200\201\345\210\207\347\211\207\343\200\201Map.md.3d867f93.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\225\260\347\273\204\343\200\201\345\210\207\347\211\207\343\200\201Map.md.e6dccd63.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"数组、切片、Map","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"数组","slug":"数组","link":"#数组","children":[{"level":3,"title":"数组声明","slug":"数组声明","link":"#数组声明","children":[]},{"level":3,"title":"获取数组长度","slug":"获取数组长度","link":"#获取数组长度","children":[]},{"level":3,"title":"遍历数组","slug":"遍历数组","link":"#遍历数组","children":[]},{"level":3,"title":"数组是值类型","slug":"数组是值类型","link":"#数组是值类型","children":[]}]},{"level":2,"title":"Slice切片","slug":"slice切片","link":"#slice切片","children":[{"level":3,"title":"创建切片","slug":"创建切片","link":"#创建切片","children":[]},{"level":3,"title":"切片的长度和容量","slug":"切片的长度和容量","link":"#切片的长度和容量","children":[]},{"level":3,"title":"获取切片元素","slug":"获取切片元素","link":"#获取切片元素","children":[]},{"level":3,"title":"为切片追加元素","slug":"为切片追加元素","link":"#为切片追加元素","children":[]},{"level":3,"title":"多维切片","slug":"多维切片","link":"#多维切片","children":[]},{"level":3,"title":"Map","slug":"map","link":"#map","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/基础知识/数组、切片、Map.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/数组、切片、Map.md"},o=l("",88),e=[o];function t(c,D,r,F,y,C){return a(),n("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"数组、切片、Map","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"数组","slug":"数组","link":"#数组","children":[{"level":3,"title":"数组声明","slug":"数组声明","link":"#数组声明","children":[]},{"level":3,"title":"获取数组长度","slug":"获取数组长度","link":"#获取数组长度","children":[]},{"level":3,"title":"遍历数组","slug":"遍历数组","link":"#遍历数组","children":[]},{"level":3,"title":"数组是值类型","slug":"数组是值类型","link":"#数组是值类型","children":[]}]},{"level":2,"title":"Slice切片","slug":"slice切片","link":"#slice切片","children":[{"level":3,"title":"创建切片","slug":"创建切片","link":"#创建切片","children":[]},{"level":3,"title":"切片的长度和容量","slug":"切片的长度和容量","link":"#切片的长度和容量","children":[]},{"level":3,"title":"获取切片元素","slug":"获取切片元素","link":"#获取切片元素","children":[]},{"level":3,"title":"为切片追加元素","slug":"为切片追加元素","link":"#为切片追加元素","children":[]},{"level":3,"title":"多维切片","slug":"多维切片","link":"#多维切片","children":[]},{"level":3,"title":"Map","slug":"map","link":"#map","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/基础知识/数组、切片、Map.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/数组、切片、Map.md"},o=l("",88),e=[o];function t(c,D,r,F,y,C){return a(),n("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_index.md.40ba01cd.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_index.md.02ae4402.js"
similarity index 98%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_index.md.40ba01cd.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_index.md.02ae4402.js"
index 95cb22ee..0d528034 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_index.md.40ba01cd.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_index.md.02ae4402.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const _=JSON.parse('{"title":"文件操作","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"打开文件模式","slug":"打开文件模式","link":"#打开文件模式","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/文件操作/index.md"}'),e={name:"knowledge-deposition/GoLang/基础知识/文件操作/index.md"},o=l(`

文件操作

打开文件模式

Go
O_RDONLY int = syscall.O_RDONLY // open the file read-only.  只读
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const _=JSON.parse('{"title":"文件操作","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"打开文件模式","slug":"打开文件模式","link":"#打开文件模式","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/文件操作/index.md"}'),e={name:"knowledge-deposition/GoLang/基础知识/文件操作/index.md"},o=l(`

文件操作

打开文件模式

Go
O_RDONLY int = syscall.O_RDONLY // open the file read-only.  只读
 O_WRONLY int = syscall.O_WRONLY // open the file write-only. 只写
 O_RDWR   int = syscall.O_RDWR   // open the file read-write. 读写
 
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_index.md.40ba01cd.lean.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_index.md.02ae4402.lean.js"
similarity index 88%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_index.md.40ba01cd.lean.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_index.md.02ae4402.lean.js"
index a846e581..55a4fdb3 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_index.md.40ba01cd.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_index.md.02ae4402.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const _=JSON.parse('{"title":"文件操作","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"打开文件模式","slug":"打开文件模式","link":"#打开文件模式","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/文件操作/index.md"}'),e={name:"knowledge-deposition/GoLang/基础知识/文件操作/index.md"},o=l("",3),t=[o];function p(c,r,i,y,D,C){return a(),n("div",null,t)}const d=s(e,[["render",p]]);export{_ as __pageData,d as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const _=JSON.parse('{"title":"文件操作","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"打开文件模式","slug":"打开文件模式","link":"#打开文件模式","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/文件操作/index.md"}'),e={name:"knowledge-deposition/GoLang/基础知识/文件操作/index.md"},o=l("",3),t=[o];function p(c,r,i,y,D,C){return a(),n("div",null,t)}const d=s(e,[["render",p]]);export{_ as __pageData,d as default};
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\345\206\231\346\226\207\344\273\266.md.ffca3518.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\345\206\231\346\226\207\344\273\266.md.cbf9662f.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\345\206\231\346\226\207\344\273\266.md.ffca3518.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\345\206\231\346\226\207\344\273\266.md.cbf9662f.js"
index 26224f9b..dca80a0f 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\345\206\231\346\226\207\344\273\266.md.ffca3518.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\345\206\231\346\226\207\344\273\266.md.cbf9662f.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"写文件","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"常规写","slug":"常规写","link":"#常规写","children":[]},{"level":2,"title":"快速写","slug":"快速写","link":"#快速写","children":[]},{"level":2,"title":"带缓冲写","slug":"带缓冲写","link":"#带缓冲写","children":[]},{"level":2,"title":"读取文件并写入另一个文件中","slug":"读取文件并写入另一个文件中","link":"#读取文件并写入另一个文件中","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/文件操作/写文件.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/文件操作/写文件.md"},o=l(`

写文件

常规写

Go
func (f *File) WriteString(s string) (n int, err error)
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"写文件","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"常规写","slug":"常规写","link":"#常规写","children":[]},{"level":2,"title":"快速写","slug":"快速写","link":"#快速写","children":[]},{"level":2,"title":"带缓冲写","slug":"带缓冲写","link":"#带缓冲写","children":[]},{"level":2,"title":"读取文件并写入另一个文件中","slug":"读取文件并写入另一个文件中","link":"#读取文件并写入另一个文件中","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/文件操作/写文件.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/文件操作/写文件.md"},o=l(`

写文件

常规写

Go
func (f *File) WriteString(s string) (n int, err error)
 
 func (f *File) Write(b []byte) (n int, err error) 
 

代码示例

Go
// 常规写入
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\345\206\231\346\226\207\344\273\266.md.ffca3518.lean.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\345\206\231\346\226\207\344\273\266.md.cbf9662f.lean.js"
similarity index 92%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\345\206\231\346\226\207\344\273\266.md.ffca3518.lean.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\345\206\231\346\226\207\344\273\266.md.cbf9662f.lean.js"
index b6894be6..0d66992c 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\345\206\231\346\226\207\344\273\266.md.ffca3518.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\345\206\231\346\226\207\344\273\266.md.cbf9662f.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"写文件","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"常规写","slug":"常规写","link":"#常规写","children":[]},{"level":2,"title":"快速写","slug":"快速写","link":"#快速写","children":[]},{"level":2,"title":"带缓冲写","slug":"带缓冲写","link":"#带缓冲写","children":[]},{"level":2,"title":"读取文件并写入另一个文件中","slug":"读取文件并写入另一个文件中","link":"#读取文件并写入另一个文件中","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/文件操作/写文件.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/文件操作/写文件.md"},o=l("",17),e=[o];function t(c,D,r,F,y,A){return a(),n("div",null,e)}const u=s(p,[["render",t]]);export{i as __pageData,u as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"写文件","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"常规写","slug":"常规写","link":"#常规写","children":[]},{"level":2,"title":"快速写","slug":"快速写","link":"#快速写","children":[]},{"level":2,"title":"带缓冲写","slug":"带缓冲写","link":"#带缓冲写","children":[]},{"level":2,"title":"读取文件并写入另一个文件中","slug":"读取文件并写入另一个文件中","link":"#读取文件并写入另一个文件中","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/文件操作/写文件.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/文件操作/写文件.md"},o=l("",17),e=[o];function t(c,D,r,F,y,A){return a(),n("div",null,e)}const u=s(p,[["render",t]]);export{i as __pageData,u as default};
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\345\271\266\345\217\221\344\270\213\350\275\275\350\277\234\347\250\213\346\226\207\344\273\266.md.15b6224d.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\345\271\266\345\217\221\344\270\213\350\275\275\350\277\234\347\250\213\346\226\207\344\273\266.md.637ae704.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\345\271\266\345\217\221\344\270\213\350\275\275\350\277\234\347\250\213\346\226\207\344\273\266.md.15b6224d.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\345\271\266\345\217\221\344\270\213\350\275\275\350\277\234\347\250\213\346\226\207\344\273\266.md.637ae704.js"
index 58815389..a7f4c08c 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\345\271\266\345\217\221\344\270\213\350\275\275\350\277\234\347\250\213\346\226\207\344\273\266.md.15b6224d.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\345\271\266\345\217\221\344\270\213\350\275\275\350\277\234\347\250\213\346\226\207\344\273\266.md.637ae704.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"并发下载远程文件","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"knowledge-deposition/GoLang/基础知识/文件操作/并发下载远程文件.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/文件操作/并发下载远程文件.md"},o=l(`

并发下载远程文件

Go
package main
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"并发下载远程文件","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"knowledge-deposition/GoLang/基础知识/文件操作/并发下载远程文件.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/文件操作/并发下载远程文件.md"},o=l(`

并发下载远程文件

Go
package main
 
 import (
 	"bufio"
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\345\271\266\345\217\221\344\270\213\350\275\275\350\277\234\347\250\213\346\226\207\344\273\266.md.15b6224d.lean.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\345\271\266\345\217\221\344\270\213\350\275\275\350\277\234\347\250\213\346\226\207\344\273\266.md.637ae704.lean.js"
similarity index 87%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\345\271\266\345\217\221\344\270\213\350\275\275\350\277\234\347\250\213\346\226\207\344\273\266.md.15b6224d.lean.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\345\271\266\345\217\221\344\270\213\350\275\275\350\277\234\347\250\213\346\226\207\344\273\266.md.637ae704.lean.js"
index 39de5b93..4077d878 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\345\271\266\345\217\221\344\270\213\350\275\275\350\277\234\347\250\213\346\226\207\344\273\266.md.15b6224d.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\345\271\266\345\217\221\344\270\213\350\275\275\350\277\234\347\250\213\346\226\207\344\273\266.md.637ae704.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"并发下载远程文件","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"knowledge-deposition/GoLang/基础知识/文件操作/并发下载远程文件.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/文件操作/并发下载远程文件.md"},o=l("",2),t=[o];function e(D,r,c,F,y,A){return a(),n("div",null,t)}const f=s(p,[["render",e]]);export{i as __pageData,f as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"并发下载远程文件","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"knowledge-deposition/GoLang/基础知识/文件操作/并发下载远程文件.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/文件操作/并发下载远程文件.md"},o=l("",2),t=[o];function e(D,r,c,F,y,A){return a(),n("div",null,t)}const f=s(p,[["render",e]]);export{i as __pageData,f as default};
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\346\226\207\344\273\266\345\244\215\345\210\266.md.87e35aea.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\346\226\207\344\273\266\345\244\215\345\210\266.md.56ca5e45.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\346\226\207\344\273\266\345\244\215\345\210\266.md.87e35aea.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\346\226\207\344\273\266\345\244\215\345\210\266.md.56ca5e45.js"
index 368be428..16dc0408 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\346\226\207\344\273\266\345\244\215\345\210\266.md.87e35aea.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\346\226\207\344\273\266\345\244\215\345\210\266.md.56ca5e45.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"文件复制","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"knowledge-deposition/GoLang/基础知识/文件操作/文件复制.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/文件操作/文件复制.md"},o=l(`

文件复制

  • 使用io.Copy方法
Go
func copyFile() {
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"文件复制","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"knowledge-deposition/GoLang/基础知识/文件操作/文件复制.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/文件操作/文件复制.md"},o=l(`

文件复制

  • 使用io.Copy方法
Go
func copyFile() {
 	readFile, readFileErr := os.Open("1.jpg")
 	defer readFile.Close()
 	if readFileErr != nil {
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\346\226\207\344\273\266\345\244\215\345\210\266.md.87e35aea.lean.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\346\226\207\344\273\266\345\244\215\345\210\266.md.56ca5e45.lean.js"
similarity index 86%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\346\226\207\344\273\266\345\244\215\345\210\266.md.87e35aea.lean.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\346\226\207\344\273\266\345\244\215\345\210\266.md.56ca5e45.lean.js"
index 6bcc2c42..8a6ec642 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\346\226\207\344\273\266\345\244\215\345\210\266.md.87e35aea.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\346\226\207\344\273\266\345\244\215\345\210\266.md.56ca5e45.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"文件复制","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"knowledge-deposition/GoLang/基础知识/文件操作/文件复制.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/文件操作/文件复制.md"},o=l("",3),e=[o];function t(r,c,D,F,y,A){return a(),n("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"文件复制","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"knowledge-deposition/GoLang/基础知识/文件操作/文件复制.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/文件操作/文件复制.md"},o=l("",3),e=[o];function t(r,c,D,F,y,A){return a(),n("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\347\233\256\345\275\225\346\223\215\344\275\234.md.cecc0779.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\347\233\256\345\275\225\346\223\215\344\275\234.md.8158e010.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\347\233\256\345\275\225\346\223\215\344\275\234.md.cecc0779.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\347\233\256\345\275\225\346\223\215\344\275\234.md.8158e010.js"
index 7c5cbf02..454f4926 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\347\233\256\345\275\225\346\223\215\344\275\234.md.cecc0779.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\347\233\256\345\275\225\346\223\215\344\275\234.md.8158e010.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"目录操作","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"读取目录下文件","slug":"读取目录下文件","link":"#读取目录下文件","children":[]},{"level":2,"title":"一次性获取目标路径下所有的文件","slug":"一次性获取目标路径下所有的文件","link":"#一次性获取目标路径下所有的文件","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/文件操作/目录操作.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/文件操作/目录操作.md"},o=l(`

目录操作

读取目录下文件

Go
func dirOperation() {
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"目录操作","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"读取目录下文件","slug":"读取目录下文件","link":"#读取目录下文件","children":[]},{"level":2,"title":"一次性获取目标路径下所有的文件","slug":"一次性获取目标路径下所有的文件","link":"#一次性获取目标路径下所有的文件","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/文件操作/目录操作.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/文件操作/目录操作.md"},o=l(`

目录操作

读取目录下文件

Go
func dirOperation() {
 	dirEntry, err := os.ReadDir(".")
 	if err != nil {
 		fmt.Println("dirEntry err", err)
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\347\233\256\345\275\225\346\223\215\344\275\234.md.cecc0779.lean.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\347\233\256\345\275\225\346\223\215\344\275\234.md.8158e010.lean.js"
similarity index 91%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\347\233\256\345\275\225\346\223\215\344\275\234.md.cecc0779.lean.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\347\233\256\345\275\225\346\223\215\344\275\234.md.8158e010.lean.js"
index 6b0f98a1..a80da0c2 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\347\233\256\345\275\225\346\223\215\344\275\234.md.cecc0779.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\347\233\256\345\275\225\346\223\215\344\275\234.md.8158e010.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"目录操作","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"读取目录下文件","slug":"读取目录下文件","link":"#读取目录下文件","children":[]},{"level":2,"title":"一次性获取目标路径下所有的文件","slug":"一次性获取目标路径下所有的文件","link":"#一次性获取目标路径下所有的文件","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/文件操作/目录操作.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/文件操作/目录操作.md"},o=l("",8),t=[o];function e(c,D,r,F,y,A){return a(),n("div",null,t)}const f=s(p,[["render",e]]);export{i as __pageData,f as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"目录操作","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"读取目录下文件","slug":"读取目录下文件","link":"#读取目录下文件","children":[]},{"level":2,"title":"一次性获取目标路径下所有的文件","slug":"一次性获取目标路径下所有的文件","link":"#一次性获取目标路径下所有的文件","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/文件操作/目录操作.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/文件操作/目录操作.md"},o=l("",8),t=[o];function e(c,D,r,F,y,A){return a(),n("div",null,t)}const f=s(p,[["render",e]]);export{i as __pageData,f as default};
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\350\257\273\345\217\226\351\205\215\347\275\256\346\226\207\344\273\266.md.6095be72.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\350\257\273\345\217\226\351\205\215\347\275\256\346\226\207\344\273\266.md.0f5cafd5.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\350\257\273\345\217\226\351\205\215\347\275\256\346\226\207\344\273\266.md.6095be72.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\350\257\273\345\217\226\351\205\215\347\275\256\346\226\207\344\273\266.md.0f5cafd5.js"
index eb4e580f..df09eb50 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\350\257\273\345\217\226\351\205\215\347\275\256\346\226\207\344\273\266.md.6095be72.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\350\257\273\345\217\226\351\205\215\347\275\256\346\226\207\344\273\266.md.0f5cafd5.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"读取配置文件","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"knowledge-deposition/GoLang/基础知识/文件操作/读取配置文件.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/文件操作/读取配置文件.md"},o=l(`

读取配置文件

使用viper读取jsonyaml或者其他配置文件

  • 目录结构
shell
.
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"读取配置文件","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"knowledge-deposition/GoLang/基础知识/文件操作/读取配置文件.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/文件操作/读取配置文件.md"},o=l(`

读取配置文件

使用viper读取jsonyaml或者其他配置文件

  • 目录结构
shell
.
 ├── config
    ├── user.json
    └── user.yaml
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\350\257\273\345\217\226\351\205\215\347\275\256\346\226\207\344\273\266.md.6095be72.lean.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\350\257\273\345\217\226\351\205\215\347\275\256\346\226\207\344\273\266.md.0f5cafd5.lean.js"
similarity index 86%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\350\257\273\345\217\226\351\205\215\347\275\256\346\226\207\344\273\266.md.6095be72.lean.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\350\257\273\345\217\226\351\205\215\347\275\256\346\226\207\344\273\266.md.0f5cafd5.lean.js"
index 8e6641a0..6de9de17 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\350\257\273\345\217\226\351\205\215\347\275\256\346\226\207\344\273\266.md.6095be72.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\350\257\273\345\217\226\351\205\215\347\275\256\346\226\207\344\273\266.md.0f5cafd5.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"读取配置文件","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"knowledge-deposition/GoLang/基础知识/文件操作/读取配置文件.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/文件操作/读取配置文件.md"},o=l("",10),e=[o];function t(c,D,r,F,y,C){return a(),n("div",null,e)}const u=s(p,[["render",t]]);export{i as __pageData,u as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"读取配置文件","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"knowledge-deposition/GoLang/基础知识/文件操作/读取配置文件.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/文件操作/读取配置文件.md"},o=l("",10),e=[o];function t(c,D,r,F,y,C){return a(),n("div",null,e)}const u=s(p,[["render",t]]);export{i as __pageData,u as default};
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\350\257\273\346\226\207\344\273\266.md.5f76493d.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\350\257\273\346\226\207\344\273\266.md.4b431be5.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\350\257\273\346\226\207\344\273\266.md.5f76493d.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\350\257\273\346\226\207\344\273\266.md.4b431be5.js"
index 85121a41..b908272d 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\350\257\273\346\226\207\344\273\266.md.5f76493d.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\350\257\273\346\226\207\344\273\266.md.4b431be5.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const C=JSON.parse('{"title":"读文件","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"一次读完整个文件","slug":"一次读完整个文件","link":"#一次读完整个文件","children":[]},{"level":2,"title":"读取指定长度(单位:字节)","slug":"读取指定长度-单位-字节","link":"#读取指定长度-单位-字节","children":[]},{"level":2,"title":"读取片段","slug":"读取片段","link":"#读取片段","children":[]},{"level":2,"title":"带缓冲读","slug":"带缓冲读","link":"#带缓冲读","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/文件操作/读文件.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/文件操作/读文件.md"},o=l(`

读文件

一次读完整个文件

  • 使用os.ReadFile方法
Go
func ReadFile(name string) ([]byte, error)
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const C=JSON.parse('{"title":"读文件","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"一次读完整个文件","slug":"一次读完整个文件","link":"#一次读完整个文件","children":[]},{"level":2,"title":"读取指定长度(单位:字节)","slug":"读取指定长度-单位-字节","link":"#读取指定长度-单位-字节","children":[]},{"level":2,"title":"读取片段","slug":"读取片段","link":"#读取片段","children":[]},{"level":2,"title":"带缓冲读","slug":"带缓冲读","link":"#带缓冲读","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/文件操作/读文件.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/文件操作/读文件.md"},o=l(`

读文件

一次读完整个文件

  • 使用os.ReadFile方法
Go
func ReadFile(name string) ([]byte, error)
 

代码示例

要读取的1.txt文件

Go
你好,go语言 
 你好hello world
 从零开始学习go
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\350\257\273\346\226\207\344\273\266.md.5f76493d.lean.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\350\257\273\346\226\207\344\273\266.md.4b431be5.lean.js"
similarity index 93%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\350\257\273\346\226\207\344\273\266.md.5f76493d.lean.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\350\257\273\346\226\207\344\273\266.md.4b431be5.lean.js"
index 3f8e1755..0ef92e1e 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\350\257\273\346\226\207\344\273\266.md.5f76493d.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\226\207\344\273\266\346\223\215\344\275\234_\350\257\273\346\226\207\344\273\266.md.4b431be5.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const C=JSON.parse('{"title":"读文件","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"一次读完整个文件","slug":"一次读完整个文件","link":"#一次读完整个文件","children":[]},{"level":2,"title":"读取指定长度(单位:字节)","slug":"读取指定长度-单位-字节","link":"#读取指定长度-单位-字节","children":[]},{"level":2,"title":"读取片段","slug":"读取片段","link":"#读取片段","children":[]},{"level":2,"title":"带缓冲读","slug":"带缓冲读","link":"#带缓冲读","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/文件操作/读文件.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/文件操作/读文件.md"},o=l("",20),e=[o];function t(c,r,D,F,y,A){return a(),n("div",null,e)}const d=s(p,[["render",t]]);export{C as __pageData,d as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const C=JSON.parse('{"title":"读文件","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"一次读完整个文件","slug":"一次读完整个文件","link":"#一次读完整个文件","children":[]},{"level":2,"title":"读取指定长度(单位:字节)","slug":"读取指定长度-单位-字节","link":"#读取指定长度-单位-字节","children":[]},{"level":2,"title":"读取片段","slug":"读取片段","link":"#读取片段","children":[]},{"level":2,"title":"带缓冲读","slug":"带缓冲读","link":"#带缓冲读","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/文件操作/读文件.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/文件操作/读文件.md"},o=l("",20),e=[o];function t(c,r,D,F,y,A){return a(),n("div",null,e)}const d=s(p,[["render",t]]);export{C as __pageData,d as default};
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\265\201\347\250\213\346\216\247\345\210\266.md.25f69e4e.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\265\201\347\250\213\346\216\247\345\210\266.md.3f8747b4.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\265\201\347\250\213\346\216\247\345\210\266.md.25f69e4e.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\265\201\347\250\213\346\216\247\345\210\266.md.3f8747b4.js"
index 985fba03..2247ca22 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\265\201\347\250\213\346\216\247\345\210\266.md.25f69e4e.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\265\201\347\250\213\346\216\247\345\210\266.md.3f8747b4.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const C=JSON.parse('{"title":"流程控制","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"for循环","slug":"for循环","link":"#for循环","children":[]},{"level":2,"title":"if else","slug":"if-else","link":"#if-else","children":[]},{"level":2,"title":"switch case","slug":"switch-case","link":"#switch-case","children":[]},{"level":2,"title":"defer 延迟调用","slug":"defer-延迟调用","link":"#defer-延迟调用","children":[{"level":3,"title":"defer延迟调用函数","slug":"defer延迟调用函数","link":"#defer延迟调用函数","children":[]},{"level":3,"title":"值的修改对defer调用打印的影响","slug":"值的修改对defer调用打印的影响","link":"#值的修改对defer调用打印的影响","children":[]},{"level":3,"title":"延迟调用方法","slug":"延迟调用方法","link":"#延迟调用方法","children":[]},{"level":3,"title":"defer栈","slug":"defer栈","link":"#defer栈","children":[]},{"level":3,"title":"defer栈作用域","slug":"defer栈作用域","link":"#defer栈作用域","children":[]},{"level":3,"title":"defer和return和函数使用匿名返回值","slug":"defer和return和函数使用匿名返回值","link":"#defer和return和函数使用匿名返回值","children":[]},{"level":3,"title":"defer和return和函数使用命名返回值","slug":"defer和return和函数使用命名返回值","link":"#defer和return和函数使用命名返回值","children":[]},{"level":3,"title":"当defer遇到panic","slug":"当defer遇到panic","link":"#当defer遇到panic","children":[]},{"level":3,"title":"使用recover捕获panic","slug":"使用recover捕获panic","link":"#使用recover捕获panic","children":[]}]},{"level":2,"title":"goto无条件跳转","slug":"goto无条件跳转","link":"#goto无条件跳转","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/流程控制.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/流程控制.md"},o=l(`

流程控制

for循环

  • 循环语句中不用加()
  • for后面不跟随表达式等价于JavaScript中的while(true),此时语句中要有break/return,不然会无限循环
Go
package main
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const C=JSON.parse('{"title":"流程控制","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"for循环","slug":"for循环","link":"#for循环","children":[]},{"level":2,"title":"if else","slug":"if-else","link":"#if-else","children":[]},{"level":2,"title":"switch case","slug":"switch-case","link":"#switch-case","children":[]},{"level":2,"title":"defer 延迟调用","slug":"defer-延迟调用","link":"#defer-延迟调用","children":[{"level":3,"title":"defer延迟调用函数","slug":"defer延迟调用函数","link":"#defer延迟调用函数","children":[]},{"level":3,"title":"值的修改对defer调用打印的影响","slug":"值的修改对defer调用打印的影响","link":"#值的修改对defer调用打印的影响","children":[]},{"level":3,"title":"延迟调用方法","slug":"延迟调用方法","link":"#延迟调用方法","children":[]},{"level":3,"title":"defer栈","slug":"defer栈","link":"#defer栈","children":[]},{"level":3,"title":"defer栈作用域","slug":"defer栈作用域","link":"#defer栈作用域","children":[]},{"level":3,"title":"defer和return和函数使用匿名返回值","slug":"defer和return和函数使用匿名返回值","link":"#defer和return和函数使用匿名返回值","children":[]},{"level":3,"title":"defer和return和函数使用命名返回值","slug":"defer和return和函数使用命名返回值","link":"#defer和return和函数使用命名返回值","children":[]},{"level":3,"title":"当defer遇到panic","slug":"当defer遇到panic","link":"#当defer遇到panic","children":[]},{"level":3,"title":"使用recover捕获panic","slug":"使用recover捕获panic","link":"#使用recover捕获panic","children":[]}]},{"level":2,"title":"goto无条件跳转","slug":"goto无条件跳转","link":"#goto无条件跳转","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/流程控制.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/流程控制.md"},o=l(`

流程控制

for循环

  • 循环语句中不用加()
  • for后面不跟随表达式等价于JavaScript中的while(true),此时语句中要有break/return,不然会无限循环
Go
package main
 
 import "fmt"
 
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\265\201\347\250\213\346\216\247\345\210\266.md.25f69e4e.lean.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\265\201\347\250\213\346\216\247\345\210\266.md.3f8747b4.lean.js"
similarity index 97%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\265\201\347\250\213\346\216\247\345\210\266.md.25f69e4e.lean.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\265\201\347\250\213\346\216\247\345\210\266.md.3f8747b4.lean.js"
index caeb2fc3..7c417e8b 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\265\201\347\250\213\346\216\247\345\210\266.md.25f69e4e.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\346\265\201\347\250\213\346\216\247\345\210\266.md.3f8747b4.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const C=JSON.parse('{"title":"流程控制","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"for循环","slug":"for循环","link":"#for循环","children":[]},{"level":2,"title":"if else","slug":"if-else","link":"#if-else","children":[]},{"level":2,"title":"switch case","slug":"switch-case","link":"#switch-case","children":[]},{"level":2,"title":"defer 延迟调用","slug":"defer-延迟调用","link":"#defer-延迟调用","children":[{"level":3,"title":"defer延迟调用函数","slug":"defer延迟调用函数","link":"#defer延迟调用函数","children":[]},{"level":3,"title":"值的修改对defer调用打印的影响","slug":"值的修改对defer调用打印的影响","link":"#值的修改对defer调用打印的影响","children":[]},{"level":3,"title":"延迟调用方法","slug":"延迟调用方法","link":"#延迟调用方法","children":[]},{"level":3,"title":"defer栈","slug":"defer栈","link":"#defer栈","children":[]},{"level":3,"title":"defer栈作用域","slug":"defer栈作用域","link":"#defer栈作用域","children":[]},{"level":3,"title":"defer和return和函数使用匿名返回值","slug":"defer和return和函数使用匿名返回值","link":"#defer和return和函数使用匿名返回值","children":[]},{"level":3,"title":"defer和return和函数使用命名返回值","slug":"defer和return和函数使用命名返回值","link":"#defer和return和函数使用命名返回值","children":[]},{"level":3,"title":"当defer遇到panic","slug":"当defer遇到panic","link":"#当defer遇到panic","children":[]},{"level":3,"title":"使用recover捕获panic","slug":"使用recover捕获panic","link":"#使用recover捕获panic","children":[]}]},{"level":2,"title":"goto无条件跳转","slug":"goto无条件跳转","link":"#goto无条件跳转","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/流程控制.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/流程控制.md"},o=l("",51),e=[o];function t(c,r,D,F,y,i){return a(),n("div",null,e)}const d=s(p,[["render",t]]);export{C as __pageData,d as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const C=JSON.parse('{"title":"流程控制","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"for循环","slug":"for循环","link":"#for循环","children":[]},{"level":2,"title":"if else","slug":"if-else","link":"#if-else","children":[]},{"level":2,"title":"switch case","slug":"switch-case","link":"#switch-case","children":[]},{"level":2,"title":"defer 延迟调用","slug":"defer-延迟调用","link":"#defer-延迟调用","children":[{"level":3,"title":"defer延迟调用函数","slug":"defer延迟调用函数","link":"#defer延迟调用函数","children":[]},{"level":3,"title":"值的修改对defer调用打印的影响","slug":"值的修改对defer调用打印的影响","link":"#值的修改对defer调用打印的影响","children":[]},{"level":3,"title":"延迟调用方法","slug":"延迟调用方法","link":"#延迟调用方法","children":[]},{"level":3,"title":"defer栈","slug":"defer栈","link":"#defer栈","children":[]},{"level":3,"title":"defer栈作用域","slug":"defer栈作用域","link":"#defer栈作用域","children":[]},{"level":3,"title":"defer和return和函数使用匿名返回值","slug":"defer和return和函数使用匿名返回值","link":"#defer和return和函数使用匿名返回值","children":[]},{"level":3,"title":"defer和return和函数使用命名返回值","slug":"defer和return和函数使用命名返回值","link":"#defer和return和函数使用命名返回值","children":[]},{"level":3,"title":"当defer遇到panic","slug":"当defer遇到panic","link":"#当defer遇到panic","children":[]},{"level":3,"title":"使用recover捕获panic","slug":"使用recover捕获panic","link":"#使用recover捕获panic","children":[]}]},{"level":2,"title":"goto无条件跳转","slug":"goto无条件跳转","link":"#goto无条件跳转","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/流程控制.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/流程控制.md"},o=l("",51),e=[o];function t(c,r,D,F,y,i){return a(),n("div",null,e)}const d=s(p,[["render",t]]);export{C as __pageData,d as default};
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\216\257\345\242\203\346\220\255\345\273\272.md.6d924feb.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\216\257\345\242\203\346\220\255\345\273\272.md.411dcee9.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\216\257\345\242\203\346\220\255\345\273\272.md.6d924feb.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\216\257\345\242\203\346\220\255\345\273\272.md.411dcee9.js"
index fb4468b3..f449c0e7 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\216\257\345\242\203\346\220\255\345\273\272.md.6d924feb.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\216\257\345\242\203\346\220\255\345\273\272.md.411dcee9.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const F=JSON.parse('{"title":"开发环境搭建","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"下载Go","slug":"下载go","link":"#下载go","children":[]},{"level":2,"title":"查看go版本","slug":"查看go版本","link":"#查看go版本","children":[]},{"level":2,"title":"初始化一个项目","slug":"初始化一个项目","link":"#初始化一个项目","children":[]},{"level":2,"title":"创建main.go文件","slug":"创建main-go文件","link":"#创建main-go文件","children":[]},{"level":2,"title":"使用第三方库","slug":"使用第三方库","link":"#使用第三方库","children":[]},{"level":2,"title":"添加和删除依赖","slug":"添加和删除依赖","link":"#添加和删除依赖","children":[]},{"level":2,"title":"需要对远程仓库的源码做修改","slug":"需要对远程仓库的源码做修改","link":"#需要对远程仓库的源码做修改","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/环境搭建.md"}'),o={name:"knowledge-deposition/GoLang/基础知识/环境搭建.md"},e=l(`

开发环境搭建

官网地址

下载Go

shell
brew install go
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const F=JSON.parse('{"title":"开发环境搭建","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"下载Go","slug":"下载go","link":"#下载go","children":[]},{"level":2,"title":"查看go版本","slug":"查看go版本","link":"#查看go版本","children":[]},{"level":2,"title":"初始化一个项目","slug":"初始化一个项目","link":"#初始化一个项目","children":[]},{"level":2,"title":"创建main.go文件","slug":"创建main-go文件","link":"#创建main-go文件","children":[]},{"level":2,"title":"使用第三方库","slug":"使用第三方库","link":"#使用第三方库","children":[]},{"level":2,"title":"添加和删除依赖","slug":"添加和删除依赖","link":"#添加和删除依赖","children":[]},{"level":2,"title":"需要对远程仓库的源码做修改","slug":"需要对远程仓库的源码做修改","link":"#需要对远程仓库的源码做修改","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/环境搭建.md"}'),o={name:"knowledge-deposition/GoLang/基础知识/环境搭建.md"},e=l(`

开发环境搭建

官网地址

下载Go

shell
brew install go
 

查看go版本

shell
go version
 # go version go1.20.2 darwin/arm64
 

初始化一个项目

TIP

usernameproject最好都小写

shell
mkdir hello
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\216\257\345\242\203\346\220\255\345\273\272.md.6d924feb.lean.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\216\257\345\242\203\346\220\255\345\273\272.md.411dcee9.lean.js"
similarity index 94%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\216\257\345\242\203\346\220\255\345\273\272.md.6d924feb.lean.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\216\257\345\242\203\346\220\255\345\273\272.md.411dcee9.lean.js"
index d181f129..c6d5154f 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\216\257\345\242\203\346\220\255\345\273\272.md.6d924feb.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\216\257\345\242\203\346\220\255\345\273\272.md.411dcee9.lean.js"
@@ -1 +1 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const F=JSON.parse('{"title":"开发环境搭建","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"下载Go","slug":"下载go","link":"#下载go","children":[]},{"level":2,"title":"查看go版本","slug":"查看go版本","link":"#查看go版本","children":[]},{"level":2,"title":"初始化一个项目","slug":"初始化一个项目","link":"#初始化一个项目","children":[]},{"level":2,"title":"创建main.go文件","slug":"创建main-go文件","link":"#创建main-go文件","children":[]},{"level":2,"title":"使用第三方库","slug":"使用第三方库","link":"#使用第三方库","children":[]},{"level":2,"title":"添加和删除依赖","slug":"添加和删除依赖","link":"#添加和删除依赖","children":[]},{"level":2,"title":"需要对远程仓库的源码做修改","slug":"需要对远程仓库的源码做修改","link":"#需要对远程仓库的源码做修改","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/环境搭建.md"}'),o={name:"knowledge-deposition/GoLang/基础知识/环境搭建.md"},e=l("",31),p=[e];function c(t,i,r,d,y,C){return n(),a("div",null,p)}const A=s(o,[["render",c]]);export{F as __pageData,A as default};
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const F=JSON.parse('{"title":"开发环境搭建","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"下载Go","slug":"下载go","link":"#下载go","children":[]},{"level":2,"title":"查看go版本","slug":"查看go版本","link":"#查看go版本","children":[]},{"level":2,"title":"初始化一个项目","slug":"初始化一个项目","link":"#初始化一个项目","children":[]},{"level":2,"title":"创建main.go文件","slug":"创建main-go文件","link":"#创建main-go文件","children":[]},{"level":2,"title":"使用第三方库","slug":"使用第三方库","link":"#使用第三方库","children":[]},{"level":2,"title":"添加和删除依赖","slug":"添加和删除依赖","link":"#添加和删除依赖","children":[]},{"level":2,"title":"需要对远程仓库的源码做修改","slug":"需要对远程仓库的源码做修改","link":"#需要对远程仓库的源码做修改","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/环境搭建.md"}'),o={name:"knowledge-deposition/GoLang/基础知识/环境搭建.md"},e=l("",31),p=[e];function c(t,i,r,d,y,C){return n(),a("div",null,p)}const A=s(o,[["render",c]]);export{F as __pageData,A as default};
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\273\223\346\236\204\344\275\223.md.bdc9b642.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\273\223\346\236\204\344\275\223.md.ff868567.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\273\223\346\236\204\344\275\223.md.bdc9b642.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\273\223\346\236\204\344\275\223.md.ff868567.js"
index 248bff43..85c21055 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\273\223\346\236\204\344\275\223.md.bdc9b642.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\273\223\346\236\204\344\275\223.md.ff868567.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"结构体","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"声明结构体","slug":"声明结构体","link":"#声明结构体","children":[]},{"level":2,"title":"创建结构体","slug":"创建结构体","link":"#创建结构体","children":[{"level":3,"title":"创建具名结构体","slug":"创建具名结构体","link":"#创建具名结构体","children":[]},{"level":3,"title":"创建匿名结构体","slug":"创建匿名结构体","link":"#创建匿名结构体","children":[]}]},{"level":2,"title":"结构体的零值","slug":"结构体的零值","link":"#结构体的零值","children":[]},{"level":2,"title":"操作结构体字段","slug":"操作结构体字段","link":"#操作结构体字段","children":[]},{"level":2,"title":"指向结构体的指针","slug":"指向结构体的指针","link":"#指向结构体的指针","children":[]},{"level":2,"title":"结构体中的匿名字段","slug":"结构体中的匿名字段","link":"#结构体中的匿名字段","children":[]},{"level":2,"title":"嵌套结构体","slug":"嵌套结构体","link":"#嵌套结构体","children":[]},{"level":2,"title":"结构体中的提升字段","slug":"结构体中的提升字段","link":"#结构体中的提升字段","children":[]},{"level":2,"title":"结构体比较","slug":"结构体比较","link":"#结构体比较","children":[]},{"level":2,"title":"为结构体定义方法","slug":"为结构体定义方法","link":"#为结构体定义方法","children":[{"level":3,"title":"方法传参方式","slug":"方法传参方式","link":"#方法传参方式","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/基础知识/结构体.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/结构体.md"},o=l(`

结构体

声明结构体

Go
type struct_name struct {
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"结构体","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"声明结构体","slug":"声明结构体","link":"#声明结构体","children":[]},{"level":2,"title":"创建结构体","slug":"创建结构体","link":"#创建结构体","children":[{"level":3,"title":"创建具名结构体","slug":"创建具名结构体","link":"#创建具名结构体","children":[]},{"level":3,"title":"创建匿名结构体","slug":"创建匿名结构体","link":"#创建匿名结构体","children":[]}]},{"level":2,"title":"结构体的零值","slug":"结构体的零值","link":"#结构体的零值","children":[]},{"level":2,"title":"操作结构体字段","slug":"操作结构体字段","link":"#操作结构体字段","children":[]},{"level":2,"title":"指向结构体的指针","slug":"指向结构体的指针","link":"#指向结构体的指针","children":[]},{"level":2,"title":"结构体中的匿名字段","slug":"结构体中的匿名字段","link":"#结构体中的匿名字段","children":[]},{"level":2,"title":"嵌套结构体","slug":"嵌套结构体","link":"#嵌套结构体","children":[]},{"level":2,"title":"结构体中的提升字段","slug":"结构体中的提升字段","link":"#结构体中的提升字段","children":[]},{"level":2,"title":"结构体比较","slug":"结构体比较","link":"#结构体比较","children":[]},{"level":2,"title":"为结构体定义方法","slug":"为结构体定义方法","link":"#为结构体定义方法","children":[{"level":3,"title":"方法传参方式","slug":"方法传参方式","link":"#方法传参方式","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/基础知识/结构体.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/结构体.md"},o=l(`

结构体

声明结构体

Go
type struct_name struct {
   property_one  property_one_type
   property_two  property_two_type
   ...
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\273\223\346\236\204\344\275\223.md.bdc9b642.lean.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\273\223\346\236\204\344\275\223.md.ff868567.lean.js"
similarity index 96%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\273\223\346\236\204\344\275\223.md.bdc9b642.lean.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\273\223\346\236\204\344\275\223.md.ff868567.lean.js"
index fc8945ac..355c930c 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\273\223\346\236\204\344\275\223.md.bdc9b642.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\273\223\346\236\204\344\275\223.md.ff868567.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"结构体","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"声明结构体","slug":"声明结构体","link":"#声明结构体","children":[]},{"level":2,"title":"创建结构体","slug":"创建结构体","link":"#创建结构体","children":[{"level":3,"title":"创建具名结构体","slug":"创建具名结构体","link":"#创建具名结构体","children":[]},{"level":3,"title":"创建匿名结构体","slug":"创建匿名结构体","link":"#创建匿名结构体","children":[]}]},{"level":2,"title":"结构体的零值","slug":"结构体的零值","link":"#结构体的零值","children":[]},{"level":2,"title":"操作结构体字段","slug":"操作结构体字段","link":"#操作结构体字段","children":[]},{"level":2,"title":"指向结构体的指针","slug":"指向结构体的指针","link":"#指向结构体的指针","children":[]},{"level":2,"title":"结构体中的匿名字段","slug":"结构体中的匿名字段","link":"#结构体中的匿名字段","children":[]},{"level":2,"title":"嵌套结构体","slug":"嵌套结构体","link":"#嵌套结构体","children":[]},{"level":2,"title":"结构体中的提升字段","slug":"结构体中的提升字段","link":"#结构体中的提升字段","children":[]},{"level":2,"title":"结构体比较","slug":"结构体比较","link":"#结构体比较","children":[]},{"level":2,"title":"为结构体定义方法","slug":"为结构体定义方法","link":"#为结构体定义方法","children":[{"level":3,"title":"方法传参方式","slug":"方法传参方式","link":"#方法传参方式","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/基础知识/结构体.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/结构体.md"},o=l("",49),e=[o];function t(c,r,D,y,F,C){return a(),n("div",null,e)}const u=s(p,[["render",t]]);export{i as __pageData,u as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"结构体","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"声明结构体","slug":"声明结构体","link":"#声明结构体","children":[]},{"level":2,"title":"创建结构体","slug":"创建结构体","link":"#创建结构体","children":[{"level":3,"title":"创建具名结构体","slug":"创建具名结构体","link":"#创建具名结构体","children":[]},{"level":3,"title":"创建匿名结构体","slug":"创建匿名结构体","link":"#创建匿名结构体","children":[]}]},{"level":2,"title":"结构体的零值","slug":"结构体的零值","link":"#结构体的零值","children":[]},{"level":2,"title":"操作结构体字段","slug":"操作结构体字段","link":"#操作结构体字段","children":[]},{"level":2,"title":"指向结构体的指针","slug":"指向结构体的指针","link":"#指向结构体的指针","children":[]},{"level":2,"title":"结构体中的匿名字段","slug":"结构体中的匿名字段","link":"#结构体中的匿名字段","children":[]},{"level":2,"title":"嵌套结构体","slug":"嵌套结构体","link":"#嵌套结构体","children":[]},{"level":2,"title":"结构体中的提升字段","slug":"结构体中的提升字段","link":"#结构体中的提升字段","children":[]},{"level":2,"title":"结构体比较","slug":"结构体比较","link":"#结构体比较","children":[]},{"level":2,"title":"为结构体定义方法","slug":"为结构体定义方法","link":"#为结构体定义方法","children":[{"level":3,"title":"方法传参方式","slug":"方法传参方式","link":"#方法传参方式","children":[]}]}],"relativePath":"knowledge-deposition/GoLang/基础知识/结构体.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/结构体.md"},o=l("",49),e=[o];function t(c,r,D,y,F,C){return a(),n("div",null,e)}const u=s(p,[["render",t]]);export{i as __pageData,u as default};
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\275\221\347\273\234_HTTP.md.060e5ac2.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\275\221\347\273\234_HTTP.md.4b685203.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\275\221\347\273\234_HTTP.md.060e5ac2.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\275\221\347\273\234_HTTP.md.4b685203.js"
index 9e94f168..56f097e9 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\275\221\347\273\234_HTTP.md.060e5ac2.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\275\221\347\273\234_HTTP.md.4b685203.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"HTTP","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"HTTP服务端","slug":"http服务端","link":"#http服务端","children":[]},{"level":2,"title":"HTTP客户端","slug":"http客户端","link":"#http客户端","children":[]},{"level":2,"title":"HTTP常用状态码","slug":"http常用状态码","link":"#http常用状态码","children":[]},{"level":2,"title":"实战","slug":"实战","link":"#实战","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/网络/HTTP.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/网络/HTTP.md"},o=l(`

HTTP

HTTP服务端

  • 一个最简单的服务
Go
package main
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"HTTP","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"HTTP服务端","slug":"http服务端","link":"#http服务端","children":[]},{"level":2,"title":"HTTP客户端","slug":"http客户端","link":"#http客户端","children":[]},{"level":2,"title":"HTTP常用状态码","slug":"http常用状态码","link":"#http常用状态码","children":[]},{"level":2,"title":"实战","slug":"实战","link":"#实战","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/网络/HTTP.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/网络/HTTP.md"},o=l(`

HTTP

HTTP服务端

  • 一个最简单的服务
Go
package main
 
 import (
 	"fmt"
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\275\221\347\273\234_HTTP.md.060e5ac2.lean.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\275\221\347\273\234_HTTP.md.4b685203.lean.js"
similarity index 92%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\275\221\347\273\234_HTTP.md.060e5ac2.lean.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\275\221\347\273\234_HTTP.md.4b685203.lean.js"
index be00416c..20001fdc 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\275\221\347\273\234_HTTP.md.060e5ac2.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\275\221\347\273\234_HTTP.md.4b685203.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"HTTP","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"HTTP服务端","slug":"http服务端","link":"#http服务端","children":[]},{"level":2,"title":"HTTP客户端","slug":"http客户端","link":"#http客户端","children":[]},{"level":2,"title":"HTTP常用状态码","slug":"http常用状态码","link":"#http常用状态码","children":[]},{"level":2,"title":"实战","slug":"实战","link":"#实战","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/网络/HTTP.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/网络/HTTP.md"},o=l("",17),t=[o];function e(D,c,r,F,y,A){return a(),n("div",null,t)}const u=s(p,[["render",e]]);export{i as __pageData,u as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"HTTP","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"HTTP服务端","slug":"http服务端","link":"#http服务端","children":[]},{"level":2,"title":"HTTP客户端","slug":"http客户端","link":"#http客户端","children":[]},{"level":2,"title":"HTTP常用状态码","slug":"http常用状态码","link":"#http常用状态码","children":[]},{"level":2,"title":"实战","slug":"实战","link":"#实战","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/网络/HTTP.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/网络/HTTP.md"},o=l("",17),t=[o];function e(D,c,r,F,y,A){return a(),n("div",null,t)}const u=s(p,[["render",e]]);export{i as __pageData,u as default};
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\275\221\347\273\234_RPC.md.a3f89cc2.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\275\221\347\273\234_RPC.md.2c22ea6c.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\275\221\347\273\234_RPC.md.a3f89cc2.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\275\221\347\273\234_RPC.md.2c22ea6c.js"
index 1f45db71..ecacc107 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\275\221\347\273\234_RPC.md.a3f89cc2.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\275\221\347\273\234_RPC.md.2c22ea6c.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"RPC","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"Server端","slug":"server端","link":"#server端","children":[]},{"level":2,"title":"客户端","slug":"客户端","link":"#客户端","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/网络/RPC.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/网络/RPC.md"},o=l(`

RPC

Go程序可以通过net/rpc包相互通讯,所以这是另一个客户端-服务器端模式的应用。它提供了通过网络连接进行函数调用的便捷方法。

Server端

  • 创建一个用于计算的结构体对象Server,并且将它通过rpc.Register(object)注册,

  • 调用rpc.HandleHTTP方法

  • 调用net.Listen方法开启监听

  • 调用http.Serve启动服务

Go
package main
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"RPC","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"Server端","slug":"server端","link":"#server端","children":[]},{"level":2,"title":"客户端","slug":"客户端","link":"#客户端","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/网络/RPC.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/网络/RPC.md"},o=l(`

RPC

Go程序可以通过net/rpc包相互通讯,所以这是另一个客户端-服务器端模式的应用。它提供了通过网络连接进行函数调用的便捷方法。

Server端

  • 创建一个用于计算的结构体对象Server,并且将它通过rpc.Register(object)注册,

  • 调用rpc.HandleHTTP方法

  • 调用net.Listen方法开启监听

  • 调用http.Serve启动服务

Go
package main
 
 import (
 	"fmt"
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\275\221\347\273\234_RPC.md.a3f89cc2.lean.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\275\221\347\273\234_RPC.md.2c22ea6c.lean.js"
similarity index 89%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\275\221\347\273\234_RPC.md.a3f89cc2.lean.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\275\221\347\273\234_RPC.md.2c22ea6c.lean.js"
index ae3f6139..cbc33f78 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\275\221\347\273\234_RPC.md.a3f89cc2.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\275\221\347\273\234_RPC.md.2c22ea6c.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"RPC","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"Server端","slug":"server端","link":"#server端","children":[]},{"level":2,"title":"客户端","slug":"客户端","link":"#客户端","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/网络/RPC.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/网络/RPC.md"},o=l("",8),e=[o];function t(c,r,D,F,y,A){return a(),n("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"RPC","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"Server端","slug":"server端","link":"#server端","children":[]},{"level":2,"title":"客户端","slug":"客户端","link":"#客户端","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/网络/RPC.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/网络/RPC.md"},o=l("",8),e=[o];function t(c,r,D,F,y,A){return a(),n("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\275\221\347\273\234_TCP.md.afa5fe6e.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\275\221\347\273\234_TCP.md.a78bfdfc.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\275\221\347\273\234_TCP.md.afa5fe6e.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\275\221\347\273\234_TCP.md.a78bfdfc.js"
index 5ce8cf1c..39f012c1 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\275\221\347\273\234_TCP.md.afa5fe6e.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\275\221\347\273\234_TCP.md.a78bfdfc.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"TCP","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"knowledge-deposition/GoLang/基础知识/网络/TCP.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/网络/TCP.md"},o=l(`

TCP

客户端和服务端通信示例

server.go

Go
package main
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"TCP","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"knowledge-deposition/GoLang/基础知识/网络/TCP.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/网络/TCP.md"},o=l(`

TCP

客户端和服务端通信示例

server.go

Go
package main
 
 import (
 	"fmt"
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\275\221\347\273\234_TCP.md.afa5fe6e.lean.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\275\221\347\273\234_TCP.md.a78bfdfc.lean.js"
similarity index 85%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\275\221\347\273\234_TCP.md.afa5fe6e.lean.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\275\221\347\273\234_TCP.md.a78bfdfc.lean.js"
index d7a1950f..9984a80d 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\275\221\347\273\234_TCP.md.afa5fe6e.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\347\275\221\347\273\234_TCP.md.a78bfdfc.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"TCP","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"knowledge-deposition/GoLang/基础知识/网络/TCP.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/网络/TCP.md"},o=l("",6),t=[o];function e(c,D,r,F,y,A){return a(),n("div",null,t)}const u=s(p,[["render",e]]);export{i as __pageData,u as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"TCP","description":"","frontmatter":{"layout":"doc"},"headers":[],"relativePath":"knowledge-deposition/GoLang/基础知识/网络/TCP.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/网络/TCP.md"},o=l("",6),t=[o];function e(c,D,r,F,y,A){return a(),n("div",null,t)}const u=s(p,[["render",e]]);export{i as __pageData,u as default};
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\351\200\232\351\201\223channel.md.d281c72c.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\351\200\232\351\201\223channel.md.75f442db.js"
similarity index 99%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\351\200\232\351\201\223channel.md.d281c72c.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\351\200\232\351\201\223channel.md.75f442db.js"
index 9d3fef4f..8ec3be5d 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\351\200\232\351\201\223channel.md.d281c72c.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\351\200\232\351\201\223channel.md.75f442db.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"通道(channel)","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"通道的声明和初始化","slug":"通道的声明和初始化","link":"#通道的声明和初始化","children":[]},{"level":2,"title":"使用通道发送和接收数据","slug":"使用通道发送和接收数据","link":"#使用通道发送和接收数据","children":[]},{"level":2,"title":"关闭通道","slug":"关闭通道","link":"#关闭通道","children":[]},{"level":2,"title":"通道的容量和长度","slug":"通道的容量和长度","link":"#通道的容量和长度","children":[]},{"level":2,"title":"单向通道","slug":"单向通道","link":"#单向通道","children":[{"level":3,"title":"只读通道","slug":"只读通道","link":"#只读通道","children":[]},{"level":3,"title":"只写通道","slug":"只写通道","link":"#只写通道","children":[]}]},{"level":2,"title":"遍历通道","slug":"遍历通道","link":"#遍历通道","children":[]},{"level":2,"title":"用通道做锁","slug":"用通道做锁","link":"#用通道做锁","children":[]},{"level":2,"title":"死锁","slug":"死锁","link":"#死锁","children":[]},{"level":2,"title":"WaitGroup","slug":"waitgroup","link":"#waitgroup","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/通道channel.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/通道channel.md"},o=l(`

通道(channel)

  • 通道可以理解为Go协程通信的管道

  • 通道是队列式的数据结构,遵循先入先出的原则

  • 每个通道都只能传递一种数据类型的数据,在声明channel的时候,需要指定通道的类型

  • 通道的零值nil

通道的声明和初始化

  • 可以使用var关键字先声明一个channel,再使用make函数初始化

  • 也可以直接使用简短声明make来声明并初始化一个channel

格式如下:

Go
// 第一种方式
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"通道(channel)","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"通道的声明和初始化","slug":"通道的声明和初始化","link":"#通道的声明和初始化","children":[]},{"level":2,"title":"使用通道发送和接收数据","slug":"使用通道发送和接收数据","link":"#使用通道发送和接收数据","children":[]},{"level":2,"title":"关闭通道","slug":"关闭通道","link":"#关闭通道","children":[]},{"level":2,"title":"通道的容量和长度","slug":"通道的容量和长度","link":"#通道的容量和长度","children":[]},{"level":2,"title":"单向通道","slug":"单向通道","link":"#单向通道","children":[{"level":3,"title":"只读通道","slug":"只读通道","link":"#只读通道","children":[]},{"level":3,"title":"只写通道","slug":"只写通道","link":"#只写通道","children":[]}]},{"level":2,"title":"遍历通道","slug":"遍历通道","link":"#遍历通道","children":[]},{"level":2,"title":"用通道做锁","slug":"用通道做锁","link":"#用通道做锁","children":[]},{"level":2,"title":"死锁","slug":"死锁","link":"#死锁","children":[]},{"level":2,"title":"WaitGroup","slug":"waitgroup","link":"#waitgroup","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/通道channel.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/通道channel.md"},o=l(`

通道(channel)

  • 通道可以理解为Go协程通信的管道

  • 通道是队列式的数据结构,遵循先入先出的原则

  • 每个通道都只能传递一种数据类型的数据,在声明channel的时候,需要指定通道的类型

  • 通道的零值nil

通道的声明和初始化

  • 可以使用var关键字先声明一个channel,再使用make函数初始化

  • 也可以直接使用简短声明make来声明并初始化一个channel

格式如下:

Go
// 第一种方式
 var chan_name chan_type // 声明
 channel_name = make(chan chan_type, [bufferSize]) // 初始化
 
diff --git "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\351\200\232\351\201\223channel.md.d281c72c.lean.js" "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\351\200\232\351\201\223channel.md.75f442db.lean.js"
similarity index 96%
rename from "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\351\200\232\351\201\223channel.md.d281c72c.lean.js"
rename to "assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\351\200\232\351\201\223channel.md.75f442db.lean.js"
index 1dcbe20b..6b2e655a 100644
--- "a/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\351\200\232\351\201\223channel.md.d281c72c.lean.js"
+++ "b/assets/knowledge-deposition_GoLang_\345\237\272\347\241\200\347\237\245\350\257\206_\351\200\232\351\201\223channel.md.75f442db.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"通道(channel)","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"通道的声明和初始化","slug":"通道的声明和初始化","link":"#通道的声明和初始化","children":[]},{"level":2,"title":"使用通道发送和接收数据","slug":"使用通道发送和接收数据","link":"#使用通道发送和接收数据","children":[]},{"level":2,"title":"关闭通道","slug":"关闭通道","link":"#关闭通道","children":[]},{"level":2,"title":"通道的容量和长度","slug":"通道的容量和长度","link":"#通道的容量和长度","children":[]},{"level":2,"title":"单向通道","slug":"单向通道","link":"#单向通道","children":[{"level":3,"title":"只读通道","slug":"只读通道","link":"#只读通道","children":[]},{"level":3,"title":"只写通道","slug":"只写通道","link":"#只写通道","children":[]}]},{"level":2,"title":"遍历通道","slug":"遍历通道","link":"#遍历通道","children":[]},{"level":2,"title":"用通道做锁","slug":"用通道做锁","link":"#用通道做锁","children":[]},{"level":2,"title":"死锁","slug":"死锁","link":"#死锁","children":[]},{"level":2,"title":"WaitGroup","slug":"waitgroup","link":"#waitgroup","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/通道channel.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/通道channel.md"},o=l("",54),e=[o];function t(c,r,D,y,F,A){return a(),n("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"通道(channel)","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"通道的声明和初始化","slug":"通道的声明和初始化","link":"#通道的声明和初始化","children":[]},{"level":2,"title":"使用通道发送和接收数据","slug":"使用通道发送和接收数据","link":"#使用通道发送和接收数据","children":[]},{"level":2,"title":"关闭通道","slug":"关闭通道","link":"#关闭通道","children":[]},{"level":2,"title":"通道的容量和长度","slug":"通道的容量和长度","link":"#通道的容量和长度","children":[]},{"level":2,"title":"单向通道","slug":"单向通道","link":"#单向通道","children":[{"level":3,"title":"只读通道","slug":"只读通道","link":"#只读通道","children":[]},{"level":3,"title":"只写通道","slug":"只写通道","link":"#只写通道","children":[]}]},{"level":2,"title":"遍历通道","slug":"遍历通道","link":"#遍历通道","children":[]},{"level":2,"title":"用通道做锁","slug":"用通道做锁","link":"#用通道做锁","children":[]},{"level":2,"title":"死锁","slug":"死锁","link":"#死锁","children":[]},{"level":2,"title":"WaitGroup","slug":"waitgroup","link":"#waitgroup","children":[]}],"relativePath":"knowledge-deposition/GoLang/基础知识/通道channel.md"}'),p={name:"knowledge-deposition/GoLang/基础知识/通道channel.md"},o=l("",54),e=[o];function t(c,r,D,y,F,A){return a(),n("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
diff --git "a/assets/knowledge-deposition_Linux_Bash\345\237\272\347\241\200\347\237\245\350\257\206.md.444e58f9.js" "b/assets/knowledge-deposition_Linux_Bash\345\237\272\347\241\200\347\237\245\350\257\206.md.0a588998.js"
similarity index 99%
rename from "assets/knowledge-deposition_Linux_Bash\345\237\272\347\241\200\347\237\245\350\257\206.md.444e58f9.js"
rename to "assets/knowledge-deposition_Linux_Bash\345\237\272\347\241\200\347\237\245\350\257\206.md.0a588998.js"
index ee95a476..f50ce896 100644
--- "a/assets/knowledge-deposition_Linux_Bash\345\237\272\347\241\200\347\237\245\350\257\206.md.444e58f9.js"
+++ "b/assets/knowledge-deposition_Linux_Bash\345\237\272\347\241\200\347\237\245\350\257\206.md.0a588998.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as l,o as a,e as n}from"./app.fa87702c.js";const h=JSON.parse('{"title":"Bash 基础语法","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"文件格式","slug":"文件格式","link":"#文件格式","children":[]},{"level":2,"title":"运行bash脚本","slug":"运行bash脚本","link":"#运行bash脚本","children":[]},{"level":2,"title":"变量","slug":"变量","link":"#变量","children":[{"level":3,"title":"定义变量","slug":"定义变量","link":"#定义变量","children":[]},{"level":3,"title":"使用变量","slug":"使用变量","link":"#使用变量","children":[]},{"level":3,"title":"定义只读变量","slug":"定义只读变量","link":"#定义只读变量","children":[]},{"level":3,"title":"删除变量","slug":"删除变量","link":"#删除变量","children":[]},{"level":3,"title":"变量类型","slug":"变量类型","link":"#变量类型","children":[]}]},{"level":2,"title":"字符串","slug":"字符串","link":"#字符串","children":[{"level":3,"title":"单引号字符串","slug":"单引号字符串","link":"#单引号字符串","children":[]},{"level":3,"title":"双引号字符串","slug":"双引号字符串","link":"#双引号字符串","children":[]},{"level":3,"title":"拼接字符串","slug":"拼接字符串","link":"#拼接字符串","children":[]},{"level":3,"title":"获取字符串长度","slug":"获取字符串长度","link":"#获取字符串长度","children":[]},{"level":3,"title":"提取子字符串","slug":"提取子字符串","link":"#提取子字符串","children":[]},{"level":3,"title":"查找子字符串","slug":"查找子字符串","link":"#查找子字符串","children":[]},{"level":3,"title":"提取字符串","slug":"提取字符串","link":"#提取字符串","children":[]}]},{"level":2,"title":"数组","slug":"数组","link":"#数组","children":[{"level":3,"title":"定义数组","slug":"定义数组","link":"#定义数组","children":[]},{"level":3,"title":"读取数组","slug":"读取数组","link":"#读取数组","children":[]}]},{"level":2,"title":"Shell传递参数","slug":"shell传递参数","link":"#shell传递参数","children":[]},{"level":2,"title":"Shell基本运算符","slug":"shell基本运算符","link":"#shell基本运算符","children":[{"level":3,"title":"算术运算符","slug":"算术运算符","link":"#算术运算符","children":[]},{"level":3,"title":"关系运算符","slug":"关系运算符","link":"#关系运算符","children":[]},{"level":3,"title":"布尔运算符","slug":"布尔运算符","link":"#布尔运算符","children":[]},{"level":3,"title":"逻辑运算符","slug":"逻辑运算符","link":"#逻辑运算符","children":[]},{"level":3,"title":"字符串运算符","slug":"字符串运算符","link":"#字符串运算符","children":[]},{"level":3,"title":"文件测试运算符","slug":"文件测试运算符","link":"#文件测试运算符","children":[]}]},{"level":2,"title":"echo命令","slug":"echo命令","link":"#echo命令","children":[{"level":3,"title":"显示普通字符串","slug":"显示普通字符串","link":"#显示普通字符串","children":[]},{"level":3,"title":"显示转义字符","slug":"显示转义字符","link":"#显示转义字符","children":[]},{"level":3,"title":"显示变量","slug":"显示变量","link":"#显示变量","children":[]},{"level":3,"title":"显示换行","slug":"显示换行","link":"#显示换行","children":[]},{"level":3,"title":"显示不换行","slug":"显示不换行","link":"#显示不换行","children":[]},{"level":3,"title":"显示结果定向至文件","slug":"显示结果定向至文件","link":"#显示结果定向至文件","children":[]},{"level":3,"title":"原样输出字符串,不进行转义或取变量(用单引号)","slug":"原样输出字符串-不进行转义或取变量-用单引号","link":"#原样输出字符串-不进行转义或取变量-用单引号","children":[]},{"level":3,"title":"显示命令执行结果","slug":"显示命令执行结果","link":"#显示命令执行结果","children":[]}]},{"level":2,"title":"流程控制","slug":"流程控制","link":"#流程控制","children":[{"level":3,"title":"if else","slug":"if-else","link":"#if-else","children":[]},{"level":3,"title":"for 循环","slug":"for-循环","link":"#for-循环","children":[]},{"level":3,"title":"while 语句","slug":"while-语句","link":"#while-语句","children":[]},{"level":3,"title":"until 循环","slug":"until-循环","link":"#until-循环","children":[]},{"level":3,"title":"case ... esac","slug":"case-esac","link":"#case-esac","children":[]}]},{"level":2,"title":"函数","slug":"函数","link":"#函数","children":[{"level":3,"title":"定义函数","slug":"定义函数","link":"#定义函数","children":[]},{"level":3,"title":"函数参数","slug":"函数参数","link":"#函数参数","children":[]}]},{"level":2,"title":"输入/输出重定向","slug":"输入-输出重定向","link":"#输入-输出重定向","children":[{"level":3,"title":"/dev/null 文件","slug":"dev-null-文件","link":"#dev-null-文件","children":[]}]}],"relativePath":"knowledge-deposition/Linux/Bash基础知识.md"}'),e={name:"knowledge-deposition/Linux/Bash基础知识.md"},t=n(`

Bash 基础语法

文件格式

文件第一行#!/bin/bash或者#!/bin/sh#!告诉系统其后路径所指定的程序即是解释此脚本文件的Shell程序

运行bash脚本

  • 作为可执行程序
shell
chmod u+x ./test.sh // 添加运行权限
+import{_ as s,c as l,o as a,e as n}from"./app.2f6419f0.js";const h=JSON.parse('{"title":"Bash 基础语法","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"文件格式","slug":"文件格式","link":"#文件格式","children":[]},{"level":2,"title":"运行bash脚本","slug":"运行bash脚本","link":"#运行bash脚本","children":[]},{"level":2,"title":"变量","slug":"变量","link":"#变量","children":[{"level":3,"title":"定义变量","slug":"定义变量","link":"#定义变量","children":[]},{"level":3,"title":"使用变量","slug":"使用变量","link":"#使用变量","children":[]},{"level":3,"title":"定义只读变量","slug":"定义只读变量","link":"#定义只读变量","children":[]},{"level":3,"title":"删除变量","slug":"删除变量","link":"#删除变量","children":[]},{"level":3,"title":"变量类型","slug":"变量类型","link":"#变量类型","children":[]}]},{"level":2,"title":"字符串","slug":"字符串","link":"#字符串","children":[{"level":3,"title":"单引号字符串","slug":"单引号字符串","link":"#单引号字符串","children":[]},{"level":3,"title":"双引号字符串","slug":"双引号字符串","link":"#双引号字符串","children":[]},{"level":3,"title":"拼接字符串","slug":"拼接字符串","link":"#拼接字符串","children":[]},{"level":3,"title":"获取字符串长度","slug":"获取字符串长度","link":"#获取字符串长度","children":[]},{"level":3,"title":"提取子字符串","slug":"提取子字符串","link":"#提取子字符串","children":[]},{"level":3,"title":"查找子字符串","slug":"查找子字符串","link":"#查找子字符串","children":[]},{"level":3,"title":"提取字符串","slug":"提取字符串","link":"#提取字符串","children":[]}]},{"level":2,"title":"数组","slug":"数组","link":"#数组","children":[{"level":3,"title":"定义数组","slug":"定义数组","link":"#定义数组","children":[]},{"level":3,"title":"读取数组","slug":"读取数组","link":"#读取数组","children":[]}]},{"level":2,"title":"Shell传递参数","slug":"shell传递参数","link":"#shell传递参数","children":[]},{"level":2,"title":"Shell基本运算符","slug":"shell基本运算符","link":"#shell基本运算符","children":[{"level":3,"title":"算术运算符","slug":"算术运算符","link":"#算术运算符","children":[]},{"level":3,"title":"关系运算符","slug":"关系运算符","link":"#关系运算符","children":[]},{"level":3,"title":"布尔运算符","slug":"布尔运算符","link":"#布尔运算符","children":[]},{"level":3,"title":"逻辑运算符","slug":"逻辑运算符","link":"#逻辑运算符","children":[]},{"level":3,"title":"字符串运算符","slug":"字符串运算符","link":"#字符串运算符","children":[]},{"level":3,"title":"文件测试运算符","slug":"文件测试运算符","link":"#文件测试运算符","children":[]}]},{"level":2,"title":"echo命令","slug":"echo命令","link":"#echo命令","children":[{"level":3,"title":"显示普通字符串","slug":"显示普通字符串","link":"#显示普通字符串","children":[]},{"level":3,"title":"显示转义字符","slug":"显示转义字符","link":"#显示转义字符","children":[]},{"level":3,"title":"显示变量","slug":"显示变量","link":"#显示变量","children":[]},{"level":3,"title":"显示换行","slug":"显示换行","link":"#显示换行","children":[]},{"level":3,"title":"显示不换行","slug":"显示不换行","link":"#显示不换行","children":[]},{"level":3,"title":"显示结果定向至文件","slug":"显示结果定向至文件","link":"#显示结果定向至文件","children":[]},{"level":3,"title":"原样输出字符串,不进行转义或取变量(用单引号)","slug":"原样输出字符串-不进行转义或取变量-用单引号","link":"#原样输出字符串-不进行转义或取变量-用单引号","children":[]},{"level":3,"title":"显示命令执行结果","slug":"显示命令执行结果","link":"#显示命令执行结果","children":[]}]},{"level":2,"title":"流程控制","slug":"流程控制","link":"#流程控制","children":[{"level":3,"title":"if else","slug":"if-else","link":"#if-else","children":[]},{"level":3,"title":"for 循环","slug":"for-循环","link":"#for-循环","children":[]},{"level":3,"title":"while 语句","slug":"while-语句","link":"#while-语句","children":[]},{"level":3,"title":"until 循环","slug":"until-循环","link":"#until-循环","children":[]},{"level":3,"title":"case ... esac","slug":"case-esac","link":"#case-esac","children":[]}]},{"level":2,"title":"函数","slug":"函数","link":"#函数","children":[{"level":3,"title":"定义函数","slug":"定义函数","link":"#定义函数","children":[]},{"level":3,"title":"函数参数","slug":"函数参数","link":"#函数参数","children":[]}]},{"level":2,"title":"输入/输出重定向","slug":"输入-输出重定向","link":"#输入-输出重定向","children":[{"level":3,"title":"/dev/null 文件","slug":"dev-null-文件","link":"#dev-null-文件","children":[]}]}],"relativePath":"knowledge-deposition/Linux/Bash基础知识.md"}'),e={name:"knowledge-deposition/Linux/Bash基础知识.md"},t=n(`

Bash 基础语法

文件格式

文件第一行#!/bin/bash或者#!/bin/sh#!告诉系统其后路径所指定的程序即是解释此脚本文件的Shell程序

运行bash脚本

  • 作为可执行程序
shell
chmod u+x ./test.sh // 添加运行权限
 ./test.sh // 运行脚本
 
  • 作为解释器参数
shell
/bin/sh test.sh
 /bin/Bash test.sh
diff --git "a/assets/knowledge-deposition_Linux_Bash\345\237\272\347\241\200\347\237\245\350\257\206.md.444e58f9.lean.js" "b/assets/knowledge-deposition_Linux_Bash\345\237\272\347\241\200\347\237\245\350\257\206.md.0a588998.lean.js"
similarity index 98%
rename from "assets/knowledge-deposition_Linux_Bash\345\237\272\347\241\200\347\237\245\350\257\206.md.444e58f9.lean.js"
rename to "assets/knowledge-deposition_Linux_Bash\345\237\272\347\241\200\347\237\245\350\257\206.md.0a588998.lean.js"
index 1550d9d4..64760f8b 100644
--- "a/assets/knowledge-deposition_Linux_Bash\345\237\272\347\241\200\347\237\245\350\257\206.md.444e58f9.lean.js"
+++ "b/assets/knowledge-deposition_Linux_Bash\345\237\272\347\241\200\347\237\245\350\257\206.md.0a588998.lean.js"
@@ -1 +1 @@
-import{_ as s,c as l,o as a,e as n}from"./app.fa87702c.js";const h=JSON.parse('{"title":"Bash 基础语法","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"文件格式","slug":"文件格式","link":"#文件格式","children":[]},{"level":2,"title":"运行bash脚本","slug":"运行bash脚本","link":"#运行bash脚本","children":[]},{"level":2,"title":"变量","slug":"变量","link":"#变量","children":[{"level":3,"title":"定义变量","slug":"定义变量","link":"#定义变量","children":[]},{"level":3,"title":"使用变量","slug":"使用变量","link":"#使用变量","children":[]},{"level":3,"title":"定义只读变量","slug":"定义只读变量","link":"#定义只读变量","children":[]},{"level":3,"title":"删除变量","slug":"删除变量","link":"#删除变量","children":[]},{"level":3,"title":"变量类型","slug":"变量类型","link":"#变量类型","children":[]}]},{"level":2,"title":"字符串","slug":"字符串","link":"#字符串","children":[{"level":3,"title":"单引号字符串","slug":"单引号字符串","link":"#单引号字符串","children":[]},{"level":3,"title":"双引号字符串","slug":"双引号字符串","link":"#双引号字符串","children":[]},{"level":3,"title":"拼接字符串","slug":"拼接字符串","link":"#拼接字符串","children":[]},{"level":3,"title":"获取字符串长度","slug":"获取字符串长度","link":"#获取字符串长度","children":[]},{"level":3,"title":"提取子字符串","slug":"提取子字符串","link":"#提取子字符串","children":[]},{"level":3,"title":"查找子字符串","slug":"查找子字符串","link":"#查找子字符串","children":[]},{"level":3,"title":"提取字符串","slug":"提取字符串","link":"#提取字符串","children":[]}]},{"level":2,"title":"数组","slug":"数组","link":"#数组","children":[{"level":3,"title":"定义数组","slug":"定义数组","link":"#定义数组","children":[]},{"level":3,"title":"读取数组","slug":"读取数组","link":"#读取数组","children":[]}]},{"level":2,"title":"Shell传递参数","slug":"shell传递参数","link":"#shell传递参数","children":[]},{"level":2,"title":"Shell基本运算符","slug":"shell基本运算符","link":"#shell基本运算符","children":[{"level":3,"title":"算术运算符","slug":"算术运算符","link":"#算术运算符","children":[]},{"level":3,"title":"关系运算符","slug":"关系运算符","link":"#关系运算符","children":[]},{"level":3,"title":"布尔运算符","slug":"布尔运算符","link":"#布尔运算符","children":[]},{"level":3,"title":"逻辑运算符","slug":"逻辑运算符","link":"#逻辑运算符","children":[]},{"level":3,"title":"字符串运算符","slug":"字符串运算符","link":"#字符串运算符","children":[]},{"level":3,"title":"文件测试运算符","slug":"文件测试运算符","link":"#文件测试运算符","children":[]}]},{"level":2,"title":"echo命令","slug":"echo命令","link":"#echo命令","children":[{"level":3,"title":"显示普通字符串","slug":"显示普通字符串","link":"#显示普通字符串","children":[]},{"level":3,"title":"显示转义字符","slug":"显示转义字符","link":"#显示转义字符","children":[]},{"level":3,"title":"显示变量","slug":"显示变量","link":"#显示变量","children":[]},{"level":3,"title":"显示换行","slug":"显示换行","link":"#显示换行","children":[]},{"level":3,"title":"显示不换行","slug":"显示不换行","link":"#显示不换行","children":[]},{"level":3,"title":"显示结果定向至文件","slug":"显示结果定向至文件","link":"#显示结果定向至文件","children":[]},{"level":3,"title":"原样输出字符串,不进行转义或取变量(用单引号)","slug":"原样输出字符串-不进行转义或取变量-用单引号","link":"#原样输出字符串-不进行转义或取变量-用单引号","children":[]},{"level":3,"title":"显示命令执行结果","slug":"显示命令执行结果","link":"#显示命令执行结果","children":[]}]},{"level":2,"title":"流程控制","slug":"流程控制","link":"#流程控制","children":[{"level":3,"title":"if else","slug":"if-else","link":"#if-else","children":[]},{"level":3,"title":"for 循环","slug":"for-循环","link":"#for-循环","children":[]},{"level":3,"title":"while 语句","slug":"while-语句","link":"#while-语句","children":[]},{"level":3,"title":"until 循环","slug":"until-循环","link":"#until-循环","children":[]},{"level":3,"title":"case ... esac","slug":"case-esac","link":"#case-esac","children":[]}]},{"level":2,"title":"函数","slug":"函数","link":"#函数","children":[{"level":3,"title":"定义函数","slug":"定义函数","link":"#定义函数","children":[]},{"level":3,"title":"函数参数","slug":"函数参数","link":"#函数参数","children":[]}]},{"level":2,"title":"输入/输出重定向","slug":"输入-输出重定向","link":"#输入-输出重定向","children":[{"level":3,"title":"/dev/null 文件","slug":"dev-null-文件","link":"#dev-null-文件","children":[]}]}],"relativePath":"knowledge-deposition/Linux/Bash基础知识.md"}'),e={name:"knowledge-deposition/Linux/Bash基础知识.md"},t=n("",161),o=[t];function p(c,r,i,d,y,D){return a(),l("div",null,o)}const F=s(e,[["render",p]]);export{h as __pageData,F as default};
+import{_ as s,c as l,o as a,e as n}from"./app.2f6419f0.js";const h=JSON.parse('{"title":"Bash 基础语法","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"文件格式","slug":"文件格式","link":"#文件格式","children":[]},{"level":2,"title":"运行bash脚本","slug":"运行bash脚本","link":"#运行bash脚本","children":[]},{"level":2,"title":"变量","slug":"变量","link":"#变量","children":[{"level":3,"title":"定义变量","slug":"定义变量","link":"#定义变量","children":[]},{"level":3,"title":"使用变量","slug":"使用变量","link":"#使用变量","children":[]},{"level":3,"title":"定义只读变量","slug":"定义只读变量","link":"#定义只读变量","children":[]},{"level":3,"title":"删除变量","slug":"删除变量","link":"#删除变量","children":[]},{"level":3,"title":"变量类型","slug":"变量类型","link":"#变量类型","children":[]}]},{"level":2,"title":"字符串","slug":"字符串","link":"#字符串","children":[{"level":3,"title":"单引号字符串","slug":"单引号字符串","link":"#单引号字符串","children":[]},{"level":3,"title":"双引号字符串","slug":"双引号字符串","link":"#双引号字符串","children":[]},{"level":3,"title":"拼接字符串","slug":"拼接字符串","link":"#拼接字符串","children":[]},{"level":3,"title":"获取字符串长度","slug":"获取字符串长度","link":"#获取字符串长度","children":[]},{"level":3,"title":"提取子字符串","slug":"提取子字符串","link":"#提取子字符串","children":[]},{"level":3,"title":"查找子字符串","slug":"查找子字符串","link":"#查找子字符串","children":[]},{"level":3,"title":"提取字符串","slug":"提取字符串","link":"#提取字符串","children":[]}]},{"level":2,"title":"数组","slug":"数组","link":"#数组","children":[{"level":3,"title":"定义数组","slug":"定义数组","link":"#定义数组","children":[]},{"level":3,"title":"读取数组","slug":"读取数组","link":"#读取数组","children":[]}]},{"level":2,"title":"Shell传递参数","slug":"shell传递参数","link":"#shell传递参数","children":[]},{"level":2,"title":"Shell基本运算符","slug":"shell基本运算符","link":"#shell基本运算符","children":[{"level":3,"title":"算术运算符","slug":"算术运算符","link":"#算术运算符","children":[]},{"level":3,"title":"关系运算符","slug":"关系运算符","link":"#关系运算符","children":[]},{"level":3,"title":"布尔运算符","slug":"布尔运算符","link":"#布尔运算符","children":[]},{"level":3,"title":"逻辑运算符","slug":"逻辑运算符","link":"#逻辑运算符","children":[]},{"level":3,"title":"字符串运算符","slug":"字符串运算符","link":"#字符串运算符","children":[]},{"level":3,"title":"文件测试运算符","slug":"文件测试运算符","link":"#文件测试运算符","children":[]}]},{"level":2,"title":"echo命令","slug":"echo命令","link":"#echo命令","children":[{"level":3,"title":"显示普通字符串","slug":"显示普通字符串","link":"#显示普通字符串","children":[]},{"level":3,"title":"显示转义字符","slug":"显示转义字符","link":"#显示转义字符","children":[]},{"level":3,"title":"显示变量","slug":"显示变量","link":"#显示变量","children":[]},{"level":3,"title":"显示换行","slug":"显示换行","link":"#显示换行","children":[]},{"level":3,"title":"显示不换行","slug":"显示不换行","link":"#显示不换行","children":[]},{"level":3,"title":"显示结果定向至文件","slug":"显示结果定向至文件","link":"#显示结果定向至文件","children":[]},{"level":3,"title":"原样输出字符串,不进行转义或取变量(用单引号)","slug":"原样输出字符串-不进行转义或取变量-用单引号","link":"#原样输出字符串-不进行转义或取变量-用单引号","children":[]},{"level":3,"title":"显示命令执行结果","slug":"显示命令执行结果","link":"#显示命令执行结果","children":[]}]},{"level":2,"title":"流程控制","slug":"流程控制","link":"#流程控制","children":[{"level":3,"title":"if else","slug":"if-else","link":"#if-else","children":[]},{"level":3,"title":"for 循环","slug":"for-循环","link":"#for-循环","children":[]},{"level":3,"title":"while 语句","slug":"while-语句","link":"#while-语句","children":[]},{"level":3,"title":"until 循环","slug":"until-循环","link":"#until-循环","children":[]},{"level":3,"title":"case ... esac","slug":"case-esac","link":"#case-esac","children":[]}]},{"level":2,"title":"函数","slug":"函数","link":"#函数","children":[{"level":3,"title":"定义函数","slug":"定义函数","link":"#定义函数","children":[]},{"level":3,"title":"函数参数","slug":"函数参数","link":"#函数参数","children":[]}]},{"level":2,"title":"输入/输出重定向","slug":"输入-输出重定向","link":"#输入-输出重定向","children":[{"level":3,"title":"/dev/null 文件","slug":"dev-null-文件","link":"#dev-null-文件","children":[]}]}],"relativePath":"knowledge-deposition/Linux/Bash基础知识.md"}'),e={name:"knowledge-deposition/Linux/Bash基础知识.md"},t=n("",161),o=[t];function p(c,r,i,d,y,D){return a(),l("div",null,o)}const F=s(e,[["render",p]]);export{h as __pageData,F as default};
diff --git a/assets/knowledge-deposition_MySQL_SQL.md.48b07ca8.js b/assets/knowledge-deposition_MySQL_SQL.md.1b590eb9.js
similarity index 98%
rename from assets/knowledge-deposition_MySQL_SQL.md.48b07ca8.js
rename to assets/knowledge-deposition_MySQL_SQL.md.1b590eb9.js
index 536a4922..81c07ebf 100644
--- a/assets/knowledge-deposition_MySQL_SQL.md.48b07ca8.js
+++ b/assets/knowledge-deposition_MySQL_SQL.md.1b590eb9.js
@@ -1 +1 @@
-import{_ as t,c as e,o as d,e as l}from"./app.fa87702c.js";const _=JSON.parse('{"title":"SQL","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"SQL运算符","slug":"sql运算符","link":"#sql运算符","children":[{"level":3,"title":"算术运算符","slug":"算术运算符","link":"#算术运算符","children":[]},{"level":3,"title":"逻辑运算符","slug":"逻辑运算符","link":"#逻辑运算符","children":[]},{"level":3,"title":"比较运算符","slug":"比较运算符","link":"#比较运算符","children":[]}]}],"relativePath":"knowledge-deposition/MySQL/SQL.md"}'),r={name:"knowledge-deposition/MySQL/SQL.md"},n=l('

SQL

  • SQLStructured Query Language结构化查询语言

SQL运算符

  • SQL运算符是一种符号,它是用来进行列间或者变量之间的比较数学运算的

算术运算符

运算符说明
+加运算,求两个数或表达式相加的和,如1+1
-减运算,求两个数或表达式相减的差,如4-1
*乘运算,求两个数或表达式相乘的积,如2*2
/除运算,求两个数或表达式相除的商,如6/4的值为1
%取模运算,求两个数或表达式相除的余数,如:6%4的值为2

逻辑运算符

运算符说明
AND当且仅当两个布尔表达式都为true时,返回TRUE
OR当且仅当两个布尔表达式都为false,返回FALSE
NOT布尔表达式的值取反

比较运算符

运算符说明
=等于
>大于
<小于
<>不等于
>=大于等于
<=小于等于
!=不等于
',10),a=[n];function c(i,s,o,h,g,y){return d(),e("div",null,a)}const u=t(r,[["render",c]]);export{_ as __pageData,u as default}; +import{_ as t,c as e,o as d,e as l}from"./app.2f6419f0.js";const _=JSON.parse('{"title":"SQL","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"SQL运算符","slug":"sql运算符","link":"#sql运算符","children":[{"level":3,"title":"算术运算符","slug":"算术运算符","link":"#算术运算符","children":[]},{"level":3,"title":"逻辑运算符","slug":"逻辑运算符","link":"#逻辑运算符","children":[]},{"level":3,"title":"比较运算符","slug":"比较运算符","link":"#比较运算符","children":[]}]}],"relativePath":"knowledge-deposition/MySQL/SQL.md"}'),r={name:"knowledge-deposition/MySQL/SQL.md"},n=l('

SQL

  • SQLStructured Query Language结构化查询语言

SQL运算符

  • SQL运算符是一种符号,它是用来进行列间或者变量之间的比较数学运算的

算术运算符

运算符说明
+加运算,求两个数或表达式相加的和,如1+1
-减运算,求两个数或表达式相减的差,如4-1
*乘运算,求两个数或表达式相乘的积,如2*2
/除运算,求两个数或表达式相除的商,如6/4的值为1
%取模运算,求两个数或表达式相除的余数,如:6%4的值为2

逻辑运算符

运算符说明
AND当且仅当两个布尔表达式都为true时,返回TRUE
OR当且仅当两个布尔表达式都为false,返回FALSE
NOT布尔表达式的值取反

比较运算符

运算符说明
=等于
>大于
<小于
<>不等于
>=大于等于
<=小于等于
!=不等于
',10),a=[n];function c(i,s,o,h,g,y){return d(),e("div",null,a)}const u=t(r,[["render",c]]);export{_ as __pageData,u as default}; diff --git a/assets/knowledge-deposition_MySQL_SQL.md.48b07ca8.lean.js b/assets/knowledge-deposition_MySQL_SQL.md.1b590eb9.lean.js similarity index 91% rename from assets/knowledge-deposition_MySQL_SQL.md.48b07ca8.lean.js rename to assets/knowledge-deposition_MySQL_SQL.md.1b590eb9.lean.js index 292f09ca..3adb76ab 100644 --- a/assets/knowledge-deposition_MySQL_SQL.md.48b07ca8.lean.js +++ b/assets/knowledge-deposition_MySQL_SQL.md.1b590eb9.lean.js @@ -1 +1 @@ -import{_ as t,c as e,o as d,e as l}from"./app.fa87702c.js";const _=JSON.parse('{"title":"SQL","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"SQL运算符","slug":"sql运算符","link":"#sql运算符","children":[{"level":3,"title":"算术运算符","slug":"算术运算符","link":"#算术运算符","children":[]},{"level":3,"title":"逻辑运算符","slug":"逻辑运算符","link":"#逻辑运算符","children":[]},{"level":3,"title":"比较运算符","slug":"比较运算符","link":"#比较运算符","children":[]}]}],"relativePath":"knowledge-deposition/MySQL/SQL.md"}'),r={name:"knowledge-deposition/MySQL/SQL.md"},n=l("",10),a=[n];function c(i,s,o,h,g,y){return d(),e("div",null,a)}const u=t(r,[["render",c]]);export{_ as __pageData,u as default}; +import{_ as t,c as e,o as d,e as l}from"./app.2f6419f0.js";const _=JSON.parse('{"title":"SQL","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"SQL运算符","slug":"sql运算符","link":"#sql运算符","children":[{"level":3,"title":"算术运算符","slug":"算术运算符","link":"#算术运算符","children":[]},{"level":3,"title":"逻辑运算符","slug":"逻辑运算符","link":"#逻辑运算符","children":[]},{"level":3,"title":"比较运算符","slug":"比较运算符","link":"#比较运算符","children":[]}]}],"relativePath":"knowledge-deposition/MySQL/SQL.md"}'),r={name:"knowledge-deposition/MySQL/SQL.md"},n=l("",10),a=[n];function c(i,s,o,h,g,y){return d(),e("div",null,a)}const u=t(r,[["render",c]]);export{_ as __pageData,u as default}; diff --git "a/assets/knowledge-deposition_MySQL_\345\207\275\346\225\260.md.34ff0162.js" "b/assets/knowledge-deposition_MySQL_\345\207\275\346\225\260.md.0e6456c4.js" similarity index 99% rename from "assets/knowledge-deposition_MySQL_\345\207\275\346\225\260.md.34ff0162.js" rename to "assets/knowledge-deposition_MySQL_\345\207\275\346\225\260.md.0e6456c4.js" index df969f40..90dc08b0 100644 --- "a/assets/knowledge-deposition_MySQL_\345\207\275\346\225\260.md.34ff0162.js" +++ "b/assets/knowledge-deposition_MySQL_\345\207\275\346\225\260.md.0e6456c4.js" @@ -1,4 +1,4 @@ -import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const F=JSON.parse('{"title":"函数","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":3,"title":"字符函数","slug":"字符函数","link":"#字符函数","children":[]},{"level":3,"title":"数学函数","slug":"数学函数","link":"#数学函数","children":[]},{"level":3,"title":"日期函数","slug":"日期函数","link":"#日期函数","children":[]},{"level":2,"title":"聚合函数","slug":"聚合函数","link":"#聚合函数","children":[{"level":3,"title":"SUM","slug":"sum","link":"#sum","children":[]},{"level":3,"title":"AVG","slug":"avg","link":"#avg","children":[]},{"level":3,"title":"COUNT","slug":"count","link":"#count","children":[]},{"level":3,"title":"MAX","slug":"max","link":"#max","children":[]},{"level":3,"title":"MIN","slug":"min","link":"#min","children":[]}]},{"level":2,"title":"自定义函数","slug":"自定义函数","link":"#自定义函数","children":[{"level":3,"title":"创建自定义函数","slug":"创建自定义函数","link":"#创建自定义函数","children":[]},{"level":3,"title":"使用自定义函数","slug":"使用自定义函数","link":"#使用自定义函数","children":[]},{"level":3,"title":"查看自定义函数","slug":"查看自定义函数","link":"#查看自定义函数","children":[]},{"level":3,"title":"删除自定义函数","slug":"删除自定义函数","link":"#删除自定义函数","children":[]},{"level":3,"title":"示例","slug":"示例","link":"#示例","children":[]}]}],"relativePath":"knowledge-deposition/MySQL/函数.md"}'),p={name:"knowledge-deposition/MySQL/函数.md"},o=l(`

函数

字符函数


CONCAT拼接字符串

SQL
SELECT CONCAT(name, '-', age) FROM student WHERE age = '18';
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const F=JSON.parse('{"title":"函数","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":3,"title":"字符函数","slug":"字符函数","link":"#字符函数","children":[]},{"level":3,"title":"数学函数","slug":"数学函数","link":"#数学函数","children":[]},{"level":3,"title":"日期函数","slug":"日期函数","link":"#日期函数","children":[]},{"level":2,"title":"聚合函数","slug":"聚合函数","link":"#聚合函数","children":[{"level":3,"title":"SUM","slug":"sum","link":"#sum","children":[]},{"level":3,"title":"AVG","slug":"avg","link":"#avg","children":[]},{"level":3,"title":"COUNT","slug":"count","link":"#count","children":[]},{"level":3,"title":"MAX","slug":"max","link":"#max","children":[]},{"level":3,"title":"MIN","slug":"min","link":"#min","children":[]}]},{"level":2,"title":"自定义函数","slug":"自定义函数","link":"#自定义函数","children":[{"level":3,"title":"创建自定义函数","slug":"创建自定义函数","link":"#创建自定义函数","children":[]},{"level":3,"title":"使用自定义函数","slug":"使用自定义函数","link":"#使用自定义函数","children":[]},{"level":3,"title":"查看自定义函数","slug":"查看自定义函数","link":"#查看自定义函数","children":[]},{"level":3,"title":"删除自定义函数","slug":"删除自定义函数","link":"#删除自定义函数","children":[]},{"level":3,"title":"示例","slug":"示例","link":"#示例","children":[]}]}],"relativePath":"knowledge-deposition/MySQL/函数.md"}'),p={name:"knowledge-deposition/MySQL/函数.md"},o=l(`

函数

字符函数


CONCAT拼接字符串

SQL
SELECT CONCAT(name, '-', age) FROM student WHERE age = '18';
 
 /** 结果如下:
 如燕-18
diff --git "a/assets/knowledge-deposition_MySQL_\345\207\275\346\225\260.md.34ff0162.lean.js" "b/assets/knowledge-deposition_MySQL_\345\207\275\346\225\260.md.0e6456c4.lean.js"
similarity index 96%
rename from "assets/knowledge-deposition_MySQL_\345\207\275\346\225\260.md.34ff0162.lean.js"
rename to "assets/knowledge-deposition_MySQL_\345\207\275\346\225\260.md.0e6456c4.lean.js"
index 2ba68280..9631ff34 100644
--- "a/assets/knowledge-deposition_MySQL_\345\207\275\346\225\260.md.34ff0162.lean.js"
+++ "b/assets/knowledge-deposition_MySQL_\345\207\275\346\225\260.md.0e6456c4.lean.js"
@@ -1 +1 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const F=JSON.parse('{"title":"函数","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":3,"title":"字符函数","slug":"字符函数","link":"#字符函数","children":[]},{"level":3,"title":"数学函数","slug":"数学函数","link":"#数学函数","children":[]},{"level":3,"title":"日期函数","slug":"日期函数","link":"#日期函数","children":[]},{"level":2,"title":"聚合函数","slug":"聚合函数","link":"#聚合函数","children":[{"level":3,"title":"SUM","slug":"sum","link":"#sum","children":[]},{"level":3,"title":"AVG","slug":"avg","link":"#avg","children":[]},{"level":3,"title":"COUNT","slug":"count","link":"#count","children":[]},{"level":3,"title":"MAX","slug":"max","link":"#max","children":[]},{"level":3,"title":"MIN","slug":"min","link":"#min","children":[]}]},{"level":2,"title":"自定义函数","slug":"自定义函数","link":"#自定义函数","children":[{"level":3,"title":"创建自定义函数","slug":"创建自定义函数","link":"#创建自定义函数","children":[]},{"level":3,"title":"使用自定义函数","slug":"使用自定义函数","link":"#使用自定义函数","children":[]},{"level":3,"title":"查看自定义函数","slug":"查看自定义函数","link":"#查看自定义函数","children":[]},{"level":3,"title":"删除自定义函数","slug":"删除自定义函数","link":"#删除自定义函数","children":[]},{"level":3,"title":"示例","slug":"示例","link":"#示例","children":[]}]}],"relativePath":"knowledge-deposition/MySQL/函数.md"}'),p={name:"knowledge-deposition/MySQL/函数.md"},o=l("",117),e=[o];function t(c,C,r,y,A,D){return n(),a("div",null,e)}const d=s(p,[["render",t]]);export{F as __pageData,d as default};
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const F=JSON.parse('{"title":"函数","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":3,"title":"字符函数","slug":"字符函数","link":"#字符函数","children":[]},{"level":3,"title":"数学函数","slug":"数学函数","link":"#数学函数","children":[]},{"level":3,"title":"日期函数","slug":"日期函数","link":"#日期函数","children":[]},{"level":2,"title":"聚合函数","slug":"聚合函数","link":"#聚合函数","children":[{"level":3,"title":"SUM","slug":"sum","link":"#sum","children":[]},{"level":3,"title":"AVG","slug":"avg","link":"#avg","children":[]},{"level":3,"title":"COUNT","slug":"count","link":"#count","children":[]},{"level":3,"title":"MAX","slug":"max","link":"#max","children":[]},{"level":3,"title":"MIN","slug":"min","link":"#min","children":[]}]},{"level":2,"title":"自定义函数","slug":"自定义函数","link":"#自定义函数","children":[{"level":3,"title":"创建自定义函数","slug":"创建自定义函数","link":"#创建自定义函数","children":[]},{"level":3,"title":"使用自定义函数","slug":"使用自定义函数","link":"#使用自定义函数","children":[]},{"level":3,"title":"查看自定义函数","slug":"查看自定义函数","link":"#查看自定义函数","children":[]},{"level":3,"title":"删除自定义函数","slug":"删除自定义函数","link":"#删除自定义函数","children":[]},{"level":3,"title":"示例","slug":"示例","link":"#示例","children":[]}]}],"relativePath":"knowledge-deposition/MySQL/函数.md"}'),p={name:"knowledge-deposition/MySQL/函数.md"},o=l("",117),e=[o];function t(c,C,r,y,A,D){return n(),a("div",null,e)}const d=s(p,[["render",t]]);export{F as __pageData,d as default};
diff --git "a/assets/knowledge-deposition_MySQL_\345\210\206\347\273\204\345\222\214\345\255\220\346\237\245\350\257\242.md.33b9d805.js" "b/assets/knowledge-deposition_MySQL_\345\210\206\347\273\204\345\222\214\345\255\220\346\237\245\350\257\242.md.1bb5de08.js"
similarity index 99%
rename from "assets/knowledge-deposition_MySQL_\345\210\206\347\273\204\345\222\214\345\255\220\346\237\245\350\257\242.md.33b9d805.js"
rename to "assets/knowledge-deposition_MySQL_\345\210\206\347\273\204\345\222\214\345\255\220\346\237\245\350\257\242.md.1bb5de08.js"
index 3b0551bc..038e4e70 100644
--- "a/assets/knowledge-deposition_MySQL_\345\210\206\347\273\204\345\222\214\345\255\220\346\237\245\350\257\242.md.33b9d805.js"
+++ "b/assets/knowledge-deposition_MySQL_\345\210\206\347\273\204\345\222\214\345\255\220\346\237\245\350\257\242.md.1bb5de08.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const d=JSON.parse('{"title":"分组和子查询","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"分组","slug":"分组","link":"#分组","children":[{"level":3,"title":"单列分组","slug":"单列分组","link":"#单列分组","children":[]},{"level":3,"title":"多列分组","slug":"多列分组","link":"#多列分组","children":[]},{"level":3,"title":"分组筛选","slug":"分组筛选","link":"#分组筛选","children":[]}]},{"level":2,"title":"子查询","slug":"子查询","link":"#子查询","children":[{"level":3,"title":"子查询比较运算符","slug":"子查询比较运算符","link":"#子查询比较运算符","children":[]},{"level":3,"title":"ANY、SOME、ALL","slug":"any、some、all","link":"#any、some、all","children":[]}]}],"relativePath":"knowledge-deposition/MySQL/分组和子查询.md"}'),e={name:"knowledge-deposition/MySQL/分组和子查询.md"},p=l(`

分组和子查询

分组

分组语法如下:

SQL
SELECT 列名,查询表达式
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const d=JSON.parse('{"title":"分组和子查询","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"分组","slug":"分组","link":"#分组","children":[{"level":3,"title":"单列分组","slug":"单列分组","link":"#单列分组","children":[]},{"level":3,"title":"多列分组","slug":"多列分组","link":"#多列分组","children":[]},{"level":3,"title":"分组筛选","slug":"分组筛选","link":"#分组筛选","children":[]}]},{"level":2,"title":"子查询","slug":"子查询","link":"#子查询","children":[{"level":3,"title":"子查询比较运算符","slug":"子查询比较运算符","link":"#子查询比较运算符","children":[]},{"level":3,"title":"ANY、SOME、ALL","slug":"any、some、all","link":"#any、some、all","children":[]}]}],"relativePath":"knowledge-deposition/MySQL/分组和子查询.md"}'),e={name:"knowledge-deposition/MySQL/分组和子查询.md"},p=l(`

分组和子查询

分组

分组语法如下:

SQL
SELECT 列名,查询表达式
 FROM  <表名>  
 WHERE  <条件>
 GROUP BY <分组字段>
diff --git "a/assets/knowledge-deposition_MySQL_\345\210\206\347\273\204\345\222\214\345\255\220\346\237\245\350\257\242.md.33b9d805.lean.js" "b/assets/knowledge-deposition_MySQL_\345\210\206\347\273\204\345\222\214\345\255\220\346\237\245\350\257\242.md.1bb5de08.lean.js"
similarity index 94%
rename from "assets/knowledge-deposition_MySQL_\345\210\206\347\273\204\345\222\214\345\255\220\346\237\245\350\257\242.md.33b9d805.lean.js"
rename to "assets/knowledge-deposition_MySQL_\345\210\206\347\273\204\345\222\214\345\255\220\346\237\245\350\257\242.md.1bb5de08.lean.js"
index b354dd7e..6b31ec4d 100644
--- "a/assets/knowledge-deposition_MySQL_\345\210\206\347\273\204\345\222\214\345\255\220\346\237\245\350\257\242.md.33b9d805.lean.js"
+++ "b/assets/knowledge-deposition_MySQL_\345\210\206\347\273\204\345\222\214\345\255\220\346\237\245\350\257\242.md.1bb5de08.lean.js"
@@ -1 +1 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const d=JSON.parse('{"title":"分组和子查询","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"分组","slug":"分组","link":"#分组","children":[{"level":3,"title":"单列分组","slug":"单列分组","link":"#单列分组","children":[]},{"level":3,"title":"多列分组","slug":"多列分组","link":"#多列分组","children":[]},{"level":3,"title":"分组筛选","slug":"分组筛选","link":"#分组筛选","children":[]}]},{"level":2,"title":"子查询","slug":"子查询","link":"#子查询","children":[{"level":3,"title":"子查询比较运算符","slug":"子查询比较运算符","link":"#子查询比较运算符","children":[]},{"level":3,"title":"ANY、SOME、ALL","slug":"any、some、all","link":"#any、some、all","children":[]}]}],"relativePath":"knowledge-deposition/MySQL/分组和子查询.md"}'),e={name:"knowledge-deposition/MySQL/分组和子查询.md"},p=l("",34),o=[p];function t(c,C,r,y,A,i){return n(),a("div",null,o)}const F=s(e,[["render",t]]);export{d as __pageData,F as default};
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const d=JSON.parse('{"title":"分组和子查询","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"分组","slug":"分组","link":"#分组","children":[{"level":3,"title":"单列分组","slug":"单列分组","link":"#单列分组","children":[]},{"level":3,"title":"多列分组","slug":"多列分组","link":"#多列分组","children":[]},{"level":3,"title":"分组筛选","slug":"分组筛选","link":"#分组筛选","children":[]}]},{"level":2,"title":"子查询","slug":"子查询","link":"#子查询","children":[{"level":3,"title":"子查询比较运算符","slug":"子查询比较运算符","link":"#子查询比较运算符","children":[]},{"level":3,"title":"ANY、SOME、ALL","slug":"any、some、all","link":"#any、some、all","children":[]}]}],"relativePath":"knowledge-deposition/MySQL/分组和子查询.md"}'),e={name:"knowledge-deposition/MySQL/分组和子查询.md"},p=l("",34),o=[p];function t(c,C,r,y,A,i){return n(),a("div",null,o)}const F=s(e,[["render",t]]);export{d as __pageData,F as default};
diff --git "a/assets/knowledge-deposition_MySQL_\345\237\272\347\241\200\347\237\245\350\257\206.md.3c73c315.js" "b/assets/knowledge-deposition_MySQL_\345\237\272\347\241\200\347\237\245\350\257\206.md.e3b8992a.js"
similarity index 99%
rename from "assets/knowledge-deposition_MySQL_\345\237\272\347\241\200\347\237\245\350\257\206.md.3c73c315.js"
rename to "assets/knowledge-deposition_MySQL_\345\237\272\347\241\200\347\237\245\350\257\206.md.e3b8992a.js"
index 13d93b32..20a0b101 100644
--- "a/assets/knowledge-deposition_MySQL_\345\237\272\347\241\200\347\237\245\350\257\206.md.3c73c315.js"
+++ "b/assets/knowledge-deposition_MySQL_\345\237\272\347\241\200\347\237\245\350\257\206.md.e3b8992a.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const D=JSON.parse('{"title":"基础知识","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"数据库的功能","slug":"数据库的功能","link":"#数据库的功能","children":[]},{"level":2,"title":"数据库的概念","slug":"数据库的概念","link":"#数据库的概念","children":[{"level":3,"title":"数据库(DB)","slug":"数据库-db","link":"#数据库-db","children":[]},{"level":3,"title":"数据库管理系统(DBMS)","slug":"数据库管理系统-dbms","link":"#数据库管理系统-dbms","children":[]},{"level":3,"title":"SQL","slug":"sql","link":"#sql","children":[]},{"level":3,"title":"SQL规范","slug":"sql规范","link":"#sql规范","children":[]}]},{"level":2,"title":"MySQL","slug":"mysql","link":"#mysql","children":[{"level":3,"title":"连接MySQL","slug":"连接mysql","link":"#连接mysql","children":[]},{"level":3,"title":"切换数据库","slug":"切换数据库","link":"#切换数据库","children":[]},{"level":3,"title":"显示有哪些表","slug":"显示有哪些表","link":"#显示有哪些表","children":[]},{"level":3,"title":"显示当前数据库","slug":"显示当前数据库","link":"#显示当前数据库","children":[]},{"level":3,"title":"显示当前数据库版本","slug":"显示当前数据库版本","link":"#显示当前数据库版本","children":[]},{"level":3,"title":"显示当前登录用户","slug":"显示当前登录用户","link":"#显示当前登录用户","children":[]},{"level":3,"title":"查看表结构","slug":"查看表结构","link":"#查看表结构","children":[]},{"level":3,"title":"查看创建表和增加列的具体语句","slug":"查看创建表和增加列的具体语句","link":"#查看创建表和增加列的具体语句","children":[]},{"level":3,"title":"数据操作","slug":"数据操作","link":"#数据操作","children":[]}]}],"relativePath":"knowledge-deposition/MySQL/基础知识.md"}'),p={name:"knowledge-deposition/MySQL/基础知识.md"},e=l(`

基础知识

数据库的功能

  • 存储大量数据,方便检索和访问

  • 保持数据信息的一致、完整

  • 共享和安全

  • 通过组合分析,产生新的有用信息

数据库的概念

数据库(DB)

  • 数据的仓库,可以存放结构化的数据

数据库管理系统(DBMS)

  • 一种系统软件,提供操作数据库的环境,可以通过数据库管理系统对数据进行插入修改删除查询等操作。

SQL

  • 结构化查询语言,专门用来和数据库进行交流的语言,几乎所有的DBMS都支持SQL

SQL规范

  • SQL语句不区分大小写,建议SQL关键字大写表名列表小写

  • 命令用分号结尾

  • 命令可以缩进和换行,一种类型的关键字放在一行

  • 可以写单行多行注释 , #--单行注释/***/多行注释

MySQL

连接MySQL

  • 通过命令行连接
shell
mysql -h 127.0.0.1 -P 3306 -uroot -p123456
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const D=JSON.parse('{"title":"基础知识","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"数据库的功能","slug":"数据库的功能","link":"#数据库的功能","children":[]},{"level":2,"title":"数据库的概念","slug":"数据库的概念","link":"#数据库的概念","children":[{"level":3,"title":"数据库(DB)","slug":"数据库-db","link":"#数据库-db","children":[]},{"level":3,"title":"数据库管理系统(DBMS)","slug":"数据库管理系统-dbms","link":"#数据库管理系统-dbms","children":[]},{"level":3,"title":"SQL","slug":"sql","link":"#sql","children":[]},{"level":3,"title":"SQL规范","slug":"sql规范","link":"#sql规范","children":[]}]},{"level":2,"title":"MySQL","slug":"mysql","link":"#mysql","children":[{"level":3,"title":"连接MySQL","slug":"连接mysql","link":"#连接mysql","children":[]},{"level":3,"title":"切换数据库","slug":"切换数据库","link":"#切换数据库","children":[]},{"level":3,"title":"显示有哪些表","slug":"显示有哪些表","link":"#显示有哪些表","children":[]},{"level":3,"title":"显示当前数据库","slug":"显示当前数据库","link":"#显示当前数据库","children":[]},{"level":3,"title":"显示当前数据库版本","slug":"显示当前数据库版本","link":"#显示当前数据库版本","children":[]},{"level":3,"title":"显示当前登录用户","slug":"显示当前登录用户","link":"#显示当前登录用户","children":[]},{"level":3,"title":"查看表结构","slug":"查看表结构","link":"#查看表结构","children":[]},{"level":3,"title":"查看创建表和增加列的具体语句","slug":"查看创建表和增加列的具体语句","link":"#查看创建表和增加列的具体语句","children":[]},{"level":3,"title":"数据操作","slug":"数据操作","link":"#数据操作","children":[]}]}],"relativePath":"knowledge-deposition/MySQL/基础知识.md"}'),p={name:"knowledge-deposition/MySQL/基础知识.md"},e=l(`

基础知识

数据库的功能

  • 存储大量数据,方便检索和访问

  • 保持数据信息的一致、完整

  • 共享和安全

  • 通过组合分析,产生新的有用信息

数据库的概念

数据库(DB)

  • 数据的仓库,可以存放结构化的数据

数据库管理系统(DBMS)

  • 一种系统软件,提供操作数据库的环境,可以通过数据库管理系统对数据进行插入修改删除查询等操作。

SQL

  • 结构化查询语言,专门用来和数据库进行交流的语言,几乎所有的DBMS都支持SQL

SQL规范

  • SQL语句不区分大小写,建议SQL关键字大写表名列表小写

  • 命令用分号结尾

  • 命令可以缩进和换行,一种类型的关键字放在一行

  • 可以写单行多行注释 , #--单行注释/***/多行注释

MySQL

连接MySQL

  • 通过命令行连接
shell
mysql -h 127.0.0.1 -P 3306 -uroot -p123456
 

切换数据库

SQL
USE database_name;
 # 例如
 USE student;
diff --git "a/assets/knowledge-deposition_MySQL_\345\237\272\347\241\200\347\237\245\350\257\206.md.3c73c315.lean.js" "b/assets/knowledge-deposition_MySQL_\345\237\272\347\241\200\347\237\245\350\257\206.md.e3b8992a.lean.js"
similarity index 97%
rename from "assets/knowledge-deposition_MySQL_\345\237\272\347\241\200\347\237\245\350\257\206.md.3c73c315.lean.js"
rename to "assets/knowledge-deposition_MySQL_\345\237\272\347\241\200\347\237\245\350\257\206.md.e3b8992a.lean.js"
index eadb2486..824cf7e4 100644
--- "a/assets/knowledge-deposition_MySQL_\345\237\272\347\241\200\347\237\245\350\257\206.md.3c73c315.lean.js"
+++ "b/assets/knowledge-deposition_MySQL_\345\237\272\347\241\200\347\237\245\350\257\206.md.e3b8992a.lean.js"
@@ -1 +1 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const D=JSON.parse('{"title":"基础知识","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"数据库的功能","slug":"数据库的功能","link":"#数据库的功能","children":[]},{"level":2,"title":"数据库的概念","slug":"数据库的概念","link":"#数据库的概念","children":[{"level":3,"title":"数据库(DB)","slug":"数据库-db","link":"#数据库-db","children":[]},{"level":3,"title":"数据库管理系统(DBMS)","slug":"数据库管理系统-dbms","link":"#数据库管理系统-dbms","children":[]},{"level":3,"title":"SQL","slug":"sql","link":"#sql","children":[]},{"level":3,"title":"SQL规范","slug":"sql规范","link":"#sql规范","children":[]}]},{"level":2,"title":"MySQL","slug":"mysql","link":"#mysql","children":[{"level":3,"title":"连接MySQL","slug":"连接mysql","link":"#连接mysql","children":[]},{"level":3,"title":"切换数据库","slug":"切换数据库","link":"#切换数据库","children":[]},{"level":3,"title":"显示有哪些表","slug":"显示有哪些表","link":"#显示有哪些表","children":[]},{"level":3,"title":"显示当前数据库","slug":"显示当前数据库","link":"#显示当前数据库","children":[]},{"level":3,"title":"显示当前数据库版本","slug":"显示当前数据库版本","link":"#显示当前数据库版本","children":[]},{"level":3,"title":"显示当前登录用户","slug":"显示当前登录用户","link":"#显示当前登录用户","children":[]},{"level":3,"title":"查看表结构","slug":"查看表结构","link":"#查看表结构","children":[]},{"level":3,"title":"查看创建表和增加列的具体语句","slug":"查看创建表和增加列的具体语句","link":"#查看创建表和增加列的具体语句","children":[]},{"level":3,"title":"数据操作","slug":"数据操作","link":"#数据操作","children":[]}]}],"relativePath":"knowledge-deposition/MySQL/基础知识.md"}'),p={name:"knowledge-deposition/MySQL/基础知识.md"},e=l("",54),o=[e];function t(c,r,C,i,y,A){return n(),a("div",null,o)}const h=s(p,[["render",t]]);export{D as __pageData,h as default};
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const D=JSON.parse('{"title":"基础知识","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"数据库的功能","slug":"数据库的功能","link":"#数据库的功能","children":[]},{"level":2,"title":"数据库的概念","slug":"数据库的概念","link":"#数据库的概念","children":[{"level":3,"title":"数据库(DB)","slug":"数据库-db","link":"#数据库-db","children":[]},{"level":3,"title":"数据库管理系统(DBMS)","slug":"数据库管理系统-dbms","link":"#数据库管理系统-dbms","children":[]},{"level":3,"title":"SQL","slug":"sql","link":"#sql","children":[]},{"level":3,"title":"SQL规范","slug":"sql规范","link":"#sql规范","children":[]}]},{"level":2,"title":"MySQL","slug":"mysql","link":"#mysql","children":[{"level":3,"title":"连接MySQL","slug":"连接mysql","link":"#连接mysql","children":[]},{"level":3,"title":"切换数据库","slug":"切换数据库","link":"#切换数据库","children":[]},{"level":3,"title":"显示有哪些表","slug":"显示有哪些表","link":"#显示有哪些表","children":[]},{"level":3,"title":"显示当前数据库","slug":"显示当前数据库","link":"#显示当前数据库","children":[]},{"level":3,"title":"显示当前数据库版本","slug":"显示当前数据库版本","link":"#显示当前数据库版本","children":[]},{"level":3,"title":"显示当前登录用户","slug":"显示当前登录用户","link":"#显示当前登录用户","children":[]},{"level":3,"title":"查看表结构","slug":"查看表结构","link":"#查看表结构","children":[]},{"level":3,"title":"查看创建表和增加列的具体语句","slug":"查看创建表和增加列的具体语句","link":"#查看创建表和增加列的具体语句","children":[]},{"level":3,"title":"数据操作","slug":"数据操作","link":"#数据操作","children":[]}]}],"relativePath":"knowledge-deposition/MySQL/基础知识.md"}'),p={name:"knowledge-deposition/MySQL/基础知识.md"},e=l("",54),o=[e];function t(c,r,C,i,y,A){return n(),a("div",null,o)}const h=s(p,[["render",t]]);export{D as __pageData,h as default};
diff --git "a/assets/knowledge-deposition_MySQL_\346\225\260\346\215\256\346\223\215\344\275\234\345\222\214\346\237\245\350\257\242.md.e5fb8bfe.js" "b/assets/knowledge-deposition_MySQL_\346\225\260\346\215\256\346\223\215\344\275\234\345\222\214\346\237\245\350\257\242.md.6e07a624.js"
similarity index 99%
rename from "assets/knowledge-deposition_MySQL_\346\225\260\346\215\256\346\223\215\344\275\234\345\222\214\346\237\245\350\257\242.md.e5fb8bfe.js"
rename to "assets/knowledge-deposition_MySQL_\346\225\260\346\215\256\346\223\215\344\275\234\345\222\214\346\237\245\350\257\242.md.6e07a624.js"
index a15d4e75..daf6cf96 100644
--- "a/assets/knowledge-deposition_MySQL_\346\225\260\346\215\256\346\223\215\344\275\234\345\222\214\346\237\245\350\257\242.md.e5fb8bfe.js"
+++ "b/assets/knowledge-deposition_MySQL_\346\225\260\346\215\256\346\223\215\344\275\234\345\222\214\346\237\245\350\257\242.md.6e07a624.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const D=JSON.parse('{"title":"数据操作和查询","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"数据操作","slug":"数据操作","link":"#数据操作","children":[{"level":3,"title":"插入","slug":"插入","link":"#插入","children":[]},{"level":3,"title":"更新","slug":"更新","link":"#更新","children":[]},{"level":3,"title":"删除","slug":"删除","link":"#删除","children":[]},{"level":3,"title":"截断表(清空表数据)","slug":"截断表-清空表数据","link":"#截断表-清空表数据","children":[]}]},{"level":2,"title":"查询","slug":"查询","link":"#查询","children":[{"level":3,"title":"模糊查询","slug":"模糊查询","link":"#模糊查询","children":[]}]}],"relativePath":"knowledge-deposition/MySQL/数据操作和查询.md"}'),p={name:"knowledge-deposition/MySQL/数据操作和查询.md"},o=l(`

数据操作和查询

数据操作


插入

SQL
INSERT [INTO] 表名 [(列名)] VALUES (值列表);
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const D=JSON.parse('{"title":"数据操作和查询","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"数据操作","slug":"数据操作","link":"#数据操作","children":[{"level":3,"title":"插入","slug":"插入","link":"#插入","children":[]},{"level":3,"title":"更新","slug":"更新","link":"#更新","children":[]},{"level":3,"title":"删除","slug":"删除","link":"#删除","children":[]},{"level":3,"title":"截断表(清空表数据)","slug":"截断表-清空表数据","link":"#截断表-清空表数据","children":[]}]},{"level":2,"title":"查询","slug":"查询","link":"#查询","children":[{"level":3,"title":"模糊查询","slug":"模糊查询","link":"#模糊查询","children":[]}]}],"relativePath":"knowledge-deposition/MySQL/数据操作和查询.md"}'),p={name:"knowledge-deposition/MySQL/数据操作和查询.md"},o=l(`

数据操作和查询

数据操作


插入

SQL
INSERT [INTO] 表名 [(列名)] VALUES (值列表);
 

WARNING

  • 每次插入一行数据,不能只插入一部分数据,插入的数据是否有效将按照整行的完整性要求来检验

  • 每个数据值的数据类型精度位数必须与要与对应的列名精确匹配

  • 不能为标识符指定值

  • 如果某字段设置为不能为空,则必须插入数据

  • 插入数据时还要符合检查性约束的要求

  • 缺省值的列,可以使用DEFAULT关键字来代替插入实际的值

例子

SQL
INSERT lyb.student (name, age, gender) VALUES ('张三', 22, 0);
 INSERT INTO lyb.student (name, age, gender) VALUES ('李四', 28, 0);
 

更新

SQL
UPDATE 表名 SET 列名 = 更新值 [WHERE 更新条件]
diff --git "a/assets/knowledge-deposition_MySQL_\346\225\260\346\215\256\346\223\215\344\275\234\345\222\214\346\237\245\350\257\242.md.e5fb8bfe.lean.js" "b/assets/knowledge-deposition_MySQL_\346\225\260\346\215\256\346\223\215\344\275\234\345\222\214\346\237\245\350\257\242.md.6e07a624.lean.js"
similarity index 93%
rename from "assets/knowledge-deposition_MySQL_\346\225\260\346\215\256\346\223\215\344\275\234\345\222\214\346\237\245\350\257\242.md.e5fb8bfe.lean.js"
rename to "assets/knowledge-deposition_MySQL_\346\225\260\346\215\256\346\223\215\344\275\234\345\222\214\346\237\245\350\257\242.md.6e07a624.lean.js"
index 4142fad8..9d68c417 100644
--- "a/assets/knowledge-deposition_MySQL_\346\225\260\346\215\256\346\223\215\344\275\234\345\222\214\346\237\245\350\257\242.md.e5fb8bfe.lean.js"
+++ "b/assets/knowledge-deposition_MySQL_\346\225\260\346\215\256\346\223\215\344\275\234\345\222\214\346\237\245\350\257\242.md.6e07a624.lean.js"
@@ -1 +1 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const D=JSON.parse('{"title":"数据操作和查询","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"数据操作","slug":"数据操作","link":"#数据操作","children":[{"level":3,"title":"插入","slug":"插入","link":"#插入","children":[]},{"level":3,"title":"更新","slug":"更新","link":"#更新","children":[]},{"level":3,"title":"删除","slug":"删除","link":"#删除","children":[]},{"level":3,"title":"截断表(清空表数据)","slug":"截断表-清空表数据","link":"#截断表-清空表数据","children":[]}]},{"level":2,"title":"查询","slug":"查询","link":"#查询","children":[{"level":3,"title":"模糊查询","slug":"模糊查询","link":"#模糊查询","children":[]}]}],"relativePath":"knowledge-deposition/MySQL/数据操作和查询.md"}'),p={name:"knowledge-deposition/MySQL/数据操作和查询.md"},o=l("",48),e=[o];function c(t,C,r,i,y,d){return n(),a("div",null,e)}const F=s(p,[["render",c]]);export{D as __pageData,F as default};
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const D=JSON.parse('{"title":"数据操作和查询","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"数据操作","slug":"数据操作","link":"#数据操作","children":[{"level":3,"title":"插入","slug":"插入","link":"#插入","children":[]},{"level":3,"title":"更新","slug":"更新","link":"#更新","children":[]},{"level":3,"title":"删除","slug":"删除","link":"#删除","children":[]},{"level":3,"title":"截断表(清空表数据)","slug":"截断表-清空表数据","link":"#截断表-清空表数据","children":[]}]},{"level":2,"title":"查询","slug":"查询","link":"#查询","children":[{"level":3,"title":"模糊查询","slug":"模糊查询","link":"#模糊查询","children":[]}]}],"relativePath":"knowledge-deposition/MySQL/数据操作和查询.md"}'),p={name:"knowledge-deposition/MySQL/数据操作和查询.md"},o=l("",48),e=[o];function c(t,C,r,i,y,d){return n(),a("div",null,e)}const F=s(p,[["render",c]]);export{D as __pageData,F as default};
diff --git "a/assets/knowledge-deposition_MySQL_\350\241\250\350\277\236\346\216\245.md.a7ab8464.js" "b/assets/knowledge-deposition_MySQL_\350\241\250\350\277\236\346\216\245.md.4cd93442.js"
similarity index 99%
rename from "assets/knowledge-deposition_MySQL_\350\241\250\350\277\236\346\216\245.md.a7ab8464.js"
rename to "assets/knowledge-deposition_MySQL_\350\241\250\350\277\236\346\216\245.md.4cd93442.js"
index 8b2b646e..aae07724 100644
--- "a/assets/knowledge-deposition_MySQL_\350\241\250\350\277\236\346\216\245.md.a7ab8464.js"
+++ "b/assets/knowledge-deposition_MySQL_\350\241\250\350\277\236\346\216\245.md.4cd93442.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const D=JSON.parse('{"title":"表连接","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"表连接类型","slug":"表连接类型","link":"#表连接类型","children":[]},{"level":2,"title":"连接条件","slug":"连接条件","link":"#连接条件","children":[]},{"level":2,"title":"内连接INNER JOIN","slug":"内连接inner-join","link":"#内连接inner-join","children":[]},{"level":2,"title":"左外连接LEFT JOIN","slug":"左外连接left-join","link":"#左外连接left-join","children":[]},{"level":2,"title":"右外连接RIGHT JOIN","slug":"右外连接right-join","link":"#右外连接right-join","children":[]},{"level":2,"title":"多表连接","slug":"多表连接","link":"#多表连接","children":[]},{"level":2,"title":"自连接","slug":"自连接","link":"#自连接","children":[]}],"relativePath":"knowledge-deposition/MySQL/表连接.md"}'),e={name:"knowledge-deposition/MySQL/表连接.md"},o=l(`

表连接

表连接类型

  • INNER JOIN:内连接

  • LEFT JOIN:左外连接

  • RIGHT JOIN:右外连接

连接条件

使用ON关键字来设定连接条件,也可以使用WHERE

内连接INNER JOIN

  • 筛选同时符合左表和右表的查询条件(指连接结果仅包含符合连接条件的行,参与连接的两个表都应该符合连接条件)
SQL
# 使用ON关键字
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const D=JSON.parse('{"title":"表连接","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"表连接类型","slug":"表连接类型","link":"#表连接类型","children":[]},{"level":2,"title":"连接条件","slug":"连接条件","link":"#连接条件","children":[]},{"level":2,"title":"内连接INNER JOIN","slug":"内连接inner-join","link":"#内连接inner-join","children":[]},{"level":2,"title":"左外连接LEFT JOIN","slug":"左外连接left-join","link":"#左外连接left-join","children":[]},{"level":2,"title":"右外连接RIGHT JOIN","slug":"右外连接right-join","link":"#右外连接right-join","children":[]},{"level":2,"title":"多表连接","slug":"多表连接","link":"#多表连接","children":[]},{"level":2,"title":"自连接","slug":"自连接","link":"#自连接","children":[]}],"relativePath":"knowledge-deposition/MySQL/表连接.md"}'),e={name:"knowledge-deposition/MySQL/表连接.md"},o=l(`

表连接

表连接类型

  • INNER JOIN:内连接

  • LEFT JOIN:左外连接

  • RIGHT JOIN:右外连接

连接条件

使用ON关键字来设定连接条件,也可以使用WHERE

内连接INNER JOIN

  • 筛选同时符合左表和右表的查询条件(指连接结果仅包含符合连接条件的行,参与连接的两个表都应该符合连接条件)
SQL
# 使用ON关键字
 SELECT * FROM student A INNER JOIN score B ON A.id = B.student_id;
 # 还可以使用WHERE,和上面的查询是一样的
 SELECT * FROM student A, score B WHERE A.id = B.student_id;
diff --git "a/assets/knowledge-deposition_MySQL_\350\241\250\350\277\236\346\216\245.md.a7ab8464.lean.js" "b/assets/knowledge-deposition_MySQL_\350\241\250\350\277\236\346\216\245.md.4cd93442.lean.js"
similarity index 94%
rename from "assets/knowledge-deposition_MySQL_\350\241\250\350\277\236\346\216\245.md.a7ab8464.lean.js"
rename to "assets/knowledge-deposition_MySQL_\350\241\250\350\277\236\346\216\245.md.4cd93442.lean.js"
index f8b0804d..141fd70f 100644
--- "a/assets/knowledge-deposition_MySQL_\350\241\250\350\277\236\346\216\245.md.a7ab8464.lean.js"
+++ "b/assets/knowledge-deposition_MySQL_\350\241\250\350\277\236\346\216\245.md.4cd93442.lean.js"
@@ -1 +1 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const D=JSON.parse('{"title":"表连接","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"表连接类型","slug":"表连接类型","link":"#表连接类型","children":[]},{"level":2,"title":"连接条件","slug":"连接条件","link":"#连接条件","children":[]},{"level":2,"title":"内连接INNER JOIN","slug":"内连接inner-join","link":"#内连接inner-join","children":[]},{"level":2,"title":"左外连接LEFT JOIN","slug":"左外连接left-join","link":"#左外连接left-join","children":[]},{"level":2,"title":"右外连接RIGHT JOIN","slug":"右外连接right-join","link":"#右外连接right-join","children":[]},{"level":2,"title":"多表连接","slug":"多表连接","link":"#多表连接","children":[]},{"level":2,"title":"自连接","slug":"自连接","link":"#自连接","children":[]}],"relativePath":"knowledge-deposition/MySQL/表连接.md"}'),e={name:"knowledge-deposition/MySQL/表连接.md"},o=l("",29),p=[o];function c(t,C,r,i,d,y){return n(),a("div",null,p)}const F=s(e,[["render",c]]);export{D as __pageData,F as default};
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const D=JSON.parse('{"title":"表连接","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"表连接类型","slug":"表连接类型","link":"#表连接类型","children":[]},{"level":2,"title":"连接条件","slug":"连接条件","link":"#连接条件","children":[]},{"level":2,"title":"内连接INNER JOIN","slug":"内连接inner-join","link":"#内连接inner-join","children":[]},{"level":2,"title":"左外连接LEFT JOIN","slug":"左外连接left-join","link":"#左外连接left-join","children":[]},{"level":2,"title":"右外连接RIGHT JOIN","slug":"右外连接right-join","link":"#右外连接right-join","children":[]},{"level":2,"title":"多表连接","slug":"多表连接","link":"#多表连接","children":[]},{"level":2,"title":"自连接","slug":"自连接","link":"#自连接","children":[]}],"relativePath":"knowledge-deposition/MySQL/表连接.md"}'),e={name:"knowledge-deposition/MySQL/表连接.md"},o=l("",29),p=[o];function c(t,C,r,i,d,y){return n(),a("div",null,p)}const F=s(e,[["render",c]]);export{D as __pageData,F as default};
diff --git "a/assets/knowledge-deposition_Nacos_\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\345\256\211\350\243\205\345\220\257\345\212\250.md.d5028cb7.js" "b/assets/knowledge-deposition_Nacos_\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\345\256\211\350\243\205\345\220\257\345\212\250.md.7bdb09e0.js"
similarity index 99%
rename from "assets/knowledge-deposition_Nacos_\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\345\256\211\350\243\205\345\220\257\345\212\250.md.d5028cb7.js"
rename to "assets/knowledge-deposition_Nacos_\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\345\256\211\350\243\205\345\220\257\345\212\250.md.7bdb09e0.js"
index 14eb909f..3c487f51 100644
--- "a/assets/knowledge-deposition_Nacos_\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\345\256\211\350\243\205\345\220\257\345\212\250.md.d5028cb7.js"
+++ "b/assets/knowledge-deposition_Nacos_\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\345\256\211\350\243\205\345\220\257\345\212\250.md.7bdb09e0.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const d=JSON.parse('{"title":"基本概念和安装启动","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"概念","slug":"概念","link":"#概念","children":[]},{"level":2,"title":"启动Nacos","slug":"启动nacos","link":"#启动nacos","children":[]},{"level":2,"title":"开启鉴权","slug":"开启鉴权","link":"#开启鉴权","children":[]}],"relativePath":"knowledge-deposition/Nacos/基本概念和安装启动.md"}'),o={name:"knowledge-deposition/Nacos/基本概念和安装启动.md"},p=l(`

基本概念和安装启动

概念

Nacos(官方网站:nacos.io)是一个易于使用的平台,专为动态服务发现、配置和服务管理而设计。它帮助您轻松构建云原生应用程序和微服务平台。

Nacos提供四个主要功能:

  • 服务发现和服务健康检查

  • 动态配置管理

  • 动态 DNS 服务

  • 服务和元数据管理

启动Nacos

TIP

  • 启动nacos有单机模式运行集群模式,今天只使用单机模式

我们使用Docker来搭建Nacos服务,更多配置参考quick-start-docker

服务目录如下:

shell
.
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const d=JSON.parse('{"title":"基本概念和安装启动","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"概念","slug":"概念","link":"#概念","children":[]},{"level":2,"title":"启动Nacos","slug":"启动nacos","link":"#启动nacos","children":[]},{"level":2,"title":"开启鉴权","slug":"开启鉴权","link":"#开启鉴权","children":[]}],"relativePath":"knowledge-deposition/Nacos/基本概念和安装启动.md"}'),o={name:"knowledge-deposition/Nacos/基本概念和安装启动.md"},p=l(`

基本概念和安装启动

概念

Nacos(官方网站:nacos.io)是一个易于使用的平台,专为动态服务发现、配置和服务管理而设计。它帮助您轻松构建云原生应用程序和微服务平台。

Nacos提供四个主要功能:

  • 服务发现和服务健康检查

  • 动态配置管理

  • 动态 DNS 服务

  • 服务和元数据管理

启动Nacos

TIP

  • 启动nacos有单机模式运行集群模式,今天只使用单机模式

我们使用Docker来搭建Nacos服务,更多配置参考quick-start-docker

服务目录如下:

shell
.
 ├── .env # 环境变量文件,用于standalone-mysql-8.yaml读取环境变量
 ├── env
    ├── mysql.env # mysql 环境变量
diff --git "a/assets/knowledge-deposition_Nacos_\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\345\256\211\350\243\205\345\220\257\345\212\250.md.d5028cb7.lean.js" "b/assets/knowledge-deposition_Nacos_\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\345\256\211\350\243\205\345\220\257\345\212\250.md.7bdb09e0.lean.js"
similarity index 91%
rename from "assets/knowledge-deposition_Nacos_\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\345\256\211\350\243\205\345\220\257\345\212\250.md.d5028cb7.lean.js"
rename to "assets/knowledge-deposition_Nacos_\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\345\256\211\350\243\205\345\220\257\345\212\250.md.7bdb09e0.lean.js"
index be5b8622..e5eee04a 100644
--- "a/assets/knowledge-deposition_Nacos_\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\345\256\211\350\243\205\345\220\257\345\212\250.md.d5028cb7.lean.js"
+++ "b/assets/knowledge-deposition_Nacos_\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\345\256\211\350\243\205\345\220\257\345\212\250.md.7bdb09e0.lean.js"
@@ -1 +1 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const d=JSON.parse('{"title":"基本概念和安装启动","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"概念","slug":"概念","link":"#概念","children":[]},{"level":2,"title":"启动Nacos","slug":"启动nacos","link":"#启动nacos","children":[]},{"level":2,"title":"开启鉴权","slug":"开启鉴权","link":"#开启鉴权","children":[]}],"relativePath":"knowledge-deposition/Nacos/基本概念和安装启动.md"}'),o={name:"knowledge-deposition/Nacos/基本概念和安装启动.md"},p=l("",36),e=[p];function c(t,r,y,i,C,D){return n(),a("div",null,e)}const F=s(o,[["render",c]]);export{d as __pageData,F as default};
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const d=JSON.parse('{"title":"基本概念和安装启动","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"概念","slug":"概念","link":"#概念","children":[]},{"level":2,"title":"启动Nacos","slug":"启动nacos","link":"#启动nacos","children":[]},{"level":2,"title":"开启鉴权","slug":"开启鉴权","link":"#开启鉴权","children":[]}],"relativePath":"knowledge-deposition/Nacos/基本概念和安装启动.md"}'),o={name:"knowledge-deposition/Nacos/基本概念和安装启动.md"},p=l("",36),e=[p];function c(t,r,y,i,C,D){return n(),a("div",null,e)}const F=s(o,[["render",c]]);export{d as __pageData,F as default};
diff --git "a/assets/knowledge-deposition_Nacos_\346\223\215\344\275\234\345\212\250\346\200\201\351\205\215\347\275\256\346\226\207\344\273\266.md.cb4056a7.js" "b/assets/knowledge-deposition_Nacos_\346\223\215\344\275\234\345\212\250\346\200\201\351\205\215\347\275\256\346\226\207\344\273\266.md.e150bc5c.js"
similarity index 99%
rename from "assets/knowledge-deposition_Nacos_\346\223\215\344\275\234\345\212\250\346\200\201\351\205\215\347\275\256\346\226\207\344\273\266.md.cb4056a7.js"
rename to "assets/knowledge-deposition_Nacos_\346\223\215\344\275\234\345\212\250\346\200\201\351\205\215\347\275\256\346\226\207\344\273\266.md.e150bc5c.js"
index c28d1ab2..620385e9 100644
--- "a/assets/knowledge-deposition_Nacos_\346\223\215\344\275\234\345\212\250\346\200\201\351\205\215\347\275\256\346\226\207\344\273\266.md.cb4056a7.js"
+++ "b/assets/knowledge-deposition_Nacos_\346\223\215\344\275\234\345\212\250\346\200\201\351\205\215\347\275\256\346\226\207\344\273\266.md.e150bc5c.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"操作动态配置文件","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"可用方法","slug":"可用方法","link":"#可用方法","children":[]},{"level":2,"title":"不使用命名空间","slug":"不使用命名空间","link":"#不使用命名空间","children":[]},{"level":2,"title":"使用命名空间","slug":"使用命名空间","link":"#使用命名空间","children":[]},{"level":2,"title":"获取nacos server的配置,并转为go struct","slug":"获取nacos-server的配置-并转为go-struct","link":"#获取nacos-server的配置-并转为go-struct","children":[]}],"relativePath":"knowledge-deposition/Nacos/操作动态配置文件.md"}'),o={name:"knowledge-deposition/Nacos/操作动态配置文件.md"},p=l(`

操作动态配置文件

Nacos可以动态读取修改删除配置文件,还可以监听配置文件修改

使用go sdk来实现

  • ClientConfig配置参数
Go
constant.ClientConfig {
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"操作动态配置文件","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"可用方法","slug":"可用方法","link":"#可用方法","children":[]},{"level":2,"title":"不使用命名空间","slug":"不使用命名空间","link":"#不使用命名空间","children":[]},{"level":2,"title":"使用命名空间","slug":"使用命名空间","link":"#使用命名空间","children":[]},{"level":2,"title":"获取nacos server的配置,并转为go struct","slug":"获取nacos-server的配置-并转为go-struct","link":"#获取nacos-server的配置-并转为go-struct","children":[]}],"relativePath":"knowledge-deposition/Nacos/操作动态配置文件.md"}'),o={name:"knowledge-deposition/Nacos/操作动态配置文件.md"},p=l(`

操作动态配置文件

Nacos可以动态读取修改删除配置文件,还可以监听配置文件修改

使用go sdk来实现

  • ClientConfig配置参数
Go
constant.ClientConfig {
     TimeoutMs   uint64 // timeout for requesting Nacos server, default value is 10000ms
     NamespaceId string // the namespaceId of Nacos
     Endpoint    string // the endpoint for ACM. https://help.aliyun.com/document_detail/130146.html
diff --git "a/assets/knowledge-deposition_Nacos_\346\223\215\344\275\234\345\212\250\346\200\201\351\205\215\347\275\256\346\226\207\344\273\266.md.cb4056a7.lean.js" "b/assets/knowledge-deposition_Nacos_\346\223\215\344\275\234\345\212\250\346\200\201\351\205\215\347\275\256\346\226\207\344\273\266.md.e150bc5c.lean.js"
similarity index 93%
rename from "assets/knowledge-deposition_Nacos_\346\223\215\344\275\234\345\212\250\346\200\201\351\205\215\347\275\256\346\226\207\344\273\266.md.cb4056a7.lean.js"
rename to "assets/knowledge-deposition_Nacos_\346\223\215\344\275\234\345\212\250\346\200\201\351\205\215\347\275\256\346\226\207\344\273\266.md.e150bc5c.lean.js"
index 5d0212bb..6e4f5d55 100644
--- "a/assets/knowledge-deposition_Nacos_\346\223\215\344\275\234\345\212\250\346\200\201\351\205\215\347\275\256\346\226\207\344\273\266.md.cb4056a7.lean.js"
+++ "b/assets/knowledge-deposition_Nacos_\346\223\215\344\275\234\345\212\250\346\200\201\351\205\215\347\275\256\346\226\207\344\273\266.md.e150bc5c.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"操作动态配置文件","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"可用方法","slug":"可用方法","link":"#可用方法","children":[]},{"level":2,"title":"不使用命名空间","slug":"不使用命名空间","link":"#不使用命名空间","children":[]},{"level":2,"title":"使用命名空间","slug":"使用命名空间","link":"#使用命名空间","children":[]},{"level":2,"title":"获取nacos server的配置,并转为go struct","slug":"获取nacos-server的配置-并转为go-struct","link":"#获取nacos-server的配置-并转为go-struct","children":[]}],"relativePath":"knowledge-deposition/Nacos/操作动态配置文件.md"}'),o={name:"knowledge-deposition/Nacos/操作动态配置文件.md"},p=l("",38),t=[p];function e(c,D,r,F,y,C){return a(),n("div",null,t)}const u=s(o,[["render",e]]);export{i as __pageData,u as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"操作动态配置文件","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"可用方法","slug":"可用方法","link":"#可用方法","children":[]},{"level":2,"title":"不使用命名空间","slug":"不使用命名空间","link":"#不使用命名空间","children":[]},{"level":2,"title":"使用命名空间","slug":"使用命名空间","link":"#使用命名空间","children":[]},{"level":2,"title":"获取nacos server的配置,并转为go struct","slug":"获取nacos-server的配置-并转为go-struct","link":"#获取nacos-server的配置-并转为go-struct","children":[]}],"relativePath":"knowledge-deposition/Nacos/操作动态配置文件.md"}'),o={name:"knowledge-deposition/Nacos/操作动态配置文件.md"},p=l("",38),t=[p];function e(c,D,r,F,y,C){return a(),n("div",null,t)}const u=s(o,[["render",e]]);export{i as __pageData,u as default};
diff --git a/assets/knowledge-deposition_RabbitMQ_Routing.md.b03766af.js b/assets/knowledge-deposition_RabbitMQ_Routing.md.a9bc46b9.js
similarity index 99%
rename from assets/knowledge-deposition_RabbitMQ_Routing.md.b03766af.js
rename to assets/knowledge-deposition_RabbitMQ_Routing.md.a9bc46b9.js
index a3370503..38c0f2b7 100644
--- a/assets/knowledge-deposition_RabbitMQ_Routing.md.b03766af.js
+++ b/assets/knowledge-deposition_RabbitMQ_Routing.md.a9bc46b9.js
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"Routing","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"Binding","slug":"binding","link":"#binding","children":[]},{"level":2,"title":"Direct","slug":"direct","link":"#direct","children":[]},{"level":2,"title":"结合一起使用","slug":"结合一起使用","link":"#结合一起使用","children":[]}],"relativePath":"knowledge-deposition/RabbitMQ/Routing.md"}'),o={name:"knowledge-deposition/RabbitMQ/Routing.md"},p=l(`

Routing

前面写了一个生产者生产出一些日志消息,所有的消费者接收消息并打印出来这个例子

这种场景是所有的接收者都能够接收到日志,现在进一步扩展功能:

生产者发送日志消息后,每个消息由对应的消费者去接收,比如有专门处理debug消息的,有专门处理error消息的

Binding

每个消息由对应的消费者去接收,在这里,每个消息对应的消费者之间的关系可以通过routing key来关联

之前绑定的代码如下:

生产方producer代码

Go
err = ch.PublishWithContext(
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"Routing","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"Binding","slug":"binding","link":"#binding","children":[]},{"level":2,"title":"Direct","slug":"direct","link":"#direct","children":[]},{"level":2,"title":"结合一起使用","slug":"结合一起使用","link":"#结合一起使用","children":[]}],"relativePath":"knowledge-deposition/RabbitMQ/Routing.md"}'),o={name:"knowledge-deposition/RabbitMQ/Routing.md"},p=l(`

Routing

前面写了一个生产者生产出一些日志消息,所有的消费者接收消息并打印出来这个例子

这种场景是所有的接收者都能够接收到日志,现在进一步扩展功能:

生产者发送日志消息后,每个消息由对应的消费者去接收,比如有专门处理debug消息的,有专门处理error消息的

Binding

每个消息由对应的消费者去接收,在这里,每个消息对应的消费者之间的关系可以通过routing key来关联

之前绑定的代码如下:

生产方producer代码

Go
err = ch.PublishWithContext(
     ctx, // ctx
     "logsExchange", // exchange
     "", // routing key
diff --git a/assets/knowledge-deposition_RabbitMQ_Routing.md.b03766af.lean.js b/assets/knowledge-deposition_RabbitMQ_Routing.md.a9bc46b9.lean.js
similarity index 90%
rename from assets/knowledge-deposition_RabbitMQ_Routing.md.b03766af.lean.js
rename to assets/knowledge-deposition_RabbitMQ_Routing.md.a9bc46b9.lean.js
index 3ea2bbd4..45decc17 100644
--- a/assets/knowledge-deposition_RabbitMQ_Routing.md.b03766af.lean.js
+++ b/assets/knowledge-deposition_RabbitMQ_Routing.md.a9bc46b9.lean.js
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"Routing","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"Binding","slug":"binding","link":"#binding","children":[]},{"level":2,"title":"Direct","slug":"direct","link":"#direct","children":[]},{"level":2,"title":"结合一起使用","slug":"结合一起使用","link":"#结合一起使用","children":[]}],"relativePath":"knowledge-deposition/RabbitMQ/Routing.md"}'),o={name:"knowledge-deposition/RabbitMQ/Routing.md"},p=l("",39),e=[p];function t(c,r,D,y,F,C){return a(),n("div",null,e)}const u=s(o,[["render",t]]);export{i as __pageData,u as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"Routing","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"Binding","slug":"binding","link":"#binding","children":[]},{"level":2,"title":"Direct","slug":"direct","link":"#direct","children":[]},{"level":2,"title":"结合一起使用","slug":"结合一起使用","link":"#结合一起使用","children":[]}],"relativePath":"knowledge-deposition/RabbitMQ/Routing.md"}'),o={name:"knowledge-deposition/RabbitMQ/Routing.md"},p=l("",39),e=[p];function t(c,r,D,y,F,C){return a(),n("div",null,e)}const u=s(o,[["render",t]]);export{i as __pageData,u as default};
diff --git a/assets/knowledge-deposition_RabbitMQ_Topics.md.3f9385b6.js b/assets/knowledge-deposition_RabbitMQ_Topics.md.17656432.js
similarity index 99%
rename from assets/knowledge-deposition_RabbitMQ_Topics.md.3f9385b6.js
rename to assets/knowledge-deposition_RabbitMQ_Topics.md.17656432.js
index 6756b1df..a529b260 100644
--- a/assets/knowledge-deposition_RabbitMQ_Topics.md.3f9385b6.js
+++ b/assets/knowledge-deposition_RabbitMQ_Topics.md.17656432.js
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"Topics","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"Topic交换机","slug":"topic交换机","link":"#topic交换机","children":[]},{"level":2,"title":"代码案例","slug":"代码案例","link":"#代码案例","children":[]}],"relativePath":"knowledge-deposition/RabbitMQ/Topics.md"}'),o={name:"knowledge-deposition/RabbitMQ/Topics.md"},p=l(`

Topics

之前的代码中,使用Direct交换机精准处理某个类型的日志

现在在扩展一下这个功能,比如之前通过日志等级来决定是否处理,现在再加一个条件,某个消费者只处理从某个地方(比如bin)发出的info级别的日志,这里面要匹配两个条件,一是日志的发生地点为bin,而且日志级别要是info

要符合上面要求的话,使用Direct交换机就实现不不了了,那么就要使用Topic交换机来实现

Topic交换机

Topic交换机背后的逻辑类似于Direct交换机,通过routing key来匹配要将消息发送给哪个队列,匹配时有两种特殊情况:

  • *:正好能够匹配一个单词

  • #:可以匹配0个或多个单词

如下图:

rabbitMQ-exchange-topic

  • 如果此时routing keyquick.orange.rabbit,那么此时消息会被传递到Q1Q2两个队列

  • 如果此时routing keylazy.orange.elephant,那么此时消息会被传递到Q1Q2两个队列

  • 如果此时routing keyquick.orange.fox,那么此时消息仅会被传递到Q1队列

  • 如果此时routing keylazy.brown.fox,那么此时消息会仅会被传递到Q2队列

  • 如果此时routing keylazy.pink.rabbit,那么此时消息会仅会被传递到Q2队列,而且只会传递一次,虽然*.*.rabbitlazt.#两个规则都匹配到Q2,也只传递到Q2一次

  • 如果此时routing keyquick.brown.fox,因为此时Q1Q2都不匹配,所以此时消息不会被传递到任何一个队列

TIP

  • Topic交换机可以表现出和其他交换一样的行为

  • Topic交换机中,当使用#来作为routing key,那么它将会接收所有的消息,和Fanout交换机行为一致

  • Topic交换机中,当特殊字符*#未在绑定中使用时,那么它的表现将会和Direct交换机一样

代码案例

receive.go

Go
package main
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"Topics","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"Topic交换机","slug":"topic交换机","link":"#topic交换机","children":[]},{"level":2,"title":"代码案例","slug":"代码案例","link":"#代码案例","children":[]}],"relativePath":"knowledge-deposition/RabbitMQ/Topics.md"}'),o={name:"knowledge-deposition/RabbitMQ/Topics.md"},p=l(`

Topics

之前的代码中,使用Direct交换机精准处理某个类型的日志

现在在扩展一下这个功能,比如之前通过日志等级来决定是否处理,现在再加一个条件,某个消费者只处理从某个地方(比如bin)发出的info级别的日志,这里面要匹配两个条件,一是日志的发生地点为bin,而且日志级别要是info

要符合上面要求的话,使用Direct交换机就实现不不了了,那么就要使用Topic交换机来实现

Topic交换机

Topic交换机背后的逻辑类似于Direct交换机,通过routing key来匹配要将消息发送给哪个队列,匹配时有两种特殊情况:

  • *:正好能够匹配一个单词

  • #:可以匹配0个或多个单词

如下图:

rabbitMQ-exchange-topic

  • 如果此时routing keyquick.orange.rabbit,那么此时消息会被传递到Q1Q2两个队列

  • 如果此时routing keylazy.orange.elephant,那么此时消息会被传递到Q1Q2两个队列

  • 如果此时routing keyquick.orange.fox,那么此时消息仅会被传递到Q1队列

  • 如果此时routing keylazy.brown.fox,那么此时消息会仅会被传递到Q2队列

  • 如果此时routing keylazy.pink.rabbit,那么此时消息会仅会被传递到Q2队列,而且只会传递一次,虽然*.*.rabbitlazt.#两个规则都匹配到Q2,也只传递到Q2一次

  • 如果此时routing keyquick.brown.fox,因为此时Q1Q2都不匹配,所以此时消息不会被传递到任何一个队列

TIP

  • Topic交换机可以表现出和其他交换一样的行为

  • Topic交换机中,当使用#来作为routing key,那么它将会接收所有的消息,和Fanout交换机行为一致

  • Topic交换机中,当特殊字符*#未在绑定中使用时,那么它的表现将会和Direct交换机一样

代码案例

receive.go

Go
package main
 
 import (
 	"fmt"
diff --git a/assets/knowledge-deposition_RabbitMQ_Topics.md.3f9385b6.lean.js b/assets/knowledge-deposition_RabbitMQ_Topics.md.17656432.lean.js
similarity index 89%
rename from assets/knowledge-deposition_RabbitMQ_Topics.md.3f9385b6.lean.js
rename to assets/knowledge-deposition_RabbitMQ_Topics.md.17656432.lean.js
index 0a674efa..5b3f747e 100644
--- a/assets/knowledge-deposition_RabbitMQ_Topics.md.3f9385b6.lean.js
+++ b/assets/knowledge-deposition_RabbitMQ_Topics.md.17656432.lean.js
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"Topics","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"Topic交换机","slug":"topic交换机","link":"#topic交换机","children":[]},{"level":2,"title":"代码案例","slug":"代码案例","link":"#代码案例","children":[]}],"relativePath":"knowledge-deposition/RabbitMQ/Topics.md"}'),o={name:"knowledge-deposition/RabbitMQ/Topics.md"},p=l("",25),e=[p];function t(c,r,D,F,y,C){return a(),n("div",null,e)}const u=s(o,[["render",t]]);export{i as __pageData,u as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"Topics","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"Topic交换机","slug":"topic交换机","link":"#topic交换机","children":[]},{"level":2,"title":"代码案例","slug":"代码案例","link":"#代码案例","children":[]}],"relativePath":"knowledge-deposition/RabbitMQ/Topics.md"}'),o={name:"knowledge-deposition/RabbitMQ/Topics.md"},p=l("",25),e=[p];function t(c,r,D,F,y,C){return a(),n("div",null,e)}const u=s(o,[["render",t]]);export{i as __pageData,u as default};
diff --git "a/assets/knowledge-deposition_RabbitMQ_\345\217\221\345\270\203\350\256\242\351\230\205.md.08582e51.js" "b/assets/knowledge-deposition_RabbitMQ_\345\217\221\345\270\203\350\256\242\351\230\205.md.9a3fc4ae.js"
similarity index 99%
rename from "assets/knowledge-deposition_RabbitMQ_\345\217\221\345\270\203\350\256\242\351\230\205.md.08582e51.js"
rename to "assets/knowledge-deposition_RabbitMQ_\345\217\221\345\270\203\350\256\242\351\230\205.md.9a3fc4ae.js"
index 4ceade24..fba06117 100644
--- "a/assets/knowledge-deposition_RabbitMQ_\345\217\221\345\270\203\350\256\242\351\230\205.md.08582e51.js"
+++ "b/assets/knowledge-deposition_RabbitMQ_\345\217\221\345\270\203\350\256\242\351\230\205.md.9a3fc4ae.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"发布订阅","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"交换机","slug":"交换机","link":"#交换机","children":[{"level":3,"title":"Direct(直连模式)","slug":"direct-直连模式","link":"#direct-直连模式","children":[]},{"level":3,"title":"Topic(主题模式)","slug":"topic-主题模式","link":"#topic-主题模式","children":[]},{"level":3,"title":"Headers(头部模式)","slug":"headers-头部模式","link":"#headers-头部模式","children":[]},{"level":3,"title":"Fanout(广播模式)","slug":"fanout-广播模式","link":"#fanout-广播模式","children":[]}]},{"level":2,"title":"一个简单案例","slug":"一个简单案例","link":"#一个简单案例","children":[]}],"relativePath":"knowledge-deposition/RabbitMQ/发布订阅.md"}'),p={name:"knowledge-deposition/RabbitMQ/发布订阅.md"},o=l(`

发布订阅

之前的代码实现的都是一对一的模式,也就是一个任务分配给一个消费者去消费,但是其实也可以实现一个任务分配给多个消费者

可以使用发布/订阅模式来实现,这种模式下,要使用到交换机(Exchange)

交换机

交换机(Exchange)的作用从Producer处接收消息(Message),然后将消息发送到队列(Queues)

交换机(Exchange)必须明确自己如何去处理消息,这个规则取决于交换机的类型

交换机(Exchange)有这几种类型:TopicDirectHeadersFanout

之前的代码中都没有用到交换机(Exchange),都是直接声明一个具名队列

如下:函数ch.PublishWithContextexchange name是空字符串,这时会使用一个默认的交换机

Go
// 3. declare a queue,it will only be created if it doesn't exist already
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"发布订阅","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"交换机","slug":"交换机","link":"#交换机","children":[{"level":3,"title":"Direct(直连模式)","slug":"direct-直连模式","link":"#direct-直连模式","children":[]},{"level":3,"title":"Topic(主题模式)","slug":"topic-主题模式","link":"#topic-主题模式","children":[]},{"level":3,"title":"Headers(头部模式)","slug":"headers-头部模式","link":"#headers-头部模式","children":[]},{"level":3,"title":"Fanout(广播模式)","slug":"fanout-广播模式","link":"#fanout-广播模式","children":[]}]},{"level":2,"title":"一个简单案例","slug":"一个简单案例","link":"#一个简单案例","children":[]}],"relativePath":"knowledge-deposition/RabbitMQ/发布订阅.md"}'),p={name:"knowledge-deposition/RabbitMQ/发布订阅.md"},o=l(`

发布订阅

之前的代码实现的都是一对一的模式,也就是一个任务分配给一个消费者去消费,但是其实也可以实现一个任务分配给多个消费者

可以使用发布/订阅模式来实现,这种模式下,要使用到交换机(Exchange)

交换机

交换机(Exchange)的作用从Producer处接收消息(Message),然后将消息发送到队列(Queues)

交换机(Exchange)必须明确自己如何去处理消息,这个规则取决于交换机的类型

交换机(Exchange)有这几种类型:TopicDirectHeadersFanout

之前的代码中都没有用到交换机(Exchange),都是直接声明一个具名队列

如下:函数ch.PublishWithContextexchange name是空字符串,这时会使用一个默认的交换机

Go
// 3. declare a queue,it will only be created if it doesn't exist already
 queue, err := ch.QueueDeclare(
     "second_queue", // queue name
     true,           // durable
diff --git "a/assets/knowledge-deposition_RabbitMQ_\345\217\221\345\270\203\350\256\242\351\230\205.md.08582e51.lean.js" "b/assets/knowledge-deposition_RabbitMQ_\345\217\221\345\270\203\350\256\242\351\230\205.md.9a3fc4ae.lean.js"
similarity index 94%
rename from "assets/knowledge-deposition_RabbitMQ_\345\217\221\345\270\203\350\256\242\351\230\205.md.08582e51.lean.js"
rename to "assets/knowledge-deposition_RabbitMQ_\345\217\221\345\270\203\350\256\242\351\230\205.md.9a3fc4ae.lean.js"
index 656cf7ba..3bafd3b7 100644
--- "a/assets/knowledge-deposition_RabbitMQ_\345\217\221\345\270\203\350\256\242\351\230\205.md.08582e51.lean.js"
+++ "b/assets/knowledge-deposition_RabbitMQ_\345\217\221\345\270\203\350\256\242\351\230\205.md.9a3fc4ae.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"发布订阅","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"交换机","slug":"交换机","link":"#交换机","children":[{"level":3,"title":"Direct(直连模式)","slug":"direct-直连模式","link":"#direct-直连模式","children":[]},{"level":3,"title":"Topic(主题模式)","slug":"topic-主题模式","link":"#topic-主题模式","children":[]},{"level":3,"title":"Headers(头部模式)","slug":"headers-头部模式","link":"#headers-头部模式","children":[]},{"level":3,"title":"Fanout(广播模式)","slug":"fanout-广播模式","link":"#fanout-广播模式","children":[]}]},{"level":2,"title":"一个简单案例","slug":"一个简单案例","link":"#一个简单案例","children":[]}],"relativePath":"knowledge-deposition/RabbitMQ/发布订阅.md"}'),p={name:"knowledge-deposition/RabbitMQ/发布订阅.md"},o=l("",46),e=[o];function t(c,D,r,y,F,C){return a(),n("div",null,e)}const u=s(p,[["render",t]]);export{i as __pageData,u as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"发布订阅","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"交换机","slug":"交换机","link":"#交换机","children":[{"level":3,"title":"Direct(直连模式)","slug":"direct-直连模式","link":"#direct-直连模式","children":[]},{"level":3,"title":"Topic(主题模式)","slug":"topic-主题模式","link":"#topic-主题模式","children":[]},{"level":3,"title":"Headers(头部模式)","slug":"headers-头部模式","link":"#headers-头部模式","children":[]},{"level":3,"title":"Fanout(广播模式)","slug":"fanout-广播模式","link":"#fanout-广播模式","children":[]}]},{"level":2,"title":"一个简单案例","slug":"一个简单案例","link":"#一个简单案例","children":[]}],"relativePath":"knowledge-deposition/RabbitMQ/发布订阅.md"}'),p={name:"knowledge-deposition/RabbitMQ/发布订阅.md"},o=l("",46),e=[o];function t(c,D,r,y,F,C){return a(),n("div",null,e)}const u=s(p,[["render",t]]);export{i as __pageData,u as default};
diff --git "a/assets/knowledge-deposition_RabbitMQ_\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\345\256\211\350\243\205\345\220\257\345\212\250.md.c32d0ef9.js" "b/assets/knowledge-deposition_RabbitMQ_\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\345\256\211\350\243\205\345\220\257\345\212\250.md.6cb56022.js"
similarity index 99%
rename from "assets/knowledge-deposition_RabbitMQ_\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\345\256\211\350\243\205\345\220\257\345\212\250.md.c32d0ef9.js"
rename to "assets/knowledge-deposition_RabbitMQ_\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\345\256\211\350\243\205\345\220\257\345\212\250.md.6cb56022.js"
index 2d2986e9..399645ca 100644
--- "a/assets/knowledge-deposition_RabbitMQ_\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\345\256\211\350\243\205\345\220\257\345\212\250.md.c32d0ef9.js"
+++ "b/assets/knowledge-deposition_RabbitMQ_\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\345\256\211\350\243\205\345\220\257\345\212\250.md.6cb56022.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"安装启动和基本使用","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"简介","slug":"简介","link":"#简介","children":[]},{"level":2,"title":"核心概念","slug":"核心概念","link":"#核心概念","children":[]},{"level":2,"title":"安装和启动","slug":"安装和启动","link":"#安装和启动","children":[{"level":3,"title":"Docker启动","slug":"docker启动","link":"#docker启动","children":[]},{"level":3,"title":"使用homebrew安装启动教程","slug":"使用homebrew安装启动教程","link":"#使用homebrew安装启动教程","children":[]}]},{"level":2,"title":"简单示例","slug":"简单示例","link":"#简单示例","children":[{"level":3,"title":"生产者(Producer)","slug":"生产者-producer","link":"#生产者-producer","children":[]},{"level":3,"title":"消费者/接收者(Consumer)","slug":"消费者-接收者-consumer","link":"#消费者-接收者-consumer","children":[]}]},{"level":2,"title":"完整代码","slug":"完整代码","link":"#完整代码","children":[]}],"relativePath":"knowledge-deposition/RabbitMQ/基本概念和安装启动.md"}'),o={name:"knowledge-deposition/RabbitMQ/基本概念和安装启动.md"},p=l(`

安装启动和基本使用

简介

RabbitMQ是一款可靠且成熟的消息传递和流媒体代理,可以轻松部署在云环境、本地环境以及本地计算机上

核心概念

RabbitMQ是一个消息代理(broker):它接受并转发消息

可以把它想象成是一个邮局:我们把要寄出的信件放入邮箱时,可以确信邮递员最终会将信件送到收件人手中 在这个类比中,RabbitMQ就像一个邮箱一个邮局一名邮递员

它有以下几个重要的概念:

  1. Message:RabbitMQ接收存储转发=>二进制数据块—-也就是message
  2. Producer:生产者是一个发送消息的用户应用程序
  3. Exchange:交换机一边接收来自生产者的消息,另一边将它们推送到队列中。 交换机必须确切地知道如何处理接收到的消息,包括如下几条:
    • 消息是否应该添加到到特定队列

    • 消息是否应该应添加到多个队列

    • 消息是否应该被丢弃

  4. Queue:队列是一个存储消息的缓冲区
  5. Consumer:消费者是接收消息的用户应用程序

安装和启动

Docker启动

直接使用docker run来启动一个image

TIP

  • 3.13-management版本自带了web管理界面,web界面的端口号默认是15672

  • MQ服务默认端口号是5672

shell
docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.13-management
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"安装启动和基本使用","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"简介","slug":"简介","link":"#简介","children":[]},{"level":2,"title":"核心概念","slug":"核心概念","link":"#核心概念","children":[]},{"level":2,"title":"安装和启动","slug":"安装和启动","link":"#安装和启动","children":[{"level":3,"title":"Docker启动","slug":"docker启动","link":"#docker启动","children":[]},{"level":3,"title":"使用homebrew安装启动教程","slug":"使用homebrew安装启动教程","link":"#使用homebrew安装启动教程","children":[]}]},{"level":2,"title":"简单示例","slug":"简单示例","link":"#简单示例","children":[{"level":3,"title":"生产者(Producer)","slug":"生产者-producer","link":"#生产者-producer","children":[]},{"level":3,"title":"消费者/接收者(Consumer)","slug":"消费者-接收者-consumer","link":"#消费者-接收者-consumer","children":[]}]},{"level":2,"title":"完整代码","slug":"完整代码","link":"#完整代码","children":[]}],"relativePath":"knowledge-deposition/RabbitMQ/基本概念和安装启动.md"}'),o={name:"knowledge-deposition/RabbitMQ/基本概念和安装启动.md"},p=l(`

安装启动和基本使用

简介

RabbitMQ是一款可靠且成熟的消息传递和流媒体代理,可以轻松部署在云环境、本地环境以及本地计算机上

核心概念

RabbitMQ是一个消息代理(broker):它接受并转发消息

可以把它想象成是一个邮局:我们把要寄出的信件放入邮箱时,可以确信邮递员最终会将信件送到收件人手中 在这个类比中,RabbitMQ就像一个邮箱一个邮局一名邮递员

它有以下几个重要的概念:

  1. Message:RabbitMQ接收存储转发=>二进制数据块—-也就是message
  2. Producer:生产者是一个发送消息的用户应用程序
  3. Exchange:交换机一边接收来自生产者的消息,另一边将它们推送到队列中。 交换机必须确切地知道如何处理接收到的消息,包括如下几条:
    • 消息是否应该添加到到特定队列

    • 消息是否应该应添加到多个队列

    • 消息是否应该被丢弃

  4. Queue:队列是一个存储消息的缓冲区
  5. Consumer:消费者是接收消息的用户应用程序

安装和启动

Docker启动

直接使用docker run来启动一个image

TIP

  • 3.13-management版本自带了web管理界面,web界面的端口号默认是15672

  • MQ服务默认端口号是5672

shell
docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.13-management
 

或者使用docker-compose

shell
version: "2.8"
 services:
   RabbitMQ:
diff --git "a/assets/knowledge-deposition_RabbitMQ_\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\345\256\211\350\243\205\345\220\257\345\212\250.md.c32d0ef9.lean.js" "b/assets/knowledge-deposition_RabbitMQ_\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\345\256\211\350\243\205\345\220\257\345\212\250.md.6cb56022.lean.js"
similarity index 95%
rename from "assets/knowledge-deposition_RabbitMQ_\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\345\256\211\350\243\205\345\220\257\345\212\250.md.c32d0ef9.lean.js"
rename to "assets/knowledge-deposition_RabbitMQ_\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\345\256\211\350\243\205\345\220\257\345\212\250.md.6cb56022.lean.js"
index d4ede461..4900599f 100644
--- "a/assets/knowledge-deposition_RabbitMQ_\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\345\256\211\350\243\205\345\220\257\345\212\250.md.c32d0ef9.lean.js"
+++ "b/assets/knowledge-deposition_RabbitMQ_\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\345\256\211\350\243\205\345\220\257\345\212\250.md.6cb56022.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"安装启动和基本使用","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"简介","slug":"简介","link":"#简介","children":[]},{"level":2,"title":"核心概念","slug":"核心概念","link":"#核心概念","children":[]},{"level":2,"title":"安装和启动","slug":"安装和启动","link":"#安装和启动","children":[{"level":3,"title":"Docker启动","slug":"docker启动","link":"#docker启动","children":[]},{"level":3,"title":"使用homebrew安装启动教程","slug":"使用homebrew安装启动教程","link":"#使用homebrew安装启动教程","children":[]}]},{"level":2,"title":"简单示例","slug":"简单示例","link":"#简单示例","children":[{"level":3,"title":"生产者(Producer)","slug":"生产者-producer","link":"#生产者-producer","children":[]},{"level":3,"title":"消费者/接收者(Consumer)","slug":"消费者-接收者-consumer","link":"#消费者-接收者-consumer","children":[]}]},{"level":2,"title":"完整代码","slug":"完整代码","link":"#完整代码","children":[]}],"relativePath":"knowledge-deposition/RabbitMQ/基本概念和安装启动.md"}'),o={name:"knowledge-deposition/RabbitMQ/基本概念和安装启动.md"},p=l("",55),e=[p];function t(c,r,D,y,F,C){return a(),n("div",null,e)}const d=s(o,[["render",t]]);export{i as __pageData,d as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"安装启动和基本使用","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"简介","slug":"简介","link":"#简介","children":[]},{"level":2,"title":"核心概念","slug":"核心概念","link":"#核心概念","children":[]},{"level":2,"title":"安装和启动","slug":"安装和启动","link":"#安装和启动","children":[{"level":3,"title":"Docker启动","slug":"docker启动","link":"#docker启动","children":[]},{"level":3,"title":"使用homebrew安装启动教程","slug":"使用homebrew安装启动教程","link":"#使用homebrew安装启动教程","children":[]}]},{"level":2,"title":"简单示例","slug":"简单示例","link":"#简单示例","children":[{"level":3,"title":"生产者(Producer)","slug":"生产者-producer","link":"#生产者-producer","children":[]},{"level":3,"title":"消费者/接收者(Consumer)","slug":"消费者-接收者-consumer","link":"#消费者-接收者-consumer","children":[]}]},{"level":2,"title":"完整代码","slug":"完整代码","link":"#完整代码","children":[]}],"relativePath":"knowledge-deposition/RabbitMQ/基本概念和安装启动.md"}'),o={name:"knowledge-deposition/RabbitMQ/基本概念和安装启动.md"},p=l("",55),e=[p];function t(c,r,D,y,F,C){return a(),n("div",null,e)}const d=s(o,[["render",t]]);export{i as __pageData,d as default};
diff --git "a/assets/knowledge-deposition_RabbitMQ_\345\267\245\344\275\234\351\230\237\345\210\227.md.85802e77.js" "b/assets/knowledge-deposition_RabbitMQ_\345\267\245\344\275\234\351\230\237\345\210\227.md.a5fe2f92.js"
similarity index 99%
rename from "assets/knowledge-deposition_RabbitMQ_\345\267\245\344\275\234\351\230\237\345\210\227.md.85802e77.js"
rename to "assets/knowledge-deposition_RabbitMQ_\345\267\245\344\275\234\351\230\237\345\210\227.md.a5fe2f92.js"
index 3e3b6d60..08b735a9 100644
--- "a/assets/knowledge-deposition_RabbitMQ_\345\267\245\344\275\234\351\230\237\345\210\227.md.85802e77.js"
+++ "b/assets/knowledge-deposition_RabbitMQ_\345\267\245\344\275\234\351\230\237\345\210\227.md.a5fe2f92.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"工作队列","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"循环分发消息","slug":"循环分发消息","link":"#循环分发消息","children":[]},{"level":2,"title":"消息确认","slug":"消息确认","link":"#消息确认","children":[]},{"level":2,"title":"消息持久化","slug":"消息持久化","link":"#消息持久化","children":[]}],"relativePath":"knowledge-deposition/RabbitMQ/工作队列.md"}'),o={name:"knowledge-deposition/RabbitMQ/工作队列.md"},p=l(`

工作队列

循环分发消息

默认情况下,RabbitMQ将按顺序将每条消息发送给下一个消费者,每个Consumer将收到相同数量的消息,这种分发消息的方式称为循环轮询

我们可以同时开启多个协程去消费消息来测试这一特性,消费消息的我们称之为worker

写一个通用的接收消息的通用函数consumeMessage(worker.go),然后开启3个协程去消费消息

可以看到,每个message被消费后,会等待一段时间,才能去消费下一个消息(消息文案中包含几个.,就等待10-.的个数秒)

Go
for i := 1; i <= 3; i++ {
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"工作队列","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"循环分发消息","slug":"循环分发消息","link":"#循环分发消息","children":[]},{"level":2,"title":"消息确认","slug":"消息确认","link":"#消息确认","children":[]},{"level":2,"title":"消息持久化","slug":"消息持久化","link":"#消息持久化","children":[]}],"relativePath":"knowledge-deposition/RabbitMQ/工作队列.md"}'),o={name:"knowledge-deposition/RabbitMQ/工作队列.md"},p=l(`

工作队列

循环分发消息

默认情况下,RabbitMQ将按顺序将每条消息发送给下一个消费者,每个Consumer将收到相同数量的消息,这种分发消息的方式称为循环轮询

我们可以同时开启多个协程去消费消息来测试这一特性,消费消息的我们称之为worker

写一个通用的接收消息的通用函数consumeMessage(worker.go),然后开启3个协程去消费消息

可以看到,每个message被消费后,会等待一段时间,才能去消费下一个消息(消息文案中包含几个.,就等待10-.的个数秒)

Go
for i := 1; i <= 3; i++ {
     go consumeMessage(ch, queue.Name, i)
 }
 func consumeMessage(ch *amqp.Channel, queueName string, serialNumber int) {
diff --git "a/assets/knowledge-deposition_RabbitMQ_\345\267\245\344\275\234\351\230\237\345\210\227.md.85802e77.lean.js" "b/assets/knowledge-deposition_RabbitMQ_\345\267\245\344\275\234\351\230\237\345\210\227.md.a5fe2f92.lean.js"
similarity index 91%
rename from "assets/knowledge-deposition_RabbitMQ_\345\267\245\344\275\234\351\230\237\345\210\227.md.85802e77.lean.js"
rename to "assets/knowledge-deposition_RabbitMQ_\345\267\245\344\275\234\351\230\237\345\210\227.md.a5fe2f92.lean.js"
index d41dacc2..c099e0d5 100644
--- "a/assets/knowledge-deposition_RabbitMQ_\345\267\245\344\275\234\351\230\237\345\210\227.md.85802e77.lean.js"
+++ "b/assets/knowledge-deposition_RabbitMQ_\345\267\245\344\275\234\351\230\237\345\210\227.md.a5fe2f92.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const i=JSON.parse('{"title":"工作队列","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"循环分发消息","slug":"循环分发消息","link":"#循环分发消息","children":[]},{"level":2,"title":"消息确认","slug":"消息确认","link":"#消息确认","children":[]},{"level":2,"title":"消息持久化","slug":"消息持久化","link":"#消息持久化","children":[]}],"relativePath":"knowledge-deposition/RabbitMQ/工作队列.md"}'),o={name:"knowledge-deposition/RabbitMQ/工作队列.md"},p=l("",38),e=[p];function t(c,r,C,D,y,A){return a(),n("div",null,e)}const d=s(o,[["render",t]]);export{i as __pageData,d as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const i=JSON.parse('{"title":"工作队列","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"循环分发消息","slug":"循环分发消息","link":"#循环分发消息","children":[]},{"level":2,"title":"消息确认","slug":"消息确认","link":"#消息确认","children":[]},{"level":2,"title":"消息持久化","slug":"消息持久化","link":"#消息持久化","children":[]}],"relativePath":"knowledge-deposition/RabbitMQ/工作队列.md"}'),o={name:"knowledge-deposition/RabbitMQ/工作队列.md"},p=l("",38),e=[p];function t(c,r,C,D,y,A){return a(),n("div",null,e)}const d=s(o,[["render",t]]);export{i as __pageData,d as default};
diff --git a/assets/knowledge-deposition_SSH_ssh-base.md.3d12383a.js b/assets/knowledge-deposition_SSH_ssh-base.md.d799cb02.js
similarity index 99%
rename from assets/knowledge-deposition_SSH_ssh-base.md.3d12383a.js
rename to assets/knowledge-deposition_SSH_ssh-base.md.d799cb02.js
index 9778a39a..7e122614 100644
--- a/assets/knowledge-deposition_SSH_ssh-base.md.3d12383a.js
+++ b/assets/knowledge-deposition_SSH_ssh-base.md.d799cb02.js
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const D=JSON.parse('{"title":"SSH相关基础","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"简介","slug":"简介","link":"#简介","children":[]},{"level":2,"title":"登录服务器","slug":"登录服务器","link":"#登录服务器","children":[{"level":3,"title":"通过密码登录","slug":"通过密码登录","link":"#通过密码登录","children":[]},{"level":3,"title":"修改密钥权限,以防他人读取","slug":"修改密钥权限-以防他人读取","link":"#修改密钥权限-以防他人读取","children":[]},{"level":3,"title":"通过自定义配置文件快速登录","slug":"通过自定义配置文件快速登录","link":"#通过自定义配置文件快速登录","children":[]},{"level":3,"title":"通过密钥登录","slug":"通过密钥登录","link":"#通过密钥登录","children":[]},{"level":3,"title":"关闭密码登录","slug":"关闭密码登录","link":"#关闭密码登录","children":[]}]},{"level":2,"title":"自动上传公钥","slug":"自动上传公钥","link":"#自动上传公钥","children":[]},{"level":2,"title":"SSH配置相关文件解析","slug":"ssh配置相关文件解析","link":"#ssh配置相关文件解析","children":[]},{"level":2,"title":"ssh-keygen命令常用参数解析","slug":"ssh-keygen命令常用参数解析","link":"#ssh-keygen命令常用参数解析","children":[{"level":3,"title":"-b指定密钥的二进制位数","slug":"b指定密钥的二进制位数","link":"#b指定密钥的二进制位数","children":[]},{"level":3,"title":"-C为密钥文件指定新的注释","slug":"c为密钥文件指定新的注释","link":"#c为密钥文件指定新的注释","children":[]},{"level":3,"title":"-f指定生成的密钥文件路径","slug":"f指定生成的密钥文件路径","link":"#f指定生成的密钥文件路径","children":[]},{"level":3,"title":"-F查询是否存在某个服务","slug":"f查询是否存在某个服务","link":"#f查询是否存在某个服务","children":[]},{"level":3,"title":"-R 删除某个服务","slug":"r-删除某个服务","link":"#r-删除某个服务","children":[]},{"level":3,"title":"-t 指定生成密钥的算法","slug":"t-指定生成密钥的算法","link":"#t-指定生成密钥的算法","children":[]}]},{"level":2,"title":"配置多个ssh-key适配github多账号","slug":"配置多个ssh-key适配github多账号","link":"#配置多个ssh-key适配github多账号","children":[]}],"relativePath":"knowledge-deposition/SSH/ssh-base.md"}'),e={name:"knowledge-deposition/SSH/ssh-base.md"},o=l(`

SSH相关基础

简介

SSHLinux系统的登录工具,广泛用于服务器登录和各种加密通信。

OpenSSH的客户端是二进制程序ssh。它在 Linux/Unix系统的位置是/usr/bin/ssh

Linux一般都自带ssh,如果没有可以安装。

shell
# Ubuntu 和 Debian
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const D=JSON.parse('{"title":"SSH相关基础","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"简介","slug":"简介","link":"#简介","children":[]},{"level":2,"title":"登录服务器","slug":"登录服务器","link":"#登录服务器","children":[{"level":3,"title":"通过密码登录","slug":"通过密码登录","link":"#通过密码登录","children":[]},{"level":3,"title":"修改密钥权限,以防他人读取","slug":"修改密钥权限-以防他人读取","link":"#修改密钥权限-以防他人读取","children":[]},{"level":3,"title":"通过自定义配置文件快速登录","slug":"通过自定义配置文件快速登录","link":"#通过自定义配置文件快速登录","children":[]},{"level":3,"title":"通过密钥登录","slug":"通过密钥登录","link":"#通过密钥登录","children":[]},{"level":3,"title":"关闭密码登录","slug":"关闭密码登录","link":"#关闭密码登录","children":[]}]},{"level":2,"title":"自动上传公钥","slug":"自动上传公钥","link":"#自动上传公钥","children":[]},{"level":2,"title":"SSH配置相关文件解析","slug":"ssh配置相关文件解析","link":"#ssh配置相关文件解析","children":[]},{"level":2,"title":"ssh-keygen命令常用参数解析","slug":"ssh-keygen命令常用参数解析","link":"#ssh-keygen命令常用参数解析","children":[{"level":3,"title":"-b指定密钥的二进制位数","slug":"b指定密钥的二进制位数","link":"#b指定密钥的二进制位数","children":[]},{"level":3,"title":"-C为密钥文件指定新的注释","slug":"c为密钥文件指定新的注释","link":"#c为密钥文件指定新的注释","children":[]},{"level":3,"title":"-f指定生成的密钥文件路径","slug":"f指定生成的密钥文件路径","link":"#f指定生成的密钥文件路径","children":[]},{"level":3,"title":"-F查询是否存在某个服务","slug":"f查询是否存在某个服务","link":"#f查询是否存在某个服务","children":[]},{"level":3,"title":"-R 删除某个服务","slug":"r-删除某个服务","link":"#r-删除某个服务","children":[]},{"level":3,"title":"-t 指定生成密钥的算法","slug":"t-指定生成密钥的算法","link":"#t-指定生成密钥的算法","children":[]}]},{"level":2,"title":"配置多个ssh-key适配github多账号","slug":"配置多个ssh-key适配github多账号","link":"#配置多个ssh-key适配github多账号","children":[]}],"relativePath":"knowledge-deposition/SSH/ssh-base.md"}'),e={name:"knowledge-deposition/SSH/ssh-base.md"},o=l(`

SSH相关基础

简介

SSHLinux系统的登录工具,广泛用于服务器登录和各种加密通信。

OpenSSH的客户端是二进制程序ssh。它在 Linux/Unix系统的位置是/usr/bin/ssh

Linux一般都自带ssh,如果没有可以安装。

shell
# Ubuntu 和 Debian
 sudo apt install openssh-client
 # Centos
 sudo dnf install openssh-clients
diff --git a/assets/knowledge-deposition_SSH_ssh-base.md.3d12383a.lean.js b/assets/knowledge-deposition_SSH_ssh-base.md.d799cb02.lean.js
similarity index 97%
rename from assets/knowledge-deposition_SSH_ssh-base.md.3d12383a.lean.js
rename to assets/knowledge-deposition_SSH_ssh-base.md.d799cb02.lean.js
index b9a54023..e7255c3d 100644
--- a/assets/knowledge-deposition_SSH_ssh-base.md.3d12383a.lean.js
+++ b/assets/knowledge-deposition_SSH_ssh-base.md.d799cb02.lean.js
@@ -1 +1 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const D=JSON.parse('{"title":"SSH相关基础","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"简介","slug":"简介","link":"#简介","children":[]},{"level":2,"title":"登录服务器","slug":"登录服务器","link":"#登录服务器","children":[{"level":3,"title":"通过密码登录","slug":"通过密码登录","link":"#通过密码登录","children":[]},{"level":3,"title":"修改密钥权限,以防他人读取","slug":"修改密钥权限-以防他人读取","link":"#修改密钥权限-以防他人读取","children":[]},{"level":3,"title":"通过自定义配置文件快速登录","slug":"通过自定义配置文件快速登录","link":"#通过自定义配置文件快速登录","children":[]},{"level":3,"title":"通过密钥登录","slug":"通过密钥登录","link":"#通过密钥登录","children":[]},{"level":3,"title":"关闭密码登录","slug":"关闭密码登录","link":"#关闭密码登录","children":[]}]},{"level":2,"title":"自动上传公钥","slug":"自动上传公钥","link":"#自动上传公钥","children":[]},{"level":2,"title":"SSH配置相关文件解析","slug":"ssh配置相关文件解析","link":"#ssh配置相关文件解析","children":[]},{"level":2,"title":"ssh-keygen命令常用参数解析","slug":"ssh-keygen命令常用参数解析","link":"#ssh-keygen命令常用参数解析","children":[{"level":3,"title":"-b指定密钥的二进制位数","slug":"b指定密钥的二进制位数","link":"#b指定密钥的二进制位数","children":[]},{"level":3,"title":"-C为密钥文件指定新的注释","slug":"c为密钥文件指定新的注释","link":"#c为密钥文件指定新的注释","children":[]},{"level":3,"title":"-f指定生成的密钥文件路径","slug":"f指定生成的密钥文件路径","link":"#f指定生成的密钥文件路径","children":[]},{"level":3,"title":"-F查询是否存在某个服务","slug":"f查询是否存在某个服务","link":"#f查询是否存在某个服务","children":[]},{"level":3,"title":"-R 删除某个服务","slug":"r-删除某个服务","link":"#r-删除某个服务","children":[]},{"level":3,"title":"-t 指定生成密钥的算法","slug":"t-指定生成密钥的算法","link":"#t-指定生成密钥的算法","children":[]}]},{"level":2,"title":"配置多个ssh-key适配github多账号","slug":"配置多个ssh-key适配github多账号","link":"#配置多个ssh-key适配github多账号","children":[]}],"relativePath":"knowledge-deposition/SSH/ssh-base.md"}'),e={name:"knowledge-deposition/SSH/ssh-base.md"},o=l("",78),p=[o];function c(t,i,r,d,C,y){return n(),a("div",null,p)}const A=s(e,[["render",c]]);export{D as __pageData,A as default};
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const D=JSON.parse('{"title":"SSH相关基础","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"简介","slug":"简介","link":"#简介","children":[]},{"level":2,"title":"登录服务器","slug":"登录服务器","link":"#登录服务器","children":[{"level":3,"title":"通过密码登录","slug":"通过密码登录","link":"#通过密码登录","children":[]},{"level":3,"title":"修改密钥权限,以防他人读取","slug":"修改密钥权限-以防他人读取","link":"#修改密钥权限-以防他人读取","children":[]},{"level":3,"title":"通过自定义配置文件快速登录","slug":"通过自定义配置文件快速登录","link":"#通过自定义配置文件快速登录","children":[]},{"level":3,"title":"通过密钥登录","slug":"通过密钥登录","link":"#通过密钥登录","children":[]},{"level":3,"title":"关闭密码登录","slug":"关闭密码登录","link":"#关闭密码登录","children":[]}]},{"level":2,"title":"自动上传公钥","slug":"自动上传公钥","link":"#自动上传公钥","children":[]},{"level":2,"title":"SSH配置相关文件解析","slug":"ssh配置相关文件解析","link":"#ssh配置相关文件解析","children":[]},{"level":2,"title":"ssh-keygen命令常用参数解析","slug":"ssh-keygen命令常用参数解析","link":"#ssh-keygen命令常用参数解析","children":[{"level":3,"title":"-b指定密钥的二进制位数","slug":"b指定密钥的二进制位数","link":"#b指定密钥的二进制位数","children":[]},{"level":3,"title":"-C为密钥文件指定新的注释","slug":"c为密钥文件指定新的注释","link":"#c为密钥文件指定新的注释","children":[]},{"level":3,"title":"-f指定生成的密钥文件路径","slug":"f指定生成的密钥文件路径","link":"#f指定生成的密钥文件路径","children":[]},{"level":3,"title":"-F查询是否存在某个服务","slug":"f查询是否存在某个服务","link":"#f查询是否存在某个服务","children":[]},{"level":3,"title":"-R 删除某个服务","slug":"r-删除某个服务","link":"#r-删除某个服务","children":[]},{"level":3,"title":"-t 指定生成密钥的算法","slug":"t-指定生成密钥的算法","link":"#t-指定生成密钥的算法","children":[]}]},{"level":2,"title":"配置多个ssh-key适配github多账号","slug":"配置多个ssh-key适配github多账号","link":"#配置多个ssh-key适配github多账号","children":[]}],"relativePath":"knowledge-deposition/SSH/ssh-base.md"}'),e={name:"knowledge-deposition/SSH/ssh-base.md"},o=l("",78),p=[o];function c(t,i,r,d,C,y){return n(),a("div",null,p)}const A=s(e,[["render",c]]);export{D as __pageData,A as default};
diff --git "a/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Babel_Babel\345\237\272\347\241\200.md.9049b4d3.js" "b/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Babel_Babel\345\237\272\347\241\200.md.2232aa4e.js"
similarity index 99%
rename from "assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Babel_Babel\345\237\272\347\241\200.md.9049b4d3.js"
rename to "assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Babel_Babel\345\237\272\347\241\200.md.2232aa4e.js"
index ba914746..580feed6 100644
--- "a/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Babel_Babel\345\237\272\347\241\200.md.9049b4d3.js"
+++ "b/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Babel_Babel\345\237\272\347\241\200.md.2232aa4e.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as l,e as n}from"./app.fa87702c.js";const A=JSON.parse('{"title":"Babel基础","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"相关工具文档","slug":"相关工具文档","link":"#相关工具文档","children":[]},{"level":2,"title":"相关Api","slug":"相关api","link":"#相关api","children":[{"level":3,"title":"Visitor","slug":"visitor","link":"#visitor","children":[]},{"level":3,"title":"Path","slug":"path","link":"#path","children":[]},{"level":3,"title":"Scope(作用域)","slug":"scope-作用域","link":"#scope-作用域","children":[]}]},{"level":2,"title":"插件选项","slug":"插件选项","link":"#插件选项","children":[{"level":3,"title":"插件编写和调用几种方法","slug":"插件编写和调用几种方法","link":"#插件编写和调用几种方法","children":[]}]},{"level":2,"title":"相关网站","slug":"相关网站","link":"#相关网站","children":[]}],"relativePath":"knowledge-deposition/前端工程化/Babel/Babel基础.md"}'),o={name:"knowledge-deposition/前端工程化/Babel/Babel基础.md"},e=n(`

Babel基础

相关工具文档

  • babylon

    • BabylonBabel的解析器。最初是Acorn的一份fork,它非常快,易于使用,并且针对非标准特性(以及那些未来的标准特性)设计了一个基于插件的架构。
  • @babel/traverse

    • Babel Tranverse(遍历)模块维护了整棵树的状态,并且负责替换、移除和添加节点。
  • @babel/types

    • babel-types-api文档
    • Babel Types(类型)模块是一个用于AST节点的Lodash式工具库。 它包含了构造验证以及变换AST节点的方法。 其设计周到的工具方法有助于编写清晰简单的AST逻辑。
  • @babel/generator

    • Babel GeneratorBabel代码生成器。它将AST输出为代码并包括源码映射(sourcemaps)
  • @babel/template

    • Babel Template 模块是一个很小但却非常有用的模块。它能让你编写带有占位符的字符串形式的代码,你可以用此来替代大量的手工构建的AST

相关Api

Visitor

  • visitor是一个对象,对象中定义了用于获取AST中具体节点的方法,例如ImportDeclarationCallExpression等等
javascript
const addCodePlugin = ({types}) => {
+import{_ as s,c as a,o as l,e as n}from"./app.2f6419f0.js";const A=JSON.parse('{"title":"Babel基础","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"相关工具文档","slug":"相关工具文档","link":"#相关工具文档","children":[]},{"level":2,"title":"相关Api","slug":"相关api","link":"#相关api","children":[{"level":3,"title":"Visitor","slug":"visitor","link":"#visitor","children":[]},{"level":3,"title":"Path","slug":"path","link":"#path","children":[]},{"level":3,"title":"Scope(作用域)","slug":"scope-作用域","link":"#scope-作用域","children":[]}]},{"level":2,"title":"插件选项","slug":"插件选项","link":"#插件选项","children":[{"level":3,"title":"插件编写和调用几种方法","slug":"插件编写和调用几种方法","link":"#插件编写和调用几种方法","children":[]}]},{"level":2,"title":"相关网站","slug":"相关网站","link":"#相关网站","children":[]}],"relativePath":"knowledge-deposition/前端工程化/Babel/Babel基础.md"}'),o={name:"knowledge-deposition/前端工程化/Babel/Babel基础.md"},e=n(`

Babel基础

相关工具文档

  • babylon

    • BabylonBabel的解析器。最初是Acorn的一份fork,它非常快,易于使用,并且针对非标准特性(以及那些未来的标准特性)设计了一个基于插件的架构。
  • @babel/traverse

    • Babel Tranverse(遍历)模块维护了整棵树的状态,并且负责替换、移除和添加节点。
  • @babel/types

    • babel-types-api文档
    • Babel Types(类型)模块是一个用于AST节点的Lodash式工具库。 它包含了构造验证以及变换AST节点的方法。 其设计周到的工具方法有助于编写清晰简单的AST逻辑。
  • @babel/generator

    • Babel GeneratorBabel代码生成器。它将AST输出为代码并包括源码映射(sourcemaps)
  • @babel/template

    • Babel Template 模块是一个很小但却非常有用的模块。它能让你编写带有占位符的字符串形式的代码,你可以用此来替代大量的手工构建的AST

相关Api

Visitor

  • visitor是一个对象,对象中定义了用于获取AST中具体节点的方法,例如ImportDeclarationCallExpression等等
javascript
const addCodePlugin = ({types}) => {
     return {
         visitor: {
             ImportDeclaration(path) {
diff --git "a/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Babel_Babel\345\237\272\347\241\200.md.9049b4d3.lean.js" "b/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Babel_Babel\345\237\272\347\241\200.md.2232aa4e.lean.js"
similarity index 94%
rename from "assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Babel_Babel\345\237\272\347\241\200.md.9049b4d3.lean.js"
rename to "assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Babel_Babel\345\237\272\347\241\200.md.2232aa4e.lean.js"
index 9dc8eadf..6f2bf13e 100644
--- "a/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Babel_Babel\345\237\272\347\241\200.md.9049b4d3.lean.js"
+++ "b/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Babel_Babel\345\237\272\347\241\200.md.2232aa4e.lean.js"
@@ -1 +1 @@
-import{_ as s,c as a,o as l,e as n}from"./app.fa87702c.js";const A=JSON.parse('{"title":"Babel基础","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"相关工具文档","slug":"相关工具文档","link":"#相关工具文档","children":[]},{"level":2,"title":"相关Api","slug":"相关api","link":"#相关api","children":[{"level":3,"title":"Visitor","slug":"visitor","link":"#visitor","children":[]},{"level":3,"title":"Path","slug":"path","link":"#path","children":[]},{"level":3,"title":"Scope(作用域)","slug":"scope-作用域","link":"#scope-作用域","children":[]}]},{"level":2,"title":"插件选项","slug":"插件选项","link":"#插件选项","children":[{"level":3,"title":"插件编写和调用几种方法","slug":"插件编写和调用几种方法","link":"#插件编写和调用几种方法","children":[]}]},{"level":2,"title":"相关网站","slug":"相关网站","link":"#相关网站","children":[]}],"relativePath":"knowledge-deposition/前端工程化/Babel/Babel基础.md"}'),o={name:"knowledge-deposition/前端工程化/Babel/Babel基础.md"},e=n("",22),p=[e];function t(c,r,i,y,D,F){return l(),a("div",null,p)}const C=s(o,[["render",t]]);export{A as __pageData,C as default};
+import{_ as s,c as a,o as l,e as n}from"./app.2f6419f0.js";const A=JSON.parse('{"title":"Babel基础","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"相关工具文档","slug":"相关工具文档","link":"#相关工具文档","children":[]},{"level":2,"title":"相关Api","slug":"相关api","link":"#相关api","children":[{"level":3,"title":"Visitor","slug":"visitor","link":"#visitor","children":[]},{"level":3,"title":"Path","slug":"path","link":"#path","children":[]},{"level":3,"title":"Scope(作用域)","slug":"scope-作用域","link":"#scope-作用域","children":[]}]},{"level":2,"title":"插件选项","slug":"插件选项","link":"#插件选项","children":[{"level":3,"title":"插件编写和调用几种方法","slug":"插件编写和调用几种方法","link":"#插件编写和调用几种方法","children":[]}]},{"level":2,"title":"相关网站","slug":"相关网站","link":"#相关网站","children":[]}],"relativePath":"knowledge-deposition/前端工程化/Babel/Babel基础.md"}'),o={name:"knowledge-deposition/前端工程化/Babel/Babel基础.md"},e=n("",22),p=[e];function t(c,r,i,y,D,F){return l(),a("div",null,p)}const C=s(o,[["render",t]]);export{A as __pageData,C as default};
diff --git "a/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_Rollup\347\232\204\346\217\222\344\273\266\346\234\272\345\210\266.md.ac77f04e.js" "b/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_Rollup\347\232\204\346\217\222\344\273\266\346\234\272\345\210\266.md.f12c69b8.js"
similarity index 99%
rename from "assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_Rollup\347\232\204\346\217\222\344\273\266\346\234\272\345\210\266.md.ac77f04e.js"
rename to "assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_Rollup\347\232\204\346\217\222\344\273\266\346\234\272\345\210\266.md.f12c69b8.js"
index ce85a281..f9f22288 100644
--- "a/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_Rollup\347\232\204\346\217\222\344\273\266\346\234\272\345\210\266.md.ac77f04e.js"
+++ "b/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_Rollup\347\232\204\346\217\222\344\273\266\346\234\272\345\210\266.md.f12c69b8.js"
@@ -1,4 +1,4 @@
-import{_ as o,c as e,o as l,e as c}from"./app.fa87702c.js";const s="/static-blog/image/Vite/rollup-plugin/1.png",a="/static-blog/image/Vite/rollup-plugin/2.png",D=JSON.parse('{"title":"Rollup的插件机制","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"Rollup 整体构建阶段","slug":"rollup-整体构建阶段","link":"#rollup-整体构建阶段","children":[]},{"level":2,"title":"插件Hook分类","slug":"插件hook分类","link":"#插件hook分类","children":[{"level":3,"title":"根据构建阶段分类","slug":"根据构建阶段分类","link":"#根据构建阶段分类","children":[]},{"level":3,"title":"根据Hook的执行方式分类","slug":"根据hook的执行方式分类","link":"#根据hook的执行方式分类","children":[]},{"level":3,"title":"拓展","slug":"拓展","link":"#拓展","children":[]}]},{"level":2,"title":"插件工作流","slug":"插件工作流","link":"#插件工作流","children":[{"level":3,"title":"Build阶段工作流","slug":"build阶段工作流","link":"#build阶段工作流","children":[]},{"level":3,"title":"Output阶段工作流","slug":"output阶段工作流","link":"#output阶段工作流","children":[]}]}],"relativePath":"knowledge-deposition/前端工程化/Vite/Rollup的插件机制.md"}'),t={name:"knowledge-deposition/前端工程化/Vite/Rollup的插件机制.md"},d=c(`

Rollup的插件机制

类似于Vue、React,在Rollup中也有一套自己的生命周期,从打包开始到产物输出,在每个周期都会执行特有的钩子函数(Hook)

Rollup 整体构建阶段

Rollup主要经历了BuildOutput两个阶段

对于一次完整的构建过程而言,Rollup会先进入到Build阶段,解析各模块的内容依赖关系,然后进入Output阶段,完成打包及输出。在不同的阶段,插件会有不同的工作流程。

插件Hook分类

根据构建阶段分类

Rollup的主要构建有BuildOutput两大阶段,根据构建阶段分类,插件的Hook也可分为Build HookOutput Hook

  • Build Hook就是在Build阶段执行的钩子函数,在这个阶段主要进行模块代码的转换AST解析以及模块依赖的解析,那么这个阶段的Hook对于代码的操作粒度一般为模块级别,也就是单文件级别

  • Output Hook主要进行代码的打包,操作粒度一般为chunk级别(一个chunk通常指很多文件打包到一起的产物)。

根据Hook的执行方式分类

根据Hook的执行方式可以分为AsyncSyncParallelSequentialFirst这几类

Async & Sync

Async和Sync钩子函数分别代表异步同步的钩子函数,Async钩子需要返回一个Promise,否则该钩子会被认为是Sync同步钩子

First

如果多个插件都实现了该类型的Hook,那Hook将按顺序执行,直到其中一个Hook返回非null或者非undefined的值。

TIP

  • 比如resolveId这个Hook,如果多个插件都实现了这个hook,其中某个插件的resolveId函数返回了一个路径,将停止执行后续插件的resolveId方法

Sequential

  • 如果好几个插件实现了该Hook,它们将会按照指定的顺序执行,如果当前Hook是异步的,后续的Hook也要等待当前Hook的状态为resolved后才能执行

  • 这种类型的Hook也适用于当前插件的Hook依赖上一插件Hook的处理结果,要等上一个插件Hook处理完后才返回处理结果给当前插件的Hook。比如transform钩子函数

Parallel

  • 该类型的Hook是指可以并行执行的Hook,如果多个插件都实现了该类型的钩子函数,那么这些钩子函数可以同时执行。就算当前Hook是异步的,其他该类型的Hook也不会等待该Hook执行完毕,而是一起执行

TIP

比如在Build阶段的buildStart钩子,它的执行时机是在构建刚开始的时候,每个插件声明的buildStart函数可以做一些状态初始化操作,但这些插件之间的操作并不是相互依赖,是可以并发执行的,从而提升构建性能。反之,对于需要依赖其他插件处理结果的情况就不适合用Parallel钩子了,比如transform钩子函数。

拓展

Hook可以是一个函数,也可以是一个对象,如果是一个对象,则对象中必须要有一个handler函数,该函数其实相当于实际的Hook,使用对象时,可以在对象中添加一些可选项,如下:

  • order: "pre" | "post" | null

如果有多个Hook,可以通过order选项来设置Hook执行优先级,pre先执行,post后执行,如果不设置或者设置为null,将会在用户指定的位置执行

javascript
export default function resolveFirst() {
+import{_ as o,c as e,o as l,e as c}from"./app.2f6419f0.js";const s="/static-blog/image/Vite/rollup-plugin/1.png",a="/static-blog/image/Vite/rollup-plugin/2.png",D=JSON.parse('{"title":"Rollup的插件机制","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"Rollup 整体构建阶段","slug":"rollup-整体构建阶段","link":"#rollup-整体构建阶段","children":[]},{"level":2,"title":"插件Hook分类","slug":"插件hook分类","link":"#插件hook分类","children":[{"level":3,"title":"根据构建阶段分类","slug":"根据构建阶段分类","link":"#根据构建阶段分类","children":[]},{"level":3,"title":"根据Hook的执行方式分类","slug":"根据hook的执行方式分类","link":"#根据hook的执行方式分类","children":[]},{"level":3,"title":"拓展","slug":"拓展","link":"#拓展","children":[]}]},{"level":2,"title":"插件工作流","slug":"插件工作流","link":"#插件工作流","children":[{"level":3,"title":"Build阶段工作流","slug":"build阶段工作流","link":"#build阶段工作流","children":[]},{"level":3,"title":"Output阶段工作流","slug":"output阶段工作流","link":"#output阶段工作流","children":[]}]}],"relativePath":"knowledge-deposition/前端工程化/Vite/Rollup的插件机制.md"}'),t={name:"knowledge-deposition/前端工程化/Vite/Rollup的插件机制.md"},d=c(`

Rollup的插件机制

类似于Vue、React,在Rollup中也有一套自己的生命周期,从打包开始到产物输出,在每个周期都会执行特有的钩子函数(Hook)

Rollup 整体构建阶段

Rollup主要经历了BuildOutput两个阶段

对于一次完整的构建过程而言,Rollup会先进入到Build阶段,解析各模块的内容依赖关系,然后进入Output阶段,完成打包及输出。在不同的阶段,插件会有不同的工作流程。

插件Hook分类

根据构建阶段分类

Rollup的主要构建有BuildOutput两大阶段,根据构建阶段分类,插件的Hook也可分为Build HookOutput Hook

  • Build Hook就是在Build阶段执行的钩子函数,在这个阶段主要进行模块代码的转换AST解析以及模块依赖的解析,那么这个阶段的Hook对于代码的操作粒度一般为模块级别,也就是单文件级别

  • Output Hook主要进行代码的打包,操作粒度一般为chunk级别(一个chunk通常指很多文件打包到一起的产物)。

根据Hook的执行方式分类

根据Hook的执行方式可以分为AsyncSyncParallelSequentialFirst这几类

Async & Sync

Async和Sync钩子函数分别代表异步同步的钩子函数,Async钩子需要返回一个Promise,否则该钩子会被认为是Sync同步钩子

First

如果多个插件都实现了该类型的Hook,那Hook将按顺序执行,直到其中一个Hook返回非null或者非undefined的值。

TIP

  • 比如resolveId这个Hook,如果多个插件都实现了这个hook,其中某个插件的resolveId函数返回了一个路径,将停止执行后续插件的resolveId方法

Sequential

  • 如果好几个插件实现了该Hook,它们将会按照指定的顺序执行,如果当前Hook是异步的,后续的Hook也要等待当前Hook的状态为resolved后才能执行

  • 这种类型的Hook也适用于当前插件的Hook依赖上一插件Hook的处理结果,要等上一个插件Hook处理完后才返回处理结果给当前插件的Hook。比如transform钩子函数

Parallel

  • 该类型的Hook是指可以并行执行的Hook,如果多个插件都实现了该类型的钩子函数,那么这些钩子函数可以同时执行。就算当前Hook是异步的,其他该类型的Hook也不会等待该Hook执行完毕,而是一起执行

TIP

比如在Build阶段的buildStart钩子,它的执行时机是在构建刚开始的时候,每个插件声明的buildStart函数可以做一些状态初始化操作,但这些插件之间的操作并不是相互依赖,是可以并发执行的,从而提升构建性能。反之,对于需要依赖其他插件处理结果的情况就不适合用Parallel钩子了,比如transform钩子函数。

拓展

Hook可以是一个函数,也可以是一个对象,如果是一个对象,则对象中必须要有一个handler函数,该函数其实相当于实际的Hook,使用对象时,可以在对象中添加一些可选项,如下:

  • order: "pre" | "post" | null

如果有多个Hook,可以通过order选项来设置Hook执行优先级,pre先执行,post后执行,如果不设置或者设置为null,将会在用户指定的位置执行

javascript
export default function resolveFirst() {
 	return {
 		name: 'resolve-first',
 		resolveId: {
diff --git "a/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_Rollup\347\232\204\346\217\222\344\273\266\346\234\272\345\210\266.md.ac77f04e.lean.js" "b/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_Rollup\347\232\204\346\217\222\344\273\266\346\234\272\345\210\266.md.f12c69b8.lean.js"
similarity index 95%
rename from "assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_Rollup\347\232\204\346\217\222\344\273\266\346\234\272\345\210\266.md.ac77f04e.lean.js"
rename to "assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_Rollup\347\232\204\346\217\222\344\273\266\346\234\272\345\210\266.md.f12c69b8.lean.js"
index 5515c2f8..70fa2f8c 100644
--- "a/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_Rollup\347\232\204\346\217\222\344\273\266\346\234\272\345\210\266.md.ac77f04e.lean.js"
+++ "b/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_Rollup\347\232\204\346\217\222\344\273\266\346\234\272\345\210\266.md.f12c69b8.lean.js"
@@ -1 +1 @@
-import{_ as o,c as e,o as l,e as c}from"./app.fa87702c.js";const s="/static-blog/image/Vite/rollup-plugin/1.png",a="/static-blog/image/Vite/rollup-plugin/2.png",D=JSON.parse('{"title":"Rollup的插件机制","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"Rollup 整体构建阶段","slug":"rollup-整体构建阶段","link":"#rollup-整体构建阶段","children":[]},{"level":2,"title":"插件Hook分类","slug":"插件hook分类","link":"#插件hook分类","children":[{"level":3,"title":"根据构建阶段分类","slug":"根据构建阶段分类","link":"#根据构建阶段分类","children":[]},{"level":3,"title":"根据Hook的执行方式分类","slug":"根据hook的执行方式分类","link":"#根据hook的执行方式分类","children":[]},{"level":3,"title":"拓展","slug":"拓展","link":"#拓展","children":[]}]},{"level":2,"title":"插件工作流","slug":"插件工作流","link":"#插件工作流","children":[{"level":3,"title":"Build阶段工作流","slug":"build阶段工作流","link":"#build阶段工作流","children":[]},{"level":3,"title":"Output阶段工作流","slug":"output阶段工作流","link":"#output阶段工作流","children":[]}]}],"relativePath":"knowledge-deposition/前端工程化/Vite/Rollup的插件机制.md"}'),t={name:"knowledge-deposition/前端工程化/Vite/Rollup的插件机制.md"},d=c("",47),n=[d];function p(r,i,u,h,k,F){return l(),e("div",null,n)}const H=o(t,[["render",p]]);export{D as __pageData,H as default};
+import{_ as o,c as e,o as l,e as c}from"./app.2f6419f0.js";const s="/static-blog/image/Vite/rollup-plugin/1.png",a="/static-blog/image/Vite/rollup-plugin/2.png",D=JSON.parse('{"title":"Rollup的插件机制","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"Rollup 整体构建阶段","slug":"rollup-整体构建阶段","link":"#rollup-整体构建阶段","children":[]},{"level":2,"title":"插件Hook分类","slug":"插件hook分类","link":"#插件hook分类","children":[{"level":3,"title":"根据构建阶段分类","slug":"根据构建阶段分类","link":"#根据构建阶段分类","children":[]},{"level":3,"title":"根据Hook的执行方式分类","slug":"根据hook的执行方式分类","link":"#根据hook的执行方式分类","children":[]},{"level":3,"title":"拓展","slug":"拓展","link":"#拓展","children":[]}]},{"level":2,"title":"插件工作流","slug":"插件工作流","link":"#插件工作流","children":[{"level":3,"title":"Build阶段工作流","slug":"build阶段工作流","link":"#build阶段工作流","children":[]},{"level":3,"title":"Output阶段工作流","slug":"output阶段工作流","link":"#output阶段工作流","children":[]}]}],"relativePath":"knowledge-deposition/前端工程化/Vite/Rollup的插件机制.md"}'),t={name:"knowledge-deposition/前端工程化/Vite/Rollup的插件机制.md"},d=c("",47),n=[d];function p(r,i,u,h,k,F){return l(),e("div",null,n)}const H=o(t,[["render",p]]);export{D as __pageData,H as default};
diff --git "a/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_Vite\346\217\222\344\273\266\346\234\272\345\210\266.md.8a636ac7.js" "b/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_Vite\346\217\222\344\273\266\346\234\272\345\210\266.md.01d21411.js"
similarity index 99%
rename from "assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_Vite\346\217\222\344\273\266\346\234\272\345\210\266.md.8a636ac7.js"
rename to "assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_Vite\346\217\222\344\273\266\346\234\272\345\210\266.md.01d21411.js"
index f1a854d0..245b1d0d 100644
--- "a/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_Vite\346\217\222\344\273\266\346\234\272\345\210\266.md.8a636ac7.js"
+++ "b/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_Vite\346\217\222\344\273\266\346\234\272\345\210\266.md.01d21411.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const A=JSON.parse('{"title":"Vite插件机制","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"通用hook","slug":"通用hook","link":"#通用hook","children":[]},{"level":2,"title":"Vite独有的Hook","slug":"vite独有的hook","link":"#vite独有的hook","children":[{"level":3,"title":"config","slug":"config","link":"#config","children":[]},{"level":3,"title":"configResolved","slug":"configresolved","link":"#configresolved","children":[]},{"level":3,"title":"configureServer","slug":"configureserver","link":"#configureserver","children":[]},{"level":3,"title":"configurePreviewServer","slug":"configurepreviewserver","link":"#configurepreviewserver","children":[]},{"level":3,"title":"transformIndexHtml","slug":"transformindexhtml","link":"#transformindexhtml","children":[]},{"level":3,"title":"handleHotUpdate","slug":"handlehotupdate","link":"#handlehotupdate","children":[]}]},{"level":2,"title":"插件执行顺序","slug":"插件执行顺序","link":"#插件执行顺序","children":[]},{"level":2,"title":"插件Hook执行顺序","slug":"插件hook执行顺序","link":"#插件hook执行顺序","children":[]},{"level":2,"title":"插件应用条件","slug":"插件应用条件","link":"#插件应用条件","children":[]}],"relativePath":"knowledge-deposition/前端工程化/Vite/Vite插件机制.md"}'),o={name:"knowledge-deposition/前端工程化/Vite/Vite插件机制.md"},p=l(`

Vite插件机制

Vite的插件机制是基于Rollup来设计的,同时它也扩展了Rollup的插件接口,新增了一些特定于Vite的选项。所以,只需编写一次Vite插件,就可以让它同时适用于开发和构建。

通用hook

Vite在开发阶段会模拟Rollup的行为,Vite Dev Server会创建一个插件容器,以Rollup相同的方式调用Rollup Build Hooks,这些调用主要分为三个阶段:

  1. 服务器启动阶段: 在此阶段,optionsbuildStart Hook会被调用。
  2. 请求响应阶段: 当浏览器发起请求时,Vite 内部依次调用resolveIdloadtransform Hook。
  3. 服务器关闭阶段: 在此阶段,Vite会依次调用buildEndcloseBundle Hook。

TIP

  • 为了避免完整的AST解析以获得更好的性能,Vite在dev开发阶段没有调用moduleParsed Hook。
  • 在Vite dev开发阶段,除了closeBundle Hook,Rollup的Output Generation Hooks都没有被调用,我们可以认为Vite dev server只调用了rollup.rollup(),并没有调用bundle.generate()

Vite独有的Hook

这些Hook只会在Vite内部调用

config

Vite在读取完配置文件(vite.config.ts/vite.config.js和CLI选项的合并)之后,会拿到用户导出的配置对象,然后会执行config Hook。在这个Hook里面,我们可以对配置文件导出的对象进行自定义的操作。

该Hook可以返回部分配置对象,返回的对象将会和已存在的配置进行深度合并,也可以直接修改配置对象

如下两种情况:第一种返回部分配置对象,第二种直接对配置的某些属性进行修改

javascript
// return partial config (recommended)
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const A=JSON.parse('{"title":"Vite插件机制","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"通用hook","slug":"通用hook","link":"#通用hook","children":[]},{"level":2,"title":"Vite独有的Hook","slug":"vite独有的hook","link":"#vite独有的hook","children":[{"level":3,"title":"config","slug":"config","link":"#config","children":[]},{"level":3,"title":"configResolved","slug":"configresolved","link":"#configresolved","children":[]},{"level":3,"title":"configureServer","slug":"configureserver","link":"#configureserver","children":[]},{"level":3,"title":"configurePreviewServer","slug":"configurepreviewserver","link":"#configurepreviewserver","children":[]},{"level":3,"title":"transformIndexHtml","slug":"transformindexhtml","link":"#transformindexhtml","children":[]},{"level":3,"title":"handleHotUpdate","slug":"handlehotupdate","link":"#handlehotupdate","children":[]}]},{"level":2,"title":"插件执行顺序","slug":"插件执行顺序","link":"#插件执行顺序","children":[]},{"level":2,"title":"插件Hook执行顺序","slug":"插件hook执行顺序","link":"#插件hook执行顺序","children":[]},{"level":2,"title":"插件应用条件","slug":"插件应用条件","link":"#插件应用条件","children":[]}],"relativePath":"knowledge-deposition/前端工程化/Vite/Vite插件机制.md"}'),o={name:"knowledge-deposition/前端工程化/Vite/Vite插件机制.md"},p=l(`

Vite插件机制

Vite的插件机制是基于Rollup来设计的,同时它也扩展了Rollup的插件接口,新增了一些特定于Vite的选项。所以,只需编写一次Vite插件,就可以让它同时适用于开发和构建。

通用hook

Vite在开发阶段会模拟Rollup的行为,Vite Dev Server会创建一个插件容器,以Rollup相同的方式调用Rollup Build Hooks,这些调用主要分为三个阶段:

  1. 服务器启动阶段: 在此阶段,optionsbuildStart Hook会被调用。
  2. 请求响应阶段: 当浏览器发起请求时,Vite 内部依次调用resolveIdloadtransform Hook。
  3. 服务器关闭阶段: 在此阶段,Vite会依次调用buildEndcloseBundle Hook。

TIP

  • 为了避免完整的AST解析以获得更好的性能,Vite在dev开发阶段没有调用moduleParsed Hook。
  • 在Vite dev开发阶段,除了closeBundle Hook,Rollup的Output Generation Hooks都没有被调用,我们可以认为Vite dev server只调用了rollup.rollup(),并没有调用bundle.generate()

Vite独有的Hook

这些Hook只会在Vite内部调用

config

Vite在读取完配置文件(vite.config.ts/vite.config.js和CLI选项的合并)之后,会拿到用户导出的配置对象,然后会执行config Hook。在这个Hook里面,我们可以对配置文件导出的对象进行自定义的操作。

该Hook可以返回部分配置对象,返回的对象将会和已存在的配置进行深度合并,也可以直接修改配置对象

如下两种情况:第一种返回部分配置对象,第二种直接对配置的某些属性进行修改

javascript
// return partial config (recommended)
 const partialConfigPlugin = () => ({
   name: 'return-partial',
   config: () => ({
diff --git "a/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_Vite\346\217\222\344\273\266\346\234\272\345\210\266.md.8a636ac7.lean.js" "b/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_Vite\346\217\222\344\273\266\346\234\272\345\210\266.md.01d21411.lean.js"
similarity index 96%
rename from "assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_Vite\346\217\222\344\273\266\346\234\272\345\210\266.md.8a636ac7.lean.js"
rename to "assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_Vite\346\217\222\344\273\266\346\234\272\345\210\266.md.01d21411.lean.js"
index e01c41ea..5b58a411 100644
--- "a/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_Vite\346\217\222\344\273\266\346\234\272\345\210\266.md.8a636ac7.lean.js"
+++ "b/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_Vite\346\217\222\344\273\266\346\234\272\345\210\266.md.01d21411.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const A=JSON.parse('{"title":"Vite插件机制","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"通用hook","slug":"通用hook","link":"#通用hook","children":[]},{"level":2,"title":"Vite独有的Hook","slug":"vite独有的hook","link":"#vite独有的hook","children":[{"level":3,"title":"config","slug":"config","link":"#config","children":[]},{"level":3,"title":"configResolved","slug":"configresolved","link":"#configresolved","children":[]},{"level":3,"title":"configureServer","slug":"configureserver","link":"#configureserver","children":[]},{"level":3,"title":"configurePreviewServer","slug":"configurepreviewserver","link":"#configurepreviewserver","children":[]},{"level":3,"title":"transformIndexHtml","slug":"transformindexhtml","link":"#transformindexhtml","children":[]},{"level":3,"title":"handleHotUpdate","slug":"handlehotupdate","link":"#handlehotupdate","children":[]}]},{"level":2,"title":"插件执行顺序","slug":"插件执行顺序","link":"#插件执行顺序","children":[]},{"level":2,"title":"插件Hook执行顺序","slug":"插件hook执行顺序","link":"#插件hook执行顺序","children":[]},{"level":2,"title":"插件应用条件","slug":"插件应用条件","link":"#插件应用条件","children":[]}],"relativePath":"knowledge-deposition/前端工程化/Vite/Vite插件机制.md"}'),o={name:"knowledge-deposition/前端工程化/Vite/Vite插件机制.md"},p=l("",54),e=[p];function t(r,c,y,D,F,i){return a(),n("div",null,e)}const d=s(o,[["render",t]]);export{A as __pageData,d as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const A=JSON.parse('{"title":"Vite插件机制","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"通用hook","slug":"通用hook","link":"#通用hook","children":[]},{"level":2,"title":"Vite独有的Hook","slug":"vite独有的hook","link":"#vite独有的hook","children":[{"level":3,"title":"config","slug":"config","link":"#config","children":[]},{"level":3,"title":"configResolved","slug":"configresolved","link":"#configresolved","children":[]},{"level":3,"title":"configureServer","slug":"configureserver","link":"#configureserver","children":[]},{"level":3,"title":"configurePreviewServer","slug":"configurepreviewserver","link":"#configurepreviewserver","children":[]},{"level":3,"title":"transformIndexHtml","slug":"transformindexhtml","link":"#transformindexhtml","children":[]},{"level":3,"title":"handleHotUpdate","slug":"handlehotupdate","link":"#handlehotupdate","children":[]}]},{"level":2,"title":"插件执行顺序","slug":"插件执行顺序","link":"#插件执行顺序","children":[]},{"level":2,"title":"插件Hook执行顺序","slug":"插件hook执行顺序","link":"#插件hook执行顺序","children":[]},{"level":2,"title":"插件应用条件","slug":"插件应用条件","link":"#插件应用条件","children":[]}],"relativePath":"knowledge-deposition/前端工程化/Vite/Vite插件机制.md"}'),o={name:"knowledge-deposition/前端工程化/Vite/Vite插件机制.md"},p=l("",54),e=[p];function t(r,c,y,D,F,i){return a(),n("div",null,e)}const d=s(o,[["render",t]]);export{A as __pageData,d as default};
diff --git "a/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_esbuild\347\233\270\345\205\263.md.9cfd1156.js" "b/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_esbuild\347\233\270\345\205\263.md.2d45112d.js"
similarity index 99%
rename from "assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_esbuild\347\233\270\345\205\263.md.9cfd1156.js"
rename to "assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_esbuild\347\233\270\345\205\263.md.2d45112d.js"
index 2a80e009..bc1e83a0 100644
--- "a/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_esbuild\347\233\270\345\205\263.md.9cfd1156.js"
+++ "b/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_esbuild\347\233\270\345\205\263.md.2d45112d.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const p="/static-blog/image/Vite/usage-esbuild/1.png",o="/static-blog/image/Vite/usage-esbuild/2.png",e="/static-blog/image/Vite/usage-esbuild/3.png",t="/static-blog/image/Vite/usage-esbuild/4.png",c="/static-blog/image/Vite/usage-esbuild/5.png",r="/static-blog/image/Vite/usage-esbuild/6.png",f=JSON.parse('{"title":"esbuild相关","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"esbuild使用","slug":"esbuild使用","link":"#esbuild使用","children":[]},{"level":2,"title":"命令行调用","slug":"命令行调用","link":"#命令行调用","children":[]},{"level":2,"title":"代码调用","slug":"代码调用","link":"#代码调用","children":[{"level":3,"title":"Build API","slug":"build-api","link":"#build-api","children":[]},{"level":3,"title":"Transform API","slug":"transform-api","link":"#transform-api","children":[]}]},{"level":2,"title":"esbuild插件","slug":"esbuild插件","link":"#esbuild插件","children":[{"level":3,"title":"概念","slug":"概念","link":"#概念","children":[]},{"level":3,"title":"插件示例","slug":"插件示例","link":"#插件示例","children":[]}]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[]}],"relativePath":"knowledge-deposition/前端工程化/Vite/esbuild相关.md"}'),y={name:"knowledge-deposition/前端工程化/Vite/esbuild相关.md"},F=l(`

esbuild相关

esbuild使用

先初始化一个项目

shell
pnpm init
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const p="/static-blog/image/Vite/usage-esbuild/1.png",o="/static-blog/image/Vite/usage-esbuild/2.png",e="/static-blog/image/Vite/usage-esbuild/3.png",t="/static-blog/image/Vite/usage-esbuild/4.png",c="/static-blog/image/Vite/usage-esbuild/5.png",r="/static-blog/image/Vite/usage-esbuild/6.png",f=JSON.parse('{"title":"esbuild相关","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"esbuild使用","slug":"esbuild使用","link":"#esbuild使用","children":[]},{"level":2,"title":"命令行调用","slug":"命令行调用","link":"#命令行调用","children":[]},{"level":2,"title":"代码调用","slug":"代码调用","link":"#代码调用","children":[{"level":3,"title":"Build API","slug":"build-api","link":"#build-api","children":[]},{"level":3,"title":"Transform API","slug":"transform-api","link":"#transform-api","children":[]}]},{"level":2,"title":"esbuild插件","slug":"esbuild插件","link":"#esbuild插件","children":[{"level":3,"title":"概念","slug":"概念","link":"#概念","children":[]},{"level":3,"title":"插件示例","slug":"插件示例","link":"#插件示例","children":[]}]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[]}],"relativePath":"knowledge-deposition/前端工程化/Vite/esbuild相关.md"}'),y={name:"knowledge-deposition/前端工程化/Vite/esbuild相关.md"},F=l(`

esbuild相关

esbuild使用

先初始化一个项目

shell
pnpm init
 

安装依赖

shell
pnpm install esbuild -D
 pnpm install react react-dom
 

创建src/index.jsx

jsx
import * as React from 'react'
diff --git "a/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_esbuild\347\233\270\345\205\263.md.9cfd1156.lean.js" "b/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_esbuild\347\233\270\345\205\263.md.2d45112d.lean.js"
similarity index 95%
rename from "assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_esbuild\347\233\270\345\205\263.md.9cfd1156.lean.js"
rename to "assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_esbuild\347\233\270\345\205\263.md.2d45112d.lean.js"
index 3623415c..3fb9c095 100644
--- "a/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_esbuild\347\233\270\345\205\263.md.9cfd1156.lean.js"
+++ "b/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_esbuild\347\233\270\345\205\263.md.2d45112d.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const p="/static-blog/image/Vite/usage-esbuild/1.png",o="/static-blog/image/Vite/usage-esbuild/2.png",e="/static-blog/image/Vite/usage-esbuild/3.png",t="/static-blog/image/Vite/usage-esbuild/4.png",c="/static-blog/image/Vite/usage-esbuild/5.png",r="/static-blog/image/Vite/usage-esbuild/6.png",f=JSON.parse('{"title":"esbuild相关","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"esbuild使用","slug":"esbuild使用","link":"#esbuild使用","children":[]},{"level":2,"title":"命令行调用","slug":"命令行调用","link":"#命令行调用","children":[]},{"level":2,"title":"代码调用","slug":"代码调用","link":"#代码调用","children":[{"level":3,"title":"Build API","slug":"build-api","link":"#build-api","children":[]},{"level":3,"title":"Transform API","slug":"transform-api","link":"#transform-api","children":[]}]},{"level":2,"title":"esbuild插件","slug":"esbuild插件","link":"#esbuild插件","children":[{"level":3,"title":"概念","slug":"概念","link":"#概念","children":[]},{"level":3,"title":"插件示例","slug":"插件示例","link":"#插件示例","children":[]}]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[]}],"relativePath":"knowledge-deposition/前端工程化/Vite/esbuild相关.md"}'),y={name:"knowledge-deposition/前端工程化/Vite/esbuild相关.md"},F=l("",169),D=[F];function i(C,A,d,u,h,g){return a(),n("div",null,D)}const m=s(y,[["render",i]]);export{f as __pageData,m as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const p="/static-blog/image/Vite/usage-esbuild/1.png",o="/static-blog/image/Vite/usage-esbuild/2.png",e="/static-blog/image/Vite/usage-esbuild/3.png",t="/static-blog/image/Vite/usage-esbuild/4.png",c="/static-blog/image/Vite/usage-esbuild/5.png",r="/static-blog/image/Vite/usage-esbuild/6.png",f=JSON.parse('{"title":"esbuild相关","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"esbuild使用","slug":"esbuild使用","link":"#esbuild使用","children":[]},{"level":2,"title":"命令行调用","slug":"命令行调用","link":"#命令行调用","children":[]},{"level":2,"title":"代码调用","slug":"代码调用","link":"#代码调用","children":[{"level":3,"title":"Build API","slug":"build-api","link":"#build-api","children":[]},{"level":3,"title":"Transform API","slug":"transform-api","link":"#transform-api","children":[]}]},{"level":2,"title":"esbuild插件","slug":"esbuild插件","link":"#esbuild插件","children":[{"level":3,"title":"概念","slug":"概念","link":"#概念","children":[]},{"level":3,"title":"插件示例","slug":"插件示例","link":"#插件示例","children":[]}]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[]}],"relativePath":"knowledge-deposition/前端工程化/Vite/esbuild相关.md"}'),y={name:"knowledge-deposition/前端工程化/Vite/esbuild相关.md"},F=l("",169),D=[F];function i(C,A,d,u,h,g){return a(),n("div",null,D)}const m=s(y,[["render",i]]);export{f as __pageData,m as default};
diff --git "a/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\344\276\235\350\265\226\351\242\204\346\236\204\345\273\272.md.ef6a2ed6.js" "b/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\344\276\235\350\265\226\351\242\204\346\236\204\345\273\272.md.d0d5392f.js"
similarity index 99%
rename from "assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\344\276\235\350\265\226\351\242\204\346\236\204\345\273\272.md.ef6a2ed6.js"
rename to "assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\344\276\235\350\265\226\351\242\204\346\236\204\345\273\272.md.d0d5392f.js"
index 21f6757b..d159799a 100644
--- "a/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\344\276\235\350\265\226\351\242\204\346\236\204\345\273\272.md.ef6a2ed6.js"
+++ "b/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\344\276\235\350\265\226\351\242\204\346\236\204\345\273\272.md.d0d5392f.js"
@@ -1,4 +1,4 @@
-import{_ as e,c as s,o,e as l}from"./app.fa87702c.js";const a="/static-blog/image/Vite/pre-built/1.png",n="/static-blog/image/Vite/pre-built/2.png",p="/static-blog/image/Vite/pre-built/4.png",c="/static-blog/image/Vite/pre-built/5.png",t="/static-blog/image/Vite/pre-built/6.png",g=JSON.parse('{"title":"依赖预构建","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"为什么需要依赖预构建","slug":"为什么需要依赖预构建","link":"#为什么需要依赖预构建","children":[]},{"level":2,"title":"依赖预构建相关配置","slug":"依赖预构建相关配置","link":"#依赖预构建相关配置","children":[{"level":3,"title":"optimizeDeps.entries","slug":"optimizedeps-entries","link":"#optimizedeps-entries","children":[]},{"level":3,"title":"optimizeDeps.exclude","slug":"optimizedeps-exclude","link":"#optimizedeps-exclude","children":[]},{"level":3,"title":"optimizeDeps.include","slug":"optimizedeps-include","link":"#optimizedeps-include","children":[]},{"level":3,"title":"optimizeDeps.esbuildOptions","slug":"optimizedeps-esbuildoptions","link":"#optimizedeps-esbuildoptions","children":[]},{"level":3,"title":"optimizeDeps.force","slug":"optimizedeps-force","link":"#optimizedeps-force","children":[]},{"level":3,"title":"optimizeDeps.disabled","slug":"optimizedeps-disabled","link":"#optimizedeps-disabled","children":[]}]},{"level":2,"title":"缓存","slug":"缓存","link":"#缓存","children":[{"level":3,"title":"文件系统缓存","slug":"文件系统缓存","link":"#文件系统缓存","children":[]},{"level":3,"title":"浏览器缓存","slug":"浏览器缓存","link":"#浏览器缓存","children":[]}]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[]}],"relativePath":"knowledge-deposition/前端工程化/Vite/依赖预构建.md"}'),i={name:"knowledge-deposition/前端工程化/Vite/依赖预构建.md"},d=l(`

依赖预构建

Vite是一个提倡no-boundle的构建工具,相比于Webpack,可以做到开发时模块按需编译,这里的模块分为两部分

  • 一部分是自己写的业务代码

  • 一部分是依赖的第三方库,即node_modules中的第三方库的代码

TIP

  • Vite中的no-bundle只是针对于自己写的业务代码,对于依赖的第三方库Vite选择使用esbuild进行bundle(打包)

  • 依赖预构建仅作用于开发环境,使用esbuild将依赖转换为ES Module规范,在生产环境中,使用@rollup/plugin-commonjs代替

为什么需要依赖预构建

  • 统一项目依赖库的导入/导出规范:当项目中有依赖库是非ES Module的语法,例如CommonJSUMD语法时,Vite会调用esbuild将其转换为ES Module规范的代码

react这个库就没有ES版本的产物,其仍旧是commonjs语法

  • 方便路径重写,统一项目中第三方模块的导入路径:在依赖预构建时,对导入的第三方包进行统一处理,处理后的结果放到当前项目的node_modules/.vite/deps目录下,并且在引入该模块的地方进行路径重写,这样就统一所有资源的引入路径
js
// 路径重写前
+import{_ as e,c as s,o,e as l}from"./app.2f6419f0.js";const a="/static-blog/image/Vite/pre-built/1.png",n="/static-blog/image/Vite/pre-built/2.png",p="/static-blog/image/Vite/pre-built/4.png",c="/static-blog/image/Vite/pre-built/5.png",t="/static-blog/image/Vite/pre-built/6.png",g=JSON.parse('{"title":"依赖预构建","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"为什么需要依赖预构建","slug":"为什么需要依赖预构建","link":"#为什么需要依赖预构建","children":[]},{"level":2,"title":"依赖预构建相关配置","slug":"依赖预构建相关配置","link":"#依赖预构建相关配置","children":[{"level":3,"title":"optimizeDeps.entries","slug":"optimizedeps-entries","link":"#optimizedeps-entries","children":[]},{"level":3,"title":"optimizeDeps.exclude","slug":"optimizedeps-exclude","link":"#optimizedeps-exclude","children":[]},{"level":3,"title":"optimizeDeps.include","slug":"optimizedeps-include","link":"#optimizedeps-include","children":[]},{"level":3,"title":"optimizeDeps.esbuildOptions","slug":"optimizedeps-esbuildoptions","link":"#optimizedeps-esbuildoptions","children":[]},{"level":3,"title":"optimizeDeps.force","slug":"optimizedeps-force","link":"#optimizedeps-force","children":[]},{"level":3,"title":"optimizeDeps.disabled","slug":"optimizedeps-disabled","link":"#optimizedeps-disabled","children":[]}]},{"level":2,"title":"缓存","slug":"缓存","link":"#缓存","children":[{"level":3,"title":"文件系统缓存","slug":"文件系统缓存","link":"#文件系统缓存","children":[]},{"level":3,"title":"浏览器缓存","slug":"浏览器缓存","link":"#浏览器缓存","children":[]}]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[]}],"relativePath":"knowledge-deposition/前端工程化/Vite/依赖预构建.md"}'),i={name:"knowledge-deposition/前端工程化/Vite/依赖预构建.md"},d=l(`

依赖预构建

Vite是一个提倡no-boundle的构建工具,相比于Webpack,可以做到开发时模块按需编译,这里的模块分为两部分

  • 一部分是自己写的业务代码

  • 一部分是依赖的第三方库,即node_modules中的第三方库的代码

TIP

  • Vite中的no-bundle只是针对于自己写的业务代码,对于依赖的第三方库Vite选择使用esbuild进行bundle(打包)

  • 依赖预构建仅作用于开发环境,使用esbuild将依赖转换为ES Module规范,在生产环境中,使用@rollup/plugin-commonjs代替

为什么需要依赖预构建

  • 统一项目依赖库的导入/导出规范:当项目中有依赖库是非ES Module的语法,例如CommonJSUMD语法时,Vite会调用esbuild将其转换为ES Module规范的代码

react这个库就没有ES版本的产物,其仍旧是commonjs语法

  • 方便路径重写,统一项目中第三方模块的导入路径:在依赖预构建时,对导入的第三方包进行统一处理,处理后的结果放到当前项目的node_modules/.vite/deps目录下,并且在引入该模块的地方进行路径重写,这样就统一所有资源的引入路径
js
// 路径重写前
 import _ from 'lodash-es';
 // 路径重写之后
 import _ from "/node_modules/.vite/deps/lodash-es.js?v=a2b41ab7"
diff --git "a/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\344\276\235\350\265\226\351\242\204\346\236\204\345\273\272.md.ef6a2ed6.lean.js" "b/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\344\276\235\350\265\226\351\242\204\346\236\204\345\273\272.md.d0d5392f.lean.js"
similarity index 96%
rename from "assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\344\276\235\350\265\226\351\242\204\346\236\204\345\273\272.md.ef6a2ed6.lean.js"
rename to "assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\344\276\235\350\265\226\351\242\204\346\236\204\345\273\272.md.d0d5392f.lean.js"
index 258f2a7a..8b69a165 100644
--- "a/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\344\276\235\350\265\226\351\242\204\346\236\204\345\273\272.md.ef6a2ed6.lean.js"
+++ "b/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\344\276\235\350\265\226\351\242\204\346\236\204\345\273\272.md.d0d5392f.lean.js"
@@ -1 +1 @@
-import{_ as e,c as s,o,e as l}from"./app.fa87702c.js";const a="/static-blog/image/Vite/pre-built/1.png",n="/static-blog/image/Vite/pre-built/2.png",p="/static-blog/image/Vite/pre-built/4.png",c="/static-blog/image/Vite/pre-built/5.png",t="/static-blog/image/Vite/pre-built/6.png",g=JSON.parse('{"title":"依赖预构建","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"为什么需要依赖预构建","slug":"为什么需要依赖预构建","link":"#为什么需要依赖预构建","children":[]},{"level":2,"title":"依赖预构建相关配置","slug":"依赖预构建相关配置","link":"#依赖预构建相关配置","children":[{"level":3,"title":"optimizeDeps.entries","slug":"optimizedeps-entries","link":"#optimizedeps-entries","children":[]},{"level":3,"title":"optimizeDeps.exclude","slug":"optimizedeps-exclude","link":"#optimizedeps-exclude","children":[]},{"level":3,"title":"optimizeDeps.include","slug":"optimizedeps-include","link":"#optimizedeps-include","children":[]},{"level":3,"title":"optimizeDeps.esbuildOptions","slug":"optimizedeps-esbuildoptions","link":"#optimizedeps-esbuildoptions","children":[]},{"level":3,"title":"optimizeDeps.force","slug":"optimizedeps-force","link":"#optimizedeps-force","children":[]},{"level":3,"title":"optimizeDeps.disabled","slug":"optimizedeps-disabled","link":"#optimizedeps-disabled","children":[]}]},{"level":2,"title":"缓存","slug":"缓存","link":"#缓存","children":[{"level":3,"title":"文件系统缓存","slug":"文件系统缓存","link":"#文件系统缓存","children":[]},{"level":3,"title":"浏览器缓存","slug":"浏览器缓存","link":"#浏览器缓存","children":[]}]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[]}],"relativePath":"knowledge-deposition/前端工程化/Vite/依赖预构建.md"}'),i={name:"knowledge-deposition/前端工程化/Vite/依赖预构建.md"},d=l("",71),r=[d];function D(y,F,u,h,m,b){return o(),s("div",null,r)}const A=e(i,[["render",D]]);export{g as __pageData,A as default};
+import{_ as e,c as s,o,e as l}from"./app.2f6419f0.js";const a="/static-blog/image/Vite/pre-built/1.png",n="/static-blog/image/Vite/pre-built/2.png",p="/static-blog/image/Vite/pre-built/4.png",c="/static-blog/image/Vite/pre-built/5.png",t="/static-blog/image/Vite/pre-built/6.png",g=JSON.parse('{"title":"依赖预构建","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"为什么需要依赖预构建","slug":"为什么需要依赖预构建","link":"#为什么需要依赖预构建","children":[]},{"level":2,"title":"依赖预构建相关配置","slug":"依赖预构建相关配置","link":"#依赖预构建相关配置","children":[{"level":3,"title":"optimizeDeps.entries","slug":"optimizedeps-entries","link":"#optimizedeps-entries","children":[]},{"level":3,"title":"optimizeDeps.exclude","slug":"optimizedeps-exclude","link":"#optimizedeps-exclude","children":[]},{"level":3,"title":"optimizeDeps.include","slug":"optimizedeps-include","link":"#optimizedeps-include","children":[]},{"level":3,"title":"optimizeDeps.esbuildOptions","slug":"optimizedeps-esbuildoptions","link":"#optimizedeps-esbuildoptions","children":[]},{"level":3,"title":"optimizeDeps.force","slug":"optimizedeps-force","link":"#optimizedeps-force","children":[]},{"level":3,"title":"optimizeDeps.disabled","slug":"optimizedeps-disabled","link":"#optimizedeps-disabled","children":[]}]},{"level":2,"title":"缓存","slug":"缓存","link":"#缓存","children":[{"level":3,"title":"文件系统缓存","slug":"文件系统缓存","link":"#文件系统缓存","children":[]},{"level":3,"title":"浏览器缓存","slug":"浏览器缓存","link":"#浏览器缓存","children":[]}]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[]}],"relativePath":"knowledge-deposition/前端工程化/Vite/依赖预构建.md"}'),i={name:"knowledge-deposition/前端工程化/Vite/依赖预构建.md"},d=l("",71),r=[d];function D(y,F,u,h,m,b){return o(),s("div",null,r)}const A=e(i,[["render",D]]);export{g as __pageData,A as default};
diff --git "a/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\210\235\344\275\223\351\252\214.md.26d99830.js" "b/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\210\235\344\275\223\351\252\214.md.bdf756d7.js"
similarity index 99%
rename from "assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\210\235\344\275\223\351\252\214.md.26d99830.js"
rename to "assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\210\235\344\275\223\351\252\214.md.bdf756d7.js"
index 6fb9d61d..f1a3c365 100644
--- "a/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\210\235\344\275\223\351\252\214.md.26d99830.js"
+++ "b/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\210\235\344\275\223\351\252\214.md.bdf756d7.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const o="/static-blog/image/Vite/1.png",p="/static-blog/image/Vite/2.png",u=JSON.parse('{"title":"初体验","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"Introduction","slug":"introduction","link":"#introduction","children":[]},{"level":2,"title":"创建项目并启动","slug":"创建项目并启动","link":"#创建项目并启动","children":[]},{"level":2,"title":"修改入口路径","slug":"修改入口路径","link":"#修改入口路径","children":[]},{"level":2,"title":"引入第三方模块","slug":"引入第三方模块","link":"#引入第三方模块","children":[]},{"level":2,"title":"vite.config.js语法提示","slug":"vite-config-js语法提示","link":"#vite-config-js语法提示","children":[]},{"level":2,"title":"vite.config.js中为什么可以用esmodule语法","slug":"vite-config-js中为什么可以用esmodule语法","link":"#vite-config-js中为什么可以用esmodule语法","children":[]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[]}],"relativePath":"knowledge-deposition/前端工程化/Vite/初体验.md"}'),e={name:"knowledge-deposition/前端工程化/Vite/初体验.md"},t=l(`

初体验

Introduction

  • Vite是一个开箱即用(out of box)构建工具,不需要使用额外配置就可以帮助我们处理构建工作。

  • Vite开发阶段基于浏览器原生ESM的支持实现了no-bundle服务,进行模块的按需加载,开发环境使用esbuild打包,提高构建速度

  • Vite生产环境中使用Rollup进行打包,并采取一系列的打包优化手段

创建项目并启动

创建一个空项目initial_experience,使用pnpm init初始化项目,然后下载Vite

shell
mkdir initial_experience
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const o="/static-blog/image/Vite/1.png",p="/static-blog/image/Vite/2.png",u=JSON.parse('{"title":"初体验","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"Introduction","slug":"introduction","link":"#introduction","children":[]},{"level":2,"title":"创建项目并启动","slug":"创建项目并启动","link":"#创建项目并启动","children":[]},{"level":2,"title":"修改入口路径","slug":"修改入口路径","link":"#修改入口路径","children":[]},{"level":2,"title":"引入第三方模块","slug":"引入第三方模块","link":"#引入第三方模块","children":[]},{"level":2,"title":"vite.config.js语法提示","slug":"vite-config-js语法提示","link":"#vite-config-js语法提示","children":[]},{"level":2,"title":"vite.config.js中为什么可以用esmodule语法","slug":"vite-config-js中为什么可以用esmodule语法","link":"#vite-config-js中为什么可以用esmodule语法","children":[]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[]}],"relativePath":"knowledge-deposition/前端工程化/Vite/初体验.md"}'),e={name:"knowledge-deposition/前端工程化/Vite/初体验.md"},t=l(`

初体验

Introduction

  • Vite是一个开箱即用(out of box)构建工具,不需要使用额外配置就可以帮助我们处理构建工作。

  • Vite开发阶段基于浏览器原生ESM的支持实现了no-bundle服务,进行模块的按需加载,开发环境使用esbuild打包,提高构建速度

  • Vite生产环境中使用Rollup进行打包,并采取一系列的打包优化手段

创建项目并启动

创建一个空项目initial_experience,使用pnpm init初始化项目,然后下载Vite

shell
mkdir initial_experience
 cd initial_experience
 pnpm init
 pnpm install vite
diff --git "a/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\210\235\344\275\223\351\252\214.md.26d99830.lean.js" "b/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\210\235\344\275\223\351\252\214.md.bdf756d7.lean.js"
similarity index 95%
rename from "assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\210\235\344\275\223\351\252\214.md.26d99830.lean.js"
rename to "assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\210\235\344\275\223\351\252\214.md.bdf756d7.lean.js"
index 39a7cf26..2976b03f 100644
--- "a/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\210\235\344\275\223\351\252\214.md.26d99830.lean.js"
+++ "b/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\210\235\344\275\223\351\252\214.md.bdf756d7.lean.js"
@@ -1 +1 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const o="/static-blog/image/Vite/1.png",p="/static-blog/image/Vite/2.png",u=JSON.parse('{"title":"初体验","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"Introduction","slug":"introduction","link":"#introduction","children":[]},{"level":2,"title":"创建项目并启动","slug":"创建项目并启动","link":"#创建项目并启动","children":[]},{"level":2,"title":"修改入口路径","slug":"修改入口路径","link":"#修改入口路径","children":[]},{"level":2,"title":"引入第三方模块","slug":"引入第三方模块","link":"#引入第三方模块","children":[]},{"level":2,"title":"vite.config.js语法提示","slug":"vite-config-js语法提示","link":"#vite-config-js语法提示","children":[]},{"level":2,"title":"vite.config.js中为什么可以用esmodule语法","slug":"vite-config-js中为什么可以用esmodule语法","link":"#vite-config-js中为什么可以用esmodule语法","children":[]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[]}],"relativePath":"knowledge-deposition/前端工程化/Vite/初体验.md"}'),e={name:"knowledge-deposition/前端工程化/Vite/初体验.md"},t=l("",50),c=[t];function r(i,D,y,F,d,C){return n(),a("div",null,c)}const h=s(e,[["render",r]]);export{u as __pageData,h as default};
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const o="/static-blog/image/Vite/1.png",p="/static-blog/image/Vite/2.png",u=JSON.parse('{"title":"初体验","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"Introduction","slug":"introduction","link":"#introduction","children":[]},{"level":2,"title":"创建项目并启动","slug":"创建项目并启动","link":"#创建项目并启动","children":[]},{"level":2,"title":"修改入口路径","slug":"修改入口路径","link":"#修改入口路径","children":[]},{"level":2,"title":"引入第三方模块","slug":"引入第三方模块","link":"#引入第三方模块","children":[]},{"level":2,"title":"vite.config.js语法提示","slug":"vite-config-js语法提示","link":"#vite-config-js语法提示","children":[]},{"level":2,"title":"vite.config.js中为什么可以用esmodule语法","slug":"vite-config-js中为什么可以用esmodule语法","link":"#vite-config-js中为什么可以用esmodule语法","children":[]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[]}],"relativePath":"knowledge-deposition/前端工程化/Vite/初体验.md"}'),e={name:"knowledge-deposition/前端工程化/Vite/初体验.md"},t=l("",50),c=[t];function r(i,D,y,F,d,C){return n(),a("div",null,c)}const h=s(e,[["render",r]]);export{u as __pageData,h as default};
diff --git "a/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\214\272\345\210\206\344\270\215\345\220\214\347\216\257\345\242\203.md.2a34f791.js" "b/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\214\272\345\210\206\344\270\215\345\220\214\347\216\257\345\242\203.md.6dabeac5.js"
similarity index 99%
rename from "assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\214\272\345\210\206\344\270\215\345\220\214\347\216\257\345\242\203.md.2a34f791.js"
rename to "assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\214\272\345\210\206\344\270\215\345\220\214\347\216\257\345\242\203.md.6dabeac5.js"
index d2c65af3..81a4f2a8 100644
--- "a/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\214\272\345\210\206\344\270\215\345\220\214\347\216\257\345\242\203.md.2a34f791.js"
+++ "b/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\214\272\345\210\206\344\270\215\345\220\214\347\216\257\345\242\203.md.6dabeac5.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const A=JSON.parse('{"title":"区分不同环境","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"根据启动命令","slug":"根据启动命令","link":"#根据启动命令","children":[]},{"level":2,"title":"根据环境变量","slug":"根据环境变量","link":"#根据环境变量","children":[{"level":3,"title":"在vite.config.js中获取环境变量","slug":"在vite-config-js中获取环境变量","link":"#在vite-config-js中获取环境变量","children":[]},{"level":3,"title":"在业务代码中获取环境变量","slug":"在业务代码中获取环境变量","link":"#在业务代码中获取环境变量","children":[]}]},{"level":2,"title":"环境变量相关配置","slug":"环境变量相关配置","link":"#环境变量相关配置","children":[]},{"level":2,"title":"添加其他环境","slug":"添加其他环境","link":"#添加其他环境","children":[]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[]}],"relativePath":"knowledge-deposition/前端工程化/Vite/区分不同环境.md"}'),o={name:"knowledge-deposition/前端工程化/Vite/区分不同环境.md"},p=l(`

区分不同环境

根据启动命令

先看下项目运行时会有哪些参数

package.jsonscripts中的命令

json
  "scripts": {
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const A=JSON.parse('{"title":"区分不同环境","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"根据启动命令","slug":"根据启动命令","link":"#根据启动命令","children":[]},{"level":2,"title":"根据环境变量","slug":"根据环境变量","link":"#根据环境变量","children":[{"level":3,"title":"在vite.config.js中获取环境变量","slug":"在vite-config-js中获取环境变量","link":"#在vite-config-js中获取环境变量","children":[]},{"level":3,"title":"在业务代码中获取环境变量","slug":"在业务代码中获取环境变量","link":"#在业务代码中获取环境变量","children":[]}]},{"level":2,"title":"环境变量相关配置","slug":"环境变量相关配置","link":"#环境变量相关配置","children":[]},{"level":2,"title":"添加其他环境","slug":"添加其他环境","link":"#添加其他环境","children":[]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[]}],"relativePath":"knowledge-deposition/前端工程化/Vite/区分不同环境.md"}'),o={name:"knowledge-deposition/前端工程化/Vite/区分不同环境.md"},p=l(`

区分不同环境

根据启动命令

先看下项目运行时会有哪些参数

package.jsonscripts中的命令

json
  "scripts": {
     "dev": "vite",
     "build": "vite build",
     "test": "echo \\"Error: no test specified\\" && exit 1"
diff --git "a/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\214\272\345\210\206\344\270\215\345\220\214\347\216\257\345\242\203.md.2a34f791.lean.js" "b/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\214\272\345\210\206\344\270\215\345\220\214\347\216\257\345\242\203.md.6dabeac5.lean.js"
similarity index 95%
rename from "assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\214\272\345\210\206\344\270\215\345\220\214\347\216\257\345\242\203.md.2a34f791.lean.js"
rename to "assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\214\272\345\210\206\344\270\215\345\220\214\347\216\257\345\242\203.md.6dabeac5.lean.js"
index bec5cb13..30476aea 100644
--- "a/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\214\272\345\210\206\344\270\215\345\220\214\347\216\257\345\242\203.md.2a34f791.lean.js"
+++ "b/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\214\272\345\210\206\344\270\215\345\220\214\347\216\257\345\242\203.md.6dabeac5.lean.js"
@@ -1 +1 @@
-import{_ as s,c as n,o as a,e as l}from"./app.fa87702c.js";const A=JSON.parse('{"title":"区分不同环境","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"根据启动命令","slug":"根据启动命令","link":"#根据启动命令","children":[]},{"level":2,"title":"根据环境变量","slug":"根据环境变量","link":"#根据环境变量","children":[{"level":3,"title":"在vite.config.js中获取环境变量","slug":"在vite-config-js中获取环境变量","link":"#在vite-config-js中获取环境变量","children":[]},{"level":3,"title":"在业务代码中获取环境变量","slug":"在业务代码中获取环境变量","link":"#在业务代码中获取环境变量","children":[]}]},{"level":2,"title":"环境变量相关配置","slug":"环境变量相关配置","link":"#环境变量相关配置","children":[]},{"level":2,"title":"添加其他环境","slug":"添加其他环境","link":"#添加其他环境","children":[]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[]}],"relativePath":"knowledge-deposition/前端工程化/Vite/区分不同环境.md"}'),o={name:"knowledge-deposition/前端工程化/Vite/区分不同环境.md"},p=l("",43),e=[p];function t(c,r,D,y,F,i){return a(),n("div",null,e)}const d=s(o,[["render",t]]);export{A as __pageData,d as default};
+import{_ as s,c as n,o as a,e as l}from"./app.2f6419f0.js";const A=JSON.parse('{"title":"区分不同环境","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"根据启动命令","slug":"根据启动命令","link":"#根据启动命令","children":[]},{"level":2,"title":"根据环境变量","slug":"根据环境变量","link":"#根据环境变量","children":[{"level":3,"title":"在vite.config.js中获取环境变量","slug":"在vite-config-js中获取环境变量","link":"#在vite-config-js中获取环境变量","children":[]},{"level":3,"title":"在业务代码中获取环境变量","slug":"在业务代码中获取环境变量","link":"#在业务代码中获取环境变量","children":[]}]},{"level":2,"title":"环境变量相关配置","slug":"环境变量相关配置","link":"#环境变量相关配置","children":[]},{"level":2,"title":"添加其他环境","slug":"添加其他环境","link":"#添加其他环境","children":[]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[]}],"relativePath":"knowledge-deposition/前端工程化/Vite/区分不同环境.md"}'),o={name:"knowledge-deposition/前端工程化/Vite/区分不同环境.md"},p=l("",43),e=[p];function t(c,r,D,y,F,i){return a(),n("div",null,e)}const d=s(o,[["render",t]]);export{A as __pageData,d as default};
diff --git "a/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\244\204\347\220\206\346\240\267\345\274\217.md.553883db.js" "b/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\244\204\347\220\206\346\240\267\345\274\217.md.be72a9c3.js"
similarity index 99%
rename from "assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\244\204\347\220\206\346\240\267\345\274\217.md.553883db.js"
rename to "assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\244\204\347\220\206\346\240\267\345\274\217.md.be72a9c3.js"
index 982d8dc2..758e4fab 100644
--- "a/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\244\204\347\220\206\346\240\267\345\274\217.md.553883db.js"
+++ "b/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\244\204\347\220\206\346\240\267\345\274\217.md.be72a9c3.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const o="/static-blog/image/Vite/4.png",p="/static-blog/image/Vite/5.png",e="/static-blog/image/Vite/6.png",c="/static-blog/image/Vite/7.png",f=JSON.parse('{"title":"处理样式","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"普通CSS","slug":"普通css","link":"#普通css","children":[]},{"level":2,"title":"CSS Module","slug":"css-module","link":"#css-module","children":[{"level":3,"title":"CSS Module配置","slug":"css-module配置","link":"#css-module配置","children":[]}]},{"level":2,"title":"Sass/Less","slug":"sass-less","link":"#sass-less","children":[{"level":3,"title":"预处理器编译选项","slug":"预处理器编译选项","link":"#预处理器编译选项","children":[]}]},{"level":2,"title":"开启sourceMap","slug":"开启sourcemap","link":"#开启sourcemap","children":[]},{"level":2,"title":"postcss配置","slug":"postcss配置","link":"#postcss配置","children":[{"level":3,"title":"示例","slug":"示例","link":"#示例","children":[]}]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[]}],"relativePath":"knowledge-deposition/前端工程化/Vite/处理样式.md"}'),t={name:"knowledge-deposition/前端工程化/Vite/处理样式.md"},r=l(`

处理样式

普通CSS

TIP

vite支持直接处理css

main.js

javascript
import './common.css'
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const o="/static-blog/image/Vite/4.png",p="/static-blog/image/Vite/5.png",e="/static-blog/image/Vite/6.png",c="/static-blog/image/Vite/7.png",f=JSON.parse('{"title":"处理样式","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"普通CSS","slug":"普通css","link":"#普通css","children":[]},{"level":2,"title":"CSS Module","slug":"css-module","link":"#css-module","children":[{"level":3,"title":"CSS Module配置","slug":"css-module配置","link":"#css-module配置","children":[]}]},{"level":2,"title":"Sass/Less","slug":"sass-less","link":"#sass-less","children":[{"level":3,"title":"预处理器编译选项","slug":"预处理器编译选项","link":"#预处理器编译选项","children":[]}]},{"level":2,"title":"开启sourceMap","slug":"开启sourcemap","link":"#开启sourcemap","children":[]},{"level":2,"title":"postcss配置","slug":"postcss配置","link":"#postcss配置","children":[{"level":3,"title":"示例","slug":"示例","link":"#示例","children":[]}]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[]}],"relativePath":"knowledge-deposition/前端工程化/Vite/处理样式.md"}'),t={name:"knowledge-deposition/前端工程化/Vite/处理样式.md"},r=l(`

处理样式

普通CSS

TIP

vite支持直接处理css

main.js

javascript
import './common.css'
 console.log('handle style')
 

common.css

css
html {
     background-color: #f5f5f5;
diff --git "a/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\244\204\347\220\206\346\240\267\345\274\217.md.553883db.lean.js" "b/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\244\204\347\220\206\346\240\267\345\274\217.md.be72a9c3.lean.js"
similarity index 95%
rename from "assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\244\204\347\220\206\346\240\267\345\274\217.md.553883db.lean.js"
rename to "assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\244\204\347\220\206\346\240\267\345\274\217.md.be72a9c3.lean.js"
index 45d17b96..07ca4d8a 100644
--- "a/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\244\204\347\220\206\346\240\267\345\274\217.md.553883db.lean.js"
+++ "b/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\244\204\347\220\206\346\240\267\345\274\217.md.be72a9c3.lean.js"
@@ -1 +1 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const o="/static-blog/image/Vite/4.png",p="/static-blog/image/Vite/5.png",e="/static-blog/image/Vite/6.png",c="/static-blog/image/Vite/7.png",f=JSON.parse('{"title":"处理样式","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"普通CSS","slug":"普通css","link":"#普通css","children":[]},{"level":2,"title":"CSS Module","slug":"css-module","link":"#css-module","children":[{"level":3,"title":"CSS Module配置","slug":"css-module配置","link":"#css-module配置","children":[]}]},{"level":2,"title":"Sass/Less","slug":"sass-less","link":"#sass-less","children":[{"level":3,"title":"预处理器编译选项","slug":"预处理器编译选项","link":"#预处理器编译选项","children":[]}]},{"level":2,"title":"开启sourceMap","slug":"开启sourcemap","link":"#开启sourcemap","children":[]},{"level":2,"title":"postcss配置","slug":"postcss配置","link":"#postcss配置","children":[{"level":3,"title":"示例","slug":"示例","link":"#示例","children":[]}]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[]}],"relativePath":"knowledge-deposition/前端工程化/Vite/处理样式.md"}'),t={name:"knowledge-deposition/前端工程化/Vite/处理样式.md"},r=l("",55),D=[r];function y(i,F,C,A,d,u){return n(),a("div",null,D)}const m=s(t,[["render",y]]);export{f as __pageData,m as default};
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const o="/static-blog/image/Vite/4.png",p="/static-blog/image/Vite/5.png",e="/static-blog/image/Vite/6.png",c="/static-blog/image/Vite/7.png",f=JSON.parse('{"title":"处理样式","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"普通CSS","slug":"普通css","link":"#普通css","children":[]},{"level":2,"title":"CSS Module","slug":"css-module","link":"#css-module","children":[{"level":3,"title":"CSS Module配置","slug":"css-module配置","link":"#css-module配置","children":[]}]},{"level":2,"title":"Sass/Less","slug":"sass-less","link":"#sass-less","children":[{"level":3,"title":"预处理器编译选项","slug":"预处理器编译选项","link":"#预处理器编译选项","children":[]}]},{"level":2,"title":"开启sourceMap","slug":"开启sourcemap","link":"#开启sourcemap","children":[]},{"level":2,"title":"postcss配置","slug":"postcss配置","link":"#postcss配置","children":[{"level":3,"title":"示例","slug":"示例","link":"#示例","children":[]}]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[]}],"relativePath":"knowledge-deposition/前端工程化/Vite/处理样式.md"}'),t={name:"knowledge-deposition/前端工程化/Vite/处理样式.md"},r=l("",55),D=[r];function y(i,F,C,A,d,u){return n(),a("div",null,D)}const m=s(t,[["render",y]]);export{f as __pageData,m as default};
diff --git "a/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\244\204\347\220\206\351\235\231\346\200\201\350\265\204\346\272\220.md.89dfb210.js" "b/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\244\204\347\220\206\351\235\231\346\200\201\350\265\204\346\272\220.md.df050c0a.js"
similarity index 99%
rename from "assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\244\204\347\220\206\351\235\231\346\200\201\350\265\204\346\272\220.md.89dfb210.js"
rename to "assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\244\204\347\220\206\351\235\231\346\200\201\350\265\204\346\272\220.md.df050c0a.js"
index fc4c36b8..a9d3a675 100644
--- "a/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\244\204\347\220\206\351\235\231\346\200\201\350\265\204\346\272\220.md.89dfb210.js"
+++ "b/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\244\204\347\220\206\351\235\231\346\200\201\350\265\204\346\272\220.md.df050c0a.js"
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const o="/static-blog/image/Vite/static-resource/1.png",p="/static-blog/image/Vite/static-resource/2.png",g=JSON.parse('{"title":"处理静态资源","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"图片加载","slug":"图片加载","link":"#图片加载","children":[{"level":3,"title":"加载图片的几种场景","slug":"加载图片的几种场景","link":"#加载图片的几种场景","children":[]},{"level":3,"title":"设置路径别名","slug":"设置路径别名","link":"#设置路径别名","children":[]}]},{"level":2,"title":"SVG加载方式","slug":"svg加载方式","link":"#svg加载方式","children":[]},{"level":2,"title":"JSON文件加载","slug":"json文件加载","link":"#json文件加载","children":[{"level":3,"title":"禁用命名导入","slug":"禁用命名导入","link":"#禁用命名导入","children":[]}]},{"level":2,"title":"特殊资源后缀","slug":"特殊资源后缀","link":"#特殊资源后缀","children":[]},{"level":2,"title":"静态资源类型","slug":"静态资源类型","link":"#静态资源类型","children":[]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[]}],"relativePath":"knowledge-deposition/前端工程化/Vite/处理静态资源.md"}'),e={name:"knowledge-deposition/前端工程化/Vite/处理静态资源.md"},t=l(`

处理静态资源

图片加载

加载图片的几种场景

  • HTML中使用img标签来加载图片
html
<img src="xxx.png" alt="xxx">
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const o="/static-blog/image/Vite/static-resource/1.png",p="/static-blog/image/Vite/static-resource/2.png",g=JSON.parse('{"title":"处理静态资源","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"图片加载","slug":"图片加载","link":"#图片加载","children":[{"level":3,"title":"加载图片的几种场景","slug":"加载图片的几种场景","link":"#加载图片的几种场景","children":[]},{"level":3,"title":"设置路径别名","slug":"设置路径别名","link":"#设置路径别名","children":[]}]},{"level":2,"title":"SVG加载方式","slug":"svg加载方式","link":"#svg加载方式","children":[]},{"level":2,"title":"JSON文件加载","slug":"json文件加载","link":"#json文件加载","children":[{"level":3,"title":"禁用命名导入","slug":"禁用命名导入","link":"#禁用命名导入","children":[]}]},{"level":2,"title":"特殊资源后缀","slug":"特殊资源后缀","link":"#特殊资源后缀","children":[]},{"level":2,"title":"静态资源类型","slug":"静态资源类型","link":"#静态资源类型","children":[]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[]}],"relativePath":"knowledge-deposition/前端工程化/Vite/处理静态资源.md"}'),e={name:"knowledge-deposition/前端工程化/Vite/处理静态资源.md"},t=l(`

处理静态资源

图片加载

加载图片的几种场景

  • HTML中使用img标签来加载图片
html
<img src="xxx.png" alt="xxx">
 
  • CSS中通过background属性设置背景图
css
.home {
     background: url("../xxx.png") no-repeat;
 }
diff --git "a/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\244\204\347\220\206\351\235\231\346\200\201\350\265\204\346\272\220.md.89dfb210.lean.js" "b/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\244\204\347\220\206\351\235\231\346\200\201\350\265\204\346\272\220.md.df050c0a.lean.js"
similarity index 95%
rename from "assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\244\204\347\220\206\351\235\231\346\200\201\350\265\204\346\272\220.md.89dfb210.lean.js"
rename to "assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\244\204\347\220\206\351\235\231\346\200\201\350\265\204\346\272\220.md.df050c0a.lean.js"
index b4d25a6c..70f21e52 100644
--- "a/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\244\204\347\220\206\351\235\231\346\200\201\350\265\204\346\272\220.md.89dfb210.lean.js"
+++ "b/assets/knowledge-deposition_\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226_Vite_\345\244\204\347\220\206\351\235\231\346\200\201\350\265\204\346\272\220.md.df050c0a.lean.js"
@@ -1 +1 @@
-import{_ as s,c as a,o as n,e as l}from"./app.fa87702c.js";const o="/static-blog/image/Vite/static-resource/1.png",p="/static-blog/image/Vite/static-resource/2.png",g=JSON.parse('{"title":"处理静态资源","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"图片加载","slug":"图片加载","link":"#图片加载","children":[{"level":3,"title":"加载图片的几种场景","slug":"加载图片的几种场景","link":"#加载图片的几种场景","children":[]},{"level":3,"title":"设置路径别名","slug":"设置路径别名","link":"#设置路径别名","children":[]}]},{"level":2,"title":"SVG加载方式","slug":"svg加载方式","link":"#svg加载方式","children":[]},{"level":2,"title":"JSON文件加载","slug":"json文件加载","link":"#json文件加载","children":[{"level":3,"title":"禁用命名导入","slug":"禁用命名导入","link":"#禁用命名导入","children":[]}]},{"level":2,"title":"特殊资源后缀","slug":"特殊资源后缀","link":"#特殊资源后缀","children":[]},{"level":2,"title":"静态资源类型","slug":"静态资源类型","link":"#静态资源类型","children":[]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[]}],"relativePath":"knowledge-deposition/前端工程化/Vite/处理静态资源.md"}'),e={name:"knowledge-deposition/前端工程化/Vite/处理静态资源.md"},t=l("",53),c=[t];function r(D,y,i,C,F,A){return n(),a("div",null,c)}const u=s(e,[["render",r]]);export{g as __pageData,u as default};
+import{_ as s,c as a,o as n,e as l}from"./app.2f6419f0.js";const o="/static-blog/image/Vite/static-resource/1.png",p="/static-blog/image/Vite/static-resource/2.png",g=JSON.parse('{"title":"处理静态资源","description":"","frontmatter":{"layout":"doc"},"headers":[{"level":2,"title":"图片加载","slug":"图片加载","link":"#图片加载","children":[{"level":3,"title":"加载图片的几种场景","slug":"加载图片的几种场景","link":"#加载图片的几种场景","children":[]},{"level":3,"title":"设置路径别名","slug":"设置路径别名","link":"#设置路径别名","children":[]}]},{"level":2,"title":"SVG加载方式","slug":"svg加载方式","link":"#svg加载方式","children":[]},{"level":2,"title":"JSON文件加载","slug":"json文件加载","link":"#json文件加载","children":[{"level":3,"title":"禁用命名导入","slug":"禁用命名导入","link":"#禁用命名导入","children":[]}]},{"level":2,"title":"特殊资源后缀","slug":"特殊资源后缀","link":"#特殊资源后缀","children":[]},{"level":2,"title":"静态资源类型","slug":"静态资源类型","link":"#静态资源类型","children":[]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[]}],"relativePath":"knowledge-deposition/前端工程化/Vite/处理静态资源.md"}'),e={name:"knowledge-deposition/前端工程化/Vite/处理静态资源.md"},t=l("",53),c=[t];function r(D,y,i,C,F,A){return n(),a("div",null,c)}const u=s(e,[["render",r]]);export{g as __pageData,u as default};
diff --git a/favorites/Books/index.html b/favorites/Books/index.html
index 611006e7..868d7220 100644
--- a/favorites/Books/index.html
+++ b/favorites/Books/index.html
@@ -6,16 +6,16 @@
     Books | mx52jing
     
     
-    
-    
-    
+    
+    
+    
     
     
   
   
     
-    
-    
+    
+    
     
   
 
\ No newline at end of file
diff --git a/favorites/Browser/index.html b/favorites/Browser/index.html
index 0b90458d..1fc7aa14 100644
--- a/favorites/Browser/index.html
+++ b/favorites/Browser/index.html
@@ -6,16 +6,16 @@
     Browser相关 | mx52jing
     
     
-    
-    
-    
+    
+    
+    
     
     
   
   
     
-    
-    
+    
+    
     
   
 
\ No newline at end of file
diff --git a/favorites/CSS/index.html b/favorites/CSS/index.html
index 0595f141..369283a7 100644
--- a/favorites/CSS/index.html
+++ b/favorites/CSS/index.html
@@ -6,16 +6,16 @@
     CSS | mx52jing
     
     
-    
-    
-    
+    
+    
+    
     
     
   
   
     
-    
-    
+    
+    
     
   
 
\ No newline at end of file
diff --git a/favorites/Canvas/index.html b/favorites/Canvas/index.html
index 394778a2..1fc229d5 100644
--- a/favorites/Canvas/index.html
+++ b/favorites/Canvas/index.html
@@ -6,16 +6,16 @@
     Canvas相关 | mx52jing
     
     
-    
-    
-    
+    
+    
+    
     
     
   
   
     
-    
-    
+    
+    
     
   
 
\ No newline at end of file
diff --git a/favorites/Docker/index.html b/favorites/Docker/index.html
index ba71a458..874bac66 100644
--- a/favorites/Docker/index.html
+++ b/favorites/Docker/index.html
@@ -6,16 +6,16 @@
     Docker | mx52jing
     
     
-    
-    
-    
+    
+    
+    
     
     
   
   
     
-    
-    
+    
+    
     
   
 
\ No newline at end of file
diff --git a/favorites/Git/index.html b/favorites/Git/index.html
index b889518d..7391e5b7 100644
--- a/favorites/Git/index.html
+++ b/favorites/Git/index.html
@@ -6,16 +6,16 @@
     Git | mx52jing
     
     
-    
-    
-    
+    
+    
+    
     
     
   
   
     
-    
-    
+    
+    
     
   
 
\ No newline at end of file
diff --git a/favorites/Golang/index.html b/favorites/Golang/index.html
index fd93327b..7c72b90b 100644
--- a/favorites/Golang/index.html
+++ b/favorites/Golang/index.html
@@ -6,16 +6,16 @@
     Golang | mx52jing
     
     
-    
-    
-    
+    
+    
+    
     
     
   
   
     
-    
-    
+    
+    
     
   
 
\ No newline at end of file
diff --git a/favorites/IDE/index.html b/favorites/IDE/index.html
index ec42dd72..dbd381e6 100644
--- a/favorites/IDE/index.html
+++ b/favorites/IDE/index.html
@@ -6,16 +6,16 @@
     IDE | mx52jing
     
     
-    
-    
-    
+    
+    
+    
     
     
   
   
     
-    
-    
+    
+    
     
   
 
\ No newline at end of file
diff --git a/favorites/JavasSript/index.html b/favorites/JavasSript/index.html
index 334ec37a..e523cbc7 100644
--- a/favorites/JavasSript/index.html
+++ b/favorites/JavasSript/index.html
@@ -6,16 +6,16 @@
     JavaScript | mx52jing
     
     
-    
-    
-    
+    
+    
+    
     
     
   
   
     
-    
-    
+    
+    
     
   
 
\ No newline at end of file
diff --git a/favorites/Linux/index.html b/favorites/Linux/index.html
index 26dd02d8..ed803fcd 100644
--- a/favorites/Linux/index.html
+++ b/favorites/Linux/index.html
@@ -6,16 +6,16 @@
     Linux | mx52jing
     
     
-    
-    
-    
+    
+    
+    
     
     
   
   
     
-    
-    
+    
+    
     
   
 
\ No newline at end of file
diff --git a/favorites/Mac/index.html b/favorites/Mac/index.html
index f2669339..74c647d0 100644
--- a/favorites/Mac/index.html
+++ b/favorites/Mac/index.html
@@ -6,16 +6,16 @@
     Mac | mx52jing
     
     
-    
-    
-    
+    
+    
+    
     
     
   
   
     
-    
-    
+    
+    
     
   
 
\ No newline at end of file
diff --git a/favorites/Mobile/index.html b/favorites/Mobile/index.html
index 6d392310..e5ff7f75 100644
--- a/favorites/Mobile/index.html
+++ b/favorites/Mobile/index.html
@@ -6,16 +6,16 @@
     Mobile Side | mx52jing
     
     
-    
-    
-    
+    
+    
+    
     
     
   
   
     
-    
-    
+    
+    
     
   
 
\ No newline at end of file
diff --git a/favorites/Nginx/index.html b/favorites/Nginx/index.html
index 10492b2a..000f67a9 100644
--- a/favorites/Nginx/index.html
+++ b/favorites/Nginx/index.html
@@ -6,16 +6,16 @@
     Nginx | mx52jing
     
     
-    
-    
-    
+    
+    
+    
     
     
   
   
     
-    
-    
+    
+    
     
   
 
\ No newline at end of file
diff --git a/favorites/ProblemSolving/index.html b/favorites/ProblemSolving/index.html
index b0ba1127..2e3fe985 100644
--- a/favorites/ProblemSolving/index.html
+++ b/favorites/ProblemSolving/index.html
@@ -6,16 +6,16 @@
     Problem Solving | mx52jing
     
     
-    
-    
-    
+    
+    
+    
     
     
   
   
     
-    
-    
+    
+    
     
   
 
\ No newline at end of file
diff --git a/favorites/React/index.html b/favorites/React/index.html
index 4a5e9480..431fdc0e 100644
--- a/favorites/React/index.html
+++ b/favorites/React/index.html
@@ -6,16 +6,16 @@
     React | mx52jing
     
     
-    
-    
-    
+    
+    
+    
     
     
   
   
     
-    
-    
+    
+    
     
   
 
\ No newline at end of file
diff --git a/favorites/Typescript/index.html b/favorites/Typescript/index.html
index 7c4e88aa..275cb68b 100644
--- a/favorites/Typescript/index.html
+++ b/favorites/Typescript/index.html
@@ -6,16 +6,16 @@
     Typescript | mx52jing
     
     
-    
-    
-    
+    
+    
+    
     
     
   
   
     
-    
-    
+    
+    
     
   
 
\ No newline at end of file
diff --git "a/favorites/UI\350\256\276\350\256\241\347\201\265\346\204\237/index.html" "b/favorites/UI\350\256\276\350\256\241\347\201\265\346\204\237/index.html"
index b75e8f17..d15123d5 100644
--- "a/favorites/UI\350\256\276\350\256\241\347\201\265\346\204\237/index.html"
+++ "b/favorites/UI\350\256\276\350\256\241\347\201\265\346\204\237/index.html"
@@ -6,16 +6,16 @@
     UI设计灵感 | mx52jing
     
     
-    
-    
-    
+    
+    
+    
     
     
   
   
     
-    
-    
+    
+    
     
   
 
\ No newline at end of file
diff --git a/favorites/Vue/index.html b/favorites/Vue/index.html
index ac364c3d..33b9e40c 100644
--- a/favorites/Vue/index.html
+++ b/favorites/Vue/index.html
@@ -6,16 +6,16 @@
     Vue | mx52jing
     
     
-    
-    
-    
+    
+    
+    
     
     
   
   
     
-    
-    
+    
+    
     
   
 
\ No newline at end of file
diff --git "a/favorites/\345\205\266\344\273\226/index.html" "b/favorites/\345\205\266\344\273\226/index.html"
index 59f69ac1..832dd10e 100644
--- "a/favorites/\345\205\266\344\273\226/index.html"
+++ "b/favorites/\345\205\266\344\273\226/index.html"
@@ -6,16 +6,16 @@
     其他 | mx52jing
     
     
-    
-    
-    
+    
+    
+    
     
     
   
   
     
-    
-    
+    
+    
     
   
 
\ No newline at end of file
diff --git "a/favorites/\347\256\227\346\263\225/index.html" "b/favorites/\347\256\227\346\263\225/index.html"
index a98e9740..92a46de7 100644
--- "a/favorites/\347\256\227\346\263\225/index.html"
+++ "b/favorites/\347\256\227\346\263\225/index.html"
@@ -6,16 +6,16 @@
     算法 | mx52jing
     
     
-    
-    
-    
+    
+    
+    
     
     
   
   
     
-    
-    
+    
+    
     
   
 
\ No newline at end of file
diff --git "a/hand-notes/CSS/CSS\345\256\236\347\216\260\346\226\207\345\255\227\346\270\220\345\217\230.html" "b/hand-notes/CSS/CSS\345\256\236\347\216\260\346\226\207\345\255\227\346\270\220\345\217\230.html"
index 9e92fcb7..859998f1 100644
--- "a/hand-notes/CSS/CSS\345\256\236\347\216\260\346\226\207\345\255\227\346\270\220\345\217\230.html"
+++ "b/hand-notes/CSS/CSS\345\256\236\347\216\260\346\226\207\345\255\227\346\270\220\345\217\230.html"
@@ -6,14 +6,14 @@
     CSS实现文字渐变 | mx52jing
     
     
-    
-    
-    
+    
+    
+    
     
     
   
   
-    
Skip to content
On this page

CSS实现文字渐变

代码展示

  • 关于linear-gradient更多用法详见这里
  • 关于background-clip更多用法详见这里
css
.gradient-text {
+    
-    
-    
+    
+    
     
   
 
\ No newline at end of file
diff --git "a/hand-notes/CSS/CSS\345\256\236\347\216\260\347\252\201\345\207\272\344\270\215\345\220\214\351\242\234\350\211\262\347\232\204\345\234\206\350\247\222.html" "b/hand-notes/CSS/CSS\345\256\236\347\216\260\347\252\201\345\207\272\344\270\215\345\220\214\351\242\234\350\211\262\347\232\204\345\234\206\350\247\222.html"
index 079e467c..de40311d 100644
--- "a/hand-notes/CSS/CSS\345\256\236\347\216\260\347\252\201\345\207\272\344\270\215\345\220\214\351\242\234\350\211\262\347\232\204\345\234\206\350\247\222.html"
+++ "b/hand-notes/CSS/CSS\345\256\236\347\216\260\347\252\201\345\207\272\344\270\215\345\220\214\351\242\234\350\211\262\347\232\204\345\234\206\350\247\222.html"
@@ -6,14 +6,14 @@
     CSS实现突出不同颜色的圆角 | mx52jing
     
     
-    
-    
-    
+    
+    
+    
     
     
   
   
-    
Skip to content
On this page

CSS实现突出不同颜色的圆角

代码展示

html

html
<!DOCTYPE html>
+    
-    
-    
+    
+    
     
   
 
\ No newline at end of file
diff --git "a/hand-notes/CSS/CSS\345\256\236\347\216\260\347\261\273\344\274\274\345\276\256\344\277\241\345\244\264\345\203\217\346\225\210\346\236\234.html" "b/hand-notes/CSS/CSS\345\256\236\347\216\260\347\261\273\344\274\274\345\276\256\344\277\241\345\244\264\345\203\217\346\225\210\346\236\234.html"
index bce09294..beacb789 100644
--- "a/hand-notes/CSS/CSS\345\256\236\347\216\260\347\261\273\344\274\274\345\276\256\344\277\241\345\244\264\345\203\217\346\225\210\346\236\234.html"
+++ "b/hand-notes/CSS/CSS\345\256\236\347\216\260\347\261\273\344\274\274\345\276\256\344\277\241\345\244\264\345\203\217\346\225\210\346\236\234.html"
@@ -6,14 +6,14 @@
     CSS实现类似微信头像效果 | mx52jing
     
     
-    
-    
-    
+    
+    
+    
     
     
   
   
-    
Skip to content
On this page

CSS实现类似微信头像效果

工作中可能会遇到实现类似于微信群聊头像自适应的效果,可以借助flex来实现

用到的知识点

:only-child

  • :only-child伪类表示没有任何兄弟元素的元素

  • 该伪类与:first-child:last-child:nth-child(1):nth-last-child(1)相同,但是:only-child权重小

:first-child

  • :first-child伪类表示一组兄弟元素中的第一个元素

一般兄弟组合器

语法: A ~ B

例如:p ~ span 表示同一父元素下,p元素后面的所有span元素

TIP

  • .avatar-img:first-child:nth-last-child(2) 表示该元素既是第一个元素,也是倒数第二个元素,表明当前总共有2个类名为.avatar-img的元素

代码实现

html

html
<!doctype html>
+    
Skip to content
On this page

CSS实现类似微信头像效果

工作中可能会遇到实现类似于微信群聊头像自适应的效果,可以借助flex来实现

用到的知识点

:only-child

  • :only-child伪类表示没有任何兄弟元素的元素

  • 该伪类与:first-child:last-child:nth-child(1):nth-last-child(1)相同,但是:only-child权重小

:first-child

  • :first-child伪类表示一组兄弟元素中的第一个元素

一般兄弟组合器

语法: A ~ B

例如:p ~ span 表示同一父元素下,p元素后面的所有span元素

TIP

  • .avatar-img:first-child:nth-last-child(2) 表示该元素既是第一个元素,也是倒数第二个元素,表明当前总共有2个类名为.avatar-img的元素

代码实现

html

html
<!doctype html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
@@ -76,8 +76,8 @@
     width: calc(100% / 3);
 }
 

效果预览

- - + + \ No newline at end of file diff --git "a/hand-notes/CSS/CSS\346\250\241\346\213\237\346\225\260\345\255\227loading.html" "b/hand-notes/CSS/CSS\346\250\241\346\213\237\346\225\260\345\255\227loading.html" index 3504b105..896929bf 100644 --- "a/hand-notes/CSS/CSS\346\250\241\346\213\237\346\225\260\345\255\227loading.html" +++ "b/hand-notes/CSS/CSS\346\250\241\346\213\237\346\225\260\345\255\227loading.html" @@ -6,14 +6,14 @@ CSS模拟数字loading | mx52jing - - - + + + -
Skip to content
On this page

CSS模拟数字loading

实现方案

  • 使用css计数器展示进度数字

  • 使用CSS Houdini中的@property自定义css属性,并且可以在动画中修改该属性的值

CSS Houdini @proerty

@proerty可以让我们自定义一些CSS属性,然后在样式中使用,使用方法和displayfont-size等这些相同

TIP

  • 自定义属性的命名和CSS变量相似,要以--开头,比如@property --aaa {}

CSS Houdini中的@property语法如下:

css
@property --property-name {
+    
Skip to content
On this page

CSS模拟数字loading

实现方案

  • 使用css计数器展示进度数字

  • 使用CSS Houdini中的@property自定义css属性,并且可以在动画中修改该属性的值

CSS Houdini @proerty

@proerty可以让我们自定义一些CSS属性,然后在样式中使用,使用方法和displayfont-size等这些相同

TIP

  • 自定义属性的命名和CSS变量相似,要以--开头,比如@property --aaa {}

CSS Houdini中的@property语法如下:

css
@property --property-name {
   syntax: "<color>";
   inherits: false;
   initial-value: #c0ffee;
@@ -117,8 +117,8 @@
     transition: 10s --percentage cubic-bezier(.08,.81,.29,.99);;
 }
 

其他

兼容性

效果预览

相关代码

- - + + \ No newline at end of file diff --git "a/hand-notes/CSS/CSS\350\256\241\346\225\260\345\231\250-counter.html" "b/hand-notes/CSS/CSS\350\256\241\346\225\260\345\231\250-counter.html" index 2dcb5227..63c45dc1 100644 --- "a/hand-notes/CSS/CSS\350\256\241\346\225\260\345\231\250-counter.html" +++ "b/hand-notes/CSS/CSS\350\256\241\346\225\260\345\231\250-counter.html" @@ -6,14 +6,14 @@ CSS计数器-counter | mx52jing - - - + + + -
Skip to content
On this page

CSS计数器-counter

CSS计数器一般和伪元素content属性一起使用,有几个关键的属性

counter-reset

为计数器命名,并设置计数器的初始值,如果没设置,初始值默认是0

counter-reset的值可以是负数,但是不支持小数(Chrome Version 118.0.5993.117 (Official Build) (arm64)),小数都会被处理为0

css
.counter-box {
+    
Skip to content
On this page

CSS计数器-counter

CSS计数器一般和伪元素content属性一起使用,有几个关键的属性

counter-reset

为计数器命名,并设置计数器的初始值,如果没设置,初始值默认是0

counter-reset的值可以是负数,但是不支持小数(Chrome Version 118.0.5993.117 (Official Build) (arm64)),小数都会被处理为0

css
.counter-box {
     counter-reset: box-count; // 设置计数器名称为 box-count,为设置默认值,默认值为0
 }
 
@@ -134,8 +134,8 @@
     content: counters(counters-change, '-', decimal) '. ';
 }
 

效果如下:

TIP

  • 一个元素如果设置了counter-increment, 但是设置了display: none,则此计数值是不会增加的。visibility: hidden以及其他样式不会有此现象。

其他

效果预览

相关代码

- - + + \ No newline at end of file diff --git "a/hand-notes/CSS/Tabs\345\234\206\350\247\222.html" "b/hand-notes/CSS/Tabs\345\234\206\350\247\222.html" new file mode 100644 index 00000000..0170e39d --- /dev/null +++ "b/hand-notes/CSS/Tabs\345\234\206\350\247\222.html" @@ -0,0 +1,178 @@ + + + + + + Tabs圆角 | mx52jing + + + + + + + + + +
Skip to content
On this page

Tabs圆角

Tabs圆角简单效果

css代码

css
* {
+    padding: 0;
+    margin: 0;
+}
+#app {
+    width: 100vw;
+    height: 100vh;
+    background-color: #F7F8F9;
+    padding-top: 100px;
+    box-sizing: border-box;
+    overflow: hidden;
+}
+.tabs-box {
+    --text-primary-color: #EF4034;
+    --bg-primary-color: #E08638;
+    --h: 50px;
+    --base-radius: 12px;
+    width: 380px;
+    height: var(--h);
+    display: flex;
+    background-color: var(--bg-primary-color);
+    border-radius: var(--base-radius) var(--base-radius) 0 0;
+    margin: 0 auto;
+    overflow: hidden;
+    cursor: pointer;
+}
+.tabs-item {
+    flex: 1;
+    height: var(--h);
+    position: relative;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    font-size: 16px;
+    font-weight: 600;
+    color: #FFFFFF;
+}
+.tabs-item--selected {
+    color: var(--text-primary-color);
+    background-color: #FFFFFF;
+    /*添加上面两个圆角*/
+    border-radius: var(--base-radius) var(--base-radius) 0 0;
+    /*添加box-shadow*/
+    box-shadow: var(--base-radius) var(--base-radius) 0 0 #FFFFFF, calc(-1 * var(--base-radius)) var(--base-radius) 0 0 #FFFFFF;
+}
+
+.tabs-item--selected::before,
+.tabs-item--selected::after {
+    content: "";
+    width: var(--base-radius);
+    height: var(--h);
+    position: absolute;
+    top: 0;
+    background-color: var(--bg-primary-color);
+}
+
+.tabs-item--selected::before {
+    left: calc(-1 * var(--base-radius));
+    border-radius: 0 0 var(--base-radius) 0;
+}
+
+.tabs-item--selected::after {
+    right: calc(-1 * var(--base-radius));
+    border-radius: 0 0 0 var(--base-radius);
+}
+

Tabs圆角升级效果

css代码

css
* {
+    padding: 0;
+    margin: 0;
+}
+#app {
+    width: 100vw;
+    height: 100vh;
+    background-color: #F7F8F9;
+    padding-top: 100px;
+    box-sizing: border-box;
+    overflow: hidden;
+}
+.tabs-box {
+    --text-primary-color: #EF4034;
+    --bg-primary-color: #E08638;
+    --h: 50px;
+    --base-radius: 12px;
+    width: 800px;
+    height: var(--h);
+    display: flex;
+    background-color: var(--bg-primary-color);
+    margin: 0 auto;
+    border-radius: var(--base-radius) var(--base-radius) 0 0;
+    overflow: hidden;
+    cursor: pointer;
+}
+.tabs-item {
+    flex: 1;
+    height: var(--h);
+    position: relative;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    font-size: 16px;
+    font-weight: 600;
+    color: #FFFFFF;
+    border-radius: var(--base-radius) var(--base-radius) 0 0;
+}
+.tabs-item--selected {
+    color: var(--text-primary-color);
+    background-color: #FFFFFF;
+    /*添加box-shadow  必须要有这个 这个设置的颜色其实就是圆角的背景色*/
+    box-shadow: calc(var(--base-radius) * -2) 40px 0 0 #FFFFFF, calc(var(--base-radius) * 2) 40px 0 0 #FFFFFF;
+}
+
+.tabs-item--selected::before,
+.tabs-item--selected::after {
+    content: "";
+    width: var(--base-radius);
+    height: var(--h);
+    position: absolute;
+    top: 0;
+    background-color: #FFFFFF;
+}
+
+.tabs-item--selected::before {
+    left: calc(-.5 * var(--base-radius));
+    transform: skewX(-15deg);
+    border-radius: var(--base-radius) 0 0 0;
+}
+
+.tabs-item--selected::after {
+    right: calc(-.5 * var(--base-radius));
+    transform: skewX(15deg);
+    border-radius: 0 var(--base-radius) 0 0;
+}
+
+.tabs-item--not-selected {
+    z-index: 2;
+}
+
+.tabs-item--not-selected::before,
+.tabs-item--not-selected::after {
+    content: "";
+    width: var(--base-radius);
+    height: var(--h);
+    position: absolute;
+    top: 0;
+    background-color: var(--bg-primary-color);
+}
+
+.tabs-item--not-selected::before {
+    transform: skewX(15deg);
+    left: calc(.5 * var(--base-radius));
+    border-radius: 0 0 0 var(--base-radius);
+}
+
+.tabs-item--not-selected::after {
+    transform: skewX(-15deg);
+    right: calc(.5 * var(--base-radius));
+    border-radius: 0 0 var(--base-radius) 0;
+}
+

参考

+ + + + + \ No newline at end of file diff --git "a/hand-notes/CSS/\345\233\276\347\211\207\345\212\240\350\275\275\345\207\272\351\224\231\346\240\267\345\274\217\350\256\276\347\275\256.html" "b/hand-notes/CSS/\345\233\276\347\211\207\345\212\240\350\275\275\345\207\272\351\224\231\346\240\267\345\274\217\350\256\276\347\275\256.html" index 41a7725e..5e1018e3 100644 --- "a/hand-notes/CSS/\345\233\276\347\211\207\345\212\240\350\275\275\345\207\272\351\224\231\346\240\267\345\274\217\350\256\276\347\275\256.html" +++ "b/hand-notes/CSS/\345\233\276\347\211\207\345\212\240\350\275\275\345\207\272\351\224\231\346\240\267\345\274\217\350\256\276\347\275\256.html" @@ -6,14 +6,14 @@ 图片加载出错样式设置 | mx52jing - - - + + + -
Skip to content
On this page

图片加载出错样式设置

TIP

冷知识:图片加载出错时,为img元素设置的伪元素::before/::after会生效,图片正常加载时,不会生效

代码展示

html代码

html
<!doctype html>
+    
-    
-    
+

效果预览

+ + \ No newline at end of file diff --git "a/hand-notes/CSS/\345\256\236\347\216\260\351\253\230\345\272\246\350\277\207\346\270\241.html" "b/hand-notes/CSS/\345\256\236\347\216\260\351\253\230\345\272\246\350\277\207\346\270\241.html" index 7e025233..2027b56c 100644 --- "a/hand-notes/CSS/\345\256\236\347\216\260\351\253\230\345\272\246\350\277\207\346\270\241.html" +++ "b/hand-notes/CSS/\345\256\236\347\216\260\351\253\230\345\272\246\350\277\207\346\270\241.html" @@ -6,14 +6,14 @@ 实现高度过渡 | mx52jing - - - + + + -
Skip to content
On this page

实现高度过渡

在工作中有时候会遇到点击实现Collapse折叠效果,而折叠的元素高度可能不固定的,使用height: 0height: auto的方法是行不通的,因为一个值从数字变为非数字是不能使用过渡效果的,要实现该效果可使用其他方法。

html
<div id="root">
+    
Skip to content
On this page

实现高度过渡

在工作中有时候会遇到点击实现Collapse折叠效果,而折叠的元素高度可能不固定的,使用height: 0height: auto的方法是行不通的,因为一个值从数字变为非数字是不能使用过渡效果的,要实现该效果可使用其他方法。

html
<div id="root">
     <h1>元素高度过渡效果(通过max-height实现)</h1>
     <button class="btn">hover me</button>
     <div class="parent">
@@ -143,8 +143,8 @@
 </body>
 </html>
 

效果如下:

- - + + \ No newline at end of file diff --git "a/hand-notes/CSS/\350\231\232\347\272\277\350\276\271\346\241\206.html" "b/hand-notes/CSS/\350\231\232\347\272\277\350\276\271\346\241\206.html" index fac32090..1f848a38 100644 --- "a/hand-notes/CSS/\350\231\232\347\272\277\350\276\271\346\241\206.html" +++ "b/hand-notes/CSS/\350\231\232\347\272\277\350\276\271\346\241\206.html" @@ -6,14 +6,14 @@ 虚线边框 | mx52jing - - - + + + -
Skip to content
On this page

虚线边框

代码实现

代码如下:

css
.dashed-border {
+    
-    
-    
+    
+    
     
   
 
\ No newline at end of file
diff --git "a/hand-notes/Canvas/\347\273\230\345\210\266\345\233\276\347\211\207\344\270\215\346\270\205\346\231\260\351\227\256\351\242\230.html" "b/hand-notes/Canvas/\347\273\230\345\210\266\345\233\276\347\211\207\344\270\215\346\270\205\346\231\260\351\227\256\351\242\230.html"
index e164e3e8..61a10aeb 100644
--- "a/hand-notes/Canvas/\347\273\230\345\210\266\345\233\276\347\211\207\344\270\215\346\270\205\346\231\260\351\227\256\351\242\230.html"
+++ "b/hand-notes/Canvas/\347\273\230\345\210\266\345\233\276\347\211\207\344\270\215\346\270\205\346\231\260\351\227\256\351\242\230.html"
@@ -6,14 +6,14 @@
     绘制图片不清晰问题 | mx52jing
     
     
-    
-    
-    
+    
+    
+    
     
     
   
   
-    
Skip to content
On this page

绘制图片不清晰问题

问题原因和解决

canvas其实本质上也是一张图片,不管在canvas中绘制图片还是绘制其他图形,都是一样的道理

首先要明确,图片/canvas有以下两种尺寸

  • 原始尺寸

例如:这样设置

javascript
canvas.width = 600
+    
-    
-    
+    
+    
     
   
 
\ No newline at end of file
diff --git "a/hand-notes/Charles/\344\277\256\346\224\271\350\257\267\346\261\202\346\210\226\345\223\215\345\272\224.html" "b/hand-notes/Charles/\344\277\256\346\224\271\350\257\267\346\261\202\346\210\226\345\223\215\345\272\224.html"
index faddb113..a15553bd 100644
--- "a/hand-notes/Charles/\344\277\256\346\224\271\350\257\267\346\261\202\346\210\226\345\223\215\345\272\224.html"
+++ "b/hand-notes/Charles/\344\277\256\346\224\271\350\257\267\346\261\202\346\210\226\345\223\215\345\272\224.html"
@@ -6,16 +6,16 @@
     修改请求或响应 | mx52jing
     
     
-    
-    
-    
+    
+    
+    
     
     
   
   
-    
Skip to content
On this page

修改请求或响应

修改接口请求/响应数据

  • 打开Charles,请求接口后,选中要修改的接口,右键,点击Breakpoints

breakpoints

  • 打开CharlesProxy => Breakpoint Settings

breakpoint-settings

  • 打开后展示如下,这里可以看到添加的要拦截的接口,想拦截哪个接口就双击哪个

open-breaking-settings

  • 双击后打开窗口如下

edit-breakpoint

TIP

  • 请求的query中如果有随机字符串最好去掉,不然不同的参数就不会拦截,也可以把query整体删掉

  • 如果要修改请求的数据,勾选Request

  • 如果要修改接口响应数据,勾选Response

  • APP/网页重新请求接口,这里演示的是修改Response

  • 响应数据返回后会自动锁定到如下图,等待修改Response,点击Edit Response

install

  • 修改完毕后,点击Excute即可

修改响应文件内容

  • 点击CharlesTools => Map Local

map-local

  • 勾选Enable Map Local,添加拦截的文件路径

map-local-settings

  • 填写文件路径Path,如/a/b.txt,然后选择本地替换文件路径

  • 其他HostPort等想限制也可以填写

mapping-edit

- - +
Skip to content
On this page

修改请求或响应

修改接口请求/响应数据

  • 打开Charles,请求接口后,选中要修改的接口,右键,点击Breakpoints

breakpoints

  • 打开CharlesProxy => Breakpoint Settings

breakpoint-settings

  • 打开后展示如下,这里可以看到添加的要拦截的接口,想拦截哪个接口就双击哪个

open-breaking-settings

  • 双击后打开窗口如下

edit-breakpoint

TIP

  • 请求的query中如果有随机字符串最好去掉,不然不同的参数就不会拦截,也可以把query整体删掉

  • 如果要修改请求的数据,勾选Request

  • 如果要修改接口响应数据,勾选Response

  • APP/网页重新请求接口,这里演示的是修改Response

  • 响应数据返回后会自动锁定到如下图,等待修改Response,点击Edit Response

install

  • 修改完毕后,点击Excute即可

修改响应文件内容

  • 点击CharlesTools => Map Local

map-local

  • 勾选Enable Map Local,添加拦截的文件路径

map-local-settings

  • 填写文件路径Path,如/a/b.txt,然后选择本地替换文件路径

  • 其他HostPort等想限制也可以填写

mapping-edit

+ + \ No newline at end of file diff --git "a/hand-notes/Charles/\346\212\223\345\214\205\351\205\215\347\275\256.html" "b/hand-notes/Charles/\346\212\223\345\214\205\351\205\215\347\275\256.html" index 8e36990c..510374d9 100644 --- "a/hand-notes/Charles/\346\212\223\345\214\205\351\205\215\347\275\256.html" +++ "b/hand-notes/Charles/\346\212\223\345\214\205\351\205\215\347\275\256.html" @@ -6,16 +6,16 @@ Charles配置 | mx52jing - - - + + + -
Skip to content
On this page

Charles配置

电脑端操作

安装证书

  • 打开Charles,选择Help => SSL Proxying => Install Charles Root Certificate,安装完成后,会启动钥匙串访问

install

查找证书

  • 钥匙串访问程序中,找到刚才的证书Charles Proxy CA

install

信任证书

  • 选中该证书,右键 => 显示简介 => 信任 => 在使用此证书时选项中选择始终信任

install

install

TIP

上述操作完成后,关闭窗口,此时会提示输入电脑密码,按照提示输入即可

设置支持HTTPS

HTTPS

HTTPS

HTTPS

查看IP

  • 使用Charles查看电脑IP

local-ip

local-ip

手机端设置

WARNING

保证手机和电脑连接同一个WIFI

IOS


进入WIFI设置

  • 进入设置 => 无线局域网,找到当前手机链接的wifi,点击后面的info icon进入wifi详情

wifi-info

设置代理IP

  • WIFI详情滑动到最下面,找到HTTP Proxy

http-proxy

  • 进入,选择手动(Manual),设置Serverport

    • Server就是刚才查看的本机IP

    • port一直都是8888

configure-proxy

下载证书

  • 打开Safari浏览器,访问:chls.pro/ssl,此时电脑上会有连接提示,点击allow允许,然后在手机端下载证书

  • 电脑端展示

connect-from

  • 手机端下载确认

download

信任证书

  • 证书下载完成后,点击设置 => 通用 => VPN和设备管理,找到刚才的证书,并下载

device-manage

  • 点击下载

install-profile

  • 完成上述步骤就可以进行抓包了

安卓

  • 设置手机wifi代理和IOS的操作基本一样,设置完wifi代理后进行下一步

  • 本人使用的小米6自带的浏览器是下载不下来证书的,最后下载了Edge浏览器,访问:chls.pro/ssl,此时电脑上会有连接提示,点击allow允许,然后在手机端下载证书并且安装

  • 然后就可以使用了

- - +
Skip to content
On this page

Charles配置

电脑端操作

安装证书

  • 打开Charles,选择Help => SSL Proxying => Install Charles Root Certificate,安装完成后,会启动钥匙串访问

install

查找证书

  • 钥匙串访问程序中,找到刚才的证书Charles Proxy CA

install

信任证书

  • 选中该证书,右键 => 显示简介 => 信任 => 在使用此证书时选项中选择始终信任

install

install

TIP

上述操作完成后,关闭窗口,此时会提示输入电脑密码,按照提示输入即可

设置支持HTTPS

HTTPS

HTTPS

HTTPS

查看IP

  • 使用Charles查看电脑IP

local-ip

local-ip

手机端设置

WARNING

保证手机和电脑连接同一个WIFI

IOS


进入WIFI设置

  • 进入设置 => 无线局域网,找到当前手机链接的wifi,点击后面的info icon进入wifi详情

wifi-info

设置代理IP

  • WIFI详情滑动到最下面,找到HTTP Proxy

http-proxy

  • 进入,选择手动(Manual),设置Serverport

    • Server就是刚才查看的本机IP

    • port一直都是8888

configure-proxy

下载证书

  • 打开Safari浏览器,访问:chls.pro/ssl,此时电脑上会有连接提示,点击allow允许,然后在手机端下载证书

  • 电脑端展示

connect-from

  • 手机端下载确认

download

信任证书

  • 证书下载完成后,点击设置 => 通用 => VPN和设备管理,找到刚才的证书,并下载

device-manage

  • 点击下载

install-profile

  • 完成上述步骤就可以进行抓包了

安卓

  • 设置手机wifi代理和IOS的操作基本一样,设置完wifi代理后进行下一步

  • 本人使用的小米6自带的浏览器是下载不下来证书的,最后下载了Edge浏览器,访问:chls.pro/ssl,此时电脑上会有连接提示,点击allow允许,然后在手机端下载证书并且安装

  • 然后就可以使用了

+ + \ No newline at end of file diff --git "a/hand-notes/Chart/AntVF2/\344\275\277\347\224\250\345\260\217\350\256\260.html" "b/hand-notes/Chart/AntVF2/\344\275\277\347\224\250\345\260\217\350\256\260.html" index 10791f11..080ef1dd 100644 --- "a/hand-notes/Chart/AntVF2/\344\275\277\347\224\250\345\260\217\350\256\260.html" +++ "b/hand-notes/Chart/AntVF2/\344\275\277\347\224\250\345\260\217\350\256\260.html" @@ -6,14 +6,14 @@ AntV F2 使用小记 | mx52jing - - - + + + -
Skip to content
On this page

AntV F2 使用小记

设置Tooltip

typescript
// 关闭或启用 Tooltip enable 是否启用
+    
-    
-    
+    
+    
     
   
 
\ No newline at end of file
diff --git "a/hand-notes/Git/Mac\347\216\257\345\242\203\344\270\213\345\222\214Windows\347\216\257\345\242\203\344\270\213Git\346\215\242\350\241\214\347\273\223\345\260\276\345\206\262\347\252\201.html" "b/hand-notes/Git/Mac\347\216\257\345\242\203\344\270\213\345\222\214Windows\347\216\257\345\242\203\344\270\213Git\346\215\242\350\241\214\347\273\223\345\260\276\345\206\262\347\252\201.html"
index 3bebee0a..5c05e23c 100644
--- "a/hand-notes/Git/Mac\347\216\257\345\242\203\344\270\213\345\222\214Windows\347\216\257\345\242\203\344\270\213Git\346\215\242\350\241\214\347\273\223\345\260\276\345\206\262\347\252\201.html"
+++ "b/hand-notes/Git/Mac\347\216\257\345\242\203\344\270\213\345\222\214Windows\347\216\257\345\242\203\344\270\213Git\346\215\242\350\241\214\347\273\223\345\260\276\345\206\262\347\252\201.html"
@@ -6,14 +6,14 @@
     Mac环境下和Windows环境下Git换行结尾冲突 | mx52jing
     
     
-    
-    
-    
+    
+    
+    
     
     
   
   
-    
Skip to content
On this page

Mac环境下和Windows环境下Git换行结尾冲突

今天遇到一个问题(我的电脑是Mac)

基于某个项目的main分支开发功能,开发完毕后,合并到基于main分支创建的测试分支上,结果发现了上百处冲突,顿时惊呆了

比如下面这样的冲突:

WechatIMG456

看起来内容都没改变,但是就是有冲突

原因

造成上面的冲突的原因是:文本文件所使用的换行符,在不同的系统平台上是不一样的

UNIX/Linux使用的是0x0A(LF),早期的Mac OS使用的是0x0D(CR),后来的OS X在更换内核后与UNIX保持一致了

DOS/Windows一直使用0x0D0A(CRLF)作为换行符

在不同平台上,换行符发生改变时,Git会认为整个文件被修改,这就造成我们没法diff,不能正确反映本次的修改

Git配置项

eol

  • 设置工作目录中文件的换行符,有三个值LF, CRLFnative(默认,跟随操作系统)

Git还提供了一些配置选项,用于在提交检出自动转换换行符

autocrlf

该配置可设置为下面几个值:

  • true: 表示提交时转换为LF检出时转换为CRLF,

  • false: 表示提交检出均不转换

  • input: 表示提交时转换为LF检出时不转换

shell
# 提交时转换为LF,检出时转换为CRLF
+    
Skip to content
On this page

Mac环境下和Windows环境下Git换行结尾冲突

今天遇到一个问题(我的电脑是Mac)

基于某个项目的main分支开发功能,开发完毕后,合并到基于main分支创建的测试分支上,结果发现了上百处冲突,顿时惊呆了

比如下面这样的冲突:

WechatIMG456

看起来内容都没改变,但是就是有冲突

原因

造成上面的冲突的原因是:文本文件所使用的换行符,在不同的系统平台上是不一样的

UNIX/Linux使用的是0x0A(LF),早期的Mac OS使用的是0x0D(CR),后来的OS X在更换内核后与UNIX保持一致了

DOS/Windows一直使用0x0D0A(CRLF)作为换行符

在不同平台上,换行符发生改变时,Git会认为整个文件被修改,这就造成我们没法diff,不能正确反映本次的修改

Git配置项

eol

  • 设置工作目录中文件的换行符,有三个值LF, CRLFnative(默认,跟随操作系统)

Git还提供了一些配置选项,用于在提交检出自动转换换行符

autocrlf

该配置可设置为下面几个值:

  • true: 表示提交时转换为LF检出时转换为CRLF,

  • false: 表示提交检出均不转换

  • input: 表示提交时转换为LF检出时不转换

shell
# 提交时转换为LF,检出时转换为CRLF
 git config --global core.autocrlf true
 
 # 设置提交检出均不自动转换换行符
@@ -41,8 +41,8 @@
 core.safecrlf=true
 

上面配置好后还没完,因为我是Mac,此时我的分支中(feature/dev)的文件中换行符都是CRLF,而目标分支(feature/test)的文件中都是LF

我如果直接切到feature/test分支merge我的feature/dev还是会有大量冲突

因为我本地的文件在设置前已经以不一致的换行符格式存在,为了解决这个问题并让后续的合并顺畅,我需要重新规范化我的文件并提交一次。这是一个一次性的操作,确保所有文件的换行符格式一致。

重新规范化现有文件可执行如下命令(记得先加上上面的Git配置):

shell
git add --renormalize .
 

这个命令会重新扫描所有的文件,并根据当前的Git配置(包括core.autocrlf.gitattributes(可选,另一种方法,我没配置这个文件))规范化它们的换行符。

然后我将上面的修改提交后重新merge,现在的冲突都是代码层面的冲突,没有格式冲突了,然后就可以正常的修改的代码了

参考

- - + + \ No newline at end of file diff --git "a/hand-notes/JavaScript/\345\210\244\346\226\255\345\255\227\346\257\215\345\244\247\345\260\217\345\206\231.html" "b/hand-notes/JavaScript/\345\210\244\346\226\255\345\255\227\346\257\215\345\244\247\345\260\217\345\206\231.html" index 06d0c677..7a4ff33f 100644 --- "a/hand-notes/JavaScript/\345\210\244\346\226\255\345\255\227\346\257\215\345\244\247\345\260\217\345\206\231.html" +++ "b/hand-notes/JavaScript/\345\210\244\346\226\255\345\255\227\346\257\215\345\244\247\345\260\217\345\206\231.html" @@ -6,14 +6,14 @@ 判断字母大小写 | mx52jing - - - + + + -
Skip to content
On this page

判断字母大小写

TIP

  • 每个字符(包括字母)在计算机中都有一个对应的ASCII码值。

  • 大写字母的ASCII码值范围是65到90(包括65和90)

  • 小写字母的ASCII码值范围是97到122(包括97和122)

判断字母是否是大写字母

javascript
function isLetterUppercase(letter) {
+    
-    
-    
+    
+    
     
   
 
\ No newline at end of file
diff --git "a/hand-notes/JavaScript/\346\216\247\345\210\266\345\271\266\345\217\221\346\211\247\350\241\214\345\207\275\346\225\260.html" "b/hand-notes/JavaScript/\346\216\247\345\210\266\345\271\266\345\217\221\346\211\247\350\241\214\345\207\275\346\225\260.html"
index a6b53342..38a22487 100644
--- "a/hand-notes/JavaScript/\346\216\247\345\210\266\345\271\266\345\217\221\346\211\247\350\241\214\345\207\275\346\225\260.html"
+++ "b/hand-notes/JavaScript/\346\216\247\345\210\266\345\271\266\345\217\221\346\211\247\350\241\214\345\207\275\346\225\260.html"
@@ -6,14 +6,14 @@
     控制并发执行函数 | mx52jing
     
     
-    
-    
-    
+    
+    
+    
     
     
   
   
-    
Skip to content
On this page

控制并发执行函数

typescript
type TTask = (...args: any[]) => Promise<any>;
+    
-    
-    
+    
+    
     
   
 
\ No newline at end of file
diff --git "a/hand-notes/JavaScript/\346\225\260\345\255\227\345\233\233\350\210\215\344\272\224\345\205\245.html" "b/hand-notes/JavaScript/\346\225\260\345\255\227\345\233\233\350\210\215\344\272\224\345\205\245.html"
index 6966c226..40a37cd1 100644
--- "a/hand-notes/JavaScript/\346\225\260\345\255\227\345\233\233\350\210\215\344\272\224\345\205\245.html"
+++ "b/hand-notes/JavaScript/\346\225\260\345\255\227\345\233\233\350\210\215\344\272\224\345\205\245.html"
@@ -6,22 +6,22 @@
     数字四舍五入 | mx52jing
     
     
-    
-    
-    
+    
+    
+    
     
     
   
   
-    
Skip to content
On this page

数字四舍五入

javascript
/**
+    
-    
-    
+    
+    
     
   
 
\ No newline at end of file
diff --git "a/hand-notes/JavaScript/\346\240\271\346\215\256\347\224\237\346\227\245\350\256\241\347\256\227\345\271\264\351\276\204.html" "b/hand-notes/JavaScript/\346\240\271\346\215\256\347\224\237\346\227\245\350\256\241\347\256\227\345\271\264\351\276\204.html"
index 6cb97dfc..ea7d2b9d 100644
--- "a/hand-notes/JavaScript/\346\240\271\346\215\256\347\224\237\346\227\245\350\256\241\347\256\227\345\271\264\351\276\204.html"
+++ "b/hand-notes/JavaScript/\346\240\271\346\215\256\347\224\237\346\227\245\350\256\241\347\256\227\345\271\264\351\276\204.html"
@@ -6,14 +6,14 @@
     根据生日计算年龄 | mx52jing
     
     
-    
-    
-    
+    
+    
+    
     
     
   
   
-    
Skip to content
On this page

根据生日计算年龄

javascript
const birthdateReg = /^(\d{4})[-/]?(\d{1,2})[-/]?(\d{1,2})$/;
+    
-    
-    
+    
+    
     
   
 
\ No newline at end of file
diff --git "a/hand-notes/JavaScript/\351\232\217\346\234\272\346\225\260\347\232\204\345\272\224\347\224\250.html" "b/hand-notes/JavaScript/\351\232\217\346\234\272\346\225\260\347\232\204\345\272\224\347\224\250.html"
index 1cd09c7b..7b0eb1ba 100644
--- "a/hand-notes/JavaScript/\351\232\217\346\234\272\346\225\260\347\232\204\345\272\224\347\224\250.html"
+++ "b/hand-notes/JavaScript/\351\232\217\346\234\272\346\225\260\347\232\204\345\272\224\347\224\250.html"
@@ -6,14 +6,14 @@
     随机数的应用 | mx52jing
     
     
-    
-    
-    
+    
+    
+    
     
     
   
   
-    
Skip to content
On this page

随机数的应用

生成指定长度的随机字符串(只包含数字和字母)

javascript
const generateRandomStr = (strLength = 16) => {
+    
-    
-    
+    
+    
     
   
 
\ No newline at end of file
diff --git a/hand-notes/Linux/practice-method.html b/hand-notes/Linux/practice-method.html
index 0836669d..d4a63775 100644
--- a/hand-notes/Linux/practice-method.html
+++ b/hand-notes/Linux/practice-method.html
@@ -6,14 +6,14 @@
     Bash实用方法 | mx52jing
     
     
-    
-    
-    
+    
+    
+    
     
     
   
   
-    
Skip to content
On this page

Bash实用方法

通过文件路径提取文件名称/所在目录

使用dirname获取文件所在目录

TIP

该方法不仅可以提取文件所在的目录,还能提取目录所在的目录

使用方法:

shell
dirname NAME
+    
Skip to content
On this page

Bash实用方法

通过文件路径提取文件名称/所在目录

使用dirname获取文件所在目录

TIP

该方法不仅可以提取文件所在的目录,还能提取目录所在的目录

使用方法:

shell
dirname NAME
 

示例:

shell
str="/a1/b1/c1/foo.png"
 # 输出 /a1/b1/c1
 echo $(dirname $str)
@@ -93,8 +93,8 @@
 npm ERR!     /Users/xxx/.npm/_logs/2023-03-10T15_19_28_286Z-debug-0.log
 

获取当前机器IP

shell
ifconfig | grep inet | grep -v inet6 | grep -v 127.0.0.1 | awk '{print $2}'
 
- - + + \ No newline at end of file diff --git "a/hand-notes/Linux/\345\233\276\347\211\207\345\216\213\347\274\251\345\222\214\346\240\274\345\274\217\350\275\254\346\215\242.html" "b/hand-notes/Linux/\345\233\276\347\211\207\345\216\213\347\274\251\345\222\214\346\240\274\345\274\217\350\275\254\346\215\242.html" index 84cfda8e..bb8e8711 100644 --- "a/hand-notes/Linux/\345\233\276\347\211\207\345\216\213\347\274\251\345\222\214\346\240\274\345\274\217\350\275\254\346\215\242.html" +++ "b/hand-notes/Linux/\345\233\276\347\211\207\345\216\213\347\274\251\345\222\214\346\240\274\345\274\217\350\275\254\346\215\242.html" @@ -6,14 +6,14 @@ Bash 脚本记录 | mx52jing - - - + + + -
Skip to content
On this page

Bash 脚本记录

图片转为webp格式

找出指定文件夹下所有非webp格式的图片,并转换成webp

  • 支持传入单张图片地址/图片所在文件夹地址
  • 解决文件名称带空格问题参考链接
  • cwebp文档链接
shell
#! /bin/Bash
+    
-    
-    
+    
+    
     
   
 
\ No newline at end of file
diff --git "a/hand-notes/Linux/\346\226\207\344\273\266\345\216\213\347\274\251.html" "b/hand-notes/Linux/\346\226\207\344\273\266\345\216\213\347\274\251.html"
index cf3f6506..4407a1c7 100644
--- "a/hand-notes/Linux/\346\226\207\344\273\266\345\216\213\347\274\251.html"
+++ "b/hand-notes/Linux/\346\226\207\344\273\266\345\216\213\347\274\251.html"
@@ -6,14 +6,14 @@
     文件压缩 | mx52jing
     
     
-    
-    
-    
+    
+    
+    
     
     
   
   
-    
Skip to content
On this page

文件压缩

zip

压缩文件

shell
zip targetFile.zip sourceFile
+    
-    
-    
+    
+    
     
   
 
\ No newline at end of file
diff --git "a/hand-notes/Linux/\346\235\203\351\231\220\347\233\270\345\205\263.html" "b/hand-notes/Linux/\346\235\203\351\231\220\347\233\270\345\205\263.html"
index 878040e6..863816b8 100644
--- "a/hand-notes/Linux/\346\235\203\351\231\220\347\233\270\345\205\263.html"
+++ "b/hand-notes/Linux/\346\235\203\351\231\220\347\233\270\345\205\263.html"
@@ -6,14 +6,14 @@
     权限相关 | mx52jing
     
     
-    
-    
-    
+    
+    
+    
     
     
   
   
-    
Skip to content
On this page

权限相关

权限的作用

  • 文件来说最高权限是x(可执行)

  • 目录来讲最高权限是w(可写),对目录有了w权限,就可以做任何事情

权限详情

权限项执行
字符表示rwx
数字表示421

文件权限

权限含义示例
r读取文件内容catmoreheadtail
w编辑、新增、修改文件内容,不能删除文件,除非对目录有写权限vimecho
x可执行./xxx.sh

文件夹(目录)权限

权限含义示例
r可以查看目录下的文件名lsllla
w具有修改目录结构的权限。如新建删除重命名此目录下的文件和目录touchrmmvcp
x可进入目录cd

权限位

执行la,查看权限,例如:drwx------

shell
  js-project la
+    
Skip to content
On this page

权限相关

权限的作用

  • 文件来说最高权限是x(可执行)

  • 目录来讲最高权限是w(可写),对目录有了w权限,就可以做任何事情

权限详情

权限项执行
字符表示rwx
数字表示421

文件权限

权限含义示例
r读取文件内容catmoreheadtail
w编辑、新增、修改文件内容,不能删除文件,除非对目录有写权限vimecho
x可执行./xxx.sh

文件夹(目录)权限

权限含义示例
r可以查看目录下的文件名lsllla
w具有修改目录结构的权限。如新建删除重命名此目录下的文件和目录touchrmmvcp
x可进入目录cd

权限位

执行la,查看权限,例如:drwx------

shell
  js-project la
 total 72
 drwxr-xr-x@  
 drwxr-xr-x@ 
@@ -24,8 +24,8 @@
 

chown

改变文件拥有者

shell
chown 用户名 文件名
 

chgrp

改变文件所属群组

shell
chgrp 组名 文件名
 
- - + + \ No newline at end of file diff --git "a/hand-notes/Linux/\347\224\250\346\210\267\346\223\215\344\275\234\347\233\270\345\205\263.html" "b/hand-notes/Linux/\347\224\250\346\210\267\346\223\215\344\275\234\347\233\270\345\205\263.html" index 40e7d6ed..d964ab67 100644 --- "a/hand-notes/Linux/\347\224\250\346\210\267\346\223\215\344\275\234\347\233\270\345\205\263.html" +++ "b/hand-notes/Linux/\347\224\250\346\210\267\346\223\215\344\275\234\347\233\270\345\205\263.html" @@ -6,21 +6,21 @@ 用户操作相关 | mx52jing - - - + + + -
Skip to content
On this page

用户操作相关

查看用户列表

shell
cat /etc/passwd
+    
-    
-    
+    
+    
     
   
 
\ No newline at end of file
diff --git "a/hand-notes/Linux/\350\256\241\347\256\227\345\215\207\347\272\247\347\211\210\346\234\254\345\217\267.html" "b/hand-notes/Linux/\350\256\241\347\256\227\345\215\207\347\272\247\347\211\210\346\234\254\345\217\267.html"
index b1ad3893..d55a0595 100644
--- "a/hand-notes/Linux/\350\256\241\347\256\227\345\215\207\347\272\247\347\211\210\346\234\254\345\217\267.html"
+++ "b/hand-notes/Linux/\350\256\241\347\256\227\345\215\207\347\272\247\347\211\210\346\234\254\345\217\267.html"
@@ -6,14 +6,14 @@
     计算升级版本号 | mx52jing
     
     
-    
-    
-    
+    
+    
+    
     
     
   
   
-    
Skip to content
On this page

计算升级版本号

  • 根据当前的版本号计算升级版本后的号,支持自定义版本号

效果如下:

version

shell
current_version="5.0.0"
+    
Skip to content
On this page

计算升级版本号

  • 根据当前的版本号计算升级版本后的号,支持自定义版本号

效果如下:

version

shell
current_version="5.0.0"
 echo "当前的版本为【${current_version}"
 # 计算要升级的版本号
 # 分割当前版本号为主版本、次版本和修订版本
@@ -69,8 +69,8 @@
 echo "升级后的版本号为【${selected_version}"
 

shell语句备注

shell
IFS='.' read -ra version_parts <<< "$current_version"
 
  • 首先,将IFS设置为.,这意味着Shell将使用.作为字段分隔符,用于将字符串分割成多个部分;

  • 然后,使用read命令结合<<<操作符,将字符串"$current_version"作为输入传递给read命令;

  • read命令读取输入,并将其分割为多个字段,并将每个字段存储在一个数组中

    • -a选项告诉read命令将字段存储在数组

    • -r选项告诉它不要对反斜杠进行转义

- - + + \ No newline at end of file diff --git a/hand-notes/Mac/frequently-commands.html b/hand-notes/Mac/frequently-commands.html index 3a7bac0f..07fca8d1 100644 --- a/hand-notes/Mac/frequently-commands.html +++ b/hand-notes/Mac/frequently-commands.html @@ -6,14 +6,14 @@ Mac 使用小记 | mx52jing - - - + + + -
Skip to content
On this page

Mac 使用小记

电脑没声音,播放不出声音

  • 重启电脑声音
shell
sudo killall coreaudiod
+    
Skip to content
On this page

Mac 使用小记

电脑没声音,播放不出声音

  • 重启电脑声音
shell
sudo killall coreaudiod
 

设置mac光标移动速度

shell
defaults write NSGlobalDomain KeyRepeat -int 1
 

KeyRepeat对应的是按键重复,系统设置里调到最快对应的值是2,你可以调成0或者1(建议调为10可能会太快)

shell
defaults write NSGlobalDomain InitialKeyRepeat -int 15
 

InitialKeyRepeat对应的是重复前延迟,系统设置里调到最快对应的值是15,可以尝试调成10或者更小,不过建议保持15,因为反应时间太快会容易导致误操作(比如Esc键和Command-Z这样的快捷键)

安装软件失败问题解决

问题: 安装一些软件可能会出现这个报错:「xxx.app已损坏,打不开。你应该将它移到废纸篓」,并非你安装的软件已损坏,而是Mac系统的安全设置问题

解决方法:

shell
sudo spctl --master-disable
@@ -51,8 +51,8 @@
 

如果还有第二个Warning的问题,再执行一次

shell
Git -C $(brew --repo homebrew/core) checkout master
 

Mac双开微信

shell
open -n /Applications/WeChat.app/Contents/MacOS/WeChat
 
- - + + \ No newline at end of file diff --git a/hand-notes/Mac/init.html b/hand-notes/Mac/init.html index 2659c8a9..a82355d4 100644 --- a/hand-notes/Mac/init.html +++ b/hand-notes/Mac/init.html @@ -6,14 +6,14 @@ Mac环境初始化 | mx52jing - - - + + + -
Skip to content
On this page

Mac环境初始化

Mac软件


Homebrew

官网地址

shell
/bin/Bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
+    
Skip to content
On this page

Mac环境初始化

Mac软件


Homebrew

官网地址

shell
/bin/Bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
 

brew所有命令执行完注意查看warning或相应提示,避免掉坑,例如M1环境安装后会有以下提示

shell
==> Next steps:
 - Run these two commands in your terminal to add Homebrew to your PATH:
     echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
@@ -28,8 +28,8 @@
 
  • 管理JDK版本
shell
jenv versions
 jenv global 17.0.3
 

配置参考

其他软件

软件名称说明
istat-menus监控神器,展示电脑CPU占用,内存占用等
artpip每日自动更换壁纸
wpsoffice-cnWPS
logitech-options罗技鼠标用户必装,否则无法开启高dpi
asciiquarium命令行水族馆
iinamac视频播放神器
fliqlo锁屏画面展示当前时间,地址

其他收藏/参考

- - + + \ No newline at end of file diff --git "a/hand-notes/Mac/\345\277\253\346\215\267\350\277\220\350\241\214\350\207\252\345\256\232\344\271\211shell\350\204\232\346\234\254.html" "b/hand-notes/Mac/\345\277\253\346\215\267\350\277\220\350\241\214\350\207\252\345\256\232\344\271\211shell\350\204\232\346\234\254.html" index 343ea85b..29c81de3 100644 --- "a/hand-notes/Mac/\345\277\253\346\215\267\350\277\220\350\241\214\350\207\252\345\256\232\344\271\211shell\350\204\232\346\234\254.html" +++ "b/hand-notes/Mac/\345\277\253\346\215\267\350\277\220\350\241\214\350\207\252\345\256\232\344\271\211shell\350\204\232\346\234\254.html" @@ -6,14 +6,14 @@ 快捷使用自定义shell脚本 | mx52jing - - - + + + -
Skip to content
On this page

快捷使用自定义shell脚本

如果需要在自己的电脑中经常会用到自己写的shell脚本,可以将其添加到环境变量中,然后可以像使用全局命令一样执行自己的脚本,设置步骤如下:

  1. 创建新文件夹

新建一个文件夹存放自己的所有shell脚本 新建一个脚本文件并为其添加执行权限

shell
mkdir ~/.my_scripts
+    
Skip to content
On this page

快捷使用自定义shell脚本

如果需要在自己的电脑中经常会用到自己写的shell脚本,可以将其添加到环境变量中,然后可以像使用全局命令一样执行自己的脚本,设置步骤如下:

  1. 创建新文件夹

新建一个文件夹存放自己的所有shell脚本 新建一个脚本文件并为其添加执行权限

shell
mkdir ~/.my_scripts
 cd ~/.my_scripts
 # 编辑完后:wq保存退出
 nvim x.sh
@@ -25,8 +25,8 @@
   Downloads reinforcing.sh
 I am reinforcing.sh
 
- - + + \ No newline at end of file diff --git a/hand-notes/React/ProComponents/ProTable.html b/hand-notes/React/ProComponents/ProTable.html index d6121570..ee2ce5d5 100644 --- a/hand-notes/React/ProComponents/ProTable.html +++ b/hand-notes/React/ProComponents/ProTable.html @@ -6,14 +6,14 @@ ProTable | mx52jing - - - + + + -
Skip to content
On this page

ProTable

表格搜索修改

ProTable高级表格添加search={true}后,默认所有的column都会支持搜索,搜索的key就是dataIndex字段,

例如:下面的columndataIndexrealName,那么启用搜索后,传入的params就是{realName: "输入的值""},如果想改变传给接口的key需要进一步处理

javascript
const columns = [
+    
-    
-    
+    
+    
     
   
 
\ No newline at end of file
diff --git "a/hand-notes/Sass/sass\345\256\236\347\216\260\346\230\237\347\251\272\346\225\210\346\236\234.html" "b/hand-notes/Sass/sass\345\256\236\347\216\260\346\230\237\347\251\272\346\225\210\346\236\234.html"
index 4a61327c..d525edf2 100644
--- "a/hand-notes/Sass/sass\345\256\236\347\216\260\346\230\237\347\251\272\346\225\210\346\236\234.html"
+++ "b/hand-notes/Sass/sass\345\256\236\347\216\260\346\230\237\347\251\272\346\225\210\346\236\234.html"
@@ -6,14 +6,14 @@
     sass实现星空效果 | mx52jing
     
     
-    
-    
-    
+    
+    
+    
     
     
   
   
-    
Skip to content
On this page

sass实现星空效果

代码展示

html代码

html
<!doctype html>
+    
-    
-    
+    
+    
     
   
 
\ No newline at end of file
diff --git "a/hand-notes/Sass/sass\345\260\217\346\212\200\345\267\247.html" "b/hand-notes/Sass/sass\345\260\217\346\212\200\345\267\247.html"
index d787c3ad..db3921b8 100644
--- "a/hand-notes/Sass/sass\345\260\217\346\212\200\345\267\247.html"
+++ "b/hand-notes/Sass/sass\345\260\217\346\212\200\345\267\247.html"
@@ -6,14 +6,14 @@
     sass小技巧 | mx52jing
     
     
-    
-    
-    
+    
+    
+    
     
     
   
   
-    
Skip to content
On this page

sass小技巧

在sass中debug

在sass中,可以通过@debug <expression> 很方便地在控制台打印出表达式返回的值

scss
.a {
+    
-    
-    
+
+ + \ No newline at end of file diff --git "a/hand-notes/Sass/\345\260\217\347\220\203\344\272\244\344\272\222loading.html" "b/hand-notes/Sass/\345\260\217\347\220\203\344\272\244\344\272\222loading.html" index 7c6807ee..91ec4564 100644 --- "a/hand-notes/Sass/\345\260\217\347\220\203\344\272\244\344\272\222loading.html" +++ "b/hand-notes/Sass/\345\260\217\347\220\203\344\272\244\344\272\222loading.html" @@ -6,14 +6,14 @@ 小球交互loading | mx52jing - - - + + + -
Skip to content
On this page

小球交互loading

代码实现

scss代码

scss
@use "sass:math";
+    
-    
-    
+    
+    
     
   
 
\ No newline at end of file
diff --git "a/hand-notes/Sass/\351\200\232\350\277\207mixin\347\256\200\345\214\226\345\223\215\345\272\224\345\274\217\344\273\243\347\240\201.html" "b/hand-notes/Sass/\351\200\232\350\277\207mixin\347\256\200\345\214\226\345\223\215\345\272\224\345\274\217\344\273\243\347\240\201.html"
index 74d647d9..a1a4be14 100644
--- "a/hand-notes/Sass/\351\200\232\350\277\207mixin\347\256\200\345\214\226\345\223\215\345\272\224\345\274\217\344\273\243\347\240\201.html"
+++ "b/hand-notes/Sass/\351\200\232\350\277\207mixin\347\256\200\345\214\226\345\223\215\345\272\224\345\274\217\344\273\243\347\240\201.html"
@@ -6,14 +6,14 @@
     通过mixin简化响应式代码 | mx52jing
     
     
-    
-    
-    
+    
+    
+    
     
     
   
   
-    
Skip to content
On this page

通过mixin简化响应式代码

代码展示

有的响应式代码可能需要写一些适配代码,例如

css
.home {
+    
-    
-    
+    
+    
     
   
 
\ No newline at end of file
diff --git a/hashmap.json b/hashmap.json
index 4deb011d..e31887ec 100644
--- a/hashmap.json
+++ b/hashmap.json
@@ -1 +1 @@
-{"hand-notes_javascript_根据生日计算年龄.md":"1232e091","hand-notes_javascript_数字四舍五入.md":"cfb90e5b","hand-notes_canvas_绘制图片不清晰问题.md":"847e50b0","hand-notes_charles_修改请求或响应.md":"ab3f20c9","hand-notes_charles_抓包配置.md":"642788c9","hand-notes_git_mac环境下和windows环境下git换行结尾冲突.md":"7b27b653","hand-notes_javascript_判断字母大小写.md":"59ebc52b","hand-notes_javascript_控制并发执行函数.md":"504bc730","hand-notes_css_实现高度过渡.md":"61e2fce5","hand-notes_css_css模拟数字loading.md":"1238daf3","hand-notes_css_css计数器-counter.md":"09fa3208","hand-notes_css_图片加载出错样式设置.md":"58a2fa90","hand-notes_chart_antvf2_使用小记.md":"129d6649","hand-notes_css_虚线边框.md":"d396c891","knowledge-deposition_golang_基础知识_文件操作_读文件.md":"5f76493d","algorithm_leetcode刷题_151-反转字符串中的单词.md":"0ba3267d","knowledge-deposition_rabbitmq_发布订阅.md":"08582e51","knowledge-deposition_nacos_操作动态配置文件.md":"cb4056a7","algorithm_leetcode刷题_1047-删除字符串中的所有相邻重复项.md":"1b8de632","algorithm_leetcode刷题_136-只出现一次的数字.md":"b8de6059","algorithm_leetcode刷题_144-94-145-遍历二叉树.md":"85a99d88","algorithm_leetcode刷题_19-删除链表的倒数第n个结点.md":"24424baa","algorithm_leetcode刷题_14-最长公共前缀.md":"988c3016","algorithm_leetcode刷题_17-电话号码的字母组合.md":"7fbe5bd8","hand-notes_linux_权限相关.md":"237bf565","hand-notes_linux_文件压缩.md":"8465c61c","algorithm_leetcode刷题_18-四数之和.md":"7c2d4f0d","hand-notes_linux_计算升级版本号.md":"c15e0ba4","hand-notes_javascript_随机数的应用.md":"c11015e7","hand-notes_mac_frequently-commands.md":"a1a6087f","hand-notes_mac_快捷运行自定义shell脚本.md":"6159f234","algorithm_leetcode刷题_20-有效的括号.md":"bb5cfe80","algorithm_leetcode刷题_209-长度最小的子数组.md":"70c53887","hand-notes_linux_practice-method.md":"b405bc5d","algorithm_leetcode刷题_206-反转链表.md":"2fc76b3e","algorithm_leetcode刷题_24-两两交换链表中的节点.md":"523e7e5c","algorithm_leetcode刷题_242-有效的字母异位词.md":"542b06e8","algorithm_leetcode刷题_485-最大连续1的个数.md":"be64e975","algorithm_leetcode刷题_58-最后一个单词的长度.md":"0594f4ac","algorithm_leetcode刷题_628-三个数的最大乘积.md":"d3b08e18","algorithm_leetcode刷题_414-第三大的数.md":"c59ee823","algorithm_leetcode刷题_27-移除元素.md":"d4cb0564","algorithm_leetcode刷题_707-设计链表.md":"4e1bd779","algorithm_leetcode刷题_9-回文数.md":"e7522f1c","favorites_css_index.md":"6bef34af","favorites_browser_index.md":"9955bf7e","algorithm_leetcode刷题_977-有序数组的平方.md":"48537ab1","favorites_docker_index.md":"53b99cb9","favorites_git_index.md":"927d01a0","algorithm_leetcode刷题_lcr-018-验证回文串.md":"849492ac","favorites_golang_index.md":"de3eebbf","favorites_books_index.md":"1fa45f2c","favorites_ide_index.md":"46431c05","favorites_canvas_index.md":"99d52141","favorites_javassript_index.md":"c6dd1c6f","favorites_linux_index.md":"7c838ffc","favorites_nginx_index.md":"14256c59","favorites_problemsolving_index.md":"ad26ae26","favorites_react_index.md":"56a06095","favorites_vue_index.md":"9b6ccf34","favorites_ui设计灵感_index.md":"edcd0886","favorites_typescript_index.md":"8f2790ad","favorites_算法_index.md":"9e4e1f1b","favorites_其他_index.md":"2b04e138","index.md":"737c7db9","hand-notes_css_css实现文字渐变.md":"9697050f","knowledge-deposition_docker_docker基础知识.md":"d2b13d56","knowledge-deposition_docker_dockerfile.md":"55bce5bc","knowledge-deposition_golang_crawler_http请求方法.md":"193ce00d","knowledge-deposition_golang_gin_hello-world.md":"cd43f77f","knowledge-deposition_golang_gin_bind绑定器.md":"7963bc3b","knowledge-deposition_golang_gin_上传和下载文件.md":"6e560366","knowledge-deposition_golang_gin_中间件.md":"8c88a93a","knowledge-deposition_golang_gin_支持跨域.md":"beb258ef","knowledge-deposition_golang_gin_响应数据.md":"ff126266","knowledge-deposition_golang_gin_请求头和响应头.md":"e44f68c8","knowledge-deposition_golang_gin_路由分组.md":"8d173941","knowledge-deposition_golang_gin_请求参数.md":"908d2ad3","knowledge-deposition_golang_gin_集成swagger.md":"ddba4d53","knowledge-deposition_golang_gorm_advancedquery.md":"74d2a4b9","knowledge-deposition_golang_基础知识_文件操作_读取配置文件.md":"6095be72","knowledge-deposition_golang_基础知识_网络_tcp.md":"afa5fe6e","knowledge-deposition_golang_logger_logrus_基础用法.md":"faaf0fca","knowledge-deposition_golang_gorm_连接数据库.md":"9a7e4fad","knowledge-deposition_golang_基础知识_文件操作_并发下载远程文件.md":"15b6224d","hand-notes_linux_图片压缩和格式转换.md":"8a51bff9","knowledge-deposition_golang_基础知识_fmt输出含义.md":"591e9212","knowledge-deposition_mysql_表连接.md":"a7ab8464","algorithm_leetcode刷题_15-三数之和.md":"ed48e4a2","knowledge-deposition_golang_gorm_关联之多对多.md":"f4eb4b53","knowledge-deposition_前端工程化_vite_vite插件机制.md":"8a636ac7","knowledge-deposition_rabbitmq_routing.md":"b03766af","knowledge-deposition_golang_基础知识_time包.md":"3c7c1419","hand-notes_sass_sass实现星空效果.md":"02d1f420","knowledge-deposition_golang_基础知识_指针.md":"9e504237","knowledge-deposition_mysql_基础知识.md":"3c73c315","knowledge-deposition_golang_基础知识_文件操作_index.md":"40ba01cd","knowledge-deposition_golang_基础知识_基础数据类型.md":"e448fb93","algorithm_leetcode刷题_202-快乐数.md":"1895aaa0","hand-notes_css_css实现类似微信头像效果.md":"378fb473","knowledge-deposition_前端工程化_vite_处理静态资源.md":"89dfb210","knowledge-deposition_前端工程化_vite_区分不同环境.md":"2a34f791","algorithm_leetcode刷题_203-移除链表元素.md":"36715e65","knowledge-deposition_前端工程化_vite_esbuild相关.md":"9cfd1156","knowledge-deposition_golang_基础知识_结构体.md":"bdc9b642","knowledge-deposition_golang_基础知识_select.md":"ebe3f150","knowledge-deposition_golang_基础知识_context.md":"830f0986","knowledge-deposition_golang_基础知识_流程控制.md":"25f69e4e","knowledge-deposition_mysql_分组和子查询.md":"33b9d805","favorites_mobile_index.md":"9a696ab8","algorithm_leetcode刷题_26-删除有序数组中的重复项.md":"2b71935b","knowledge-deposition_golang_logger_logrus_hook.md":"288db373","knowledge-deposition_golang_基础知识_通道channel.md":"d281c72c","knowledge-deposition_golang_加密_rsa加密.md":"44036afe","knowledge-deposition_golang_gorm_关联之一对一.md":"1db24d02","algorithm_leetcode刷题_349-两个数组的交集.md":"09761f50","hand-notes_css_css实现突出不同颜色的圆角.md":"c9272a3c","algorithm_leetcode刷题_3-无重复字符的最长子串.md":"97f7d9a5","knowledge-deposition_golang_加密_aes加密.md":"ac61d4b4","knowledge-deposition_前端工程化_vite_处理样式.md":"553883db","algorithm_leetcode刷题_35-搜索插入位置.md":"a661fc45","knowledge-deposition_golang_基础知识_网络_rpc.md":"a3f89cc2","hand-notes_sass_通过mixin简化响应式代码.md":"60a1edb2","algorithm_leetcode刷题_541-反转字符串ii.md":"13001378","knowledge-deposition_rabbitmq_基本概念和安装启动.md":"c32d0ef9","knowledge-deposition_mysql_函数.md":"34ff0162","knowledge-deposition_golang_gorm_update.md":"5660fb43","knowledge-deposition_golang_gorm_自定义数据类型.md":"5f12eb67","knowledge-deposition_golang_基础知识_协程.md":"beabafa5","knowledge-deposition_linux_bash基础知识.md":"444e58f9","knowledge-deposition_golang_gorm_create.md":"de0bc8bb","knowledge-deposition_golang_基础知识_url包.md":"97a21a31","knowledge-deposition_golang_jwt_jwt.md":"025dbd2e","knowledge-deposition_golang_gorm_模型定义.md":"3baa4e5f","knowledge-deposition_golang_基础知识_文件操作_文件复制.md":"87e35aea","hand-notes_mac_init.md":"556fa76c","algorithm_leetcode刷题_1-两数之和.md":"4a4443fd","knowledge-deposition_golang_基础知识_数组、切片、map.md":"3d867f93","hand-notes_linux_用户操作相关.md":"766df05f","knowledge-deposition_golang_基础知识_json序列化.md":"22767fa1","knowledge-deposition_golang_基础知识_环境搭建.md":"6d924feb","knowledge-deposition_golang_基础知识_strings包.md":"b87e7a71","knowledge-deposition_golang_基础知识_接口.md":"44cdbe82","knowledge-deposition_golang_gorm_delete.md":"5d3b039a","knowledge-deposition_nacos_基本概念和安装启动.md":"d5028cb7","knowledge-deposition_golang_基础知识_test.md":"510674c5","knowledge-deposition_golang_基础知识_协程安全.md":"8b333de6","algorithm_leetcode刷题_520-检测大写字母.md":"7e6cb759","knowledge-deposition_rabbitmq_topics.md":"3f9385b6","knowledge-deposition_前端工程化_vite_依赖预构建.md":"ef6a2ed6","knowledge-deposition_ssh_ssh-base.md":"3d12383a","knowledge-deposition_前端工程化_vite_初体验.md":"26d99830","algorithm_leetcode刷题_344-反转字符串.md":"039ea20c","knowledge-deposition_golang_基础知识_函数.md":"005b7241","knowledge-deposition_golang_logger_zap_zap使用.md":"84117e9f","algorithm_leetcode刷题_28-找出字符串中第一个匹配项的下标.md":"b772ec49","hand-notes_react_procomponents_protable.md":"96bfef60","favorites_mac_index.md":"3e76e115","knowledge-deposition_golang_基础知识_变量常量.md":"02f1f284","knowledge-deposition_golang_gorm_query.md":"fa5259b4","knowledge-deposition_rabbitmq_工作队列.md":"85802e77","knowledge-deposition_golang_gorm_关联之一对多.md":"423d4a22","algorithm_leetcode刷题_454-四数相加ii.md":"3918f4a0","algorithm_leetcode刷题_150-逆波兰表达式求值.md":"c743e8d2","hand-notes_sass_sass小技巧.md":"cd72a367","knowledge-deposition_前端工程化_vite_rollup的插件机制.md":"ac77f04e","knowledge-deposition_golang_gorm_事务.md":"9638a1c8","knowledge-deposition_golang_logger_logrus_日志分割.md":"bea6b9a2","knowledge-deposition_前端工程化_babel_babel基础.md":"9049b4d3","hand-notes_sass_小球交互loading.md":"d6e6ea0d","knowledge-deposition_golang_基础知识_文件操作_目录操作.md":"cecc0779","knowledge-deposition_mysql_数据操作和查询.md":"e5fb8bfe","knowledge-deposition_golang_基础知识_网络_http.md":"060e5ac2","knowledge-deposition_golang_基础知识_文件操作_写文件.md":"ffca3518","knowledge-deposition_mysql_sql.md":"48b07ca8"}
+{"knowledge-deposition_golang_gin_请求头和响应头.md":"cb5a6ee4","algorithm_leetcode刷题_24-两两交换链表中的节点.md":"785040ef","algorithm_leetcode刷题_344-反转字符串.md":"9282e1dd","algorithm_leetcode刷题_18-四数之和.md":"d7702f79","algorithm_leetcode刷题_20-有效的括号.md":"64ab3b52","algorithm_leetcode刷题_202-快乐数.md":"403eb033","algorithm_leetcode刷题_203-移除链表元素.md":"020363ec","algorithm_leetcode刷题_26-删除有序数组中的重复项.md":"074da58c","algorithm_leetcode刷题_27-移除元素.md":"05aef25d","algorithm_leetcode刷题_28-找出字符串中第一个匹配项的下标.md":"33df99a2","algorithm_leetcode刷题_3-无重复字符的最长子串.md":"fd6b8d95","algorithm_leetcode刷题_19-删除链表的倒数第n个结点.md":"8f83684a","hand-notes_javascript_数字四舍五入.md":"6d43bfc2","hand-notes_javascript_根据生日计算年龄.md":"23f191aa","hand-notes_javascript_随机数的应用.md":"e72b523c","algorithm_leetcode刷题_209-长度最小的子数组.md":"9032535d","knowledge-deposition_golang_gin_支持跨域.md":"1cee88e9","knowledge-deposition_golang_gin_请求参数.md":"e5d42454","knowledge-deposition_golang_加密_rsa加密.md":"4a63c350","algorithm_leetcode刷题_414-第三大的数.md":"b657972b","algorithm_leetcode刷题_349-两个数组的交集.md":"370a303a","algorithm_leetcode刷题_485-最大连续1的个数.md":"0e538c21","algorithm_leetcode刷题_520-检测大写字母.md":"021bc6bd","algorithm_leetcode刷题_541-反转字符串ii.md":"9cc898dc","favorites_books_index.md":"e70623a0","favorites_canvas_index.md":"d276d270","favorites_docker_index.md":"0e03ccaa","favorites_git_index.md":"145715fb","favorites_golang_index.md":"33ca8701","favorites_ide_index.md":"f4fa25a7","algorithm_leetcode刷题_58-最后一个单词的长度.md":"d95f4d76","favorites_javassript_index.md":"adfa8c07","favorites_linux_index.md":"298c4d45","algorithm_leetcode刷题_206-反转链表.md":"7cf0d63f","favorites_mac_index.md":"9780baf3","favorites_mobile_index.md":"e09905ea","favorites_nginx_index.md":"045ab197","favorites_problemsolving_index.md":"f65fb5c5","favorites_react_index.md":"df510430","favorites_ui设计灵感_index.md":"3ec44d20","favorites_vue_index.md":"2d5aa8bb","favorites_其他_index.md":"bf9ebb90","favorites_算法_index.md":"8e792f6a","hand-notes_css_css实现文字渐变.md":"67c61cca","hand-notes_css_css实现突出不同颜色的圆角.md":"79fe9ff6","hand-notes_css_css实现类似微信头像效果.md":"344f246b","hand-notes_css_css模拟数字loading.md":"87467d4b","algorithm_leetcode刷题_9-回文数.md":"d2072e45","hand-notes_css_图片加载出错样式设置.md":"8992d802","hand-notes_css_实现高度过渡.md":"ba3322a7","algorithm_leetcode刷题_628-三个数的最大乘积.md":"98f7284f","hand-notes_canvas_绘制图片不清晰问题.md":"a6cd2754","hand-notes_charles_抓包配置.md":"cc694c60","hand-notes_chart_antvf2_使用小记.md":"dbcb2dcf","algorithm_leetcode刷题_977-有序数组的平方.md":"a2f1b7c0","hand-notes_git_mac环境下和windows环境下git换行结尾冲突.md":"abac10ea","hand-notes_javascript_判断字母大小写.md":"f22cd4c1","hand-notes_javascript_控制并发执行函数.md":"45e0df0b","hand-notes_linux_practice-method.md":"79d41611","hand-notes_linux_图片压缩和格式转换.md":"0fac0544","hand-notes_sass_sass实现星空效果.md":"f61ef1da","hand-notes_sass_sass小技巧.md":"916954ca","knowledge-deposition_golang_基础知识_文件操作_并发下载远程文件.md":"637ae704","hand-notes_sass_小球交互loading.md":"06b019ea","hand-notes_sass_通过mixin简化响应式代码.md":"bec98a0d","index.md":"bec8f389","knowledge-deposition_docker_dockerfile.md":"f5db5b29","knowledge-deposition_docker_docker基础知识.md":"5ccd25a3","knowledge-deposition_golang_crawler_http请求方法.md":"0bcdf6f7","algorithm_leetcode刷题_lcr-018-验证回文串.md":"e6eac031","favorites_browser_index.md":"409dbc56","knowledge-deposition_golang_gin_bind绑定器.md":"551210fe","knowledge-deposition_golang_gin_hello-world.md":"f9d5c871","favorites_typescript_index.md":"837b6f2b","algorithm_leetcode刷题_242-有效的字母异位词.md":"6f5cb629","hand-notes_css_tabs圆角.md":"36efb80a","hand-notes_css_虚线边框.md":"811b6119","hand-notes_charles_修改请求或响应.md":"f727a970","algorithm_leetcode刷题_136-只出现一次的数字.md":"f1073a70","knowledge-deposition_golang_基础知识_context.md":"381181ea","knowledge-deposition_golang_jwt_jwt.md":"5d3ebb0f","hand-notes_linux_计算升级版本号.md":"36063e61","knowledge-deposition_golang_gin_路由分组.md":"00601519","algorithm_leetcode刷题_150-逆波兰表达式求值.md":"5679f162","knowledge-deposition_golang_gin_集成swagger.md":"0e8f970c","knowledge-deposition_golang_gorm_advancedquery.md":"27c5ce11","knowledge-deposition_golang_gorm_create.md":"35aa8083","algorithm_leetcode刷题_151-反转字符串中的单词.md":"2b9140da","knowledge-deposition_golang_gorm_query.md":"92a03a34","knowledge-deposition_golang_gorm_update.md":"0967da68","knowledge-deposition_golang_gorm_事务.md":"6d41e534","knowledge-deposition_golang_logger_logrus_hook.md":"cabd46fa","knowledge-deposition_golang_gorm_关联之一对一.md":"0444c4b8","knowledge-deposition_golang_gorm_关联之一对多.md":"1cfdacb2","knowledge-deposition_golang_gorm_关联之多对多.md":"4ddf88f6","knowledge-deposition_golang_gorm_模型定义.md":"f6ad849b","knowledge-deposition_golang_gorm_自定义数据类型.md":"064b4bb3","knowledge-deposition_golang_gin_中间件.md":"d3de42d7","knowledge-deposition_golang_gin_响应数据.md":"56bc77b7","hand-notes_css_css计数器-counter.md":"c3604348","algorithm_leetcode刷题_1047-删除字符串中的所有相邻重复项.md":"ba4c16c2","knowledge-deposition_golang_gin_上传和下载文件.md":"d1d54fbc","knowledge-deposition_golang_基础知识_指针.md":"1436a3f5","knowledge-deposition_golang_基础知识_接口.md":"c21fbfdf","hand-notes_linux_权限相关.md":"660314ae","hand-notes_mac_frequently-commands.md":"fbd4cd01","algorithm_leetcode刷题_17-电话号码的字母组合.md":"51dfa9a4","knowledge-deposition_golang_基础知识_数组、切片、map.md":"e6dccd63","algorithm_leetcode刷题_454-四数相加ii.md":"5441f9bc","algorithm_leetcode刷题_35-搜索插入位置.md":"26492779","knowledge-deposition_golang_基础知识_fmt输出含义.md":"383b4093","knowledge-deposition_golang_基础知识_time包.md":"b6fcbbbc","knowledge-deposition_golang_基础知识_select.md":"f7af1982","hand-notes_linux_文件压缩.md":"aa1a8929","algorithm_leetcode刷题_14-最长公共前缀.md":"2013bd84","hand-notes_linux_用户操作相关.md":"c6701662","knowledge-deposition_ssh_ssh-base.md":"d799cb02","knowledge-deposition_前端工程化_babel_babel基础.md":"2232aa4e","knowledge-deposition_前端工程化_vite_rollup的插件机制.md":"f12c69b8","knowledge-deposition_golang_基础知识_strings包.md":"81622654","knowledge-deposition_golang_基础知识_结构体.md":"ff868567","knowledge-deposition_golang_logger_logrus_基础用法.md":"6f17f0be","knowledge-deposition_golang_基础知识_网络_http.md":"4b685203","algorithm_leetcode刷题_15-三数之和.md":"a70729e7","knowledge-deposition_golang_基础知识_网络_rpc.md":"2c22ea6c","knowledge-deposition_golang_基础知识_网络_tcp.md":"a78bfdfc","knowledge-deposition_golang_基础知识_通道channel.md":"75f442db","knowledge-deposition_mysql_sql.md":"1b590eb9","algorithm_leetcode刷题_144-94-145-遍历二叉树.md":"9885ccaa","knowledge-deposition_mysql_函数.md":"0e6456c4","knowledge-deposition_mysql_表连接.md":"4cd93442","knowledge-deposition_nacos_基本概念和安装启动.md":"7bdb09e0","hand-notes_mac_init.md":"668e7b49","knowledge-deposition_golang_基础知识_变量常量.md":"a257dd1e","knowledge-deposition_前端工程化_vite_区分不同环境.md":"6dabeac5","knowledge-deposition_前端工程化_vite_依赖预构建.md":"d0d5392f","knowledge-deposition_golang_基础知识_协程.md":"e34dff3f","knowledge-deposition_golang_基础知识_文件操作_目录操作.md":"8158e010","knowledge-deposition_golang_基础知识_文件操作_index.md":"02ae4402","knowledge-deposition_golang_基础知识_函数.md":"d0c078b3","favorites_css_index.md":"8c4df966","hand-notes_mac_快捷运行自定义shell脚本.md":"cdfd57b5","knowledge-deposition_golang_logger_logrus_日志分割.md":"a993b07c","knowledge-deposition_golang_加密_aes加密.md":"e9df1c50","knowledge-deposition_前端工程化_vite_esbuild相关.md":"2d45112d","knowledge-deposition_rabbitmq_基本概念和安装启动.md":"6cb56022","knowledge-deposition_golang_logger_zap_zap使用.md":"a01e8c11","knowledge-deposition_golang_基础知识_环境搭建.md":"411dcee9","knowledge-deposition_rabbitmq_topics.md":"17656432","knowledge-deposition_golang_基础知识_基础数据类型.md":"b80e74a0","knowledge-deposition_前端工程化_vite_初体验.md":"bdf756d7","algorithm_leetcode刷题_707-设计链表.md":"6454d777","algorithm_leetcode刷题_1-两数之和.md":"b7a16a78","knowledge-deposition_golang_基础知识_test.md":"1c7cb86b","knowledge-deposition_golang_基础知识_流程控制.md":"3f8747b4","knowledge-deposition_golang_gorm_连接数据库.md":"3f9c3f24","knowledge-deposition_golang_gorm_delete.md":"d62096bf","knowledge-deposition_前端工程化_vite_vite插件机制.md":"01d21411","knowledge-deposition_mysql_分组和子查询.md":"1bb5de08","knowledge-deposition_golang_基础知识_文件操作_写文件.md":"cbf9662f","knowledge-deposition_golang_基础知识_json序列化.md":"d5e77d9b","hand-notes_react_procomponents_protable.md":"fd2b5626","knowledge-deposition_前端工程化_vite_处理静态资源.md":"df050c0a","knowledge-deposition_golang_基础知识_协程安全.md":"705e648e","knowledge-deposition_golang_基础知识_文件操作_文件复制.md":"56ca5e45","knowledge-deposition_golang_基础知识_文件操作_读取配置文件.md":"0f5cafd5","knowledge-deposition_rabbitmq_routing.md":"a9bc46b9","knowledge-deposition_前端工程化_vite_处理样式.md":"be72a9c3","knowledge-deposition_rabbitmq_工作队列.md":"a5fe2f92","knowledge-deposition_golang_基础知识_文件操作_读文件.md":"4b431be5","knowledge-deposition_mysql_基础知识.md":"e3b8992a","knowledge-deposition_mysql_数据操作和查询.md":"6e07a624","knowledge-deposition_rabbitmq_发布订阅.md":"9a3fc4ae","knowledge-deposition_nacos_操作动态配置文件.md":"e150bc5c","knowledge-deposition_linux_bash基础知识.md":"0a588998","knowledge-deposition_golang_基础知识_url包.md":"ea6873a4"}
diff --git a/index.html b/index.html
index ec2df4fa..097f9fab 100644
--- a/index.html
+++ b/index.html
@@ -6,16 +6,16 @@
     mx52jing | mx52jing
     
     
-    
-    
-    
+    
+    
+    
     
     
   
   
     
Skip to content

mx52jing的博客

前端路上的点滴

小知识汇聚成大海洋

- - + + \ No newline at end of file diff --git a/knowledge-deposition/Docker/Dockerfile.html b/knowledge-deposition/Docker/Dockerfile.html index 3ba04d82..8c636499 100644 --- a/knowledge-deposition/Docker/Dockerfile.html +++ b/knowledge-deposition/Docker/Dockerfile.html @@ -6,9 +6,9 @@ Dockerfile | mx52jing - - - + + + @@ -75,8 +75,8 @@ docker build -t nginx:v1 .

镜像构建上下文

  • docker build命令末尾会指定一个路径,通常为.,这个.的作用就是来指定上下文路径

  • docker build这一构建命令的执行,实际上是使用远程调用形式在服务端(Docker 引擎)完成。在服务端构建时,有可能需要将本地的一些文件复制到镜像里面去,服务器要获取本地需要复制的文件就是要通过这个上下文路径,而这个路径是我们自己在build时指定的路径

  • docker build命令获取到这个路径之后,会将路径下内容打包,传给Docker引擎,这样Docker引擎收到这个上下文包之后,展开就会得到构建镜像所需文件

  • 如果所给出的URL不是个仓库地址,而是个tar压缩包,那么Docker引擎下载这个包,并自动解压缩,以其作为上下文,开始构建

  • 如果标准输入传入的是文本文件,则将其视为Dockerfile,并开始构建。这种形式由于直接从标准输入中读取Dockerfile的内容,它没有上下文,因此不可以像其他方法那样可以将本地文件COPY进镜像之类的事情

- - + + \ No newline at end of file diff --git "a/knowledge-deposition/Docker/Docker\345\237\272\347\241\200\347\237\245\350\257\206.html" "b/knowledge-deposition/Docker/Docker\345\237\272\347\241\200\347\237\245\350\257\206.html" index 6a80c982..c5d27e18 100644 --- "a/knowledge-deposition/Docker/Docker\345\237\272\347\241\200\347\237\245\350\257\206.html" +++ "b/knowledge-deposition/Docker/Docker\345\237\272\347\241\200\347\237\245\350\257\206.html" @@ -6,9 +6,9 @@ Docker基础知识 | mx52jing - - - + + + @@ -51,8 +51,8 @@
  • 清理所有处于终止状态的容器
shell
docker container prune
 
  • 强行删除所有容器(运行中/已停止的都会全部被删除)
shell
docker container rm -f (docker container ls -a -q )
 
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/Crawler/HTTP\350\257\267\346\261\202\346\226\271\346\263\225.html" "b/knowledge-deposition/GoLang/Crawler/HTTP\350\257\267\346\261\202\346\226\271\346\263\225.html" index 6b5eb3a2..3b7a3aa0 100644 --- "a/knowledge-deposition/GoLang/Crawler/HTTP\350\257\267\346\261\202\346\226\271\346\263\225.html" +++ "b/knowledge-deposition/GoLang/Crawler/HTTP\350\257\267\346\261\202\346\226\271\346\263\225.html" @@ -6,9 +6,9 @@ HTTP请求方法 | mx52jing - - - + + + @@ -167,8 +167,8 @@ os.Stdout.WriteString("\n") }
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/Gin/bind\347\273\221\345\256\232\345\231\250.html" "b/knowledge-deposition/GoLang/Gin/bind\347\273\221\345\256\232\345\231\250.html" index c2fe7a0a..462a6c86 100644 --- "a/knowledge-deposition/GoLang/Gin/bind\347\273\221\345\256\232\345\231\250.html" +++ "b/knowledge-deposition/GoLang/Gin/bind\347\273\221\345\256\232\345\231\250.html" @@ -6,9 +6,9 @@ bind绑定器 | mx52jing - - - + + + @@ -275,8 +275,8 @@ Age uint8 `gorm:"not null;comment:年龄" json:"age" binding:"omitempty,gte=18,lte=70" gte_msg:"年龄必须在18-70之间" lte_msg:"年龄必须在18-70之间"` }
- - + + \ No newline at end of file diff --git a/knowledge-deposition/GoLang/Gin/hello-world.html b/knowledge-deposition/GoLang/Gin/hello-world.html index 31d09dd2..0662717f 100644 --- a/knowledge-deposition/GoLang/Gin/hello-world.html +++ b/knowledge-deposition/GoLang/Gin/hello-world.html @@ -6,9 +6,9 @@ hello-world | mx52jing - - - + + + @@ -38,8 +38,8 @@ router.Run(":9100") }
  • 访问0.0.0.0:9100/user或者本机IP:9100/user查看结果
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/Gin/\344\270\212\344\274\240\345\222\214\344\270\213\350\275\275\346\226\207\344\273\266.html" "b/knowledge-deposition/GoLang/Gin/\344\270\212\344\274\240\345\222\214\344\270\213\350\275\275\346\226\207\344\273\266.html" index 0a6a188d..f2408eca 100644 --- "a/knowledge-deposition/GoLang/Gin/\344\270\212\344\274\240\345\222\214\344\270\213\350\275\275\346\226\207\344\273\266.html" +++ "b/knowledge-deposition/GoLang/Gin/\344\270\212\344\274\240\345\222\214\344\270\213\350\275\275\346\226\207\344\273\266.html" @@ -6,9 +6,9 @@ 上传和下载文件 | mx52jing - - - + + + @@ -225,8 +225,8 @@ router.Run(":9100") }
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/Gin/\344\270\255\351\227\264\344\273\266.html" "b/knowledge-deposition/GoLang/Gin/\344\270\255\351\227\264\344\273\266.html" index 5f13e371..dbdedc5a 100644 --- "a/knowledge-deposition/GoLang/Gin/\344\270\255\351\227\264\344\273\266.html" +++ "b/knowledge-deposition/GoLang/Gin/\344\270\255\351\227\264\344\273\266.html" @@ -6,9 +6,9 @@ 中间件 | mx52jing - - - + + + @@ -160,8 +160,8 @@ tagsHanlder 退出globalMiddleware
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/Gin/\345\223\215\345\272\224\346\225\260\346\215\256.html" "b/knowledge-deposition/GoLang/Gin/\345\223\215\345\272\224\346\225\260\346\215\256.html" index 4f5bfab4..dd7d3c3a 100644 --- "a/knowledge-deposition/GoLang/Gin/\345\223\215\345\272\224\346\225\260\346\215\256.html" +++ "b/knowledge-deposition/GoLang/Gin/\345\223\215\345\272\224\346\225\260\346\215\256.html" @@ -6,9 +6,9 @@ 响应数据 | mx52jing - - - + + + @@ -321,8 +321,8 @@ router.Run(":9100") }
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/Gin/\346\224\257\346\214\201\350\267\250\345\237\237.html" "b/knowledge-deposition/GoLang/Gin/\346\224\257\346\214\201\350\267\250\345\237\237.html" index 10184f0e..30d0abc1 100644 --- "a/knowledge-deposition/GoLang/Gin/\346\224\257\346\214\201\350\267\250\345\237\237.html" +++ "b/knowledge-deposition/GoLang/Gin/\346\224\257\346\214\201\350\267\250\345\237\237.html" @@ -6,9 +6,9 @@ 支持跨域 | mx52jing - - - + + + @@ -92,8 +92,8 @@ } }
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/Gin/\350\257\267\346\261\202\345\217\202\346\225\260.html" "b/knowledge-deposition/GoLang/Gin/\350\257\267\346\261\202\345\217\202\346\225\260.html" index e654ddf7..7846ad1a 100644 --- "a/knowledge-deposition/GoLang/Gin/\350\257\267\346\261\202\345\217\202\346\225\260.html" +++ "b/knowledge-deposition/GoLang/Gin/\350\257\267\346\261\202\345\217\202\346\225\260.html" @@ -6,9 +6,9 @@ 请求参数 | mx52jing - - - + + + @@ -161,8 +161,8 @@ "userName": "zhang" }
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/Gin/\350\257\267\346\261\202\345\244\264\345\222\214\345\223\215\345\272\224\345\244\264.html" "b/knowledge-deposition/GoLang/Gin/\350\257\267\346\261\202\345\244\264\345\222\214\345\223\215\345\272\224\345\244\264.html" index 92ad1f33..0d26c025 100644 --- "a/knowledge-deposition/GoLang/Gin/\350\257\267\346\261\202\345\244\264\345\222\214\345\223\215\345\272\224\345\244\264.html" +++ "b/knowledge-deposition/GoLang/Gin/\350\257\267\346\261\202\345\244\264\345\222\214\345\223\215\345\272\224\345\244\264.html" @@ -6,9 +6,9 @@ 请求头和响应头 | mx52jing - - - + + + @@ -29,8 +29,8 @@ router.Run(":9100") }

响应头

  • 设置响应头,使用ctx.Header(key, value)
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/Gin/\350\267\257\347\224\261\345\210\206\347\273\204.html" "b/knowledge-deposition/GoLang/Gin/\350\267\257\347\224\261\345\210\206\347\273\204.html" index 4fb3587b..497af15f 100644 --- "a/knowledge-deposition/GoLang/Gin/\350\267\257\347\224\261\345\210\206\347\273\204.html" +++ "b/knowledge-deposition/GoLang/Gin/\350\267\257\347\224\261\345\210\206\347\273\204.html" @@ -6,9 +6,9 @@ 路由分组 | mx52jing - - - + + + @@ -74,8 +74,8 @@ router.Run(":9100") }

访问/user/v1/name/user/v1/401

- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/Gin/\351\233\206\346\210\220Swagger.html" "b/knowledge-deposition/GoLang/Gin/\351\233\206\346\210\220Swagger.html" index b8a0a608..9246342b 100644 --- "a/knowledge-deposition/GoLang/Gin/\351\233\206\346\210\220Swagger.html" +++ "b/knowledge-deposition/GoLang/Gin/\351\233\206\346\210\220Swagger.html" @@ -6,9 +6,9 @@ 集成Swagger | mx52jing - - - + + + @@ -95,8 +95,8 @@ }) }
- - + + \ No newline at end of file diff --git a/knowledge-deposition/GoLang/Gorm/AdvancedQuery.html b/knowledge-deposition/GoLang/Gorm/AdvancedQuery.html index 172f4558..344ae74c 100644 --- a/knowledge-deposition/GoLang/Gorm/AdvancedQuery.html +++ b/knowledge-deposition/GoLang/Gorm/AdvancedQuery.html @@ -6,9 +6,9 @@ Advanced Query | mx52jing - - - + + + @@ -60,8 +60,8 @@ DB.Model(&Teacher{}).Where("age >= ?", 18).Count(&count) // SELECT count(*) FROM `teachers` WHERE age >= 18
- - + + \ No newline at end of file diff --git a/knowledge-deposition/GoLang/Gorm/Create.html b/knowledge-deposition/GoLang/Gorm/Create.html index 7a498352..351f8ebc 100644 --- a/knowledge-deposition/GoLang/Gorm/Create.html +++ b/knowledge-deposition/GoLang/Gorm/Create.html @@ -6,9 +6,9 @@ Create | mx52jing - - - + + + @@ -75,8 +75,8 @@ }

相当于如下SQL

SQL
INSERT INTO `teachers` (`age`,`name`) VALUES (22,'multiMap1'),(32,'multiMap2'),(42,'multiMap3'),(52,'multiMap4')
 
- - + + \ No newline at end of file diff --git a/knowledge-deposition/GoLang/Gorm/Delete.html b/knowledge-deposition/GoLang/Gorm/Delete.html index 5cd99956..6451446c 100644 --- a/knowledge-deposition/GoLang/Gorm/Delete.html +++ b/knowledge-deposition/GoLang/Gorm/Delete.html @@ -6,9 +6,9 @@ Delete | mx52jing - - - + + + @@ -31,8 +31,8 @@ DB.Delete(&Teacher{}, "name LIKE ?", "元%") // DELETE FROM `teachers` WHERE name LIKE '元%'
- - + + \ No newline at end of file diff --git a/knowledge-deposition/GoLang/Gorm/Query.html b/knowledge-deposition/GoLang/Gorm/Query.html index e737ea6d..c2eb48ba 100644 --- a/knowledge-deposition/GoLang/Gorm/Query.html +++ b/knowledge-deposition/GoLang/Gorm/Query.html @@ -6,9 +6,9 @@ Query | mx52jing - - - + + + @@ -217,8 +217,8 @@ // [{李朗-28,杨方-16,仁阔-26,齐虎-22,潘越-28,multiMap1-22,multiMap4-52 7 0} {如燕-18,mapName-332,multiMap3-42 5 1}]

Raw使用原生SQL

Go
DB.Raw("SELECT name, age FROM teachers WHERE name LIKE ?", "mul%").Scan(&res)
 
- - + + \ No newline at end of file diff --git a/knowledge-deposition/GoLang/Gorm/Update.html b/knowledge-deposition/GoLang/Gorm/Update.html index 6f14bde7..5ff4b622 100644 --- a/knowledge-deposition/GoLang/Gorm/Update.html +++ b/knowledge-deposition/GoLang/Gorm/Update.html @@ -6,9 +6,9 @@ Update | mx52jing - - - + + + @@ -47,8 +47,8 @@ DB.Model(&s).Select("age", "gender").Updates(Teacher{Age: 19, Name: "吴文登", Gender: 1}) // UPDATE `teachers` SET `age`=19,`gender`=1 WHERE `id` = 2
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/Gorm/\344\272\213\345\212\241.html" "b/knowledge-deposition/GoLang/Gorm/\344\272\213\345\212\241.html" index b6ccfe5e..527420a2 100644 --- "a/knowledge-deposition/GoLang/Gorm/\344\272\213\345\212\241.html" +++ "b/knowledge-deposition/GoLang/Gorm/\344\272\213\345\212\241.html" @@ -6,9 +6,9 @@ 事务 | mx52jing - - - + + + @@ -184,8 +184,8 @@ tx.Commit() }
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/Gorm/\345\205\263\350\201\224\344\271\213\344\270\200\345\257\271\344\270\200.html" "b/knowledge-deposition/GoLang/Gorm/\345\205\263\350\201\224\344\271\213\344\270\200\345\257\271\344\270\200.html" index b110f04c..0642010a 100644 --- "a/knowledge-deposition/GoLang/Gorm/\345\205\263\350\201\224\344\271\213\344\270\200\345\257\271\344\270\200.html" +++ "b/knowledge-deposition/GoLang/Gorm/\345\205\263\350\201\224\344\271\213\344\270\200\345\257\271\344\270\200.html" @@ -6,9 +6,9 @@ 关联之一对一 | mx52jing - - - + + + @@ -288,8 +288,8 @@ DB.Model(&hGirlGod2).Association("HDog").Replace(&hDog1) }

DeleteClear

DeleteClear就和上面的相同,只是方法替换了一下

- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/Gorm/\345\205\263\350\201\224\344\271\213\344\270\200\345\257\271\345\244\232.html" "b/knowledge-deposition/GoLang/Gorm/\345\205\263\350\201\224\344\271\213\344\270\200\345\257\271\345\244\232.html" index 345c1502..186e571f 100644 --- "a/knowledge-deposition/GoLang/Gorm/\345\205\263\350\201\224\344\271\213\344\270\200\345\257\271\345\244\232.html" +++ "b/knowledge-deposition/GoLang/Gorm/\345\205\263\350\201\224\344\271\213\344\270\200\345\257\271\345\244\232.html" @@ -6,9 +6,9 @@ 关联之一对多 | mx52jing - - - + + + @@ -416,8 +416,8 @@ fmt.Printf("g1 is %v\n", g1) }
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/Gorm/\345\205\263\350\201\224\344\271\213\345\244\232\345\257\271\345\244\232.html" "b/knowledge-deposition/GoLang/Gorm/\345\205\263\350\201\224\344\271\213\345\244\232\345\257\271\345\244\232.html" index a66e3859..eb2c50ff 100644 --- "a/knowledge-deposition/GoLang/Gorm/\345\205\263\350\201\224\344\271\213\345\244\232\345\257\271\345\244\232.html" +++ "b/knowledge-deposition/GoLang/Gorm/\345\205\263\350\201\224\344\271\213\345\244\232\345\257\271\345\244\232.html" @@ -6,9 +6,9 @@ 关联之多对多 | mx52jing - - - + + + @@ -157,8 +157,8 @@ JOIN m2_m_wallets w on w.m2_m_dog_id = m2_m_dogs.id WHERE dg.m2_m_girl_god_id = 1 AND w.amount >= 100001
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/Gorm/\346\250\241\345\236\213\345\256\232\344\271\211.html" "b/knowledge-deposition/GoLang/Gorm/\346\250\241\345\236\213\345\256\232\344\271\211.html" index db1a890a..cc4aca09 100644 --- "a/knowledge-deposition/GoLang/Gorm/\346\250\241\345\236\213\345\256\232\344\271\211.html" +++ "b/knowledge-deposition/GoLang/Gorm/\346\250\241\345\236\213\345\256\232\344\271\211.html" @@ -6,9 +6,9 @@ 模型定义 | mx52jing - - - + + + @@ -127,8 +127,8 @@ DB.AutoMigrate(&Teacher{})
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/Gorm/\350\207\252\345\256\232\344\271\211\346\225\260\346\215\256\347\261\273\345\236\213.html" "b/knowledge-deposition/GoLang/Gorm/\350\207\252\345\256\232\344\271\211\346\225\260\346\215\256\347\261\273\345\236\213.html" index 8bbdc505..b2b580c6 100644 --- "a/knowledge-deposition/GoLang/Gorm/\350\207\252\345\256\232\344\271\211\346\225\260\346\215\256\347\261\273\345\236\213.html" +++ "b/knowledge-deposition/GoLang/Gorm/\350\207\252\345\256\232\344\271\211\346\225\260\346\215\256\347\261\273\345\236\213.html" @@ -6,9 +6,9 @@ 自定义数据类型 | mx52jing - - - + + + @@ -187,8 +187,8 @@ cQueryData() }
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/Gorm/\350\277\236\346\216\245\346\225\260\346\215\256\345\272\223.html" "b/knowledge-deposition/GoLang/Gorm/\350\277\236\346\216\245\346\225\260\346\215\256\345\272\223.html" index 3ac7e1e1..0029d240 100644 --- "a/knowledge-deposition/GoLang/Gorm/\350\277\236\346\216\245\346\225\260\346\215\256\345\272\223.html" +++ "b/knowledge-deposition/GoLang/Gorm/\350\277\236\346\216\245\346\225\260\346\215\256\345\272\223.html" @@ -6,9 +6,9 @@ 连接数据库 | mx52jing - - - + + + @@ -187,8 +187,8 @@ }) }
- - + + \ No newline at end of file diff --git a/knowledge-deposition/GoLang/JWT/JWT.html b/knowledge-deposition/GoLang/JWT/JWT.html index dac26ec1..38385810 100644 --- a/knowledge-deposition/GoLang/JWT/JWT.html +++ b/knowledge-deposition/GoLang/JWT/JWT.html @@ -6,16 +6,16 @@ JWT | mx52jing - - - + + + - - + + \ No newline at end of file diff --git a/knowledge-deposition/GoLang/Logger/Logrus/Hook.html b/knowledge-deposition/GoLang/Logger/Logrus/Hook.html index 0f780b29..7a78b872 100644 --- a/knowledge-deposition/GoLang/Logger/Logrus/Hook.html +++ b/knowledge-deposition/GoLang/Logger/Logrus/Hook.html @@ -6,9 +6,9 @@ Hook | mx52jing - - - + + + @@ -51,8 +51,8 @@ INFO[2023-08-08T22:59:39+08:00] logrus => Info name=app */

上面的自定义HookLevels中只返回了logrus.InfoLevel,所以只有输出Info日志时,才会执行Fire方法,带上额外的name字段

- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/Logger/Logrus/\345\237\272\347\241\200\347\224\250\346\263\225.html" "b/knowledge-deposition/GoLang/Logger/Logrus/\345\237\272\347\241\200\347\224\250\346\263\225.html" index 4abde391..d09b45c8 100644 --- "a/knowledge-deposition/GoLang/Logger/Logrus/\345\237\272\347\241\200\347\224\250\346\263\225.html" +++ "b/knowledge-deposition/GoLang/Logger/Logrus/\345\237\272\347\241\200\347\224\250\346\263\225.html" @@ -6,9 +6,9 @@ 基础用法 | mx52jing - - - + + + @@ -171,8 +171,8 @@ logrus.Debugln("自定义颜色 => Debug输出") }

logrus_custom_color

- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/Logger/Logrus/\346\227\245\345\277\227\345\210\206\345\211\262.html" "b/knowledge-deposition/GoLang/Logger/Logrus/\346\227\245\345\277\227\345\210\206\345\211\262.html" index 99a864e1..ccd1f252 100644 --- "a/knowledge-deposition/GoLang/Logger/Logrus/\346\227\245\345\277\227\345\210\206\345\211\262.html" +++ "b/knowledge-deposition/GoLang/Logger/Logrus/\346\227\245\345\277\227\345\210\206\345\211\262.html" @@ -6,9 +6,9 @@ 日志分割 | mx52jing - - - + + + @@ -318,8 +318,8 @@ rwLock = sync.RWMutex{} }
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/Logger/Zap/zap\344\275\277\347\224\250.html" "b/knowledge-deposition/GoLang/Logger/Zap/zap\344\275\277\347\224\250.html" index 3db23dc5..7eaf6e0a 100644 --- "a/knowledge-deposition/GoLang/Logger/Zap/zap\344\275\277\347\224\250.html" +++ "b/knowledge-deposition/GoLang/Logger/Zap/zap\344\275\277\347\224\250.html" @@ -6,9 +6,9 @@ zap使用 | mx52jing - - - + + + @@ -415,8 +415,8 @@ RunServer() }
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/\345\212\240\345\257\206/AES\345\212\240\345\257\206.html" "b/knowledge-deposition/GoLang/\345\212\240\345\257\206/AES\345\212\240\345\257\206.html" index 4110ef72..3e708025 100644 --- "a/knowledge-deposition/GoLang/\345\212\240\345\257\206/AES\345\212\240\345\257\206.html" +++ "b/knowledge-deposition/GoLang/\345\212\240\345\257\206/AES\345\212\240\345\257\206.html" @@ -6,9 +6,9 @@ AES加密 | mx52jing - - - + + + @@ -296,8 +296,8 @@ } }

参考

- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/\345\212\240\345\257\206/RSA\345\212\240\345\257\206.html" "b/knowledge-deposition/GoLang/\345\212\240\345\257\206/RSA\345\212\240\345\257\206.html" index f5bb2fff..0e839b70 100644 --- "a/knowledge-deposition/GoLang/\345\212\240\345\257\206/RSA\345\212\240\345\257\206.html" +++ "b/knowledge-deposition/GoLang/\345\212\240\345\257\206/RSA\345\212\240\345\257\206.html" @@ -6,9 +6,9 @@ RSA | mx52jing - - - + + + @@ -157,8 +157,8 @@ } }

参考

- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/Context.html" "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/Context.html" index ffa1691b..196852a8 100644 --- "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/Context.html" +++ "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/Context.html" @@ -6,9 +6,9 @@ Context | mx52jing - - - + + + @@ -147,8 +147,8 @@ child2的name为南山,age为22, like为[篮球 乒乓球] */
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/Select.html" "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/Select.html" index 6712b11a..06fd754a 100644 --- "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/Select.html" +++ "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/Select.html" @@ -6,9 +6,9 @@ Select | mx52jing - - - + + + @@ -158,8 +158,8 @@ testTimeout1() // 超时处理了 }

上面的例子,由于超时时间设置的1s,但是2s后才像通道中发送数据,所以会走超时处理

- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/Test.html" "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/Test.html" index 61b62bca..9edf0a35 100644 --- "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/Test.html" +++ "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/Test.html" @@ -6,9 +6,9 @@ Test | mx52jing - - - + + + @@ -236,8 +236,8 @@ PASS ok github.com/mx52jing/go-basic/test-related 3.670s
  • goos: darwin:表示当前操作系统

  • goarch: arm64:表示本机CPU架构

  • BenchmarkHandleJsonByJsonLibrary/Benchmark_HandleJsonByJsonLibrary-8 :BenchmarkHandleJsonByJsonLibrary代表运行的基准测试名称, 8代表使用的核心数。

  • 485083:表示这个基准测试一共运行了485083次,也就是代码中的b.N

  • 2453 ns/op:表示每次运行消耗的时间为2453ns

  • 912 B/op:表示每次运行消耗的内存数为912B

  • 23 allocs/op:表示每次运行进行23次内存申请

常用的基准测试命令

  • go test -bench .:运行当前目录下的所有基准测试,并输出测试结果

  • go test -bench=BenchmarkExample:只运行名为BenchmarkExample的基准测试,并输出测试结果

  • go test -bench=BenchmarkExample -benchtime=8s:运行名为BenchmarkExample的基准测试,测试时长为8秒,并输出测试结果

  • go test -bench=BenchmarkExample -cpu=8:使用8个CPU核心运行名为BenchmarkExample的基准测试,并输出测试结果

  • go test -bench=BenchmarkExample -memprofile=mem.out:运行名为BenchmarkExample的基准测试,并生成内存分配统计文件mem.out

  • go test -bench=BenchmarkExample -cpuprofile=cpu.out:运行名为BenchmarkExample的基准测试,并生成CPU分析文件cpu.out

  • go test -bench=BenchmarkExample -benchmem:运行名为BenchmarkExample的基准测试,并输出每次测试分配的内存和内存分配次数的平均值

- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/fmt\350\276\223\345\207\272\345\220\253\344\271\211.html" "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/fmt\350\276\223\345\207\272\345\220\253\344\271\211.html" index 0b24396e..f3cdaab6 100644 --- "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/fmt\350\276\223\345\207\272\345\220\253\344\271\211.html" +++ "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/fmt\350\276\223\345\207\272\345\220\253\344\271\211.html" @@ -6,9 +6,9 @@ fmt使用 | mx52jing - - - + + + @@ -25,8 +25,8 @@ message := fmt.Sprintf("Hello, %s!", name) fmt.Println(message)

总结

  • fmt.Fprintf用于将格式化的内容写入指定的io.Writer接口实现(比如文件、网络连接等)

  • fmt.Println用于将格式化的内容输出到标准输出,并在最后添加一个换行符

  • fmt.Printf用于将格式化的内容输出到标准输出,可以使用占位符来表示要输出的值

  • fmt.Sprintf用于将格式化的内容返回为一个字符串,而不是直接输出到标准输出或其他地方

- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/json\345\272\217\345\210\227\345\214\226.html" "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/json\345\272\217\345\210\227\345\214\226.html" index ae9163bc..1d75630b 100644 --- "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/json\345\272\217\345\210\227\345\214\226.html" +++ "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/json\345\272\217\345\210\227\345\214\226.html" @@ -6,9 +6,9 @@ json序列化 | mx52jing - - - + + + @@ -99,8 +99,8 @@ fmt.Printf("cls的值为 %v\n", cls) }

sonic

上面使用的库是go语言提供的标准库,字节跳动提供了一个更高效的json序列化sonic,地址点击这里,也能够实现上面的功能

- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/strings\345\214\205.html" "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/strings\345\214\205.html" index 84c5d618..5508206e 100644 --- "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/strings\345\214\205.html" +++ "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/strings\345\214\205.html" @@ -6,9 +6,9 @@ strings包 | mx52jing - - - + + + @@ -83,8 +83,8 @@ fmt.Println(strings.Join(name, " ")) // "张环 李朗 沈韬 肖豹" fmt.Println(strings.Join(name, "%")) // "张环%李朗%沈韬%肖豹"
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/time\345\214\205.html" "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/time\345\214\205.html" index 3d49c7aa..3eb751f5 100644 --- "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/time\345\214\205.html" +++ "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/time\345\214\205.html" @@ -6,9 +6,9 @@ time包 | mx52jing - - - + + + @@ -149,8 +149,8 @@ burstyLimter() }
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/url\345\214\205.html" "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/url\345\214\205.html" index ef25edec..04dfc133 100644 --- "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/url\345\214\205.html" +++ "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/url\345\214\205.html" @@ -6,9 +6,9 @@ url包 | mx52jing - - - + + + @@ -297,8 +297,8 @@ urlIsAbs() }
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\345\207\275\346\225\260.html" "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\345\207\275\346\225\260.html" index 27848bbb..46c63323 100644 --- "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\345\207\275\346\225\260.html" +++ "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\345\207\275\346\225\260.html" @@ -6,9 +6,9 @@ 函数 | mx52jing - - - + + + @@ -130,8 +130,8 @@ fmt.Println(increment_value, isLarge) // 8 false }
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\345\215\217\347\250\213.html" "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\345\215\217\347\250\213.html" index fdcd401f..0c823c3a 100644 --- "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\345\215\217\347\250\213.html" +++ "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\345\215\217\347\250\213.html" @@ -6,9 +6,9 @@ 协程Groutine | mx52jing - - - + + + @@ -57,8 +57,8 @@ // loopPrint函数之后 }
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\345\215\217\347\250\213\345\256\211\345\205\250.html" "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\345\215\217\347\250\213\345\256\211\345\205\250.html" index 4d3a392c..faf1c33c 100644 --- "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\345\215\217\347\250\213\345\256\211\345\205\250.html" +++ "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\345\215\217\347\250\213\345\256\211\345\205\250.html" @@ -6,9 +6,9 @@ 协程安全 | mx52jing - - - + + + @@ -110,8 +110,8 @@ saveMoneyV3() }
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\345\217\230\351\207\217\345\270\270\351\207\217.html" "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\345\217\230\351\207\217\345\270\270\351\207\217.html" index 80023fc2..2e03a377 100644 --- "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\345\217\230\351\207\217\345\270\270\351\207\217.html" +++ "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\345\217\230\351\207\217\345\270\270\351\207\217.html" @@ -6,9 +6,9 @@ 变量常量 | mx52jing - - - + + + @@ -63,8 +63,8 @@ //【D0, D2, D5】: 0 4 8 fmt.Println("【D0】:", D0, D2, D5)
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\345\237\272\347\241\200\346\225\260\346\215\256\347\261\273\345\236\213.html" "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\345\237\272\347\241\200\346\225\260\346\215\256\347\261\273\345\236\213.html" index 79d195fd..e780ac2f 100644 --- "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\345\237\272\347\241\200\346\225\260\346\215\256\347\261\273\345\236\213.html" +++ "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\345\237\272\347\241\200\346\225\260\346\215\256\347\261\273\345\236\213.html" @@ -6,9 +6,9 @@ 基础数据类型 | mx52jing - - - + + + @@ -133,8 +133,8 @@ testBool() }
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\214\207\351\222\210.html" "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\214\207\351\222\210.html" index 8cef0e80..5b1f6781 100644 --- "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\214\207\351\222\210.html" +++ "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\214\207\351\222\210.html" @@ -6,9 +6,9 @@ 指针 | mx52jing - - - + + + @@ -124,8 +124,8 @@ fmt.Println(colleague++) }
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\216\245\345\217\243.html" "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\216\245\345\217\243.html" index b57e345c..a8ad774b 100644 --- "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\216\245\345\217\243.html" +++ "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\216\245\345\217\243.html" @@ -6,9 +6,9 @@ 接口 | mx52jing - - - + + + @@ -152,8 +152,8 @@ assertType(false) }
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\225\260\347\273\204\343\200\201\345\210\207\347\211\207\343\200\201Map.html" "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\225\260\347\273\204\343\200\201\345\210\207\347\211\207\343\200\201Map.html" index 20af999c..21f310af 100644 --- "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\225\260\347\273\204\343\200\201\345\210\207\347\211\207\343\200\201Map.html" +++ "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\225\260\347\273\204\343\200\201\345\210\207\347\211\207\343\200\201Map.html" @@ -6,9 +6,9 @@ 数组、切片、Map | mx52jing - - - + + + @@ -406,8 +406,8 @@ fmt.Println("personMap值为:", personMap) }
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\226\207\344\273\266\346\223\215\344\275\234/index.html" "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\226\207\344\273\266\346\223\215\344\275\234/index.html" index 30d634cf..c1cf7b70 100644 --- "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\226\207\344\273\266\346\223\215\344\275\234/index.html" +++ "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\226\207\344\273\266\346\223\215\344\275\234/index.html" @@ -6,9 +6,9 @@ 文件操作 | mx52jing - - - + + + @@ -23,8 +23,8 @@ O_SYNC int = syscall.O_SYNC // open for synchronous I/O. 同步I/O O_TRUNC int = syscall.O_TRUNC // truncate regular writable file when opened. 打开时清空文件
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\226\207\344\273\266\346\223\215\344\275\234/\345\206\231\346\226\207\344\273\266.html" "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\226\207\344\273\266\346\223\215\344\275\234/\345\206\231\346\226\207\344\273\266.html" index 680abf12..f9d0710b 100644 --- "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\226\207\344\273\266\346\223\215\344\275\234/\345\206\231\346\226\207\344\273\266.html" +++ "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\226\207\344\273\266\346\223\215\344\275\234/\345\206\231\346\226\207\344\273\266.html" @@ -6,9 +6,9 @@ 写文件 | mx52jing - - - + + + @@ -117,8 +117,8 @@ binaryFileOperation2() }
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\226\207\344\273\266\346\223\215\344\275\234/\345\271\266\345\217\221\344\270\213\350\275\275\350\277\234\347\250\213\346\226\207\344\273\266.html" "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\226\207\344\273\266\346\223\215\344\275\234/\345\271\266\345\217\221\344\270\213\350\275\275\350\277\234\347\250\213\346\226\207\344\273\266.html" index a6873034..849b7279 100644 --- "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\226\207\344\273\266\346\223\215\344\275\234/\345\271\266\345\217\221\344\270\213\350\275\275\350\277\234\347\250\213\346\226\207\344\273\266.html" +++ "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\226\207\344\273\266\346\223\215\344\275\234/\345\271\266\345\217\221\344\270\213\350\275\275\350\277\234\347\250\213\346\226\207\344\273\266.html" @@ -6,9 +6,9 @@ 并发下载远程文件 | mx52jing - - - + + + @@ -100,8 +100,8 @@ wg.Wait() }
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\226\207\344\273\266\346\223\215\344\275\234/\346\226\207\344\273\266\345\244\215\345\210\266.html" "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\226\207\344\273\266\346\223\215\344\275\234/\346\226\207\344\273\266\345\244\215\345\210\266.html" index 458be117..c2fe1542 100644 --- "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\226\207\344\273\266\346\223\215\344\275\234/\346\226\207\344\273\266\345\244\215\345\210\266.html" +++ "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\226\207\344\273\266\346\223\215\344\275\234/\346\226\207\344\273\266\345\244\215\345\210\266.html" @@ -6,9 +6,9 @@ 文件复制 | mx52jing - - - + + + @@ -37,8 +37,8 @@ copyFile() }
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\226\207\344\273\266\346\223\215\344\275\234/\347\233\256\345\275\225\346\223\215\344\275\234.html" "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\226\207\344\273\266\346\223\215\344\275\234/\347\233\256\345\275\225\346\223\215\344\275\234.html" index abc877e2..9ca27a61 100644 --- "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\226\207\344\273\266\346\223\215\344\275\234/\347\233\256\345\275\225\346\223\215\344\275\234.html" +++ "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\226\207\344\273\266\346\223\215\344\275\234/\347\233\256\345\275\225\346\223\215\344\275\234.html" @@ -6,9 +6,9 @@ 目录操作 | mx52jing - - - + + + @@ -133,8 +133,8 @@ fmt.Println("<<<count>>>", count) }
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\226\207\344\273\266\346\223\215\344\275\234/\350\257\273\345\217\226\351\205\215\347\275\256\346\226\207\344\273\266.html" "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\226\207\344\273\266\346\223\215\344\275\234/\350\257\273\345\217\226\351\205\215\347\275\256\346\226\207\344\273\266.html" index d30a4fd3..925a9dbd 100644 --- "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\226\207\344\273\266\346\223\215\344\275\234/\350\257\273\345\217\226\351\205\215\347\275\256\346\226\207\344\273\266.html" +++ "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\226\207\344\273\266\346\223\215\344\275\234/\350\257\273\345\217\226\351\205\215\347\275\256\346\226\207\344\273\266.html" @@ -6,9 +6,9 @@ 读取配置文件 | mx52jing - - - + + + @@ -113,8 +113,8 @@ readJson() }
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\226\207\344\273\266\346\223\215\344\275\234/\350\257\273\346\226\207\344\273\266.html" "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\226\207\344\273\266\346\223\215\344\275\234/\350\257\273\346\226\207\344\273\266.html" index 64ee54b7..3a1a8ef9 100644 --- "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\226\207\344\273\266\346\223\215\344\275\234/\350\257\273\346\226\207\344\273\266.html" +++ "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\226\207\344\273\266\346\223\215\344\275\234/\350\257\273\346\226\207\344\273\266.html" @@ -6,9 +6,9 @@ 读文件 | mx52jing - - - + + + @@ -114,8 +114,8 @@ demo5() }
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\265\201\347\250\213\346\216\247\345\210\266.html" "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\265\201\347\250\213\346\216\247\345\210\266.html" index 46792785..0b400014 100644 --- "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\265\201\347\250\213\346\216\247\345\210\266.html" +++ "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\346\265\201\347\250\213\346\216\247\345\210\266.html" @@ -6,9 +6,9 @@ 流程控制 | mx52jing - - - + + + @@ -350,8 +350,8 @@ testDefineVariable() }
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\347\216\257\345\242\203\346\220\255\345\273\272.html" "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\347\216\257\345\242\203\346\220\255\345\273\272.html" index af768fb9..ea34fabb 100644 --- "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\347\216\257\345\242\203\346\220\255\345\273\272.html" +++ "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\347\216\257\345\242\203\346\220\255\345\273\272.html" @@ -6,9 +6,9 @@ 开发环境搭建 | mx52jing - - - + + + @@ -49,8 +49,8 @@ golang.org/x/net v0.9.0 // indirect )
  • 然后执行go mod tidy

  • 然后就可以修改刚才克隆的源代码啦

- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\347\273\223\346\236\204\344\275\223.html" "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\347\273\223\346\236\204\344\275\223.html" index 72dd4055..2c952a62 100644 --- "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\347\273\223\346\236\204\344\275\223.html" +++ "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\347\273\223\346\236\204\344\275\223.html" @@ -6,9 +6,9 @@ 结构体 | mx52jing - - - + + + @@ -300,8 +300,8 @@ person17.changePersonAge(88) }
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\347\275\221\347\273\234/HTTP.html" "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\347\275\221\347\273\234/HTTP.html" index 5a8f24a5..17847c7b 100644 --- "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\347\275\221\347\273\234/HTTP.html" +++ "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\347\275\221\347\273\234/HTTP.html" @@ -6,9 +6,9 @@ HTTP | mx52jing - - - + + + @@ -276,8 +276,8 @@ fetchSmsSendData() } - - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\347\275\221\347\273\234/RPC.html" "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\347\275\221\347\273\234/RPC.html" index 4b6f6348..ce09a279 100644 --- "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\347\275\221\347\273\234/RPC.html" +++ "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\347\275\221\347\273\234/RPC.html" @@ -6,9 +6,9 @@ RPC | mx52jing - - - + + + @@ -77,8 +77,8 @@ fmt.Println(res, "计算后的值") } - - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\347\275\221\347\273\234/TCP.html" "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\347\275\221\347\273\234/TCP.html" index 73a40ad4..d741af4e 100644 --- "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\347\275\221\347\273\234/TCP.html" +++ "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\347\275\221\347\273\234/TCP.html" @@ -6,9 +6,9 @@ TCP | mx52jing - - - + + + @@ -96,8 +96,8 @@ } } - - + + \ No newline at end of file diff --git "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\351\200\232\351\201\223channel.html" "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\351\200\232\351\201\223channel.html" index 093f8728..47bdbd5a 100644 --- "a/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\351\200\232\351\201\223channel.html" +++ "b/knowledge-deposition/GoLang/\345\237\272\347\241\200\347\237\245\350\257\206/\351\200\232\351\201\223channel.html" @@ -6,9 +6,9 @@ 通道(channel) | mx52jing - - - + + + @@ -256,8 +256,8 @@ fmt.Println("所有子goroutine已完成任务,可以继续执行后续操作") } - - + + \ No newline at end of file diff --git "a/knowledge-deposition/Linux/Bash\345\237\272\347\241\200\347\237\245\350\257\206.html" "b/knowledge-deposition/Linux/Bash\345\237\272\347\241\200\347\237\245\350\257\206.html" index 22982a70..ce620c23 100644 --- "a/knowledge-deposition/Linux/Bash\345\237\272\347\241\200\347\237\245\350\257\206.html" +++ "b/knowledge-deposition/Linux/Bash\345\237\272\347\241\200\347\237\245\350\257\206.html" @@ -6,9 +6,9 @@ Bash 基础语法 | mx52jing - - - + + + @@ -235,8 +235,8 @@

输入/输出重定向

设备设备文件名文件描述符类型
键盘/dev/stdin0标准输入
显示器/dev/stdout1标准输出
显示器/dev/stderr2标准错误输出

以下是一些常用的命令示意:

命令说明
command > file输出重定向到file
command < file输入重定向到file
command >> file输出追加的方式重定向到file
n > file文件描述符n的文件重定向到 file
n >> file将文件描述符n的文件以追加的方式重定向到 file
n >& m将输出文件mn合并
n <& m将输入文件mn合并
<< tag将开始标记tag和结束标记tag之间的内容作为输入

/dev/null 文件

如果希望执行某个命令,但又不希望在屏幕上显示输出结果,那么可以将输出重定向到/dev/null

shell
command > /dev/null
 

如果希望屏蔽stdoutstderr,可以这样写,表示命令的输出错误的输出都重定向到/dev/null

shell
command > /dev/null 2>&1
 

TIP

这里的2>之间不可以有空格,2>是一体的时候才表示错误输出。

- - + + \ No newline at end of file diff --git a/knowledge-deposition/MySQL/SQL.html b/knowledge-deposition/MySQL/SQL.html index ea478f87..b2643af6 100644 --- a/knowledge-deposition/MySQL/SQL.html +++ b/knowledge-deposition/MySQL/SQL.html @@ -6,16 +6,16 @@ SQL | mx52jing - - - + + +
Skip to content
On this page

SQL

  • SQLStructured Query Language结构化查询语言

SQL运算符

  • SQL运算符是一种符号,它是用来进行列间或者变量之间的比较数学运算的

算术运算符

运算符说明
+加运算,求两个数或表达式相加的和,如1+1
-减运算,求两个数或表达式相减的差,如4-1
*乘运算,求两个数或表达式相乘的积,如2*2
/除运算,求两个数或表达式相除的商,如6/4的值为1
%取模运算,求两个数或表达式相除的余数,如:6%4的值为2

逻辑运算符

运算符说明
AND当且仅当两个布尔表达式都为true时,返回TRUE
OR当且仅当两个布尔表达式都为false,返回FALSE
NOT布尔表达式的值取反

比较运算符

运算符说明
=等于
>大于
<小于
<>不等于
>=大于等于
<=小于等于
!=不等于
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/MySQL/\345\207\275\346\225\260.html" "b/knowledge-deposition/MySQL/\345\207\275\346\225\260.html" index a7371fd8..c83b2c7d 100644 --- "a/knowledge-deposition/MySQL/\345\207\275\346\225\260.html" +++ "b/knowledge-deposition/MySQL/\345\207\275\346\225\260.html" @@ -6,9 +6,9 @@ 函数 | mx52jing - - - + + + @@ -126,8 +126,8 @@ # 再次查询 log_bin_trust_function_creators SHOW VARIABLES LIKE 'log_bin_trust_function_creators'; - - + + \ No newline at end of file diff --git "a/knowledge-deposition/MySQL/\345\210\206\347\273\204\345\222\214\345\255\220\346\237\245\350\257\242.html" "b/knowledge-deposition/MySQL/\345\210\206\347\273\204\345\222\214\345\255\220\346\237\245\350\257\242.html" index 7b50d4da..803c3750 100644 --- "a/knowledge-deposition/MySQL/\345\210\206\347\273\204\345\222\214\345\255\220\346\237\245\350\257\242.html" +++ "b/knowledge-deposition/MySQL/\345\210\206\347\273\204\345\222\214\345\255\220\346\237\245\350\257\242.html" @@ -6,9 +6,9 @@ 分组和子查询 | mx52jing - - - + + + @@ -38,8 +38,8 @@ SELECT t.* FROM teachers t WHERE age > SOME (SELECT age FROM teachers WHERE gender = '0') ORDER BY age DESC;

查询年龄大于所有男性(假设gender = 0 为男性)的数据,年龄比所有男性的年龄都大才会返回

SQL
SELECT t.* FROM teachers t WHERE age > ALL (SELECT age FROM teachers WHERE gender = '0') ORDER BY age DESC;
 
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/MySQL/\345\237\272\347\241\200\347\237\245\350\257\206.html" "b/knowledge-deposition/MySQL/\345\237\272\347\241\200\347\237\245\350\257\206.html" index 600a2e7f..b4d2981b 100644 --- "a/knowledge-deposition/MySQL/\345\237\272\347\241\200\347\237\245\350\257\206.html" +++ "b/knowledge-deposition/MySQL/\345\237\272\347\241\200\347\237\245\350\257\206.html" @@ -6,9 +6,9 @@ 基础知识 | mx52jing - - - + + + @@ -71,8 +71,8 @@ ) COMMENT '学生表'; - - + + \ No newline at end of file diff --git "a/knowledge-deposition/MySQL/\346\225\260\346\215\256\346\223\215\344\275\234\345\222\214\346\237\245\350\257\242.html" "b/knowledge-deposition/MySQL/\346\225\260\346\215\256\346\223\215\344\275\234\345\222\214\346\237\245\350\257\242.html" index 330b29be..11d81a60 100644 --- "a/knowledge-deposition/MySQL/\346\225\260\346\215\256\346\223\215\344\275\234\345\222\214\346\237\245\350\257\242.html" +++ "b/knowledge-deposition/MySQL/\346\225\260\346\215\256\346\223\215\344\275\234\345\222\214\346\237\245\350\257\242.html" @@ -6,9 +6,9 @@ 数据操作和查询 | mx52jing - - - + + + @@ -68,8 +68,8 @@

BETWEEN AND

SQL
SELECT * FROM student WHERE age BETWEEN '20' AND '22';
 

IN

SQL
SELECT * FROM student WHERE province IN ('上海市', '广东省');
 
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/MySQL/\350\241\250\350\277\236\346\216\245.html" "b/knowledge-deposition/MySQL/\350\241\250\350\277\236\346\216\245.html" index 51f6f602..677391e5 100644 --- "a/knowledge-deposition/MySQL/\350\241\250\350\277\236\346\216\245.html" +++ "b/knowledge-deposition/MySQL/\350\241\250\350\277\236\346\216\245.html" @@ -6,9 +6,9 @@ 表连接 | mx52jing - - - + + + @@ -42,8 +42,8 @@ WHERE s1.name = '胡凯' AND s2.name != '胡凯'; - - + + \ No newline at end of file diff --git "a/knowledge-deposition/Nacos/\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\345\256\211\350\243\205\345\220\257\345\212\250.html" "b/knowledge-deposition/Nacos/\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\345\256\211\350\243\205\345\220\257\345\212\250.html" index bd322a34..b84cb6bc 100644 --- "a/knowledge-deposition/Nacos/\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\345\256\211\350\243\205\345\220\257\345\212\250.html" +++ "b/knowledge-deposition/Nacos/\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\345\256\211\350\243\205\345\220\257\345\212\250.html" @@ -6,9 +6,9 @@ 基本概念和安装启动 | mx52jing - - - + + + @@ -101,8 +101,8 @@

WARNING

然后重启docker服务

shell
docker-compose -f xxx.yml down
 docker-compose -f xxx.yml up -d
 

然后清空http://localhost:8848/nacos页面的localStorage的值,刷新页面,会出现登录界面

默认:用户名:nacos,密码:nacos

登录成功就可以啦

- - + + \ No newline at end of file diff --git "a/knowledge-deposition/Nacos/\346\223\215\344\275\234\345\212\250\346\200\201\351\205\215\347\275\256\346\226\207\344\273\266.html" "b/knowledge-deposition/Nacos/\346\223\215\344\275\234\345\212\250\346\200\201\351\205\215\347\275\256\346\226\207\344\273\266.html" index 365d22de..7a43c3bb 100644 --- "a/knowledge-deposition/Nacos/\346\223\215\344\275\234\345\212\250\346\200\201\351\205\215\347\275\256\346\226\207\344\273\266.html" +++ "b/knowledge-deposition/Nacos/\346\223\215\344\275\234\345\212\250\346\200\201\351\205\215\347\275\256\346\226\207\344\273\266.html" @@ -6,9 +6,9 @@ 操作动态配置文件 | mx52jing - - - + + + @@ -317,8 +317,8 @@ fetchRemoteConfig() } - - + + \ No newline at end of file diff --git a/knowledge-deposition/RabbitMQ/Routing.html b/knowledge-deposition/RabbitMQ/Routing.html index 4dc36fd5..f4031962 100644 --- a/knowledge-deposition/RabbitMQ/Routing.html +++ b/knowledge-deposition/RabbitMQ/Routing.html @@ -6,9 +6,9 @@ Routing | mx52jing - - - + + + @@ -240,8 +240,8 @@ go run routing/emit.go info "what happened to you info" go run routing/emit.go debug "what happened to you debug"

可以看到receiver的控制台只有routing key匹配的才会接收到消息并打印

- - + + \ No newline at end of file diff --git a/knowledge-deposition/RabbitMQ/Topics.html b/knowledge-deposition/RabbitMQ/Topics.html index a5923c4a..ade5bb08 100644 --- a/knowledge-deposition/RabbitMQ/Topics.html +++ b/knowledge-deposition/RabbitMQ/Topics.html @@ -6,9 +6,9 @@ Topics | mx52jing - - - + + + @@ -172,8 +172,8 @@ # 消息传递给Q2 go run topics/emit.go "smart.block.sheep" "sheep rabbit is coming" - - + + \ No newline at end of file diff --git "a/knowledge-deposition/RabbitMQ/\345\217\221\345\270\203\350\256\242\351\230\205.html" "b/knowledge-deposition/RabbitMQ/\345\217\221\345\270\203\350\256\242\351\230\205.html" index 630a1a7d..0320e91e 100644 --- "a/knowledge-deposition/RabbitMQ/\345\217\221\345\270\203\350\256\242\351\230\205.html" +++ "b/knowledge-deposition/RabbitMQ/\345\217\221\345\270\203\350\256\242\351\230\205.html" @@ -6,9 +6,9 @@ 发布订阅 | mx52jing - - - + + + @@ -370,8 +370,8 @@ startUpAndReceive() }

上面代码,在多个窗口分别运行receive.go中,然后运行emit.go,每个窗口都会接收到发送的数据

- - + + \ No newline at end of file diff --git "a/knowledge-deposition/RabbitMQ/\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\345\256\211\350\243\205\345\220\257\345\212\250.html" "b/knowledge-deposition/RabbitMQ/\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\345\256\211\350\243\205\345\220\257\345\212\250.html" index 8034e087..5590d4b7 100644 --- "a/knowledge-deposition/RabbitMQ/\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\345\256\211\350\243\205\345\220\257\345\212\250.html" +++ "b/knowledge-deposition/RabbitMQ/\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\345\256\211\350\243\205\345\220\257\345\212\250.html" @@ -6,9 +6,9 @@ 安装启动和基本使用 | mx52jing - - - + + + @@ -217,8 +217,8 @@ createReceiverAndReceiveMessage() } - - + + \ No newline at end of file diff --git "a/knowledge-deposition/RabbitMQ/\345\267\245\344\275\234\351\230\237\345\210\227.html" "b/knowledge-deposition/RabbitMQ/\345\267\245\344\275\234\351\230\237\345\210\227.html" index a6166de4..f93b3696 100644 --- "a/knowledge-deposition/RabbitMQ/\345\267\245\344\275\234\351\230\237\345\210\227.html" +++ "b/knowledge-deposition/RabbitMQ/\345\267\245\344\275\234\351\230\237\345\210\227.html" @@ -6,9 +6,9 @@ 工作队列 | mx52jing - - - + + + @@ -165,8 +165,8 @@ nil, // arguments ) - - + + \ No newline at end of file diff --git a/knowledge-deposition/SSH/ssh-base.html b/knowledge-deposition/SSH/ssh-base.html index 8e40fcbe..c6614281 100644 --- a/knowledge-deposition/SSH/ssh-base.html +++ b/knowledge-deposition/SSH/ssh-base.html @@ -6,9 +6,9 @@ SSH相关基础 | mx52jing - - - + + + @@ -80,8 +80,8 @@

如果要使用example1.com邮箱生成的ssh-key添加远程链接,修改github.com为该邮箱的ssh-key对应的Host,如下:

原先添加远程remote的命令为

shell
Git remote add origin Git@github.com:username/projectName.Git
 

修改为

shell
Git remote add origin Git@github.exampl1.com:username/projectName.Git
 
- - + + \ No newline at end of file diff --git "a/knowledge-deposition/\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226/Babel/Babel\345\237\272\347\241\200.html" "b/knowledge-deposition/\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226/Babel/Babel\345\237\272\347\241\200.html" index 9a0792cf..fcfa4ab4 100644 --- "a/knowledge-deposition/\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226/Babel/Babel\345\237\272\347\241\200.html" +++ "b/knowledge-deposition/\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226/Babel/Babel\345\237\272\347\241\200.html" @@ -6,9 +6,9 @@ Babel基础 | mx52jing - - - + + + @@ -73,8 +73,8 @@ ] })

相关网站

- - + + \ No newline at end of file diff --git "a/knowledge-deposition/\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226/Vite/Rollup\347\232\204\346\217\222\344\273\266\346\234\272\345\210\266.html" "b/knowledge-deposition/\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226/Vite/Rollup\347\232\204\346\217\222\344\273\266\346\234\272\345\210\266.html" index ccbd7b86..1c40aa96 100644 --- "a/knowledge-deposition/\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226/Vite/Rollup\347\232\204\346\217\222\344\273\266\346\234\272\345\210\266.html" +++ "b/knowledge-deposition/\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226/Vite/Rollup\347\232\204\346\217\222\344\273\266\346\234\272\345\210\266.html" @@ -6,9 +6,9 @@ Rollup的插件机制 | mx52jing - - - + + + @@ -28,8 +28,8 @@ }; }

该选项只能用于Parallel(并行钩子)类型的Hook

当某个Hook使用该选项后,此Hook将会等待前面所有插件的该Hook函数都并行执行完毕后,再执行该Hook函数,然后在并行执行剩余插件的该Hook

例如: 有5个插件A,B,C,D,E,都实现了相同的Parallel Hook,其中C插件中设置了sequential: true,那么Rollup将会先并发执行A,B插件的该Hook,然后执行C插件的该Hook,当C执行完毕后,再并发执行D,E插件的该Hook

插件工作流


Build阶段工作流

在Build阶段会执行相关的Build Hooks,是由rollup.rollup(inputOptions)函数触发,构建阶段的第一个Hook是options,最后一个Hook是buildEnd,当构建过程出错时,会执行closeBundle

Build流程如下图:

TIP

watch模式下,Rollup内部会初始化一个watcher对象,当文件内容发生变化时,watcher对象会同时触发watchChange Hook,对项目进行重新构建。此外,在打包结束时,Rollup会自动清除watcher对象,并调用closeWatcher Hook

Build阶段流程如下:

TIP

Rollup在解析路径的时候,即执行resolveId/resolveDynamicImport Hook的时候,如果该路径被标记为external(外部模块),表明该路径内容不用进行Rollup打包,则直接跳转到buildEnd Hook,不再执行load/transform/resolveId等Hook

Output阶段工作流

Output generation hooks可以提供关于生成的bundle的信息并在生成完成后修改构建。它们的工作方式和类型与Build Hook相同,但是每次调用bundle.generate(outputOptions)bundle.write(outputOptions)时会单独调用,只会调用其中一个

Output流程如下图:

Output阶段流程如下:

TIP

- - + + \ No newline at end of file diff --git "a/knowledge-deposition/\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226/Vite/Vite\346\217\222\344\273\266\346\234\272\345\210\266.html" "b/knowledge-deposition/\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226/Vite/Vite\346\217\222\344\273\266\346\234\272\345\210\266.html" index 062f536a..2fa1645d 100644 --- "a/knowledge-deposition/\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226/Vite/Vite\346\217\222\344\273\266\346\234\272\345\210\266.html" +++ "b/knowledge-deposition/\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226/Vite/Vite\346\217\222\344\273\266\346\234\272\345\210\266.html" @@ -6,9 +6,9 @@ Vite插件机制 | mx52jing - - - + + + @@ -154,8 +154,8 @@ return command === 'build' && !config.build.ssr } - - + + \ No newline at end of file diff --git "a/knowledge-deposition/\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226/Vite/esbuild\347\233\270\345\205\263.html" "b/knowledge-deposition/\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226/Vite/esbuild\347\233\270\345\205\263.html" index 3e791ab2..220191cd 100644 --- "a/knowledge-deposition/\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226/Vite/esbuild\347\233\270\345\205\263.html" +++ "b/knowledge-deposition/\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226/Vite/esbuild\347\233\270\345\205\263.html" @@ -6,9 +6,9 @@ esbuild相关 | mx52jing - - - + + + @@ -411,8 +411,8 @@ export default autoGenerateHtmlPlugin

plugins中添加该插件

javascript
plugins: [envPlugin, autoGenerateHtmlPlugin()]
 

其他

- - + + \ No newline at end of file diff --git "a/knowledge-deposition/\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226/Vite/\344\276\235\350\265\226\351\242\204\346\236\204\345\273\272.html" "b/knowledge-deposition/\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226/Vite/\344\276\235\350\265\226\351\242\204\346\236\204\345\273\272.html" index 7815386c..6c3b5354 100644 --- "a/knowledge-deposition/\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226/Vite/\344\276\235\350\265\226\351\242\204\346\236\204\345\273\272.html" +++ "b/knowledge-deposition/\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226/Vite/\344\276\235\350\265\226\351\242\204\346\236\204\345\273\272.html" @@ -6,9 +6,9 @@ 依赖预构建 | mx52jing - - - + + + @@ -48,8 +48,8 @@ console.log(get(data, 'classes.one.name'), '============')

修改node_modules/lodash-es/_baseGet.js如下:

然后重启服务

shell
pnpm dev --host --force
 

可以看到命令行中会提示重新进行依赖预构建

然后到浏览器中查看,刚才添加的debug信息已经打印

其他

- - + + \ No newline at end of file diff --git "a/knowledge-deposition/\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226/Vite/\345\210\235\344\275\223\351\252\214.html" "b/knowledge-deposition/\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226/Vite/\345\210\235\344\275\223\351\252\214.html" index 98415cc6..73d29d3c 100644 --- "a/knowledge-deposition/\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226/Vite/\345\210\235\344\275\223\351\252\214.html" +++ "b/knowledge-deposition/\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226/Vite/\345\210\235\344\275\223\351\252\214.html" @@ -6,9 +6,9 @@ 初体验 | mx52jing - - - + + + @@ -90,8 +90,8 @@ export default config

vite.config.js中为什么可以用esmodule语法

其他

相关代码可查看initial_experience

- - + + \ No newline at end of file diff --git "a/knowledge-deposition/\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226/Vite/\345\214\272\345\210\206\344\270\215\345\220\214\347\216\257\345\242\203.html" "b/knowledge-deposition/\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226/Vite/\345\214\272\345\210\206\344\270\215\345\220\214\347\216\257\345\242\203.html" index 792ad6a7..0cbca692 100644 --- "a/knowledge-deposition/\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226/Vite/\345\214\272\345\210\206\344\270\215\345\220\214\347\216\257\345\242\203.html" +++ "b/knowledge-deposition/\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226/Vite/\345\214\272\345\210\206\344\270\215\345\220\214\347\216\257\345\242\203.html" @@ -6,9 +6,9 @@ 区分不同环境 | mx52jing - - - + + + @@ -102,8 +102,8 @@
shell
{ mode: 'test', command: 'serve', ssrBuild: false }
 
shell
{ mode: 'test', command: 'build', ssrBuild: false }
 

其他

相关代码可查看environment

- - + + \ No newline at end of file diff --git "a/knowledge-deposition/\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226/Vite/\345\244\204\347\220\206\346\240\267\345\274\217.html" "b/knowledge-deposition/\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226/Vite/\345\244\204\347\220\206\346\240\267\345\274\217.html" index 70536e2b..83451f37 100644 --- "a/knowledge-deposition/\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226/Vite/\345\244\204\347\220\206\346\240\267\345\274\217.html" +++ "b/knowledge-deposition/\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226/Vite/\345\244\204\347\220\206\346\240\267\345\274\217.html" @@ -6,9 +6,9 @@ 处理样式 | mx52jing - - - + + + @@ -170,8 +170,8 @@ export default config;

效果如下:

其他

相关代码可查看handle-style

- - + + \ No newline at end of file diff --git "a/knowledge-deposition/\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226/Vite/\345\244\204\347\220\206\351\235\231\346\200\201\350\265\204\346\272\220.html" "b/knowledge-deposition/\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226/Vite/\345\244\204\347\220\206\351\235\231\346\200\201\350\265\204\346\272\220.html" index 8fdeb9f7..2b788394 100644 --- "a/knowledge-deposition/\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226/Vite/\345\244\204\347\220\206\351\235\231\346\200\201\350\265\204\346\272\220.html" +++ "b/knowledge-deposition/\345\211\215\347\253\257\345\267\245\347\250\213\345\214\226/Vite/\345\244\204\347\220\206\351\235\231\346\200\201\350\265\204\346\272\220.html" @@ -6,9 +6,9 @@ 处理静态资源 | mx52jing - - - + + + @@ -137,8 +137,8 @@ export default config;

其他

- - + + \ No newline at end of file