《【精品】java 实用程序设计(西电版第12章 java与数据处理精品ppt课件.ppt》由会员分享,可在线阅读,更多相关《【精品】java 实用程序设计(西电版第12章 java与数据处理精品ppt课件.ppt(131页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Java 实用程序设计(西电版)第12章 Java与数据处理2 2第 12 章 Java 与数据处理12.1 Java数据库编程Java包含了Java编译器、解释器、工具集、应用编程接口以及集成编译环境等。Java的高速发展,尤其是各类库文件以及应用编程接口(API)的高速发展,不断扩展了Java的功能与使用范围。其中一个最重要的应用编程接口便是Java数据库连接API,即JDBC(Java Data Base Connectirity)。JDBC的最主要作用便是将Java程序与数据库系统连接,使得Java程序员可以用Java代码直接对数据库进行操作。3 3第 12 章 Java 与数据处理1
2、.JDBC简介根据具体应用,JDBC可以有不同的理解:(1)它是Java Applets以及应用程序在使用数据源时遵循的标准;(2)它是Java程序使用底层JDBC驱动的应用编程接口;(3)它是Java程序创建底层JDBC驱动的应用编程接口,借助该驱动可以实现对数据库的连接及事务处理;(4)它基于SQL的调用级接口,定义了C/S框架交互在数据库系统中的具体实现形式。4 4第 12 章 Java 与数据处理2.JDBC的设计JDBC整体结构的设计包括以下两个关键要素:(1)JDBC的目的是提供一个独立的DBMS接口,一个“普适性的SQL数据库访问框架”,以及一个访问不同数据源的统一接口。(2)程
3、序员只需要利用JDBC编写一个数据库访问接口,便可使得程序可以不经修改地访问多个不同数据源。5 5第 12 章 Java 与数据处理图12-1 JDBC的架构示意图6 6第 12 章 Java 与数据处理7 7第 12 章 Java 与数据处理8 8第 12 章 Java 与数据处理9 9第 12 章 Java 与数据处理10 10第 12 章 Java 与数据处理3.利用JDBC进行数据库连接首先,需要有一个数据库,如IBM DB2、Microsoft SQL Server、MySQL、Oracle等,并用这些数据库软件创建一个数据库存储数据,当然也可以连接一个远程数据库。而如何利用数据库软
4、件建立数据库不是本书所讨论的范畴。其次,当有了数据库实例后,需要一个数据库URL用来指定数据源的地址、端口以及数据库名,如例12-1中的jdbc:mysql:/127.0.0.1/myDB。其中,mysql指用来连接到数据库的具体驱动程序;:/的内容格式由具体驱动程序确定,这里需要指明数据库服务器的地址、端口及数据库名。11 11第 12 章 Java 与数据处理12 12第 12 章 Java 与数据处理13 13第 12 章 Java 与数据处理4.基于JDBC的SQL操作在利用DriverManager类的静态方法getConnection获得Connection对象后,我们便可以利用C
5、onnecion类的createStatement()方法创建Statement对象实例。如:Statement stat=conn.createStatement();所有的SQL命令都可以通过Statement类的具体方法来执行。如例12-2中的:String updatestat=“UPDATE movies SET movie_name=星际穿越 WHERE movie_id=2”);Stat.executeUpdate(updatestat);14 14第 12 章 Java 与数据处理15 15第 12 章 Java 与数据处理16 16第 12 章 Java 与数据处理17 17
6、第 12 章 Java 与数据处理18 18第 12 章 Java 与数据处理19 19第 12 章 Java 与数据处理2020第 12 章 Java 与数据处理21 21第 12 章 Java 与数据处理12.2 Java与XML今天的Web应用面临的问题之多是之前所无法想象的,因此要求具有远程传送功能的系统必须能快速运行。对于大型系统、数据库、目录服务器和应用软件中的数据,其中任何一环都不容许出错,且需要良好和规范的组织并支持便捷的修改功能。应用软件系统不仅要能跨技术,还要能跨企业进行信息交流。数据传输及数据存储问题,已经成为所有正在着手开发的应用的主题。2222第 12 章 Java
7、与数据处理2323第 12 章 Java 与数据处理1.XML文档的解析与验证在程序化处理XML时,首先要做的是获取一个XML文档并解析它。当该文档被解析后,其中的数据对使用了解析器的应用程序就可用了。通常利用XML解析器对文档进行解析,应用程序就是通过解析器提供的API得到XML数据的。2424第 12 章 Java 与数据处理2525第 12 章 Java 与数据处理1)DOMDOM定义了访问诸如XML和XHTML文档的标准。W3C组织以IDL(Interface Definition Language,接口定义语言)的形式定义了DOM中的接口。某种语言要实现DOM,需要将DOM接口转换为
8、本语言中的适当结构。2626第 12 章 Java 与数据处理2727第 12 章 Java 与数据处理在javax.xml.parsers包中定义了DOM解析器工厂类DocumentBuildFactory,用于产生DOM解析器。DocumentBuildFactory是一个抽象类,在这个类中提供了一个静态的方法newInstance(),用于创建工厂类的一个实例,形式如下:DocumentBuildFactory factory=DocumentBuildFactory.newInstance();DoucmentBuild build=factory.newDocumentBuilder
9、();2828第 12 章 Java 与数据处理图12-2 DOM中表示XML文档中各组成部分的接口关系2929第 12 章 Java 与数据处理3030第 12 章 Java 与数据处理31 31第 12 章 Java 与数据处理3232第 12 章 Java 与数据处理3333第 12 章 Java 与数据处理3434第 12 章 Java 与数据处理2)SAX在使用DOM解析XML文档时,需要读入整个XML文档,然后在内存中创建DOM树,生成DOM树上的每个节点对象。只有在整个DOM树创建完成后,才能进行其他的操作。当XML文档比较大时,构建DOM树将花费大量的时间和内存。而使用SAX允
10、许我们在读取文档的时候对该文档进行处理。3535第 12 章 Java 与数据处理3636第 12 章 Java 与数据处理3737第 12 章 Java 与数据处理3838第 12 章 Java 与数据处理JAXP也为SAX解析器提供了工厂类SAXParserFactory类。SAX解析器工厂类的实例与DOM解析器工厂类的实例类似,都是通过newInstance()方法来创建的。JAXP中定义的SAX解析器类是SAXParser(相当于DOM中的DocumentBuilder类,获取方法也类似)。实际上SAXParser是JAXP对XMLReader实现类的一个包装类。在SAXParser中
11、定义了返回XMLReader实例的方法getXMLReader()。public abstract XMLReader getXMLReader();3939第 12 章 Java 与数据处理XMLReader和SAXParser中都有parse()方法,并且是等效的。但SAXParser中的parse()方法使用范围更广,因为它能接收更多的参数,并对不同的XML文档数据源进行解析。4040第 12 章 Java 与数据处理41 41第 12 章 Java 与数据处理4242第 12 章 Java 与数据处理4343第 12 章 Java 与数据处理4444第 12 章 Java 与数据处理4
12、545第 12 章 Java 与数据处理2.XML文档及XST格式定义文件前文说过,XML文档的标签集是自定义的,那么对于给定的XML文档,其标签集的意义需要用DTD(Document Type Definition)或XST文件来描述,这样的文件同时也被用来约束XML,保证XML文档的有效性。一个有效的XML文档必须满足它引用的DTD或者模式中设置的所有约束条件。4646第 12 章 Java 与数据处理4747第 12 章 Java 与数据处理4848第 12 章 Java 与数据处理4949第 12 章 Java 与数据处理例12-12 sample.dtd:DTD文件示例1。5050第
13、 12 章 Java 与数据处理DTD还可以对属性进行定义,其语法如下:属性类型可以是:(1)CDATA:最普通的字符串;(2)枚举,即(值1|值2|值3),需要括号;(3)ID:属性值需要以字母或下划线开头。51 51第 12 章 Java 与数据处理属性说明可以是:(1)#REQUIRED:必须设置;(2)#IMPLED:可选值,即此属性可以设置,也可以不设置;(3)#FIXED:固定值,通常语法为:#FIXED“固定值”;(4)默认值。5252第 12 章 Java 与数据处理5353第 12 章 Java 与数据处理此外,DTD还可对实体进行定义,实体类似于一个可重用常量,或者说是an
14、t中的classpath,可以被引用,其语法如下:引用实体语法:&实体名称;注意:最后的“;”为必需。5454第 12 章 Java 与数据处理5555第 12 章 Java 与数据处理3.JDOM DOM和SAX虽然都能够实现对XML文档的操作,但是缺陷也是明显的。5656第 12 章 Java 与数据处理5757第 12 章 Java 与数据处理5858第 12 章 Java 与数据处理4.JSON格式规范与解析JSON是一个新的可读性强的数据格式,近年来非常受欢迎,尤其是在Web开发中,可以很容易使用JSON中的信息填充一个Web页面。JSON和XML非常相似,它们都试图建立一种简单、人
15、类可读的数据存储格式。对于那些需要迅速发送一小部分数据的系统,在大多数情况下,XML的API已经做得很好。那么,为什么还需要JSON?5959第 12 章 Java 与数据处理6060第 12 章 Java 与数据处理61 61第 12 章 Java 与数据处理6262第 12 章 Java 与数据处理6363第 12 章 Java 与数据处理6464第 12 章 Java 与数据处理6565第 12 章 Java 与数据处理6666第 12 章 Java 与数据处理6767第 12 章 Java 与数据处理6868第 12 章 Java 与数据处理6969第 12 章 Java 与数据处理7
16、070第 12 章 Java 与数据处理5.其他XML和JSON解析库除DOM、SAX、JDOM之外,其他的XML解析工具还有DOM4J等。DOM4J也是一个非常流行的处理XML的Java API,典型的应用包括Sun的JAXM等。71 71第 12 章 Java 与数据处理7272第 12 章 Java 与数据处理7373第 12 章 Java 与数据处理7474第 12 章 Java 与数据处理7575第 12 章 Java 与数据处理7676第 12 章 Java 与数据处理7777第 12 章 Java 与数据处理7878第 12 章 Java 与数据处理7979第 12 章 Java
17、 与数据处理8080第 12 章 Java 与数据处理81 81第 12 章 Java 与数据处理8282第 12 章 Java 与数据处理8383第 12 章 Java 与数据处理8484第 12 章 Java 与数据处理8585第 12 章 Java 与数据处理8686第 12 章 Java 与数据处理8787第 12 章 Java 与数据处理8888第 12 章 Java 与数据处理8989第 12 章 Java 与数据处理9090第 12 章 Java 与数据处理91 91第 12 章 Java 与数据处理9292第 12 章 Java 与数据处理9393第 12 章 Java 与数据
18、处理9494第 12 章 Java 与数据处理9595第 12 章 Java 与数据处理9696第 12 章 Java 与数据处理9797第 12 章 Java 与数据处理9898第 12 章 Java 与数据处理9999第 12 章 Java 与数据处理100100第 12 章 Java 与数据处理101101第 12 章 Java 与数据处理102102第 12 章 Java 与数据处理103103第 12 章 Java 与数据处理104104第 12 章 Java 与数据处理105105第 12 章 Java 与数据处理106106第 12 章 Java 与数据处理107107第 12
19、章 Java 与数据处理108108第 12 章 Java 与数据处理12.3 Java与大数据处理Google在2001年发布图像搜索功能时,只有2.5亿索引图像,不到10年,这个巨大的搜索功能已经可以检索超过100亿个图像了,每分钟有35小时的内容上传到YouTube。据称,Twitter每天平均处理5500万tweet。109109第 12 章 Java 与数据处理1.MapReduce框架简介确切地说,MapReduce是一个被应用多次的编程框架,程序员可以利用一个MapReduce实现来管理很多个海量计算任务,而且可以对硬件问题有较好的容错率。而我们所需要做的仅仅是写两个函数,分别是
20、Map和Ruduce。它们的作用是在系统管理并行执行的任务时,协调好具体运行Map或者Reduce的任务以及处理好一些异常情况,如某个Map或Reduce任务运行错误。110110第 12 章 Java 与数据处理图12-3 MapReduce计算框架111111第 12 章 Java 与数据处理2.InputFormat及OutputFormat接口在Map任务类中我们把输入的文件看成是由元素组成的,元素可以是任意类型,如数据条目或文件等。112112第 12 章 Java 与数据处理例12-26 InputFormat.java:InputFormat接口方法。113113第 12 章 J
21、ava 与数据处理3.Mapper类在Java中,实现map任务需要重写Mapper抽象类,并实现其map方法。Mapper将输入键值对(key/value pair)映射到一组中间格式的键值对集合。Map是一类将输入记录集转换为中间格式记录集的独立任务,这种转换的中间格式记录集不需要与输入记录集的类型一致,一个给定的输入键值对可以映射成0个或多个输出键值对。114114第 12 章 Java 与数据处理4.Reducer类Reducer将与一个key关联的一组中间数值集归约(reduce)为一个更小的数值集。用户可以通过JobConf.setNumReduceTasks(int)设定一个作业
22、中reduce任务的数目。115115第 12 章 Java 与数据处理116116第 12 章 Java 与数据处理117117第 12 章 Java 与数据处理118118第 12 章 Java 与数据处理119119第 12 章 Java 与数据处理120120第 12 章 Java 与数据处理5.MapReduce框架示例本部分先来看一个Hadoop自带的示例程序WordCount,这个程序用于统计一批文本文件中单词出现的频率,完整的代码可在下载的Hadoop安装包中得到(在 src/examples目录中)。121121第 12 章 Java 与数据处理(1)实现Map类。这个类实现
23、Mapper接口中的map方法,输入参数中的value是文本文件中的一行,利用StringTokenizer将这个字符串拆成单词,然后将输出结果写入到 org.apache.hadoop.mapred.OutputCollector中。OutputCollector由Hadoop框架提供,负责收集Mapper和Reducer的输出数据,实现map函数和reduce函数时,只需要简单地将其输出的对放入OutputCollector中即可,剩余的事框架自会处理好。122122第 12 章 Java 与数据处理123123第 12 章 Java 与数据处理(2)实现Reduce类。例12-29的这个
24、类实现Reducer接口中的reduce方法,输入参数中的key、values是由Map任务输出的中间结果,values是一个Iterator,遍历这个Iterator,就可以得到属于同一个key的所有value。此处,key是一个单词,value是词频。只需要将所有的value相加,就可以得到这个单词总的出现次数。124124第 12 章 Java 与数据处理125125第 12 章 Java 与数据处理(3)运行Job。在Hadoop中一次计算任务称为一个job,可以通过一个JobConf对象设置如何运行这个job。126126第 12 章 Java 与数据处理127127第 12 章 Java 与数据处理128128第 12 章 Java 与数据处理(4)通过JobConf定制计算任务。通过上文所述的JobConf对象,程序员可以设定各种参数,定制如何完成一个计算任务。这些参数很多情况下就是一个Java接口,通过注入这些接口的特定实现,可以定义一个计算任务(job)的全部细节。129129第 12 章 Java 与数据处理130130第 12 章 Java 与数据处理131131第 12 章 Java 与数据处理