自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(108)
  • 收藏
  • 关注

原创 设计模式-策略模式

策略模式(Strategy):它定义了算法家族,分别封装起来,让他们之间可以相互转换,此模式让算法的变化,不会影响到使用算法的客户。package com.strategy;public abstract class Strategy { public abstract void algorithmInterface();}package com.strategy;public class ConcreteStrategyA extends St...

2021-08-08 21:54:09 141

原创 设计模式-中介者模式

中介者模式(Mediator),用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。package com.mediator;public abstract class Mediator { public abstract void send(String message, Colleague colleague);}package com.mediator;public ...

2021-08-01 22:07:31 171

原创 设计模式-迭代器模式

迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。 当需要访问一个聚合对象,而且不管这些对象是什么都需要遍历的时候,你就应该考虑用迭代器模式。package com.iterator;public abstract class Iterator { public abstract Object first(); public abstract Object next(); public abstract ...

2021-07-29 23:32:11 182

原创 设计模式-命令模式

命令模式(Command),将一个请求封装为一个对象,从而使你不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。package com.command;public class Receiver { public void Action() { System.out.println("执行请求!"); }}package com.command;public abstract class Command { Receiver rec...

2021-07-24 15:35:24 150

原创 设计模式-代理模式

代理模式(proxy):为其他对象提供一种代理以控制对这个对象的访问。代理分为静态代理和动态代理,动态代理还可以分为JDK代理和cglib代理。package com.proxy;public abstract class Subject { public abstract void request();}package com.proxy;public class RealSubject extends Subject { @Overrid...

2021-07-18 16:01:19 103

原创 设计模式-享元模式

享元模式:运用共享技术有效地支持大量细粒度的对象。package com.flyweight;public abstract class Flyweight { public abstract void operation(int extrinsicstate);}package com.flyweight;public class ConcreteFlyweight extends Flyweight{ @Override public ...

2021-07-12 23:57:20 139

原创 设计模式-外观模式

外观模式(Facade):为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。package com.facade;public class SubSustemOne { public void MethodOne() { System.out.println("子系统方法一"); }}package com.facade;public class SubSustemTwo { public void Met...

2021-07-11 19:43:39 97

原创 设计模式-组合模式

组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。package com.Composite;public abstract class Component { public String name; public Component(String name) { this.name = name; } public abstract void add(Component c); public ab...

2021-07-11 12:56:41 192

原创 设计模式-装饰模式

装饰模式(Decorator):动态地给一个对象添加一些额外的职责,就增加功能来说,装饰者比生成子类更灵活。package com.decorator;public abstract class Component { public abstract void operation();}package com.decorator;public class ConcreteComponent extends Component{ @Overri...

2021-07-10 22:23:03 116

原创 设计模式-桥接模式

桥接模式:实现系统可能有多个角度分类,每一种分类都有可能变化,那么就把这种多角度分离独立让他们独立变化,减少它们之间的耦合。实现了抽象和实现部分的分离,从而极大的提供了系统的灵活性,让抽象部分和实现部分独立开来,这有助于系统进行分层设计,从而产生更好的结构化系统。对于系统的高层部分,只需要知道抽象部分和实现部分的接口就可以了,其他的都分由具体业务来完成。桥接模式替代多层继承方案,可以减少子类,降低系统的管理和维护成本。桥接模式的引入增加了系统的理解和设计难度,由于聚合关联关系建立在抽象层,要...

2021-07-05 22:33:47 145

原创 设计模式-适配器模式

在系统的数据和行为都正确,但接口不符时,我们应该考虑用适配器模式,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。适配器的三种实现方式: 1、类适配器。 2、对象适配器。 3、接口适配器。准备环境代码package com.adapter;public class PowerSupply { protected int outputVol...

2021-07-04 15:49:03 124

原创 设计模式-建造者模式

作用:用于构建复杂对象,使用者不需要知道构建对象的过程和细节。优点: 1、封装性好,构建和表示分离。 2、扩展性好,各个具体的建造者相互独立,有利于系统的解耦。 3、使用者不需要知道构建的过程和细节。缺点: 1、如果产品内部发生变化,建造者也需要同步修改,后期维护成本大。主要角色: 1、产品(Product):包含多个组成部件的复杂对象,由具体建造者来创建其各个零部件。 2、抽象建造者(B...

2021-07-03 17:20:00 117

原创 设计模式-原型模式

名称:原型设计模式作用:创建内部属性相同的对象种类: 1:浅拷贝:内部的值类型和字符串类型都可以复制成功 方式:实现Cloneable接口,实现clone方法 2:深拷贝:除了内部的值类型和字符串类型,引用类型也能复制成功 方式: 1、实现Cloneable接口,实现clone方法 2、序列化浅拷贝(实现Cloneable接口,实现clone方法)package com.prototype;/*...

2021-06-29 22:05:19 145

原创 设计模式-工厂模式

作用:创建同一种类的对象。优点:解耦。1:简单工程模式package com.factory.simple;/** * 抽象类,表示鸟这一类别。 * @author zhaoyu * */public abstract class Bird { private String name; public String getName() { return name; } public void setName(String name) { this.name = nam

2021-06-24 23:14:21 117

原创 SpringBoot 16 定时任务

1:Scheduled 定时任务器scheduled定时任务器:是Spring3.0以后自带的一个定时任务器。2:修改pom文件添加依赖<!-- 添加 Scheduled 坐标 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> </

2021-04-26 23:39:43 123

原创 SpringBoot 15 ehcache

1:修改pom.xml文件,添加依赖<!-- Spring Boot 缓存支持启动器 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency>

2021-04-26 00:15:55 145

原创 Springboot 14 监控中心

1:什么是监控中心针对微服务服务器监控,服务器内存变化(堆内存、线程、日志管理等)、检测服务配置连接地址是否可用(模拟访问、懒加载)、统计Spring容器中bean的数量、统计接口。2:两种监控中心模式1、Actuator:没有界面,返回json格式。2、AdminUI:底层使用Actuator监控应用,实现可视化界面。3:实例1(Actuator)...

2021-04-21 22:06:15 189

原创 SpringBoot 13 热部署

1:原理采用重启机制,因为SpringMVC需要重新装配。2:修改pom.xml文件,添加依赖<!--添加热部署--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <op

2021-04-13 00:19:46 125

原创 SpringBoot 12 mybatis分页插件

1:原理底层修改SQL语句。2:修改pom.xml文件,添加依赖<!-- 整合mybatis分页插件 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <versi

2021-04-12 00:11:46 167

原创 SpringBoot 11 jta+atomikos解决分布式事务

1:JTAJTA(java Transaction API)是JavaEE 13 个开发规范之一。java 事务API,允许应用程序执行分布式事务处理——在两个或多个网络计算机资源上访问并且更新数据。JDBC驱动程序的JTA支持极大地增强了数据访问能力。事务最简单最直接的目的就是保证数据的有效性,数据的一致性。2:atomikosAtomikos TransactionsEssentials是实现JTA事务管理的第三方管理工具,是一个为Java平台提供增值服务的并且开源类事务管理器。3:..

2021-04-11 22:04:19 432

原创 SpringBoot10 多数据源(分包)

1:配置application.ymlserver: port: 8080spring: profiles: dev datasource: ###datasource1 datasourceipp1: jdbc-url: jdbc:mysql://localhost:3306/ipp1?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useS

2021-04-09 00:18:59 233

原创 SpringBoot09 整合mybatis

1:修改pom.xml文件,添加依赖。 <!-- 整合mybatis --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependenc

2021-04-09 00:07:33 96

原创 SpringBoot 08 @Value+区分配置文件

1:@Value获取配置文件中的值。package com.zhaoy.controller;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.web.bind.annotation.RequestMapping;import org.spring

2021-04-05 00:34:49 332 3

原创 SpringBoot07 方法异步执行

1:@EnableAsync开启异步调用,扫描同级包,看同级包内的文件的方法上是否有@Async注解。package com.zhaoy;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.scheduling.annotation.EnableAsync

2021-04-04 23:49:57 94

原创 SpringBoot06 整合lombok

1:下载插件https://projectlombok.org/download.html2:安装插件使用命令行切换到eclipse根目录下,运行 java -jar lombik.jar3:pom.xml

2021-04-02 00:02:00 99

原创 SpringBoot05 利用AOP记录日志

1:pom.xml<!-- 整合AOP --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency>2:@Aspect当前类标识为一个切面供容器读取。...

2021-03-31 23:55:27 131

原创 SpringBoot04 整合log4j

1:整合log4jpom: <!-- 整合log4j --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j</artifactId> <version>1.3.8.RELEASE<

2021-03-31 23:39:07 115

原创 SpringBoot03 全局捕获异常

新建捕获异常类,使用@ControllerAdvice注解扫描包,使用@ExceptionHandler注解捕获指定类型的异常。1:@ControllerAdvice扫描需要捕获异常的包,比如:@ControllerAdvice(basePackages = "com.zhaoy.controller")。2:@ExceptionHandler指定捕获异常的类型,比如:@ExceptionHandler(RuntimeException.class)3:实例** * 全局捕获异常

2021-03-30 23:48:13 146

原创 SpringBoot 02

1:@RestController表示该类中所有方法返回json格式 @Controller+@ResponseBody。是Spring4.0提供的。2:Springboot启动原理SpringMVC注解方式启动,内置HTTP服务器(默认Tomcat)。3:@EnableAutoConfiguration作用:扫包范围,默认在当前类里。4:@ComponentScan配置扫包范围,如:@ComponentScan("com.zhaoy.controller")5:@Sprin

2021-03-30 23:18:04 112

原创 SpringBoot 01

1:为什么要用到SpringBoot可以解决Jar包冲突问题、传统项目框架整合起来太繁琐(SSM)。2:什么是SpringBootSpringBoot是一个快速开发框架,能够帮助我们快速整个第三方框架(Maven依赖关系,使用Maven继承机制实现),内置嵌入HTTP服务器(Tomcat),最终以Java应用程序进行执行。3:SpringBoot与SpringCloud关系SpringBoot是一个快速开发框架,完全注解化。SpringCloud是一套目前最完整微服务解决框架,功能非常强

2021-03-24 22:46:37 124

原创 Cannot assign requested address 的问题

日志报错信息:java.net.connectException: Cannot assign requested address (connect failed)可能原因:客户端频繁的连服务器,由于每次连接都在很短的时间内结束,导致很多的TIME_WAIT,以至于用光了可用的端口号,所以新的连接没办法绑定端口,因此就会报出异常说无法分配请求地址。查看连接列表命令:netstat-a|greptime_wait查看连接数命令:netstat -ant|grep -i time_wait |w..

2020-08-10 23:42:14 2514 1

原创 深入浅出WPF——资源

WPF不但支持程序级的传统资源,同时还推出了独具特色的对象级资源,每个界面元素都可以携带自己的资源并可被自己的子级元素共享。1:WPF对象级资源的定义和查找每个WPF的界面元素都具有一个名为Resources的属性,这个属性继承自FrameworkElement类,其类型为ResourcesDictionary。ResourcesDictionary能够以键值对的形式存储资源,当需要使用某...

2020-04-04 21:37:59 236

原创 深入浅出WPF——命令

事件的作用是发布、传播一些消息,消息送达接收者,事件的使命也就完成了,至于如何响应事件送来的消息事件并不做规定,每个接收者可以使用自己的行为来响应事件。也就是说,事件不具有约束力。命令与事件的区别就在于命令具有约束力。1:命令系统的基本元素与关系...

2020-04-01 22:56:51 591

原创 深入浅出WPF笔记——事件

就像属性系统在WPF中得到升级、进化为依赖属性一样,事件系统在WPF中也被升级——进化为路由事件(Routed Event),并在其基础上衍生出命令传递机制。1:近观WPF的树形结构从Windows API开发到传统的.NET开发,消息的传递都是直接模式的,即消息直接由发送者交给接收者。WPF把这种直接消息模型升级为可传递的消息模型——前面我们已经知道WPF的UI是由布局组件和控件构成的树...

2020-03-28 21:33:42 311

原创 深入浅出WPF笔记——属性

1:属性(Property)的来龙去脉程序的本质就是“数据+算法”,或者说是用算法来处理数据以得到输出结果。在程序中,数据表现为各式各样的变量,算法则表现为各种各样的函数。即使是到了面向对象时代有了类等数据结构的出现,这一本质仍然没有改变——类的作用只是把散落在程序中的变量和函数进行归档封装并控制对它们的访问而已。被封装在类里的变量称为字段(Field),它表示的是类或实例的状态被封装在类里的...

2020-03-22 17:27:29 367

原创 深入浅出WPF笔记——Binding

1:Data Binding在WPF中的地位程序的本质是数据加算法。数据会在存储、逻辑和展示三个层流通,所以站在数据的角度上来看,这三层都很重要。但算法在程序中的分布就不均匀了,对于一个三层结构的程序来说,算法一般分布在这几处:(1)数据库内部。(2)读取和写回数据。(3)业务逻辑。(4)数据展示。(5)页面与逻辑的交互。1和2两个部分的算法一般都非常稳定,不会轻易去改...

2020-03-22 00:13:46 753

原创 深入浅出WPF笔记——控件与布局

1:控件到底是什么(1)布局控件:可以容纳多个控件或嵌套其他布局空间,用于在UI上组织和排列的控件、Grid、StackPanel、DockPanel等控件都属此类,它们拥有共同的父类Panel。(2)内容控件:只能容纳一个其他控件或布局控件作为它的内容。Window、Button等控件属于此类,因为只能容纳一个控件作为其内容,所以经常需要布局空间来规划其内容。它们的共同父类是Conten...

2020-03-08 22:29:28 502

原创 CentOS 安装elasticsearch

1:向虚拟机中导入安装包2:给安装包赋予权限3:安装4:配置elasticsearch.yml文件,使ES可以通过IP地址访问。5:在/etc/init.d/下使用./elasticsearch start命令启动ES。6:查看ES状态,发现没有正常运行。7:查看elasticsearch日志8:更改/etc/security/lomits....

2020-03-07 21:52:59 195

原创 CentOS安装JDK

1:向虚拟机中导入安装包2:向安装包添加权限3:安装JDK4:验证

2020-03-07 21:30:07 159

原创 CentOS配置静态IP

1:编辑网卡配置文件2:添加配置信息3:重启网络4:查看网址5:验证

2020-03-07 21:24:27 114

空空如也

空空如也

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

TA关注的人

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