摘要:
背景 一个生产者,两个消费者;生产者对数值加1,当大于0时消费者进行消费,每次减去1.按道理来讲数值最小为0,但是实际运行时会出现负数。 原因,消费代码导致 /** * 分析:消费者1得到执行,会进入wait状态,此时数值为0;然后生产者得到执行,数值变为1;消费2线程得到执行,数值变为0; * 紧 阅读全文
摘要:
属于结构型模式,用于抽象与实现解耦。 例如: JDBC获取数据库连接,是实现桥接模式的典型。参考:JDBC桥接 代码示例 public interface DrawAPI { void drawCircle(int radius, int x, int y); } public class Draw 阅读全文
摘要:
场景 当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。 我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。 代码示例 /** * @author Lenovo * @date 2020/7/4 19:25 阅读全文
摘要:
##多种实现方式 饿汉式 懒汉式 (DCL必会) 枚举 (自己用推荐) 在多种实现方式下,需要注意多线程环境下线程安全问题。 ###首先,考虑如何确保单例? 1、如果在外部所有人都可以访问单例类的构造器,那就可以直接创建对象,所以构造器私有化。 2、构造器私有化了以后,只有自己可以创建对象,因此需要 阅读全文
摘要:
UML类图 参考:UML类图 工厂模式 创建型,用于封装和管理对象的创建。 简单工厂模式 根据传输的参数动态确定创建哪个对象。创建对象的判断逻辑维护在简单工厂内部,当新增新类型对象时需要修改简单工厂代码。 工厂方法模式 由于简单工厂新增类型时,需要修改原有代码,违背开闭原则,所以需要封装变化点,也就 阅读全文
摘要:
1、单一职责原则(Single Responsibility Principle) 定义:单一职责原则(SRP),就一个类而言,应该仅有一个引起它变化的原因。 单一职责原则是实现高内聚、低耦合的指导方针;它需要开发人员发现类的不同职责并将其分离。难点就在于怎么分离?那就是如果你能够想到多于一个的动机 阅读全文
摘要:
常用设计模拟有:23种,分为三类:创建型,结构型,行为型。所谓设计模式,就是相似问题的一种解决方案。 创建型(是对对象创建过程的各种问题和解决方案的总结) 1、Factory 工厂模式 2、Abstract Factory 抽象工厂模式 3、Singleton 单例模式 4、Builder 构建器模 阅读全文
摘要:
背景:由于搞活动,有瞬时流量,好多请求被前置系统拦截。由于前置系统长时间,得不到后端的响应,就认为后端处理器繁忙,然后就拦截请求,不在放行。 根本原因: 线程池配置:20 核心线程数,最大线数也是20,阻塞队列1万。 解决办法:尝试调大最大线程数为100,但是还是没改变,原因,来的请求都先入阻塞队列 阅读全文
摘要:
1、系统负载和cpu核数有关系,所以先查看当前机器是几核 grep 'model name' /proc/cpuinfo |wc -l 平均负载:是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数, 注意和cpu使用率没有关系,举例对于io密集型,cpu平均负载很高, 阅读全文
摘要:
原因IDEA与maven版本不匹配,换个maven版本就好。 阅读全文