KOTLIN核心编程(水滴技术团队出品.深入阐述KOTLIN设计哲学.语言特性.设计模式.函数式编程pdf下载

KOTLIN核心编程(水滴技术团队出品.深入阐述KOTLIN设计哲学.语言特性.设计模式.函数式编程百度网盘pdf下载

作者:
简介:KOTLIN核心编程(水滴技术团队出品.深入阐述KOTLIN设计哲学.语言特性.设计模式.函数式编程
出版社:
出版时间:2019-04
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

作  者:水滴技术团队 著
定  价:89
出 版 社:机械工业出版社
出版日期:2019年04月01日
页  数:360
装  帧:平装
ISBN:9787111624318
(1)本书作者团队强大:水滴技术团队出品,团队核心成员均来自阿里、,其中不乏章建良(网名:Jilen)等技术大牛。(2)书中干货多,且具备一定深度:本书不是一般泛泛讲语法的书,而是一般围绕Kotlin设计理念对所有核心内容进行详细剖析的书,有一点Java基础,想高层次入门Kotlin的读者,本所不容错过。
前言热身篇  Kotlin基础章  认识Kotlin21.1  Java的发展21.1.1  Java 8的探索31.1.2  Java未来的样子31.2  Scala的百宝箱31.2.1  学术和工业的平衡41.2.2  复合但不复杂41.2.3  简单却不容易51.3  Kotlin—改良的Java51.3.1  Kotlin的实用主义61.3.2  更好的Java61.3.3  强大的生态81.4  本章小结8第2章  基础语法102.1  不一样的类型声明102.1.1  增强的类型推导112.1.2  声明函数返回值类型112.2  val和var的使用规则132.2.1  val的含义:引用不可变132.2.2  优先使用val来避免副作用142.2.3  var的适用场景152.3  高阶函数和Lambda162.3.1  抽象和高阶函数172.3.2  实例:函数作为参数的需求172.3.3  函数的类型192.3.4  方法和成员引用212.3.5  匿名函数222.3.6  Lambda是语法糖222.3.7  函数、Lambda和闭包252.3.8  “柯里化”风格、扩展函数262.4  面向表达式编程292.4.1  表达式比语句更安全302.4.2  Unit类型:让函数调用皆为表达式322.4.3  复合表达式:更好的表达力332.4.4  枚举类和when表达式342.4.5  for循环和范围表达式372.4.6  中缀表达式392.5  字符串的定义和操作412.5.1  定义原生字符串412.5.2  字符串模板422.5.3  字符串判等432.6  本章小结43下水篇  Kotlin核心第3章  面向对象463.1  类和构造方法463.1.1  Kotlin中的类及接口463.1.2  更简洁地构造类的对象493.1.3  主从构造方法553.2  不同的访问控制原则563.2.1  修饰符573.2.2  可见性修饰符613.3  解决多继承问题3.3.1  骡子的多继承困惑3.3.2  接口实现多继承653.3.3  内部类解决多继承问题的方案673.3.4  使用委托代替多继承693.4  真正的数据类713.4.1  烦琐的JavaBean 713.4.2  用data class创建数据类 733.4.3  copy、componentN与解构753.4.4  数据类的约定与使用783.5  从static到object793.5.1  什么是伴生对象793.5.2  天生的单例:object813.5.3  object表达式823.6  本章小结84第4章  代数数据类型和模式匹配854.1  代数数据类型854.1.1  从代数到类型8.1.2  计数874.1.3  积类型874.1.4  和类型与密封类884.1.5  构造代数数据类型894.2  模式匹配904.2.1  何为模式914.2.2  常见的模式924.2.3  处理嵌套表达式934.2.4  通过Scala找点灵感954.2.5  用when力挽狂澜974.3  增强 Kotlin 的模式匹配994.3.1  类型测试/类型转换994.3.2  面向对象的分解1004.3.3  访问者设计模式1024.3.4  总结1044.4  用代数数据类型来抽象业务1054.4.1  从一个实际需求入手1054.4.2  糟糕的设计1054.4.3  利用ADT10.4.4  更高层次的抽象1084.5  本章总结110第5章  类型系统1125.1  null引用:10亿美元的错误1125.1.1  null做了哪些恶1125.1.2  如何解决NPE问题1145.2  可空类型1155.2.1  Java 8中的Optional1155.2.2  Kotlin的可空类型1185.2.3  类型检查1215.2.4  类型智能转换1225.3  比Java更面向对象的设计1245.3.1  Any:非空类型的根类型1245.3.2  Any?:所有类型的根类型1275.3.3  Nothing与Nothing?1285.3.4  自动装箱与拆箱1285.3.5  “新”的数组类型1295.4  泛型:让类型更加安全1305.4.1  泛型:类型安全的利刃1305.4.2  如何在Kotlin中使用泛型1315.4.3  类型约束:设定类型上界1335.5  泛型的背后:类型擦除1355.5.1  Java为什么无法声明一个泛型数组1355.5.2  向后兼容的罪1365.5.3  类型擦除的矛盾1385.5.4  使用内联函数获取泛型1395.6  打破泛型不变1405.6.1  为什么List不能赋值给List1405.6.2  一个支持协变的List1415.6.3  一个支持逆变的Comparator1435.6.4  协变和逆变1445.7  本章小结147第6章  Lambda和集合1486.1  Lambda简化表达1486.1.1  调用Java的函数式接口1486.1.2  带接收者的Lambda1496.1.3  with和apply1506.2  集合的高阶函数API1516.2.1  以简驭繁:map1516.2.2  对集合进行筛选:filter、count1526.2.3  别样的求和方式:sumBy、sum、fold、reduce1546.2.4  根据学生性别进行分组:groupBy1566.2.5  扁平化—处理嵌套集合:flatMap、flatten1576.3  集合库的设计1596.3.1  集合的继承关系1596.3.2  可变集合与只读集合1606.4  惰性集合1636.4.1  通过序列提高效率1636.4.2  序列的操作方式16.4.3  序列可以是无限的1666.4.4  序列与Java 8 Stream对比1666.5  内联函数1676.5.1  优化Lambda开销1686.5.2  内联函数具体语法1696.5.3  noinline:避免参数被内联1716.5.4  非局部返回1726.5.5  crossinline1746.5.6  具体化参数类型1746.6  本章小结175第7章  多态和扩展1767.1  多态的不同方式1767.1.1  子类型多态1767.1.2  参数多态1777.1.3  对第三方类进行扩展1787.1.4  特设多态与运算符重载1787.2  扩展:为别的类添加方法、属性1797.2.1  扩展与开放封闭原则1797.2.2  使用扩展函数、属性1807.2.3  扩展的特殊情况1837.2.4  标准库中的扩展函数:run、let、also、takeIf1867.3  Android中的扩展应用1887.3.1  优化Snackbar1887.3.2  用扩展函数封装Utils1897.3.3  解决烦人的findViewById1907.4  扩展不是万能的1937.4.1  调度方式对扩展函数的影响1937.4.2  被滥用的扩展函数1967.5  本章小结197第8章  元编程1988.1  程序和数据1998.1.1  什么是元编程1998.1.2  常见的元编程技术2018.2  Kotlin的反射2028.2.1  Kotlin和Java反射2028.2.2  Kotlin的KClass2058.2.3  Kotlin的KCallable2068.2.4  获取参数信息2088.3  Kotlin的注解2108.3.1  无处不在的注解2118.3.2  精确控制注解的位置2128.3.3  获取注解信息2138.4  本章小结216潜入篇  Kotlin探索第9章  设计模式2189.1  创建型模式2189.1.1  伴生对象增强工厂模式2199.1.2  内联函数简化抽象工厂2229.1.3  用具名可选参数而不是构建者模式2249.2  行为型模式2289.2.1  Kotlin中的观察者模式2289.2.2  高阶函数简化策略模式、模板方法模式2319.2.3  运算符重载和迭代器模式2359.2.4  用偏函数实现责任链模式2379.2.5  ADT实现状态模式2419.3  结构型模式2449.3.1  装饰者模式:用类委托减少样板代码2459.3.2  通过扩展代替装饰者2469.4  本章小结2480章  函数式编程24910.1  函数式编程的特征24910.1.1  函数式语言之争25010.1.2  纯函数与引用透明性25110.1.3  代换模型与惰性求值25310.2  实现Typeclass25410.2.1  高阶类型:用类型构造新类型25510.2.2  高阶类型和Typeclass25610.2.3  用扩展方法实现Typeclass25710.2.4  Typeclass设计常见功能25810.3  函数式通用结构设计26210.3.1  Monoid26210.3.2  Monad210.3.3  Monad组合副作用26910.4  类型代替异常处理错误27110.4.1  Option与OptionT27210.4.2  Either与EitherT27610.5  本章小结2791章  异步和并发28111.1  同步到异步28111.1.1  同步与阻塞的代价28111.1.2  利用异步非阻塞来提高效率28411.1.3  回调地狱28411.2  Kotlin的Coroutine28611.2.1  多线程一定优于单线程吗28711.2.2  协程:一个更轻量级的“线程”28711.2.3  合理地使用协程28811.2.4  用同步方式写异步代码29011.3  共享资源控制29311.3.1  锁模式29311.3.2  Actor:有状态的并行计算单元29611.4  CQRS架构30211.4.1  Event Sourcing事件溯源—记录对象操作轨迹30211.4.2  Kotlin with Akka Persistence-Actor30411.5  本章小结310遨游篇  Kotlin实战2章  基于Kotlin的Android架构31412.1  架构方式的演变31412.1.1  经典的 MVC 问题31512.1.2  MVP31612.1.3  MVVM32012.2  单向数据流模型32712.2.1  Redux32712.2.2  单向数据流的优势32912.3  ReKotlin33112.3.1  初见 ReKotlin33112.3.2  创建基于ReKotlin的项目33212.4  解耦视图导航34112.4.1  传统导航的问题34112.4.2  rekotlin-router34212.5  本章小结3433章  开发响应式Web应用34513.1  响应式编程的关键:非阻塞异步编程模型34513.1.1  使用CompletableFuture实现异步非阻塞34613.1.2  使用RxKotlin进行响应式编程34713.1.3  响应式Web编程框架34813.2  Spring 5:响应式Web框架34913.2.1  支持响应式编程34913.2.2  适配Kotlin35013.2.3  函数式路由35113.2.4  异步数据库驱动35313.3  Spring 5响应式编程实战35413.4  本章小结360
本书不是一本简单介绍Kotlin语法应用的图书,而是一部专注于帮助读者深入理解Kotlin的设计理念,指导读者实现Kotlin高层次开发的实战型著作。书中深入介绍了Kotlin的核心语言特性、设计模式、函数式编程、异步开发等内容,并以Android和Web平台为背景,演示了Kotlin的实战应用。全书共13章,分为4个部分:热身篇—Kotlin基础(~2章),简单介绍了Kotlin设计哲学、生态及基础语法,其中包括Kotlin与Scala、Java之间的关联与对比,以及Kotlin的类型声明的特殊性、val和var的使用、高阶函数的使用、面向表达式编程的使用、字符串的定义与操作等内容;下水篇—Kotlin核心(第3~8章),深入介绍了面向对象、代数数据类型、模式匹配、类型系统、Lambda、集合、多态、扩展、元编程等Kotlin开发核心知识,这是本书的重点,其中涉及很多开发者特别关心的问题等
水滴技术团队 著
水滴技术团队核心成员来自、,公司旗下的大数据SaaS类产品服务了Booking、阿里集团、小米集团、大疆创新、拍拍贷等几十万家企业,是微信的重点第三方合作产品。推崇函数式编程,喜欢尝试各种新的前后端技术。团队在2015年就实现了业界的全异步开发架构,该架构是基于fp Scala及微服务化的分布式系统。同时,水滴技术团队还是靠前外少有的pure fp技术团队,采用了如Play! Framework、Akka、Cats等新潮的技术,并对JVM生态的一些编程语言有着较丰富的实战经验,当前主要为Scala、Kotlin社区输出博客和开源项目。章建良(网名:Jilen)水滴技术团队核心成员,杭州极跑科技等
    章认识Kotlin在Java之后,JVM平台上出现了其他的编程语言,Scala和Kotlin可以算是其中的佼佼者。Scala已成为大数据领域的明星,而Kotlin在2017年Google I/O大会之后,也成为安卓平台上潜力巨大的官方支持语言。它们都因被冠以“更好的Java”而为人称道,然而它们采用的却是两种不同的设计理念。本章我们通过对比Java、Scala、Kotlin这3种编程语言各自的发展路线,来认识Kotlin的设计哲学。1.1  Java的发展不得不说,Java是当今成功的编程语言之一。自1996年问世,Java就始终占据着编程语言生态中很大的份额。它的优势主要体现在:多平台与强大的社区支持。无论是用于Web开发还是用于移动设备,Java都是主流的编程语言之一。尊重标准。它有着严格的语言规范及向后兼容性,因此很等
为什么要写这本书2017年5月,Hadi Hariri(JetBrains的首席布道师)在座无虚席的Google I/O大会上介绍Kotlin时,先开了一个玩笑:“大概4年半之前,我们曾在一个容纳900人的会场做过同样的事情,但结果只来了7个人。”他说的是事实,自从Google宣布Kotlin成为Android官方编程语言之后,Kotlin这门默默无闻的语言一下子成为技术圈中的“明星”。随后,关于Kotlin的开源项目和学习资料也如雨后春笋般出现。同一时刻,在我们位于杭州的办公室里,水滴的同事也在进行着一个用Kotlin研发的Android项目。作为一个采用Scala全栈开发的“非主流”技术团队,我们对Kotlin有天然的好感。一方面,它在某些地方非常像Scala。相比Java,它们都拥有更简洁的语法,以及更多的函数式特性(如高阶函数、更强的类型推导、不同程度上的模式匹配等)。另一方面,K等