Java面试处理高并发

通过查资料,方案以下所示。html

 
1 从最基础的地方作起,优化咱们写的代码,减小必要的资源浪费。
 
         a、避免频繁的使用 new 对象,对于整个应用只须要存在一个实例的类,咱们可使用单例模式。对于String链接操做,使用      StringBuffer或StringBuilder,对于工具类能够经过静态方法来访问。
         b、避免使用错误的方式,尽可能不用 instanceof 作条件判断。使用java中效率高的类,好比ArrayList比Vector性能好。
 
2 html静态化
         咱们经过一个连接地址访问,经过这个连接地址,服务器对应的模块处理这个请求,转到对应的jsp页面,最后生成咱们要的数据。可是,若是上千万个请求的话,有太多的高并发请求,那么就会加剧服务器的压力,最坏的状况是把服务器down掉。那么如何避免这种状况的出现呢?若是咱们把最初对test. do 的请求结果保存成一个html文件,而后每次用户都去访问这个html文件,这样就不用再去访问服务器了,服务器的压力不就减小了?
         那如何自动的生成静态页面,当用户去访问,会自动的生成test.html ,而后再显示给用户。
3 图片服务器分离
         对于web服务器来讲,图片是最消耗资源的,因而咱们有必要把图片与页面进行分离,咱们把图片放到独立的图片服务器。这样的架构能够下降提供页面访问请求的服务器系统压力,而且能够保证系统不会由于图片的问题而崩溃。在图片服务器上,咱们能够对不一样的配置进行优化。
 
4 缓存
         具体接触过的缓存机制是hibernate的缓存机制。为了不每次都向数据库中取得数据,咱们把用户经常访问到的数据放到内存中,甚至缓存十分大的时候咱们能够把内存中的缓存放到硬盘中。还有高级的分布式缓存数据库使用,均可以增长系统的抗压力。
 
5 分批传送
         在作某项目的时候,一次传递的参数太多,并且数据库规定一次最多传递的参数最可能是三万条,当时有五万条记录,那怎么传送呢?最终是分批传送,电梯里一次乘不下那么多的人,会报超重的bug,那就分批把人送上去。
         还有一次在考试系统中,若是那么多的考试人员同时提交到数据库中,数据库的压力增大,有时会被down掉,当时采用的方法是使用ajax异步传输,没有等待考生点击提交按钮的时候,就把考生的答案自动提交,这样也避免了忽然断电考生前面作过的题出现丢失的现象。
 
6 数据库集群
         当面对复杂的应用,用户大量访问的时候,一台数据很快没法知足需求,因而咱们须要使用数据库集群或者库表散列。
咱们在应用程序中安装业务和应用或者功能模块将数据进行分离,不一样的模块对应不一样的数据库或表,再按照必定的策略对某个页面或者功能进行更小的数据库散列。
 
7 DB优化
         a、在数据库设计的时候就要考虑到后期的维护,数据库三范式是咱们设计数据库索要遵循的原则。
         b、索引的创建:创建索引要适当,若是一个表常常用来被查询,对于增长和修改不多被用到,咱们就能够为这个表创建索引,由于对于增长和修改和删除操做时,咱们对索引的维护要大大超过索引给咱们带来的效率。
         c、表字段的类型选择要恰当
包括字段的长度、类型等,要根据实际存储的数据进行选择,长度不要过长,不然会影响效率。
         d、外键要慎用,由于主键表明这一张表,而外键表明一群表,对表之间进行了关联,在删除修改等须要咱们关联。
         e、在数据库操做上
                 尽可能使用prepareStatement,少用Statement,由于PrepareStatement是进行预编译的。
                 connection设置为readOnly,Connection是对书库链接,属于重量级,咱们使用便可。
                 链接池的使用,咱们能够修改数据库默认的链接数。
相关文章
相关标签/搜索