如何打造一个让人愉快的框架 - 王巍
PACKAGE MANAGER5 5 https://swift.org/package-manager/ 在 SWIFT 中使用框架 > .framework - 直接 import XYZ 导入 module > .a + .h - bridging header #import "XYZ.h" 创建框架 一些诀窍 API 设计 考虑提供给开发者的内容 API 设计 考虑提供给开发者的内容 module map //! Project version number for MyFramework. public var MyFrameworkVersionNumber: Double // 并没有导出 MyFrameworkVersionString 持续集成 选择合适的 CI 环境 TRAVIS CI, CIRCLE CI, COVERALLS, CODECOV... 自动化的发布流程 FASTLANE90 码力 | 84 页 | 21.57 MB | 1 年前3Hello 算法 1.1.0 Swift版
数据完整性检查:数据发送方可以计算数据的哈希值并将其一同发送;接收方可以重新计算接收到的 数据的哈希值,并与接收到的哈希值进行比较。如果两者匹配,那么数据就被视为完整。 对于密码学的相关应用,为了防止从哈希值推导出原始密码等逆向工程,哈希算法需要具备更高等级的安全 特性。 ‧ 单向性:无法通过哈希值反推出关于输入数据的任何信息。 ‧ 抗碰撞性:应当极难找到两个不同的输入,使得它们的哈希值相同。 ‧ 雪 的。 7.3.1 表示完美二叉树 先分析一个简单案例。给定一棵完美二叉树,我们将所有节点按照层序遍历的顺序存储在一个数组中,则每 个节点都对应唯一的数组索引。 根据层序遍历的特性,我们可以推导出父节点索引与子节点索引之间的“映射公式”:若某节点的索引为 ? , 则该节点的左子节点索引为 2? + 1 ,右子节点索引为 2? + 2 。图 7‑12 展示了各个节点索引之间的映射关 系。 式,它将一个问题分解为一系列更小的子问题,并 通过存储子问题的解来避免重复计算,从而大幅提升时间效率。 在本节中,我们从一个经典例题入手,先给出它的暴力回溯解法,观察其中包含的重叠子问题,再逐步导出 更高效的动态规划解法。 爬楼梯 给定一个共有 ? 阶的楼梯,你每步可以上 1 阶或者 2 阶,请问有多少种方案可以爬到楼顶? 如图 14‑1 所示,对于一个 3 阶楼梯,共有 3 种方案可以爬到楼顶。0 码力 | 379 页 | 18.47 MB | 1 年前3Hello 算法 1.2.0 简体中文 Swift 版
数据完整性检查:数据发送方可以计算数据的哈希值并将其一同发送;接收方可以重新计算接收到的 数据的哈希值,并与接收到的哈希值进行比较。如果两者匹配,那么数据就被视为完整。 对于密码学的相关应用,为了防止从哈希值推导出原始密码等逆向工程,哈希算法需要具备更高等级的安全 特性。 ‧ 单向性:无法通过哈希值反推出关于输入数据的任何信息。 ‧ 抗碰撞性:应当极难找到两个不同的输入,使得它们的哈希值相同。 ‧ 雪 的。 7.3.1 表示完美二叉树 先分析一个简单案例。给定一棵完美二叉树,我们将所有节点按照层序遍历的顺序存储在一个数组中,则每 个节点都对应唯一的数组索引。 根据层序遍历的特性,我们可以推导出父节点索引与子节点索引之间的“映射公式”:若某节点的索引为 ? , 则该节点的左子节点索引为 2? + 1 ,右子节点索引为 2? + 2 。图 7‑12 展示了各个节点索引之间的映射关 系。 式,它将一个问题分解为一系列更小的子问题,并 通过存储子问题的解来避免重复计算,从而大幅提升时间效率。 在本节中,我们从一个经典例题入手,先给出它的暴力回溯解法,观察其中包含的重叠子问题,再逐步导出 更高效的动态规划解法。 爬楼梯 给定一个共有 ? 阶的楼梯,你每步可以上 1 阶或者 2 阶,请问有多少种方案可以爬到楼顶? 如图 14‑1 所示,对于一个 3 阶楼梯,共有 3 种方案可以爬到楼顶。0 码力 | 379 页 | 18.48 MB | 9 月前3Hello 算法 1.0.0 Swift版
计算接收到的 数据的哈希值,并与接收到的哈希值进行比较。如果两者匹配,那么数据就被视为完整。 第 6 章 哈希表 hello‑algo.com 131 对于密码学的相关应用,为了防止从哈希值推导出原始密码等逆向工程,哈希算法需要具备更高等级的安全 特性。 ‧ 单向性:无法通过哈希值反推出关于输入数据的任何信息。 ‧ 抗碰撞性:应当极难找到两个不同的输入,使得它们的哈希值相同。 ‧ 雪 的。 7.3.1 表示完美二叉树 先分析一个简单案例。给定一棵完美二叉树,我们将所有节点按照层序遍历的顺序存储在一个数组中,则每 个节点都对应唯一的数组索引。 根据层序遍历的特性,我们可以推导出父节点索引与子节点索引之间的“映射公式”:若某节点的索引为 ? , 则该节点的左子节点索引为 2? + 1 ,右子节点索引为 2? + 2 。图 7‑12 展示了各个节点索引之间的映射关 系。 式,它将一个问题分解为一系列更小的子问题,并 通过存储子问题的解来避免重复计算,从而大幅提升时间效率。 在本节中,我们从一个经典例题入手,先给出它的暴力回溯解法,观察其中包含的重叠子问题,再逐步导出 更高效的动态规划解法。 � 爬楼梯 给定一个共有 ? 阶的楼梯,你每步可以上 1 阶或者 2 阶,请问有多少种方案可以爬到楼顶? 如图 14‑1 所示,对于一个 3 阶楼梯,共有 3 种方案可以爬到楼顶。0 码力 | 378 页 | 17.59 MB | 1 年前3Hello 算法 1.0.0b5 Swift版
数据完整性检查:数据发送方可以计算数据的哈希值并将其一同发送;接收方可以重新计算接收到的 数据的哈希值,并与接收到的哈希值进行比较。如果两者匹配,那么数据就被视为完整的。 对于密码学的相关应用,为了防止从哈希值推导出原始密码等逆向工程,哈希算法需要具备更高等级的安全 特性。 ‧ 抗碰撞性:应当极其困难找到两个不同的输入,使得它们的哈希值相同。 第 6 章 哈希表 hello‑algo.com 124 ‧ 的。 7.3.1 表示完美二叉树 先分析一个简单案例。给定一个完美二叉树,我们将所有节点按照层序遍历的顺序存储在一个数组中,则每 个节点都对应唯一的数组索引。 根据层序遍历的特性,我们可以推导出父节点索引与子节点索引之间的“映射公式”:若节点的索引为 ? ,则 该节点的左子节点索引为 2? + 1 ,右子节点索引为 2? + 2 。图 7‑12 展示了各个节点索引之间的映射关系。 图 7‑12 式,它将一个问题分解为一系列更小的子问题,并 通过存储子问题的解来避免重复计算,从而大幅提升时间效率。 在本节中,我们从一个经典例题入手,先给出它的暴力回溯解法,观察其中包含的重叠子问题,再逐步导出 更高效的动态规划解法。 � 爬楼梯 给定一个共有 ? 阶的楼梯,你每步可以上 1 阶或者 2 阶,请问有多少种方案可以爬到楼顶。 如图 14‑1 所示,对于一个 3 阶楼梯,共有 3 种方案可以爬到楼顶。0 码力 | 376 页 | 30.70 MB | 1 年前3Swift 迁移之路 - 唐巧
公⽤用的参数 项⽬目的底层组件 ⽹网络组件 视频播放 资源升级 … … 业务功能组件 OC{ ⼩小猿商城 24 点游戏 奥数闯关 英语随身听 ⼩小猿⽇日报 视频播放 收藏功能 导出PDF 智囊团 … 组件化进展 • 已经完成约 30% 的功能模块组 件化 • 功能模块耦合太严重,是组件化 的挑战 ⼩小结 • ⽤用 Swift 搭建核⼼心项⽬目代码 • 以功能为单元粒度,组件化迁移原来的0 码力 | 43 页 | 1.37 MB | 1 年前3Hello 算法 1.0.0b1 Swift版
119 Figure 7‑28. 有 grandChild 的左旋操作 观察发现,「左旋」和「右旋」操作是镜像对称的,两者对应解决的两种失衡情况也是对称的。根据对称性,我 们可以很方便地从「右旋」推导出「左旋」。具体地,只需将「右旋」代码中的把所有的 left 替换为 right 、 所有的 right 替换为 left ,即可得到「左旋」代码。 // === File: avl_tree.swift0 码力 | 190 页 | 14.71 MB | 1 年前3Hello 算法 1.0.0b2 Swift版
119 Figure 7‑28. 有 grandChild 的左旋操作 观察发现,「左旋」和「右旋」操作是镜像对称的,两者对应解决的两种失衡情况也是对称的。根据对称性,我 们可以很方便地从「右旋」推导出「左旋」。具体地,只需将「右旋」代码中的把所有的 left 替换为 right 、 所有的 right 替换为 left ,即可得到「左旋」代码。 // === File: avl_tree.swift0 码力 | 199 页 | 15.72 MB | 1 年前3
共 8 条
- 1