Go 入门指南(The way to Go)
nel) 18.9 网络和网页应用 18.10 其他 18.11 出于性能考虑的最佳实践和建议 - 6 - 本文档使用 书栈(BookStack.CN) 构建 致谢 当前文档 《Go入门指南》 由 进击的皇虫 使用 书栈(BookStack.CN) 进行构建,生成于 2018-02-08。 书栈(BookStack.CN) 仅提供文档编写、整理、归类等功能,以及对文档内容的生成和导出工具。 Go 语言版本进行修改而不作出特别声明。 该翻译版本已获得原作者(Ivo Balbaert)本人授权,并表示支持开源事业的发展! 14.9 实现 Futures 模式 如果你喜欢本书 《Go入门指南》,你可以参与到本书的翻译或纠正工作中来,具体请联系【无闻 E-mail: u#gogs.io】,一同完善本书并帮助壮大 Go 语言在国内的学习群体,给大家提供更好的学习资源。 参见 Go 语言学习资料与社区索引。 的问题最好不要发问 本书原作者:Ivo Balbaert 参与翻译人员: @zhanming themorecolor @everyx @chidouhu @spawnris 《Go入门指南》 翻译进度 支持本书 交流社区 新人守则 致谢 阅前必读 - 8 - 本文档使用 书栈(BookStack.CN) 构建 @domainname @leisore @dake0 码力 | 466 页 | 4.44 MB | 1 年前3Go 入门指南(The way to Go)
和一些编程语言的相关概念进 行比较(书中会使用大家所熟知的缩写 “OO” 来表示面向对象)。 本书将会从最基础的概念讲起,同时也会讨论一些类似在应用 goroutine 和 channel 时有多少种不同的模 Go入门指南 - 1 - 本文档使用 看云 构建 式,如何在 Go 语言中使用谷歌 API,如何操作内存,如何在 Go 语言中进行程序测试和如何使用模板来 开发 Web 应用这些高级概念和技巧。 在本书的第一部分,我们将会讨论 念或者技巧来解释相关的代码示例,以避免你在不了 解某些高级概念的情况下而感到迷茫。 我们通过 227 个完整的代码示例和书中的解释说明来对所有涉及到的概念和技巧进行彻底的讲解,你可以 Go入门指南 - 2 - 本文档使用 看云 构建 下载这些代码到你的电脑上运行,从而加深对概念的理解。 本书会尽可能地将前后章节的内容联系起来,当然这也同时要求你通过学习不同的知识来对一个问题提出 尽可 Muller、Ryanne Dolan 和 Satish V.J. 给予我巨大的帮助,还有那些 golang-nuts 邮件列表里的 所有的成员。 欢迎来到 Go 语言开发的奇妙世界! Go入门指南 - 3 - 本文档使用 看云 构建 第一部分:学习 Go 语言 第1章:Go 语言的起源,发展与普及 第2章:安装与运行环境 第3章:编辑器、集成开发环境与其它工具 第1章:Go 语言的起源,发展与普及0 码力 | 380 页 | 2.97 MB | 1 年前3Go Web编程
可能在ORM的运行效率 和功能之间寻求一个平衡,beedb是目前开源的Go ORM框架中实现比较完整的一个库,而且运行效率相当不错,功能 也基本能满足需求。但是目前还不支持关系关联,这个是接下来版本升级的重点。 beedb是支持database/sql标准接口的ORM库,所以理论上来说,只要数据库驱动支持database/sql接口就可以无缝的 接入beedb。目前我测试过的驱动包括下面几个: 之前都 检查一下看它们是否是符合合法数据的要求。而且不要试图好心地去纠正非法数据,而要让用户按你制定的规则去输 入数据。历史证明了试图纠正非法数据往往会导致安全漏洞。这里举个例子:“最近建设银行系统升级之后,如果密 码后面两位是0,只要输入前面四位就能登录系统”,这是一个非常严重的漏洞。 过滤数据主要采用如下一些库来操作: strconv包下面的字符串转化相关函数,因为从Request中的r 值的事情上。 但是遗憾的是很多程序员不愿意在错误处理、调试和测试能力上下工夫,导致后面应用上线之后查找错误、定位问题 花费更多的时间。所以我们在设计应用之前就做好错误处理规划、测试用例等,那么将来修改代码、升级系统都将变 得简单。 开发Web应用过程中,错误自然难免,那么如何更好的找到错误原因,解决问题呢?11.1小节将介绍Go语言中如何处 理错误,如何设计自己的包、函数的错误处理,11.2小节将介绍0 码力 | 295 页 | 5.91 MB | 1 年前305. OpenKruise镜像预热实践_王思宇
maintainer 目 录 前言:OpenKruise 简介 01 为什么说人人都需要镜像预热 02 OpenKruise 是如何实现镜像预热的 03 如何通过镜像预热加速部署&发布 04 版本前瞻:原地升级与预热的结合 05 前言:OpenKruise 简介 第一部分 Cloud Native & Kubernetes & Go OpenKruise 是什么 OpenKruise( https://github 特殊业务镜像 – 资源池维度预热 版本前瞻:原地升级与预热的结合 第五部分 对效率的追求 create schedule attach/mount volume cni allotate start sidecar pull image for app start app Pod的创建过程,能否继续优化? 默认:重建升级 进阶:原地升级 优势: • 节省了调度的耗时,Pod 的位置、资源都不发生 经存在了应用的旧镜像,当拉取新版本镜像时只 需要下载少数的几层 layer • 原地升级 Pod 中某个容器时,其他容器保持正 常运行,网络、存储均不受影响 对极致效率的追求 create schedule attach/mount volume cni allotate start sidecar pull image for app start app Pod原地升级,能否进一步优化? in-place update0 码力 | 28 页 | 5.78 MB | 1 年前3GoFrame框架介绍及设计
项目依赖的模块过多,无从下手是否应当升级模块版本 • 各个模块孤立设计,单独看待每个模块可替换性很高, 开发体系难以建立,开发规范难以统一 模块化设计-模块聚合设计 • 框架核心维护较全面的通用基础模块,降低基础模块选择成本 • 我们只需要维护一个统一的框架版本,而不是数十个模块版本 • 我们只需要了解一个框架的内容变化,而不是数十个模块的内容变化 • 升级的时候只需要升级一个框架版本,而不是数十个模块版本的升级 个模块版本的升级 • 减轻心智负担,提高模块可维护性,更容易保证各业务项目的模块版本一致性 改进: 模块化设计-常见问题 1. 模块低耦设计:文件层面的源文件下载与模块之间的逻辑耦合没有直接关系 2. 框架核心精简:功能强大且代码精简,包含测试与示例代码共8MB容量 3. 编译语言特性:编译型语言和解释型语言的模块管理逻辑不太一样 虽然框架每一个模块都按照低耦合设计,模块可以选择性引 项目依赖的模块过多,项目无从下手是否应当升级这些模块版本 • 各个模块孤立设计,单独看待每个模块可替换性很高,开发体系难以建 立,开发规范难以统一 改进: • 框架核心维护较全面的通用基础模块,降低基础模块选择成本 • 我们只需要维护一个统一的框架版本,而不是数十个模块版本 • 我们只需要了解一个框架的内容变化,而不是数十个模块的内容变化 • 升级的时候只需要升级一个框架版本,而不是数十个模块版本的升级 • 统0 码力 | 37 页 | 8.84 MB | 1 年前3Go语言基础 Golang Fundaments
包函数 adder 隶属应用程序栈 – adder 返回的函数隶属 adder 执行时创建在堆中的栈 – 返回函数访问隶属函数实例的变量称为“闭包” Go语言入门资源 • 语言概览 – 官方Go指南,gotour – 系统的学习,go语言教程 • 程序结构 – 包/子包(main) • Go源代码 – 函数(main, init) • 命令行工具 • 编程参考与规范 – 官方文档”Effective0 码力 | 21 页 | 851.30 KB | 1 年前32.4 Go 1.4 runtime
Garbage Collector 3. Goroutine Scheduler 1. Memory Allocator 内存分配器 base on tcmalloc. 基于成熟方案,性能优秀。随着版本升级, 针对性改进,以期与垃圾回收器更好协作。 核心:自主管理,缓存复用,无锁分配。 page, span. 内存管理以页为基本单位,多个地址连续 页构成内存块。 VA 8K 8K 8K 管理内存块的元数据。 allspans: 垃圾回收遍历。 2. Garbage Collector 垃圾回收器 gc. 阈值触发,并行标记,并发清理。 定期强制回收,释放物理内存。 版本升级,垃圾回收效率总是核心问题。 gogc. 阈值检查,或强制回收。 malloc next_gc 0 gogc runtime.gc() stop start mark sweep stop0 码力 | 29 页 | 608.57 KB | 1 年前302. Service Mesh落地之后_为sidecar注入灵魂 - 周群力
html 图片来源: https://www.zhihu.com/question/55912398/ answer/147967674 Service Mesh 的初衷 6 • 升级成本高 • 业务解耦 • 平滑升级 • 异构语言治理 • 异构语言治理能力弱 • SDK 版本不统一 应用 SDK 服务路由 负载均衡 通信序列化协议 sidecar 应用 SDK 通信序列化协议0 码力 | 63 页 | 880.85 KB | 1 年前3Golang大规模云原生应用管理实践
,不得不学习复杂的声明字段和各种奇怪的Annotation; • 稳定性不足:没有设置Pod的QoS等级,导致频繁被驱逐,没有设置反亲和性策略,导致节点流量不均; • 扩展效率低:需要负责安装,升级丰富的云原生插件,无法解决插件的依赖,冲突和资源浪费问题; • 运维成本高:Apiserver, etcd, Controller-Manager, Kubelet,等组件都具有一定复杂度,无法做到定期升 Successfully applied components 新的复杂度-控制器运维 我们要管控大规模的集群,每个集群也会部署大量的控制器,控制器本身的运维成为问题 • 控制器管控平台 • 升级 • 回滚 • 灰度 • 重启 • 观测性 • Prometheus • 统一日志收集 • 事件中心 • 告警 • 能力管控 • 版本管理 • 依赖满足 • 健康检查 云原生PaaS平台的发展趋势0 码力 | 23 页 | 7.70 MB | 1 年前3Go语言 - 一些简单的读书分享
向技术领域的巨⼈学习 为什么要读书 带着问题读书 第⼆部分 带着问题读书 宏观: • 为什么公司的系统总是在同⼀个环节出故障,有没有成熟的⼯具和流程能够避免这 些故障? • 为什么让⼤家升级⼀个 sdk 这么难? 微观: • 为什么这⾥不加锁也是安全的? • 怎么样减少 valiation 的⼯作量? ⾃身 • 要做⼀个有好奇⼼的⼈ • 与有好奇⼼的⼯程师多交流 举例0 码力 | 16 页 | 9.09 MB | 1 年前3
共 22 条
- 1
- 2
- 3