Go语言基础
Golang Fundaments## Go语言基础 Golang Fundaments 中山大学 数据科学与计算学院 潘茂林 panml@mail.sysu.edu.cn ## 大纲 • Golang-设计哲学 • 基础知识学习 • Go语言的入门资源 • 本地项目工作空间组织 • 开始编程 ## Golang-设计哲学 ## 我们需要什么样的语言 曾经 我们对包含大量代码的程序印象深刻。 - 我们努力在代码库中创建大型抽象。 这是一个有效的程序吗? - 是正确的吗? - 按时完成了吗? - 花了成本(时间、空间复杂度)? 渴望成为质量、效率和简单的冠军。 • 有自己的观点。 • 重视反省和自我检讨。 ## Go语言应该是这样的 · 易于阅读代码 - 对遗存软件友好 • 心智模型 • 生产率与性能 • 正确性与性能 • 规则 • 方便代码评审 - 完整性 - 可读性 - 简单性 - 性能 • 实用主义的语言风格 - 面向编译器的静态类型语言 • 数据类型必须在编译阶段确定 • 语言能充分发挥编译优化技术 - 复古且简便的语言 • 集合了多种语言实用的语法表示 • 函数是一等公民(First-Class Functions) • 抛弃了面向对象 - 开放(几乎所有资源都在github上) ## • 语法基本特点 - C 语言的身体(语法基本类似 C 语言) – Python0 码力 | 21 页 | 851.30 KB | 2 年前3
2.2.3 Go语言的抢占式调度## Go 语言的抢占式调度  曹春晖 资深 Gopher  Go 程序的启动 新版本的抢占实现 05 当前的 Go 语言还有哪些问题 06 ## 第一部分 ## Go 程序的启动 ## 编译过程 ### Go 程序 hello.go 的编译过程: ●●● package main func main() { println("hello world") } ●●● go build hello.go ●●●  · 我是作者之一 - 这本书在写的时候国内的 Go 语言书很少 • 现在销量约 2w+ - 直到现在,CGO code can make them go fast in the short term we can clean it up later get to the market first ## 这个是我在读架构整洁之道的时候做的笔记 tdd is slow avoid overconfidence take arch seriously 在 C 语言里,通过 h 和 c 文件分离,就可以达成完美的封装,在 文件分离,就可以达成完美的封装,在 c 中的变量外部是没有办法看到或者访问的 Encapsulation 之后的面向对象语言在封装上实际上有弱化,像 C++ 和 java,即使不想暴露在外部的变量,也必须在 .h 或 class 声明中写明 private c**是因为技术原因 需要知道每个class Java 干脆连声明和法分离了,是一种退 public and priv 种 hack c0 码力 | 16 页 | 9.09 MB | 2 年前3
用Go语言实现推送服务器## 用Go语言实现推送服务器 陈叶皓 chen.yh@ctrip.com ## 议程 • 推送服务器介绍 • Golang特点 • 推送服务架构 • 部分代码 • 上线效果 ## 议程 • 推送服务器介绍 • 推送服务架构 • 部分代码 • 上线效果 ## 什么是推送服务器 • 推送业务信息到手机端 • 始终保持连接 ## 推送服务器要求 · 高并发 • 可靠性 • 高性能 • 支持水平扩展 • 无单点故障 ## Go语言特性 • 静态的、编译的 • 自动内存回收 • 命令式编程 • 函数可以作为值 • 面向并发 • 内置RPC支持 ## 推送服务器要求的应对 - 高并发 - goroutine - 可靠性 - 使用Redis暂存消息 - 高性能 - 静态编译语言 - 支持水平扩展 - 使用RPC组成集群 使用RPC组成集群 - 无单点故障 - 使用Redis实现数据共享 ## Go语言的并发模型 • 事件驱动,共享线程池 runtime.GOMAXPROCS(runtime.NumCPU()) - 使用 “go” 命令创建goroutine go sockstore.Start() - goroutine使用channel交换消息 - 异步场景,直接往指定channel发送数据 - 同步0 码力 | 25 页 | 260.04 KB | 2 年前3
Go语言最差实践 - 李俱顺## GCN ## Go Worst Practices 李俱顺(Kevin Lee) EKEYNOW Pte Ltd. ## $ whoami ## About Me • Gopher & Pythonista • CTO @ EKEYNOW Pte Ltd. • Community Contributor @ GoCN ## About ekeynow • A IoT IoT SaaS startup company. All system powered by Go. ## @keynow ## “ ## DAVE SNOWDEN Best practice is useless, we only learn from worst practice. Trying to copy the best others have done amounts to ignoring TIMEOUT Go Concurrency Patterns: Context ## #3 OVERREACHING FOR CONCURRENCY ## OVERREACHING FOR CONCURRENCY ## ☐ ☐ ☐ func finishReq(timeout time.Duration) r ob { ch := make(chan ob) go func() {0 码力 | 38 页 | 3.27 MB | 2 年前3
1.1.2 基于Go语言的滴滴DevOps重塑之路GO CN 基于Go语言的滴滴DevOps重塑之路 魏静武 滴滴出行高级技术专家 主要负责研发效率与稳定性 DevOps - 新的挑战 01 开发 - 云原生脚手架 02 测试 - 流量回放与测试环境 03 运维 - AIOps 04 未来 - 自动发布 05 第一部分 DevOps 新的挑战 ’ alt=‘OCR图片’/> DevOps - 新的挑战 ’ alt=‘OCR图片’/> 开发-云原生脚手架 ’ alt=‘OCR图片’/> 开发一云原生脚手架 开发 重复工作繁重微服务虽小“五脏俱全” 弱类型语言语义不明微服务架构更依赖明确的类型约束 3. 性能瓶颈 滴滴流量存在明显的早晚和节假日波峰 ’ alt=‘OCR图片’/> 开发 统一Go技术栈 统一框架 统一数据 ’ alt=‘OCR图片’/> 开发一云原生脚手架 /** * req req) 回放 /ason 162-267 success 回放 /order 162 success 回放 ’ alt=‘OCR图片’/> 测试 - 测试环境 基于链路追踪的流量染色 基于Go构建sidecar进行染色流量分发 ’ alt=‘OCR图片’/> 测试 - 测试环境 环境名称 部署状态 创建人|创建时间 可用时长 集群域名 环境标签 操作 gs_osim3430 码力 | 23 页 | 1.86 MB | 1 月前3
1.1 Go语言游戏项目应用情况汇报## Go语言游戏项目应用情况汇报 厦门真有趣信息科技有限公司 达达 ## 项目介绍 - 2012年 - 2015年,仙侠道网页版,使用Go语言替代神仙道时期的Erlang,开发流程和主要架构不变 - 2014年 - 2015年,仙侠道手机版,在原有架构基础上拆分游戏逻辑服务器,分离互动功能 ## 游戏服务端的挑战 • 请求频繁 - 实时性要求高(百毫秒的延迟便可被感知) • 开发效率要求高(每周一更) 开发效率要求高(每周一更) - 运维效率要求高(最好是别运维。。。) ## 我们做了哪些事情 • 通讯层:协议描述语言以及代码自动生成 • 业务层:顺序结构以及接口注册 - 数据层:映射MySQL的内存数据库以及代码自动生成 ## 通讯层 - 通讯协议描述文档的格式选择 • XML、JSON • Protobuf • 自定义语法 可视化编辑 // 玩家模块 mod player = 00 码力 | 21 页 | 1.63 MB | 2 年前3
1.7 罗辑思维Go语言微服务改造实践罗辑思维Go语言微服务改造实践 ’ alt=‘OCR图片’/> 自我介绍 Cisco Weibo 创业阶段 罗辑思维 ’ alt=‘OCR图片’/> 背景 改造过程 未来做什么 最早的版本 GopherChina2018 第二版 GopherChina2018 屋漏偏逢连夜雨 8/31大故障 罗老师要跨年 产品迭代不能停 改造目标 改造目标 高性能 服务化 资源拆分隔离 高可用 为什么选择Go 简单易用 高性能 原生支持并发 部署运维方便 改造过程 架构图 框架和基础设施完善 系统重构 GopherChina2018 框架和基础设施 API GATEWAY 服务框架 多级缓存 熔断降级 API GATEWAY 目的 限流 升级API cache go with redis cache big cache object cache 免费专栏首页 100+ 600+ 2000+ 12000+ 付费专栏首页 200+ 900+ 2400+ 14000+ 熔断降级 熔断 降级 熔断 GopherChina2018 熔断 GopherChina2018 熔断 hystrix.Go("my_command"0 码力 | 43 页 | 2.32 MB | 1 月前3
Golang 101(Go语言101 中文版) v1.21.a# Go语言101 $ -=v1.21.a-d5979d9= $   ! 著 # Go语言101 $ -= v1.21.a-d5979d9 = - $  老貘 著 ## 目录 - 第0章:关于《Go语言101》- 为什么写这本书 - 第1章:致谢 - 第2章:Go语言简介 - 为什么Go语言值得学习 为什么Go语言值得学习 - 第3章:Go官方工具链 - 如何编译和运行Go程序 - Go编程入门 - 第4章:程序源代码基本元素介绍 - 第5章:关键字和标识符 - 第6章:基本类型和它们的字面量表示 - 第7章:常量和变量 - 顺便介绍了类型不确定值和类型推断 - 第8章:运算操作符 - 顺便介绍了更多的类型推断规则 - 第9章:函数声明和调用 - 第10章:代码包和包引入0 码力 | 608 页 | 1.08 MB | 2 年前3
共 1000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 100













