Go 入门指南(The way to Go)测试多返回值函数的错误 5.3 switch 结构 5.4 for 结构 5.5 Break 与 continue 5.6 标签与 goto 第6章:函数(function) 6.1 介绍 6.2 函数参数与返回值 6.3 传递变长参数 6.4 defer 和追踪 6.5 内置函数 6.6 递归函数 6.7 将函数作为参数 6.8 闭包 6.9 应用闭包:将函数作为返回值 应用闭包:将函数作为返回值 6.10 使用闭包调试 6.11 计算函数执行时间 6.12 通过内存缓存来提升性能 第7章:数组与切片 7.1 声明和初始化 7.2 切片 7.3 For-range 结构 7.4 切片重组(reslice) 7.5 切片的复制与追加 7.6 字符串、数组和切片的应用 第8章:Map 8.1 声明、初始化和 make 8.2 测试键值对是否存在及删除元素 8.3 for-range 7 使用 go install 安装自定义包 9.8 自定义包的目录结构、go install 和 go test 9.9 通过 Git 打包和安装 9.10 Go 的外部包和项目 9.11 在 Go 程序中使用外部库 第10章:结构(struct)与方法(method) 10.1 结构体定义 10.2 使用工厂方法创建结构体实例 10.3 使用自定义包中的结构体 10.4 带标签的结构体0 码力 | 466 页 | 4.44 MB | 1 年前3
Go 入门指南(The way to Go)环境(第 3 章)。 在本书的第二部分,我们将会带领你贯穿 Go 语言的核心思想,譬如简单与复杂类型(第 4、7、8 章), 控制结构(第 5 章),函数(第 6 章),结构与方法(第 10 章)和接口(第 11 章)。我们会对 Go 语 言的函数式和面向对象编程进行透彻的讲解,包括如何使用 Go 语言来构造大型项目(第 9 章)。 在本书的第三部分,你将会学习到如何处理不同格式的文件(第 12 在传统的面向对象语言中,使用面向对象编程技术显得非常的臃肿,它们总是通过复杂的模式来构建庞大 的类型层级,这违背了编程语言应该提升生产力的宗旨。 函数是 Go 语言中的基本构件,它们的使用方法非常灵活。在第六章,我们会看到 Go 语言在函数式编程 方面的基本概念。 Go 语言使用静态类型,所以它是类型安全的一门语言,加上通过构建到本地代码,程序的执行速度也非 常快。 作为强类型语言, Go 语言的稳定版本是 Go 1.4.2。 1.2.7 关于特性缺失 许多能够在大多数面向对象语言中使用的特性 Go 语言都没有支持,但其中的一部分可能会在未来被支 持。 为了简化设计,不支持函数重载和操作符重载 为了避免在 C/C++ 开发中的一些 Bug 和混乱,不支持隐式转换 Go 语言通过另一种途径实现面向对象设计(第 10-11 章)来放弃类和类型的继承 尽管在接口的使用方面(第0 码力 | 380 页 | 2.97 MB | 1 年前3
Go Web编程1.1. Go安装 1.2. GOPATH 与工作空间 1.3. Go 命令 1.4. Go开发工具 1.5. 小结 2.Go语言基础 2.1. 你好,Go 2.2. Go基础 2.3. 流程和函数 2.4. struct 2.5. 面向对象 2.6. interface 2.7. 并发 2.8. 小结 3.Web基础 3.1 web工作方式 3.2 Go搭建一个简单的web服务 3.3 beedb.go util.go 从上面的结构我们可以很清晰的看到,bin目录下面存的是编译之后可执行的文件,pkg下面存放的是函数包,src下 面保存的是应用源代码 13 [1] Windows系统中环境变量的形式为%GOPATH%,本书主要使用Unix形式,Windows用户请自行替换。 links links 个很强大的文档工具。 如何查看相应package的文档呢? 例如builtin包,那么执行go doc builtin 如果是http包,那么执行go doc net/http 查看某一个包里面的函数,那么执行godoc fmt Printf 也可以查看相应的代码,执行godoc -src fmt Printf 通过命令在命令行执行 godoc -http=:端口号 比如godoc -http=:8080。然后在浏览器中打开0 码力 | 295 页 | 5.91 MB | 1 年前3
Go基础语法宝典slice slice 有一些简便的操作 slice 有几个有用的内置函数 map make 、 new 操作 零值 流程控制 if goto for switch 函数 函数的定义 多个返回值 变参 传值与传指针 defer 函数作为值、类型 Panic和Recover main 函数和 init 函数 import 1、相对路径 2、绝对路径 特殊的import 指针作为receiver method继承 method重写 interface 什么是interface interface类型 interface值 空interface interface函数参数 interface变量存储的类型 嵌入interface 反射 并发 goroutine channels Buffered Channels Range和Close Select go的二十五个关键字 简介 var 和 const 是 Go语言基础里面的变量和常量申明 package 和 import 用于分包和导入 func 用于定义函数和方法 return 用于从函数返回 defer 用于类似析构函数 go 用于并发 select 用于选择不同类型的通讯 interface 用于定义接口 struct 用于定义抽象数据类型 break 、 case0 码力 | 47 页 | 1020.34 KB | 1 年前3
2.2.2 深入理解BFE支持多租户 • 引入条件表达式,减少正则表达式使用 • 降低动态配置加载的难度 • 区分“常规配置”和“动态配置” • 增强服务状态监控能力 • 向外展现大量内部的执行状态 • 将大存储功能转移到外部 • 加快启动速度 正则表达式 方案的问题 • 配置难以维护:正则表达式存在严重的可读 性问题 • 性能存在隐患:有可能因编写不当引起严重 的性能退化 BFE转发的主要概念 BFE的转发过程 https://github.com/baidu/go-lib • 支持状态、差值、延迟统计等 配置管理 • BFE配置的分类 • 常规配置:.conf • 动态配置:.data • 配置动态加载 • 外部触发,细粒度加载 写配置 func (t *ProductRuleTable) Update(conf productRuleConf) { t.lock.Lock() t.version = BFE扩展模块的编写 • 配置加载 • 静态:mod_block.conf • 动态:block_rules.data, ip_blocklist.data • 回调函数编写和注册 • 定义状态变量 type ModuleBlock struct { … state ModuleBlockState // module state metrics0 码力 | 26 页 | 1.78 MB | 1 年前3
Go性能优化概览-曹春晖t_golang/blob/b89620c4916814c2960f16255c36d1b381cda9e7/ prometheus/go_collector.go#L45 基本套路 1. 排除外部问题,例如依赖的上游服务(包括 DB、redis、MQ)延迟 过⾼,在监控系统中查看 2. CPU 占⽤过⾼ -> 看 CPU profile -> 优化占⽤ CPU 较多的部分逻 辑 3. ⾮指针对象 • 多个⼩对象 -> 合并为⼀个⼤对象 • offheap • 降低 GC 频率 • 修改 GOGC • Make 全局⼤ slice • CPU 使⽤太⾼ • 调度相关的函数使⽤ CPU 过⾼ • 注意 automaxprocs • 尝试使⽤ goroutine pool 减少 goroutine 的创建与销毁 • 控制最⼤ goroutine 数量 总结⼀下 goroutine • Goroutine pool 限制最⼤ goroutine 数量 • 使⽤裸 epoll 库(evio,gev 等)修改⽹络编程⽅式(只适⽤于对延迟不敏感的业务) • 通过修改代码,减少函数调⽤层级(难) 总结⼀下 • 阻塞问题 • 上游系统阻塞 • 让上游赶紧解决! • 锁阻塞 • 减少临界区范围 • 降低锁粒度 • Global lock -> sharded lock0 码力 | 40 页 | 8.69 MB | 1 年前3
Go可观测性实践Go工程可观测性实践 周曙光 得物 Go开发 目 录 可观测性概述 01 链路追踪 02 指标 03 可观测性概述 第一部分 广义的可观测性:可以根据系统的外部输出信息推断出系统内部状态的好 坏。 软件系统的可观测性:一种度量能力,能帮你更好的理解系统当前所处的 任何状态。如果无需发布新代码就可以理解任何新的或怪异的状态,那么 系统就具备可观测性。 什么是可观测性? 可观测性开源产品 覆盖组件不限于:数据库、缓存、消息队列、RPC、HTTP等。 插桩(拦截器) 创建并命名上下文(HTTP请 求或gRPC)中已存在的任意 Span的子Span,开始计时 器计时,计算Span的时长, 在函数调用结束(defer)中完 成用于传输给后端的Span。 插桩(Hook) Span的开始和结束 对于Go来说,在进程或者goroutine上下文中出现活跃的Span的任何地方, 都可以调用0 码力 | 35 页 | 2.88 MB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a第6章:基本类型和它们的字面量表示 第7章:常量和变量 - 顺便介绍了类型不确定值和类型推断 第8章:运算操作符 - 顺便介绍了更多的类型推断规则 第9章:函数声明和调用 第10章:代码包和包引入 第11章:表达式、语句和简单语句 第12章:基本流程控制语法 第13章:协程、延迟函数调用、以及恐慌和恢复 Go类型系统 第14章:Go类型系统概述 - 精通Go编程必读 第15章:指针 第16章:结构体 第17章:值部 第17章:值部 - 为了更容易和更深刻地理解Go中的各种值 第18章:数组、切片和映射 - Go中的首要容器类型 第19章:字符串 第20章:函数 - 函数类型和函数值,以及变长参数个数函数 第21章:通道 - Go特色的并发同步方式 第22章:方法 第23章:接口 - 通过包裹不同具体类型的非接口值来实现反射和多态 第24章:类型内嵌 - 不同于继承的类型扩展方式 第25章:非类型安全指针 第26章:泛型 如何使用和解读组合类型 第27章:反射 - reflect标准库包中提供的反射支持 一些专题 第28章:代码断行规则 第29章:更多关于延迟函数调用的知识点 第30章:一些恐慌/恢复用例 第31章:详解panic/recover原理 - 也解释了什么是“函数退出阶段” 第32章:代码块和标识符作用域 目录 2 第33章:表达式估值顺序规则 第34章:值复制成本 第35章:边界检查消除0 码力 | 591 页 | 21.40 MB | 1 年前3
Golang大规模云原生应用管理实践方法和系统,关注如何做事 “how” • 员工进入公司需要验证是一个策略,人脸识别是机制; • 从杭州到上海是策略,坐火车是机制; • 接口是策略,实现是机制; • 声明是策略,过程是机制; • 策略面向外部交互,机制面向内部实现; • 策略追求开放标准,机制追求稳定可复用; • 策略与机制要分离; • 策略与机制随着层次的变化而变化; 应用管理的策略与机制 应用 版本 工作负载 负载均衡 Reconcile(rsvc) } } • 声明式资源设计不合理; • Expect state变化导致大范围Pod重启; • Reconcile逻辑混乱不堪,不可测试; • 外部交互模式不匹配; • 声明式资源设计(要什么) • Static • Measurable • Relevant • Attainable • Timebound • 控制器设计(做什么) •0 码力 | 23 页 | 7.70 MB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a第6章:基本类型和它们的字面量表示 第7章:常量和变量 - 顺便介绍了类型不确定值和类型推断 第8章:运算操作符 - 顺便介绍了更多的类型推断规则 第9章:函数声明和调用 第10章:代码包和包引入 第11章:表达式、语句和简单语句 第12章:基本流程控制语法 第13章:协程、延迟函数调用、以及恐慌和恢复 Go类型系统 第14章:Go类型系统概述 - 精通Go编程必读 第15章:指针 第16章:结构体 第17章:值部 第17章:值部 - 为了更容易和更深刻地理解Go中的各种值 第18章:数组、切片和映射 - Go中的首要容器类型 第19章:字符串 第20章:函数 - 函数类型和函数值,以及变长参数个数函数 第21章:通道 - Go特色的并发同步方式 第22章:方法 第23章:接口 - 通过包裹不同具体类型的非接口值来实现反射和多态 第24章:类型内嵌 - 不同于继承的类型扩展方式 第25章:非类型安全指针 第26章:泛型 如何使用和解读组合类型 第27章:反射 - reflect标准库包中提供的反射支持 一些专题 第28章:代码断行规则 第29章:更多关于延迟函数调用的知识点 第30章:一些恐慌/恢复用例 第31章:详解panic/recover原理 - 也解释了什么是“函数退出阶段” 第32章:代码块和标识符作用域 第33章:表达式估值顺序规则 第34章:值复制成本 第35章:边界检查消除 并发编程 第36章:并发同步概述0 码力 | 608 页 | 1.08 MB | 1 年前3
共 50 条
- 1
- 2
- 3
- 4
- 5













