自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(105)
  • 资源 (1)
  • 收藏
  • 关注

原创 前端微服务

文章目录微服务介绍微服务的优点:微服务插件——qiankun.jsqiankun介绍代码演示(Vue+ Qiankun+React+static+Angular)微服务介绍前端微服务是一种多个团队通过独立发布功能的方式来共同构建现代化 web 应用的技术手段及方法策略。微服务的优点:技术栈无关主框架不限制接入应用的技术栈,微应用具备完全自主权独立开发、独立部署微应用仓库独立,前后端可独立开发,部署完成后主框架自动完成同步更新增量升级在面对各种复杂场景时,我们通常很难对一个已经存

2021-09-13 11:50:28 2421

原创 jQuery源码分析系列(三)Sizzle选择器引擎-下

选择函数:select()看到select()函数,if(match.length === 1){}存在的意义是尽量简化执行步骤,避免compile()函数的调用。简化操作同样根据tokenize()函数获得标签数组,然后对标签数组首元素是特殊ID选择器的情况进行了判断,之后对标签数组进行遍历匹配,只有当匹配到正确的选择器seed=find(){}并且token为空,此时才是找到了正确结果。select = Sizzle.select = function (selector, context, .

2021-09-11 18:42:50 289

原创 jQuery源码分析系列(二)Sizzle选择器引擎-上

前言我们继续从init()方法中的find()方法往下看,jQuery.find = Sizzle;...find: function (selector) { /** ... */ ret = this.pushStack([]); // 还是调用的递归栈方法 for (i = 0; i < len; i++) { jQuery.find(selector, self[i], ret); // 寻找selector,也就是进入Sizzle构造函数.

2021-09-11 18:42:17 265

原创 jQuery源码分析系列(一)初识jQuery

一个工厂(function(global, factory){ "use strict" // operation_1})(typedef window !== "undefined" ? window : this, function (window, noGlobal) { // operation_2})=====> (function(args,...){...})(params,...) // 一种自执行方法,形式为(.

2021-09-11 18:41:39 716

原创 hyperledger fabric测试脚本(byfn.sh)分解

1. 环境准备​ 安装 node.js golang语言 git docker docker-compose hyperledger-fabric fabirc镜像2. 运行实例2.1 脚本运行git clone fabric-sample文件,进入文件夹下的first-network文件,运行buyfn.sh2.2 命令分解若已经将bin目录下的可执行文件添加到环境变量中,可省略"…/bin/"1.生成证书../bin/cryptogen generat

2021-09-11 18:39:46 6634

原创 hyperledger fabric环境搭建命令

1. Go下载文件:wget https://dl.google.com/go/go1.14.6.linux-amd64.tar.gz安装文件:sudo tar -zxvf go1.14.6.linux-amd64.tar.gz -C /usr/local/envcd ~mkdir gopath配置环境变量:sudo vim /etc/profile---export GOROOT=/usr/local/env/goexport GOPATH=\$HOME/gopathexp

2021-09-11 18:38:34 7525

原创 密码学基础

文章目录1. 密码学概述2. 传统加密方法2.1 替换:替换明文中的字母2.2 换位:重排明文中的字母顺序3. 现代加密技术3.1 对称密钥加密3.2 非对称密钥加密3.3 数据加密标准DES3.4 RSA4. 身份认证5. 报文完整性5.1 散列函数算法6. 数字签名7. 密钥分发中心KDC8. 认证中心CA1. 密码学概述加密过程:发送方将明文通过加密密钥进行加密,得到密文用于传输,接收方通过解密密钥进行解密。**对称加密:**使用相同的密钥进行加密解密公开密钥加密:每个人拥有公钥和私钥,发送方

2021-09-10 20:11:55 458

原创 网络安全基础

1. 网络安全基本属性机密性:只有发送方与预定接收方能够理解报文内容发送方加密报文预定接收方解密报文身份认证:发送方和接收方希望确认彼此的身份信息信息完整性:发送方和接收方希望确保信息未被篡改,发生篡改则一定会被检测到可访问与可用性:网络服务必须对被授权用户可访问和可使用+++2. 网络安全威胁窃听:窃听信息插入:主动在链接中插入信息假冒:假冒分组中的源地址发送信息劫持:通过移除/取代发送方或接收方来接管连接拒绝服务:组织服务器为其他用户提供服务**映射:**在发送

2021-09-10 20:11:50 150

原创 物理层概述

文章目录1. 概述2. 数据通信系统的基础2.1 数字通信系统的组成2.2 信号分类2.3 有关信道的几个概念2.4 信号的常用编码方式2.5 信号的基本调制方式2.6 信道的极限容量3. 传输媒体3.1 引导型传输媒体3.2 非引导型传输媒体4. 信道复用技术(静态)4.1 频分复用4.2 时分多路复用4.3 统计时分复用4.4 波分多路复用4.5 码分多路复用1. 概述物理层要考虑的怎样才能在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。其要尽可能屏蔽不同的传输媒体和通信手段的差

2021-09-10 20:11:39 228

原创 数据链路层概述

文章目录1. 概述2. 点对点协议PPP2.1 PPP协议的特点2.2 PPP协议的帧格式2.3 PPP协议的工作状态2.4 PPP协议的认证流程2.4.1 PAP认证流程2.4.2 CHAP认证流程3. 使用广播信道的数据链路层3.1 局域网的数据链路层3.2 随机接入的共享信道控制3.2.1 CSMA/CD协议3.2.2 时隙ALOHA协议:3.3 使用广播信道的以太网3.3.1 使用集线器的星型拓扑3.3.2 以太网的MAC层3.4 扩展的以太网3.4.1 在物理层扩展以太网3.4.2 在数据链路层扩

2021-09-10 20:11:33 428

原创 网络层概述

文章目录1.网络层概述3 数据报(分组)网络4 IP协议4.1 IP数据报格式4.2 IP数据报分片4.3 IP分片过程4.4 IP编址4.5 子网划分4.6 CIDR与路由聚合5. DHCP协议6. 网络地址转换NAT6.1 NAT的实现6.2 NAT穿透问题7. 互联网控制报文协议ICMP8. IPv6协议9. 路由9.1 路由算法9.2 链路状态路由算法 - Dijkstra算法9.3 距离向量路由算法 - Bellman-Ford方程(动态规划)10. 层次路由11. 路由协议11.1 RIP协议

2021-09-10 20:11:28 221

原创 传输层概述

文章目录1. 传输层服务概述2. 多路复用/解复用2.1 多路分用的工作原理3. UDP协议3.1 UDP概述3.2 UDP报文格式3.3 RUDP3.3.1 描述3.3.2 重传模式4. 可靠数据传输(网络top-10问题)4.3 Rdt2.0:产生错误的信道4.4 Rdt2.1和Rdt2.2:确认信号出现错误4.5 Rdt3.0:产生错误或丢失的信号4.6 流水线机制与滑动窗口协议4.7 滑动窗口协议——GBN协议4.8 滑动窗口协议——SR协议5. TCP协议5.1 TCP报文格式5.2 TCP连接管

2021-09-10 20:11:23 381

原创 应用层概述

文章目录1. 网络应用进程通信1.1 Socket套接字1.2 进程寻址2. 应用层协议2.1 应用层协议的内容3. 网络应用需求3.1 对传输层服务的要求3.3.1 数据丢失/可靠性3.3.2 时间延迟3.3.3 带宽4. HTTP协议4.1 非持久性连接与持久性连接分析4.2 HTTP请求格式4.2.2 请求方法4.2.3 响应状态码4.2.4 首部字段4.3 比较HTTP1.0、HTTP1.1、HTTP2.04.3.1 HTTP1.04.3.2 HTTP1.14.3.3 HTTP2.02.2 HTTP

2021-09-10 20:11:09 554

原创 计算机网络体系结构

文章目录1. 五层协议模型1.1 应用层1.2 传输层1.3 网络层1.4 数据链路层1.5 物理层1.2 数据链路层1.3 网络层1.4 传输层1.4.1 传输层功能1.5. 应用层1.5.1 应用层协议2. OSI七层模型3. TCP/IP协议模型4. 层际协议5. 数据在各层之间的传递过程[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0d3zBtII-1631114012833)(…/…/images/计算机网络分层网络体系结构基本概念图.PNG)]经典网络体系结构

2021-09-10 20:11:03 304

原创 计算机网络概述

文章目录1. 计算机网络1.1 定义2. 网络协议2.1 定义2.2 网络协议三要素2.3 Internet协议标准2.4 接入网络3. 数据交换3.1 电路交换3.2 报文交换3.3 分组交换4. 计算机网络性能4.1 专用名词4.2 四种分组延迟1. 计算机网络1.1 定义计算机网络就是互连(互联互通)的、自治(无主从关系)的计算机集合。+++2. 网络协议2.1 定义网络协议,是为进行网络中的数据交换而建立的规则、标准或约定。网络协议规定了通信实体之间所交换的消息的格式、意义、顺序以及

2021-09-10 20:10:55 84

原创 Spring面试题

文章目录1. Spring1.1 Spring是什么?1.3 Spring的IOC1.4 Spring的AOP1.4.1 Spring AOP与AspectJ AOP1.4.2 JDK动态代理和CGLIB动态代理1.5 Spring bean1.5.1 Spring bean的作用域1.5.2 Spring bean的生命周期1.6 Spring容器1.6.1 Spring容器的启动过程1.6.2 BeanFactory和ApplicationContext有什么区别?1.7 循环依赖与三级缓存1.7.1

2021-09-10 20:10:47 241

原创 数据库MySQL汇总

文章目录1. 数据库设计1.2 数据类型1.2.1 char和varchar的区别1.2.2 varchar(100)和varchar(10)的区别1.2.3 varchar能存储多少汉字、数字?1.2.4 blob和text的区别2. 标准MySQL语言2.1 解释MySQL外连接、内连接与自连接的区别2.2 一些关键字的使用2.2.1 exist比in更快2.2.2 union与union all的区别3. 数据安全性3.1 怎么实现数据安全?3.2 授权和取消授权的一般操作3.3 什么叫视图?游标是

2021-09-08 16:49:30 561

原创 Linux常用命令

文章目录1. 常用命令2. 项目中怎么用到了linux2.1 创建用户、管理用户2.2 安装软件2.3 服务部署2.4 服务监控2.5 shell脚本1. 常用命令帮助命令:help、man远程登录:ssh、scp、wget、curl等文件创建删除:mkdir、touch、rm、mv、cp文件权限:chmod文件搜索:find、whereis、locate任务管理:ps、kill、netstat、fdisk、service、systemctl、crontab网络管

2021-09-08 16:41:11 126

原创 垃圾回收机制

文章目录1 堆区的内存划分1.1 新生代1.2 老年代1.3 方法区2. 垃圾对象判断算法2.1 引用计数法(已被淘汰,循环引用失效)2.2 可达性分析2.3 可达性分析之三色标记法2.4 引用2.5 垃圾对象一定会被回收吗?2.6 方法区的垃圾回收2.6.1 如何判断一个常量是废弃常量2.6.2 如何判断一个类是无用的类3 垃圾回收算法3.1 复制清除算法(年轻代使用)3.2 标记清除算法(老年代使用)3.3 标记整理算法3.4 分代收集算法4. 垃圾收集器4.1 新生代垃圾收集器4.2 老年代垃圾收集器

2021-09-08 16:39:06 296

原创 编译和加载

文章目录1. 编译静态绑定和动态绑定2. 类加载2.1 类加载流程2.2 双亲加载机制2.2.1 为什么提出双亲委派机制2.2.2 委派实现过程2.3 破坏双亲委派2.3.1 JDBC破坏双亲委派2.3.2 Tomcat破坏双亲委派2.3 类的卸载3. 对象的创建3.1 对象创建的过程3.1.1 构建对象3.1.2 实例化对象:3.1.3 引用对象3.2 对象的内存布局3.3 对象使用过程3.3.1 对象的访问4. 对象引用4.1 引用分类4.1.1 强引用4.1.2 软引用4.1.3 弱引用4.1.4 虚

2021-09-08 16:37:30 371

原创 JVM内存模型

文章目录1. JVM内存模型1.1 JVM内存区域的划分1.1.1 方法区1.1.2 堆区1.1.3 程序计数器1.1.4 虚拟机栈1.1.5 本地方法栈1.2 JVM与系统内存的关系1.2.1 线程间通信1.3 其他1. JVM内存模型在JVM引言中,我们提到操作系统给JVM分配了一套内存区域,由JVM负责在Java程序运行时进行管理,并且在类加载时也使用了方法区(静态区)存储类的静态变量,那么,内存中其他区域呢?分别是用来干什么的呢?1.1 JVM内存区域的划分在学习操作系统时,我们学习了进程与

2021-09-08 16:33:25 87

原创 JVM引言

文章目录1. JVM1.1 内存机制1.2 执行机制1.2.1 编译1.2.2 类加载1.2.3 初始化1.3 管理机制1. JVM顾名思义,JVM(java virtual machine)是一种java虚拟机器,实现了Java语言的跨平台运行。也就是说,JVM是负责编译、管理、执行Java程序的,那么JVM必然有一套类似操作系统的完整运行机制,包括内存机制、执行机制、管理机制等,下面我们就详细的对这些机制进行学习。1.1 内存机制我们知道,程序在计算机内运行必然要分配CPU、内存资源等,由于Ja

2021-09-08 16:32:45 170

原创 设计模式总结

1. 设计原则单一职责原则:一个对象或者一个方法只做一件事能够降低实体的复杂度,便于维护和拓展提高实体的可读性改动代码的风险降低了,也不会牵一发而动全身开闭原则:一个软件实体,如类、模块和函数应该对扩展开放,对修改关闭不会改变原有功能,从而引发故障里氏替换原则:所有引用基类的地方必须能透明地使用其子类的对象为继承定义了规范,实现更好的继承迪米特原则:如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。降低了类之间的耦合度,提高了模

2021-09-08 16:28:57 190

原创 中介者模式

文章目录1. 中介者模式(Command Pattern)1.1 介绍1.2 优缺点1.3 使用场景1.4 注意事项2. 案例实现3. 源码实现3.1 Timer类1. 中介者模式(Command Pattern)1.1 介绍中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。对象与对象之间存在大量的关联关系,这样势必会导致系统的结构变得很复杂,同时若一个

2021-09-08 14:57:13 68

原创 迭代器模式

1. 迭代器模式(Command Pattern)1.1 介绍意图 :提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。主要解决 :不同的方式来遍历整个整合对象。如何解决 :把在元素之间游走的责任交给迭代器,而不是聚合对象。关键代码 :定义接口:hasNext, next。1.2 优缺点优点它支持以不同的方式遍历一个聚合对象迭代器简化了聚合类在同一个聚合上可以有多个遍历在迭代器模式中,增加新的聚合类和迭代器类都很方便,无须修改原有代码缺点

2021-09-08 14:53:16 73

原创 备忘录模式

文章目录1. 备忘录模式(Command Pattern)1.1 介绍1.2 优缺点1.3 实现场景1.4 注意事项2. 案例实现3. 源码实现1. 备忘录模式(Command Pattern)1.1 介绍意图 :在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。主要解决 :所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。如何解决 :通过一个备忘录类专门存储对象状态。关

2021-09-08 14:51:28 64

原创 模板方法模式

文章目录1. 模板方法模式1.1 介绍1.2 优缺点1.3 适用场景1.4 注意事项3. 实例3. 源码实现3.1 Java.Object3.2 RestTemplate, JmsTemplate, JpaTemplate1. 模板方法模式1.1 介绍意图 : 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。主要解决 :一些方法通用,却在每一个子类都重新写了这一方法。关键代码 :在抽象类实现,其他步骤在子类实现。1

2021-09-02 17:47:19 57

原创 策略模式~

文章目录1. 策略模式1.1 介绍1.2 优缺点1.3 使用场景1.4 注意事项2. 案例实现3. 源码实现3.1 Java集合排序3.2 Resource1. 策略模式1.1 介绍策略模式是对象的行为模式,用意是对一组算法的封装。动态的选择需要的算法并使用。策略模式指的是程序中涉及决策控制的一种模式。策略模式功能非常强大,因为这个设计模式本身的核心思想就是面向对象编程的多形性思想。策略模式的三个角色:抽象策略角色、具体策略角色、环境角色(对抽象策略角色的引用)实现步骤:1.定义抽象角色类(定

2021-09-02 17:46:49 145

原创 观察者模式~

文章目录1. 观察者模式1.1 介绍1.2 优缺点1.3 使用场景1.4 注意事项2. 案例实现3. 源码实现3.1 Spring事件驱动模型3.2 Vue的订阅—通知机制1. 观察者模式1.1 介绍当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式。观察者模式定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。1.2 优缺点优点观

2021-09-02 17:46:18 90

原创 解释器模式~

文章目录1. 解释器模式1.1 介绍1.2 优缺点1.3 使用场景1.4 注意事项2. 案例代码1. 解释器模式1.1 介绍解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。给分析对象定义一个语言,并定义该语言的文法表示,再设计一个解析器来解释语言中的句子。也就是说,用编译语言的方式来分析应用中的实例。这种模式实现了文法表达式处理的接口,该接

2021-09-02 17:45:45 75

原创 命令模式~

文章目录1. 命令模式1.1 介绍1.2 优缺点1.4 注意事项2. 案例代码1. 命令模式1.1 介绍命令(Command)模式的定义如下:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。1.2 优缺点优点通过引入中间件(抽象接口)降低系统的耦合度。扩展性良好,增加或删除命令非常方便。采用命令模式增加与删除命令不会影响其他类,且满足“开闭原则”。可以实现宏命令。命令模式可以与组合模

2021-09-02 17:45:14 63

原创 访问者模式

文章目录1. 访问者模式1.1 介绍1.2 优缺点1.3 使用场景1.4 注意事项2. 案例实现1. 访问者模式1.1 介绍在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。它讲的是表示一个作用于某对象结构中的各元素的操作,它使我可以在不改变各元素的类的前提下定义作用于这些元素的新操作。

2021-09-02 17:44:43 75

原创 责任链模式~

文章目录1. 责任链模式1.1 介绍1.2 优缺点1.3 使用场景1.4 注意事项2. 案例代码3. 源码实现3.1 异常机制3.2 事件冒泡1. 责任链模式1.1 介绍责任链(Chain of Responsibility)模式的定义:为了避免请求发送者与多个请求处理者耦合在一起,于是将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。在责任链模式中,客户只需要将请求发送到责任链上即可,无须关心请求的处理细节和请求的传递过

2021-09-02 17:44:07 101

原创 状态模式~

文章目录1. 状态模式1.1 介绍1.2 优缺点1.3 使用场景1.4 注意事项2. 案例实现3. 源码实现1. 状态模式1.1 介绍状态模式(state pattern) 的定义:对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。1.2 优缺点优点结构清晰,状态模式将与特定状态相关的行为局部化到一个状态中,并且将不同状态的行

2021-09-02 17:43:35 73

原创 组合模式~

文章目录1. 组合模式1.1 介绍1.2 优缺点1.3 使用场景1.4 注意事项2. 案例代码3. 源码实现3.1 `java.awt.container`3.2 `java.util.HashMap`1. 组合模式1.1 介绍组合模式,就是在一个对象中包含其他对象,这些被包含的对象可能是终点对象(不再包含别的对象),也有可能是非终点对象(其内部还包含其他对象,或叫组对象),我们将对象称为节点,即一个根节点包含许多子节点,这些子节点有的不再包含子节点,而有的仍然包含子节点,以此类推。将对象组成树形结

2021-09-02 17:42:59 109

原创 享元模式~

文章目录1. 享元模式1.1 介绍1.2 优缺点1.3 使用场景1.4 注意事项2. 案例代码3. 源码实现3.1 包装类1. 享元模式1.1 介绍享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。我们将通过创建 5 个对象来画出 20 个分布于不同位置的圆来演示这种模式。由于只有 5 种可用的颜

2021-09-02 17:42:26 98

原创 代理模式~

文章目录1. 代理模式1.1 介绍1.2 优缺点1.3 使用场景1.4 注意事项2. 案例代码2.2 动态代理2.2.1 jdk的动态代理2.2.2 cglib动态代理2.2.3 jdk动态代理和cglib动态代理的对比3. 源码实现3.1 JDK动态代理3.2 CGLIB动态代理1. 代理模式1.1 介绍**代理模式的作用是为某对象提供一种代理以控制对该对象的访问。**即客户端通过代理间接地访问该对象,从而限制、增强或修改该对象的一些特性。由于静态代理会导致类文件大量增多,所以 Java 中动态代

2021-09-01 00:44:18 93

原创 外观模式~

文章目录1. 外观模式1.1 介绍1.2 优缺点1.3 使用场景1.4 注意事项2. 案例代码3. 源码实现3.1 Tomcat1. 外观模式1.1 介绍外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。1.2 优缺点优点减少系统相互依赖,减少代码量提高灵活性,提

2021-09-01 00:41:23 77

原创 桥接模式~

文章目录1. 桥接模式1.1 介绍1.2 优缺点1.3 适用场景1.4 注意事项2. 案例实现3. 源码实现3.1 JDBC1. 桥接模式1.1 介绍桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。1.2 优缺点优点抽象和实现的分离优秀的扩展能力实现细节对客户透明

2021-08-31 20:10:43 93

原创 装饰器模式

文章目录1. 装饰器模式1.1 介绍1.2 优点1.3 使用场景1.4 注意事项2. 案例实现3. 源码实现3.1 java.io.*1. 装饰器模式1.1 介绍一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,**并且随着扩展功能的增多,子类会很膨胀。**如何在不增加很多子类的情况下拓展现有类呢?装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了

2021-08-31 20:10:19 71

node-v6.8.1-x64.msi

node.js基于64操作系统下的自动安装工具

2019-07-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除