自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring Aop详解

Spring aop详解spring aop 的概述aop 面向切面(方面)编程,扩展功能不修改源代码的实现。aop采取的是横向抽取机制,取代了传统纵向继承体系重复代码(性能监视、事物管理、安全检查、缓存)Aop 的原理public class User { //添加用户的方法 public void add() { //添加逻辑 } ...

2019-03-10 11:06:20 1368

原创 Spring循环引用解决

循环依赖引用解决使用三级缓存1级 singObjects(单例池)2级earlysingObjects(早期单例池)3级singletonFactories(单例工厂池)

2022-06-26 23:58:00 392

原创 Spring容器刷新完整流程(12步)详解

2022-06-25 18:45:00 708

原创 Spring生命周期源码分析文图

历经半个月终于理清楚了SpringBean的脉络

2022-06-23 11:30:00 248 1

原创 Spring的bean定义信息注册流程

核心注解自查注解功能@Bean容器中注册组件@Primary同类组件如果有多个,标注主组件@DependsOn组件之间声明依赖关系@Lazy组件懒加载(最后使用的时候才创建)@Scope声明组件的作用范围(SCOPE_PROTOTYPE,SCOPE_SINGLETON)@Configuration声明这是一个配置类,替换以前配置文件...

2022-06-08 00:53:00 183

原创 结构型设计模式

一、为什么使用结构型设计模式结构型模式关注点“怎样组合对象/类?”所以我们关注下类的组合关系类结构型模式关心类的组合,由多个类可以组合成一个更大的(继承)对象结构型模式关心类与对象的组合,通过关联关系在一个类中定义另一个类的实例对象(组合)根据“合成复用原则”,在系统中尽量使用关联关系来替代继承关系,因此大部分结构型模式都是对象结构型模式。适配器模式(Adapter Pat...

2022-05-30 23:06:00 92

原创 一、创建者设计模式

一、设计模式总览创建型模式(Creational Patterns)单例(Singleton)模式原型(Prototype)模式工厂方法(FactoryMethod)模式抽象工厂(AbstractFactory)模式建造者(Builder)模式行为型模式(Behavioral Patterns)模板方法(Template Method)模式策略(Strategy)模式...

2022-05-27 02:02:00 167

原创 JVM调优

一、Tomcat参数调优(优化吞吐量)1.1 禁用AJP服务什么是AJP呢 AJP(Apache JServer Protocol)是定向包协议 。WEB服务器和Servlet容器通过TCP连接来交互;为 了节省SOCKET创建的昂贵代价,WEB服务器会尝试维护一个永久TCP连接到servlet容器,并且在多个请求和响应周 期过程会重用连接。Tomcat在 server.xml 中配置了...

2022-05-23 01:36:00 95

原创 1、初始JVM

一、什么是JVM1.1 什么是JVMVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。主流虚拟机虚拟机名称介绍HotSpotOracle/Sun JDK和OpenJDK都使用HotSPot VM的相同核心J9J9是IBM开发...

2022-05-11 00:43:00 227

原创 数据结构-算法思维

一、贪心算法1.1 定义贪婪算法(Greedy)的定义:是一种在每一步选中都采取在当前状态下最好或最优的选择,从而希望 导致结果是全局最好或最优的算法。贪婪算法:当下做局部最优判断,不能回退1.2 经典问题:部分背包背包问题是算法的经典问题,分为部分背包和0-1背包,主要区别如下: 部分背包:某件物品是一堆,可以带走其一部分0-1背包:对于某件物品,要么被带走(选择了它),要么不...

2022-04-24 00:46:00 421

原创 数据结构-图

一、概念图(Graph),是一种复杂的非线性表结构。图中的元素我们就叫做顶点(vertex)图中的一个顶点可以与任意其他顶点建立连接关系。我们把这种建立的关系叫做边(edge)跟顶点相连接的边的条数叫做度(degree)图这种结构有很广泛的应用,比如社交网络,电子地图,多对多的关系就可以用图来表示。有向图:边有方向的图,比如A点到B点的直线距离,微信的添加好友是双向的无向图:边无...

2022-04-23 00:31:00 240

原创 数据结构-树

一、树的概念有很多数据的逻辑关系并不是线性关系,在实际场景中,常常存在着一对多,甚至是多对多的情况,它是由n(n≥0)个有限节点组成一个具有层次关系的集合树的分类如下:二、二叉树二叉树(binary tree)是树的一种特殊形式。二叉,顾名思义,这种树的每个节点最多有2个孩子节 点。注意,这里是最多有2个,也可能只有1个,或者没有孩子节点。二叉树节点的两个孩子节点,一个被...

2022-04-17 23:41:00 175

原创 Sleuth + Zipkin分布式链路追踪

一、分布式链路追踪技术适用场景(问题场景)为了支撑日益增⻓的庞大业务量,我们会使用微服务架构设计我们的系统,使得我们的系统不仅能够通过集群部署抵挡流量的冲击,又能根据业务进行灵活的扩展。那么,在微服务架构下,一次请求少则经过三四次服务调用完成,多则跨越几十个甚至是上百个服务节点。那么问题接踵而来:1)如何动态展示服务的调用链路?(比如A服务调用了哪些其他的服务---依赖 关系)2)如...

2022-03-26 01:31:00 546

原创 SpringCloud Stream消息驱动组件

一、Stream解决的痛点问题Spring Cloud Stream 消息驱动组件帮助我们更快速,更方便,更友好的去构建消息 驱动微服务的MQ消息中间件广泛应用在应用解耦合、异步消息处理、流量削峰等场景中不同的MQ消息中间件内部机制包括使用方式都会有所不同,比如RabbitMQ中有 Exchange(交换机/交换器)这一概念,kafka有Topic、Partition分区这些概念, M...

2022-03-25 01:32:00 1947

原创 Config分布式配置中心

一、分布式配置中心应用场景单体应用架构,配置信息的管理、维护并不会显得特别麻烦,手动操作就可以,因为就一个工程;微服务架构,因为我们的分布式集群环境中可能有很多个微服务,我们不可能一个 一个去修改配置然后重启生效,在一定场景下我们还需要在运行期间动态调整配置 信息,比如:根据各个微服务的负载情况,动态调整数据源连接池大小,我们希望 配置内容发生变化的时候,微服务可以自动更新。场景总结如...

2022-03-24 01:30:00 524

原创 SpringCloud GateWay网关

一、GateWay简介Spring Cloud GateWay是Spring Cloud的一个全新项目,目标是取代Netflix Zuul, 它基于Spring5.0+SpringBoot2.0+WebFlux(基于高性能的Reactor模式响应式通信 框架Netty,异步非阻塞模型)等技术开发,性能高于Zuul,官方测试,GateWay是 Zuul的1.6倍,旨在为微服务架构提供一种简单...

2022-03-23 00:48:00 1366

原创 Feign远程调用

一、Feign简介Feign是Netflix开发的一个轻量级RESTful的HTTP服务客户端(用它来发起请求, 远程调用的),是以Java接口注解的方式调用Http请求,而不用像Java中通过封装 HTTP请求报文的方式直接调用,Feign被广泛应用在Spring Cloud 的解决方案中。类似于Dubbo,服务消费者拿到服务提供者的接口,然后像调用本地接口方法一样 去调用,实际发出的是远...

2022-03-22 01:48:00 5944

原创 Hystrix熔断器

一、Hystrix简介Hystrix(豪猪----->刺),宣言“defend your app”是由Netflix开源的一个 延迟和容错库,用于隔离访问远程系统、服务或者第三方库,防止级联失败,从而 提升系统的可用性与容错性。Hystrix主要通过以下几点实现延迟和容错。包裹请求:使用HystrixCommand包裹对依赖的调用逻辑。 自动投递微服务方 法(@HystrixCo...

2022-03-21 01:14:00 220

原创 三、Ribbon负载均衡

一、关于负载均衡负载均衡一般分为服务器端负载均衡和客户端负载均衡服务器端负载均衡,比如Nginx、F5这些,请求到达服务器之后由这些负载均衡器根据一定的算法将请求路由到目标服务器处理。客户端负载均衡,比如我们要说的Ribbon,服务消费者客户端会有一个服务器 地址列表,调用方在请求前通过一定的负载均衡算法选择一个服务器进行访问,负 载均衡算法的执行是在请求客户端进行Ribbon是Net...

2022-03-18 01:16:00 171

原创 2、SpringCloud-Eureka服务注册中心

一、服务注册中心注意:服务注册中心本质上是为了解耦服务提供者和服务消费者。对于任何一个微服务,原则上都应存在或者支持多个提供者(比如简历微服务部署 多个实例),这是由微服务的分布式属性决定的。更进一步,为了支持弹性扩缩容特性,一个微服务的提供者的数量和分布往往是动 态变化的,也是无法预先确定的。因此,原本在单体应用阶段常用的静态LB机制就 不再适用了,需要引入额外的组件来管理微服务提供者的注...

2022-03-16 01:34:00 674

原创 1、SpringCloud概述

一、SpringCloud是什么​ Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利 性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总 线、负载均衡、断路器、数据监控等,都可以用 Spring Boot的开发⻛格做到一键启 动和部署。Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发的比较 成熟、经得起实际考验的...

2022-03-16 01:33:00 1585

原创 dubbo服务注册与消费源码剖析

一、注册中心Zookeeper剖析​ 注册中心是Dubbo的重要组成部分,主要用于服务的注册与发现,我们可以选择Redis、Nacos、 Zookeeper作为Dubbo的注册中心,Dubbo推荐用户使用Zookeeper作为注册中心。注册中心Zookeeper目录结构例如:只有一个提供者和消费者。 com.lagou.service.HelloService 为我们所提供的服务。pu...

2022-03-06 12:05:00 1968

原创 Dubbo-Dubbo调用关系说明

1、Dubbo调用关系说明provide 暴露服务的服务提供者protocol 负责提供者和消费者指尖协议交互数据Service 真实的业务服务信息,可以理解成接口和实现Container Dubbo的运行环境Consumer 调用远程服务的服务消费方Protocol 负责消费者和服务提供者协议交互数据Cluster 感知提供者端的列表信息Proxy 可以理解成提供者的服...

2022-03-06 12:04:00 431

原创 5、架构设计基本原则

一、开闭原则1.1定义开闭原则:软件实体应当对扩展开放,对修改关闭,这就是开闭原则的经典定义开闭原则的含义是:当应用的需求改变时,在不修改软件实体的源代码或者二进制代码的前提下,可以扩展模块的功能,使其满足新的需求。1.2 作用开闭原则是面向对象程序设计的终极目标,它使软件实体拥有一定的适应性和灵活性的同时具备稳定性和延续性1.3 实现方法可以通过“抽象约束、封装变化”来实现开闭...

2022-03-06 12:03:00 130

原创 分布式架构服务调用

一、服务调用和传统的单体架构相比,分布式多了一个远程服务之间的通信,不管是 soa 还是微服务,他们本质上都是对于业务服务的提炼和复用。那么远程服务之间的调用才是实现分布式的关键因素二、实现方式2.1 HTTP 应用协议的通信框架1.HttpURLConnectionjava 原生 HttpURLConnection是基于http协议的,支持get,post,put,delete...

2022-03-06 12:02:00 1067 2

原创 分布式服务治理

一、服务协调分布式协调技术主要用来解决分布式环境当中多个进程之间的同步控制,让他们有序的去访问某种临界资源,防止造成"脏数据"的后果分布式锁也就是我们分布式协调技术实现的核心内容。分布式锁两种实现方式:基于缓存(Redis等)实现分布式锁获取锁的时候,使用setnx加锁,并使用expire命令为锁添加一个超时时间,超过该时间则自动释放锁,锁的value值为一个随机生成的UUID...

2022-03-06 12:02:00 1080

原创 分布式系统设计策略

一、心跳检测​ 在分布式环境中,我们提及过存在非常多的节点(Node)。那么就有一个非常重要的问题,如何检测一个节点出现了故障乃至无法工作了?通常解决这一问题是采用心跳检测的手段,如同通过仪器对病人进行一些检测诊断一样。若Server没有收到Node3的心跳时,Server认为Node3失联。但是失联是失去联系,并不确定是否 是Node3故障,有可能是Node3处于繁忙状态,导致调用检测...

2022-03-06 12:01:00 479

原创 自定义RPC框架

一、分布式架构网络通信在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现 远程通讯的技术,例如:RMI、Hessian、SOAP、ESB和JMS等,它们背后到底是基于什么原理实现的1.1 基本原理网络 通信需要做的就是将流从一台计算机传输到另外一台计算机,基于传输协议和网络IO来实现,其中传输 协议比较出名的有tcp、udp等等,tcp、udp都是在基于Socket概念上为某类应用场景而扩展出的传输 协议,网络IO,主要有bio、nio、aio三种方式,所

2022-01-17 17:03:46 579

原创 漏洞

1.跨站点请求伪造(CSRF)1.1 简介CSRF攻击的全称是跨站请求伪造( cross site request forgery ):是一种对网站的恶意利用,尽管听起来跟XSS跨站脚本攻击有点相似,但事 实上CSRF与XSS差别很大,XSS利用的是站点内的信任用户,而CSRF则是通过 伪装来自受信任用户的请求来利用受信任的网站。简单理解:一种可以被攻击者用来通过用户浏览器冒充用户身份...

2021-12-22 00:17:00 149

原创 漏洞-跨站脚本攻击

漏洞-跨站脚本攻击1.1 简介XSS :Cross Site Scripting,为不和层叠样式表(Cascading Style Sheets, CSS) 的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中 Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。在一开始的时候,这种攻击的演示案例是跨域的,所以叫"跨站脚本"。攻击原理:XSS的原理是WEB应用程序混淆了用户提交的数据和JS脚本的代码边界,导致 浏览器把用

2021-12-19 23:58:07 697

原创 HTTPS

1、概念HTTPS(HyperText Transfer Protocol over Secure Socket Layer)超文本传 输安全协议, 近两年Google、Baidu、Facebook 等这样的互联网巨头,不谋 而合地开始大力推行 HTTPS, 国内外的大型互联网公司很多也都已经启用了全 站 HTTPS,这也是未来互联网发展的趋势为鼓励全球网站的 HTTPS 实现,一些互联网公司都提出了自己的要求Google 已调整搜索引擎算法,让采用 HTTPS 的网站在搜索中排名更靠前从 20.

2021-12-15 23:42:51 1351

原创 HTTP协议

一、HTTP报文1.1报文流动HTTP 使用术语流入(inbound) 和流出(outbound) 来描述事务处理 (transaction)的方向。 报文流入源端服务器, 工作完成之后, 会流回用户 的 Agent 代理中1.2 报文的组成部分HTTP 报文是简单的格式化数据块。 每条报文都包含一条来自客户端的请求,或者一条来自服务器的响应。 它们由三个部分组成:对报文进行描述的起始行(start line)包含属性的首部(header)块以及可选的包含数据的主体(body) 部分

2021-12-15 23:42:16 1566

原创 将博客搬至CSDN

想要吧博客搬至CSDN

2021-12-15 16:00:00 44

原创 SpringSecurity认证基本原理与认证2种方式

2.1 HttpBasic认证2.2  formLogin登录认证模式2.3 表单认证2.3.1 在config包下编写SecurityConfiguration配置类2.3.2 解决静态资源被拦截问题改造登录2.4 基于数据库实现认证功能2.5 密码加密验证Spring Security功能的实现主要是由一系列过滤器相互配合完 成。也称之为过滤器链,Spring Security默认加载15个过滤器, 但是随着配置可以增加或者删除一些过滤器.一、过滤器链介绍image-2021112415505

2021-12-14 15:10:55 4368 1

原创 Cluster之Session共享

Session共享及Session保持或者叫做Session一致性Session问题原因分析根本上来说是因为Http协议是无状态的协议。客户端和服务端在某次会话中产 生的数据不会被保留下来,所以第二次请求服务端无法认识到你曾经来过, Http为什么要设计为无状态 协议?早期都是静态⻚面无所谓有无状态,后来有动态的内容更丰富,就需要有状态,出现了两种用于 保持Http状态的技术,那就是Coo...

2021-12-11 11:42:00 794

原创 Cluster之 分布式ID解决方案

为什么需要分布式ID(分布式集群环境下的全局唯一ID)UUIDUUID 是指Universally Unique Identifier,翻译为中文是通用唯一识别码产生重复 UUID 并造成错误的情况非常低,是故大可不必考虑此问题。 Java中得到一个UUID,可以使用java.util包提供的方法独立数据库的自增ID在这个数据库中创建一张表,这张表的ID设置为自增,其他地方 需要全局...

2021-12-10 00:06:00 304

原创 Cluster之 一致性Hash算法

分布式和集群分布式和集群是不一样的,分布式一定是集群,但是集群不一定是分布式因为集群就是多个实例一起 工作,分布式将一个系统拆分之后那就是多个实例;集群并不一定是分布式,因为复制型的集群不是拆 分而是复制一、Hash算法应用场景Hash算法在分布式集群架构中的应用场景Hash算法在很多分布式集群产品中都有应用,比如分布式集群架构Redis、Hadoop、ElasticSearch...

2021-12-09 00:12:00 111

原创 Tomcat核⼼流程源码剖析

Tomcat中的各容器组件都会涉及创建、销毁等,因此设计了⽣命周期接⼝Lifecycle进⾏统⼀规范,各容器组件实现该接⼝一、Lifecycle接口1.1 Lifecycle⽣命周期接⼝主要⽅法示意1.2 Lifecycle⽣命周期接⼝继承体系示意二、核⼼流程源码剖析源码追踪部分我们关注两个流程:Tomcat启动流程和Tomcat请求处理流程2.1 Tomcat启动流程2.2...

2021-12-07 00:14:00 69

原创 Tomcat系统架构与原理剖析

一、浏览器访问服务器的流程http请求的处理过程注意:浏览器访问服务器使用的是Http协议,Http是应用层协议,用于定义数据通信的格式,具体的数 据传输使用的是TCP/IP协议二、Tomcat 系统总体架构2.1Tomcat 请求处理大致过程Tomcat是一个Http服务器(能够接收并且处理http请求,所以tomcat是一个http服务器)我们使用浏览器向某一个网站发起请求...

2021-12-01 22:32:00 232

原创 一、响应式编程规范

响应式流(Reactive Streams)规范,规定了异步组件之间使用背压进行交互。响应式流在Java 9中使用Flow API适配。Flow API是互操作的规范,而不是具体的实现,它的语义跟响应式流规范一致Publisher表示数据流的生产者或数据源,包含一个方法让订阅者注册到发布者,Publisher 代表了发布者和订阅者直接连接的标准化入口点。public interface P...

2021-11-29 17:35:00 208

空空如也

空空如也

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

TA关注的人

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