Kotlin进阶实战

Kotlin进阶实战

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

因版权原因待上架

编辑推荐

本书几乎涵盖了Kotlin所有的特性,包括函数特性、面向对象特性、元编程、DSL、跨平台开发、协程、Flow、RxJava、Jetpack等,还介绍了使用Kotlin开发的多个实例,内容非常丰富。

内容简介

本书详细介绍了Kotlin语言方方面面的特性,包括各种类型的函数,贯彻本书始终的Lambda表达式,有别于Java的委托、泛型,灵活、简洁的DSL,常用的语法糖,相比线程更加轻量级的协程,参考RxJava实现的Flow,等等。

本书还提供了大量涉及移动端、服务端甚至桌面端的案例,这些案例都是编者使用Kotlin之后的实践和心得,同时包含很多编者封装的library,供读者参考、借鉴和使用。

本书适合有一定Kotlin语法基础的读者使用,尤其适合移动端和服务端的开发人员使用,也可以用作大专院校和培训机构的教学参考

作者简介

编著者沈哲,具有多年的服务端、移动端研发经验,熟悉函数响应式编程,对计算机视觉有一定的研究。曾负责过一款移动端深度链接的产品,日活数千万,该产品已于2019年初以千万级别的交易额卖给极光,后更名为极光魔链。出版著作《RxJava 2.x 实战》。

章节目录

版权信息

作者简介

内容简介

前言

第1章 认识Kotlin

1.1 Kotlin简介

1.1.1 Kotlin的历史

1.1.2 Kotlin的特性

1.2 Kotlin的发展

1.2.1 实用主义

1.2.2 生态圈

1.2.3 逐渐Kotlin化的Java

1.3 总结

第2章 Kotlin的函数与类

2.1 函数的基本概念

2.1.1 函数的参数

2.1.2 函数

2.2 Kotlin的类(一)

2.2.1 构造函数和初始化块

2.2.2 属性

2.2.3 抽象类

2.2.4 嵌套类和内部类

2.2.5 枚举类

2.3 Kotlin的类(二)

2.3.1 对象声明和对象表达式

2.3.2 伴生对象

2.3.3 数据类

2.3.4 密封类

2.4 总结

第3章 Kotlin的函数式编程

3.1 函数式编程与高阶函数

3.1.1 函数式编程

3.1.2 高阶函数

3.2 Lambda表达式

3.2.1 Java 8的Lambda

3.2.2 Kotlin的Lambda语法

3.2.3 简化Kotlin的Lambda表达式

3.2.4 方法引用

3.2.5 Kotlin支持SAM转换

3.2.6 使用高阶函数的例子

3.2.7 换个角度看Lambda表达式

3.3 集合、序列和Java中的流

3.3.1 集合中的函数式API

3.3.2 序列和流

3.4 总结

第4章 内联函数与扩展函数

4.1 内联函数

4.1.1 inline的使用

4.1.2 禁用内联——noinline

4.1.3 非局部返回以及crossinline的使用

4.2 内联属性

4.2.1 内联属性

4.2.2 内联类

4.3 扩展函数

4.3.1 扩展函数的特性

4.3.2 常用标准库的扩展函数

4.4 扩展属性

4.5 总结

第5章 委托

5.1 委托介绍

5.1.1 静态代理

5.1.2 动态代理

5.2 Kotlin的委托模式和委托属性

5.2.1 委托模式

5.2.2 委托属性

5.3 lateinit和by lazy

5.4 总结

第6章 泛型

6.1 类型擦除

6.1.1 Java泛型的优点

6.1.2 Kotlin的泛型

6.1.3 Java通过类型擦除支持泛型

6.1.4 Kotlin如何获得声明的泛型类型

6.2 型变

6.2.1 类和类型

6.2.2 型变

6.3 泛型约束、类型投影与星号投影

6.3.1 泛型约束

6.3.2 类型投影

6.3.3 星号投影

6.3.4 泛型的应用

6.4 总结

第7章 元编程

7.1 元编程

7.1.1 元编程介绍

7.1.2 元编程的分类

7.1.3 根本没有什么元编程,从来只有编程而已

7.2 Kotlin反射概述

7.2.1 概述

7.2.2 Kotlin反射API

7.3 Java反射和Kotlin反射(上)

7.3.1 类引用,获取Class对象

7.3.2 构造函数引用,获取类的构造函数

7.3.3 函数引用,获取类的成员函数

7.3.4 属性引用,获取类的成员变量

7.4 Java反射和Kotlin反射(下)

7.4.1 获取类的其他信息

7.4.2 Java反射与Kotlin反射的互操作性

7.5 总结

第8章 DSL的构建

8.1 DSL介绍

8.2 构建一个DSL的多种方式

8.2.1 带接收者的函数类型

8.2.2 带接收者的Lambda

8.2.3 创建一个自己的DSL

8.2.4 将扩展函数改成DSL的方式

8.2.5 使用运算符重载实现DSL

8.2.6 使用中缀表达式实现DSL

8.2.7 Kotlin DSL的实际使用——封装路由框架的使用

8.3 总结

第9章 常用语法糖与设计模式

9.1 运算符重载

9.2 中缀表达式

9.2.1 在扩展函数中使用中缀表达式

9.2.2 在成员函数中使用中缀表达式

9.3 作用域函数

9.3.1 作用域函数的概念

9.3.2 如何优雅地使用作用域函数

9.4 Contract契约

9.4.1 Contract的概念

9.4.2 Contract的特性

9.4.3 Contract源码解析

9.4.4 小结

9.5 在data class中使用MapStruct

9.5.1 data class的copy()为浅拷贝

9.5.2 MapStruct简介

9.5.3 在Kotlin中使用MapStruct

9.6 更好地使用设计模式

9.6.1 单例模式

9.6.2 builder模式

9.6.3 观察者模式

9.6.4 状态模式

9.7 总结

第10章 跨平台开发

10.1 跨平台的简单介绍

10.1.1 跨平台开发的愿景

10.1.2 跨平台开发当前的主流技术

10.1.3 Kotlin与Flutter的对比

10.2 利用Ktor-Client实现跨平台网络请求

10.2.1 什么是Ktor

10.2.2 Ktor-Client的使用

10.3 总结

第11章 协程及其应用

11.1 协程的基本概念

11.1.1 协程的定义

11.1.2 为何要使用协程

11.1.3 Kotlin协程的基本概念

11.2 Coroutine builders

11.2.1 launch和async

11.2.2 runBlocking

11.3 挂起函数

11.3.1 delay

11.3.2 yield

11.3.3 withContext

11.3.4 coroutineScope

11.4 协程的上下文和调度

11.4.1 协程的调度

11.4.2 父子协程

11.4.3 多个CoroutineContext进行“+”操作

11.4.4 CoroutineContext+Job

11.5 协程的作用域CoroutineScope

11.5.1 尽量少用GlobalScope

11.5.2 安全地使用CoroutineScope

11.5.3 在Android中更好地使用Coroutines

11.6 Channel机制

11.6.1 生产者和消费者

11.6.2 管道

11.6.3 channel缓冲

11.6.4 actor

11.6.5 Select表达式

11.7 总结

第12章 Flow的基本使用

12.1 Flow的使用

12.1.1 Kotlin Flow介绍

12.1.2 Flow的基本使用方式

12.1.3 Flow的生命周期

12.2 Flow和RxJava

12.2.1 Flow和Sequences

12.2.2 Flow和RxJava

12.3 Flow的异常处理

12.3.1 catch操作符

12.3.2 retry、retryWhen操作符

12.4 Flow的线程操作

12.4.1 更为简化的线程切换

12.4.2 flowOn和RxJava的observeOn

12.4.3 buffer实现并发操作

12.4.4 并行操作

12.5 Flow其他的操作符

12.5.1 转换操作符

12.5.2 限制大小的操作符

12.5.3 终端操作符

12.5.4 合并操作符

12.5.5 扁平化操作符

12.6 总结

第13章 RxJava的新特性及常用操作符

13.1 RxJava入门

13.1.1 RxJava入门理念

13.1.2 RxJava的基础知识

13.1.3 RxJava的生命周期

13.2 RxJava 3新特性描述

13.2.1 主要特性讲解

13.2.2 与RxJava 2.x的区别

13.2.3 RxJava 3新特性部分详述

13.3 常用操作符讲解

13.3.1 创建操作符

13.3.2 转换操作符

13.3.3 过滤操作符

13.4 总结

第14章 RxJava的核心机制

14.1 ObservableSource、Observable、Obschmerver的同流合污

14.2 恐怖的Function机制

14.3 线程的决策者Scheduler

14.3.1 Scheduler工作核心Worker

14.3.2 Scheduler线程池核心RxThreadFactory

14.3.3 异步实践例子

14.3.4 并行的操作

14.4 Observeable五兄弟的差异性

14.4.1 Observable

14.4.2 Flowable

14.4.3 Single

14.4.4 Completable

14.4.5 Maybe

14.5 背压策略

14.5.1 MISSING

14.5.2 ERROR

14.5.3 BUFFER

14.5.4 DROP

14.5.5 LATEST

14.6 总结

第15章 Jetpack

15.1 Jetpack介绍

15.1.1 客户端的架构迭代

15.1.2 AAC的功能

15.1.3 Android Jetpack

15.2 Lifecycle

15.2.1 Lifecycle介绍

15.2.2 Lifecycle的使用

15.2.3 Retrofit结合Lifecycle

15.3 ViewModel

15.3.1 ViewModel介绍

15.3.2 ViewModel的使用

15.3.3 使用Kotlin委托属性创建ViewModel

15.3.4 AndroidViewModel

15.3.5 ViewModel源码简单分析

15.4 LiveData

15.4.1 LiveData介绍

15.4.2 LiveData的使用

15.4.3 在ViewModel中使用LiveData

15.4.4 LiveData实现Fragment之间的通信

15.4.5 LiveData源码简单分析

15.5 Room的用法

15.5.1 Room的基本了解

15.5.2 Room的配置与使用

15.5.3 常用的SQL操作

15.5.4 Room的兼容与升级

15.5.5 小结

15.6 Navigation用法详解

15.6.1 Navigation的配置

15.6.2 Navigation的基本使用

15.6.3 Navigation原理解析

15.6.4 小结

15.7 总结

第16章 Android实战

16.1 构建一个日志框架

16.1.1 Android日志框架L

16.1.2 如何开发一款类似L的日志框架

16.1.3 记录Android日志更好的方式

16.2 网络诊断工具

16.3 使用Netty构建一个在Android上运行的Web服务器

16.3.1 开发背景

16.3.2 AndroidServer的特性

16.3.3 AndroidServer的设计原理

16.3.4 AndroidServer的使用

16.4 实现协程版本的EventBus

16.4.1 RxJava版本的EventBus

16.4.2 Kotlin Coroutine版本的EventBus

16.4.3 小结

16.5 总结

第17章 响应式开发实战

17.1 封装一个基于RxJava的任务框架RxTask

17.1.1 RxTask奠基石的实现

17.1.2 利用奠基石实现多种Task

17.1.3 RxTask的改进,针对Java、Android平台进行适应

17.2 基于Kotlin、RxJava实现的有限状态机

17.2.1 状态机

17.2.2 常用的状态机分类

17.2.3 Kotlin开发的FSM

17.2.4 应用

17.3 Kotlin、RxJava以及传统的机器学习在手机质检上的应用

17.3.1 业务背景

17.3.2 设计思路

17.3.3 代码实现以及踩过的坑

17.3.4 后续的规划

17.4 总结

第18章 服务端实战

18.1 使用Ktor快速开发Web项目

18.1.1 Ktor介绍

18.1.2 Ktor服务端的使用

18.1.3 例子

18.2 使用WebFlux + R2DBC开发Web项目

18.2.1 R2DBC介绍

18.2.2 R2DBC的使用

18.2.3 小结

18.3 使用NetDiscovery开发网络爬虫

18.3.1 NetDiscovery介绍

18.3.2 DSL在爬虫框架中的使用

18.3.3 Kotlin Coroutines在爬虫框架中的使用

18.4 实现智能硬件的远程控制系统(上)

18.4.1 业务背景及远程控制系统的功能

18.4.2 远程控制系统服务端的设计

18.4.3 远程控制系统的数据流向

18.4.4 远程控制系统服务端的相关代码

18.4.5 远程控制系统后续的规划

18.5 实现智能硬件的远程控制系统(下)

18.5.1 远程控制的客户端介绍

18.5.2 Watcher的设计

18.5.3 Watcher的核心代码

18.5.4 小结

18.6 总结

Kotlin进阶实战是2021年由清华大学出版社出版,作者沈哲 编著。

得书感谢您对《Kotlin进阶实战》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
抖音运营2.0:进阶方法论与实战攻略 电子书
适读人群 :抖音玩家,电商运营者,品牌运营者,营销人员 编辑推荐 抖音已经全面进入2.0时代,电商、直播、Vlog、网红等营销和变现模式不断更新换代。赶上2.0时代的风口红利,只有两个秘诀,一是专注于内容生产,二是深耕垂直领域。本书从“内容”到“流量”再到“营销变现”,提供了一整套抖音2.0时代的进阶方法论,并含有大量的实战案例。不管是抖音玩家、实体店铺,还是品牌运营商,阅读本书,都会获得更多关于布局未来抖音商业生态的全新启发。 内 容 内容定位法则|好内容,先定位 内容生产框架|高质量、高转化内容的五大逻辑 内容价值模型|爆款内容的标准化思路与模板 流 量 精品推荐池|抖音推荐算法大揭秘 裂变涨粉法|涨粉的四大法则 快引流法|抖音矩阵打造 营 销 品牌运营|品牌抖音营销的玩法 精准营销|7种带有营销目的的抖音玩法 强变现|抖音网红的带货宝典
基于Kotlin的Android应用程序开发 电子书
书籍的核心内容被化分成10个章节,所涉及技术点包含:Kotlin语言、Android界面技术、多线程技术、数据持久化和系统服务等,相关内容的讨论和结果可为基本的Android应用程序开发提供技术指导和支持。本书以案例驱动方式介绍相关程序的实现方法和过程,本书还通过示例程序版本迭代的方式,逐渐升入讨论核心技术和实现方法。
Kotlin程序员面试笔试宝典 电子书
覆盖了知名IT大厂近三年程序员面试笔试中超过98%的高频算法知识点,指引程序员面试之道。
Android开发进阶 电子书
阿里巴巴高级工程师、CSDN博客专家、畅销书作者撰写,百度、腾讯等专家推荐的精品图书 一本只有干货,绝无赘述的好书 结合作者多年开发经验的总结,把作者以前开发走过的坑和陷阱讲解出来,看了以后可以少走很多弯路,提升自己的开发能力很快,抓住开发的痛点和需求讲解内容,使读者阅读后很有成就感。 除了全面讲解了Android开发知识外,还对单元测试、代码规范、版本控制、重构、架构等重要知识点进行了讲解,使得读者在深入技术的同时开阔眼界,能够以更专业的方式设计应用软件,完成从只会实现功能的“码农”到软件工程师、设计师的过渡。
Python编程轻松进阶 电子书
阅读本书,理解代码底层逻辑,像职业程序员一样使用Python。