提升关系型数据库性能-spark查询关系型数据库优化-查询优化-Spark (提升关系的36个问题)

教程大全 2025-07-17 05:28:09 浏览

Spark查询优化:提升关系型数据库性能

随着数据量的不断增加,传统的关系型数据库在处理海量数据时显得力不从心。而Spark作为一种高速、通用、可扩展、分布式内存计算引擎,已成为处理大数据和机器学习任务的首选工具之一。在现实应用中,人们经常需要将关系型数据库数据导入到Spark中,来进行各种数据的分析和处理。但是,因为关系型数据库和Spark有着不同的特性,所以在这个过程中,我们必须做到优化数据查询,以提高Spark的性能。

本文将介绍一些重要的Spark查询优化技巧,以及如何在数据导入过程中避免常见的问题,以提高关系型数据库性能。

一、了解Spark查询执行过程

Spark查询执行过程是很重要的,因为它有助于我们设计更好的查询。在Spark中,查询会被拆分成不同的阶段。例如,当我们查询从一个表中选取一个特定的列时,Spark 会把查询拆分成两个阶段。之一步是选择要保留的列,第二步是将所选列返回。因此,我们可以通过选择要保留的列来改善查询的性能。

二、避免全表扫描

在一个巨大的表中进行全表扫描会导致大量的I/O操作和内存消耗,因此我们需要避免全表扫描。我们可以使用多种方法来改进查询,如条件查询、使用索引、分区表等。

条件查询:条件查询是通过使用WHERE子句来限制要返回的结果行。例如,SELECT * FROM orders WHERE product_id=1234;

分区表:分区表是在表中分割数据的一种方式。这在宽表上特别有用,如日志表、事务表等。分区表将数据按逻辑分成各个分区,因此,当我们需要处理数据时,只需要处理目标分区,而不必扫描整个表。此外,Spark还支持动态分区,它可以让您在运行时为表添加新分区,可帮助您将数据加载到目标系统中,而无需预定义分区方案。

三、了解数据倾斜

在使用Spark处理大规模数据时,我们往往会遇到数据倾斜的问题。数据倾斜指的是数据在加工过程中,某个特定部分的数据扰动导致负载不平衡,从而导致一些任务远远耗时比其他任务长。数据倾斜会严重影响程序效率。

在Spark中,我们可以通过对数据进行分区来缓解数据倾斜。我们可以根据数据分布应用不同的分区策略来解决数据倾斜问题,如采用key-range分区策略、采样分区策略等。

四、使用广播变量

广播变量是用于将一个较小的只读变量缓存到每个工作节点上的一种机制。它能够跨作业传输信息以改善性能。在Spark中使用广播变量的过程很简单,只需要使用sparkContext.broadcast()函数将需要广播的变量进行打包,即可在每个处理节点上存储它,而不必将变量复制到每个节点。

广播变量的使用场景很多,例如:

1. 在join操作中将小表缓存到内存中,以避免运行时占用整个集群。

2. 在MapReduce任务中,将常量存储到广播变量中,以使不同的MapReduce作业都可以访问该变量。

3. 在数据建模时,将词典、停用词保存在广播变量中,以供注释器使用。

五、使用数据框架

在大多数情况下,使用数据框架(如Spark SQL)比使用RDD更高效。Spark SQL是一个基于Spark的模块,用于结构化数据处理。它提供了一种新的数据抽象层,使我们可以快速轻松地查询数据。

Spark SQL 能够将结构化数据读入DataFrames或者>大数据三大核心技术:拿数据、算数据、卖数据!

大数据的由来

对于“大数据”(Big>服务器端数据处理管道,能够同时从多个来源采集数据、转换数据,然后将数据发送到您最喜欢的 “存储库” 中。一般常用的存储库是Elasticsearch。Logstash 支持各种输入选择,可以在同一时间从众多常用的数据来源捕捉事件,能够以连续的流式传输方式,轻松地从您的日志、指标、Web 应用、数据存储以及各种 AWS 服务采集数据。

Sqoop,用来将关系型数据库和Hadoop中的数据进行相互转移的工具,可以将一个关系型数据库(例如Mysql、Oracle)中的数据导入到Hadoop(例如HDFS、Hive、Hbase)中,也可以将Hadoop(例如HDFS、Hive、Hbase)中的数据导入到关系型数据库(例如Mysql、Oracle)中。Sqoop 启用了一个 MapReduce 作业(极其容错的分布式并行计算)来执行任务。Sqoop 的另一大优势是其传输大量结构化或半结构化数据的过程是完全自动化的。

流式计算

流式计算是行业研究的一个热点,流式计算对多个高吞吐量的数据源进行实时的清洗、聚合和分析,可以对存在于

社交网站

、新闻等的数据信息流进行快速的处理并反馈,目前大数据流分析工具有很多,比如开源的strom,spark streaming等。

Strom集群结构是有一个主节点(nimbus)和多个工作节点(supervisor)组成的

主从结构

,主节点通过配置静态指定或者在运行时动态选举,nimbus与supervisor都是Storm提供的后台守护进程,之间的通信是结合Zookeeper的状态变更通知和监控通知来处理。nimbus进程的主要职责是管理、协调和监控集群上运行的topology(包括topology的发布、任务指派、事件处理时重新指派任务等)。supervisor进程等待nimbus分配任务后生成并监控worker(jvm进程)执行任务。supervisor与worker运行在不同的jvm上,如果由supervisor启动的某个worker因为错误异常退出(或被kill掉),supervisor会尝试重新生成新的worker进程。

Zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,提供数据同步服务。它的作用主要有配置管理、名字服务、分布式锁和集群管理。配置管理指的是在一个地方修改了配置,那么对这个地方的配置感兴趣的所有的都可以获得变更,省去了手动拷贝配置的繁琐,还很好的保证了数据的可靠和一致性,同时它可以通过名字来获取资源或者服务的地址等信息,可以监控集群中机器的变化,实现了类似于心跳机制的功能。

数据存储

Hadoop作为一个开源的框架,专为离线和大规模

数据分析

而设计,HDFS作为其核心的存储引擎,已被广泛用于数据存储。

HBase,是一个分布式的、面向列的开源数据库,可以认为是hdfs的封装,本质是数据存储、NoSQL数据库。HBase是一种Key/Value系统,部署在hdfs上,克服了hdfs在随机读写这个方面的缺点,与hadoop一样,Hbase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。

Phoenix,相当于一个Java

中间件

,帮助开发工程师能够像使用JDBC访问关系型数据库一样访问NoSQL数据库HBase。

Yarn是一种Hadoop资源管理器,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。Yarn由下面的几大组件构成:一个全局的资源管理器ResourceManager、ResourceManager的每个节点代理NodeManager、表示每个应用的Application以及每一个ApplicationMaster拥有多个Container在NodeManager上运行。

Mesos是一款开源的集群管理软件,支持Hadoop、ElasticSearch、Spark、Storm 和Kafka等应用架构。

Redis是一种速度非常快的非关系数据库,可以存储键与5种不同类型的值之间的映射,可以将存储在内存的键值对数据持久化到硬盘中,使用复制特性来扩展性能,还可以使用客户端分片来扩展写性能。

Atlas是一个位于应用程序与MySQL之间的中间件。在后端DB看来,Atlas相当于连接它的客户端,在前端应用看来,Atlas相当于一个DB。Atlas作为服务端与应用程序通讯,它实现了MySQL的客户端和服务端协议,同时作为客户端与MySQL通讯。它对应用程序屏蔽了DB的细节,同时为了降低MySQL负担,它还维护了连接池。Atlas启动后会创建多个线程,其中一个为主线程,其余为工作线程。主线程负责监听所有的客户端连接请求,工作线程只监听主线程的命令请求。

Kudu是围绕Hadoop生态圈建立的存储引擎,Kudu拥有和Hadoop生态圈共同的设计理念,它运行在普通的服务器上、可分布式规模化部署、并且满足工业界的高可用要求。其设计理念为fast ytics on fast>漫谈工业大数据9:开源工业大数据软件简介(上)

今天真是一个美好的时代,有无数的开源系统可以为我们提供服务,现在有许多开发软件可以用到工业大数据中,当然很多系统还不成熟,应用到工业中还需要小心,并且需要开发人员对其进行一定的优化和调整。下面就简单介绍一些开源的大数据工具软件,看看有哪些能够应用到工业大数据领域。

下面这张图是我根据网上流传的一张开源大数据软件分类图整理的:

1、数据存储类

(1)关系数据库MySQL

这个就不用太多介绍了吧,关系型数据库领域应用最广泛的开源软件,目前属于 Oracle 旗下产品。

(2)文件数据库Hadoop

Hadoop是大数据时代的明星产品,它更大的成就在于实现了一个分布式文件系统(Hadoop Distributed FileSystem),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的硬件上,而且它提供高吞吐量来访问应用程序的数据,适合那些有着超大数据集的应用程序。

Hadoop可以在工业大数据应用中用来作为底层的基础数据库,由于它采用了分布式部署的方式,如果是私有云部署,适用于大型企业集团。如果是公有云的话,可以用来存储文档、视频、图像等资料。

(3)列数据库Hbase

HBase是一个分布式的、面向列的开源数据库,HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。

基于Hbase开发的OpenTSDB,可以存储所有的时序(无须采样)来构建一个分布式、可伸缩的时间序列数据库。它支持秒级数据采集所有metrics,支持永久存储,可以做容量规划,并很容易的接入到现有的报警系统里。

这样的话,它就可以替代在工业领域用得最多的实时数据库。

(4)文档数据库MongoDB

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo更大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对信闷链数据建立索引。

MongoDB适合于存储工业大数据中的各类文档,包括各类图纸、文档等。

(5)图数据库Neo4j/OrientDB

图数据库不是存放图片的,是基于图的形式构建的数据系统。

Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、

企业级

的数据库的所有好处。

OrientDB是兼具文档数据库的灵活性和图形数据库管理 链接 能力的可深罩嫌层次扩展的文档-图形数据库管理系统。可选无模式、全模式或混合模式下。支持许多高级特性,诸如ACID事务、快速索引,原生和SQL查询功能。可以ON格式导入、导出文档。若不执行昂贵的JOIN操作的话,如同关系数据库可在几毫秒内可检索数以百记的链接文档图。

spark查询关系型数据库优化

这些数据库都可以用来存储非结构化数据。

2、数据分析类

(1)批处理MapReduce/Spark

MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念”Map(映射)”和”Reduce(归约)”,是它们的主要思想,都滑孙是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。

Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。尽管创建 Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop 的补充,可以在 Hadoop 文件系统中并行运行。

这些大数据的明星产品可以用来做工业大数据的处理。

(2)流处理Storm

Storm是一个开源的分布式实时计算系统,可以简单、可靠的处理大量的数据流。Storm有很多使用场景:如实时分析,在线机器学习,持续计算,分布式RPC,ETL等等。Storm支持水平扩展,具有高容错性,保证每个消息都会得到处理,而且处理速度很快(在一个小集群中,每个结点每秒可以处理数以百万计的消息)。Storm的部署和运维都很便捷,而且更为重要的是可以使用任意编程语言来开发应用。

(3)图处理Giraph

Giraph是什么?Giraph是Apache基金会开源项目之一,被定义为迭代式图处理系统。他架构在Hadoop之上,提供了图处理接口,专门处理大数据的图问题。

Giraph的存在很有必要,现在的大数据的图问题又很多,例如表达人与人之间的关系的有社交网络,搜索引擎需要经常计算网页与网页之间的关系,而map-reduce接口不太适合实现图算法。

Giraph主要用于分析用户或者内容之间的联系或重要性。

(4)并行计算MPI/OpenCL

OpenCL(全称Open Computing Language,开放运算语言)是之一个面向

异构系统

通用目的并行编程的开放式、免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计算

服务器

、桌面计算系统、手持设备编写高效轻便的代码,而且广泛适用于多核心处理器(CPU)、图形处理器(GPU)、Cell类型架构以及数字信号处理器(DSP)等其他并行处理器,在 游戏 、 娱乐 、科研、医疗等各种领域都有广阔的发展前景。

(5)分析框架Hive

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

(6)分析框架Pig

Apache Pig 是apache平台下的一个免费开源项目,Pig为大型数据集的处理提供了更高层次的抽象,很多时候数据的处理需要多个MapReduce过程才能实现,使得数据处理过程与该模式匹配可能很困难。有了Pig就能够使用更丰富的数据结构。

Pig LatinPig Latin 是一个相对简单的语言,一条语句 就是一个操作,与数据库的表类似,可以在关系数据库中找到它(其中,元组代表行,并且每个元组都由字段组成)。

spark查询关系型数据库优化的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于spark查询关系型数据库优化,Spark 查询优化:提升关系型数据库性能,大数据三大核心技术:拿数据、算数据、卖数据!,漫谈工业大数据9:开源工业大数据软件简介(上)的信息别忘了在本站进行查找喔。

香港服务器首选树叶云,2H2G首月10元开通。树叶云(www.IDC.Net)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。


使用out的存储过程与函数有什么区别

1. 返回值的区别,函数有1个返回值,而存储过程是通过参数返回的,可以有多个或者没有2.调用的区别,函数可以在查询语句中直接调用,而存储过程必须单独调用.函数一般情况下是用来计算并返回一个计算结果而存储过程一般是用来完成特定的数据操作(比如修改、插入数据库表或执行某些DDL语句等等)参数的返回情况来看:如果返回多个参数值最好使用存储过程,如果只有一个返回值的话可以使用函数;从调用情况来看:如果在SQL语句(DML或SELECT)中调用的话一定是存储函数或存储的封装函数不可以是存储过程,但调用存储函数的时候还有好多限制以及函数的纯度等级的问题函数和存储过程最大的区别就在于,函数必须带上一个return返回值,后面跟的是返回值的类型,而存储过程可以不带任何返回值。 另外,存储过程和函数同样支持in,out,in out这三种类型的参数,对应的是分别指明输入性的参数、输出型的参数、输入输出型的参数。 也就是说如果我们需要返回多个值,除了可以使用存储过程来实现之外,也可以用函数来实现,方法是你将其中一个用return来返回,其他就指明该数据为out参数就可以了。 Oracle中存储过程和函数都可以返回值,但是函数必须要返回值,并一般只返回一个值,而存储过程则没有这个限制。 从一般应用上来看,如果不需要返回值或者需要多个返回值,使用存储过程,如果只用一个返回值,就使用函数,从一般程序员的习惯上来看,这样更符合思维。

UD怎么打ORC的WS流?

ORC VS UD战术1:正统地面战英雄组合:首发:FS 次发:TC/SH兵力组合:大G+狼骑+科多+猎头+蝙蝠建造顺序:BA-BO-BB-BO---升级--BO+BV--升级完毕--BE-BO+BM-BOBOBO+BE兵种搭配:一本:2大G 一本-二本:3-4大G 50人口:5-6大G 2-3狼骑 1-2科多评价:目前ORC对战UD最常用的战术,特点为持续的对UD保持压力,前期压制DK等级和血量,中期偷袭UD基地,压制UD英雄等级,最快速度提升防御(2防的大G即使面对毁灭也有一定操作拉回空间)和攻击(2攻的大G可以无视冰甲所带来的伤害减损),2攻2防加上群补,科多和牛头光环+践踏(或SH的加血)的辅助,ORC地面部队可以保持对UD的全面优势,在中后期补BE暴蝙蝠应对毁灭或冰龙,稳妥的利用高人口开出分矿,保持对UD的压力直到把UD穷死,在双方实力相近的情况下可以确保较高的胜率战术2:空地一体战英雄组合:首发:FS 次发:TC兵力组合:大G+狼骑+飞龙+蝙蝠建造顺序:BA-BO-BB-BO---升级--BO+BV--升级完毕--BE+BE-BO+BM-BOBOBO兵种搭配:一本:2大G 一本-2本:3-4大G 50人口:3-5大G 2-3狼骑 2-3飞龙或 3-4大G 4-5飞龙评价:比较适合对战狗流,如果对手早出天鬼可以前期补几只蝙蝠,TC适合升级冲击波,配合飞龙可以对狗群以极大的杀伤,对战ZZ流时注意保持大G的数量并先出狼骑,需要大量群补来保护ZZ,兵种组合攻击力强大,缺点是比较脆弱,操作要求较高战术3:3本科技流英雄组合:首发:BM 次发:SH 三发:TC兵力组合:前期大G+狼骑 后期牛头+飞龙建造顺序:BA-BO-BB--升级--BO+BV--升级完毕--BE+升级-BO+BM-升级完毕-BOBOBO兵种搭配:一本:1大G 一本-2本:2-3大G 50人口:2-4大G 2-3狼骑 0-1牛头人 2-3飞龙评价:前期对操作和大局观要求很强,由于兵力较少,需要BM给对手足够压力的同时保持自身升级速度,并且2本后依然是兵力真空期,需要利用SH的妖术合理进行对地方兵力或者英雄的击杀(不一定要杀英雄,也可以变DK杀ZZ)优点是后期成型后UD基本无解(BM+SH+TC+牛头+毒飞龙+少量蝙蝠UD基本上没有什么办法,主要原因在于牛一个践踏以后DK马上被点死)战术4:WS流英雄组合:首发:BM/FS 次发:SH/NAGA 三发:TC/PD/无兵力组合:蝙蝠---后期同战术3建造顺序:BA-BO--升级--BO+BV+BM--升级完毕--升级--BE+BE-BOBOBO兵种搭配:一本:无 一本-2本:无 3本:40-50人口蝙蝠评价:投机型战术,碰到UD暴人口TR直接GG,英雄操作优秀的可使用FS进行无限牵制,要点在于蝙蝠的一波效果和后期接上毒飞龙海,压制UD经济和英雄等级,对操作要求高,战术风险极大,不推荐新手使用

自学Java 至Java高手的成长之路,希望能总结一下注意事项!!!!

首先要有目标的去学习,我给你一个学习计划你参照着一步一步的去学,等25个目标都实现了,你就是java大牛了。 1.你需要精通面向对象分析与设计(OOA/OOD)、涉及模式(GOF,J2EEDP)以及综合模式。 你应该了解UML,尤其是 class,object,interaction以及statediagrams。 2.你需要学习Java语言的基础知识以及它的核心类库 (collections,serialization,streams,networking,?multithreading,reflection,event,handling,NIO,localization, 以及其他)。 3.你应该了解JVM,classloaders,classreflect,以及垃圾回收的基本工作机制等。 你应该有能力反编译一个类文件并且明白一些基本的汇编指令。 4.如果你将要写客户端程序,你需要学习Web的小应用程序(applet),必需掌握GUI设计的思想和方法,以及桌面程序的 SWING,AWT,?SWT。 你还应该对UI部件的JavaBEAN组件模式有所了解。 JavaBEANS也被应用在JSP中以把业务逻辑从表现层中分 离出来。 5.你需要学习Java数据库技术,并且会使用至少一种persistence/ORM构架,例如Hibernate,JDO,?CocoBase,TopLink,InsideLiberator(国产JDO红工厂软件)或者iBatis。 6.你还应该了解对象关系的阻抗失配的含义,以及它是如何影响业务对象的与关系型数据库的交互,和它的运行结果,还需要掌握不同的数据库产品运用,比如racle,mysql,mssqlserver。 7.你需要学习Servlets,JSP,以及JSTL(StandardTagLibraries)和可以选择的第三方TagLibraries。 8.你需要熟悉主流的网页框架,例如JSF,Struts,Tapestry,Cocoon,WebWork,以及他们下面的涉及模式,如MVC/MODEL2。 9.你需要学习如何使用及管理Web服务器,例如tomcat,resin,Jrun,并且知道如何在其基础上扩展和维护Web程序。 10.你需要学习分布式对象以及远程API,例如RMI和RMI/IIOP。 11.你需要掌握各种流行中间件技术标准和与Java结合实现,比如Tuxedo、CROBA,当然也包括JavaEE本身。 12.你需要学习最少一种的XMLAPI,例如JAXP(JavaAPIForXMLProcessing),JDOM(JavaforXMLDocumentObjectModel),DOM4J,或JAXR(JavaAPIforXMLRegistries)。 13.你应该学习如何利用Java的API和工具来构建WebService。 例如JAX- RPC(JavaAPIforXML/RPC),SAAJ? (SOAPwithAttachmentsAPIforJava),JAXB(JavaArchitectureforXMLBinding),JAXM(JavaAPIforXMLMessaging),?JAXR(JavaAPIforXMLRegistries), 或者JWSDP(JavaWebServicesDeveloperPack)。 14.你需要学习一门轻量级应用程序框架,例如Spring,PicoContainer,Avalon,以及它们的IoC/DI风格(setter,constructor,interfaceinjection)。 15.你需要熟悉不同的J2EE技术,例如JNDI(JavaNamingandDirectoryInterface),JMS? (JavaMessageService),JTA/JTS(JavaTransactionAPI /JavaTransactionService),JMX?(JavaManagementeXtensions),以及JavaMail。 16.你需要学习企业级JavaBeans(EJB)以及它们的不同组件模 式:Stateless/StatefulSessionBeans,EntityBeans(包含 Bean-?ManagedPersistence[BMP]或者Container-ManagedPersistence[CMP]和它的EJB- QL),或者?Message-DrivenBeans(MDB)。 17.你需要学习如何管理与配置一个J2EE应用程序服务器,如WebLogic,JBoss等,并且利用它的附加服务,例如簇类,连接池以及分布式处理支援。 你还需要了解如何在它上面封装和配置应用程序并且能够监控、调整它的性能。 18.你需要熟悉面向方面的程序设计以及面向属性的程序设计(这两个都被很容易混淆的缩写为AOP),以及他们的主流Java规格和执行。 例如AspectJ和AspectWerkz。 19.你需要熟悉对不同有用的API和framework等来为你服务。 例如Log4J(logging/tracing),Quartz(scheduling),JGroups(networkgroupcommunication),JCache(distributedcaching),?Lucene(full- textsearch),JakartaCommons等等。 20.你应该熟练掌握一种JavaIDE例如sunOne,netBeans,IntelliJIDEA或者Eclipse。 (有些人更喜欢VI或EMACS来编写文件。 随便你用什么了:)(精确的说是有些配置)是冗长的,它需要很多的人工代码(例如EJB),所以你需要熟悉代码生成工具,例如XDoclet。 22.你需要熟悉一种单元测试体系(JNunit),并且学习不同的生成、部署工具(Ant,Maven)。 23.你需要熟悉一些在Java开发中经常用到的软件工程过程。 例如RUP(RationalUnifiedProcess)andAgilemethodologies。 24.你还需要紧跟Java发展的步伐,比如现在可以深入的学习Webwork2.0  25.你必需要对实际项目的开发流程有所了解,至少要有两个有实际应用价值的项目,而不是练习项目!因为现在企业看重的是你有没有实际的开发经验,真正开发经验的体现就是你做的项目,也就是有实际应用的项目!问题总是在开发中出现的,多参考别人的代码,不懂就问就学。

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐