ShaoKang Blog

人生在勤,不索何获.

算法

引言 最近在看一本算法书《labuladong 的算法小抄》,作者对各种算法问题提炼出了基础的解法框架,能够帮助读者快速理解各算法中的精髓。这里我将此记录下来,帮助自己日后快速回顾。 回溯算法 核心框架 result = []; def backtrack( 路径,选择列表 ): if 满足结束条件 : result.add( 路径); ret...

网络篇

RESTful URL 定位资源,用 HTTP 动词(GET,POST,DELETE)描述操作。 浏览器地址栏输入网址整个过程 (1)解析 URL:分析传输协议和资源路径,判断协议或主机名是否合法,不合法将内容传递给搜索引擎。没问题的话检查是否出现非法字符,并对其转义。 (2)缓存判断:强缓存和协商缓存。 (3)DNS 解析:先查本地是否有域名的 ip 地址缓存(浏览器、hosts 文...

操作系统

概念 操作系统是管理计算机硬件资源和软件资源的最基本的系统软件, 四大特征:共享性,并发性,虚拟性,异步性 进程、线程 进程是 cpu 资源分配的最小单位 线程是 cpu 调度的最小单位 做个简单的比喻:进程=火车,线程=车厢 线程在进程下行进(单纯的车厢无法运行) 一个进程可以包含多个线程(一辆火车可以有多个车厢) 不同进程间数据很难共享(一辆火车上的乘客很难换到...

手写代码

Object.create function create(obj) { function F() {} F.prototype = obj; return new F(); } 实现 new function myNew() { const obj = {}; // 1 const constructor = Array.prototype....

工程化

概览 前端工程化是指将前端开发中的设计、开发、测试和部署等环节进行标准化和自动化,以提高开发效率和代码质量,并降低维护成本。 模块化:使用模块化思想可以将复杂的代码拆分成小的可重用的模块,并且使得不同模块之间的依赖关系更加清晰。 自动化构建:通过使用构建工具(如 Gulp、Webpack、Rollup 等),可以自动化地完成代码编译、压缩、打包、转换、优化等任务,从而提高开发效率。 ...

Vue

vue Vue vs React 对 React 和 Vue 的理解,它们的异同 相似之处: ● 都将注意力集中保持在核心库,而将其他功能如路由和全局状态管理交给相关的库; ● 都有自己的构建工具,能让你得到一个根据最佳实践设置的项目模板; ● 都使用了 Virtual DOM(虚拟 DOM)提高重绘性能; ● 都有 props 的概念,允许组件间的数据传递; ● 都鼓励组件化应用,将应...

TS

枚举和常量枚举的区别 // 枚举 enum Color { Red, Green, Blue } // 常量枚举 const enum Color { Red, Green, Blue } 枚举会被编译时会编译成一个对象,可以被当作对象使用,编译如下 var Color; (function (Color) { Color[(Color['Red'] = 0)] = 'Red...

React

组件基础 事件机制 React 并不是将 click 事件绑定到真实 DOM 上,而是在 document 处监听所有事件,当事件发生并冒泡到 document 处,React 将事件内容封装并交由真正的处理函数运行 — 顶层事件代理机制。 这样做的好处是不仅能减少内存的消耗、提高性能,还能在组件挂载和销毁时统一订阅和移除事件。 除此之外冒泡到 document 上的事件也不是原生浏览...

Node

NodeJs 定义 Node.js 是一个开源与跨平台的 JavaScript 运行时环境 在浏览器外运行 V8 JavaScript 引擎(Google Chrome 的内核),利用事件驱动、非阻塞和异步输入输出模型等技术提高性能 可以理解为 Node.js 就是一个服务器端的、非阻塞式 I/O 的、事件驱动的 JavaScript 运行环境。 非阻塞 I/O I/O 操作不会造...

JS

继承 1. 原型链继承 function Person(name) { this.name = name; } Person.prototype.getName = function() { return this.name; } function Student() { } Student.prototype = new Person(); var studen...