自定义博客皮肤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)
  • 收藏
  • 关注

原创 源码解释:SpringBoot如果使用yml配置文件配置spring.profiles.active=01被识别成数字导致无法正确配置profile环境

现象描述同样的配置,在 application.properties 解析出来是01,而在application.yml中解析出来是1而如果你使用 --spring.profiles.active=01来配置也会被解析为01,那么会因为01和1不一致导致你的配置失效。spring.profiles.active=01spring: profiles: active: 01原因yml配置文件有类型的概念,会把数字转成INT类型,所以01会被解析成1properties配置文件只会

2021-01-19 17:24:28 1359 1

原创 Docker安装Jenkins

1. 拉取jenkins镜像官方推荐使用的镜像是jenkinsci/blueocean,该镜像包含当前的长期支持 (LTS) 的 Jenkins 版本 (可以生产使用) ,并捆绑了所有 Blue Ocean 插件和功能。docker pull jenkinsci/blueocean2.安装Jenkins镜像需要修改下目录权限, 因为当映射本地数据卷时,/docker/jenkins目录的拥有者为root用户,而容器中jenkins user的uid为1000执行如下命令即可:chown -R

2020-12-07 17:34:36 190

原创 解释器模式

1. 定义是指给定一个语言(表达式),定义它的文法的一种表示,并定义一个解释器,使用该解释器来解释语言中的句子(表达式)2. 代码场景:实现四则运算先输入表达式的形式,比如 a+b+c-d+e, 要求表达式的字母不能重复再分别输入 a ,b, c, d, e 的值最后求出结果abstract class Expression { // key: 表达式参数 例 a,b,c /...

2020-02-25 10:18:30 205

原创 备忘录模式

1. 定义在不破坏封装性的前提下,捕获 一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。2. 代码场景:游戏角色有血量和魔法,在大战 Boss 前保存自身的状态(血量和魔法),当大战 Boss 后血量和魔法下降,从备忘录对象恢复到大战前的状态。// 守护者对象,保存游戏角色的状态class Caretaker { private Memento...

2020-02-25 09:04:14 127

原创 中介者模式

1. 定义用一个 中介对象来封装一系列的对象交互。中介者使各个对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。2. 代码场景:当闹铃响起时,电视开始播放;当电视关闭时,闹铃关闭。class Mediator { private Map<String, Colleague> colleagueMap; private Map<S...

2020-02-25 08:48:01 88

原创 RPC调用流程

1. 流程图2. 具体流程服务消费方调用以本地调用方式调用服务Client Stub 接收到调用后负责将方法、参数等组装成能够网络传输的消息体Client Stub 找到服务地址,并将消息发送给服务端Server Stub 收到消息后进行解码Server Stub 根据解码结果调用本地服务本地服务执行并将结果返回给 Server StubServer Stub 将返回结果打包成...

2020-02-24 17:23:42 324

原创 迭代器模式

1. 定义如果我们的集合元素是用不同的方式实现的,有数组,还有 java 的集合类,或者还有其他方式,当客户端要遍历这些集合元素的时候就要使用多种遍历方式,而且还会暴露元素的内部结构,可以考虑使用迭代器模式解决。2. 代码场景:展示出学校的院系组成,一个学校有多个学院,一个学院有多个系。@Data@AllArgsConstructorclass Department{ pri...

2020-02-22 10:43:17 113

原创 访问者模式

1. 定义封装了一些作用于某种数据结构的各元素的操作,可以在不改变数据结构的前提下定义作用于这些元素的新的操作。2. 代码场景:观众有男生和女生,分别对歌手进行评价,有两个等级 – 好、差abstract class Action{ public abstract void getManConclusion(Man man); public abstract void g...

2020-02-21 22:13:18 74

原创 Docker部署Nginx

1. 复制容器内的配置文件1.创建一个nginx容器docker run -d -p 80:80 --name nginx nginx:1.16.12.复制容器内的配置文件到当前目录docker container cp nginx:/etc/nginx .3.改名并移动到~/docker/nginx/conf目录mkdir -p ~/docker/nginxmv nginx ~...

2020-02-21 10:14:46 104

原创 CentOS7搭建Hadoop集群

1. 前置准备1.准备三台虚拟机 – node-1 (主节点) , node-2, node-32.JDK环境3.修改主机名称hostnamectl set-hostname node-1vi /etc/hosts<!-- hosts末尾添加 -->192.168.25.111 node-1192.168.25.112 node-2192.168.25.113 no...

2020-02-20 19:55:24 198

原创 命令模式

1. 定义我们需要向某些对象发送请求,但不知道请求的接受者是谁,也不知道请求的操作是哪个。只需在程序运行时指定具体请求接受者即可。2. 代码场景:使用遥控器控制电灯,遥控器有开、关、撤销 三个功能,而遥控器无需实现电灯的内部逻辑,通过组合的方式使电灯接收者实现,而电灯的接收者是通过客户端自己指定的。interface Command{ void execute(); v...

2020-02-19 12:31:26 79

原创 JVM常见调优场景

1. JVM常用命令jps:获取当前正在运行的线程。jinfo:可以输出并修改运行时的java 进程的opts。jmap:得到运行java程序的内存分配的详细情况。例如实例个数,大小等。jstat:可以观察到classloader,compiler,gc相关信息。可以时时监控资源和性能。jconsole:java GUI监视工具,可以以图表化的形式显示各种数据。并可通过远程连接监视远程的...

2020-02-15 22:28:26 1029

原创 Java锁

1. Sychronized 和 LockSychronized:非公平,悲观,独享,互斥,可重入的重量级LockReentrantLock:可公平,悲观,独享,互斥,可重入,重量级锁。ReentrantReadWriteLock:可公平,悲观,写独享,读共享,读写,可重入,重量级锁。Sychronized 和 ReentrantLock 的区别synchronized是关键字,...

2020-02-14 16:49:11 86

原创 状态模式

1. 定义当一个 对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类2. 代码场景:一次抽奖有以下几种状态:不能抽奖,能抽奖,抽中发放奖品,奖品发完。那么每次抽奖都会有几率改变状态,图示如下。代码实现interface State { void deductMoney(); boolean raffle(); void dispensePr...

2020-02-13 14:57:27 104

原创 Java集合原理

1. List名称特点get(index)add(E)add(index, E)remove(E)ArrayList高效,线程不安全O(1)O(1)O(n)O(n)LinkedList删除更高效,查询低效O(n)O(1)O(n)O(1)Vector低效,线程安全O(1)O(1)O(n)O(n)ArrayList底层是...

2020-02-09 15:42:48 182

原创 Mysql索引

1. 概念索引是帮助Mysql高效获取数据的排好序的数据结构。索引会影响到where后面的查找和order by后面的排序。2. 索引分类1.单值索引:一个索引只包含 单个列,一个表可以有多个单值索引。2.唯一索引:索引列的值必须唯一,但允许有空值。3.复合索引:即一个索引包含多个列。3. 索引类型和语法3.1 索引类型类型描述PRIMARY KEY主键,索...

2020-02-09 11:18:35 1201

原创 SpringMVC请求流程

1. 流程简要概括遍历HandlerMapping集合得到HandlerExecutionChain,HandlerExecutionChain中包含Handler和Intercepetor (处理器和拦截器)通过HandlerExecutionChain中的Handler获取HandlerAdapter执行前置拦截器 applyPreHandle执行目标方法返回 ModelAndVie...

2020-02-08 19:46:05 125

原创 模板方法模式

1. 定义定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构,就可以重定义该算法的某些特定步骤。2. 代码场景:制作豆浆的流程 添加配料 -> 打浆 -> 打包,通过添加不同的配料,可以制作出不同口味的豆浆。abstract class SoyBeanMilk { public abstract void addMaterial();...

2020-02-08 12:59:05 155

原创 门面模式/外观模式

1. 定义为子系统中一组接口提供一个一致的接口,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用2. 代码场景:电脑开启需要一次开启Cpu、内存、磁盘。class Cpu { public void start() { System.out.println("Cpu start"); } public void shutdow...

2020-02-08 12:13:06 168

原创 享元模式

1. 定义运用共享技术有效地支持大量细粒度的对象2. 代码场景:不通过new的方式在地图上创建多个树@Dataclass Tree { private final String name; private final String data;}@Getterclass TreeNode { private int x; private int y;...

2020-02-08 10:56:02 123

原创 建造者模式

1. 定义一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。2. 代码public class BuilderFactory{ public static void main(String[] args) { Outer outer = new Outer.Builder().withName("Ke...

2020-02-08 10:33:46 84

原创 组合模式

1. 定义创建了对象组的树形结构,将对象组合成树状结构以表示"整体-部分"的层次关系。2. 代码场景:大学下面有多个学院,学院下有多个部门,大学可以操作学院,学院可以操作部门。@Dataabstract class Organization{ private String name; public Organization(String name){ t...

2020-02-08 10:09:46 86

原创 装饰者模式

1. 定义动态的将新功能附加到对象上2. 代码场景:星巴克点咖啡,点一杯咖啡和若干配料,并计算总价abstract class Goods { private String description; private float price = 0.0f; public abstract float cost(); // 价格 public Stri...

2020-02-08 09:35:51 119

原创 桥接模式

1. 定义将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变2. 代码场景:有品牌Vivo、小米,有类型折叠式、滑盖式,一个手机3个操作:打开、关闭、打电话。每个品牌的每种类型操作是不同的,这个时候可以用到桥接模式来解决。interface Brand { void open(); void close(); void call();}class...

2020-02-08 09:21:12 84

原创 简单工厂设计模式

1. 定义简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例2. 代码场景:客户订披萨,只需要告诉工厂披萨的种类,不需要关系披萨的制作过程abstract class Pizza{ String name; public abstract void prepare(); public void bake(){ System.out.prin...

2020-02-08 09:08:32 60

原创 适配器模式

1. 定义将一个类的接口转换成另一个种接口,让原本接口不兼容的类可以兼容。2. 代码场景:手机充电需要5V电压,所以需要将220V电压转换为5V电压public class AdapterDemo { static public class Voltage220 { public int output220(){ int src = 220;...

2020-02-07 17:21:39 79

原创 责任链模式

1. 定义责任链模式通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。2. 代码abstract class Audit { protected Audit audit; protected String name; public Audit(String name){ this....

2020-02-07 17:13:31 76

原创 观察者模式

1. 定义对象之间多对一依赖的一种设计方案,被依赖的对象为 Subject,依赖的对象为 Observer,Subject,通知 Observer 变化。2. 代码场景:孩子醒来哭,父亲,母亲,狗都会做出各自的反应。interface Observer { void actionOnWakeup(WakeupEvent event);}class Dad implements...

2020-02-07 17:07:53 83

原创 单例设计模式

1. 饿汉式public class Singleton1 { public static final Singleton1 INSTANCE = new Singleton1(); private Singleton1(){ }}public enum Singleton{ INSTANCE}2. 懒汉式public class Singleto...

2020-02-07 10:12:14 84

原创 分布式事务

1. 两阶段提交方案/XA方案常见场景:操作多个数据库,并需要满足事务。阶段1:事务管理器询问每一个服务是否可以提交,任何一个服务拒绝,事务管理器全部回滚。阶段2:每个服务都响应可以后执行。实现方式:Spring + JTA说明:规范是每个服务只能操作自己的数据库,如果要操作别的数据库,不允许直连,否则无法治理。如果A系统可以访问B系统数据库,那么就会出现数据乱套现象。如果A系统需要...

2020-02-06 20:48:37 78

原创 Mycat入门

1. 安装下载压缩包之后解压即可2. 修改配置文件2.1 配置文件解释schema.xml:定义逻辑库、表、分片节点等内容。rule.xml:定义分片规则。server.xml:定义用户以及系统相关变量,如端口等。2.2 修改配置文件修改server.xml中user name为mycat<user name="mycat"> <property na...

2020-02-03 17:31:52 138

原创 redis集群

1. 集群之间的通信各个数据库相互通信,保存各个库中槽的编号数据一次命中,直接返回一次未命中,告知具体位置2. 集群配置修改redis.conf# 开启集群cluster-enabled yes# 设置集群配置文件,每个服务器要不一样cluster-config-file node-6379.conf# 设置下线时间cluster-node-timeoout 10000...

2020-02-03 15:21:50 97

原创 redis哨兵模式

1. 哨兵简介1.1 定义哨兵(sentinel)是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的master并将所有slave连接到新的master。1.2 作用监控不断的检查master和slave是否正常运行master存活检测、master与slave运行情况检测通知当被监控的服务器出现故障时,向其他客户端发送通知自动故障转移断...

2020-02-03 14:40:25 76

原创 redis主从复制

1. redis主从架构示意图2. 主从复制简介简介:主从复制即将master中的数据及时有效地复制到slave中。特征:一个master可以有多个slave,一个slave只对应一个master。职责:master:写数据,同步数据到salveslave:读数据3. 主从工作流程3.1 建立连接3.2 同步数据4. 主从复制配置4.1 操作方式方式1:客户端发送...

2020-02-03 13:26:35 163

原创 redis持久化

1. RDB配置文件说明# 15分钟一条记录更改就备份save 900 1# 5分钟10条记录更改就备份save 300 10# 1分钟10000条记录更改就备份save 60 100002. AOF配置文件说明# 是否开启AOF,yes 是, no 否appendonly yes# 持久化策略# 1. always: 同步持久化,每次发生数据变更会立即记录到磁盘...

2020-02-03 09:41:37 80

原创 redis事务

1. 简介redis事务不保证原子性,redis同一个事务中如果有一条命令执行失败,其它命令仍然会被执行,不会回滚。常用命令命令序号描述1DISCARD取消事务,放弃执行事务块内的所有命令2EXEC执行事务块内的命令3MULTI标记一个事务的开始4WATCH key…监视一个或多个key,如果事务执行前这些key被其它命令改动,那么事务...

2020-02-03 09:06:02 117

原创 基于redis的分布式锁

1. 使用setnx设置一个分布式锁利用setnx的返回值特性,有值返回失败,无值返回成功。返回成功,拥有控制权,进行下一步操作返回失败,不具有控制权,排队或等待操作完毕后使用del释放锁# 加锁setnx lock-key value# 释放锁del lock-key2. 实例约定:每次操作num前先通过setnx lock-num value加锁。初始化num...

2020-02-03 08:28:49 86

原创 线程池

1. 有哪几种线程池newFixedThreadPool(固定大小的线程池)newSingleThreadExecutor(单线程线程池)newCachedThreadPool(可缓存线程的线程池)用于并发执行大量短期的小任务。newScheduledThreadPool:用于需要多个后台线程执行周期任务,同时需要限制线程数量的场景。2. 线程池的七大参数corePoolSize...

2020-02-02 16:32:45 79

原创 代理模式

1. 代理类的作用可以通过不修改主业务逻辑的情况下,帮助主业务做功能增强。Spring中的Aop底层就是动态代理。2. 静态代理和动态代理静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。动态代理:在程序运行时,运用反射机制动态创建而成。3. 静态代理实现interface ClothFactory{ void...

2020-02-02 16:14:53 85

原创 IO流

1. 流的分类按操作数据单位不同分为:字节流(8 bit),字符流(16 bit)按数据流的流向不同分为:输入流,输出流按流的角色的不同分为:节点流,处理流IO流体系2. 流的操作2.1 操作步骤File类的实例化流的实例化读写的操作资源的关闭2.2 字符流操作文件(文本文件)读文件public void readFile(){ // 实例化File类...

2020-02-01 22:27:45 109

空空如也

空空如也

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

TA关注的人

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