From c907fca77db9c23b51728200f797f088bde3639c Mon Sep 17 00:00:00 2001 From: WindRunnerMax <651525974@qq.com> Date: Tue, 19 Nov 2024 22:46:24 +0800 Subject: [PATCH] 24/11/19 Former-commit-id: 4665812f3a452c4c08ba1c7e52e7a7e712ffd4c4 --- .scripts/constant.ts | 16 - .scripts/generator.ts | 47 -- .scripts/overview.ts | 76 ++++ .scripts/sync-blog.ts | 13 +- .scripts/sync-ssg.ts | 13 +- Overview.md | 527 ----------------------- README.md | 967 +++++++++++++++++++++++------------------- package.json | 7 +- pnpm-lock.yaml | 7 + 9 files changed, 630 insertions(+), 1043 deletions(-) delete mode 100644 .scripts/constant.ts delete mode 100644 .scripts/generator.ts create mode 100644 .scripts/overview.ts delete mode 100644 Overview.md diff --git a/.scripts/constant.ts b/.scripts/constant.ts deleted file mode 100644 index 90281bfd..00000000 --- a/.scripts/constant.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { docs } from "./docs"; - -export const DOCS_GROUP = Object.keys(docs); -export const FE_GROUP = [ - "HTML", - "CSS", - "JavaScript", - "Browser", - "Vue", - "React", - "Plugin", - "Patterns", - "Linux", - "LeetCode", -]; - diff --git a/.scripts/generator.ts b/.scripts/generator.ts deleted file mode 100644 index cd6ffb03..00000000 --- a/.scripts/generator.ts +++ /dev/null @@ -1,47 +0,0 @@ -import path from "node:path"; -import fs from "node:fs/promises"; -import { DOCS_GROUP } from "./constant"; -import { glob } from "glob"; -import { docs } from "./docs"; - -const root = path.resolve(__dirname, `..`); - -(async () => { - console.log("Calculating..."); - const group = await Promise.all( - DOCS_GROUP.map((group) => glob(path.join(root, `${group}`) + "/*.md")) - ); - const files = group.flat(1); - const backup = await glob(path.join(root, `Backup`) + "/*.md"); - const all = [...files, ...backup]; - const count = all.length; - let lines = 0; - let characters = 0; - for (const file of all) { - const content = await fs.readFile(file, "utf8"); - const line = content.split("\n").length; - const character = content.length; - lines = lines + line; - characters = characters + character; - } - - console.log("Processing Overview.md"); - const header = [ - "# Overview", - "", - `版本库中共有 ${count} 篇文章,总计 ${lines} 行,${characters} 字符。`, - "", - ]; - const body: string[] = []; - for (const [key, value] of Object.entries(docs)) { - body.push(`* ${key}`); - for (const item of value) { - const name = item.split("/").pop(); - if (!name) continue; - body.push(` * [${name}](${item.replace(/ /g, "%20")}.md)`); - } - body.push(""); - } - const content = header.concat(body).join("\n"); - await fs.writeFile(path.join(root, "Overview.md"), content); -})(); diff --git a/.scripts/overview.ts b/.scripts/overview.ts new file mode 100644 index 00000000..6803d0dd --- /dev/null +++ b/.scripts/overview.ts @@ -0,0 +1,76 @@ +import path from "node:path"; +import fs from "node:fs/promises"; +import { glob } from "glob"; +import { docs } from "./docs"; +import { countWords } from "alfaaz"; + +const root = path.resolve(__dirname, `..`); + +(async () => { + console.log("Calculating..."); + const DOCS_GROUP = Object.keys(docs); + const group = await Promise.all( + DOCS_GROUP.map((group) => glob(path.join(root, `${group}`) + "/*.md")) + ); + const files = group.flat(1); + const backup = await glob(path.join(root, `Backup`) + "/*.md"); + const all = [...files, ...backup]; + const count = all.length; + let lines = 0; + let words = 0; + let characters = 0; + for (const file of all) { + const content = await fs.readFile(file, "utf8"); + const line = content.split("\n").length; + const character = content.length; + lines = lines + line; + characters = characters + character; + words = words + countWords(content.replace(/`/g, " ")); + } + + console.log("Processing README.md"); + const content: string[] = []; + for (const [key, value] of Object.entries(docs)) { + content.push(`## ${key}`); + for (const item of value) { + const name = item.split("/").pop(); + if (!name) continue; + content.push(`* [${name}](${item.replace(/ /g, "%20")}.md)`); + } + content.push(""); + } + const summary = [ + `版本库中共有\`${count}\`篇文章,总计\`${lines}\`行,\`${words}\`字,\`${characters}\`字符。`, + ]; + const readme = await fs.readFile(path.resolve(root, "README.md"), "utf-8"); + const record: Record = { summary, content }; + const readmeFile: string[] = []; + const readmeLines = readme.split("\n"); + const regexp = //; + for (let i = 0; i < readmeLines.length; ++i) { + readmeFile.push(readmeLines[i]); + const start = regexp.exec(readmeLines[i].trim()); + const key = start && start[1]; + const value = start && start[2]; + if (!key || !value || value !== "Start") { + continue; + } + for (let k = i + 1; k < readmeLines.length; ++k) { + const end = regexp.exec(readmeLines[k].trim()); + const endKey = end && end[1]; + const endValue = end && end[2]; + if (!key || !endValue || endKey !== key || endValue !== "End") { + continue; + } + readmeFile.push(...record[key.toLocaleLowerCase()]); + readmeFile.push(``); + i = k; + break; + } + } + await fs.writeFile( + path.resolve(root, "README.md"), + readmeFile.join("\n"), + "utf-8" + ); +})(); diff --git a/.scripts/sync-blog.ts b/.scripts/sync-blog.ts index a3ae4da9..93bbd9a7 100644 --- a/.scripts/sync-blog.ts +++ b/.scripts/sync-blog.ts @@ -2,23 +2,20 @@ import fs from "node:fs/promises"; import path from "node:path"; import { exec as aliasExec } from "node:child_process"; import { promisify } from "node:util"; -import { DOCS_GROUP } from "./constant"; import { docs } from "./docs"; -const root = path.resolve(__dirname, `..`); const exec = promisify(aliasExec); +const root = path.resolve(__dirname, `..`); +const blog = path.resolve(root, `../Blog`); (async () => { console.log("Syncing Blog..."); + const DOCS_GROUP = Object.keys(docs); for (const group of DOCS_GROUP) { console.log("Processing", group); const from = path.resolve(root, group); - const to = path.resolve(root, `../Blog/`); - await exec(`cp -r ${from} ${to}`); + await exec(`cp -r ${from} ${blog}`); } - const from = path.join(root, "Overview.md"); - const to = path.join(root, "../Blog/"); - await exec(`cp -r ${from} ${to}`); console.log("Processing _sidebar.md"); const body: string[] = []; @@ -32,5 +29,5 @@ const exec = promisify(aliasExec); body.push(""); } const content = body.join("\n"); - await fs.writeFile(path.join(root, "../Blog/_sidebar.md"), content); + await fs.writeFile(path.join(blog, "_sidebar.md"), content); })(); diff --git a/.scripts/sync-ssg.ts b/.scripts/sync-ssg.ts index 0fd600a8..a6eeb2b8 100644 --- a/.scripts/sync-ssg.ts +++ b/.scripts/sync-ssg.ts @@ -1,22 +1,25 @@ import path from "node:path"; import { exec as aliasExec } from "node:child_process"; import { promisify } from "node:util"; -import { DOCS_GROUP } from "./constant"; +import { docs } from "./docs"; const exec = promisify(aliasExec); +const root = path.resolve(__dirname, `..`); +const ssg = path.resolve(root, `../Blog-SSG`); (async () => { console.log("Syncing SSG..."); + const DOCS_GROUP = Object.keys(docs); for (const group of DOCS_GROUP) { console.log("Processing", group); - const from = path.resolve(__dirname, `../${group}`); - const to = path.resolve(__dirname, `../../Blog-SSG/docs/zh-cn`); + const from = path.resolve(root, group); + const to = path.resolve(ssg, `docs/zh-cn`); await exec(`cp -r ${from} ${to}`); } console.log("Processing", "I18N"); - const from = path.resolve(__dirname, `../i18n/`); - const to = path.resolve(__dirname, `../../Blog-SSG/docs/en-us`); + const from = path.resolve(root, `i18n`); + const to = path.resolve(ssg, `docs/en-us`); await exec(`cp -r ${from}/* ${to}`); console.log("Processing", "sidebar.ts"); diff --git a/Overview.md b/Overview.md deleted file mode 100644 index 7d88a7f7..00000000 --- a/Overview.md +++ /dev/null @@ -1,527 +0,0 @@ -# Overview - -版本库中共有 487 篇文章,总计 90629 行,2978599 字符。 - -* HTML - * [DOCTYPE](HTML/DOCTYPE.md) - * [HTML语义化](HTML/HTML语义化.md) - * [Cookie与Session](HTML/Cookie与Session.md) - * [LocalStorage与SessionStorage](HTML/LocalStorage与SessionStorage.md) - * [Iframe框架及优缺点](HTML/Iframe框架及优缺点.md) - * [HTML节点操作](HTML/HTML节点操作.md) - * [手动实现轮播图功能](HTML/手动实现轮播图功能.md) - * [Canvas基础](HTML/Canvas基础.md) - * [前端性能优化方案](HTML/前端性能优化方案.md) - * [HTML5新特性](HTML/HTML5新特性.md) - * [行内元素和块级元素](HTML/行内元素和块级元素.md) - * [图片等比例缩放方案](HTML/图片等比例缩放方案.md) - * [实现瀑布流布局](HTML/实现瀑布流布局.md) - * [实现图片懒加载](HTML/实现图片懒加载.md) - * [Web Worker](HTML/Web%20Worker.md) - * [300ms点击延迟](HTML/300ms点击延迟.md) - * [默认行为及阻止](HTML/默认行为及阻止.md) - * [可替换元素和非替换元素](HTML/可替换元素和非替换元素.md) - * [HTML与XHTML区别](HTML/HTML与XHTML区别.md) - * [常见的兼容性问题](HTML/常见的兼容性问题.md) - * [Attribute和Property的区别](HTML/Attribute和Property的区别.md) - * [实现拼图滑动验证码](HTML/实现拼图滑动验证码.md) - * [实现加载提示组件](HTML/实现加载提示组件.md) - * [实现消息提示组件](HTML/实现消息提示组件.md) - * [DOM和BOM的区别](HTML/DOM和BOM的区别.md) - * [实现三栏布局](HTML/实现三栏布局.md) - * [Shadow DOM的理解](HTML/Shadow%20DOM的理解.md) - * [Service Worker的应用](HTML/Service%20Worker的应用.md) - * [蒙层禁止页面滚动的方案](HTML/蒙层禁止页面滚动的方案.md) - * [SVG与foreignObject元素](HTML/SVG与foreignObject元素.md) - -* CSS - * [布局垂直居中](CSS/布局垂直居中.md) - * [伪类与伪元素](CSS/伪类与伪元素.md) - * [CSS盒子模型](CSS/CSS盒子模型.md) - * [CSS选择器](CSS/CSS选择器.md) - * [CSS样式优先级](CSS/CSS样式优先级.md) - * [Flex布局](CSS/Flex布局.md) - * [Grid布局](CSS/Grid布局.md) - * [Table布局](CSS/Table布局.md) - * [SVG基础](CSS/SVG基础.md) - * [CSS引入方式](CSS/CSS引入方式.md) - * [CSS3新特性](CSS/CSS3新特性.md) - * [响应式布局的实现](CSS/响应式布局的实现.md) - * [块级格式化上下文](CSS/块级格式化上下文.md) - * [Position定位](CSS/Position定位.md) - * [Float浮动](CSS/Float浮动.md) - * [文本溢出截断省略](CSS/文本溢出截断省略.md) - * [CSS隐藏元素的方法](CSS/CSS隐藏元素的方法.md) - * [如何避免FOUC](CSS/如何避免FOUC.md) - * [display的值及作用](CSS/display的值及作用.md) - * [CSS常用单位](CSS/CSS常用单位.md) - * [实现毛玻璃效果](CSS/实现毛玻璃效果.md) - * [CSS实现图形效果](CSS/CSS实现图形效果.md) - * [实现文字滚动播放](CSS/实现文字滚动播放.md) - * [CSS实现展开动画](CSS/CSS实现展开动画.md) - * [CSS实现渐隐渐现效果](CSS/CSS实现渐隐渐现效果.md) - -* JavaScript - * [手动实现AJAX](JavaScript/手动实现AJAX.md) - * [ES6新特性](JavaScript/ES6新特性.md) - * [原型与原型链](JavaScript/原型与原型链.md) - * [JavaScript闭包](JavaScript/JavaScript闭包.md) - * [JS变量提升](JavaScript/JS变量提升.md) - * [匿名函数与自执行函数](JavaScript/匿名函数与自执行函数.md) - * [apply、call、bind](JavaScript/apply、call、bind.md) - * [事件冒泡及阻止](JavaScript/事件冒泡及阻止.md) - * [JS事件流模型](JavaScript/JS事件流模型.md) - * [函数声明与函数表达式](JavaScript/函数声明与函数表达式.md) - * [JS中this的指向](JavaScript/JS中this的指向.md) - * [new运算符](JavaScript/new运算符.md) - * [Js遍历数组总结](JavaScript/Js遍历数组总结.md) - * [Promise对象](JavaScript/Promise对象.md) - * [async、await](JavaScript/async、await.md) - * [Generator函数](JavaScript/Generator函数.md) - * [Js中==与===](JavaScript/Js中==与===.md) - * [JavaScript选择器](JavaScript/JavaScript选择器.md) - * [Json Web Token](JavaScript/Json%20Web%20Token.md) - * [Js模块化导入导出](JavaScript/Js模块化导入导出.md) - * [let与const](JavaScript/let与const.md) - * [作用域与作用域链](JavaScript/作用域与作用域链.md) - * [JavaScript异步机制](JavaScript/JavaScript异步机制.md) - * [Js数组操作](JavaScript/Js数组操作.md) - * [Js继承的实现方式](JavaScript/Js继承的实现方式.md) - * [Function与Object](JavaScript/Function与Object.md) - * [Js严格模式](JavaScript/Js严格模式.md) - * [Js箭头函数](JavaScript/Js箭头函数.md) - * [手动实现apply call bind](JavaScript/手动实现apply%20call%20bind.md) - * [Js遍历对象总结](JavaScript/Js遍历对象总结.md) - * [Js获取数据类型](JavaScript/Js获取数据类型.md) - * [手动实现Promise](JavaScript/手动实现Promise.md) - * [Js实现数组排序](JavaScript/Js实现数组排序.md) - * [defineProperty](JavaScript/defineProperty.md) - * [Js实现链表操作](JavaScript/Js实现链表操作.md) - * [getter与setter](JavaScript/getter与setter.md) - * [Js中的堆栈](JavaScript/Js中的堆栈.md) - * [防抖与节流](JavaScript/防抖与节流.md) - * [Js的GC机制](JavaScript/Js的GC机制.md) - * [实现浅拷贝与深拷贝](JavaScript/实现浅拷贝与深拷贝.md) - * [Map与WeakMap](JavaScript/Map与WeakMap.md) - * [Set与WeakSet](JavaScript/Set与WeakSet.md) - * [Object对象](JavaScript/Object对象.md) - * [Js捕获异常的方法](JavaScript/Js捕获异常的方法.md) - * [Js中fetch方法](JavaScript/Js中fetch方法.md) - * [XML和JSON的比较](JavaScript/XML和JSON的比较.md) - * [Js文件异步加载](JavaScript/Js文件异步加载.md) - * [深入理解Js数组](JavaScript/深入理解Js数组.md) - * [模板语法的简单实现](JavaScript/模板语法的简单实现.md) - * [Thunk函数的使用](JavaScript/Thunk函数的使用.md) - * [async、await剖析](JavaScript/async、await剖析.md) - * [null和undefined的区别](JavaScript/null和undefined的区别.md) - * [Js创建对象的方式](JavaScript/Js创建对象的方式.md) - * [Js中RegExp对象](JavaScript/Js中RegExp对象.md) - * [Js中String对象](JavaScript/Js中String对象.md) - * [Js中Number对象](JavaScript/Js中Number对象.md) - * [Js中Math对象](JavaScript/Js中Math对象.md) - * [Js中数组空位问题](JavaScript/Js中数组空位问题.md) - * [Js中Array对象](JavaScript/Js中Array对象.md) - * [Js中Currying的应用](JavaScript/Js中Currying的应用.md) - * [Js中Date对象](JavaScript/Js中Date对象.md) - * [Js中Symbol对象](JavaScript/Js中Symbol对象.md) - * [valueOf与toString](JavaScript/valueOf与toString.md) - * [Js模块化开发的理解](JavaScript/Js模块化开发的理解.md) - * [常见的内存泄漏场景](JavaScript/常见的内存泄漏场景.md) - * [Js中Proxy对象](JavaScript/Js中Proxy对象.md) - * [Js中Reflect对象](JavaScript/Js中Reflect对象.md) - * [Js中的逻辑运算符](JavaScript/Js中的逻辑运算符.md) - * [Js将字符串转数字的方式](JavaScript/Js将字符串转数字的方式.md) - * [函数式编程的理解](JavaScript/函数式编程的理解.md) - * [Js实用小技巧](JavaScript/Js实用小技巧.md) - * [深入理解Js中的this](JavaScript/深入理解Js中的this.md) - * [Js中的位操作符](JavaScript/Js中的位操作符.md) - -* Browser - * [跨域问题](Browser/跨域问题.md) - * [XSS跨站脚本攻击](Browser/XSS跨站脚本攻击.md) - * [CSRF跨站请求伪造](Browser/CSRF跨站请求伪造.md) - * [SQL注入](Browser/SQL注入.md) - * [浏览器渲染与内核](Browser/浏览器渲染与内核.md) - * [浏览器重绘与回流](Browser/浏览器重绘与回流.md) - * [HTTP协议概述](Browser/HTTP协议概述.md) - * [CSS劫持攻击](Browser/CSS劫持攻击.md) - * [HTTPS加密传输过程](Browser/HTTPS加密传输过程.md) - * [对称加密与非对称加密](Browser/对称加密与非对称加密.md) - * [分布式SESSION一致性](Browser/分布式SESSION一致性.md) - * [TCP三次握手](Browser/TCP三次握手.md) - * [TCP与UDP异同](Browser/TCP与UDP异同.md) - * [浏览器事件](Browser/浏览器事件.md) - * [浏览器页面呈现过程](Browser/浏览器页面呈现过程.md) - * [RESTful架构与RPC架构](Browser/RESTful架构与RPC架构.md) - * [HTTP协议发展历程](Browser/HTTP协议发展历程.md) - * [微信小程序实现原理](Browser/微信小程序实现原理.md) - * [Window对象](Browser/Window对象.md) - * [OSI七层模型](Browser/OSI七层模型.md) - * [浏览器窗口间通信](Browser/浏览器窗口间通信.md) - * [OAUTH开放授权](Browser/OAUTH开放授权.md) - * [SSO单点登录](Browser/SSO单点登录.md) - * [DNS解析过程](Browser/DNS解析过程.md) - * [强缓存与协商缓存](Browser/强缓存与协商缓存.md) - * [GET和POST的区别](Browser/GET和POST的区别.md) - * [CDN缓存的理解](Browser/CDN缓存的理解.md) - * [domReady的理解](Browser/domReady的理解.md) - * [Document对象](Browser/Document对象.md) - * [Location对象](Browser/Location对象.md) - * [SSRF服务器端请求伪造](Browser/SSRF服务器端请求伪造.md) - * [浏览器本地存储方案](Browser/浏览器本地存储方案.md) - * [Node对象](Browser/Node对象.md) - * [History对象](Browser/History对象.md) - * [Navigator对象](Browser/Navigator对象.md) - * [Element对象](Browser/Element对象.md) - * [HTMLElement对象](Browser/HTMLElement对象.md) - * [Event对象](Browser/Event对象.md) - * [IntersectionObserver对象](Browser/IntersectionObserver对象.md) - * [MutationObserver对象](Browser/MutationObserver对象.md) - * [基于fetch的SSE方案](Browser/基于fetch的SSE方案.md) - -* Vue - * [Vue学习笔记](Vue/Vue学习笔记.md) - * [Vue-Cli4笔记](Vue/Vue-Cli4笔记.md) - * [Vue生命周期](Vue/Vue生命周期.md) - * [Vue中key的作用](Vue/Vue中key的作用.md) - * [Vue数据双向绑定](Vue/Vue数据双向绑定.md) - * [data为何以函数形式返回](Vue/data为何以函数形式返回.md) - * [Vue中$nextTick的理解](Vue/Vue中$nextTick的理解.md) - * [MVVM模式的理解](Vue/MVVM模式的理解.md) - * [v-if与v-show的区别](Vue/v-if与v-show的区别.md) - * [Vue中$refs的理解](Vue/Vue中$refs的理解.md) - * [Vue中虚拟DOM的理解](Vue/Vue中虚拟DOM的理解.md) - * [Vue中diff算法的理解](Vue/Vue中diff算法的理解.md) - * [$router和$route的区别](Vue/$router和$route的区别.md) - * [对keep-alive组件的理解](Vue/对keep-alive组件的理解.md) - * [SPA单页应用的优缺点](Vue/SPA单页应用的优缺点.md) - * [Vue事件绑定原理](Vue/Vue事件绑定原理.md) - * [Vue中数组变动监听](Vue/Vue中数组变动监听.md) - * [Vue父子组件生命周期](Vue/Vue父子组件生命周期.md) - * [Vue中computed分析](Vue/Vue中computed分析.md) - * [Vue路由Hash模式分析](Vue/Vue路由Hash模式分析.md) - * [Vue路由History模式分析](Vue/Vue路由History模式分析.md) - * [v-model数据绑定分析](Vue/v-model数据绑定分析.md) - * [Vue路由懒加载](Vue/Vue路由懒加载.md) - * [VueRouter导航守卫](Vue/VueRouter导航守卫.md) - * [服务端渲染SSR的理解](Vue/服务端渲染SSR的理解.md) - * [Vue常用性能优化](Vue/Vue常用性能优化.md) - * [Vuex和普通全局对象](Vue/Vuex和普通全局对象.md) - * [Vuex中的核心方法](Vue/Vuex中的核心方法.md) - * [Vue中组件间通信的方式](Vue/Vue中组件间通信的方式.md) - * [Vue3.0新特性](Vue/Vue3.0新特性.md) - * [Vue为何采用异步渲染](Vue/Vue为何采用异步渲染.md) - * [Vue中的三种Watcher](Vue/Vue中的三种Watcher.md) - * [v-html可能导致的问题](Vue/v-html可能导致的问题.md) - * [初探webpack之搭建Vue开发环境](Plugin/初探webpack之搭建Vue开发环境.md) - * [Vue首屏性能优化组件](Vue/Vue首屏性能优化组件.md) - -* React - * [React生命周期](React/React生命周期.md) - * [React虚拟DOM的理解](React/React虚拟DOM的理解.md) - * [React中JSX的理解](React/React中JSX的理解.md) - * [React组件的state和props](React/React组件的state和props.md) - * [有状态和无状态组件](React/有状态和无状态组件.md) - * [受控组件和非受控组件](React/受控组件和非受控组件.md) - * [React中的纯组件](React/React中的纯组件.md) - * [React中的高阶组件](React/React中的高阶组件.md) - * [React中refs的理解](React/React中refs的理解.md) - * [React中的合成事件](React/React中的合成事件.md) - * [ReactRouter的实现](React/ReactRouter的实现.md) - * [React中组件间通信的方式](React/React中组件间通信的方式.md) - * [React组件复用的方式](React/React组件复用的方式.md) - * [React中diff算法的理解](React/React中diff算法的理解.md) - * [Hooks中的useState](React/Hooks中的useState.md) - * [useEffect与useLayoutEffect](React/useEffect与useLayoutEffect.md) - * [useMemo与useCallback](React/useMemo与useCallback.md) - * [setState同步异步场景](React/setState同步异步场景.md) - * [手写useState与useEffect](React/手写useState与useEffect.md) - * [Mobx与Redux的异同](React/Mobx与Redux的异同.md) - * [Context与Reducer](React/Context与Reducer.md) - * [Hooks与普通函数的区别](React/Hooks与普通函数的区别.md) - * [Hooks与事件绑定](React/Hooks与事件绑定.md) - * [React闭包陷阱](React/React闭包陷阱.md) - * [ReactPortals传送门](React/ReactPortals传送门.md) - * [基于React的SSG渲染方案](React/基于React的SSG渲染方案.md) - -* Plugin - * [Git常用命令](Plugin/Git常用命令.md) - * [Git与SVN对比](Plugin/Git与SVN对比.md) - * [Nginx常用配置](Plugin/Nginx常用配置.md) - * [Rollup的基本使用](Plugin/Rollup的基本使用.md) - * [Jest中Mock网络请求](Plugin/Jest中Mock网络请求.md) - * [初探webpack之编写plugin](Plugin/初探webpack之编写plugin.md) - * [初探webpack之搭建Vue开发环境](Plugin/初探webpack之搭建Vue开发环境.md) - * [TS内置类型与拓展](Plugin/TS内置类型与拓展.md) - * [初探webpack之编写loader](Plugin/初探webpack之编写loader.md) - * [竞态问题与RxJs](Plugin/竞态问题与RxJs.md) - * [基于slate构建文档编辑器](Plugin/基于slate构建文档编辑器.md) - * [基于NoCode构建简历编辑器](Plugin/基于NoCode构建简历编辑器.md) - * [初探富文本之富文本概述](Plugin/初探富文本之富文本概述.md) - * [初探富文本之编辑器引擎](Plugin/初探富文本之编辑器引擎.md) - * [初探富文本之OT协同算法](Plugin/初探富文本之OT协同算法.md) - * [初探富文本之OT协同实例](Plugin/初探富文本之OT协同实例.md) - * [初探富文本之CRDT协同算法](Plugin/初探富文本之CRDT协同算法.md) - * [初探富文本之CRDT协同实例](Plugin/初探富文本之CRDT协同实例.md) - * [基于drawio构建流程图编辑器](Plugin/基于drawio构建流程图编辑器.md) - * [从零实现的Chrome扩展](Plugin/从零实现的Chrome扩展.md) - * [初探富文本之React实时预览](Plugin/初探富文本之React实时预览.md) - * [从零实现的浏览器Web脚本](Plugin/从零实现的浏览器Web脚本.md) - * [初探webpack之单应用多端构建](Plugin/初探webpack之单应用多端构建.md) - * [基于WebRTC的局域网文件传输](Plugin/基于WebRTC的局域网文件传输.md) - * [初探富文本之文档diff算法](Plugin/初探富文本之文档diff算法.md) - * [初探富文本之在线文档交付](Plugin/初探富文本之在线文档交付.md) - * [初探富文本之划词评论能力](Plugin/初探富文本之划词评论能力.md) - * [初探富文本之文档虚拟滚动](Plugin/初探富文本之文档虚拟滚动.md) - * [基于Chrome扩展的浏览器事件](Plugin/基于Chrome扩展的浏览器事件.md) - * [初探webpack之解析器resolver](Plugin/初探webpack之解析器resolver.md) - * [基于ServiceWorker的文件传输方案](Plugin/基于ServiceWorker的文件传输方案.md) - * [初探富文本之搜索替换算法](Plugin/初探富文本之搜索替换算法.md) - -* Patterns - * [简单工厂模式](Patterns/简单工厂模式.md) - * [工厂方法模式](Patterns/工厂方法模式.md) - * [抽象工厂模式](Patterns/抽象工厂模式.md) - * [建造者模式](Patterns/建造者模式.md) - * [原型模式](Patterns/原型模式.md) - * [单例模式](Patterns/单例模式.md) - * [外观模式](Patterns/外观模式.md) - * [适配器模式](Patterns/适配器模式.md) - * [代理模式](Patterns/代理模式.md) - * [装饰器模式](Patterns/装饰器模式.md) - * [桥接模式](Patterns/桥接模式.md) - * [组合模式](Patterns/组合模式.md) - * [享元模式](Patterns/享元模式.md) - * [模板方法模式](Patterns/模板方法模式.md) - * [观察者模式](Patterns/观察者模式.md) - * [状态模式](Patterns/状态模式.md) - * [策略模式](Patterns/策略模式.md) - * [责任链模式](Patterns/责任链模式.md) - * [命令模式](Patterns/命令模式.md) - * [访问者模式](Patterns/访问者模式.md) - * [中介者模式](Patterns/中介者模式.md) - * [备忘录模式](Patterns/备忘录模式.md) - * [迭代器模式](Patterns/迭代器模式.md) - * [解释器模式](Patterns/解释器模式.md) - * [链模式](Patterns/链模式.md) - * [委托模式](Patterns/委托模式.md) - * [数据访问对象模式](Patterns/数据访问对象模式.md) - * [防抖节流模式](Patterns/防抖节流模式.md) - * [简单模板模式](Patterns/简单模板模式.md) - * [惰性模式](Patterns/惰性模式.md) - * [参与者模式](Patterns/参与者模式.md) - * [等待者模式](Patterns/等待者模式.md) - * [同步模块模式](Patterns/同步模块模式.md) - * [异步模块模式](Patterns/异步模块模式.md) - * [Widget模式](Patterns/Widget模式.md) - * [MVC模式](Patterns/MVC模式.md) - * [MVP模式](Patterns/MVP模式.md) - * [MVVM模式](Patterns/MVVM模式.md) - -* Linux - * [简单安全防护](Security/简单安全防护.md) - * [Ubuntu16.04安装QQ机器人](Linux/Ubuntu16.04安装QQ机器人.md) - * [cat命令](Linux/cat命令.md) - * [chmod命令](Linux/chmod命令.md) - * [chown命令](Linux/chown命令.md) - * [cmp命令](Linux/cmp命令.md) - * [diff命令](Linux/diff命令.md) - * [diffstat命令](Linux/diffstat命令.md) - * [file命令](Linux/file命令.md) - * [find命令](Linux/find命令.md) - * [cut命令](Linux/cut命令.md) - * [ln命令](Linux/ln命令.md) - * [less命令](Linux/less命令.md) - * [locate命令](Linux/locate命令.md) - * [lsattr命令](Linux/lsattr命令.md) - * [chattr命令](Linux/chattr命令.md) - * [mc命令](Linux/mc命令.md) - * [mktemp命令](Linux/mktemp命令.md) - * [more命令](Linux/more命令.md) - * [mv命令](Linux/mv命令.md) - * [od命令](Linux/od命令.md) - * [paste命令](Linux/paste命令.md) - * [patch命令](Linux/patch命令.md) - * [rcp命令](Linux/rcp命令.md) - * [rm命令](Linux/rm命令.md) - * [split命令](Linux/split命令.md) - * [tee命令](Linux/tee命令.md) - * [tmpwatch命令](Linux/tmpwatch命令.md) - * [touch命令](Linux/touch命令.md) - * [umask命令](Linux/umask命令.md) - * [which命令](Linux/which命令.md) - * [cp命令](Linux/cp命令.md) - * [whereis命令](Linux/whereis命令.md) - * [scp命令](Linux/scp命令.md) - * [awk命令](Linux/awk命令.md) - * [read命令](Linux/read命令.md) - * [updatedb命令](Linux/updatedb命令.md) - * [col命令](Linux/col命令.md) - * [colrm命令](Linux/colrm命令.md) - * [comm命令](Linux/comm命令.md) - * [csplit命令](Linux/csplit命令.md) - * [ed命令](Linux/ed命令.md) - * [egrep命令](Linux/egrep命令.md) - * [ex命令](Linux/ex命令.md) - * [fgrep命令](Linux/fgrep命令.md) - * [fmt命令](Linux/fmt命令.md) - * [fold命令](Linux/fold命令.md) - * [grep命令](Linux/grep命令.md) - * [aspell命令](Linux/aspell命令.md) - * [join命令](Linux/join命令.md) - * [look命令](Linux/look命令.md) - * [pico命令](Linux/pico命令.md) - * [sed命令](Linux/sed命令.md) - * [sort命令](Linux/sort命令.md) - * [tr命令](Linux/tr命令.md) - * [expr命令](Linux/expr命令.md) - * [ps命令](Linux/ps命令.md) - * [netstat命令](Linux/netstat命令.md) - * [ifconfig命令](Linux/ifconfig命令.md) - * [traceroute命令](Linux/traceroute命令.md) - * [route命令](Linux/route命令.md) - * [kill命令](Linux/kill命令.md) - * [systemctl命令](Linux/systemctl命令.md) - * [journalctl命令](Linux/journalctl命令.md) - * [ip命令](Linux/ip命令.md) - * [curl命令](Linux/curl命令.md) - * [top命令](Linux/top命令.md) - -* MiniProgram - * [山科小站小程序](MiniProgram/山科小站小程序.md) - * [QQ小程序支付](Java/QQ小程序支付.md) - * [支付宝小程序user_id](MiniProgram/支付宝小程序user_id.md) - * [微信小程序校历组件](MiniProgram/微信小程序校历组件.md) - * [uniapp小程序迁移到TS](MiniProgram/uniapp小程序迁移到TS.md) - -* App - * [NvueWeex](App/NvueWeex.md) - -* PHP - * [ThinkPHP5.0漏洞测试](PHP/ThinkPHP5.0漏洞测试.md) - * [PHP验证码识别实例](IMGProcess/PHP验证码识别实例.md) - -* Java - * [QQ小程序支付](Java/QQ小程序支付.md) - -* Security - * [简单安全防护](Security/简单安全防护.md) - * [OD反汇编EXE添加一个启动时的消息框](Security/OD反汇编EXE添加一个启动时的消息框.md) - * [IDA反汇编EXE添加一个启动时的消息框](Security/IDA反汇编EXE添加一个启动时的消息框.md) - * [XSS跨站脚本攻击](Browser/XSS跨站脚本攻击.md) - * [CSRF跨站请求伪造](Browser/CSRF跨站请求伪造.md) - * [SQL注入](Browser/SQL注入.md) - * [CSS劫持攻击](Browser/CSS劫持攻击.md) - * [ThinkPHP5.0漏洞测试](PHP/ThinkPHP5.0漏洞测试.md) - * [SSRF服务器端请求伪造](Browser/SSRF服务器端请求伪造.md) - * [记ByteCTF中的Node题](Security/记ByteCTF中的Node题.md) - -* Environment - * [VScode配置CMD本地运行环境(2.0)](Environment/VScode配置CMD本地运行环境(2.0).md) - * [Recover刷机简介](Environment/Recover刷机简介.md) - * [Ubuntu16.04安装QQ机器人](Linux/Ubuntu16.04安装QQ机器人.md) - * [将SublimeText加入右键菜单](Environment/将SublimeText加入右键菜单.md) - * [手机抓包HTTPS](Environment/手机抓包HTTPS.md) - * [文本选中复制](Environment/文本选中复制.md) - * [发布Npm包到GitHub Packages](Environment/发布Npm包到GitHub%20Packages.md) - * [斐讯K3C改散热](Environment/斐讯K3C改散热.md) - * [解决ufw下pptp客户端连接问题](Environment/解决ufw下pptp客户端连接问题.md) - * [建立DNS隧道绕过校园网认证](Environment/建立DNS隧道绕过校园网认证.md) - -* IMGProcess - * [强智教务系统验证码识别OpenCV](IMGProcess/强智教务系统验证码识别OpenCV.md) - * [强智教务系统验证码识别TensorflowCNN](IMGProcess/强智教务系统验证码识别TensorflowCNN.md) - * [YOLOV3目标检测](IMGProcess/YOLOV3目标检测.md) - * [PHP验证码识别实例](IMGProcess/PHP验证码识别实例.md) - -* LeetCode - * [全排列](LeetCode/全排列.md) - * [括号生成](LeetCode/括号生成.md) - * [二进制求和](LeetCode/二进制求和.md) - * [顶端迭代器](LeetCode/顶端迭代器.md) - * [矩阵置零](LeetCode/矩阵置零.md) - * [栈排序](LeetCode/栈排序.md) - * [长度最小的子数组](LeetCode/长度最小的子数组.md) - * [字母移位](LeetCode/字母移位.md) - * [跳水板](LeetCode/跳水板.md) - * [路径总和](LeetCode/路径总和.md) - * [两个数组的交集II](LeetCode/两个数组的交集II.md) - * [全排列II](LeetCode/全排列II.md) - * [插入、删除和获取元素](LeetCode/插入、删除和获取元素.md) - * [最长公共前缀](LeetCode/最长公共前缀.md) - * [除数博弈](LeetCode/除数博弈.md) - * [环形数组循环](LeetCode/环形数组循环.md) - * [字符串相加](LeetCode/字符串相加.md) - * [有效的括号字符串](LeetCode/有效的括号字符串.md) - * [一次编辑](LeetCode/一次编辑.md) - * [被围绕的区域](LeetCode/被围绕的区域.md) - * [数组中的第K个最大元素](LeetCode/数组中的第K个最大元素.md) - * [提莫攻击](LeetCode/提莫攻击.md) - * [叶子相似的树](LeetCode/叶子相似的树.md) - * [二叉树的最小深度](LeetCode/二叉树的最小深度.md) - * [平衡二叉树](LeetCode/平衡二叉树.md) - * [电话号码的字母组合](LeetCode/电话号码的字母组合.md) - * [使括号有效的最少添加](LeetCode/使括号有效的最少添加.md) - * [二叉树的所有路径](LeetCode/二叉树的所有路径.md) - * [二叉树的层次遍历 II](LeetCode/二叉树的层次遍历%20II.md) - * [组合](LeetCode/组合.md) - * [翻转二叉树](LeetCode/翻转二叉树.md) - * [子集](LeetCode/子集.md) - * [二叉搜索树中的众数](LeetCode/二叉搜索树中的众数.md) - * [宝石与石头](LeetCode/宝石与石头.md) - * [反转字符串](LeetCode/反转字符串.md) - * [两两交换链表中的节点](LeetCode/两两交换链表中的节点.md) - * [长按键入](LeetCode/长按键入.md) - * [独一无二的出现次数](LeetCode/独一无二的出现次数.md) - * [两个数组的交集](LeetCode/两个数组的交集.md) - * [子集II](LeetCode/子集II.md) - * [最接近原点的K个点](LeetCode/最接近原点的K个点.md) - * [按奇偶排序数组II](LeetCode/按奇偶排序数组II.md) - * [根据身高重建队列](LeetCode/根据身高重建队列.md) - * [供暖器](LeetCode/供暖器.md) - * [上升下降字符串](LeetCode/上升下降字符串.md) - * [保持城市天际线](LeetCode/保持城市天际线.md) - * [不同路径](LeetCode/不同路径.md) - * [Dota2参议院](LeetCode/Dota2参议院.md) - * [单调递增的数字](LeetCode/单调递增的数字.md) - * [买卖股票的最佳时机含手续费](LeetCode/买卖股票的最佳时机含手续费.md) - * [字符串中的第一个唯一字符](LeetCode/字符串中的第一个唯一字符.md) - * [最后一块石头的重量](LeetCode/最后一块石头的重量.md) - * [种花问题](LeetCode/种花问题.md) - * [滑动窗口最大值](LeetCode/滑动窗口最大值.md) - * [汇总区间](LeetCode/汇总区间.md) - * [替换后的最长重复字符](LeetCode/替换后的最长重复字符.md) - -* Interview - * [百度实习生前端面试](Interview/百度实习生前端面试.md) - * [腾讯暑期日常实习前端面试](Interview/腾讯暑期日常实习前端面试.md) - * [美团暑期日常实习前端面试](Interview/美团暑期日常实习前端面试.md) - * [字节跳动暑期日常实习前端面试](Interview/字节跳动暑期日常实习前端面试.md) - * [记2021年实习春招历程](MyLife/记2021年实习春招历程.md) - * [字节跳动暑期实习前端面试](Interview/字节跳动暑期实习前端面试.md) - * [美团暑期实习前端面试](Interview/美团暑期实习前端面试.md) - * [蚂蚁暑期实习前端面试](Interview/蚂蚁暑期实习前端面试.md) - * [记2022年实习春招历程](MyLife/记2022年实习春招历程.md) - * [百度秋招提前批前端面试](Interview/百度秋招提前批前端面试.md) - * [大疆秋招提前批前端面试](Interview/大疆秋招提前批前端面试.md) - * [360秋招正式批前端面试](Interview/360秋招正式批前端面试.md) - * [联想秋招正式批前端面试](Interview/联想秋招正式批前端面试.md) - * [京东秋招正式批前端面试](Interview/京东秋招正式批前端面试.md) - * [顺丰秋招正式批前端面试](Interview/顺丰秋招正式批前端面试.md) - * [拼多多秋招正式批前端面试](Interview/拼多多秋招正式批前端面试.md) - * [携程秋招正式批前端面试](Interview/携程秋招正式批前端面试.md) - * [腾讯秋招正式批前端面试](Interview/腾讯秋招正式批前端面试.md) - * [记2022年秋招历程](MyLife/记2022年秋招历程.md) - -* MyLife - * [记一次有意思的种树比赛](MyLife/记一次有意思的种树比赛.md) - * [记2021年实习春招历程](MyLife/记2021年实习春招历程.md) - * [2021腾讯实习实录](MyLife/2021腾讯实习实录.md) - * [记ByteCTF中的Node题](Security/记ByteCTF中的Node题.md) - * [记2022年实习春招历程](MyLife/记2022年实习春招历程.md) - * [致我四年的大学生活](MyLife/致我四年的大学生活.md) - * [记2022年秋招历程](MyLife/记2022年秋招历程.md) - * [致我三年的研究生生活](MyLife/致我三年的研究生生活.md) - * [2022字节实习实录](MyLife/2022字节实习实录.md) - * [从大学开始搞的开源项目](MyLife/从大学开始搞的开源项目.md) - * [记一些日常的想法与思考](MyLife/记一些日常的想法与思考.md) diff --git a/README.md b/README.md index 64a78c9f..875c8267 100644 --- a/README.md +++ b/README.md @@ -15,444 +15,537 @@ 如果觉得还不错,点个`star`吧 😁 + +版本库中共有`487`篇文章,总计`90629`行,`1071772`字,`2978599`字符。 + + 这是一个前端小白的学习历程,如果只学习而不记录点什么那基本就等于白学了。这个版本库的名字`EveryDay`就是希望激励我能够每天学习,下面的文章就是从`2020.02.25`开始积累的文章,都是参考众多文章归纳整理学习而写的,文章包括了`HTML`基础、`CSS`基础、`JavaScript`基础与拓展、`Browser`浏览器相关、`Vue`使用与分析、`React`使用与分析、`Plugin`插件相关、`Patterns`设计模式、`Linux`命令、`LeetCode`题解等类别,内容都是比较基础的,毕竟我也还是个小白,此外基本上每个示例都是本着能够即时运行为目标的,新建一个`HTML`文件复制之后即可在浏览器运行或者直接可以在`console`中运行。 如果想按照笔记顺序进行阅读的话可以 [查看目录](./Timeline.md) ,另外如果想更条理地查看的话可以访问 [我的博客](https://blog.touchczy.top/),博客同时也是本版本库的`gh-pages`分支,是作为纯静态页面搭建在`Git Pages`上的,使用`jsdelivr`以及`cloudflare`作为缓存缓解国内访问速度问题。后期还在`gh-pages-ssg`分支上部署了`SSG`版本的 [新版博客](https://blog-ssg.touchczy.top/),并且借助`ChatGPT`提供了英文翻译版本,分支是部署在`Vercel`上来缓解国内访问速度问题。在博客中的内容就相对比较多了,除了学习笔记之外还有一些做项目时的记录以及遇到的坑等。`HXDM`如果觉得还不错,点个`star`吧,这个对我真的很重要。 - -## HTML -* [DOCTYPE](HTML/DOCTYPE.md) -* [HTML语义化](HTML/HTML语义化.md) -* [Cookie与Session](HTML/Cookie与Session.md) -* [LocalStorage与SessionStorage](HTML/LocalStorage与SessionStorage.md) -* [Iframe框架及优缺点](HTML/Iframe框架及优缺点.md) -* [HTML节点操作](HTML/HTML节点操作.md) -* [手动实现轮播图](HTML/手动实现轮播图功能.md) -* [Canvas基础](HTML/Canvas基础.md) -* [前端性能优化方案](HTML/前端性能优化方案.md) -* [HTML5新特性](HTML/HTML5新特性.md) -* [行内元素和块级元素](HTML/行内元素和块级元素.md) -* [图片等比例缩放方案](HTML/图片等比例缩放方案.md) -* [实现瀑布流布局](HTML/实现瀑布流布局.md) -* [实现图片懒加载](HTML/实现图片懒加载.md) -* [Web Worker](HTML/Web%20Worker.md) -* [300ms点击延迟](HTML/300ms点击延迟.md) -* [默认行为及阻止](HTML/默认行为及阻止.md) -* [可替换元素和非替换元素](HTML/可替换元素和非替换元素.md) -* [HTML与XHTML区别](HTML/HTML与XHTML区别.md) -* [常见的兼容性问题](HTML/常见的兼容性问题.md) -* [Attribute和Property的区别](HTML/Attribute和Property的区别.md) -* [实现拼图滑动验证码](HTML/实现拼图滑动验证码.md) -* [实现加载提示组件](HTML/实现加载提示组件.md) -* [实现消息提示组件](HTML/实现消息提示组件.md) -* [DOM和BOM的区别](HTML/DOM和BOM的区别.md) -* [实现三栏布局](HTML/实现三栏布局.md) -* [Shadow DOM的理解](HTML/Shadow%20DOM的理解.md) -* [Service Worker的应用](HTML/Service%20Worker的应用.md) -* [蒙层禁止页面滚动的方案](HTML/蒙层禁止页面滚动的方案.md) -* [SVG与foreignObject元素](HTML/SVG与foreignObject元素.md) - -## CSS -* [布局垂直居中](CSS/布局垂直居中.md) -* [伪类与伪元素](CSS/伪类与伪元素.md) -* [CSS盒子模型](CSS/CSS盒子模型.md) -* [CSS选择器](CSS/CSS选择器.md) -* [CSS样式优先级](CSS/CSS样式优先级.md) -* [Flex布局](CSS/Flex布局.md) -* [Grid布局](CSS/Grid布局.md) -* [Table布局](CSS/Table布局.md) -* [SVG基础](CSS/SVG基础.md) -* [CSS引入方式](CSS/CSS引入方式.md) -* [CSS3新特性](CSS/CSS3新特性.md) -* [响应式布局的实现](CSS/响应式布局的实现.md) -* [块级格式化上下文](CSS/块级格式化上下文.md) -* [Position定位](CSS/Position定位.md) -* [Float浮动](CSS/Float浮动.md) -* [文本溢出截断省略](CSS/文本溢出截断省略.md) -* [CSS隐藏元素的方法](CSS/CSS隐藏元素的方法.md) -* [如何避免FOUC](CSS/如何避免FOUC.md) -* [display的值及作用](CSS/display的值及作用.md) -* [CSS常用单位](CSS/CSS常用单位.md) -* [实现毛玻璃效果](CSS/实现毛玻璃效果.md) -* [CSS实现图形效果](CSS/CSS实现图形效果.md) -* [实现文字滚动播放](CSS/实现文字滚动播放.md) -* [CSS实现展开动画](CSS/CSS实现展开动画.md) -* [CSS实现渐隐渐现效果](CSS/CSS实现渐隐渐现效果.md) - -## JavaScript -* [手动实现AJAX](JavaScript/手动实现AJAX.md) -* [ES6新特性](JavaScript/ES6新特性.md) -* [原型与原型链](JavaScript/原型与原型链.md) -* [JavaScript闭包](JavaScript/JavaScript闭包.md) -* [JS变量提升](JavaScript/JS变量提升.md) -* [匿名函数与自执行函数](JavaScript/匿名函数与自执行函数.md) -* [apply、call、bind](JavaScript/apply、call、bind.md) -* [事件冒泡及阻止](JavaScript/事件冒泡及阻止.md) -* [JS事件流模型](JavaScript/JS事件流模型.md) -* [函数声明与函数表达式](JavaScript/函数声明与函数表达式.md) -* [JS中this的指向](JavaScript/JS中this的指向.md) -* [new运算符](JavaScript/new运算符.md) -* [Js遍历数组总结](JavaScript/Js遍历数组总结.md) -* [Promise对象](JavaScript/Promise对象.md) -* [async/await](JavaScript/async、await.md) -* [Generator函数](JavaScript/Generator函数.md) -* [Js中==与===](JavaScript/Js中==与===.md) -* [JavaScript选择器](JavaScript/JavaScript选择器.md) -* [Json Web Token](JavaScript/Json%20Web%20Token.md) -* [Js模块化导入导出](JavaScript/Js模块化导入导出.md) -* [let与const](JavaScript/let与const.md) -* [作用域与作用域链](JavaScript/作用域与作用域链.md) -* [Js异步机制](JavaScript/JavaScript异步机制.md) -* [Js数组操作](JavaScript/Js数组操作.md) -* [Js继承的实现方式](JavaScript/Js继承的实现方式.md) -* [Function与Object](JavaScript/Function与Object.md) -* [Js严格模式](JavaScript/Js严格模式.md) -* [Js箭头函数](JavaScript/Js箭头函数.md) -* [手动实现apply call bind](JavaScript/手动实现apply%20call%20bind.md) -* [Js遍历对象总结](JavaScript/Js遍历对象总结.md) -* [Js获取数据类型](JavaScript/Js获取数据类型.md) -* [手动实现Promise](JavaScript/手动实现Promise.md) -* [Js实现数组排序](JavaScript/Js实现数组排序.md) -* [defineProperty](JavaScript/defineProperty.md) -* [Js实现链表操作](JavaScript/Js实现链表操作.md) -* [getter与setter](JavaScript/getter与setter.md) -* [Js中的堆栈](JavaScript/Js中的堆栈.md) -* [防抖与节流](JavaScript/防抖与节流.md) -* [Js的GC机制](JavaScript/Js的GC机制.md) -* [实现浅拷贝与深拷贝](JavaScript/实现浅拷贝与深拷贝.md) -* [Map与WeakMap](JavaScript/Map与WeakMap.md) -* [Set与WeakSet](JavaScript/Set与WeakSet.md) -* [Object对象](JavaScript/Object对象.md) -* [Js捕获异常的方法](JavaScript/Js捕获异常的方法.md) -* [Js中fetch方法](JavaScript/Js中fetch方法.md) -* [XML和JSON的比较](JavaScript/XML和JSON的比较.md) -* [Js文件异步加载](JavaScript/Js文件异步加载.md) -* [深入理解Js数组](JavaScript/深入理解Js数组.md) -* [模板语法的简单实现](JavaScript/模板语法的简单实现.md) -* [Thunk函数的使用](JavaScript/Thunk函数的使用.md) -* [async/await剖析](JavaScript/async、await剖析.md) -* [null和undefined的区别](JavaScript/null和undefined的区别.md) -* [Js创建对象的方式](JavaScript/Js创建对象的方式.md) -* [Js中RegExp对象](JavaScript/Js中RegExp对象.md) -* [Js中String对象](JavaScript/Js中String对象.md) -* [Js中Number对象](JavaScript/Js中Number对象.md) -* [Js中Math对象](JavaScript/Js中Math对象.md) -* [Js中数组空位问题](JavaScript/Js中数组空位问题.md) -* [Js中Array对象](JavaScript/Js中Array对象.md) -* [Js中Currying的应用](JavaScript/Js中Currying的应用.md) -* [Js中Date对象](JavaScript/Js中Date对象.md) -* [Js中Symbol对象](JavaScript/Js中Symbol对象.md) -* [valueOf与toString](JavaScript/valueOf与toString.md) -* [Js模块化开发的理解](JavaScript/Js模块化开发的理解.md) -* [常见的内存泄漏场景](JavaScript/常见的内存泄漏场景.md) -* [Js中Proxy对象](JavaScript/Js中Proxy对象.md) -* [Js中Reflect对象](JavaScript/Js中Reflect对象.md) -* [Js中的逻辑运算符](JavaScript/Js中的逻辑运算符.md) -* [Js将字符串转数字的方式](JavaScript/Js将字符串转数字的方式.md) -* [函数式编程的理解](JavaScript/函数式编程的理解.md) -* [Js实用小技巧](JavaScript/Js实用小技巧.md) -* [深入理解Js中的this](JavaScript/深入理解Js中的this.md) -* [Js中的位操作符](JavaScript/Js中的位操作符.md) - -## Browser -* [跨域问题与解决方案](Browser/跨域问题.md) -* [XSS跨站脚本攻击](Browser/XSS跨站脚本攻击.md) -* [CSRF跨站请求伪造](Browser/CSRF跨站请求伪造.md) -* [SQL注入攻击](Browser/SQL注入.md) -* [浏览器渲染与内核](Browser/浏览器渲染与内核.md) -* [浏览器重绘与回流](Browser/浏览器重绘与回流.md) -* [HTTP协议概述](Browser/HTTP协议概述.md) -* [CSS劫持攻击](Browser/CSS劫持攻击.md) -* [HTTPS加密传输过程](Browser/HTTPS加密传输过程.md) -* [对称加密与非对称加密](Browser/对称加密与非对称加密.md) -* [分布式SESSION一致性](Browser/分布式SESSION一致性.md) -* [TCP三次握手](Browser/TCP三次握手.md) -* [TCP与UDP异同](Browser/TCP与UDP异同.md) -* [浏览器事件](Browser/浏览器事件.md) -* [浏览器页面呈现过程](Browser/浏览器页面呈现过程.md) -* [RESTful架构与RPC架构](Browser/RESTful架构与RPC架构.md) -* [HTTP协议发展历程](Browser/HTTP协议发展历程.md) -* [微信小程序实现原理](Browser/微信小程序实现原理.md) -* [Window对象](Browser/Window对象.md) -* [OSI七层模型](Browser/OSI七层模型.md) -* [浏览器窗口间通信](Browser/浏览器窗口间通信.md) -* [OAUTH开放授权](Browser/OAUTH开放授权.md) -* [SSO单点登录](Browser/SSO单点登录.md) -* [DNS解析过程](Browser/DNS解析过程.md) -* [强缓存与协商缓存](Browser/强缓存与协商缓存.md) -* [GET和POST的区别](Browser/GET和POST的区别.md) -* [CDN缓存的理解](Browser/CDN缓存的理解.md) -* [domReady的理解](Browser/domReady的理解.md) -* [Document对象](Browser/Document对象.md) -* [Location对象](Browser/Location对象.md) -* [SSRF服务器端请求伪造](Browser/SSRF服务器端请求伪造.md) -* [浏览器本地存储方案](Browser/浏览器本地存储方案.md) -* [Node对象](Browser/Node对象.md) -* [History对象](Browser/History对象.md) -* [Navigator对象](Browser/Navigator对象.md) -* [Element对象](Browser/Element对象.md) -* [HTMLElement对象](Browser/HTMLElement对象.md) -* [Event对象](Browser/Event对象.md) -* [IntersectionObserver对象](Browser/IntersectionObserver对象.md) -* [MutationObserver对象](Browser/MutationObserver对象.md) -* [基于fetch的SSE方案](Browser/基于fetch的SSE方案.md) - -## Vue -* [Vue生命周期](Vue/Vue生命周期.md) -* [Vue中key的作用](Vue/Vue中key的作用.md) -* [Vue数据双向绑定](Vue/Vue数据双向绑定.md) -* [data为何以函数形式返回](Vue/data为何以函数形式返回.md) -* [Vue中$nextTick的理解](Vue/Vue中$nextTick的理解.md) -* [MVVM模式的理解](Vue/MVVM模式的理解.md) -* [v-if与v-show的区别](Vue/v-if与v-show的区别.md) -* [Vue中$refs的理解](Vue/Vue中$refs的理解.md) -* [Vue中虚拟DOM的理解](Vue/Vue中虚拟DOM的理解.md) -* [Vue中diff算法的理解](Vue/Vue中diff算法的理解.md) -* [$router和$route的区别](Vue/$router和$route的区别.md) -* [对keep-alive组件的理解](Vue/对keep-alive组件的理解.md) -* [SPA单页应用的优缺点](Vue/SPA单页应用的优缺点.md) -* [Vue事件绑定原理](Vue/Vue事件绑定原理.md) -* [Vue中数组变动监听](Vue/Vue中数组变动监听.md) -* [Vue父子组件生命周期](Vue/Vue父子组件生命周期.md) -* [Vue中computed分析](Vue/Vue中computed分析.md) -* [Vue路由Hash模式分析](Vue/Vue路由Hash模式分析.md) -* [Vue路由History模式分析](Vue/Vue路由History模式分析.md) -* [v-model数据绑定分析](Vue/v-model数据绑定分析.md) -* [Vue路由懒加载](Vue/Vue路由懒加载.md) -* [VueRouter导航守卫](Vue/VueRouter导航守卫.md) -* [服务端渲染SSR的理解](Vue/服务端渲染SSR的理解.md) -* [Vue常用性能优化](Vue/Vue常用性能优化.md) -* [Vuex和普通全局对象](Vue/Vuex和普通全局对象.md) -* [Vuex中的核心方法](Vue/Vuex中的核心方法.md) -* [Vue中组件间通信的方式](Vue/Vue中组件间通信的方式.md) -* [Vue3.0新特性](Vue/Vue3.0新特性.md) -* [Vue为何采用异步渲染](Vue/Vue为何采用异步渲染.md) -* [Vue中的三种Watcher](Vue/Vue中的三种Watcher.md) -* [v-html可能导致的问题](Vue/v-html可能导致的问题.md) -* [Vue首屏性能优化组件](Vue/Vue首屏性能优化组件.md) - -## React -* [React生命周期](React/React生命周期.md) -* [React虚拟DOM的理解](React/React虚拟DOM的理解.md) -* [React中JSX的理解](React/React中JSX的理解.md) -* [React组件的state和props](React/React组件的state和props.md) -* [有状态和无状态组件](React/有状态和无状态组件.md) -* [受控组件和非受控组件](React/受控组件和非受控组件.md) -* [React中的纯组件](React/React中的纯组件.md) -* [React中的高阶组件](React/React中的高阶组件.md) -* [React中refs的理解](React/React中refs的理解.md) -* [React中的合成事件](React/React中的合成事件.md) -* [ReactRouter的实现](React/ReactRouter的实现.md) -* [React中组件间通信的方式](React/React中组件间通信的方式.md) -* [React组件复用的方式](React/React组件复用的方式.md) -* [React中diff算法的理解](React/React中diff算法的理解.md) -* [Hooks中的useState](React/Hooks中的useState.md) -* [useEffect与useLayoutEffect](React/useEffect与useLayoutEffect.md) -* [useMemo与useCallback](React/useMemo与useCallback.md) -* [setState同步异步场景](React/setState同步异步场景.md) -* [手写useState与useEffect](React/手写useState与useEffect.md) -* [Mobx与Redux的异同](React/Mobx与Redux的异同.md) -* [Context与Reducer](React/Context与Reducer.md) -* [Hooks与普通函数的区别](React/Hooks与普通函数的区别.md) -* [Hooks与事件绑定](React/Hooks与事件绑定.md) -* [React闭包陷阱](React/React闭包陷阱.md) -* [ReactPortals传送门](React/ReactPortals传送门.md) -* [基于React的SSG渲染方案](React/基于React的SSG渲染方案.md) - -## Plugin -* [Git常用命令](Plugin/Git常用命令.md) -* [Git与SVN对比](Plugin/Git与SVN对比.md) -* [Nginx常用配置](Plugin/Nginx常用配置.md) -* [Rollup的基本使用](Plugin/Rollup的基本使用.md) -* [Jest中Mock网络请求](Plugin/Jest中Mock网络请求.md) -* [初探webpack之编写plugin](Plugin/初探webpack之编写plugin.md) -* [初探webpack之从零搭建Vue开发环境](Plugin/初探webpack之搭建Vue开发环境.md) -* [TS内置类型与拓展](Plugin/TS内置类型与拓展.md) -* [初探webpack之编写loader](Plugin/初探webpack之编写loader.md) -* [竞态问题与RxJs](Plugin/竞态问题与RxJs.md) -* [基于slate构建文档编辑器](Plugin/基于slate构建文档编辑器.md) -* [基于NoCode构建简历编辑器](Plugin/基于NoCode构建简历编辑器.md) -* [初探富文本之富文本概述](Plugin/初探富文本之富文本概述.md) -* [初探富文本之编辑器引擎](Plugin/初探富文本之编辑器引擎.md) -* [初探富文本之OT协同算法](Plugin/初探富文本之OT协同算法.md) -* [初探富文本之OT协同实例](Plugin/初探富文本之OT协同实例.md) -* [初探富文本之CRDT协同算法](Plugin/初探富文本之CRDT协同算法.md) -* [初探富文本之CRDT协同实例](Plugin/初探富文本之CRDT协同实例.md) -* [基于drawio构建流程图编辑器](Plugin/基于drawio构建流程图编辑器.md) -* [从零实现的Chrome扩展](Plugin/从零实现的Chrome扩展.md) -* [初探富文本之React实时预览](Plugin/初探富文本之React实时预览.md) -* [从零实现的浏览器Web脚本](Plugin/从零实现的浏览器Web脚本.md) -* [初探webpack之单应用多端构建](Plugin/初探webpack之单应用多端构建.md) -* [基于WebRTC的局域网文件传输](Plugin/基于WebRTC的局域网文件传输.md) -* [初探富文本之文档diff算法](Plugin/初探富文本之文档diff算法.md) -* [初探富文本之在线文档交付](Plugin/初探富文本之在线文档交付.md) -* [初探富文本之划词评论能力](Plugin/初探富文本之划词评论能力.md) -* [初探富文本之文档虚拟滚动](Plugin/初探富文本之文档虚拟滚动.md) -* [基于Chrome扩展的浏览器事件](Plugin/基于Chrome扩展的浏览器事件.md) -* [初探webpack之解析器resolver](Plugin/初探webpack之解析器resolver.md) -* [基于ServiceWorker的文件传输方案](Plugin/基于ServiceWorker的文件传输方案.md) -* [初探富文本之搜索替换算法](Plugin/初探富文本之搜索替换算法.md) - -## Patterns -* [简单工厂模式](Patterns/简单工厂模式.md) -* [工厂方法模式](Patterns/工厂方法模式.md) -* [抽象工厂模式](Patterns/抽象工厂模式.md) -* [建造者模式](Patterns/建造者模式.md) -* [原型模式](Patterns/原型模式.md) -* [单例模式](Patterns/单例模式.md) -* [外观模式](Patterns/外观模式.md) -* [适配器模式](Patterns/适配器模式.md) -* [代理模式](Patterns/代理模式.md) -* [装饰器模式](Patterns/装饰器模式.md) -* [桥接模式](Patterns/桥接模式.md) -* [组合模式](Patterns/组合模式.md) -* [享元模式](Patterns/享元模式.md) -* [模板方法模式](Patterns/模板方法模式.md) -* [观察者模式](Patterns/观察者模式.md) -* [状态模式](Patterns/状态模式.md) -* [策略模式](Patterns/策略模式.md) -* [责任链模式](Patterns/责任链模式.md) -* [命令模式](Patterns/命令模式.md) -* [访问者模式](Patterns/访问者模式.md) -* [中介者模式](Patterns/中介者模式.md) -* [备忘录模式](Patterns/备忘录模式.md) -* [迭代器模式](Patterns/迭代器模式.md) -* [解释器模式](Patterns/解释器模式.md) -* [链模式](Patterns/链模式.md) -* [委托模式](Patterns/委托模式.md) -* [数据访问对象模式](Patterns/数据访问对象模式.md) -* [防抖节流模式](Patterns/防抖节流模式.md) -* [简单模板模式](Patterns/简单模板模式.md) -* [惰性模式](Patterns/惰性模式.md) -* [参与者模式](Patterns/参与者模式.md) -* [等待者模式](Patterns/等待者模式.md) -* [同步模块模式](Patterns/同步模块模式.md) -* [异步模块模式](Patterns/异步模块模式.md) -* [Widget模式](Patterns/Widget模式.md) -* [MVC模式](Patterns/MVC模式.md) -* [MVVM模式](Patterns/MVVM模式.md) - -## Linux -* [cat命令](Linux/cat命令.md) -* [chmod命令](Linux/chmod命令.md) -* [chown命令](Linux/chown命令.md) -* [cmp命令](Linux/cmp命令.md) -* [diff命令](Linux/diff命令.md) -* [diffstat命令](Linux/diffstat命令.md) -* [file命令](Linux/file命令.md) -* [find命令](Linux/find命令.md) -* [cut命令](Linux/cut命令.md) -* [ln命令](Linux/ln命令.md) -* [less命令](Linux/less命令.md) -* [locate命令](Linux/locate命令.md) -* [lsattr命令](Linux/lsattr命令.md) -* [chattr命令](Linux/chattr命令.md) -* [mc命令](Linux/mc命令.md) -* [mktemp命令](Linux/mktemp命令.md) -* [more命令](Linux/more命令.md) -* [mv命令](Linux/mv命令.md) -* [od命令](Linux/od命令.md) -* [paste命令](Linux/paste命令.md) -* [patch命令](Linux/patch命令.md) -* [rcp命令](Linux/rcp命令.md) -* [rm命令](Linux/rm命令.md) -* [split命令](Linux/split命令.md) -* [tee命令](Linux/tee命令.md) -* [tmpwatch命令](Linux/tmpwatch命令.md) -* [touch命令](Linux/touch命令.md) -* [umask命令](Linux/umask命令.md) -* [which命令](Linux/which命令.md) -* [cp命令](Linux/cp命令.md) -* [whereis命令](Linux/whereis命令.md) -* [scp命令](Linux/scp命令.md) -* [awk命令](Linux/awk命令.md) -* [read命令](Linux/read命令.md) -* [updatedb命令](Linux/updatedb命令.md) -* [col命令](Linux/col命令.md) -* [colrm命令](Linux/colrm命令.md) -* [comm命令](Linux/comm命令.md) -* [csplit命令](Linux/csplit命令.md) -* [ed命令](Linux/ed命令.md) -* [egrep命令](Linux/egrep命令.md) -* [ex命令](Linux/ex命令.md) -* [fgrep命令](Linux/fgrep命令.md) -* [fmt命令](Linux/fmt命令.md) -* [fold命令](Linux/fold命令.md) -* [grep命令](Linux/grep命令.md) -* [aspell命令](Linux/aspell命令.md) -* [join命令](Linux/join命令.md) -* [look命令](Linux/look命令.md) -* [pico命令](Linux/pico命令.md) -* [sed命令](Linux/sed命令.md) -* [sort命令](Linux/sort命令.md) -* [tr命令](Linux/tr命令.md) -* [expr命令](Linux/expr命令.md) -* [ps命令](Linux/ps命令.md) -* [netstat命令](Linux/netstat命令.md) -* [ifconfig命令](Linux/ifconfig命令.md) -* [traceroute命令](Linux/traceroute命令.md) -* [route命令](Linux/route命令.md) -* [kill命令](Linux/kill命令.md) -* [systemctl命令](Linux/systemctl命令.md) -* [journalctl命令](Linux/journalctl命令.md) -* [ip命令](Linux/ip命令.md) -* [curl命令](Linux/curl命令.md) -* [top命令](Linux/top命令.md) - -## LeetCode -* [全排列](LeetCode/全排列.md) -* [括号生成](LeetCode/括号生成.md) -* [二进制求和](LeetCode/二进制求和.md) -* [顶端迭代器](LeetCode/顶端迭代器.md) -* [矩阵置零](LeetCode/矩阵置零.md) -* [栈排序](LeetCode/栈排序.md) -* [长度最小的子数组](LeetCode/长度最小的子数组.md) -* [字母移位](LeetCode/字母移位.md) -* [跳水板](LeetCode/跳水板.md) -* [路径总和](LeetCode/路径总和.md) -* [两个数组的交集II](LeetCode/两个数组的交集II.md) -* [全排列II](LeetCode/全排列II.md) -* [插入、删除和获取元素](LeetCode/插入、删除和获取元素.md) -* [最长公共前缀](LeetCode/最长公共前缀.md) -* [除数博弈](LeetCode/除数博弈.md) -* [环形数组循环](LeetCode/环形数组循环.md) -* [字符串相加](LeetCode/字符串相加.md) -* [有效的括号字符串](LeetCode/有效的括号字符串.md) -* [一次编辑](LeetCode/一次编辑.md) -* [被围绕的区域](LeetCode/被围绕的区域.md) -* [数组中的第K个最大元素](LeetCode/数组中的第K个最大元素.md) -* [提莫攻击](LeetCode/提莫攻击.md) -* [叶子相似的树](LeetCode/叶子相似的树.md) -* [二叉树的最小深度](LeetCode/二叉树的最小深度.md) -* [平衡二叉树](LeetCode/平衡二叉树.md) -* [电话号码的字母组合](LeetCode/电话号码的字母组合.md) -* [使括号有效的最少添加](LeetCode/使括号有效的最少添加.md) -* [二叉树的所有路径](LeetCode/二叉树的所有路径.md) -* [二叉树的层次遍历 II](LeetCode/二叉树的层次遍历%20II.md) -* [组合](LeetCode/组合.md) -* [翻转二叉树](LeetCode/翻转二叉树.md) -* [子集](LeetCode/子集.md) -* [二叉搜索树中的众数](LeetCode/二叉搜索树中的众数.md) -* [宝石与石头](LeetCode/宝石与石头.md) -* [反转字符串](LeetCode/反转字符串.md) -* [两两交换链表中的节点](LeetCode/两两交换链表中的节点.md) -* [长按键入](LeetCode/长按键入.md) -* [独一无二的出现次数](LeetCode/独一无二的出现次数.md) -* [两个数组的交集](LeetCode/两个数组的交集.md) -* [子集II](LeetCode/子集II.md) -* [最接近原点的K个点](LeetCode/最接近原点的K个点.md) -* [按奇偶排序数组II](LeetCode/按奇偶排序数组II.md) -* [根据身高重建队列](LeetCode/根据身高重建队列.md) -* [供暖器](LeetCode/供暖器.md) -* [上升下降字符串](LeetCode/上升下降字符串.md) -* [保持城市天际线](LeetCode/保持城市天际线.md) -* [不同路径](LeetCode/不同路径.md) -* [Dota2参议院](LeetCode/Dota2参议院.md) -* [单调递增的数字](LeetCode/单调递增的数字.md) -* [买卖股票的最佳时机含手续费](LeetCode/买卖股票的最佳时机含手续费.md) -* [字符串中的第一个唯一字符](LeetCode/字符串中的第一个唯一字符.md) -* [最后一块石头的重量](LeetCode/最后一块石头的重量.md) -* [种花问题](LeetCode/种花问题.md) -* [滑动窗口最大值](LeetCode/滑动窗口最大值.md) -* [汇总区间](LeetCode/汇总区间.md) -* [替换后的最长重复字符](LeetCode/替换后的最长重复字符.md) + +## HTML +* [DOCTYPE](HTML/DOCTYPE.md) +* [HTML语义化](HTML/HTML语义化.md) +* [Cookie与Session](HTML/Cookie与Session.md) +* [LocalStorage与SessionStorage](HTML/LocalStorage与SessionStorage.md) +* [Iframe框架及优缺点](HTML/Iframe框架及优缺点.md) +* [HTML节点操作](HTML/HTML节点操作.md) +* [手动实现轮播图功能](HTML/手动实现轮播图功能.md) +* [Canvas基础](HTML/Canvas基础.md) +* [前端性能优化方案](HTML/前端性能优化方案.md) +* [HTML5新特性](HTML/HTML5新特性.md) +* [行内元素和块级元素](HTML/行内元素和块级元素.md) +* [图片等比例缩放方案](HTML/图片等比例缩放方案.md) +* [实现瀑布流布局](HTML/实现瀑布流布局.md) +* [实现图片懒加载](HTML/实现图片懒加载.md) +* [Web Worker](HTML/Web%20Worker.md) +* [300ms点击延迟](HTML/300ms点击延迟.md) +* [默认行为及阻止](HTML/默认行为及阻止.md) +* [可替换元素和非替换元素](HTML/可替换元素和非替换元素.md) +* [HTML与XHTML区别](HTML/HTML与XHTML区别.md) +* [常见的兼容性问题](HTML/常见的兼容性问题.md) +* [Attribute和Property的区别](HTML/Attribute和Property的区别.md) +* [实现拼图滑动验证码](HTML/实现拼图滑动验证码.md) +* [实现加载提示组件](HTML/实现加载提示组件.md) +* [实现消息提示组件](HTML/实现消息提示组件.md) +* [DOM和BOM的区别](HTML/DOM和BOM的区别.md) +* [实现三栏布局](HTML/实现三栏布局.md) +* [Shadow DOM的理解](HTML/Shadow%20DOM的理解.md) +* [Service Worker的应用](HTML/Service%20Worker的应用.md) +* [蒙层禁止页面滚动的方案](HTML/蒙层禁止页面滚动的方案.md) +* [SVG与foreignObject元素](HTML/SVG与foreignObject元素.md) + +## CSS +* [布局垂直居中](CSS/布局垂直居中.md) +* [伪类与伪元素](CSS/伪类与伪元素.md) +* [CSS盒子模型](CSS/CSS盒子模型.md) +* [CSS选择器](CSS/CSS选择器.md) +* [CSS样式优先级](CSS/CSS样式优先级.md) +* [Flex布局](CSS/Flex布局.md) +* [Grid布局](CSS/Grid布局.md) +* [Table布局](CSS/Table布局.md) +* [SVG基础](CSS/SVG基础.md) +* [CSS引入方式](CSS/CSS引入方式.md) +* [CSS3新特性](CSS/CSS3新特性.md) +* [响应式布局的实现](CSS/响应式布局的实现.md) +* [块级格式化上下文](CSS/块级格式化上下文.md) +* [Position定位](CSS/Position定位.md) +* [Float浮动](CSS/Float浮动.md) +* [文本溢出截断省略](CSS/文本溢出截断省略.md) +* [CSS隐藏元素的方法](CSS/CSS隐藏元素的方法.md) +* [如何避免FOUC](CSS/如何避免FOUC.md) +* [display的值及作用](CSS/display的值及作用.md) +* [CSS常用单位](CSS/CSS常用单位.md) +* [实现毛玻璃效果](CSS/实现毛玻璃效果.md) +* [CSS实现图形效果](CSS/CSS实现图形效果.md) +* [实现文字滚动播放](CSS/实现文字滚动播放.md) +* [CSS实现展开动画](CSS/CSS实现展开动画.md) +* [CSS实现渐隐渐现效果](CSS/CSS实现渐隐渐现效果.md) + +## JavaScript +* [手动实现AJAX](JavaScript/手动实现AJAX.md) +* [ES6新特性](JavaScript/ES6新特性.md) +* [原型与原型链](JavaScript/原型与原型链.md) +* [JavaScript闭包](JavaScript/JavaScript闭包.md) +* [JS变量提升](JavaScript/JS变量提升.md) +* [匿名函数与自执行函数](JavaScript/匿名函数与自执行函数.md) +* [apply、call、bind](JavaScript/apply、call、bind.md) +* [事件冒泡及阻止](JavaScript/事件冒泡及阻止.md) +* [JS事件流模型](JavaScript/JS事件流模型.md) +* [函数声明与函数表达式](JavaScript/函数声明与函数表达式.md) +* [JS中this的指向](JavaScript/JS中this的指向.md) +* [new运算符](JavaScript/new运算符.md) +* [Js遍历数组总结](JavaScript/Js遍历数组总结.md) +* [Promise对象](JavaScript/Promise对象.md) +* [async、await](JavaScript/async、await.md) +* [Generator函数](JavaScript/Generator函数.md) +* [Js中==与===](JavaScript/Js中==与===.md) +* [JavaScript选择器](JavaScript/JavaScript选择器.md) +* [Json Web Token](JavaScript/Json%20Web%20Token.md) +* [Js模块化导入导出](JavaScript/Js模块化导入导出.md) +* [let与const](JavaScript/let与const.md) +* [作用域与作用域链](JavaScript/作用域与作用域链.md) +* [JavaScript异步机制](JavaScript/JavaScript异步机制.md) +* [Js数组操作](JavaScript/Js数组操作.md) +* [Js继承的实现方式](JavaScript/Js继承的实现方式.md) +* [Function与Object](JavaScript/Function与Object.md) +* [Js严格模式](JavaScript/Js严格模式.md) +* [Js箭头函数](JavaScript/Js箭头函数.md) +* [手动实现apply call bind](JavaScript/手动实现apply%20call%20bind.md) +* [Js遍历对象总结](JavaScript/Js遍历对象总结.md) +* [Js获取数据类型](JavaScript/Js获取数据类型.md) +* [手动实现Promise](JavaScript/手动实现Promise.md) +* [Js实现数组排序](JavaScript/Js实现数组排序.md) +* [defineProperty](JavaScript/defineProperty.md) +* [Js实现链表操作](JavaScript/Js实现链表操作.md) +* [getter与setter](JavaScript/getter与setter.md) +* [Js中的堆栈](JavaScript/Js中的堆栈.md) +* [防抖与节流](JavaScript/防抖与节流.md) +* [Js的GC机制](JavaScript/Js的GC机制.md) +* [实现浅拷贝与深拷贝](JavaScript/实现浅拷贝与深拷贝.md) +* [Map与WeakMap](JavaScript/Map与WeakMap.md) +* [Set与WeakSet](JavaScript/Set与WeakSet.md) +* [Object对象](JavaScript/Object对象.md) +* [Js捕获异常的方法](JavaScript/Js捕获异常的方法.md) +* [Js中fetch方法](JavaScript/Js中fetch方法.md) +* [XML和JSON的比较](JavaScript/XML和JSON的比较.md) +* [Js文件异步加载](JavaScript/Js文件异步加载.md) +* [深入理解Js数组](JavaScript/深入理解Js数组.md) +* [模板语法的简单实现](JavaScript/模板语法的简单实现.md) +* [Thunk函数的使用](JavaScript/Thunk函数的使用.md) +* [async、await剖析](JavaScript/async、await剖析.md) +* [null和undefined的区别](JavaScript/null和undefined的区别.md) +* [Js创建对象的方式](JavaScript/Js创建对象的方式.md) +* [Js中RegExp对象](JavaScript/Js中RegExp对象.md) +* [Js中String对象](JavaScript/Js中String对象.md) +* [Js中Number对象](JavaScript/Js中Number对象.md) +* [Js中Math对象](JavaScript/Js中Math对象.md) +* [Js中数组空位问题](JavaScript/Js中数组空位问题.md) +* [Js中Array对象](JavaScript/Js中Array对象.md) +* [Js中Currying的应用](JavaScript/Js中Currying的应用.md) +* [Js中Date对象](JavaScript/Js中Date对象.md) +* [Js中Symbol对象](JavaScript/Js中Symbol对象.md) +* [valueOf与toString](JavaScript/valueOf与toString.md) +* [Js模块化开发的理解](JavaScript/Js模块化开发的理解.md) +* [常见的内存泄漏场景](JavaScript/常见的内存泄漏场景.md) +* [Js中Proxy对象](JavaScript/Js中Proxy对象.md) +* [Js中Reflect对象](JavaScript/Js中Reflect对象.md) +* [Js中的逻辑运算符](JavaScript/Js中的逻辑运算符.md) +* [Js将字符串转数字的方式](JavaScript/Js将字符串转数字的方式.md) +* [函数式编程的理解](JavaScript/函数式编程的理解.md) +* [Js实用小技巧](JavaScript/Js实用小技巧.md) +* [深入理解Js中的this](JavaScript/深入理解Js中的this.md) +* [Js中的位操作符](JavaScript/Js中的位操作符.md) + +## Browser +* [跨域问题](Browser/跨域问题.md) +* [XSS跨站脚本攻击](Browser/XSS跨站脚本攻击.md) +* [CSRF跨站请求伪造](Browser/CSRF跨站请求伪造.md) +* [SQL注入](Browser/SQL注入.md) +* [浏览器渲染与内核](Browser/浏览器渲染与内核.md) +* [浏览器重绘与回流](Browser/浏览器重绘与回流.md) +* [HTTP协议概述](Browser/HTTP协议概述.md) +* [CSS劫持攻击](Browser/CSS劫持攻击.md) +* [HTTPS加密传输过程](Browser/HTTPS加密传输过程.md) +* [对称加密与非对称加密](Browser/对称加密与非对称加密.md) +* [分布式SESSION一致性](Browser/分布式SESSION一致性.md) +* [TCP三次握手](Browser/TCP三次握手.md) +* [TCP与UDP异同](Browser/TCP与UDP异同.md) +* [浏览器事件](Browser/浏览器事件.md) +* [浏览器页面呈现过程](Browser/浏览器页面呈现过程.md) +* [RESTful架构与RPC架构](Browser/RESTful架构与RPC架构.md) +* [HTTP协议发展历程](Browser/HTTP协议发展历程.md) +* [微信小程序实现原理](Browser/微信小程序实现原理.md) +* [Window对象](Browser/Window对象.md) +* [OSI七层模型](Browser/OSI七层模型.md) +* [浏览器窗口间通信](Browser/浏览器窗口间通信.md) +* [OAUTH开放授权](Browser/OAUTH开放授权.md) +* [SSO单点登录](Browser/SSO单点登录.md) +* [DNS解析过程](Browser/DNS解析过程.md) +* [强缓存与协商缓存](Browser/强缓存与协商缓存.md) +* [GET和POST的区别](Browser/GET和POST的区别.md) +* [CDN缓存的理解](Browser/CDN缓存的理解.md) +* [domReady的理解](Browser/domReady的理解.md) +* [Document对象](Browser/Document对象.md) +* [Location对象](Browser/Location对象.md) +* [SSRF服务器端请求伪造](Browser/SSRF服务器端请求伪造.md) +* [浏览器本地存储方案](Browser/浏览器本地存储方案.md) +* [Node对象](Browser/Node对象.md) +* [History对象](Browser/History对象.md) +* [Navigator对象](Browser/Navigator对象.md) +* [Element对象](Browser/Element对象.md) +* [HTMLElement对象](Browser/HTMLElement对象.md) +* [Event对象](Browser/Event对象.md) +* [IntersectionObserver对象](Browser/IntersectionObserver对象.md) +* [MutationObserver对象](Browser/MutationObserver对象.md) +* [基于fetch的SSE方案](Browser/基于fetch的SSE方案.md) + +## Vue +* [Vue学习笔记](Vue/Vue学习笔记.md) +* [Vue-Cli4笔记](Vue/Vue-Cli4笔记.md) +* [Vue生命周期](Vue/Vue生命周期.md) +* [Vue中key的作用](Vue/Vue中key的作用.md) +* [Vue数据双向绑定](Vue/Vue数据双向绑定.md) +* [data为何以函数形式返回](Vue/data为何以函数形式返回.md) +* [Vue中$nextTick的理解](Vue/Vue中$nextTick的理解.md) +* [MVVM模式的理解](Vue/MVVM模式的理解.md) +* [v-if与v-show的区别](Vue/v-if与v-show的区别.md) +* [Vue中$refs的理解](Vue/Vue中$refs的理解.md) +* [Vue中虚拟DOM的理解](Vue/Vue中虚拟DOM的理解.md) +* [Vue中diff算法的理解](Vue/Vue中diff算法的理解.md) +* [$router和$route的区别](Vue/$router和$route的区别.md) +* [对keep-alive组件的理解](Vue/对keep-alive组件的理解.md) +* [SPA单页应用的优缺点](Vue/SPA单页应用的优缺点.md) +* [Vue事件绑定原理](Vue/Vue事件绑定原理.md) +* [Vue中数组变动监听](Vue/Vue中数组变动监听.md) +* [Vue父子组件生命周期](Vue/Vue父子组件生命周期.md) +* [Vue中computed分析](Vue/Vue中computed分析.md) +* [Vue路由Hash模式分析](Vue/Vue路由Hash模式分析.md) +* [Vue路由History模式分析](Vue/Vue路由History模式分析.md) +* [v-model数据绑定分析](Vue/v-model数据绑定分析.md) +* [Vue路由懒加载](Vue/Vue路由懒加载.md) +* [VueRouter导航守卫](Vue/VueRouter导航守卫.md) +* [服务端渲染SSR的理解](Vue/服务端渲染SSR的理解.md) +* [Vue常用性能优化](Vue/Vue常用性能优化.md) +* [Vuex和普通全局对象](Vue/Vuex和普通全局对象.md) +* [Vuex中的核心方法](Vue/Vuex中的核心方法.md) +* [Vue中组件间通信的方式](Vue/Vue中组件间通信的方式.md) +* [Vue3.0新特性](Vue/Vue3.0新特性.md) +* [Vue为何采用异步渲染](Vue/Vue为何采用异步渲染.md) +* [Vue中的三种Watcher](Vue/Vue中的三种Watcher.md) +* [v-html可能导致的问题](Vue/v-html可能导致的问题.md) +* [初探webpack之搭建Vue开发环境](Plugin/初探webpack之搭建Vue开发环境.md) +* [Vue首屏性能优化组件](Vue/Vue首屏性能优化组件.md) + +## React +* [React生命周期](React/React生命周期.md) +* [React虚拟DOM的理解](React/React虚拟DOM的理解.md) +* [React中JSX的理解](React/React中JSX的理解.md) +* [React组件的state和props](React/React组件的state和props.md) +* [有状态和无状态组件](React/有状态和无状态组件.md) +* [受控组件和非受控组件](React/受控组件和非受控组件.md) +* [React中的纯组件](React/React中的纯组件.md) +* [React中的高阶组件](React/React中的高阶组件.md) +* [React中refs的理解](React/React中refs的理解.md) +* [React中的合成事件](React/React中的合成事件.md) +* [ReactRouter的实现](React/ReactRouter的实现.md) +* [React中组件间通信的方式](React/React中组件间通信的方式.md) +* [React组件复用的方式](React/React组件复用的方式.md) +* [React中diff算法的理解](React/React中diff算法的理解.md) +* [Hooks中的useState](React/Hooks中的useState.md) +* [useEffect与useLayoutEffect](React/useEffect与useLayoutEffect.md) +* [useMemo与useCallback](React/useMemo与useCallback.md) +* [setState同步异步场景](React/setState同步异步场景.md) +* [手写useState与useEffect](React/手写useState与useEffect.md) +* [Mobx与Redux的异同](React/Mobx与Redux的异同.md) +* [Context与Reducer](React/Context与Reducer.md) +* [Hooks与普通函数的区别](React/Hooks与普通函数的区别.md) +* [Hooks与事件绑定](React/Hooks与事件绑定.md) +* [React闭包陷阱](React/React闭包陷阱.md) +* [ReactPortals传送门](React/ReactPortals传送门.md) +* [基于React的SSG渲染方案](React/基于React的SSG渲染方案.md) + +## Plugin +* [Git常用命令](Plugin/Git常用命令.md) +* [Git与SVN对比](Plugin/Git与SVN对比.md) +* [Nginx常用配置](Plugin/Nginx常用配置.md) +* [Rollup的基本使用](Plugin/Rollup的基本使用.md) +* [Jest中Mock网络请求](Plugin/Jest中Mock网络请求.md) +* [初探webpack之编写plugin](Plugin/初探webpack之编写plugin.md) +* [初探webpack之搭建Vue开发环境](Plugin/初探webpack之搭建Vue开发环境.md) +* [TS内置类型与拓展](Plugin/TS内置类型与拓展.md) +* [初探webpack之编写loader](Plugin/初探webpack之编写loader.md) +* [竞态问题与RxJs](Plugin/竞态问题与RxJs.md) +* [基于slate构建文档编辑器](Plugin/基于slate构建文档编辑器.md) +* [基于NoCode构建简历编辑器](Plugin/基于NoCode构建简历编辑器.md) +* [初探富文本之富文本概述](Plugin/初探富文本之富文本概述.md) +* [初探富文本之编辑器引擎](Plugin/初探富文本之编辑器引擎.md) +* [初探富文本之OT协同算法](Plugin/初探富文本之OT协同算法.md) +* [初探富文本之OT协同实例](Plugin/初探富文本之OT协同实例.md) +* [初探富文本之CRDT协同算法](Plugin/初探富文本之CRDT协同算法.md) +* [初探富文本之CRDT协同实例](Plugin/初探富文本之CRDT协同实例.md) +* [基于drawio构建流程图编辑器](Plugin/基于drawio构建流程图编辑器.md) +* [从零实现的Chrome扩展](Plugin/从零实现的Chrome扩展.md) +* [初探富文本之React实时预览](Plugin/初探富文本之React实时预览.md) +* [从零实现的浏览器Web脚本](Plugin/从零实现的浏览器Web脚本.md) +* [初探webpack之单应用多端构建](Plugin/初探webpack之单应用多端构建.md) +* [基于WebRTC的局域网文件传输](Plugin/基于WebRTC的局域网文件传输.md) +* [初探富文本之文档diff算法](Plugin/初探富文本之文档diff算法.md) +* [初探富文本之在线文档交付](Plugin/初探富文本之在线文档交付.md) +* [初探富文本之划词评论能力](Plugin/初探富文本之划词评论能力.md) +* [初探富文本之文档虚拟滚动](Plugin/初探富文本之文档虚拟滚动.md) +* [基于Chrome扩展的浏览器事件](Plugin/基于Chrome扩展的浏览器事件.md) +* [初探webpack之解析器resolver](Plugin/初探webpack之解析器resolver.md) +* [基于ServiceWorker的文件传输方案](Plugin/基于ServiceWorker的文件传输方案.md) +* [初探富文本之搜索替换算法](Plugin/初探富文本之搜索替换算法.md) + +## Patterns +* [简单工厂模式](Patterns/简单工厂模式.md) +* [工厂方法模式](Patterns/工厂方法模式.md) +* [抽象工厂模式](Patterns/抽象工厂模式.md) +* [建造者模式](Patterns/建造者模式.md) +* [原型模式](Patterns/原型模式.md) +* [单例模式](Patterns/单例模式.md) +* [外观模式](Patterns/外观模式.md) +* [适配器模式](Patterns/适配器模式.md) +* [代理模式](Patterns/代理模式.md) +* [装饰器模式](Patterns/装饰器模式.md) +* [桥接模式](Patterns/桥接模式.md) +* [组合模式](Patterns/组合模式.md) +* [享元模式](Patterns/享元模式.md) +* [模板方法模式](Patterns/模板方法模式.md) +* [观察者模式](Patterns/观察者模式.md) +* [状态模式](Patterns/状态模式.md) +* [策略模式](Patterns/策略模式.md) +* [责任链模式](Patterns/责任链模式.md) +* [命令模式](Patterns/命令模式.md) +* [访问者模式](Patterns/访问者模式.md) +* [中介者模式](Patterns/中介者模式.md) +* [备忘录模式](Patterns/备忘录模式.md) +* [迭代器模式](Patterns/迭代器模式.md) +* [解释器模式](Patterns/解释器模式.md) +* [链模式](Patterns/链模式.md) +* [委托模式](Patterns/委托模式.md) +* [数据访问对象模式](Patterns/数据访问对象模式.md) +* [防抖节流模式](Patterns/防抖节流模式.md) +* [简单模板模式](Patterns/简单模板模式.md) +* [惰性模式](Patterns/惰性模式.md) +* [参与者模式](Patterns/参与者模式.md) +* [等待者模式](Patterns/等待者模式.md) +* [同步模块模式](Patterns/同步模块模式.md) +* [异步模块模式](Patterns/异步模块模式.md) +* [Widget模式](Patterns/Widget模式.md) +* [MVC模式](Patterns/MVC模式.md) +* [MVP模式](Patterns/MVP模式.md) +* [MVVM模式](Patterns/MVVM模式.md) + +## Linux +* [简单安全防护](Security/简单安全防护.md) +* [Ubuntu16.04安装QQ机器人](Linux/Ubuntu16.04安装QQ机器人.md) +* [cat命令](Linux/cat命令.md) +* [chmod命令](Linux/chmod命令.md) +* [chown命令](Linux/chown命令.md) +* [cmp命令](Linux/cmp命令.md) +* [diff命令](Linux/diff命令.md) +* [diffstat命令](Linux/diffstat命令.md) +* [file命令](Linux/file命令.md) +* [find命令](Linux/find命令.md) +* [cut命令](Linux/cut命令.md) +* [ln命令](Linux/ln命令.md) +* [less命令](Linux/less命令.md) +* [locate命令](Linux/locate命令.md) +* [lsattr命令](Linux/lsattr命令.md) +* [chattr命令](Linux/chattr命令.md) +* [mc命令](Linux/mc命令.md) +* [mktemp命令](Linux/mktemp命令.md) +* [more命令](Linux/more命令.md) +* [mv命令](Linux/mv命令.md) +* [od命令](Linux/od命令.md) +* [paste命令](Linux/paste命令.md) +* [patch命令](Linux/patch命令.md) +* [rcp命令](Linux/rcp命令.md) +* [rm命令](Linux/rm命令.md) +* [split命令](Linux/split命令.md) +* [tee命令](Linux/tee命令.md) +* [tmpwatch命令](Linux/tmpwatch命令.md) +* [touch命令](Linux/touch命令.md) +* [umask命令](Linux/umask命令.md) +* [which命令](Linux/which命令.md) +* [cp命令](Linux/cp命令.md) +* [whereis命令](Linux/whereis命令.md) +* [scp命令](Linux/scp命令.md) +* [awk命令](Linux/awk命令.md) +* [read命令](Linux/read命令.md) +* [updatedb命令](Linux/updatedb命令.md) +* [col命令](Linux/col命令.md) +* [colrm命令](Linux/colrm命令.md) +* [comm命令](Linux/comm命令.md) +* [csplit命令](Linux/csplit命令.md) +* [ed命令](Linux/ed命令.md) +* [egrep命令](Linux/egrep命令.md) +* [ex命令](Linux/ex命令.md) +* [fgrep命令](Linux/fgrep命令.md) +* [fmt命令](Linux/fmt命令.md) +* [fold命令](Linux/fold命令.md) +* [grep命令](Linux/grep命令.md) +* [aspell命令](Linux/aspell命令.md) +* [join命令](Linux/join命令.md) +* [look命令](Linux/look命令.md) +* [pico命令](Linux/pico命令.md) +* [sed命令](Linux/sed命令.md) +* [sort命令](Linux/sort命令.md) +* [tr命令](Linux/tr命令.md) +* [expr命令](Linux/expr命令.md) +* [ps命令](Linux/ps命令.md) +* [netstat命令](Linux/netstat命令.md) +* [ifconfig命令](Linux/ifconfig命令.md) +* [traceroute命令](Linux/traceroute命令.md) +* [route命令](Linux/route命令.md) +* [kill命令](Linux/kill命令.md) +* [systemctl命令](Linux/systemctl命令.md) +* [journalctl命令](Linux/journalctl命令.md) +* [ip命令](Linux/ip命令.md) +* [curl命令](Linux/curl命令.md) +* [top命令](Linux/top命令.md) + +## MiniProgram +* [山科小站小程序](MiniProgram/山科小站小程序.md) +* [QQ小程序支付](Java/QQ小程序支付.md) +* [支付宝小程序user_id](MiniProgram/支付宝小程序user_id.md) +* [微信小程序校历组件](MiniProgram/微信小程序校历组件.md) +* [uniapp小程序迁移到TS](MiniProgram/uniapp小程序迁移到TS.md) + +## App +* [NvueWeex](App/NvueWeex.md) + +## PHP +* [ThinkPHP5.0漏洞测试](PHP/ThinkPHP5.0漏洞测试.md) +* [PHP验证码识别实例](IMGProcess/PHP验证码识别实例.md) + +## Java +* [QQ小程序支付](Java/QQ小程序支付.md) + +## Security +* [简单安全防护](Security/简单安全防护.md) +* [OD反汇编EXE添加一个启动时的消息框](Security/OD反汇编EXE添加一个启动时的消息框.md) +* [IDA反汇编EXE添加一个启动时的消息框](Security/IDA反汇编EXE添加一个启动时的消息框.md) +* [XSS跨站脚本攻击](Browser/XSS跨站脚本攻击.md) +* [CSRF跨站请求伪造](Browser/CSRF跨站请求伪造.md) +* [SQL注入](Browser/SQL注入.md) +* [CSS劫持攻击](Browser/CSS劫持攻击.md) +* [ThinkPHP5.0漏洞测试](PHP/ThinkPHP5.0漏洞测试.md) +* [SSRF服务器端请求伪造](Browser/SSRF服务器端请求伪造.md) +* [记ByteCTF中的Node题](Security/记ByteCTF中的Node题.md) + +## Environment +* [VScode配置CMD本地运行环境(2.0)](Environment/VScode配置CMD本地运行环境(2.0).md) +* [Recover刷机简介](Environment/Recover刷机简介.md) +* [Ubuntu16.04安装QQ机器人](Linux/Ubuntu16.04安装QQ机器人.md) +* [将SublimeText加入右键菜单](Environment/将SublimeText加入右键菜单.md) +* [手机抓包HTTPS](Environment/手机抓包HTTPS.md) +* [文本选中复制](Environment/文本选中复制.md) +* [发布Npm包到GitHub Packages](Environment/发布Npm包到GitHub%20Packages.md) +* [斐讯K3C改散热](Environment/斐讯K3C改散热.md) +* [解决ufw下pptp客户端连接问题](Environment/解决ufw下pptp客户端连接问题.md) +* [建立DNS隧道绕过校园网认证](Environment/建立DNS隧道绕过校园网认证.md) + +## IMGProcess +* [强智教务系统验证码识别OpenCV](IMGProcess/强智教务系统验证码识别OpenCV.md) +* [强智教务系统验证码识别TensorflowCNN](IMGProcess/强智教务系统验证码识别TensorflowCNN.md) +* [YOLOV3目标检测](IMGProcess/YOLOV3目标检测.md) +* [PHP验证码识别实例](IMGProcess/PHP验证码识别实例.md) + +## LeetCode +* [全排列](LeetCode/全排列.md) +* [括号生成](LeetCode/括号生成.md) +* [二进制求和](LeetCode/二进制求和.md) +* [顶端迭代器](LeetCode/顶端迭代器.md) +* [矩阵置零](LeetCode/矩阵置零.md) +* [栈排序](LeetCode/栈排序.md) +* [长度最小的子数组](LeetCode/长度最小的子数组.md) +* [字母移位](LeetCode/字母移位.md) +* [跳水板](LeetCode/跳水板.md) +* [路径总和](LeetCode/路径总和.md) +* [两个数组的交集II](LeetCode/两个数组的交集II.md) +* [全排列II](LeetCode/全排列II.md) +* [插入、删除和获取元素](LeetCode/插入、删除和获取元素.md) +* [最长公共前缀](LeetCode/最长公共前缀.md) +* [除数博弈](LeetCode/除数博弈.md) +* [环形数组循环](LeetCode/环形数组循环.md) +* [字符串相加](LeetCode/字符串相加.md) +* [有效的括号字符串](LeetCode/有效的括号字符串.md) +* [一次编辑](LeetCode/一次编辑.md) +* [被围绕的区域](LeetCode/被围绕的区域.md) +* [数组中的第K个最大元素](LeetCode/数组中的第K个最大元素.md) +* [提莫攻击](LeetCode/提莫攻击.md) +* [叶子相似的树](LeetCode/叶子相似的树.md) +* [二叉树的最小深度](LeetCode/二叉树的最小深度.md) +* [平衡二叉树](LeetCode/平衡二叉树.md) +* [电话号码的字母组合](LeetCode/电话号码的字母组合.md) +* [使括号有效的最少添加](LeetCode/使括号有效的最少添加.md) +* [二叉树的所有路径](LeetCode/二叉树的所有路径.md) +* [二叉树的层次遍历 II](LeetCode/二叉树的层次遍历%20II.md) +* [组合](LeetCode/组合.md) +* [翻转二叉树](LeetCode/翻转二叉树.md) +* [子集](LeetCode/子集.md) +* [二叉搜索树中的众数](LeetCode/二叉搜索树中的众数.md) +* [宝石与石头](LeetCode/宝石与石头.md) +* [反转字符串](LeetCode/反转字符串.md) +* [两两交换链表中的节点](LeetCode/两两交换链表中的节点.md) +* [长按键入](LeetCode/长按键入.md) +* [独一无二的出现次数](LeetCode/独一无二的出现次数.md) +* [两个数组的交集](LeetCode/两个数组的交集.md) +* [子集II](LeetCode/子集II.md) +* [最接近原点的K个点](LeetCode/最接近原点的K个点.md) +* [按奇偶排序数组II](LeetCode/按奇偶排序数组II.md) +* [根据身高重建队列](LeetCode/根据身高重建队列.md) +* [供暖器](LeetCode/供暖器.md) +* [上升下降字符串](LeetCode/上升下降字符串.md) +* [保持城市天际线](LeetCode/保持城市天际线.md) +* [不同路径](LeetCode/不同路径.md) +* [Dota2参议院](LeetCode/Dota2参议院.md) +* [单调递增的数字](LeetCode/单调递增的数字.md) +* [买卖股票的最佳时机含手续费](LeetCode/买卖股票的最佳时机含手续费.md) +* [字符串中的第一个唯一字符](LeetCode/字符串中的第一个唯一字符.md) +* [最后一块石头的重量](LeetCode/最后一块石头的重量.md) +* [种花问题](LeetCode/种花问题.md) +* [滑动窗口最大值](LeetCode/滑动窗口最大值.md) +* [汇总区间](LeetCode/汇总区间.md) +* [替换后的最长重复字符](LeetCode/替换后的最长重复字符.md) + +## Interview +* [百度实习生前端面试](Interview/百度实习生前端面试.md) +* [腾讯暑期日常实习前端面试](Interview/腾讯暑期日常实习前端面试.md) +* [美团暑期日常实习前端面试](Interview/美团暑期日常实习前端面试.md) +* [字节跳动暑期日常实习前端面试](Interview/字节跳动暑期日常实习前端面试.md) +* [记2021年实习春招历程](MyLife/记2021年实习春招历程.md) +* [字节跳动暑期实习前端面试](Interview/字节跳动暑期实习前端面试.md) +* [美团暑期实习前端面试](Interview/美团暑期实习前端面试.md) +* [蚂蚁暑期实习前端面试](Interview/蚂蚁暑期实习前端面试.md) +* [记2022年实习春招历程](MyLife/记2022年实习春招历程.md) +* [百度秋招提前批前端面试](Interview/百度秋招提前批前端面试.md) +* [大疆秋招提前批前端面试](Interview/大疆秋招提前批前端面试.md) +* [360秋招正式批前端面试](Interview/360秋招正式批前端面试.md) +* [联想秋招正式批前端面试](Interview/联想秋招正式批前端面试.md) +* [京东秋招正式批前端面试](Interview/京东秋招正式批前端面试.md) +* [顺丰秋招正式批前端面试](Interview/顺丰秋招正式批前端面试.md) +* [拼多多秋招正式批前端面试](Interview/拼多多秋招正式批前端面试.md) +* [携程秋招正式批前端面试](Interview/携程秋招正式批前端面试.md) +* [腾讯秋招正式批前端面试](Interview/腾讯秋招正式批前端面试.md) +* [记2022年秋招历程](MyLife/记2022年秋招历程.md) + +## MyLife +* [记一次有意思的种树比赛](MyLife/记一次有意思的种树比赛.md) +* [记2021年实习春招历程](MyLife/记2021年实习春招历程.md) +* [2021腾讯实习实录](MyLife/2021腾讯实习实录.md) +* [记ByteCTF中的Node题](Security/记ByteCTF中的Node题.md) +* [记2022年实习春招历程](MyLife/记2022年实习春招历程.md) +* [致我四年的大学生活](MyLife/致我四年的大学生活.md) +* [记2022年秋招历程](MyLife/记2022年秋招历程.md) +* [致我三年的研究生生活](MyLife/致我三年的研究生生活.md) +* [2022字节实习实录](MyLife/2022字节实习实录.md) +* [从大学开始搞的开源项目](MyLife/从大学开始搞的开源项目.md) +* [记一些日常的想法与思考](MyLife/记一些日常的想法与思考.md) + + diff --git a/package.json b/package.json index 13c2a832..ba821d61 100644 --- a/package.json +++ b/package.json @@ -3,11 +3,12 @@ "sync:blog": "ts-node ./.scripts/sync-blog.ts", "sync:ssg": "ts-node ./.scripts/sync-ssg.ts", "sync": "npm run sync:blog && npm run sync:ssg", - "overview": "ts-node ./.scripts/generator.ts" + "overview": "ts-node ./.scripts/overview.ts" }, "devDependencies": { "@types/node": "18.19.61", - "ts-node": "10.9.1", - "glob": "10.3.10" + "alfaaz": "1.1.0", + "glob": "10.3.10", + "ts-node": "10.9.1" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 44d4c2d1..3f8db579 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,9 @@ devDependencies: '@types/node': specifier: 18.19.61 version: 18.19.61 + alfaaz: + specifier: 1.1.0 + version: 1.1.0 glob: specifier: 10.3.10 version: 10.3.10 @@ -94,6 +97,10 @@ packages: hasBin: true dev: true + /alfaaz@1.1.0: + resolution: {integrity: sha512-J/P07R41APslK7NmD5303bwStN8jpRA4DdvtLeAr1Jhfj6XWGrASUWI0G6jbWjJAZyw3Lu1Pb4J8rsM/cb+xDQ==} + dev: true + /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'}