二维码
Scala程序设计:Java虚拟机多核编程实战 (图灵程序设计丛书) - 电子书下载 -(百度网盘 高清版PDF格式) - 数据结构 - 机器学习 #daohang ul li t,.reed .riqi,a.shangg,a.xiatt,a.shangg:hover,a.xiatt:hover,a.shang,a.xiat,a.shang:hover,a.xiat:hover,.reed-pinglun-anniu,span.now-page,#daohangs-around,#caidan-tubiao,#daohangs,#daohangs li,#btnPost{background-color:#D10B04;} .dinglanyou1 h3{border-bottom:3px solid #D10B04;} #dibuer{border-top:2px solid #D10B04;}.cebianlan .rongqi h3{border-bottom:1px solid #D10B04;} #edtSearch{border:1px solid #D10B04;} #daohang .zuo ul li{border-right:1px solid #;} #daohang ul li t a{border-top:1px solid #;border-right:1px solid #D10B04;} #daohang ul li t a:hover{border-right:1px solid #;} #daohang .you ul li a:hover,#daohang .zuo ul li a:hover,.reed-pinglun-anniu:hover{background-color:#;} a:hover,.reed h6 a:hover,#dibuer a:hover,.reed .riqiding,.cebianlan .rongqi li a:hover,#pinglun-liebiao ul.fubens li.depth-1 dl dd span.shu a,#pinglun-liebiao ul.fubens li.depth-1 dl dd span.huifuliuyan a:hover,.reed-biaoti h6 span{color:#D10B04;} .reed .kan a{color:#0A0AF5;}.reed .kan a:hover{color:#D10101;} @media screen and (max-width:1492px){a.shang,a.xiat{background:none;} a.xiat:hover,a.shang:hover{background-color:#f9f9f9;background-image:none;text-decoration:none;}} var _hmt = _hmt || [];(function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?b19db5ba3b437a9e8698d2bc8fc64334"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s);})(); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?b19db5ba3b437a9e8698d2bc8fc64334"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?2d748c9763cfc72fb7d1ccab29f0770d"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?f6d451f3f1be23f3abf240c64c469c1b"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })();

当前位置:首页 » 大数据电子书 » 正文

(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646201", container: s }); })();
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646162", container: s }); })();

Scala程序设计:Java虚拟机多核编程实战 (图灵程序设计丛书) - 电子书下载 -(百度网盘 高清版PDF格式)

1634 人参与  2018年12月31日 21:18  分类 : 大数据电子书  评论

Scala程序设计_Java虚拟机多核编程实战 (图灵程序设计丛书)-苏帕拉马尼亚姆(Venkat Subramaniam)

            在线阅读                   百度网盘下载(vbgu)


Scala程序设计:Java虚拟机多核编程实战 (图灵程序设计丛书) - 电子书下载 -(百度网盘 高清版PDF格式) - 数据结构 - 机器学习

书名:Scala程序设计:Java虚拟机多核编程实战 (图灵程序设计丛书)

作者:苏帕拉马尼亚姆(Venkat Subramaniam)

格式:EPUB, HTMLZ, PDF

书号:9787115232953

路径:点击打开

出版:人民邮电出版社

排序作者:苏帕拉马尼亚姆(Venkat Subramaniam)

排序书名:Scala程序设计:Java虚拟机多核编程实战 (图灵程序设计丛书)

日期:08 12月 2018

uuid:f71fc6b7-a081-410e-a4fc-6f9396065070

id:497

出版日期:8月 2010

修改日期:08 12月 2018

大小:1.38MB

语言:中文


写代码的层次

初涉代码之时,我的关注点在于实现功能。初窥门径的我,不了解语言,不熟悉常见的编码技巧。那时,只要代码能够跑出想要的效果,我便欣喜若狂,无暇顾及其他。

积累一定经验之后,对于编写代码,我越来越有感觉,实现一个功能不再高不可攀。我开始了解在工程中编写代码,如何在一个系统而不仅仅是一个局部处理问题,如何解决各种bug,更重要的是,从中汲取教训,在编码中避免这些问题。

读一些软件开发的书,了解一下外面的世界,我知道了,除了自娱自乐外,代码应该是为明天而写。有个说法,对程序员最严厉的惩罚,就是让他维护自己编写的代码。于是,我开始尝试编写干净代码:短小的函数,清晰的结构……所做的一切无非就是让自己明天的日子好过一些。

历经磨练,代码逐渐干净,窃喜之际,我见到了Ruby。孤陋寡闻的我第一次听到了代码的表现力。原来代码不仅仅可以写得让开发人员容易理解,也可以让业务人员看懂。事实上,更容易懂的代码常常也意味着更容易维护。许多人关注的DSL,背后就是对于表现力的追求。

Scala就是Java平台上追求表现力的探索。

我是通过Java开始真正理解软件开发的,所以,对Java这个平台有一种难以割舍的情结。初见Scala,我看到的是,一个几乎不舍弃任何Java的优点,又能拥有更好表现力的“Java”。当有机会系统地了解这门语言时,我欣然接受了。

翻译向来是一件费力不讨好的事。认真准备的考试不见得能拿到满分,做最大的努力,做最坏的打算。于我,只希望这个译本得到的评价不是太糟糕就好。

感谢我的合作者,李剑,你给我这样的机会,让我知道,我居然还可以做翻译,你的认真让我受益良多。感谢本书的原作者Venkat Subramaniam,和你讨论让我们对Scala有了更深刻的理解。

最后,感谢我的父母,你们教会我踏实做人,支持着我沿着软件开发这条路一直走下去。

第1章 简介

可以在JVM上编程的语言有很多。通过这本书,我希望让你相信花时间学习Scala是值得的。

Scala语言为并发、表达性和可扩展性而设计。这门语言及其程序库可以让你专注于问题领域,而无需深陷于诸如线程和同步之类的底层基础结构细节。

如今硬件已经越来越便宜,越来越强大。很多用户的机器都装了多个处理器,每个处理器又都是多核。虽然迄今为止,Java对我们来说还不错,但它并不是为了利用我们如今手头的这些资源而设计的。而Scala可以让你运用这些资源,创建高响应的、可扩展的、高性能的应用。

本章,我们会快速浏览一下函数式编程和Scala的益处,为你展现Scala的魅力。在本书的其他部分,你将学会如何运用Scala,利用这些益处。

第2章 起步

让我们开始写一些Scala代码吧!在这一章里,你会装上Scala,确保一切都能在系统中运作良好。

第3章 Scala步入正轨

你可以基于自己已有的Java技能学习Scala。在本章中,我们从熟悉的地方——Java代码——出发,向Scala前进。Scala在一些地方同Java类似,但差异之处更是不胜枚举。Scala偏爱纯粹的面向对象,但是它也会尽可能的把类型映射为Java类型。Scala支持类Java的命令式编程风格,同时也支持函数式风格。启动你最喜爱的编辑器,我们要开启Scala之旅了!

第4章 Scala的类

本章讲述如何创建Scala的类。首先,我们把一个简单的Java类转换成Scala类,然后深入分析二者的区别。Scala的构造函数可能会让人眼前一亮,因为它比Java的构造函数简洁得多。

虽然Scala是一门纯粹的面向对象的语言,但它仍然不得不支持Java那些不太纯粹的OO概念,比如静态方法。Scala处理这些概念的方式相当巧妙——伴生对象(companion object)。伴生对象是一个与类相伴的单例对象,在Scala里很常见。比如,Actor就是Actor类的伴生对象——在并发编程时会经常用到。

第5章 自适应类型

静态类型,又称编译时类型检查,会帮助我们在编译时定义和校验接口契约。Scala不同于其他一些静态类型语言,它并不指望我们提供冗余的类型信息。大多数情况下,人们甚至无需指定类型,当然也就谈不上重复了。同时,Scala会在编译时推演类型,校验引用的使用是否得当。


第6章 函数值和闭包

正如其名字所暗示的那样,函数是函数式编程的一等公民。函数可以当作参数传给函数,可以从函数中返回,甚至可以在函数中嵌套。这些高阶函数称为函数值。在你了解了它们的用法之后,就可以开始以这些函数值为构造块,围绕它们构建应用。你很快就会意识到,这会带来简洁、可复用的代码。闭包是一种特殊的函数值,闭包中封闭或绑定了在另一个作用域或上下文中定义的变量。在本章里,你会学会在Scala里如何使用函数值和闭包。

第7章 Trait和类型转换

Trait就像一个拥有部分实现的接口,它提供了一个介于单一继承和多重继承的中间地带,因为我们可以在其他类里面混入(mix in)它们。这样就可以用一组特性对类进行增强。

单一实现继承强迫我们将一切都建模为线性层次结构。然而,现实世界充满了横切关注点——这些概念跨越和影响了不在同一类层次结构的抽象。安全、日志、校验、事务,资源分配和管理都是典型企业应用里这种横切关注点的例子。Scala的trait可以将这些关注点应用到任意的类中,而无需忍受由多重实现继承带来的痛苦。

在本章里,我们会学到Scala对抽象和对象模型的支持,其中的大部分会让人觉得有如魔术一般。Scala的隐式转换可以把一个类的实例当作另一个类的实例。这样一来,通过在façade里隐式封装实例,无需修改原来的类,就可以将方法附着于对象上。这种技巧可以用于创建DSL。

第8章 使用容器

在本章里,我们会学到如何创建常见的Scala容器的实例,以及如何对它们进行迭代。你还可以使用JDK的容器,诸如ArrayList、Vector和简单的数组等,但是本章会着重介绍Scala特定的容器:List、Set和Map,以及如何运用它们进行工作。

第9章 模式匹配和正则表达式

在Scala里,模式匹配仅次于函数值和闭包,是使用第二广泛的特性。在并发编程的地方,从actor接收消息时常常要用到它。Scala对模式匹配有着极佳的支持,可以处理不同格式和类型的消息。在本章里,我们会学到Scala的模式匹配机制,case类和提取器(extractor),以及如何创建和使用正则表达式。

第10章 并发编程

在Scala里,实现多线程应用变得简单了。在Java里,要先创建一个线程,然后运用同步原语:notify和wait,尽力对它进行控制,以避免数据竞争①。即便如此,我们依然会质疑代码是否正确:会有数据竞争吗?或着,会有死锁的可能性吗?

①Doug Lea的Concurrent Programming in Java [Lea00]和Brian Goetz的Java Concurrency in Practice [Goe06],整本书都是关于如何征服Java线程的。

Scala使用基于事件的模型②进行线程间通信,把不变对象当作消息进行传递。在本章里,我会介绍Scala actor模型的概念,用它及之前本书里学到所有概念,开发Scala的并发应用。

②Scala的actor模型类似于Erlang的模型。参见Joe Armstrong的Programming Erlang: Software for a Concurrent World [Arm07]或是Robert Virding等人的Concurrent Programming in Erlang [VWWA96]。

第11章 与Java互操作

在本章里,我们会学到如何在Scala里使用Java类以及在Java里使用Scala类。将Scala代码与用Java或JVM上其他语言编写的代码混合在一起很容易。Scala跟Java一样,都是编译成字节码。这些字节码可以用在应用程序里面,就像使用Java编译出的字节码一样。只要确保scala-library.jar在classpath里,一切就都准备好了。

我们会讨论到Scala惯用法在Java端如何表现。这样,就可以轻松地将Scala的优势,如并发、模式匹配、函数式风格和简洁用到当前的Java应用里。通读本章,我们就掌握了在Java应用里充分利用Scala优势所需的内容。

第12章 用Scala做单元测试

代码写成什么样子,它就会做什么样子的事情。但是单元测试可以保证你希望什么样,代码就能做到什么样。而随着应用不断演化,单元测试更能确保代码可以一直满足你的期望。

学会用Scala编写单元测试,会带来如下好处:

它可以帮你在当前项目中引入Scala。即便产品代码用的是Java,依然可以用Scala写测试代码。

它可以用来学习Scala本身。一边学习语言,一边写单元测试,以此体验这门语言和它的API。

它可以改善设计。庞大复杂的代码难于单元测试。要测试你的程序,先把它变小了再说。代码变得高内聚、低耦合、易于理解、易于维护,设计也会随之变得越来越好。

在Scala里,单元测试的果实唾手可得。你有3种选择——JUnit、TestNG、ScalaTest。本章从JUnit开始,然后介绍ScalaTest的用法,它是一种用Scala编写的工具。

第13章 异常处理

Java的受控异常(checked exception)强制我们捕获并不关心的异常。所以,一些程序员只放一个空的catch块在那里压制住异常,而不是让它们自然地传到正确的地方进行处理。Scala不是这么做的。我们可以处理关心的异常,忽略其他的。没有处理的异常会自动地向上传播。在本章中,我们会学到在Scala里如何处理异常。

第14章 使用Scala

在本章里,我们会把本书迄今为止所学的很多东西放在一起,然后再加上其他一些东西。我们会逐步地构建起一个应用,用它可以获得我们在股票市场上投资的净值。我们会见识到由Scala简洁和表现力带来的裨益,见识到模式匹配以及函数值/闭包的威力,还会用到并发。此外,还将了解到Scala对于XML处理的支持,以及如何构建Swing应用。

来源:我是码农,转载请保留出处和链接!

本文链接:http://www.54manong.com/?id=1136

(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646208", container: s }); })();
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646147", container: s }); })();
window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdPic":"","bdStyle":"0","bdSize":"16"},"share":{},"image":{"viewList":["qzone","tsina","tqq","renren","weixin"],"viewText":"分享到:","viewSize":"16"},"selectShare":{"bdContainerClass":null,"bdSelectMiniList":["qzone","tsina","tqq","renren","weixin"]}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];
大数据电子书  

微信号:qq444848023    QQ号:444848023

加入【我是码农】QQ群:864689844(加群验证:我是码农)

<< 上一篇 下一篇 >>
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646186", container: s }); })();
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646175", container: s }); })();
搜索

网站分类

标签列表

最近发表

    (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https'){ bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else{ bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();

全站首页 | 数据结构 | 区块链| 大数据 | 机器学习 | 物联网和云计算 | 面试笔试

var cnzz_protocol = (("https:" == document.location.protocol) ? "https://" : "http://");document.write(unescape("%3Cspan id='cnzz_stat_icon_1276413723'%3E%3C/span%3E%3Cscript src='" + cnzz_protocol + "s23.cnzz.com/z_stat.php%3Fid%3D1276413723%26show%3Dpic1' type='text/javascript'%3E%3C/script%3E"));本站资源大部分来自互联网,版权归原作者所有!

jQuery(document).ready(function($){ /* prepend menu icon */ $('#daohangs-around').prepend('
'); /* toggle nav */ $("#caidan-tubiao").on("click", function(){ $("#daohangs").slideToggle(); $(this).toggleClass("active"); }); });

©著作权归作者所有:来自ZhiKuGroup博客作者没文化的原创作品,如需转载,请注明出处,否则将追究法律责任 来源:ZhiKuGroup博客,欢迎分享。

评论专区
  • 昵 称必填
  • 邮 箱选填
  • 网 址选填
◎已有 0 人评论
搜索
作者介绍
30天热门
×
×
本站会员尊享VIP特权,现在就加入我们吧!登录注册×
»
会员登录
新用户注册
×
会员注册
已有账号登录
×