java 高并发,数据库优化,单例模式,多线程

一、解决高并发问题:

浏览器端:#####

1、浏览器缓存,减少请求
2、多个子域名部署,突破浏览器链接限制
3、图片文件独立域名部署,减少请求传输量
4、减少浏览器cookie大小

服务器端:#####

1、动静分离部署nginx+tomcat
2、应用集群,负载均衡--F5/Array/LVS/Nginx/TOMCAT
3、分布式缓存Memcached+Redis
4、应用本地缓存 Ehcache
5、JVM参数调优
6、用并发请求更好的技术 NodeJs/GoLang nodejs处理并发是Tomcat的很多倍
7、加服务器数量,加内存。

数据库:#####

1、数据库分库分表 3、读写分离 4、数据库本身缓存 Mysql Query

程序方法:#####
  • ThreadLocal 保证不同线程拥有不同实例,为每个线程提供一个副本(解决了线程安全,并不是理想中的线程同步操作)。
  • Synchronized加锁的方式,当A在使用资源时,B无法强行获得。Synchronized(锁) { }
  • Wait 、notify:Wait进行线程等待,notify将机会(调用这个方法的线程)
  • Volatile:volatile修饰的成语变量在每次被线程访问时,都强迫从共享内存中重读该成员变量的值,当成员变量发生变化时,强迫线程将变化值回写到共享内存。

二、数据库优化方案:

三、单例模式:

  • 概念:这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

  • 使用场景: 1、要求生产唯一序列号。 2、WEB 中的计数器,不用每次刷新都在数据库里加一次,用单例先缓存起来。 3、创建的一个对象需要消耗的资源过多,比如 I/O 与数据库的连接等。

注意:
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。

你可能感兴趣的:(java 高并发,数据库优化,单例模式,多线程)