From 4cfd516294d31fe69d81c7764f4b98711338c5b3 Mon Sep 17 00:00:00 2001 From: chufan Date: Tue, 29 Oct 2024 18:01:43 +0800 Subject: [PATCH 1/4] chore: update --- code/algorithm/front-end-ts/add.js | 32 ------------------- code/algorithm/front-end-ts/count.ts | 3 +- code/algorithm/front-end-ts/duplicates.ts | 4 +-- code/algorithm/front-end-ts/isUSD.ts | 3 +- .../front-end-ts/removeWithoutCopy.ts | 9 +++--- code/algorithm/front-end/add.js | 7 ++-- code/algorithm/front-end/count.js | 4 +-- code/algorithm/front-end/duplicates.js | 2 +- code/algorithm/front-end/isUSD.js | 2 +- code/algorithm/front-end/removeWithoutCopy.js | 3 +- code/algorithm/interview-101/addInList.js | 19 ++++------- .../findNumsAppearOnce.js" | 12 +++++-- .../express/apps/static-source-demo/Readme.md | 2 +- docs/front-end/base-begin/javascript.md | 17 +++++----- ...07\345\207\206\345\205\245\351\227\250.md" | 9 +++--- ...270\215\350\265\267\347\232\204Node.js.md" | 6 ++-- docs/server-end/es-version/Readme-back.md | 22 ++++++------- .../egg/tutorial/\346\234\215\345\212\241.md" | 2 +- 18 files changed, 62 insertions(+), 96 deletions(-) delete mode 100644 code/algorithm/front-end-ts/add.js diff --git a/code/algorithm/front-end-ts/add.js b/code/algorithm/front-end-ts/add.js deleted file mode 100644 index e76ed57c2..000000000 --- a/code/algorithm/front-end-ts/add.js +++ /dev/null @@ -1,32 +0,0 @@ -/** - * 累加 - */ -function add() { - // eslint-disable-next-line prefer-rest-params - const args = Array.prototype.slice.call(arguments) - const _add = function () { - // eslint-disable-next-line prefer-rest-params - console.log('add', arguments) - // eslint-disable-next-line prefer-rest-params - args.push(...arguments) - - // 返回函数 - return _add - } - // 对参数数组做求和处理 - _add.toString = function () { - // 设置sum的起始值为0 - return args.reduce((sum, item) => { - console.log(sum, item) - return sum + item - }) - } - // 返回函数 - return _add -} - -const str = add(1, 6)(2)(3) -console.log(str) -// console.log(String(add(1,6)(2)(3)) ) -// console.log(add(1)(2)(3)) -// console.log(add(1)(2,3,4)) diff --git a/code/algorithm/front-end-ts/count.ts b/code/algorithm/front-end-ts/count.ts index 191d34b2d..628b006d1 100644 --- a/code/algorithm/front-end-ts/count.ts +++ b/code/algorithm/front-end-ts/count.ts @@ -1,6 +1,5 @@ /** * 计数 - * @param str */ function count(str: string) { // 转换为数组后去重 @@ -22,3 +21,5 @@ function count(str: string) { } return result } + +count('12321') diff --git a/code/algorithm/front-end-ts/duplicates.ts b/code/algorithm/front-end-ts/duplicates.ts index 80d041d05..8a1d5d72c 100644 --- a/code/algorithm/front-end-ts/duplicates.ts +++ b/code/algorithm/front-end-ts/duplicates.ts @@ -2,8 +2,8 @@ * 找出数组 arr 中重复出现过的元素 */ function duplicates(arr: number[]) { - const sortArr = arr.sort() - const result = [] + const sortArr: number[] = arr.sort() + const result: number[] = [] const len = sortArr.length for (let index = 0; index < len - 1; index++) { if (sortArr[index] === sortArr[index++]) { diff --git a/code/algorithm/front-end-ts/isUSD.ts b/code/algorithm/front-end-ts/isUSD.ts index 700692497..3f5ee0002 100644 --- a/code/algorithm/front-end-ts/isUSD.ts +++ b/code/algorithm/front-end-ts/isUSD.ts @@ -1,6 +1,5 @@ /** * 检测是否为USD字符 - * @param str */ function isUSD(str: string) { if (!str.startsWith('$')) { @@ -33,4 +32,4 @@ function isUSD(str: string) { return true } -console.log(isUSD('$20,933,209.93')) +isUSD('$20,933,209.93') diff --git a/code/algorithm/front-end-ts/removeWithoutCopy.ts b/code/algorithm/front-end-ts/removeWithoutCopy.ts index 1f754dfa7..601e17d9c 100644 --- a/code/algorithm/front-end-ts/removeWithoutCopy.ts +++ b/code/algorithm/front-end-ts/removeWithoutCopy.ts @@ -3,10 +3,12 @@ * - 直接在给定的 arr 数组上进行操作,并将结果返回 */ function removeWithoutCopy(arr: number[], item: number) { + // 第一种方法: filter过滤 // const result= arr.filter(value=>value!==item) - // // 输出 + // 输出 // return result; - // 每次都和arr中的首个元素去比较 + + // 第二种方法:循环遍历,每次都和arr中的首个元素去比较 const len = arr.length for (let index = 0; index < len; index++) { if (arr[0] !== item) { @@ -19,5 +21,4 @@ function removeWithoutCopy(arr: number[], item: number) { return arr } -const test = [1, 2, 2, 3, 4, 2, 2] -console.log(removeWithoutCopy(test, 2)) +removeWithoutCopy([1, 2, 2, 3, 4, 2, 2], 2) diff --git a/code/algorithm/front-end/add.js b/code/algorithm/front-end/add.js index e200c2b39..b650f4b51 100644 --- a/code/algorithm/front-end/add.js +++ b/code/algorithm/front-end/add.js @@ -21,7 +21,6 @@ function add(...inputs) { return _add } -const str = add(1, 6)(2)(3) -console.log(str) -console.log(add(1)(2)(3)) -console.log(add(1)(2, 3, 4)) +add(1, 6)(2)(3) +add(1)(2)(3) +add(1)(2, 3, 4) diff --git a/code/algorithm/front-end/count.js b/code/algorithm/front-end/count.js index b229ab8dc..d03521789 100644 --- a/code/algorithm/front-end/count.js +++ b/code/algorithm/front-end/count.js @@ -1,6 +1,5 @@ /** * 计数 - * @param str */ function count(str) { // 转换为数组后去重 @@ -24,5 +23,4 @@ function count(str) { } // 调用 -const result = count('abTT') -console.log(result) +count('abTT') diff --git a/code/algorithm/front-end/duplicates.js b/code/algorithm/front-end/duplicates.js index c3bfb54c1..43f76131e 100644 --- a/code/algorithm/front-end/duplicates.js +++ b/code/algorithm/front-end/duplicates.js @@ -14,4 +14,4 @@ function duplicates(arr) { return [...new Set(result)] } -console.log(duplicates([1, 2, 4, 4, 3, 3, 1, 5, 3])) +duplicates([1, 2, 4, 4, 3, 3, 1, 5, 3]) diff --git a/code/algorithm/front-end/isUSD.js b/code/algorithm/front-end/isUSD.js index 11c0a0894..f8b34b418 100644 --- a/code/algorithm/front-end/isUSD.js +++ b/code/algorithm/front-end/isUSD.js @@ -33,4 +33,4 @@ function isUSD(str) { return true } -console.log(isUSD('$20,933,209.93')) +isUSD('$20,933,209.93') diff --git a/code/algorithm/front-end/removeWithoutCopy.js b/code/algorithm/front-end/removeWithoutCopy.js index cd0e94bd8..4d1878196 100644 --- a/code/algorithm/front-end/removeWithoutCopy.js +++ b/code/algorithm/front-end/removeWithoutCopy.js @@ -19,5 +19,4 @@ function removeWithoutCopy(arr, item) { return arr } -const test = [1, 2, 2, 3, 4, 2, 2] -console.log(removeWithoutCopy(test, 2)) +removeWithoutCopy([1, 2, 2, 3, 4, 2, 2], 2) diff --git a/code/algorithm/interview-101/addInList.js b/code/algorithm/interview-101/addInList.js index 06253a836..9b95ce4f4 100644 --- a/code/algorithm/interview-101/addInList.js +++ b/code/algorithm/interview-101/addInList.js @@ -1,19 +1,12 @@ -/* - * function ListNode(x){ - * this.val = x; - * this.next = null; - * } - */ +export function ListNode(x) { + this.val = x + this.next = null +} + /** - * * @param head1 ListNode类 * @param head2 ListNode类 - * @return ListNode类 */ -function addInList(head1, head2) { +export function addInList(head1, head2) { console.log(head1, head2) } - -module.exports = { - addInList, -} diff --git "a/code/algorithm/sword-point/\344\275\215\350\277\220\347\256\227/findNumsAppearOnce.js" "b/code/algorithm/sword-point/\344\275\215\350\277\220\347\256\227/findNumsAppearOnce.js" index f005cd563..cbfc8667d 100644 --- "a/code/algorithm/sword-point/\344\275\215\350\277\220\347\256\227/findNumsAppearOnce.js" +++ "b/code/algorithm/sword-point/\344\275\215\350\277\220\347\256\227/findNumsAppearOnce.js" @@ -59,14 +59,20 @@ function findNumsAppearOnceThree(array) { let res2 = 0 let temp = 0 // 遍历数组得到a^b - for (let i = 0; i < array.length; i++) { temp ^= array[i] } + for (let i = 0; i < array.length; i++) { + temp ^= array[i] + } let k = 1 // 找到两个数不相同的第一位 - while ((k & temp) === 0) { k <<= 1 } + while ((k & temp) === 0) { + k <<= 1 + } for (let i = 0; i < array.length; i++) { // 遍历数组,对每个数分类 - if ((k & array[i]) === 0) { res1 ^= array[i] } + if ((k & array[i]) === 0) { + res1 ^= array[i] + } else { res2 ^= array[i] } } diff --git a/code/express/apps/static-source-demo/Readme.md b/code/express/apps/static-source-demo/Readme.md index 1f55bdf7d..eb9c4b8f2 100644 --- a/code/express/apps/static-source-demo/Readme.md +++ b/code/express/apps/static-source-demo/Readme.md @@ -73,7 +73,7 @@ app.use('/static', express.static('public')) 服务启动后,在浏览器中访问: -```textmate +```text http://localhost:3000/static/css/style.css http://localhost:3000/static/js/app.js http://localhost:3000/static/images/bg.png diff --git a/docs/front-end/base-begin/javascript.md b/docs/front-end/base-begin/javascript.md index c1bae7ca4..e3f9f8c72 100644 --- a/docs/front-end/base-begin/javascript.md +++ b/docs/front-end/base-begin/javascript.md @@ -322,6 +322,7 @@ const fn = function () { ```js // 利用Function构造函数 【所有函数都是Function的实例】 +// eslint-disable-next-line const fn = new Function('a', 'b', 'return a+b') console.log(fn) ``` @@ -357,7 +358,7 @@ obj.test() function Fn() { // ... } - +// eslint-disable-next-line const fn = new Fn() console.log(fn) @@ -427,9 +428,9 @@ fn.call(obj, 1, 2) ```js // 求数组中的最大值 -let arr = [1, 4, 23, 78, 25]; -let max = Math.max.apply(null, arr) -let max = Math.max.apply(Math, arr) +const arr = [1, 4, 23, 78, 25] +const max1 = Math.max.apply(null, arr) +const max2 = Math.max.apply(Math, arr) ``` #### bind()方法 @@ -512,7 +513,7 @@ function fn(callback) { fn(function () { alert('hi') }) - +// eslint-disable-next-line function fn() { return function () { } @@ -600,12 +601,12 @@ fun1() ```js // 定义set集合 -const set = new Set(); +const setData1 = new Set() // 可以接收数组作为参数,用来初始化 -const set = new Set([1, 2, 3, 4, 5]) +const setData2 = new Set([1, 2, 3, 4, 5]) // 例如数组去重 let arr = [1, 2, 2, 3, 3, 4, 5, 6] -let temp = new Set(arr); +const temp = new Set(arr) arr = [...temp] ``` diff --git "a/docs/read-books/cs-books/ES6\346\240\207\345\207\206\345\205\245\351\227\250.md" "b/docs/read-books/cs-books/ES6\346\240\207\345\207\206\345\205\245\351\227\250.md" index ca96d0afc..9bd2620d9 100644 --- "a/docs/read-books/cs-books/ES6\346\240\207\345\207\206\345\205\245\351\227\250.md" +++ "b/docs/read-books/cs-books/ES6\346\240\207\345\207\206\345\205\245\351\227\250.md" @@ -8,17 +8,18 @@ headerDepth: 2 ![](./images/es6-standard.png) -ES6是下一代JavaScript语言标准的统称,每年6月发布一次修订版,迄今为止已经发布了3个版本,分别是ES2015、ES2016、ES2017。 -本书根据ES2017标准,详尽介绍了所有新增的语法,对基本概念、设计目的和用法进行了清晰地讲解,给出了大量简单易懂的示例。 +`ES6`是下一代`JavaScript`语言标准的统称,每年6月发布一次修订版,迄今为止已经发布了3个版本,分别是`ES2015`、`ES2016`、`ES2017`。 +本书根据`ES2017`标准,详尽介绍了所有新增的语法,对基本概念、设计目的和用法进行了清晰地讲解,给出了大量简单易懂的示例。 本书为中级难度,适合那些已经对JavaScript语言有一定了解的读者,可以作为学习这门语言最新进展的工具书,也可以作为参考手册供大家随时查阅新语法。 -第三版增加了超过30%的内容,完全覆盖了ES2017标准,相比第二版介绍了更多的语法点,还调整了原有章节的文字表达,充实了示例,论述更准确,更易懂易学。 + +增加了超过30%的内容,完全覆盖了`ES2017`标准,相比第二版介绍了更多的语法点,还调整了原有章节的文字表达,充实了示例,论述更准确,更易懂易学。 ## 简介 ### ECMAScript VS JavaScript -前者是后者的规格,后者是前者的一种实现(另外的 ECMAScript 方言还有 JScript 和 ActionScript)。日常场合,这两个词是可以互换的。 +前者是后者的规格,后者是前者的一种实现(另外的 `ECMAScript` 方言还有 `JScript` 和 `ActionScript`)。日常场合,这两个词是可以互换的。 ### ECMAScript2015 VS ES6 diff --git "a/docs/read-books/cs-books/\346\233\264\344\272\206\344\270\215\350\265\267\347\232\204Node.js.md" "b/docs/read-books/cs-books/\346\233\264\344\272\206\344\270\215\350\265\267\347\232\204Node.js.md" index 4466e1c5a..d8e8a4e4b 100644 --- "a/docs/read-books/cs-books/\346\233\264\344\272\206\344\270\215\350\265\267\347\232\204Node.js.md" +++ "b/docs/read-books/cs-books/\346\233\264\344\272\206\344\270\215\350\265\267\347\232\204Node.js.md" @@ -663,7 +663,7 @@ Node.js和CommonJS的区别(主要体现在module.exports): exports是一个特殊的对象,它的任何输出都将作为一个对外暴露的公共API -```textmate +```text // 导出演示 const PI = Math.PI @@ -939,7 +939,7 @@ import { readFile } from 'node:fs' ##### 模块导出 -```textmate +```text // 对所有内容进行导出 export * from 'XXXXX' @@ -953,7 +953,7 @@ export { foot as foot_copy, bar } from 'XXXX' > 导出对象的指定别名的过程叫做具名导出 -```textmate +```text export {MY_CONST as FOO, myFunc}; export {foot as test} diff --git a/docs/server-end/es-version/Readme-back.md b/docs/server-end/es-version/Readme-back.md index ef2d80f7a..f037a4258 100644 --- a/docs/server-end/es-version/Readme-back.md +++ b/docs/server-end/es-version/Readme-back.md @@ -29,6 +29,7 @@ if (true) { ```js const arr = [] +// eslint-disable-next-line for (var i = 0; i < 2; i++) { arr[i] = function () { console.log(i) @@ -181,30 +182,29 @@ function result(...args) { ## Array扩展方法 ```js - // ## 扩展运算符合并数组 ## -let arr1 = [1, 2, 3]; -let arr2 = [4, 5, 6]; +const arr1 = [1, 2, 3] +const arr2 = [4, 5, 6] // 合并 -let arr3 = [...arr1, ...arr2] -let arr4 = arr1.push(...arr2) +const arr3 = [...arr1, ...arr2] +const arr4 = arr1.push(...arr2) // ## 构造函数方法:Array.from() 将类数组或可遍历对象转换为真正的数组 ## // 伪数组 -let arrayLike = { - '0': 1, - '1': 2, - '2': 3, +const arrayLike = { + 0: 1, + 1: 2, + 2: 3, length: 3 } // 伪数组转换为数组 -let arr2 = Array.from(arrayLike) // ['a',''b,'c'] +const arr5 = Array.from(arrayLike) // ['a',''b,'c'] console.log(arr2) // 函数统一处理每一项 -let arr3 = Array.from(arrayLike, item => { +const arr6 = Array.from(arrayLike, (item) => { return item + 100 }) // 101,102,103 ``` diff --git "a/docs/server-end/framework/egg/tutorial/\346\234\215\345\212\241.md" "b/docs/server-end/framework/egg/tutorial/\346\234\215\345\212\241.md" index efdf8c5c6..b3a699b81 100644 --- "a/docs/server-end/framework/egg/tutorial/\346\234\215\345\212\241.md" +++ "b/docs/server-end/framework/egg/tutorial/\346\234\215\345\212\241.md" @@ -57,7 +57,7 @@ ctx 可以拿到框架给我们封装的各种便捷属性和方法。比如: - Service 文件必须放在 app/service 目录,可以支持多级目录,访问的时候可以通过目录名级联访问。 -```textmate +```text ## 注意大小写匹配 app/service/biz/user.js => ctx.service.biz.user app/service/sync_user.js => ctx.service.syncUser From cfc1f745fe5694c711ed0b0f87596241ced13c1c Mon Sep 17 00:00:00 2001 From: chufan Date: Tue, 29 Oct 2024 18:05:38 +0800 Subject: [PATCH 2/4] chore(deps): update `@142vip/vuepress` --- package.json | 2 +- pnpm-lock.yaml | 239 +++---------------------------------------------- 2 files changed, 11 insertions(+), 230 deletions(-) diff --git a/package.json b/package.json index cb8614cb4..66e853cd3 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "@142vip/eslint-config": "^0.0.1-alpha.2", "@142vip/fairy-cli": "^0.0.3-alpha.13", "@142vip/utils": "^0.0.1-alpha.7", - "@142vip/vuepress": "^0.0.1-alpha.7", + "@142vip/vuepress": "^0.0.1-alpha.8", "@vuepress/bundler-vite": "2.0.0-rc.17", "only-allow": "^1.2.1", "simple-git-hooks": "^2.11.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 760e2475d..521c69383 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,8 +18,8 @@ importers: specifier: ^0.0.1-alpha.7 version: 0.0.1-alpha.9 '@142vip/vuepress': - specifier: ^0.0.1-alpha.7 - version: 0.0.1-alpha.7(7z75fr3dwm2byufcs6xg6ayrea) + specifier: ^0.0.1-alpha.8 + version: 0.0.1-alpha.8(uoiv3wvndwqnitgcgisrxundji) '@vuepress/bundler-vite': specifier: 2.0.0-rc.17 version: 2.0.0-rc.17(@types/node@22.8.1)(jiti@1.21.6)(sass-embedded@1.80.4)(typescript@5.6.3)(yaml@2.6.0) @@ -134,8 +134,8 @@ packages: resolution: {integrity: sha512-6ebybCg4qjyyPBtOWGqv8270+eaDEVf/UCsp2BmK0iimtZUGZmg9MlB7DfKGNP4Ot9xEUu2+cd01bNbdwlexSg==} engines: {node: '>=16.0.0'} - '@142vip/vuepress@0.0.1-alpha.7': - resolution: {integrity: sha512-AEnk97CawWbKXdXTerhK0g9aNO8vWv2jeJccxpsjRp7P3jAdqjq/k3M+vKc1zktcuZ3HWq2Kl1SsAnC9izwukA==} + '@142vip/vuepress@0.0.1-alpha.8': + resolution: {integrity: sha512-+pRRSKtgMiWSg+5oji2BW6z64FhiANyDQd1Omz38zewT3aR3uXyxXiBXnLu0uwfKBfVCQMWozmG2rxi33Hz8hg==} peerDependencies: '@vue/repl': ^4.3.1 '@vuepress/bundler-vite': 2.0.0-rc.17 @@ -601,15 +601,6 @@ packages: markdown-it: optional: true - '@mdit/plugin-figure@0.12.0': - resolution: {integrity: sha512-3nfcGI+uM0f6AqHZrEr8kSMBI6T2+fKKQXtCbvWQqQ+P3iGgf34Ay2eAtuMDcDGqyfNuR6e8aLoOeY2QWuEynA==} - engines: {node: '>= 18'} - peerDependencies: - markdown-it: ^14.1.0 - peerDependenciesMeta: - markdown-it: - optional: true - '@mdit/plugin-figure@0.13.1': resolution: {integrity: sha512-bxeUVMPAuXHYRqPzU+1ux7R3LkpyHTdavCa05rQUhzDI07N+BZDE7oOABXnnFbx6ESamzu3/FBtq9VKjoifLmw==} engines: {node: '>= 18'} @@ -625,15 +616,6 @@ packages: peerDependencies: markdown-it: ^14.1.0 - '@mdit/plugin-img-lazyload@0.12.0': - resolution: {integrity: sha512-6R42ieXzwkB5BKKZi+ZefqeP/fBG5qo7Sqtl72ewSVqEQ30bgxpk6nkrPI2orRob4tb6z0F/c+R8h6PW5MkTOw==} - engines: {node: '>= 18'} - peerDependencies: - markdown-it: ^14.1.0 - peerDependenciesMeta: - markdown-it: - optional: true - '@mdit/plugin-img-lazyload@0.13.1': resolution: {integrity: sha512-DPzR+yabbgqHWHb8oetOj56TtZzOcn5YZjSTssoh7lY5hp/Yy7jWvlLDrSw/LiXkYEhyocUee78enhTodBEpHQ==} engines: {node: '>= 18'} @@ -643,15 +625,6 @@ packages: markdown-it: optional: true - '@mdit/plugin-img-mark@0.12.0': - resolution: {integrity: sha512-HkIUwlTg/xPsBi4PG+5dsMnsb7wdiJzELSCEUfdAJTg55nksonHfyV2pFpr87MML4nuZlZK9JHt+Bm2BBDSVSw==} - engines: {node: '>= 18'} - peerDependencies: - markdown-it: ^14.1.0 - peerDependenciesMeta: - markdown-it: - optional: true - '@mdit/plugin-img-mark@0.13.1': resolution: {integrity: sha512-HOALB1nILV5vkopSKPrclkwwc5WGbpuAWxuOLTz/teOifE8E4JsbiFivcM6URMP1lZXzRBXoniQCCOUhWRis8A==} engines: {node: '>= 18'} @@ -661,15 +634,6 @@ packages: markdown-it: optional: true - '@mdit/plugin-img-size@0.12.0': - resolution: {integrity: sha512-fCcF5gc+ba6gQ5ebrKuI8bK/gFbj8mbeN45FHmBsFDFsfTHa0Xij2v8iok0nP8YEIVj71y8XYojsqCWs6avong==} - engines: {node: '>= 18'} - peerDependencies: - markdown-it: ^14.1.0 - peerDependenciesMeta: - markdown-it: - optional: true - '@mdit/plugin-img-size@0.13.1': resolution: {integrity: sha512-cgihl72BNzij7GXjrqcKhl2eOqAlqWHiImOgblJPghDFNFKnnynty/Bf9nwbj8hTnhVWznFeuwawzXBfKYNbkg==} engines: {node: '>= 18'} @@ -1182,11 +1146,6 @@ packages: '@vuepress/core@2.0.0-rc.17': resolution: {integrity: sha512-Ux5zAqnSAAnaE4qFgIGkGRMWObyZaAeRk6Pj30tVRCC7zkYIRWXii7sUK6aehPyugQz02TKMvW5FlrJeA40ogw==} - '@vuepress/helper@2.0.0-rc.47': - resolution: {integrity: sha512-XlfrkRjxv7Id3sc8Wjh7pHs2eFhOE/HAA+u9AMLZHcfxZUBkIftBfrSqg9ZBGybVkm4aGT+K/sC2IZxFhqukiA==} - peerDependencies: - vuepress: 2.0.0-rc.15 - '@vuepress/helper@2.0.0-rc.52': resolution: {integrity: sha512-zePTo0eJkyK7NirwidII1+r8PkuJbsXO0CrcXw/K7Yv8ab8RkQKaUmqLSM21xHZddKuzWEncugGtRIt5yITumw==} peerDependencies: @@ -1197,16 +1156,6 @@ packages: peerDependencies: vuepress: 2.0.0-rc.18 - '@vuepress/helper@2.0.0-rc.57': - resolution: {integrity: sha512-6tJpiVCMdJ5bu5tvH51o+SIDyQG20kqYBvOPeRRsBVGjp8n0rH6KDGY0xDEkd/HF8mJ9UPqNYvqhsQyI3iKKWQ==} - peerDependencies: - vuepress: 2.0.0-rc.18 - - '@vuepress/helper@2.0.0-rc.7': - resolution: {integrity: sha512-O4kaFjNqICs4IKxwmyMPGcaDENod7vTqHgMBcR77fKhnGI8YDNOh+x1QA8+ajChqoUQhc96ULwqrpQI/IxBphA==} - peerDependencies: - vuepress: 2.0.0-rc.2 - '@vuepress/highlighter-helper@2.0.0-rc.56': resolution: {integrity: sha512-ol7bOQdg5/CxGYMCDV6ucQKT2AeJTLKc6I4OwzzMjkiBEH/u3PNyq5rDXFr6pgSmlboZ5Clx9H7aajXfYilY+w==} peerDependencies: @@ -1279,11 +1228,6 @@ packages: peerDependencies: vuepress: 2.0.0-rc.18 - '@vuepress/plugin-markdown-image@2.0.0-rc.30': - resolution: {integrity: sha512-qNfMZxbsba9a/d+nseWgKqSkiRln/soWyx5mlWtc4hcEi5hHMKvT5XhYOmFvosKuFbZW9c/K0GEm+L4x9N9a7Q==} - peerDependencies: - vuepress: 2.0.0-rc.11 - '@vuepress/plugin-markdown-image@2.0.0-rc.56': resolution: {integrity: sha512-oIqVz1rvUfteIQhESZNuTgeLU9neLVrdC041e+yRakJShAGKXVPJoZE09wjQoHZM0RE2Qkd+EkAYQGB7fKFgbw==} peerDependencies: @@ -1301,11 +1245,6 @@ packages: mathjax-full: optional: true - '@vuepress/plugin-markdown-tab@2.0.0-rc.47': - resolution: {integrity: sha512-oB3/slwgCSOxPejsi8nuzVCFRpaVFqQXUwzyH5DJYofTiwl51ELT2Jhbiz3fqBljTCQk0Ts2e+H10jUgo8Yg+w==} - peerDependencies: - vuepress: 2.0.0-rc.15 - '@vuepress/plugin-markdown-tab@2.0.0-rc.56': resolution: {integrity: sha512-qqL+mlGuccnyJg7rdOBXJg5UEppMxObQZfhnuoiuu4BE8C0kV7G/myMOWsHLH0My8zpXdl5beKJqOdrjZapJqg==} peerDependencies: @@ -1337,12 +1276,6 @@ packages: peerDependencies: vuepress: 2.0.0-rc.18 - '@vuepress/plugin-redirect@2.0.0-rc.8': - resolution: {integrity: sha512-DF7SPBCsSwCrxE+PU+1gQbOSw49OaBZSB18MqfnKBgQ7CiUhufKQ6TNwkSC5aDsoWDa8cdhcEEvul2AxB2eruw==} - hasBin: true - peerDependencies: - vuepress: 2.0.0-rc.2 - '@vuepress/plugin-rtl@2.0.0-rc.56': resolution: {integrity: sha512-qlN5FcIl1pdCjadqiYCy96zObZ18m6FyzEp22MPgZmvKYgHR5N2BPzV98wQYSICx0Fz1lYftQFgqNnmrCqB5OQ==} peerDependencies: @@ -1409,21 +1342,12 @@ packages: '@vuepress/utils@2.0.0-rc.17': resolution: {integrity: sha512-5QFG8arU01QxJm+pzaNpNxfvSy3ttSjouwcefyr/6dO/cKbnjgmmaDOoy3UKnHYQtEDycybNOg4ebn2AHslEKw==} - '@vueuse/core@10.11.1': - resolution: {integrity: sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww==} - '@vueuse/core@11.1.0': resolution: {integrity: sha512-P6dk79QYA6sKQnghrUz/1tHi0n9mrb/iO1WTMk/ElLmTyNqgDeSZ3wcDf6fRBGzRJbeG1dxzEOvLENMjr+E3fg==} - '@vueuse/metadata@10.11.1': - resolution: {integrity: sha512-IGa5FXd003Ug1qAZmyE8wF3sJ81xGLSqTqtQ6jaVfkeZ4i5kS2mwQF61yhVqojRnenVew5PldLyRgvdl4YYuSw==} - '@vueuse/metadata@11.1.0': resolution: {integrity: sha512-l9Q502TBTaPYGanl1G+hPgd3QX5s4CGnpXriVBR5fEZ/goI6fvDaVmIl3Td8oKFurOxTmbXvBPSsgrd6eu6HYg==} - '@vueuse/shared@10.11.1': - resolution: {integrity: sha512-LHpC8711VFZlDaYUXEBbFBCQ7GS3dVU9mjOhhMhXP6txTV4EhYQg/KGnQuvt/sPAtoUKq7VVUnL6mVtFoL42sA==} - '@vueuse/shared@11.1.0': resolution: {integrity: sha512-YUtIpY122q7osj+zsNMFAfMTubGz0sn5QzE5gPzAIiCmtt2ha3uQUY1+JPyL4gRCTsLPX82Y9brNbo/aqlA91w==} @@ -1647,10 +1571,6 @@ packages: resolution: {integrity: sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==} engines: {node: '>=18.17'} - cheerio@1.0.0-rc.12: - resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} - engines: {node: '>= 6'} - chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} @@ -2642,9 +2562,6 @@ packages: html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - htmlparser2@8.0.2: - resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} - htmlparser2@9.1.0: resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==} @@ -4750,19 +4667,19 @@ snapshots: inquirer: 7.3.3 qs: 6.13.0 - '@142vip/vuepress@0.0.1-alpha.7(7z75fr3dwm2byufcs6xg6ayrea)': + '@142vip/vuepress@0.0.1-alpha.8(uoiv3wvndwqnitgcgisrxundji)': dependencies: '@vue/repl': 4.4.2 '@vuepress/bundler-vite': 2.0.0-rc.17(@types/node@22.8.1)(jiti@1.21.6)(sass-embedded@1.80.4)(typescript@5.6.3)(yaml@2.6.0) - '@vuepress/plugin-markdown-image': 2.0.0-rc.30(markdown-it@14.1.0)(typescript@5.6.3)(vuepress@2.0.0-rc.17(@vuepress/bundler-vite@2.0.0-rc.17(@types/node@22.8.1)(jiti@1.21.6)(sass-embedded@1.80.4)(typescript@5.6.3)(yaml@2.6.0))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3))) - '@vuepress/plugin-markdown-tab': 2.0.0-rc.47(markdown-it@14.1.0)(typescript@5.6.3)(vuepress@2.0.0-rc.17(@vuepress/bundler-vite@2.0.0-rc.17(@types/node@22.8.1)(jiti@1.21.6)(sass-embedded@1.80.4)(typescript@5.6.3)(yaml@2.6.0))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3))) - '@vuepress/plugin-redirect': 2.0.0-rc.8(typescript@5.6.3)(vuepress@2.0.0-rc.17(@vuepress/bundler-vite@2.0.0-rc.17(@types/node@22.8.1)(jiti@1.21.6)(sass-embedded@1.80.4)(typescript@5.6.3)(yaml@2.6.0))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3))) + '@vuepress/plugin-markdown-image': 2.0.0-rc.56(markdown-it@14.1.0)(typescript@5.6.3)(vuepress@2.0.0-rc.17(@vuepress/bundler-vite@2.0.0-rc.17(@types/node@22.8.1)(jiti@1.21.6)(sass-embedded@1.80.4)(typescript@5.6.3)(yaml@2.6.0))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3))) + '@vuepress/plugin-markdown-tab': 2.0.0-rc.56(markdown-it@14.1.0)(typescript@5.6.3)(vuepress@2.0.0-rc.17(@vuepress/bundler-vite@2.0.0-rc.17(@types/node@22.8.1)(jiti@1.21.6)(sass-embedded@1.80.4)(typescript@5.6.3)(yaml@2.6.0))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3))) + '@vuepress/plugin-redirect': 2.0.0-rc.56(typescript@5.6.3)(vuepress@2.0.0-rc.17(@vuepress/bundler-vite@2.0.0-rc.17(@types/node@22.8.1)(jiti@1.21.6)(sass-embedded@1.80.4)(typescript@5.6.3)(yaml@2.6.0))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3))) dashjs: 4.7.4 hls.js: 1.5.17 mermaid: 10.9.3 reveal.js: 5.1.0 sass-embedded: 1.80.4 - unicorn-magic: 0.1.0 + unicorn-magic: 0.3.0 vidstack: 1.12.12 vue: 3.5.12(typescript@5.6.3) vuepress: 2.0.0-rc.17(@vuepress/bundler-vite@2.0.0-rc.17(@types/node@22.8.1)(jiti@1.21.6)(sass-embedded@1.80.4)(typescript@5.6.3)(yaml@2.6.0))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)) @@ -5205,12 +5122,6 @@ snapshots: optionalDependencies: markdown-it: 14.1.0 - '@mdit/plugin-figure@0.12.0(markdown-it@14.1.0)': - dependencies: - '@types/markdown-it': 14.1.2 - optionalDependencies: - markdown-it: 14.1.0 - '@mdit/plugin-figure@0.13.1(markdown-it@14.1.0)': dependencies: '@types/markdown-it': 14.1.2 @@ -5222,36 +5133,18 @@ snapshots: '@types/markdown-it': 14.1.2 markdown-it: 14.1.0 - '@mdit/plugin-img-lazyload@0.12.0(markdown-it@14.1.0)': - dependencies: - '@types/markdown-it': 14.1.2 - optionalDependencies: - markdown-it: 14.1.0 - '@mdit/plugin-img-lazyload@0.13.1(markdown-it@14.1.0)': dependencies: '@types/markdown-it': 14.1.2 optionalDependencies: markdown-it: 14.1.0 - '@mdit/plugin-img-mark@0.12.0(markdown-it@14.1.0)': - dependencies: - '@types/markdown-it': 14.1.2 - optionalDependencies: - markdown-it: 14.1.0 - '@mdit/plugin-img-mark@0.13.1(markdown-it@14.1.0)': dependencies: '@types/markdown-it': 14.1.2 optionalDependencies: markdown-it: 14.1.0 - '@mdit/plugin-img-size@0.12.0(markdown-it@14.1.0)': - dependencies: - '@types/markdown-it': 14.1.2 - optionalDependencies: - markdown-it: 14.1.0 - '@mdit/plugin-img-size@0.13.1(markdown-it@14.1.0)': dependencies: '@types/markdown-it': 14.1.2 @@ -5537,7 +5430,7 @@ snapshots: '@types/sax@1.2.7': dependencies: - '@types/node': 17.0.45 + '@types/node': 22.8.1 '@types/trusted-types@2.0.7': {} @@ -5798,19 +5691,6 @@ snapshots: - supports-color - typescript - '@vuepress/helper@2.0.0-rc.47(typescript@5.6.3)(vuepress@2.0.0-rc.17(@vuepress/bundler-vite@2.0.0-rc.17(@types/node@22.8.1)(jiti@1.21.6)(sass-embedded@1.80.4)(typescript@5.6.3)(yaml@2.6.0))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))': - dependencies: - '@vue/shared': 3.5.12 - '@vueuse/core': 11.1.0(vue@3.5.12(typescript@5.6.3)) - cheerio: 1.0.0 - fflate: 0.8.2 - gray-matter: 4.0.3 - vue: 3.5.12(typescript@5.6.3) - vuepress: 2.0.0-rc.17(@vuepress/bundler-vite@2.0.0-rc.17(@types/node@22.8.1)(jiti@1.21.6)(sass-embedded@1.80.4)(typescript@5.6.3)(yaml@2.6.0))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)) - transitivePeerDependencies: - - '@vue/composition-api' - - typescript - '@vuepress/helper@2.0.0-rc.52(typescript@5.6.3)(vuepress@2.0.0-rc.17(@vuepress/bundler-vite@2.0.0-rc.17(@types/node@22.8.1)(jiti@1.21.6)(sass-embedded@1.80.4)(typescript@5.6.3)(yaml@2.6.0))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))': dependencies: '@vue/shared': 3.5.12 @@ -5837,30 +5717,6 @@ snapshots: - '@vue/composition-api' - typescript - '@vuepress/helper@2.0.0-rc.57(typescript@5.6.3)(vuepress@2.0.0-rc.17(@vuepress/bundler-vite@2.0.0-rc.17(@types/node@22.8.1)(jiti@1.21.6)(sass-embedded@1.80.4)(typescript@5.6.3)(yaml@2.6.0))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))': - dependencies: - '@vue/shared': 3.5.12 - '@vueuse/core': 11.1.0(vue@3.5.12(typescript@5.6.3)) - cheerio: 1.0.0 - fflate: 0.8.2 - gray-matter: 4.0.3 - vue: 3.5.12(typescript@5.6.3) - vuepress: 2.0.0-rc.17(@vuepress/bundler-vite@2.0.0-rc.17(@types/node@22.8.1)(jiti@1.21.6)(sass-embedded@1.80.4)(typescript@5.6.3)(yaml@2.6.0))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)) - transitivePeerDependencies: - - '@vue/composition-api' - - typescript - - '@vuepress/helper@2.0.0-rc.7(typescript@5.6.3)(vuepress@2.0.0-rc.17(@vuepress/bundler-vite@2.0.0-rc.17(@types/node@22.8.1)(jiti@1.21.6)(sass-embedded@1.80.4)(typescript@5.6.3)(yaml@2.6.0))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))': - dependencies: - '@vue/shared': 3.5.12 - cheerio: 1.0.0-rc.12 - fflate: 0.8.2 - gray-matter: 4.0.3 - vue: 3.5.12(typescript@5.6.3) - vuepress: 2.0.0-rc.17(@vuepress/bundler-vite@2.0.0-rc.17(@types/node@22.8.1)(jiti@1.21.6)(sass-embedded@1.80.4)(typescript@5.6.3)(yaml@2.6.0))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)) - transitivePeerDependencies: - - typescript - '@vuepress/highlighter-helper@2.0.0-rc.56(@vueuse/core@11.1.0(vue@3.5.12(typescript@5.6.3)))(vuepress@2.0.0-rc.17(@vuepress/bundler-vite@2.0.0-rc.17(@types/node@22.8.1)(jiti@1.21.6)(sass-embedded@1.80.4)(typescript@5.6.3)(yaml@2.6.0))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))': dependencies: vuepress: 2.0.0-rc.17(@vuepress/bundler-vite@2.0.0-rc.17(@types/node@22.8.1)(jiti@1.21.6)(sass-embedded@1.80.4)(typescript@5.6.3)(yaml@2.6.0))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)) @@ -5983,20 +5839,6 @@ snapshots: - typescript - vue - '@vuepress/plugin-markdown-image@2.0.0-rc.30(markdown-it@14.1.0)(typescript@5.6.3)(vuepress@2.0.0-rc.17(@vuepress/bundler-vite@2.0.0-rc.17(@types/node@22.8.1)(jiti@1.21.6)(sass-embedded@1.80.4)(typescript@5.6.3)(yaml@2.6.0))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))': - dependencies: - '@mdit/plugin-figure': 0.12.0(markdown-it@14.1.0) - '@mdit/plugin-img-lazyload': 0.12.0(markdown-it@14.1.0) - '@mdit/plugin-img-mark': 0.12.0(markdown-it@14.1.0) - '@mdit/plugin-img-size': 0.12.0(markdown-it@14.1.0) - '@types/markdown-it': 14.1.2 - '@vuepress/helper': 2.0.0-rc.57(typescript@5.6.3)(vuepress@2.0.0-rc.17(@vuepress/bundler-vite@2.0.0-rc.17(@types/node@22.8.1)(jiti@1.21.6)(sass-embedded@1.80.4)(typescript@5.6.3)(yaml@2.6.0))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3))) - vuepress: 2.0.0-rc.17(@vuepress/bundler-vite@2.0.0-rc.17(@types/node@22.8.1)(jiti@1.21.6)(sass-embedded@1.80.4)(typescript@5.6.3)(yaml@2.6.0))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)) - transitivePeerDependencies: - - '@vue/composition-api' - - markdown-it - - typescript - '@vuepress/plugin-markdown-image@2.0.0-rc.56(markdown-it@14.1.0)(typescript@5.6.3)(vuepress@2.0.0-rc.17(@vuepress/bundler-vite@2.0.0-rc.17(@types/node@22.8.1)(jiti@1.21.6)(sass-embedded@1.80.4)(typescript@5.6.3)(yaml@2.6.0))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))': dependencies: '@mdit/plugin-figure': 0.13.1(markdown-it@14.1.0) @@ -6026,19 +5868,6 @@ snapshots: - markdown-it - typescript - '@vuepress/plugin-markdown-tab@2.0.0-rc.47(markdown-it@14.1.0)(typescript@5.6.3)(vuepress@2.0.0-rc.17(@vuepress/bundler-vite@2.0.0-rc.17(@types/node@22.8.1)(jiti@1.21.6)(sass-embedded@1.80.4)(typescript@5.6.3)(yaml@2.6.0))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))': - dependencies: - '@mdit/plugin-tab': 0.13.2(markdown-it@14.1.0) - '@types/markdown-it': 14.1.2 - '@vuepress/helper': 2.0.0-rc.47(typescript@5.6.3)(vuepress@2.0.0-rc.17(@vuepress/bundler-vite@2.0.0-rc.17(@types/node@22.8.1)(jiti@1.21.6)(sass-embedded@1.80.4)(typescript@5.6.3)(yaml@2.6.0))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3))) - '@vueuse/core': 11.1.0(vue@3.5.12(typescript@5.6.3)) - vue: 3.5.12(typescript@5.6.3) - vuepress: 2.0.0-rc.17(@vuepress/bundler-vite@2.0.0-rc.17(@types/node@22.8.1)(jiti@1.21.6)(sass-embedded@1.80.4)(typescript@5.6.3)(yaml@2.6.0))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)) - transitivePeerDependencies: - - '@vue/composition-api' - - markdown-it - - typescript - '@vuepress/plugin-markdown-tab@2.0.0-rc.56(markdown-it@14.1.0)(typescript@5.6.3)(vuepress@2.0.0-rc.17(@vuepress/bundler-vite@2.0.0-rc.17(@types/node@22.8.1)(jiti@1.21.6)(sass-embedded@1.80.4)(typescript@5.6.3)(yaml@2.6.0))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))': dependencies: '@mdit/plugin-tab': 0.13.2(markdown-it@14.1.0) @@ -6102,18 +5931,6 @@ snapshots: - '@vue/composition-api' - typescript - '@vuepress/plugin-redirect@2.0.0-rc.8(typescript@5.6.3)(vuepress@2.0.0-rc.17(@vuepress/bundler-vite@2.0.0-rc.17(@types/node@22.8.1)(jiti@1.21.6)(sass-embedded@1.80.4)(typescript@5.6.3)(yaml@2.6.0))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))': - dependencies: - '@vuepress/helper': 2.0.0-rc.7(typescript@5.6.3)(vuepress@2.0.0-rc.17(@vuepress/bundler-vite@2.0.0-rc.17(@types/node@22.8.1)(jiti@1.21.6)(sass-embedded@1.80.4)(typescript@5.6.3)(yaml@2.6.0))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3))) - '@vueuse/core': 10.11.1(vue@3.5.12(typescript@5.6.3)) - cac: 6.7.14 - vue: 3.5.12(typescript@5.6.3) - vue-router: 4.4.5(vue@3.5.12(typescript@5.6.3)) - vuepress: 2.0.0-rc.17(@vuepress/bundler-vite@2.0.0-rc.17(@types/node@22.8.1)(jiti@1.21.6)(sass-embedded@1.80.4)(typescript@5.6.3)(yaml@2.6.0))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)) - transitivePeerDependencies: - - '@vue/composition-api' - - typescript - '@vuepress/plugin-rtl@2.0.0-rc.56(typescript@5.6.3)(vuepress@2.0.0-rc.17(@vuepress/bundler-vite@2.0.0-rc.17(@types/node@22.8.1)(jiti@1.21.6)(sass-embedded@1.80.4)(typescript@5.6.3)(yaml@2.6.0))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)))': dependencies: '@vuepress/helper': 2.0.0-rc.56(typescript@5.6.3)(vuepress@2.0.0-rc.17(@vuepress/bundler-vite@2.0.0-rc.17(@types/node@22.8.1)(jiti@1.21.6)(sass-embedded@1.80.4)(typescript@5.6.3)(yaml@2.6.0))(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3))) @@ -6213,16 +6030,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@vueuse/core@10.11.1(vue@3.5.12(typescript@5.6.3))': - dependencies: - '@types/web-bluetooth': 0.0.20 - '@vueuse/metadata': 10.11.1 - '@vueuse/shared': 10.11.1(vue@3.5.12(typescript@5.6.3)) - vue-demi: 0.14.10(vue@3.5.12(typescript@5.6.3)) - transitivePeerDependencies: - - '@vue/composition-api' - - vue - '@vueuse/core@11.1.0(vue@3.5.12(typescript@5.6.3))': dependencies: '@types/web-bluetooth': 0.0.20 @@ -6233,17 +6040,8 @@ snapshots: - '@vue/composition-api' - vue - '@vueuse/metadata@10.11.1': {} - '@vueuse/metadata@11.1.0': {} - '@vueuse/shared@10.11.1(vue@3.5.12(typescript@5.6.3))': - dependencies: - vue-demi: 0.14.10(vue@3.5.12(typescript@5.6.3)) - transitivePeerDependencies: - - '@vue/composition-api' - - vue - '@vueuse/shared@11.1.0(vue@3.5.12(typescript@5.6.3))': dependencies: vue-demi: 0.14.10(vue@3.5.12(typescript@5.6.3)) @@ -6501,16 +6299,6 @@ snapshots: undici: 6.20.1 whatwg-mimetype: 4.0.0 - cheerio@1.0.0-rc.12: - dependencies: - cheerio-select: 2.1.0 - dom-serializer: 2.0.0 - domhandler: 5.0.3 - domutils: 3.1.0 - htmlparser2: 8.0.2 - parse5: 7.2.0 - parse5-htmlparser2-tree-adapter: 7.1.0 - chokidar@3.6.0: dependencies: anymatch: 3.1.3 @@ -7680,13 +7468,6 @@ snapshots: html-void-elements@3.0.0: {} - htmlparser2@8.0.2: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.1.0 - entities: 4.5.0 - htmlparser2@9.1.0: dependencies: domelementtype: 2.3.0 From fc399715287f2a4b691e7ecec211d9d1f0fcd1ca Mon Sep 17 00:00:00 2001 From: chufan Date: Wed, 30 Oct 2024 18:36:11 +0800 Subject: [PATCH 3/4] chore: update --- code/algorithm/debounce.js | 2 - code/algorithm/deepClone.js | 25 ++-- code/algorithm/interview-101/binarySearch.js | 14 +-- .../interview-101/deleteDuplicates-1.js | 3 +- .../interview-101/entryNodeOfLoop.js | 6 +- code/algorithm/interview-101/fibonacci.js | 2 - .../interview-101/findFirstCommonNode.js | 3 - code/algorithm/interview-101/findKth.js | 3 - code/algorithm/interview-101/findKthToTail.js | 1 - .../interview-101/findNumbersWithSum.js | 4 +- .../interview-101/getLeastNumbers.js | 7 +- .../interview-101/getLongestPalindrome.js | 2 - code/algorithm/interview-101/hasCycle.js | 6 +- code/algorithm/interview-101/isPail.js | 6 +- code/algorithm/interview-101/merge.js | 6 +- code/algorithm/interview-101/mergeLists.js | 6 +- .../interview-101/moreThanHalfNum.js | 9 +- code/algorithm/interview-101/oddEvenList.js | 22 +--- .../algorithm/interview-101/reverseBetween.js | 38 ++++++ .../algorithm/interview-101/reverseBetween.ts | 51 -------- code/algorithm/interview-101/reverseGroup.js | 2 +- code/algorithm/interview-101/reverseList.js | 6 +- code/algorithm/interview-101/sortInList.js | 6 +- code/algorithm/interview-101/threeNum.js | 2 - code/algorithm/interview-101/twoSum.js | 4 - code/algorithm/leftRotateString.js | 4 +- code/algorithm/merge.js | 9 +- code/algorithm/mergeLink.js | 10 +- code/algorithm/quickSort.js | 6 - code/algorithm/straightInsertSort.js | 8 +- code/algorithm/sword-point/Power.js | 6 +- .../algorithm/sword-point/common/list-node.js | 7 ++ .../algorithm/sword-point/common/tree-node.js | 8 ++ .../sword-point/findNumsAppearOnce.js | 66 +++++----- code/algorithm/sword-point/isPopOrder.js | 4 +- .../sword-point/minNumberInRotateArray.js | 10 +- code/algorithm/sword-point/permutation.js | 3 + code/algorithm/sword-point/reOrderArray.js | 13 +- code/algorithm/sword-point/thenumberof0.js | 6 +- .../getNumberOfK.js" | 12 +- .../minNumberInRotateArray.js" | 3 +- .../add.js" | 7 -- .../isContinuous.js" | 9 +- .../strToInt.js" | 10 +- .../\345\210\206\346\262\273/power.js" | 2 +- .../\345\210\206\346\262\273/power1.ts" | 4 +- .../findGreatestSumOfSubArray.js" | 6 +- .../getUglyNumber.js" | 8 +- .../jumpFloor.js" | 4 - .../jumpFloorII.js" | 4 - .../multiply.js" | 9 +- .../rectCover.js" | 4 +- .../findContinuousSequence.js" | 2 +- .../findNumbersWithSum.js" | 23 ++-- .../leftRotateString.js" | 10 +- .../reverseSentence.js" | 6 +- .../\346\216\222\345\210\227/inversePairs.js" | 3 +- .../printMinNumber.js" | 6 +- .../\346\216\222\345\210\227/reOrderArray.js" | 9 +- .../lastRemaining.js" | 11 +- .../moreThanHalfNum.js" | 6 - .../numberOf1Between1AndN.js" | 9 +- .../duplicate.js" | 6 - .../find.js" | 34 ++--- .../firstNotRepeatingChar.js" | 8 +- .../printMatrix.js" | 17 +-- .../replaceSpace.js" | 4 - .../firstAppearingOnce.js" | 7 +- .../getLeastNumbers.js" | 21 +--- .../getMinInJSStack.js" | 8 +- .../insertAndGetMedian.js" | 8 +- .../isPopOrder.js" | 9 +- .../maxInWindows.js" | 2 +- .../stackToQueue.js" | 3 - .../sword-point/\346\240\221/bstKNode.js" | 3 + .../sword-point/\346\240\221/convert.js" | 6 +- .../sword-point/\346\240\221/findPath.js" | 4 +- .../\346\240\221/findPathSumThree.js" | 4 +- .../sword-point/\346\240\221/getNext.js" | 2 +- .../sword-point/\346\240\221/hasPathSum.js" | 11 +- .../sword-point/\346\240\221/hasSubTree.js" | 8 +- .../\346\240\221/isBalancedTree.js" | 10 +- .../\346\240\221/isSymmetrical.js" | 8 +- .../sword-point/\346\240\221/kTheNode.js" | 17 +-- .../\346\240\221/lowestCommonAncestor.js" | 12 +- .../lowestCommonAncestorFromNode.js" | 12 +- .../sword-point/\346\240\221/mirror.js" | 22 ++-- .../sword-point/\346\240\221/print.js" | 12 +- .../\346\240\221/printFromTopToBottom.js" | 4 +- .../\346\240\221/reConstructBinaryTree.js" | 6 +- .../\346\240\221/serializeTree.js" | 14 ++- .../sword-point/\346\240\221/treeDepth.js" | 5 +- .../\346\240\221/verifySequenceOfBST.js" | 3 +- .../cutRope.js" | 4 +- .../cutRopePro.js" | 3 +- .../maxProfit.js" | 13 +- .../\351\223\276\350\241\250/clone.js" | 5 +- .../deleteDuplication.js" | 19 ++- .../entryNodeOfLoop.js" | 6 +- .../findFirstCommonNode.js" | 17 ++- .../findKthToTail.js" | 9 +- .../\351\223\276\350\241\250/merge.js" | 14 ++- .../printListFromTailToHead.js" | 14 +-- .../\351\223\276\350\241\250/reverseList.js" | 10 +- code/algorithm/twoNums.js | 8 +- .../MVCPattern.ts" | 118 +++++++++--------- code/design-patterns/dip-demo.ts | 2 +- code/design-patterns/lsp-demo.ts | 77 +++++------- code/design-patterns/srp-demo.ts | 2 +- .../SingletonPattern.ts" | 63 +++++----- .../SimpleFactoryPattern.ts" | 58 +++++---- docs/artalk.md | 1 - docs/develop-skill/code-manager/git.md | 2 +- docs/front-end/base-begin/html.md | 14 ++- docs/front-end/base-begin/javascript.md | 26 ++-- .../front-framework/vuepress/vuepress.md | 1 - ...07\345\207\206\345\205\245\351\227\250.md" | 85 ++++++------- docs/server-end/es-version/Readme-back.md | 1 - .../framework/egg/plugin/egg-mysql.md | 1 + .../reverseBetween.md" | 2 +- docs/test.js | 1 - docs/theme.config.ts | 70 +++-------- 122 files changed, 609 insertions(+), 890 deletions(-) create mode 100644 code/algorithm/interview-101/reverseBetween.js delete mode 100644 code/algorithm/interview-101/reverseBetween.ts create mode 100644 code/algorithm/sword-point/common/list-node.js create mode 100644 code/algorithm/sword-point/common/tree-node.js rename "code/algorithm/sword-point/\345\210\206\346\262\273/test.ts" => "code/algorithm/sword-point/\345\210\206\346\262\273/power1.ts" (87%) diff --git a/code/algorithm/debounce.js b/code/algorithm/debounce.js index 80043b685..d384eee76 100644 --- a/code/algorithm/debounce.js +++ b/code/algorithm/debounce.js @@ -1,7 +1,5 @@ /** * 防抖 - * @param func - * @param time */ function debounce(func, time) { let timeout diff --git a/code/algorithm/deepClone.js b/code/algorithm/deepClone.js index 742715dd9..dca385f0e 100644 --- a/code/algorithm/deepClone.js +++ b/code/algorithm/deepClone.js @@ -1,15 +1,21 @@ +/** + * 判断数据类型 + */ +function checkType(target) { + // typeof -instanceof -toString.call() -Array.isArray() + return Object.prototype.toString.call(target).slice(8, -1) +} /** * 基于Json序列化的深拷贝【不能处理函数】 - * @param target */ -function DeepCloneByJSON(target) { +export function DeepCloneByJSON(target) { return JSON.parse(JSON.stringify(target)) } /** * 基于递归思想的深拷贝 */ -function DeepClone(target) { +export function DeepClone(target) { let result const targetType = checkType(target) if (targetType === 'object') { @@ -29,16 +35,3 @@ function DeepClone(target) { } return result } - -/** - * 判断数据类型 - * @param target - */ -function checkType(target) { - // typeof -instanceof -toString.call() -Array.isArray() - return Object.prototype.toString.call(target).slice(8, -1) -} - -// 深拷贝 -console.log(DeepCloneByJSON) -console.log(DeepClone) diff --git a/code/algorithm/interview-101/binarySearch.js b/code/algorithm/interview-101/binarySearch.js index b54e62033..dd6d3a040 100644 --- a/code/algorithm/interview-101/binarySearch.js +++ b/code/algorithm/interview-101/binarySearch.js @@ -2,8 +2,6 @@ /** * - * @param nums - * @param target */ const search = function (nums, target) { // 投机 @@ -15,8 +13,6 @@ const search = function (nums, target) { /** * 二分查找 - * @param nums - * @param target */ function binarySearch(nums, target) { let left = 0 @@ -42,8 +38,6 @@ function binarySearch(nums, target) { /** * 左侧部分【第一个相同元素】 - * @param nums - * @param target */ function leftBound(nums, target) { let left = 0 @@ -72,8 +66,6 @@ function leftBound(nums, target) { /** * 右侧部分【最后一个相同元素】,[left,right) 情况 - * @param nums - * @param target */ function rightBound(nums, target) { let left = 0 @@ -103,6 +95,6 @@ function rightBound(nums, target) { const nums = [5, 7, 7, 8, 8, 8, 10] const target = 8 -console.log(search(nums, target)) -console.log(leftBound(nums, target)) -console.log(rightBound(nums, target)) +search(nums, target) +leftBound(nums, target) +rightBound(nums, target) diff --git a/code/algorithm/interview-101/deleteDuplicates-1.js b/code/algorithm/interview-101/deleteDuplicates-1.js index 76a76f4b6..fc3719a2f 100644 --- a/code/algorithm/interview-101/deleteDuplicates-1.js +++ b/code/algorithm/interview-101/deleteDuplicates-1.js @@ -7,11 +7,10 @@ /** * * @param head ListNode类 - * @return ListNode类 */ function deleteDuplicatesOne(head) { console.log(head) } // 测试用例 -console.log(deleteDuplicatesOne(1)) +deleteDuplicatesOne(1) diff --git a/code/algorithm/interview-101/entryNodeOfLoop.js b/code/algorithm/interview-101/entryNodeOfLoop.js index 3df59a8c1..c73d45be4 100644 --- a/code/algorithm/interview-101/entryNodeOfLoop.js +++ b/code/algorithm/interview-101/entryNodeOfLoop.js @@ -8,10 +8,6 @@ * @param pHead * @constructor */ -function entryNodeOfLoop(pHead) { +export function entryNodeOfLoop(pHead) { console.log(pHead) } - -module.exports = { - entryNodeOfLoop, -} diff --git a/code/algorithm/interview-101/fibonacci.js b/code/algorithm/interview-101/fibonacci.js index 737aa37c2..de5bcef12 100644 --- a/code/algorithm/interview-101/fibonacci.js +++ b/code/algorithm/interview-101/fibonacci.js @@ -1,8 +1,6 @@ /** * 斐波那契数列,递归调用 * 难度:入门 - * @param n - * @returns {*} */ function fibonacciOne(n) { return n < 2 ? n : fibonacciOne(n - 1) + fibonacciOne(n - 2) diff --git a/code/algorithm/interview-101/findFirstCommonNode.js b/code/algorithm/interview-101/findFirstCommonNode.js index 4456a479f..0c021a93b 100644 --- a/code/algorithm/interview-101/findFirstCommonNode.js +++ b/code/algorithm/interview-101/findFirstCommonNode.js @@ -5,9 +5,6 @@ /** * 【简单】 两个链表的第一个公共结点 - * @param pHead1 - * @param pHead2 - * @constructor */ function findFirstCommonNode(pHead1, pHead2) { console.log(pHead1, pHead2) diff --git a/code/algorithm/interview-101/findKth.js b/code/algorithm/interview-101/findKth.js index 001b954f3..1b95ea90d 100644 --- a/code/algorithm/interview-101/findKth.js +++ b/code/algorithm/interview-101/findKth.js @@ -31,9 +31,6 @@ function quickSort(arr, low, high) { /** * 获取节点 - * @param arr - * @param low - * @param high */ function getPivot(arr, low, high) { const pivot = arr[low] diff --git a/code/algorithm/interview-101/findKthToTail.js b/code/algorithm/interview-101/findKthToTail.js index 581cdb955..5db877fd6 100644 --- a/code/algorithm/interview-101/findKthToTail.js +++ b/code/algorithm/interview-101/findKthToTail.js @@ -1,7 +1,6 @@ /** * 链表结点 */ -// eslint-disable-next-line no-unused-vars,unused-imports/no-unused-vars function ListNode(x) { this.val = x this.next = null diff --git a/code/algorithm/interview-101/findNumbersWithSum.js b/code/algorithm/interview-101/findNumbersWithSum.js index 7d9493e4c..0d5a47566 100644 --- a/code/algorithm/interview-101/findNumbersWithSum.js +++ b/code/algorithm/interview-101/findNumbersWithSum.js @@ -1,7 +1,5 @@ /** * 注意array是递增的 - * @param array - * @param sum */ function FindNumbersWithSum(array, sum) { let left = 0 @@ -41,4 +39,4 @@ function FindNumbersWithSum(array, sum) { return sumResult } -console.log(FindNumbersWithSum([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], 21)) +FindNumbersWithSum([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], 21) diff --git a/code/algorithm/interview-101/getLeastNumbers.js b/code/algorithm/interview-101/getLeastNumbers.js index dbff01640..36563c799 100644 --- a/code/algorithm/interview-101/getLeastNumbers.js +++ b/code/algorithm/interview-101/getLeastNumbers.js @@ -4,10 +4,9 @@ * - 数组元素是4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。 * - 如果K>数组的长度,那么返回一个空的数组 */ + /** * 基于冒泡排序 - * @param input - * @param k */ function GetLeastNumbersSolution(input, k) { const len = input.length @@ -32,8 +31,6 @@ function GetLeastNumbersSolution(input, k) { /** * 基于简单选择排序 - * @param input - * @param k */ function GetLeastNumbersSolution02(input, k) { const len = input.length @@ -58,8 +55,6 @@ function GetLeastNumbersSolution02(input, k) { /** * 基于sort函数 - * @param input - * @param k */ function GetLeastNumbersSolution03(input, k) { // if (k > input.length) return [] diff --git a/code/algorithm/interview-101/getLongestPalindrome.js b/code/algorithm/interview-101/getLongestPalindrome.js index 80b4b95a7..fe76b7e47 100644 --- a/code/algorithm/interview-101/getLongestPalindrome.js +++ b/code/algorithm/interview-101/getLongestPalindrome.js @@ -1,7 +1,5 @@ /** * 求给定字符的最大回文字符串 - * @param str - * @param len */ function getLongestPalindrome(str, len) { let max = 0 diff --git a/code/algorithm/interview-101/hasCycle.js b/code/algorithm/interview-101/hasCycle.js index a10b2d4fa..cbf8df8dc 100644 --- a/code/algorithm/interview-101/hasCycle.js +++ b/code/algorithm/interview-101/hasCycle.js @@ -3,10 +3,6 @@ * @param head ListNode类 * @return bool布尔型 */ -function hasCycle(head) { +export function hasCycle(head) { console.log(head) } - -module.exports = { - hasCycle, -} diff --git a/code/algorithm/interview-101/isPail.js b/code/algorithm/interview-101/isPail.js index 9ab49e268..b76a694cd 100644 --- a/code/algorithm/interview-101/isPail.js +++ b/code/algorithm/interview-101/isPail.js @@ -9,10 +9,6 @@ * @param head ListNode类 the head * @return bool布尔型 */ -function isPail(head) { +export function isPail(head) { console.log(head) } - -module.exports = { - isPail, -} diff --git a/code/algorithm/interview-101/merge.js b/code/algorithm/interview-101/merge.js index 9a2fce9d9..d55288eea 100644 --- a/code/algorithm/interview-101/merge.js +++ b/code/algorithm/interview-101/merge.js @@ -3,10 +3,6 @@ * @param pHead2 ListNode类 * @return ListNode类 */ -function merge(pHead1, pHead2) { +export function merge(pHead1, pHead2) { console.log(pHead1, pHead2) } - -module.exports = { - merge, -} diff --git a/code/algorithm/interview-101/mergeLists.js b/code/algorithm/interview-101/mergeLists.js index cf9a56355..c84b29151 100644 --- a/code/algorithm/interview-101/mergeLists.js +++ b/code/algorithm/interview-101/mergeLists.js @@ -3,10 +3,6 @@ * @param lists ListNode类一维数组 * @return ListNode类 */ -function mergeKLists(lists) { +export function mergeKLists(lists) { console.log(lists) } - -module.exports = { - mergeKLists, -} diff --git a/code/algorithm/interview-101/moreThanHalfNum.js b/code/algorithm/interview-101/moreThanHalfNum.js index 08616cea8..245cdf5c4 100644 --- a/code/algorithm/interview-101/moreThanHalfNum.js +++ b/code/algorithm/interview-101/moreThanHalfNum.js @@ -1,9 +1,3 @@ -/** - * - * @param numbers - * @returns {number} - * @constructor - */ function MoreThanHalfNumSolution(numbers) { const map = new Map() numbers.forEach((item) => { @@ -14,8 +8,11 @@ function MoreThanHalfNumSolution(numbers) { map.set(item, 1) } }) + // 去重 const arr = [...new Set(numbers)] + let result = 0 + arr.forEach((item) => { if (2 * map.get(item) > numbers.length) { result = item diff --git a/code/algorithm/interview-101/oddEvenList.js b/code/algorithm/interview-101/oddEvenList.js index 6c7ef69c7..fc56acbb0 100644 --- a/code/algorithm/interview-101/oddEvenList.js +++ b/code/algorithm/interview-101/oddEvenList.js @@ -1,23 +1,11 @@ /** * 结点 - * @param x - * @constructor */ -// eslint-disable-next-line no-unused-vars,unused-imports/no-unused-vars -function ListNode(x) { - this.val = x - this.next = null -} +// function ListNode(x) { +// this.val = x +// this.next = null +// } -/** - * - * @param head ListNode类 - * @return ListNode类 - */ -function oddEvenList(head) { +export function oddEvenList(head) { console.log(head) } - -module.exports = { - oddEvenList, -} diff --git a/code/algorithm/interview-101/reverseBetween.js b/code/algorithm/interview-101/reverseBetween.js new file mode 100644 index 000000000..5e4f9ca91 --- /dev/null +++ b/code/algorithm/interview-101/reverseBetween.js @@ -0,0 +1,38 @@ +export class ListNode { + constructor(val, next) { + this.val = (val == null ? 0 : val) + this.next = (next == null ? null : next) + } +} + +export function reverseBetween(head, m, n) { + let start = head + let pre + + // 找到起点 + while (--m > 0) { + pre = start + start = start.next + } + + // 找到终点 + let end = head + while (--n > 0) { + end = end.next + } + + // 翻转中间部分 + let last = end.next + end.next = null + while (start != null) { + const next = start.next + start.next = last + last = start + start = next + } + // 将起点前的节点与终点相连 + if (pre == null) + return end + pre.next = end + return head +} diff --git a/code/algorithm/interview-101/reverseBetween.ts b/code/algorithm/interview-101/reverseBetween.ts deleted file mode 100644 index de59031c4..000000000 --- a/code/algorithm/interview-101/reverseBetween.ts +++ /dev/null @@ -1,51 +0,0 @@ -class ListNode { - val: number - - next: ListNode | null - - constructor(val?: number, next?: ListNode | null) { - this.val = (val === undefined ? 0 : val) - this.next = (next === undefined ? null : next) - } -} - -/** - * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 - * - * - * @param head ListNode类 - * @param m int整型 - * @param n int整型 - * @return ListNode类 - */ -export function reverseBetween(head: ListNode, m: number, n: number): ListNode { - let start: ListNode = head - let pre: ListNode = null - - // 找到起点 - while (--m > 0) { - pre = start - start = start.next - } - - // 找到终点 - let end: ListNode = head - while (--n > 0) { - end = end.next - } - - // 翻转中间部分 - let last: ListNode = end.next - end.next = null - while (start != null) { - const next: ListNode = start.next - start.next = last - last = start - start = next - } - // 将起点前的节点与终点相连 - if (pre == null) - return end - pre.next = end - return head -} diff --git a/code/algorithm/interview-101/reverseGroup.js b/code/algorithm/interview-101/reverseGroup.js index 070becd9a..c1f041226 100644 --- a/code/algorithm/interview-101/reverseGroup.js +++ b/code/algorithm/interview-101/reverseGroup.js @@ -3,7 +3,7 @@ * @param k int整型 * @return ListNode类 */ -function reverseGroup(head, k) { +export function reverseGroup(head, k) { console.log(head, k) } diff --git a/code/algorithm/interview-101/reverseList.js b/code/algorithm/interview-101/reverseList.js index d988148c3..0d4785b7c 100644 --- a/code/algorithm/interview-101/reverseList.js +++ b/code/algorithm/interview-101/reverseList.js @@ -2,10 +2,6 @@ this.val = x; this.next = null; } */ -function reverseList(pHead) { +export function reverseList(pHead) { console.log(pHead) } - -module.exports = { - reverseList, -} diff --git a/code/algorithm/interview-101/sortInList.js b/code/algorithm/interview-101/sortInList.js index 435af1e1a..c2a5d1e33 100644 --- a/code/algorithm/interview-101/sortInList.js +++ b/code/algorithm/interview-101/sortInList.js @@ -8,10 +8,6 @@ * @param head ListNode类 the head node * @return ListNode类 */ -function sortInList(head) { +export function sortInList(head) { console.log(head) } - -module.exports = { - sortInList, -} diff --git a/code/algorithm/interview-101/threeNum.js b/code/algorithm/interview-101/threeNum.js index 3de549112..fa4962b26 100644 --- a/code/algorithm/interview-101/threeNum.js +++ b/code/algorithm/interview-101/threeNum.js @@ -1,6 +1,5 @@ /** * 暴力枚举,无法通过 - * @param num */ function threeSum(num) { // 从小排序 @@ -18,7 +17,6 @@ function threeSum(num) { } } } - return result } diff --git a/code/algorithm/interview-101/twoSum.js b/code/algorithm/interview-101/twoSum.js index 0a195e9d6..c1c7840a5 100644 --- a/code/algorithm/interview-101/twoSum.js +++ b/code/algorithm/interview-101/twoSum.js @@ -4,8 +4,6 @@ /** * 利用左右双指针 - * @param numbers - * @param target */ function twoSum(numbers, target) { const len = numbers.length @@ -21,8 +19,6 @@ function twoSum(numbers, target) { /** * 利用map对象来存储已经遍历的数据 - * @param numbers - * @param target */ function twoSumByMap(numbers, target) { // 从左到右循环,进入map diff --git a/code/algorithm/leftRotateString.js b/code/algorithm/leftRotateString.js index aa25e3733..04669b3d1 100644 --- a/code/algorithm/leftRotateString.js +++ b/code/algorithm/leftRotateString.js @@ -13,7 +13,9 @@ function LeftRotateString(str, n) { return reverse(arr, 0, arr.length - 1).join('') } -// 数组中翻转 +/** + * 数组中翻转 + */ function reverse(arr, left, right) { while (left < right) { // 元素交换 diff --git a/code/algorithm/merge.js b/code/algorithm/merge.js index 8b867daa7..a674f1c95 100644 --- a/code/algorithm/merge.js +++ b/code/algorithm/merge.js @@ -1,8 +1,4 @@ -/** - * @param A int整型一维数组 - * @param B int整型一维数组 - */ -function merge(A, m, B, n) { +export function merge(A, m, B, n) { let pre = 0 let next = 0 let result = [] @@ -27,4 +23,5 @@ function merge(A, m, B, n) { } return result } -console.log(merge([], 0, [1], 1)) + +merge([], 0, [1], 1) diff --git a/code/algorithm/mergeLink.js b/code/algorithm/mergeLink.js index 019b439f2..37c4b84d0 100644 --- a/code/algorithm/mergeLink.js +++ b/code/algorithm/mergeLink.js @@ -3,7 +3,7 @@ function ListNode(x) { this.next = null } -function Merge1(pHead1, pHead2) { +export function Merge1(pHead1, pHead2) { // 单调不减 可以理解 等于或者大于递增 let p1 = pHead1 let p2 = pHead2 @@ -38,9 +38,9 @@ function Merge1(pHead1, pHead2) { return result.next } -function Merge(pHead1, pHead2) { - const vhead = {} - let cur = vhead +export function Merge(pHead1, pHead2) { + const vHead = {} + let cur = vHead while (pHead1 && pHead2) { if (pHead1.val <= pHead2.val) { cur.next = pHead1 @@ -53,7 +53,7 @@ function Merge(pHead1, pHead2) { cur = cur.next } cur.next = pHead1 || pHead2 - return vhead.next + return vHead.next } const pre = new ListNode(1) diff --git a/code/algorithm/quickSort.js b/code/algorithm/quickSort.js index 5fabaae2f..85b57c9f6 100644 --- a/code/algorithm/quickSort.js +++ b/code/algorithm/quickSort.js @@ -1,8 +1,5 @@ /** * 非递归实现快速排序 - * @param data - * @param low - * @param high */ function quickSort(data, low, high) { console.log(data, low, high) @@ -37,9 +34,6 @@ function quickSort(data, low, high) { /** * 严版获取快排pivot - * @param data - * @param low - * @param high */ function partition(data, low, high) { const pivot = data[low] diff --git a/code/algorithm/straightInsertSort.js b/code/algorithm/straightInsertSort.js index 3aa2785f5..622b209c0 100644 --- a/code/algorithm/straightInsertSort.js +++ b/code/algorithm/straightInsertSort.js @@ -1,7 +1,6 @@ /** * ++i 和 i++ 的区别: https://zhidao.baidu.com/question/40433825.html */ - function straightInsertSort(arr, len) { len = arr.length === len ? len : arr.length // console.log(len) @@ -26,14 +25,11 @@ function straightInsertSort(arr, len) { arr[j + 1] = arr[j] } arr[j + 1] = temp - // console.log(arr) } } return arr } -const straightInsertSortResult = straightInsertSort([3, 16, 5, 7, 1, 9, 40, 18, 24], 9) -console.log(straightInsertSort([3, 16, 5, 7, 1], 5)) - -console.log(straightInsertSortResult) +straightInsertSort([3, 16, 5, 7, 1, 9, 40, 18, 24], 9) +straightInsertSort([3, 16, 5, 7, 1], 5) diff --git a/code/algorithm/sword-point/Power.js b/code/algorithm/sword-point/Power.js index afccbef4f..9698a7675 100644 --- a/code/algorithm/sword-point/Power.js +++ b/code/algorithm/sword-point/Power.js @@ -1,10 +1,8 @@ /** * Math.power(base,exponent) * 保证base和exponent不同时为0。不得使用库函数,同时不需要考虑大数问题,也不用考虑小数点后面0的位数。 - * @param {double} base - * @param {int} exponent */ -function Power(base, exponent) { +export function Power(base, exponent) { let result = 1 if (exponent > 0) { @@ -30,4 +28,4 @@ function Power(base, exponent) { } } -console.log(Power(2.10000, 3)) +Power(2.10000, 3) diff --git a/code/algorithm/sword-point/common/list-node.js b/code/algorithm/sword-point/common/list-node.js new file mode 100644 index 000000000..bbd657da2 --- /dev/null +++ b/code/algorithm/sword-point/common/list-node.js @@ -0,0 +1,7 @@ +/** + * List的结点定义 + */ +export function ListNode(x) { + this.val = x + this.next = null +} diff --git a/code/algorithm/sword-point/common/tree-node.js b/code/algorithm/sword-point/common/tree-node.js new file mode 100644 index 000000000..2e852381f --- /dev/null +++ b/code/algorithm/sword-point/common/tree-node.js @@ -0,0 +1,8 @@ +/** + * 二叉树结点 + */ +export function TreeNode(x) { + this.val = x + this.left = null + this.right = null +} diff --git a/code/algorithm/sword-point/findNumsAppearOnce.js b/code/algorithm/sword-point/findNumsAppearOnce.js index bce58cbcf..fc5c19077 100644 --- a/code/algorithm/sword-point/findNumsAppearOnce.js +++ b/code/algorithm/sword-point/findNumsAppearOnce.js @@ -1,38 +1,6 @@ /** - * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 - * @param array int整型一维数组 - * @return int整型一维数组 + * 快排 */ -function FindNumsAppearOnce(array) { - // 数组中元素要么出现一次,要么出现两次,可以先对元素进行排序 Math.sort((a,b)=>a-b) 从小到大 有点偷懒的样子 - - array = quickSort(array, 0, array.length - 1) - - // 此时的 数组已经进过排序 - - const result = [] - // 出现一次的元素,在中间 - for (let index = 1; index < array.length - 1; index++) { - if (array[index - 1] !== array[index] && array[index] !== array[index + 1]) { - result.push(array[index]) - } - } - - // 假设在开头 - if (array[0] !== array[1]) { - result.push(array[0]) - } - - // 假设在结尾 - - if (array[array.length - 1] !== array[array.length - 2]) { - result.push(array[array.length - 1]) - } - - // 过滤掉只出现一次的元素, 进行排序从小到大; - return result.sort((a, b) => a - b) -} - function quickSort(arr, left, right) { if (left < right) { const pivot = partition(arr, left, right) @@ -46,6 +14,9 @@ function quickSort(arr, left, right) { return arr } +/** + * 区间切割 + */ function partition(arr, left, right) { const pivot = arr[left] while (left < right) { @@ -61,4 +32,33 @@ function partition(arr, left, right) { return left } +export function FindNumsAppearOnce(array) { + // 数组中元素要么出现一次,要么出现两次,可以先对元素进行排序 Math.sort((a,b)=>a-b) 从小到大 有点偷懒的样子 + + array = quickSort(array, 0, array.length - 1) + + // 此时的 数组已经进过排序 + const result = [] + // 出现一次的元素,在中间 + for (let index = 1; index < array.length - 1; index++) { + if (array[index - 1] !== array[index] && array[index] !== array[index + 1]) { + result.push(array[index]) + } + } + + // 假设在开头 + if (array[0] !== array[1]) { + result.push(array[0]) + } + + // 假设在结尾 + + if (array[array.length - 1] !== array[array.length - 2]) { + result.push(array[array.length - 1]) + } + + // 过滤掉只出现一次的元素, 进行排序从小到大; + return result.sort((a, b) => a - b) +} + console.log(FindNumsAppearOnce([1, 4, 1, 6, 7])) diff --git a/code/algorithm/sword-point/isPopOrder.js b/code/algorithm/sword-point/isPopOrder.js index 0f8162f84..fb98808e0 100644 --- a/code/algorithm/sword-point/isPopOrder.js +++ b/code/algorithm/sword-point/isPopOrder.js @@ -1,9 +1,7 @@ /** * 明确一点,栈是后进先出,或者说是先进后出 - * @param pushV - * @param popV */ -function IsPopOrder(pushV, popV) { +export function IsPopOrder(pushV, popV) { console.log(pushV, popV) } diff --git a/code/algorithm/sword-point/minNumberInRotateArray.js b/code/algorithm/sword-point/minNumberInRotateArray.js index d9245d20d..270692eee 100644 --- a/code/algorithm/sword-point/minNumberInRotateArray.js +++ b/code/algorithm/sword-point/minNumberInRotateArray.js @@ -1,9 +1,7 @@ /** * 数组中最小的 - * @param rotateArray - * @returns {number} */ -function minNumberInRotateArray(rotateArray) { +export function minNumberInRotateArray(rotateArray) { const len = rotateArray.length if (rotateArray.length < 0) { return 0 @@ -18,10 +16,8 @@ function minNumberInRotateArray(rotateArray) { /** * 排序数组 - * @param arr - * @returns {boolean} */ -function isSortArr(arr) { +export function isSortArr(arr) { for (let index = 0; index < arr.length - 1; index++) { if (arr[index] > arr[index + 1]) { return true @@ -30,4 +26,4 @@ function isSortArr(arr) { return false } -console.log(minNumberInRotateArray([3, 4, 5, 1, 2])) +minNumberInRotateArray([3, 4, 5, 1, 2]) diff --git a/code/algorithm/sword-point/permutation.js b/code/algorithm/sword-point/permutation.js index c9c8b9446..7735fda60 100644 --- a/code/algorithm/sword-point/permutation.js +++ b/code/algorithm/sword-point/permutation.js @@ -1,3 +1,6 @@ +/** + * 递归实现全排列 + */ export function Permutation(str) { const result = [] const i = 0 diff --git a/code/algorithm/sword-point/reOrderArray.js b/code/algorithm/sword-point/reOrderArray.js index 74be7fabc..e70780196 100644 --- a/code/algorithm/sword-point/reOrderArray.js +++ b/code/algorithm/sword-point/reOrderArray.js @@ -1,17 +1,6 @@ -// odd 奇数 even: 偶数 - -/** - * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 - * - * - * @param array int整型一维数组 - * @return int整型一维数组 - */ /** - * + * odd 奇数 even: 偶数 * 借用临时变量 遍历 【可通过测试】 - * @param {Array} array - * @returns */ function reOrderArray(array) { // 奇数,偶数; diff --git a/code/algorithm/sword-point/thenumberof0.js b/code/algorithm/sword-point/thenumberof0.js index f97f36172..3b7ba1334 100644 --- a/code/algorithm/sword-point/thenumberof0.js +++ b/code/algorithm/sword-point/thenumberof0.js @@ -1,3 +1,6 @@ +/** + * 计算数字钟的个数 + */ function theNumberOf0(n) { let result = 1 let count = 0 @@ -12,4 +15,5 @@ function theNumberOf0(n) { return count } -console.log(theNumberOf0(10000000)) + +theNumberOf0(10000000) diff --git "a/code/algorithm/sword-point/\344\272\214\345\210\206\346\237\245\346\211\276/getNumberOfK.js" "b/code/algorithm/sword-point/\344\272\214\345\210\206\346\237\245\346\211\276/getNumberOfK.js" index 8acd423b9..f425dffec 100644 --- "a/code/algorithm/sword-point/\344\272\214\345\210\206\346\237\245\346\211\276/getNumberOfK.js" +++ "b/code/algorithm/sword-point/\344\272\214\345\210\206\346\237\245\346\211\276/getNumberOfK.js" @@ -1,10 +1,8 @@ /** * 数字在排序数组中出现的次数 * 难度:中等 - * @param data - * @param k */ -function GetNumberOfK(data, k) { +export function GetNumberOfK(data, k) { // 分两次二分查找,知道重复元素首次和最后一次出现位置,相减就能拿到重复次数了. // 左侧二分查找,重复元素第一次出现的索引位置 @@ -17,7 +15,9 @@ function GetNumberOfK(data, k) { return left === -1 && right === -1 ? 0 : right - left + 1 } -// 右侧二分查找 +/** + * 右侧二分查找 + */ function rightBinarySearch(data, target) { if (!data.length) { return -1 @@ -48,7 +48,9 @@ function rightBinarySearch(data, target) { return right } -// 左侧二分查找 +/** + * 左侧二分查找 + */ function leftBinarySearch(data, target) { if (!data.length) { return -1 diff --git "a/code/algorithm/sword-point/\344\272\214\345\210\206\346\237\245\346\211\276/minNumberInRotateArray.js" "b/code/algorithm/sword-point/\344\272\214\345\210\206\346\237\245\346\211\276/minNumberInRotateArray.js" index 46959b516..3cce09ab0 100644 --- "a/code/algorithm/sword-point/\344\272\214\345\210\206\346\237\245\346\211\276/minNumberInRotateArray.js" +++ "b/code/algorithm/sword-point/\344\272\214\345\210\206\346\237\245\346\211\276/minNumberInRotateArray.js" @@ -2,9 +2,8 @@ * 旋转数组的最小数字 * 找出前者大于后者的数,立即返回 * 难度:简单 - * @param rotateArray */ -function minNumberInRotateArray(rotateArray) { +export function minNumberInRotateArray(rotateArray) { if (rotateArray.length < 0) { return 0 } diff --git "a/code/algorithm/sword-point/\345\205\266\344\273\226\347\233\270\345\205\263/add.js" "b/code/algorithm/sword-point/\345\205\266\344\273\226\347\233\270\345\205\263/add.js" index 8ac3b3735..ac22fb6d2 100644 --- "a/code/algorithm/sword-point/\345\205\266\344\273\226\347\233\270\345\205\263/add.js" +++ "b/code/algorithm/sword-point/\345\205\266\344\273\226\347\233\270\345\205\263/add.js" @@ -1,8 +1,6 @@ /** * 【简单】不用加减乘除做加法 * - 利用自增 - * @param num1 - * @param num2 */ function addOne(num1, num2) { // 整数递增 @@ -26,8 +24,6 @@ function addOne(num1, num2) { /** * 【简单】不用加减乘除做加法 * - 利用位运算【递归】 - * @param num1 - * @param num2 */ function addTwo(num1, num2) { return num2 ? addTwo(num1 ^ num2, (num1 & num2) << 1) : num1 @@ -36,9 +32,6 @@ function addTwo(num1, num2) { /** * 【简单】不用加减乘除做加法 * - 利用位运算【循环】 - * @param num1 - * @param num2 - * @returns {number} */ function addThree(num1, num2) { let result = 0 diff --git "a/code/algorithm/sword-point/\345\205\266\344\273\226\347\233\270\345\205\263/isContinuous.js" "b/code/algorithm/sword-point/\345\205\266\344\273\226\347\233\270\345\205\263/isContinuous.js" index cb5a7d8d4..3830abbb0 100644 --- "a/code/algorithm/sword-point/\345\205\266\344\273\226\347\233\270\345\205\263/isContinuous.js" +++ "b/code/algorithm/sword-point/\345\205\266\344\273\226\347\233\270\345\205\263/isContinuous.js" @@ -1,9 +1,7 @@ /** * 【中等】扑克牌顺子 - * @param numbers - * @returns {boolean} */ -function IsContinuous(numbers) { +export function IsContinuous(numbers) { numbers = numbers.sort((a, b) => a - b) // 判断0的个数 @@ -31,8 +29,5 @@ function IsContinuous(numbers) { } } - if (count === 0) { - return true - } - return false + return count === 0 } diff --git "a/code/algorithm/sword-point/\345\205\266\344\273\226\347\233\270\345\205\263/strToInt.js" "b/code/algorithm/sword-point/\345\205\266\344\273\226\347\233\270\345\205\263/strToInt.js" index 5222d9b28..3cb6489d7 100644 --- "a/code/algorithm/sword-point/\345\205\266\344\273\226\347\233\270\345\205\263/strToInt.js" +++ "b/code/algorithm/sword-point/\345\205\266\344\273\226\347\233\270\345\205\263/strToInt.js" @@ -1,16 +1,18 @@ /** * 【较难】把字符串转换成整数 - * @param str - * @returns {number|number|number} */ -function StrToInt(str) { +export function StrToInt(str) { if (!str) return 0 - let bool = false; const firstLetter = str[0] + let bool = false + const firstLetter = str[0] + if (firstLetter === '-') bool = true + if (firstLetter === '-' || firstLetter === '+') str = str.substring(1) + const n = Number(str) if (n === 0) return 0 diff --git "a/code/algorithm/sword-point/\345\210\206\346\262\273/power.js" "b/code/algorithm/sword-point/\345\210\206\346\262\273/power.js" index 165ba1e62..7ed6aea2c 100644 --- "a/code/algorithm/sword-point/\345\210\206\346\262\273/power.js" +++ "b/code/algorithm/sword-point/\345\210\206\346\262\273/power.js" @@ -3,7 +3,7 @@ * @param base * @param exponent */ -function Power(base, exponent) { +export function Power(base, exponent) { let result = 1 if (exponent === 0) { return result diff --git "a/code/algorithm/sword-point/\345\210\206\346\262\273/test.ts" "b/code/algorithm/sword-point/\345\210\206\346\262\273/power1.ts" similarity index 87% rename from "code/algorithm/sword-point/\345\210\206\346\262\273/test.ts" rename to "code/algorithm/sword-point/\345\210\206\346\262\273/power1.ts" index 150d7d2bf..7a9a158fa 100644 --- "a/code/algorithm/sword-point/\345\210\206\346\262\273/test.ts" +++ "b/code/algorithm/sword-point/\345\210\206\346\262\273/power1.ts" @@ -1,4 +1,4 @@ -function Power(base, exponent) { +export function Power(base, exponent) { let result = 1 if (exponent === 0) { return result @@ -23,7 +23,7 @@ function Power(base, exponent) { return 1 / result } -function PowerOne(base: number, exponent: number): number { +export function PowerOne(base: number, exponent: number): number { let result = 1 if (exponent === 0) { return result diff --git "a/code/algorithm/sword-point/\345\212\250\346\200\201\350\247\204\345\210\222/findGreatestSumOfSubArray.js" "b/code/algorithm/sword-point/\345\212\250\346\200\201\350\247\204\345\210\222/findGreatestSumOfSubArray.js" index b2e4efc4b..e8e225ec0 100644 --- "a/code/algorithm/sword-point/\345\212\250\346\200\201\350\247\204\345\210\222/findGreatestSumOfSubArray.js" +++ "b/code/algorithm/sword-point/\345\212\250\346\200\201\350\247\204\345\210\222/findGreatestSumOfSubArray.js" @@ -1,9 +1,6 @@ /** * 连续子数组的最大和 时间复杂度O(n) * 难度:简单 - * @param array - * @returns {number|*} - * @constructor */ function FindGreatestSumOfSubArray01(array) { @@ -26,6 +23,9 @@ function FindGreatestSumOfSubArray01(array) { return max } +/** + * 连续子数组的最大和 + */ function FindGreatestSumOfSubArray(array) { // 首位指针 let i = 0 diff --git "a/code/algorithm/sword-point/\345\212\250\346\200\201\350\247\204\345\210\222/getUglyNumber.js" "b/code/algorithm/sword-point/\345\212\250\346\200\201\350\247\204\345\210\222/getUglyNumber.js" index 3a0315af6..934a4cdab 100644 --- "a/code/algorithm/sword-point/\345\212\250\346\200\201\350\247\204\345\210\222/getUglyNumber.js" +++ "b/code/algorithm/sword-point/\345\212\250\346\200\201\350\247\204\345\210\222/getUglyNumber.js" @@ -2,13 +2,16 @@ * 丑数 * 难度:比较难 */ -function GetUglyNumberSolution(index) { +export function GetUglyNumberSolution(index) { // 由于丑数只包含因子 2 3 5 且,下一个丑数是通过上一个丑数,去x2 x3 或 x5 取最小得到的,要保证丑数的顺序递增的 // 定义存放丑数的数组,且第一个丑数为1=2^0 * 3^0 * 5^0 const result = [1] + // 定义丑数对应的因子个数 即 丑数= 2^f2 * 3^f3 * 5^f5 - let f2 = 0; let f3 = 0; let f5 = 0 + let f2 + let f3 + let f5 = 0 // 基于丑数的上下关系,可以去动态规划来做 @@ -26,6 +29,5 @@ function GetUglyNumberSolution(index) { f5++ } } - console.log(result) return result[index - 1] } diff --git "a/code/algorithm/sword-point/\345\212\250\346\200\201\350\247\204\345\210\222/jumpFloor.js" "b/code/algorithm/sword-point/\345\212\250\346\200\201\350\247\204\345\210\222/jumpFloor.js" index 898cdf2c6..b16eecfaa 100644 --- "a/code/algorithm/sword-point/\345\212\250\346\200\201\350\247\204\345\210\222/jumpFloor.js" +++ "b/code/algorithm/sword-point/\345\212\250\346\200\201\350\247\204\345\210\222/jumpFloor.js" @@ -8,8 +8,6 @@ /** * 递归实现 - * @param number - * @returns {*} */ function jumpFloorOne(number) { // 递归,要么跳一阶,要么跳两阶 @@ -18,8 +16,6 @@ function jumpFloorOne(number) { /** * 非递归调用 - * @param number - * @returns {number|*} */ function jumpFloorTwo(number) { let a = 1 diff --git "a/code/algorithm/sword-point/\345\212\250\346\200\201\350\247\204\345\210\222/jumpFloorII.js" "b/code/algorithm/sword-point/\345\212\250\346\200\201\350\247\204\345\210\222/jumpFloorII.js" index 9ff8ed44f..062755057 100644 --- "a/code/algorithm/sword-point/\345\212\250\346\200\201\350\247\204\345\210\222/jumpFloorII.js" +++ "b/code/algorithm/sword-point/\345\212\250\346\200\201\350\247\204\345\210\222/jumpFloorII.js" @@ -1,7 +1,5 @@ /** * 利用Math函数计算幂 - * @param number - * @returns {number} */ function jumpFloorIIOne(number) { return 2 ** (number - 1) @@ -9,8 +7,6 @@ function jumpFloorIIOne(number) { /** * 利用左移运算 - * @param number - * @returns {number} */ function jumpFloorIITwo(number) { // return 1<<(number-1) diff --git "a/code/algorithm/sword-point/\345\212\250\346\200\201\350\247\204\345\210\222/multiply.js" "b/code/algorithm/sword-point/\345\212\250\346\200\201\350\247\204\345\210\222/multiply.js" index 96fa37f38..043ce7bb5 100644 --- "a/code/algorithm/sword-point/\345\212\250\346\200\201\350\247\204\345\210\222/multiply.js" +++ "b/code/algorithm/sword-point/\345\212\250\346\200\201\350\247\204\345\210\222/multiply.js" @@ -12,9 +12,12 @@ function multiply(array) { // .reduce((res, item) => res * item, 1) * array.slice(index + 1) // .reduce((res, item) => res * item, 1) // ) - result.push([...array.slice(0, index), ...array.slice(index + 1)].reduce((res, item) => { - return res * item - }, 1)) // 给res的初始值为1 + result.push( + [ + ...array.slice(0, index), + ...array.slice(index + 1), + ].reduce((res, item) => res * item, 1), + ) // 给res的初始值为1 } return result } diff --git "a/code/algorithm/sword-point/\345\212\250\346\200\201\350\247\204\345\210\222/rectCover.js" "b/code/algorithm/sword-point/\345\212\250\346\200\201\350\247\204\345\210\222/rectCover.js" index 38c182be7..9341abd60 100644 --- "a/code/algorithm/sword-point/\345\212\250\346\200\201\350\247\204\345\210\222/rectCover.js" +++ "b/code/algorithm/sword-point/\345\212\250\346\200\201\350\247\204\345\210\222/rectCover.js" @@ -1,9 +1,7 @@ /** * 【中等】矩形覆盖 - * @param number - * @returns {number|*} */ -function rectCover(number) { +export function rectCover(number) { // 应该也是个递归 斐波拉契变形 // n=1 ---> 1 // n=2 ---> 2 diff --git "a/code/algorithm/sword-point/\345\217\214\346\214\207\351\222\210/findContinuousSequence.js" "b/code/algorithm/sword-point/\345\217\214\346\214\207\351\222\210/findContinuousSequence.js" index 7cb88f411..8b5013772 100644 --- "a/code/algorithm/sword-point/\345\217\214\346\214\207\351\222\210/findContinuousSequence.js" +++ "b/code/algorithm/sword-point/\345\217\214\346\214\207\351\222\210/findContinuousSequence.js" @@ -1,6 +1,6 @@ // 注意是连续递增数列,间距为1 那么可以将序列开始、结束元素看做 a 、 b // 按照数列求和公式sum=(首项+尾项)* 项数 /2 即可 -function FindContinuousSequence(sum) { +export function FindContinuousSequence(sum) { // 按照sum值,先预估大概最多满足条件的序列 // sum=(b+a)(b-a+1)/2 let left = 1 diff --git "a/code/algorithm/sword-point/\345\217\214\346\214\207\351\222\210/findNumbersWithSum.js" "b/code/algorithm/sword-point/\345\217\214\346\214\207\351\222\210/findNumbersWithSum.js" index a8a228603..0229f1801 100644 --- "a/code/algorithm/sword-point/\345\217\214\346\214\207\351\222\210/findNumbersWithSum.js" +++ "b/code/algorithm/sword-point/\345\217\214\346\214\207\351\222\210/findNumbersWithSum.js" @@ -4,12 +4,10 @@ /** * 利用双指针 - * @param array - * @param sum - * @returns {*[]} */ function findNumbersWithSumOne(array, sum) { - let left = 0; let right = array.length - 1 + let left = 0 + let right = array.length - 1 while (left < right) { if (array[left] + array[right] === sum) { // 第一个就返回 @@ -30,9 +28,6 @@ function findNumbersWithSumOne(array, sum) { /** * 注意数组array是递增的 * 利用二分查找 - * @param array - * @param sum - * @returns {*[]} */ function findNumbersWithSumTwo(array, sum) { let left = 0 @@ -65,8 +60,6 @@ function findNumbersWithSumTwo(array, sum) { /** * 利用map来存放数据,便于查找 - * @param array - * @param sum */ function findNumbersWithSumThree(array, sum) { const resultMap = new Map() @@ -83,8 +76,6 @@ function findNumbersWithSumThree(array, sum) { /** * 暴力方案 - * @param array - * @param sum */ function findNumbersWithSumFour(array, sum) { const len = array.length @@ -99,7 +90,9 @@ function findNumbersWithSumFour(array, sum) { return [] } -console.log(findNumbersWithSumOne([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], 21)) -console.log(findNumbersWithSumTwo([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], 21)) -console.log(findNumbersWithSumThree([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], 21)) -console.log(findNumbersWithSumFour([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], 21)) +const testArr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] + +console.log(findNumbersWithSumOne(testArr, 21)) +console.log(findNumbersWithSumTwo(testArr, 21)) +console.log(findNumbersWithSumThree(testArr, 21)) +console.log(findNumbersWithSumFour(testArr, 21)) diff --git "a/code/algorithm/sword-point/\345\217\214\346\214\207\351\222\210/leftRotateString.js" "b/code/algorithm/sword-point/\345\217\214\346\214\207\351\222\210/leftRotateString.js" index 4e18218c5..decc97993 100644 --- "a/code/algorithm/sword-point/\345\217\214\346\214\207\351\222\210/leftRotateString.js" +++ "b/code/algorithm/sword-point/\345\217\214\346\214\207\351\222\210/leftRotateString.js" @@ -1,7 +1,6 @@ /** * 【中等】左旋转字符串 */ - function LeftRotateString(str, n) { // 临界条件 if (!str || str.length < n) { @@ -15,7 +14,9 @@ function LeftRotateString(str, n) { return reverseStr(`${reverseStr(firstStr)}${reverseStr(secondStr)}`) } -// 偷懒做法 +/** + * 偷懒做法 + */ function LeftRotateString01(str, n) { // 两两翻转后,在统一翻转 return `${str.slice(0, n).split('').reverse().join('')}${str.slice(n).split('').reverse().join('')}`.split('').reverse().join('') @@ -23,12 +24,11 @@ function LeftRotateString01(str, n) { /** * 旋转数组,交换 - * @param {string} str - * @returns */ function reverseStr(str) { const result = str.split('') - let left = 0; let right = result.length - 1 + let left = 0 + let right = result.length - 1 while (left <= right) { // 临时值 元素交换 [result[left], result[right]] = [result[right], result[left]] diff --git "a/code/algorithm/sword-point/\345\217\214\346\214\207\351\222\210/reverseSentence.js" "b/code/algorithm/sword-point/\345\217\214\346\214\207\351\222\210/reverseSentence.js" index b0d54fc8d..e99763855 100644 --- "a/code/algorithm/sword-point/\345\217\214\346\214\207\351\222\210/reverseSentence.js" +++ "b/code/algorithm/sword-point/\345\217\214\346\214\207\351\222\210/reverseSentence.js" @@ -2,8 +2,10 @@ * 翻转单词顺序列 */ -// 偷懒做法 -function ReverseSentence(str) { +/** + * 偷懒做法 + */ +export function ReverseSentence(str) { return str.split(' ').reverse().join(' ') } diff --git "a/code/algorithm/sword-point/\346\216\222\345\210\227/inversePairs.js" "b/code/algorithm/sword-point/\346\216\222\345\210\227/inversePairs.js" index 7327fb1fa..303998f5d 100644 --- "a/code/algorithm/sword-point/\346\216\222\345\210\227/inversePairs.js" +++ "b/code/algorithm/sword-point/\346\216\222\345\210\227/inversePairs.js" @@ -1,2 +1,3 @@ -function InversePairs(nums) { +export function InversePairs(nums) { + console.log(nums) } diff --git "a/code/algorithm/sword-point/\346\216\222\345\210\227/printMinNumber.js" "b/code/algorithm/sword-point/\346\216\222\345\210\227/printMinNumber.js" index 8fe26171b..2891e837f 100644 --- "a/code/algorithm/sword-point/\346\216\222\345\210\227/printMinNumber.js" +++ "b/code/algorithm/sword-point/\346\216\222\345\210\227/printMinNumber.js" @@ -2,8 +2,10 @@ * 【较难】把数组排成最小的数 */ -// 比较s1,s2的时候,注意比较s1+s2 0) { diff --git "a/code/algorithm/sword-point/\346\216\222\345\210\227/reOrderArray.js" "b/code/algorithm/sword-point/\346\216\222\345\210\227/reOrderArray.js" index 99e9cc957..f29cc2eac 100644 --- "a/code/algorithm/sword-point/\346\216\222\345\210\227/reOrderArray.js" +++ "b/code/algorithm/sword-point/\346\216\222\345\210\227/reOrderArray.js" @@ -2,10 +2,13 @@ * 【中等】调整数组顺序使奇数位于偶数前面 */ -// 利用空间 -function reOrderArray(array) { +/** + * 利用空间 + */ +export function reOrderArray(array) { // 奇数,偶数; - const oddArr = []; const evenArr = [] + const oddArr = [] + const evenArr = [] for (let index = 0; index < array.length; index++) { if (array[index] % 2 !== 0) { // 奇数 diff --git "a/code/algorithm/sword-point/\346\225\260\345\255\246/lastRemaining.js" "b/code/algorithm/sword-point/\346\225\260\345\255\246/lastRemaining.js" index cb0c1eaad..4229e9606 100644 --- "a/code/algorithm/sword-point/\346\225\260\345\255\246/lastRemaining.js" +++ "b/code/algorithm/sword-point/\346\225\260\345\255\246/lastRemaining.js" @@ -22,7 +22,10 @@ // f(1,m) = 0; (n=1) // f(n,m)=(f(n-1,m)+m)%n; (n>1) -function LastRemainingSolution(n, m) { +/** + * 递归实现 + */ +export function LastRemainingSolution(n, m) { // 递推公式: f(0)=-1 f(1)=0 f(i)={f(i-1)+m}%i if (n === 0) { @@ -37,8 +40,10 @@ function LastRemainingSolution(n, m) { return (LastRemainingSolution(n - 1, m) + m) % n } -// 非递归实现 -function LastRemainingSSolution01(n, m) { +/** + * 非递归实现 + */ +export function LastRemainingSSolution01(n, m) { // 当然,这里也可以添加上负数的校验情况 if (n === 0) { return -1 diff --git "a/code/algorithm/sword-point/\346\225\260\345\255\246/moreThanHalfNum.js" "b/code/algorithm/sword-point/\346\225\260\345\255\246/moreThanHalfNum.js" index e274ba4ee..1507c2053 100644 --- "a/code/algorithm/sword-point/\346\225\260\345\255\246/moreThanHalfNum.js" +++ "b/code/algorithm/sword-point/\346\225\260\345\255\246/moreThanHalfNum.js" @@ -4,8 +4,6 @@ /** * Map计数 - * @param numbers - * @returns {number} */ function moreThanHalfNumOne(numbers) { const resMap = new Map() @@ -33,8 +31,6 @@ function moreThanHalfNumOne(numbers) { /** * 借助数组排序 - * @param numbers - * @returns {*} */ function moreThanHalfNumTwo(numbers) { // 排序 升序或降序都行 @@ -59,8 +55,6 @@ function moreThanHalfNumTwo(numbers) { /** * 选举出重复最多,再判断是否超过半数 - * @param numbers - * @returns {number|*} */ function moreThanHalfNumThree(numbers) { let cond = -1 diff --git "a/code/algorithm/sword-point/\346\225\260\345\255\246/numberOf1Between1AndN.js" "b/code/algorithm/sword-point/\346\225\260\345\255\246/numberOf1Between1AndN.js" index 26bb56fb9..d148b3a37 100644 --- "a/code/algorithm/sword-point/\346\225\260\345\255\246/numberOf1Between1AndN.js" +++ "b/code/algorithm/sword-point/\346\225\260\345\255\246/numberOf1Between1AndN.js" @@ -4,8 +4,6 @@ /** * 转化为字符串,切割成数组后计数 - * @param n - * @returns {number} */ function numberOf1Between1AndNOne(n) { let count = 0 @@ -20,8 +18,6 @@ function numberOf1Between1AndNOne(n) { /** * 数学方法 - * @param n - * @returns {number} */ function numberOf1Between1AndNTwo(n) { let count = 0 @@ -61,6 +57,5 @@ function numberOf1Between1AndNTwo(n) { } return count } - -console.log(numberOf1Between1AndNOne(13)) -console.log(numberOf1Between1AndNTwo(13)) +numberOf1Between1AndNOne(13) +numberOf1Between1AndNTwo(13) diff --git "a/code/algorithm/sword-point/\346\225\260\347\273\204\345\222\214\347\237\251\351\230\265/duplicate.js" "b/code/algorithm/sword-point/\346\225\260\347\273\204\345\222\214\347\237\251\351\230\265/duplicate.js" index b51b509ba..a20df0ba1 100644 --- "a/code/algorithm/sword-point/\346\225\260\347\273\204\345\222\214\347\237\251\351\230\265/duplicate.js" +++ "b/code/algorithm/sword-point/\346\225\260\347\273\204\345\222\214\347\237\251\351\230\265/duplicate.js" @@ -1,8 +1,6 @@ /** * 方案一:将所有数据排序(升序或者降序都行),如果存在左右相等的情况就是重复了,输出一个即可; * 存在问题:时间复杂度依赖sort()函数 - * @param numbers - * @returns {number|*} */ function duplicateOne(numbers) { // 升序 @@ -21,8 +19,6 @@ function duplicateOne(numbers) { /** * 方案二:借助空数组,循环遍历目标数组按照index的值放入 如果存在则重复 - * @param numbers - * @returns {number|*} */ function duplicateTwo(numbers) { const arr = [] @@ -41,8 +37,6 @@ function duplicateTwo(numbers) { /** * 方案三: 利用Set集合值唯一的特性 - * @param numbers - * @returns {number|*} */ function duplicateThree(numbers) { const set = new Set() diff --git "a/code/algorithm/sword-point/\346\225\260\347\273\204\345\222\214\347\237\251\351\230\265/find.js" "b/code/algorithm/sword-point/\346\225\260\347\273\204\345\222\214\347\237\251\351\230\265/find.js" index 809b0e527..b66c28455 100644 --- "a/code/algorithm/sword-point/\346\225\260\347\273\204\345\222\214\347\237\251\351\230\265/find.js" +++ "b/code/algorithm/sword-point/\346\225\260\347\273\204\345\222\214\347\237\251\351\230\265/find.js" @@ -4,13 +4,10 @@ * 每一列都按照从上到下递增的顺序排序 * * 直接循环找 选取右上或者左下元素为起点 - * */ /** * 右上角元素为起点,确保每个元素都能遍历到,都能按照方向走即可 - * @param target - * @param array */ function findOne(target, array) { // 行数 @@ -22,7 +19,8 @@ function findOne(target, array) { // 列数 const col = array[0].length // 此时选择右上为起点 - let r = 0; let c = col - 1 + let r = 0 + let c = col - 1 while (r < row && c >= 0) { if (target === array[r][c]) { // 命中目标,返回 @@ -43,9 +41,6 @@ function findOne(target, array) { /** * - 比较蠢的方法,通过遍历二维数组进行比较 * - 这里可以将第二层循环改成二分查找【用到从左到右递增的特点】;降低时间复杂度 - * @param target - * @param array - * @returns {boolean} */ function findTwo(target, array) { const row = array.length @@ -57,7 +52,8 @@ function findTwo(target, array) { // 从第0行开始 for (let r = 0; r < row; r++) { - let low = 0; let high = col - 1 + let low = 0 + let high = col - 1 // 注意这个二分查找区间是 [] while (low <= high) { const mid = low + Math.floor((high - low) / 2) @@ -81,30 +77,20 @@ function findTwo(target, array) { * 利用一些api * - every()是对数组中每一项运行给定函数,如果该函数对每一项返回true,则返回true * - some()是对数组中每一项运行给定函数,如果该函数对任一项返回true,则返回true - * @param target - * @param array */ function findThree(target, array) { return array.some(arr => arr.includes(target)) } -console.log(findOne(19, [ +const targetArr = [ [1, 2, 8, 9], [2, 4, 9, 12], [4, 7, 10, 13], [6, 8, 11, 15], -])) +] -console.log(findTwo(19, [ - [1, 2, 8, 9], - [2, 4, 9, 12], - [4, 7, 10, 13], - [6, 8, 11, 15], -])) +console.log(findOne(19, targetArr)) -console.log(findThree(19, [ - [1, 2, 8, 9], - [2, 4, 9, 12], - [4, 7, 10, 13], - [6, 8, 11, 15], -])) +console.log(findTwo(19, targetArr)) + +console.log(findThree(19, targetArr)) diff --git "a/code/algorithm/sword-point/\346\225\260\347\273\204\345\222\214\347\237\251\351\230\265/firstNotRepeatingChar.js" "b/code/algorithm/sword-point/\346\225\260\347\273\204\345\222\214\347\237\251\351\230\265/firstNotRepeatingChar.js" index 12024a007..0f4b3e987 100644 --- "a/code/algorithm/sword-point/\346\225\260\347\273\204\345\222\214\347\237\251\351\230\265/firstNotRepeatingChar.js" +++ "b/code/algorithm/sword-point/\346\225\260\347\273\204\345\222\214\347\237\251\351\230\265/firstNotRepeatingChar.js" @@ -9,8 +9,6 @@ /** * 利用indexOf和lastIndexOf角标不一致 - * @param str - * @returns {number} */ function firstNotRepeatingCharOne(str) { const arr = str.split('') @@ -24,8 +22,6 @@ function firstNotRepeatingCharOne(str) { /** * 数组按字母查找 - * @param str - * @returns {number} */ function firstNotRepeatingCharTwo(str) { const len = str.length @@ -41,15 +37,13 @@ function firstNotRepeatingCharTwo(str) { /** * 使用Map结构计数 - * @param str - * @returns {number|*} */ function firstNotRepeatingCharThree(str) { const resMap = new Map() const resArr = str.split('') // 计数操作 - resArr.forEach((r, index) => { + resArr.forEach((r) => { if (resMap.has(r)) { resMap.set(r, resMap.get(r) + 1) } diff --git "a/code/algorithm/sword-point/\346\225\260\347\273\204\345\222\214\347\237\251\351\230\265/printMatrix.js" "b/code/algorithm/sword-point/\346\225\260\347\273\204\345\222\214\347\237\251\351\230\265/printMatrix.js" index 1f0c7e7e1..5d7ed14e7 100644 --- "a/code/algorithm/sword-point/\346\225\260\347\273\204\345\222\214\347\237\251\351\230\265/printMatrix.js" +++ "b/code/algorithm/sword-point/\346\225\260\347\273\204\345\222\214\347\237\251\351\230\265/printMatrix.js" @@ -69,8 +69,6 @@ function printMatrixOne(matrix) { /** * 利用一些特性和api - * @param matrix - * @returns {*[]} */ function printMatrixTwo(matrix) { const len = matrix.length @@ -102,18 +100,13 @@ function printMatrixTwo(matrix) { return seq.filter(x => x != null) } -console.log(printMatrixOne([ +const matrix = [ [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16], -], -)) +] -console.log(printMatrixTwo([ - [1, 2, 3, 4], - [5, 6, 7, 8], - [9, 10, 11, 12], - [13, 14, 15, 16], -], -)) +console.log(printMatrixOne(matrix)) + +console.log(printMatrixTwo(matrix)) diff --git "a/code/algorithm/sword-point/\346\225\260\347\273\204\345\222\214\347\237\251\351\230\265/replaceSpace.js" "b/code/algorithm/sword-point/\346\225\260\347\273\204\345\222\214\347\237\251\351\230\265/replaceSpace.js" index 19252a4cc..2d2ee0b55 100644 --- "a/code/algorithm/sword-point/\346\225\260\347\273\204\345\222\214\347\237\251\351\230\265/replaceSpace.js" +++ "b/code/algorithm/sword-point/\346\225\260\347\273\204\345\222\214\347\237\251\351\230\265/replaceSpace.js" @@ -1,7 +1,5 @@ /** * 先转化为数组,再进行拼接 - * @param s - * @returns {*} */ function replaceSpaceOne(s) { return s.split(' ').join('%20') @@ -9,8 +7,6 @@ function replaceSpaceOne(s) { /** * 利用循环拼接,然后slice剪切多余部分 - * @param s - * @returns {string} */ function replaceSpaceTwo(s) { const arr = s.split(' ') diff --git "a/code/algorithm/sword-point/\346\240\210\351\230\237\345\210\227\345\240\206/firstAppearingOnce.js" "b/code/algorithm/sword-point/\346\240\210\351\230\237\345\210\227\345\240\206/firstAppearingOnce.js" index 5e11f4a49..09c790e1a 100644 --- "a/code/algorithm/sword-point/\346\240\210\351\230\237\345\210\227\345\240\206/firstAppearingOnce.js" +++ "b/code/algorithm/sword-point/\346\240\210\351\230\237\345\210\227\345\240\206/firstAppearingOnce.js" @@ -9,16 +9,16 @@ // Init module if you need let result -function Init() { +export function Init() { result = '' } // Insert one char from stringstream -function Insert(ch) { +export function Insert(ch) { result += ch return result } // return the first appearence once char in current stringstream -function FirstAppearingOnce() { +export function FirstAppearingOnce() { for (let index = 0; index < result.length; index++) { // const str = result[index] @@ -28,7 +28,6 @@ function FirstAppearingOnce() { return str } } - // 没有返回 return '#' } diff --git "a/code/algorithm/sword-point/\346\240\210\351\230\237\345\210\227\345\240\206/getLeastNumbers.js" "b/code/algorithm/sword-point/\346\240\210\351\230\237\345\210\227\345\240\206/getLeastNumbers.js" index 374565571..cfd64855e 100644 --- "a/code/algorithm/sword-point/\346\240\210\351\230\237\345\210\227\345\240\206/getLeastNumbers.js" +++ "b/code/algorithm/sword-point/\346\240\210\351\230\237\345\210\227\345\240\206/getLeastNumbers.js" @@ -9,10 +9,6 @@ /** * 先排序,后截取(偷懒做法) - * - * @param input - * @param k - * @returns {*} */ function getLeastNumbersOne(input, k) { // 直接基于快排,最快速的拿到排序结果也行 @@ -21,9 +17,6 @@ function getLeastNumbersOne(input, k) { /** * 基于冒泡排序,跑K趟即可 - * @param input - * @param k - * @returns {*[]|*} */ function getLeastNumbersTwo(input, k) { const len = input.length @@ -50,8 +43,6 @@ function getLeastNumbersTwo(input, k) { /** * 基于选择排序 - * @param input - * @param k */ function getLeastNumbersThree(input, k) { const len = input.length @@ -71,13 +62,13 @@ function getLeastNumbersThree(input, k) { /** * 基于堆排序 - * @param input - * @param k */ -function getLeastNumbersFour(input, k) { +export function getLeastNumbersFour(input, k) { // todo 构建树 维护小根堆 } -console.log(getLeastNumbersOne([4, 5, 1, 6, 2, 7, 3, 8], 4)) -console.log(getLeastNumbersTwo([4, 5, 1, 6, 2, 7, 3, 8], 4)) -console.log(getLeastNumbersThree([4, 5, 1, 6, 2, 7, 3, 8], 4)) +const testArr = [4, 5, 1, 6, 2, 7, 3, 8] + +console.log(getLeastNumbersOne(testArr, 4)) +console.log(getLeastNumbersTwo(testArr, 4)) +console.log(getLeastNumbersThree(testArr, 4)) diff --git "a/code/algorithm/sword-point/\346\240\210\351\230\237\345\210\227\345\240\206/getMinInJSStack.js" "b/code/algorithm/sword-point/\346\240\210\351\230\237\345\210\227\345\240\206/getMinInJSStack.js" index 2df7448f7..c29a5ba5d 100644 --- "a/code/algorithm/sword-point/\346\240\210\351\230\237\345\210\227\345\240\206/getMinInJSStack.js" +++ "b/code/algorithm/sword-point/\346\240\210\351\230\237\345\210\227\345\240\206/getMinInJSStack.js" @@ -8,22 +8,22 @@ */ const result = [] -function push(node) { +export function push(node) { if (result) { return result.push(node) } } -function pop() { +export function pop() { if (result.length > 0) { return result.pop() } } -function top() { +export function top() { if (result.length > 0) { return result[result.length - 1] } } -function min() { +export function min() { // 对result数组进行排序 return Math.min(...result) } diff --git "a/code/algorithm/sword-point/\346\240\210\351\230\237\345\210\227\345\240\206/insertAndGetMedian.js" "b/code/algorithm/sword-point/\346\240\210\351\230\237\345\210\227\345\240\206/insertAndGetMedian.js" index 61e0d0493..a2fa85551 100644 --- "a/code/algorithm/sword-point/\346\240\210\351\230\237\345\210\227\345\240\206/insertAndGetMedian.js" +++ "b/code/algorithm/sword-point/\346\240\210\351\230\237\345\210\227\345\240\206/insertAndGetMedian.js" @@ -9,11 +9,15 @@ // 存储数据 let result = [] -function Insert(num) { +export function Insert(num) { result.push(num) // 当然,也可以在push之后去排序 } -function GetMedian() { + +/** + * 获取数据流的中位数 + */ +export function GetMedian() { // 先排序 result = result.sort((a, b) => a - b) const len = result.length diff --git "a/code/algorithm/sword-point/\346\240\210\351\230\237\345\210\227\345\240\206/isPopOrder.js" "b/code/algorithm/sword-point/\346\240\210\351\230\237\345\210\227\345\240\206/isPopOrder.js" index 9573d2793..7231d5708 100644 --- "a/code/algorithm/sword-point/\346\240\210\351\230\237\345\210\227\345\240\206/isPopOrder.js" +++ "b/code/algorithm/sword-point/\346\240\210\351\230\237\345\210\227\345\240\206/isPopOrder.js" @@ -1,8 +1,3 @@ -/** - * - * @param pushV int整型一维数组 - * @param popV int整型一维数组 - * @return bool布尔型 - */ -function IsPopOrder(pushV, popV) { +export function IsPopOrder(pushV, popV) { + console.log(pushV, popV) } diff --git "a/code/algorithm/sword-point/\346\240\210\351\230\237\345\210\227\345\240\206/maxInWindows.js" "b/code/algorithm/sword-point/\346\240\210\351\230\237\345\210\227\345\240\206/maxInWindows.js" index 0b7cede6e..3317123a2 100644 --- "a/code/algorithm/sword-point/\346\240\210\351\230\237\345\210\227\345\240\206/maxInWindows.js" +++ "b/code/algorithm/sword-point/\346\240\210\351\230\237\345\210\227\345\240\206/maxInWindows.js" @@ -7,7 +7,7 @@ * @LastEditTime: 2021-04-29 21:58:32 */ -function maxInWindows(num, size) { +export function maxInWindows(num, size) { const len = num.length const result = [] if (len < size || size === 0) { diff --git "a/code/algorithm/sword-point/\346\240\210\351\230\237\345\210\227\345\240\206/stackToQueue.js" "b/code/algorithm/sword-point/\346\240\210\351\230\237\345\210\227\345\240\206/stackToQueue.js" index 9893eb767..08b405f7b 100644 --- "a/code/algorithm/sword-point/\346\240\210\351\230\237\345\210\227\345\240\206/stackToQueue.js" +++ "b/code/algorithm/sword-point/\346\240\210\351\230\237\345\210\227\345\240\206/stackToQueue.js" @@ -11,8 +11,6 @@ const result = [] /** * 模拟进队列操作 - * @param node - * @returns {*[]} */ function push(node) { // 尾部进栈 @@ -22,7 +20,6 @@ function push(node) { /** * 模拟出队列操作 - * @returns {*} */ function pop() { // 队列 先进先出 头部出去 diff --git "a/code/algorithm/sword-point/\346\240\221/bstKNode.js" "b/code/algorithm/sword-point/\346\240\221/bstKNode.js" index e69de29bb..d3fa0ba65 100644 --- "a/code/algorithm/sword-point/\346\240\221/bstKNode.js" +++ "b/code/algorithm/sword-point/\346\240\221/bstKNode.js" @@ -0,0 +1,3 @@ +export function bstKNode() { + +} diff --git "a/code/algorithm/sword-point/\346\240\221/convert.js" "b/code/algorithm/sword-point/\346\240\221/convert.js" index 43a4f13cb..fc708f8de 100644 --- "a/code/algorithm/sword-point/\346\240\221/convert.js" +++ "b/code/algorithm/sword-point/\346\240\221/convert.js" @@ -1,7 +1,9 @@ -function TreeNode(x) { +export function TreeNode(x) { this.val = x this.left = null this.right = null } -function Convert(pRootOfTree) { + +export function Convert(pRootOfTree) { + console.log(pRootOfTree) } diff --git "a/code/algorithm/sword-point/\346\240\221/findPath.js" "b/code/algorithm/sword-point/\346\240\221/findPath.js" index 40effa73c..8912b1a5e 100644 --- "a/code/algorithm/sword-point/\346\240\221/findPath.js" +++ "b/code/algorithm/sword-point/\346\240\221/findPath.js" @@ -7,13 +7,13 @@ * @LastEditTime: 2021-05-12 22:01:45 */ -function TreeNode(x) { +export function TreeNode(x) { this.val = x this.left = null this.right = null } -function FindPath(root, expectNumber) { +export function findPath(root, expectNumber) { const result = [] function dfs(root, target, tempRes) { // 处理空树 diff --git "a/code/algorithm/sword-point/\346\240\221/findPathSumThree.js" "b/code/algorithm/sword-point/\346\240\221/findPathSumThree.js" index 454d0598e..b2104609b 100644 --- "a/code/algorithm/sword-point/\346\240\221/findPathSumThree.js" +++ "b/code/algorithm/sword-point/\346\240\221/findPathSumThree.js" @@ -7,13 +7,13 @@ * @LastEditTime: 2021-05-12 22:01:45 */ -function TreeNode(x) { +export function TreeNode(x) { this.val = x this.left = null this.right = null } -function FindPathSumThree(root, expectNumber) { +export function findPathSumThree(root, expectNumber) { const result = [] function dfs(root, target, tempRes) { // 处理空树 diff --git "a/code/algorithm/sword-point/\346\240\221/getNext.js" "b/code/algorithm/sword-point/\346\240\221/getNext.js" index ad00b1d27..90682f922 100644 --- "a/code/algorithm/sword-point/\346\240\221/getNext.js" +++ "b/code/algorithm/sword-point/\346\240\221/getNext.js" @@ -13,7 +13,7 @@ this.right = null; this.next = null; } */ -function GetNext(pNode) { +function getNext(pNode) { // 中序遍历 ---> 左-根(pNode)-右 // 所以这里pNode的下一个结点,要么是pNode右子树的第一个最左结点(左边的叶子结点) // 但是如果pNode的右子树为空,则pNode的下个结点,则为第一个左子树指向pNode的祖先结点 diff --git "a/code/algorithm/sword-point/\346\240\221/hasPathSum.js" "b/code/algorithm/sword-point/\346\240\221/hasPathSum.js" index f9ac76b8a..a657e7d98 100644 --- "a/code/algorithm/sword-point/\346\240\221/hasPathSum.js" +++ "b/code/algorithm/sword-point/\346\240\221/hasPathSum.js" @@ -1,14 +1,9 @@ -function TreeNode(x) { +export function TreeNode(x) { this.val = x this.left = null this.right = null } -/** - * - * @param root TreeNode类 - * @param sum int整型 - * @return bool布尔型 - */ -function hasPathSum(root, sum) { +export function hasPathSum(root, sum) { + console.log(root, sum) } diff --git "a/code/algorithm/sword-point/\346\240\221/hasSubTree.js" "b/code/algorithm/sword-point/\346\240\221/hasSubTree.js" index ed6fb031a..50fdc7038 100644 --- "a/code/algorithm/sword-point/\346\240\221/hasSubTree.js" +++ "b/code/algorithm/sword-point/\346\240\221/hasSubTree.js" @@ -12,7 +12,7 @@ this.left = null; this.right = null; } */ -function HasSubTree(pRoot1, pRoot2) { +export function HasSubTree(pRoot1, pRoot2) { // 空树的情况 if (pRoot1 === null || pRoot2 === null) { return false @@ -27,8 +27,10 @@ function HasSubTree(pRoot1, pRoot2) { return isRoot || inLeft || inRight } -// 判断root2是否为root1的子集【递归实现】 -function isSubTreeWithRoot(root1, root2) { +/** + * 判断root2是否为root1的子集【递归实现】 + */ +export function isSubTreeWithRoot(root1, root2) { // root2 自己为叶子结点,此时递归来看,就是子集 if (root2 === null) { return true diff --git "a/code/algorithm/sword-point/\346\240\221/isBalancedTree.js" "b/code/algorithm/sword-point/\346\240\221/isBalancedTree.js" index 5591233a8..16b6c7db5 100644 --- "a/code/algorithm/sword-point/\346\240\221/isBalancedTree.js" +++ "b/code/algorithm/sword-point/\346\240\221/isBalancedTree.js" @@ -1,13 +1,9 @@ -function TreeNode(x) { +export function TreeNode(x) { this.val = x this.left = null this.right = null } -/** - * - * @param pRoot TreeNode类 - * @return bool布尔型 - */ -function IsBalancedTree(pRoot) { +export function IsBalancedTree(pRoot) { + console.log(pRoot) } diff --git "a/code/algorithm/sword-point/\346\240\221/isSymmetrical.js" "b/code/algorithm/sword-point/\346\240\221/isSymmetrical.js" index 25344b976..d29814662 100644 --- "a/code/algorithm/sword-point/\346\240\221/isSymmetrical.js" +++ "b/code/algorithm/sword-point/\346\240\221/isSymmetrical.js" @@ -12,7 +12,7 @@ this.left = null; this.right = null; } */ -function isSymmetrical(pRoot) { +export function isSymmetrical(pRoot) { if (pRoot === null) { // 子树为空,判断子树为对称 return true @@ -22,8 +22,10 @@ function isSymmetrical(pRoot) { return isSameTree(pRoot.left, pRoot.right) } -// 判断左右子树是是否对称 -function isSameTree(leftTree, rightTree) { +/** + * 判断左右子树是是否对称 + */ +export function isSameTree(leftTree, rightTree) { if (leftTree === null && rightTree === null) { return true } diff --git "a/code/algorithm/sword-point/\346\240\221/kTheNode.js" "b/code/algorithm/sword-point/\346\240\221/kTheNode.js" index 77c24e9dd..8fcc7ab2e 100644 --- "a/code/algorithm/sword-point/\346\240\221/kTheNode.js" +++ "b/code/algorithm/sword-point/\346\240\221/kTheNode.js" @@ -1,9 +1,7 @@ /** * 链表结点 - * @param x - * @constructor */ -function ListNode(x) { +export function ListNode(x) { this.val = x this.left = null this.right = null @@ -31,26 +29,19 @@ const root = { }, } -function TreeNode(x) { - this.val = x - this.left = null - this.right = null -} +console.log(root) /** * 注意,是返回结点 - * @param pRoot - * @param k */ -function KTheNode(pRoot, k) { +export function KTheNode(pRoot, k) { return inOrder(pRoot)[k - 1] } /** * 中序遍历 - * @param root */ -function inOrder(root) { +export function inOrder(root) { if (root === null) { return [] } diff --git "a/code/algorithm/sword-point/\346\240\221/lowestCommonAncestor.js" "b/code/algorithm/sword-point/\346\240\221/lowestCommonAncestor.js" index d586fc56d..7604c3927 100644 --- "a/code/algorithm/sword-point/\346\240\221/lowestCommonAncestor.js" +++ "b/code/algorithm/sword-point/\346\240\221/lowestCommonAncestor.js" @@ -1,14 +1,8 @@ -function TreeNode(x) { +export function TreeNode(x) { this.val = x this.left = null this.right = null } -/** - * - * @param root TreeNode类 - * @param p int整型 - * @param q int整型 - * @return int整型 - */ -function lowestCommonAncestor(root, p, q) { +export function lowestCommonAncestor(root, p, q) { + console.log(root, p, q) } diff --git "a/code/algorithm/sword-point/\346\240\221/lowestCommonAncestorFromNode.js" "b/code/algorithm/sword-point/\346\240\221/lowestCommonAncestorFromNode.js" index a659b035c..4b5fa2e2e 100644 --- "a/code/algorithm/sword-point/\346\240\221/lowestCommonAncestorFromNode.js" +++ "b/code/algorithm/sword-point/\346\240\221/lowestCommonAncestorFromNode.js" @@ -1,15 +1,9 @@ -function TreeNode(x) { +export function TreeNode(x) { this.val = x this.left = null this.right = null } -/** - * - * @param root TreeNode类 - * @param o1 int整型 - * @param o2 int整型 - * @return int整型 - */ -function lowestCommonAncestorFromNode(root, o1, o2) { +export function lowestCommonAncestorFromNode(root, o1, o2) { + console.log(root, o1, o2) } diff --git "a/code/algorithm/sword-point/\346\240\221/mirror.js" "b/code/algorithm/sword-point/\346\240\221/mirror.js" index 521958e1f..3e13f61dc 100644 --- "a/code/algorithm/sword-point/\346\240\221/mirror.js" +++ "b/code/algorithm/sword-point/\346\240\221/mirror.js" @@ -7,21 +7,13 @@ * @LastEditTime: 2021-05-11 16:43:17 */ -/* - * function TreeNode(x) { - * this.val = x; - * this.left = null; - * this.right = null; - * } - */ -/** - * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 - * - * - * @param pRoot TreeNode类 - * @return TreeNode类 - */ -function Mirror(pRoot) { +export function TreeNode(x) { + this.val = x + this.left = null + this.right = null +} + +export function Mirror(pRoot) { // 空树 if (pRoot === null) { return pRoot diff --git "a/code/algorithm/sword-point/\346\240\221/print.js" "b/code/algorithm/sword-point/\346\240\221/print.js" index c44f80644..5cbd7b4d8 100644 --- "a/code/algorithm/sword-point/\346\240\221/print.js" +++ "b/code/algorithm/sword-point/\346\240\221/print.js" @@ -7,12 +7,12 @@ * @LastEditTime: 2021-05-12 21:40:15 */ -/* function TreeNode(x) { - this.val = x; - this.left = null; - this.right = null; -} */ -function Print(pRoot) { +export function TreeNode(x) { + this.val = x + this.left = null + this.right = null +} +export function Print(pRoot) { // 层序遍历的 进阶 // 处理空树的情况 diff --git "a/code/algorithm/sword-point/\346\240\221/printFromTopToBottom.js" "b/code/algorithm/sword-point/\346\240\221/printFromTopToBottom.js" index a8538eeaa..27970c209 100644 --- "a/code/algorithm/sword-point/\346\240\221/printFromTopToBottom.js" +++ "b/code/algorithm/sword-point/\346\240\221/printFromTopToBottom.js" @@ -1,7 +1,7 @@ -function TreeNode(x) { +export function TreeNode(x) { this.val = x this.left = null this.right = null } -function PrintFromTopToBottom(root) { +export function PrintFromTopToBottom(root) { } diff --git "a/code/algorithm/sword-point/\346\240\221/reConstructBinaryTree.js" "b/code/algorithm/sword-point/\346\240\221/reConstructBinaryTree.js" index 4bcc09e70..0a9375773 100644 --- "a/code/algorithm/sword-point/\346\240\221/reConstructBinaryTree.js" +++ "b/code/algorithm/sword-point/\346\240\221/reConstructBinaryTree.js" @@ -9,7 +9,6 @@ /** * 二叉树结点定义 - * @param x */ function TreeNode(x) { this.val = x @@ -19,11 +18,8 @@ function TreeNode(x) { /** * 重建二叉树 - * @param pre - * @param vin - * @returns {TreeNode|null} */ -function reConstructBinaryTree(pre, vin) { +export function reConstructBinaryTree(pre, vin) { if (pre.length === 0) { return null } diff --git "a/code/algorithm/sword-point/\346\240\221/serializeTree.js" "b/code/algorithm/sword-point/\346\240\221/serializeTree.js" index 010f4fc78..a54ff2043 100644 --- "a/code/algorithm/sword-point/\346\240\221/serializeTree.js" +++ "b/code/algorithm/sword-point/\346\240\221/serializeTree.js" @@ -1,9 +1,17 @@ -function TreeNode(x) { +export function TreeNode(x) { this.val = x this.left = null this.right = null } -function Serialize(pRoot) { +export function Serialize(pRoot) { + console.log(pRoot) } -function Deserialize(s) { + +/** + * + * @param s + * @constructor + */ +export function Deserialize(s) { + console.log(s) } diff --git "a/code/algorithm/sword-point/\346\240\221/treeDepth.js" "b/code/algorithm/sword-point/\346\240\221/treeDepth.js" index b0e6e5040..04816e7de 100644 --- "a/code/algorithm/sword-point/\346\240\221/treeDepth.js" +++ "b/code/algorithm/sword-point/\346\240\221/treeDepth.js" @@ -1,7 +1,8 @@ -function TreeNode(x) { +export function TreeNode(x) { this.val = x this.left = null this.right = null } -function TreeDepth(pRoot) { +export function TreeDepth(pRoot) { + console.log(pRoot) } diff --git "a/code/algorithm/sword-point/\346\240\221/verifySequenceOfBST.js" "b/code/algorithm/sword-point/\346\240\221/verifySequenceOfBST.js" index 1a71a03a1..b6ff69dd3 100644 --- "a/code/algorithm/sword-point/\346\240\221/verifySequenceOfBST.js" +++ "b/code/algorithm/sword-point/\346\240\221/verifySequenceOfBST.js" @@ -1,2 +1,3 @@ -function VerifySequenceOfBST(sequence) { +export function VerifySequenceOfBST(sequence) { + console.log(sequence) } diff --git "a/code/algorithm/sword-point/\350\264\252\345\277\203\346\200\235\346\203\263/cutRope.js" "b/code/algorithm/sword-point/\350\264\252\345\277\203\346\200\235\346\203\263/cutRope.js" index 9efb73b4b..300a6dd95 100644 --- "a/code/algorithm/sword-point/\350\264\252\345\277\203\346\200\235\346\203\263/cutRope.js" +++ "b/code/algorithm/sword-point/\350\264\252\345\277\203\346\200\235\346\203\263/cutRope.js" @@ -1,10 +1,10 @@ /** * G(n,m)=k * G(n-k)(m-1) */ -function cutRope(number) { +export function cutRope(number) { let max = 1 for (let index = 1; index <= number; index++) { - if (max < index * cutRope(number - index)) { + if (index * cutRope(number - index) > max) { max = index * cutRope(number - index) } } diff --git "a/code/algorithm/sword-point/\350\264\252\345\277\203\346\200\235\346\203\263/cutRopePro.js" "b/code/algorithm/sword-point/\350\264\252\345\277\203\346\200\235\346\203\263/cutRopePro.js" index 9fea8042b..347867c5b 100644 --- "a/code/algorithm/sword-point/\350\264\252\345\277\203\346\200\235\346\203\263/cutRopePro.js" +++ "b/code/algorithm/sword-point/\350\264\252\345\277\203\346\200\235\346\203\263/cutRopePro.js" @@ -1,2 +1,3 @@ -function cutRopePro(number) { +export function cutRopePro(number) { + console.log(number) } diff --git "a/code/algorithm/sword-point/\350\264\252\345\277\203\346\200\235\346\203\263/maxProfit.js" "b/code/algorithm/sword-point/\350\264\252\345\277\203\346\200\235\346\203\263/maxProfit.js" index 851207aa8..64b36b21c 100644 --- "a/code/algorithm/sword-point/\350\264\252\345\277\203\346\200\235\346\203\263/maxProfit.js" +++ "b/code/algorithm/sword-point/\350\264\252\345\277\203\346\200\235\346\203\263/maxProfit.js" @@ -8,9 +8,8 @@ */ /** * 暴力 - * @param prices int整型一维数组 */ -function maxProfit(prices) { +export function maxProfit(prices) { // 最低点买入,最高点卖出,收益最大 实际求的是一个子序列,最大和最小的差值 最小在前,最大在后 // 最大收益为0 其他都不算收益 @@ -29,26 +28,24 @@ function maxProfit(prices) { /** * 处理买点,卖点 - * @param prices - * @returns {number} */ -function maxProfitCount(prices) { +export function maxProfitCount(prices) { // 最大收益为0 其他都不算收益 let max = 0 // 定义最小的值为买入 let minPrice = Infinity for (let index = 0; index < prices.length; index++) { const start = prices[index] + // 处理买点 if (start < minPrice) { minPrice = start } - // 处理卖点 + // 处理卖点,获取最大收益 if (start - minPrice > max) { - // 获取最大收益 max = start - minPrice } } return max -}; +} diff --git "a/code/algorithm/sword-point/\351\223\276\350\241\250/clone.js" "b/code/algorithm/sword-point/\351\223\276\350\241\250/clone.js" index 95fa857a0..d6f794f70 100644 --- "a/code/algorithm/sword-point/\351\223\276\350\241\250/clone.js" +++ "b/code/algorithm/sword-point/\351\223\276\350\241\250/clone.js" @@ -1,7 +1,8 @@ -function RandomListNode(x) { +export function RandomListNode(x) { this.label = x this.next = null this.random = null } -function Clone(pHead) { +export function Clone(pHead) { + console.log(pHead) } diff --git "a/code/algorithm/sword-point/\351\223\276\350\241\250/deleteDuplication.js" "b/code/algorithm/sword-point/\351\223\276\350\241\250/deleteDuplication.js" index 008e605ed..fc5756aac 100644 --- "a/code/algorithm/sword-point/\351\223\276\350\241\250/deleteDuplication.js" +++ "b/code/algorithm/sword-point/\351\223\276\350\241\250/deleteDuplication.js" @@ -14,18 +14,12 @@ function ListNode(x) { // 注意是排序的结点 // 这种先遍历,再借用临时变量 也可以考虑用递归 -function deleteDuplication(pHead) { +export function deleteDuplication(pHead) { // 定义map const map = new Map() while (pHead) { - if (map.has(pHead.val)) { - // 存在 - map.set(pHead.val, map.get(pHead.val) + 1) - } - else { - // 不存在 - map.set(pHead.val, 1) - } + const value = map.has(pHead.val) ? map.get(pHead.val) + 1 : 1 + map.set(pHead.val, value) // 下一个元素 pHead = pHead.next @@ -37,7 +31,6 @@ function deleteDuplication(pHead) { const [key, count] = m // 尾插法 if (count === 1) { - // console.log(key) result.next = new ListNode(key) // 指针后移 @@ -48,8 +41,10 @@ function deleteDuplication(pHead) { return pre.next } -// 基于递归 -function deleteDuplication01(head) { +/** + * 基于递归 + */ +export function deleteDuplication01(head) { if (head === null || head.next === null) { return head } diff --git "a/code/algorithm/sword-point/\351\223\276\350\241\250/entryNodeOfLoop.js" "b/code/algorithm/sword-point/\351\223\276\350\241\250/entryNodeOfLoop.js" index aadd0597a..b6afb24ff 100644 --- "a/code/algorithm/sword-point/\351\223\276\350\241\250/entryNodeOfLoop.js" +++ "b/code/algorithm/sword-point/\351\223\276\350\241\250/entryNodeOfLoop.js" @@ -1,7 +1,7 @@ -function ListNode(x) { +export function ListNode(x) { this.val = x this.next = null } -function EntryNodeOfLoop(pHead) { - +export function EntryNodeOfLoop(pHead) { + console.log(pHead) } diff --git "a/code/algorithm/sword-point/\351\223\276\350\241\250/findFirstCommonNode.js" "b/code/algorithm/sword-point/\351\223\276\350\241\250/findFirstCommonNode.js" index 7f0eafebd..00e7d590f 100644 --- "a/code/algorithm/sword-point/\351\223\276\350\241\250/findFirstCommonNode.js" +++ "b/code/algorithm/sword-point/\351\223\276\350\241\250/findFirstCommonNode.js" @@ -7,11 +7,12 @@ * @LastEditTime: 2021-05-02 21:44:24 */ -/* function ListNode(x){ - this.val = x; - this.next = null; -} */ -function FindFirstCommonNode(pHead1, pHead2) { +export function ListNode(x) { + this.val = x + this.next = null +} + +export function FindFirstCommonNode(pHead1, pHead2) { // 双重循环,时间复杂度过大,考虑优化 // while(pHead1!==null){ // let pHead2_back=pHead2 @@ -28,7 +29,8 @@ function FindFirstCommonNode(pHead1, pHead2) { // } // return null; - let p1 = pHead1; let p2 = pHead2 + let p1 = pHead1 + let p2 = pHead2 // 其实,这里有个死循环的问题 while (p1 !== p2) { @@ -40,6 +42,3 @@ function FindFirstCommonNode(pHead1, pHead2) { // 返回公共结点 return p1 } -module.exports = { - FindFirstCommonNode, -} diff --git "a/code/algorithm/sword-point/\351\223\276\350\241\250/findKthToTail.js" "b/code/algorithm/sword-point/\351\223\276\350\241\250/findKthToTail.js" index 95f721592..7f6374083 100644 --- "a/code/algorithm/sword-point/\351\223\276\350\241\250/findKthToTail.js" +++ "b/code/algorithm/sword-point/\351\223\276\350\241\250/findKthToTail.js" @@ -1,15 +1,12 @@ -function ListNode(x) { +export function ListNode(x) { this.val = x this.next = null } /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 - * @param pHead ListNode类 - * @param k int整型 - * @return ListNode类 */ -function FindKthToTail(pHead, k) { +export function FindKthToTail(pHead, k) { // 结点不存在返回空 if (pHead === null) { return null @@ -37,7 +34,7 @@ function FindKthToTail(pHead, k) { // 上面是有两次while一次计数,一次移动指针找到目标结点 // 可以利用数组,不能是头插入,还是尾插都行,存储的元素为链表的结点,也就是链表的子链表的头指针 -function FindKthToTail01(pHead, k) { +export function FindKthToTail01(pHead, k) { const result = [] while (pHead !== null) { // 头插 diff --git "a/code/algorithm/sword-point/\351\223\276\350\241\250/merge.js" "b/code/algorithm/sword-point/\351\223\276\350\241\250/merge.js" index e2b51e932..8ab004c89 100644 --- "a/code/algorithm/sword-point/\351\223\276\350\241\250/merge.js" +++ "b/code/algorithm/sword-point/\351\223\276\350\241\250/merge.js" @@ -7,13 +7,15 @@ * @LastEditTime: 2021-05-02 17:30:18 */ -function ListNode(x) { +export function ListNode(x) { this.val = x this.next = null } -// 注意 两个链表都是单调递增 -function Merge(pHead1, pHead2) { +/** + * 注意 两个链表都是单调递增 + */ +export function Merge(pHead1, pHead2) { const pre = new ListNode(-1) let result = pre while (pHead1 !== null && pHead2 !== null) { @@ -43,8 +45,10 @@ function Merge(pHead1, pHead2) { return pre.next } -// 思考递归的做法 没有上面迭代好理解 -function Merge01(pHead1, pHead2) { +/** + * 思考递归的做法 没有上面迭代好理解 + */ +export function Merge01(pHead1, pHead2) { if (pHead1 === null) { return pHead2 } diff --git "a/code/algorithm/sword-point/\351\223\276\350\241\250/printListFromTailToHead.js" "b/code/algorithm/sword-point/\351\223\276\350\241\250/printListFromTailToHead.js" index 4fbaed67c..231986a61 100644 --- "a/code/algorithm/sword-point/\351\223\276\350\241\250/printListFromTailToHead.js" +++ "b/code/algorithm/sword-point/\351\223\276\350\241\250/printListFromTailToHead.js" @@ -9,8 +9,6 @@ /** * 单链表数据结构 - * @param x - * @constructor */ function ListNode(x) { this.val = x @@ -20,10 +18,8 @@ function ListNode(x) { /** * 从头出链表,按序放入数组,最后翻转数组 * 偷懒写法 - * @param head - * @returns {*[]} */ -function printListFromTailToHeadOne(head) { +export function printListFromTailToHeadOne(head) { const result = [] while (head !== null) { result.push(head.val) @@ -36,10 +32,8 @@ function printListFromTailToHeadOne(head) { /** * 相比链表的头插,对数组array进行头插unshift()即可 - * @param head - * @returns {*[]} */ -function printListFromTailToHeadTwo(head) { +export function printListFromTailToHeadTwo(head) { const result = [] while (head !== null) { // 头插 @@ -52,10 +46,8 @@ function printListFromTailToHeadTwo(head) { /** * 先翻转链表【采用头插法】,再按序输出到数组中 - * @param head - * @returns {*[]} */ -function printListFromTailToHeadThree(head) { +export function printListFromTailToHeadThree(head) { let reverseHead = new ListNode(-1) // 翻转链表 while (head !== null) { diff --git "a/code/algorithm/sword-point/\351\223\276\350\241\250/reverseList.js" "b/code/algorithm/sword-point/\351\223\276\350\241\250/reverseList.js" index 8323996c9..b553c7455 100644 --- "a/code/algorithm/sword-point/\351\223\276\350\241\250/reverseList.js" +++ "b/code/algorithm/sword-point/\351\223\276\350\241\250/reverseList.js" @@ -7,13 +7,13 @@ * @LastEditTime: 2021-05-02 16:36:52 */ -function ListNode(x) { +export function ListNode(x) { this.val = x this.next = null } // 头插法 -function ReverseList(pHead) { +export function ReverseList(pHead) { // 定义反转后链表 let result = null // let result=new ListNode(-1) @@ -29,8 +29,10 @@ function ReverseList(pHead) { return result } -// 递归 -function ReverseList01(pHead) { +/** + * 递归 + */ +export function ReverseList01(pHead) { if (pHead === null || pHead.next === null) { return pHead } diff --git a/code/algorithm/twoNums.js b/code/algorithm/twoNums.js index 842dc6e52..35cd8befc 100644 --- a/code/algorithm/twoNums.js +++ b/code/algorithm/twoNums.js @@ -1,9 +1,9 @@ /** * 给出一个整数数组, 请在数组中找出两个加起来等于目标值的数, - 你给出的函数twoSum 需要返回这两个数字的下标( index1, index2), 需要满足 index1 小于index2.。注意: 下标是从1开始的 - 假设给出的数组中只存在唯一解 + * 你给出的函数twoSum 需要返回这两个数字的下标( index1, index2), 需要满足 index1 小于index2.。注意: 下标是从1开始的 + * 假设给出的数组中只存在唯一解 */ -function captureThreeNumbers(str) { +export function captureThreeNumbers(str) { // 切割转化 const arr = str.split('') const num = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] @@ -18,7 +18,7 @@ function captureThreeNumbers(str) { console.log(captureThreeNumbers('abc123')) -function matchesPattern(str) { +export function matchesPattern(str) { if (str.length !== 12) { return false } diff --git "a/code/design-patterns/MVC\346\250\241\345\274\217/MVCPattern.ts" "b/code/design-patterns/MVC\346\250\241\345\274\217/MVCPattern.ts" index dd920a923..4aae2028e 100644 --- "a/code/design-patterns/MVC\346\250\241\345\274\217/MVCPattern.ts" +++ "b/code/design-patterns/MVC\346\250\241\345\274\217/MVCPattern.ts" @@ -2,83 +2,81 @@ * MVC模式 * - ts版本 */ -namespace MVCPattern { - // 模型(Model) - interface Todo { - id: number - title: string - completed: boolean - } +// 模型(Model) +interface Todo { + id: number + title: string + completed: boolean +} - class TodoModel { - private todos: Todo[] = [] +class TodoModel { + private todos: Todo[] = [] - addTodo(todo: Todo) { - this.todos.push(todo) - } + addTodo(todo: Todo) { + this.todos.push(todo) + } - getTodos() { - return this.todos - } + getTodos() { + return this.todos + } - updateTodoStatus(id: number, completed: boolean) { - const todo = this.todos.find(todo => todo.id === id) - if (todo) { - todo.completed = completed - } + updateTodoStatus(id: number, completed: boolean) { + const todo = this.todos.find(todo => todo.id === id) + if (todo) { + todo.completed = completed } } +} - // 视图(View) - class TodoView { - render(todos: Todo[]) { - console.log('Todo List:') - todos.forEach((todo) => { - console.log(`[${todo.completed ? 'x' : ' '}] ${todo.title}`) - }) - } +// 视图(View) +class TodoView { + render(todos: Todo[]) { + console.log('Todo List:') + todos.forEach((todo) => { + console.log(`[${todo.completed ? 'x' : ' '}] ${todo.title}`) + }) } +} - // 控制器(Controller) - class TodoController { - private model: TodoModel - private view: TodoView +// 控制器(Controller) +class TodoController { + private model: TodoModel + private view: TodoView - constructor(model: TodoModel, view: TodoView) { - this.model = model - this.view = view - } + constructor(model: TodoModel, view: TodoView) { + this.model = model + this.view = view + } - addTodoToModel(todo: Todo) { - this.model.addTodo(todo) - } + addTodoToModel(todo: Todo) { + this.model.addTodo(todo) + } - updateTodoStatusInModel(id: number, completed: boolean) { - this.model.updateTodoStatus(id, completed) - } + updateTodoStatusInModel(id: number, completed: boolean) { + this.model.updateTodoStatus(id, completed) + } - updateView() { - const todos = this.model.getTodos() - this.view.render(todos) - } + updateView() { + const todos = this.model.getTodos() + this.view.render(todos) } +} - // 使用示例 - const model = new TodoModel() - const view = new TodoView() - const controller = new TodoController(model, view) +// 使用示例 +const model = new TodoModel() +const view = new TodoView() +const controller = new TodoController(model, view) - // 添加新任务 - const todo1: Todo = { id: 1, title: 'Learn TypeScript', completed: false } - const todo2: Todo = { id: 2, title: 'Write Code', completed: true } +// 添加新任务 +const todo1: Todo = { id: 1, title: 'Learn TypeScript', completed: false } +const todo2: Todo = { id: 2, title: 'Write Code', completed: true } - controller.addTodoToModel(todo1) - controller.addTodoToModel(todo2) +controller.addTodoToModel(todo1) +controller.addTodoToModel(todo2) - // 更新任务状态 - controller.updateTodoStatusInModel(1, true) +// 更新任务状态 +controller.updateTodoStatusInModel(1, true) - // 更新视图 - controller.updateView() -} +// 更新视图 +controller.updateView() diff --git a/code/design-patterns/dip-demo.ts b/code/design-patterns/dip-demo.ts index 384e6514a..428dc5c32 100644 --- a/code/design-patterns/dip-demo.ts +++ b/code/design-patterns/dip-demo.ts @@ -6,7 +6,7 @@ interface IMessageSender { sendMessage: (message: string) => void } -class EmailSender implements IMessageSender { +export class EmailSender implements IMessageSender { sendMessage(message: string): void { console.log(`Sending email: ${message}`) } diff --git a/code/design-patterns/lsp-demo.ts b/code/design-patterns/lsp-demo.ts index 8551f10c9..3c6a34a0e 100644 --- a/code/design-patterns/lsp-demo.ts +++ b/code/design-patterns/lsp-demo.ts @@ -2,56 +2,47 @@ * 里氏替换原则Demo */ -// eslint-disable-next-line ts/no-namespace -namespace LspDemoFather { - export class Rectangle { - protected width: number - protected height: number - - constructor(width: number, height: number) { - this.width = width - this.height = height - } - - setWidth(width: number): void { - this.width = width - } - - setHeight(height: number): void { - this.height = height - } - - getArea(): number { - return this.width * this.height - } +export class Rectangle { + protected width: number + protected height: number + + constructor(width: number, height: number) { + this.width = width + this.height = height + } + + setWidth(width: number): void { + this.width = width + } + + setHeight(height: number): void { + this.height = height } - export function printArea(rectangle: Rectangle): void { - rectangle.setWidth(4) - rectangle.setHeight(5) - console.log(`Area: ${rectangle.getArea()}`) + getArea(): number { + return this.width * this.height } } -// eslint-disable-next-line unused-imports/no-unused-vars,ts/no-namespace -namespace LspDemo { - import Rectangle = LspDemoFather.Rectangle - import printArea = LspDemoFather.printArea +export function printArea(rectangle: Rectangle): void { + rectangle.setWidth(4) + rectangle.setHeight(5) + console.log(`Area: ${rectangle.getArea()}`) +} - class Square extends Rectangle { - setWidth(width: number): void { - this.width = width - } +class Square extends Rectangle { + setWidth(width: number): void { + this.width = width + } - setHeight(height: number): void { - this.height = height - } + setHeight(height: number): void { + this.height = height } +} - // 使用示例 - const rectangle = new Rectangle(0, 0) - const square = new Square(0, 0) +// 使用示例 +const rectangle = new Rectangle(0, 0) +const square = new Square(0, 0) - printArea(rectangle) - printArea(square) -} +printArea(rectangle) +printArea(square) diff --git a/code/design-patterns/srp-demo.ts b/code/design-patterns/srp-demo.ts index 60e476399..084658dc4 100644 --- a/code/design-patterns/srp-demo.ts +++ b/code/design-patterns/srp-demo.ts @@ -1,7 +1,7 @@ /** * 单一职责原则Demo */ -class User { +export class User { private readonly id: string private readonly name: string private readonly email: string diff --git "a/code/design-patterns/\345\215\225\344\276\213\346\250\241\345\274\217/SingletonPattern.ts" "b/code/design-patterns/\345\215\225\344\276\213\346\250\241\345\274\217/SingletonPattern.ts" index 0c0f091d8..a7350cc0b 100644 --- "a/code/design-patterns/\345\215\225\344\276\213\346\250\241\345\274\217/SingletonPattern.ts" +++ "b/code/design-patterns/\345\215\225\344\276\213\346\250\241\345\274\217/SingletonPattern.ts" @@ -7,51 +7,46 @@ /** * 懒汉-单例 */ -namespace LazySingleton { - class LazySingleton { - private static instance = null - - private constructor() { - // 私有化构造函数,防止通过 new 关键字创建实例 - console.log('防止通过 new 关键字创建实例') - } +class LazySingleton { + private static instance: LazySingleton + private constructor() { + // 私有化构造函数,防止通过 new 关键字创建实例 + console.log('防止通过 new 关键字创建实例') + } - public static getInstance(): LazySingleton { - if (!LazySingleton.instance) { - LazySingleton.instance = new LazySingleton() - } - return LazySingleton.instance + public static getInstance() { + if (LazySingleton.instance == null) { + LazySingleton.instance = new LazySingleton() } + return LazySingleton.instance } +} - // 使用示例 - const lazyInstance1 = LazySingleton.getInstance() - const lazyInstance2 = LazySingleton.getInstance() +// 使用示例 +const lazyInstance1 = LazySingleton.getInstance() +const lazyInstance2 = LazySingleton.getInstance() - console.log(lazyInstance1 === lazyInstance2) // 输出: true -} +console.log(lazyInstance1 === lazyInstance2) // 输出: true /** * 饿汉-单例 */ -namespace EagerSingleton { - class EagerSingleton { - private static instance = new EagerSingleton() +class EagerSingleton { + private static instance = new EagerSingleton() - private constructor() { - // 私有化构造函数,防止通过 new 关键字创建实例 - console.log('防止通过 new 关键字创建实例') - } + private constructor() { + // 私有化构造函数,防止通过 new 关键字创建实例 + console.log('防止通过 new 关键字创建实例') + } - // 获取实例,静态方法 - public static getInstance(): EagerSingleton { - return EagerSingleton.instance - } + // 获取实例,静态方法 + public static getInstance(): EagerSingleton { + return EagerSingleton.instance } +} - // 使用示例 - const eagerInstance1 = EagerSingleton.getInstance() - const eagerInstance2 = EagerSingleton.getInstance() +// 使用示例 +const eagerInstance1 = EagerSingleton.getInstance() +const eagerInstance2 = EagerSingleton.getInstance() - console.log(eagerInstance1 === eagerInstance2) // 输出: true -} +console.log(eagerInstance1 === eagerInstance2) // 输出: true diff --git "a/code/design-patterns/\347\256\200\345\215\225\345\267\245\345\216\202\346\250\241\345\274\217/SimpleFactoryPattern.ts" "b/code/design-patterns/\347\256\200\345\215\225\345\267\245\345\216\202\346\250\241\345\274\217/SimpleFactoryPattern.ts" index 208f2ebbb..b65b01bd4 100644 --- "a/code/design-patterns/\347\256\200\345\215\225\345\267\245\345\216\202\346\250\241\345\274\217/SimpleFactoryPattern.ts" +++ "b/code/design-patterns/\347\256\200\345\215\225\345\267\245\345\216\202\346\250\241\345\274\217/SimpleFactoryPattern.ts" @@ -2,43 +2,41 @@ * 简单工厂模式 * - ts实现 */ -namespace SimpleFactoryPattern { - interface Product { - operation(): void - } +interface Product { + operation: () => void +} - class ConcreteProductA implements Product { - operation(): void { - console.log('ConcreteProductA operation.') - } +class ConcreteProductA implements Product { + operation(): void { + console.log('ConcreteProductA operation.') } +} - class ConcreteProductB implements Product { - operation(): void { - console.log('ConcreteProductB operation.') - } +class ConcreteProductB implements Product { + operation(): void { + console.log('ConcreteProductB operation.') } +} - class SimpleFactory { - createProduct(type: string): Product { - if (type === 'A') { - return new ConcreteProductA() - } - else if (type === 'B') { - return new ConcreteProductB() - } - else { - throw new Error('Invalid product type.') - } +class SimpleFactory { + createProduct(type: string): Product { + if (type === 'A') { + return new ConcreteProductA() + } + else if (type === 'B') { + return new ConcreteProductB() + } + else { + throw new Error('Invalid product type.') } } +} - // 使用示例 - const factory = new SimpleFactory() +// 使用示例 +const factory = new SimpleFactory() - const productA = factory.createProduct('A') - productA.operation() // 输出: ConcreteProductA operation. +const productA = factory.createProduct('A') +productA.operation() // 输出: ConcreteProductA operation. - const productB = factory.createProduct('B') - productB.operation() // 输出: ConcreteProductB operation. -} +const productB = factory.createProduct('B') +productB.operation() // 输出: ConcreteProductB operation. diff --git a/docs/artalk.md b/docs/artalk.md index 8aa3dc66e..9f4da6f1e 100644 --- a/docs/artalk.md +++ b/docs/artalk.md @@ -25,5 +25,4 @@ docker run -d \ -p 0.0.0.0:8080:23366 \ -v $(pwd)/data:/data \ artalk/artalk-go - ``` diff --git a/docs/develop-skill/code-manager/git.md b/docs/develop-skill/code-manager/git.md index 0bfa55535..3786810bf 100644 --- a/docs/develop-skill/code-manager/git.md +++ b/docs/develop-skill/code-manager/git.md @@ -32,7 +32,7 @@ Git 区域理解: - `本地分支`:这里就是我们经常会打交道的区域,你在执行 commit 之后,本质上就是提交到了这个区域,你可以查看你的 `.git` 目录下的 `refs/heads` 目录,里面存的就是我们本地的分支代码信息。 -- `暂存区`:这个区域就是我们每次执行`git add`之后会存到的区域,用来与本地仓库之间做一个缓存,同时也是 Git 底层设计上来说也算是比较重要的一个区域,它能帮助 Git 在做diff的时候提高查找性能。 +- `暂存区`:这个区域就是我们每次执行`git add`之后会存到的区域,用来与本地仓库之间做一个缓存,同时也是 Git 底层设计上来说也算是比较重要的一个区域,它能帮助 Git 在做`diff`的时候提高查找性能。 - `工作区`:这个一般就是我们写代码的地方 diff --git a/docs/front-end/base-begin/html.md b/docs/front-end/base-begin/html.md index 6de8e6a76..c92c6fa37 100644 --- a/docs/front-end/base-begin/html.md +++ b/docs/front-end/base-begin/html.md @@ -5,24 +5,26 @@ permalink: /front-end/base-begin/html-correlation.html # HTML -HTML的全称为超文本标记语言,是一种标记语言。它包括一系列标签.通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字,图形、动画、声音、表格、链接等。 -超文本是一种组织信息的方式,它通过超级链接方法将文本中的文字、图表与其他信息媒体相关联。这些相互关联的信息媒体可能在同一文本中,也可能是其他文件,或是地理位置相距遥远的某台计算机上的文件。这种组织信息方式将分布在不同位置的信息资源用随机方式进行连接,为人们查找,检索信息提供方便 [ ] [百度百科](https://baike.baidu.com/item/HTML/97049) +`HTML`的全称为超文本标记语言,是一种标记语言。它包括一系列标签.通过这些标签可以将网络上的文档格式统一,使分散的`Internet`资源连接为一个逻辑整体。 +`HTML`文本是由HTML命令组成的描述性文本,HTML命令可以说明文字,图形、动画、声音、表格、链接等。 +超文本是一种组织信息的方式,它通过超级链接方法将文本中的文字、图表与其他信息媒体相关联。这些相互关联的信息媒体可能在同一文本中,也可能是其他文件, +或是地理位置相距遥远的某台计算机上的文件。这种组织信息方式将分布在不同位置的信息资源用随机方式进行连接,为人们查找,检索信息提供方便[百度百科](https://baike.baidu.com/item/HTML/97049) ## 标题 -HTML 标题(Heading)是通过 `

-

` 等标签进行定义的。 +`HTML` 标题(Heading)是通过 `

-

` 等标签进行定义的。 #### 段落 -HTML 段落是通过 `

` 标签进行定义的。 +`HTML` 段落是通过 `

` 标签进行定义的。 #### 链接 -HTML 链接是通过 `` 标签进行定义的。 +`HTML` 链接是通过 `` 标签进行定义的。 #### 图像 -HTML 图像是通过 标签进行定义的。 +`HTML` 图像是通过 `` 标签进行定义的。 ## 元素 diff --git a/docs/front-end/base-begin/javascript.md b/docs/front-end/base-begin/javascript.md index e3f9f8c72..4572de278 100644 --- a/docs/front-end/base-begin/javascript.md +++ b/docs/front-end/base-begin/javascript.md @@ -28,7 +28,7 @@ headerDepth: 2 - 抽象对象共用的属性和行为 封装成一个类(模板) - 对类进行实例化,获取类的对象 -在JavaScript中,对象是一组无序的相关属性和方法的结合,所有的事务都是对象,例如:字符串、数组、数值、函数等。 +在`JavaScript`中,对象是一组无序的相关属性和方法的结合,所有的事务都是对象,例如:字符串、数组、数值、函数等。 对象由属性和方法组成: @@ -228,7 +228,7 @@ creatObj.prototype = { - 构造函数的原型对象里面的`__proto__`原型指向父类 `Object.prototype` - `Object.prototype`原型对象里面的`__proto__`原型,指向为null -**这里的Object就好像提供的最高级父类,后面的对象类似继承,通过原型链链接** +**这里的`Object`就好像提供的最高级父类,后面的对象类似继承,通过原型链链接** #### 成员查找机制(规则) @@ -296,7 +296,7 @@ console.log(son) 类本质上其实还是一个函数,可以简单的认为,**类就是构造函数的另一种写法** -**ES6中的类其实就是语法糖,可以理解为ES5中的构造函数实现的简单写法** +**`ES6`中的类其实就是语法糖,可以理解为`ES5`中的构造函数实现的简单写法** ## 函数进阶 @@ -417,13 +417,13 @@ fn.call(obj, 1, 2) `apply()`方法调用一个函数,简单理解为调用函数的方式,但是它可以改变函数的`this`指向。 -函数格式:fun.apply(thisArg,[argsArray]) +函数格式:`fun.apply(thisArg,[argsArray])` - `thisArg`: 在fun函数运行时指定的this值 - `argsArray`: 传递的值,必须包含在数组里面 - 返回值就是函数的返回值,本质是调用函数 -**apply()参数传数组** +**`apply()`参数传数组** ```js // 求数组中的最大值 @@ -597,7 +597,7 @@ fun1() > 类似于数组,但是成员的值都是唯一的,**没有重复的值**; -**Set本身是一个构造函数,用来生成Set数据结构** +**Set本身是一个构造函数,用来生成`Set`数据结构** ```js // 定义set集合 @@ -781,10 +781,10 @@ console.log(arrCopy3) console.log(arrCopy4) ``` -- arrCopy只设置了一个参数,也就是起始下标为1,所以返回的数组为下标1(包括下标1)开始到数组最后。 -- arrCopy2设置了两个参数,返回起始下标(包括1)开始到终止下标(不包括4)的子数组。 -- arrCopy3设置了两个参数,终止下标为负数,当出现负数时,将负数加上数组长度的值(6)来替换该位置的数,因此就是从1开始到4(不包括)的子数组。 -- arrCopy4中两个参数都是负数,所以都加上数组长度6转换成正数,因此相当于slice(2,5)。 +- `arrCopy`只设置了一个参数,也就是起始下标为1,所以返回的数组为下标1(包括下标1)开始到数组最后。 +- `arrCopy2`设置了两个参数,返回起始下标(包括1)开始到终止下标(不包括4)的子数组。 +- `arrCopy3`设置了两个参数,终止下标为负数,当出现负数时,将负数加上数组长度的值(6)来替换该位置的数,因此就是从1开始到4(不包括)的子数组。 +- `arrCopy4`中两个参数都是负数,所以都加上数组长度6转换成正数,因此相当于slice(2,5)。 ### splice() @@ -837,7 +837,7 @@ console.log(arr.lastIndexOf(5, 4)) 对数组进行遍历循环,对数组中的每一项运行给定函数。这个方法没有返回值。 -参数都是function类型,默认有传参, +参数都是`function`类型,默认有传参, 参数分别为:遍历的数组内容;第对应的数组索引,数组本身。 ```js @@ -849,7 +849,7 @@ arr.forEach((x, index, a) => { ### map() -“映射”,对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组,例如: +`映射`,对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组,例如: ```js const arr = [1, 2, 3, 4, 5] @@ -862,7 +862,7 @@ console.log(arr2) ### filter() -“过滤”功能,数组中的每一项运行给定函数,返回满足过滤条件组成的数组,例如: +`过滤`功能,数组中的每一项运行给定函数,返回满足过滤条件组成的数组,例如: ```js const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] diff --git a/docs/front-end/front-framework/vuepress/vuepress.md b/docs/front-end/front-framework/vuepress/vuepress.md index 6bcb6cb27..692e0c018 100644 --- a/docs/front-end/front-framework/vuepress/vuepress.md +++ b/docs/front-end/front-framework/vuepress/vuepress.md @@ -22,7 +22,6 @@ pnpm vuepress dev # 构建静态文件 pnpm vuepress build - ``` 这样在本地就可以生成一个静态网站 diff --git "a/docs/read-books/cs-books/ES6\346\240\207\345\207\206\345\205\245\351\227\250.md" "b/docs/read-books/cs-books/ES6\346\240\207\345\207\206\345\205\245\351\227\250.md" index 9bd2620d9..c5dce6fb0 100644 --- "a/docs/read-books/cs-books/ES6\346\240\207\345\207\206\345\205\245\351\227\250.md" +++ "b/docs/read-books/cs-books/ES6\346\240\207\345\207\206\345\205\245\351\227\250.md" @@ -106,7 +106,7 @@ console.log(b) > var命令会发生“变量提升”现象,即变量可以在声明之前使用,值为`undefined` -let命令改变了语法行为,它所声明的变量一定要在声明后使用,否则报错。 +`let`命令改变了语法行为,它所声明的变量一定要在声明后使用,否则报错。 ```js // var @@ -122,8 +122,7 @@ let err = 1 > 只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。 -ES6 明确规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量,**从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错 -**。 +`ES6`明确规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量,**从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错**。 > 代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”(temporal dead zone,简称 TDZ)。 @@ -142,8 +141,8 @@ if (true) { } ``` -**ES6 规定暂时性死区和let、const语句不出现变量提升,主要是为了减少运行时错误,防止在变量声明前就使用这个变量,从而导致意料之外的行为。这样的错误在 -ES5 是很常见的,现在有了这种规定,避免此类错误就很容易了。** +**`ES6` 规定暂时性死区和`let`、`const`语句不出现变量提升,主要是为了减少运行时错误,防止在变量声明前就使用这个变量,从而导致意料之外的行为。 +这样的错误在`ES5` 是很常见的,现在有了这种规定,避免此类错误就很容易了。** 总之,暂时性死区的本质就是,只要一进入当前作用域,所要使用的变量就已经存在了,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用该变量。 @@ -163,7 +162,6 @@ function func() { // let a = 10; // let a = 1; } - ``` 当然这样写是不报错的,但不建议 @@ -180,7 +178,7 @@ func() // 不报错 ### 块级作用域 -ES5 只有全局作用域和函数作用域,没有块级作用域,这带来很多不合理的场景。 +`ES5` 只有全局作用域和函数作用域,没有块级作用域,这带来很多不合理的场景。 ```js // 循环结束后,变量i并没有消失,泄露成了全局变量。 @@ -194,7 +192,7 @@ for (var i = 0; i < s.length; i++) { console.log(i) ``` -let为 JavaScript 新增了块级作用域。ES6 允许块级作用域的任意嵌套。 +`let`为 `JavaScript` 新增了块级作用域。`ES6` 允许块级作用域的任意嵌套。 ```js // 报错情况 @@ -240,7 +238,7 @@ let为 JavaScript 新增了块级作用域。ES6 允许块级作用域的任意 } ``` -块级作用域和函数声明:ES5 规定,函数只能在顶层作用域和函数作用域之中声明,不能在块级作用域声明。 +块级作用域和函数声明:`ES5` 规定,函数只能在顶层作用域和函数作用域之中声明,不能在块级作用域声明。 ```js // 按照 ES5 的规定以下情况都是非法的。 @@ -262,7 +260,7 @@ catch (e) { } ``` -ES6 引入了块级作用域,明确允许在块级作用域之中声明函数 +`ES6` 引入了块级作用域,明确允许在块级作用域之中声明函数 > ES6 规定,块级作用域之中,**函数声明语句的行为类似于let,在块级作用域之外不可引用。** @@ -319,17 +317,16 @@ function f() { // Uncaught TypeError: f is not a function ``` -上面的代码在 ES6 浏览器中,都会报错。 +上面的代码在 `ES6` 浏览器中,都会报错。 -原来,如果改变了块级作用域内声明的函数的处理规则,显然会对老代码产生很大影响。为了减轻因此产生的不兼容问题,ES6 在附录 -B里面规定,浏览器的实现可以不遵守上面的规定,有自己的行为方式。 +原来,如果改变了块级作用域内声明的函数的处理规则,显然会对老代码产生很大影响。为了减轻因此产生的不兼容问题,`ES6` 在附录B里面规定,浏览器的实现可以不遵守上面的规定,有自己的行为方式。 允许在块级作用域内声明函数。 函数声明类似于var,即会提升到全局作用域或函数作用域的头部。 同时,函数声明还会提升到所在的块级作用域的头部。 -注意,上面三条规则只对 ES6 的浏览器实现有效,其他环境的实现不用遵守,还是将块级作用域的函数声明当作let处理。 +注意,上面三条规则只对 `ES6` 的浏览器实现有效,其他环境的实现不用遵守,还是将块级作用域的函数声明当作let处理。 -根据这三条规则,浏览器的 ES6 环境中,块级作用域内声明的函数,行为类似于var声明的变量。上面的例子实际运行的代码如下。 +根据这三条规则,浏览器的 `ES6` 环境中,块级作用域内声明的函数,行为类似于var声明的变量。上面的例子实际运行的代码如下。 ```js // 浏览器的 ES6 环境 @@ -373,7 +370,7 @@ function f() { } ``` -另外,还有一个需要注意的地方。ES6 的块级作用域必须有大括号,如果没有大括号,JavaScript 引擎就认为不存在块级作用域。 +另外,还有一个需要注意的地方。`ES6` 的块级作用域必须有大括号,如果没有大括号,`JavaScript` 引擎就认为不存在块级作用域。 ```js // 第一种写法,报错 @@ -408,7 +405,7 @@ if (true) ### const命令 -**const声明一个只读的常量。一旦声明,常量的值就不能改变。** +**`const`声明一个只读的常量。一旦声明,常量的值就不能改变。** ```js const test = 2323 @@ -419,9 +416,9 @@ console.log(test) // 输出:2323 test = 4567 ``` -**const声明的变量不得改变值**,这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值。 +**`const`声明的变量不得改变值**,这意味着,`const`一旦声明变量,就必须立即初始化,不能留到以后赋值。 -```js +```text // 只声明、不赋值会报错 const test; ``` @@ -519,17 +516,17 @@ function objectConstant(obj) { ### globalThis 对象 -JavaScript 语言存在一个顶层对象,它提供全局环境(即全局作用域),所有代码都是在这个环境中运行。但是,顶层对象在各种实现里面是不统一的。 +`JavaScript` 语言存在一个顶层对象,它提供全局环境(即全局作用域),所有代码都是在这个环境中运行。但是,顶层对象在各种实现里面是不统一的。 -- 浏览器里面,顶层对象是window,但 Node 和 Web Worker 没有window。 +- 浏览器里面,顶层对象是`window`,但 `Node` 和 `Web Worker` 没有`window`。 -- 浏览器和 Web Worker 里面,self也指向顶层对象,但是 Node 没有self。 +- 浏览器和 `Web Worker` 里面,`self`也指向顶层对象,但是 `Node` 没有`self`。 -- 在Node 里面,顶层对象是global,但其他环境都不支持。 +- 在 `Node` 里面,顶层对象是 `global`,但其他环境都不支持。 -同一段代码为了能够在各种环境,都能取到顶层对象,现在一般是使用this变量,但是有局限性。 +同一段代码为了能够在各种环境,都能取到顶层对象,现在一般是使用`this`变量,但是有局限性。 -- 全局环境中,this会返回顶层对象。但是,Node.js 模块中this返回的是当前模块,ES6 模块中this返回的是undefined。 +- 全局环境中,`this`会返回顶层对象。但是,`Node.js` 模块中`this`返回的是当前模块,ES6 模块中this返回的是undefined。 - 函数里面的this,如果函数不是作为对象的方法运行,而是单纯作为函数运行,this会指向顶层对象。但是,严格模式下,这时this会返回undefined。 - 不管是严格模式,还是普通模式,new Function('return this')(),总是会返回全局对象。但是,如果浏览器用了 CSP(Content Security Policy,内容安全策略),那么eval、new Function这些方法都可能无法使用。 @@ -567,7 +564,7 @@ const getGlobal = function () { #### 基本用法 -> ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。 +> `ES6` 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(`Destructuring`)。 ```js // 变量赋值 @@ -644,7 +641,7 @@ const [x, y, z] = new Set(['a', 'b', 'c']) x // "a" ``` -**只要某种数据结构具有 Iterator 接口,都可以采用数组形式的解构赋值** +**只要某种数据结构具有 `Iterator` 接口,都可以采用数组形式的解构赋值** #### 默认值 @@ -806,7 +803,7 @@ const { message: msg = 'Something went wrong' } = {} msg // "Something went wrong" ``` -**和数组的解构赋值一样,默认值生效的条件是,对象的属性值严格等于undefined** +**和数组的解构赋值一样,默认值生效的条件是,对象的属性值严格等于`undefined`** ```js @@ -816,7 +813,6 @@ x //3 // 属性x等于null,因为null与undefined不严格相等,所以是个有效的赋值,导致默认值3不会生效。 let {x = 3} = {x: null}; x // null - ``` 需要注意: @@ -888,7 +884,6 @@ s === Number.prototype.toString // true let {toString: s} = true; s === Boolean.prototype.toString // true - ``` 解构赋值的规则是,**只要等号右边的值不是对象或数组,就先将其转为对象**。由于undefined和null无法转为对象,所以对它们进行解构赋值,都会报错。 @@ -1021,7 +1016,6 @@ function example() { // 解构 let {foo, bar} = example(); - ``` - 函数参数的定义 @@ -1044,7 +1038,6 @@ function f({x, y, z}) { // 调用 f({z: 3, y: 2, x: 1}); - ``` - 提取 JSON 数据 @@ -1287,9 +1280,9 @@ func('Jack') ### String.fromCodePoint() -ES5 提供`String.fromCharCode()`方法,用于从 Unicode 码点返回对应字符,但是这个方法不能识别码点大于`0xFFFF`的字符 +`ES5` 提供`String.fromCharCode()`方法,用于从 Unicode 码点返回对应字符,但是这个方法不能识别码点大于`0xFFFF`的字符 -**ES6 提供了String.fromCodePoint()方法,可以识别大于0xFFFF的字符,弥补了String.fromCharCode() +**`ES6` 提供了String.fromCodePoint()方法,可以识别大于0xFFFF的字符,弥补了String.fromCharCode() 方法的不足。在作用上,正好与下面的codePointAt()方法相反。** ```js @@ -1413,11 +1406,9 @@ normalize方法可以接受一个参数来指定normalize的方式,参数的 ES6 又提供了三种新方法: -- includes() 返回布尔值,表示是否找到了参数字符串。 - -- startsWith() 返回布尔值,表示参数字符串是否在原字符串的头部。 - -- endsWith() 返回布尔值,表示参数字符串是否在原字符串的尾部。 +- `includes()` 返回布尔值,表示是否找到了参数字符串。 +- `startsWith()` 返回布尔值,表示参数字符串是否在原字符串的头部。 +- `endsWith()` 返回布尔值,表示参数字符串是否在原字符串的尾部。 例如: @@ -1439,11 +1430,11 @@ s.endsWith('Hello', 5) // true s.includes('Hello', 6) // false ``` -**使用第二个参数n时,endsWith的行为与其他两个方法有所不同。它针对前n个字符,而其他两个方法针对从第n个位置直到字符串结束。** +**使用第二个参数`n`时,`endsWith`的行为与其他两个方法有所不同。它针对前n个字符,而其他两个方法针对从第`n`个位置直到字符串结束。** ### repeat() -repeat方法返回一个新字符串,表示将原字符串重复n次。 +repeat方法返回一个新字符串,表示将原字符串重复`n`次。 ```js 'x'.repeat(3) // "xxx" @@ -1457,7 +1448,7 @@ repeat方法返回一个新字符串,表示将原字符串重复n次。 'test'.repeat(2.9) // "testtest" ``` -- 如果repeat的参数是负数或者Infinity,会报错。 +- 如果repeat的参数是负数或者`Infinity`,会报错。 ```js // Infinity 无穷 @@ -1546,10 +1537,10 @@ padStart()和padEnd()一共接受两个参数: ### trimStart()、trimEnd() -ES2019 对字符串实例新增了trimStart()和trimEnd()这两个方法。它们的行为与trim()一致。 +`ES2019` 对字符串实例新增了`trimStart()`和`trimEnd()`这两个方法。它们的行为与`trim()`一致。 -- trimStart()消除字符串头部的空格 -- trimEnd()消除尾部的空格 +- `trimStart()`消除字符串头部的空格 +- `trimEnd()`消除尾部的空格 它们返回的都是新字符串,不会修改原始字符串。 @@ -1569,8 +1560,8 @@ console.log(s) // " abc " 浏览器还部署了额外的两个方法: -- trimLeft()是trimStart()的别名 -- trimRight()是trimEnd()的别名 +- `trimLeft()`是`trimStart()`的别名 +- `trimRight()`是`trimEnd()`的别名 ### matchAll() diff --git a/docs/server-end/es-version/Readme-back.md b/docs/server-end/es-version/Readme-back.md index f037a4258..9ba87418a 100644 --- a/docs/server-end/es-version/Readme-back.md +++ b/docs/server-end/es-version/Readme-back.md @@ -29,7 +29,6 @@ if (true) { ```js const arr = [] -// eslint-disable-next-line for (var i = 0; i < 2; i++) { arr[i] = function () { console.log(i) diff --git a/docs/server-end/framework/egg/plugin/egg-mysql.md b/docs/server-end/framework/egg/plugin/egg-mysql.md index 370ab11b8..240914c5c 100644 --- a/docs/server-end/framework/egg/plugin/egg-mysql.md +++ b/docs/server-end/framework/egg/plugin/egg-mysql.md @@ -472,6 +472,7 @@ let options = [{ }] // 更新多行 +// eslint-disable-next-line let result = yield db.updateRows('user', options); console.log(result) ``` diff --git "a/docs/solo-algorithm/interview-101/\351\223\276\350\241\250/reverseBetween.md" "b/docs/solo-algorithm/interview-101/\351\223\276\350\241\250/reverseBetween.md" index ad287275a..1a181d78f 100644 --- "a/docs/solo-algorithm/interview-101/\351\223\276\350\241\250/reverseBetween.md" +++ "b/docs/solo-algorithm/interview-101/\351\223\276\350\241\250/reverseBetween.md" @@ -16,6 +16,6 @@ permalink: /solo-algorithm/interview-101/reverseBetween.html ## 代码实现 -@[code js](@algorithm/interview-101/reverseBetween.ts) +@[code js](@algorithm/interview-101/reverseBetween.js) ## 一些建议 diff --git a/docs/test.js b/docs/test.js index 85fc32b19..983a8db50 100644 --- a/docs/test.js +++ b/docs/test.js @@ -3,7 +3,6 @@ const path = require('node:path') /** * 递归遍历目录并重命名所有遇到的Readme.md文件为README.md - * @param {string} dirPath 目录路径 */ function renameReadmeFiles(dirPath) { fs.readdir(dirPath, (err, files) => { diff --git a/docs/theme.config.ts b/docs/theme.config.ts index d6523fc07..e50f21f2c 100644 --- a/docs/theme.config.ts +++ b/docs/theme.config.ts @@ -29,73 +29,31 @@ import { * 导航栏 */ export const navbarConfig = navbar([ - { - text: '🌐 首页', - link: '/', - }, - { - text: '🧠 SOLO算法', - children: soloAlgorithmSidebar, - }, - { - text: '💡 Battle面试官', - link: '/battle-interview/', - }, + { text: '🌐 首页', link: '/' }, + { text: '🧠 SOLO算法', children: soloAlgorithmSidebar }, + { text: '💡 Battle面试官', link: '/battle-interview/' }, { text: '💻 全栈开发', children: [ - { - text: '👩🏻‍💻 前端', - link: '/front-end/', - }, - { - text: '👨🏻‍💻 后端', - link: '/server-end/', - }, - { - text: '💫 开发技巧', - link: '/develop-skill/', - }, - { - text: '🕸️ 微服务架构', - link: '/microservice/', - }, + { text: '👩🏻‍💻 前端', link: '/front-end/' }, + { text: '👨🏻‍💻 后端', link: '/server-end/' }, + { text: '💫 开发技巧', link: '/develop-skill/' }, + { text: '🕸️ 微服务架构', link: '/microservice/' }, ], }, - { - text: '📖 读书整理', - link: '/read-books/', - }, + { text: '📖 读书整理', link: '/read-books/' }, { text: '👉 了解更多', children: [ - { - text: '📄 更新日志', - link: '/changelog', - }, - { - text: '📣 网站动态', - link: '/big-event-history', - }, + { text: '📄 更新日志', link: '/changelog' }, + { text: '📣 网站动态', link: '/big-event-history' }, { text: '外链', children: [ - { - text: '🎉 历史版本', - link: `${OPEN_SOURCE_ADDRESS.GITHUB_REPO_JSC}/releases`, - }, - { - text: '🎯 开发计划', - link: 'https://142vip-cn.feishu.cn/share/base/view/shrcnuuRDWBoHLmYaknXWFuhR4d', - }, - { - text: '🔗 技术&平台', - link: '/frequent-site-link', - }, - { - text: '💥 公众号文章', - link: '/wechat-list', - }, + { text: '🎉 历史版本', link: `${OPEN_SOURCE_ADDRESS.GITHUB_REPO_JSC}/releases` }, + { text: '🎯 开发计划', link: 'https://142vip-cn.feishu.cn/share/base/view/shrcnuuRDWBoHLmYaknXWFuhR4d' }, + { text: '🔗 技术&平台', link: '/frequent-site-link' }, + { text: '💥 公众号文章', link: '/wechat-list' }, ], }, From fc83d18ba563ff515271173eb4a90b7d798573a7 Mon Sep 17 00:00:00 2001 From: chufan Date: Fri, 1 Nov 2024 17:17:54 +0800 Subject: [PATCH 4/4] chore: update --- .../leftRotateString.js" | 5 +- .../getLeastNumbers.js" | 7 +- code/koa/README.md | 1 + code/koa/package-lock.json | 406 ------------------ code/koa/package.json | 8 +- docs/front-end/base-begin/javascript.md | 3 - .../framework/egg/plugin/egg-mysql.md | 1 - ...06\346\236\266\345\257\271\350\261\241.md" | 66 ++- ...00\344\275\263\345\256\236\350\267\265.md" | 5 +- .../tutorial/\344\272\213\347\211\251.md" | 2 +- .../\350\241\250\346\250\241\345\236\213.md" | 14 +- .../leftRotateString.md" | 48 --- 12 files changed, 50 insertions(+), 516 deletions(-) create mode 100644 code/koa/README.md delete mode 100644 code/koa/package-lock.json diff --git "a/code/algorithm/sword-point/\345\217\214\346\214\207\351\222\210/leftRotateString.js" "b/code/algorithm/sword-point/\345\217\214\346\214\207\351\222\210/leftRotateString.js" index decc97993..c6f787b41 100644 --- "a/code/algorithm/sword-point/\345\217\214\346\214\207\351\222\210/leftRotateString.js" +++ "b/code/algorithm/sword-point/\345\217\214\346\214\207\351\222\210/leftRotateString.js" @@ -17,7 +17,7 @@ function LeftRotateString(str, n) { /** * 偷懒做法 */ -function LeftRotateString01(str, n) { +export function LeftRotateString01(str, n) { // 两两翻转后,在统一翻转 return `${str.slice(0, n).split('').reverse().join('')}${str.slice(n).split('').reverse().join('')}`.split('').reverse().join('') } @@ -37,4 +37,5 @@ function reverseStr(str) { } return result.join('') } -console.log(LeftRotateString('', 6)) + +LeftRotateString('', 6) diff --git "a/code/algorithm/sword-point/\346\240\210\351\230\237\345\210\227\345\240\206/getLeastNumbers.js" "b/code/algorithm/sword-point/\346\240\210\351\230\237\345\210\227\345\240\206/getLeastNumbers.js" index cfd64855e..515eba25d 100644 --- "a/code/algorithm/sword-point/\346\240\210\351\230\237\345\210\227\345\240\206/getLeastNumbers.js" +++ "b/code/algorithm/sword-point/\346\240\210\351\230\237\345\210\227\345\240\206/getLeastNumbers.js" @@ -65,10 +65,11 @@ function getLeastNumbersThree(input, k) { */ export function getLeastNumbersFour(input, k) { // todo 构建树 维护小根堆 + console.log(input, k) } const testArr = [4, 5, 1, 6, 2, 7, 3, 8] -console.log(getLeastNumbersOne(testArr, 4)) -console.log(getLeastNumbersTwo(testArr, 4)) -console.log(getLeastNumbersThree(testArr, 4)) +getLeastNumbersOne(testArr, 4) +getLeastNumbersTwo(testArr, 4) +getLeastNumbersThree(testArr, 4) diff --git a/code/koa/README.md b/code/koa/README.md new file mode 100644 index 000000000..848ec2e8e --- /dev/null +++ b/code/koa/README.md @@ -0,0 +1 @@ +# Koa演示代码 diff --git a/code/koa/package-lock.json b/code/koa/package-lock.json deleted file mode 100644 index 78b901c1f..000000000 --- a/code/koa/package-lock.json +++ /dev/null @@ -1,406 +0,0 @@ -{ - "name": "koa", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "koa", - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "koa": "^2.14.2" - } - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cache-content-type": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/cache-content-type/-/cache-content-type-1.0.1.tgz", - "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==", - "dependencies": { - "mime-types": "^2.1.18", - "ylru": "^1.2.0" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmmirror.com/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookies": { - "version": "0.8.0", - "resolved": "https://registry.npmmirror.com/cookies/-/cookies-0.8.0.tgz", - "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==", - "dependencies": { - "depd": "~2.0.0", - "keygrip": "~1.1.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==" - }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/http-assert": { - "version": "1.5.0", - "resolved": "https://registry.npmmirror.com/http-assert/-/http-assert-1.5.0.tgz", - "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==", - "dependencies": { - "deep-equal": "~1.0.1", - "http-errors": "~1.8.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-errors/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmmirror.com/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/keygrip": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/keygrip/-/keygrip-1.1.0.tgz", - "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", - "dependencies": { - "tsscmp": "1.0.6" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/koa": { - "version": "2.14.2", - "resolved": "https://registry.npmmirror.com/koa/-/koa-2.14.2.tgz", - "integrity": "sha512-VFI2bpJaodz6P7x2uyLiX6RLYpZmOJqNmoCst/Yyd7hQlszyPwG/I9CQJ63nOtKSxpt5M7NH67V6nJL2BwCl7g==", - "dependencies": { - "accepts": "^1.3.5", - "cache-content-type": "^1.0.0", - "content-disposition": "~0.5.2", - "content-type": "^1.0.4", - "cookies": "~0.8.0", - "debug": "^4.3.2", - "delegates": "^1.0.0", - "depd": "^2.0.0", - "destroy": "^1.0.4", - "encodeurl": "^1.0.2", - "escape-html": "^1.0.3", - "fresh": "~0.5.2", - "http-assert": "^1.3.0", - "http-errors": "^1.6.3", - "is-generator-function": "^1.0.7", - "koa-compose": "^4.1.0", - "koa-convert": "^2.0.0", - "on-finished": "^2.3.0", - "only": "~0.0.2", - "parseurl": "^1.3.2", - "statuses": "^1.5.0", - "type-is": "^1.6.16", - "vary": "^1.1.2" - }, - "engines": { - "node": "^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4" - } - }, - "node_modules/koa-compose": { - "version": "4.1.0", - "resolved": "https://registry.npmmirror.com/koa-compose/-/koa-compose-4.1.0.tgz", - "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==" - }, - "node_modules/koa-convert": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/koa-convert/-/koa-convert-2.0.0.tgz", - "integrity": "sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==", - "dependencies": { - "co": "^4.6.0", - "koa-compose": "^4.1.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/only": { - "version": "0.0.2", - "resolved": "https://registry.npmmirror.com/only/-/only-0.0.2.tgz", - "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==" - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tsscmp": { - "version": "1.0.6", - "resolved": "https://registry.npmmirror.com/tsscmp/-/tsscmp-1.0.6.tgz", - "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", - "engines": { - "node": ">=0.6.x" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmmirror.com/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/ylru": { - "version": "1.3.2", - "resolved": "https://registry.npmmirror.com/ylru/-/ylru-1.3.2.tgz", - "integrity": "sha512-RXRJzMiK6U2ye0BlGGZnmpwJDPgakn6aNQ0A7gHRbD4I0uvK4TW6UqkK1V0pp9jskjJBAXd3dRrbzWkqJ+6cxA==", - "engines": { - "node": ">= 4.0.0" - } - } - } -} diff --git a/code/koa/package.json b/code/koa/package.json index 0de33375d..a257ec31c 100644 --- a/code/koa/package.json +++ b/code/koa/package.json @@ -1,13 +1,7 @@ { "name": "koa", - "version": "1.0.0", - "description": "", - "author": "", - "license": "ISC", + "version": "0.0.1", "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, "dependencies": { "koa": "^2.14.2" } diff --git a/docs/front-end/base-begin/javascript.md b/docs/front-end/base-begin/javascript.md index 4572de278..9f6820d36 100644 --- a/docs/front-end/base-begin/javascript.md +++ b/docs/front-end/base-begin/javascript.md @@ -322,7 +322,6 @@ const fn = function () { ```js // 利用Function构造函数 【所有函数都是Function的实例】 -// eslint-disable-next-line const fn = new Function('a', 'b', 'return a+b') console.log(fn) ``` @@ -358,7 +357,6 @@ obj.test() function Fn() { // ... } -// eslint-disable-next-line const fn = new Fn() console.log(fn) @@ -513,7 +511,6 @@ function fn(callback) { fn(function () { alert('hi') }) -// eslint-disable-next-line function fn() { return function () { } diff --git a/docs/server-end/framework/egg/plugin/egg-mysql.md b/docs/server-end/framework/egg/plugin/egg-mysql.md index 240914c5c..370ab11b8 100644 --- a/docs/server-end/framework/egg/plugin/egg-mysql.md +++ b/docs/server-end/framework/egg/plugin/egg-mysql.md @@ -472,7 +472,6 @@ let options = [{ }] // 更新多行 -// eslint-disable-next-line let result = yield db.updateRows('user', options); console.log(result) ``` diff --git "a/docs/server-end/framework/egg/tutorial/\346\241\206\346\236\266\345\257\271\350\261\241.md" "b/docs/server-end/framework/egg/tutorial/\346\241\206\346\236\266\345\257\271\350\261\241.md" index 550d32c87..06ad6b918 100644 --- "a/docs/server-end/framework/egg/tutorial/\346\241\206\346\236\266\345\257\271\350\261\241.md" +++ "b/docs/server-end/framework/egg/tutorial/\346\241\206\346\236\266\345\257\271\350\261\241.md" @@ -8,32 +8,32 @@ headerDepth: 1 在`Egg`框架中,包含了很多内置的基础对象,常用到的有: -- Application -- Context -- Request -- Response -- Controller -- Service -- Helper -- Config -- Logger +- `Application` +- `Context` +- `Request` +- `Response` +- `Controller` +- `Service` +- `Helper` +- `Config` +- `Logger` 其中,从Koa框架中继承的对象有: -- Application -- Context -- Request -- Response +- `Application` +- `Context` +- `Request` +- `Response` 下面将会以官方文档为基础,加上自己的使用、学习体验进行一一整理说明。 ## Application对象 -Application 是全局应用对象,在一个应用中,只会实例化一个,它继承自 Koa.Application,在上面我们可以挂载一些全局的方法和对象。 +`Application` 是全局应用对象,在一个应用中,只会实例化一个,它继承自 `Koa.Application`,在上面我们可以挂载一些全局的方法和对象。 ### 支持事件 -在项目入口通过app.js来启动项目,在项目运行时,会在Application对象实例上触发一些事件,应用开发者或者插件开发者可以监听这些事件做一些操作,一般在app.js中进行监听 +在项目入口通过`app.js`来启动项目,在项目运行时,会在`Application`对象实例上触发一些事件,应用开发者或者插件开发者可以监听这些事件做一些操作,一般在app.js中进行监听 ```js // app.js @@ -55,15 +55,15 @@ module.exports = (app) => { } ``` -- `server`: 该事件一个 worker 进程只会触发一次,在 HTTP 服务完成启动后,会将 HTTP server 通过这个事件暴露出来给开发者。 -- `error`: 运行时有任何的异常被 onerror 插件捕获后,都会触发 error 事件,将错误对象和关联的上下文(如果有)暴露给开发者,可以进行自定义的日志记录上报等处理。 -- `request 和 response`: 应用收到请求和响应请求时,分别会触发 request 和 response 事件,并将当前请求上下文暴露出来,开发者可以监听这两个事件来进行日志记录。 +- `server`: 该事件一个 `worker` 进程只会触发一次,在 `HTTP` 服务完成启动后,会将 `HTTP Server` 通过这个事件暴露出来给开发者。 +- `error`: 运行时有任何的异常被 `onerror` 插件捕获后,都会触发 `error` 事件,将错误对象和关联的上下文(如果有)暴露给开发者,可以进行自定义的日志记录上报等处理。 +- `request 和 response`: 应用收到请求和响应请求时,分别会触发 `request` 和 `response` 事件,并将当前请求上下文暴露出来,开发者可以监听这两个事件来进行日志记录。 ### 获取方式 -Application 对象几乎可以在编写应用时的任何一个地方获取到; +`Application` 对象几乎可以在编写应用时的任何一个地方获取到; -- 在app.js中使用 +- 在`app.js`中使用 ```js // app.js @@ -73,8 +73,7 @@ module.exports = (app) => { } ``` -**框架 Loader 加载的文件(Controller,Service,Schedule 等),都可以 export 一个函数,这个函数会被 Loader 调用,并使用 app 作为参数 -** +**框架 `Loader` 加载的文件(`Controller`,`Service`,`Schedule` 等),都可以 `export` 一个函数,这个函数会被 `Loader` 调用,并使用 `app` 作为参数** - Controller中使用 @@ -90,7 +89,7 @@ class UserController extends Controller { } ``` -和 Koa 一样,在 Context 对象上,可以通过 ctx.app 访问到 Application 对象。上面的UserController文件也可以改为: +和 `Koa` 一样,在 `Context` 对象上,可以通过 `ctx.app` 访问到 `Application` 对象。上面的`UserController`文件也可以改为: ```js // app/controller/user.js @@ -103,7 +102,7 @@ class UserController extends Controller { } ``` -在继承于 `Controller`, Service 基类的实例中,可以通过 this.app 访问到 Application 对象。 +在继承于 `Controller`, `Service` 基类的实例中,可以通过 `this.app` 访问到 `Application` 对象。 ```js // app/service/user.js @@ -115,14 +114,13 @@ class UserService extends Service { }; ``` -综上,访问application对象实例可以通过ctx.app或者this.app或者app参数即可。 +综上,访问`application`对象实例可以通过 `ctx.app` 或者 `this.app` 或者 `app` 参数即可。 ## Context对象 -Context 是一个请求级别的对象,继承自 Koa.Context。在每一次收到用户请求时,框架会实例化一个 Context -对象,这个对象封装了这次用户请求的信息,并提供了许多便捷的方法来获取请求参数或者设置响应信息。**框架会将所有的 Service 挂载到 -Context 实例上.** 如果你考虑封装一个插件,非常建议将一些方法和对象挂载到ctx对象上,这样在调用时就非常方便,就我个人而言,\* -\*ctx的使用是明显高于app的;\*\* +`Context` 是一个请求级别的对象,继承自 `Koa.Context`。在每一次收到用户请求时,框架会实例化一个 `Context`对象,这个对象封装了这次用户请求的信息,并提供了许多便捷的方法来获取请求参数或者设置响应信息。 +**框架会将所有的 `Service` 挂载到 `Context` 实例上.** +如果你考虑封装一个插件,非常建议将一些方法和对象挂载到 `ctx` 对象上,这样在调用时就非常方便,我个人感觉:**ctx的使用是明显高于app的;** ### 获取方式 @@ -137,9 +135,9 @@ async function middleware(ctx, next) { } ``` -这里跟Koa框架是非常类似的,如果没有将ctx作为参数,context对象也是可以从this对象中获取; +这里跟`Koa`框架是非常类似的,如果没有将`ctx`作为参数,`context`对象也是可以从`this`对象中获取; -- 支持Controller和Service里面获取 +- 支持`Controller`和`Service`里面获取 ```js // 直接在this对象中拿到 @@ -148,8 +146,7 @@ const { ctx } = this - 创建匿名Context实例 -> 在有些非用户请求的场景下我们需要访问 service / model 等 Context 实例上的对象,可以通过 -> Application.createAnonymousContext() 方法创建一个匿名 Context 实例 +在有些非用户请求的场景下我们需要访问 `service / model` 等 `Context` 实例上的对象,可以通过`Application.createAnonymousContext()` 方法创建一个匿名 `Context` 实例 ```js // 例如:app.js中 @@ -157,12 +154,11 @@ module.exports = (app) => { app.beforeStart(async () => { const ctx = app.createAnonymousContext() // 使用ctx对象 - // .... }) } ``` -注意,createAnonymousContext()函数是在application对象提供 +注意,`createAnonymousContext()`函数是在`application`对象提供 - 定时任务中使用 diff --git "a/docs/server-end/framework/egg/\346\234\200\344\275\263\345\256\236\350\267\265.md" "b/docs/server-end/framework/egg/\346\234\200\344\275\263\345\256\236\350\267\265.md" index 3dc4c59e7..157ceb9c6 100644 --- "a/docs/server-end/framework/egg/\346\234\200\344\275\263\345\256\236\350\267\265.md" +++ "b/docs/server-end/framework/egg/\346\234\200\344\275\263\345\256\236\350\267\265.md" @@ -37,7 +37,6 @@ app.config.env config.customLogger = { // 日志名称,通过ctx.getLogger('XXX')来调用 xxx: { - // file: 'XXXX' } } @@ -179,8 +178,7 @@ const Op = require('sequelize').Op [Op.notRegexp]: '^[h|a|t]' // NOT REGEXP/!~ '^[h|a|t]' (MySQL/PG only) [Op.iRegexp]: '^[h|a|t]' // ~* '^[h|a|t]' (PG only) [Op.notIRegexp]: '^[h|a|t]' // !~* '^[h|a|t]' (PG only) -[Op.like]: { [Op.any]: ['cat', '142vip']} - // LIKE ANY ARRAY['cat', '142vip'] - also works for iLike and notLike +[Op.like]: { [Op.any]: ['cat', '142vip']} // LIKE ANY ARRAY['cat', '142vip'] also works for iLike and notLike [Op.overlap]: [1, 2] // && [1, 2] (PG array overlap operator) [Op.contains]: [1, 2] // @> [1, 2] (PG array contains operator) [Op.contained]: [1, 2] // <@ [1, 2] (PG array contained by operator) @@ -193,7 +191,6 @@ ctx.app.model.sync({ force:false // 是否强制更新表 true|false alter:true // 是否依据model修改表 true|false }) - ``` ## 服务部署 diff --git "a/docs/server-end/orm/sequelize/tutorial/\344\272\213\347\211\251.md" "b/docs/server-end/orm/sequelize/tutorial/\344\272\213\347\211\251.md" index 1d59e6f53..3d8984ca2 100644 --- "a/docs/server-end/orm/sequelize/tutorial/\344\272\213\347\211\251.md" +++ "b/docs/server-end/orm/sequelize/tutorial/\344\272\213\347\211\251.md" @@ -212,7 +212,7 @@ await sequelize.transaction({ 四种事务`隔离级别`枚举如下: -```js +```ts /** * 事务隔离级别枚举 */ diff --git "a/docs/server-end/orm/sequelize/tutorial/\350\241\250\346\250\241\345\236\213.md" "b/docs/server-end/orm/sequelize/tutorial/\350\241\250\346\250\241\345\236\213.md" index ca327bdaf..6a361d1c8 100644 --- "a/docs/server-end/orm/sequelize/tutorial/\350\241\250\346\250\241\345\236\213.md" +++ "b/docs/server-end/orm/sequelize/tutorial/\350\241\250\346\250\241\345\236\213.md" @@ -225,7 +225,9 @@ sequelize.define('User', { }) // 简写 -sequelize.define('User', { name: DataTypes.STRING }) +sequelize.define('User', { + name: DataTypes.STRING +}) ``` ## 列参数 @@ -288,7 +290,7 @@ class User { 使用 `unique` 字段配置,创建唯一索引。例如: -```js +```javascript const {DataTypes} = require("sequelize"); class User { @@ -304,7 +306,7 @@ class User { 使用 `primaryKey` 字段配置,创建主键,字段值唯一。例如: -```js +```javascript const {DataTypes} = require("sequelize"); class User { @@ -334,7 +336,7 @@ class User { 使用 `field` 字段配置,设置模型对应的数据库表列名。例如: -```js +```javascript class User { name: { type: DataTypes.STRING, @@ -348,7 +350,7 @@ class User { 使用 `comment` 字段配置,给数据库表字段增加注释说明。目前只能支持添加到 `MySQL`、`MariaDB`、`PostgreSQL` 和 `MSSQL` 的列中。例如: -```js +```javascript class User { // 添加注释 name: { @@ -371,7 +373,7 @@ class User { 这里将 `User` 表中的 `id` 字段与 `Account` 表中的 `id` 字段建立外键关联关系,例如: -```js +```javascript const {DataTypes, Deferrable} = require("sequelize"); /** diff --git "a/docs/solo-algorithm/sword-point/\345\217\214\346\214\207\351\222\210/leftRotateString.md" "b/docs/solo-algorithm/sword-point/\345\217\214\346\214\207\351\222\210/leftRotateString.md" index e898e3b49..cfa9d9edc 100644 --- "a/docs/solo-algorithm/sword-point/\345\217\214\346\214\207\351\222\210/leftRotateString.md" +++ "b/docs/solo-algorithm/sword-point/\345\217\214\346\214\207\351\222\210/leftRotateString.md" @@ -17,52 +17,4 @@ permalink: /solo-algorithm/sword-point/left-rotate-str.html @[code js](@algorithm/sword-point/双指针/leftRotateString.js) -```js -/* - * @Description: 【中等】左旋转字符串 - * @Version: Beta1.0 - * @Author: 微信公众号:储凡 - * @Date: 2021-04-30 22:00:13 - * @LastEditors: 微信公众号:储凡 - * @LastEditTime: 2021-04-30 22:16:13 - */ - -function LeftRotateString(str, n) { - // 临界条件 - if (!str || str.length < n) { - return '' - } - // 对k以前的进行翻转 - const firstStr = str.slice(0, n) - // 对k以后的字符串进行翻转 - const secondStr = str.slice(n) - // 对拼接后的字符串进行翻转 - return reverseStr(`${reverseStr(firstStr)}${reverseStr(secondStr)}`) -} - -// 偷懒做法 -function LeftRotateString01(str, n) { - // 两两翻转后,在统一翻转 - return `${str.slice(0, n).split('').reverse().join('')}${str.slice(n).split('').reverse().join('')}`.split('').reverse().join('') -} - -/** - * 旋转数组,交换 - * @param {string} str - * @returns - */ -function reverseStr(str) { - const result = str.split('') - let left = 0; let right = result.length - 1 - while (left <= right) { - // 临时值 元素交换 - [result[left], result[right]] = [result[right], result[left]] - left++ - right-- - } - return result.join('') -} -console.log(LeftRotateString('', 6)) -``` - ## 一些建议