2 巴黎↓一整天

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 22w+

Java堆外内存

Java堆外内存https://www.csdn.net/gather_24/Mtjacg3sMTg4MTctYmxvZwO0O0OO0O0O.html

2020-09-11 09:55:19

观察者模式(Observer Pattern)(发布订阅模式)

观察者模式(Observer Pattern)(发布订阅模式)JDK (Observable)代码实现定义了对象之间一对多的依赖,多个观察者对象监听一个主体对象,当主体对象发生变化时,其所有依赖者(观察者)都会收到通知并更新。JDK (Observable)代码实现定义一个传输对象 Questionpublic class Question { private String userName; private String content; public String

2020-09-09 16:13:14

中介者模式(Mediator)/ 调停模式 --封装对象之间的交互,使原有对象之间松解耦合

中介者模式(Mediator)/ 调停模式应用场景优点:缺点:案例解决方案类结构图代码示例中介者模式 PK 桥接模式定义一个中介者来封装对象之间的交互,使原有对象之间松解耦合,可以独立改变对象之间的交互。是迪米特法则的典型应用。通过中介者,解耦系统中各层次对象的直接耦合,各层次对象对外依赖的通信 交由中介者转发。应用场景系统中对象之间的引用关系复杂,依赖关系结构混乱,可以添加中介者交互的公共行为需要改变,可以添加中介者聊天室、注册中心优点:1)对象之间松耦合2)对象之间一对多的关联变

2020-09-07 12:52:30

解释器模式(Interpreter)-- 定义语法或表达方法

解释器模式(Interpreter)定义语法或表达方法,类似异常封装定义一个接口public interface Expression { String interpret(String context);}接口实现类,通过interpret方法,对入参进行另外一种输出public class ExpressionImpl implements Expression { private String data; public ExpressionImpl(String da

2020-09-04 12:46:37

命令模式(Command)-- 请求与接收解耦

命令模式(Command)-- 请求与接收解耦类结构图使用场景源码中的应用类结构图Broker是命令的接受者(add)也是命令的执行者(execute)。add方法不关心execute的执行过程,execute不关心add方法的入参来于何处。Broker中除了定义list,还是可以定义其他的数据结构(比如:栈),来适应各种业务场景。定义一个 执行的接口public interface Order { void execute();}执行实现类1public class FirstO

2020-09-04 11:37:53

设计模式 - 责任链模式(Chain of Responsibility)--链式处理

责任链模式(Chain of Responsibility)应用场景类结构图代码实现将链中的每个节点看作一个对象,各节点处理的请求都不同,且自动维护下一个节点对象。当一个请求从链首发出时,会沿着链的路径传递给每一个节点对象,知道有对象处理该请求为止。责任链模式主要是为了解耦请求和处理,客户只需要将请求发送到链上即可,无需关心处理细节,符合开闭原则。缺点:责任链太长或者处理时间太长,会影响整体性能。节点循环使用,容易造成死循环。应用场景1)有多个对象可以处理一个请求,具体哪个对象处理由运行

2020-09-04 11:20:51

涉及模式 - 代理模式(Proxy)-- 为其他对象提供代理

代理模式(Proxy)类结构图静态代理动态代理JDK ProxyCGLibFastClass机制JDK、CGLib对比源码中的应用ProxyFactoryBeanSpring AOP为其他对象提供代理,控制对这个对象的访问。在客户端和目标对象之间起到中介作用。类结构图Subject:顶层接口RealSubject:被代理对象(真实对象)Proxy:代理对象,持有被代理对象的引用Subject,并在被代理对象的request()前后增加处理。静态代理定义一个接口 Personpublic

2020-09-03 14:23:50

享元模式(Flyweight)/ 轻量级模式

享元模式(Flyweight)/ 轻量级模式内部状态、外部状态应用场景代码实现map 中存储,外部获取对象时,map中有则直接返回StringInteger源码中的应用Integer.valueOf()Long.LongCache{}共享细粒度对象,不必为每个访问者单独创建一个对象,以此降低内存消耗。内部状态、外部状态享元模式将对象的状态分为内部状态、外部状态。内部状态即不变,外部状态即变化。通过共享不变的部分,达到减少对象数量并节约内存。内部状态:比如连接池中的配置,这些配置信息是不会变化的。外

2020-09-03 13:09:24

设计模式 - 外观模式(Facade)定义一个高层接口

外观模式(Facade)类结构图代码实现当外部需要访问多个子系统时,定义一个高层接口,使子系统更易使用,掩盖系统的复杂性。类结构图代码实现先定义两个模块 Module1 Module2public class Module1 { public void on() { System.out.println("media1 is on"); } public void off() { System.out.println("media1 is off"); }

2020-09-03 12:57:32

装饰器模式(Decorator)/ 包装模式(Wapper)

装饰器模式(Decorator)应用场景类结构图代码实现原有对象的基础上,功能附加。装饰器模式是一种特殊的代理模式,强调的是装饰器的扩展。应用场景字节流 InputStream in = new InputStream();BufferReader br = new BufferReader(in);类结构图Battercake: 接口,装饰类和被装饰类的基本类型。BattercakeImpl:具体实现类(被装饰类),本身具备完整的功能。BattercakeDecorator:装饰

2020-09-03 12:52:16

组合模式(Composite)/ 整理部分模式

组合模式(Composite)/ 整理部分模式使用场景实现方式一实现方式二(将对象抽象,方便扩展)对比源码中的使用HashMap.putAll()将一组对象当做单个对象,将单个对象(叶子节点)和组合对象(树枝节点)用同一方式表达以树形结构组合对象,来表示部分和整体的层次。使用场景具备整体和部分的层次,呈树状结构ArrayList.addAll(Collection)实现方式一public class Employee { private String name; private

2020-09-02 19:40:06

设计模式 - 过滤器模式(Filter)

过滤器模式(Filter)使用不同的规则过滤一组对象public class Client { public static void main(String[] args) { List<Persion> persions = new ArrayList<>(); persions.add(new Persion("qq", 11)); persions.add(new Persion("ww", 21)); persions.add(new

2020-09-02 19:12:04

设计模式 - 桥接模式(bridge)抽象与实现解耦

桥接模式(bridge)应用场景两个维度的设计方案类结构图代码实现源码中的应用JDBC的API中,Driver类就是桥接对象。将抽象与实现解耦,可自行扩展。适用于业务需要向两个维度扩展应用场景抽象和现实之间增加更多的灵活场景。一个类需要多个维度的扩展。JDBC(SPI)–Driver优点:分离抽象和具体,提高拓展性,符合开闭原则,符合合成复用原则两个维度的设计方案如果要绘制矩形、圆形、椭圆、正方形,至少需要4个形状类,如果各图形又需要不同的颜色,如红色、绿色、蓝色等,那么采用哪种方案?

2020-09-02 19:10:12

适配器模式(Adapter)/ 变压器模式

适配器模式(Adapter)/ 变压器模式适用场景类适配器类结构图对象适配模式类结构图源码中的适配器模式SpringAOPSpringMVC将类的接口转化为客户期望的另一个接口,使原本不兼容的类可以一起工作,解决兼容问题。符合开闭原则,只需要新增,无需修改原来的代码。适用场景类已存在,但与需求不匹配Spring aop 、SpringMvc - handleAdapter优点:复用现有类,且不需改变类适配器类结构图Target(目标抽象类):定义客户所需接口,可以是一个抽象类或接

2020-09-02 17:41:46

spring注解 -- 赋值组件(自动装配)

@Component@Controller@Service@Repository@Valuepublic class Bird { @Value("name") //1、基本数据类型 private String name; @Value("#{3-1}") //2、Spring EL表达式,3-1=2 private int age; @Value("${bird.color}") //3、通过配置文件赋值 private

2020-09-02 16:28:27

spring 注解-- 配置组件

注解配置组件@ComponentScan(value = "com.example.demo")includeFilters自定义filter过滤@Configuration + @Bean@Scope验证Bean是否单例:@Lazy@Conditional条件控制spring-autoconfigure-metadata.properties 文件@Import配置组件@ComponentScan(value = “com.example.demo”)加载指定包,默认加载@Component、@Co

2020-09-02 13:02:38

kafka如何保证数据不丢失?

kafka如何保证数据不丢失?Producer端的处理Consumer端的处理:如果master副本挂了,其他follower副本都是非同步副本,那么在开启unclean.leader.election=true的情况下,非同步副本被选举为master副本,那必然会丢数据。Producer端的处理设置参数ACKSrequest,timeout.ms:如果网络异常收不到响应,则等待,这里有个配置等待时间 request.timeout.ms:发送消息等待时间。metadata.fetch.time.

2020-08-13 17:43:07

kafka 代码、配置

代码、配置代码示例配置分析发送端配置消费端配置代码示例KafkaProducerDemo.classpublic class KafkaProducerDemo extends Thread{ private final KafkaProducer<Integer,String> producer; private final String topic; private final boolean isAysnc; public KafkaProducer

2020-08-13 17:41:47

kafka 零拷贝

零拷贝零拷贝一次交互的步骤零拷贝的优势零拷贝消费者从kafka服务器获取消息时,服务器先从磁盘读取数据到内存,再将内存的数据通过socket发送给消费者。看似简单的操作实际上有很多步骤。一次交互的步骤▪ 操作系统将数据从磁盘读入到内核空间的页缓存。▪ 应用程序将数据从内核空间读入到用户空间缓存中。▪ 应用程序将数据写回到内核空间到 socket 缓存中。▪ 操作系统将数据从 socket 缓冲区复制到网卡缓冲区,以便将数据经网络发出。整个过程4次上下文切换及4次数据复制,其中CPU复制了两

2020-08-13 17:40:22

kafka offset

offsetoffset 偏移量offset存储在哪里?consumer_offsets不同groupid用哪个consumer_offsets_ 呢?LogSegment (分段)Log文件内容分析日志清除/压缩日志清理策略日志压缩策略offset 偏移量offset存储在哪里?consumer_offsetskafka默认提供了50个consumer_offsets_*的topic,用于存放consumer group 某一时刻提交的offset信息。不同groupid用哪个consumer_

2020-08-13 17:39:30

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。