网站首页  软件下载  游戏下载  翻译软件  电子书下载  电影下载  电视剧下载  教程攻略

请输入您要查询的图书:

 

书名 Kotlin进阶实战
分类 教育考试-考试-计算机类
作者 沈哲、易庞宙
出版社 清华大学出版社
下载
简介
编辑推荐
"本书几乎涵盖了Kotlin所有的特性,包括函数特性、面向对象特性、元编程、DSL、跨平台开发、协程、Flow、RxJava、Jetpack等,内容很好丰富。
本书还介绍了使用Kotlin开发的多个实例,如移动端实战、服务端实战、响应式开发实战等,这些例子是对本书知识的综合运用,对使用Kotlin进行开发的读者具备较大的参考价值。
本书是编者系统学习Kotlin和多年实战经验的积累和总结,通过很好简易的代码讲解Kotlin语言的各种特性,代码实例不会涉及过于抽象的业务场景,但会通过具体代码实例对Kotlin语言背后的设计思想和原理进行详细分析,力图使读者通过实际操作快速上手和深入理解Kotlin语言的相关知识。
本书面向所有希望从事 Android 开发和服务端开发的IT从业人员,希望读者通过阅读本书,使用Kotlin开发应用程序的技能更上一层楼。"
内容推荐
本书详细介绍了Kotlin语言方方面面的特性,包括各种类型的函数,贯彻本书始终的Lambda表达式,有别于Java的委托、泛型,灵活、简洁的DSL,常用的语法糖,相比线程更加轻量级的协程,参考RxJava实现的Flow,等等。本书还提供了大量涉及移动端、服务端甚至桌面端的案例,这些案例都是编者使用Kotlin之后的实践和心得,同时包含很多编者封装的library,供读者参考、借鉴和使用。
本书适合有一定Kotlin语法基础的读者使用,尤其适合移动端和服务端的开发人员使用,也可以用作大专院校和培训机构的教学参考书。
目录
目 录
章 认识Kotlin\t1
1.1 Kotlin简介\t1
1.1.1 Kotlin的历史\t1
1.1.2 Kotlin的特性\t1
1.2 Kotlin的发展\t2
1.2.1 实用主义\t2
1.2.2 生态圈\t3
1.2.3 逐渐Kotlin化的Java\t3
1.3 总结\t3
第2章 Kotlin的函数与类\t4
2.1 函数的基本概念\t4
2.1.1 函数的参数\t5
2.1.2 函数\t8
2.2 Kotlin的类(一)\t11
2.2.1 构造函数和初始化块\t12
2.2.2 属性\t15
2.2.3 抽象类\t16
2.2.4 嵌套类和内部类\t16
2.2.5 枚举类\t17
2.3 Kotlin的类(二)\t18
2.3.1 对象声明和对象表达式\t18
2.3.2 伴生对象\t19
2.3.3 数据类\t20
2.3.4 密封类\t23
2.4 总结\t24
第3章 Kotlin的函数式编程\t25
3.1 函数式编程与高阶函数\t25
3.1.1 函数式编程\t25
3.1.2 高阶函数\t25
3.2 Lambda表达式\t29
3.2.1 Java 8的Lambda\t29
3.2.2 Kotlin的Lambda语法\t31
3.2.3 简化Kotlin的Lambda表达式\t31
3.2.4 方法引用\t32
3.2.5 Kotlin支持SAM转换\t33
3.2.6 使用高阶函数的例子\t34
3.2.7 换个角度看 Lambda表达式\t35
3.3 集合、序列和Java中的流\t38
3.3.1 集合中的函数式API\t38
3.3.2 序列和流\t41
3.4 总结\t41
第4章 内联函数与扩展函数\t42
4.1 内联函数\t42
4.1.1 inline的使用\t42
4.1.2 禁用内联——noinline\t45
4.1.3 非局部返回以及crossinline的使用\t47
4.2 内联属性\t48
4.2.1 内联属性\t48
4.2.2 内联类\t48
4.3 扩展函数\t48
4.3.1 扩展函数的特性\t48
4.3.2 常用标准库的扩展函数\t51
4.4 扩展属性\t56
4.5 总结\t60
第5章 委托\t61
5.1 委托介绍\t61
5.1.1 静态代理\t61
5.1.2 动态代理\t62
5.2 Kotlin的委托模式和委托属性\t64
5.2.1 委托模式\t64
5.2.2 委托属性\t65
5.3 lateinit和by lazy\t69
5.4 总结\t73
第6章 泛型\t74
6.1 类型擦除\t74
6.1.1 Java泛型的优点\t74
6.1.2 Kotlin的泛型\t75
6.1.3 Java通过类型擦除支持泛型\t75
6.1.4 Kotlin如何获得声明的泛型类型\t77
6.2 型变\t80
6.2.1 类和类型\t80
6.2.2 型变\t80
6.3 泛型约束、类型投影与星号投影\t83
6.3.1 泛型约束\t83
6.3.2 类型投影\t84
6.3.3 星号投影\t84
6.3.4 泛型的应用\t85
6.4 总结\t86
第7章 元编程\t87
7.1 元编程\t87
7.1.1 元编程介绍\t87
7.1.2 元编程的分类\t87
7.1.3 根本没有什么元编程,从来只有编程而已\t88
7.2 Kotlin反射概述\t88
7.2.1 概述\t88
7.2.2 Kotlin反射API\t89
7.3 Java反射和Kotlin反射(上)\t90
7.3.1 类引用,获取Class对象\t90
7.3.2 构造函数引用,获取类的构造函数\t91
7.3.3 函数引用,获取类的成员函数\t92
7.3.4 属性引用,获取类的成员变量\t94
7.4 Java反射和Kotlin反射(下)\t96
7.4.1 获取类的其他信息\t96
7.4.2 Java反射与Kotlin反射的互操作性\t98
7.5 总结\t99
第8章 DSL的构建\t100
8.1 DSL介绍\t100
8.2 构建一个DSL的多种方式\t101
8.2.1 带接收者的函数类型\t101
8.2.2 带接收者的Lambda\t101
8.2.3 创建一个自己的DSL\t102
8.2.4 将扩展函数改成DSL的方式\t104
8.2.5 使用运算符重载实现DSL\t105
8.2.6 使用中缀表达式实现DSL\t106
8.2.7 Kotlin DSL的实际使用——封装路由框架的使用\t107
8.3 总结\t108
第9章 常用语法糖与设计模式\t110
9.1 运算符重载\t110
9.2 中缀表达式\t112
9.2.1 在扩展函数中使用中缀表达式\t113
9.2.2 在成员函数中使用中缀表达式\t113
9.3 作用域函数\t114
9.3.1 作用域函数的概念\t114
9.3.2 如何优雅地使用作用域函数\t114
9.4 Contract契约\t118
9.4.1 Contract的概念\t119
9.4.2 Contract的特性\t119
9.4.3 Contract源码解析\t120
9.4.4 小结\t122
9.5 在data class中使用MapStruct\t122
9.5.1 data class的copy()为浅拷贝\t122
9.5.2 MapStruct简介\t123
9.5.3 在Kotlin中使用MapStruct\t123
9.6 更好地使用设计模式\t126
9.6.1 单例模式\t126
9.6.2 builder模式\t127
9.6.3 观察者模式\t128
9.6.4 状态模式\t129
9.7 总结\t130
0章 跨平台开发\t131
10.1 跨平台的简单介绍\t131
10.1.1 跨平台开发的愿景\t131
10.1.2 跨平台开发当前的主流技术\t131
10.1.3 Kotlin与Flutter的对比\t132
10.2 利用Ktor-Client实现跨平台网络请求\t132
10.2.1 什么是Ktor\t132
10.2.2 Ktor-Client的使用\t132
10.3 总结\t142
1章 协程及其应用\t143
11.1 协程的基本概念\t143
11.1.1 协程的定义\t143
11.1.2 为何要使用协程\t143
11.1.3 Kotlin协程的基本概念\t148
11.2 Coroutine builders\t149
11.2.1 launch和async\t149
11.2.2 runBlocking\t152
11.3 挂起函数\t152
11.3.1 delay\t152
11.3.2 yield\t153
11.3.3 withContext\t154
11.3.4 coroutineScope\t156
11.4 协程的上下文和调度\t156
11.4.1 协程的调度\t156
11.4.2 父子协程\t158
11.4.3 多个CoroutineContext进行“+”操作\t160
11.4.4 CoroutineContext+Job\t161
11.5 协程的作用域 CoroutineScope\t162
11.5.1 尽量少用GlobalScope\t162
11.5.2 安全地使用CoroutineScope\t163
11.5.3 在Android中更好地使用Coroutines\t163
11.6 Channel机制\t164
11.6.1 生产者和消费者\t164
11.6.2 管道\t165
11.6.3 channel缓冲\t167
11.6.4 actor\t168
11.6.5 Select表达式\t169
11.7 总结\t170
2章 Flow的基本使用\t171
12.1 Flow的使用\t171
12.1.1 Kotlin Flow介绍\t171
12.1.2 Flow的基本使用方式\t171
12.1.3 Flow的生命周期\t176
12.2 Flow和RxJava\t177
12.2.1 Flow和Sequences\t177
12.2.2 Flow和RxJava\t178
12.3 Flow的异常处理\t182
12.3.1 catch操作符\t182
12.3.2 retry、retryWhen操作符\t184
12.4 Flow的线程操作\t185
12.4.1 更为简化的线程切换\t185
12.4.2 flowOn和RxJava的observeOn\t185
12.4.3 buffer实现并发操作\t186
12.4.4 并行操作\t188
12.5 Flow其他的操作符\t189
12.5.1 转换操作符\t189
12.5.2 限制大小的操作符\t189
12.5.3 终端操作符\t189
12.5.4 合并操作符\t190
12.5.5 扁平化操作符\t193
12.6 总结\t195
3章 RxJava的新特性及常用操作符\t198
13.1 RxJava入门\t198
13.1.1 RxJava入门理念\t198
13.1.2 RxJava的基础知识\t199
13.1.3 RxJava的生命周期\t201
13.2 RxJava 3新特性描述\t204
13.2.1 主要特性讲解\t204
13.2.2 与RxJava 2.x的区别\t204
13.2.3 RxJava 3新特性部分详述\t204
13.3 常用操作符讲解\t207
13.3.1 创建操作符\t207
13.3.2 转换操作符\t215
13.3.3 过滤操作符\t220
13.4 总结\t227
4章 RxJava的核心机制\t229
14.1 ObservableSource、Observable、Observer的同流合污\t229
14.2 恐怖的Function机制\t230
14.3 线程的决策者Scheduler\t231
14.3.1 Scheduler工作核心Worker\t232
14.3.2 Scheduler线程池核心RxThreadFactory\t232
14.3.3 异步实践例子\t233
14.3.4 并行的操作\t234
14.4 Observeable五兄弟的差异性\t235
14.4.1 Observable\t235
14.4.2 Flowable\t238
14.4.3 Single\t239
14.4.4 Completable\t240
14.4.5 Maybe\t240
14.5 背压策略\t241
14.5.1 MISSING\t242
14.5.2 ERROR\t242
14.5.3 BUFFER\t242
14.5.4 DROP\t243
14.5.5 LATEST\t243
14.6 总结\t243
5章 Jetpack\t244
15.1 Jetpack介绍\t244
15.1.1 客户端的架构迭代\t244
15.1.2 AAC的功能\t246
15.1.3 Android Jetpack\t247
15.2 Lifecycle\t249
15.2.1 Lifecycle介绍\t249
15.2.2 Lifecycle的使用\t250
15.2.3 Retrofit结合Lifecycle\t253
15.3 ViewModel\t254
15.3.1 ViewModel介绍\t254
15.3.2 ViewModel的使用\t255
15.3.3 使用Kotlin委托属性创建ViewModel\t256
15.3.4 AndroidViewModel\t257
15.3.5 ViewModel源码简单分析\t257
15.4 LiveData\t261
15.4.1 LiveData介绍\t261
15.4.2 LiveData的使用\t262
15.4.3 在ViewModel中使用LiveData\t263
15.4.4 LiveData实现Fragment之间的通信\t264
15.4.5 LiveData源码简单分析\t265
15.5 Room的用法\t267
15.5.1 Room的基本了解\t267
15.5.2 Room的配置与使用\t268
15.5.3 常用的SQL操作\t270
15.5.4 Room的兼容与升级\t271
15.5.5 小结\t275
15.6 Navigation用法详解\t276
15.6.1 Navigation的配置\t276
15.6.2 Navigation的基本使用\t277
15.6.3 Navigation原理解析\t284
15.6.4 小结\t287
15.7 总结\t287
6章 Android实战\t288
16.1 构建一个日志框架\t288
16.1.1 Android日志框架L\t288
16.1.2 如何开发一款类似L的日志框架\t289
16.1.3 记录Android日志更好的方式\t297
16.2 网络诊断工具\t297
16.3 使用Netty构建一个在Android上运行的Web服务器\t304
16.3.1 开发背景\t304
16.3.2 AndroidServer的特性\t304
16.3.3 AndroidServer的设计原理\t304
16.3.4 AndroidServer的使用\t310
16.4 实现协程版本的EventBus\t313
16.4.1 RxJava版本的EventBus\t313
16.4.2 Kotlin Coroutine版本的EventBus\t317
16.4.3 小结\t322
16.5 总结\t322
7章 响应式开发实战\t323
17.1 封装一个基于RxJava的任务框架RxTask\t323
17.1.1 RxTask奠基石的实现\t324
17.1.2 利用奠基石实现多种Task\t328
17.1.3 RxTask的改进,针对Java、Android平台进行适应\t335
17.2 基于Kotlin、RxJava实现的有限状态机\t339
17.2.1 状态机\t339
17.2.2 常用的状态机分类\t339
17.2.3 Kotlin开发的FSM\t340
17.2.4 应用\t351
17.3 Kotlin、RxJava以及传统的机器学习在手机质检上的应用\t353
17.3.1 业务背景\t353
17.3.2 设计思路\t353
17.3.3 代码实现以及踩过的坑\t355
17.3.4 后续的规划\t361
17.4 总结\t361
8章 服务端实战\t362
18.1 使用Ktor快速开发Web项目\t362
18.1.1 Ktor介绍\t362
18.1.2 Ktor服务端的使用\t362
18.1.3 例子\t365
18.2 使用WebFlux + R2DBC开发Web项目\t369
18.2.1 R2DBC介绍\t369
18.2.2 R2DBC的使用\t370
18.2.3 小结\t376
18.3 使用NetDiscovery开发网络爬虫\t376
18.3.1 NetDiscovery介绍\t376
18.3.2 DSL在爬虫框架中的使用\t379
18.3.3 Kotlin Coroutines在爬虫框架中的使用\t384
18.4 实现智能硬件的远程控制系统(上)\t388
18.4.1 业务背景及远程控制系统的功能\t388
18.4.2 远程控制系统服务端的设计\t388
18.4.3 远程控制系统的数据流向\t389
18.4.4 远程控制系统服务端的相关代码\t390
18.4.5 远程控制系统后续的规划\t397
18.5 实现智能硬件的远程控制系统(下)\t397
18.5.1 远程控制的客户端介绍\t397
18.5.2 Watcher的设计\t398
18.5.3 Watcher的核心代码\t399
18.5.4 小结\t408
18.6 总结\t408
随便看

 

霍普软件下载网电子书栏目提供海量电子书在线免费阅读及下载。

 

Copyright © 2002-2024 101bt.net All Rights Reserved
更新时间:2025/1/19 7:15:52