首先是从三方面来提升的,应用层面,服务器端层面,数据库层面。
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