- 1、本文档共29页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Summery 系统级开发现状 新需求需要新模型 Go对并发的支持 Go的语法特点 系统测开发现状 要求高并发 要求开发速度 要求性能好 要求可分布 系统测开发现状 C/C++ 写的好的话 速度快,内存利用率高 写不好的话 内存泄露 Core dump 语言层面完全没有对并发有支持 裸用os的并发机制:线程/进程 系统测开发现状 Java 速度快,语言不灵活 语言层面有一定的并发支持,基于os并发机制 PHP/Python/Ruby 开发速度快,灵活 速度慢 语言层面依旧裸用os的并发机制,甚至不提供或者有限制(GIL) Twisted/asyncore/Multiprocess 能否开发快,性能高? 新模型 新的编程模型(CSP) 在语言层面加入对并发支持 而不是以库形式提供 更高层次的并发抽象 而不是直接暴露os的并发机制 应用 Erlang Ocaml GO并发模型 Goroutine Channel Rpc 内存模型 并发模型 - goroutine 轻量 Goroutine间是并行的 底层混合使用非阻塞IO和线程 关键字:go 并发模型 - channel 通过通信来共享 而不是通过共享来通信 对channel的读写是阻塞的 读阻塞到读出内容 写阻塞到内容写入buffer channel的两个功能 传值 同步 例子 - 筛法求素数 ?例子 ?例子 - 续 select 同时监听多个channel for { // loop forever select { case req := - service: … // process the request case - quit: return; // quit loop } } RPC 远程调用 使用golang库gob作序列化 目前只能用http做server http使用长链接 限制 gob不能序列化函数和channel 例子 内存模型 简化并发编程必须有GC参与 单件如何释放 初始化 Import package的init 包间顺序不定 包里goroutine在所有init之后才执行 Main package的main 内存模型 原子IO 对变量的读写都是原子的 c/c++的变量读写都不是原子的 乱序 仅保证在goroutine内,乱序后执行结果不变 once 安全的初始化手段 Lock 用channel更好 语法细节 - 原则 简化语法 混合了C和Python 便于解析 加快编译速度 语法细节 – 值 vs 引用 值类型创建 基本类型 字面量:0,1.1,c,”string”,[3]int{1,2,3}/[...] 构造 Point{1, 1} 具有引用语义的基本类型:maps,slice,channel maps,channel的值类型必须用make创建 指针 空指针:nil 没有指针运算 - 需要指针运算时应该用slice 创建 var pInt *int = someIntVar; var point *Point = Point{1, 1} 语法细节 - slice 定义方法 数组:var array [100]int slice:var slice []int slice可以对数组内任意一段做引用 slice = array[X:Y] len(slice) = Y – X cap(slice):slice实际占用的内存 取代指针,安全的数组引用 slice = array等同于slice = array[0:len(array)] 语法细节 – 类 定义方式类似C type SomeClass struct { … } func (self *SomeClass) method(...) { … } 调用方式类似C++ var class *SomeClass = SomeClass{ … } class.method( … ) 独特的继承 type Base struct { … } type Child struct { Base; … } func (p *Child) method() { p.BaseMethod( … ); } 语法细节 – 非继承 动态绑定interface type PrintInterface interface { print(); } type Printable struct { … } // no inherit here func (p *Printable) print() { … } var i PrintInterface = Printable{ … } i.print() Any 可以传入任意类型 type Any interface {} 调用方式
您可能关注的文档
- (课件2)24.8角平分的性质定理及其逆定理.ppt
- E安装师傅注册操作教程.ppt
- (课件PPT)调节心情的好图片.ppt
- FAB简易教材(中文版).ppt
- (鄂教版)三年级科学上册课件 食物的营养 1.ppt
- (长春版)三年级语文下册课件 惊弓之鸟 3(PC-201101311102被冲突后的备份 2011-03-24-18-32-54).ppt
- (长春版)三年级语文上册课件 喜爱音乐的白鲸 1.ppt
- (青岛版)三年级数学上册课件 走进新农村之认识东南西北.ppt
- Fortran程序设计(第2章-简单的程序设计).ppt
- Fortran程序设计(第五章-选择结构).ppt
- 场地脚手架工程施工方案(3篇).docx
- 2024年浙江省丽水市松阳县玉岩镇招聘社区工作者真题及参考答案详解一套.docx
- 2024年河南省郑州市惠济区古荥镇招聘社区工作者真题及答案详解一套.docx
- 2024年浙江省杭州市淳安县文昌镇招聘社区工作者真题及完整答案详解1套.docx
- 2024年浙江省台州市三门县小雄镇招聘社区工作者真题带答案详解.docx
- 2024年浙江省宁波市余姚市河姆渡镇招聘社区工作者真题及完整答案详解1套.docx
- 2024年浙江省丽水市景宁畲族自治县雁溪乡招聘社区工作者真题及答案详解一套.docx
- 2024年浙江省杭州市临安市板桥乡招聘社区工作者真题及答案详解一套.docx
- 2024年湖北省宜昌市点军区土城乡招聘社区工作者真题及答案详解一套.docx
- 2024年浙江省台州市路桥区桐屿街道招聘社区工作者真题附答案详解.docx
文档评论(0)