java平台的提升性能的几点建议

首先是从三方面来提升的,应用层面,服务器端层面,数据库层面。  
1、应用层面  
一、采用freemaker或者velocity来作页面静态化,提升网站的访问速度。  

2、服务器端  
一、对于一些不常常增删改的数据作缓存,好比memcached,redis,mongodb  
二、对于图片的话,采用fastDFS来作图片的分布式服务器,加快图片的存储与读取。  
三、对于安全方面,采用数据库事务来保证数据的安全性能。  
四、能尽可能少的使用锁来处理,由于锁有时候会带来一系列的连锁反应。  
五、作负载均衡,经过nginx+tomcat组合给服务器端分流。  
六、经过队列来作一些数据的信息暂存,来减缓线程对服务器的压力。  
七、采用并发的集合类,例如ConcurrentHashMap,CopyOnWriteArrayList等。  
八、考虑程序的可扩展性和可移植性。  
九、数据的一致性问题,须要考虑java concurrent包  
十、适当的使用一些高效算法。  
十一、内存一致性:内存操做(如共享变量的读写)的 happen-before 关系。只有写入操做 happen-before 读取操做时,才保证一个线程写入的结果对另外一个线程的读取是可视的。synchronized 和 volatile 构造 happen-before 关系,Thread.start() 和Thread.join() 方法造成 happen-before 关系。  
十二、JVM的内存模型以及JVM的垃圾回收机制,一直垃圾回收器的合理使用,新生代和老年代的合理分区。  

3、数据库层面  
一、给数据库字段作索引,可以加快查询速度,不是全部的索引都可以加快查询速度的,前提是对于查询多于增删改的数据。  
二、给数据库表作表分区,可以加速查询的速度。  
三、分库分表,经过分区分表可以加快查询速度。  
四、根据explain命令对于sql语句进行解释执行计划分析。  
五、对表进行分区,分区查询会加快速度的  
六、oracle的话。须要选择合适的选择器,根据实际须要,选择基于成本的选择器,或者基于基于规则的优化器  
七、in和exists,还有not in和not exists的用法区别,以及适用场合  
八、作master-slave,进行读写分离,给数据库经过分流来减少压力。  
九、对于sql语句进行优化.java

相关文章
相关标签/搜索