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 get github.com/DisposaBoy/MarGo 这个时候我们会发现在$GOPATH/bin下面多了两个可执行文件,gocode和MarGo,这两个文件会在GoSublime 加载时自动启动。 3. 安装完之后就可以安装Sublime的插件了。需安装GoSublime、SidebarEnhancements和Go Build,安装插件之 后记得重启Sublime生效,Ctrl+Shift+p打开Package "" links links 目录 上一章: 你好,Go 下一节: 流程和函数 52 2.3 流程和函数 2.3 流程和函数 这小节我们要介绍Go里面的流程控制以及函数操作 流程控制 流程控制 流程控制在编程语言中是最伟大的发明了,因为有了它,你可以通过很简单的流程描述来表达很复杂的逻辑。流程控 制包含分三大类:条件判断,循环控制和无条件跳转。 if if if0 码力 | 295 页 | 5.91 MB | 1 年前3
2.2.3 Go语言的抢占式调度Go 语⾔的抢占式调度 曹春晖 资深 Gopher ⽬ 录 Go 程序的启动 01 GMP 的本质 02 调度循环的实现 03 ⽼版本的抢占实现 04 新版本的抢占实现 05 当前的 Go 语⾔还有哪些问题 06 Go 程序的启动 第⼀部分 编译过程 Go 程序 hello.go 的编译过程: ⽂本 -> 编译 -> ⼆进制可执⾏⽂件 编译过程 编译:⽂本代码 -> 进程要从哪⾥启 动了 花式寻找 entry point GDB Cutter Hopper rizin 启动过程 通过 entry point 找到 Go 进程的执⾏⼊⼝ runtime.rt0_go argc argv 处 理 全 局 m0 g0 初 始 化 m0: Go 程序启动后创建的第⼀个线程; 获 取 CPU 核 ⼼ 数 初 始 化 内 置 数 据 结 构 开 始 执 preemptone ⽼版本的抢占实现 第四部分 preemptone 函数只做标记⼯作 preemptone 本质是将正在 P 上执⾏的 M 的 curg 的标志位置为 true 这之后的流程需要正在运⾏的 goroutine 来配合 协作式抢占的“协作”过程 检查当前栈空间是否⾜够,不够的话,需要申请新的栈空间 只要当 framesize > 0 时才会有栈空间检查 framesize0 码力 | 44 页 | 7.43 MB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a第7章:常量和变量 - 顺便介绍了类型不确定值和类型推断 第8章:运算操作符 - 顺便介绍了更多的类型推断规则 第9章:函数声明和调用 第10章:代码包和包引入 第11章:表达式、语句和简单语句 第12章:基本流程控制语法 第13章:协程、延迟函数调用、以及恐慌和恢复 Go类型系统 第14章:Go类型系统概述 - 精通Go编程必读 第15章:指针 第16章:结构体 第17章:值部 - 为了更容易和更深刻地理解Go中的各种值 一个持有积极的学习态度的Go新手程序员可以在一年内精通Go编程。 那你觉得Go的卖点是什么呢? 我个人的观点是,做为一门静态语言,Go却和很多动态脚本语言一样得灵活 是Go的主要卖点。 节省内存、程序启动快、代码执行速度快和编译速度快合在一块儿是Go的另 一个主要卖点。 虽然这三项是C家族语言的共同特征,但是在Web开发领域, 很少有语言同时拥有这四个特征。 事实上,这就是我当初从Java转到Go进行 使用Go编写的程序常常编译得非常快。 编译时间的长短是开发愉悦度的一个 重要因素。 编译时间短是很多程序员喜欢Go的一个原因。 Go程序生成的二进制可执行文件常常拥有以下优点: 内存消耗少 执行速度快 启动快 很多C家族语言,比如C/C++/Rust等,也拥有上述的优点。 但它们缺少Go语言 的几个重要优点: 程序编译时间短 像动态语言一样灵活 内置并发支持 上面所有提到的优点使得Go成为一个出众的编程语言。0 码力 | 821 页 | 956.82 KB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a第7章:常量和变量 - 顺便介绍了类型不确定值和类型推断 第8章:运算操作符 - 顺便介绍了更多的类型推断规则 第9章:函数声明和调用 第10章:代码包和包引入 第11章:表达式、语句和简单语句 第12章:基本流程控制语法 第13章:协程、延迟函数调用、以及恐慌和恢复 Go类型系统 第14章:Go类型系统概述 - 精通Go编程必读 第15章:指针 第16章:结构体 第17章:值部 - 为了更容易和更深刻地理解Go中的各种值 一个持有积极的学习态度的Go新手程序员可以在一年内精通Go编程。 那你觉得Go的卖点是什么呢? 我个人的观点是,做为一门静态语言,Go却和很多动态脚本语言一样得灵活是 Go的主要卖点。 节省内存、程序启动快、代码执行速度快和编译速度快合在一块儿是Go的另一 个主要卖点。 虽然这三项是C家族语言的共同特征,但是在Web开发领域,很 少有语言同时拥有这四个特征。 事实上,这就是我当初从Java转到Go进行Web 使用Go编写的程序常常编译得非常快。 编译时间的长短是开发愉悦度的一个重 要因素。 编译时间短是很多程序员喜欢Go的一个原因。 Go程序生成的二进制可执行文件常常拥有以下优点: 内存消耗少 执行速度快 启动快 很多C家族语言,比如C/C++/Rust等,也拥有上述的优点。 但它们缺少Go语言 的几个重要优点: 程序编译时间短 像动态语言一样灵活 内置并发支持 上面所有提到的优点使得Go成为一个出众的编程语言。0 码力 | 608 页 | 1.08 MB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a第7章:常量和变量 - 顺便介绍了类型不确定值和类型推断 第8章:运算操作符 - 顺便介绍了更多的类型推断规则 第9章:函数声明和调用 第10章:代码包和包引入 第11章:表达式、语句和简单语句 第12章:基本流程控制语法 第13章:协程、延迟函数调用、以及恐慌和恢复 Go类型系统 第14章:Go类型系统概述 - 精通Go编程必读 第15章:指针 第16章:结构体 第17章:值部 - 为了更容易和更深刻地理解Go中的各种值 极的学习态度的Go新手程序员可以在一年内精通Go编程。 那你觉得Go的卖点是什么呢? 我个人的观点是,做为一门静态语言,Go却和很多动态脚本语言一样得灵活是Go的 主要卖点。 节省内存、程序启动快、代码执行速度快和编译速度快合在一块儿是Go的另一个主 要卖点。 虽然这三项是C家族语言的共同特征,但是在Web开发领域,很少有语言同 时拥有这四个特征。 事实上,这就是我当初从Java转到Go进行Web开发的原因。 使用Go编写的程序常常编译得非常快。 编译时间的长短是开发愉悦度的一个重要因 素。 编译时间短是很多程序员喜欢Go的一个原因。 Go程序生成的二进制可执行文件常常拥有以下优点: 内存消耗少 执行速度快 启动快 很多C家族语言,比如C/C++/Rust等,也拥有上述的优点。 但它们缺少Go语言的几 个重要优点: 程序编译时间短 像动态语言一样灵活 内置并发支持 上面所有提到的优点使得Go成为一个出众的编程语言。0 码力 | 591 页 | 21.40 MB | 1 年前3
1.2 基于 Golang 构建高可扩展的云原生 PaaS 平台边缘⽇志 边缘计算平台 边缘数据收集 边缘算⼒调度 ⽹络⾃动容错 平台产品 核⼼引擎 容器服务 基础设施 数仓设计 数据智能平台 智能预测 智能客服 智能仓储 智能推荐 流程⾃动化 智能营销 快数据平台 Linux OS, Kernel >= 3.10 ⼀站式 PaaS 平台 Erda Build any application, Deploy anywhere 微服务框架,包含⼤量现成的模块和⼯具,能够快速构 建起以模块化驱动的应⽤程序。 • 以模块化设计⽅式来驱动应⽤系统实现,⽀持模块可插拔 • 统⼀配置读取,⽀持默认值、⽀持从⽂件、环境变量、命令⾏参数读取 • 统⼀模块的初始化、启动、关闭 • 统⼀管理模块间的依赖关系 • ⽀持模块间的依赖注⼊ • 包含⼤量现成的微模块 • ⽀持统⼀ gRPC 和 HTTP 接⼝设计、以及拦截器 • 提供快速构建模块的代码⽣成⼯具 Erda ⽀持UI的运⾏时扩展 开源新时代的挑战 第五部分 打造围绕开源的开发流程 - GitFlow or Github Flow - 基于 pr 的持续集成 - 打破需求、开发和测试的边界 简化平台的上⼿难度 - 解耦对中间件的强依赖 - 平台应⽤可独⽴安装和部署 - 像搭积⽊⼀样拼装系统 云端和本地⼀致的开发体验 - 本地⽆需启动完整的环境 - 借助IDE插件实现云端服务连接 - 本地和云端服务可交互0 码力 | 40 页 | 8.60 MB | 1 年前3
3.云原生边云协同AI框架实践统一边云协同AI任务管理 ⚫ 跨边云协同管理与协同 ⚫ 中心配置管理 2. LocalController ⚫ 特性本地流程控制 ⚫ 本地通用管理: 模型, 数据集等 3. Worker ⚫ 执行训练或推理任务, 训练/推理程序, 基于现有AI框 架开 ⚫ 按需启动, docker容器或function ⚫ 不同特性对应不同的worker组, 可部署在边上或云 上, 进行协同 4 业务APP开发者:开发时使用边云AI Lib库, 集成边云协同增量学习功能 ② 部署业务APP,启动增量学习 ④ 人工定期介入,对样本进行标注。 ⑤ 系统基于任务知识库,自动增量训练产生新模型 ⑥ 更新边缘模型 边云协同增量学习: 小样本和非同分布下,模型越用越聪明 ① 开发者:导入边缘AI Lib库, 开发边云协同联邦学习程序。 ② 启动联邦学习任务,部署训练 程序到边缘 ③ 多任务检测,划分Non-IID样本集,与云端配合识别相似任务 go/Start() 【3】启动GM进程。 - clientset.NewForConfig():【4】调用client-go生成了Sedna CRD client。 - NewUpstreamController():【5】创建UpstreamController,每个GM进程有 一个UpstreamController - uc.Run(stopCh):启动一个for循环协程,来处理 -0 码力 | 37 页 | 2.36 MB | 1 年前3
基于 mesos 的容器调度框架的容器调度框架 http://go-talks.appspot.com/github.com/huangnauh/slides/upone.slide#3 4/36 Mesos 调度 各个 Agent 启动后, 向 Master 注册,携带统计资源, 由 Master 决定给每个框架多少资源, 默认 采用分级主导资源公平算法 每个框架收到资源后, 根据自身任务需求, 调度任务的资源分配 2017/8/3 2017/8/3 基于 mesos 的容器调度框架 http://go-talks.appspot.com/github.com/huangnauh/slides/upone.slide#3 6/36 处理流程 Image credit: dcos architecture (https://dcos.io/docs/1.7/overview/architecture/) 2017/8/3 基于 mesos http://go-talks.appspot.com/github.com/huangnauh/slides/upone.slide#3 9/36 OFFERS 事件处理 ACCEPT 消息: 接受此 o�er, 包括启动任务,预留资源等调度操作 DECLINE 消息: 明确拒绝此 o�er Filter : 可以设定资源的拒绝时间, 默认是 5s REVIVE 消息 : 取消之前设定 �lter 2017/8/30 码力 | 36 页 | 2.49 MB | 1 年前3
1.5 Go 语言构建高并发分布式系统实践开协程模拟测试终端+协程协作模拟业务 go语⾔言运维管理⽅方⾯面的独特魅⼒力…… 具有go语⾔言特⾊色的运维 Æ 可视化平台 Profiling可视化 将常规排查问题从⼿手⼯工经验化,变成流程化的过程 ⽐比较不同时间维度,两次上线后,进程的各种状态 对于优化上线的效果,可评估(上线新功能发现问题与后续确定KPI神器) 性能可视化 具有go语⾔言特⾊色的运维 Æ 可视化平台 Profiling可视化 将常规排查问题从⼿手⼯工经验化,变成流程化的过程 ⽐比较不同时间维度,两次上线后,进程的各种状态 对于优化上线的效果,可评估(上线新功能发现问题与后续确定KPI神器) 通信库状态可视化 Æ 最接近业务场景的百万级别压测后台 客户端sdk-> ⾃自定义信息(通信库信息) -> keeper调⽤用并存储 Æ keeper本地保持所有客户端状态信息,按时间和需求获取其他富信息, 提供接⼝口给后台 Æ 所有组件都必须通过⺴⽹网络启动,通过agent调⽤用命令⾏行 架构迭代 总结回顾 go语⾔言在基于并发协作的,重业务逻辑的基础服务⽅方向⾮非常适⽤用0 码力 | 39 页 | 5.23 MB | 1 年前3
Go基础语法宝典Go程序设计的一些规则 array 、 slice 、 map array slice slice 有一些简便的操作 slice 有几个有用的内置函数 map make 、 new 操作 零值 流程控制 if goto for switch 函数 函数的定义 多个返回值 变参 传值与传指针 defer 函数作为值、类型 Panic和Recover main 函数和 init 用于定义抽象数据类型 break 、 case 、 continue 、 for 、 fallthrough 、 else 、 if 、 switch 、 goto 、 default 用于流程控制 chan 用于channel通讯 type 用于声明自定义类型 map 用于声明map类型数据 range 用于读取slice、map、channel数据 break default // 现在m["hello"]的值已经是Salut了 更多Golang资源包:https://github.com/0voice/Introduction-to-Golang 流程控制 Go中流程控制分三大类:条件判断,循环控制和无条件跳转。 if if 也许是各种编程语言中最常见的了,它的语法概括起来就是:如果满足条件就做某事,否则做另一件 事。 Go里面 if 条件判断语句中不需要括号,如下代码所示0 码力 | 47 页 | 1020.34 KB | 1 年前3
共 56 条
- 1
- 2
- 3
- 4
- 5
- 6













