可视化学习 Go 并发编程Go 并发编程 2017.8.5 黄庆兵 - 网易 bingohuang.com 并发 简单来说,并发是一种构造程序的方式 Concurrency is not Parallelism Slide (http://talks.golang.org/2012/waza.slide) 1. 并发很强大 2. 并发帮助实现并行,使并行(扩展等)变得容易 3. 并发不是并行,并发重点是 ,两者不同,但相关。 04:22 / 31:21 可视化 并发(Concurrency) & 并行(Parallelism) 一图胜千言! 并行(PARALLELISM) 这是并行 (/2017/go-concurrency-visualize/parallelism.html) 并发(CONCURRENCY) 这是并发 (/2017/go-concurrency-visualize/pingpong36 /pingpong36.html) 为什么要关注并发?当今是多核的时代,并发的世界 多核的时代 并发编程并不容易,但 Go 对并发有很好的支持 Go 语言中的并发 goroutine - 并发执行 channel - 同步和消息传输 select - 多路并发控制 Goroutine 类似于 UNIX 中的 & 很像线程,但更轻量 一个 goroutine 就是一个独立运行的函数0 码力 | 29 页 | 1.48 MB | 1 年前3
从高并发到极端并发:百度 Feed 与春晚红包的高可用实践-吴永巍从高并发到极端并发:百度 Feed 与春晚红包的高可用实践-吴永巍0 码力 | 28 页 | 58.98 MB | 1 年前3
通过SSA的解释执行窥探Golang编译之一角通过SSA的解释执行窥探Golang编译之一角 丁尔男 武汉航天远景 产品总监 凹语言 联合发起人 PLOC 联合发起人 目 录 Golang 编译流程简介 01 SSA 解释执行 02 基于 SSA 的应用 03 Golang 编译流程简介 源代码 抽象语法树 抽象语法树 (带语义信息) 静态单赋值 目标代码 Golang 编译流程简介 源代码 抽象语法树 抽象语法树 Rosen、Mark N. Wegman、F. Kenneth Zadeck 提出的一种中间代码(IR) 表示形式,典型特征是所有变量被且仅被赋值一次。 2016年,Go 1.7 加入 SSA 支持。 SSA 解释执行 02-HelloSSA const src = ` package main func main() { println("Hello, GoCN!") println("The answer *ssa.Call - Call = *ssa.Builtin, println - Args = [“The answer is”, 42] Instrs[2] *ssa.Return SSA 解释执行 02-HelloSSA *ssa.Package main *ssa.Function Blocks[0] *ssa.BasicBlock Instrs[0] *ssa.Call - Call0 码力 | 30 页 | 1.50 MB | 1 年前3
1.5 Go 语言构建高并发分布式系统实践Weibo: @johntech-o Date: 2015.04.25 go语⾔言并发编程实践 以360消息推送系统为例 如何应对的? go语⾔言在基础服务开发领域的优势? 我遭遇了哪些挑战? ⺫⽬目录 具有go特⾊色的运维 在⾼高并发,通信交互复杂,重业务逻辑的分布式系统中, Go语⾔言优势体现在:开发体验好 、⼀一定量级下服务稳定 测试环境,可以通过300w⻓长连接压测(⺴⽹网络,连接稳定,⽆无带宽限制,实际可以更⾼高 ,决定于⼲⼴广播时候业务内存开销的cpu消耗带来的⼼心跳或者业务延时能否接受) 以360消息推送系统为例 ⾼高并发、通信交互复杂 Dispatcher Service Room Service Proxy Service Register Service Saver Service � �/ ����/ ���� Admin���� ���������� �������� ������� ���push������ ������ 消息系统规模架构:重业务逻辑 ⾼高并发、通信交互复杂 Dispatcher Service Room Service Proxy Service Register Service Saver Service0 码力 | 39 页 | 5.23 MB | 1 年前3
Rust 异步并发框架在移动端的应用 - 陈明煜第三届中国 Rust 开发者大会 Rust 异步并发框架在移动端的应用 陈明煜 chenmingyu4@huawei.com 华为 公共开发部 嵌入式软件能力中心 本科就读加州大学圣地亚哥分校,毕业时长两年半, Rustacean 在 华为 目前正在使用 Rust 开发并行调度框架等模块。 Rust 异步并发框架在移动端的应用 陈明煜 chenmingyu4@huawei.com Ylong Runtime 并发框架 目录 Table of Contents #2 社区并发框架介绍以及与移动端的不适配性 Introduction to third party Runtime crates and their incompatibility with mobile environment Rust 异步机制 Asynchronous Rust 异步并发框架是许多大型应用、系统具备的底层能力。 任务调度颗粒度更小,充分利用线程资源 更可控的线程数 单个任务资源占用:几十 KB -> 几百 Byte 任务切换时间 : 10 微秒 -> 100 纳秒 Rust 语言并没有提供异步并发框架, 只提供异步所需的基本特性: Future async / await Waker asyn c Future Waker poll Syntax sugar wake0 码力 | 25 页 | 1.64 MB | 1 年前3
新语⾔,新思维 解读⼀个并发问题的多种实现 - 陶召胜新语⾔言,新思维 解读⼀一个并发问题的多种实现 陶召胜 next: 异步编程的问题 变量量读写冲突 异步任务1 异步任务2 共享变量量 读、写 读、写 IO阻塞 回调地狱 Future也有不不⾜足 • get 很容易易导致另⼀一个对象阻塞 • 不不⽀支持多值、⾼高级错误处理理 next: 多任务求解1-10,000,000的和 序号 语⾔言 关键点 1 JavaScript JavaScript 不不再有回调地狱,变异步为顺序化思维,程序更更加可读 2 Go ⾼高并发调度,通道让异步编程更更简单 3 Scala (1)简洁的异步编程 (2)AKKA:分布式计算框架 4 Java (1)fork/join (2)CompletableFuture (3)反应式编程(Reactive Programming ) next: JavaScript 关键点:不 e) 例例⼦子JavaScript实现(Generator) 例例⼦子JavaScript实现(async/await) 多进程,利利⽤用多核 输出: next: Go 关键点:⾼高并发调度,通道让异步编程更更简单 2015年年 Go 1.5 2016年年 Go1.6、1.7 2017年年 Go1.8、 1.9 goroutine gorutine在逻辑处理理器器上执⾏行行0 码力 | 42 页 | 9.85 MB | 1 年前3
Greenplum Database 管理员指南 6.2.1GP 的计算实例,很多时候也叫 Segment Primary : GP 的主计算实例 Mirror : GP 的镜像计算实例 MPP : 大规模并行处理 算子 : 执行计划中的运算操作 背景简介 多年前,编者翻译了 GP4.2.2 的 AdminGuide,如今,GP 已经历经了无数个版 本更新和迭代,编者也有了更多的感悟,放眼 GP 的中文资料,为之动容,就想着再为 文件 ....................................................................................... - 35 - 限制并发连接数量 .............................................................................................. .................................................................................. - 168 - 关于 GP 的并发控制 ................................................................................................0 码力 | 416 页 | 6.08 MB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a为了更容易和更深刻地理解Go中的各种值 第18章:数组、切片和映射 - Go中的首要容器类型 第19章:字符串 第20章:函数 - 函数类型和函数值,以及变长参数个数函数 第21章:通道 - Go特色的并发同步方式 第22章:方法 第23章:接口 - 通过包裹不同具体类型的非接口值来实现反射和多态 第24章:类型内嵌 - 不同于继承的类型扩展方式 第25章:非类型安全指针 第26章:泛型 - 如何使用和解读组合类型 第33章:表达式估值顺序规则 第34章:值复制成本 第35章:边界检查消除 并发编程 第36章:并发同步概述 第37章:通道用例大全 第38章:如何优雅地关闭通道 第39章:其它并发同步技术 - 如何使用sync标准库包 第40章:原子操作 - 如何使用sync/atomic标准库包 第41章:Go中的内存顺序保证 第42章:一些常见并发编程错误 内存相关 第43章:内存块 第44章:关于Go值的内存布局 我个人的观点是,做为一门静态语言,Go却和很多动态脚本语言一样得灵活是Go的 主要卖点。 节省内存、程序启动快、代码执行速度快和编译速度快合在一块儿是Go的另一个主 要卖点。 虽然这三项是C家族语言的共同特征,但是在Web开发领域,很少有语言同 时拥有这四个特征。 事实上,这就是我当初从Java转到Go进行Web开发的原因。 内置并发编程支持也算是Go的卖点,虽然我个人认为它不是Go的主要卖点。 良好的代码可读性是Go的另一个重要卖点。0 码力 | 591 页 | 21.40 MB | 1 年前3
TiDB v8.5 中文手册· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 591 5.4.4 第 4 步:执行部署命令 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · Grafana 检查集群状态 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 602 5.6.3 登录数据库执行简单 DML/DDL 操作和查询 SQL 语句· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 603 6 5.7 测试集群性能· 时间戳与当前时间差距较大,任务执行过程中同步中断,出现错误 [CDC:ErrBufferReachLimit],怎么办? · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 945 7.7.5 当 changefeed 的下游为类 MySQL 数据库时,TiCDC 执行了一个耗时较长的 DDL 语句,阻塞了0 码力 | 5095 页 | 104.54 MB | 10 月前3
TiDB v8.0 中文手册Grafana 检查集群状态 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 549 5.5.3 登录数据库执行简单 DML/DDL 操作和查询 SQL 语句· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 550 5.6 测试集群性能· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 1132 11.3.2 理解 TiDB 执行计划 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 1208 11.3.4 控制执行计划· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·0 码力 | 4805 页 | 101.28 MB | 1 年前3
共 1000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 100













