java高并发处理
A. java中怎么实现高并发
对于并发操作,都要上锁的,设置一个字段记录抽到奖的人数,每抽到一个就让update该字段值+1,更新过程中数据库会自动给数据库上锁,直到commit提交,这里就避免了你说的同时查询的问题。
B. Java高并发,如何解决,什么方式解决1
高并发系统的设计需要注意一下几点:
用jprofiler等工具找出性能瓶颈,减少额外的开销。
尽量使用缓存,包括用户缓存,信息缓存等,多花点内存来做缓存,可以大量减少与数据库的交互,提高性能。
优化数据库查询语句,减少直接使用hibernate等工具的直接生成语句(仅耗时较长的查询做优化)。
优化数据库结构,多做索引,提高查询效率。
统计的功能尽量做缓存,或按每天一统计或定时统计相关报表,避免需要时进行统计的功能。
能使用静态页面的地方尽量使用,减少容器的解析(尽量将动态内容生成静态html来显示)。
硬件上就是提高服务器性能,提升允许最大访问量,代码上面可以使用连接池的方式,更合理的规划连接,提高连接的有效利用率
负载均衡(软件负载均衡、硬件负载均衡)
分布式数据库(数据库主从分布、数据库分割、数据库缓存)
可以采用nginx或者lvs软件工具,他好像最高支持65535的并发访问。
实实在在太大的话,终极解决方式队列方式,通过mq一个一个排队方式,跟12306一样。
C. java如何处理高并发
你指的高并发量大概有多少?
几点需要注意:
尽量使用缓存,包括用户缓存,信息缓存等,多花点内存来做缓存,可以大量减少与数据库的交互,提高性能。
用jprofiler等工具找出性能瓶颈,减少额外的开销。
优化数据库查询语句,减少直接使用hibernate等工具的直接生成语句(仅耗时较长的查询做优化)。
优化数据库结构,多做索引,提高查询效率。
统计的功能尽量做缓存,或按每天一统计或定时统计相关报表,避免需要时进行统计的功能。
能使用静态页面的地方尽量使用,减少容器的解析(尽量将动态内容生成静态html来显示)。
解决以上问题后,使用服务器集群来解决单台的瓶颈问题。
基本上以上述问题解决后,达到系统最优。
至于楼上有人提到别用JAVA来做,除非是低层的连接数过大(如大量的端口占用需求),这种情况下考虑直接C来写,其他的可以用JAVA来做。
可以网上购买视频做教育学习。
D. 面试Java开发时问到高并发怎么处理的,还有sql优化有哪些办法,有哪位大神知道啊,新手!!
Java开发高并发的处理方法:
最基础的地方做起,优化我们写的代码,减少必要的资源浪费
避免频繁的使用new对象,对于整个应用只需要存在一个实例的类,我们可以使用单例模式。对于String连接操作,使用StringBuffer或StringBuilder,对于工具类可以通过静态方法来访问。
避免使用错误的方式,尽量不用instanceof做条件判断。使用java中效率高的类,比如ArrayList比Vector性能好。
图片服务器分离
对于web服务器来说,图片是最消耗资源的,于是我们有必要把图片与页面进行分离,我们把图片放到独立的图片服务器。这样的架构可以降低提供页面访问请求的服务器系统压力,并且可以保证系统不会因为图片的问题而崩溃。在图片服务器上,我们可以对不同的配置进行优化。
缓存
具体接触过的缓存机制是hibernate的缓存机制。为了避免每次都向数据库中取得数据,我们把用户常常访问到的数据放到内存中,甚至缓存十分大的时候我们可以把内存中的缓存放到硬盘中。还有高级的分布式缓存数据库使用,都可以增加系统的抗压力。
分批传送
在做某项目的时候,一次传递的参数太多,而且数据库规定一次最多传递的参数最多是三万条,当时有五万条记录,那怎么传送呢?最终是分批传送,电梯里一次乘不下那么多的人,会报超重的bug,那就分批把人送上去。
还有一次在考试系统中,如果那么多的考试人员同时提交到数据库中,数据库的压力增大,有时会被down掉,当时采用的方法是使用ajax异步传输,没有等待考生点击提交按钮的时候,就把考生的答案自动提交,这样也避免了突然断电考生前面做过的题出现丢失的现象。
DB优化
在数据库设计的时候就要考虑到后期的维护,数据库三范式是我们设计数据库索要遵循的原则。
索引的建立:建立索引要适当,如果一个表经常用来被查询,对于增加和修改很少被用到,我们就可以为这个表建立索引,因为对于增加和修改和删除操作时,我们对索引的维护要大大超过索引给我们带来的效率。
表字段的类型选择要恰当。包括字段的长度、类型等,要根据实际存储的数据进行选择,长度不要过长,否则会影响效率。
外键要慎用,因为主键代表这一张表,而外键代表一群表,对表之间进行了关联,在删除修改等需要我们关联。
在数据库操作上。 尽量使用prepareStatement,少用Statement,因为PrepareStatement是进行预编译的。
connection设置为readOnly,Connection是对书库连接,属于重量级,我们使用即可。
连接池的使用,我们可以修改数据库默认的连接数。
E. 谈论java中怎样处理高并发的问题
对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了。而并发问题是绝大部分的程序员头疼的问题,
但话又说回来了,既然逃避不掉,那我们就坦然面对吧~今天就让我们一起来研究一下常见的并发和同步吧。
为了更好的理解并发和同步,我们需要先明白两个重要的概念:同步和异步
1、同步和异步的区别和联系
所谓同步,可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是出于阻塞的,只有接收到
返回的值或消息后才往下执行其它的命令。
异步,执行完函数或方法后,不必阻塞性地等待返回值或消息,只需要向系统委托一个异步过程,那么当系统接收到返回
值或消息时,系统会自动触发委托的异步过程,从而完成一个完整的流程。
同步在一定程度上可以看做
F. java 怎样处理高并发
一、背景综述
并发就是可以使用多个线程或进程,同时处理(就是并发)不同的操作。
高并发的时候就是有很多用户在访问,导致系统数据不正确、糗事数据的现象。对于一些大型网站,比如门户网站,在面对大量用户访问、高并发请求方面,基本的解决方案集中在这样几个环节:使用高性能的服务器、高性能的数据库、高效率的编程语言、还有高性能的Web容器。这几个解决思路在一定程度上意味着更大的投入。
使用一般的synchronized或者是lock或者是队列都是无法满足高并发的问题。
二、解决方法有三:
1.使用缓存
2.使用生成静态页面
html纯静态页面是效率最高、消耗最小的页面。我们可以使用信息发布系统来实现简单的信息录入自动生成静态页面,频道管理、权限管理和自动抓取等功能,对于一个大型网站来说,拥有一套高效、可管理的信息发布系统CMS是必不可少的。
3.图片服务器分离
图片是最消耗资源的,僵图片和页面分离可以降低提供页面访问请求的服务器系统压力,并且可以保证系统不会因为图片问题而崩溃。
3.写代码的时候减少不必要的资源浪费:
不要频繁得使用new对象,对于在整个应用中只需要存在一个实例的类使用单例模式.对于String的连接操作,使用StringBuffer或者StringBuilder.对于utility类型的类通过静态方法来访问。
避免使用错误的方式,如Exception可以控制方法推出,但是Exception要保留stacktrace消耗性能,除非必要不要使用 instanceof做条件判断,尽量使用比的条件判断方式.使用JAVA中效率高的类,比如ArrayList比Vector性能好。)
使用线程安全的集合对象vector hashtable
使用线程池
G. java高并发,如何解决,什么方式解决,高并发
首先,为防止高并发带来的系统压力,或者高并发带来的系统处理异常,数据紊乱,可以以下几方面考虑:1、加锁,这里的加锁不是指加java的多线程的锁,是指加应用所和数据库锁,应用锁这边通常是使用redis的setnx来做,其次加数据库锁,因为代码中加了应用所,所以数据库不建议加悲观锁(排他锁),一般加乐观锁(通过设置一个seq_no来解决),这两个锁一般能解决了,最后做合理的流控,丢弃一部分请求也是必不可少的
H. java“高并发”是什么意思
1、在java中,高并发属于一种编程术语,意思就是有很多用户在访问,导致系统数据不正确、糗事数据的现象。并发就是可以使用多个线程或进程,同时处理不同的操作。
I. Java面试总结如何处理项目的高并发,大数据
这个很简单,高并发有多种解决方法: 1、从代码上分入手,必须得保证代码没有冗余,不要有废代码; 2、从服务器上入手,高并发一台服务器并发量有限,我们可以采用多台服务器来分担压力; 3、从存储方便入手,像我们一般高并发但是数据却可以不...