今天参加《Go 同步和并发设计模式》主题培训,虽然早上下雨,但是大家一般还是都在9点左右赶到现场。本次分享时间很充沛,晁老师讲的也很细致,4点就结束了高于预期啊呵呵,全程听下讲座来收获还是很多的,下面整理一下今天感觉重点的内容。

  • golang中使用channel的使用率占30%,但错误率缺高于50%
    错误原因大多是使用channel不适当造成的。

  • 读写锁RWMutex、Mutex不支持方法重入,想要实现重入可以使用黑科技gogid 或者用 token

  • 使用Cond方法进行同步操作容易出错,推荐使用简单易用的sync.WaitGroup

  • 推荐使用go build race 进行锁竞争性检测,go vet 静态代码检测是否存锁值拷贝(因为拷贝锁值也会拷贝锁的状态信息,所以锁尽量使用指针来创建)。

  • sync.Pool 单个回收的 bytes.Buffer 对象不应该超过64k,因为bytes.Buffer可能会增长,如果放的比较多的话,可能会导致内存占用比较多,内存不容易被释放。许多官方类库都加上了此判断。

fmt包json包

  • sync.Pool 不适合构建链接池,因为他会被系统回收掉。推荐一个构建 Socket 链接池的类库:github.com/fatih/pool

  • 写少读多的场景下推荐使用 sync.Map,读的时候会优先读取 readOnly.m 有脏数据时才会读取 Map.dirty 数据。提高查询效率

  • 拓展同步原语
    Semaphore 使用信号量方式实现锁
    SingleFlight 同时一堆协程请求一个资源时只允许一个协程操作,防止雪崩。
    ErrGroup Wait会等待所有协程执行完后才释放
    SpinLock 自旋锁,有些场景效率高,但是非公平
    FileLock 跨进程的Mutex
    concurrent-map 按照槽的方式存放Map数据,减少锁的竞争

  • etcd 跟 zookeeper/consul/redis相比一个优点在于,它支持同步原语,如:Mutex、RWMutex


    而且还有最重要的选主算法

  • 大赞 ,Channe各种场景下执行 receive/send/closed 的状态整理。

  • Channel的高阶玩法
    Fan In 所有子Channel汇入到一个Channel中
    Fan Out 一个Channel分散成多个子Channel
    Pipeline 比如:消费者与生产者场景
    Stream Skip、Take 通过函数来控制某个数据是否写入下游Stream。

《Go 同步和并发设计模式》培训会后整理相关推荐

  1. 《Go 同步和并发设计模式》培训结束,get满满干货!

    5月26日,在北京举办了GoCN和滴滴再次携手邀请了来自微博研发平台架构中心资深架构师-晁岳攀老师在北京举办的<深入Go 并发编程>培训专场,本次参加培训报名人数达到170余人,远超我们一 ...

  2. [深度]Go同步和并发设计模式

    在 2019年第五届 Gopher China 大会上,新浪微博平台研发中心架构组的工程师晁岳攀进行了主题为<Go同步和并发设计模式>的演讲,内容分为5个主题: 基本的同步原语 拓展同步原 ...

  3. java设计模式并发_[高并发Java 七] 并发设计模式

    [高并发Java 七] 并发设计模式 [高并发Java 七] 并发设计模式 为什么80%的码农都做不了架构师?>>> 在软件工程中,设计模式(design pattern)是对软件设 ...

  4. 《Java高并发核心编程.卷2,多线程、锁、JMM、JUC、高并发设计模式》

    <Java高并发核心编程.卷2,多线程.锁.JMM.JUC.高并发设计模式> 目录 第1章 多线程原理与实战 1.2 无处不在的进程和线程 1.2.1 进程的基本原理 1.2.2 线程的基 ...

  5. 解秘 Node.js 单线程实现高并发请求原理,以及串联同步执行并发请求的方案

    最近在做一个支持多进程请求的 Node 服务,要支持多并发请求,而且请求要按先后顺序串联同步执行返回结果. 对,这需求就是这么奇琶,业务场景也是那么奇琶. 需求是完成了,为了对 Node.js 高并发 ...

  6. 并发设计模式之Guarded Suspension模式

    - 原文链接: http://www.joyhwong.com/2016/11/19/并发设计模式之guarded-suspension模式/ Guarded Suspension意为保护暂停,其核心 ...

  7. 并发设计模式之生产者-消费者模式

    点击查看原文: http://www.joyhwong.com/2016/11/19/并发设计模式之生产者-消费者模式/ 生产者-消费者模式是一个经典的多线程设计模式,它为多线程间的协作提供了良好的解 ...

  8. Java 高并发第二阶段实战---高并发设计模式,内存模型,CPU一致性协议,volatile关键字剖析

    第二阶段的课程主要围绕着Volatile关键字,内存重排序,Happen-Before,Cpu一致性协议,高并发下的设计模式以及类加载器几个大的方面展开,下面是内容详细信息,本教程是本人录制,下载地址 ...

  9. 多线程同步与并发访问共享资源工具—Lock、Monitor、Mutex、Semaphore

    "线程同步"的含义 当一个进程启动了多个线程时,如果需要控制这些线程的推进顺序(比如A线程必须等待B和C线程执行完毕之后才能继续执行),则称这些线程需要进行"线程同步(t ...

最新文章

  1. 还只看花书,西瓜书?一文告诉你如何正确学习深度学习,从理论到实战。
  2. Hibernate总结
  3. 云原生时代下,容器安全的“四个挑战”和“两个关键”
  4. jetbrains是最好的编译器系列
  5. 把运行在 Docker 容器内的 Microsoft SQL 服务器部署到 SAP Kyma 中
  6. hystrix 源码 线程池隔离_Hystrix源码学习--线程池隔离
  7. javascript 西瓜一期 13 十六进制的数数方式与进位
  8. 蓝桥杯 ALGO-22算法训练 数的划分
  9. 数据科学导论学习小结——其二
  10. python用turtle画一个苹果
  11. 利用scrapy工具,实现一键获取多个项目数据的功能
  12. C# 将word/ppt文档转换为Pdf的三种方法
  13. Python学习之路-爬虫(四大名著)
  14. 怎样给手机发送短信验证码
  15. 数据结构与算法—二叉排序(查找)树
  16. 瞬时测频接收机matlab_瞬时测频接收机
  17. 程序员必备的几个图标网站
  18. 在暑期实习时需要注意些什么
  19. mysql5.7应该导什么包_微信表情包制作amp;上线全过程(详细血泪史)
  20. MFC Ribbon界面开发

热门文章

  1. url scheme
  2. npoi ppt html,NPOI(示例代码)
  3. 台式计算机idc数据排名,IDC:2018年全球个人计算设备出货量约为4.07亿台 下滑大约3.9%...
  4. 手机寿命不到三年,为什么现在的手机越来越短命?
  5. 解决三星note5无线充电偶尔充不进去的问题
  6. linux系统把驱动编译成.ko模块 insmod动态加载
  7. 三星手机语音测试软件,三星 Galaxy Buds Pro获软件更新 提升语音检测功能的切换速度...
  8. leetcode 题解 54.螺旋矩阵(Typescript)
  9. 小程序多行文本折叠展开
  10. cool-admin框架后端使用-node版本,使用事务装饰器来创建和事务回滚