 Hello 算法 1.1.0 JavaScript版. . . . . . . . . . . . . . . . . 297 第 14 章 动态规划 299 14.1 初探动态规划 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 14.2 动态规划问题特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 14.3 动态规划解题思路 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 14.4 0‑1 背包问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ‧ 数据结构:基本数据类型和数据结构的分类方法。数组、链表、栈、队列、哈希表、树、堆、图等数据 结构的定义、优缺点、常用操作、常见类型、典型应用、实现方法等。 ‧ 算法:搜索、排序、分治、回溯、动态规划、贪心等算法的定义、优缺点、效率、应用场景、解题步骤 和示例问题等。 第 0 章 前言 hello‑algo.com 3 图 0‑1 本书主要内容 0.1.3 致谢 本书在开源社区众多0 码力 | 379 页 | 18.46 MB | 1 年前3 Hello 算法 1.1.0 JavaScript版. . . . . . . . . . . . . . . . . 297 第 14 章 动态规划 299 14.1 初探动态规划 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 14.2 动态规划问题特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 14.3 动态规划解题思路 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 14.4 0‑1 背包问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ‧ 数据结构:基本数据类型和数据结构的分类方法。数组、链表、栈、队列、哈希表、树、堆、图等数据 结构的定义、优缺点、常用操作、常见类型、典型应用、实现方法等。 ‧ 算法:搜索、排序、分治、回溯、动态规划、贪心等算法的定义、优缺点、效率、应用场景、解题步骤 和示例问题等。 第 0 章 前言 hello‑algo.com 3 图 0‑1 本书主要内容 0.1.3 致谢 本书在开源社区众多0 码力 | 379 页 | 18.46 MB | 1 年前3
 Hello 算法 1.2.0 简体中文 JavaScript 版. . . . . . . . . . . . . . . . . 298 第 14 章 动态规划 299 14.1 初探动态规划 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 14.2 动态规划问题特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 14.3 动态规划解题思路 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 14.4 0‑1 背包问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ‧ 数据结构:基本数据类型和数据结构的分类方法。数组、链表、栈、队列、哈希表、树、堆、图等数据 结构的定义、优缺点、常用操作、常见类型、典型应用、实现方法等。 ‧ 算法:搜索、排序、分治、回溯、动态规划、贪心等算法的定义、优缺点、效率、应用场景、解题步骤 和示例问题等。 第 0 章 前言 www.hello‑algo.com 3 图 0‑1 本书主要内容 0.1.3 致谢 本书在开源0 码力 | 379 页 | 18.47 MB | 10 月前3 Hello 算法 1.2.0 简体中文 JavaScript 版. . . . . . . . . . . . . . . . . 298 第 14 章 动态规划 299 14.1 初探动态规划 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 14.2 动态规划问题特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 14.3 动态规划解题思路 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 14.4 0‑1 背包问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ‧ 数据结构:基本数据类型和数据结构的分类方法。数组、链表、栈、队列、哈希表、树、堆、图等数据 结构的定义、优缺点、常用操作、常见类型、典型应用、实现方法等。 ‧ 算法:搜索、排序、分治、回溯、动态规划、贪心等算法的定义、优缺点、效率、应用场景、解题步骤 和示例问题等。 第 0 章 前言 www.hello‑algo.com 3 图 0‑1 本书主要内容 0.1.3 致谢 本书在开源0 码力 | 379 页 | 18.47 MB | 10 月前3
 Hello 算法 1.0.0 JavaScript版. . . . . . . . . . . . . . . . . 297 第 14 章 动态规划 299 14.1 初探动态规划 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 14.2 动态规划问题特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 14.3 动态规划解题思路 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 14.4 0‑1 背包问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ‧ 数据结构:基本数据类型和数据结构的分类方法。数组、链表、栈、队列、哈希表、树、堆、图等数据 结构的定义、优缺点、常用操作、常见类型、典型应用、实现方法等。 ‧ 算法:搜索、排序、分治、回溯、动态规划、贪心等算法的定义、优缺点、效率、应用场景、解题步骤 和示例问题等。 第 0 章 前言 hello‑algo.com 3 图 0‑1 本书主要内容 0.1.3 致谢 本书在开源社区众多0 码力 | 376 页 | 17.57 MB | 1 年前3 Hello 算法 1.0.0 JavaScript版. . . . . . . . . . . . . . . . . 297 第 14 章 动态规划 299 14.1 初探动态规划 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 14.2 动态规划问题特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 14.3 动态规划解题思路 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 14.4 0‑1 背包问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ‧ 数据结构:基本数据类型和数据结构的分类方法。数组、链表、栈、队列、哈希表、树、堆、图等数据 结构的定义、优缺点、常用操作、常见类型、典型应用、实现方法等。 ‧ 算法:搜索、排序、分治、回溯、动态规划、贪心等算法的定义、优缺点、效率、应用场景、解题步骤 和示例问题等。 第 0 章 前言 hello‑algo.com 3 图 0‑1 本书主要内容 0.1.3 致谢 本书在开源社区众多0 码力 | 376 页 | 17.57 MB | 1 年前3
 Hello 算法 1.0.0b5 JavaScript版. . . . . . . . . . . . . . . . . 299 第 14 章 动态规划 300 14.1 初探动态规划 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 14.2 动态规划问题特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 14.3 动态规划解题思路 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312 14.4 0‑1 背包问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ‧ 数据结构:基本数据类型,数据结构的分类方法。数组、链表、栈、队列、哈希表、树、堆、图等数据 结构的定义、优缺点、常用操作、常见类型、典型应用、实现方法等。 ‧ 算法:搜索、排序、分治、回溯、动态规划、贪心等算法的定义、优缺点、效率、应用场景、解题步骤、 示例题目等。 第 0 章 前言 hello‑algo.com 3 图 0‑1 Hello 算法内容结构 0.1.3 致谢 在本书0 码力 | 375 页 | 30.68 MB | 1 年前3 Hello 算法 1.0.0b5 JavaScript版. . . . . . . . . . . . . . . . . 299 第 14 章 动态规划 300 14.1 初探动态规划 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 14.2 动态规划问题特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 14.3 动态规划解题思路 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312 14.4 0‑1 背包问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ‧ 数据结构:基本数据类型,数据结构的分类方法。数组、链表、栈、队列、哈希表、树、堆、图等数据 结构的定义、优缺点、常用操作、常见类型、典型应用、实现方法等。 ‧ 算法:搜索、排序、分治、回溯、动态规划、贪心等算法的定义、优缺点、效率、应用场景、解题步骤、 示例题目等。 第 0 章 前言 hello‑algo.com 3 图 0‑1 Hello 算法内容结构 0.1.3 致谢 在本书0 码力 | 375 页 | 30.68 MB | 1 年前3
 ECMAScript规范 第三版 中文版的隐含原型链中的所有属性没有名为 q1,q2 或 CFP1 的。需要注意的是,CF 和 CFp 之间没有隐含的原型关联。 不同于基于类的面向对象语言,ECMAScript 中的属性可以通过给它们赋值的方式,把它们 动态添加给对象。也就是说,构造函数不需要给所构造的对象的部分或全部属性命名或赋值。 在上面的图表中,通过给 CFp 中的属性赋新值就可以给 cf1,cf2, cf3,cf4 和 cf5 添加新的共享 属性。 ECMAScript 实 现的产生和操作内部属性的行为必须是 这里所描述的方法。而且,类型 Completion 的值仅被 用于表达式求值的中间值,且不能被对象的属性存储。 完结类型被用于解释非本地控制调度的语句的行为(break, continue, return, throw), 这里的类型是 normal, break, continue, return, throw 之一,值是一个 ECMAScript 下文组成一个逻辑上的栈。逻辑栈上的顶层执行上下文即正在运行的执行上下文。 10.1 定义 10.1.1 函数对象 有两种类型的函数对象: • 在源代码文本中用函数声明定义的,和使用函数表达式或使用函数对象作为构造器动态 创建的程序中的函数。 • 内置函数,它们是语言的内建对象,例如 parseInt 和 Math.exp。实现也可能会提供 独立于实现且在此规范中未被描述的内置函数。这些函数不包含 ECMAScript0 码力 | 58 页 | 563.06 KB | 1 年前3 ECMAScript规范 第三版 中文版的隐含原型链中的所有属性没有名为 q1,q2 或 CFP1 的。需要注意的是,CF 和 CFp 之间没有隐含的原型关联。 不同于基于类的面向对象语言,ECMAScript 中的属性可以通过给它们赋值的方式,把它们 动态添加给对象。也就是说,构造函数不需要给所构造的对象的部分或全部属性命名或赋值。 在上面的图表中,通过给 CFp 中的属性赋新值就可以给 cf1,cf2, cf3,cf4 和 cf5 添加新的共享 属性。 ECMAScript 实 现的产生和操作内部属性的行为必须是 这里所描述的方法。而且,类型 Completion 的值仅被 用于表达式求值的中间值,且不能被对象的属性存储。 完结类型被用于解释非本地控制调度的语句的行为(break, continue, return, throw), 这里的类型是 normal, break, continue, return, throw 之一,值是一个 ECMAScript 下文组成一个逻辑上的栈。逻辑栈上的顶层执行上下文即正在运行的执行上下文。 10.1 定义 10.1.1 函数对象 有两种类型的函数对象: • 在源代码文本中用函数声明定义的,和使用函数表达式或使用函数对象作为构造器动态 创建的程序中的函数。 • 内置函数,它们是语言的内建对象,例如 parseInt 和 Math.exp。实现也可能会提供 独立于实现且在此规范中未被描述的内置函数。这些函数不包含 ECMAScript0 码力 | 58 页 | 563.06 KB | 1 年前3
 2019-2021 美团技术年货 前端篇108 美团民宿跨端复用框架设计与实践 165 美团跨端一体化富文本管理技术实践 186 前端 | 2020 202 移动端 UI 一致性解决方案 202 美团外卖 Flutter 动态化实践 227 美团开源 Logan Web:前端日志在 Web 端的实现 255 外卖客户端容器化架构的演进 270 Flutter 包大小治理上的探索与实践 297 美团外卖持续交付的前世今生 Plugin:设计同学的贴心搭档 400 Native 地图与 Web 融合技术的应用与实践 431 目录 前端 | 2019 446 MTFlexbox 自动化埋点探索 447 Litho 在美团动态化方案 MTFlexbox 中的实践 459 开源 React Native 组件库 beeshell 2.0 发布 473 React Native 在美团外卖客户端的实践 506 Android 是美团外卖搭建起的公司级 Flutter 研发生态,它的架构图如下图所示: MTFlutter 架构图 如图所示,MTFlutter 已涵盖研发、调试、测试、发布、线上运维及工程管理整套闭 环,同时落地了动态化解决方案,支撑了公司多个业务发展。在大前端融合的趋势 下,美团外卖商家端持续在探索更优的多端复用方案,通过 MTFlutter 生态的建设, 目前 Flutter 技术栈已覆盖商家端 App 中0 码力 | 738 页 | 50.29 MB | 1 年前3 2019-2021 美团技术年货 前端篇108 美团民宿跨端复用框架设计与实践 165 美团跨端一体化富文本管理技术实践 186 前端 | 2020 202 移动端 UI 一致性解决方案 202 美团外卖 Flutter 动态化实践 227 美团开源 Logan Web:前端日志在 Web 端的实现 255 外卖客户端容器化架构的演进 270 Flutter 包大小治理上的探索与实践 297 美团外卖持续交付的前世今生 Plugin:设计同学的贴心搭档 400 Native 地图与 Web 融合技术的应用与实践 431 目录 前端 | 2019 446 MTFlexbox 自动化埋点探索 447 Litho 在美团动态化方案 MTFlexbox 中的实践 459 开源 React Native 组件库 beeshell 2.0 发布 473 React Native 在美团外卖客户端的实践 506 Android 是美团外卖搭建起的公司级 Flutter 研发生态,它的架构图如下图所示: MTFlutter 架构图 如图所示,MTFlutter 已涵盖研发、调试、测试、发布、线上运维及工程管理整套闭 环,同时落地了动态化解决方案,支撑了公司多个业务发展。在大前端融合的趋势 下,美团外卖商家端持续在探索更优的多端复用方案,通过 MTFlutter 生态的建设, 目前 Flutter 技术栈已覆盖商家端 App 中0 码力 | 738 页 | 50.29 MB | 1 年前3
 新语⾔,新思维 解读⼀个并发问题的多种实现 - 陶召胜不不⽀支持多值、⾼高级错误处理理 next: 多任务求解1-10,000,000的和 序号 语⾔言 关键点 1 JavaScript 不不再有回调地狱,变异步为顺序化思维,程序更更加可读 2 Go ⾼高并发调度,通道让异步编程更更简单 3 Scala (1)简洁的异步编程 (2)AKKA:分布式计算框架 4 Java (1)fork/join (2)CompletableFuture (3)反应式编程(Reactive 关键点:⾼高并发调度,通道让异步编程更更简单 2015年年 Go 1.5 2016年年 Go1.6、1.7 2017年年 Go1.8、 1.9 goroutine gorutine在逻辑处理理器器上执⾏行行 逻辑处理理器器, GOMAXPROCS gorutine OS线程, SetMaxThreads • Go运⾏行行时(runtime),有⾃自⼰己的 调度器器 • 可以将⼀一个goroutine分配给⼀一 Schedulers.single() 例例⼦子Reactor实现 总结 序号 语⾔言 关键点 1 JavaScript 不不再有回调地狱,变异步为顺序化思维,程序更更加可读 2 Go ⾼高并发调度,通道让异步编程更更简单 3 Scala (1)简洁的异步编程 (2)AKKA:分布式计算框架 4 Java (1)fork/join (2)CompletableFuture (3)反应式编程(Reactive0 码力 | 42 页 | 9.85 MB | 1 年前3 新语⾔,新思维 解读⼀个并发问题的多种实现 - 陶召胜不不⽀支持多值、⾼高级错误处理理 next: 多任务求解1-10,000,000的和 序号 语⾔言 关键点 1 JavaScript 不不再有回调地狱,变异步为顺序化思维,程序更更加可读 2 Go ⾼高并发调度,通道让异步编程更更简单 3 Scala (1)简洁的异步编程 (2)AKKA:分布式计算框架 4 Java (1)fork/join (2)CompletableFuture (3)反应式编程(Reactive 关键点:⾼高并发调度,通道让异步编程更更简单 2015年年 Go 1.5 2016年年 Go1.6、1.7 2017年年 Go1.8、 1.9 goroutine gorutine在逻辑处理理器器上执⾏行行 逻辑处理理器器, GOMAXPROCS gorutine OS线程, SetMaxThreads • Go运⾏行行时(runtime),有⾃自⼰己的 调度器器 • 可以将⼀一个goroutine分配给⼀一 Schedulers.single() 例例⼦子Reactor实现 总结 序号 语⾔言 关键点 1 JavaScript 不不再有回调地狱,变异步为顺序化思维,程序更更加可读 2 Go ⾼高并发调度,通道让异步编程更更简单 3 Scala (1)简洁的异步编程 (2)AKKA:分布式计算框架 4 Java (1)fork/join (2)CompletableFuture (3)反应式编程(Reactive0 码力 | 42 页 | 9.85 MB | 1 年前3
 在 JavaScript 中的并行语言特性-周爱民Reject Reactions2 p = Promise.resolve(x) p2 = p.then(f) JS 类 对象 构造器 ⾯面向对象的 动态的 名字空间 结构化异常 语句 结构化的 动态类型 动态执行 动态作用域 多语言范型 函数式的 生成器 迭代器 函数是第一类的 可运行/求值的 for await..of .catch .finally promise Promise() class x extends ... async/await then.call(p) pure promise instance 结构化 函数式 ⾯面向对象 并⾏行行 动态 thenabled object async* top level - await import() asyncIterator 任务队列列 执⾏行行栈 runnning execution0 码力 | 41 页 | 8.61 MB | 1 年前3 在 JavaScript 中的并行语言特性-周爱民Reject Reactions2 p = Promise.resolve(x) p2 = p.then(f) JS 类 对象 构造器 ⾯面向对象的 动态的 名字空间 结构化异常 语句 结构化的 动态类型 动态执行 动态作用域 多语言范型 函数式的 生成器 迭代器 函数是第一类的 可运行/求值的 for await..of .catch .finally promise Promise() class x extends ... async/await then.call(p) pure promise instance 结构化 函数式 ⾯面向对象 并⾏行行 动态 thenabled object async* top level - await import() asyncIterator 任务队列列 执⾏行行栈 runnning execution0 码力 | 41 页 | 8.61 MB | 1 年前3
 前端开发者指南(2017)L 在语义上描述了一个网 站的结构,并且隐含了其表现形式,因此是一种标记语言,而非程序语言。 — 维基百科 前端开发者所使用的技术 20 相关规范/文档: W3C HTML 规范大全 动态标准中的 HTML 元素 全局属性 W3C 的 HTML 5.2 HTML 属性参考资料 HTML 元素参考资料 HTML 语法 from the Living Standard 层叠样式表 规定了它的公共接口。 — 维基百科 相关规范/文档: 文档对象模型 (DOM) 的第三代事件规范 DOM 动态标准 W3C DOM4 JavaScript 编程语言 (ECMAScript 262) 前端开发者所使用的技术 21 JavaScript 是一个高级的、动态的、弱类型的解释性编程语言,被包含在 ECMAScript 的语言规范中。同 HTML 和 CSS 一样,它是万维网内容生产环节必不可少的三种技术 作文件传输(ftp),邮件 (mailto),数据库接入(JDBC),以及许多其他的应用。 — 维基百科 相关规范: 前端开发者所使用的技术 22 统一资源定位符 (URL) URL 动态标准 JavaScript 对象表示法 (JSON) Javascript 对象表示法是在异步的浏览器/服务器交流方式(AJAJ)中所使用的主流的 数据格式,并且基本上已经取代 XML(被 AJAX0 码力 | 164 页 | 6.43 MB | 1 年前3 前端开发者指南(2017)L 在语义上描述了一个网 站的结构,并且隐含了其表现形式,因此是一种标记语言,而非程序语言。 — 维基百科 前端开发者所使用的技术 20 相关规范/文档: W3C HTML 规范大全 动态标准中的 HTML 元素 全局属性 W3C 的 HTML 5.2 HTML 属性参考资料 HTML 元素参考资料 HTML 语法 from the Living Standard 层叠样式表 规定了它的公共接口。 — 维基百科 相关规范/文档: 文档对象模型 (DOM) 的第三代事件规范 DOM 动态标准 W3C DOM4 JavaScript 编程语言 (ECMAScript 262) 前端开发者所使用的技术 21 JavaScript 是一个高级的、动态的、弱类型的解释性编程语言,被包含在 ECMAScript 的语言规范中。同 HTML 和 CSS 一样,它是万维网内容生产环节必不可少的三种技术 作文件传输(ftp),邮件 (mailto),数据库接入(JDBC),以及许多其他的应用。 — 维基百科 相关规范: 前端开发者所使用的技术 22 统一资源定位符 (URL) URL 动态标准 JavaScript 对象表示法 (JSON) Javascript 对象表示法是在异步的浏览器/服务器交流方式(AJAJ)中所使用的主流的 数据格式,并且基本上已经取代 XML(被 AJAX0 码力 | 164 页 | 6.43 MB | 1 年前3
 廖雪峰JavaScript教程vaScript的诞生。 在上个世纪的1995年,当时的网景公司正凭借其Navigator浏览器成为Web时代开启时最著名的第一 代互联网公司。 由于网景公司希望能在静态HTML页面上添加一些动态效果,于是叫Brendan Eich这哥们在两周之内 设计出了JavaScript语言。你没看错,这哥们只用了10天时间。 为什么起名叫JavaScript?原因是当时Java语言非常红火,所以网景公司希望借Java的名气来推 反复赋值,而且可以是不同类型的变量,但是要注意只能用 var 申明一次,例如: 1. var a = 123; // a的值是整数123 2. a = 'ABC'; // a变为字符串 这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须 指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java是静态语言,赋值语句如下: 1. int a = 123; // a是整数类型变量,类型用int申明 a是整数类型变量,类型用int申明 2. a = "ABC"; // 错误:不能把字符串赋给整型变量 变量 2.2 数据类型和变量 - 20 - 本文档使用 书栈(BookStack.CN) 构建 和静态语言相比,动态语言更灵活,就是这个原因。 请不要把赋值语句的等号等同于数学的等号。比如下面的代码: 1. var x = 10; 2. x = x + 2; 如果从数学上理解 x = x + 2 那无论0 码力 | 264 页 | 2.81 MB | 10 月前3 廖雪峰JavaScript教程vaScript的诞生。 在上个世纪的1995年,当时的网景公司正凭借其Navigator浏览器成为Web时代开启时最著名的第一 代互联网公司。 由于网景公司希望能在静态HTML页面上添加一些动态效果,于是叫Brendan Eich这哥们在两周之内 设计出了JavaScript语言。你没看错,这哥们只用了10天时间。 为什么起名叫JavaScript?原因是当时Java语言非常红火,所以网景公司希望借Java的名气来推 反复赋值,而且可以是不同类型的变量,但是要注意只能用 var 申明一次,例如: 1. var a = 123; // a的值是整数123 2. a = 'ABC'; // a变为字符串 这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须 指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java是静态语言,赋值语句如下: 1. int a = 123; // a是整数类型变量,类型用int申明 a是整数类型变量,类型用int申明 2. a = "ABC"; // 错误:不能把字符串赋给整型变量 变量 2.2 数据类型和变量 - 20 - 本文档使用 书栈(BookStack.CN) 构建 和静态语言相比,动态语言更灵活,就是这个原因。 请不要把赋值语句的等号等同于数学的等号。比如下面的代码: 1. var x = 10; 2. x = x + 2; 如果从数学上理解 x = x + 2 那无论0 码力 | 264 页 | 2.81 MB | 10 月前3
共 18 条
- 1
- 2













