java常用框架
文章平均质量分 86
THE ORDER
卷,学习笔记
展开
-
211 java web开发常见面试题
用来简化spring应用的初始搭建以及开发过程使用XML方式来进行配置,创建独立的spring引用程序,使用main方法运行,嵌入的Tomcat 无需部署war文件,简化maven配置,自动配置spring添加对应功能,starter自动化装配Spring Boot的。原创 2024-02-08 17:30:29 · 1510 阅读 · 0 评论 -
210 springcloud常见面试题
以前的模式是 所有的代码在同一个工程中 部署在同一个服务器中 同一个项目的不同模块不同功能互相抢占资源 ,微服务 将工程根据不同的业务规则拆分成不同的服务 服务部署在不同的机器上 服务之间通过远程相互调用优点:1、每个服务直接足够内聚,代码容易理解2、开发效率高,一个服务只做一件事3、易于第三方集成4、解耦、易扩展缺点:1、开发人员要处理分布式系统的复杂性2、多服务运维难度,随着服务的增加,运维的压力也在增大3、服务间通讯成本4、数据一致性5、分布式链路跟踪问题。原创 2024-02-06 06:01:07 · 1218 阅读 · 0 评论 -
209 Gateway核心知识
GatewayFilter工厂同Predicate工厂类似,都是在配置文件application.yml中配置,遵循了约定大于配置的思想,只需要在配置文件配置GatewayFilter Factory的名称,而不需要写全部的类名,比如AddRequestHeaderGatewayFilterFactory只需要在配置文件中写AddRequestHeader,而不是全部类名。网关作为流量的,在微服务系统中有着非常作用,网关常见的功能有路由转发、权限校验、限流控制等作用。上,能够满足大多数的需求。原创 2024-02-06 06:00:53 · 1152 阅读 · 0 评论 -
208 Netflix Hystrix核心知识
Fallback相当于是降级操作. 对于查询操作, 我们可以实现一个fallback方法, 当请求后端服务出现异常的时候, 可以使用fallback方法返回的值. fallback方法的返回值一般是设置的默认值或者来自缓存,当然,降级方法需要配置和编码,服务降级的目标是为了更友好的提示,如果你有备选服务组的话,可以走备选服务组,以最大限度的保存程序的高可用。微服务I发生异常,请求阻塞,用户不会得到响应,则tomcat的这个线程不会释放,于是越来越多的用户请求到来,越来越多的线程会阻塞。原创 2024-02-05 18:13:53 · 920 阅读 · 0 评论 -
207 OpenFeign核心知识
hystrix超时时间计算ReadTimeout*(MaxAutoRetries+MaxAutoRetriesNextServer+(MaxAutoRetries *MaxAutoRetriesNextServer)+1)使用Feign调用接口分两层,ribbon的调用和hystrix的调用,所以ribbon的超时时间和Hystrix的超时时间的结合就是Feign的超时时间。默认情况下,GET方式请求无论是连接异常还是读取异常,都会进行重试。如果不配置ribbon的重试次数,默认会重试一次。原创 2024-02-05 18:13:38 · 942 阅读 · 0 评论 -
206 Netflix Ribbon 负载均衡
通过 Spring Cloud 的封装,可以让我们轻松地将面向服务的 REST 模版请求自动转换成客户端负载均衡的服务调用。Ribbon作为后端负载均衡器,比Nginx更注重的是承担并发而不是请求分发,可以直接感知后台动态变化来指定分发策略。Ribbon是一个客户端负载均衡软件,通过注册到Eureka上的服务名,获取服务列表,缓存到本地,选择负载均衡算法,发送http请求。在spring cloud可以通过简单配置,即可完成客户端负载均衡,用法如下:配置,注入,请求。定义负载均衡的规则接口。原创 2024-02-04 19:06:11 · 904 阅读 · 0 评论 -
205 eureka-servie-高可用与核心知识
清空二级缓存,即 readWriteCacheMap,用于保证数据的一致性,将此事件同步至其他的 Eureka Server 节点。服务正常停止才会发送 Cancel,如果是非正常停止,则不会发送,此服务由 Eureka Server 主动剔除。服务注册后,要定时(默认 30S,可自己配置)向注册中心发送续约请求,告诉注册中心“我还活着”。更新队列,将此事件添加到更新队列中,供 Eureka Client 增量同步服务信息使用。Eureka Server 提供了服务剔除的机制,用于剔除没有正常下线的服务。原创 2024-02-04 19:05:54 · 1059 阅读 · 0 评论 -
204 SpringCloud核心组件
服务发现——Netflix Eureka客服端负载均衡——Netflix Ribbon、OpenFeign断路器——Netflix Hystrix服务网关——Gateway分布式配置——Spring Cloud Config。原创 2024-02-03 09:35:36 · 1147 阅读 · 0 评论 -
203 SpringBoot面试常见问题
Spring Boot是 Spring 的子项目,他的核心思想是自动装配,通过 Spring Boot开发者可以快速配置 Spring 项目,引入各种 Spring MVC、Spring Transaction、Spring AOP、MyBatis 等等框架,而无需不断重复编写繁重的 Spring 配置,降低了 Spring 的使用成本。核心模块模块说明核心加载支持Springboot的单元测试监控健康管理应用允许你构建可用java –jar直接运行的jar包。原创 2024-02-03 09:35:28 · 1494 阅读 · 0 评论 -
202 SpringBoot自定义自动装配
1、注解理解【1】配置及属性读取注解【2】条件注解【3】核心条件顺序注解2、自定义SpringBoot-start【1】自定义start的意义【2】案例演示【2.1】目标【2.2】实现步骤【2.2.1】新建项目【2.2.2】添加依赖【2.2.3】编写自动装配【2.2.4】定义spring.factories【2.2.5】验证自动装配【2.3】小结。原创 2024-02-02 07:00:05 · 1164 阅读 · 0 评论 -
201 SpringBoot启动加载源码
SpringApplication的构造函数主要设置了一些基本参数并配置source、判断了是否web应用、创建初始化构造器、创建应用监听器、找出main方法所在的类。要想自动配置生效,只需要引入依赖即可,而依赖版本我们也不用操心,因为只要引入了SpringBoot提供的stater(启动器),就会自动管理依赖及版本了。因此,玩SpringBoot的第一件事情,就是找starter,SpringBoot提供了大量的默认starter。那么springboot到底是怎么构建IOC容器的呢?原创 2024-02-02 06:59:52 · 999 阅读 · 0 评论 -
200 SpringBoot 自动装配源码分析
众所周知spring-boot入门容易精通难,说到底spring-boot是对spring已有的各种技术的整合封装,因为封装了所以使用简单,也因为封装了所以越来越多的"拿来主义"者们不愿意去关注其具体实现!今天开始探索的第一步:自动装配原理-----------------(此处默认各位看官熟悉spring的各种基础注解)从上面的类中我们发现:@EnableAutoConfiguration是开启核心配置的注解,下面我们观察@EnableAutoConfiguration。这里我以AOP的自动装配为例子。原创 2024-02-01 06:07:05 · 962 阅读 · 0 评论 -
199 SpringBoot 常用组件集成
SpringBoot 常用组件集成1 配置Druid数据源【1】添加依赖【2】添加yml配置3、配置Mybatis-Plus框架【1】添加依赖【2】添加yml配置【3】代码生成器4】分页、回填插件4、配置Swagger2【1】为什么使用swagger【2】配置swagger2【2.1】添加pom依赖【2.2】SwaggerConfig【2.3】swagger注解5、配置SpringCache+Redis缓存【重点】【1】添加依赖【2】添加yml配置【3】RedisCacheConfig配置【4】注解详解【4原创 2024-01-31 20:05:12 · 976 阅读 · 0 评论 -
198 SpringBoot 配置文件
copy项目springboot-quickstart新建项目springboot2-yml。原创 2024-01-31 20:04:58 · 859 阅读 · 0 评论 -
197 Hello-SpringBoot分析
从上面的spring-boot-starter-web的pom.xml中我们可以发现,spring-boot-starter-web就是将web开发要使用的spring-web、spring-webmvc等坐标进行了“打包”,这样我们的工程只要引入spring-boot-starter-web起步依赖的坐标就可以进行web开发了,同样体现了依赖传递的作用。 在spring boot-day01-quickstart的pom.xml中的对spring-boot-starter-parent进行依赖。原创 2024-01-30 20:03:58 · 1010 阅读 · 0 评论 -
196 快速搭建SpringBoot
springboot可以直接支持spring环境启动方式不需要再使用maven的tomcat插件,而是直接运行main方法调用内置的tomcat。原创 2024-01-30 20:03:45 · 420 阅读 · 0 评论 -
195 SpringBoot 简介与优点介绍
1、什么是SpringBoot【1】SpringBoot概述【2】SpringBoot核心思想2 SpringBoot的优点与spring无缝对接简化依赖简化配置简化部署简化监控SpringBoot是一个快速开发的框架,能过快速整合第三方框架,他是如何快速整合的呢?其实他是的基本原来是Maven依赖关系,Maven的集成,完全采用注解化,简化XML配置,内嵌HTTP服务器(Tomcate,jetty),默认嵌入Tomcate,最终以Java应用程序进行执行。原创 2024-01-29 18:04:36 · 1039 阅读 · 0 评论 -
194 Sentinel规则持久化
。原创 2024-01-29 18:04:19 · 1152 阅读 · 0 评论 -
193 Sentinel与Spring Cloud GateWay网关限流
方式一:根据 route id 设置限流或者是降级规则方式二:根据 API分组 设置限流或者是降级规则点击 API管理,先添加 API分组添加成功:设置限流或者降级规则测试访问限流规则生效地址:http://127.0.0.1:8500/userapi/user/findUserOrders/1上述返回的数据还是 Blocked by Sentinel: ParamFlowException, 在实际开发中,需要返回友好的提示信息。原创 2024-01-28 13:44:24 · 941 阅读 · 0 评论 -
192 Sentinel 注解方式定义资源
1 注解@SentinelResource介绍2 示例3 全局使用 Sentinel 提供了 @SentinelResource 注解用于定义资源,并提供了 AspectJ 的扩展用于自动定义资源、处理 BlockException 等。常见属性:value资源名称,必需项,因为需要通过resource name找到对应的规则,这个是必须配置的。blockHandler 对应处理 BlockException 的函数名称,可选项。原创 2024-01-28 13:38:27 · 870 阅读 · 0 评论 -
191 Sentinel 访问控制规则--黑白名单
Component@Override浏览器测试 经过测试可以,当IP为127.0.0.1时,无法访问该资源,被限制访问,后台出现认证异常。原创 2024-01-27 12:00:20 · 540 阅读 · 0 评论 -
190 Sentinel 热点规则
热点即经常访问的数据。假设希望统计某个热点数据中访问频次最高的 TopN数据,并对其访问进行限制。比如:商品 ID 为参数,统计一段时间内最常购买的商品 ID 并进行限制用户 ID 为参数,针对一段时间内频繁访问的用户 ID 进行限制。原创 2024-01-27 11:59:56 · 433 阅读 · 0 评论 -
189 Sentinel熔断降级与系统保护规则
现代微服务架构都是分布式的,由非常多的服务组成。不同服务之间相互调用,组成复杂的调用链路。如果链路上的某一环不稳定,就可能会层层级联,最终导致整个链路都不可用。因此我们需要对不稳定的服务调用进行熔断降级,暂时切断不稳定调用,避免局部不稳定因素导致整体的雪崩。熔断:当某服务出现不可用或响应超时的情况时,停止对该服务的调用,让其不可访问。降级:当服务被熔断后,需要有一个兜底策略,如返回一个错误友好界面,或让被熔断的服务过一段时间后,再对外提供访问。原创 2024-01-26 22:10:51 · 946 阅读 · 0 评论 -
188 Sentinel流控效果
即如果系统在此之前长期处于空闲的状态,我们希望处理请求的数量是缓步的增多,经过预期的时间以后,到达系统处理请求个数的最大值。否则,计算当前请求的预期通过时间,如果该请求的预期通过时间小于规则预设的 timeout 时间,则该请求会等待直到预设时间到来通过(排队等待处理);假设现在有一个消息队列,突然接收到大量的消息,对于这些消息肯定不会直接拒绝多余的请求,而是希望系统以稳定的速度,逐步处理这些请求,以起到“削峰填谷”的效果。如果当前请求距离上个通过的请求通过的时间间隔不小于预设值,则让当前请求通过;原创 2024-01-26 22:10:38 · 414 阅读 · 0 评论 -
187 Sentinel流控模式
每种流控模式的效果都不同,可以根据当前需求选择对应的流控模式。通过浏览器访问/user/hello4,可以发现仍然可以对chain资源进行访问。该模式为默认模式,其会针对某个资源直接操作,当达到了阈值则触发。3)修改user服务的UserController,调用相同资源。Jemeter中配置http请求,访问/user/hello3。浏览器访问hello1,可以发现,其已经被限流,无法被访问。在该模式下,当关联的资源触发规则,原来的资源触发流控效果。2)修改user服务的UserServiceImpl。原创 2024-01-25 19:51:05 · 449 阅读 · 0 评论 -
186 Sentinel 系统保护Sentinel流量控制快速入门
对于服务稳定性的 保护,限流是一个非常重要的手段。任意时间到来的请求往往是随机不可控的,而系统的处理能力是有限的。我们需要根据系统的处理能力对流量进行控制,避免系统被瞬时的流量高峰冲垮,从而保障应用的高可用性。Sentinel提供了非常灵活的服务限流方式,用户可以根据自己的实际项目场景,非常方便的定义各种限流规则。其原理是监控应用流量的 QPS 或。原创 2024-01-25 19:50:49 · 963 阅读 · 0 评论 -
185 SpringCloud Sentinel 系统保护介绍
1 系统保护2 Sentinel介绍Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。Sentinel 具有以下特征:丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。完备的实时监控:Sentinel 同时提供实时的监控功能。原创 2024-01-24 19:50:32 · 443 阅读 · 0 评论 -
184 Nacos配置持久化
5)新建user-service.yml、user-service-dev.yml、user-service-test.yml。 当我们使用默认配置启动Nacos时,所有配置的信息都被Nacos保存在了内嵌数据库derby中。访问nacos可以发现,配置中心中没有了配置内容,因为nacos已经连接了mysql,mysql中并没有配置文件。现在版本增加了支持mysql数据源能力,也是工作里面常用的方式。1 mysql中新建nacos_config数据库与表。使用内嵌数据库,注定会有存储上限。原创 2024-01-24 19:50:09 · 543 阅读 · 0 评论 -
183 Nacos 多环境支持 动态刷新
项目开发过程中,可能会存在多种环境,并且每一种环境所设置的配置都是不同的。prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。file-extension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension来配置。在开发中,虽然可以在不同环境下使用不同的配置文件,但是有一些配置是通用的,需要在不同的环境下,都进行生效。原创 2024-01-23 19:48:54 · 1003 阅读 · 0 评论 -
182 Nacos分布式配置中心
在微服务架构下,每个服务都会都会有自己的配置文件,此时传统的配置文件方式则会造成诸多问题:时效性:修改配置,需要重启服务才能生效。局限性:无法支持动态调整,如服务地址修改。因此,分布式配置中心应运而生。其为所有的微服务提供了一个中心化的外部配置环境, 服务的配置信息都可以存放到分布式配置上,从而解决如上的诸多问题。原创 2024-01-23 19:48:34 · 959 阅读 · 0 评论 -
181 GateWay 网关跨域
<title>跨域案例演示</title><ul>{{order}}</li></ul></div>原创 2024-01-22 19:51:38 · 495 阅读 · 0 评论 -
180 GateWay 网关限流
SpringCloudGateway是采用令牌桶算法,其令牌相关信息记录在redis中,因此我们需要安装redis,并引入Redis相关依赖。注意:这里不是普通的redis依赖,而是响应式的Redis依赖,因为SpringGateway是基于WebFlux的响应式项目。replenishRate:每秒钟生成令牌的速率,基本上就是每秒钟允许的最大请求数量。burstCapacity:令牌桶的容量,就是令牌桶中存放的最大的令牌的数量。按照固定速率,生成令牌并存入令牌桶,如果桶中令牌数达到上限,就丢弃令牌。原创 2024-01-21 10:48:11 · 847 阅读 · 0 评论 -
179 服务网关GateWay---全局过滤器 GlobalFilter
1 全局过滤器介绍2 自定义 全局过滤器 GlobalFilter 登录案例实现全局过滤器会**应用到所有的路由上。**不需要在配置文件中配置,系统初始化时自动加载。同时Spring Cloud Gateway也内置了一些全局过滤器,供我们直接使用。内置的 GlobalFilter 能够满足大多数的需求了,但是如果遇到特殊情况,内置满足不了我们的需求,还可以自定义GlobalFilter。1)在网关服务中定义过滤器@Component//过滤器执行的具体业务逻辑@Override。原创 2024-01-21 10:48:01 · 530 阅读 · 0 评论 -
178 服务网关GateWay---局部过滤器(GatewayFilter)
当我们访问:http://localhost:8500/user-api/address/me时,映射路径/user-service指向用户服务,会被代理到:http://localhost:8081/user-api/address/me。当我们访问:http://localhost:8500/user-api/user/it时,映射路径/user-service指向用户服务,会被代理到:http://localhost:8081/user-api/user/it。原创 2024-01-20 10:40:04 · 1201 阅读 · 0 评论 -
177 Spring Cloud GateWay使用
刚才已经配置好了基于网关的路由转发, 但是实际服务的请求路径仍然是硬编码在网关的配置文件中,一旦实际服务发生迁移,则需要修改网关的配置文件,这样的话,仍然很繁琐。访问order服务:http://127.0.0.1:8500/order/findOrderInfoByUserId/1。访问user服务:http://127.0.0.1:8500/user/findUserOrders/1。 要想解决该问题,则可以基于网关结合注册中心,实现服务的动态路由。2)修改pom文件,添加gateway依赖。原创 2024-01-20 10:39:51 · 385 阅读 · 0 评论 -
176 服务网关GateWay介绍
什么是服务网关2 GateWay介绍 在微服务架构下,后端系统会存在若干个独立的微服务,每一个微服务都有自己的IP以及端口。这样就会增加前后端系统调用的复杂性,造成诸多问题:客户端在发起调用时,需要定向访问后端微服务,一旦后端系统发生迁移,则客户端也需要修改请求路径。假设后端服务访问需要进行认证,则需要在每个微服务上都需要完成认证实现。在项目迭代过程中,有可能需要进行系统重构,将一个服务拆分成多个微服务,或将多个微服务合并成一个微服务。但是如果客户端直接与后端微服务通信,此时重构则很难实施。原创 2024-01-19 21:54:09 · 587 阅读 · 0 评论 -
175 Ribbon负载均衡---服务调用
当服务提供者存在多实例时,服务消费者需要基于负载均衡完成调用。并且基于discoveryClient完成服务调用,代码也不够美观。SpringCloud提供了负载均衡调用的组件Ribbon,其可以基于HTTP和TCP完成客户端负载均衡。Ribbon源码 https://github.com/Netflix/Ribbon。原创 2024-01-19 21:53:58 · 917 阅读 · 0 评论 -
173 深度探索Eureka服务注册发现
Eureka是spring cloud中的一个负责服务注册与发现的组件。Eureka Server(注册中心)EurekaClient(服务提供者、服务消费者)。架构模式:C/S架构。原创 2024-01-18 19:47:33 · 1223 阅读 · 0 评论 -
174 SpringCloudAlibaba Nacos的使用
Nacos是由SpringCloudAlibaba提供一个组件,可以作为服务注册中心、分布式配置中心使用。功能强大且性能强悍。其不仅能与SpringCloud无缝整合,同时也能与Apache Dubbo、Service Mesh整合。官网地址:https://nacos.io/zh-cn/index.html。原创 2024-01-18 19:47:25 · 1082 阅读 · 0 评论 -
172 普通分布式RestTemplate调用的缺点
3)浏览器测试访问:http://127.0.0.1:8001/user/findUserOrders/1。User服务需要记忆order服务的地址,如果出现变更,可能得不到通知,地址将失效。即便order服务形成集群,User服务还需自己实现。用户服务中定义方法,需要获取该用户的所有订单数据。User服务不清楚order服务的状态,order。订单服务中定义方法,根据用户id查询订单列表。涉及的问题:两个服务间的远程调用。order服务只有1个服务,不具备。在User服务中,我们把。服务管理(注册中心)原创 2024-01-17 21:50:47 · 357 阅读 · 0 评论