自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 图解红黑树与Java实现

50章图帮你彻底理解红黑树的前世今生与平衡背后的原理

2022-02-20 23:30:25 1070

原创 图解AVL树与Java实现

最好理解的图解AVL树,增删改查及其恢复平衡原理,最后附带Java实现

2022-02-18 20:29:46 644

原创 图解HashMap源码

20张图帮你理解HashMap原理与源码

2022-02-15 23:19:14 556

原创 SpringApplication.run()创建初始化流程

1、分析之前从 @SpringBootApplication 来入手我们可以看到 SpringBoot 的自动配置原理,那我们的整个 SpringBoot 应用到底是怎么启动起来的呢?它启动的过程中又干了那些事情呢?这就要从这一句神秘的代码开始探索了SpringApplication.run(BootTestApplication.class, args);大家要额外注意,因为 SpringBoot 在启动整个应用的过程中,有着非常多的时机,在这些时机中我们又可能需要自定义干一些活,我们需要一些

2021-01-17 09:53:06 954

原创 SpringBoot自定义场景启动器starter

1、概述starter:这个场景需要使用到的依赖是什么?如何编写自动配置?@Configuration //指定该类是一个配置类@ConditionalOnXXX //在指定条件成立的情况下自动配置类生效@AutoConfigureOrder //指定自动配置类的顺序@AutoConfigureAfter //指定自动配置类的顺序@Bean //给容器中添加组件@ConfigurationProperties(prefix

2020-12-14 15:29:46 362 1

原创 SpringBootWeb模块的默认规则研究

文章目录1、配置文件的加载位置2、静态资源映射规则2.1、第一种映射规则2.1.1、官方文档介绍2.1.2、源码分析2.2、第二种映射规则2.2.1、官方文档介绍2.2.2、源码分析2.3、欢迎页映射规则2.3.1、官方文档介绍2.3.2、源码分析3、templates文件夹3.1、静态页面3.2、动态页面4、错误页面处理(Error Handling)4.1官方文档介绍4.2、源码分析5、WebMvcConfigurer配置讲解5.1、Spring官方API与文档介绍5.2、addInterceptors

2020-12-11 11:53:02 17945 23

原创 Docker-Compose

简介概述Dockerfile build run 手动操作,单个容器微服务 若有100个微服务 且其中还有依赖关系?Dcoker Compose来轻松高效的管理容器,定义运行多个容器!Docker-Compose将所管理的容器分为三层,分别是工程(project),服务(service)以及容器(container)Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名

2020-12-08 17:58:44 266

原创 SpringCloud Alibaba入门简介

为什么会出现SpringCloud Alibaba?Netflix项目进入维护模式官方博客网址:https://spring.io/blog/2018/12/12/spring-cloud-greenwich-rc1-available-now[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R0O6PIvw-1605409925987)(D:\note\images\SpringCloud\image-20201114123016365.png)]维护说明上图所述并

2020-12-02 19:09:17 252 1

原创 SpringCloudAlibaba笔记——Sentinel实现熔断与限流

文章目录Sentinel概述1、官网2、Sentinel是什么?3、Sentinel去哪下?3、Sentinel能干嘛?4、Sentinel怎么玩?安装Sentinel控制台1、Sentinel两部分组件2、安装步骤初始化演示工程1、Nacos启动成功2、工程3、测试流控规则1、基本介绍2、流控模式2.1、直接(默认)2.2、关联2.3、链路3、流控效果3.1、快速失败3.2、预热(Warm Up)3.3、排队等待降级规则1、概述2、熔断策略3、熔断降级规则说明热点key限流1、基本介绍1.1、热点key限

2020-12-02 18:49:00 339

原创 SpringCloudAlibaba笔记——Nacos服务注册与配置中心

Nacos简介1、为什么叫Nacos前四个字母分别为Naming和Configuration的前两个字母,最后的S为Service2、Nacos是什么?一个更易于构建云原生应用的动态服务发现,配置管理和服务管理中心Nacos:Dynamic Naming And Configuration ServiceNacos就是注册中心 + 配置中心的总和,等价于Eureka + Config + Bus3、Nacos能干嘛?替代Eureka做服务注册中心替代Config做服务配置中心替代Bus

2020-12-02 18:36:03 189

原创 SpringCloud笔记——Stream消息驱动

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

2020-11-15 11:09:30 188 1

原创 Springcloud笔记——Bus消息总线

概述根据Spring Cloud Config配置中心,当我们更改了GitHub上面的配置文件后,若想要获取到最新的配置,需要手动刷新或者利用webhook的机制每次提交代码发送请求来刷新客户端,客户端越来越多的时候,需要每个客户端都执行一遍,这种方案很不好。使用Spring Cloud Bus(消息总线)可以解决这一问题1、Bus是什么?Spring Cloud Bus 配合 Spring Cloud Config 使用可以实现配置的自动刷新Spring Cloud Bus是用来将分布式系统的

2020-11-11 21:27:20 252

原创 RabbitMQ详细笔记(包含spring整合与集群搭建)

文章目录MQ引言1、什么是MQ2、MQ有哪些3、不同MQ特点RabbitMQ引言1、RabbitMQ的架构与基础概念2、RabbitMQ生产消费消息流程3、RabbitMQ的安装RabbitMQ配置1、RabbitMQ管理命令行2、web管理界面介绍RabbitMQ的消息模型开发1、AMQP协议的回顾2、RabbitMQ支持的消息模型3、引入依赖4、第一种模型(Hello World)开发生产者开发消费者封装连接工具类5、第二种模型(Work Queue)开发生产者开发消费者测试结果消息自动确认机制6、第三

2020-11-11 19:27:23 593

原创 SpringCloud笔记——Config分布式配置中心

概述分布式系统面临的问题微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务由于每个服务都需要必要的配置信息才能运行,所以—套集中式的、动态的配置管理设施是必不可少的。SpringCloud提供了ConfigServer来解决这个问题,我们每一个微服务自己带着一个application.yml,上百个配置文件的管理…你就等着哭去吧是什么?Spring Cloud Config为微服务架构中的微服务提供集中化的外部配置支持配置服务器为各个不同

2020-11-07 23:36:34 203

原创 SpringCloud笔记——Gateway服务网关

@OC概述简介官网上一代Netflix的Zuul 1.X:https://github.com/Netflix/zuul/wiki/Gateway:https://docs.spring.io/spring-cloud-gateway/docs/2.2.5.RELEASE/reference/html/是什么?Spring Cloud全家桶中有一个很重要的组件就是网关,在1.x版本中都是采用的Zuul网关但在2.x版本中,Zuul的升级一直跳票,Spring Cloud最后自己研发了一个网关

2020-11-03 18:28:50 1260

原创 SpringCloud笔记——Hystrix断路器

文章目录概述分布式系统面临的问题Hystrix是什么Hystrix能干嘛?官网资料Hystrix停更进维Hystrix重要概念服务降级(FallBack)服务熔断(Break)服务限流(FlowLimit)Hystrix案例构建高并发测试**JMeter测试**JMeter压力测试结论新建model消费者80加入高并发测试故障现象和导致原因如何解决?解决的需求?服务降级8001自身找问题8001FallBack80FallBack目前问题解决问题服务熔断熔断是什么?实操总结服务限流服务监控HystrixDa

2020-11-01 12:39:03 228

原创 SpringCloud笔记——OpenFeign服务接口调用

Ribbon、Feign与OpenFeignRibbonRibbon是 Netflix 开源的基于 HTTP 和 TCP 等协议负载均衡组件Ribbon可以用来做客户端负载均衡,调用注册中心的服务Ribbon的使用需要代码里手动调用目标服务(RestTemplate等)FeignFeign是 Spring Cloud 组件中的一个轻量级 RESTful 的HTTP服务客户端Feign内置了Ribbon,用来做客户端负载均衡,去调用服务注册中心的服务Feign的使用方式是:使用 Feign

2020-10-30 16:26:49 241

原创 SpringCloud笔记——Ribbon负载均衡与服务调用

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

2020-10-27 22:35:08 221

原创 SpringCloud笔记——Eureka服务注册与发现

什么是Eureka概述Eureka是 Netflix(网飞) 的一个子模块,也是核心模块之一,Eureka是一个基于 REST(Representational State Transfer)的服务。服务注册与发现对于微服务架构来说是非常重要的,有了服务发现和注册,只需要使用服务的标识符,就可以访问到服务,而不需要修改服务,而不需要修改服务调用的配置文件了,功能类似于dubbo的注册中心,比如zookeeperSpringCloud封装了 Netflix 公司开发的 Eureka 模块来实现服务注册时

2020-10-26 15:09:25 279 1

原创 SpingBoot微服务打包成Docker镜像,并连接数据库

文章目录docker部署mysql的数据持久化需要的知识需要的工具服务器配置MySQL配置Springboot项目打jar包编写Dockerfile文件访问docker部署mysql的数据持久化首先,我起初想着将 mysql 容器中的数据持久化 commit 成为一个新的镜像,但是保存后的新镜像与原镜像大小一样—— 数据没有保存,官方说 commit 操作并不会包含容器内挂载数据卷中的数据变化,所以还是老老实实卷挂载吧 "Mounts": [ {

2020-10-19 19:27:57 1276 1

原创 Docker进阶(容器数据卷起)

文章目录容器数据卷什么是容器数据卷使用数据卷MySQL实战具名挂载和匿名挂载初识DockerFile数据卷容器DockerFileDockerFile介绍DockerFile构建过程DockerFile的指令实战测试实战:Tomcat镜像发布自己的镜像小结Docker网络理解Docker0--link自定义网络网络连通容器数据卷什么是容器数据卷Docker的理念回顾将应用和环境打包成一个镜像!数据?如果数据都在容器中,那么我们容器删除,数据就会丢失!需求:数据可以持久化例如 MySQL,容器删

2020-10-18 21:02:41 861

原创 Docker基础(容器数据卷前)

Docker安装Docker的基本组成Docker镜像(image)Docker镜像就好比一个模板,可以通过这个模板来创建容器服务 tomcat镜像 —> run —> tomcat01容器(提供服务器),通过镜像可创建多个容器(最终项目运行在容器中)Docker容器(container)Docker利用容器技术,独立运行一个或者一组应用,通过镜像来创建的容器启动、停止、删除Docker仓库(repository)仓库就是存放镜像的地方仓库分为公有仓库和私有仓库Docke

2020-10-16 22:34:30 367

原创 Typora自定义精美主题

自定义Typora主题效果(部分笔记截图示例):花了俩小时改了改Typora的主题引入方式:打开文件 —> 偏好设置 —> 外观 —> 打开主题文件夹-> 将css文件拖入目录下 —> 重启 Typora选择主题即可 —> 重启 Typora选择主题即可...

2020-10-15 15:25:30 1213 4

原创 Linux常用基本命令

走进Linux系统开机登录开机会启动许多程序,它们在Windows叫做服务(service),在Linux就叫做守护进程(daemon)开机成功后,它会显示一个文本登录界面,这个界面就是我们经常看到的界面,在这个界面会提示用户输入用户名,而用户输入的用户名将作为参数传给login程序来验证用户的身份,密码是不显示的,输入完回车即可一般来说,用户的登录方式有三种命令行登录ssh登录图形界面登录最高权限账户为root,可以操作一切关机在linux领域内大多用在服务器上,很少遇到关机的操

2020-10-12 20:15:08 723

原创 JVM笔记04_程序计数器

1、PC 寄存器概述JVM中的程序计数寄存器(Program Counter Register)中,Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。这里,并非是广义上所指的物理寄存器,或许将其翻译为PC计数器(或指令计数器)会更加贴切(也称为程序钩子),并且也不容易引起一些不必要的误会。JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟。它是一块很小的内存空间,几乎可以忽略不记。也是运行速度最快的存储区域。在JVM规范

2020-10-10 13:15:24 89

原创 JVM笔记03_运行时数据区概述及线程

1、前言运行时数据区,也就是下图这部分,它是在类加载完成后的阶段当我们通过前面的:类的加载 --> 验证 --> 准备 --> 解析 --> 初始化,这几个阶段完成后,就会用到执行引擎对我们的类进行使用,同时执行引擎将会使用到我们运行时数据区2、运行时数据区结构运行时数据区与内存内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定运行

2020-10-08 22:49:53 133

原创 JVM笔记02_类加载子系统

1、内存结构概述完整框图2、类加载子系统类加载子系统的作用类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定。加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常量信息是Class文件中常量池部分的内存映射)class --&gt

2020-10-07 21:00:10 115

原创 JVM笔记01_JVM与Java体系架构

1.字节码我们平时说的java字节码,指的是用java语言编译成的字节码。准确的说任何能在jvm平台上执行的字节码格式都是一样的。所以应该统称为:jvm字节码不同的编译器,可以编译出相同的字节码文件,字节码文件也可以在不同的JVM上运行。Java虚拟机与Java语言并没有必然的联系,它只与特定的二进制文件格式——Class文件格式所关联,Class文件中包含了Java虚拟机指令集(或者称为字节码、Bytecodes)和符号表,还有一些其他辅助信息。2.多语言混合编程Java平台上的多语言

2020-10-05 12:19:06 147

原创 Redis

问题现象海量用户高并发罪魁祸首——关系型数据库性能瓶颈:磁盘IO性能低下扩展瓶颈:数据关系复杂,扩展性差,不利于大规模集群解决思路降低磁盘IO次数,越低越好 —— 内存存储去除数据间的关系,越简单越好 —— 不存储关系,仅存储数据NoSqlNoSql:既Not-Only SQL(泛指非关系型的数据库),作为关系型数据库的补充作用:应对基于海量用户和海量数据前提下的数据处理问题特征:可扩容,可伸缩大数据量下高性能灵活的数据类型高可用常见的NoSql数据库:

2020-09-30 15:16:09 1427

原创 函数式编程

概念函数式接口在Java中是指:有且仅有一个抽象方法的接口函数式接口,即适用于函数式编程场景的接口,而Java中的函数式编程的体现就是Lambda,所以函数式接口就是可以适用于Lambda使用的接口,只有确保接口中有且仅有一个抽象方法,Java中的Lambda才能正确的推导格式只要确保接口中有且仅有一个抽象方法即可修饰符 interface 接口名称 { public abstract 返回值类型 方法名称(可选参数); //非抽象方法内容(默认 静态 私有)}@FunctionalIn

2020-08-11 14:10:39 145

原创 Lambda表达式

代码分析我们创建一个线程,对于Runnable的匿名内部类的用法Thread类需要Runnable接口作为参数,其中抽象的run方法是用来指定线程任务内容的核心为了指定run方法体不得不需要Runnable接口的实现类为了省去定义一个实现类的麻烦,不得不采取了匿名内部类不得不重写run方法,所以方法名称,方法参数,方法返回值不得不再写一遍,还不能写错而实际上,似乎只有方法体才是关键编程思想转换做什么,而不是怎样做(声明 not 命令)我们真的希望创建一个匿名内部类对象吗?不,我们只是为

2020-08-11 14:09:49 96

原创 SpringMVC是怎样根据方法执行后返回值一步步到达页面的?

SpringMVC视图解析方法执行后的返回值会作为页面地址参考,转发或者重定向到页面视图解析器可能会进行页面地址的拼串任何方法的返回值最终都会被包装成ModelAndView对象//DisoatcherServlet来到页面的方法//mv就是上面目标方法执行完后的返回值,被封装成ModelAndView(内有视图名及隐含模型中的数据)//其它参数就是我的请求相应,请求对应的处理器(链)以及调度期间发生的错误对象processDispatchResult(processedRequest,

2020-08-02 13:10:05 262

原创 SpringMVC的九大组件初始化

Dispatcher中有几个引用类型的属性:SpringMVC的九大组件SpringMVC在工作的时候,关键位置都是由这些组件完成的public class DispatcherServlet extends FrameworkServlet { //文件上传解析器@Nullableprivate MultipartResolver multipartResolver;//区域信息解析器(国际化有关)@Nullableprivate LocaleResolver localeRes

2020-08-02 11:34:14 264

原创 项目中的路径问题?^ - ^

URL​ 要知道,我们上网,就是为了访问别人的资源。在WWW上,每一个信息资源都有一个唯一的与之对应的地址,这个地址就叫做URL(Uniform Resource Locator,统一资源定位符),是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,它包含的信息指出文件的位置以及浏览器应该怎么处理它URL组成:协议类型、主机地址、路径和文件名协议类型表示采用什么协议访问哪类资源,以便浏览器决定用什么方法获得资源,下面是其中两个例子http://表示采用超文本传输协议HTTP访问WWW

2020-07-16 18:33:52 167

原创 Cookie与Session

Cookie引入​ 当户用在未登录的状态下在京东购物网站向购物车中添加某些商品后,将浏览器关闭,然后再打开浏览器访问京东,此时查看购物车会发现,购物车中仍然具有刚才添加的商品,那么这些商品的信息是存放在了哪里呢?​ 当登录125邮箱时候选上 ‘10天内免登录’ 再登陆的时候是不需要用户名和密码的,那么是网站不需要对用户进行验证了?当然不是。那么,网站用于验证的用户名和密码是从哪里获取到的呢?​ 这两个例子都有一个共同点,换一台机器就不是前面所述的情况了,那就说明一个问题,那些信息是保存在客

2020-07-12 22:39:32 146

原创 DispatcherServlet的具体工作流程

1.前端控制器的架构?DispatcherServlet分析得到处理流程请求一来,先到达HttpServlet的service方法,service决定调用具体的doGet,doPost等方法,然后由于我们DispatcherServlet的父抽下类FrameworkServlet重写了HttpServlet的doGet等方法,于是就会调用FrameworkServlet的doGet等方法,然后在doGet等方法中都会调用本类的processRequest(request, response)这个方法,

2020-07-09 13:36:27 1519

原创 ES6新特性之变量与箭头函数

ES6变量声明ES6中新增了let与const来定义变量:var:ES6和ES5中,定义全局变量(varible的缩写)let:定义局部变量,替代varconst:定义常量(定义后不可修改)var:全局变量{ var a = 1;}console.log(a); //这里的a指的是代码块里的a上方代码可以输出结果为1,因为var是全局声明的,所以,即使是在区块里声明,但仍在全局起作用再来看看下面这段代码:var a = 1;{ var a = 2;}consol

2020-07-08 17:54:57 273

原创 大二JavaWeb课程设计——图书管理系统(可以很好的应付老师的作业)

大二JavaWeb课程设计————图书管理系统(适合新手)好兄弟们给个机会看一看吧,啊sir们这是一个图书管理系统,由于老师不让用任何框架,所以用原生的JavaWeb写的,所有的前后端代码都是自己写的,很适合刚入门的新手学习,之所以没有用JavaScript是因为觉得没必要,C3的过渡和动画足以实现很多动态效果,模板引擎用的JSP,想要源码私信一下即可项目目录结构一览图(下面有具体的每部分的作用的讲解)内容目录说明一、采用的工具与技术栈二、图书管理系统数据库的设计三、成品项目的目录结构展示与

2020-07-07 22:22:58 67934 203

原创 Spring的IOC容器创建源码分析

Spring的IOC源码分析IOC简介:IOC是一个容器容器启动的时候创建所有的单实例对象我们可以直接从容器中获取这些对象SpringIOC要解决的问题1.IOC的启动过程?启动期间都做了什么?(什么时候创建了所有的单实例bean)2.IOC是如何创建这些单实例bean,并如何管理的?到底保存在了哪里?我们从HelloWorld开始,调试每个方法的作用ApplicationContext ioc = new ClassPathXmlApplicationContext(“bea

2020-07-07 13:16:24 175

原创 springboot自动装配原理

springboot自动配置原理自动配置:pom.xmlspring-boot-dependencies:核心依赖在父工程中!我们再写入一些springboot依赖的时候,不需要指定版本,就因为有这些版本仓库启动器<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId&gt

2020-06-01 12:48:43 385

空空如也

空空如也

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

TA关注的人

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