- 博客(29)
- 收藏
- 关注
原创 设计模式-装饰器模式
装饰器(Decorator)模式指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。采用装饰模式扩展对象的功能比采用继承方式更加灵活;可以设计出多个不同的具体装饰类,创造出多个不同行为的组合。但是装饰模式增加了许多子类,如果过度使用会使程序变得很复杂。模式结构装饰器模式的角色如下:顶层接口被装饰者装饰器抽象类装饰器源码导读装饰器模式使用的典型就是io流了,前面适配器模式我们说到过io流使用了适配器模式,用于字节流转换到字符流;装饰器
2020-09-07 16:08:50
114
原创 设计模式杂谈
关于设计的个人看法我们设计一个功能的时候,要考虑的无非是那些问题:可靠性,鲁棒性,解耦性,扩展性,可读性等等。我们对代码和功能的设计过程,从面相对象的角度来讲就是一个拟物或者拟人化的一个过程——我们先确定某个功能需要什么样的角色或者“零部件”参与,然后创建对应的类,指定类的角色职能;然后各个类各司其职;然后再考虑类的扩展性相关的问题,做出优化。设计功能的第一步当然是明确需求,但是功能落地的重要过程我认为就是拟物拟人化的这个过程。设计案例分析现在我们有个需求,异步模块——将要执行的数据放到后台异步去
2020-09-07 16:03:34
105
原创 rabbitMQ结合spring-boot使用三
ListenerContainer 的使用在消费端,我们的消费监听器是运行在 监听器容器之中的( ListenerContainer ),springboot 给我们提供了两个监听器容器 SimpleMessageListenerContainer 和 DirectMessageListenerContainer 在配置文件中凡是以 spring.rabbitmq.listener.simple 开头的就是对第一个容器的配置,以 spring.rabbitmq.listener.direct 开头的是对第
2020-09-07 15:41:42
363
原创 rabbitMQ结合spring-boot使用二
这一章节我们会学习rabbitMQ在项目生产中一些重要的特性,如持久化,消息确认机制,消息过期等特性。只要能利用好这些特性,我们就能开发出可用性强的,功能强大的MQ系统。持久化RabbitMQ通过消息持久化来保证消息的可靠性——为了保证RabbitMQ在退出或者发生异常情况下数据不会丢失,需要将 queue ,exchange 和 Message 都持久化。下面分别介绍它们持久化配置的方式。对于 queue ,exchange 在创建的时候都会提供一个参数用以设置是否持久化,而如果使用它们对应的建造者
2020-09-07 15:40:13
331
原创 rabbitMQ结合spring-boot使用(1)
从这一节开始我们进入rabbitMQ的实战环节,项目环境是spring-boot 加maven。首先让我们创建一个spring-boot项目,然后引入web依赖和 rabbitMQ的依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency
2020-08-04 09:40:00
516
原创 rabbitMQ的安装
对 rabbitMQ 我们已经有了初步的了解,现在我们来安装 rabbitMQ 来进行一些操作。因为大部分人的操作系统都是windows 而且作者本人使用的也windows系统。所以这里只介绍在windows上安装rabbitMQ。mac用户自行解决(仇富脸)。erlang的安装erlang 不好的地方是它不是向下兼容的,也就是说 rabbitMQ的版本和erlang的版本不匹配的话,会安装失败。所以我们要先上 rabbitMQ的官方网站查询对应的版本号,再安装 网站:https://www.rabbi
2020-06-22 11:32:13
567
原创 MQ系列(1)——rabbitMQ简介
前文我们学习了 MQ的相关知识,现在我们来学习一下实现了AMQP协议的 rabbitMQ 中间件。rabbitMQ 是使用 erlang 语言编写的中间件(erlang之父 19年4月去世的,很伟大一个程序员)。rabbitMQ 的结构和的角色学习rabbtMQ我们先要弄清楚这几个概念:exchange,queue,routing-key,binding-key,message,publisher,exchange,binding-key,Connection,Channel,consumer,brok
2020-06-16 10:16:31
673
原创 MQ系列(0)——MQ简介
mq简介mq 就是消息队列(Message Queue)。想必大家对队列的数据结构已经很熟悉了,消息队列可以简单理解为:把要传输的数据放在队列中,mq 就是存放和发送消息的这么一个队列中间件。在消息队列中,把数据放到消息队列的角色叫做 生产者,从消息队列中消费获取数据的叫做 消费者。那么消息队列有哪些使用场景呢? 六字真言:异步削峰解耦。MQ的异步异步概念想必大家都熟悉了,就是 a应用(或程序) 将数据传递给b应用(或程序)后,不等待b的响应结果直接做下一步动作,而b并行执行,提高效率。使用mq,就
2020-06-15 11:18:02
869
原创 分享一个springboot脚手架
项目介绍在我们开发项目的时候各个项目之间总有一些可共用的代码或者配置,如果我们每新建一个项目就把代码复制粘贴再修改就显得很没有必要。于是我就做了一个 poseidon-boot-starter 该项目是基于 spring-boot的 starter 功能开发的,因此只适用于 spring-boot 项目。该项目集成了如下功能:异常通知权限配置幂等锁日志配置用户操作日志记录查询接口通用化项目地址:https://github.com/muggle0/poseidon-boot-starte
2020-06-13 13:45:03
1055
原创 设计模式杂谈
关于设计的个人看法我们设计一个功能的时候,要考虑的无非是那些问题:可靠性,鲁棒性,解耦性,扩展性,可读性等等。我们对代码和功能的设计过程,从面相对象的角度来讲就是一个拟物或者拟人化的一个过程——我们先确定某个功能需要什么样的角色或者“零部件”参与,然后创建对应的类,指定类的角色职能;然后各个类各司其职;然后再考虑类的扩展性相关的问题,做出优化。设计功能的第一步当然是明确需求,但是功能落地的重...
2020-04-21 08:37:27
149
原创 设计模式-状态模式
状态模式的特点是,对于有状态的对象,我们可以把复杂的“判断逻辑”提取到不同的状态对象中,允许内置的状态对象改变时影响它的行为。状态模式可以有效的减少if else 的分支结构;它将状态和行为绑定到一起,根据不同的状态来确定其行为。这样做的好处是将不同的状态引入独立的对象中会使得状态转换变得更加明确,且减少对象间的相互依赖。但是状态模式的结构与实现都较为复杂,如果使用不当会导致程序结构和代码的混乱。...
2020-04-07 08:51:51
660
原创 设计模式-迭代器模式
迭代器模式是数据访问遍历的一种行为模式。java中List、Set、Map 等都包含了迭代器。迭代器提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。迭代器模式的优点:无须暴露聚合对象的内部表示遍历任务交由迭代器完成,简化聚合类遍历的方式可扩展模式结构迭代器模式主要包含以下角色。抽象聚合(Aggregate)角色:定义存储、添加、删除聚合对象以及创建迭代器...
2020-04-07 08:48:46
656
原创 设计模式-模板方法模式
模板方法(Template Method)模式的定义:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式.其优点有:封装了不变部分,扩展可变部分。在父类中提取了公共的部分代码,便于代码复用。部分方法是由子类实现的,因此子类可以通过扩展方式增加相应的功能,符合开闭原则。模式结构模板方法模式包含以下...
2020-04-03 08:47:00
644
原创 设计模式—门面模式
门面(Facade)模式的定义:是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体的细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。门面模式又被称作外观模式,这个模式特点很鲜明,在生活中我们就能找到不少例子。比如110,我们生活中遇到困难或者危险等一系列问题,我们都是直接打110找警察同志...
2020-04-02 08:58:24
700
原创 设计模式-代理模式
代理模式的定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。代理模式的主要优点有:代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用;代理对象可以扩展目标对象的功能;代理模式能将客户端与目标对象分离,在一定程度上降低了系统的耦合度;其主要缺点是:在客户端和目标对象之间增...
2020-04-01 08:47:13
147
原创 设计模式-策略模式
策略(Strategy)模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。策略模式有以下优点:多重条件语句不易维护,而使用策略模式可以避免使用多重条件语句。策略模式提供了一系列的可供重用的算法族,恰当使用继...
2020-03-31 10:17:24
658
原创 设计模式-命令模式
当我们的代码中"方法的请求者" 和 "方法的实现者" 之间存在较为紧密的耦合的时候,这段代码的后续维护会变得很困难。如果我们想对方法进行回滚 撤销等操作的话就会很困难;使用命名模式可解决这一问题。在现实生活中,这样的例子也很多,例如,电视机遥控器(命令发送者)通过按钮(具体命令)来遥控电视机(命令接收者),还有计算机键盘上的“功能键”等。命令(Comma...
2020-03-30 09:01:41
658
原创 设计模式-责任链模式
责任链(Chain of Responsibility)模式的定义:为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。责任链模式也叫职责链模式。在责任链模式中,客户只需要将请求发送到责任链上即可,无须关心请求的处理细节和请求的传递过程,所以责任链将请求的发送者和请求的处理...
2020-03-29 09:06:47
675
原创 设计模式—建造者模式(Builder)
title: 设计模式—建造者模式建造者模式(Builder)是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。建造者模式属于对象创建型模式。我们获得一个对象的时候不是直接new这个对象出来,而是对其建造者进行属性设置,然后建造者在根据设置建造出各个对象出来。建造者模式又可以称为生成器模式。模式结构一个标准的建造者模式包...
2020-03-28 09:59:48
743
原创 设计模式-装饰器模式
装饰器(Decorator)模式指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。采用装饰模式扩展对象的功能比采用继承方式更加灵活;可以设计出多个不同的具体装饰类,创造出多个不同行为的组合。但是装饰模式增加了许多子类,如果过度使用会使程序变得很复杂。模式结构装饰器模式的角色如下:顶层接口被装饰者装饰器抽象类装饰器源码导...
2019-10-24 17:06:46
299
原创 设计模式-适配器
适配器模式(Adapter Pattern) :将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。模式结构适配器模式包含如下角色:Target:目标抽象类Adapter:适配器类Adaptee:适配者类Client:客户类源码导读我们都知道spri...
2019-10-21 14:16:46
891
原创 设计模式——单例模式
单例模式 (Singleton Pattern)使用的比较多,比如我们的 controller 和 service 都是单例的,但是其和标准的单例模式是有区别的。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。模式结构...
2019-10-17 08:51:19
1001
原创 设计模式——桥接模式
桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。设想如果要绘制矩形、圆形、椭圆、正方形,我们至少需要4个形状类,但是如果绘制的图形需要具有不同的颜色,如红色、绿色、蓝色等,此时至少有如下两种设计方案:为每一种形状都提供一套各种颜色的版本。...
2019-10-16 14:05:10
839
原创 设计模式日记——组合模式
组合(Composite)模式的定义:有时又叫作部分-整体模式,它是一种将对象组合成树状的层次结构的模式,用来表示“部分-整体”的关系。组合模式使得客户端代码可以一致地处理单个对象和组合对象,无须关心自己处理的是单个对象,还是组合对象,这简化了客户端代码;模式结构顶层抽象:树枝或者树叶的抽象接口树枝:是组合中的叶节点对象,它没有子节点,用于实现抽象构件角色中 声明的公共接口。树叶:是组合...
2019-10-15 11:46:52
830
原创 设计模式笔记-大纲
---title: 设计模式笔记-大纲date: 2019-04-25 09:49:37tags: 设计模式作者:muggle设计模式的分类创建型模式共五种:工厂方法模式抽象工厂模式单例模式建造者模式原型模式结构型模式共七种:适配器模式装饰器模式代理模式外观模式桥接模式组合模式享元模式行为型模式共十一种:策略模式模板方法模式观察者...
2019-10-15 11:26:08
921
原创 设计模式——Factory(三个工厂模式)
简单工厂模式简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。模式结构简单工厂模式包含如下角色:Factory:工厂角色,工厂角色负责实现创建所有实...
2019-10-15 08:30:08
986
原创 设计模式笔记-大纲
---title: 设计模式笔记-大纲date: 2019-04-25 09:49:37tags: 设计模式作者:muggle设计模式的分类创建型模式共五种:工厂方法模式抽象工厂模式单例模式建造者模式原型模式结构型模式共七种:适配器模式装饰器模式代理模式外观模式桥接模式组合模式享元模式行为型模式共十一种:策略模式模板方法模式观察者...
2019-08-30 22:03:03
150
2
原创 冲鸭
事情大概是这样的,我去年整了个公众号,但由于工作的原因疏于打理,公众号都长草了。最近决定奋发图强搞一搞当初创建这个公众号的目的是分享自己平时的开发心得和笔记。俺也是个码农俺也不会说啥煽情的话,反正俺就是输出技术,交流技术。就那句啥 岂曰无衣,与子同袍 ,就这么个意思。大家都是从菜鸟来的,我也走了不少弯路,现在我想搞个地方出来,可以让别人少走点弯路。我希望我写出来的东西你能肯定一句:“有点干货”;...
2019-08-30 14:20:40
836
原创 jvm基础篇一之内存区域
jvm基础篇一之内存区域运行时数据区域程序计数器java虚拟机栈本地方法栈java堆区方法区运行时常量池小结运行时数据区域 想要了解jvm,那对其内存分配管理的学习是必不可少的;java虚拟机在执行java程序的时候会把它所管理的内存划分成若干数据区域。这些区域有着不同的功能、用途、创建/销毁时间。java虚拟机所分配管理的内存区域如图1所示程序计数器 程序计数器是一块比较小的内存...
2019-07-19 15:58:41
93
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人