JavaScript - Function
闭包 闭包是一个绑定了执行环境的函数,JavaScript 中的函数完全符合闭包的定义 在 JavaScript 中,与闭包对应的概念就是函数 执行上下文 执行上下文:执行一段代码(包括函数),所需要的所有信息 相比于普通函数,JavaScript 函数的主要复杂性来源于其携带的环境部分 版本ES3 Key Desc scope 作用域、作用域链 variable object 变量对象,用于存储变量的对象 this value this 值 ES5 Key Desc lexical environment 词法环境,当获取变量时使用 variable environment 变量环境,当声明变量时使用 this value this 值 ES2018 - Recommend this value 被纳入 lexical environment Key Desc lexical environment 词法环境,当获取变量或者 this 值时使用 variable environment 变量环境,当声明变量时使用 code ...
JavaScript - Asynchronous
Asynchronous 异步编程适用于 IO 密集型应用 异步编程的传统实现方式:Callback 1234567console.log("main start");setTimeout(() => console.log("sync start"), 1000);console.log("main end");// main start// main end// sync start 依次执行多个异步操作:Callback Hell 1234567891011121314151617setTimeout(() => { console.log("Action 1"); setTimeout(() => { console.log("Action 2"); setTimeout(() => { console.log("Action 3"); ...
JavaScript - Event Loop
单线程 JavaScript 的主要宿主环境为浏览器,主要用途是与用户互动和操作 DOM 如果采用多线程模型,会带来复杂的同步问题 从诞生伊始,JavaScript 就是单线程,是其核心特性 为了利用多核 CPU 的计算能力,HTML 5 提出了 Web Worker 标准 允许 JavaScript 创建多个子线程,但子线程完全受主线程控制,且不允许操作 DOM 任务队列 JavaScript 在单线程模式下,所有任务都需要排队 任务分类 同步任务(synchronous) 在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务 异步任务(asynchronous) 不进入主线程,而是进入任务队列的任务 只有任务队列通知主线程,某个异步任务可以执行了,该异步任务才会进入主线程执行 运行机制 所有同步任务都在主线程上执行,形成一个执行栈 主线程之外,还存在一个任务队列 只要异步任务有了运行结果,就会在任务队列中放置一个事件 一旦执行栈中所有的同步任务执行完毕,系统就会读取任务队列中的事件 事件对应的异步任务会结束等待状态,进入执行栈开始执行 主线程不断重复...
JavaScript - Object
OOP实现方式 在不同的编程语言中,设计者利用各种不同的语言特性来抽象描述对象 最为成功的流派:使用类来描述对象,典型代表为 Java、C++ JavaScript 的实现方式:原型(更冷门!) Like Java JavaScript 诞生之初模仿 Java,在原型运行时引入了 new,this 等语言特性 在 ES6 之前,产生了很多『框架』:试图在原型体系的基础上,把 JavaScript 变得更像是基于类的编程 这些『框架』最终成为了 JavaScript 的古怪方言 任何语言在运行时,类的概念都会被弱化 对象模型基本特征 对象有唯一标识性:完全相同的两个对象,也并非同一个对象 对象有状态:同一对象可能处于不同的状态之下 对象有行为:对象的状态,可能因为它的行为产生变迁 对象的唯一标识,一般是通过内存地址来体现的 123let a = {name: 'A'}let b = {name: 'A'}console.log(a === b) // false 状态和行为,不同语言会使用不同的术...
JavaScript - Type
基本类型 JavaScript 的每一个值都属于某一种数据类型 Undefined Null Boolean String Number Symbol – ES6 Object Undefined + NullUndefined 编程规范:使用 void 0 代替 undefined Undefined 代表未定义,只有一个值undefined undefined为全局变量,但并非关键字 – 语言设计缺陷 任何变量在赋值前的类型为是 Undefined,值为 undefined void 运算可以将任意表达式变成 undefined 值 1console.log(void 0 === undefined) // true Null Null 代表定义了但为空,只有一个值null,null 是关键字 Boolean Boolean 只有两个值,true 和 false,且均为关键字 StringUnicode + UTF Unicode 为字符集,每一个 Unicode 码点表示一个字符 U+??? 基本字符区域(BMP):U+0000 ~ U+FFFF UTF 为 Unic...
Cloud Native Foundation - Go Feature
函数Main 函数 每个 Go 程序都应该有个main package main package 里的 main 函数是 Go 程序的入口 Init 函数 init 函数会在包初始化时运行,仅运行一次 谨慎使用 样例:A 依次依赖 B 和 C ,但 B 也会依赖 C,初始化顺序:C -> B -> A 返回值 支持多值返回 支持命名返回值:被视为定义在函数顶部的变量 调用者可以忽略部分返回值 回调函数 函数作为参数传入其它函数,并在其它函数内部调用执行 12345678910111213141516func main() { DoOperation(1, increase) DoOperation(1, decrease)}func DoOperation(x int, f func(a, b int)) { f(x, 1)}func increase(a, b int) { fmt.Println(a + b)}func decrease(a, b int) { fmt.Pr...
Kubernetes - Container Interconnection
拷贝数据123456$ docker run -d --rm redis450662153d83e6e1b30af57443ccfe68d798d5c7f4f8e50d2d287fdde2c1645c$ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES450662153d83 redis "docker-entrypoint.s…" 7 seconds ago Up 6 seconds 6379/tcp cranky_wilbur 拷贝宿主机文件到容器 1234567891011$ md5sum a.txtd41d8cd98f00b204e9800998ecf8427e a.txt$ docker cp a.txt 450:/tmp$ docker exec -it 450 sh# ls /tmpa.txt# md5sum /tmp/a.txtd41d8cd98f00b204e98009...
Kubernetes - Docker Hub
Registry Registry -> Repository Docker Hub 默认 Registry ImageOfficial Dockerhttps://hub.docker.com/u/library Verified Bitnami / Rancher / Ubuntu Unofficial半官方 开通 Verified publisher,需要付费 民间 个人镜像 Naming user/app:tagtag = version + osslim / fat OS Example Alpine / CentOS alpine3.15 Ubuntu 18.04 bionic Ubuntu 20.04 focal Debian 9 stretch Debian 10 buster Debian 11 bullseye FlowOnline1234567$ docker login -u zhongmingmaoPassword:WARNING! Your pas...
Apollo - HA + Monitoring
Architecture Deployment HA Scene Influence Downgrade Reason 某台 Config Service 下线 无影响 Config Service 无状态 所有 Config Service 下线 Client 无法获取最新配置 Client 重启可获取本地缓存配置 某台 Admin Service 下线 无影响 Admin Service 无状态 所有 Admin Service 下线 用户无法管理配置 某台 Portal 下线 无影响 Portal 无状态 所有 Portal 下线 用户无法管理配置 数据库宕机 用户无法管理配置 Config Service 开启缓存Client 不受影响 Monitoring CAT + Prometheus Reference 微服务架构实战 160 讲
Apollo - Architecture
ServerArchitecture 逻辑视图,Software Load Balancer 即 Nginx Module Module Desc Note Config Service 服务对象:Client配置获取接口:推送 + 拉取 Admin Service 服务对象:Portal配置管理接口:修改 + 发布 Client 应用获取配置,实时更新通过 Meta Server 获取 Config Service 服务列表客户端软负载 Portal 配置管理界面通过 Meta Server 获取 Admin Service 服务列表客户端软负载 Eureka 服务注册与发现Config Service 和 Admin Service 向 Eureka 注册并保持心跳与 Config Service 一起部署 Meta Server Eureka Proxy逻辑角色,与 Config Service 一起部署Client 通过域名访问 Meta Server 获取 Config Service 服务列表Portal 通过域名访问 Meta Server ...













