notes

装饰器

August 12, 2022
js

作用 # 用于标注或修改类和类的成员, ts decorator1,js decorator2 可作用于: 类声明,方法,访问器,属性,参数 组合 # 多 decorator 组合时,调用顺序为 decorator 表达式的执行自上而下 decorator 表达式的执行结果作为函数,从下往上按序作用于被装饰的元素 执行顺序 # 实例成员 参数 方法 访问器 属性 静态成员 参数 方法 访问器 属性 constructor 参数 类 ts decorator ↩︎ js decorator ↩︎

控制反转

August 10, 2022
js

IOC # inversion of control,控制反转 由 frammework 去控制代码的执行,实例化逻辑,而不是用户代码去控制 Do not call us, we call you DI # dependency injection,依赖注入 依赖类跟其依赖 解耦 ,利于测试和代码复用 实现方式 # Constructor injection Interface injection Setter injection 依赖抽象的接口,而不是具体的实现 ts/js 如何实现? #

递归

July 24, 2022
plt

递归 # (define (sum n) (if (zero? n) 0 (+ n (sum (- n 1))))) ; not tail recursive 尾递归 # (define (tail-sum n [acc 0]) (if (zero? n) acc (tail-sum (- n 1) (+ n acc)))) ; tail recursive

组件化

July 17, 2022
frontend

什么是组件 # 任何可被共享的函数,库,ui 等,都可称之为组件 一切皆组件: 中间件,service,controller,module,hook 等都可统称为组件,不仅仅局限于前端 Why # 一致性 避免重复工作,提效 新人友好 中心化 # 中心化的组件仓库,所见即所得,single source of truth 去中心化 # 去中心化开发,可在任意代码仓库里向中心化组件仓库贡献组件 版本控制 # 类似 git Tag # semver 快照 # 能快速针对某个状态的组件进行记录,方便调试 生产者 # 被依赖方,组件的生产者,开发者,维护者 消费者 # 消费并使用组件,依赖方 Bit # component-driven architecture Apps # 可被部署的组件,可作为独立的后端或前端应用,或作为运行时,微服务,微前端,serverless function 等被其他 app 消费 apps 为独立的,包含其所有构建,部署等所需要的信息 Aspect # Service,使用 Aspect environment 用来拓展 bit 功能的组件,也可用来构建用户的可组合应用 ...

npm

July 17, 2022
node

Peer dependency # 对等依赖,通常用来表示插件和宿主包之间的依赖关系 对宿主包比较宽松的版本限制 对宿主包没有显式依赖关系,即没有直接的 require 或 import 冲突时会 warning,不会同时安装两个副本 由使用方决定安装什么版本 比如 react 组件,声明 react 为 peerDependency 及版本范围即可,因为使用你组件的项目肯定是个 react 项目,已经安装了 react 如果继续声明 react 为 dependency, 当跟宿主环境不一致时,同时存在两个 react 版本,会带来额外的冲突风险 Dependency # 运行时依赖,冲突时,会安装不同的版本 Dev dependency # 开发依赖,不会打到最终的包里 依赖管理 # 锁不锁版本1 # 理想的 semver 是 break.feat.bugfix,现实的 semver 是 break.break.break 不锁根据 semver 自动升级,可能被投毒或引入有 bug 的代码,造成故障 我本地都是好的,测试也测过,怎么发上去就挂了? 出问题了,责任算谁的? 锁 不能及时跟进安全修复,时间久了就是技术债,怎么升也升不动了 锁不锁依赖 ↩︎ ...

关系

July 8, 2022
math

Binary Relation # 二元关系,用来表示两个集合里元素的关系 从集合 A 到集合 B 的二元关系为 AxB 的子集 n-ary,n 元关系,用来表示 n 个集合里元素的关系

数据类型

July 6, 2022
js

基础类型 # Symbol # 符号类型,跟其他语言(ruby, racket 等)里的 Symbol 不一样 表示 唯一 标识符,创建即唯一 可用作对象的属性 key 对象的属性 key 只能是 string 或 symbol 类型,其他类型的值会被转为 string 类型 // id is a symbol with the description "id" let id = Symbol("id"); let id1 = Symbol("id") id !== id1 Symbol 不会被自动转为字符串,可以通过 toString() 方法进行转换 通常用于为第三方库的对象添加 隐藏 属性,而不对其他使用者造成影响 for in 遍历不会遍历 Symbol,Object.keys() 亦如是 Object.assign() 会 copy string 和 symbol 属性 Global Symbol # 用途:全局唯一标识符 ...

Racket

July 6, 2022
plt

Interned # 基本数据类型 # Symbols # 不可变字符串

算法设计

July 4, 2022
algo-design

算法设计的常用方法 # 双指针 # 滑动窗口 # 动态规划 # 二分法 # 贪心 #