java开源缓存
1. java开源web项目有哪些
Spring MVC
Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts1,Struts2等。
2. Struts 2
为了更详细的阐述现代软件工程师广泛使用的现有Java框架,我们决定参考Apache的Struts 1后继版本Struts 2。这个Java框架对于使用构建当代Java EE Web应用程序的工程师来说是一个很好的选择。Apache软件基金会为开发人员提供了一个广泛的工具,用于创建企业级的面向Web的应用程序,开发过程的优化从开始贯彻到结束,还提供后期的维护。如果你还在为高负载系统(如广播门户)发愁,这个框架将是你的不二之选。
3. Hibernate
这个 Java 映射框架借助于将持续存在的数据库访问操作替换为高层次的对象处理功能,来解决对象-关系的不匹配问题。每一个企业应用程序的情况都不同,而Hibernate则拥有功能强大的工具套件来帮助后台开发人员对其数据访问层进行微调。这是一个高级的 ORM 框架,你可以用它来在 Java 对象(实体)上进行数据库操作。利用 Hibernate 缓存来将 Java 环境中的数据持久化到数据库是一个持久化的概念、
4. JSF
作为java EE的一部分,JavaServer Faces被Oracle所支持。虽然这不是一个可以进行快速java开发的最好框架,但它很容易使用,因为Oracle提供了大量文档。此外,除非你离开java EE环境,JSF不需要任何的外部依赖,而功能非常强大。它拥有丰富的库和工具(包括一个简单的用户界面生成工具),使之成为了一个神奇的魔法棒,无论应用程序可能看起来有多么复杂,它都可以给予你支持与帮助。
5. Vaadin
当现代开发者创建商业应用程序,并使用GWT渲染终端网页时,Vaadin称得上是一个超级流行的框架。Vaadin利用一个众所周知的基于组件的方法,能够适应浏览器的变化,从而减轻了开发商的负担。它拥有一套扩展的用户界面组件,以及各种不同的部件和控件,可以让程序员在任何时候都可以建立一个很酷的应用程序。
6. Google Web Toolkit
GWT是另一个免费的java框架,它允许程序员创建和优化复杂的网络应用程序。GWT的软件开发工具包包括核心的java API和小部件,构建随后可以编译成JavaScript的应用程序。
7. Grails
这个独特的框架被视为是提升工程师生产效率的动态工具,因为其干脆的API设计,合理的默认值以及约定架构。与java的无缝集成使得这个框架成为世界上众多框架中的首选。一系列强大的特性,如基于sping的依赖注入和各式各样的插件,可以提供创建现代基于web的app的所有需要的东西。
2. 请问免费的开源java快速开发平台有哪些
JBoss Seam
JBoss Seam,算得上是Java开源框架里面最优秀的快速开发框架之一。
Seam框架非常出色,尤其是他的组件机制设计的很有匠心,真不愧是Gavin King精心打造的框架了,虽然看起来还是有些缺陷,但是做企业应用项目的话,Seam是一个很棒的选择,作为程序员来说,要比用 Spring/Hibernate/Struts省心的多,更能够把精力放在业务逻辑的编写上面,开发效率也很不错,可能是Java开源框架里面最优秀的 快速开发框架之一了。
Jdon Framework
Jdon Framework(简称JF)是一套适合开发中小型J2EE应用系统的快速开发框架、也是一套Ioc/Aop框架、更是一套符合当前国际水平的、面向组件开发的、国人拥有自主产权的中间件产品。中国第一个开源框架,国内先进的组件、构件工具。
分布式快速开发平台 iBase4J
项目简介: iBase4J 是 Java 语言的分布式系统架构。 使用 Spring 整合开源框架。使用 Maven 对项目进行模块化管理,提高项目的易开发性、扩展性。系统包括5个子系统:公共功能、系统管理 Service、系统管理 Web、业务 Service、业务 Web。
公共功能:公共功能(AOP、缓存、基类、调度等等)、公共配置、工具类。
系统管理:包括用户管理、权限管理、数据字典、系统参数管理等等。
业务相关:您的业务开发。 可以无限的扩展子系统,子系统之间使用 Dubbo 或 MQ 进行通信。
python Web 开发框架
python语言,功能强大,开发效率高,平台移植性好,可扩展性好,很适合小型的团队作战,他的语法采用缩进形式编写,比较简单,容易上手,并且目前Web 开发框架很多,可以直接运用。
3. java现在开源的缓存框架那个最好!
mvnForum 点击次数:7210
mvnForum是基于javaJ2EE 技术(Jsp/Servlet)的一个开源论坛.,安装简单。mvnForum兼容任何Servlet容器,支持Jsp 1.2 and Servlet 2.3。
JForum 点击次数:6633
JForum 是一个功能强大 ,易于管理的论坛。它的设计完全遵从MVC设计模式,能够在任何Servlet容器与EJB服务器上运行。而且可以轻松的定制与扩展JForum论坛。
xforum 点击次数:7789
国人开发的一个开源论坛,基于 Struts 技术,是学习 Struts 的一个非常好的范例。它用到 JAAS 实现 Security ,中文问题的解决,数据层用到 DAO ,以及基于 Struts 应用的基本架构,都是个非常好的学习。
jGossip 点击次数:2583
jGossip是一个简单,功能强大的java论坛。可运用j2EE在平台上。采用Struts framework技术。
FreeForums 点击次数:2164
一个基于XML的Java2企业级的论坛解决方案。FreeForums页面采用CSS, DHTML 与JavaScript等技术。这样用户可以定制自已喜欢的界面。它还提供一个在Windows下的客户端程序。
Sk Forum 点击次数:1549
SK Forum是一个开源的基于web的J2EE论坛应用程序。它是一个功能比较齐全的系统,包括很多功能比如:投票,wiki,定时跟踪,地址薄,好友薄以及其它一些小的功能。
JsForum 点击次数:1488
JsForum是只用到jsp与Servlet技术的论坛,容易使用。具有一般论坛的功能。但是目前只能支持MYSQL数据库。
nemesis-forum 点击次数:1197
一个使用J2EE技术的论坛。它的功能包括用户与用户组权限管理,支持i18n,内容过滤,综合搜索引擎,支持多种数据库。
Yazd 点击次数:1499
Yazd是一个使用JDBC连接数据库的论坛。它的特性包括:
1.提供在线安装和配置。
2.内容过滤(把Html代码转换成可显示的文件,自定义关键字过滤列表,隐藏urls的实现路径)。
3.集成Lucene1.3提供关键字搜索功能。
4.支持的数据库包括:Oracle,MySQL,DB2,Microsoft SQLServer,Sybase,Interbase,Hypersonic SQL,Pointbase,Informix和Postgres
5.还有其它一些一个论坛应具备的基本功能。
这个论坛提供多语言支持其中包括简体中文。
JavaBB 点击次数:2275
JavaBB基于java技术的类似于phpbb的论坛。
JForumFusion 点击次数:2295
JForumFusion是一个Java开源论坛。它主要的一些功能包括常规论坛功能,文件附件上传,个人信息,基于web的管理工具,UBBCode,和高性能的搜索引擎等。支持主流数据库包括:Oracle, DB2, MySQL, PostgreSQL, Sybase, SAP DB, HypersonicSQL, Microsoft SQL Server...
jzForum 点击次数:1745
这是一个利用Java开发的简单论坛.以下列出它的几点特性:
* 完全支持BBCode,
* 在新贴提交时利用AJAX技术提供无刷新页面预览功能.
* 利用lucene提供全文本搜索功能.
* 用户可监控主题.
* 可以容易更改样式(利用CSS几乎没有用到table).
* 安装简单只有一个war文件没有数据库(其实是内嵌hypersonic数据库)但 也支持其它数据库.
* 包括一个投票系统.
* jzForum还提供RSS阅读功能并利用缓存技术提高整个论坛的速度.
BBS-CS 点击次数:4336
天乙社区是一套基于JAVA技术的网络虚拟社区,采用了Hibernate+Spring+Struts的轻量级J2EE框架.
1、全文检索:天乙社区6.0采用Lucene全文检索,并支持完全国际化多语言的全文检索。
2、MVC框架:天乙社区6.0继续了5.x的Struts框架,但经过优化,WEB端更加简洁高效。
3、集群支持:系统可以运行在集群上。
4、功能方面:大大加强了管理功能,用户可以多样化的定制系统的各项信息,包括用户级别、封锁IP、过滤字等等,论坛功能上主要增加了投票帖、上传附件类型多样、帖子中显示用户信息等等功能等。
EasyJF 点击次数:650
简易java框架开源论坛系统拥有常用论坛系统的基本功能,集前台后台代码为一体,支持UBB。该论坛系统使用基于OO的方法设计,采用多层B/S构架,数据库持久层主要使用简易数据库开源框架EasyDBO,Web层使用EasyJWeb框架,java代码与页面完全分离,易扩展。
4. java开源的框架
Spring Framework 【Java开源 J2EE框架】
Spring是一个解决了许多在J2EE开发中常见的问题的强大框架。 Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础是基于使用JavaBean属性的Inversion of Control容器。然而,这仅仅是完整图景中的一部分:Spring在使用IoC容器作为构建完关注所有架构层的完整解决方案方面是独一无二的。 Spring提供了唯一的数据访问抽象,包括简单和有效率的JDBC框架,极大的改进了效率并且减少了可能的错误。Spring的数据访问架构还集成了Hibernate和其他O/R mapping解决方案。Spring还提供了唯一的事务管理抽象,它能够在各种底层事务管理技术,例如JTA或者JDBC事务提供一个一致的编程模型。Spring提供了一个用标准Java语言编写的AOP框架,它给POJOs提供了声明式的事务管理和其他企业事务--如果你需要--还能实现你自己的aspects。这个框架足够强大,使得应用程序能够抛开EJB的复杂性,同时享受着和传统EJB相关的关键服务。Spring还提供了可以和IoC容器集成的强大而灵活的MVC Web框架。【SpringIDE:Eclipse平台下一个辅助开发插件】.
WebWork 【Java开源 Web框架】
WebWork是由OpenSymphony组织开发的,致力于组件化和代码重用的拉出式MVC模式J2EEWeb框架。WebWork目前最新版本是2.1,现在的WebWork2.x前身是Rickard Oberg开发的WebWork,但现在WebWork已经被拆分成了Xwork1和WebWork2两个项目。 Xwork简洁、灵活功能强大,它是一个标准的Command模式实现,并且完全从web层脱离出来。 Xwork提供了很多核心功能:前端拦截机(interceptor),运行时表单属性验证,类型转换,强大的表达式语言(OGNL – the Object Graph Notation Language),IoC(Inversion of Control倒置控制)容器等。 WebWork2建立在Xwork之上,处理HTTP的响应和请求。WebWork2使用ServletDispatcher将HTTP请求的变成Action(业务层Action类), session(会话)application(应用程序)范围的映射,request请求参数映射。WebWork2支持多视图表示,视图部分可以使用JSP, Velocity, FreeMarker, JasperReports,XML等。在WebWork2.2中添加了对AJAX的支持,这支持是构建在DWR与Dojo这两个框架的基础之上.【EclipseWork:用于WebWork辅助开发的一个Eclipse插件】
Apusic JSF 【Java开源 Web框架】
Apusic JSF-基于Ajax技术的JSF开源引擎。通过Apusic JSF的Ajax特性,我们能够只把发生变化的数据打包成Ajax请求发送给服务器端,而服务器端也只会将发生变化的数据打包成Ajax应答,从而大大提升系统的运行效率。并且,传统的JSF请求应答将刷新整个页面,而Apusic JSF将只更新发生变化的客户端组件,从而给客户带来更好的人机体验......
Struts 【Java开源 Web框架】
Struts是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,在过去的一年中颇受关注。Struts把Servlet、JSP、自定义标签和信息资源(message resources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,所以说Struts是一个非常不错的应用框架。【StrutsIDE:用于Struts辅助开发的一个Eclipse插件】
Strecks 【Java开源 Web框架】
针对Java 5.0开发人员设计,扩展自Struts的一个Web框架。它的特点包括:POJO action,注释式校验,数据绑定和转换,依赖注入,拦截器等。
jxyz 【Java开源 Web框架】
pojo的mvc框架,使用java注解,使用ognl传输上下文,使用hivemind做ioc容器,使用spring简化hibernate操作,使用泛型来减少重复代码。 有以下几个特点。
1.Pojo。任何一个java类都可以做Action(logic),为了改造现在常用的ssh,tsh,wsh框架成sh,支持spring bean做Action(logic)
2.0配置,根据命名规范来查找Action类和view
3.和web环境松耦合,从理论上讲可以用在swing里
4.支持tdd开发,框架本身就是以tdd开发方式开发
5.代码少,一般mvc需要5个类,xyz只要3个,还可以通过GenericDAO,GenericLogic来减少重复代码
6.对开发者来说,一切实现都可以自己定制,由于hivemind支持迭代开
Hibernate 【Java开源 持久层框架】
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Eclipse平台下的Hibernate辅助开发工具:【Hibernate Synchronizer】【MiddlegenIDE】
IBATIS 【Java开源 持久层框架】
使用ibatis 提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的Java对象, 这一层与通过Hibernate 实现ORM 而言基本一致,而对于具体的数据操作,Hibernate 会自动生成SQL 语句,而ibatis 则要求开发者编写具体的SQL 语句。相对Hibernate等 “全自动”ORM机制而言,ibatis 以SQL开发的工作量和数据库移植性上的让步,为系统 设计提供了更大的自由空间。作为“全自动”ORM 实现的一种有益补充,ibatis 的出现显 得别具意义。
EasyJWeb 【Java开源 Web框架】
EasyJWeb是基于java技术,应用于WEB应用程序快速开发的MVC框架,框架设计构思来源于国内众多项目实践,框架充分借签了当前主要流行的开源Web框架(Struts、JSF、Tapestry 、Webwork),吸取了其优点及精华,利用Velocity作为模板页面引擎,是一个实现了页面及代码完全分离的MVC开发框架。是一个能实现中小型Web应用系统快速开发的简易Web框架。
Tapestry 【Java开源 Web框架】
Tapestry是一个开源的基于servlet的应用程序框架,它使用组件对象模型来创建动态的,交互的web应用。一个组件就是任意一个带有jwcid属性的html标记。其中jwc的意思是Java Web Component。Tapestry使得java代码与html完全分离,利用这个框架开发大型应用变得轻而易举。并且开发的应用很容易维护和升级。Tapestry支持本地化,其错误报告也很详细。Tapestry主要利用javabean和xml技术进行开发。【Spindle:Tapestry辅助开发Eclipse插件】.
Turbine 【Java开源 Web框架】
Turbine是基于Servlet的框架包,也是开放源代码Jakarta项目。目前还没有关于Turbine的大量文档。它类似于Struts,但是有一些主要区别。突出的一点就是它并没有与JSP耦合。Turbine的特点是它提供了大量可重用的组件。此框架包中包含了大量组件,但是这些组件是离散的。它似乎应该给出更多的组件库,但是由于它缺少文档,所以很难掌握完整的体系结构。
Nuxeo5 【Java开源 J2EE框架】
Nuxeo5是一个用于ECM(Enterprise Content Management)应用程序开发的开源框架。基于组件和面向服务的架构使得它真正易于定制和扩展。Nuxeo5构建流行的Java5与Java EE5技术包括:Apache Jackrabbit ,JBoss应用服务器,JBoss Seam,jBPM,JBoss Rules,JSF,EJB3等,并运用OSGi与Nuxeo Core。
Jt 【Java开源 J2EE框架】
Jt是一个轻量级的,面向设计模式的J2EE框架。Jt已经被运用到一些大型的关键业务系统(mission critical system)。Jt实现了许多着名设计模式包括DAO(Data Access Object),GoF中的设计模式和J2EE模式。该框架支持的一些J2EE技术包括JSP,JDBC,EJB,JavaMail,XML和Web Services。
Open-jACOB eMail 【Java开源 WebMail】
Open-jACOB eMail是一个轻量级IMAP客户端,基于Javamail API与Open-jACOB框架开发。界面类似于Gmail,它提供的功能包括完整的folder list,message list和contact list。
Open-jACOB 【Java开源 Web框架】
Open-jACOB是一个Web框架用于开发基于AJAX,数据库驱动,跨浏览器的Web应用程序。该框架设计成一个基于Eclipse的插件,可以利用该插件设计数据库,设计UI,部署/测试应用程序等。具体用法可查看其提供的一个Flash Demo。
Ruby on Spring 【Java开源 Web框架】
Ruby on Spring是一个采用Ruby on Rails的思想与优点,集成JRuby动态语言与Spring框架而开发的开源项目。基于MIT license发布。
Ebean 【Java开源 持久层框架】
Ebean是一个对象/关系映射持久层框架。它与EJB3相类似,但该框架简单易于学习和使用。它特点: 1.兼容EJB3 ORM映射。2.支持级联保存和删除。3.支持懒加载。4.事务管理和日记功能。5.Statement Batching 5.支持缓存。6.Clustering。7.集成Lucene文本搜索。
5. Java 世界有哪些优秀的第三方开源 jar 包值得推荐使用
我说几个常用的吧。
工具类:
1. log4j
理由:向system.out.println()说永别,刚开始学java的时候总是喜欢依靠system.out.println()的输出来查看异常和调试。后来工作后就果断log4j了,这样项目开发和发布的时候,可以根据自己的需求开关日志级别,把日志打印到远程服务等多种功能。现在这个基本成为标配了。
2.guava
google出品的第三方工具库。当java.util 提供的数据结构不能满足的时候从这里你可以快速找到大量已经写好的数据结构了,这使得你不用花费心思在一些常用的数据结构上了。比如LRU缓存之类的。只是好几个版本的跨度比较大,兼容也不怎么好。
3.apache commons 包含的组件
apache commons 涵盖了大量的小工具,比如发邮件(线上告警用),快速且方便的IO操作封装。等等工具很多,可以自己慢慢去学习。
4.netty
一个网络通信框架,当需要实现自定义协议的时候我就用这个,netty的新版本自带了很多协议的实现版本,这是搞网络快速开发不二的选择。
5.httpclient 系列
主要是用在测试线上服务的时候用的。毕竟是一个基于http协议网络工具,当开发的web上线的时候,利用httpclient来写测试用例,效果很不错。测试的工具有很多,但是这个可以满足你定制http请求的需求。
服务类:
1.jetty
httpclient 的同一个项目下有一个简易的http server 但是没有实现servlet,这个时候jetty的效果就体现出来了。特别的是,当你打算对 jsp jstl 等方式编写的网页进行功能测试的时候,jetty就可以承担 mock的作用,好用得很。使得你可以在junit的框架下对jsp编写的网页进行测试。
2.maven
现在的java已经离不开这个玩意了。你可以自己搭建一个nexus 来做maven私服。当你存在RPC的需求的时候。完全可以把自己的接口部分和client打包上传到maven私服,调用的服务只需要include这个包就可以远程调用你的服务了。在国内配合上bbo这类 SOA框架。那个效果酸爽的很。完成了实际意义上的接口于实现在网络层级的分离。让java 的package 形成一个网络上的package。需要某个服务的时候,include 直接调用。其他的一律不用管。
6. Java本地缓存有哪些
下面给你介绍几个常见的java缓存框架:
1、OSCache
OSCache是个一个广泛采用的高性能的J2EE缓存框架,OSCache能用于任何Java应用程序的普通的缓存解决方案。
OSCache有以下特点:
缓存任何对象,你可以不受限制的缓存部分jsp页面或HTTP请求,任何java对象都可以缓存。
拥有全面的API--OSCache API给你全面的程序来控制所有的OSCache特性。
永久缓存--缓存能随意的写入硬盘,因此允许昂贵的创建(expensive-to-create)数据来保持缓存,甚至能让应用重启。
支持集群--集群缓存数据能被单个的进行参数配置,不需要修改代码。
缓存记录的过期--你可以有最大限度的控制缓存对象的过期,包括可插入式的刷新策略(如果默认性能不需要时)。
2、Java Caching System
JSC(Java Caching System)是一个用分布式的缓存系统,是基于服务器的java应用程序。它是通过提供管理各种动态缓存数据来加速动态web应用。
JCS和其他缓存系统一样,也是一个用于高速读取,低速写入的应用程序。
动态内容和报表系统能够获得更好的性能。
如果一个网站,有重复的网站结构,使用间歇性更新方式的数据库(而不是连续不断的更新数据库),被重复搜索出相同结果的,就能够通过执行缓存方式改进其性能和伸缩性。
3、EHCache
EHCache 是一个纯java的在进程中的缓存,它具有以下特性:快速,简单,为Hibernate2.1充当可插入的缓存,最小的依赖性,全面的文档和测试。
4、JCache
JCache是个开源程序,正在努力成为JSR-107开源规范,JSR-107规范已经很多年没改变了。这个版本仍然是构建在最初的功能定义上。
5、ShiftOne
ShiftOne Java Object Cache是一个执行一系列严格的对象缓存策略的Java lib,就像一个轻量级的配置缓存工作状态的框架。
6、SwarmCache
SwarmCache是一个简单且有效的分布式缓存,它使用IP multicast与同一个局域网的其他主机进行通讯,是特别为集群和数据驱动web应用程序而设计的。SwarmCache能够让典型的读操作大大超过写操作的这类应用提供更好的性能支持。
SwarmCache使用JavaGroups来管理从属关系和分布式缓存的通讯。
7. 几个着名Java开源缓存框架介绍
为String类中中实现了用加号“+”来连接两个字符串而沾沾自喜。我认为这是Java中最甜的语法糖,甚至甜到掉牙。两个字符串str1和str2。如果你使用:
str1 + str2;
这样的语法并不会改变str1的字符串内容。要写作:
str1 = str1 + str2;//str1 += str2;
你或许很清楚这个语法。而这背后所做的操作其实在内存中新建了一
8. Java开源框架是什么
其实框架很简单的,你可以认为它是一个工具,甚至一个插件。
框架的作用,就是将一个公用的,常用的技术,封装起来,
帮你处理一些基础的东西,可以让你不用再去写那些繁琐的东西。
就拿你要学的struts来说:他本质上也是用java写的,和我们自己写的类没有区别,他实现的东西我们自己也可以实现。
比如接收客户端的数据,我们是用request.getParameter()来的,但是如果有很多个参数,我们要写很多个,很麻烦。struts它就帮我们实现,不用我们写,直接写个属性,就可以得到。其实本质还是用request.getParameter()。。
所以你不要再在意框架是什么东西,等你接触了就知道了。你把它当做一个工具来用,这就是框架。
前台框架:jQuery
Mvc框架:Struts、spring Mvc
核心框架:Spring
orm框架:Hibernate、Spring JDBC、myBatis。
9. Java代码如何优化
今天就跟中公优就业一起来看看java代码优化细节。
1、尽量指定类、方法的final修饰符
带有final修饰符的类是不可派生的。在Java核心API中,有许多应用final的例子,例如java.lang.String,整个类都是final的。为类指定final修饰符可以让类不可以被继承,为方法指定final修饰符可以让方法不可以被重写。如果指定了一个类为final,则该类所有的方法都是final的。Java编译器会寻找机会内联所有的final方法,内联对于提升Java运行效率作用重大,具体参见Java运行期优化。此举能够使性能平均提高50%。
2、尽量重用对象
特别是String对象的使用,出现字符串连接时应该使用StringBuilder/StringBuffer代替。由于Java虚拟机不仅要花时间生成对象,以后可能还需要花时间对这些对象进行垃圾回收和处理,因此,生成过多的对象将会给程序的性能带来很大的影响。
3、尽可能使用局部变量
调用方法时传递的参数以及在调用中创建的临时变量都保存在栈中速度较快,其他变量,如静态变量、实例变量等,都在堆中创建,速度较慢。另外,栈中创建的变量,随着方法的运行结束,这些内容就没了,不需要额外的垃圾回收。
4、及时关闭流
Java编程过程中,进行数据库连接、I/O流操作时务必小心,在使用完毕后,及时关闭以释放资源。因为对这些大对象的操作会造成系统大的开销,稍有不慎,将会导致严重的后果。
5、尽量减少对变量的重复计算
明确一个概念,对方法的调用,即使方法中只有一句语句,也是有消耗的,包括创建栈帧、调用方法时保护现场、调用方法完毕时恢复现场等。所以例如下面的操作:
for (int i = 0; i < list.size(); i++){...}
建议替换为:
for (int i = 0, int length = list.size(); i < length; i++){...}
这样,在list.size()很大的时候,就减少了很多的消耗
6、尽量采用懒加载的策略,即在需要的时候才创建
例如:
String str = "aaa";if (i == 1){list.add(str);}
建议替换为:
if (i == 1){String str = "aaa";list.add(str);}
7、慎用异常
异常对性能不利。抛出异常首先要创建一个新的对象,Throwable接口的构造函数调用名为fillInStackTrace()的本地同步方法,fillInStackTrace()方法检查堆栈,收集调用跟踪信息。只要有异常被抛出,Java虚拟机就必须调整调用堆栈,因为在处理过程中创建了一个新的对象。异常只能用于错误处理,不应该用来控制程序流程。
8、不要在循环中使用try…catch…,应该把其放在最外层
除非不得已。如果毫无理由地这么写了,只要你的领导资深一点、有强迫症一点,八成就要骂你为什么写出这种垃圾代码来了
9、如果能估计到待添加的内容长度,为底层以数组方式实现的集合、工具类指定初始长度
比如ArrayList、LinkedLlist、StringBuilder、StringBuffer、HashMap、HashSet等等,以StringBuilder为例:
(1)StringBuilder() // 默认分配16个字符的空间
(2)StringBuilder(int size) // 默认分配size个字符的空间
(3)StringBuilder(String str)// 默认分配16个字符+str.length()个字符空间
可以通过类(这里指的不仅仅是上面的StringBuilder)的来设定它的初始化容量,这样可以明显地提升性能。比如StringBuilder吧,length表示当前的StringBuilder能保持的字符数量。因为当StringBuilder达到最大容量的时候,它会将自身容量增加到当前的2倍再加2,无论何时只要StringBuilder达到它的最大容量,它就不得不创建一个新的字符数组然后将旧的字符数组内容拷贝到新字符数组中—-这是十分耗费性能的一个操作。试想,如果能预估到字符数组中大概要存放5000个字符而不指定长度,最接近5000的2次幂是4096,每次扩容加的2不管,那么:
(1)在4096 的基础上,再申请8194个大小的字符数组,加起来相当于一次申请了12290个大小的字符数组,如果一开始能指定5000个大小的字符数组,就节省了一倍以上的空间
(2)把原来的4096个字符拷贝到新的的字符数组中去
这样,既浪费内存空间又降低代码运行效率。所以,给底层以数组实现的集合、工具类设置一个合理的初始化容量是错不了的,这会带来立竿见影的效果。但是,注意,像HashMap这种是以数组+链表实现的集合,别把初始大小和你估计的大小设置得一样,因为一个table上只连接一个对象的可能性几乎为0。初始大小建议设置为2的N次幂,如果能估计到有2000个元素,设置成new HashMap(128)、new HashMap(256)都可以。
10、当复制大量数据时,使用System.array()命令