- 博客(56)
- 收藏
- 关注
原创 装饰器模式【常用】
装饰器模式【常用】 Demo案例-咖啡订单项目 咖啡种类/单品咖啡:Espresso(意大利浓咖啡)、ShortBlack、LongBlack(美式咖啡)、Decaf(无因咖啡) 调料:Milk、Soy(豆浆)、Chocolate 要求在扩展新的咖啡种类时,具有良好的扩展性、改动方便、维护方便 使用 OO 的来计算不同种类咖啡的费用: 客户可以点单品咖啡,也可以单品咖啡+调料组合。 方案一 分析 Drink 是一个抽象类,表示饮料 des 就是对咖啡的描述, 比如咖啡的名字 cost()
2021-08-20 12:54:30
429
原创 UML类图
UML类图 就是定义了一些符号,来描述软件系统分析和设计过程的工具。 它描述了软件模型中各个元素之间的关系,比如类,接口,实现,泛化,依赖,组合,聚合等 用于描述系统中的类***(对象)本身的组成和类(对象)***之间的各种静态关系。 类之间的关系:依赖、泛化(继承)、实现、关联、聚合与组合。 1、依赖关系(Dependence) 小结: 类中用到了对方 如果是类的成员属性 如果是方法的返回类型 是方法接收的参数类型 方法中使用到 public class PersonServiceBe
2021-08-19 00:50:53
416
原创 桥接模式【常用】
桥接模式【常用】 Demo案例-手机操作问题 需求 现在对不同手机类型的不同品牌实现操作编程(比如:开机、关机、上网,打电话等),如图: 传统方案解决手机操作问题分析 传统方法对应的类图 扩展性问题(类爆炸),如果我们再增加手机的样式(旋转式),就需要增加各个品牌手机的类,同样如果我们增加一个手机品牌,也要在各个手机样式类下增加。 违反了单一职责原则,当我们增加手机样式时,要同时增加所有品牌的手机,这样增加了代码维护成本. 解决方案-使用桥接模式 Bridge 模式基于类的最小设计原则,通过使用封装
2021-08-19 00:48:21
511
原创 适配器模式
适配器模式概述 基本介绍 适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper) 适配器模式属于结构型模式 主要分为三类:类适配器模式、对象适配器模式、接口适配器模式 工作原理 适配器模式:将一个类的接口转换成另一种接口.让原本接口不兼容的类可以兼容从用户的角度看不到被适配者,是解耦的 用户调用适配器转化出来的目标接口方法,适配器再调用被适配者的
2021-08-18 17:06:35
459
原创 建造者模式【常用】
建造者模式【常用】 1. 建造者模式基本介绍 建造者模式(Builder Pattern)又叫生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。 建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。 2. 为什么需要建造者模式? 在平时的开发中,创建一个对象最常用的方式是,使用 new 关键字调用类的构造函数来完成。我的问题
2021-08-18 00:54:30
260
原创 简单工厂模式+工厂方法模式+抽象工厂模式
创建型模式 这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。 1. 工厂模式定义 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。 工厂顾名思义就是创建产品,根据产品是具体产品还是具体工厂可
2021-08-17 15:50:12
484
原创 单例模式(五种实现)
单例模式 一、什么是单例模式 单例模式是一种常用的软件设计模式,其定义是单例对象的类只能允许一个实例存在。 许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。 单例的实现主要是通过以下两个步骤: 将该类的构造方法定义为私有方法,这样其他处的代码就无法通过调用该类的构造方法来实例化该类的对
2021-08-17 11:28:35
6959
1
转载 SpringCloud第八章OpenFeign服务接口调用
八、OpenFeign服务接口调用 1、概述 1.1、OpenFeign是什么 官网解释: https://cloud.spring.io/spring-cloud-static/Hoxton.SR1/reference/htmlsingle/#spring-cloud-openfeign Feign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单。 它的使用方法是定义一个服务接口然后在上面添加注解。Feign也支持可拔插式的编码器和解码器。Spring C
2021-08-13 10:02:04
188
转载 SpringCloud第七章Ribbon负载均衡服务调用
SpringCloud第七章Ribbon负载均衡服务调用 七、Ribbon负载均衡服务调用 1、概述 是什么 Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。 简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供**客户端的软件负载均衡算法和服务调用。**Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load Balancer(简称LB)后面所有的机器,Ribbon会自动的帮助你基于
2021-08-12 16:00:54
220
转载 SpringCloud第六章Consul服务注册与发现
SpringCloud第六章Consul服务注册与发现 六、Consul服务注册与发现 1、Consul简介 1.1、是什么 https://www.consul.io/intro/index.html [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z1ASUTjV-1628750641870) Consul 是一套开源的分布式服务发现和配置管理系统,由 HashiCorp 公司用 Go 语言开发 提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可
2021-08-12 14:47:23
279
转载 SpringCloud第三章(下)微服务工程构建
SpringCloud第三章(下)微服务工程构建 2、Rest微服务工程构建 2.1、构建步骤 2.1.1、cloud-provider-payment8001微服务提供者支付Module模块 建cloud-provider-payment8001 创建完成后请回到父工程查看pom文件变化 改POM <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"
2021-08-12 12:48:25
160
转载 SpringCloud第三章 微服务架构编码构建
SpringCloud第三章 微服务架构编码构建 约定 > 配置 > 编码 1、IDEA新建project工作空间 新建Empty Project,类似工作空间 新project设置 project都选择8 module点击+号,新建一个maven模块 新Module的设置 由于第一个是pom统一工程,不选择模板create from archetype G:com.likun.springcloud A:microservicecloud V:1.0-SNAPSH
2021-08-12 11:15:45
167
原创 1.单链表反转详解(4种算法实现)
单链表反转详解(4种算法实现) 输入一个链表,反转链表后,输出新链表的表头。 示例1 输入: {1,2,3} 复制 返回值: {3,2,1} 这里给出四种解法 解法一: 思路就是最简单的思路,从头到尾遍历链表每个元素,然后修改指针域,前后一个指针域指向前一个元素,由于这里遍历过程中需要用到三个量,当前节点的前驱节点(用于把当前节点的后继赋给它),当前节点,后继节点(用于遍历链表用到,没有这个变量的话,前序节点后继修改后,原链表已经断开了) public class Solution { publ
2021-08-04 23:29:58
1371
转载 Zookeeper服务注册与发现
五、Zookeeper服务注册与发现 1、Eureka停止更新了你怎么办 https://github.com/Netflix/eureka/wiki
2021-06-18 21:54:58
277
转载 SpringCloud组件--Eureka
SpringCloud组件--Eureka 完整笔记 一、Eureka基础知识 1.1、什么是服务治理 ? 1.2、 什么是服务注册与发现? 1.3、Eureka两组件:Eureka Server和Eureka Client 二、单机Eureka构建步骤 2.1、IDEA生成eurekaServer端服务注册中心类似物业公司 2.2、EurekaClient端cloud-provider-payment8001 2.
2021-06-18 19:35:39
179
原创 Springboot 2.2.X 和 SpringCloud H 版总述
一、Springboot 2.2.X 和 SpringCloud H 版
2021-06-18 19:03:44
369
原创 SpringCloud Config 分布式配置中心
SpringCloud Config 分布式配置中心 分布式系统面临的配置问题:微服务意味着将单体应用拆分成一个个自服务,这些服务都是要相应的配置信息才能运行,随着系统内微服务数量越来越多,配置信息也不断地增多,所以一套集中式的、动态的配置管理设施是必不可少的。 概述 SpringCloud Config是一个提供外部集中式配置管理的设施,配置服务器为各种不同的额微服务应用提供了一个中心化的外部配置 SpringCloud Config分为客户端和服务端两部分 服务端:分布式配置中心,是一个独立的
2021-06-10 14:10:00
174
原创 Zuul路由网关
Zuul路由网关 概述 代理:Zuul提供外部的请求转发到具体的微服务实例中的服务 路由:Zuul可以对外部访问实现统一的入口 过滤:Zuul可以对外部访问进行干预,如请求校验、服务聚合等 Zuul需要配合Eureka使用,需要在Eureka中注册并获得其他微服务的信息 理解:Zuul就像大楼的保安,可以请他找人(代理),找的人在外面叫什么名字(路由),准不准你进楼(过滤)。因为保安属于物业公司,所以保安要在物业公司注册,所获得的信息也来源于物业公司(与Eur
2021-06-10 14:09:07
189
原创 Hystrix断路器
Hystrix断路器 分布式系统面临的问题 扇出 多个微服务互相调用的时候,如果A调用B、C,而B、C又继续调用其他微服务,这就是扇出(像一把扇子一样慢慢打开。 服务雪崩 删除过程中,如果某一个环节的服务出现故障或连接超时,就会导致前面的服务占用越来越多的资源,进而引起系统崩溃,就是“雪崩效应”。 对于高流量的应用来说,单一的后端依赖会导致服务器所有的资源都在几秒钟内饱和。比失败更糟糕的是,这些应用程序还可能导致服务之间的延迟增加,备份队列,线程和其他系统资源紧张,导致整个系统发生更多的级联故障
2021-06-09 23:04:16
145
原创 Feign负载均衡
Feign负载均衡 Feign是一个声明式WebService客户端,使用方法时定义一个接口并在上面添加注解即可。Feign支持可拔插式的编码器和解码器。Spring Cloud对Feign进行了封装,使其支持SpringMVC和HttpMessageConverters。Feign可以与Eureka和Ribbon组合使用以支持负载均衡。 使用案例 新建Feign模块,加入依赖(其实跟80消费者差不多,主要是多了Feign依赖) <dependencies> &l
2021-06-09 23:03:34
1838
原创 Ribbon负载均衡
Ribbon负载均衡 Spring Cloud Ribbon是基于Netflix Ribbon实现的一套==客户端==负载均衡工具。Ribbon会自动帮助你基于某种规则(简单轮询、随机连接等),也可以实现自定义的负载均衡算法。 负载均衡 英文名称:Load Balance,微服务或分布式集群中常用的一种应用 简单来说负载均衡就是将用户的请求ping平摊的分配到多个任务上,从而是系统达到HA(高可用) 两种负载均衡: 集中式LB:偏硬件,服务的消费方和提供方之间使用独立的LB
2021-06-09 23:03:02
209
1
原创 Eureka服务注册与发现
Eureka服务注册与发现 Eureka介绍及原理 理解 ==Eureka就像一个物业管理公司,其他微服务就像小区的住户,每个住户入住时都要向物业管理公司注册,并定时向物业公司交管理费== 介绍 Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移。 Eureka主管服务注册与发现,在微服务中,以后了这两者,只需要使用服务的标识符(==就是那个在每个服务的yml文件中取得服务名称==),就可以访问到服务,不需要修改服务调用的配置文件 Eureka遵循AP原则(
2021-06-09 23:01:28
185
原创 SpringCloud入门概述
SpringCloud入门概述 Spring的三大模块:SpringBoot(构建),Spring Cloud(协调),Spring Cloud Data Flow(连接) SpringCloud是什么 分布式系统的简化版(官方介绍) SpringCloud基于SpringBoot提供了一整套微服务的解决方案,包括服务注册与发现,配置中心,全链路监控,服务网关,负载均衡,熔断器等组件,除了基于Netflix的开源组件做高度抽象封装之外,还有一些选型中立的开源组件 SpringCloud利用Sprin
2021-06-09 22:59:45
170
原创 微服务概述
微服务概述 什么是微服务 目前的微服务并没有一个统一的标准,一般是以业务来划分 将传统的一站式应用,拆分成一个个的服务,彻底去耦合,一个微服务就是单功能业务,只做一件事。 与微服务相对的叫巨石 微服务与微服务架构 微服务是一种架构模式或者一种架构风格,提倡将单一应用程序划分成一组小的服务==独立部署==,服务之间相互配合、相互协调,每个服务运行于自己的==进程==中。 服务与服务间采用轻量级通讯,如HTTP的RESTful API等 避免统一的、集中式的服务管理机制 微服务的优缺点 优点
2021-06-09 22:57:24
164
原创 MyBatis注解开发
MyBatis注解开发 1.1 MyBatis的常用注解 这几年来注解开发越来越流行,Mybatis也可以使用注解开发方式,这样我们就可以减少编写Mapper映射文件了。我们先围绕一些基本的CRUD来学习,再学习复杂映射多表操作。 @Insert:实现新增 @Update:实现更新 @Delete:实现删除 @Select:实现查询 @Result:实现结果集封装 @Results:可以与@Result 一起使用,封装多个结果集 @One:实现一对一结果集封装 @Many:实现一对多结果集封装 1.2 My
2021-05-25 23:26:07
125
原创 MyBatis核心配置文件深入
MyBatis核心配置文件深入 1.1 typeHandlers标签 无论是 MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时, 都会用类型处理器将获取的值以合适的方式转换成 Java 类型。下表描述了一些默认的类型处理器(截取部分)。 你可以重写类型处理器或创建你自己的类型处理器来处理不支持的或非标准的类型。具体做法为:实现org.apache.ibatis.type.TypeHandler 接口, 或继承一个很便利的类 org.apach
2021-05-25 20:42:18
146
原创 SpringMVC拦截器
1.SpringMVC拦截器 1.1 拦截器(interceptor)的作用 Spring MVC 的拦截器类似于 Servlet 开发中的过滤器 Filter,用于对处理器进行预处理和后处理。 将拦截器按一定的顺序联结成一条链,这条链称为拦截器链(Interceptor Chain)。在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。拦截器也是AOP思想的具体实现。 1.2 拦截器和过滤器区别 1.3 拦截器是快速入门 自定义拦截器很简单,只有如下三步: 创建拦截器类实现H
2021-05-20 22:33:54
133
原创 SpringMVC入门
1.Spring集成web环境 1.1 ApplicationContext应用上下文获取方式 应用上下文对象是通过new ClasspathXmlApplicationContext(spring配置文件) 方式获取的,但是每次从容器中获得Bean时都要编写new ClasspathXmlApplicationContext(spring配置文件) ,这样的弊端是配置文件加载多次,应用上下文对象创建多次。 在Web项目中,可以使用ServletContextListener监听Web应用的启动,我们可以在
2021-05-20 14:45:31
101
原创 day2 IoC和DI注解开发
1.Spring配置数据源 1.1 数据源(连接池)的作用 数据源(连接池)是提高程序性能如出现的 事先实例化数据源,初始化部分连接资源 使用连接资源时从数据源中获取 使用完毕后将连接资源归还给数据源 常见的数据源(连接池):DBCP、C3P0、BoneCP、Druid等 1.2 数据源dataSource的开发步骤 导入数据源的坐标和数据库驱动坐标 创建数据源对象 设置数据源的基本连接数据 使用数据源获取连接资源和归还连接资源 可以将DataSource的创建权交由Spring
2021-05-15 23:43:20
162
原创 day1 Spring的IoC和DI
1.Spring简介 Spring是分层的 Java SE/EE应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control:反转控制)和 AOP(Aspect Oriented Programming:面向切面编程)为内核。 提供了展现层 SpringMVC(即service层) 和持久层 (DAO)层Spring JDBCTemplate 以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的Java EE 企业应用开源框
2021-05-15 21:59:59
216
翻译 javaweb day9
今日内容 JavaScript基础 JavaScript: 概念: 一门客户端脚本语言 运行在客户端浏览器中的。每一个浏览器都有JavaScript的解析引擎 脚本语言:不需要编译,直接就可以被浏览器解析执行了 功能: 可以来增强用户和html页面的交互过程,可以来控制html元素,让页面有一些动态的效果,增强用户的体验。 JavaScript发展史: 1992年,Nombase公司,开发出第一门客户端脚本语言,专门用于表单的校验。命名为 : C-- ,后来更名为:ScriptEa
2021-04-26 22:20:08
188
原创 javaweb day 12
今日内容 XML 1. 概念 2. 语法 3. 解析 XML: 概念:Extensible Markup Language 可扩展标记语言 可扩展:标签都是自定义的。 <user> <student> 功能 存储数据 配置文件 用于在网络中传输 xml与html的区别 xml标签都是自定义的,html标签是预定义。 xml的语法严格,html的语法松散 xml储存数据,html展示数据 语法: 基本语法: xml文档的后缀名 .xml x
2021-04-26 22:07:44
157
原创 Javaweb day8 html+css
今日内容: HTML标签:表单标签 CSS HTML标签:表单标签 表单: 概念:用于采集用户输入的数据的。用于和服务器进行交互。 form:用于定义表单的。可以定义一个范围,范围代表采集用户数据的范围(即用户要提交的内容都是form标签内 action:指定提交数据的URL method:指定提交方式 分类:共7种,2种比较常用 get: 1. 请求参数会在地址栏中显示。会封装到请求行中(HTTP协议后讲解)。 2. 请求参数大小是有限制的。 3. 不太安全 post: 1. 请求参数不会
2021-04-22 22:26:12
110
原创 Javaweb day6 数据库连接池和JDBC Template
今日内容 数据库连接池 Spring JDBC: JDBC Template 数据库连接池 概念:其实就是个容器(集合),存放数据库连接的容器。 当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后·,会将连接对象还给容器。 好处: 节约资源; 用户访问高效 实现 标准接口:DataSource javax.sql包下的 方法: 获取连接:getconenection(); 归还连接:connection.close
2021-04-20 22:59:02
159
原创 Javaweb day5 JDBC
今日内容 JDBC基本概念 快速入门 对JDBC中各个接口和类详解 JDBC: 概念:Java DataBase Connectivity Java 数据库连接, Java语言操作数据库 * JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。 快速入门: 步骤: 1. 导入驱动jar包 mysql-connector-java-5.
2021-04-20 19:53:29
144
原创 数据库第一章 概论
小结 计算机数据管理大致经历了三个阶段: 人工管理阶段:没有管理数据的软件系统,数据不保存在计算机中没有文件的概 念,数据的组织方式由程序员自行设计。 文件系统阶段:数据存放在数据文件中,但数据的逻辑结构却存储在建立数据的应 用程序中,造成了数据在事实上不能共享。 数据库系统阶段:数据和数据的逻辑结构都存储在数据库中,由DBMS统管理, 从而产生了数据可高度共享、数据高度独立、整体数据结构化、系统有高度的数据控制能力等一系列特性。 数据库管理系统(DBMS)是数据库系统(DBS)的关...
2021-04-17 15:27:33
347
1
原创 day 4 多表查询事务DCL
今日内容 多表查询 事务 DCL 多表查询: 查询语法: SELECT 列表名称 FROM 表名列表 WHERE… 案例 CREATE TABLE dept( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20) ); INSERT INTO dept (NAME) VALUES ('开发部'),('市场部'),('财务部'); # 创建员工表 CREATE TABLE emp ( id INT PRIMARY KE
2021-04-16 20:16:48
153
原创 javaweb day 3
今日内容 DQL:查询语句 排序查询 聚合函数 分组查询 分页查询 约束 多表之间的关系 范式 数据库的备份和还原 DQL:查询语句 排序查询 * 语法:order by 子句 * order by 排序字段1 排序字段2 * 排序方式: ASC:升序,默认 DESC:降速 聚合函数:将一列数据作为一个整体,进行纵向的计算 count:计算个数 一个选择非空的列:主键 count(*) max:计算最大值 min:计算最小值 sum:计算和 avg:计算平均值
2021-04-15 00:52:34
280
原创 javaweb day2 数据库以及sql语句
今日内容 数据库的基本概念 mysql数据库软件 SQL语句操作 数据库的基本概念 Database:简称DB 什么是数据库 用于存储和管理数据的仓库。 数据库的特点: 1. 持久化存储数据,其实数据库就是一个文件系统。 2. 方便存储和管理数据 3. 使用了统一的方式操作关系型数据库 --SQL 数据库和文件的区别 常用的数据库 MySQL:开源免费的数据库,小型的数据库,已经被 Oracle 收购了。MySQL6.x 版本也开始收费。后来Sun公司收购了 MySQL,而 Sun 公司又被
2021-04-14 00:29:28
330
1
原创 Java 模块化
模块化概述 Java语言随着这些年的发展已经成为了一门影响深远的编程语言,无数平台,系统都采用Java语言编写。但是,伴随着发展,Java也越来越庞大,逐渐发展成为一门“臃肿” 的语言。而且,无论是运行一个大型的软件系统,还是运行一个小的程序,即使程序只需要使用Java的部分核心功能, JVM也要加载整个JRE环境。 为了给Java“瘦身”,让Java实现轻量化,Java 9正式的推出了模块化系统。Java被拆分为N多个模块,并允许Java程序可以根据需要选择加载程序必须的Java模块,这样就可以让Java
2021-04-11 15:02:13
255
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅