 Nacos架构&原理
此简单需求,随着业务规模变大也会变的非常复杂。如何能将数据准确的在 3 秒钟之内推送到每⼀ 个计算节点,这是当时提出的⼀个要求,围绕这个要求,系统要做大量的研发和改造,类似的这种 关键的技术挑战点还非常非常的多。本书就是将面对复杂的分布式计算场景,海量并发的业务场景, 对软负载⼀个系统的进行阐述,通过 Nacos 开源分享阿里软负载最佳实践,希望能够帮助到各位开 发者,各位系统架构师,少走弯路。 阿里巴巴云原生应用平台负责人 靠性,可观测性等分布式系统指标影 响整个分布式系统的运行。历史上,这个系统在阿里也触发过大故障,经历过数次血与火的考验。 在阿里数次架构升级中,Nacos 都做了大量的功能迭代,用来支持阿里的异地多活,容灾演练,容 器化,Serverless 化。Nacos 经过阿里内部锤炼十年以上,各项指标已经及其先进,稳定,为服务 好全球开发者,Nacos 经过数十名工程师持续努力,以开源形式和大家见面,相信 ⼀次配 置要将全部实例重启,不仅增加了系统的不稳定性,也提高了维护的成本。 那么如何能够做到服务不重启就可以修改配置?所有就产生了四个基础诉求:  需要支持动态修改配置  需要动态变更有多实时  变更快了之后如何管控控制变更风险,如灰度、回滚等  敏感配置如何做安全配置 Nacos 架构 < 22 概念介绍 配置(Configuration) 在系统开发过程中通常会将⼀0 码力 | 326 页 | 12.83 MB | 9 月前3 Nacos架构&原理
此简单需求,随着业务规模变大也会变的非常复杂。如何能将数据准确的在 3 秒钟之内推送到每⼀ 个计算节点,这是当时提出的⼀个要求,围绕这个要求,系统要做大量的研发和改造,类似的这种 关键的技术挑战点还非常非常的多。本书就是将面对复杂的分布式计算场景,海量并发的业务场景, 对软负载⼀个系统的进行阐述,通过 Nacos 开源分享阿里软负载最佳实践,希望能够帮助到各位开 发者,各位系统架构师,少走弯路。 阿里巴巴云原生应用平台负责人 靠性,可观测性等分布式系统指标影 响整个分布式系统的运行。历史上,这个系统在阿里也触发过大故障,经历过数次血与火的考验。 在阿里数次架构升级中,Nacos 都做了大量的功能迭代,用来支持阿里的异地多活,容灾演练,容 器化,Serverless 化。Nacos 经过阿里内部锤炼十年以上,各项指标已经及其先进,稳定,为服务 好全球开发者,Nacos 经过数十名工程师持续努力,以开源形式和大家见面,相信 ⼀次配 置要将全部实例重启,不仅增加了系统的不稳定性,也提高了维护的成本。 那么如何能够做到服务不重启就可以修改配置?所有就产生了四个基础诉求:  需要支持动态修改配置  需要动态变更有多实时  变更快了之后如何管控控制变更风险,如灰度、回滚等  敏感配置如何做安全配置 Nacos 架构 < 22 概念介绍 配置(Configuration) 在系统开发过程中通常会将⼀0 码力 | 326 页 | 12.83 MB | 9 月前3
 金融级云原生 PaaS 探索与实践金融级云原生 PaaS 探索与实践 王成昌(晙曦)蚂蚁金服技术专家2/20 一、业务背景 二、多集群管控 三、发布运维体系 目 录 contents 目录3/20 一、业务背景 业务背景4/20 业务背景 业务架构 演进 • 容量  应用|数据库|机房 • 容灾  机房|地域5/20 业务背景 业务架构 单元化 • 高可用 • 一致性 • 可扩展 • 业务敏捷  SaaS 面向站点级别输出7/20 PaaS 能力 • 面向多租户多环境; • 基础资源管控; • 应用发布运维体系; • 业务实时监控,日志收集; • 机房级和地域级容灾能力; 业务背景业务背景 CAFÉ API Server Aggregation Layer 异地多活架构 同城双活架构 K8S API Server 基础发布运维 跨集群应用 资源管理 跨集群发布策略 多集群管理 跨集群网络 跨集群镜像管理 蓝绿发布 灰度分组发布 中间件变配 (DRM/Scheduler/Message) Mesh流调拨和治理 弹性建站/下站 容器腾挪/迁移 容灾切换和恢复 应急预案管理 … 分钟级容灾切换和恢复 全面变更风险管理 无限弹性可扩展 业务架构 产品层 云原生 PaaS 产品架构方案 7/209/20 二、多集群管控 多集群管控10/200 码力 | 20 页 | 1.71 MB | 6 月前3 金融级云原生 PaaS 探索与实践金融级云原生 PaaS 探索与实践 王成昌(晙曦)蚂蚁金服技术专家2/20 一、业务背景 二、多集群管控 三、发布运维体系 目 录 contents 目录3/20 一、业务背景 业务背景4/20 业务背景 业务架构 演进 • 容量  应用|数据库|机房 • 容灾  机房|地域5/20 业务背景 业务架构 单元化 • 高可用 • 一致性 • 可扩展 • 业务敏捷  SaaS 面向站点级别输出7/20 PaaS 能力 • 面向多租户多环境; • 基础资源管控; • 应用发布运维体系; • 业务实时监控,日志收集; • 机房级和地域级容灾能力; 业务背景业务背景 CAFÉ API Server Aggregation Layer 异地多活架构 同城双活架构 K8S API Server 基础发布运维 跨集群应用 资源管理 跨集群发布策略 多集群管理 跨集群网络 跨集群镜像管理 蓝绿发布 灰度分组发布 中间件变配 (DRM/Scheduler/Message) Mesh流调拨和治理 弹性建站/下站 容器腾挪/迁移 容灾切换和恢复 应急预案管理 … 分钟级容灾切换和恢复 全面变更风险管理 无限弹性可扩展 业务架构 产品层 云原生 PaaS 产品架构方案 7/209/20 二、多集群管控 多集群管控10/200 码力 | 20 页 | 1.71 MB | 6 月前3
 蚂蚁金服网络代理演进之路安全防护能力提升,WAF,流量镜像 2018至 今 • 通信协议,架构,安全再次升级(物联终端接入,QUIC协议,国密,可信计算, 海外加速,云原生)金融级三地五中心容灾架构(LDC) 单机房 LDC 同城双活 LDC 异地多活 LDC 弹性伸缩混部 LDC DB Region 1 DB1 Region 1 Region 1 DB2 Region 1 Region 1 DB1 DB2 Region 安全软硬件一体解决方案 Intel QAT Cavium Nitrox软硬件一体解决方案 SSL握手性能 提升3倍 • 对Spanner实现了异步化改造 • 对openssl进行了异步化引擎改造 • 实现多芯片卡的负载均衡协议实现的改造-MTLS MTLS:1) 轻量级TLS库,小于50k;2) 优化的TLS协议 0-RTT • 减少握手延迟 • 代价:握手前发送的数据不能 保证防重放攻击,因此要求应 拥抱监管 • 安全可控 • 金融科技 AntTLS库 • 基于OpenSSL • 全面拥抱TLS1.3 • 国密优化实现,国密单证书标准支撑 • 支持SGX等可信机制 • 多硬件卡Engine • Mobile,iot设备等多终端支持 • OpenSSL Committer无线移动战役 操作响应慢 操作无响应 Push没消息 Push消息慢 海外消息慢 收发图片慢 建连时长 建连成功率0 码力 | 46 页 | 19.93 MB | 6 月前3 蚂蚁金服网络代理演进之路安全防护能力提升,WAF,流量镜像 2018至 今 • 通信协议,架构,安全再次升级(物联终端接入,QUIC协议,国密,可信计算, 海外加速,云原生)金融级三地五中心容灾架构(LDC) 单机房 LDC 同城双活 LDC 异地多活 LDC 弹性伸缩混部 LDC DB Region 1 DB1 Region 1 Region 1 DB2 Region 1 Region 1 DB1 DB2 Region 安全软硬件一体解决方案 Intel QAT Cavium Nitrox软硬件一体解决方案 SSL握手性能 提升3倍 • 对Spanner实现了异步化改造 • 对openssl进行了异步化引擎改造 • 实现多芯片卡的负载均衡协议实现的改造-MTLS MTLS:1) 轻量级TLS库,小于50k;2) 优化的TLS协议 0-RTT • 减少握手延迟 • 代价:握手前发送的数据不能 保证防重放攻击,因此要求应 拥抱监管 • 安全可控 • 金融科技 AntTLS库 • 基于OpenSSL • 全面拥抱TLS1.3 • 国密优化实现,国密单证书标准支撑 • 支持SGX等可信机制 • 多硬件卡Engine • Mobile,iot设备等多终端支持 • OpenSSL Committer无线移动战役 操作响应慢 操作无响应 Push没消息 Push消息慢 海外消息慢 收发图片慢 建连时长 建连成功率0 码力 | 46 页 | 19.93 MB | 6 月前3
 TiDB v8.5 中文手册· · · · · · · 957 7.8.26 为什么恢复暂停的 changefeed 后,changefeed 同步延迟越来越高,数分钟后才恢复正常? · · · 957 7.8.27 在两个异地 TiDB 集群之间同步数据,如何部署 TiCDC?· · · · · · · · · · · · · · · · · · · · · · · · · · · · 957 7.8.28 如何理解 DML · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 1095 8.5.3 基于多副本的单集群容灾方案 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 1326 10.3.4 定位消耗系统资源多的查询· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 13330 码力 | 5095 页 | 104.54 MB | 10 月前3 TiDB v8.5 中文手册· · · · · · · 957 7.8.26 为什么恢复暂停的 changefeed 后,changefeed 同步延迟越来越高,数分钟后才恢复正常? · · · 957 7.8.27 在两个异地 TiDB 集群之间同步数据,如何部署 TiCDC?· · · · · · · · · · · · · · · · · · · · · · · · · · · · 957 7.8.28 如何理解 DML · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 1095 8.5.3 基于多副本的单集群容灾方案 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 1326 10.3.4 定位消耗系统资源多的查询· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 13330 码力 | 5095 页 | 104.54 MB | 10 月前3
 TiDB中文技术文档晰的了解 TiDB DDL 的内部实现机制 TiDB 服务监听 host 默认: “0.0.0.0” TiDB 服务会监听这个 host 0.0.0.0 默认会监听所有的网卡 address。如果有多块网卡,可以指定对外提供服务的网卡,譬如 192.168.100.113 Log 文件 默认: “” 如果没设置这个参数,log 会默认输出到 “stderr”,如果设置了, log 就会输出到对应的文件里面,在每 语句中的表名,如果表 名被重命名,则显示重命名。index 表示索引名。range 表示扫描的数据范围。out of order 表示 index scan 是否按照顺序返回。注意在 TiDB 中,多列或者非 int 列构成的主键是当作唯一索引处理的。 Selection 表示 SQL 语句中的选择条件,通常出现在 WHERE/HAVING/ON 子句中。 Projection 对应 SQL 语句中的 为编码类型的键值对的组合。用户可以在 TiDB 的表中使用 JSON 类型 的字段,同时以生成列(generated column)的方式为 JSON 文档内部的字段建立索引。基于此,用户可以很灵 活地处理那些 schema 不确定的业务,同时不必受限于传统文档数据库糟糕的读性能及匮乏的事务支持。 TiDB 的 JSON 主要参考了 MySQL 5.7 的用户接口。例如,可以创建一个表,包含一个 JSON0 码力 | 444 页 | 4.89 MB | 6 月前3 TiDB中文技术文档晰的了解 TiDB DDL 的内部实现机制 TiDB 服务监听 host 默认: “0.0.0.0” TiDB 服务会监听这个 host 0.0.0.0 默认会监听所有的网卡 address。如果有多块网卡,可以指定对外提供服务的网卡,譬如 192.168.100.113 Log 文件 默认: “” 如果没设置这个参数,log 会默认输出到 “stderr”,如果设置了, log 就会输出到对应的文件里面,在每 语句中的表名,如果表 名被重命名,则显示重命名。index 表示索引名。range 表示扫描的数据范围。out of order 表示 index scan 是否按照顺序返回。注意在 TiDB 中,多列或者非 int 列构成的主键是当作唯一索引处理的。 Selection 表示 SQL 语句中的选择条件,通常出现在 WHERE/HAVING/ON 子句中。 Projection 对应 SQL 语句中的 为编码类型的键值对的组合。用户可以在 TiDB 的表中使用 JSON 类型 的字段,同时以生成列(generated column)的方式为 JSON 文档内部的字段建立索引。基于此,用户可以很灵 活地处理那些 schema 不确定的业务,同时不必受限于传统文档数据库糟糕的读性能及匮乏的事务支持。 TiDB 的 JSON 主要参考了 MySQL 5.7 的用户接口。例如,可以创建一个表,包含一个 JSON0 码力 | 444 页 | 4.89 MB | 6 月前3
 TiDB v8.4 中文手册· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 842 8.5.3 基于多副本的单集群容灾方案 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 1071 10.3.4 定位消耗系统资源多的查询· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 1078 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 1417 12 教程 1475 12.1 单区域多 AZ 部署 TiDB · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·0 码力 | 5072 页 | 104.05 MB | 10 月前3 TiDB v8.4 中文手册· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 842 8.5.3 基于多副本的单集群容灾方案 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 1071 10.3.4 定位消耗系统资源多的查询· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 1078 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 1417 12 教程 1475 12.1 单区域多 AZ 部署 TiDB · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·0 码力 | 5072 页 | 104.05 MB | 10 月前3
 TiDB v8.2 中文手册· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 779 8.5.3 基于多副本的单集群容灾方案 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 1007 10.3.4 定位消耗系统资源多的查询· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 1013 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 1352 12 教程 1408 12.1 单区域多 AZ 部署 TiDB · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·0 码力 | 4987 页 | 102.91 MB | 10 月前3 TiDB v8.2 中文手册· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 779 8.5.3 基于多副本的单集群容灾方案 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 1007 10.3.4 定位消耗系统资源多的查询· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 1013 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 1352 12 教程 1408 12.1 单区域多 AZ 部署 TiDB · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·0 码力 | 4987 页 | 102.91 MB | 10 月前3
 分布式NewSQL数据库TiDB可⽤、可扩展性、容灾要求较⾼。传统的解决⽅案是同城两个机房提供服务、异地⼀个机房提供数据容灾能⼒但不提供服务,此解决⽅案存 在以下缺点:资源利⽤率低、维护成本⾼、RTO (Recovery Time Objective) 及 RPO (Recovery Point Objective) ⽆法真实达到企业所期望的值。TiDB 采⽤多副本 + Multi-Raft 协议 的⽅式将数据调度到不同的机房、 分布式NewSQL数据库 TiDB Copyright © 2012-2021 UCloud 优刻得 14/120 ⼯具将数据同步到 OLAP 型数据库进⾏数据分析,这种处理⽅案存在存储成本⾼、实时性差等多⽅⾯的问题。TiDB 在 4.0 版本中引⼊列存储引擎 TiFlash 结合⾏存储引擎 TiKV 构建真正 的 HTAP 数据库,在增加少量存储成本的情况下,可以在同⼀个系统中做联机交易处理、实时数据分析,极⼤地节省企业的成本。0 码力 | 120 页 | 7.42 MB | 6 月前3 分布式NewSQL数据库TiDB可⽤、可扩展性、容灾要求较⾼。传统的解决⽅案是同城两个机房提供服务、异地⼀个机房提供数据容灾能⼒但不提供服务,此解决⽅案存 在以下缺点:资源利⽤率低、维护成本⾼、RTO (Recovery Time Objective) 及 RPO (Recovery Point Objective) ⽆法真实达到企业所期望的值。TiDB 采⽤多副本 + Multi-Raft 协议 的⽅式将数据调度到不同的机房、 分布式NewSQL数据库 TiDB Copyright © 2012-2021 UCloud 优刻得 14/120 ⼯具将数据同步到 OLAP 型数据库进⾏数据分析,这种处理⽅案存在存储成本⾼、实时性差等多⽅⾯的问题。TiDB 在 4.0 版本中引⼊列存储引擎 TiFlash 结合⾏存储引擎 TiKV 构建真正 的 HTAP 数据库,在增加少量存储成本的情况下,可以在同⼀个系统中做联机交易处理、实时数据分析,极⼤地节省企业的成本。0 码力 | 120 页 | 7.42 MB | 6 月前3
 PingCAP TiDB&TiKV Introduction OLTP基于 2013 年 Google Spanner / F1 论文 ● 基于 2014 年 Stanford 工业级分布式一致性协议实现 Raft 论文 概括: 无限水平线性扩展、高并发高吞吐、跨数据中心多活、MySQL 兼容的真正意义上的分布式数据库 ● 我们是全球仅有的在该领域进行技术创新的两家公司之一(对标美国 CockroachDB) ● 完全从头打造,并非基于 MySQL 或数据库中间件进行改造、封装 高吞吐的处理能力 ,卓越的集群处理能力。同时提供跨行事务处理能力。 我们的数据库能解决什么问题 - 2 ● 高可用、跨数据中心多活 分布式算法 Raft 自动完成多副本写入、数据分片(region)的拆分、聚合、重分布 ,从而保证数据高可用,天然支持跨数据中心多活且可配置。 ● 底层数据打通,集中管控 通过增加节点即可获得无限数据存储能力,从架构层面轻松支持多个业务系统 底层数据打通,便于集中管控,避免信息孤岛,提升数据价值。 TiDB Server TiDB Worker TiDB Worker TiDB Worker TiKV Query Write TiKV ● 开源的 Spanner 实现 ● 基于 Raft 多副本一致性算法 ○ 使用Multi Raft支持Dynamic Scale ● 支持类 Percolator 分布式事务 ● 提供 MVCC 支持 ○ RocksDB RocksDB Raft KV MVCC0 码力 | 21 页 | 613.54 KB | 6 月前3 PingCAP TiDB&TiKV Introduction OLTP基于 2013 年 Google Spanner / F1 论文 ● 基于 2014 年 Stanford 工业级分布式一致性协议实现 Raft 论文 概括: 无限水平线性扩展、高并发高吞吐、跨数据中心多活、MySQL 兼容的真正意义上的分布式数据库 ● 我们是全球仅有的在该领域进行技术创新的两家公司之一(对标美国 CockroachDB) ● 完全从头打造,并非基于 MySQL 或数据库中间件进行改造、封装 高吞吐的处理能力 ,卓越的集群处理能力。同时提供跨行事务处理能力。 我们的数据库能解决什么问题 - 2 ● 高可用、跨数据中心多活 分布式算法 Raft 自动完成多副本写入、数据分片(region)的拆分、聚合、重分布 ,从而保证数据高可用,天然支持跨数据中心多活且可配置。 ● 底层数据打通,集中管控 通过增加节点即可获得无限数据存储能力,从架构层面轻松支持多个业务系统 底层数据打通,便于集中管控,避免信息孤岛,提升数据价值。 TiDB Server TiDB Worker TiDB Worker TiDB Worker TiKV Query Write TiKV ● 开源的 Spanner 实现 ● 基于 Raft 多副本一致性算法 ○ 使用Multi Raft支持Dynamic Scale ● 支持类 Percolator 分布式事务 ● 提供 MVCC 支持 ○ RocksDB RocksDB Raft KV MVCC0 码力 | 21 页 | 613.54 KB | 6 月前3
 Hello 算法 1.2.0 繁体中文 C语言 版作者:靳宇棟(@krahets) 程式碼審閱:宮蘭景(@Gonglja) Release 1.2.0 2024‑12‑06 序 兩年前,我在力扣上分享了“劍指 Offer”系列題解,受到了許多讀者的鼓勵與支持。在與讀者交流期間,我 最常被問到的一個問題是“如何入門演算法”。漸漸地,我對這個問題產生了濃厚的興趣。 兩眼一抹黑地刷題似乎是最受歡迎的方法,簡單、直接且有效。然而刷題就如同玩“踩地雷”遊戲,自學能 ”從這個意義上看,這本 書並非完全“免費”。為了不辜負你為本書所付出的寶貴“注意力”,我會竭盡所能,投入最大的“注意力” 來完成本書的創作。 本人自知學疏才淺,書中內容雖然已經過一段時間的打磨,但一定仍有許多錯誤,懇請各位老師與同學批評 指正。 本書中的程式碼附有可一鍵執行的原始檔,託管於 github.com/krahets/hello‑algo 倉庫。 動畫在 PDF 內的展示效果有限,可訪問 www 從巧奪天工的匠人 技藝、到解放生產力的工業產品、再到宇宙運行的科學規律,幾乎每一件平凡或令人驚嘆的事物背後,都隱 藏著精妙的演算法思想。 同樣,資料結構無處不在:大到社會網絡,小到地鐵路線,許多系統都可以建模為“圖”;大到一個國家,小 到一個家庭,社會的主要組織形式呈現出“樹”的特徵;冬天的衣服就像“堆疊”,最先穿上的最後才能脫下; 羽毛球筒則如同“佇列”,一端放入、一端取出;字典就像一個“雜湊表”,能夠快速查找目標詞條。0 码力 | 392 页 | 18.83 MB | 10 月前3 Hello 算法 1.2.0 繁体中文 C语言 版作者:靳宇棟(@krahets) 程式碼審閱:宮蘭景(@Gonglja) Release 1.2.0 2024‑12‑06 序 兩年前,我在力扣上分享了“劍指 Offer”系列題解,受到了許多讀者的鼓勵與支持。在與讀者交流期間,我 最常被問到的一個問題是“如何入門演算法”。漸漸地,我對這個問題產生了濃厚的興趣。 兩眼一抹黑地刷題似乎是最受歡迎的方法,簡單、直接且有效。然而刷題就如同玩“踩地雷”遊戲,自學能 ”從這個意義上看,這本 書並非完全“免費”。為了不辜負你為本書所付出的寶貴“注意力”,我會竭盡所能,投入最大的“注意力” 來完成本書的創作。 本人自知學疏才淺,書中內容雖然已經過一段時間的打磨,但一定仍有許多錯誤,懇請各位老師與同學批評 指正。 本書中的程式碼附有可一鍵執行的原始檔,託管於 github.com/krahets/hello‑algo 倉庫。 動畫在 PDF 內的展示效果有限,可訪問 www 從巧奪天工的匠人 技藝、到解放生產力的工業產品、再到宇宙運行的科學規律,幾乎每一件平凡或令人驚嘆的事物背後,都隱 藏著精妙的演算法思想。 同樣,資料結構無處不在:大到社會網絡,小到地鐵路線,許多系統都可以建模為“圖”;大到一個國家,小 到一個家庭,社會的主要組織形式呈現出“樹”的特徵;冬天的衣服就像“堆疊”,最先穿上的最後才能脫下; 羽毛球筒則如同“佇列”,一端放入、一端取出;字典就像一個“雜湊表”,能夠快速查找目標詞條。0 码力 | 392 页 | 18.83 MB | 10 月前3
共 145 条
- 1
- 2
- 3
- 4
- 5
- 6
- 15













