如何解决常见问题及优化配置技巧-在ant配置ivy时

教程大全 2026-01-29 00:38:04 浏览

在软件开发过程中,构建系统的配置管理是至关重要的,Apache Ant 和 Ivy 是两个常用的构建和依赖管理工具,本文将详细介绍如何配置 Ant 使用 Ivy 来管理项目依赖。

Ant 简介

Apache Ant 是一个基于 Java 的构建工具,它允许用户使用简单的 XML 文件定义构建逻辑,Ant 可以用于编译、打包、部署等多种任务,是许多 Java 项目构建过程中的首选工具。

Ivy 简介

Ivy 是一个开源的依赖管理工具,它可以用来定义项目的依赖关系,并从远程仓库或本地仓库中下载这些依赖,Ivy 提供了强大的依赖版本控制和冲突解决机制。

配置 Ant 使用 Ivy

要配置 Ant 使用 Ivy,首先需要在项目的根目录下创建一个名为 ivysettings.xml 的文件,用于配置 Ivy 的仓库、插件等。

创建 ivysettings.xml

在上面的配置中,我们定义了两个仓库:一个是本地仓库,另一个是 Maven 中央仓库。

在 Ant 中引入 Ivy

在 Ant 的构建文件中,我们需要引入 Ivy 插件,并配置 Ivy 的设置文件。

在上面的配置中,我们首先定义了两个属性: ivy.lib.dir 用于指定 Ivy 插件的库目录, ivy.settings 用于指定 Ivy 的设置文件,我们使用元素引入 Ivy 插件,并定义了两个目标:用于初始化 Ivy,用于编译源代码。

使用 Ivy 管理依赖

在中,我们可以使用 Ivy 的任务来下载项目依赖。

在上述配置中,任务会读取 ivysettings.xml 文件中的配置,从指定的仓库中下载项目依赖。

如何解决常见问题及优化配置技巧

如何更新 Ivy 的版本?

答:要更新 Ivy 的版本,首先需要找到 Ivy 的最新版本,然后在 ivysettings.xml 文件中更新 ivy.lib.dir 属性的值,使其指向新的 Ivy 版本库。

如何解决依赖冲突?

答:当项目依赖中存在版本冲突时,Ivy 会尝试使用版本冲突解决策略来找到合适的依赖版本,如果默认策略无法解决冲突,可以通过在 ivysettings.xml 文件中配置 conflictmanager 元素来定义自定义的解决策略。


寻求SQL数据库的有关论文

ORACLE中SQL查询优化研究摘 要 数据库性能问题一直是决策者及技术人员共同关注的焦点,影响数据库性能的一个重要因素就是SQL查询语句的低效率。 论文首先分析了导致SQL查询语句性能低下的四个常见原因以及SQL调优的一般步骤,然后分别针对如何降低I/O操作、在查询语句中如何避免对查询结果的高成本操作以及在多表连接时如何提高查询效率进行了分析。 关键词 ORACLE;SQL;优化;连接1 引言 随着网络应用不断发展,系统性能已越来越引起决策者的重视。 影响系统性能的因素很多,低效的SQL语句就是其中一个不可忽视的重要原因。 论文首先分析导致SQL性能低下的常见原因,然后分析SQL调优应遵循的一般步骤,最后从如何降低I/O、避免对查询结果的高成本操作和多表连接中如何提高SQL性能进行了研究。 鉴于目前ORACLE在数据库市场上的主导地位,论文将只针对ORACLE进行讨论。 2 影响SQL性能的原因 影响SQL性能的因素很多,如初始化参数设置不合理、导入了不准确的系统及模式统计数据从而影响优化程序(CBO)的正确判断等,这些往往和DBA密切相关。 纯粹从SQL语句出发,笔者认为影响SQL性能不外乎以下四个重要原因: (1)在大记录集上进行高成本操作,如使用了引起排序的谓词等。 (2)过多的I/O操作(含物理I/O与逻辑I/O),最典型的就是未建立恰当的索引,导致对查询表进行全表扫描。 (3)处理了太多的无用记录,如在多表连接时过滤条件位置不当导致中间结果集包含了太多的无用记录。 (4)未充分利用数据库提供的功能,如查询的并行化处理等。 第(4)个原因处理起来相对简单。 论文将针对前三个原因论述如何提高SQL查询语句的性能。 3 SQL优化的一般步骤 SQL优化一般需经过发现问题、分析问题、提出解决措施、应用措施、测试性能几个步骤,如图1所示。 “发现问题就是解决问题的一半”,因此在SQL调优过程中,定位问题SQL是非常重要的一步,一般可借助于ORACLE自带的性能优化工具如STATSPACK、TKPROF、AUTOTRACE等辅助用户进行,同时还应该重视动态性能视图如V$SQL、V$MYSTAT、V$SYSSTAT等的研究。 图1 SQL优化的一般步骤 4 SQL语句的优化 4.1 优化排序操作 排序的成本十分高昂,当在查询语句中使用了引起结果集排序的谓词时,SQL性能必然受到影响。 4.1.1 排序过程分析 当待排序数据集不是太大时,服务器在内存(排序区)完成排序操作,如果排序需要更多的内存空间,服务器将进行如下处理: (1) 将数据分成多个小的集合,对每一集合进行排序。 (2) 服务器向磁盘申请临时空间,将排好序的中间结果写入临时段,再对另外的集合进行排序。 (3) 在所有的集合均排好序后,服务器再将它们进行合并得到最终的结果,如果排序区尺寸太小,合并无法一次完成时,将分多次进行。 从上述分析可知,排序是一种十分昂贵的操作,它消耗大量的CPU时间和内存,触发磁盘分页和交换操作,因此只要有可能,我们就应该在SQL语句中尽量避免排序操作。 4.1.2 SQL中引起排序的操作 SQL查询语句中引起排序的操作大致有:ORDER BY 和GROUP BY 从句;DISTINCT修饰符;UNION、INTERSECT、MINUS集合操作符;多表连接时的排序合并连接(SORT MERGE JOIN)等。 4.1.3 如何避免排序 1)建立恰当的索引 对经常进行排序和连接操作的字段建立索引。 在建立索引后,当服务器向这些字段发出排序请求时,将直接引用索引而不进行排序操作;当进行等值连接查询操作时,若建立连接的字段未建立索引,服务器进行的是排序合并连接(SORT MERGE JOIN),连接操作的过程如下: 对进行连接的两个或多个表分别进行全扫描; 对每一个表中的行集分别进行全排序; 合并排序结果。 如果建立连接的字段已建立索引,服务器进行嵌套循环连接(NESTED LOOP JOINS),该连接方式不需要任何排序,其过程如下: 对驱动表进行全表扫描; 对返回的每一行利用连接字段值实施索引惟一扫描; 利用从索引扫描中返回的ROWID值在从表中定位记录; 合并主、从表中的匹配记录。 因此,建立索引可避免多数排序操作。 2)用UNIION ALL替换UNION UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。 大部分应用中是不会产生重复记录的,最常见的是过程表与历史表UNION 。 因此,采用UNION ALL操作符替代UNION,因为UNION ALL操作只是简单的将两个结果合并后就返回。 4.2 优化I/O 过多的I/O操作会占用CPU时间、消耗大量内存和占用过多的栓锁,因此有必要对SQL的I/O进行优化。 优化I/O的最有效方式就是用索引扫描代替全表扫描。 4.2.1 应用基于函数的索引 基于函数的索引(FUNCTION BASED INDEX,简记为FBI)提供了索引计算列并在查询中使用这些索引的能力。 FBI的实质是对查询所需中间结果进行预处理。 如果一个FBI与查询语句中的内嵌函数完全匹配,CBO在生成查询计划时,将自动启用索引范围扫描(INDEX RANGE SCAN)替换全表扫描(FULL TABLE SCAN)。 考察下面的代码段并用AUTOTRACE观察创建FBI前后执行计划的变化。 select * from emp where upper(ename)=’SCOTT’ 创建FBI前,很明显是全表扫描。 Execution Plan …… 1 0 TABLE ACCESS (FULL) OF EMPLOYEES (Cost=2 Card=1 Bytes=22) idle>CREATE INDEX EMP_UPPER_FIRST_NAME ON EMPLOYEES(UPPER(FIRST_NAME)); 索引已创建。 再次运行相同查询, Execution Plan …… 1 0 TABLE ACCESS (BY INDEX ROWID) OF EMPLOYEES (Cost=1 Card=1 Bytes=22) 2 1 INDEX (RANGE SCAN) OF EMP_UPPER_FIRST_NAME (NON-UNIQUE) (Cost=1 Card=1) 这一简单的例子充分说明了FBI在SQL查询优化中的作用。 FBI所用的函数可以是用户自己创建的函数,该函数越复杂,基于该函数创建FBI对SQL查询性能的优化作用越明显。 4.2.2 应用物化视图和查询重写 物化视图是一个预计算结果集,其中通常包含聚集与多表连接等复杂操作。 数据库自动维护物化视图,且随用户的要求进行刷新。 查询重写机制就是用数据库中的替代对象(如物化视图)将用户提交的查询重写为完全不同但功能等价的查询。 查询重写对用户透明,用户完全按常规编写访问数据库的查询语句,优化程序(CBO)自动决定是否对用户提交的查询进行重写。 查询重写是提高查询性能的一种非常有效的方法,尤其是在数据仓库环境中针对汇总、多表连接以及其它高成本的操作方面。 下面以一个非常简单的例子来演示物化视图和查询重写在优化SQL查询性能方面的作用。 select ,,count(*) from emp,dept where = group by , 查询计划及主要统计数据如下: 执行计划: ----------------------------------------- …… 2 1 HASH JOIN (Cost=5 Card=14 Bytes=224) 3 2 TABLE ACCESS (FULL) OF DEPT (Cost=2 Card=4 Bytes=52) 4 2 TABLE ACCESS (FULL) OF EMP (Cost=2 Card=14 Bytes=42) 主要统计数据: ----------------------------------------- 305 recursive calls 46 consistent gets 创建物化视图EMP_DEPT: create materialized view emp_dept build immediate refresh on demand enable query rewrite as select ,,count(*) from emp,dept where = group by , / 再次执行查询,执行计划及主要统计数据如下: 执行计划: ------------------------------------- …… 1 0 TABLE ACCESS (FULL) OF EMP_DEPT (Cost=2 Card=327 Bytes=) 主要统计数据: ------------------------------------ 79 recursive calls 28 consistent gets 可见,在建立物化视图之前,首先执行两个表的全表扫描,然后进行HASH连接,再进行分组排序和选择操作;而建立物化视图后,CBO自动将上述复杂操作转换为对物化视图EMP_DEPT的全扫描,相关的统计数据也有了很大的改善,递归调用(RECURSIVE CALLS)由305降到79,逻辑I/O(CONSISTENT GETS)由46降为28。 4.2.3 将频繁访问的小表读入CACHE 逻辑I/O总是快于物理I/O。 如果数据库中存在被应用程序频繁访问的小表,可将这些表强行读入KEEP池,从而避免物理I/O的发生。 4.3 多表连接优化 最能体现查询复杂性的就是多表连接,多表连接操作往往要耗费大量的CPU时间和内存,因此多表连接查询性能优化往往是SQL优化的重点与难点。 4.3.1 消除外部连接 通过消除外部连接,不仅使得到的查询更易于读取,而且性能也经常可以得到改善。 一般的思路是,有以下形式的查询: SELECT …,OUTER_JOINED_ FROM SOME_TABLE,OUTER_JOINED_TO_TABLE WHERE …=OUTER_JOINED_TO_TABLE(+) 可转换为如下形式的查询: SELECT …,(SELECT COLUMN FROM OUTER_ JOINED_TO_TABLE WHERE …)FROM SOME_TABLE; 4.3.2 谓词前推,优化中间结果 多表连接的性能低下多数是因为连接操作与过滤操作的次序不合理,大多数用户在编写多表连接查询时,总是先进行连接操作再应用过滤条件,这导致服务器做了太多的无用功。 针对这类问题,其优化思路就是尽可能将过滤谓词前推,使不符合条件的记录提前被筛选掉,只对符合条件的少数记录进行连接处理,这样可成倍的提高SQL查询效能。 标准连接查询如下: Select _name,sum(_quant), sum(_quant),sum(_quant) From product a,tele_sale b,online_sale c,store_sale d Where _id=_id and _id=_id and _id=_id And _date>sysdate-90 Group by _id; 启用内嵌视图,且将条件_date>sysdate-90前移,优化后代码如下: Select _name,_sale_sum,_sale_sum,_sale_sum From product a, (select sum(sal_quant) tele_sale_sum from product,tele_sale Where _date>sysdate-90 and _id =tele__id) b, (select sum(sal_quant) online_sale_sum from product,tele_sale Where _date>sysdate-90 and _id =online__id) c, (select sum(sal_quant) store_sale_sum from product,store_sale Where _date>sysdate-90 and _id =store__id) d, Where _id=_id and _id=_id and _id=_id; 5 结束语 SQL语言在数据库应用中占有非常重要的地位,其性能的优劣直接影响着整个信息系统的可用性。 论文从影响SQL性能的最主要的三个方面入手,分析了如何优化SQL查询的I/O、避免高成本的排序操作和优化多表连接。 需要强调的一点是,理解SQL语句所解决的问题比SQL调优本身更重要,因此SQL调优需要系统分析人员、开发人员和数据库管理员密切协作。 参考文献 [1]Thomas Oracle by Design:Design and Build High-performance Oracle Application[M],The McGral- Hill Companies,Inc,2003 [2]Kevin Loney,George Koch,Oracle 9i:The Complete Reference[M],The McGral-Hill Companies,Inc,2002 [3] Oracle9i SQL Reference release 2(9.2)[OL/M],2002.10. http:///technology/ [4] Oracle9i Data Warehousing Guide release 2(9.2) [OL/M],2002.03. http:///technology/ [5]Alexey Danchenkov,Donald Burleson,Oracle Tuning:The Definitive Reference[OL/M],Rampant Techpress,2006. [6] Oracle9i Database Concepts release 2(9.2) [OL/M],2002.08. http:///technology/ [7] Oracle9i supplied plsql packages and types reference release 2(9.2) [OL/M],2002.12. http:/// technology/

android studio 怎么安装ant

近年来,由于公司项目的越来越庞大和复杂,我们的项目走上了插件化开发之路,由于之前一直是用Eclipse开发的,而Eclipse里面本身集成了Ant脚本的,所以模块化编译打包发版都很方便,成熟。 但是考虑到以后Google可能更重视AndroidStudio的维护,对于我们这些还有着很长程序开发之路要走的人来说,学习这个新的IDEA很有必要,况且公司项目主要还是用Eclipse来开发的,为了保持相同的项目结构,只能弃gradle不用了,所以今天的重点是ant在androidstudio中的使用。 AndroidStudio派生自Intellij项目,里面包含了我们开发Android应用所需的各种插件,它基于gradle来构建,但是Google公司将ant插件干掉了,所以先安装ant吧。 一、Ant插件的安装由于之前我安装过IntellijIdea,所以我就用一个比较偷懒的方式,直接从那儿复制插件过来啦:然后,将这个文件夹复制到AndroidStudio里面的plugin目录下:大功告成了,现在可以直接在AndroidStudio中使用ant脚本了。 二、运行ant脚本在Android项目下新建一个文件如下:各个项目的路径和jar包路径之类的,改成自己的就可以成功了之前由于没有指定子工程的jar文件路径,编译javac的时候就会报下面这个错误:Compile failed; see the compiler error output for (:1150)at (:912)at (:291)at 0(Native Method)at (:57)at (:43)at (:601)指定后就编译成功了。 更多问题解决办法请参考android学习手册,例子、源码、文档全部搞定,采用androidstudo的目录结构,360手机助手中下载。 下面是截图。

与他人共用一条网线,网速会变慢吗,如果变慢的话怎么解决,怎样防止电脑辐射,电脑怎样使用寿命会更长。

造成打开网页速度慢有多种原因:1、 如果网速低也有影响,换个时间吧。 2、 硬件配置不足,内存较小、CPU较差,建议升级电脑。 内存条起码要2G。 内存条实物图内存条是连接CPU 和其他设备的通道,起到缓冲和数据交换作用。 当CPU在工作时,需要从硬盘等外部存储器上读取数据,但由于硬盘这个“仓库”太大,加上离CPU也很“远”,运输“原料”数据的速度就比较慢,导致CPU的生产效率大打折扣!为了解决这个问题,人们便在CPU与外部存储器之间,建了一个“小仓库”—内存。 3、 电脑因长期使用中定能存在大量的垃圾、缓存中有大量的临时文件,也会造成运行速度、上网速度慢,建议你用“360安全卫士”对系统垃圾和缓存文件删除进行清除,也可推荐你安装、使用鲁大师进行一键优化。 鲁大师还可以对电脑主机硬件进行温度测试等等。 4、 电脑可能中了,木马病毒会导致CPU使用率极高,甚至CPU使用率达到100%,这时候你就要采取杀毒的操作,可使用免费的“360软件”杀毒,有需要者可下载其他杀毒软件对电脑进行全盘扫描清除病毒。 5、 PF使用率偏高,部份网页就打不开。 解决方法:<1>增加内存。 <2>减低电脑使用率,如:只用一个QQ上网,暂不使用其它软件;特别是你在运行大型的游戏中,或同时使用多个软件,会导致内存不足,也会造成电脑运行中和上网速度慢的主要原因,建议关闭他们。 电脑的PF使用率太高,PF值超过466为偏高,建议你设置合适的虚拟内存。 最常见的打开方法:方法一、在卓面的工具兰上右击,点击→【任务管理器】,弹出【Windows任务管理器】,点击→【性能】,你就可以看到PF使用率和CPU使用率的值。 方法二、同时按下“Ctrl+Alt+Del”组合键,弹出的只是【Windows安全】窗口,必须选择【任务管理器】才能够打开。 设定虚拟内存:硬盘中有一个很宠大的数据交换文件,它是系统预留给虚拟内存作暂存的地方,很多应用程序都经常会使用到,所以系统需要经常对主存储器作大量的数据存取,因此存取这个档案的速度便构成影响计算机快慢的非常重要因素!一般Windows预设的是由系统自行管理虚拟内存,它会因应不同程序所需而自动调校交换档的大小,但这样的变大缩小会给系统带来额外的负担,令系统运作变慢!有见及此,用户最好自定虚拟内存的最小值和最大值,避免经常变换大小。 设定虚拟内存步骤:右击→【我的电脑】→【属性】→【高级】→【效能】的对话框中,对“虚拟内存”进行设置。 最低设置为你现在的物理内存相等,和你的真实内存一样就行,一般是设置为物理内存的1.5倍或2倍为好,虚拟内存的设置不要太高,最高设置成1024MB,也就是两倍,是最佳的设置。

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

发表评论

热门推荐