Cloud Computing - Region + Availability zone
Region 云计算厂商在某个地理位置提供的所有云服务的组合,是厂商对外提供云服务的基本单位和容器 绝大多数的云服务,通常都会按照 Region 进行部署 用户使用的所有云资源,都会隶属于某个 Region,通常在创建资源时确定 每个 Region 都会有个由字母数字构成的 Region 代号(Region ID or Region Code),一般为全局唯一 Region 的设立与分布,体现了云厂商的业务重点和地区倾向 不同 Region 之间的距离,一般为数百公里或以上 Region 的选址思路 人口稠密的中心城市 - 离用户和商业更近 相对偏远的地区 - 维护成本低 选择 Region 地理位置 尽可能地靠近应用所面向的最终用户 混合云架构(本地数据中心与云端互联) 混合云的专线接入,一般以同城或短距离接入为主(控制费用 + 提高线路稳定性) Region 之间云服务的差异 同一个云在不同的 Region,所能提供的服务和规模可能是不同的 Region 的服役时间,往往与 Region 内云服务的可用性有较大的关联 新 Region - 最新的硬件和云端服务 旧 Regi...
Cloud Native Foundation - Go Scheduling
线程加锁 线程安全 123456789// fatal error: concurrent map writesfunc unsafeWrite() { conflictMap := map[int]int{} for i := 0; i < 1<<10; i++ { go func(i int) { conflictMap[0] = i }(i) }} 锁 Go 不仅支持基于 CSP 的通信模型,也支持基于共享内存的多线程数据访问 Sync 包提供了锁的基本原语 原语 描述 sync.Mutex 互斥锁 sync.RWMutex 读写分离锁 sync.WaitGroup 等待一组 goroutine 返回 sync.Once 保证某段代码只执行 1 次 sync.Cond 让一组 goroutine 在满足特定条件时被唤醒 Mutex12345678910111213141516171819...
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...















