基于 mesos 的容器调度框架2017/8/3 基于 mesos 的容器调度框架 http://go-talks.appspot.com/github.com/huangnauh/slides/upone.slide#3 1/36 基于 mesos 的容器调度框架 Gopher 杭州 meetup 5 August 2017 黄励博(huangnauh) 又拍云 2017/8/3 基于 mesos 的容器调度框架 http://go-talks http://go-talks.appspot.com/github.com/huangnauh/slides/upone.slide#3 2/36 What's Upone 2017/8/3 基于 mesos 的容器调度框架 http://go-talks.appspot.com/github.com/huangnauh/slides/upone.slide#3 3/36 Mesos 介绍 Image credit: apache.org (http://mesos.apache.org/) 官方称之为分布式系统内核, 它把数据中心的 CPU、内存、磁盘等抽象成一个资源池 2017/8/3 基于 mesos 的容器调度框架 http://go-talks.appspot.com/github.com/huangnauh/slides/upone.slide#3 4/36 Mesos 调度 各个 Agent0 码力 | 36 页 | 2.49 MB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.aGo类型系统 第14章:Go类型系统概述 - 精通Go编程必读 第15章:指针 第16章:结构体 第17章:值部 - 为了更容易和更深刻地理解Go中的各种值 第18章:数组、切片和映射 - Go中的首要容器类型 第19章:字符串 第20章:函数 - 函数类型和函数值,以及变长参数个数函数 第21章:通道 - Go特色的并发同步方式 第22章:方法 第23章:接口 - 通过包裹不同具体类型的非接口值来实现反射和多态 自从Go语言正式发布后,Go的语法变化很小。 但是标准编译器gc却在不断地 改进。 使用早期的gc编译的程序在运行的时候在每次垃圾回收的结尾常常会有 明显的停顿。 但是自从Go 1.8,使用gc编译的程序在运行时刻已经基本消除了 停顿现象。 gc支持跨平台编译。 比如,我们可以在Linux平台上编译出Windows程序,反之 亦然。 使用Go编写的程序常常编译得非常快。 编译时间的长短是开发愉悦度的一个重 有浮点数和复数基本 数值类型。 1+2i 所有复数基本数值类型。 2e+308 无。 注意几个溢出的例子: 字面量0x10000000000000000需要65个比特才能表示,所以在运行时刻,任 何基本整数类型都不能精确表示此字面量。 在 IEEE-754 标 准 中 , 最 大 的 可 以 精 确 表 示 的 float32 类 型 数 值 为 3.4028234663852880 码力 | 608 页 | 1.08 MB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.aGo类型系统 第14章:Go类型系统概述 - 精通Go编程必读 第15章:指针 第16章:结构体 第17章:值部 - 为了更容易和更深刻地理解Go中的各种值 第18章:数组、切片和映射 - Go中的首要容器类型 第19章:字符串 第20章:函数 - 函数类型和函数值,以及变长参数个数函数 第21章:通道 - Go特色的并发同步方式 第22章:方法 第23章:接口 - 通过包裹不同具体类型的非接口值来实现反射和多态 自从Go语言正式发布后,Go的语法变化很小。 但是标准编译器gc却在不断地 改进。 使用早期的gc编译的程序在运行的时候在每次垃圾回收的结尾常常会 有明显的停顿。 但是自从Go 1.8,使用gc编译的程序在运行时刻已经基本消除 了停顿现象。 gc支持跨平台编译。 比如,我们可以在Linux平台上编译出Windows程序,反 之亦然。 使用Go编写的程序常常编译得非常快。 编译时间的长短是开发愉悦度的一个 外的所有浮点数和复数基本 数值类型。 1+2i 所有复数基本数值类型。 2e+308 无。 注意几个溢出的例子: 字面量0x10000000000000000需要65个比特才能表示,所以在运行时刻, 任何基本整数类型都不能精确表示此字面量。 在IEEE-754标准中,最大的可以精确表示的float32类型数值为 3.40282346638528859811704183484516925440e+38,所以30 码力 | 821 页 | 956.82 KB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.aGo类型系统 第14章:Go类型系统概述 - 精通Go编程必读 第15章:指针 第16章:结构体 第17章:值部 - 为了更容易和更深刻地理解Go中的各种值 第18章:数组、切片和映射 - Go中的首要容器类型 第19章:字符串 第20章:函数 - 函数类型和函数值,以及变长参数个数函数 第21章:通道 - Go特色的并发同步方式 第22章:方法 第23章:接口 - 通过包裹不同具体类型的非接口值来实现反射和多态 ,甚至自相矛盾。 Go 语法和语义设计中有很多折衷和权衡。一个Go程序员需要相当的Go编程经验和感悟 才能理解这些权衡。 Go提供了几种基本但非必需的类型,比如切片,接口和通道。 Go编译器和运行时在 实现这些类型的时候,进行了必要的封装。 一方面,这些封装为Go编程带来了许多 便利,使我们不用从头实现这些类型。 但另一方面,这些封装隐藏了这些类型的内 部结构, 从而对我们更深入地理解这些类型的值的行为带来了一些障碍。 自从Go语言正式发布后,Go的语法变化很小。 但是标准编译器gc却在不断地改 进。 使用早期的gc编译的程序在运行的时候在每次垃圾回收的结尾常常会有明显 的停顿。 但是自从Go 1.8,使用gc编译的程序在运行时刻已经基本消除了停顿现 象。 gc支持跨平台编译。 比如,我们可以在Linux平台上编译出Windows程序,反之亦 然。 使用Go编写的程序常常编译得非常快。 编译时间的长短是开发愉悦度的一个重要因0 码力 | 591 页 | 21.40 MB | 1 年前3
Go 入门指南(The way to Go)圾回收(使用了一个简单的标记-清除算法)。 尽管垃圾回收并不容易实现,但考虑这将是未来并发应用程序发展的一个重要组成部分,Go 语言的设计 者们还是完成了这项艰难的任务。 Go 语言还能够在运行时进行反射相关的操作。 使用 go install 能够很轻松地对第三方包进行部署。 此外,Go 语言还支持调用由 C 语言编写的海量库文件(第 3.9 节),从而能够将过去开发的软件进行快 速迁移。 hello_world1.go ,将会打印信息: Hello, world 。 6. 验证安装版本 你可以通过在终端输入指令 go version 来打印 Go 的版本信息。 如果你想要通过 Go 代码在运行时检测版本,可以通过以下例子实现。 示例 2.2 version.go package main import ( "fmt" "runtime" ) func main() { :包含标准库的包的对象文件( .a ) /src :包含源代码构建脚本和标准库的包的完整源代码(Go 是一门开源语言) /src/cmd :包含 Go 和 C 的编译器和命令行脚本 2.7 Go 运行时(runtime) 尽管 Go 编译器产生的是本地可执行代码,这些代码仍旧运行在 Go 的 runtime(这部分的代码可以在 runtime 包中找到)当中。这个 runtime 类似 Java0 码力 | 380 页 | 2.97 MB | 1 年前3
Go 入门指南(The way to Go)2.2 Go 环境变量 2.3 在 Linux 上安装 Go 2.4 在 Mac OS X 上安装 Go 2.5 在 Windows 上安装 Go 2.6 安装目录清单 2.7 Go 运行时(runtime) 2.8 Go 解释器 第3章:编辑器、集成开发环境与其它工具 3.1 Go 开发环境的基本要求 3.2 编辑器和集成开发环境 3.3 调试器 3.4 构建并运行 Go 12.9 格式化 JSON 数据 12.10 XML 数据格式 12.11 用 Gob 传输数据 12.12 Go 中的密码学 第13章:错误处理与测试 13.1 错误处理 13.2 运行时异常和 panic 13.3 从 panic 中恢复(Recover) 13.4 自定义包中的错误处理和 panicking 13.5 一种用闭包处理错误的模式 13.6 启动外部命令和程序 虚拟机,以此来实现高效快速的垃圾回收(使用了一个简单的标记-清除算法)。 尽管垃圾回收并不容易实现,但考虑这将是未来并发应用程序发展的一个重要组成部分,Go 语言的设计者们还是完成 了这项艰难的任务。 Go 语言还能够在运行时进行反射相关的操作。 使用 go install 能够很轻松地对第三方包进行部署。 此外,Go 语言还支持调用由 C 语言编写的海量库文件(第 3.9 节),从而能够将过去开发的软件进行快速迁移。0 码力 | 466 页 | 4.44 MB | 1 年前3
Golang大规模云原生应用管理实践• Problem Solver,聚焦中间件,容器,Kubernetes,PaaS平台… • OAM社区成员 开局一张图 规模化应用交付效率对比去年 每万笔峰值交易的IT成本对比4年前 提升1倍 下降80% 云原生 技术 稳定 成本 效率 云原生-程序员视角 基础设施 K8s 云原生生态(CNCF) 云原生应用 云原生是以容器技术为基础围绕着Kubernetes进行的一 场技术标准化演进。通过标准可扩展的调度,网络, 存储,容器运行时接口来提供基础设施;通过标准可扩展的声明式资源和控制器来提供运维能力。两层标 准化推进了细化的社会分工,各领域进一步提升规模化和专业化,全面达到成本,效率,稳定性的优化。 4 6 7 2 3 5 1 1 Kubectl plugins 2 Apiserver extension 3 4 5 6 7 Custom resources EDAS的平台构建机制-KubeVela https://github.com/oam-dev/kubevela • OAM应用模型运行时 • 内置Workloads & Traits & Scopes • Capability Management KubeVela的核心机制-运行时 func Setup(mgr ctrl.Manager, args controller.Args, l logging0 码力 | 23 页 | 7.70 MB | 1 年前3
Go 2 Generics? A (P)reviewa+b } // 注意: Go 语言中不允许同名函数 Add(1, 2) // 调用第一个 Add(1.0, 2.0) // 调用第二个 Add("1", "2") // 编译时不检查,运行时找不到实现,崩溃 参数化多态(Parametric Polymorphism)根据实参类型生成不同的版本 ,支持任意数量的 调用。即泛型 func Add(a, b T) T{ return a+b Changkun Ou · Go 夜读 · Go 2 Generics? A (P)review 泛型做到了什么接口做不到的事情? 5 当使用 interface{} 时,a、b、返回值都可以在运行时表现为不同类型,取决于内部 实现如何对参数进行断言: type T interface { ... } func Max(a, b T) T { ... } // T 是接口 当使用泛型时,a、 (P)review Generics: Problem Overview 16 编译效率 编码效率 运行效率 ● 泛型从本质上是一个编译期特性 ○ 「泛型困境」其实是一个伪命题 ○ 牺牲运行时性能的做法显然不是我们所希望的 ● 不加以限制的泛型机制将 严重拖慢编译性能 ○ 什么时候才能决定一个泛型函数 应该编译多少份不同的版 本? ○ 不同的生成策略会遇到什么 问题? ● 加以限制的泛型机制将提高程序的可0 码力 | 41 页 | 770.62 KB | 1 年前3
Hello 算法 1.1.0 Go版效率评估方法主要分为两种:实际测试、理论估算。 2.1.1 实际测试 假设我们现在有算法 A 和算法 B ,它们都能解决同一问题,现在需要对比这两个算法的效率。最直接的方法 是找一台计算机,运行这两个算法,并监控记录它们的运行时间和内存占用情况。这种评估方式能够反映真 实情况,但也存在较大的局限性。 一方面,难以排除测试环境的干扰因素。硬件配置会影响算法的性能。比如在某台计算机中,算法 A 的运行 时间比算法 B 短 味着我们需要在各种机 器上进行测试,统计平均效率,而这是不现实的。 另一方面,展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入 数据量较小时,算法 A 的运行时间比算法 B 短;而在输入数据量较大时,测试结果可能恰恰相反。因此,为 了得到有说服力的结论,我们需要测试各种规模的输入数据,而这需要耗费大量的计算资源。 2.1.2 理论估算 由于实际测试具 complexity)和空间复杂度(space complexity)。 ‧“随着输入数据大小的增加”意味着复杂度反映了算法运行效率与输入数据体量之间的关系。 ‧“时间和空间的增长趋势”表示复杂度分析关注的不是运行时间或占用空间的具体值,而是时间或空间 增长的“快慢”。 复杂度分析克服了实际测试方法的弊端,体现在以下两个方面。 ‧ 它独立于测试环境,分析结果适用于所有运行平台。 第 2 章 复杂度分析 hello‑algo0 码力 | 383 页 | 18.48 MB | 1 年前3
Hello 算法 1.0.0 Golang版效率评估方法主要分为两种:实际测试、理论估算。 2.1.1 实际测试 假设我们现在有算法 A 和算法 B ,它们都能解决同一问题,现在需要对比这两个算法的效率。最直接的方法 是找一台计算机,运行这两个算法,并监控记录它们的运行时间和内存占用情况。这种评估方式能够反映真 实情况,但也存在较大的局限性。 一方面,难以排除测试环境的干扰因素。硬件配置会影响算法的性能。比如在某台计算机中,算法 A 的运行 时间比算法 B 短 味着我们需要在各种机 器上进行测试,统计平均效率,而这是不现实的。 另一方面,展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入 数据量较小时,算法 A 的运行时间比算法 B 短;而在输入数据量较大时,测试结果可能恰恰相反。因此,为 了得到有说服力的结论,我们需要测试各种规模的输入数据,而这需要耗费大量的计算资源。 2.1.2 理论估算 由于实际测试具 complexity」和「空间复杂度 space complexity」。 ‧“随着输入数据大小的增加”意味着复杂度反映了算法运行效率与输入数据体量之间的关系。 ‧“时间和空间的增长趋势”表示复杂度分析关注的不是运行时间或占用空间的具体值,而是时间或空间 增长的“快慢”。 复杂度分析克服了实际测试方法的弊端,体现在以下两个方面。 ‧ 它独立于测试环境,分析结果适用于所有运行平台。 第 2 章 复杂度分析 hello‑algo0 码力 | 382 页 | 17.60 MB | 1 年前3
共 38 条
- 1
- 2
- 3
- 4













