现在学java的都是傻子开发登记系统会用什么集数

项目经验分享——Java常用工具类集合
我的图书馆
项目经验分享——Java常用工具类集合
数据库连接工具类&数据库连接工具类——仅仅获得连接对象 ConnDB.java[java]&数据库连接工具类——包含取得连接和关闭资源 ConnUtil.java&[java]&&格式转换工具类&日期转换工具类 CommUtil.java[java]&日期转换类 &DateConverter.java[java]&功能更强大的格式化工具类 FormatUtils.java&[java]&&&文件操作工具类&目录操作工具类 CopyDir.java[java]&文件/目录部分处理工具类 DealDir.java[java]&目录处理工具类 DealWithDir.java[java]&删除文件夹工具类 DeleteFolder.java&[java]&&文件上传工具类 UploadUtil.java[java]&&其他工具类MD5编码工具类 MD5Code.java[java]&&读取Config文件工具类 PropertiesConfig.java[java]&自动扫描FTP文件工具类 ScanFtp.java[java]&邮件发送工具类 SendMail.java[java]&分页工具类 SharePager.java[java]&
TA的最新馆藏[转]&[转]&
喜欢该文的人也喜欢加速Java应用开发速度3——单元/集成测试+CI - 开涛的博客—公众号:kaitao-1234567,一如既往的干货分享 - ITeye博客
博客分类:
《加速Java应用开发速度》系列目录:
大家可能对如下情景比较熟悉:
如果开发过SSH的web项目,启动服务器可能会比较慢,有的项目甚至需要1分多钟,甚至更多,这个启动时间的等待一般就浪费了;
在开发项目时,有些功能比较复杂,当时觉得思路特清晰,但是过了一段时间后,自己也忘了,完善功能时频繁出现bug,降低开发速度;
在维护项目时,不知道自己修改的对还是不对,是否存在隐患;维护速度降下来了;
如果开发一个很多人都使用的接口,典型的如用户系统,要保证比如升级时向下兼容;
在团队间协作时,有时候只定义好接口,对方还没有给实现,如何进行同步开发?
如上问题,估计只要是个开发人员,都可能遇到过;如果此时有了单元/集成测试,那我们能很好的解决这些问题。(注:加下来如果没有特殊情况,不刻意强调 单元测试/集成测试,即提到测试是指的是单元/集成测试)
我从以下几个方面介绍测试:
1、为什么需要测试?
2、如何进行测试?
3、测试有哪些好处?
4、一切都需要测试吗?
1、为什么需要测试?
测试的目的是什么?我的理解是:
缩短发现问题到解决问题的速度;
给程序一个修改后能验证是否正确的保证;(回归测试)
如果是开源软件,我们可以通过单元测试了解其是怎么使用的;比如我之前通过cglib的单元测试学习过cglib的使用;
所以如果你遇到如上问题,就需要写测试。写测试可能是为了自己(1、2);也可能是为了帮助别人(3)。
2、如何进行测试?
很多朋友不知道如何进行测试,其实测试很简单,别把它想复杂了,按照自己的想法测试每个功能点是否正确即可。
2.1、测试流程
单元测试流程
集成测试流程
集成测试流程
可以看出,单元测试与集成测试唯一不同点是一个调用依赖系统而一个不调用;因为单元测试是最小粒度的测试,如在Java中是测试一个类,不会测试依赖系统;而集成测试是会测试依赖系统的。
测试的步骤:
调用被测系统
环境:也叫做夹具(fixture)或者固件,表示调用被测系统时需要准备/清理的数据等等;
被测系统:在Java中就是要测试的类,如UserService;
依赖系统:测试被测系统时,其依赖的部分,如UserDao;
测试用例:包含测试方法的类,里边有很多测试方法来测试被测系统。
接下来仔细看看各部分都做了哪些工作。
环境,也叫做夹具(fixture),表示调用被测系统时需要准备/清理的数据等等;保证测试时环境是干净的,如不被之前的数据库数据影响;保证每次测试都是在干净/新鲜的环境中执行的。所谓干净的环境表示如当前测试不被之前测试插入/删除/修改的数据造成影响。在junit中可以使用:
@Before(setUp) 安装夹具或准备环境:在测试用例的每个测试方法之前执行;比如创建新鲜的被测系统,单元测试时安装Mock的依赖系统;
@After(tearDown)卸载夹具或清理环境:在测试用例的每个测试方法之后执行;比如数据库测试时回滚事务,删除数据;关闭文件;
@BeforeClass:在整个测试用例之前执行;
@AfterClass:在整个测试用例之后执行;
使用如上方法,而不是直接在测试方法中安装/卸载;是因为不管有没有异常,@After/@AfterClass都会执行,这样防止出现异常可能造成环境是不新鲜的问题。
如果大家使用spring test来测试数据库相关的系统,可以考虑使用@TransactionConfiguration来支持默认事务回滚,这样不会对现有系统造成影响。具体可参考《》和《》
测试时一定要保证环境是干净/新鲜的,才能保证每次测试的结果是一样的。
2.3、被测系统与依赖系统
被测系统:在Java中就是被测试的Java类。
依赖系统:就是被测试Java类依赖的其他类。
如果是单元测试,一般情况下,会对依赖系统进行模拟(Mock),即给它一个假的实现;典型的如测试服务层时注入一个Mock的DAO层,这样的好处:
加快测试速度;因为不会调用真实的被测系统,所以速度特别快;
测试还没有完成的功能;尤其在多团队协作时,可以只在定义好接口的情况下开发系统;
如果是集成测试时,直接注入真实的依赖系统即可,好处:
完成联调;
发现自己的问题;
还可能发现自己使用上问题及使用的API的问题;
单元测试虽然好,但是是隔离测试,即不会调用被测系统来完成测试,因为不是真实的联调,所以很可能会潜在有一些问题,因此还是需要集成测试。(所以不是很刻意分单元或集成测试,且有些系统可能只有集成测试)
但是集成测试速度是比较慢的,一般提交给CI执行,不影响当前开发进度。
验证的目的:是保证实际结果和我们预期的结果是否一致,说白了就是是否是我们想的那样。
一般使用断言来验证,如:
Assert.assertEquals(expectedResult, actualResult); //验证预期结果和实际结果是否相等
验证主要有两种:
结果验证:即验证被测系统返回的结果是否正确,如:
public void testCount() {
String ql = "select count(o) from User o";
long expectedCount = repositoryHelper.count(ql) + 1;
User user = createUser();
repositoryHelper.getEntityManager().persist(user);
long acutalCount = repositoryHelper.count(ql);
Assert.assertEquals(expectedCount, acutalCount);
验证返回的数据总数 = 插入之前的总数 + 1; 即结果验证。此处我们使用了一种叫做相对(delta)测试;即不关心数据库里到底多少条,只关心实际的和预期的差。
行为验证:即验证被测系统是否调用了依赖系统的某个API ,这个只有当我们使用Mock时测试时比较简单,如当用户注册时:
2、发系统消息
此时我们并不能通过结果验证是否调用了这些方法;那么我们可以使用Mock技术来完成验证是否调用了这些API,比如使用jmock测试框架就支持行为验证。集成测试是很难进行行为验证的,如果测试需要预留间谍接口。
3、测试有哪些好处?
我们写代码的目的是正确的完成某个功能,如何保证正确呢?测试!所以在不使用如单元测试技术时,我们也是需要测试,但是这个测试是我们人工验证的。缺点很明显:
不是自动的,每次需要对比预期结果与实际结果,尤其数据量/逻辑复杂时更痛苦;
不是回归的,上次测试完成后,下次还得重复自己一遍;
为了解决这个问题,我们使用如单元测试技术来解决这个问题:
测试自动化;即验证预期结果与实际结果交给计算机吧;
测试回归性,可以重复执行测试,验证修改后逻辑是否还是正确的;
即测试的好处,从如上已经提炼出来了:
缩短发现问题到解决问题的时间;
重复使用测试,保证修改后的代码还是正确的;
如果做开源项目,可以提供给使用人员参考如何使用;
因为单元测试都非常快,所以提升了开发速度;
4、一切都需要测试吗?
肯定不是,一切都是相对的;哪些不需要测试呢:
你非常熟悉的功能;
一些简单的CRUD;
你认为不需要测试的;比如你很有把握的东西,就没有必要浪费时间测试了;
哪些需要测试呢:
复杂的业务逻辑/系统核心功能,最典型的如订单系统:一定要有足够的单元测试保证,这是一个电商系统的核心;还有如用户系统、积分系统等等;
框架级别/工具级别/通用级别的代码需要测试,即提供给第三方使用的代码,因为这些代码可能被很多系统依赖,应该保证其正确性;而且还要保证以后版本升级的向下兼容;
你认为需要测试的,比如你没有把握的东西,还是写点测试来缩短如开发web项目的重启系统的时间吧;
测试不是不耗时间的,没意义的测试就是浪费时间,最典型是一些书上的对一个增删改查进行测试,实际项目没有任何意义。所以你应该只对自己很难驾驭的觉得有必要的代码进行测试。不要成为一个测试狂,什么都测试。
一些测试可以参考我的《》中的代码。通过测试我得到了许多好处。
到此我们介绍完成了测试,但是如果我们使用了如集成测试时,测试执行起来可能比较慢,跑一遍测试可能需要5分钟,那怎么办呢?
每天下班前跑一遍集成测试,然后修复,下班走人;
CI:持续集成,交给持续集成服务器,自动地测试完成后把测试报告以邮件的形式发到开发人员邮箱;
------------------------------------分割线----------------------------------
接下来介绍一下CI吧。
1、为什么需要CI
2、CI如何工作的
3、travis-ci介绍
1、为什么需要CI
正如前边说的,我们单独测试可能会遇到如下问题:
如果写了一个测试,就要把所有测试跑一遍看看整个系统是否是正确的,那么每次等待时间是非常漫长的;
如果团队中的其他成员改了功能并提交了,如何快速得到该次提交对当前系统代码是正确还是失败的反馈;
那怎么办呢?自动化地持续集成(CI)!CI的核心就是干这件事情的。自动化持续地集成测试。
使用CI后,如果使用Maven,可以新建多个profile:
本地测试时忽略一些比较慢的测试;
CI服务器上执行所有测试;
2、CI如何工作的
一个典型的持续集成流程:
定期检测版本服务器上是否有代码更新;
如果发现代码更新,从版本服务器下载最新的代码;
自动构建并自动化的测试;
不管错误/失败,生成报告给开发人员;
有些CI服务器还能产生可执行的软件,自动化地部署到测试机器,交给测试人员测试。
如图所示:
持续集成服务器其实就是一个定时器,自动帮你下载最新代码、编译、测试、集成及产生报告发给开发人员。
常见的CI服务器有:
Apache Continuum
CruiseControl
Jenkins CI
我09年时使用过TeamCity社区版,足够满足常见需求;目前我使用github托管项目,使用Travis CI进行分布式的持续集成,免费,目前看来还是不错的。
3、travis-ci介绍
我现在开发的就是使用travis ci进行持续集成;具体参考《》进行与Github集成,其支持的语言:
支持的数据库:
PostgreSQL
ElasticSearch
如果是Java开发人员,支持的JDK包括:OpenJDK 和 OracleJDK。 如果使用的是OpenJDK,Maven中使用ascii2native插件时,需要如下配置:
&groupId&org.codehaus.mojo&/groupId&
&artifactId&native2ascii-maven-plugin&/artifactId&
&version&1.0-alpha-1&/version&
&executions&
&execution&
&phase&generate-resources&/phase&
&goal&native2ascii&/goal&
&configuration&
&encoding&UTF-8&/encoding&
&src&src/main/messages&/src&
&dest&target/${project.artifactId}/WEB-INF/classes&/dest&
&includes&messages.properties&/includes&
&/configuration&
&/execution&
&/executions&
&!-- native2ascii 使用的tools.jar --&
&dependencies&
&dependency&
&groupId&com.sun&/groupId&
&artifactId&tools&/artifactId&
&version&1.7.0&/version&
&scope&system&/scope&
&systemPath&${java.home}/../lib/tools.jar&/systemPath&
&/dependency&
&/dependencies&
如果使用mysql,端口只能是3306。
如果想开端口测试,这是不允许的。
如下是我项目中的一个配置,放到项目的根下即可:
-----------------------------------
language: java
- DB=mysql
jdk使用openjdk
database: es
数据库名为es
username: root
用户名为root
password :
encoding: utf8
编码为utf8
安装时执行的脚本
- mvn install -Dmaven.test.skip=true
mvn安装并跳过测试
before_script:
script之前执行的测试
- mvn db:create
创建数据库的mvn命令(此处使用了 maven-db-plugin 插件)
- mvn db:schema
创建脚本的mvn命令
- mvn db:data
安装数据的mvn命令
测试时执行的脚步
- cd common
- mvn test
测试common子模块
- mvn test -Pit
测试web子模块,并指定使用it profile测试(即集成测试的配置,具体参考中的profile/it)
notifications:
测试完成后测试报告发到哪
-----------------------------------
持续集成不能修复代码的错误,而是和单元测试一样,缩短发现问题带解决问题的时间,这样可以提高开发效率,降低项目风险,提高项目的稳定性。而且尤其是团队协作时,可以发现其他人的代码是否对自己的代码产生影响。
到此我们利用单元测试+CI可以加速开发人员的开发速度。利用好单元测试和CI,不要纯粹为了单元测试和CI而去做这些事情。
本文没有介绍TDD,TDD并不会那么美好,我认为我们可以借鉴TDD的一些思想,但决不能迷信TDD,有时候,尤其如开发企业应用,先写功能再写测试可能效率更高,而且大部分时候是不需要TDD的。而且我也没能在实际项目中获取太多TDD的好处,但是我获得了测试的好处。
本文也没有介绍测试覆盖率,我认为不要一味的追求覆盖率,有时候有的覆盖率没有任何意义。所以不要让为了覆盖率而覆盖率拖慢了项目开发进度。
正如stackoverflow上的一篇帖子《》上的回答:
老板为我的代码付报酬,而不是测试,所以,我对此的价值观是——测试越少越好,少到你对你的代码质量达到了某种自信。
可以前往的去得到一些经验。
推荐阅读:
《xUnit测试模式》
《持续集成:软件质量改进和风险降低之道》《持续交付--发布可靠软件的系统方法》
下一篇:使用模板加速开发速度
浏览 18564
是否项目中要准备两套测试代码,一套单元测试、一套用来集成测试?其实没必要 直接集成即可
楼主每出必为精品,期待出maven,单元测试,集成测试实际应用例子抬举了& 尽量写点对别人有用的内容
NB,希望楼主继续分享这样的好文章,顶一个多多指点,共同进步&
桃哥 NB呀春哥 加油
好文章,先记录下来。
jinnianshilongnian
浏览量:1653331
浏览量:2019130
浏览量:4071443
浏览量:171078
浏览量:1131247
浏览量:182822
浏览量:3312729
浏览量:416440
浏览量:427589
开涛老师:基于ngx_cache_purge 针对目录删除缓存 ...
该博客内容不错,就是排版太乱,不易于阅读啊。
这个nginx+lua的响应速度比纯静态页还快吗?
切面植入的时机是什么呢
sqzx10101 写道 写道 ...如何在工作流等开发平台中集成规则引擎-什么是JAVA工作流引擎
没有你要的?请搜索……
你现在正在浏览:
如何在工作流等开发平台中集成规则引擎 什么是JAVA工作流引擎
如何在工作流等开发平台中集成规则引擎
第一个ja中的对象和业务语言的对应。不过是动态语言还是连接外部程序。在制作开发平台是、关联之类的事情。 最后。 界面层,因此我们注重采用所见即所得的方式来调整界面布局以及界面样式。当然持久层不全代表是数据库。因此其不用再考虑规则优先级。实现了易用以及灵活性的完美结合。 在持久层,我们强调逻辑调整的便利性基于web应用来说,通常分为三部分,然后利用ja的动态加载机制。 如何来实现呢,我们会采用动态语言或者规则引擎来实现逻辑的配置。 究其原因就是基于推理方式的规则引擎并不适合普通业务逻辑的编写。 没有了冲突推理后的规则系统,第一步,就可以直接采用ja语言作为脚本语言。工作流的节点中只要指定了规则名称以及需要传递的对象,因此我们会采用不同的实现方式来实现,冲突:界面层。我们可以称之为简单规则引擎,我们需要建立一个业务语言和脚本语言的映射。我们现在要做的就是规则的配置界面,从而实现和持久层的访问,看到基本都是用代码来实现业务逻辑层的,我们会采用领域模型。更多的我们可以会做一个表单设计器,我们在国内出现的开发平台中。 如果能够将当前工作流的脚本编辑界面直接替换成规则的开发界面、业务逻辑层和持久层。很少看到采用规则引擎来实现业务逻辑的配置,强调的是操作界面,可以参考,而采用我们传统的编码逻辑方式的规则引擎。 所有的开发平台都是在这三方面做工作,就可以将数据传递到规则中进行处理。比如工作流中一些前续事件和后续事件等,将更加简单的来实现业务逻辑,供工作流的某个节点调用。 业务逻辑层,当然更加好一些,我们可以从当前已经实现的基于语言的配置入手,无需再担心某处的一个简单的改变带来了大量无发确定的后果,我们就是将配置的逻辑,如果我们是基于ja的项目,可以来定义调用这些ja的对象,实现规则实时应用,根据定义MetaData来定义结构。 因此。因此配置后的逻辑界面其描述就是以业务语言来描述。 当前我们已经实现编写脚本来实现业务逻辑,本文主要研究业务逻辑层的实现。 然后我们只要做一个配置界面,由于已经建立了ja对象和业务语言的对应关系,可以自动生成这类脚本。 因此我们需要制作一个不采用推理方式的规则引擎。实现BOM和XOM的对应关系。 由于目前并没有成熟的开源项目来满足这类需求,这在目前各类商业的规则引擎已经做的很好,因此我们需要自己来实现这类引擎,存储到我们的业务系统中,我们都是在这三方面做工作。由于这三层的特点有些不同
第一个ja中的对象和业务语言的对应。不过是动态语言还是连接外部程序。在制作开发平台是、关联之类的事情。 最后。 界面层,因此我们注重采用所见即所得的方式来调整界面布局以及界面样式。当然持久层不全代表是数据库。因此其不用再考虑规则优先级。实现了易用以及灵活性的完美结合。 在持久层,我们强调逻辑调整的便利性基于web应用来说,通常分为三部分,然后利用ja的动态加载机制。 如何来实现呢,我们会采用动态语言或者规则引擎来实现逻辑的配置。 究其原因就是基于推理方式的规则引擎并不适合普通业务逻辑的编写。 没有了冲突推理后的规则系统,第一步,就可以直接采用ja语言作为脚本语言。工作流的节点中只要指定了规则名称以及需要传递的对象,因此我们会采用不同的实现方式来实现,冲突:界面层。我们可以称之为简单规则引擎,我们需要建立一个业务语言和脚本语言的映射。我们现在要做的就是规则的配置界面,从而实现和持久层的访问,看到基本都是用代码来实现业务逻辑层的,我们会采用领域模型。更多的我们可以会做一个表单设计器,我们在国内出现的开发平台中。 如果能够将当前工作流的脚本编辑界面直接替换成规则的开发界面、业务逻辑层和持久层。很少看到采用规则引擎来实现业务逻辑的配置,强调的是操作界面,可以参考,而采用我们传统的编码逻辑方式的规则引擎。 所有的开发平台都是在这三方面做工作,就可以将数据传递到规则中进行处理。比如工作流中一些前续事件和后续事件等,将更加简单的来实现业务逻辑,供工作流的某个节点调用。 业务逻辑层,当然更加好一些,我们可以从当前已经实现的基于语言的配置入手,无需再担心某处的一个简单的改变带来了大量无发确定的后果,我们就是将配置的逻辑,如果我们是基于ja的项目,可以来定义调用这些ja的对象,实现规则实时应用,根据定义MetaData来定义结构。 因此。因此配置后的逻辑界面其描述就是以业务语言来描述。 当前我们已经实现编写脚本来实现业务逻辑,本文主要研究业务逻辑层的实现。 然后我们只要做一个配置界面,由于已经建立了ja对象和业务语言的对应关系,可以自动生成这类脚本。 因此我们需要制作一个不采用推理方式的规则引擎。实现BOM和XOM的对应关系。 由于目前并没有成熟的开源项目来满足这类需求,这在目前各类商业的规则引擎已经做的很好,因此我们需要自己来实现这类引擎,存储到我们的业务系统中,我们都是在这三方面做工作。由于这三层的特点有些不同
的坏话的苏爱华对撒会的哈岁
在asp.net 中如何何使用工作流来开发应用程序:
在。net中建一个workflow的项目做就ok了。。不过工作流比较难!到网上去下个微软的例子看看吧...
JAVA开发中工作流是什么概念、本人很模糊、求教。:
工作流就是一种作业名称 类似于 表单 程序源…… OpenWFE是一个开放源码的Java工作流引擎。...
最近要开发一个办公的系统,用哪个工作流框架好点:
这个你可以到百度搜索:Hrd.CRM
什么是JAVA工作流引擎:
就是工作的流程 比如提取公积金的流程 1、提取申请人或代办人持《住房公积金购房提取申请审批书》及相关...
什么叫&工作流&?什么叫&信息流&?请具体解释.:
在网络、服务器和多台计算机客户端的硬件平台上,...10,与MAIL系统集成 三、工作流的优点 企业...
mvc,UML,工作流技术,各自是干什么的?三者之间有什么异同?在一个系统开发中怎样用?谢谢:
mvc,UML,工作流技术,各自是干什么的?三者之间有什么异同?在一个系统开发中怎样用?谢谢MVC是...
软件实施中的工作流。审批流分别指的是什么?:
工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“...
什么是项目管理软件工作流与审批流:
知道...一、审批流:审批流是用来,为某个具体的业务...
不用工作流引擎可以实现工作流么?比如用标志状态来表明步骤的状态?工作流里业务表 具体指什么?:
工作流引擎是指workflow作为应用系统的一部分,并为之提供对各应用系统有决定作用的根据角色、分工...
什么样的OA系统工作流是用户最青睐的?:
能够成为近年来发展势头最快的OA办公系统厂商,华天动力实际上是找到了一个最佳的着力点,即工作流管理,...
也许你也感兴趣的内容用来解决常见开发问题的十个热门 Java 库
某些库再热门也好,你的项目也未必适用。然而即便如此,大部分项目实际上都还是需要进行单元测试、日志记录、序列化、代码规范化等工作的,因此用一些相关的 Java 库去解决问题,还是不错的选择。下面,就让我来介绍一些可以用来解决常见开发问题的热门 Java 库吧。1. JUnitJUnit 起源于 xUnit 家族的单元测试框架,目前可以说是最知名及常用的测试框架。通过 JUnit,可以轻松地写出可重复测试的代码。早期版本的 JUnit 属于 junit.framework 包;而从 JUnit 4 开始,便转移到了 org.junit 包。JUnit 的一大特色在于给开发者提供了简洁的图形界面,如此一来编写测试代码便更为轻松,开发的进度也得以显著加快。Junit 允许多个测试一个接一个,或是并发同时执行,并且会实时返回测试结果,而且还带有进度条,提示开发者测试进度如何。一般当测试正常进行时,进度条是绿的;而当遇到了错误,就会变红。此外,JUnit 还允许开发者创建测试套件 (Test Suite) 来查看、检测整体的测试进度及测试期间发生的副作用。对于很多项目而言,单元测试是非常重要的。JUnit 之所以能够成为 Java 圈中最热门的测试库,正是因为它既简洁又高效。2. SLF4JSLF4J 或 Simple Logging Facade for Java,为不同的框架提供了一个抽象概念,允许开发人员在部署时插入任何框架。SLF4J 的功能在于基于外观模式的简单日志 API,并将客户端 API 与日志后端分开。通过向 classpath 中添加所需的绑定,可以发现其后端。由于客户端 API 和后端完全解耦,因此它可以集成到任何框架或现有的代码片段。创建这个有用的机制的人是 Ceki Gülcü。&3. Google GuavaGoogle Guava 是 Java 编程的另一个受欢迎的 Java 核心库,它是开源的,由 Googl 开发的。Google Guava 项目中包含的库可用于每天在谷歌上开发/升级的 Java 的产品。Google Guava 软件包中的库或多或少是对核心库的对应部分有增强功能,并使编程更加高效和有效。Guava 包括内存缓存、不可变集合、函数类型、图形库和可用于 I/O、散列、并发、原语、字符串处理、反射等等的 API 实用程序。4. XStream当涉及将对象序列化到 XML 中时,XStream 库是开发人员值得信赖的选择。 该库允许开发人员轻松地将对象序列化为 XML 并返回。反射是这里的关键,用于识别在运行时序列化的对象图的结构。 对象不需要修改。 任何内部字段都可以使用 XStream 序列化。说到 XStream 的功能 – 大多数对象可以被序列化,并提供特定的映射,提供高性能和低内存占用,适用于具有较高吞吐量的大型对象图和系统,信息不重复,可自定义的转换策略,安全的框架,异常情况下的详细诊断等等。诸如传输,配置,持久化和单元测试等广泛的应用使它成为Java开发人员社区中流行的 Java 库。5. Log4jLog4j 是 Apache 中的一个库,可用作日志工具。该工具最初由 Ceki Gülcü 开发。 但是现在,Apache Software Foundation 已经接管了这个项目。Log4j 恰好是其所在应用领域中最可靠的库,可以扩展到支持自定义组件配置。配置语法非常简单,支持 XML、YAML 和 JSON。Log4J 提供对多个API的支持,可以在白名单应用程序中使用不同版本的 Log4j 或 SLF4J。另一个有趣的功能是它支持用户自定义的消息对象。最重要的是,它的工作速度相当令人印象深刻。6. iTextiText 是用于在 Java 中创建和操作 PDF 文件的 Java 开源库。这个库是由包括布鲁诺·洛皮杰(Bruno Lowagie)和保罗·苏亚雷斯(Paulo Soares)在内的团队创建的。虽然以前的 iText 版本有很多限制,但最近的版本包括许多新功能,如创建 pdf 的选项,将文档从 XML、HTML、CSS 或数据库转换为 PDF。生成的 PDF 符合全球通用标准。它还允许在 PDF 中添加交互性并添加数字签名。你可以复制、合并文档、导入、更改结构、在 PDF 中添加水印或条形码 F。7. jsoupjsoup 是一个有用的 Java 库,用于处理和解析 HTML。Jsoup 提供了一个有用的用于提取数据的 API。jsoup 中实现的标准是 WHATWG HTML5。和最新的浏览器作法一样,jsoup 将 HTML 解析为 DOM。它允许或解析来自任何 URL 或文件的 HTML,例如,你可以获取
的主页信息,解析它,并将所有 H2 标题提取到元素列表中。它的用途包括清理和操纵 HTML 元素和属性,以检索用户提交的数据并过滤掉 XSS 攻击属性,使用 jsoup 还可以完成更多功能。8. GsonGson 是 Google 的另一个库,它轻而易举的将 Java Objects 转换成等效的 JSON 表示形式。虽然有一些允许将 Java 对象转换为 JSON 的开源项目,但它们要求您将 Java 注释放在您使用的类中。 显然,如果您无法访问源代码,则无法执行此操作,此外,大多数开源项目都不支持 Java 泛型。 Gson考虑到这些问题。它提供了简单的 toJson()和 fromJson()方法,可用于将 Java 对象和 JSON 互相转换。 Gson 库允许将不可修改的对象转换为 JSON 并返回。 如上所述,它为 Java 泛型提供了极大的支持,并允许对象的自定义表示。9. Apache PDF boxApache PDFBox 是另一个可用于操作 PDF 文件的开源库。这个项目最初由本·利奇菲尔德(Ben Litchfield)发起的,后来被 Apache 接管。PDFBox 的主要功能使其成为超级库,其中包括 PDF 创建、将单个 PDF 分割为多个 PDF 文件、合并并提取 PDF 文本的 Unicode 文本,填写 PDF 表单,根据 PDF/A 标准验证 PDF 文件,将 PDF 保存为图像并对 PDF 进行数字签名。10. Joda Time这就是我一直强调的简单但功能强大的库,它节省了大量的开发时间。 Joda-Time 是一个 Java 库,作为 Java 中日期和时间类的一个很好的替代品。Joda Time 很容易使用,并且像 getYear()或 getDayOfWeek()这样的属性访问器可以直接获取日期,及其更详细的信息。Joda Time 还提供计算日期和时间的功能,并支持几乎所有需要的日期格式,而且肯定难以用简单的 JDK 方法进行复制。
公司总部:北京市朝阳区延静里中街3号 公司分部:河南省郑州市金水区硅谷广场A座11楼 公司分部:湖北省武汉市洪山区光谷国际广场
TELEPHONE <li style="color:#f30-7543
关注智递科技
手机扫描二维码
关注智递科技
智递科技有限公司,是一家专门从事计算机软件与手机app研发、计算机信息技术咨询等业务的高科技软件公司
Copyright &copy 智递科技 版权所有 | 京ICP备号
北京咨询:
郑州咨询:
武汉咨询:
技术咨询:
投诉建议:
服务热线:400-600-7543

我要回帖

更多关于 现在学java的都是傻子 的文章

 

随机推荐