自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 WebSocket

WebSocket介绍WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。在 WebSocket API 中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。现在,很多

2020-08-01 13:37:08 293

原创 六、Spring5之Webflux

Spring5 框架新功能(Webflux)1、SpringWebflux 介绍(1)是 Spring5 添加新的模块,用于 web 开发的,功能和 SpringMVC 类似的,Webflux 使用当前一种比较流行的响应式编程出现的框架。(2)使用传统 web 框架,比如 SpringMVC,这些基于 Servlet 容器,Webflux 是一种异步非阻塞的框架,异步非阻塞的框架在 Servlet3.1 以后才支持,核心是基于 Reactor (响应式编程)的相关 API 实现的。(3)解释

2020-07-30 12:36:48 781

原创 五、Spring框架之单元测试

Spring5新功能1、整个 Spring5 框架的代码基于 Java8,运行时兼容 JDK9,许多不建议使用的类和方法在代码库中删除2、Spring 5.0 框架自带了通用的日志封装(1)Spring5 已经移除 Log4jConfigListener,官方建议使用 Log4j2(2)Spring5 框架整合 Log4j2第一步引入jar包第二步 创建 log4j2.xml 配置文件<?xml version="1.0" encoding="UTF-8"?><!--

2020-07-30 12:36:33 428

原创 四、Spring5框架之事务

事务什么是事务(1)事务是数据库操作最基本单元,逻辑上一组操作,要么都成功,如果有一个失败所有操作都失败(2)典型场景:银行转账lucy 转账 100 元 给 marylucy 少 100,mary 多 100事务四个特性(ACID)(1)原子性一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做(2)一致性事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。(3)隔离性一个事务的执行不能被其他事务干扰。即一个事务内部的操作及

2020-07-30 12:36:28 408

原创 三、Spring5框架之JdbcTemplate

JdbcTemplate1、什么是 JdbcTemplate(1)Spring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作2、准备工作(1)引入相关 jar 包(2)在 spring 配置文件配置数据库连接池、JdbcTemplate 对象 <!-- 组件扫描 --> <context:component-scan base-package="com.company"></context:component-scan&g

2020-07-30 12:36:23 216

原创 二、Spring5框架之AOP

AOPAOP(概念)(1)面向切面编程(方面),利用 AOP 可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。(2)通俗描述:不通过修改源代码方式,在主干功能里面添加新功能(3)使用例子说明 AOPAOP 底层使用动态代理1、什么是 AOP(1)有两种情况动态代理第一种 有接口情况,使用 JDK 动态代理1、创建接口实现类代理对象,增强类的方法第二种 没有接口情况,使用 CGLIB 动态代理1、创建子类的代理对

2020-07-30 12:36:17 207

原创 一、Spring5框架之IOC

Spring 5 框架概述1、Spring 是轻量级的开源的 JavaEE 框架2、Spring 可以解决企业应用开发的复杂性3、Spring 有两个核心部分:IOC 和 Aop(1)IOC:控制反转,把创建对象过程交给 Spring 进行管理(2)Aop:面向切面,不修改源代码进行功能增强4、Spring 特点(1)方便解耦,简化开发(2)Aop 编程支持(3)方便程序测试(4)方便和其他框架进行整合(5)方便进行事务操作(6)降低 API 开发难度Spring5 案例1、下载

2020-07-30 12:36:11 297

原创 volatile

volatilevolatile是Java虚拟机提供的轻量级的同步机制保证可见性不保证原子性禁止指令重排JMM概念JMM(Java内存模型Java Memory Model,简称JMM)本身是一种抽象的概念 并不真实存在,它描述的是一组规则或规范通过规范定制了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式.JMM关于同步规定:线程解锁前,必须把共享变量的值刷新回主内存线程加锁前,必须读取主内存的最新值到自己的工作内存加锁解锁是同一把锁由于JVM运行程序

2020-07-30 12:36:04 91

原创 JUC笔记

JUCJUC是什么java.util.concurrent在并发编程中使用的工具类进程/线程回顾进程/线程是什么进程:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。线程:通常在一个进程中可以包含若干个线程,当然一个进程中至少有一个线程,不然没有存在的意义。线程可以利用进程所拥有的资源,在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的

2020-07-30 12:35:54 324

原创 二十六、SpringCloud Alibaba Seata处理分布式事务

Seata处理分布式事务分布式事务问题分布式前单机单库没这个问题从1:1 -> 1:N -> N: N分布式之后单体应用被拆分微服务应用,原来的三个模块被拆分成三个独立的应用,分别使用三个独立的数据源,业务操作需要调用三个服务来完成,此时每个服务内部的数据一致性由本地事务来保证,但是全局的数据一致性问题没法保证:用户购买商品的业务逻辑,整个业务逻辑由三个微服务提供支持:仓储服务:对卖的商品扣除仓储数量订单服务:根据采购需求创建订单账户服务:从用户账户中扣除余额一次业务操作

2020-07-30 12:35:09 301

原创 二十五、Sentinel热点key限流+@SentinelResource

Sentinel热点key限流基本介绍官网https://github.com/alibaba/Sentinel/wiki/热点参数限流@SentinelResource兜底方法分为系统默认和客户自定义,两种之前的case,限流出问题后,都是用sentinel系统默认的提示使用@SentinelResource,自定义降级方法代码 @GetMapping("/testHotKey") @SentinelResource(value = "testHotKey", blockHa

2020-07-30 12:34:49 345

原创 二十四、Sentinel降级规则

Sentinel降级规则基本介绍RT(平均响应时间,秒级)平均响应时间超出阈值且在时间窗口内通过的请求>=5,两个条件同时满足后触发降级窗口期过后关闭断路器RT最大4900(更大的需要通过-Dcsp.sentinel.statistic.max.rt=XXXX设置)异常比例(秒级)QPS>=5且异常比例(秒级统计)超过阈值时,触发降级,窗口期结束,关闭降级异常数(分钟级)异常数(分钟统计)超过阈值时,触发降级,窗口期结束,关闭降级Sentinel熔断降级会在调用链路中的

2020-07-30 12:34:42 1000 1

原创 二十三、Sentinel流控规则

SpringCloud Alibaba Sentinel实现熔断与限流Sentinel官网https://github.com/alibaba/Sentinel中文:https://github.com/alibaba/Sentinel/wiki/%E4%BB%8B%E7%BB%8D是什么下载https://github.com/alibaba/Sentinel/releases能干嘛使用https://spring-cloud-alibaba-group.github.io/git

2020-07-30 12:34:37 699

原创 二十二、Nacos集群和持久化配置

Nacos集群和持久化配置官网说明官网https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html架构图说明官网说明https://nacos.io/zh-cn/docs/deployment.htmlNacos持久化配置解释Nacos默认自带的是嵌入式数据库derbyhttps://github.com/alibaba/nacos/blob/develop/config/pom.xmlderby到mysql切换配置步骤

2020-07-30 12:34:32 270 1

原创 二十一、SpringCloud Alibaba Nacos服务注册和配置中心

SpringCloud Alibaba Nacos服务注册和配置中心Nacos简介为什么叫Nacos前四个字母分别为Naming和Configuration的前两个字母,最后的s为Service是什么一个更易于构建云原生应用的动态服务发现,配置管理和服务管理中心Nacos:Dynamic Naming and Configuration ServiceNacos就是注册中心+配置中心的组合Nacos = Eureka+Config+Bus能干嘛替代Eureka做服务注册中心替代C

2020-07-30 12:34:26 386

原创 二十、SpringCloud Alibaba入门简介

SpringCloud Alibaba入门简介为什么会出现SpringCloud alibabaSpring Cloud Netflix项目进入维护模式https://spring.io/blog/2018/12/12/spring-cloud-greenwich-rc1-available-nowSpringCloud NetFlix Projects Entering Maintenance Mode什么是维护模式进入维护模式意味着什么呢?我们都知道Spring Cloud 版本迭

2020-07-30 12:34:21 172

原创 十九、SpringCloud学习笔记之Sleuth分布式请求链路追踪

SpringCloud Sleuth分布式请求链路追踪概述为什么会出现这个技术?需要解决哪些问题?在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的服务节点调用来协同产生最后的请求结果,每一个前端请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会银企整个请求最后的失败。是什么https://github.com/spring-cloud/spring-cloud-sleuthSpring Cloud Sleuth提供了一套完整的服务跟踪的解

2020-07-30 12:34:16 160

原创 十八、SpringCloud学习笔记之Stream消息驱动

SpringCloud Stream消息驱动消息驱动概述是什么官方定义Spring Cloud Stream 是一个构件消息驱动微服务的框架。应用程序通过inputs或者outputs来与Spring Cloud Stream中的binder对象交互通过我们配置来binding(绑定),二Spring Cloud Stream的binder对象负责与消息中间件交互所以,我们只需要搞清楚如何与Spring Cloud Stream 交互就可以方便使用消息驱动的方式通过使用Spring

2020-07-30 12:34:10 668 2

原创 十七、SpringCloud学习笔记之Bus 消息总线

SpringCloud Bus 消息总线概述是什么Spring Cloud Bus 配合 Spring Cloud Config 使用可以实现配置的动态刷新。Spring Cloud Bus 是来将分布式系统的节点与轻量级消息系统链接起来的框架,它整合了Java的事件处理机制和消息中间件的功能Spring Cloud Bus 目前支持RabbitMQ和Kafka能干嘛Spring Cloud Bus 能管理和传播分布式系统间的消息,就像一个分布式执行器,可用于广播状态更改、事件推送等,也可以

2020-07-30 12:33:41 329

原创 十六、SpringCloud学习笔记之Config分布式配置中心

SpringCloud config分布式配置中心分布式系统面临的配置问题微服务意味着要将单体应用的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、动态的配置管理设施是必不可少的。Spring Cloud 提供了ConfigServer来解决这个问题。是什么Spring Cloud Config为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同的微服务应用的所有环境提供了一个中心化的外部配置

2020-07-30 12:33:35 138

原创 十五、SpringCloud学习笔记之Gateway-Filter的使用

Filter的使用是什么路由过滤器可用于修改进入的HTTP请求和返回的HTTP响应,路由过滤器只能指定路由进行使用Spring Cloud Gateway内置了多种过滤器,他们都由GatewayFilter的工厂类来产生Spring Cloud Gateway的Filter生命周期在业务逻辑之前:pre在业务逻辑之后:post种类GatewayFilter:单一GlobalFilter:全局常用的GatewayFilterAddRequestParameter过滤器工厂会在匹

2020-07-30 12:32:55 237

原创 十四、SpringCloud学习笔记之Gateway-Predicate的使用

Predicate的使用启动我们的gatewat9527Route Predicate Factories:Spring Cloud Gateway将路由匹配作为Spring WebFlux HandlerMapping基础架构的一部分。Spring Cloud Gateway包括许多内置的Route Predicate工厂。所有这些Predicate都与HTTP请求的不同属性匹配。多个RoutePredicate厂可以进行组合Spring Cloud Gateway创建Route对象时,使用

2020-07-30 12:32:50 472

原创 十三、SpringCloud学习笔记之Gateway+demo

Gateway网关概述简介官网:https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/html/是什么Gateway 是在Spring生态系统之上,基于Spring5,Spring Boot2 和Project Reactor等技术。Gateway旨在提供一种简单而有效的方式来对API进行路由,以及提供一些强大的过滤器功能,例如:熔断、限流、重试等。 Spring Cl

2020-07-30 12:32:44 438

原创 十二、SpringCloud学习笔记之服务监控hystrixDashboard

服务监控hystrixDashboard概述除了隔离依赖服务的调用之外,Hystrix还提供了准实时的调用监控(Hystrix Dashboard),Hystrix会持续的记录所有通过Hystrix发起的请求的执行信息,并以统计报表和图形的形式展示给用户,包括每秒执行多少请求多少成功,多少失败等,Netflix通过 Hystrix-metrics-event-stream项目实现了对以上指标的监控。Spring Cloud 也提供了Hystrix Dashboard 的整合,对监控内容转化成可视化界面

2020-07-30 12:32:39 153

原创 十一、SpringCloud学习笔记之hystrix服务熔断-工作流程

hystrix服务熔断断路器类似保险丝熔断是什么熔断机制概述:熔断机制是应对雪崩效应的一种微服务链路保护机制。当扇出链路的某个微服务出错不可用或者响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回错误的相应信息。当检测到该节点微服务调用响应正常后,恢复调用链路在Spring Cloud框架里,熔断机制通过Hystrix实现,Hystrix会监控微服务间调用的状况,当失败的调用到一定阈值,缺省是5秒内20次调用失败,就会启动熔断机制,熔断机制的注解是@HystrixComm

2020-07-30 12:32:34 513

原创 十、SpringCloud学习笔记之hystrix服务降级

hystrix服务降级降低配置@HystrixCommand降低配置8001先从自身找问题:设置自身调用超时时间的峰值,峰值内可以正常运行,超过了需要有兜底的方法处理,作服务降级fallback8001fallback业务类启用:@HystrixCommand报异常后如何处理一旦调用服务方法失败并抛出了错误信息后,会自动调用@HystrixCommand标注好的fallbackMethod调用类中的指定方法图示:上图故意制造异常接收3秒钟 ,运行5秒钟,超时异常当前服务不可用了,

2020-07-30 12:32:28 248

原创 九、SpringCloud学习笔记之hystrix案例-Jmeter测试高并发访问

hystrix案例构建新建项目:cloud-provider-hystrix-payment8001pom:<?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://

2020-07-30 12:32:08 248

原创 八、SpringCloud学习笔记之Hystrix断路器

Hystrix断路器1、概述分布式系统面临的问题:负载分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免的的失败服务雪崩:多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其他的微服务,这就是所谓的“扇出”。如果扇出的链路上某个微服务的调用响应时间过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,所谓的“雪崩效应”。对于高流量的应用来说,单一的后端依赖可能会导致所有服务器上的所有资源都在几秒中内饱和,比失

2020-07-30 12:32:01 166

原创 七、SpringCloud学习笔记之OpenFeign服务接口调用

OpenFeign服务接口调用概述Feign是一个声明式WebService客户端。使用Feign可以让编写WebService客户端更加简单它的使用方法是定义一个服务接口然后在上面添加注解。Feign也支持可拔插式的编码器和解码器。Spring Cloud对Feign进行了封装,使其支持了Spring Mvc标准注解和HttpMessageConverters。Feign可以与Eureka和Ribbon组合使用以支持负载均衡https://github.com/spring-cloud/sprin

2020-07-30 12:31:56 148

原创 六、SpringCloud学习笔记之Ribbon负载均衡服务调用

Ribbon负载均衡服务调用概述:Spring Cloud Ribbon 是基于Netflix Ribbon实现的一套客户端 负载均衡工具。简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的负载均衡算法和服务调用。Ribbon客户端组件提供一系列完善的配置项如 连接超时、重试等。简单地说,就是在配置文件中列出Load Balance (简称LB)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器,我们很容易使用Ribbon实现自定义

2020-07-30 12:31:50 146

原创 五、SpringCloud学习笔记之Consul服务注册与发现

Consul服务注册与发现Consul简介Consul是一套开源的分布式服务发现和配置管理系统,由HashiCorp公司使用Go语言开发。提供了微服务系统中的服务治理、配置中心、控制总线等功能,这些功能每一个都可以根据需要单独使用,也可以一起使用构建全方位的服务网络,总之,Consul提供了一种完整的服务网格解决方案。具有很多优点:包括:基于raft协议,比较简洁。支持健康检查,同时支持HTTP和DNS协议 支持跨数据中心的WAN集群 提供图形界面,跨平台,支持windows、linux、mac服

2020-07-30 12:31:43 215

原创 四、SpringCloud学习笔记之Zookeeper服务注册与发现

Zookeeper服务注册与发现Eureka停止更新了你怎么办:https://github.com/Netflix/eureka/wiki1、使用docker安装zookeeper下载镜像:docker pull zookeeper:3.4.9启动容器并添加映射:docker run --privileged=true -d --name zookeeper --publish 2181:2181 -d zookeeper:3.4.9查看是否启动:SpringCloud整合Zo

2020-07-30 12:31:38 164

原创 三、SpringCloud学习笔记之集群Eureka构建

集群Eureka构建步骤Eureka集群原理说明解决:搭建Eureka注册中心集群,实现负载均衡+故障容错EurekaServer集群环境构建步骤改pom:<?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"

2020-07-30 12:31:32 68

原创 二、SpringCloud学习笔记之单机Eureka构建

Eureka基础知识什么是服务治理:SpringCloud封装了Netflix公司开发的Eureka模块来实现服务治理在传统的rpc远程调用框架中,管理每个服务与服务之间依赖关系比较复杂,管理比较复杂,所以需要使用服务治理,管理服务于服务之间的依赖关系,可以实现服务调用、负载均衡、容错等。实现服务的发现与注册。什么是服务注册:Eureka采用了CS的设计架构,Eureka Server 作为服务注册功能的服务器,它是服务注册中心,而系统中的其他微服务,使用Eureka Client客户端连接到Eu

2020-07-30 12:31:25 105

原创 一、SpringCloud学习笔记之微服务架构编码构建

微服务架构编码构建约定 > 配置 > 编码版本:cloud:Hoxton.SR1boot:2.2.2.RELEASEcloud Alibaba:2.1.0.RELEASEjava:8maven:3.5及以上mysql:5.7及以上IDEA新建project工作空间1、微服务cloud整体聚合父工程Project1.New Project2、聚合总工程名字3、MAVEN选择版本4、字符编码4、注解生效激活5、JDK编译版本1.85、File Type文

2020-07-30 12:31:19 189

原创 Springboot、Mybatis—Plus、Druid整合多数据源

一、Springboot、Mybatis—Plus、Druid整合多数据源1、参考Mybatis—Plus官方文档https://mp.baomidou.com/guide/dynamic-datasource.html2、简介dynamic-datasource-spring-boot-starter 是一个基于springboot的快速集成多数据源的启动器,其支持 Jdk 1.7+, SpringBoot 1.4.x 1.5.x 2.0.x。3、特性1、数据源分组,适用于多种场景 纯粹多库

2020-07-30 12:31:11 312

原创 equals和==的区别

字符串常量存储位置,new String()存储位置,==比较前面两种创建字符创结果,equals和==区别,字符串使用equals底层是怎么比较的代码:public static void main(String[] args) { String str1 = "abc"; String str2 = "abc"; String str3 = new String("abc"); String str4 = "a" + "bc"; System.out.

2020-07-30 12:30:49 84

原创 单例

什么是SingletonSingleton:在Java中即指单例设计模式,它是软件开发中最常用的设计模式之一。单:唯一例:实例单例设计模式,即某个类在整个系统中只能有一个实例对象可被获取和使用的代码模式。例如:代表JVM运行环境的Runtime类要点一是某个类只能有一个实例;构造器私有化二是它必须自行创建这个实例;含有一个该类的静态变量来保存这个唯一的实例三是它必须自行向整个系统提供这个实例;对外提供获取该实例对象的方式:(1)直接暴露(2)用静态变量的g

2020-07-30 12:30:37 127

原创 死锁

产生死锁的主要原因系统资源不足进程运行推进的顺序不合适资源分配不当代码package com.liang.lock;import java.util.concurrent.TimeUnit;class HoldThread implements Runnable { private String lockA; private String lockB; public HoldThread(String lockA, String lockB) { .

2020-07-30 12:30:27 78

原创 线程池

为什么使用线程池,优势线程池做的工作主要是控制运行的线程的数量,处理过程中将任务加入队列,然后在线程创建后启动这些任务,如果线程超过了最大数量,超出的数量的线程排队等候,等其他线程执行完毕,再从队列中取出任务来执行.他的主要特点为:线程复用:控制最大并发数:管理线程.第一:降低资源消耗.通过重复利用自己创建的线程降低线程创建和销毁造成的消耗.第二: 提高响应速度.当任务到达时,任务可以不需要等到线程和粗昂就爱你就能立即执行.第三: 提高线程的可管理性.线程是稀缺资源,如果无限的创阿金,不仅会消耗

2020-07-30 12:29:58 163

空空如也

空空如也

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

TA关注的人

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