当多个进程或线程同时(或同时)访问同一资源时,会出现并发问题)。 一个典型的例子是两个银行运营商同时操作同一个账户。 A、B操作员同时读取余额为100$的账户,A操作员将$100添加到账户中,B操作员同时减去账户
$50分,甲先到,乙后到。 最后,帐户的实际余额是$100-50=950,但应该是$100100-50=1050、 这是典型的并发问题。
可以用锁解决。
我对锁不太了解,你可以学习。
百万级并发访问的处理:java高并发,如何解决,什么方式解决,高并发
高并发系统的设计需要注意几点:
用jprofiler等工具识别性能瓶颈,以减少额外的开销。java处理并发访问。
尽可能使用缓存,包括用户缓存,信息缓存等,花费更多的内存来做缓存,可以大大减少与数据库的交互,提高性能。
优化数据库查询语句,减少直接使用Hibernate等工具生成的语句(只进行耗时查询优化)。
优化数据库结构,多做索引,提高查询效率。spring处理并发访问。
统计的功能尽量做缓存,或者按照每天一次统计或者定时统计相关报表,避免需要统计的功能。
可以尽可能使用静态页面,减少容器解析(尝试生成静态html来显示动态内容)。硬件是为了提高服务器的性能,增强最大允许访问次数,代码可以采用连接池的方式,更合理地规划连接,提高连接的有效利用率
负载均衡(软件负载均衡,硬件负载均衡)
分布式数据库(数据库主从分布,数据库分割,数据库缓存)
您可以使用nginx或lvs软件工具,这些工具似乎支持最多65535个并发访问。
如果它真的太大了,最终的解决方案是像12306那样以mq队列的方式排队。
java程序员面试时被问到:如何在j2ee项目中处理高并发量访问? 该怎么回答? 请仔细看题干再回答
您好,高并发系统的设计需要注意以下几点:尝试使用缓存,包括用户缓存,信息缓存等。 为缓存花费更多的内存可以大大减少与数据库的交互,提高性能。 使用jpprofiler等工具来识别性能瓶颈并减少额外的开销。 优化数据库查询语句,减少直接生成的语句使用Hibernate等工具(只优化长时间查询)。 优化数据库结构,做更多的索引,提高查询效率。 统计功能应尽可能用作缓存,或相关报告应每天或定期统计一次,以避免必要时的统计功能。 尝试使用静态容器尽可能地显示静态内容。 在解决了上述问题后,采用服务器集群来解决单机的瓶颈问题。 在上述问题基本解决后,实现了系统的优化。 至于楼上,有人提到不应该使用Java,除非有太多的低级连接(例如大量的端口占用要求)。 在这种情况下,它被认为是直接用C编写的,Java可以用于其他人。