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

        a、避免频繁的使用new对象。对于整个应用仅仅须要存在一个实例的类。我们能够使用单例模式。

对于String连接操作,使用      StringBuffer或StringBuilder,对于工具类能够通过静态方法来訪问。

        b、避免使用错误的方式,尽量不用instanceof做条件推断。使用java中效率高的类。比方ArrayList比Vector性能好。
 
2 html静态化
        我们通过一个链接地址訪问。通过这个链接地址。server相应的模块处理这个请求,转到相应的jsp页面,最后生成我们要的数据。

可是。假设上千万个请求的话,有太多的高并发请求,那么就会加重server的压力,最坏的情况是把serverdown掉。那么怎样避免这样的情况的出现呢?假设我们把最初对test.do的请求结果保存成一个html文件,然后每次用户都去訪问这个html文件,这样就不用再去訪问server了,server的压力不就降低了?

        那怎样自己主动的生成静态页面,当用户去訪问,会自己主动的生成test.html ,然后再显示给用户。
3 图片server分离
        对于webserver来说。图片是最消耗资源的。于是我们有必要把图片与页面进行分离,我们把图片放到独立的图片server。这种架构能够减少提供页面訪问请求的server系统压力,而且能够保证系统不会由于图片的问题而崩溃。在图片server上,我们能够对不同的配置进行优化。
4 缓存
        详细接触过的缓存机制是hibernate的缓存机制。为了避免每次都向数据库中取得数据,我们把用户经常訪问到的数据放到内存中,甚至缓存十分大的时候我们能够把内存中的缓存放到硬盘中。还有高级的分布式缓存数据库使用,都能够添加系统的抗压力。

 
5 分批传送
        在做某项目的时候,一次传递的參数太多,并且数据库规定一次最多传递的參数最多是三万条。当时有五万条记录,那怎么传送呢?终于是分批传送,电梯里一次乘不下那么多的人,会报超重的bug,那就分批把人送上去。
        另一次在考试系统中,假设那么多的考试人员同一时候提交到数据库中,数据库的压力增大,有时会被down掉,当时採用的方法是使用ajax异步传输,没有等待考生点击提交button的时候。就把考生的答案自己主动提交。这样也避免了突然断电考生前面做过的题出现丢失的现象。
6 数据库集群
        当面对复杂的应用。用户大量訪问的时候,一台数据非常快无法满足需求。于是我们须要使用数据库集群或者库表散列。

我们在应用程序中安装业务和应用或者功能模块将数据进行分离,不同的模块相应不同的数据库或表,再依照一定的策略对某个页面或者功能进行更小的数据库散列。
7 DB优化
        a、在数据库设计的时候就要考虑到后期的维护。数据库三范式是我们设计数据库索要遵循的原则。

        b、索引的建立:建立索引要适当。假设一个表经经常使用来被查询,对于添加和改动非常少被用到,我们就能够为这个表建立索引。由于对于添加和改动和删除操作时,我们对索引的维护要大大超过索引给我们带来的效率。
        c、表字段的类型选择要恰当
包含字段的长度、类型等,要依据实际存储的数据进行选择。长度不要过长。否则会影响效率。

        d、外键要慎用,由于主键代表这一张表,而外键代表一群表,对表之间进行了关联。在删除改动等须要我们关联。
        e、在数据库操作上
                尽量使用prepareStatement,少用Statement。由于PrepareStatement是进行预编译的。
                connection设置为readOnly。Connection是对书库连接。属于重量级,我们使用就可以。

                连接池的使用。我们能够改动数据库默认的连接数。

8硬件上做到负载均衡

谈论java中怎样处理高并发的问题的更多相关文章

  1. JAVA中怎么处理高并发的情况

    一.背景综述 并发就是可以使用多个线程或进程,同时处理(就是并发)不同的操作. 高并发的时候就是有很多用户在访问,导致系统数据不正确.糗事数据的现象.对于一些大型网站,比如门户网站,在面对大量用户访问 ...

  2. java中的多线程高并发与负载均衡的用途

    感觉对于这两问题的描述,大家很迷惑把 .下面我就介绍一下: 一; 什么是java的高并发,在什么情况下产生的? 答:如果网站的访问量非常大的话,我们就应该考虑高并发的情况. 高并发的时候就是有很多用户 ...

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

    JVM运行时内存结构回顾 在JVM相关的介绍中,有说到JAVA运行时的内存结构,简单回顾下 整体结构如下图所示,大致分为五大块 而对于方法区中的数据,是属于所有线程共享的数据结构 而对于虚拟机栈中数据 ...

  4. 0930MySQL中实现高性能高并发计数器方案(例如文章点击数)

    转自http://www.jb51.net/article/56656.htm 这篇文章主要介绍了MySQL中实现高性能高并发计数器方案,本文中的计数器是指如文章的点击数.喜欢数.浏览次数等,需要的朋 ...

  5. 《java并发编程实战》读书笔记4--基础构建模块,java中的同步容器类&并发容器类&同步工具类,消费者模式

    上一章说道委托是创建线程安全类的一个最有效策略,只需让现有的线程安全的类管理所有的状态即可.那么这章便说的是怎么利用java平台类库的并发基础构建模块呢? 5.1 同步容器类 包括Vector和Has ...

  6. 如何理解Java中眼花缭乱的各种并发锁?

    在互联网公司面试中,很多小伙伴都被问到过关于锁的问题. 今天,我给大家一次性把Java并发锁的全家桶彻底讲明白.包括互斥锁.读写锁.重入锁.公平锁.悲观锁.自旋锁.偏向锁等等等等.视频有点长,大家一定 ...

  7. Java中如何实现j并发更新数据库同一条数据

    分情况来说:普通单应用并发.多应用或多台服务器并发 情况一:普通单应用并发 使用关键字synchronized就可实现. 情况二:多应用或多台服务器并发 因多个应用之间并非同一个jvm(应用)内,因此 ...

  8. 16套java架构师,高并发,高可用,高性能,集群,大型分布式电商项目实战视频教程

    16套Java架构师,集群,高可用,高可扩展,高性能,高并发,性能优化,设计模式,数据结构,虚拟机,微服务架构,日志分析,工作流,Jvm,Dubbo ,Spring boot,Spring cloud ...

  9. Java中的4个并发工具类 CountDownLatch CyclicBarrier Semaphore Exchanger

    在 java.util.concurrent 包中提供了 4 个有用的并发工具类 CountDownLatch 允许一个或多个线程等待其他线程完成操作,课题点 Thread 类的 join() 方法 ...

随机推荐

  1. Swift备忘录

    Swift 备忘录 2015-4 一.简介 1.Swift 语言由苹果公司在2010年7月开始设计,在 2014 年6月推出,在 2015 年 12 月 3 日开源 2.特点(官方): (1)苹果宣称 ...

  2. C语言程序创建文件夹

    #include <stdio.h> #include <process.h> #include <dir.h> int main(void) { int stat ...

  3. 优先队列 + 并查集 + 字典树 + 欧拉回路 + 树状数组 + 线段树 + 线段树点更新 + KMP +AC自动机 + 扫描线

    这里给出基本思想和实现代码 . 优先队列 : 曾经做过的一道例题       坦克大战 struct node { int x,y,step; friend bool operator <(no ...

  4. IP地址库

    吐槽 前两天一个线上的IP地址库除了点幺蛾子,一查代码,发现用的库早就不更新了,遂决定换库,有几个方案: 纯真数据库 IPIP数据库 GeoIP 纯真数据库是大码农的福音,免费,但是精度一般:IPIP ...

  5. 详细解读css中的浮动以及清除浮动的方法

    对于前端初学者来说,css浮动部分的知识是一块比较难以理解的部分,下面我将把我学习过程中的心得分享给大家. 导读:   1.css块级元素讲解 2.css中浮动是如何产生的 3.出现浮动后,如何清除浮 ...

  6. 前端-Vue学习思维导图笔记

    看不清的朋友右键保存或者新窗口打开哦!喜欢我可以关注我,还有更多前端思维导图笔记有vue结构分析,JS基础,JQ,JS高级,Angular,git等等

  7. 01--Java IO基础

    一.java.io包概览 Java IO包主要可以分为如下4类: 基于字节操作的I/O接口:InputStream和OutputStream. 基于字符操作的I/O接口:Writer和Reader 基 ...

  8. 【PLSQL】游标

    Oracle中的SQL在执行时需要分配一块内存区域,这块内存区域叫做上下文区. 上下文区中记录了SQL语句的处理信息,这些信息包括:查询返回的数据行.查询所处理的数据的行号.指向共享池中的已分析的SQ ...

  9. 【Oracle】DG三种保护模式及切换方式

    一.三种保护方式 Required Redo Transport Attributes for Data Protection Modes Maximum Availability Maximum P ...

  10. Python3编写Windows服务程序

    最近做了公司签到的小工具,有同事要求做成Windows服务,开机自启.先说下怎么用Python写Windows服务程序. #encoding=utf-8 import win32serviceutil ...