文库网
ImageVerifierCode 换一换
首页 文库网 > 资源分类 > PDF文档下载
分享到微信 分享到微博 分享到QQ空间

Spark大数据处理:技术、应用与性能优化.html.pdf

  • 资源ID:2183810       资源大小:6.88MB        全文页数:181页
  • 资源格式: PDF        下载积分:6文币
微信登录下载
快捷下载 游客一键下载
账号登录下载
三方登录下载: QQ登录 微博登录
二维码
扫码关注公众号登录
下载资源需要6文币
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

Spark大数据处理:技术、应用与性能优化.html.pdf

1、本书中,我们无法对此展开讲解,但这些知识对于做实际项目又是必需的。所以,我们只能在附录中提供一些重要的技术要点和“坑”,并且给出一些在线学习资源和书单。这些大部分都是从我们 开展培训时所使用的课件改编而来的,具有很强的实战性、实用性。希望可以为你提供一些第三方资料,作为进一步学习的起点。 写给想进阶为专业前端的切图师 在很多开发组中,切图师往往由初级程序员或美工担任,有没有想过自己将来向哪里发展?除了面向对象、项目管理等必学的基础技能之外,还可以学习数据库、后端框架、安全技术等,转职为后端 工程师。也可以学习HTML/CSS/JavaScript、用户体验、交互设计、前端框架等,转职为前端工程

2、师。 当然,如果你足够聪明和有足够的进取心,你也可以两者兼修,成为一名全栈工程师。不过,相对来说,前端这条路径可能更加平缓。而且,这几年前端职位正逐渐火爆,从个人职业发展来说,这也 是个不错的选择,过一段时间后未必再有这样好的机遇。从切图师到前端,这条路并非荆棘重重。事实上,没有传统Web工程师的思维定势,这反倒会是个优点。在笔者的编程、咨询和教学过程中,曾接 触过一些对Angular感兴趣的人,总体上说,转变思维比导入新思维的难度更大。圈子里还常流传一些无稽之谈,比如,Angular是Google开发的,面向的是Google中那些妖怪级程序员。那都是乱传的, 没那么恐怖。 我写下这些,是希望

3、你们可以轻装上阵,Angular的很多设计都是遵循“最小意外”原则的,靠直觉就可以掌握,“高估难度”有害无益。 不过,难度仍然是有的。读本书之前,你至少应该已经熟悉了JavaScript语法,对Angular的各种概念有了大致的了解。如果你对很多新名词不知所云,那么建议先去翻阅一下附录中的书籍,浏览一下 网上关于Angular入门的文章。 对于切图师来说,MVC方面的基础往往会成为短板,而JavaScript中一些诡异的特性也常常带来困扰。所以,本书会穿插一些这方面的简短知识。但是,对于一个立志成为“极客”的初级程序员来 说,这仍然是不够的,所以,在附录中我们还提供了一些网址和书单,希望本书能

4、帮你开启职业生涯的新阶段。 2.0要来了,本书会过时吗? Angular 2.x已经进入了Alpha测试阶段,那么,不免有人担心,等到2.x推出的时候,本书会过时吗?从实现细节上来讲,会的。从思想上来讲,不会。从实用性上来讲,不会。 1.x和预计2016年推出的2.x在语法甚至一些底层实现上是截然不同的。 据目前得到的消息,2.x将使用TypeScript和ES6作为主体语言,那时候,本书的很多代码将不再适用于2.x。而由于2.x彻底抛弃了IE11之前的低版本浏览器,它可以借助最新的浏览器特性进行底层实 现,不用为了向后兼容而使用“脏检查”等技术来弥补浏览器的不足。在这些细节上,1.x和2.x

5、几乎没有共通之处。这一点一直被人诟病,也是一些人对Angular的前途深表担忧的原因。不过,从另一个角 度来看,2.x的这种改进也是一种勇敢的改革,可以让它轻装前进,更有利于长远发展。 好消息是,2.x不是1.x的替代品。官方已经宣布,即使2.x推出,也仍然会对1.x进行长期维护。这就有点类似于Query 2.x不再兼容IE8,而Query 1.x仍然兼容IE8并继续向前发展一样。这种版本策略可 以防止Angular背上向老旧浏览器兼容的包袱。 1.x和2.x在编程模型上并没有太大的差异,它们都基于MVVM模型,都具有双向绑定功能(即使底层实现方式已经变了),都具有相同的设计哲学利用高内聚的小

6、模块组合出最终程序。而这些在 我们的书中都有所体现。在目录结构、指令的分类等方面,本书也从2.x中引入了很多更好的实践。 从实用性上来说,本书更不会过时。2.x的浏览器兼容性起点就是IE11,这不是因为细节层面的问题,而是从底层原理上就不可能它依赖太多的新特性。而在国内市场上,彻底抛弃IE11以下的版本 恐怕还会是一个长期的历程即使最乐观的估计,至少也需要两年。当然,手机端的浏览器版本更新要快得多,所以,预计2.x最早会被用在手机版上。 固然,2.x是个高大上的版本,但目前在国内还是个屠龙之术。如果要在现实中使用,还是先学好1.x吧。按照本书的指引,你可以提前领略2.x的优点,而不用付出兼容性

7、的代价。当然,等本书的2.x版 推出时,这种熟悉的味道也会让你有一个更高的起点。 阅读指南 Angular的学习曲线大概是这样的:入门非常容易,中级的时候会发现需要深入理解很多概念,高级的时候需要掌握Angular的工作原理,而想成为专家则很难,需要经过很多工程实践的磨练。 本书的主体结构也是针对这样的学习曲线设计的。 首先,初级阶段,实战演练 我们会带你在实战中逐步体验Angular的开发过程,并随着进度的推进,逐步引入所需的技术和概念。 然后,中级阶段,概念介绍 在实战中提到的一些概念不会就地展开,而是只做简介,到了这个阶段,会对概念进行深入讲解:是什么,为什么,怎么用,什么时候用,什么时

8、候不用等。 接下来,高级阶段,工作原理 学习了这些概念,我们还要把它们串起来,向你揭示Angular的工作原理,看看这些概念之间是如何协作的。 最后,专家阶段:最佳实践,技巧 前面主要是入门和理论,而这部分将主要以实战经验为主。 只把Angular用熟了是不够的,我们还要把它整合进更宏观的开发过程中,不但要考虑开发,更要考虑维护。我们要如何开发容易维护的Angular程序?请看第4章。 专家还需要掌握一些技巧去把复杂问题简单化,发掘一些不常用但很有用的API,把看起来平淡无奇的框架特性运用得出神入化,第5章将集中展现这一点。 坑 在前面的章节中零零散散提到了一些需要注意的地方,但是这样不方便查

9、阅,所以我们把需要注意的地方作为独立的一大章,把我们帮别人解决过的一些典型问题收集在一起。当然,我们也会在读者 社区继续维护并更新这些“坑”,而不是等再版时才发布。我们希望能把这本书做成“活的”,让这本书更加物超所值,不辜负读者对我们的信任。 工具 工欲善其事,必先利其器。充分发挥工具的力量是开发人员的重要素质,日常用到的工具你真的用熟练了吗?有没有更好的工具?我们会把实战中觉得对自己帮助最大的工具及其使用经验分享给你。 更多 在实战中,有很多需求是不显眼但很重要的,比如SEO、访问统计等,在实际项目中,这些往往是不能忽视的。我们会专门通过一章来讲解如何结合Angular和第三方软件干净漂亮地

10、解决这些问题。 Hybrid应用和手机Web越来越普及,手机版开发的需求也越来越高,在Angular的基础上,开发手机版变得容易多了。而且,也已经有了比较成熟的工具和框架,我们会简要讲解一下手机版开发的方 法和框架。 附录 软件开发需要很多综合技能,但本书容量有限,我们也不可能是每个领域的专家。因此,我们会“授人以渔”,给出一些在线资源和书单,供大家深入学习或作为备查资料。 关于随书代码 书中所摘录的只是全部代码的一小部分,大部分代码都放在了GitHub上。地址是 如果你查看GitHub历史,会发现总的提交数并不多。这是因为要方便教学,所以在提交前进行了合并。所保留的这些提交大都和书中的主要进

11、度有关,略去了细节提交。所以,本书中代码的提交粒度 不能代表实际项目中的提交粒度,在实际项目中,其提交粒度通常比本书中所示范的更小。阅读代码时请记住这一点,以免养成“大粒度提交”的坏习惯。 另外,文中的JavaScript代码(包括摘引的Angular源码)全都使用了两格缩进模式,这主要是考虑到图书排版问题,希望少一些不必要的换行。你们在现实项目中愿意用两格或四格均可,只要项目组 内保持一致即可。 关于内容的重复 仔细阅读,可能会发现有些内容会在多个不同的章节中重复讲解,这当然不是凑字数,而是尽可能符合人的记忆规律把重要的内容在不同的场景下重复,对于深入掌握重点是很有帮助的。 关于写作风格 这

12、是一本多人协作的书,虽然我们进行了后期统稿,但在语言风格等方面仍难免会有不一致的地方,我们期待你们的反馈,以便将来改进。 你的好,我永远记得! 双狼的感恩 双狼的本次合作起于机械工业出版社编辑吴怡的邀请。作为ThoughtWorks的Tech Lead,双狼都有很多工作任务,原定6个月的写书计划,被拖到了8个月,感谢吴怡的耐心与推动。 还有很多ThoughtWorker为本书做出了贡献: 张逸,资深ThoughtWorker,很多技术书籍的作者或译者。一直在鼓励我们,并给了我们很多帮助。 彭洪伟,本书的第三作者。在交稿压力最大的时候,承担了“工具”篇的撰写工作,保障了本书的尽早交稿。 陈嘉,幕

13、后的贡献者,全栈式工程师。帮我们设计了“双狼说”微信公众号的Logo,从技术的角度帮我们审稿,并提了一些非常有用的建议。 还有很多ThoughtWorker和社区朋友帮助我们从技术层面和语言层面进行修改。他们有的是Angular专家,有的是新手,给了我们比较全面的反馈。能将枯燥、乏味的技术平易近人地展现在这本书 中,一定要感谢他们所作出的奉献。他们是(排名不分先后):冯尔东、朱本威、李科伟、杨琛、彭琰、叶志敏、ng群as。 还要感谢Angular中文社区QQ群和关注“双狼说”微信号的网友们,是你们的鼓励给了我们写作的信心和动力! 雪狼的感恩 开始写书的时候,刚刚认识我的女友娜娜,今天,我们即将

14、走进婚姻的殿堂。我这样一个负情商的程序员,生活有多么枯燥乏味,不问可知。感谢你点亮了我的人生。你的好,我永远记得! 能专注开发17年,要感谢我父母和弟弟的支持。人到中年,本应是最纠结的时丛书序 宝剑锋从磨砺出 梅花香自苦寒来 当前,软件开发行业对人才的需求越来越大,所以有越来越多的人开始学习编程,越来越多的电脑学校和培训班开设了编程类课程,图书市场上也涌现出大量的计算机编程类图书,有入门的、高端 的、专项技术的,等等。但如此琳琅满目的图书,却并不容易找到非常适合入门人员阅读的图书。通过对已出版图书的分析和研究,我们得出结论:编排不科学,没有注意到入门人员的学习需求和规律是 最大的问题所在,因此

15、导致很多图书都不适合入门人员阅读和学习。 为了给广大入门读者提供一套易学好用的编程图书,我们策划了本丛书,希望在本丛书的带领下,读者可以轻松跨入计算机程序设计的大门。本丛书在编写时考虑到了入门读者学习的难点,力求通俗 易懂,将学习的门槛降到最低。另外,本丛书在策划时考虑了相关学校和培训机构的课程设置,适合作为相关教材。 丛书书目 C语言从入门到精通(视频实战版) C+语言从入门到精通(视频实战版) Java从入门到精通(视频实战版) C#4.0从入门到精通(视频实战版) Visual C+从入门到精通(视频实战版) ASP.NET 4.0从入门到精通(视频实战版) Java Web从入门到精通

16、(视频实战版) JavaScript从入门到精通(视频实战版) ActionScript 3.0从入门到精通(视频实战版) Oracle从入门到精通(视频实战版) 丛书特色 1.全程多媒体语音教学视频 本丛书的每一本图书都配有多媒体语音教学视频,读者通过书盘结合,可以轻松地掌握书中的内容。 2.内容编排科学,避免读者走弯路 本丛书遵循“基本概念语法讲解示例讲解实践练习”的模式,全书最后还安排了项目开发案例。这样的内容安排符合读者的学习规律,可以避免读者走弯路。 3.讲解通俗易懂,易于理解 本丛书在讲解知识时采用通俗易懂的语言,必要时采用比喻和类比等写作手法,让抽象的编程知识变得具体化,读者理解

17、起来毫不费力。 4.给出了大量实例,实用性强 本丛书在讲解过程中穿插了大量有针对性的实例,并且提供了项目开发案例,读者可以通过学习实例,加深对概念和语法的理解,并且通过项目开发演练,理解实际开发。 5.代码注释丰富,易于阅读 本丛书中出现的源代码都为关键代码,这些代码都提供了丰富的注释,读者阅读起来比较容易理解,学习效果好。 6.光盘内容实用、超值 本丛书的配套光盘中提供了教学视频、书中涉及的源代码、教学PPT,还特别赠送了一些相关的编程视频和其他学习资料。 7.提供技术支持 读者如果在阅读过程中遇到问题,可以通过技术论坛寻求支持,论坛地址: 。 阅读建议 没有基础的读者从第1章顺次阅读,尽量

18、不要跳跃。 重视对书中概念的理解,这样才能为后面的学习打好基础。 亲自动手将书中的实例做一遍,以加深对内容的理解。 认真阅读书中的源代码,养成良好的编码习惯,这会让您大大受益。 尝试学完每章后独立完成书中提供的习题。 不妨经常回过头来回顾一下已经学过的知识,也许会有一种新的认识。 遇到问题时,学会利用网络资源解决。 希望本丛书能解决您在学习程序设计的过程中遇到的各种疑难问题,带领您轻松跨入编程的大门,为未来的职业发展奠定一个好的基础。 前言 本书是Java语言的入门教程,它面向的对象是Java语言的初学者或正在学习Java语言而对某些内容需要重新学习的初级程序员。本书在讲解方式上注重循序渐进,

19、读者只要认真学习了Java技术概要知 识和基础知识就可以无障碍地学习后面章节的内容。本书在每章内容的介绍上也体现了这种循序渐进的思想。 正因为是面向初学者,所以本书提供了大量的示例程序、运行结果,同时对示例程序都有详细的注释。只要读者基本领会理论知识的相关内容,再阅读并亲自运行示例程序就很容易掌握那些理论知 识。笔者在示例程序的选用和注释方面都充分考虑了初学者的特点,要求读者掌握的内容也都在示例程序中体现了出来。 本书介绍的Java语言知识领域比较全面,读者可以通过循序渐进的方式初步理解和使用Java语言。在Java技术入门篇讲述了各种数据类型、数组、控制流程和各种容器。在面向对象技术篇讲述了

20、面向 对象的基本概念,如对象、类、封装、继承、多态等。在Java编程篇中讲述了多线程编程、JDBC连接数据库、捕获异常、I/O处理以及Java Swing编程。在Java分布式计算技术篇讲述了网络编程、JSP技 术、Java Bean技术、Servlet技术、RMI技术以及目前流行的XML技术。在Java编程实例篇笔者根据自己的实际项目经验从无到有设计了一个基于Java语言的应用程序(包括客户端和服务器端),使读者 可以清楚地了解如何使用Java语言从事实际的项目开发。 本书特点 本书深入浅出地讲解了Java语言的各个方面,以及目前流行的XML技术。“深入”体现在笔者对于Java语言高级部分的

21、深入讨论上,“浅出”体现在对这些高级部分的讲解采用更加易于理解的方式 上,示例丰富,而且示例代码都有详细的注释。读者只要阅读一下示例代码再尝试运行一下程序就很容易掌握相应的内容。笔者把自己多年的Java语言开发经验融入了本书,解决了初学者学习Java语言时 容易遇到的问题。本书在每章的最后都给出了注意事项,帮助初学者在学习中有所侧重。 本书基本涵盖了Java语言各个方面的知识,从Java语言基础到面向对象编程,从Java语言的高级主题到分布式计算,讲述了网络编程、数据库编程、I/O处理以及Java Swing编程,讲解了JSP技术、 Servlet技术、RMI技术以及Java Bean技术,还

22、介绍了当前流行的XML技术。 本书的特点主要体现在以下几个方面: 本书的编排采用循序渐进的方式,示例程序丰富,注释清晰,适合初中级读者逐步掌握Java语言的基础知识以及提高使用Java语言编写应用程序的能力。 本书结合笔者学习和使用Java语言的经验,深入浅出地介绍Java语言的各个方面的知识,概念清晰,学习门槛低,入门容易,在每章的最后还指出了初学者的注意事项。 本书在介绍示例程序时,采用了浅显易懂的例子。对于复杂的例子,尽量对示例进行功能分解,使示例程序简短精悍,并且都有注意、技巧和说明之类的提示,帮助读者从所讲内容中获得更多的知 识。 为了方便读者自己进行实践和演练,本书的所有源代码和各

23、种相关文件都附在随书的光盘中。 本书除介绍Java语言各个方面的知识外,还适当加入了当前流行的XML语言,使读者在学习Java语言基础知识和各种高级主题后,可更加全面地了解XML语言同Java语言结合的强大功能。 本书结合笔者多年的学习和开发经验,在各个章节的讲解中能从初学者的角度出发,充分考虑了初学者的特点,使读者入门更容易,能够轻松上手编写Java程序。 本书内容安排 本书共分为5篇,共23章,从Java技术入门讲起,使读者可以轻松地进入Java世界,继而介绍面向对象技术,使初学者可以把握面向对象技术的核心概念和应用,为熟练使用Java语言提供理论支持。 本书的Java编程篇为读者进一步学

24、习Java语言提供了丰富的内容,在学完基础知识后,通过Java编程篇来提高Java语言的应用技能。网络应用是Java具有竞争力的领域,感兴趣的读者可以通过有关Java分 布式计算技术的内容获得深刻的认识。最后介绍了一个完整的Java编程实例,说明从软件需求到软件实现所经历的各个阶段,让读者在实际的项目中体会如何使用Java语言开发软件,使读者应用Java语言 的水平得以不断提高。 第一篇(第1章第7章)Java技术入门。 讲述了初学者需要掌握的基本概念和基本应用,通过具体的实例程序使读者对Java语言的应用结构有初步的理解,同时还介绍了Java语言的基础知识,这些知识是进一步学习和编写Java

25、程序的基础, 包括Java语言概述、Java技术基础、数组、程序控制流程、字符串操作和各种容器等。 第二篇(第8章第9章)面向对象技术。 讲述了面向对象技术的基本概念,以及对象的初始化过程与对象的清理过程,包括对象的概念、类的概念、包的概念以及多态、接口和访问权限等。这两章的知识是读者掌握面向对象技术基本概念的 基础,也是程序员提高面向对象编程语言的编程能力的必备知识。 第三篇(第10章第14章)Java编程。 具体讲述了Java多线程编程、数据库连接、异常处理以及输入/输出处理和Java Swing编程,帮助读者在掌握Java基础知识的基础上进一步提高Java语言的应用能力。本篇讲述的内容在

26、实际项目中的应 用很广泛,是提高读者Java语言实际应用能力的核心知识。 第四篇(第15章第20章)Java分布式计算技术。 主要介绍了网络编程、RMI技术,这是典型的分布式计算应用技术,并介绍了和Web紧密联系的JSP技术、Servlet技术、Java Bean技术,这些技术在Web相关的编程领域中有广泛的应用。同时本篇 还介绍了当前流行的XML技术,虽然该技术和Java语言没有本质的联系,但是该技术在Java语言中获得了很好的支持并且在Java开发中提供了很好的技术解决方案。 第五篇(第21章第23章)Java编程实例。 主要介绍了笔者在实际工作中开发的软件,这是一个基于客户端/服务器端通

27、信的案例,是日常生活中经常用到的QQ软件。本篇对从分析设计到代码实现的全过程都进行了详细的讲解,为读者从事实 际的项目开发提供了实战经验。 适合阅读本书的读者 希望进入Java程序员行列的初学者。 具备一定的基础知识,需要提高Java语言应用技能的程序员。 正在学习Java语言的高校学生。 希望了解Java语言的项目管理人员。 各种培训学校的学生和讲师。 本书作者 本书由陈浩主编,其他参与编写和资料整理的人有高会东、王建超、邓薇、黄丽莉、吝晓宁、汪洋、白广元、蔡念光、陈辉、冯彬、刘长江、刘明、沙金、张士强、张洪福、多召英、贾旭、李宽、江 宽、陈科、方成林、班晓娟、方中纯、刘兰军、郑雪峰。 编者

28、 第一篇 Java技术入门 第1章 Java语言概述 本章主要介绍什么是Java语言,以及Java语言具有哪些特点。在讲解的时候,为了能突出Java语言的特点,详细地分析了它与C/C+语言的区别。另外,本章还为初学者特意安排了一节,针对如何学 习Java语言,提出了一些中肯的建议。 本章主要介绍的内容有: Java语言与C、C+语言的区别 Java语言的特点 Java的不同版本 面向对象程序设计的原理 第一篇 Java技术入门 第1章 Java语言概述 本章主要介绍什么是Java语言,以及Java语言具有哪些特点。在讲解的时候,为了能突出Java语言的特点,详细地分析了它与C/C+语言的区别。

29、另外,本章还为初学者特意安排了一节,针对如何学 习Java语言,提出了一些中肯的建议。 本章主要介绍的内容有: Java语言与C、C+语言的区别 Java语言的特点 Java的不同版本 面向对象程序设计的原理 1.1 Java的语言特点 Java是由Sun公司开发的一种语言,是一种面向对象的编程语言。它在很多方面与C/C+相似,但在实际编程时又有很多区别。下面通过对它们的比较,来了解Java语言的特点。 1.1.1 Java语言与C/C+的区别 首先应该清楚,Java是由C+发展而来的,保留了C+的大部分内容,其编程方式也类似于C+。但Java的句法更清晰、规模更小、更易学。Sun公司对多种程

30、序设计语言进行了深入研究,摒弃了其 他语言的不足之处,最终开发出了Java。正因为这样,Java从根本上解决了C+的固有缺陷,形成了一种新的完全面向对象的语言。 Java和C/C+的相似之处多于不同之处,有C/C+语言基础的读者,学习Java会更容易。相比较而言,Java的编程环境更为简单。因篇幅所限,这里不能列出全部的不同之处,仅列出一些比较显著的 区别。 指针:Java没有指针的概念,从而有效地防止了在C/C+语言中容易出现的指针操作失误的问题(如指针悬空所造成的系统崩溃)。在C/C+中,指针操作内存时,经常会出现错误。在Java中没有指 针,更有利于保证Java程序的安全。 多重继承:C

31、+支持多重继承,它允许多父类派生一个子类。也就是说,一个类允许继承多个父类。尽管多重继承功能很强,但使用复杂,而且会引起许多麻烦,编译程序实现它也很不容易。所以 Java不支持多重继承,但允许一个类实现多个接口。可见,Java既实现了C+多重继承的功能,又避免了C+的许多缺陷。 数据类型:Java是完全面向对象的语言,所有方法和数据都必须是类的一部分。除了基本数据类型之外,其余类型的数据都作为对象型数据。例如对象型数据包括字符串和数组。类将数据和方法结合 起来,把它们封装在其中,这样每个对象都可实现具有自己特点的行为。而C+将函数和变量定义为全局的,然后再来调用这些函数和变量,从而增加了程序的

32、负担。此外,Java还取消了C/C+中的结构 和联合,使编译程序更简洁。 自动内存管理:Java程序中所有的对象都是用new操作符建立在堆栈上的,这个操作符类似于C+的“new”操作符。Java自动进行无用内存回收操作,不需要程序员手工删除。当Java中的一个对象不 再被用到时,无须使用内存回收器,只需要给它加上标签以示删除。无用内存的回收器在后台运行,利用空闲时间工作。而C+中必须由程序释放内存资源,增加了程序设计者的负担。 操作符重载:Java不支持操作符重载。操作符重载被认为是C+的突出特征。在Java中虽然类可以实现这样的功能,但不支持操作符重载,这样是为了保持Java语言尽可能简单。

33、 预处理功能:C/C+在编译过程中都有一个预编译阶段,即预处理器。预处理器为开发人员提供了方便,但增加了编译的复杂性。Java允许预处理,但不支持预处理器功能,因为Java没有预处理器, 所以为了实现预处理,它提供了引入语句(import),该语句与C+预处理器的功能类似。 Java不支持默认函数参数而C+支持:在C语言中,代码组织在函数中,函数可以访问程序的全局变量。C+中增加了类,提供了类算法,该算法是与类相连的函数,C+中的类方法与Java中的类方 法十分相似。由于C+仍然支持C语言,所以C+程序中仍然可以使用C语言的函数,结果导致函数和方法混合使用,使得C+程序比较混乱。Java没有函

34、数。作为一种比C+更纯粹的面向对象的语言,Java 强迫开发人员把所有例行程序包括在类中。事实上,用方法实现例行程序可激励开发人员更好地组织编码。 字符串:C和C+不支持字符串变量,在C和C+程序中使用“Null”终止符代表字符串的结束。在Java中字符串是用类对象(String和StringBuffer)来实现的,在整个系统中建立字符串和访问字符串 元素的方法是一致的。Java字符串类是作为Java语言的一部分定义的,而不是作为外加的延伸部分。此外,Java还可以对字符串用“+”进行连接操作。 goto语句:“可怕”的goto语句是C和C+的“遗物”。它是C/C+语言技术上的合法部分,但引用

35、goto语句造成了程序结构的混乱,不易理解。goto语句一般用于无条件转移子程序和多结构分支技 术。Java不提供goto语句,它虽然指定goto作为关键字,但不支持它的使用,这使程序更简洁易读。 类型转换:在C/C+中,有时出现数据类型的隐含转换,这就涉及了自动强制类型转换问题。例如,在C+中可将一个浮点值赋予整型变量,并去掉其尾数。Java不支持C+中的自动强制类型转 换,如果需要,必须由程序显式进行强制类型转换。 1.1.2 Java面向对象的特性和多态性 Java是一种跨平台、适合于分布式计算机环境的面向对象编程语言。具体来说,它具有如下特性:简单性、面向对象、分布式、解释性、可靠、安

36、全、平台无关、可移植、高性能、多线程、动态性 等。下面将重点介绍Java语言的面向对象、平台无关、分布式、多线程、可靠和安全等特性。 面向对象其实是现实世界模型的自然延伸。现实世界中的任何实体都可以看作是对象,对象之间通过消息相互作用。另外,现实世界中任何实体都可归属于某类事物,任何对象都是某一类事物的实 例。如果说传统的过程式编程语言是以过程为中心,以算法为驱动的话,那面向对象的编程语言就是以对象为中心,以消息为驱动。用公式表示,过程式编程语言为:“程序算法数据”;面向对象编 程语言为:“程序对象消息”。 所有面向对象编程语言都支持3个概念:封装、多态性和继承,Java也不例外。现实世界中的

37、对象均有属性和行为映射到计算机程序上。属性表示对象的数据,行为则表示对象的方法。 封装是用一个自主式的框架,把对象的数据和方法连接在一起,形成一个整体。对象支持封装,是封装的基本单位。Java语言的封装性较强,因为Java无全程变量,无主函数。在Java中,绝大部分成 员是对象,只有简单的数字类型(字符类型和布尔类型除外)。对于这些类型,Java提供了相应的对象类型包装,以便与其他对象交互操作。有关封装的原理如图1.1所示。 多态性就是多种表现形式。具体来说,可以用“一个对外接口,多个内在实现方法”表示。举一个例子,计算机中的堆栈可以存储各种格式的数据,包括整型、浮点型或字符型。不管存储的是何

38、种数 据,堆栈的算法实现都是一样的。针对不同的数据类型,编程人员不必手工选择,只需要使用统一方法名(参数不同),系统便可以自动选择。运算符重载一直被认为是一种优秀的多态机制体现。由于考 虑到运算符重载会使程序变得难以理解,所以Java最终还是把它取消了。有关多态的原理如图1.2所示。 图1.1 封装的原理示意图 图1.2 多态的原理示意图 继承是指一个对象直接使用另一个对象的属性和方法。事实上,现实生活中遇到的很多实体,都具有继承的含义。例如,把汽车看成一个实体,它可以分成多个子实体,如轿车、公交汽车等。以上子 实体都具有汽车的特性,因此汽车是它们的“父亲”,而这些子实体则是汽车的“孩子”。子

39、类可以继承父类的属性和方法。与其他面向对象编程语言不同,Java只支持单一继承。有关继承的原理如图1.3 所示。 图1.3 继承的原理示意图 1.1.3 Java的平台无关性 Java的平台无关性是指用Java写的应用程序不用修改,就可以在不同的软硬件平台上运行。平台无关有两种:源代码级和目标代码级。C/C+具有一定程度的源代码级平台无关。源代码级平台无关表 明了用C/C+写的程序无需修改,只需重新编译就可以在不同平台上运行。 Java主要靠Java虚拟机JVM(Java Virtual Machine),与目标代码及实现平台无关。JVM是一种抽象机器,附着在具体操作系统之上。它本身具有一套虚

40、拟机器指令,并有自己的栈、寄存器组等。 JVM通常是在软件上而不是在硬件上实现的。 目前,Sun系统公司已经设计实现了Java芯片,这些芯片主要使用在网络计算机上。另外,Java芯片的出现也会使Java更加容易嵌入到家用电器中。在JVM上,有一个Java解释器,用它来解释Java编 译器编译后的程序。Java编程人员在编写完软件后,通过Java编译器,将Java源程序编译为JVM的字节代码。任何机器只要配备了Java解释器,就可以运行这个程序,而不管这种字节码是在何种平台上生 成的。有关Java平台无关性的原理如图1.4所示。 图1.4 Java平台无关性示意图 另外,Java采用的是基于IE

41、EE标准的数据类型,通过JVM保证数据类型的一致性,也确保了Java的平台无关性。 Java的平台无关性具有深远意义。首先,它的出现使编程人员梦寐以求的事情变成了事实,这将大大地加快和促进软件产品的开发。其次,Java的平台无关性正好迎合了“网络计算机”的思想。 如果常用的应用软件都使用Java重新编写,并且放在某个Internet服务器上,那么具有网络计算机的用户,将不需要占用大量空间安装软件,他们只需要一个Java解释器,每当需要使用某种应用软件 时,下载该软件的字节代码即可,其运行结果也可以发回服务器。目前已有数家公司开始使用这种新型的计算机模式,以构筑自己的信息系统。 1.1.4 Ja

42、va分布式应用和多线程的特点 本节讲述Java程序的分布式和多线程的特点。分布式包括数据分布和操作分布。数据分布是指数据可以分散在网络的不同主机上。操作分布是指把一个计算分散在不同主机上处理。 Java支持客户机/服务器计算模式,因此它支持这两种分布。对于数据分布,Java提供了一个叫做URL的对象,利用这个对象,可以打开并且访问具有相同URL的对象,访问方式与访问本地文件系统相 同。对于操作分布,Java的Applet小程序可以从服务器下载到客户端,即部分计算在客户端进行,以提高系统执行效率。有关分布式的原理如图1.5所示。 图1.5 分布式示意图 Java提供了一整套网络类库,开发人员可以

43、利用这些类库进行网络程序设计,方便地实现Java的分布式特性。 线程是操作系统的一种新概念,又被称做轻量进程,是比传统进程更小的,并且可以并发执行的单位。C/C+采用单线程系统结构,而Java提供了多线程的支持。 Java在两方面支持多线程: 1)Java环境本身就是多线程的。若干个系统线程运行,负责必要的无用单元回收、系统维护等系统级操作。 2)Java语言内置多线程控制,可以大大简化多线程应用程序的开发。 Java提供了一个Thread类,由它负责启动、运行、终止线程,并且可以检查线程状态。Java线程还包括一组同步原语,这些原语负责对线程实行并发控制。利用Java的多线程编程接口,开发人

44、员可以 方便地写出支持多线程的应用程序,从而提高程序执行的效率。Java的多线程在一定程度上受运行时所在平台的限制。如果操作系统不支持多线程,那么Java程序的多线程特性就不能表现出来。 1.1.5 Java程序的可靠性、安全性 本节将详细讲述Java的可靠性和安全性。Java最初的设计目的是用于电子类消费品,因此要求较高的可靠性。Java虽然源于C+,但它消除了许多C+不可靠的因素,可以避免许多编程错误。 它的可靠性和安全性表现在如下几点: Java是强类型的语言,要求用显式的方法声明。这样保证了编译器可以发现方法调用错误,保证程序更加可靠。 Java不支持指针,杜绝了内存的非法访问。 Ja

45、va的自动单元收集功能,可以防止内存丢失等动态内存分配导致的问题。 Java解释器运行时实施检查,可以发现数组和字符串访问越界。 Java提供了异常处理机制。程序员可以把一组错误代码放在一个地方,这样可简化错误处理任务,便于恢复。 由于Java主要用于网络应用程序开发,因此对安全性有较高的要求。如果没有安全保证,用户从网络下载程序执行就非常危险。Java通过自己的安全机制,防止了病毒程序的产生,以及下载程序对本 地系统的威胁破坏。 当Java字节码进入解释器时,首先必须经过字节码校验器的检查,然后Java解释器将决定程序中类的内存布局。随后,类装载器负责把来自网络的类装载到单独的内存区域,避免

46、应用程序之间相互干 扰破坏。最后,客户端用户还可以限制从网络上装载的类只能访问某些文件系统。上述几种机制结合起来,使得Java成为安全的编程语言。 1.1.6 Java小程序和应用程序 用Java可以写两种类型的程序:小程序和应用程序。小程序就是指嵌入在网页文档中的Java程序,而应用程序就是指在命令行中运行的程序。对Java而言,对小程序的大小和复杂性都没有限制。事实 上,Java小程序在有些方面比Java应用程序更加强大。目前,由于Internet通信速度有限,因此大多数小程序规模较小。小程序和应用程序之间的技术差别就在于运行环境。Java应用程序运行在最简单的 环境中,它的唯一外部输入就

47、是命令行参数。另一方面,Java小程序需要来自Web浏览器的大量信息。它需要知道何时启动、何时放入浏览器窗口、何处和何时激活关闭等。运行环境不同的是Java应用程 序和Java小程序这两类程序最大的不同。 1.2 Java的不同版本 Java拥有不同的版本,各种版本适合在什么样的场合使用呢?下面将详细介绍这些版本。 Java Developers Kits(JDK):JDK是指Java开发工具箱,是Sun公司发布的Java最初版本。自从Java 1.2发布后,Java改名为Java 2,相应的JDK也就改名为J2SE。 Java SDK Micro Edition(J2ME):此版本用来开发掌

48、上电脑、手机等移动通信设备。现阶段,并不是所有移动设备都支持Java,只有具备其运行环境的设备才能运行它。 Java SDK Standard Edition(J2SE):主要用于开发一般的台式机应用程序,平时说的JDK其实就是指J2SE,本书也是围绕它来讲述的。 Java SDK Enterprise Edition(J2EE):用于开发分布式的企业级大型应用程序,其中的核心被称为EJB(Enterprise Java Beans)。 1.3 如何才能学好Java 如何学习Java?这个问题应该上升到如何学习程序设计这种境界。实际上,学习程序设计也可以说是接受一种编程思想。各种语言的程序设计

49、思想都大同小异,只是有一些由语言特性而带来的细微差 别,比如Java中的“Interface(接口)”,可能在以前的学习中没有碰到过。以下详细介绍几点: 必须明确一个大方向,也就是说在面向对象的编程范畴中,进行学习与研究。目前最流行的面向对象编程语言就是C+和Java,所以先锁定这两个目标。 掌握Java的精华特性,而且一定要知道为什么。比如,Interface和Multi-thread(多线程)。用Interface是更好地使用多继承的模型,而多线程则涉及并发的特性。要完全理解Interface是什么、用多线程 有几种常用的编程模型等。 理解了语言的特性之后,就可以试着上升到设计这个层次,毕竟学习语言是为了应用。目前,比较好的开发模式是采用自顶向下、结合MVC模式的设计。首先要找出最顶层的对象(这往往是最难 的),然后一层一层往下递归。所以说,一般有图形用户界面的程序应从界面开始设计。 有了基本设计模型后,可以学一些设计模


注意事项

本文(Spark大数据处理:技术、应用与性能优化.html.pdf)为本站会员(始于喜欢终于深爱)主动上传,文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文库网(点击联系客服),我们立即给予删除!




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

文库网用户QQ群:731843829  微博官方号:文库网官方   知乎号:文库网

Copyright© 2025 文库网 wenkunet.com 网站版权所有世界地图

经营许可证编号:粤ICP备2021046453号   营业执照商标

1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png 9.png 10.png