diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 59cd1dbce..000000000 Binary files a/.DS_Store and /dev/null differ diff --git a/.gitignore b/.gitignore index 675cfc71e..23855abfb 100644 --- a/.gitignore +++ b/.gitignore @@ -95,3 +95,4 @@ docs/.vuepress/dist/ .tern-port /docs/.vuepress/.temp/ /.husky/ +/.husky/ diff --git a/.husky/pre-commit b/.husky/pre-commit deleted file mode 100755 index f9089262c..000000000 --- a/.husky/pre-commit +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env sh -. "$(dirname -- "$0")/_/husky.sh" - -npm run lintfix diff --git a/Readme.md b/Readme.md index 2f855b2ef..58f07dff3 100644 --- a/Readme.md +++ b/Readme.md @@ -1,17 +1,11 @@ - +## JavaScriptCollection + ### 写最前面 -> 这里是工作、学习、生活中总结的各类笔记文章,涉及开发技术,也会感慨万千、水一些`思考`;若发现博客外链不能访问欢迎指正; -> 所有内容会选择性的发表于**微信公众号、博客、掘金、CSDN、Github ,实际内容以本仓库排版、校对为主。** 代码会不定期同步到 **码云** 。 +这里是工作、学习、生活中总结的各类笔记文章,涉及开发技术,也会感慨万千、水一些`思考`;若发现博客外链不能访问欢迎指正; +所有内容会选择性的发表于**微信公众号、博客、掘金、CSDN、Github ,实际内容以本仓库排版、校对为主。** 代码会不定期同步到 **码云** 。 **没有效访问链接的代表尚未完成,大家善用快捷键`Ctrl+F`** @@ -141,16 +135,16 @@ ### React -### Nuxtjs +### Nuxt.js -> Nuxtjs是在vue框架上进行封装的,主要是用来解决单体页面的服务端渲染问题,提供网站进行SEO优化的可能 +Nuxt.js是在vue框架上进行封装的,主要是用来解决单体页面的服务端渲染问题,提供网站进行SEO优化的可能 [前端读写cookie]() ### UI框架 -> 市面上前端框架层出不穷,不同的技术栈依赖的UI框架也不尽相同,这里将会依据笔者使用的UI框架,以线上项目展示的方式,介绍用过的框架; +市面上前端框架层出不穷,不同的技术栈依赖的UI框架也不尽相同,这里将会依据笔者使用的UI框架,以线上项目展示的方式,介绍用过的框架; - Bootstrap - LayerUI @@ -380,14 +374,14 @@ Nestjs框架推崇typescript语法,并且友好的兼容express框架,因此 ## 服务网关 -### kong +### Kong - [kong的的基本介绍](/api-gateway/kong/kong的基本介绍.md) - [docker下kong的部署](/api-gateway/kong/基于docker部署kong网关服务.md) - docker-compose搭建kong集群 - 可视化管理界面介绍 -### konga +### KongAdmin - 基本介绍与docker部署 - 简单使用 @@ -478,7 +472,7 @@ Nestjs框架推崇typescript语法,并且友好的兼容express框架,因此 > 参考笔者线上平台:http://view.142vip.cn/grafana 账号/密码:test/123456 基于docker部署,由于是个人学生服务器,站点访问延迟较高 > -> 常用工具:promethus 、grafana、zabbix、lepus等 +> 常用工具:Prometheus 、Grafana、zabbix、lepus等 ### Prometheus @@ -504,7 +498,7 @@ Nestjs框架推崇typescript语法,并且友好的兼容express框架,因此 > 实现功能:读写分离、分库分表、负载均衡、故障切换 -- Mycat +- MyCat - 360Atlas #### 集群监控 @@ -548,7 +542,7 @@ Nestjs框架推崇typescript语法,并且友好的兼容express框架,因此 ## 网站搭建 -> 从大二开始搭建个人网站:http://www.142vip.cn 起初非常简陋,工作之后计划进行第三版迭代,一直抽空佛系谢谢, 目前在重构中.. +> 从大二开始搭建个人网站:http://www.142vip.cn 起初非常简陋,工作之后计划进行三次重构,一直抽空佛系谢谢, 目前在重构中.. - 最初的梦想 - 舍弃Java,我的重构之路 @@ -588,170 +582,9 @@ Nestjs框架推崇typescript语法,并且友好的兼容express框架,因此 > 主要是跟计算机无关的一些书,在看完之后,会选择性的进行思维导图、经典词句整理,也可能添加个人思考 -#### [你好孤独 - 陈果](docs/article-records/读书笔记/好的孤独-陈果/Readme.md) - - -## 字节工作内推 - -** -帮朋友转发、宣传,一下jd是相对社招而言,校招、实习会降低要求!社招、校招、实习机会多多,更有漂亮hr小姐姐引导整个流程;不论是在校学生还是已步入职场的你,只要有兴趣,觉得合适的给我简历安排内推;欢迎简历骚扰,备注来意即可:mmdapl@163.com** - -#### 资深前端开发工程师 - 抖音电商 - -##### 职位描述 - -- 负责字节跳动电商C端业务产品(抖音、西瓜、头条、番茄小说、皮皮虾等应用)的工程架构设计、业务开发、跨端架构设计,覆盖Web应用、多端组件库、C端搭建等多个方向; - -- 参与团队前端工程化体系建设,逐步提升研发效率、研发质量,通过前端技术的不断产出驱动业务的发展; -- 与产品经理、设计师、后端工程师一起,提升产品的用户体验,打造卓越的互联网产品; -- 关注前端前沿技术发展,能够将新知识传递给团队,并且转化到潜在项目中。 - -##### 职位要求 - -- 扎实的计算机基础知识,熟悉常用的数据结构、算法和设计模式,并能在日常研发中灵活使用; -- 深入理解Web前端开发技术,包括HTML/CSS/JavaScript等; -- 掌握至少一种主流前端框架,包括React/vue等,有实际项目研发经验; -- 了解React Native、OC、小程序、跨端开发等,有一定的实际开发经验; -- 深入跨端、浏览器、运行时容器等任一方向即可,对于运行时容器、渲染引擎等方面有一定的技术认知;。 -- 熟悉交互设计理论,能够将优秀的交互设计落地到产品中,能够独立完成一个复杂模块或项目的研发工作; -- 具备较强的责任感、团队合作精神、逻辑思维能力和表达能力。 - -#### 高级前端研发工程师-抖音短视频 - -##### 职位描述 - -- 负责抖音相关产品功能开发,包括用户产品端功能、大型活动、小程序等的开发; -- 负责抖音相关中台、业务平台、ToB产品的全栈技术方案设计、开发; -- 负责基础框架、工具链、组件库等基础设施设计、开发和维护; -- 在跨端及全栈、音视频等技术方向进行核心难题攻坚; -- 基于跨端和全栈技术探索高效开发迭代模式。 - -##### 职位要求 - -- 本科及以上学历,扎实的计算机基础和前端基础; -- 熟练掌握React/Vue等大型前端框架,理解底层原理,能够灵活运用; -- 了解跨客户端/全栈 其中的一种技术体系,理解相关底层原理; -- 熟悉前端工程化相关及原理,具备良好的架构设计和工程设计能力; -- 有全栈实践,熟悉 Node/Python/Go 加分; -- 有跨端开发经验(React Native/Weex/Flutter)加分; -- 有Web游戏开发或引擎开发,音视频相关实践经验加分。 - -#### 高级前端研发工程师 - 翻译平台 - -##### 职位描述 - -- 负责国际化文案管理及翻译平台的迭代,促进公司内外部各产品的国际化发展; -- 负责国际化多语言工具链建设,提升国际化开发、翻译的效率。 - -##### 职位要求 - -- 本科及以上学历,2 年及以上工作经验,计算机相关专业优先; -- 熟悉React、Redux/Mobx技术栈以及Webpack等打包构建工具,具备较强的项目架构能力; -- 对设计原理有一定研究,有良好的代码设计意识; -- 熟悉至少一门后端编程语言,NodeJS、Golang、Python等,并有实践经验; -- 有国际化产品背景加分; -- 有i18n相关方案开发或者维护经验的加分。 - -#### 高级前端开发工程师 - 中后台方向 - -##### 职位描述 - -- 参与IES企业级设计体系『Semi Design』开发及维护,包括UI组件库、主题平台、物料平台等; -- 参与IES中后台设计开发工具链开发及维护,包括主题/物料开发工具、Sketch/Figma插件、IDE插件等; -- 参与IES中后台基础库、解决方案开发及维护,包括i18n、权限、路由等方案; -- 参与前沿设计智能的研究。 - -##### 职位要求 - -- 三年以上前端相关工作经验,计算机及相关专业; -- 对React相关技术栈有深入研究,了解Vue相关技术栈; -- 熟悉Webpack等打包构建工具; -- 有丰富的中后台开发经验,具备一定的服务端开发基础,熟悉;Koa/Express开发,熟悉运维部署。 - -#### 高级前端研发工程师-抖音用户增长-激励体系方向 - -##### 职位描述 - -- 负责抖音端内金币激励产品迭代; -- 负责抖音端内增长游戏产品迭代。 - -##### 职位要求 - -- 本科及以上学历,计算机基础扎实,熟练掌握Javascript/CSS; -- 掌握当前流行的前端框架,如React/Vue,并熟悉其衍生生态,如Redux、Webpack等; -- 有跨端开发经验,有RN/Weex/小程序/Flutter等项目经验; -- 对小游戏玩法有强烈兴趣,对游戏引擎有一定认知,如 Cocos2d,Layabox,Egret 等。 - -#### 前端开发工程师-直播方向 - -##### 职位描述 - -- 负责抖音/抖音火山版/西瓜视频/今日头条等产品直播研发,webapp/hybrid/React Native/小程序/Electron/多媒体,以及大型中后台大前端研发; -- 追求极致,不停探索前端跨平台技术。 - -##### 职位要求 - -- 计算机基础扎实,熟练掌握Javascript,ES5/6,CSS,熟练掌握各种布局; -- 对解决 CSS/JS 多浏览器兼容性问题,前端性能优化有一定的经验; -- 理解工程化思想,对构建和持续集成有一定认识,熟悉一种构建工具; -- 理解组件化开发思想,有一定的设计能力,熟悉最少一种前端MV*框架; -- 对后端技术和数据库有一定了解; -- 有移动端web开发经验(Hybrid,React Native等)优先; -- 对大型网站重构有丰富经验者优先,有成功作品者优先; -- 对动画渲染引擎有经验者优先。 - -#### 前端开发工程师-支付 - -##### 团队介绍 - -依托字节跳动强大的业务中台和技术中台能力,快速探索互联网全新的业务形态,寻找全新的用户需求,创造全新的业务场景,服务数亿用户。 - -##### 职位描述 - -- 自我驱动完成核心业务系统的前端研发工作; -- 优化前端体验,解决性能和交互难点; -- 参与前端工具链、通用服务、基础库、设计语言建设。 - -##### 职位要求 - -- 本科及以上学历,计算机相关专业优先; -- 理解并熟练掌握 HTML(5)、CSS(3)、JS,拥有成熟应用经验; -- 熟练前端生态并怀有兴趣和好奇心,至少熟悉一种主流框架; -- 学习能力强,对产品有强烈的责任感,拥有沟通和团队协作能力,适应自驱工作环境 。 - -#### 前端研发工程师-智能营销中台 - -##### 职位描述 - -- 负责设计稿智能解析生成UI界面平台开发; -- 负责智能设计辅助平台开发; -- 负责公司运营活动平台建设。 - -##### 职位要求 - -- 计算机、通信和电子信息科学相关专业优先; -- 有图像算法、深度学习背景优先; -- 熟悉前端相关技术,包括HTML、CSS、JavaScript等; -- 有自己的技术产品、开源作品、或活跃的开源社区贡献者优先; -- 积极乐观、责任心强、工作认真细致、具有良好的服务意识、具有良好的沟通协作能力。 - -#### 前端开发工程师-社区安全方向 - -##### 职位描述 - -- 负责抖音端内社区安全和隐私合规相关功能的前端开发工作; -- 负责抖音社区安全、隐私合规方向的平台建设工作。 - -##### 职位要求 +#### [你好孤独 - 陈果]() -- 计算机基础扎实,熟悉常用的数据结构和算法,具备扎实的编码能力; -- 前端基础扎实,熟练掌握HTML、Javascript、CSS及HTTP协议; -- 熟悉至少一种Web开发框架,如React、Vue、Angular等; -- 具备良好的系统设计能力,能自主完成常规技术方案的设计及落地; -- 具有良好的团队合作精神和积极主动的沟通意识; -- 有安全相关工作背景者优先,有大型网站架构经验者优先,具备全栈/跨端开发能力者优先。 ---- ## 赞赏列表 diff --git a/code/algorithm/interview-101/fibonacci.js b/code/algorithm/interview-101/fibonacci.js new file mode 100644 index 000000000..7930bd778 --- /dev/null +++ b/code/algorithm/interview-101/fibonacci.js @@ -0,0 +1,33 @@ +/** + * 斐波那契数列,递归调用 + * 难度:入门 + * @param n + * @returns {*} + */ +function fibonacciOne(n) { + return n < 2 ? n : fibonacciOne(n - 1) + fibonacciOne(n - 2) +} + +/** + * 斐波那契数列,迭代 + * 难度:入门 + * @param n + */ +function fibonacciTwo(n) { + // 数列初始化 + let firstValue = 0 + let secondValue = 1 + + let result = 1 + for (let index = 3; index <= n; index++) { + result = firstValue + secondValue + // 前面两列重新赋值 + firstValue = secondValue + secondValue = result + } + return result +} + + +console.log(fibonacciOne(4)) +console.log(fibonacciTwo(4)) diff --git a/code/algorithm/interview-101/removeElement.js b/code/algorithm/interview-101/removeElement.js deleted file mode 100644 index 91cf8f1c2..000000000 --- a/code/algorithm/interview-101/removeElement.js +++ /dev/null @@ -1,11 +0,0 @@ -/** - * 删除指定元素 - * @param nums - * @param val - */ -const removeElement = function(nums, val) { - // 等于val值的个数 - return nums.filter(item => item !== val) -} - -console.log(removeElement([3, 2, 2, 3], 3)) diff --git a/code/algorithm/interview-101/reverseList.js b/code/algorithm/interview-101/reverseList.js new file mode 100644 index 000000000..31ecaf1b4 --- /dev/null +++ b/code/algorithm/interview-101/reverseList.js @@ -0,0 +1,10 @@ +/* function ListNode(x){ + this.val = x; + this.next = null; +} */ +function reverseList(pHead) { + // write code here +} +module.exports = { + reverseList +} diff --git a/docs/manuscript/read-books/read-books.sidebar.ts b/docs/manuscript/read-books/read-books.sidebar.ts index 7ed4b5173..31f1c544a 100644 --- a/docs/manuscript/read-books/read-books.sidebar.ts +++ b/docs/manuscript/read-books/read-books.sidebar.ts @@ -36,6 +36,10 @@ export const readBooksSidebar = [ text: '你好,孤独', link: '/' }, + { + text: '好的,爱情', + link: '/' + }, { text: '测试', link: '/f111' diff --git a/docs/manuscript/solo-algorithm/interview-101/readme.md b/docs/manuscript/solo-algorithm/interview-101/readme.md index efbb1a9f3..3bd3cd667 100644 --- a/docs/manuscript/solo-algorithm/interview-101/readme.md +++ b/docs/manuscript/solo-algorithm/interview-101/readme.md @@ -5,22 +5,22 @@ ### 链表 -- [ ] [BM1 反转链表 【简单】]() -- [ ] [BM2 链表内指定区间反转 【中等】]() -- [ ] [BM3 链表中的节点每k个一组翻转 【中等】]() -- [ ] [BM4 合并两个排序的链表 【简单】]() -- [ ] [BM5 合并k个已排序的链表 【较难】]() -- [ ] [BM6 判断链表中是否有环 【简单】]() -- [ ] [BM7 链表中环的入口结点 【中等】]() -- [ ] [BM8 链表中倒数最后k个结点 【简单】]() -- [ ] [BM9 删除链表的倒数第n个节点 【中等】]() -- [ ] [BM10 两个链表的第一个公共结点 【简单】]() -- [ ] [BM11 链表相加(二) 【中等】]() -- [ ] [BM12 单链表的排序 【中等】]() -- [ ] [BM13 判断一个链表是否为回文结构 【简单】]() -- [ ] [BM14 链表的奇偶重排 【中等】]() -- [ ] [BM15 删除有序链表中重复的元素-I 【简单】]() -- [ ] [BM15 删除有序链表中重复的元素-II 【中等】]() +- [x] [BM1 反转链表 【简单】](链表/1.reverseList.md) +- [ ] [BM2 链表内指定区间反转 【中等】](链表/1.reverseList.md) +- [ ] [BM3 链表中的节点每k个一组翻转 【中等】](链表/1.reverseList.md) +- [ ] [BM4 合并两个排序的链表 【简单】](链表/1.reverseList.md) +- [ ] [BM5 合并k个已排序的链表 【较难】](链表/1.reverseList.md) +- [ ] [BM6 判断链表中是否有环 【简单】](链表/1.reverseList.md) +- [ ] [BM7 链表中环的入口结点 【中等】](链表/1.reverseList.md) +- [ ] [BM8 链表中倒数最后k个结点 【简单】](链表/1.reverseList.md) +- [ ] [BM9 删除链表的倒数第n个节点 【中等】](链表/1.reverseList.md) +- [ ] [BM10 两个链表的第一个公共结点 【简单】](链表/1.reverseList.md) +- [ ] [BM11 链表相加(二) 【中等】](链表/1.reverseList.md) +- [ ] [BM12 单链表的排序 【中等】](链表/1.reverseList.md) +- [ ] [BM13 判断一个链表是否为回文结构 【简单】](链表/1.reverseList.md) +- [ ] [BM14 链表的奇偶重排 【中等】](链表/1.reverseList.md) +- [ ] [BM15 删除有序链表中重复的元素-I 【简单】](链表/1.reverseList.md) +- [ ] [BM15 删除有序链表中重复的元素-II 【中等】](链表/1.reverseList.md) ### 二分查找/排序 @@ -83,8 +83,8 @@ ### 动态规划 -- [ ] [BM62 斐波那契数列 【入门】]() -- [ ] [BM63 跳台阶 【简单】]() +- [x] [BM62 斐波那契数列 【入门】](动态规划/fibonacci.md) +- [x] [BM63 跳台阶 【简单】](动态规划/jumpFloor.md) - [ ] [BM64 最小花费爬楼梯 【简单】]() - [ ] [BM65 最长公共子序列(二) 【中等】]() - [ ] [BM66 最长公共子串 【中等】]() diff --git a/docs/manuscript/solo-algorithm/interview-101/template.md b/docs/manuscript/solo-algorithm/interview-101/template.md new file mode 100644 index 000000000..876692ed3 --- /dev/null +++ b/docs/manuscript/solo-algorithm/interview-101/template.md @@ -0,0 +1,21 @@ +# 算法相关文档格式模版 + + + + +### 题目链接 + +- [牛客网]() +- [欢迎讨论]() + +### 题目描述 + + +### 思路 + +### 代码实现 + +@[code js](@code/algorithm/interview-101/reverseList.js) + + +### 一些建议 \ No newline at end of file diff --git "a/docs/manuscript/solo-algorithm/interview-101/\345\212\250\346\200\201\350\247\204\345\210\222/fibonacci.md" "b/docs/manuscript/solo-algorithm/interview-101/\345\212\250\346\200\201\350\247\204\345\210\222/fibonacci.md" new file mode 100644 index 000000000..14fadad78 --- /dev/null +++ "b/docs/manuscript/solo-algorithm/interview-101/\345\212\250\346\200\201\350\247\204\345\210\222/fibonacci.md" @@ -0,0 +1,38 @@ + + +# 斐波那契数列 + + + + +### 题目链接 + +- [牛客网](https://www.nowcoder.com/practice/c6c7742f5ba7442aada113136ddea0c3) +- [欢迎讨论]() + +### 题目描述 + +大家都知道斐波那契数列,现在要求输入一个正整数 n ,请你输出斐波那契数列的第 n 项。 +斐波那契数列是一个满足: + +- x = 1,2时 fib(x) = 1 +- x > 2 时 fib(x) = fib(x−1) + fib(x−2) + +的数列 +数据范围: 1≤n≤40 +要求:空间复杂度O(1),时间复杂度O(n) ,本题也有时间复杂度O(logn) 的解法 + +### 思路 + +方案一:递归 + +方案二:动态规划、循环迭代 + +### 代码实现 + +@[code js](@code/algorithm/interview-101/动态规划/fibonacci.js) + + +### 一些建议 + +- 熟记斐波那契数列特性 \ No newline at end of file diff --git "a/docs/manuscript/solo-algorithm/interview-101/\345\212\250\346\200\201\350\247\204\345\210\222/jumpFloor.md" "b/docs/manuscript/solo-algorithm/interview-101/\345\212\250\346\200\201\350\247\204\345\210\222/jumpFloor.md" new file mode 100644 index 000000000..0af982897 --- /dev/null +++ "b/docs/manuscript/solo-algorithm/interview-101/\345\212\250\346\200\201\350\247\204\345\210\222/jumpFloor.md" @@ -0,0 +1,37 @@ +# 跳台阶 + + +### 题目链接 + +- [牛客网](https://www.nowcoder.com/practice/8c82a5b80378478f9484d87d1c5f12a4) +- [欢迎讨论]() + +### 题目描述 + +一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 + +数据范围:1≤n≤40 +要求:时间复杂度:O(n) ,空间复杂度:O(1) + +### 思路 + +总共有n个台阶,假如 + +- 第一次跳1阶,即:a1=1,则还剩下n-1可以再第二次选择,那么共n-1个台阶,会有多少种跳法??? +- 第一次跳2阶,即:a1=2,则还剩下n-2可以再第二次选择,那么共n-2个台阶,会有多少种跳法??? + + +问题很容易就演变成G(n)=G(n-1)+ G(n-2) + +这不就是斐波那契数列么???? 可以参考:[【入门】斐波那契数列](./fibonacci.md) + + +### 代码实现 + +@[code js](@code/algorithm/剑指/动态规划/jumpFloor.js) + + +### 一些建议 + +- 数学分析、逻辑思维很重要 +- 熟练斐波那契数列 \ No newline at end of file diff --git "a/docs/manuscript/solo-algorithm/interview-101/\351\223\276\350\241\250/1.reverseList.md" "b/docs/manuscript/solo-algorithm/interview-101/\351\223\276\350\241\250/1.reverseList.md" new file mode 100644 index 000000000..235249697 --- /dev/null +++ "b/docs/manuscript/solo-algorithm/interview-101/\351\223\276\350\241\250/1.reverseList.md" @@ -0,0 +1,24 @@ +# BM1 反转链表 + + + + +### 题目链接 + +- [牛客网](https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca) +- [欢迎讨论]() + +### 题目描述 + +![反转链表.png](reverseList.png) + + + +### 思路 + +### 代码实现 + +@[code js](@code/algorithm/interview-101/reverseList.js) + + +### 一些建议 \ No newline at end of file diff --git "a/docs/manuscript/solo-algorithm/interview-101/\351\223\276\350\241\250/reverseList.png" "b/docs/manuscript/solo-algorithm/interview-101/\351\223\276\350\241\250/reverseList.png" new file mode 100644 index 000000000..2b5eaa180 Binary files /dev/null and "b/docs/manuscript/solo-algorithm/interview-101/\351\223\276\350\241\250/reverseList.png" differ