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、单例类必须给所有其他对象提供这一实例。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,765评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,923评论 18 139
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,366评论 11 349
  • 我们到底需要什么样的母亲节。我也不知道,但最起码对当事人双方都是舒服的吧,母亲节不是儿女炫耀孝顺的途径,最重要的是...
  • 有位军人,在战场上无畏生死,战斗中总冲在最前面。由于他的赫赫战功,很快就晋升为团长。他当团长之后,依旧每次战斗冲在...
    海王星1984阅读 248评论 0 0