- 博客(27)
- 资源 (3)
- 问答 (3)
- 收藏
- 关注
原创 Sentinel限流熔断集成OpenFeign组件
说明:sentinel限流有编码方式,注解方式,控制台方式。这里只说明控制台限流+Nacos持久化方式。
2023-10-17 16:39:03
372
原创 授权认证之Shiro
代码地址:https://gitee.com/zlfmm/springCloudDemo/tree/master/ShiroCore代码地址:https://gitee.com/zlfmm/springCloudDemo/tree/master/ShiroSpringWebDemo
2021-06-30 20:55:00
143
原创 Docker
Docker一、什么是docker二、docker和虚拟机的区别三、docker的安装卸 载 老 版 本安装dockerEngines开启docker验证docker是否安装成功四、docker基础命令查看版本查看docker的信息docker的帮助命令查看运行中的docker查看容器的top信息查看容器元数据信息进入容器文件拷贝查看容器状态五、docker镜像命令查询镜像列表搜索镜像下载镜像删除镜像六、docker容器命令运行容器退出容器删除容器启动和重启容器停止容器杀死容器七、docker原理什么是镜像
2021-06-30 20:52:32
388
原创 Spring Cloud Sleuth + Zipkin
基本概念分布式跟踪系统在微服务架构中,众多的微服务之间互相调用,如何清晰地记录服务的调用链路是一个需要解决的问题。同时,由于各种原因,跨进程的服务调用失败时,运维人员希望能够通过查看日志和查看服务之间的调用关系来定位问题。一个分布式服务跟踪系统主要由三部分构成:数据采集数据传输数据存储数据分析数据可视化分布式服务跟踪系统设计理念:平台无关性多语言支持多中间件支持sleuth 介绍Spring cloud sleuth 是为了对微服务之间调用链路进行跟踪的一个组件,sleu
2021-05-22 14:06:02
1040
原创 Spring Cloud Stream + Nacos
Spring Cloud Stream + NacosSpring Cloud StreamSpringMessageSpring MessagingSpring IntegrationStream使用多个Kafka实例使用NacosSpring Cloud StreamSpringMessage消息Messageing对应的模型就包括一个消息体Payload和消息头。消息通道MessageChannel用于接受消息,调用send方法可以将消息发送至该消息通道中。Spring Messagin
2021-05-21 09:24:28
817
2
原创 Spring Cloud Gateway
网关的作用无网关会有哪些问题?增加客户端请求的复杂度;服务端鉴权复杂,每个服务都要鉴权,安全性低;无法适配各种协议;有网关针对所有请求进行统一鉴权、限流、熔断、日志;协议转化。针对后端多种不同的协议,在网关层统一处理后以Http对外提供服务;提供统一的错误码;请求转发,并且可以基于网关实现内网和外网的隔离。...
2021-05-17 22:07:35
298
1
原创 限流熔断之Sentinel
什么是限流?限流的目的是通过限制并发访问数或者限制一个窗口内允许处理的请求数量来保护系统,一旦达到限制流量,则对当前请求处理采取对应的的拒绝策略。如跳转错误页面、进行排队、服务降级等。什么是熔断?服务熔断是指当前服务提供者无法正常为服务调用者提供服务时,比如请求超时、服务异常等,为了防止整个系统出现雪崩效应,暂时将出现故障的接口隔离出来,断绝与外部接口的联系,当触发熔断之后,后续一段时间内该服务调用者的请求都会直接失败,直到目标服务恢复正常。服务降级的几种常见方案平均响应时间比如1秒内持续进入
2021-05-15 18:05:16
1468
4
原创 服务治理之Eureka
Eureka服务治理服务治理服务治理的概念服务发现的两种方式客户端服务发现服务端服务发现什么是CAP?Eureka实战搭建单机服务注册中心搭建集群服务注册中心Eureka集群架构常用的HttpRest接口服务治理服务治理的概念服务治理可以说是微服务架构中最为核心和基础的模块,它 主要用来实现各个微服务实例的自动化注册与服务发现。在传统的系统部署中,服务运行在一个固定的已知的IP和端口上,如果一个服务需要调用另一个服务,那么可以通过地 址直接调用。但是,在虚拟化或者容器化的环境中,服务实 例的启动和
2021-04-25 22:11:35
205
原创 Spring Cloud Ribbon+Feign
Ribbon、FeignRibbonRibbon主要包含如下组件RestTemplate 负载均衡示例Feign日志配置Feign自定义处理返回的异常Feign使用OKhttp发送requestFeign开启GZIP压缩RibbonSpring Cloud Ribbon是⼀个基于HTTP和TCP的客户端负载均衡⼯具,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以让我们轻松地将⾯向服换成客户端负载均衡的服务调⽤。Spring Cloud Ribbon虽然只是⼀个⼯具类框
2021-04-25 21:24:19
624
原创 RPC框架之Dubbo
为什么需要Dubbo单⼀应⽤架构在刚开始的时候,企业的⽤户量、数据量规模都⽐较⼩,项⽬所有的功能模块都放在⼀个⼯程中编码、编译、打包并且部署在⼀个Tomcat容器中的架构模式就是单体应⽤架构,这样的架构既简单实 ⽤、便于维护,成本⼜低,成为了那个时代的主流架构⽅式。这时候由于业务以及规模都⽐较⼩,所以⽆论服务以及DB都是使⽤单节点(all-in-one)的⽅式进⾏部署,这就是单体架构。优点:1. 项⽬前期开发节奏快,团队成员少的时候能够快速迭代;2. 架构简单:MVC架构,只需要借助IDE开发、
2021-04-18 21:43:00
129
1
原创 线程池原理
线程池什么是线程池?线程池的工作原理线程池的构造函数RejectedExecutionHandler 拒绝策略BlockingQueue 任务队列Executors中提供的线程池的实现源码CAPACITY的初始化ctl含义(线程池运行状态和活动线程数)什么是线程池?为了避免系统频繁地创建和销毁线程,我们可以让创建 的线程复用。在线程池中,总有那么几个活跃线程,当你需要使用线程时,可以从池子中随便拿一个空闲线程,当完成工作 时,并不急着关闭线程,而是将这个线程退回到线程池中,方便其他人使用。简而言之,
2021-04-17 20:54:28
397
原创 JUC原理
JUC概述JUC就是java.util.concurrent⼯具包的简称。这是⼀个处理线程并发的⼯具包,JDK 1.5开始出现的。AQSAQS(AbstractQueuedSynchronizer) “抽象队列同步器”。它定义了⼀套多线程访问共享资源的同步器框架。它维护了⼀个volatile int state(代表共享资源)和⼀个FIFO线程等待队列(多线程争⽤资源被阻塞时会进⼊此队列)。AQS定义两种资源共享⽅式:Exclusive(独占,只有⼀个线程能执⾏,如ReentrantLock)
2021-04-17 20:53:39
234
原创 AQS讲解原理
JDK高级并发组件CyclicBarrier使用场景:协调多个线程阻塞在某个屏障点,并在指定数量线程全达到屏障点后同时解除阻塞。例如:英雄联盟5V5加载界面,只有全部都达到屏障点才能进游戏。特点:可循环使用使用Lock.condition实现import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CyclicBarrier;public class CyclicBarrierDemo
2021-04-17 20:53:12
112
1
原创 JMM(Java内存模型)
CPU架构CPU架构缓存一致性缓存一致性协议给缓存行(通常为64字节)定义了个状态,用来描述该缓存行是否被多处理器共享、是否修改,缓存一致性协议最出名的是MESI协议。MESI中每个缓存行都有四个状态,分别是独占E(exclusive)、修改M(modified)、共享S(shared)、失效I(invalid)。独占(exclusive):仅当前处理器拥有该缓存行,并且没有修改过,是最新的值。共享(share):有多个处理器拥有该缓存行,每个处理器都没有修改过缓存,是最新的值。修改(mod
2021-04-06 09:00:54
885
原创 网络编程之Netty
什么是TCP协议?TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。三次握手:tcp三次握手的最主要目的是保证连接是双工的,可靠更多的是通过重传机制来保证的:第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器 进入SYN_RECV状态;第三次握手:客户端收到服务器的SYN+ACK包
2021-04-01 09:01:30
345
1
原创 中间件Kafka
Kafka什么是Kafka?Kafka的消费模式点对点模式发布/订阅模式Kafka基础架构图基础配置Broker参数:主题级别的参数生产者Kafka生产者架构为什么需要分区?生产者分区策略消费者消费者基础架构图什么时候会触发分区分配策略(消费再均衡Rebalance)?消费者分区分配策略Range分配策略(范围分区)RoundRobin分配策略(轮询分区)Stricky分配策略消费者协调器和消费组协调器第一阶段 (FIND_COORDINATOR)第二阶段 (JOIN_GROUP)第三阶段(SYNC_GRO
2021-03-24 15:58:06
337
原创 Redis
Redis安装、数据结构、命令、Jedis操作RedisRedis的数据结构RedisRedis 是一个开源(BSD许可)的,**内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件**。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis是一个开源的使用ANSI
2021-03-20 17:41:12
262
1
原创 Mybatis源码解读
Mybati源码解析配置文件:mybatis-config.xml<?xml version="1.0" encoding="utf-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <typeAliases><!--别名-
2021-03-18 19:40:34
240
原创 Spring Boot
Spring Boot一、基础1. 什么是Spring Boot1.1 特征1.2 构建二、原理2.1 核心注解2.1.1 @SpringBootApplicationSpringBootConfigurationComponentScanEnableAutoConfiguration(重中之重)SpringFactoriesLoader详解Spring Boot启动原理配置静态资源地址和访问路径三、实战一、基础1. 什么是Spring BootSpring Boot makes it easy t
2021-03-01 17:12:15
679
1
原创 JDK8新特性
CompletableFutrue实现线程的三种方法:继承Thread类;实现Runnable接口;实现Callable<返回类型>接口。实现Runnable接口没有返回值;Callable接口可以通过Future获取返回值。使用Futureclass Task implements Callable<String> { public String call() throws Exception { return longTimeCalc
2021-02-24 17:06:35
467
原创 函数式编程
Java8新特性、函数式编程新日期APIInstant(时刻) & Duration(时间间隔)ZonedDateTime(带时区的日期和时间) & LocalDateTime(本地日期和时间)DateTimeFormatter(取代SimpleDateFormat)TemporalAdjusters函数式编程Lambda表达式函数式接口方法引用StreamStream的创建使用map使用filter使用reduceConcurrent其他新日期APIJava有两套日期和时间的API:
2021-02-22 13:31:40
447
原创 设计模式讲解
一、设计模式六大原则 计划任务最终目的:抽象构建框架、实现扩展细节。(高内聚低耦合)单一职责原则里氏替换原则接口隔离原则迪米特法则依赖倒置原则开闭原则https://blog.youkuaiyun.com/qq_33507618/article/details/111866527?spm=1001.2014.3001.5501二、不使用工厂模式根据构造方法来创建类,耦合度较高,不易扩展。三、简单工厂模式分为工厂类、抽象产品类(抽象类或者接口)、具体产品类。工厂类使用ifelse或者sw
2021-02-07 15:45:38
478
原创 Java反射、泛型、容器
Java反射、泛型、容器反射一、什么是反射?二、创建Class对象的三种方式方法一:直接通过一个class的静态变量class获取方法二:通过该实例变量提供的getClass()方法获取方法三:通过静态方法Class.forName()获取三、通过Class创建对象无参构造方法有参构造方法四、通过反射获取属性值五、创建一个反射工具类泛型容器反射一、什么是反射?Class是反射的核心。二、创建Class对象的三种方式创建一个实体类Person:package com.company.demo2;
2020-12-30 16:32:17
288
原创 设计模式的六大原则
设计模式的六大原则设计模式的六大原则设计模式的六大原则在学习设计模式之前,我们需要先了解下设计模式的六大原则。开闭原则(Open Close Principle)开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。里氏代换原则(Liskov Substitution Principle)里氏代换原则
2020-12-28 14:45:07
798
TA创建的收藏夹 TA关注的收藏夹
TA关注的人