Go Context原理及其典型适用场景Context原理及其适用场景 随手记 李帅(飞雪无情) n 常见并发模式 n Context实现原理 n TLS VS Context n 典型适用场景 大纲 Channel Fan-in func fanIn(sum1, sum2 <-chan int) <-chan int { sum := make(chan int) go func() { for {sum <- <-sum1}0 码力 | 32 页 | 4.62 MB | 1 年前3
大规模高性能区块链架构设计模式与测试框架-李世敬哈希算法 数字签名 P2P⽹络 传播机制 验证机制 默克尔树 轮胎、悬架等 基础硬件配置 电路油路 等传导系统 引擎、动⼒系统 汽油等润滑系统 车载⾃动化功能 公路、越野等具体场景 公有链基础架构⾃下⽽上分为六层:数据层、⽹络层、共识层、激励层、合约层与应⽤层。如果将区块链⽐作⼀ 辆汽车,那么各层分别对应汽车的各个组成部分(下图所⽰),各层之间协同合作,形成多中⼼化可信系统 按需可扩展多层⼦链,基础⼦链为 扩展⼦链提供存证、互通等能⼒ 共识节点 ⾮共识节点 轻节点 轻客户端 共识节点 节点数量有限,参与交易的共识,存储全 量数据,节点间采⽤GRPC全连接⽅式互联 ⾮共识节点 节点数量较多,不参与共识,存储全量数 据,节点间使⽤gossip协议同步数据 轻节点 节点数量较多,存储部分数据, ⽤于交易的证明验证 轻客户端 节点数量较多,⼀般为物联⽹终端 设备,主要进⾏数据的可信采集 「多��异构并⾏区��架构模型」 17 趣链科技 版权所有 ©2016-2021 17 趣链科技 版权所有 ©2016-2021 17 趣链科技 版权所有 ©2016-2021 17 共识全节点层 Consensus Layer ⾮共识节点层 Provable Layer 轻客户端层 Edge Layer 轻节点层 Gateway Layer 核⼼技术 多类型节点分层部署模式 10 码力 | 39 页 | 56.58 MB | 1 年前3
Hello 算法 1.1.0 Go版作者:靳宇栋(@krahets) 代码审阅:刘代富(@Reanon) Release 1.1.0 2024‑04‑15 序 两年前,我在力扣上分享了“剑指 Offer”系列题解,受到了许多读者的鼓励和支持。在与读者交流期间,我 最常被问的一个问题是“如何入门算法”。逐渐地,我对这个问题产生了浓厚的兴趣。 两眼一抹黑地刷题似乎是最受欢迎的方法,简单、直接且有效。然而刷题就如同玩“扫雷”游戏,自学能力 13.1 回溯算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 13.2 全排列问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 13.3 子集和问题 . 1 关于本书 本项目旨在创建一本开源、免费、对新手友好的数据结构与算法入门教程。 ‧ 全书采用动画图解,结构化地讲解数据结构与算法知识,内容清晰易懂,学习曲线平滑。 ‧ 算法源代码皆可一键运行,支持 Python、C++、Java、C#、Go、Swift、JavaScript、TypeScript、Dart、 Rust、C 和 Zig 等语言。 ‧ 鼓励读者在线上章节评论区互帮互助、共同进步,提问与评论通常可在两日内得到回复。0 码力 | 383 页 | 18.48 MB | 1 年前3
Hello 算法 1.0.0 Golang版作者:靳宇栋(@krahets) 代码审阅:刘代富(@Reanon) Release 1.0.0 2024‑02‑09 序 两年前,我在力扣上分享了“剑指 Offer”系列题解,受到了许多读者的鼓励和支持。在与读者交流期间,我 最常被问的一个问题是“如何入门算法”。逐渐地,我对这个问题产生了浓厚的兴趣。 两眼一抹黑地刷题似乎是最受欢迎的方法,简单、直接且有效。然而刷题就如同玩“扫雷”游戏,自学能力 13.1 回溯算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 13.2 全排列问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 13.3 子集和问题 . 1 关于本书 本项目旨在创建一本开源、免费、对新手友好的数据结构与算法入门教程。 ‧ 全书采用动画图解,结构化地讲解数据结构与算法知识,内容清晰易懂,学习曲线平滑。 ‧ 算法源代码皆可一键运行,支持 Python、C++、Java、C#、Go、Swift、JavaScript、TypeScript、Dart、 Rust、C 和 Zig 等语言。 ‧ 鼓励读者在线上章节评论区互帮互助、共同进步,提问与评论通常可在两日内得到回复。0 码力 | 382 页 | 17.60 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Go 版作者:靳宇栋(@krahets) 代码审阅:刘代富(@Reanon) Release 1.2.0 2024‑12‑06 序 两年前,我在力扣上分享了“剑指 Offer”系列题解,受到了许多读者的鼓励和支持。在与读者交流期间,我 最常被问的一个问题是“如何入门算法”。逐渐地,我对这个问题产生了浓厚的兴趣。 两眼一抹黑地刷题似乎是最受欢迎的方法,简单、直接且有效。然而刷题就如同玩“扫雷”游戏,自学能力 13.1 回溯算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 13.2 全排列问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 13.3 子集和问题 . 。数组、链表、栈、队列、哈希表、树、堆、图等数据 结构的定义、优缺点、常用操作、常见类型、典型应用、实现方法等。 ‧ 算法:搜索、排序、分治、回溯、动态规划、贪心等算法的定义、优缺点、效率、应用场景、解题步骤 和示例问题等。 第 0 章 前言 www.hello‑algo.com 3 图 0‑1 本书主要内容 0.1.3 致谢 本书在开源社区众多贡献者的共同努力下不断完善。感谢每一位投入时间与精力的撰稿人,他们是(按照0 码力 | 384 页 | 18.49 MB | 10 月前3
Hello 算法 1.0.0b5 Golang版Hello 算法 Go 语言版 靳宇栋(Krahets) Release 1.0.0b5 2023‑09‑10 序 两年前,我在力扣上分享了《剑指 Offer》系列题解,受到了许多同学的喜爱和支持。在与读者的交流期间, 最常收到的一个问题是“如何入门学习算法”。我逐渐对这个问题产生了浓厚的兴趣。 两眼一抹黑地刷题似乎是最受欢迎的方法,简单直接且有效。刷题就如同玩“扫雷”游戏,自学能力强的同 13.1 回溯算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 13.2 全排列问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 13.3 子集和问题 . 0.1 关于本书 本项目旨在创建一本开源免费、新手友好的数据结构与算法入门教程。 ‧ 全书采用动画图解,结构化地讲解数据结构与算法知识,内容清晰易懂、学习曲线平滑。 ‧ 算法源代码皆可一键运行,支持 Java、C++、Python、Go、JS、TS、C#、Swift、Rust、Dart、Zig 等 语言。 ‧ 鼓励读者在章节讨论区互帮互助、共同进步,提问与评论通常可在两日内得到回复。 00 码力 | 379 页 | 30.70 MB | 1 年前3
Hello 算法 1.0.0b4 Golang版Hello 算法 Go 语言版 靳宇栋(Krahets) Release 1.0.0b4 2023‑07‑26 序 两年前,我在力扣上分享了《剑指 Offer》系列题解,受到了许多朋友的喜爱与支持。在此期间,我回答了众 多读者的评论问题,其中最常见的一个问题是“如何入门学习算法”。我逐渐也对这个问题产生了浓厚的兴 趣。 两眼一抹黑地刷题似乎是最受欢迎的方法,简单直接且有效。然而,刷题就如同玩“扫雷”游戏,自学能力 13.1. 回溯算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 13.2. 全排列问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 13.3. 子集和问题 . 1. 关于本书 本项目旨在创建一本开源免费、新手友好的数据结构与算法入门教程。 ‧ 全书采用动画图解,结构化地讲解数据结构与算法知识,内容清晰易懂、学习曲线平滑。 ‧ 算法源代码皆可一键运行,支持 Java, C++, Python, Go, JS, TS, C#, Swift, Zig 等语言。 ‧ 鼓励读者在章节讨论区互帮互助、共同进步,提问与评论通常可在两日内得到回复。 0.1.10 码力 | 347 页 | 27.40 MB | 1 年前3
1.5 Go 语言构建高并发分布式系统实践⽇日下发峰值百亿量级 400台物理机,9个独⽴立集群,国内外近10个IDC 运维管理的go语⾔言编写的常驻service服务实例接近3000个。 业务场景多样: ⽀支持聊天场景业务,稳定⽀支持多款聊天业务app 单通道多app复⽤用 上⾏行通道,回调⽀支持 对智能硬件产品,提供定制化消息推送与转发服务 性能满⾜足需要: 线上单机最⾼高160w⻓长连接 (24核 E5-2630 @ 2.30GHz 接入客户端 Android IOS Linux Web Windows Flash Iframe for ever 消息系统简要架构 单实例,单端⼝口,多协议复⽤用 全双⼯工,单客户端,多app复⽤用服务单通道 适⽤用于复杂环境下的⺴⽹网络的接⼊入策略 协议完备、简单、数据安全、可扩展、省流量 接⼊入层 ���� DES+RSA/ ECC+AES/ ⺫⽬目录 具有go特⾊色的运维 go语⾔言程序开发需要找到⼀一种平衡,既利⽤用协程带来的便利性⼜又做适当 集中化处理 套路:任务池集中数据合并请求、连接池+pipeline 利⽤用全双⼯工特性 经验⼀一 性能优化 性能优化:io集中处理 通信库 性能优化:io集中处理 通信库 性能优化:数据集中处理0 码力 | 39 页 | 5.23 MB | 1 年前3
2.2.2 深入理解BFE基于负载均衡器 基于名字服务 方案对比 方案 对流量的控制力 资源消耗 对客户端的要求 适用场景 基于负载均 衡器 强。可以达到单个连 接 / 请求的粒度。 高。负载均衡器引 入了额外的资源消 耗。 低。客户端基本不 需要实现策略。 总体流量规模不大 (从负载均衡器资 源消耗的角度); 应用场景对流量控 制要求高。 基于名字服 务 + 客户 端策略 弱。客户端直接访问 服务,没有可靠的卡 控点,无法实现精细 的流量控制测量。 低。不需要额外的 资源投入。 高。客户端需要支 持比较复杂的策略, 且涉及升级的问题。 总体流量规模较大; 应用场景对流量控 制要求低;无法使 用负载均衡器的场 景。 负载均衡器 • 负载均衡的趋势 • 硬件 => 软件 • 四层和七层负载均衡器分离 • 四层负载均衡 • LVS,DPVS,… • 七层负载均衡 研发效率 • 远高于C语言 • 稳定性 • 内存方面错误降低 • 可以捕捉异常 • 安全性 • 缓存区溢出风险降低 • 代码可维护性 • 可读性好 • 易于编写高并发逻辑 • 网络协议栈支持 BFE的短板 • 没有在内存拷贝上做极致优化 • 使用Go系统协议栈 • 无法利用CPU亲和性(CPU Affinity) • 无法控制底层线程 七层负载均衡的生态选择 Nginx0 码力 | 26 页 | 1.78 MB | 1 年前3
2.1.1 Golang主动式内存缓存的优化探索之路极致的性能 除了网络IO,与Redis有什么区别? 复杂的查询怎么办? 02. 传统的Cache很难实现多维度的查询,无法具备像SQL一样的灵活的查询模式 支持多种维度的查询 提供类似SQL的查询模式 支持灵活的信息过滤条件 内存不够用怎么办? 03. 冷热可交换、策略可定制、内存可扩展,多种冷数据淘汰组件,自由组合 存储扩展,冷热数据交换 可自定义冷热数据交换策略 04. 降低硬件成本,降低依赖,保证稳定性 同样的性能,需要更少的硬件资源,降低成本 01 核心数据在本地,依赖少,更稳定 02 • 千万级内存对象,GC严重耗时,如何解决? • 复杂的查询场景,内存数据如何高效组织? • 主动式内存缓存,如何保证数据实时性? • 数据太多,内存不够用,如何进行存储扩展? 通过本次分享,可以带来哪些收获? 难点攻克 第二部分 使用内存缓存 数据一致性如何保证? 数据一致性如何保证? 一致性 01. 缓存如何保证更新,如何与数据库同步 同步、更新 被动方式 缓存过期 定期同步 主动方式 监听数据变化 数据加载,更新 02. 全量数据加载,增量数据监听 • 每个应用服务分别消费数据变更消息 • 一个应用服务消费数据变更,应用服务集群内广播 Maxwell是一个能实时读取MySQL二进 制日志binlog,并生成JSON格式的消0 码力 | 48 页 | 6.06 MB | 1 年前3
共 77 条
- 1
- 2
- 3
- 4
- 5
- 6
- 8













