什么是高并发,如何避免高并发
之前我将高并发的解决方法误认为是线程或者是队列可以解决,因为高并发的时候是有很多用户在访问,导致出现系统数据不正确、丢失数据现象,所以想到 的是用队列解决,其实队列解决的方式也可以处理,比如我们在竞拍商品、转发评论微博或者是秒杀商品等,同一时间访问量特别大,队列在此起到特别的作用,将 所有请求放入队列,以毫秒计时单位,有序的进行,从而不会出现数据丢失系统数据不正确的情况。
今天我经过查资料,高并发的解决方法有俩种,一种是使用缓存、另一种是使用生成静态页面;还有就是从最基础的地方优化我们写代码减少不必要的资源浪费:(
1.不要频繁的new对象,对于在整个应用中只需要存在一个实例的类使用单例模式.对于String的连接操作,使用StringBuffer或者StringBuilder.对于utility类型的类通过静态方法来访问。
- 避免使用错误的方式,如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了。
三、基本的方案介绍
其中,对于 URL Rewriter的部分,可以使用收费或者开源的工具来实现,如果 url不是特别的复杂,可以考虑在 servlet 中实现,那么就是下面这个样子:
总 结:其实我们在开发中都很少考虑这种问题,直接都是先将功能实现,当一个程序员在干到1到2年,就会感觉光实现功能不是最主要的,安全性能、质量等等才是 一个开发人员最该关心的。今天我所说的是高并发,我的解决思路是,1、采用分布式应用设计2、分布式缓存数据库3、代码优化
什么是高并发,如何避免高并发相关推荐
- 高并发编程_高并发编程系列:7大并发容器详解(附面试题和企业编程指南)...
不知道从什么时候起,在Java编程中,经常听到Java集合类,同步容器.并发容器,高并发编程成为当下程序员需要去了解掌握的技术之一,那么他们有哪些具体分类,以及各自之间的区别和优劣呢? 只有把这些梳理 ...
- 《Java并发编程入门与高并发面试》or 《Java并发编程与高并发解决方案》笔记
<Java并发编程入门与高并发面试>or <Java并发编程与高并发解决方案>笔记 参考文章: (1)<Java并发编程入门与高并发面试>or <Java并发 ...
- Java 高并发_JAVA并发编程与高并发解决方案 JAVA高并发项目实战课程 没有项目经验的朋友不要错过!...
JAVA并发编程与高并发解决方案 JAVA高并发项目实战课程 没有项目经验的朋友不要错过! 1.JPG (37.82 KB, 下载次数: 0) 2018-12-3 09:40 上传 2.JPG (28 ...
- 《Java 高并发》01 高并发基本概念
基本概念 同步和异步 同步和异步通常是用来形容一次方法调用. 同步方法调用一旦开始,调用者必须等到方法返回才能继续执行后续操作. 异步方法调用更像一个消息传递,一旦开始,方法调用就会立即返回,调用者就 ...
- 都在讨论高并发,结果连并发量、TPS、QPS都分不清
" 年年岁岁跳槽季,回回必问高并发!原因很简单,因为高并发能牵扯出太多问题,接口响应超时.CPU负载升高.GC频繁.死锁.大数据量存储等,能考察求职者的真实情况. 而很多人在第一步就倒下了! ...
- oom 如何避免 高并发_【高并发】高并发环境下如何防止Tomcat内存溢出?看完我懂了!!...
[高并发]高并发环境下如何防止Tomcat内存溢出?看完我懂了!! 发布时间:2020-04-19 00:47, 浏览次数:126 , 标签: Tomcat 写在前面 随着系统并发量越来越高,Tomc ...
- oracle rac 高并发性能_Tomcat 高并发之道原理拆解与性能调优
高并发拆解核心准备 这回,再次拆解,专注 Tomcat 高并发设计之道与性能调优,让大家对整个架构有更高层次的了解与感悟.其中设计的每个组件思路都是将 Java 面向对象.面向接口.如何封装变与不变, ...
- mysql并发量_高并发秒杀系统架构解密,不是所有的秒杀都是秒杀!
推荐阅读: 学会这些微服务+Tomcat+NGINX+MySQL+Redis,再去面试阿里P7岗吧 "火爆"的微服务架构你还不会?从基础到原理的PDF文档快来学! Nginx负载均 ...
- 【java】 java 高并发解决方案和高负载优化方法
[java] java 高并发解决方案和高负载优化方法 参考文章: (1)[java] java 高并发解决方案和高负载优化方法 (2)https://www.cnblogs.com/lonelywo ...
- mysql 高并发 响应时间_高并发,你真的了解吗?
摘要:本文介绍高并发系统的度量指标,讲述高并发系统的设计思路,再梳理高并发的关键技术,最后结合作者的经验做一些延伸探讨. 当前,数字化在给企业带来业务创新,推动企业高速发展的同时,也给企业的IT软件系 ...
最新文章
- 关于HOOK API Lib 0.1 For Delphi
- 【星球知识卡片】图像生成都有哪些核心技术,如何对其进行长期深入学习
- 枚举IHTMLDocument2中所有IFRAME的内容
- NLP应该如何学、如何教?斯坦福大学大牛Dan Jurafsky教授专访
- Docker Compose配置springboot微服务项目
- mybatis批量删除提示类型错误
- 大数据项目之dmp用户画像
- vray渲染器的工作流程你清楚吗?
- App Store审核标准
- 关于计算机取代学校的英语作文,关于网络教室将取代传统的教室英语作文
- 短视频剪辑入门技巧,简单却重要
- 小白用Math对象随机生成一个名字
- 芯片——摩尔定律的传奇(下)
- I2S—音频播放与录音输入
- Chrome浏览器常用快捷键总结
- m4s格式转换mp3_如何将m4a无损转换mp3音频格式
- 计算机应用基础常见英语词汇,数学专业常用英语词汇.doc
- LabVIEW编程LabVIEW控制NI 9481例程与相关资料
- 以太坊原理分析(一)以太坊工作(交易)原理
- 不要让回忆有负疚感——职业规划法则一
热门文章
- Waveform Audio 驱动(Wavedev2)之:WAV API模拟
- qt中如何模拟按钮点击_qt – 在Windows中模拟鼠标按钮单击
- java bitset用途_BitSet的用法
- java rsa_java中RSA加解密的实现
- python3 for_python3 for循环-range遍历
- c语言回文字符串原理,回文串(c语言)注意字符串比较和字符比较的区别
- 双稳态继电器工作原理图_固态继电器只有单一的作用吗?带你了解不一样的固态继电器...
- 矩阵求导与BP的证明的建议
- Apress Pro Android 2
- Django,ajax实现表格增删查改,Django内置分页功能。