- 浏览: 1416917 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (363)
- oracle (43)
- 缓存策略 (4)
- 数据库设计 (7)
- IntelliJ IDEA (8)
- freemarker (3)
- JSP (12)
- java基础 (75)
- tomcat (14)
- 服务器 (10)
- maven (3)
- linux (21)
- e-learning (2)
- 手机开发 (1)
- 设计模式 (6)
- 技术之外 (2)
- 工具的使用 (8)
- HTML 5 (5)
- 网站前台 (38)
- 网站后台 (11)
- 项目管理 (12)
- 面试题 (5)
- 幽默 (0)
- 系统架构 (8)
- 创业 (10)
- div-css (5)
- 诗词歌赋 (1)
- 网络课堂组知识库 (4)
- 杂家 (3)
- android (12)
- 框架 (14)
- 读书笔记 (1)
- 孙子兵法 (1)
- mysql (3)
- 小人书 (0)
- Jquery (6)
- eclipse (2)
- 正则表达式 (1)
最新评论
-
a98709474:
写的很详细,看完了,明白了这种概念了
数据库水平切分(拆库拆表)的实现原理解析(转) -
a98709474:
MYSQL分库分表总结 -
CatchU:
7年前的招聘要求,厉害厉害
面试要求 -
luozhixiong:
<table class="bbcode&qu ...
MYSQL分库分表总结 -
沈寅麟:
好用
freemarker格式化
尽量避免随意使用静态变量
要知道,当某个对象被定义为stataic变量所引用,那么gc通常是不会回收这个对象所占有的内存,如
此时静态变量b的生命周期与A类同步,如果A类不会卸载,那么b对象会常驻内存,直到程序终止。
尽量使用基本数据类型代替对象
上面这种方式会创建一个“hello”字符串,而且JVM的字符缓存池还会缓存这个字符串;
此时程序除创建字符串外,str所引用的String对象底层还包含一个char[]数组,这个char[]数组依次存放了h,e,l,l,o
尽量使用final修饰符
带有final修饰符的类是不可派生的。如果一个类是final的,则该类所有方法都是final的。Java编译器会寻找机会内联(inline)所有的final方法(这和具体的编译器实现有关)。此举能够使性能平均提高50%。
尽量避免使用split
除非是必须的,否则应该避免使用split,split由于支持正则表达式,所以效率比较低,如果是频繁的几十,几百万的调用将会耗费大量资源,如果确实需 要频繁的调用split,可以考虑使用apache的StringUtils.split(string,char),频繁split的可以缓存结果。
尽量确定StringBuffer的容量
StringBuffer 的构造器会创建一个默认大小(通常是16)的字符数组。在使用中,如果超出这个大小,就会重新分配内存,创建一个更大的数组,并将原先的数组复制过来,再 丢弃旧的数组。在大多数情况下,你可以在创建 StringBuffer的时候指定大小,这样就避免了在容量不够的时候自动增长,以提高性能。
如:
尽量避免使用二维数组
二维数据占用的内存空间比一维数组多得多,大概10倍以上。
尽量减少对变量的重复计算
如
应该改为
并且在循环中应该避免使用复杂的表达式,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快。
尽量使用移位来代替'a/b'的操作
"/"是一个代价很高的操作,使用移位的操作将会更快和更有效
如
应该改为
但注意的是使用移位应添加注释,因为移位操作不直观,比较难理解
尽量使用移位来代替'a*b'的操作
同样的,对于'*'操作,使用移位的操作将会更快和更有效
如
应该改为
尽量使用局部变量
调用方法时传递的参数以及在调用中创建的临时变量都保存在栈(Stack)中,速度较快。其他变量,如静态变量、实例变量等,都在堆(Heap)中创建,速度较慢。
尽量处理好包装类型和基本类型两者的使用场所
虽然包装类型和基本类型在使用过程中是可以相互转换,但它们两者所产生的内存区域是完全不同的,基本类型数据产生和处理都在栈中处理,包装类型是对象,是在堆中产生实例。
在集合类对象,有对象方面需要的处理适用包装类型,其他的处理提倡使用基本类型。
单线程应尽量使用HashMap、ArrayList
HashTable、Vector等使用了同步机制,降低了性能。
ArrayList & LinkedList
一 个是线性表,一个是链表,一句话,随机查询尽量使用ArrayList,ArrayList优于LinkedList,LinkedList还要移动指 针,添加删除的操作LinkedList优于ArrayList,ArrayList还要移动数据,不过这是理论性分析,事实未必如此,重要的是理解好2 者得数据结构,对症下药。
要知道,当某个对象被定义为stataic变量所引用,那么gc通常是不会回收这个对象所占有的内存,如
public class A{ static B b = new B(); }
此时静态变量b的生命周期与A类同步,如果A类不会卸载,那么b对象会常驻内存,直到程序终止。
尽量使用基本数据类型代替对象
String str = "hello";
上面这种方式会创建一个“hello”字符串,而且JVM的字符缓存池还会缓存这个字符串;
String str = new String("hello");
此时程序除创建字符串外,str所引用的String对象底层还包含一个char[]数组,这个char[]数组依次存放了h,e,l,l,o
尽量使用final修饰符
带有final修饰符的类是不可派生的。如果一个类是final的,则该类所有方法都是final的。Java编译器会寻找机会内联(inline)所有的final方法(这和具体的编译器实现有关)。此举能够使性能平均提高50%。
尽量避免使用split
除非是必须的,否则应该避免使用split,split由于支持正则表达式,所以效率比较低,如果是频繁的几十,几百万的调用将会耗费大量资源,如果确实需 要频繁的调用split,可以考虑使用apache的StringUtils.split(string,char),频繁split的可以缓存结果。
尽量确定StringBuffer的容量
StringBuffer 的构造器会创建一个默认大小(通常是16)的字符数组。在使用中,如果超出这个大小,就会重新分配内存,创建一个更大的数组,并将原先的数组复制过来,再 丢弃旧的数组。在大多数情况下,你可以在创建 StringBuffer的时候指定大小,这样就避免了在容量不够的时候自动增长,以提高性能。
如:
StringBuffer buffer = new StringBuffer(1000);
尽量避免使用二维数组
二维数据占用的内存空间比一维数组多得多,大概10倍以上。
尽量减少对变量的重复计算
如
for(int i=0;i<list.size();i++)
应该改为
for(int i=0,len=list.size();i<len;i++)
并且在循环中应该避免使用复杂的表达式,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快。
尽量使用移位来代替'a/b'的操作
"/"是一个代价很高的操作,使用移位的操作将会更快和更有效
如
int num = a / 4; int num = a / 8;
应该改为
int num = a >> 2; int num = a >> 3;
但注意的是使用移位应添加注释,因为移位操作不直观,比较难理解
尽量使用移位来代替'a*b'的操作
同样的,对于'*'操作,使用移位的操作将会更快和更有效
如
int num = a * 4; int num = a * 8;
应该改为
int num = a << 2; int num = a << 3;
尽量使用局部变量
调用方法时传递的参数以及在调用中创建的临时变量都保存在栈(Stack)中,速度较快。其他变量,如静态变量、实例变量等,都在堆(Heap)中创建,速度较慢。
尽量处理好包装类型和基本类型两者的使用场所
虽然包装类型和基本类型在使用过程中是可以相互转换,但它们两者所产生的内存区域是完全不同的,基本类型数据产生和处理都在栈中处理,包装类型是对象,是在堆中产生实例。
在集合类对象,有对象方面需要的处理适用包装类型,其他的处理提倡使用基本类型。
单线程应尽量使用HashMap、ArrayList
HashTable、Vector等使用了同步机制,降低了性能。
ArrayList & LinkedList
一 个是线性表,一个是链表,一句话,随机查询尽量使用ArrayList,ArrayList优于LinkedList,LinkedList还要移动指 针,添加删除的操作LinkedList优于ArrayList,ArrayList还要移动数据,不过这是理论性分析,事实未必如此,重要的是理解好2 者得数据结构,对症下药。
发表评论
-
打印IP 来源
2014-10-16 22:07 909<% String userAgent = reques ... -
java 写文本换行
2014-08-08 18:34 1885import org.apache.commons.io.Fi ... -
DBCP连接池配置示例
2014-06-17 11:44 1209<bean id="dataSourceOra ... -
CGLIB与asm
2014-05-05 14:42 1313“程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言 ... -
201404转成 2014.04
2014-03-31 17:45 959public static void main(Str ... -
取出 字符串中的 网址
2013-10-15 17:47 1227public static void main(Str ... -
java反国际化
2013-09-23 18:10 962public static String fromEn ... -
AtomicInteger与Volatile修饰
2013-02-05 11:50 6003今天写代码,尝试使用了AtomicInteger这个类,感觉 ... -
ExecutorService线程池
2013-02-05 11:40 1590http://blog.sina.com.cn/s/blog ... -
web.xml中load-on-startup的作用
2012-12-24 10:06 1630如下一段配置,熟悉DWR的再熟悉不过了: <servle ... -
最新版本
2012-09-13 09:28 970Java SE 7u7 apache-tomcat-7.0. ... -
格式化数字
2012-09-10 20:12 877public static void main(Str ... -
用apache common io包获得文件扩展名
2012-09-09 23:11 1334apache common io包包含了很多非常实用的工具类, ... -
值传递,引用传递
2012-07-28 23:29 1104java 对于 8种基本类型 和 他们的包装类型 , 外 ... -
代码之丑
2012-07-07 22:01 2137原文:http://www.infoq.com/cn/news ... -
Memcache
2012-06-27 09:36 1010Memcache是一个高性能的分布式的内存对象缓存系统,通过在 ... -
ActiveMQ
2012-06-14 15:09 15112ActiveMQ 是Apache出品,最流行的,能力强劲的开源 ... -
proxool配置
2012-06-12 11:43 1146项目结构 所需jar包 proxool.prope ... -
各种文件的注释
2012-04-23 10:44 958<%-- comment --%> JSP注释,也称为“隐藏注 ... -
List排序
2012-03-27 20:18 1154集合类List存放的数据,默认是按照放入时的顺序存放的,比如依 ...
相关推荐
JAVA程序性能优化注意事项,好的编程习惯,在实际应用中,非常重要!
NULL 博文链接:https://mwhgjava.iteye.com/blog/1151072
Java编程中“为了性能”需做的26件事 1.尽量在合适的场合使用单例、2.尽量避免随意使用静态变量。
在编程中性能问题!!编码注意事项!Java编程中“为了性能”尽量要做到的一些地方!
下面是参考网络资源总结的一些在Java编程中尽可能要做到的一些地方。使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面:第一,...
在本文中,我们将讨论如何用Java开发高性能、高并发Web应用,并提供一些Java程序性能优化techniques。 首先,让我们来讨论生成对象时的合理分配空间和大小。Java中的许多类都有它们的默认的空间分配大小,对于一些...
要写出高性能程序,不管是PHP、JAVA还是其它编程语言不外乎就是控制程序的空间复杂度和时间复杂度,时间复杂度就不用多言了,它靠的是算法,在编写时不要做些无用的计算。这里主要讲的是空间复杂度【文件内容和文档...
避免使用错误的方式,如Exception可以控制方法推出,但是Exception要保留stacktrace 消耗性能,除非必要不要使用 instanceof做条件判断,尽量使用比的条件判断方式.使用JAVA中效率高的类,比如Array List比Vector性能好....
由于BIZOSS-CMS是基于JAVA的跨平台编程语言,对于以上两种主流的操作系统都有很好的支持,对于各个IDC提供的空间都有很好的兼容性。 3. 低维护成本 开发一个网站大家都知道需要动用大量的人力物力,不单单开发时...
的功能和使用方式,以及如何将多个插件整合在一起,在方便使用的同时尽量做到与项目工程解耦。 一、lint Lint是Android Studio提供的一个代码检测工具,通过它开发者不用运行或者写测试代码,就可以发现和纠正问题,...
提供 Java运行性能,降低小而大量重复的类的开销. C. 行为模式 设计模式之 Command(命令) 什么是将行为封装,Command 是最好的说明. 设计模式之 Observer(观察者) 介绍如何使用 Java API 提供的现成 Observer ...
该程序的重点是告诉坦克在竞技场中发生的某些情况下该做什么。 给了我们一个日期,我们将在课堂上与我们的机器人战斗并举行锦标赛。 DDRobot 起源当我们第一次开始研究 Robocode 时,我们实现了 Robocode API ...
由于BIZOSS-CMS是基于JAVA的跨平台编程语言,对于以上两种主流的操作系统都有很好的支持,对于各个IDC提供的空间都有很好的兼容性。 3. 低维护成本 开发一个网站大家都知道需要动用大量的人力物力,不单单开发时需要...
Java的产生与流行是当今Internet发展的客观要求,Java是一门各方面性能都很好的编程语言,它的基本特点是简单、面向对象、分布式、解释的、健壮的、安全的、结构中立的、可移植的、性能很优异的、多线程的、动态的,...
为了安全,要对对每个目录按不同的用户设置不同的访问权限,然后关闭一些不需要的服务,这样可以对不良人士利用IIS溢出漏洞访问到系统盘作个第一级防护。 3.iis安全设置之端口设置。IIS有默认的端口设置,只要稍有...
在新的编程思想中,指针基本上被禁止使用(JAVA中就是这样),至少也是被限制使用。而在我们交换机的程序中大量使用指针,并且有增无减。 2、防止指针/数组操作越界 【案例1.2.1】 在香港项目测试中,发现ISDN话机...