Go 构建大型开源分布式数据库技术内幕
Go 搭建大型开源分布式数据库技术内幕 shenli@PingCAP 关于我 ● 申砾 (Shen Li) ● TiDB 技术负责人 ● 网易有道 / 360搜索 / PingCAP ● Infrastructure software engineer 为什么需要一个新的数据库? 从单机数据库到 NewSQL ● 关系型数据库 ● NoSQL ● 中间件 ● NewSQL0 码力 | 44 页 | 649.68 KB | 1 年前3Go 入门指南(The way to Go)
对于学习 Go 编程语言的爱好者来说,这本书无疑是最适合你的一本书籍,这里包含了当前最全面的学习 资源。本书通过对官方的在线文档、名人博客、书籍、相关文章以及演讲的资料收集和整理,并结合我自 身在软件工程、编程语言和数据库开发的授课经验,将这些零碎的知识点组织成系统化的概念和技术分类 来进行讲解。 随着软件规模的不断扩大,诸多的学者和谷歌的开发者们在公司内部的软件开发过程中开始经历大量的挫 折 行比较(书中会使用大家所熟知的缩写 “OO” 来表示面向对象)。 本书将会从最基础的概念讲起,同时也会讨论一些类似在应用 goroutine 和 channel 时有多少种不同的模 Go入门指南 - 1 - 本文档使用 看云 构建 式,如何在 Go 语言中使用谷歌 API,如何操作内存,如何在 Go 语言中进行程序测试和如何使用模板来 开发 Web 应用这些高级概念和技巧。 在本书的第一部分,我们将会讨论 代码示例,以避免你在不了 解某些高级概念的情况下而感到迷茫。 我们通过 227 个完整的代码示例和书中的解释说明来对所有涉及到的概念和技巧进行彻底的讲解,你可以 Go入门指南 - 2 - 本文档使用 看云 构建 下载这些代码到你的电脑上运行,从而加深对概念的理解。 本书会尽可能地将前后章节的内容联系起来,当然这也同时要求你通过学习不同的知识来对一个问题提出 尽可能多的解决方案。记住,0 码力 | 380 页 | 2.97 MB | 1 年前3Go 入门指南(The way to Go)
6 生成代码文档 3.7 其它工具 3.8 Go 性能说明 3.9 与其它语言进行交互 第4章:基本结构和基本数据类型 4.1 文件名、关键字与标识符 4.2 Go 程序的基本结构和要素 4.3 常量 4.4 变量 4.5 基本类型和运算符 4.6 字符串 4.7 strings 和 strconv 包 4.8 时间和日期 4.9 指针 - 2 - 本文档使用 书栈(BookStack 类型的切片 8.5 map 的排序 8.6 将 map 的键值对调 第9章:包(package) 9.1 标准库概述 9.2 regexp 包 9.3 锁和 sync 包 - 3 - 本文档使用 书栈(BookStack.CN) 构建 9.4 精密计算和 big 包 9.5 自定义包和可见性 9.6 为自定义包使用 godoc 9.7 使用 go install 安装自定义包 结构体、集合和高阶函数 第12章:读写数据 12.1 读取用户的输入 12.2 文件读写 12.3 文件拷贝 12.4 从命令行读取参数 12.5 用 buffer 读取文件 - 4 - 本文档使用 书栈(BookStack.CN) 构建 12.6 用切片读写文件 12.7 用 defer 关闭文件 12.8 使用接口的实际例子:fmt.Fprintf 12.9 格式化 JSON 数据0 码力 | 466 页 | 4.44 MB | 1 年前3Golang 101(Go语言101 中文版) v1.21.a
2 第33章:表达式估值顺序规则 第34章:值复制成本 第35章:边界检查消除 并发编程 第36章:并发同步概述 第37章:通道用例大全 第38章:如何优雅地关闭通道 第39章:其它并发同步技术 - 如何使用sync标准库包 第40章:原子操作 - 如何使用sync/atomic标准库包 第41章:Go中的内存顺序保证 第42章:一些常见并发编程错误 内存相关 第43章:内存块 我感觉我仍然是一个Go新手程序员。 我放弃了写那本书。 放弃?《Go语言101》现在不是已经完成了吗? 那本曾经计划要写的书不是《Go语言101》。 放弃那本书的写作计划后,我通过阅 读很多官方Go文档和网络中的各种Go文章、关注Go官方项目的问题跟踪列表和一些 Go论坛、查看一些代码等途径, 逐渐地,我几乎消除了我所有关于Go编程细节中的 困惑。 我大概花了大约一年时间来消除这些困惑。 在这个时期,每当我消除了某个主题的 我们可以(并且应该常常)使用go fmt子命令来用同一种代码风格格式化Go代码。 我们可以使用go test子命令来运行单元和基准测试用例。 我们可以使用go doc子命令来(在终端中)查看Go代码库包的文档。 强烈推荐让你的Go项目支持Go模块特性来简化依赖管理。对一个支持Go模块特性的 项目: go mod init example.com/myproject命令可以用来在当前目录中生成一 个go0 码力 | 591 页 | 21.40 MB | 1 年前3Golang 101(Go语言101 中文版) v1.21.a
第32章:代码块和标识符作用域 第33章:表达式估值顺序规则 第34章:值复制成本 第35章:边界检查消除 并发编程 第36章:并发同步概述 第37章:通道用例大全 第38章:如何优雅地关闭通道 第39章:其它并发同步技术 - 如何使用sync标准库包 第40章:原子操作 - 如何使用sync/atomic标准库包 第41章:Go中的内存顺序保证 第42章:一些常见并发编程错误 内存相关 第43章:内存块 第44章:关于Go值的内存布局 我感觉我仍然是一 个Go新手程序员。 我放弃了写那本书。 放弃?《Go语言101》现在不是已经完成了 吗? 那本曾经计划要写的书不是《Go语言101》。 放弃那本书的写作计划后,我通 过阅读很多官方Go文档和网络中的各种Go文章、关注Go官方项目的问题跟踪 列表和一些Go论坛、查看一些代码等途径, 逐渐地,我几乎消除了我所有关 于Go编程细节中的困惑。 我大概花了大约一年时间来消除这些困惑。 在这个时期,每当我消除了某个 我们可以(并且应该常常)使用go fmt子命令来用同一种代码风格格式化Go 代码。 我们可以使用go test子命令来运行单元和基准测试用例。 我们可以使用go doc子命令来(在终端中)查看Go代码库包的文档。 强烈推荐让你的Go项目支持Go模块特性来简化依赖管理。对一个支持Go模块 特性的项目: go mod init example.com/myproject命令可以用来在当前目录中生成一个 go0 码力 | 821 页 | 956.82 KB | 1 年前3Golang 101(Go语言101 中文版) v1.21.a
第32章:代码块和标识符作用域 第33章:表达式估值顺序规则 第34章:值复制成本 第35章:边界检查消除 并发编程 第36章:并发同步概述 第37章:通道用例大全 第38章:如何优雅地关闭通道 第39章:其它并发同步技术 - 如何使用sync标准库包 第40章:原子操作 - 如何使用sync/atomic标准库包 第41章:Go中的内存顺序保证 第42章:一些常见并发编程错误 内存相关 第43章:内存块 第44章:关于Go值的内存布局 我感觉我仍然是一个 Go新手程序员。 我放弃了写那本书。 放弃?《Go语言101》现在不是已经完成了吗? 那本曾经计划要写的书不是《Go语言101》。 放弃那本书的写作计划后,我通 过阅读很多官方Go文档和网络中的各种Go文章、关注Go官方项目的问题跟踪 列表和一些Go论坛、查看一些代码等途径, 逐渐地,我几乎消除了我所有关于 Go编程细节中的困惑。 我大概花了大约一年时间来消除这些困惑。 在这个时期,每当我消除了某个主 我们可以(并且应该常常)使用go fmt子命令来用同一种代码风格格式化Go代 码。 我们可以使用go test子命令来运行单元和基准测试用例。 我们可以使用go doc子命令来(在终端中)查看Go代码库包的文档。 强烈推荐让你的Go项目支持Go模块特性来简化依赖管理。对一个支持Go模块 特性的项目: go mod init example.com/myproject命令可以用来在当前目录中生成一个0 码力 | 608 页 | 1.08 MB | 1 年前3GoFrame框架介绍及设计
框架介绍 • 框架架构 • 项目初心 框架介绍 GoFrame是一款模块化、高性能、企业级的Go基础开发框架。 • 模块化、松耦合 • 模块丰富、开箱即用 • 简洁易用、快速接入 • 文档详尽、易于维护 • 自顶向下、体系化设计 • 统一框架、统一组件、降低选择成本 • 开发规范、设计模式、代码分层模型 • 强大便捷的开发工具链 • 完善的本地中文化支持 • 设计为团队及企业使用 数据库类型:通过标准库驱动接口支持多种数据库类型 • 跨平台性:基于Golang开发语言强大跨平台特性 框架介绍-项目初心 工程化建设 统一框架 核心组件 项目架构 设计模式 开发规范 开发文档 开发工具 …… 模块化设计 第二部分 • 复用原则 • 单仓包设计 • 模块聚合设计 • 常见问题 模块化设计 什么是模块? 模块化的目标? 模块也称作组件,是软件系统中可复用的功能逻辑封装单位。 发布文件往往很小 源代码 解释器 输出 每次执行都需要解释 打包发布 解释型语言: 发布文件往往较大 统一框架设计 第三部分 • 技术体系化 • 开发规范化 • 组件统一化 • 形成技术沉淀 • 避免资源浪费 统一框架设计 统一框架设计-技术体系化 Container Converting Errors I18N Cache Validater Configure0 码力 | 37 页 | 8.84 MB | 1 年前3Go Web编程
你也可以带上参数,详情 请参考go help testflag go doc go doc 很多人说go不需要任何的第三方文档,例如chm手册之类的(其实我已经做了一个了,chm手册),因为它内部就有一 个很强大的文档工具。 如何查看相应package的文档呢? 例如builtin包,那么执行go doc builtin 如果是http包,那么执行go doc net/http 查看某一个包里面的函数,那么执行godoc -http=:8080。然后在浏览器中打开 127.0.0.1:8080,你将会看到一个golang.org的本地copy版本,通过它你可以查询pkg文档等其它内容。如果你设 置了GOPATH,在pkg分类下,不但会列出标准包的文档,还会列出你本地GOPATH中所有项目的相关文档,这对于经常 被墙的用户来说是一个不错的选择。 其它命令 其它命令 go还提供了其它很多的工具,例如下面的这些工具 go fix 管理和切换多个Go编译环境 支持Go语言交叉编译 与Go标准一致的项目管理方式 基于GOPATH的包浏览器 基于GOPATH的编译系统 基于GOPATH的Api文档检索 Go语言的编辑支持 类浏览器和大纲显示 Gocode(代码自动完成工具)的完美支持 Go语言文档查看和Api快速检索 代码表达式信息显示F1 源代码定义跳转支持F2 Gdb断点和调试支持 gofmt自动格式化支持 其他特征 支持多国语言界面显示0 码力 | 295 页 | 5.91 MB | 1 年前32.游戏战中陪伴助手微服务架构设计与应用
管理平台:开发、运营、运维辅助 实现方案——Token 清洗 Token 清洗服务完整流程 - 挑战:150+类 token,如何高内聚,降低 token 计算逻辑复杂度 - 方案:Token 计算插件化 - 技术选型: - 对比:Lua vs Go 二进制——开发灵活 vs 性能 - 思考:Go 脚本? - 最终方案: - Go 脚本开发 - 二进制发布 我全都要 方案 耗时(冒泡排序) 耗时(斐波那契) token? - 各 token 的满足条件是什么? - 命中条件的 token 持续多久时间? - 开发插件 - 入参:对局状态和当前事件信息 - 出参:符合条件的 token 列表 - 技术方案 - github.com/traefik/yaegi 推荐系统——特殊的推荐流程 战中推荐与传统推荐的不同 - 物料:Token 的组合 => 策略点 => 物料 - 类比:Token 人工设计 人工设计 + 离线挖掘 需求迭代周期 2 周 3~5 天 常驻人力 运营 1、开发 1、项目管理 0.5 运营 1 后台技术栈 Lua Go 代码理解成本 >10000 行代码 + 1500 行注释 135 行代码 + 82 行注释 + 开发模式文档 交接周期 未知(未交接过) 1 天(几位开发参与过) 持续测试 无 有 性能和成本优化 第四部分 贵 - 部署:腾讯云 TKE(Tencent0 码力 | 47 页 | 11.10 MB | 1 年前36.从 0 到 1 搭建十亿级包裹 API Versioning
- 产品定位 - 稳定性影响 - 稳定性承诺 SaaS 2B 和 2C 的差异 国内 SaaS 和国际 SaaS 的技术规划的差异 - 专注和极致 - 规范和标准 - 安全合规 - 全球化 1.2 API 的重要性 API 也是产品的一部分,而不仅仅是技术。对于 SaaS 产品,提供 API 服务几乎是与企业级用户合作的必须项,特别是在海外。 - 自动化 - 通过 API,企业可以利用 实例、资源,各版本之间互不影响。客户端 可以自由选择调用哪个版本。 How Part 3/4 1. Support Policy 2. API Version 3. Webhook Version 4. 公开文档 5. 系统架构 6. 版本维护 3.1 Support Policy 每新增一个版本都会带来额外的维护成本,所以版本发布频率高的企 业,版本支持时间较短;版本发布频率低的企业,版本支持时间较长。 对于生命周期以及兼容性可以有更加清晰的定义。 3.3 Webhook version 3.4 公开文档 3.5.1 系统架构概览 3.5.2 系统设计的 trade-off 我们只在应用层做版本化, 每个版本维护的业务逻辑实 际上是对能力层的兼容。 3.6 版本维护 Takeaway Part 4/4 Takeaway 1. API 不仅仅是技术,也是一款产品。如果想要和企业用户合作,API 是必 需项。在一开始就应该以高标准、高要求规划我们的0 码力 | 28 页 | 2.26 MB | 1 年前3
共 54 条
- 1
- 2
- 3
- 4
- 5
- 6