Kotlin进阶实战
全新正版 极速发货
¥
69.24
6.4折
¥
109
全新
库存4件
作者沈哲、易庞宙
出版社清华大学出版社
ISBN9787302591207
出版时间2021-10
装帧平装
开本其他
定价109元
货号1202502987
上书时间2024-10-01
商品详情
- 品相描述:全新
- 商品描述
-
作者简介
"沈 哲,现就职于万物新生(爱回收),担任创新中心技术总监,负责AIoT 产品相关的研发工作。具有多年的服务端、移动端研发经验,熟悉函数响应式编程,对计算机视觉有一定的研究。曾负责过一款移动端深度链接的产品,日活数千万,该产品已于2019年初以千万级别的交易额卖给极光,后更名为极光魔链。出版著作《RxJava 2.x 实战》。
易庞宙,Android开源爱好者,RxTask库、全面屏适配库以及一些Android常用开源工具的开发者,CSDN博主。负责过搜床科技集团Android开发,例如xbed、酒店自助入住App开发等,目前就职于广州极飞科技股份有限公司,担任不错Android开发工程师。"
目录
目 录
章 认识Kotlin1
1.1 Kotlin简介1
1.1.1 Kotlin的历史1
1.1.2 Kotlin的特性1
1.2 Kotlin的发展2
1.2.1 实用主义2
1.2.2 生态圈3
1.2.3 逐渐Kotlin化的Java3
1.3 总结3
第2章 Kotlin的函数与类4
2.1 函数的基本概念4
2.1.1 函数的参数5
2.1.2 函数8
2.2 Kotlin的类(一)11
2.2.1 构造函数和初始化块12
2.2.2 属性15
2.2.3 抽象类16
2.2.4 嵌套类和内部类16
2.2.5 枚举类17
2.3 Kotlin的类(二)18
2.3.1 对象声明和对象表达式18
2.3.2 伴生对象19
2.3.3 数据类20
2.3.4 密封类23
2.4 总结24
第3章 Kotlin的函数式编程25
3.1 函数式编程与高阶函数25
3.1.1 函数式编程25
3.1.2 高阶函数25
3.2 Lambda表达式29
3.2.1 Java 8的Lambda29
3.2.2 Kotlin的Lambda语法31
3.2.3 简化Kotlin的Lambda表达式31
3.2.4 方法引用32
3.2.5 Kotlin支持SAM转换33
3.2.6 使用高阶函数的例子34
3.2.7 换个角度看 Lambda表达式35
3.3 集合、序列和Java中的流38
3.3.1 集合中的函数式API38
3.3.2 序列和流41
3.4 总结41
第4章 内联函数与扩展函数42
4.1 内联函数42
4.1.1 inline的使用42
4.1.2 禁用内联——noinline45
4.1.3 非局部返回以及crossinline的使用47
4.2 内联属性48
4.2.1 内联属性48
4.2.2 内联类48
4.3 扩展函数48
4.3.1 扩展函数的特性48
4.3.2 常用标准库的扩展函数51
4.4 扩展属性56
4.5 总结60
第5章 委托61
5.1 委托介绍61
5.1.1 静态代理61
5.1.2 动态代理62
5.2 Kotlin的委托模式和委托属性64
5.2.1 委托模式64
5.2.2 委托属性65
5.3 lateinit和by lazy69
5.4 总结73
第6章 泛型74
6.1 类型擦除74
6.1.1 Java泛型的优点74
6.1.2 Kotlin的泛型75
6.1.3 Java通过类型擦除支持泛型75
6.1.4 Kotlin如何获得声明的泛型类型77
6.2 型变80
6.2.1 类和类型80
6.2.2 型变80
6.3 泛型约束、类型投影与星号投影83
6.3.1 泛型约束83
6.3.2 类型投影84
6.3.3 星号投影84
6.3.4 泛型的应用85
6.4 总结86
第7章 元编程87
7.1 元编程87
7.1.1 元编程介绍87
7.1.2 元编程的分类87
7.1.3 根本没有什么元编程,从来只有编程而已88
7.2 Kotlin反射概述88
7.2.1 概述88
7.2.2 Kotlin反射API89
7.3 Java反射和Kotlin反射(上)90
7.3.1 类引用,获取Class对象90
7.3.2 构造函数引用,获取类的构造函数91
7.3.3 函数引用,获取类的成员函数92
7.3.4 属性引用,获取类的成员变量94
7.4 Java反射和Kotlin反射(下)96
7.4.1 获取类的其他信息96
7.4.2 Java反射与Kotlin反射的互操作性98
7.5 总结99
第8章 DSL的构建100
8.1 DSL介绍100
8.2 构建一个DSL的多种方式101
8.2.1 带接收者的函数类型101
8.2.2 带接收者的Lambda101
8.2.3 创建一个自己的DSL102
8.2.4 将扩展函数改成DSL的方式104
8.2.5 使用运算符重载实现DSL105
8.2.6 使用中缀表达式实现DSL106
8.2.7 Kotlin DSL的实际使用——封装路由框架的使用107
8.3 总结108
第9章 常用语法糖与设计模式110
9.1 运算符重载110
9.2 中缀表达式112
9.2.1 在扩展函数中使用中缀表达式113
9.2.2 在成员函数中使用中缀表达式113
9.3 作用域函数114
9.3.1 作用域函数的概念114
9.3.2 如何优雅地使用作用域函数114
9.4 Contract契约118
9.4.1 Contract的概念119
9.4.2 Contract的特性119
9.4.3 Contract源码解析120
9.4.4 小结122
9.5 在data class中使用MapStruct122
9.5.1 data class的copy()为浅拷贝122
9.5.2 MapStruct简介123
9.5.3 在Kotlin中使用MapStruct123
9.6 更好地使用设计模式126
9.6.1 单例模式126
9.6.2 builder模式127
9.6.3 观察者模式128
9.6.4 状态模式129
9.7 总结130
0章 跨平台开发131
10.1 跨平台的简单介绍131
10.1.1 跨平台开发的愿景131
10.1.2 跨平台开发当前的主流技术131
10.1.3 Kotlin与Flutter的对比132
10.2 利用Ktor-Client实现跨平台网络请求132
10.2.1 什么是Ktor132
10.2.2 Ktor-Client的使用132
10.3 总结142
1章 协程及其应用143
11.1 协程的基本概念143
11.1.1 协程的定义143
11.1.2 为何要使用协程143
11.1.3 Kotlin协程的基本概念148
11.2 Coroutine builders149
11.2.1 launch和async149
11.2.2 runBlocking152
11.3 挂起函数152
11.3.1 delay152
11.3.2 yield153
11.3.3 withContext154
11.3.4 coroutineScope156
11.4 协程的上下文和调度156
11.4.1 协程的调度156
11.4.2 父子协程158
11.4.3 多个CoroutineContext进行“+”操作160
11.4.4 CoroutineContext+Job161
11.5 协程的作用域 CoroutineScope162
11.5.1 尽量少用GlobalScope162
11.5.2 安全地使用CoroutineScope163
11.5.3 在Android中更好地使用Coroutines163
11.6 Channel机制164
11.6.1 生产者和消费者164
11.6.2 管道165
11.6.3 channel缓冲167
11.6.4 actor168
11.6.5 Select表达式169
11.7 总结170
2章 Flow的基本使用171
12.1 Flow的使用171
12.1.1 Kotlin Flow介绍171
12.1.2 Flow的基本使用方式171
12.1.3 Flow的生命周期176
12.2 Flow和RxJava177
12.2.1 Flow和Sequences177
12.2.2 Flow和RxJava178
12.3 Flow的异常处理182
12.3.1 catch操作符182
12.3.2 retry、retryWhen操作符184
12.4 Flow的线程操作185
12.4.1 更为简化的线程切换185
12.4.2 flowOn和RxJava的observeOn185
12.4.3 buffer实现并发操作186
12.4.4 并行操作188
12.5 Flow其他的操作符189
12.5.1 转换操作符189
12.5.2 限制大小的操作符189
12.5.3 终端操作符189
12.5.4 合并操作符190
12.5.5 扁平化操作符193
12.6 总结195
3章 RxJava的新特性及常用操作符198
13.1 RxJava入门198
13.1.1 RxJava入门理念198
13.1.2 RxJava的基础知识199
13.1.3 RxJava的生命周期201
13.2 RxJava 3新特性描述204
13.2.1 主要特性讲解204
13.2.2 与RxJava 2.x的区别204
13.2.3 RxJava 3新特性部分详述204
13.3 常用操作符讲解207
13.3.1 创建操作符207
13.3.2 转换操作符215
13.3.3 过滤操作符220
13.4 总结227
4章 RxJava的核心机制229
14.1 ObservableSource、Observable、Observer的同流合污229
14.2 恐怖的Function机制230
14.3 线程的决策者Scheduler231
14.3.1 Scheduler工作核心Worker232
14.3.2 Scheduler线程池核心RxThreadFactory232
14.3.3 异步实践例子233
14.3.4 并行的操作234
14.4 Observeable五兄弟的差异性235
14.4.1 Observable235
14.4.2 Flowable238
14.4.3 Single239
14.4.4 Completable240
14.4.5 Maybe240
14.5 背压策略241
14.5.1 MISSING242
14.5.2 ERROR242
14.5.3 BUFFER242
14.5.4 DROP243
14.5.5 LATEST243
14.6 总结243
5章 Jetpack244
15.1 Jetpack介绍244
15.1.1 客户端的架构迭代244
15.1.2 AAC的功能246
15.1.3 Android Jetpack247
15.2 Lifecycle249
15.2.1 Lifecycle介绍249
15.2.2 Lifecycle的使用250
15.2.3 Retrofit结合Lifecycle253
15.3 ViewModel254
15.3.1 ViewModel介绍254
15.3.2 ViewModel的使用255
15.3.3 使用Kotlin委托属性创建ViewModel256
15.3.4 AndroidViewModel257
15.3.5 ViewModel源码简单分析257
15.4 LiveData261
15.4.1 LiveData介绍261
15.4.2 LiveData的使用262
15.4.3 在ViewModel中使用LiveData263
15.4.4 LiveData实现Fragment之间的通信264
15.4.5 LiveData源码简单分析265
15.5 Room的用法267
15.5.1 Room的基本了解267
15.5.2 Room的配置与使用268
15.5.3 常用的SQL操作270
15.5.4 Room的兼容与升级271
15.5.5 小结275
15.6 Navigation用法详解276
15.6.1 Navigation的配置276
15.6.2 Navigation的基本使用277
15.6.3 Navigation原理解析284
15.6.4 小结287
15.7 总结287
6章 Android实战288
16.1 构建一个日志框架288
16.1.1 Android日志框架L288
16.1.2 如何开发一款类似L的日志框架289
16.1.3 记录Android日志更好的方式297
16.2 网络诊断工具297
16.3 使用Netty构建一个在Android上运行的Web服务器304
16.3.1 开发背景304
16.3.2 AndroidServer的特性304
16.3.3 AndroidServer的设计原理304
16.3.4 AndroidServer的使用310
16.4 实现协程版本的EventBus313
16.4.1 RxJava版本的EventBus313
16.4.2 Kotlin Coroutine版本的EventBus317
16.4.3 小结322
16.5 总结322
7章 响应式开发实战323
17.1 封装一个基于RxJava的任务框架RxTask323
17.1.1 RxTask奠基石的实现324
17.1.2 利用奠基石实现多种Task328
17.1.3 RxTask的改进,针对Java、Android平台进行适应335
17.2 基于Kotlin、RxJava实现的有限状态机339
17.2.1 状态机339
17.2.2 常用的状态机分类339
17.2.3 Kotlin开发的FSM340
17.2.4 应用351
17.3 Kotlin、RxJava以及传统的机器学习在手机质检上的应用353
17.3.1 业务背景353
17.3.2 设计思路353
17.3.3 代码实现以及踩过的坑355
17.3.4 后续的规划361
17.4 总结361
8章 服务端实战362
18.1 使用Ktor快速开发Web项目362
18.1.1 Ktor介绍362
18.1.2 Ktor服务端的使用362
18.1.3 例子365
18.2 使用WebFlux + R2DBC开发Web项目369
18.2.1 R2DBC介绍369
18.2.2 R2DBC的使用370
18.2.3 小结376
18.3 使用NetDiscovery开发网络爬虫376
18.3.1 NetDiscovery介绍376
18.3.2 DSL在爬虫框架中的使用379
18.3.3 Kotlin Coroutines在爬虫框架中的使用384
18.4 实现智能硬件的远程控制系统(上)388
18.4.1 业务背景及远程控制系统的功能388
18.4.2 远程控制系统服务端的设计388
18.4.3 远程控制系统的数据流向389
18.4.4 远程控制系统服务端的相关代码390
18.4.5 远程控制系统后续的规划397
18.5 实现智能硬件的远程控制系统(下)397
18.5.1 远程控制的客户端介绍397
18.5.2 Watcher的设计398
18.5.3 Watcher的核心代码399
18.5.4 小结408
18.6 总结408
内容摘要
本书详细介绍了Kotlin语言方方面面的特性,包括各种类型的函数,贯彻本书始终的Lambda表达式,有别于Java的委托、泛型,灵活、简洁的DSL,常用的语法糖,相比线程更加轻量级的协程,参考RxJava实现的Flow,等等。本书还提供了大量涉及移动端、服务端甚至桌面端的案例,这些案例都是编者使用Kotlin之后的实践和心得,同时包含很多编者封装的library,供读者参考、借鉴和使用。
本书适合有一定Kotlin语法基础的读者使用,尤其适合移动端和服务端的开发人员使用,也可以用作大专院校和培训机构的教学参考书。
主编推荐
"本书几乎涵盖了Kotlin所有的特性,包括函数特性、面向对象特性、元编程、DSL、跨平台开发、协程、Flow、RxJava、Jetpack等,内容很好丰富。
本书还介绍了使用Kotlin开发的多个实例,如移动端实战、服务端实战、响应式开发实战等,这些例子是对本书知识的综合运用,对使用Kotlin进行开发的读者具备较大的参考价值。
本书是编者系统学习Kotlin和多年实战经验的积累和总结,通过很好简易的代码讲解Kotlin语言的各种特性,代码实例不会涉及过于抽象的业务场景,但会通过具体代码实例对Kotlin语言背后的设计思想和原理进行详细分析,力图使读者通过实际操作快速上手和深入理解Kotlin语言的相关知识。
本书面向所有希望从事 Android 开发和服务端开发的IT从业人员,希望读者通过阅读本书,使用Kotlin开发应用程序的技能更上一层楼。"
— 没有更多了 —
以下为对购买帮助不大的评价