java处理高并发的方法:1、优化代码,减少不必要的资源浪费;2、把图片与页面进行分离,将图片放到独立的图片服器;3、使用缓存,可以大量减少与数据库的交互,提高性能;4、使用数据库集群;5、进行DB优化;6、硬件上做到负载均衡等等。

java处理高并发的方法:

1、从最基础的地方做起,优化我们写的代码,减少不必要的资源浪费。

a、避免频繁的使用new对象,对于整个应用只需要存在一个实例的类,我们可以使用单例模式。对于String连接操作,使用StringBuffer或StringBuilder,对于工具类可以通过静态方法来访问。

b、避免使用错误的方式,尽量不用instanceof做条件判断。使用java中效率高的类,比如ArrayList比Vector性能好。

2、html静态化

我们通过一个链接地址访问,通过这个链接地址,服务器对应的模块处理这个请求,转到对应的jsp页面,最后生成我们要的数据。但是,如果上千万个请求的话,有太多的高并发请求,那么就会加重服务器的压力,最坏的情况是把服务器down掉。那么如何避免这种情况的出现呢?如果我们把最初对test.do的请求结果保存成一个html文件,然后每次用户都去访问这个html文件,这样就不用再去访问服务器了,服务器的压力不就减少了?

那如何自动的生成静态页面,当用户去访问,会自动的生成test.html ,然后再显示给用户。

3、图片服务器分离

对于web服务器来说,图片是最消耗资源的,于是我们有必要把图片与页面进行分离,我们把图片放到独立的图片服务器。这样的架构可以降低提供页面访问请求的服务器系统压力,并且可以保证系统不会因为图片的问题而崩溃。在图片服务器上,我们可以对不同的配置进行优化。

4、使用缓存

尽量使用缓存,包括用户缓存,信息缓存等,多花点内存来做缓存,可以大量减少与数据库的交互,提高性能。

5、分批传送

在做某项目的时候,一次传递的参数太多,而且数据库规定一次最多传递的参数最多是三万条,当时有五万条记录,那怎么传送呢?最终是分批传送,电梯里一次乘不下那么多的人,会报超重的bug,那就分批把人送上去。

还有一次在考试系统中,如果那么多的考试人员同时提交到数据库中,数据库的压力增大,有时会被down掉,当时采用的方法是使用ajax异步传输,没有等待考生点击提交按钮的时候,就把考生的答案自动提交,这样也避免了突然断电考生前面做过的题出现丢失的现象。

6、数据库集群

当面对复杂的应用,用户大量访问的时候,一台数据很快无法满足需求,于是我们需要使用数据库集群或者库表散列。

我们在应用程序中安装业务和应用或者功能模块将数据进行分离,不同的模块对应不同的数据库或表,再按照一定的策略对某个页面或者功能进行更小的数据库散列。

7、DB优化

a、在数据库设计的时候就要考虑到后期的维护,数据库三范式是我们设计数据库索要遵循的原则。

b、索引的建立:建立索引要适当,如果一个表经常用来被查询,对于增加和修改很少被用到,我们就可以为这个表建立索引,因为对于增加和修改和删除操作时,我们对索引的维护要大大超过索引给我们带来的效率。

c、表字段的类型选择要恰当包括字段的长度、类型等,要根据实际存储的数据进行选择,长度不要过长,否则会影响效率。

d、外键要慎用,因为主键代表这一张表,而外键代表一群表,对表之间进行了关联,在删除修改等需要我们关联。

e、在数据库操作上

尽量使用prepareStatement,少用Statement,因为PrepareStatement是进行预编译的。

connection设置为readOnly,Connection是对书库连接,属于重量级,我们使用即可。

连接池的使用,我们可以修改数据库默认的连接数。

8、硬件上做到负载均衡

java如何解决高并发问题_java怎么处理高并发?相关推荐

  1. java接口并发衡量_java 后端设计高并发接口总结

    如何设置高并发接口 一.并发队列的选择 二.请求接口的合理设计 三.高并发下的数据安全 3.1 超发的原因 3.2 悲观锁思路 3.3 FIFO队列思路 3.4 乐观锁思路 一.并发队列的选择 Jav ...

  2. java 并发抢单_java如何实现高并发下的抢单?

    /** * ---------------------------------------------------- * 使用AtomicInteger实现 * 实际上Atomic类比volatile ...

  3. java怎么解决页面乱码问题_java页面中文乱码的解决办法

    骚年啊,资源文件名不要有中文啊,这可是常识啊 而且文件名不要有空格,不然容易悲剧 ######回复 @汪兴 : 有一个办法规避,就是上传的文件名更名为hash,实际上很多网站都这么做的,最终在页面上的 ...

  4. Java如何解决mysql读写延迟_java中延迟任务的处理方式

    1.利用延迟队列 延时队列,第一他是个队列,所以具有对列功能第二就是延时,这就是延时对列,功能也就是将任务放在该延时对列中,只有到了延时时刻才能从该延时对列中获取任务否则获取不到-- 应用场景比较多, ...

  5. java 数据库并发访问_java – 提供IllegalStateException的并发数据库访问

    我试图只为1个方法生成一个线程.我得到一个IllegalStateException(见下文).这个方法接受数据库连接和数据库名称,它将从中生成 XML. (那部分可行,我只是想通过一个新线程让它更快 ...

  6. Java生鲜电商平台-SpringCloud微服务架构高并发参数优化实战

    Java生鲜电商平台-SpringCloud微服务架构高并发参数优化实战 一.写在前面 在Java生鲜电商平台平台中相信不少朋友都在自己公司使用Spring Cloud框架来构建微服务架构,毕竟现在这 ...

  7. java 死锁 解决_Java死锁故障排除和解决

    java 死锁 解决 JavaOne年度会议的一大优点是主题专家介绍了几个技术和故障排除实验室. 这些实验室之一尤其引起了我的关注:Java冠军Heinz Kabutz提出的" HOL650 ...

  8. futuretask java 并发请求_Java面试题整理一(侧重多线程并发)

    1..是否可以在static环境中访问非static变量? 答:static变量在Java中是属于类的,它在所有的实例中的值是一样的.当类被Java虚拟机载入的时候,会对static变量进行初始化.如 ...

  9. Java高并发秒杀API(四)之高并发优化

    Java高并发秒杀API(四)之高并发优化 1. 高并发优化分析 关于并发 并发性上不去是因为当多个线程同时访问一行数据时,产生了事务,因此产生写锁,每当一个获取了事务的线程把锁释放,另一个排队线程才 ...

最新文章

  1. 干掉Navicat:正版,MySQL官方客户端真香!
  2. python使用gevent实现协程
  3. 初次使用Android Studio问题,Android Studio往项目中添加图片
  4. php smeoa,install.php
  5. c程序隐藏linux,linux 下隐藏进程的一种方法
  6. python3的fft_科学网—用Python、Matlab、C实现傅立叶变换FFT() - 康建的博文
  7. python如何使用字典中的值并进行比较_python嵌套字典比较值与取值的实现示例
  8. JavaScript原生对象及扩展
  9. JDK源码学习之一lang包
  10. 95-136-070-源码-Operator-扩展有状态的operators
  11. SQL Server 访问发送Http请求
  12. scanf 在uefi中调用_BIOS、UEFI、Boot Loader都是些什么
  13. 部署java项目到阿里云服务器(centos7版本)
  14. 如何在 React Native 中使用 NFC 标签
  15. ArcGIS导出地图后部分图例不显示
  16. DroidCam花样控制
  17. A problem occurred starting process 'command 'xxx
  18. 5分钟看懂XCP协议
  19. rxjava背压_RxJava(九):背压
  20. win10安装配置JDK11

热门文章

  1. 关联查询一张小表。对性能有影响吗(mysql)
  2. HDU ACM 1078 FatMouse and Cheese 记忆化+DFS
  3. Web性能优化之图片优化
  4. Delphi RTC
  5. [完整代码]创建不受数据库限制的报表 VB.Net 版本 -1
  6. WPF自定义控件的自定义属性绑定后不更新问题
  7. [国家集训队]部落战争
  8. CYQ.Data 轻量数据层之路 使用篇-MAction 取值赋值 视频[带音乐] F (二十四)
  9. RVDS4.0上开发cortex A8 NEON程序
  10. PHP提取中文首字母