好学的Objective-C

好学的Objective-C pdf epub mobi txt 电子书 下载 2026

出版者:人民邮电出版社
作者:Jiva DeVoe
出品人:
页数:249
译者:林本杰
出版时间:2012-3
价格:55.00元
装帧:平装
isbn号码:9787115273581
丛书系列:
图书标签:
  • Objective-C
  • iOS
  • Apple
  • 程序设计
  • iPhone
  • 开发
  • 计算机科学
  • 编程基础-编程语言-Objective
  • Objective-C
  • 编程
  • 入门
  • 教程
  • 移动开发
  • 苹果开发
  • 面向对象
  • 语法学习
  • 实战案例
  • 开发工具
想要找书就要到 图书目录大全
立刻按 ctrl+D收藏本页
你会得到大惊喜!!

具体描述

《好学的Objective-C》共分为4部分。第一部分介绍了Objective—C的基础知识,包括Objective—C的基本语法、对象、内存管理等;第二部分深入挖掘Objective—C提供的一些功能,包括如何使用代码块,使用键值编码和键值观察,使用协议,扩展现有类的功能,编写宏以及处理错误和异常;第三部分介绍了Foundation框架及其相关知识;第四部分介绍了一些高级主题,包括多线程处理、Objective—C设计模式、利用NSCoder读写数据以及在其他平台上使用Objective—C等内容。

编程世界的奇幻旅程:深入探索 C++ 核心与现代范式 一部全面覆盖 C++ 语言的深度解析与实践指南,旨在带领读者跨越基础语法,直抵面向对象设计、性能优化以及并发编程的前沿领域。 --- 第一部分:奠基——C++ 语言的演进与基础重塑 本书伊始,我们将聚焦于 C++ 语言的底层逻辑和核心结构,摒弃市面上大量重复的基础教程,转而深入探讨其作为“带类的 C”的精髓所在。 第一章:C++ 的血脉与现代演进 本章将梳理 C++ 从 Bjarne Stroustrup 先生手中诞生至今的完整脉络,重点剖析 C++98、C++11、C++14、C++17 乃至 C++20 标准带来的革命性变化。我们将不再停留于“什么是指针”,而是深入探讨值语义与引用语义的底层差异,理解为什么现代 C++ 倾向于使用基于值的抽象。 内存布局与对齐: 深入探究栈、堆、静态存储区的物理分配机制,理解如何通过 `alignas` 关键字控制数据结构在内存中的布局,这对高性能计算至关重要。 零开销抽象的哲学: 详细解析 C++ 如何在提供高级抽象的同时,保持接近手写汇编的执行效率。探讨虚函数表(vtable)的构建与查找过程,以及虚继承带来的额外开销。 第二章:类型系统的雕琢——深入理解模板元编程 (TMP) 模板是 C++ 强大且复杂的基石。本章将彻底颠覆对模板“仅仅是代码生成器”的认知,将其视为一门图灵完备的编译期计算语言。 SFINAE 原理的实战应用: 不仅介绍 SFINAE(Substitution Failure Is Not An Error),更展示如何利用 `std::enable_if`、标签分派(Tag Dispatching)来构建高度灵活且类型安全的函数重载集合。 编译期多态与类型特征 (Type Traits): 学习如何使用 `type_traits` 库来查询和转换类型属性。实践构建自定义类型特征,用于在编译期进行复杂的类型检查和逻辑分支,例如区分左值和右值引用。 第三章:构造、析构与生命周期管理 对象的创建与销毁是资源管理的核心。本章将聚焦于 RAII(Resource Acquisition Is Initialization)的极致运用,以及构造函数中的陷阱与优化。 移动语义的革命: 深入剖析 C++11 引入的右值引用 (`&&`)、转移构造函数和转移赋值运算符。通过反汇编层面的分析,展示移动操作如何避免昂贵的深拷贝,尤其在处理大型容器和资源句柄时的性能提升。 `constexpr` 的威力: 探索 `constexpr` 函数和变量如何将原本在运行时执行的计算转移至编译期,实现极致的性能优化,并确保代码的确定性。 --- 第二部分:面向对象与泛型编程的深度实践 C++ 的魅力在于其多范式的融合。本部分将探讨如何利用其面向对象特性和泛型能力构建健壮、可维护的大型软件系统。 第四章:多态的深度挖掘——虚函数与纯虚函数的边界 本章超越简单的继承关系,探讨多态在设计模式中的应用及其潜在的性能考量。 静态多态 vs. 动态多态: 对比虚函数(运行时多态)和模板特化/重载(编译期多态)的优缺点,学习在不同场景下做出最优的技术选型。 接口设计与抽象: 实践如何使用抽象基类和 CRTP(Curiously Recurring Template Pattern,奇特递归模板模式)来实现编译期接口强制检查,构建无运行时开销的策略模式。 第五章:智能指针的艺术——所有权模型的建立 智能指针是现代 C++ 资源管理的核心。本章旨在理解每种智能指针背后的设计哲学和适用场景,避免滥用。 `unique_ptr` 与 `shared_ptr` 的精确控制: 详细解析 `shared_ptr` 的引用计数机制(包括控制块的结构和线程安全问题)。探讨何时应使用自定义删除器(Custom Deleters)来管理非标准资源(如文件句柄、Socket 连接)。 循环引用的规避: 深入讲解 `weak_ptr` 的作用,以及它如何用于打破对象间的引用闭环,确保内存的正确释放。 第六章:STL 容器与算法的底层洞察 标准模板库(STL)是 C++ 的宝藏。本章不只是展示如何使用 `std::vector` 或 `std::map`,而是探究它们的内部实现,以便写出高效的代码。 `std::vector` 的容量管理与重分配策略: 剖析其内存增长的对数级优化机制,以及如何通过 `reserve()` 提前预估,规避多次拷贝。 关联容器的取舍: 对比 `std::map` (基于红黑树) 和 `std::unordered_map` (基于哈希表) 的平均和最坏时间复杂度,重点分析哈希冲突的解决策略对性能的影响。 --- 第三部分:迈向高性能——并发、异步与系统编程 现代计算环境是多核的。本部分专注于 C++ 在多线程编程和低延迟系统设计中的应用。 第七章:并发编程的基石——线程、锁与内存模型 理解硬件层面的并行性是编写正确并发代码的前提。 C++ 内存模型(C++ Memory Model): 详细解析 `std::atomic` 的作用及其提供的可见性和排序保证。理解顺序一致性(Sequentially Consistent)与其他更弱的排序模型(如 Acquire/Release)之间的性能权衡。 同步原语的精细控制: 实践使用互斥量 (`std::mutex`)、条件变量 (`std::condition_variable`) 和屏障(Barriers)来协调线程间的执行流,并分析死锁的预防与检测。 第八章:现代异步编程范式 本章转向高层级的异步编程,以应对 I/O 密集型任务。 `std::future` 与异步任务: 掌握 `std::async`、`std::promise` 和 `std::packaged_task` 在构建简单异步链中的用法。 协程(Coroutines)的崛起 (C++20): 这是一个深入的章节,我们将解析协程的编译器“挂起”和“恢复”机制。通过 `co_await`, `co_yield`, `co_return`,理解如何以同步代码的风格编写高效的非阻塞 I/O 逻辑。 第九章:工具链、调试与性能剖析 再好的代码也需要可靠的构建和测试流程。 CMake 与模块化构建: 学习如何使用现代 CMake 组织大型 C++ 项目,管理外部依赖,并正确配置编译选项以启用特定标准的特性。 性能剖析 (Profiling): 介绍使用 Valgrind (Cachegrind, Callgrind) 或 Linux perf 等工具,定位代码热点和缓存未命中,将理论知识转化为可量化的性能提升。 --- 本书面向对象: 本书假定读者已经具备扎实的 C 语言基础,并对至少一种面向对象语言(如 Java 或 C)有初步了解。我们的目标读者是希望从“会用 C++”晋升到“精通 C++”的工程师、系统架构师以及对底层效率有极致追求的开发者。通过本书的学习,读者将能够自信地驾驭 C++ 语言的复杂性,编写出既安全又极速的下一代软件。

作者简介

Jiva DeVoe

拥 有25年的软件开发经验,是专门开发iPhone和Mac OS X 应用的Random Ideas软件公司的创始人,已有多个iPhone应用成为苹果广告中的推荐应用。此外,他还是Cocoa Touch for iPhone OS 3 Developer Reference的作者。他的博客地址为www.random-ideas.net。

目录信息

目 录
第一部分 Objective-C 简介
第1 章 Objective-C 简介  2
1.1 使用Xcode 进行开发  3
1.1.1 新建项目  3
1.1.2 项目文件  5
1.1.3 添加源码文件  6
1.1.4 主Xcode 窗口  7
1.2 理解编译过程  9
1.2.1 编码  9
1.2.2 源码、编译代码和可执行文件  11
1.2.3 查看应用包  11
1.2.4 编译设置  13
1.3 使用Xcode 静态分析器  17
1.4 Objective-C 运行时  20
1.5 小结  20
第2 章 基本语法  21
2.1 使用语句和表达式  23
2.1.1 声明变量  23
2.1.2 使用注释  25
2.1.3 标量类型  25
2.1.4 使用特殊变量修饰符  26
2.1.5 结构体  28
2.1.6 使用类型定义  29
2.1.7 使用enum   30
2.1.8 指针  31
2.1.9 使用运算符  35
2.1.10 三目运算符  37
2.2 使用函数  37
2.2.1 函数  37
2.2.2 定义函数  39
2.2.3 实现与接口  41
2.2.4 链接实现文件  42
2.3 控制程序流 43
2.3.1 使用条件语句  44
2.3.2 使用循环语句  47
2.4 活学活用  50
2.5 小结  53
第3 章 添加对象  54
3.1 对象  54
3.1.1 创建类  58
3.1.2 声明对象  64
3.1.3 调用对象方法  65
3.2 使用属性  66
3.2.1 状态和行为的区别  66
3.2.2 使用点标记  71
3.3 应用对象  72
3.3.1 创建员工对象  72
3.3.2 创建经理类  75
3.3.3 在HR 主函数中关联不同的类  77
3.4 小结  78
第4 章 Objective-C 内存管理  79
4.1 使用引用计数  79
4.1.1 内存管理规则  81
4.1.2 使用自动释放  82
4.1.3 对象内部的内存  85
4.2 使用垃圾回收  88
4.2.1 垃圾回收器  88
4.2.2 为项目配置垃圾回收  90
4.2.3 在垃圾回收项目中使用框架  91
4.3 关键的垃圾回收模式  92
4.3.1 管理有限的资源  92
4.3.2 编写支持垃圾回收的基础应用  94
4.3.3 处理nib 文件中的对象  94
4.3.4 强制垃圾回收  95
4.3.5 处理空指针和垃圾回收  95
4.3.6 使用垃圾回收的面向对象接口  96
4.4 项目使用的内存管理模型  97
4.5 小结  97
第二部分 更多特性
第5 章 代码块  100
5.1 了解代码块  100
5.1.1 声明代码块  100
5.1.2 使用代码块  102
5.2 了解重要的代码块作用域  103
5.2.1 管理代码块内存  104
5.2.2 通过typedef 提高代码块的可读性  105
5.3 在线程中使用代码块  106
5.3.1 使用GCD  106
5.3.2 使用GCD 在线程中调度代码块  106
5.4 通用的代码块设计模式  107
5.4.1 将代码块作为映射  107
5.4.2 在标准API 中使用代码块  108
5.5 在易并行任务中应用代码块  109
5.5.1 创建项目  109
5.5.2 在数组中使用代码块过滤素数  111
5.5.3 使用GCD  114
5.6 小结  116
第6 章 键值编码和键值观察  117
6.1 通过键值编码访问对象属性  117
6.1.1 键路径  119
6.1.2 编写符合KVC 标准的存取器方法  121
6.1.3 在数组中使用KVC  123
6.1.4 在结构体和标量中使用KVC  127
6.1.5 查找对象特性  128
6.2 观察对符合KVC 标准的值的修改  128
6.2.1 使用KVO  129
6.2.2 注册成为观察者  129
6.2.3 定义KVO 的回调  130
6.2.4 移除观察者  131
6.2.5 实现手动通知  132
6.2.6 使用KVO 的风险  133
6.3 应用键值观察  133
6.4 小结  136
第7 章 使用协议  137
7.1 优先使用组合而不是继承  137
7.1.1 了解为什么不需要(或不想要)多继承  139
7.1.2 理解协议如何解决问题  139
7.1.3 记录期望别人实现的接口  140
7.2 在对象中实现协议  141
7.2.1 声明协议  141
7.2.2 声明一个类实现了协议  143
7.2.3 声明一个必须实现协议的对象  143
7.2.4 正式协议和非正式协议  144
7.2.5 确定一个对象是否实现了可选方法  144
7.2.6 避免协议循环依赖  146
7.3 协议使用示例  146
7.4 小结  147
第8 章 扩展现有类  148
8.1 使用第三方框架和类  148
8.2 使用类别  149
8.2.1 声明类别  149
8.2.2 实现类别方法  150
8.2.3 在头文件中声明类别  150
8.2.4 使用类别  150
8.2.5 通过类别拆分功能  151
8.2.6 扩展类方法  151
8.2.7 分析类别的局限性  153
8.2.8 通过类别实现协议  153
8.2.9 了解在NSObject 上创建类别的风险  154
8.3 通过匿名类别扩展类  154
8.4 在现有类中关联变量  155
8.5 小结  157
第9 章 编写宏  158
9.1 回顾编译过程  158
9.2 定义宏  162
9.2.1 定义常量  163
9.2.2 通过编译传递常量  163
9.2.3 在宏中使用变量  165
9.2.4 字符串化  165
9.2.5 使用条件判断  167
9.2.6 使用内置宏  167
9.3 小结  167
第10 章 错误处理  168
10.1 错误分类  168
10.2 使用错误处理的不同机制  169
10.2.1 使用返回码  170
10.2.2 使用异常  171
10.2.3 使用NSError  176
10.3 小结  180
第三部分 使用 Foundation 框架
第11 章 了解框架之间如何配合工作  182
11.1 了解Foundation 框架  182
11.2 在项目中使用框架  184
11.2.1 添加框架  184
11.2.2 包含头文件  185
11.2.3 考虑垃圾回收  185
11.3 小结  185
第12 章 使用字符串  186
12.1 了解字符串声明语法  186
12.1.1 使用格式化字符串  188
12.1.2 使用其他NSString 方法  189
12.1.3 使用NSString 类别  190
12.2 小结  190
第13 章 使用集合  191
13.1 使用数组  191
13.1.1 使用字典  193
13.1.2 使用Set 集合  195
13.1.3 认识可变性  196
13.2 了解集合和内存管理  198
13.3 遍历  200
13.4 向元素发送消息  201
13.5 排序和过滤  201
13.6 在集合中使用代码块  203
13.7 小结  204
第14 章 使用NSValue、NSNumber和NSData  205
14.1 使用NSValue 和NSNumber  206
14.1.1 通过NSValue 包装任意数据类型  206
14.1.2 通过NSNumber 包装数字  207
14.1.3 通过NSDecimalNumber进行算术运算  207
14.2 使用NSData 和NSMutableData  208
14.2.1 创建NSData 对象  208
14.2.2 访问NSData 对象中的生数据  209
14.3 小结  209
第15 章 处理时间和日期  210
构建日期  211
使用时间间隔  211
日期比较  211
使用NSCalender  212
使用时区  213
15.1 使用NSDateFormatter  214
15.2 小结  214
第四部分 高级主题
第16 章 通过多个线程实现多处理  216
16.1 同步代码  217
16.1.1 使用锁  217
16.1.2 使用@synchronize 关键字  219
16.1.3 理解原子性  220
16.2 创建NSTread  221
16.2.1 创建线程  221
16.2.2 控制运行的线程  221
16.2.3 访问主线程  222
16.2.4 通过执行选择器跨线程  223
16.3 使用NSOperation 和NSOperationQueue  223
16.3.1 创建操作  224
16.3.2 将操作加入到队列  225
16.3.3 控制队列参数  225
16.3.4 使用不同的操作  226
16.4 小结  227
第17 章 Objective-C 设计模式  228
17.1 识别解决方案中的模式  228
17.2 用Objective-C 描述设计模式  229
17.2.1 使用单例  229
17.2.2 委托责任  233
17.2.3 将变化通知给多个对象  234
17.3 小结  237
第18 章 利用NSCoder 读写数据  238
在对象上实现NSCoding 协议  238
对象编码  238
基本类型编码  240
使用对象图  240
使用其他类型的数据  241
解码对象  242
18.1 使用NSArchiver 和NSUnarchiver  243
18.2 处理存档文件格式和遗留数据  244
18.3 小结  244
第19 章 在其他平台上使用Objective-C  245
19.1 使用GNUstep  245
19.1.1 使用Cocotron  247
19.1.2 使用其他开源库  248
19.2 展望未来  248
19.3 小结  249
· · · · · · (收起)

读后感

评分

没有直接读原版,想着看翻译的会快些,结果... 十年前,读老谭《C语言程序设计》的不解再度袭来,这是要命的节奏啊,像 ”Objective-C 中的属性可以帮助你公开代表对象状态的对象属性。“ 。 ”对象由状态和行为组成。状态包括构成对象的数据。在考虑对象状态时,大多数开发人员...  

评分

没有直接读原版,想着看翻译的会快些,结果... 十年前,读老谭《C语言程序设计》的不解再度袭来,这是要命的节奏啊,像 ”Objective-C 中的属性可以帮助你公开代表对象状态的对象属性。“ 。 ”对象由状态和行为组成。状态包括构成对象的数据。在考虑对象状态时,大多数开发人员...  

评分

翻译得有些晦涩,有些术语需要自己结合英文去理解,不过对初学又不想立刻阅读英文文档的人而言,可以作为一个了解和参考的教材。 读了几本Objective-C的翻译教材,发现不同的教材中对术语的叫法各有不同,这对学习或多或少有些影响。

评分

翻译得有些晦涩,有些术语需要自己结合英文去理解,不过对初学又不想立刻阅读英文文档的人而言,可以作为一个了解和参考的教材。 读了几本Objective-C的翻译教材,发现不同的教材中对术语的叫法各有不同,这对学习或多或少有些影响。

评分

没有直接读原版,想着看翻译的会快些,结果... 十年前,读老谭《C语言程序设计》的不解再度袭来,这是要命的节奏啊,像 ”Objective-C 中的属性可以帮助你公开代表对象状态的对象属性。“ 。 ”对象由状态和行为组成。状态包括构成对象的数据。在考虑对象状态时,大多数开发人员...  

用户评价

评分

我必须承认,作者在语言风格上的幽默感确实为枯燥的编程学习增添了一抹亮色。书中不时穿插着一些与生活相关的比喻,试图将复杂的指针概念或运行时(Runtime)的消息转发机制“拟人化”。比如,用“送信人”和“接收者”来比喻消息发送和处理的过程,初看之下很有趣。然而,这种风格在涉及到Foundation框架中那些非常底层、对精度要求极高的部分时,反而成了一种障碍。当读到关于`NSRunLoop`的解析时,我发现作者为了保持轻松的叙述基调,简化了RunLoop的五种运行模式(Source, Timer, Observers)的精确定义和切换条件。对于一个希望精确控制应用在后台运行逻辑、避免卡死或资源泄露的资深开发者来说,这种模糊的处理方式是无法接受的。我真正需要的,是RunLoop在处理`UITrackingRunLoopMode`和`Default`模式切换时的具体源码级别的解释,而不是一个“别担心,系统会搞定的”的宽慰。这本书更适合完全零基础的人建立兴趣,但对于进阶者,这种过度简化的叙事会让你错过关键的技术细节。

评分

关于网络编程的部分,本书主要讲解了如何使用`URLSession`进行标准的RESTful API调用,包括如何设置请求头、处理JSON数据的编解码(利用`JSONSerialization`或`Codable`)。代码示例清晰易懂,可以快速上手实现网络请求。然而,在安全性与高级特性方面,着墨甚少。例如,对于TLS/SSL证书固定(Certificate Pinning)的实现细节,书中只是简单地提了一下其重要性,但没有给出在iOS中实际部署和维护证书的步骤。更重要的是,在处理复杂的网络错误恢复机制方面,比如如何优雅地实现指数退避(Exponential Backoff)策略来应对瞬时服务器错误,或者如何利用`URLSessionConfiguration`的预取(Prefetch)功能来优化用户体验,这些高级话题都没有被充分展开。感觉作者将网络部分处理成了一个“发送请求并获取数据”的教学演示,而忽略了真实世界应用中对健壮性、安全性和性能优化近乎苛刻的要求。这本书让你能“打通”网络调用的任督二脉,但无法教你如何在大风大浪中“稳住船舵”。

评分

这本书在数据持久化方面的介绍,主要集中在Core Data的入门配置上。它详细演示了如何通过Xcode的Data Model编辑器创建实体、定义属性,并成功地执行基本的增删改查(CRUD)操作。对于那些刚刚接触iOS开发,需要一个可靠的本地数据库解决方案的读者来说,这部分内容是合格的。但是,我的期望是能看到更多关于Core Data的性能调优策略,尤其是在处理上万条记录的列表视图时可能遇到的内存峰值问题。书中几乎没有提及如何有效地使用`NSFetchedResultsController`进行增量更新,也没有深入探讨在多线程环境下,如何安全地管理`NSManagedObjectContext`的生命周期,比如是应该为每个线程创建一个Context,还是使用Parent-Child Context结构来优化数据写入的并发性。此外,对于更现代的持久化方案,如Realm或SQLite的直接封装,这本书完全没有涉及,这使得它的内容在当前技术栈的广度上显得有些局限。如果开发者正在构建一个企业级应用,这本书提供的持久化知识可能很快就会触及天花板。

评分

这本书的封面设计着实吸引人,那种带着一点复古未来感的配色,让人立刻联想到那些在苹果发布会上展示的最新技术。不过,我得说,当我真正翻开它,期待能在里面找到一些关于macOS底层框架,比如Grand Central Dispatch(GCD)或者Operation Queues的深入剖析时,却发现内容似乎更偏向于面向初学者的基础语法回顾。这无可厚非,毕竟市场对入门读物有持续的需求,但对于一个已经熟练掌握了基本语法结构,渴望钻研更深层次并发控制和内存管理的开发者来说,阅读体验就显得有些平淡了。书中对Block语法的讲解很详尽,每一步的示例代码都清晰地展示了变量捕获的细节,这一点值得称赞。然而,在探讨ARC(Automatic Reference Counting)的幕后工作机制,比如引用计数器是如何在底层实现精细化管理时,篇幅显得有些仓促。我希望看到更多关于dealloc方法调用时机、循环引用检测和解决策略的实战案例,而不是仅仅停留在理论模型的描述上。总而言之,它是一份优秀的“敲门砖”,但对于想要跨越“熟练工”迈向“架构师”的读者,可能还需要搭配其他更偏向系统源码分析的专业书籍。

评分

拿起这本书时,我正处在一个技术瓶颈期,希望能通过阅读来巩固我对UIKit生命周期管理的理解,特别是涉及到屏幕旋转、Push Notification处理以及复杂的View Controller转场动画时,系统是如何调度这些事件的。遗憾的是,这本书的大部分篇幅都集中在如何使用Storyboard和Interface Builder进行UI布局,以及如何使用`viewDidLoad`、`viewWillAppear`这些常用生命周期方法来设置初始状态。我对那些通过纯代码进行复杂视图层级构建的场景,尤其是涉及自定义Container View Controller的深入探讨几乎找不到。例如,当我们需要实现一个自定义的导航栈,并且要精确控制转场动画的插值函数和交互手势响应时,书中的示例显得过于简化,基本都是标准的`present`或`push`操作。此外,关于Core Animation的性能优化,比如图层扁平化、离屏渲染的规避策略,虽然提到了这些术语,但缺乏实际的性能分析工具(如Instruments)的截图和操作指导,让读者无法真正将理论知识与实际的性能调优工作联系起来。这本书更像是一本详尽的“手册”,而非一本能启发你解决疑难杂症的“工具箱”。

评分

断断续续一星期读完,反反复复的读,翻译的还可以,如果有c、java经验,比较好理解一点,而且作者可以说是按照自己的经验来展开的,理解好理解如果不实作,还是很容易忘,于是我就反反复复的回翻,推荐

评分

断断续续一星期读完,反反复复的读,翻译的还可以,如果有c、java经验,比较好理解一点,而且作者可以说是按照自己的经验来展开的,理解好理解如果不实作,还是很容易忘,于是我就反反复复的回翻,推荐

评分

学习objective-c第一本书,推荐;就是代码不全而且过时,我读书时候顺手补全了:https://github.com/greatabel/Objective-C-Developer-Reference-SourceCode

评分

部分内容已经过时了,书很薄,讲的很粗糙

评分

ios中算相当不错的好书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2026 book.wenda123.org All Rights Reserved. 图书目录大全 版权所有