新语⾔,新思维 解读⼀个并发问题的多种实现 - 陶召胜## 新语言,新思维 ## 解读一个并发问题的多种实现 陶召胜 ## next: 异步编程的问题 ## 变量读写冲突 异步任务1 读、写 共享变量 读、写 异步任务2 ## I O阻塞 object ExampleBlockingScala extends App { //所有并发任务在这个拥有10个线程的线程池中执行 implicit val ec = ExecutionContext ExecutionContext.fromExecutorService(Executors.newFixedThreadPool(10)) //创建100个并发任务,每个任务都会阻塞5秒 (1 to 100).map(i => { println(s"Calling blocking Future: ${i}") Future { //阻塞5秒,模拟I/O阻塞 println(s"Blocking future finished ${i}") } }) //这是另一个并发任务,因为线程被大量I/O阻塞导致这个任务很少有机会得到执行 Future { (1 to 100).map(i => println(s"another a future0 码力 | 42 页 | 9.85 MB | 2 年前3
可视化学习 Go 并发编程## 可视化学习 Go 并发编程 2017.8.5 黄庆兵 - 网易 bingohuang.com ## 并发 简单来说,并发是一种构造程序的方式  ## Concurrency is not Parallelism Slide (http://talks ents/9/d/7/e/9d7ec6880e87f715ac8d1b4b792dd0b8/p3_1.jpg) 1. 并发很强大 2.并发帮助实现并行,使并行(扩展等)变得容易 3. 并发不是并行,并发重点是架构,并行重点是执行,两者不同,但相关。 ## 可视化 并发(Concurrency) & 并行(Parallelism) 一图胜千言! • 并行(PARALLELISM) html) • 并发(CONCURRENCY) 这是并发 (/2017/go-concurrency-visualize/pingpong36.html) 为什么要关注并发?当今是多核的时代,并发的世界 ## 多核的时代  并发编程并不容易,但0 码力 | 29 页 | 1.48 MB | 2 年前3
1.6 Go并发编程实践 - 晁岳攀Go并发编程实践 晁岳攀 @colobu 微博 http://colobu.com 探探 Gopher China 2019 Agenda 基本同步原语 扩展同步原语 原子操作 Channel 内存模型 ’ alt=‘OCR图片’/> 基本同步原语 ’ alt=‘OCR图片’/> 基本同步原语 Mutex 互斥锁 Mutual exclusion, 任何 2012年,commit dd2074c8做了一次大的改动,它将waiter count(等待者的数量)和锁标识分开来(内部实现还是合用使用state字段)。新来的goroutine占优势,会有更大的机会获取锁。 2015年,commit edcad863,Go1.5中mutex实现为全协作式的,增加了spin机制,一旦有竞争,当前goroutine就会进入调度器。在临界区执行很短的情况下可能不是最好的解决方案。 2019年commit 41cb0ae inline优化,将slow path抽取出来,保留 fast path以便内联 ’ alt=‘OCR图片’/> 基本同步原语 Mutex - 当前实现 type Mutex struct { state int32 sema uint32 } const ( mutexLocked = 1 <<0 码力 | 82 页 | 16.62 MB | 1 月前3
从高并发到极端并发:百度 Feed 与春晚红包的高可用实践-吴永巍## 从高并发到极端并发: 百度Feed与春晚红包的高可用实践 吴永巍 百度 主任架构师 # TGO鲲鹏会 # 汇聚全球科技领导者的高端社群 全球12大城市 850+高端科技领导者 使命 Mission 为社会输送更多优秀的 科技领导者 ## 愿景 Vision 构建全球领先的有技术背景 优秀人才的学习成长平台  ## 目录 • 春晚项目,技术挑战 - 整体拆解,架构设计 - 各子系统高可用设计 • Feed信息流:常规到极端 全方位工程实践 ## 春晚,极端并发,技术实力最高级别的检验 • 春晚的力量 • 业界技术难题 现场直播,没有重来的机会 - 不仅仅是摇一摇红包 ✓信息流 + 视频 ✓语音 + 搜索 ## 摇一摇红包 ![Image] jpg) ## 春晚项目的技术挑战 • 从 “高并发” 到 “极端并发” • 万一出问题,负面影响不可挽回,需要“万无一失” • 只有短短一个月的准备时间 • 结合AI、推荐、搜索、视频等多项技术,复杂度高 每秒千万级并发 数亿用户参与 208亿次互动 ## 极端并发下的架构设计理念 • 从数万QPS的“高并发”到数千万QPS的“极端并发” √大量的技术沉淀和积累 √针对性的专项设计0 码力 | 28 页 | 58.98 MB | 2 年前3
1.5 Go 语言构建高并发分布式系统实践## go语言并发编程实践 以360消息推送系统为例 周洋 部门:360手机助手 Weibo: @johntech-o Date: 2015.04.25 ## 目录 go语言在基础服务开发领域的优势? 我遭遇了哪些挑战? 如何应对的? 具有go特色的运维 在高并发,通信交互复杂,重业务逻辑的分布式系统中,Go语言优势体现在:开发体验好、一定量级下服务稳定、性能满足需要 ## 以360消息推送系统为例 |08|单播-指定用户在线-发送在线消息\_0|单播 1.用户建立长连接检查状态为在线 2.用单播接口发送在线消息 4.用3.检查用户是否收到消息(预期能收到)|PASS|log||53| ## 总结回顾 go语言在基于并发协作的,重业务逻辑的基础服务方向非常适用 适用 = 开发体验好 + 服务稳定 + 性能满足需要 go语言程序开发需要找到一种平衡,既利用协程带来的便利性又做适当集中化处理 套路 = 按请求和业务逻辑并行0 码力 | 39 页 | 5.23 MB | 2 年前3
Rust 异步并发框架在移动端的应用 - 陈明煜CHINA CONF 2023 第三届中国 Rust 开发者大会 6.17-6.18 @Shanghai # Rust 异步并发框架在移动端的应用 陈明煜 chenmingyu4@huawei.com 华为 公共开发部 嵌入式软件能力中心 ## 😍 ## Rust 异步并发框架在移动端的应用 Applications of Rust Runtime in Mobile 数据科技有限公司 ## 简介 PG WAL Other DB 逻辑复制的功能是从PG的WAL日志中,读取数据库更新信息,然后“翻译”(Decode)成逻辑的形式,可发送到远程从库做数据同步。 ## 为什么要选择逻辑复制?  背景 • 方案调研 • Chubaofs • Juicefs • 方案实现 • 方案一:chubaofs • 方案二:事务方案 • 方案三:利用 KV 自带的分布式事务 • Q&A • 1. 是否需要实现跨文件系统的 rename 操作? • 2. 在多客户端情况下,是否需要加锁来保证其原子性? • 3. rename A→C(A 存在,而 C 存在) • 4. 当 2 个操作的 dentry 属于同一个 copyset 有什么不一样? ## 背景 当前 curvefs 并没有实现 rename 接口,本文档是对 rename 接口实现的调研及方案设计。 rename 操作,主要操作的是 dentry,如 rename /dir1/file1 /dir2/file2,主要有 2 个步骤:(1)删除 file1 等同 file1 的 inode id)。关于 rename 接口的实现,主要调研了 chubaofs 和 juicefs,而 rename 的实现难点主要在于其原子性的保证。 ## 方案调研 ## Chubaofs chubaofs 中的 rename 实现不是原子性的,它是通用创建源文件的硬连接,然后删除源文件的方式来实现的,主要有以下 4 步: 1. 将源文件的 nlink 加一 20 码力 | 15 页 | 555.93 KB | 1 年前3
基于gRPC go实现消息发布订阅## 使用gRPC go实现 基于Topic的高效消息订阅发布模型  姓名:___ 张凯 中国电子云 实现后台执⾏⻓任务tags: electron, node ## description: 通过 Electron 托盘(tray)实现后台执行长任务。 Electron 应用在执行一些长时间任务(比如上传、下载),我们想关闭界面后任务依旧执行。再次打开界面,依旧可以看到正在执行的任务以及任务进度。托盘可以帮我们实现这个功能。 ## 创建托盘和菜单示例 • 实例化 Tray 并传入图标路径; • 创建菜单并配置到托盘中。 label: 'Item4', type: 'radio' } ]) tray.setContextMenu(contextMenu)) ## 基于托盘功能实现后台运行应用 ## 关闭应用前唤醒对话框二次确认 关闭应用时,触发对话框,可支持 3 种场景: 点击「取消」取消关闭操作; 点击「退出」,「后台运行」选中时,界面关闭,托盘不关闭,任务继续执行; setImage(getTrayIcon()); ## 托盘其他场景 显示未读消息数 tray.setTitle('6'); - 有未读消息时图标闪动:通过 setImage 定时轮询切换图标实现 ## 注意事项 MacOS 全屏退出界面是会出现黑屏问题,解决方案 判断如果全屏,在关闭全屏时,先退出全屏再隐藏界面 // 修复全屏 hide 黑屏问题 // https://github0 码力 | 6 页 | 1.19 MB | 2 年前3
共 1000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 100













