自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Sentinel系列-Sentinel控制台(dashboard)

Sentinel 控制台概述Sentinel 提供一个轻量级的开源控制台,它提供服务发现以及健康情况管理、监控(单机和集群),规则管理和推送的功能。另外,鉴权在生产环境中也必不可少。这里,我们将会详细讲述如何通过简单的步骤就可以使用这些功能。Sentinel 控制台包含如下功能:查看机器列表以及健康情况:收集 Sentinel 客户端发送的心跳包,用于判断服务是否在线。监控 (单机和集群聚合):通过 Sentinel 客户端暴露的监控 API,定期拉取并且聚合应用监控信息,最终可以实现秒级的实时

2020-05-29 17:09:40 19137 3

原创 java设计模式 -观察者模式

观察者模式介绍说明观察者模式是对象之间多对一依赖的一种设计方案,被依赖的对象成为Subject,依赖的对象为Observer,当Subject发生变化的时候可以通知到Observer。类图说明以天气预报为示例类图如下:Weather为核心类,实现了Subject里面的方法Subject有变化的时候,Observer会直接接收到通知示例说明/** * 订阅接口 */public interface Subject { public void registerObserver(

2020-05-29 16:00:40 167

原创 java开发过程中唯一ID的生成方式

java开发过程中唯一ID的生成方式本文主要介绍的是在开发过程中唯一ID的生成方式,在分布式的系统中唯一ID的应用场景还是很多的。当然了唯一ID的生成方式也各式各样。文章中主要是根据hutool做的封装来进行讲解。hutool的唯一ID生成器的工具类,主要包括下面3种:UUIDObjectId(MongoDB)Snowflake(Twitter)使用方式与说明引入依赖,当前最新版本的hutool是5.3.5 <!-- https://mvnrepository.com/art

2020-05-29 10:29:23 3603

原创 Sentinel系列 -1 基本介绍

Sentinel基本介绍Sentinel 是面向分布式服务架构的流量控制组件,是Spring Cloud AliBaba的核心组件之一。主要以流量为切入点,从流量(一定时间内的访问量)控制、熔断降级、系统自适应保护等多个维度来帮助您保障微服务的稳定性。在当前微服务中代替hystix来使用。Sentinel历史Sentinel诞生已经有些年头,但是开源的时间是比较有限的。2012 年,Sentinel 诞生,主要功能为入口流量控制。2013-2017 年,Sentinel 在阿里巴巴集团内部迅速发展

2020-05-28 16:53:10 2698

原创 java设计模式-组合模式

java设计模式-组合模式基本介绍组合模式也叫整体部分模式,他创建了对象组的树形结构,将对象组合成树状结构来表示整体-结构之间的关系。原理类图解释说明:1、Component:组合对象的顶层接口,实现所有类共用的接口默认方法,用于管理Component的子部件,Component可以使抽象类也可以是接口。2、Leaf:最下层的类,没有子节点3、Composite:中间层类,用于存储子部件。案例分享顶层接口类public abstract class OrganizationCompon

2020-05-28 16:20:10 182

原创 阿里云SMS服务的使用方式

阿里云SMS服务使用什么是短信服务短信服务(Short Message Service)是阿里云为用户提供的一种通信服务的能力。支持向国内和国际快速发送验证码、短信通知和推广短信,服务范围覆盖全球200多个国家和地区。国内短信支持三网合一专属通道,与工信部携号转网平台实时互联。电信级运维保障,实时监控自动切换,到达率高达99%。完美支撑双11期间20亿短信发送,6亿用户触达。最主要的功能是短信通知、短信验证码和推广短信。快速入门短信格式短信服务发送的短信中包括短信签名和短信模板。短信签名是短信

2020-05-27 17:08:51 1588

原创 SpringBoot2.x配置Cors跨域详解

跨域的理解跨域是指:浏览器A从服务器B获取的静态资源,包括Html、Css、Js,然后在Js中通过Ajax访问C服务器的静态资源或请求。即:浏览器A从B服务器拿的资源,资源中想访问服务器C的资源。同源策略是指:浏览器A从服务器B获取的静态资源,包括Html、Css、Js,为了用户安全,浏览器加了限制,其中的Js通过Ajax只能访问B服务器的静态资源或请求。即:浏览器A从哪拿的资源,那资源中就只能访问哪。同源是指:同一个请求协议(如:Http或Https)、同一个Ip、同一个端口,3个全部相同,即为同源

2020-05-27 16:47:07 713

原创 不同场景下登录检验方式选择

不同场景下登录检验方式选择根据登录场景的不同,登录分为单机登录和分布式登录两种。单机登录主要是在应用程序比较简单,没有用到分布式的情况下。具体的说明以及使用方式如下。单机tomcat应用登录检验单机登录的时候一般会选择把用户信息放到session中,session保存到浏览器和应用服务器回话之间,用户登录成功,服务器端会保证一个session 当然会给客户端一个sessionID客户端会把sessionId保存在cookie中,每次请求都会携带这个sessionId。用户再次请求页面的时候,服务器端

2020-05-27 15:52:25 413

原创 java设计模式原则(下)

开闭原则基本介绍开闭原则(Open Closed Principle)是编程中最基础、最重要的设计原则一个软件实体如类,模块和函数应该对扩展开放(对提供方),对修改关闭(对使用方)。用抽象构建框架,用实现扩展细节。当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。编程中遵循其它原则,以及使用设计模式的目的就是遵循开闭原则。实例介绍与分析public class Ocp { public static void main(String[]

2020-05-23 15:33:41 197

原创 java 设计模式原则(中)

java 设计模式原则(中)依赖倒转原则依赖倒转原则(Dependence Inversion Principle)是指:高层模块不应该依赖低层模块,二者都应该依赖其抽象抽象不应该依赖细节,细节应该依赖抽象依赖倒转(倒置)的中心思想是面向接口编程依赖倒转原则是基于这样的设计理念:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建的架构比以细节为基础的架构要稳定的多。在java中,抽象指的是接口或抽象类,细节就是具体的实现类使用接口或抽象类的目的是制定好规范,而不涉及任何具体的操作,把

2020-05-23 14:53:52 154

原创 java设计模型原则(上)

java设计模型原则设计模式原则,其实就是程序员在编程时,应当遵守的原则,也是各种设计模式的基础(即:设计模式为什么这样设计的依据)。设计模式常用的七大原则有:单一职责原则接口隔离原则依赖倒转(倒置)原则里氏替换原则开闭原则迪米特法则合成复用原则单一职责原则在java开发过程中,我们经常看到最顶层的类一般都是接口,接口按照职责进行分类,每个接口只负责一个职责,而具体的实现都在下层的实现类中。遵循的就是单一职责原则。实例如下:public class SingleResponsi

2020-05-23 14:35:08 160

原创 Seata使用案例

Seata - 4 使用案例环境介绍:服务注册中心:nacosseata 0.9.0版本实例介绍:整个实例分为账户服务、订单服务和库存服务三个微服务。订单服务调用库存服务和账户服务。具体的事务逻辑就是订单成功之后扣减账户和库存。库存服务于账户服务差不多。库存微服务和账户为服务依赖引入 <dependencies> <!-- SpringCloud alibaba nacos --> <dependency> &lt

2020-05-23 13:38:53 1581

原创 Seata AT 模式介绍

Seata 当前三种模式介绍AT 模式AT 模式是一种无侵入的分布式事务解决方案。在 AT 模式下,用户只需关注自己的“业务 SQL”,用户的 “业务 SQL” 作为一阶段,Seata 框架会自动生成事务的二阶段提交和回滚操作。AT 模式的执行流程在一阶段,Seata 会拦截“业务 SQL”,首先解析 SQL 语义,找到“业务 SQL”要更新的业务数据,在业务数据被更新前,将其保存成“before image”,然后执行“业务 SQL”更新业务数据,在业务数据更新之后,再将其保存成“after im

2020-05-23 12:55:09 5047 1

原创 java设计模式 - 装饰者模式

原理介绍装饰者模式就像打包一个快递,动态的将新工鞥附加到对象上。在对象功能扩展方面,比继承更加的有弹性。原理图与解释如下:实例分析:抽象类public abstract class Drink { public String des; //描述 private float price = 0.0f; public String getDes() { return des; } public void setDes(Stri

2020-05-22 15:06:14 114

原创 java设计模式-外观模式

外观模式外观模式是java设计模式中比较简单的一种设计模式,外观模式(Facade) ,也叫“过程模式:外观模式为子系统中的一组接口提供一个 致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。另外,外观模式通过定义一个一致的接口,用以屏蔽内部子系统的细节,使得调用端只需跟这个接口发生调用,而无需关心这个子系统的内部细节。实例如下:/** * 外观类定义 */public class HomeTheaterFacade { private TheaterLight th

2020-05-21 14:00:51 115

原创 java设计模式 -桥接模式

桥接模式基本介绍桥接模式的核心思路是:将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变。桥接模式是基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。他的特点是把抽象与行为实现分离开来,从而可以保持各部分独立性。保证了代码的扩展性。桥接模式的原理图Client:模式的调用者抽象类(Abstraction):维护了Implementor/即它的实现类ConcreteImplementorA,二者市局和关系,Abstraction从当桥接类RefinedAb

2020-05-21 13:51:19 135

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

适配器模式基本介绍适配器模式将某个类的接口转换成客户端期望的另一个借口标识,主要的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。适配器模式分为三种类型:类适配器模式,对象适配器模式,接口适配器模式工作原理将一个类的接口转换成另一种接口,让原本接口不兼容的类可以兼容解耦用户与被适配者的关系用户调用适配器转换出来的目标借口,适配器在调用被适配者的相关接口方法类适配器模式被适配者类public class Voltage220 { int src = 220;

2020-05-21 13:29:01 151 1

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

建造者模式任何的设计模式的初衷都是简化代码,易于扩展。建造者模式也不例外,建造者模式在类的相同点较多的情况下使用有奇效。建造者模式也叫生成器模式。他可以将复杂对象的构建过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同的对象。简单来说就是:抽象出对象类的具体方法为一个抽象类(一般不用接口)不同的构造者够继承这个类(根据自己的需求重写编写类的实现方法)在构建一个总体的指挥者,来执行构建对象的具体步骤(方法)对外只暴露出指挥者的角色和想要构建对象的角色即可下图可以参考理解,不

2020-05-20 14:22:59 136

原创 java设计模式-原型模式

基本介绍用原型对象实例指定创建对象的种类,并且通过拷贝这些原型,创建新的对象。简单来说就是通过clone的方式创建新的对象。在开发过程中当两个对象的属性大致相同的时候,不在需要使用new来创建新的对象。实现方式:实现Cloneable接口重写clone方法注意:clone只对实现了Cloneable接口的类有效实例如下:/** * 实现clone 的接口 */public class Sheep implements Cloneable{ private String

2020-05-20 13:55:52 87

原创 Seata - 基本介绍

Seata 是什么?Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。主要解决的就是在分布式系统中全局事务的一致性。分布式事务产生的原因:一次业务操作需要跨多个数据源或需要跨多个系统进行远程调用,就会产生分布式事务问题。如下例子:用户购买商品的业务逻辑。整个业务逻辑由3个微服务提供支持:仓储服务:对给定的商品扣除仓储数量。订单服务:根据采购需求创建订单。帐户服务:从用户帐户中扣除余额。架构图在上述事例中,单体应用被拆分成为服务应用,原来的三个模块

2020-05-19 18:36:33 2081

原创 java设计模式-工厂模式

工厂模式工厂模式大致分为三种,分别是简单工厂模式、工厂方法模式和抽象工厂模式,是开发过程中使用最多的一种模式。简单工厂模式简单工厂模式一句话解释就是创建一个工厂对象来决定创建哪一种产品对象出来。用工厂类封装了实例化对象的行为。具体的实例如下:基础对象类/** * 抽象类 设计 */public abstract class Pizza { protected String name; //准备原材料。不同的披萨不一样,因此,我们做成抽象方法 public abstrac

2020-05-19 14:30:55 111

原创 一文详解java的单例模式

单例模式单例模式:就是采取一定的方法保证在整个软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)单例模式有八种方式实现,本文只介绍集中特殊的常用的:饿汉式饿汉式有两种实现方式,分别是静态变量和静态代码块的方式,其大致是一样的。在真是的开发过程中不是特别推荐使用。实例如下://饿汉式(静态变量)class Singleton{ //1、构造器私有化,外部无法引用 private Singleton(){ } //2、

2020-05-19 14:08:31 102

原创 UML类图-六种关系详解

UML基本介绍UML——Unified modeling language UML(统一建模语言),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果UML本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和他们之间的关系,比如类、接口、实现、泛化、依赖、组合、聚合等,如右图:使用UML来建模,常用的工具有 RationalRose , 也可以使用一些插件来建模关系详解类图—依赖关系(Dependence)依赖关系是最简

2020-05-18 20:28:51 1147

原创 linux系统安装nginx详细介绍

Linux 系统安装nginx环境说明linux系统 centos8nginx1.16.1之所以先介绍环境是因为 centos8和centos7在安装nginx的时候会出现偏差,如果使用centos8系统,建议使用nginx1.16.1,不建议使用nginx1.12.1,因为网上很多使用的都是nginx1.12.1,centos7的系统都无所谓。centos8系统再安装的时候会出现以下错误:src/os/unix/ngx_user.c:36:7: 错误:‘struct crypt_data

2020-05-14 17:31:07 183

原创 史上最全linux 安装和配置mysql5.7.30

linux 安装和配置mysql5.7.30下载安装包首先进入官网下载mysql,官网地址https://dev.mysql.com/downloads/mysql/5.7.html#downloads,选择最新的linux版本,本文使用的是mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz安装环境配置建议使用centos6.5以上的版本,本文使用的是contos7。在安装前,首先要检测系统是否自带安装 MySQL。使用如下指令,查询linux系统上所有的mys

2020-05-14 09:18:56 5746 4

原创 SpringCloud Sleuth分布式请求链路跟踪

微服务的链路问题在微服务框架中,一个由客户端发起的请求在后端系统中会经历多个不同的服务节点调用来协同产生最后的请求结果。因此,每一个请求都会产生一条复杂的分布式调用链路,链路中的任何一个环节出现高延迟或者错误都会引起整个请求的失败。而SpringCloud Sleuth提供了一整套的服务跟踪解决方案。搭建链路监控的步骤下载和启动zipkin本文以zipkin 2.12.9版本为例,可以根据自己的需求进行版本选择。zipkin下载地址 http://dl.bintray.com/openzipki

2020-05-13 13:02:36 333

原创 java基础-java接口

java接口接口是抽象类的延伸,可以看做是纯碎的抽象类,接口中的所有方法都没有方法体。另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。接口与类的区别:接口没有构造方法接口中的所有方法必须是抽象方法接口不能被继承,只能被实现,并且之后多实现接口中不能包含成员变量,除了static和final变量抽象类和接口的区别抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行抽象类中的成员变量可以是各种类型的,而

2020-05-12 15:05:44 148

原创 java基础-java抽象类

java抽象类抽象类是不能实例化的类,不能被new方法实例化,只能被继承。在Java中,一个类只能继承一个抽象类,而一个类却可以实现多个接口。抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。抽象类在java中,抽象类用abstract class定义public abstract class Employee{ private String name; private String address; private in

2020-05-12 14:26:59 109

原创 java基础-Java 多态

java多态多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作。多态的优点消除类型之间的耦合关系可替换性可扩充性接口性灵活性简化性多态存在的三个必要条件继承重写父类引用指向子类对象比如:People p = new Student();在多态的使用过程中,调用子类的方法的时候,在父类中必须有同样命名的方法,否则会出错。多态的测试public class Test { public static void m

2020-05-12 14:08:23 92

原创 Java 基础--重写(Override)与重载(Overload)

Java 重写(Override)与重载(Overload)重写(Override)重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如: 父类的一个方法申明了一个检查异常 IOException,但是在重写这个方法的时候不能抛出 Exception 异常,因为 Exception 是

2020-05-11 15:42:08 121

原创 java基础-继承

java 继承继承的概念继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。类的继承格式Java 中通过 extends 关键字可以申明一个类是从另外一个类继承而来的,一般形式如下:class 父类 {}class 子类 extends 父类 {}为什么需要继承继承的目的是当子类与父类有相同的实现方法时,简便子类的写法和方便统一子类的修改

2020-05-11 15:24:19 162

原创 Jmeter 简单使用教程

Jmeter 介绍Jmeter 主要用来做功能测试和性能测试(压力测试/负载测试),是一款java开发的,开源免费的且支持中文的测试工具,做restful风格项目开发的时候,建议大家使用,非常好用。Jmeter 下载与运行官方网站:http://jmeter.apache.org/下载地址:https://jmeter.apache.org/download_jmeter.cgi建议...

2020-05-06 15:47:27 262

空空如也

空空如也

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

TA关注的人

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