kindle电子书

资源下载,尽在我的书库!
首页 > kindle电子书库 > 工业|计算机|互联网 > 电子、计算机、网络

高性能Scala:用Scala和函数式编程范式开发高性能软件

  • 作者: 多作者
  • 体积:2.64 MB
  • 语言:中文
  • 日期:2018-09-29
  • 推荐:

简介:高性能Scala:用Scala和函数式编程范式开发高性能软件

电子书详细介绍

TAG():Scala CS

 Scala是一种表达能力非常强的语言,能够用非常简洁的代码表达丰富的业务含义。为了在生产上充分发挥Scala的能力,除了掌握其简洁的语法外,理解Scala在性能上的特点和优化点也是非常重要的事。本书通过解析一个金融领域高频交易的实际例子,引领读者掌握如何对Scala程序(以及一般JVM程序)进行基准测试和性能分析,从而找出瓶颈。随后作者介绍了Scala语言、Scala标准库(尤其是集合库)以及Scalaz库里解决相应瓶颈的各种技巧。并行计算和分布式架构作为性能调优的重要手段,更是本书的重中之重,作者对Scala的并行计算和分布式架构中存在的问题都进行了充分的讨论和讲解,非常值得学习。本书适合已经具有Scala编程基础、能够较好地使用Scala风格代码实现业务功能的程序员,作为在性能优化方面的深造阅读资料。

编辑推荐

《高性能Scala》将为你武装创建高性能Scala应用所需的知识,从如何定义性能这样的基础知识开始,探索了Scala语言特性及函数式编程技术,同时在所有主题上都密切关注着性能。
我们虚构了一家名为MV的交易公司,你将作为一个新加入这家公司中的软件工程师开始工作。随着不断学习降低延迟提高吞吐量的新技术和新方法,你将会把它们应用到解决MV交易公司的业务问题上。学习完本书之后,你将得到充分的知识储备,能使用函数式编程范式来解决真实世界中的问题,并能编写可以用于生产环境的高性能Scala软件。
通过开发JMH基准测试,以及使用Flight Recorder做profiling去分析JVM应用的性能。
发掘出Scala语言特性的使用场景及性能折衷的情况,了解急切集合及惰性集合。
研究流式处理管道,探索使用事件溯源模式来提升性能。
深入异步编程,使用Scala的Future和Scalaz的Task来榨取多核系统的性能。
利用最终一致性的优势,结合无冲突复制的数据结构(CRDTs)来设计无须同步的分布式系统。
理解队列对系统性能的影响,应用Free monad模式来构建具有高等级吞吐量的健壮的系统。

作者简介

Vincent Theron是一个拥有 9年工作经验的专业软件工程师。他在 6年前发现了 Scala并将之应用于构建高伸缩性、高可靠的应用。他在多个行业设计软件来解决商业上的问题,包括在线博彩、金融交易,以及昀近的广告行业。在巴黎东部 Marne-la-Vallée,Vincent获得了计算机科学及软件工程硕士学位。他和妻子、孩子以及两只毛茸茸的猫一起在波士顿区域生活。
感谢在 Packt出版社的每一个人,是你们的努力工作才能让这本书面世。感谢柴塔尼亚-耐尔,带着这个出书项目找到我。感谢 Nikhil Borkar,一路上给我提供指引。感谢 Michael Diamant,我的合作作者,我的同事,同时也是朋友,感谢你给这本书带来的知识以及充满灵感的每一天。感谢我的父母,感谢你们的爱和支持,以及你们给我买的第一台电脑。昀后,感谢我的妻子,Julie,感谢你一直的鼓励,感谢你给了我一个这么绝妙的儿子。 
Michael Diamant是一个专业的软件工程师,热衷于函数式编程。他在 2009年开始自己的事业,专注于 Java和面向对象的编程范式。在 2011年学习 Scala之后,他专注于使用 Scala和函数式编程范式来构建金融交易和广告领域的软件系统。迈克尔毕业于伍斯特理工学院,居住在波士顿区域。
我能在这本书里面分享的知识来源于他人在我一生中给予的支持和教导。我想要特别感谢我的同事文森特,感谢你推动我付出这些努力,感谢所有在一起的时间,让我们可以发展这些书中的想法。我所有的现在和之前的同事都帮助我提高了工程技术,没有你们慷慨地分享你们的所学,我将不可能编写这本书。除了 Vincent,我还想特别提及一些我觉得尤其想感谢的同事:Dave Stevens、Gary Malouf、Eugene Kolnick和 Johnny Everson。感谢我的父母和兄弟,你们支持我,将我培养成现在的我。我尤其想深深地感谢我的女友 Anna在整个写书过程中给予我的支持。昀后,同样的感谢送给 Packt出版社,在你们的帮助下我们写了我们的第一本书。

关于审阅者 
Nermin Šrifović是一个从 2009年开始就热衷 Scala的人,他从 2011年开始在专业领域应用 Scala。在大部分工作生涯中,他专注于使用 JVM技术构建后端平台。昀近,作为 Pingup的研发总监,他正在一个本地化服务预订系统上领导开发工作。 
Nermin是一个哈佛大学延伸教育学院的导师,他在那里与人合作教授 Scala并行编程的课程,他还在多个学术会议上发表了演讲。
作为一个 Scala社区的活跃会员,Nermin组织了波士顿区域的 Scala爱好者群,同时他也是中东 Scala座谈基金会一员。他是 Scala Puzzlers一书的合作作者,Scala解惑网站的合作创建者。 
Nermin拥有康奈尔大学计算机科学硕士学位,他感兴趣的领域包括分布式系统及伴随着的并行,响应式和函数式编程。

 

目录

前言iX
1高性能之路1
性能的定义2
高性能软件2
硬件资源3
时延和吞吐率4
瓶颈5
性能总结5
平均数的问题6
百分位数来救场8
指标搜集9
用基准数据(benchmark)来衡量性能9
通过Profiling来定位瓶颈10
结合基准测试和profiling10
案例分析11
工具链11
小结12
2在JVM上度量性能13
金融领域一瞥13
意外的市场波动毁掉了利润16
重现故障17
吞吐量基准测试17
时延基准测试20
定位瓶颈25
微基准取得大进步42
小结49
3释放Scala的性能51
值类52
字节码表示52
性能考虑54
标记类型——值类的一种替代品55
专门化57
字节码表示58
性能考虑60
元组65
字节码表示65
性能考虑66
模式匹配68
字节码表示68
性能考虑70
尾递归75
字节码表示78
性能考虑79
Option数据类型83
字节码表示83
性能考虑84
案例研究——性能更高的Option85
小结89
4探索集合API91
高吞吐量系统—改进指令簿91
理解过去实现上的折中—list实现92
当前的指令簿—queue实现101
通过惰性计算来提升取消操作的性能104
历史数据分析114
滞后时序收益率(lagged time series returns)114
处理多个收益率序列122
小结127
5惰性集合及事件溯源129
提升用户报表生成速度129
深入报表生成代码130
使用视图提速报表生成133
视图的注意事项141
打包报表生成结果145
重新思考报表架构146
Stream概览149
事件变换152
构建事件源管道158
马尔可夫流式链162
流的注意事项166
小结169
6Scala的并发171
并行回测(backtesting)策略171
探索Future173
Future和crazy ideas177
Future使用时的考量179
提交执行妨碍性能185
处理阻塞调用和回调188
ExecutionContext和阻塞调用189
用Promise转化回调193
受命进一步提升回测性能196
介绍Scalaz Task197
用Task为交易日模拟建模204
总结回测209
小结210
7高性能架构211
分布式自动化交易员(Distributed automated traders)211
分布式架构概述212
第一次尝试分布式自动化交易系统212
引入CRDT214
CRDT和自动化交易系统219
当余额不足时220
免费交易策略性能提升222
为交易策略做基准测试222
无界队列(unbounded queue)的危险225
应用背压(back pressure)226
应用负载控制策略227
Free monad233
小结240

我来说两句

本书评论

共有 0 条评论
图书分类
我的书库手机端
帮助中心
会员登录 ×
新用户注册 ×