spring boot
文章平均质量分 84
要有价值
这个作者很懒,什么都没留下…
展开
-
阻塞队列 — DelayedWorkQueue源码分析
前言线程池运行时,会不断从任务队列中获取任务,然后执行任务。如果我们想实现延时或者定时执行任务,重要一点就是任务队列会根据任务延时时间的不同进行排序,延时时间越短地就排在队列的前面,先被获取执行。队列是先进先出的数据结构,就是先进入队列的数据,先被获取。但是有一种特殊的队列叫做优先级队列,它会对插入的数据进行优先级排序,保证优先级越高的数据首先被获取,与数据的插入顺序无关。实现优先级队列高效常用的一种方式就是使用堆。关于堆的实现可以查看《堆和二叉堆的实现和特性》ScheduledThreadPoo.原创 2022-05-30 20:23:44 · 3086 阅读 · 1 评论 -
SpringBoot内置tomcat启动原理
SpringBoot内置tomcat启动原理前言不得不说SpringBoot的开发者是在为大众程序猿谋福利,把大家都惯成了懒汉,xml不配置了,连tomcat也懒的配置了,典型的一键启动系统,那么tomcat在springboot是怎么启动的呢?内置tomcat开发阶段对我们来说使用内置的tomcat是非常够用了,当然也可以使用jetty。<dependency> <groupId>org.springframework.boot</groupId>原创 2022-02-28 11:24:12 · 323 阅读 · 0 评论 -
Spring ApplicationContextInitializer介绍和原理
一、 ApplicationContextInitializer 介绍首先看spring官网的介绍:翻译一下:用于在spring容器刷新之前初始化Spring ConfigurableApplicationContext的回调接口。(剪短说就是在容器刷新之前调用该类的 initialize 方法。并将 ConfigurableApplicationContext 类的实例传递给该方法)通常用于需要对应用程序上下文进行编程初始化的web应用程序中。例如,根据上下文环境注册属性源或激活配置文件等。原创 2022-01-27 10:35:27 · 1260 阅读 · 0 评论 -
把线程池扒个底朝天
这节分享Java线程池,接下来我们一步步把线程池扒个底朝天。引言:老三取钱有一个程序员,他的名字叫老三。老三兜里没有钱,匆匆银行业务办。这天起了一大早,银行姐姐说早安。老三一看柜台空,卡里五毛都取完。老三这天起的晚,营业窗口都排满。只好进入排队区,摸出手机等空闲。老三睡到上三杆,窗口排队都爆满。经理一看开新口,排队同志赶紧办。这天业务太火爆,柜台排队都用完。老三一看急上火,经理你说怎么办。经理挥手一笑间,这种场面已见惯。四种办法来处理,你猜我会怎么办。小小原创 2021-11-29 11:20:12 · 147 阅读 · 0 评论 -
SpringBoot-kafka序列化使用 Avro
【需求】:生产者发送数据至 kafka 序列化使用 Avro,消费者通过 Avro 进行反序列化,并将数据通过 MyBatis 存入数据库。一、Pom【1】Apache Avro 1.8;【2】Spring Kafka 1.2;【3】Spring Boot 1.5;【4】Maven 3.5;<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:x原创 2021-09-27 14:26:53 · 1161 阅读 · 0 评论 -
Spring中的循环依赖
前言Spring中的循环依赖一直是Spring中一个很重要的话题,一方面是因为源码中为了解决循环依赖做了很多处理,另外一方面是因为面试的时候,如果问到Spring中比较高阶的问题,那么循环依赖必定逃不掉。如果你回答得好,那么这就是你的必杀技,反正,那就是面试官的必杀技,这也是取这个标题的原因,当然,本文的目的是为了让你在之后的所有面试中能多一个必杀技,专门用来绝杀面试官!本文的核心思想就是,当面试官问:“请讲一讲Spring中的循环依赖。”的时候,我们到底该怎么回答?主要分下面几点什么是循环转载 2021-08-16 18:21:15 · 713 阅读 · 1 评论 -
Mac Docker部署SpringBoot应用
一、安装Docker环境使用 Homebrew 安装macOS 我们可以使用 Homebrew 来安装 Docker。Homebrew 的 Cask 已经支持 Docker for Mac,因此可以很方便的使用 Homebrew Cask 来进行安装:$ brew cask install docker==> Creating Caskroom at /usr/local/Caskroom==> We'll set permissions properly so we won't原创 2021-07-28 17:31:21 · 557 阅读 · 0 评论 -
Dubbo介绍
介绍Dubbo背景大规模服务化之前,应用可能只是通过RMI或Hessian等工具,简单的暴露和引用远程服务,通过配置服务的URL地址进行调用,通过F5等硬件进行负载均衡。(1) 当服务越来越多时,服务URL配置管理变得非常困难,F5硬件负载均衡器的单点压力也越来越大。此时需要一个服务注册中心,动态的注册和发现服务,使服务的位置透明。并通过在消费方获取服务提供方地址列表,实现软负载均衡和Failover,降低对F5硬件负载均衡器的依赖,也能减少部分成本。(2) 当进一步发展,服务间依赖关系变得错踪复原创 2021-07-26 20:20:50 · 182 阅读 · 0 评论 -
基于Zookeeper + Dubbo 搭建的项目
基于Zookeeper + Dubbo 搭建的项目项目简介此项目为自己学习Dubbo+Zookeeper,搭建的第一个项目,主要架构就是一个父项目、三个子Module:dubbo_provider、 dubbo_consumer 和 dubbo_api,三个子Module分别继承父项目。Dubbo的远程访问是基于接口的。Consumer和Provider使用同一个接口,可以实现远程访问。Provider给接口写实现,提供服务。Consumer使用接口,并通过Dubbo创建的动态代理对象,远程访问原创 2021-07-26 11:49:53 · 1075 阅读 · 1 评论 -
JavaWeb开发:jar包和war包区别和目录结构
Java开发:jar包和war包区别和目录结构,深入了解:1.jar包的介绍JAR(Java Archive,Java 归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。JavaSE程序可以打包成Jar包(J其实可以理解为Java了)。JAR 文件格式以流行的 ZIP 文件格式为基础。与 ZIP 文件不同的是,JAR 文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,并可被像编译器和 JVM 这样的工具直接使用。在 JAR 中包含特殊的文件,如 manifests 和原创 2021-06-22 11:20:27 · 1899 阅读 · 0 评论 -
Filter和Interceptor的区别
Filter和Interceptor的区别Interceptor主要作用: 拦截用户请求,进行处理,比如判断用户登录情况、权限验证,只要针对Controller请求进行处理,是通过HandlerInterceptor。Interceptor分两种情况,一种是对会话的拦截,实现spring的HandlerInterceptor接口并注册到mvc的拦截队列中,其中preHandle()方法在调用Handler之前进行拦截(上图步骤3),postHandle()方法在视图渲染之前调用(上图步骤5),aft原创 2021-06-15 11:58:29 · 1123 阅读 · 0 评论 -
@RequestBody()和RequestParam()的使用
@RequestBody()和RequestParam()的使用基础知识介绍:@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);GET方式无请求体,所以使用@RequestBody()接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交。在后端的同一个接收方法里,@RequestBody()与@RequestParam()可以同时使用,@RequestBody()最多只能有一个,而@RequestParam()可以有多个。注: 一个请求原创 2021-05-28 17:59:47 · 732 阅读 · 0 评论 -
Spring Boot整合Swagger
前言不管Spring Boot整合还是SpringMVC整合Swagger都基本类似,重点就在于配置Swagger,它的精髓所在就在于配置。1、Swagger简介目前互联网时代前后端分离已成趋势,前后端混在一起,前端或者后端无法做到“及时协商,尽早解决”,最终导致问题集中爆发。解决方案就是前后端通过API进行交互达到相对独立且松耦合。Swagger就是这样的一个API框架,Swagger支持多种语言 如:Java,PHP等,它号称是世界上最流行的API框架!2、整合前可能遇到的问题1、导入好依赖原创 2021-05-24 16:11:13 · 531 阅读 · 2 评论 -
SpringBoot中Filter的使用和原理
先把SpringBoot中filter的使用示例写出来,然后再解释下代码、说一下运行的顺序,最后讲一下filter的原理(其实就是责任链设计模式,从马士兵老师那里偷来的。。。) 要想使用filter,需要写一个方法继承Filter类,我们写如下两个自己的Filter类,首先是FirstFilter类,其中@Order里边的数字越小代表越先被该Filter过滤,@WebFilter代表这是个Filter类并把这个类注入到容器中:package com.example.executor_test.fi原创 2021-05-18 16:09:52 · 717 阅读 · 2 评论 -
Mybatis的执行流程
Mybatis的执行流程原创 2021-05-18 11:53:30 · 108 阅读 · 0 评论 -
Hystrix快速入门
Hystrix快速入门对大部分电商和快递公司来说,每年年底(Q4季度)由于双11等大促活动的存在,将面对大量的用户流量,尤其是属于大促的那几天,无论是用户的商品订单还是物流订单,都将是平时的3倍以上。对于技术人员来说,提前落地相应的服务保障体系,并进行相应的压测和演习,是题中应有之意。整个保障体系的实现涉及的环节很多,本文将选取奈飞Netflix公司的Hystrix"豪猪"框架(其基于Java语言和最近比较流行RxJava流式框架),针对分布式应用的服务保障问题进行探讨,之后将按照基本知识、应用实践、配置原创 2021-05-17 15:57:30 · 208 阅读 · 0 评论 -
Spring Boot:处理跨域
一、跨域背景1.1 何为跨域?Url的一般格式:协议 + 域名(子域名 + 主域名) + 端口号 + 资源地址示例:https://www.dustyblog.cn:8080/say/Hello 是由https + www + dustyblog.cn + 8080 + say/Hello组成。只要协议,子域名,主域名,端口号这四项组成部分中有一项不同,就可以认为是不同的域,不同的域之间互相访问资源,就被称之为跨域。1.2 一次正常的请求Controller层代码:@RequestMa原创 2021-03-24 15:00:39 · 122 阅读 · 0 评论 -
Spring中AOP的实现原理
一、什么是 AOP ?AOP(Aspect-Oriented Programming,面向方面编程),对 OOP(Object-Oriented Programming,面向对象编程)【OOP与AOP】概念AOP(Aspect-Oriented Programming,面向方面编程)OOP(Object-Oriented Programming,面向对象编程)方向OOP 定义从上到下的关系AOP 定义从左到右的关系【两个部分】核心关注点业务处理的主要流程原创 2021-03-11 14:00:56 · 10939 阅读 · 2 评论 -
Spring中IOC的实现原理
Spring中IOC的实现原理学习过Spring框架的人一定都会听过Spring的IoC(控制反转) 、DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC 、DI这两个概念是模糊不清的,是很难理解的,今天和大家分享网上的一些技术大牛们对Spring框架的IOC的理解以及谈谈我对Spring Ioc的理解。一、分享Iteye的开涛对Ioc的精彩讲解 首先要分享的是Iteye的开涛这位技术牛人对Spring框架的IOC的理解,写得非常通俗易懂,以下内容全部来自原文,原文地址:http原创 2021-03-11 11:15:18 · 194 阅读 · 0 评论 -
Springboot时间监听机制
springboot进行事件监听有四种方式:1.手工向ApplicationContext中添加监听器2.将监听器装载入spring容器3.在application.properties中配置监听器4.通过@EventListener注解实现事件监听讲到事件监听,这里我们说下自定义事件和自定义监听器类的实现方式:自定义事件:继承自ApplicationEvent抽象类,然后定义自己的构造器自定义监听:实现ApplicationListener接口,然后实现onApplicationEvent方原创 2021-01-25 15:03:08 · 861 阅读 · 0 评论 -
Spring Boot 微框架
Spring Boot 微框架1. springboot的引言Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的 初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不 再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应 用开发领域(rapid application development)成为领导者。springboot(微框架) = springmvc(控制器) + spring(项目管理)原创 2021-01-18 13:52:23 · 144 阅读 · 0 评论 -
pom中parent和dependency区别以及dependencyManagement区别
在大多数分层项目中经常会遇到相互依赖的问题,B项目依赖A项目,C也依赖A项目,这时候用dependency还是用parent呢?这两者是有区别的:下面做一个测试,A项目作为一个公共项目,被B项目和C项目所依赖,B以parent的方式,C以dependency的形式。在A项目创建一个类,添加一个方法,然后分别在项目B、C中写测试方法,调用A项目类中的方法。项目A添加一个自己写的类TestUtilimport org.apache.commons.lang3.StringUtils;/** *原创 2021-01-07 21:11:41 · 1180 阅读 · 0 评论