当前位置:首页 > Java技术 > java高并发,如何解决,什么方式解决

java高并发,如何解决,什么方式解决

2022年09月17日 15:51:18Java技术4

之前我将高并发的解决方法误认为是线程或者是队列可以解决,因为高并发的时候是有很多用户在访问,导致出现系统数据不正确、丢失数据现象,所以想到 的是用队列解决,其实队列解决的方式也可以处理,比如我们在竞拍商品、转发评论微博或者是秒杀商品等,同一时间访问量特别大,队列在此起到特别的作用,将 所有请求放入队列,以毫秒计时单位,有序的进行,从而不会出现数据丢失系统数据不正确的情况。

今天我经过查资料,高并发的解决方法有俩种,一种是使用缓存、另一种是使用生成静态页面;还有就是从最基础的地方优化我们写代码减少不必要的资源浪费:(

1.不要频繁的new对象,对于在整个应用中只需要存在一个实例的类使用单例模式.对于String的连接操作,使用StringBuffer或者StringBuilder.对于utility类型的类通过静态方法来访问。

2. 避免使用错误的方式,如Exception可以控制方法推出,但是Exception要保留stacktrace消耗性能,除非必要不要使用 instanceof做条件判断,尽量使用比的条件判断方式.使用JAVA中效率高的类,比如ArrayList比Vector性能好。)

首先缓存技术我一直没有使用过,我觉得应该是在用户请求时将数据保存在缓存中,下次请求时会检测缓存中是否有数据存在,防止多次请求服务器,导致服务器性能降低,严重导致服务器崩溃,这只是我自己的理解,详细的资料还是需要在网上收集;

使用生成静态页面我想大家应该不模式,我们见过很多网站当在请求的时候页面的后最已经变了,如“http://developer.51cto.com/art/201207/348766.htm”该页面其实是一个服务器请求地址,在转换成htm后,访问速度将提升,因为静态页面不带有服务器组件;在这里我就多多介绍一下:

一、什么是页面静态化:

简 单的说,我们如果访问一个链接 ,服务器对应的模块会处理这个请求,转到对应的jsp界面,最后生成我们想要看到的数据。这其中的缺点是显而易见的:因为每次请求服务器都会进行处理,如 果有太多的高并发请求,那么就会加重应用服务器的压力,弄不好就把服务器 搞down 掉了。那么如何去避免呢?如果我们把对 test.do 请求后的结果保存成一个 html 文件,然后每次用户都去访问 ,这样应用服务器的压力不就减少了?

那么静态页面从哪里来呢?总不能让我们每个页面都手动处理吧?这里就牵涉到我们要讲解的内容了,静态页面生成方案… 我们需要的是自动的生成静态页面,当用户访问 ,会自动生成 test.html ,然后显示给用户。

二、下面我们在简单介绍一下要想掌握页面静态化方案应该掌握的知识点:

1、 基础- URL Rewrite

什么是 URL Rewrite 呢 ? URL 重写。用一个简单的例子来说明问题:输入网址 ,但是实际上访问的却是 abc.com/test.action,那我们就可以说 URL 被重写了。这项技术应用广泛,有许多开源的工具可以实现这个功能。

2、 基础- Servlet web.xml

如果你还不知道 web.xml 中一个请求和一个 servlet 是如何匹配到一起的,那么请搜索一下 servlet 的文档。这可不是乱说呀,有很多人就认为 /xyz/*.do 这样的匹配方式能有效。

如果你还不知道怎么编写一个 servlet ,那么请搜索一下如何编写 servlet.这可不是说笑呀,在各种集成工具漫天飞舞的今天,很多人都不会去从零编写一个 servlet了。

三、基本的方案介绍

java高并发,如何解决,什么方式解决 - 我学坊 - 励志-我学坊
其中,对于 URL Rewriter的部分,可以使用收费或者开源的工具来实现,如果 url不是特别的复杂,可以考虑在 servlet 中实现,那么就是下面这个样子:

 

java高并发,如何解决,什么方式解决 - 我学坊 - 励志-我学坊
 
总 结:其实我们在开发中都很少考虑这种问题,直接都是先将功能实现,当一个程序员在干到1到2年,就会感觉光实现功能不是最主要的, 安全性能、质量等等才是 一个开发人员最该关心的。今天我所说的是高并发,我的解决思路是,1、采用分布式应用设计2、分布式缓存数据库3、代码优化

作者:XQiu
来源链接:https://www.cnblogs.com/XQiu/p/5090794.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/java/42640.html

分享给朋友:

“java高并发,如何解决,什么方式解决” 的相关文章

高并发下java项目遇到的各种坑--概述篇(一)

      最近在做一个跨境电商的项目,主要是做跨境电商的企业做清关服务,将跨境电商企业订单信息生成清关报文推动海关,推送物流公司并获取物流信息,将海关回执和物流信息分别推送给电商企业和仓库系统等功能。此文章是为了记录在整个技术选型,服务器搭建部署中...

如何在高并发环境下设计出无锁的数据库操作(Java版本)

  一个在线2k的游戏,每秒钟并发都吓死人。传统的hibernate直接插库基本上是不可行的。我就一步步推导出一个无锁的数据库操作。   1. 并发中如何无锁。 一个很简单的思路,把并发转化成为单线程。Java的Disruptor就是一个很好...

Java内存模型JMM 高并发原子性可见性有序性简介 多线程中篇(十)

Java内存模型JMM 高并发原子性可见性有序性简介 多线程中篇(十)

不得不看的JMM介绍,JMM不同于java运行时内存区域划分,本文从区域划分拓展到JMM,多线程必备的知识点,并且从原子性可见性有序性三个角度深入的分析了JMM的在这几个点涉及的部分 JVM运行时内存结构回顾 在JVM相关的介绍中,有说到JAVA运行时的...

javaweb项目高并发处理

并发是什么,之前我觉得就是对数据的一个安全性操作,这样理解也没有错,因为这是数据的并发,那么什么是并发呢? 并发,在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。...

Java高并发秒杀系统(二)

Java高并发秒杀系统(二)

秒杀系优化分析 1 详情页面 2系统时间 3地址暴露接口 4执行秒杀操作 秒杀系统优化实现...

《实战Java高并发程序设计》读书笔记一

《实战Java高并发程序设计》读书笔记一

第一章 走入并行世界 1、基本概念 同步:同步方法一旦开始,调用者必须等到方法调用返回后,才能继续后续操作 异步:一旦开始,方法调用就会立即返回,调用就可以继续后续操作 并发:表示两个或者多个任务一起执行,偏重于任务交替执行,而多个任务之间...

如何处理Java中的高并发问题

对于高并发问题,我认为总的来说可以分为三个方面:前端,服务器,数据库。 前端:web线程连接数不足 后台:服务器网络带宽不足 数据库:数据库连接查询速度上不去 针对于这三方面来说要各有针对性的优化方法 (对于高并发问题,只有不断优化,而不存...

5W字高质量java并发系列详解教程(上)-附PDF下载

5W字高质量java并发系列详解教程(上)-附PDF下载

文章目录 第一章 java.util.concurrent简介 主要的组件 Executor ExecutorService ScheduledEx...

Java高并发秒杀API之web层

Java高并发秒杀API之web层

---1-1 前端交互设计-------------------------------------------------------------- WEB相关课程:1. 前端交互设计2. Restful3. SpringMVC4. bootstrap + jquery...

Java高并发--线程

Java高并发--线程

1. 线程 1.1 进程和线程 ​ 进程:是系统进行资源分配和调度的基本单位,进程是程序的基本执行实体;进程是程序的容器 ​ 线程:线程是轻量级的进程,是程序执行的最小单位。并发程序设计使用多线程是因为线程间的切换和调度的成本远低于进程...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。