自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 结构型模式-桥接模式

桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。我们通过下面的实例来演示桥接模式(Bridge Pattern)的用法。其中,可以使用相同的抽象类方法但是不同的桥接实现类,来画出不同颜色的圆。...

2021-09-17 16:21:27 123

原创 结构型模式-适配器模式

结构型模式 是从程序结构上实现松耦合,从而可以扩大整体的类结构。适配器模式 是将一个接口转换为客户需要的另外一个接口。模式中的角色目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。 需要适配的类(Adaptee):需要适配的类或适配者类。 适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口。...

2021-09-17 10:24:58 120

原创 创建型模式-单例模式

单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。注意:1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。...

2021-09-13 17:30:47 167

原创 创建型模式-原型模式(克隆)

浅克隆是指拷贝对象时仅仅拷贝对象本身(包括对象中的基本变量),而不拷贝对象包含的引用指向的对象。深克隆不仅拷贝对象本身,而且拷贝对象包含的引用指向的所有对象。//深克隆public Object clone() throws CloneNotSupportedException { Teacher teacher = (Teacher)super.clone(); teacher.setStudent((Student)teacher.getStudent().clone()); retu

2021-09-13 16:06:10 89

原创 创建型模式-建造者模式

创建者模式又叫建造者模式,是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。创建者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加以抽象,通过子类继承或者重载的方式,动态的创建具有复合属性的对象。作用:在用户不知道对象的建造过程和细节的情况下就可以直接创建复杂的对象。适用场景:隔离复杂对象的创建和使用,相同的方法,不同执行顺序,产生不同事件结果。 多个部件都可以装配到一个对象中,但产生的运行结果不相同。 产品类非常复杂或者产品类因为调用顺序不同而产生不同

2021-09-13 11:13:00 74

原创 创建型模式-工厂模式、抽象工厂模式

作用:实现了创建者和调用者的分离,实例化对象时 不使用 new 用工厂方法代替。 将选择实现类,创建对象统一管理和控制。从而将调用者跟我们的实现类解耦。分类:简单工厂模式 工厂方法模式 抽象工厂模式满足原则:开闭原则、依赖倒转原则、迪米特法则。...

2021-09-09 13:34:30 51

原创 JAVA-设计模式

2021-09-08 14:16:59 76

原创 JAVA-容器 TreeMap

TreeMap 是一个能比较元素大小的Map集合,会对传入的 key 进行了大小排序。其中,可以使用元素的自然顺序,也可以使用集合中自定义的比较器来进行排序。

2021-09-08 10:58:43 102

原创 JAVA-容器 HashMap

HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。HashMap 从结构实现来讲 是数组+链表+红黑树(JDK1.8增加了红黑树部分)实现的。HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。HashMap 是无序的,即不会记录插入的顺序。import java.util.HashMap;Map<K,V> map = new HashMap.

2021-09-08 10:33:57 75

原创 JAVA-容器 TreeSet

TreeSet 是一个有序的集合,它的作用是提供有序的 Set 集合。TreeSet 其实底层是通过 TreeMap 实现的。

2021-09-06 14:48:54 117

原创 JAVA-容器 HashSet

HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。HashSet 允许有 null 值。HashSet 是无序的,即不会记录插入的顺序。HashSet 不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的。 您必须在多线程访问时显式同步对 HashSet 的并发访问。//E: 泛型数据类型,用于设置 objectName 的数据类型,只能为引用数据类型。Set<E> sites = new HashSet<

2021-09-06 10:18:03 86

原创 JAVA-容器 LinkedList

链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的地址。链表可分为单向链表和双向链表。一个单向链表包含两个值: 当前节点的值和一个指向下一个节点的链接。一个双向链表有三个整数值: 数值、向后的节点链接、向前的节点链接。Java LinkedList(链表) 类似于 ArrayList,是一种常用的数据容器。与 ArrayList 相比,LinkedList 的增加和删除对操作效率更高,而查找和修

2021-09-03 10:28:10 187

原创 JAVA-容器 Vector

Vector 类实现了一个动态数组。和 ArrayList 很相似,但是两者是不同的:Vector 是同步访问的。 Vector 包含了许多传统的方法,这些方法不属于集合框架。Vector 主要用在事先不知道数组的大小,或者只是需要一个可以改变大小的数组的情况。...

2021-09-03 10:16:09 417

原创 JAVA-容器-ArrayList

ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。ArrayList 继承了 AbstractList ,并实现了 List 接口。

2021-09-01 16:34:48 125

原创 Spring Cloud zuul

Zuul 是spring cloud中的微服务网关。网关: 是一个网络整体系统中的前置门户入口。请求首先通过网关,进行路径的路由,定位到具体的服务节点上。Zuul 是一个微服务网关,首先是一个微服务。也是会在 Eureka 注册中心中进行服务的注册和发现。也是一个网关,请求应该通过Zuul来进行路由。...

2021-08-17 17:00:01 84

原创 Spring Cloud gateway

路由(Route):路由是构建网关的基本模块,他由ID、目标URI,一系列断言和过虑器组成,如果断言为true则匹配该路由。断言(Predicate):开发人员可以匹配HTTP请求中的所有内容,如果请求与断言相匹配则进行路由。过虑(Filter):使用路由可以在请求被路由前或路由后进行修改请求返回。SecurityConfigpackage com.springbootgatway.config;import org.springframework.context.anno

2021-08-16 16:11:55 199

原创 SpringCloud Hystrix Dashboard

server 端pom <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId> <version>2.2.9.RELEASE</ver

2021-08-09 17:25:58 118

原创 SpringCloud Hystrix

Hystrix是由Netflix开源的一个延迟和容错库,用于隔离访问远程系统、服务或者第三方库,防止级联失败,从而提升系统的可用性、容错性与局部应用的弹性,是一个实现了超时机制和断路器模式的工具类库。服务降级(fallback):当下游的服务因为某种原因响应过慢,下游服务主动停掉一些不太重要的业务,释放出服务器资源,增加响应速度。 当下游的服务因为某种原因不可用,上游主动调用本地的一些降级逻辑,避免卡顿,迅速返回给用户。 服务降级有很多种降级方式!如开关降级、限流降级、熔断降级,服务熔断属于降级

2021-08-06 15:31:25 80

原创 SpringCloud OpenFeign

Feign是一个声明式 Web 服务客户端,要使用 Feign 创建一个接口并对其进行注释。它具有可插入的注释支持,Feign 还支持可插拔的编码器和解码器。Spring Cloud 集成了 Eureka、Spring Cloud CircuitBreaker 和 Spring Cloud LoadBalancer,在使用 Feign 时提供负载均衡的 http 客户端。Feign 和OpenFegin 区别:Feign是Spring Cloud组件中一个轻量级RESTful的HTTP服务客户端,.

2021-08-05 16:54:08 244

原创 Spring Cloud Ribbon 及 Loadbalancer

Ribbon 提供了一套微服务负载均衡的解决方案。目前业界主流的负载均衡方案可分成两类:第一类:集中式负载均衡, 即在 consumer 和 provider 之间使用独立的负载均衡设施(可以是硬件,如 F5, 也可以是软件,如 nginx), 由该设施负责把 访问请求 通过某种策略转发至 provider; 第二类:进程内负载均衡,将负载均衡逻辑集成到 consumer,consumer 从服务注册中心获知有哪些地址可用,然后自己再从这些地址中选择出一个合适的 provider。负载均衡策略,

2021-08-05 10:55:39 1713

转载 Spring Security session与token

一、session的状态保持及弊端当用户第一次通过浏览器使用用户名和密码访问服务器时,服务器会验证用户数据,验证成功后在服务器端写入session数据,向客户端浏览器返回sessionid,浏览器将sessionid保存在cookie中,当用户再次访问服务器时,会携带sessionid,服务器会拿着sessionid从服务器获取session数据,然后进行用户信息查询,查询到,就会将查询到的用户信息返回,从而实现状态保持。弊端:1、服务器压力增大通常session是存储在内存中的,每个用

2021-08-03 16:58:37 1921

原创 Spring Boot Admin 增加账号密码(security)

admin server 端pom文件增加密码依赖 <!--security密码--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </depende.

2021-08-03 16:05:01 3245 1

原创 SpringBoot Admin

Spring Boot Admin 是一个管理和监控Spring Boot 应用程序的开源软件非 Spring Cloud Discovery 型配置server端pom.xml引入 server 端依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifa.

2021-08-03 10:23:00 326

转载 SpringCloud Eureka 自我保护

默认情况下,如果Eureka Server在一定时间内(默认90秒)没有接收到某个微服务实例的心跳,Eureka Server将会移除该实例。但是短时间内丢失大量的实例心跳的话,这时候eureka server会开启自我保护机制,所有的注册服务实例都将被保护起来,不被剔除。自我保护机制的工作机制是:如果在15分钟内超过85%的客户端节点都没有正常的心跳,那么Eureka就认为客户端与注册中心出现了网络故障,Eureka Server自动进入自我保护机制,此时会出现以下几种情况: Eureka

2021-08-02 14:50:50 75

原创 SpringCloud Eureka 设置账号密码(security )

Eureka server 导入 security 包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>Eureka server 设置账号密码.

2021-08-02 14:19:57 5393

转载 CAP原则

CAP原则又称CAP定理,指的是在一个分布式系统中一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)。可用性(A):保证每个请求不管成功或者失败都有响应。分区容忍性(P):系统中任意信息的丢失或失败不会影响系统的继续运作。CAP三个特性只

2021-08-02 10:41:42 440

原创 SpringCloud Eureka (Netflix)

简介Euraka 用于服务注册和发现,是Netflix中的一个开源框架。它和 zookeeper、Consul一样,都是用于服务注册管理和服务依赖管理。Euraka 遵循着CAP理论中的A(可用性) P(分区容错性)。Eureka中分为eureka server和eureka client。其中eureka server是作为服务的注册与发现中心。eureka client既可以作为服务的生产者,又可以作为服务的消费者。注册中心能解决什么样的问题:服务注册后,如何被及时发现..

2021-08-02 10:33:51 203

原创 org.springframework.boot:spring-boot-maven-plugin:‘ not found

IDEA新建的项目报错:解决:1:首先确定了Maven没有问题2:plugin 的版本正常是SpringBoot的父项目维护的,正常不应该出现这种情况,看了父项目的版本也是和SpringBoot版本一样的3:怀疑是同一个工作空间下的SpringBoot版本要一样???,于是把SpringBoot的版本改成了2.5.2,但是还没好使4:然后我重启了一下Idea就好了!!5:然后我改回2.5.3也不报错了!!6:难道是Idea有问题?...

2021-07-29 16:50:30 431

原创 微服务相关组件

2021-07-29 13:36:23 88

原创 Spring Boot slf4j+logback

日志门面(抽象层) 日志实现 JCL SLF4j Jboss-logging JUL log4j log4j2 logback

2021-07-28 10:03:25 1148

原创 Spring Boot 拦截器

案例WebConfigpackage com.springbootw2.config;import com.springbootw2.interceptor.TimeInterceptor;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.InterceptorRegistry;import org.

2021-07-27 15:34:20 72

原创 Spring boot RestTemplate

简介传统情况下在java代码里访问restful服务,一般使用Apache的HttpClient。不过此种方法使用起来太过繁琐。spring提供了一种简单便捷的模板类来进行操作,这就是RestTemplateRestTemplate 是从 Spring3.0 开始支持的一个 HTTP 请求工具。HTTP请求的方法:GET:通过请求URI得到资源 POST:用于添加新的内容 PUT:用于修改某个内容,若不存在则添加 DELETE:删除某个内容 OPTIO...

2021-07-27 14:18:09 340

原创 Spring Boot 热部署

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional></dependency>勾选自动编译“Shift+Ctrl+Alt+/” ,选择 “Regis.

2021-07-21 10:16:58 40

翻译 Spring Boot Validation

@AssertFalse 可以为null,如果不为null的话必须为false @AssertTrue 可以为null,如果不为null的话必须为true @DecimalMax 设置不能超过最大值 @DecimalMin 设置不能超过最小值 @Digits 设置必须是数字且数字整数的位数和小数的位数必须在指定范...

2021-07-20 16:01:09 69

原创 Spring Boot 属性注入

@Value:属性注入@ConfigurationProperties(prefix = "user") 绑定示例controllerpackage com.ludb.springbootc.controller;import com.ludb.springbootc.vo.User;import com.ludb.springbootc.vo.User2;import org.springframework.beans.factory.annotation.Auto.

2021-07-20 15:29:08 75

原创 Spring Boot ProFiles

多环境配置文件名需要使用application-{profile}.properties的格式。使用spring.profiles.active激活哪个配置。排序规则:先按照位置读取优先级,在同一位置ProFiles优先级最高,同一位置中如果没有ProFiles 则顺序为:yml--yaml--properties案例#application.yaml文件server: port: 8080 servlet: context-path: /hellospr.

2021-07-20 10:15:02 59

原创 Spring Boot yaml格式及优先级

yaml基本语法大小写敏感 使用缩进表示层级关系 缩进不允许使用tab,只允许空格 缩进的空格数不重要,只要相同层级的元素左对齐即可 '#'表示注释数据类型YAML 支持以下几种数据类型:对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary) 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list) 纯量(scalars):单个的、不可再分的值示例server: port: 8088#对象

2021-07-19 17:31:24 2091

原创 Spring Boot 父子项目

项目创建新建一个父项目新建一个子项目项目结构(红色是没和git关联)测试代码段Hello.javapackage com.ludb.springbootc.controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestControl.

2021-07-19 14:24:39 556

原创 Spring Boot 快速搭建

创建maven项目项目构成XML<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 ht

2021-07-18 19:54:55 131 1

原创 Spring Boot 版本及说明介绍

CURRENT:最新版本(但不一定稳定) GA:General Availability,正式发布的版本,官方推荐使用该版本,国外很多项目都是使用GA来表示正式发布版本的 SNAPSHOT:快照版,可以稳定使用,且该版本会一直进行小量的优化和改进 PRE:预览版,主要是用来内部开发人员和测试人员测试使用,因此不建议使用 RC:Release,该版本已经相当成熟了,基本上不存在导致错误的BUG,与即将发行的正式版相差无几。日常使用中通常选择GA版版本稳定性排序:PRE&lt...

2021-07-18 17:37:19 8146

空空如也

空空如也

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

TA关注的人

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