- 博客(56)
- 收藏
- 关注
原创 装饰器模式【常用】
装饰器模式【常用】Demo案例-咖啡订单项目咖啡种类/单品咖啡:Espresso(意大利浓咖啡)、ShortBlack、LongBlack(美式咖啡)、Decaf(无因咖啡)调料:Milk、Soy(豆浆)、Chocolate要求在扩展新的咖啡种类时,具有良好的扩展性、改动方便、维护方便使用 OO 的来计算不同种类咖啡的费用: 客户可以点单品咖啡,也可以单品咖啡+调料组合。方案一分析Drink 是一个抽象类,表示饮料des 就是对咖啡的描述, 比如咖啡的名字cost()
2021-08-20 12:54:30 351
原创 UML类图
UML类图就是定义了一些符号,来描述软件系统分析和设计过程的工具。它描述了软件模型中各个元素之间的关系,比如类,接口,实现,泛化,依赖,组合,聚合等用于描述系统中的类***(对象)本身的组成和类(对象)***之间的各种静态关系。类之间的关系:依赖、泛化(继承)、实现、关联、聚合与组合。1、依赖关系(Dependence)小结:类中用到了对方如果是类的成员属性如果是方法的返回类型是方法接收的参数类型方法中使用到public class PersonServiceBe
2021-08-19 00:50:53 252
原创 桥接模式【常用】
桥接模式【常用】Demo案例-手机操作问题需求现在对不同手机类型的不同品牌实现操作编程(比如:开机、关机、上网,打电话等),如图:传统方案解决手机操作问题分析传统方法对应的类图扩展性问题(类爆炸),如果我们再增加手机的样式(旋转式),就需要增加各个品牌手机的类,同样如果我们增加一个手机品牌,也要在各个手机样式类下增加。违反了单一职责原则,当我们增加手机样式时,要同时增加所有品牌的手机,这样增加了代码维护成本.解决方案-使用桥接模式Bridge 模式基于类的最小设计原则,通过使用封装
2021-08-19 00:48:21 439
原创 适配器模式
适配器模式概述基本介绍适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)适配器模式属于结构型模式主要分为三类:类适配器模式、对象适配器模式、接口适配器模式工作原理适配器模式:将一个类的接口转换成另一种接口.让原本接口不兼容的类可以兼容从用户的角度看不到被适配者,是解耦的用户调用适配器转化出来的目标接口方法,适配器再调用被适配者的
2021-08-18 17:06:35 372
原创 建造者模式【常用】
建造者模式【常用】1. 建造者模式基本介绍建造者模式(Builder Pattern)又叫生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。2. 为什么需要建造者模式?在平时的开发中,创建一个对象最常用的方式是,使用 new 关键字调用类的构造函数来完成。我的问题
2021-08-18 00:54:30 189
原创 简单工厂模式+工厂方法模式+抽象工厂模式
创建型模式这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。1. 工厂模式定义工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。工厂顾名思义就是创建产品,根据产品是具体产品还是具体工厂可
2021-08-17 15:50:12 337
原创 单例模式(五种实现)
单例模式一、什么是单例模式单例模式是一种常用的软件设计模式,其定义是单例对象的类只能允许一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。单例的实现主要是通过以下两个步骤:将该类的构造方法定义为私有方法,这样其他处的代码就无法通过调用该类的构造方法来实例化该类的对
2021-08-17 11:28:35 6773 1
转载 SpringCloud第八章OpenFeign服务接口调用
八、OpenFeign服务接口调用1、概述1.1、OpenFeign是什么官网解释:https://cloud.spring.io/spring-cloud-static/Hoxton.SR1/reference/htmlsingle/#spring-cloud-openfeignFeign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单。它的使用方法是定义一个服务接口然后在上面添加注解。Feign也支持可拔插式的编码器和解码器。Spring C
2021-08-13 10:02:04 136
转载 SpringCloud第七章Ribbon负载均衡服务调用
SpringCloud第七章Ribbon负载均衡服务调用七、Ribbon负载均衡服务调用1、概述是什么Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供**客户端的软件负载均衡算法和服务调用。**Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load Balancer(简称LB)后面所有的机器,Ribbon会自动的帮助你基于
2021-08-12 16:00:54 165
转载 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 213
转载 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 113
转载 SpringCloud第三章 微服务架构编码构建
SpringCloud第三章 微服务架构编码构建约定 > 配置 > 编码1、IDEA新建project工作空间新建Empty Project,类似工作空间新project设置project都选择8module点击+号,新建一个maven模块新Module的设置由于第一个是pom统一工程,不选择模板create from archetypeG:com.likun.springcloudA:microservicecloudV:1.0-SNAPSH
2021-08-12 11:15:45 108
原创 1.单链表反转详解(4种算法实现)
单链表反转详解(4种算法实现)输入一个链表,反转链表后,输出新链表的表头。示例1输入:{1,2,3}复制返回值:{3,2,1}这里给出四种解法解法一:思路就是最简单的思路,从头到尾遍历链表每个元素,然后修改指针域,前后一个指针域指向前一个元素,由于这里遍历过程中需要用到三个量,当前节点的前驱节点(用于把当前节点的后继赋给它),当前节点,后继节点(用于遍历链表用到,没有这个变量的话,前序节点后继修改后,原链表已经断开了)public class Solution { publ
2021-08-04 23:29:58 1261
转载 Zookeeper服务注册与发现
五、Zookeeper服务注册与发现1、Eureka停止更新了你怎么办https://github.com/Netflix/eureka/wiki
2021-06-18 21:54:58 203
转载 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 132
原创 Springboot 2.2.X 和 SpringCloud H 版总述
一、Springboot 2.2.X 和 SpringCloud H 版
2021-06-18 19:03:44 289
原创 SpringCloud Config 分布式配置中心
SpringCloud Config 分布式配置中心分布式系统面临的配置问题:微服务意味着将单体应用拆分成一个个自服务,这些服务都是要相应的配置信息才能运行,随着系统内微服务数量越来越多,配置信息也不断地增多,所以一套集中式的、动态的配置管理设施是必不可少的。概述SpringCloud Config是一个提供外部集中式配置管理的设施,配置服务器为各种不同的额微服务应用提供了一个中心化的外部配置 SpringCloud Config分为客户端和服务端两部分 服务端:分布式配置中心,是一个独立的
2021-06-10 14:10:00 118
原创 Zuul路由网关
Zuul路由网关概述 代理:Zuul提供外部的请求转发到具体的微服务实例中的服务 路由:Zuul可以对外部访问实现统一的入口 过滤:Zuul可以对外部访问进行干预,如请求校验、服务聚合等 Zuul需要配合Eureka使用,需要在Eureka中注册并获得其他微服务的信息 理解:Zuul就像大楼的保安,可以请他找人(代理),找的人在外面叫什么名字(路由),准不准你进楼(过滤)。因为保安属于物业公司,所以保安要在物业公司注册,所获得的信息也来源于物业公司(与Eur
2021-06-10 14:09:07 134
原创 Hystrix断路器
Hystrix断路器分布式系统面临的问题扇出多个微服务互相调用的时候,如果A调用B、C,而B、C又继续调用其他微服务,这就是扇出(像一把扇子一样慢慢打开。服务雪崩删除过程中,如果某一个环节的服务出现故障或连接超时,就会导致前面的服务占用越来越多的资源,进而引起系统崩溃,就是“雪崩效应”。 对于高流量的应用来说,单一的后端依赖会导致服务器所有的资源都在几秒钟内饱和。比失败更糟糕的是,这些应用程序还可能导致服务之间的延迟增加,备份队列,线程和其他系统资源紧张,导致整个系统发生更多的级联故障
2021-06-09 23:04:16 100
原创 Feign负载均衡
Feign负载均衡Feign是一个声明式WebService客户端,使用方法时定义一个接口并在上面添加注解即可。Feign支持可拔插式的编码器和解码器。Spring Cloud对Feign进行了封装,使其支持SpringMVC和HttpMessageConverters。Feign可以与Eureka和Ribbon组合使用以支持负载均衡。使用案例新建Feign模块,加入依赖(其实跟80消费者差不多,主要是多了Feign依赖) <dependencies> &l
2021-06-09 23:03:34 1767
原创 Ribbon负载均衡
Ribbon负载均衡Spring Cloud Ribbon是基于Netflix Ribbon实现的一套==客户端==负载均衡工具。Ribbon会自动帮助你基于某种规则(简单轮询、随机连接等),也可以实现自定义的负载均衡算法。负载均衡 英文名称:Load Balance,微服务或分布式集群中常用的一种应用 简单来说负载均衡就是将用户的请求ping平摊的分配到多个任务上,从而是系统达到HA(高可用) 两种负载均衡: 集中式LB:偏硬件,服务的消费方和提供方之间使用独立的LB
2021-06-09 23:03:02 165 1
原创 Eureka服务注册与发现
Eureka服务注册与发现Eureka介绍及原理理解==Eureka就像一个物业管理公司,其他微服务就像小区的住户,每个住户入住时都要向物业管理公司注册,并定时向物业公司交管理费==介绍Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移。 Eureka主管服务注册与发现,在微服务中,以后了这两者,只需要使用服务的标识符(==就是那个在每个服务的yml文件中取得服务名称==),就可以访问到服务,不需要修改服务调用的配置文件 Eureka遵循AP原则(
2021-06-09 23:01:28 113
原创 SpringCloud入门概述
SpringCloud入门概述Spring的三大模块:SpringBoot(构建),Spring Cloud(协调),Spring Cloud Data Flow(连接)SpringCloud是什么分布式系统的简化版(官方介绍) SpringCloud基于SpringBoot提供了一整套微服务的解决方案,包括服务注册与发现,配置中心,全链路监控,服务网关,负载均衡,熔断器等组件,除了基于Netflix的开源组件做高度抽象封装之外,还有一些选型中立的开源组件 SpringCloud利用Sprin
2021-06-09 22:59:45 118
原创 微服务概述
微服务概述什么是微服务目前的微服务并没有一个统一的标准,一般是以业务来划分 将传统的一站式应用,拆分成一个个的服务,彻底去耦合,一个微服务就是单功能业务,只做一件事。 与微服务相对的叫巨石微服务与微服务架构微服务是一种架构模式或者一种架构风格,提倡将单一应用程序划分成一组小的服务==独立部署==,服务之间相互配合、相互协调,每个服务运行于自己的==进程==中。 服务与服务间采用轻量级通讯,如HTTP的RESTful API等 避免统一的、集中式的服务管理机制微服务的优缺点优点
2021-06-09 22:57:24 105
原创 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 93
原创 MyBatis核心配置文件深入
MyBatis核心配置文件深入1.1 typeHandlers标签无论是 MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时, 都会用类型处理器将获取的值以合适的方式转换成 Java 类型。下表描述了一些默认的类型处理器(截取部分)。你可以重写类型处理器或创建你自己的类型处理器来处理不支持的或非标准的类型。具体做法为:实现org.apache.ibatis.type.TypeHandler 接口, 或继承一个很便利的类 org.apach
2021-05-25 20:42:18 105
原创 SpringMVC拦截器
1.SpringMVC拦截器1.1 拦截器(interceptor)的作用Spring MVC 的拦截器类似于 Servlet 开发中的过滤器 Filter,用于对处理器进行预处理和后处理。将拦截器按一定的顺序联结成一条链,这条链称为拦截器链(Interceptor Chain)。在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。拦截器也是AOP思想的具体实现。1.2 拦截器和过滤器区别1.3 拦截器是快速入门自定义拦截器很简单,只有如下三步:创建拦截器类实现H
2021-05-20 22:33:54 84
原创 SpringMVC入门
1.Spring集成web环境1.1 ApplicationContext应用上下文获取方式应用上下文对象是通过new ClasspathXmlApplicationContext(spring配置文件) 方式获取的,但是每次从容器中获得Bean时都要编写new ClasspathXmlApplicationContext(spring配置文件) ,这样的弊端是配置文件加载多次,应用上下文对象创建多次。在Web项目中,可以使用ServletContextListener监听Web应用的启动,我们可以在
2021-05-20 14:45:31 66
原创 day2 IoC和DI注解开发
1.Spring配置数据源1.1 数据源(连接池)的作用数据源(连接池)是提高程序性能如出现的事先实例化数据源,初始化部分连接资源使用连接资源时从数据源中获取使用完毕后将连接资源归还给数据源常见的数据源(连接池):DBCP、C3P0、BoneCP、Druid等1.2 数据源dataSource的开发步骤导入数据源的坐标和数据库驱动坐标创建数据源对象设置数据源的基本连接数据使用数据源获取连接资源和归还连接资源可以将DataSource的创建权交由Spring
2021-05-15 23:43:20 116
原创 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 166
翻译 javaweb day9
今日内容JavaScript基础JavaScript:概念: 一门客户端脚本语言运行在客户端浏览器中的。每一个浏览器都有JavaScript的解析引擎脚本语言:不需要编译,直接就可以被浏览器解析执行了功能:可以来增强用户和html页面的交互过程,可以来控制html元素,让页面有一些动态的效果,增强用户的体验。JavaScript发展史:1992年,Nombase公司,开发出第一门客户端脚本语言,专门用于表单的校验。命名为 : C-- ,后来更名为:ScriptEa
2021-04-26 22:20:08 138
原创 javaweb day 12
今日内容XML1. 概念2. 语法3. 解析XML:概念:Extensible Markup Language 可扩展标记语言可扩展:标签都是自定义的。 <user> <student>功能存储数据配置文件用于在网络中传输xml与html的区别xml标签都是自定义的,html标签是预定义。xml的语法严格,html的语法松散xml储存数据,html展示数据语法:基本语法:xml文档的后缀名 .xmlx
2021-04-26 22:07:44 109
原创 Javaweb day8 html+css
今日内容:HTML标签:表单标签CSSHTML标签:表单标签表单:概念:用于采集用户输入的数据的。用于和服务器进行交互。form:用于定义表单的。可以定义一个范围,范围代表采集用户数据的范围(即用户要提交的内容都是form标签内action:指定提交数据的URLmethod:指定提交方式分类:共7种,2种比较常用get:1. 请求参数会在地址栏中显示。会封装到请求行中(HTTP协议后讲解)。2. 请求参数大小是有限制的。3. 不太安全post:1. 请求参数不会
2021-04-22 22:26:12 73
原创 Javaweb day6 数据库连接池和JDBC Template
今日内容数据库连接池Spring JDBC: JDBC Template数据库连接池概念:其实就是个容器(集合),存放数据库连接的容器。当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后·,会将连接对象还给容器。好处:节约资源;用户访问高效实现标准接口:DataSource javax.sql包下的方法:获取连接:getconenection();归还连接:connection.close
2021-04-20 22:59:02 103
原创 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 90
原创 数据库第一章 概论
小结计算机数据管理大致经历了三个阶段:人工管理阶段:没有管理数据的软件系统,数据不保存在计算机中没有文件的概念,数据的组织方式由程序员自行设计。文件系统阶段:数据存放在数据文件中,但数据的逻辑结构却存储在建立数据的应用程序中,造成了数据在事实上不能共享。数据库系统阶段:数据和数据的逻辑结构都存储在数据库中,由DBMS统管理,从而产生了数据可高度共享、数据高度独立、整体数据结构化、系统有高度的数据控制能力等一系列特性。数据库管理系统(DBMS)是数据库系统(DBS)的关...
2021-04-17 15:27:33 273 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 96
原创 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 221
原创 javaweb day2 数据库以及sql语句
今日内容数据库的基本概念mysql数据库软件SQL语句操作数据库的基本概念Database:简称DB什么是数据库用于存储和管理数据的仓库。数据库的特点:1. 持久化存储数据,其实数据库就是一个文件系统。2. 方便存储和管理数据3. 使用了统一的方式操作关系型数据库 --SQL数据库和文件的区别常用的数据库MySQL:开源免费的数据库,小型的数据库,已经被 Oracle 收购了。MySQL6.x 版本也开始收费。后来Sun公司收购了 MySQL,而 Sun 公司又被
2021-04-14 00:29:28 250 1
原创 Java 模块化
模块化概述Java语言随着这些年的发展已经成为了一门影响深远的编程语言,无数平台,系统都采用Java语言编写。但是,伴随着发展,Java也越来越庞大,逐渐发展成为一门“臃肿” 的语言。而且,无论是运行一个大型的软件系统,还是运行一个小的程序,即使程序只需要使用Java的部分核心功能, JVM也要加载整个JRE环境。 为了给Java“瘦身”,让Java实现轻量化,Java 9正式的推出了模块化系统。Java被拆分为N多个模块,并允许Java程序可以根据需要选择加载程序必须的Java模块,这样就可以让Java
2021-04-11 15:02:13 194
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人