- 博客(49)
- 资源 (5)
- 收藏
- 关注
原创 sentinal热点规则
练习题:1、每个用户秒杀QPS不得超过1(秒杀下单userId级别)2、6号用户是vvip,不限制QPS(例外情况)3、666号是下架商品,不允许访问:目前 Sentinel 自带的 adapter 仅 Dubbo 方法埋点带了热点参数,其它适配模块(如 Web)默认不支持热点规则,可通过自定义埋点方式指定新的资源名并传入希望的参数。注意自定义埋点的资源名不要和适配模块生成的资源名重复,否则会导致重复统计。
2026-11-04 00:31:13
149
原创 sentinal熔断规则
若请求数大于“最小请求数(5)”,就会统计这些请求发生异常的比例,若果超过80%的请求都发生了一场,则会触发熔断,在接下来的30秒内,请求不再发起远程调用,而是直接调用兜底回调,快速返回数据,30后,会放行一个探测请求,验证远程服务调用是否还会异常,如果还异常,则继续熔断30秒。如果接口请求数大于5,则会统计这些请求的最大RT,如果有80%的请求响应时间大于最大RT(1秒),则触发熔断规则,即熔断30秒,在这30内,请求不再真正的发起远程调用,而是直接调用兜底回调方法,快速返回数据。熔断时长:30(秒)
2026-11-03 16:48:27
149
原创 sentinal流控规则
表示每个服务的QPS为10,但是服务启动后不会直接实现QPS为10,会在预热时长(3秒)内逐步的提升可以处理的请求数,最终达到10。服务端两个接口/readDb和/writeDb,希望当写数据库请求过大时,限制读数据库的请求,实现优先写操作。单机均摊:表示集群中每个服务每秒处理5个请求一个请求,若集群有3个节点,集群每秒总共能处理15个请求。这样当/writeDb接口请求过大时,/readDb接口的请求就会受到流控规则的约束。注意:只有在流控效果为“快速失败”模式下,才支持“关联”、“链路”的流控模式。
2026-11-03 16:09:13
174
原创 openFeign入门
若不需要修改负载均衡策略,只需要引入loadbalancer依赖即可,spring自动集成,默认负载均衡算法:轮询。(或新版对应的实现),在发起 HTTP 请求前,先从注册中心获取服务实例列表,再根据策略选择一个具体实例进行调用。在service-order工程中,给调用service-product工程的请求配置拦截器。1、创建Controller测试类,供order服务调用。2、openFeign接口配置兜底回调方法的实现类。1、service-order工程中创建拦截器实现类。
2026-11-02 22:35:26
48
原创 java 线程池用法
SynchronousQueue 是 Java java.util.concurrent 包中一种特殊的阻塞队列,其核心特征是零容量和直接传递。在线程池里,所有的线程一视同仁。--弊端:未指定LinkedBlockingQueue容量,默认容量为Integer.MAX_VALUE,即阻塞队列可以无限大。newCachedThreadPool:线程数不固定,有空闲线程则复用,否则新建,空闲 60 秒回收。说明,为什么newCachedThreadPool线程池 ,有空闲线程则复用,否则新建。
2026-11-02 11:46:37
166
原创 spring 和 springBoot使用aop面向切面编程的区别
springboot使用aop 在spring基础上,不需要再在配置类上添加@EnableAspectJAutoProxy注解。spingboot默认开启aop功能。直接写实现类,标注@Aspect注解即可。注解,默认会启用AspectJ自动代理功能。类自动配置AOP功能。依赖时,SpringBoot会自动加载。,因此在某些场景下可以不显式添加。(默认值):启用AOP自动配置。在SpringBoot中,,AOP也可以正常工作。,从而启用AOP功能。:禁用AOP自动配置。默认AOP支持的原因。
2026-11-01 11:05:43
219
原创 springmvc 和 springBoot 创建拦截器的区别
唯一的区别就是创建WebMvcConfigurer接口的实现类时,不要在类上加 @EnableWebMvc注解。在方法中添加拦截器。2、重写 HandlerInterceptor 接口的 preHandle、postHandle、afterCompletion方法。3.创建SpringmvcConfig(类名自己起) 类,该类要添加@Configuration 和 @EnableWebMvc注解。1、创建MyInterceptor(类名自己起)类 实现 HandlerInterceptor 接口。
2026-11-01 11:05:26
233
原创 mybatis 动态 sql
trim 一般用于去除 SQL 语句中多余的 AND 关键字、逗号,或者给 SQL 语句前拼接 where、set 等后缀,可用于选择性插入、更新、删除或者条件查询等操作。trim 语法格式如下。foreach标签。
2026-11-01 11:05:07
192
原创 mybatis的 Mapper.xml语法
二、 #{key} 和 ${key} 的区别;传入对象、map时的取值规则;@Param的使用时机。三、给自己声明的pojo类起别名;返回集合或者map;1、association属性。2、collection属性。四、resultMap用法。
2026-10-31 11:33:13
62
原创 SSM整合配置案例
创建入口配置类,继承AbstractAnnotationConfigDispatcherServletInitializer,把上边写的配置类集成到该类。子容器(Web 容器)可以调用父容器(Root 容器)中的组件,但父容器无法调用子容器中的组件。两个容器由不同组件创建,均在 Web 应用启动时初始化:。创建一个serivceConfig。再创建一个mybatis的配置类。创建一个webMvcconfig。首先创建一个数据库连接的配置类。
2026-10-31 11:32:58
197
原创 spring中@Transactional注解对事务的支持
只给最外层入口方法加事务,内部方法改为private,直接调用(无需注入自己、无需AopContext,无循环依赖)。// 唯一事务入口:只给最外层public方法加注解// A自身写库操作insertA();// 内部直接调用private方法,无代理问题,事务生效methodB();// 内部方法:private,不加事务注解// B自身写库操作insertB();methodC();// 内部方法:private,不加事务注解// C自身写库操作insertC();
2026-10-31 11:32:42
267
原创 Spring AOP 详解
Servicethrow new IllegalArgumentException("用户ID无效");return new User(id, "张三", 25);// 用户实体类@Data。
2026-10-30 01:26:33
281
原创 Spring MVC Bean 参数校验 @Validated
1.1 核心说明@Validated 是 Spring 框架对 JSR303/JSR380(Java 原生参数校验规范)的增强注解,Spring 生态专属注解,功能全面优于JSR原生的@ValidJSR303/JSR380 是Java官方定义的参数校验标准,提供基础校验注解,核心依赖包为jakarta.validation实际开发中依赖 Hibernate Validator,是JSR规范的最优实现,扩展了更多实用校验注解,是校验功能落地的核心。
2026-10-30 01:26:20
37
原创 @ControllerAdvice 用法
顾名思义,@ControllerAdvice就是@Controller 的增强版。@ControllerAdvice主要用来处理全局数据,一般搭配@ExceptionHandler、@ModelAttribute以及@InitBinder使用。@ControllerAdvice最常见的使用场景就是全局异常处理。
2026-10-30 01:26:06
17
原创 springmvc 拦截器
程序首先会执行拦截器类中的preHandle()方法,如果该方法的返回值true,则程序继续向下执行处理器当中的方法,否则不在向下执行;业务处理器(即控制器Controller类)处理完请求后,会执行postHandle()方法,然后会通过DispatcherServlet向前端返回响应;当多个拦截器同时工作时,它们的preHandle()方法会按照配置文件中拦截器的配置顺序执行,而它们的postHandle()方法和afterCompletion()方法则会按照配置顺序的反序执行。
2026-10-29 12:10:46
81
原创 转发与重定向
转发是指服务器内部将请求从一个Servlet或JSP转交给另一个Servlet或JSP进行处理,而客户端对这种内部转移是不可见的。转发使用的是服务器端的资源,不会改变客户端的URL。服务器告诉浏览器去访问新地址,浏览器再次发起请求,过程对用户可见。
2026-10-29 12:10:28
216
原创 spring 中的 @EnableWebMvc注解和WebMvcConfigurer接口
是标准组合。Spring Boot 项目:只实现就够了,不要加,除非你确实想完全接管 MVC 配置。也就是说使用了 @EnableWebMvc 注解后,必须自己重新实现所有 Spring Boot 原本帮你做好的事情,这样极易出错且增加维护成本。因此在 Spring Boot 项目中,大多数情况下不需要使用 @EnableWebMvc。完全不需要 Spring Boot 的 Web 自动配置时;希望从零开始完全控制 Spring MVC 的每一个细节时;
2026-10-29 12:10:05
202
原创 spring 的 @CookieValue 注解 用法
Aspect@Componentthrow new UnauthorizedException("未登录");throw new RateLimitException("请求过于频繁");// 业务逻辑这个组合拳的价值在于:Controller方法里不需要出现任何Cookie相关代码,限流逻辑完全沉淀在切面层,业务代码保持干净。
2026-10-28 07:58:12
312
原创 Spring MVC 的 @RequestHeader 注解用法
是 Spring MVC 中用于访问 HTTP 请求头的核心注解,它提供了一种简洁高效的方式将请求头信息绑定到控制器方法参数上。value。
2026-10-28 07:57:53
198
原创 spring mvc 的 AbstractAnnotationConfigDispatcherServletInitializer 和 HandlerMapping 的关系
今天看spring mvc的视频,老师写了个demo然后把项目部署到tomcat服务器,就能访问controller接口了。我发现在MvcConfig类中不手动创建handlerMapping和handlerAdapter,也能成功运行。MvcConfig类改成:原因:AbstractAnnotationConfigDispatcherServletInitializer 不会直接创建handlerMapping。 本身只负责注册 和创建父子容器, 是在 初始化阶段由 Spri
2026-10-28 07:57:35
149
原创 spring @PathVariable 注解用法
4、示例代码中设置account参数允许不传,这样url就变成了 xxx/aa/123/10 ,如果真的这样调接口,GetMapping上还需要配置一个可解析的路径:aa/{password}/{page}。@PathVariable用于从RESTful URL路径中提取变量值,支持单个/多个变量、类型转换、JSR-303校验及可选参数(required=false),但不支持默认值。aa/{account}/{password}/{page},接口是处理不了aa/{password}/{page}的。
2026-10-27 08:02:22
118
原创 spring @RequestParam 用法
1、如果前端传递的请求参数名和controller方法的参数名不一致,必须显示指定接收前端的请求参数名。如前端传递的请求参数名为account,后端接收该请求参数的参数名为username。改为false后,前端可以不传此参数,如果不传,后端参数就接收不到参数值,就会给参数值赋值为null。表示前端必须传此参数,不传报400异常。3、若前端传递的参数名和后端方法的参数名一致,也可以省略@RequestParam注解。defaultValue是参数的默认值,如果前端不传,后端参数就使用默认值。
2026-10-27 08:02:05
162
原创 spring @ResponseBody、@RequestBody注解用法
在传统的Spring MVC开发中,控制器 (Controller)方法的返回值通常被当作视图名称,Spring会通过视图解析器查找对应的JSP、Thymeleaf等视图页面并跳转。而@ResponseBody注解的核心功能,就是改变这一默认行为——它会告诉Spring:无需进行视图解析,直接将控制器方法的返回值转换为HTTP响应体(Response Body),返回给客户端。简单来说,@ResponseBody的作用可概括为:“跳过视图跳转,直给数据响应”。前端提交数据给后端(如表单提交、接口传参)
2026-10-27 08:01:45
191
原创 sping mvc五个常用注解
DAO 类,MyBatis Mapper。此时需要使用方法注解 @Bean。通用组件,标识该类为 Bean。用于代替 XML 配置。控制层,接收前端请求。
2026-10-26 22:47:13
213
原创 spring @RequestMapping注解
RequestMapping 是 Spring MVC 中 定义请求映射规则的核心注解,用于将 HTTP 请求映射到 具体Controller 以及controller中的具体方法。指定处理的请求内容类型(Content-Type)限制HTTP请求方法(GET、POST等)指定响应内容的类型(Accept头匹配)指定映射的URL路径(可多路径)要求请求必须包含特定参数。
2026-10-26 22:46:42
198
原创 spring mvc 工作流程
HandlerMapping返回 处理器执行链(HandlerExecutionChain)里边包含要具体调用的controller以及controller的哪个方法。还有需要执行的拦截器。1、浏览器发送请求到服务端,dispatcherServlet接收到请求,调用HandlerMapping。然后再执行HandlerExecutionCHain里包含的拦截器,如果拦截器返回false。3、如果拦截器返回true,dispacherservlet再调用刚才找到的HandlerAdapter。
2026-10-26 22:26:18
186
转载 SpringMVC请求处理流程
理解了HandlerMapping的设计,你可以做出很多扩展。比如我做过一个需求:某些请求需要根据Header里的版本号动态路由到不同版本的Controller方法。标准注解满足不了这种场景,我就在RequestMappingHandlerMapping的基础上重写了lookupHandlerMethod,把版本号作为一个附加匹配条件选了handler。返回的是一个HandlerExecutionChain——它内部包含Handler和Interceptor列表。
2026-10-25 00:20:12
6
原创 JVM-2-程序计数器、虚拟机栈(局部变量表、操作数栈、动态连接、方法返回地址)
本jvm系列文章来源B站尚硅谷康师傅的视频,该系列文章作为学习笔记持续更新。视频地址:尚硅谷宋红康JVM全套教程(详解java虚拟机)_哔哩哔哩_bilibili学习累了,分享一个搞笑又好玩的公众号,感谢大家关注一下吧!多谢啦!注:本文中使用的在IDEA中查看字节码信息的插件为“jclasslib”,可以自行在IDEA中安装该插件。运行时数据区1.java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁,另外一些则是与线..
2022-04-12 17:32:45
868
原创 JVM-类加载器-类加载过程-双亲委派机制
本jvm系类文章来源B站尚硅谷康师傅的视频,该系类文章作为学习笔记持续更新。视频地址:尚硅谷宋红康JVM全套教程(详解java虚拟机)_哔哩哔哩_bilibili学习累了,分享一个搞笑又好玩的公众号,感谢大家关注一下吧!多谢啦!JVM概述JVM是一个跨语言的平台2.JVM整体结构JVM 的架构模型java 编译器输入的指令流基本上是一种基于栈的指令集架构,另外一种指令集架构则是基于寄存器的指令集架构。 具体来说,这两种架构之间的区别:...
2022-04-10 00:10:17
1559
原创 Java8新特性(四)-lambda表达式
一、方法引用:若lambda体中的内容有方法已经实现了,我们可以使用"方法引用"(可以理解为方法引用是lambda表达式的另外一种表现形式)注意:①lambda体中调用方法的参数列表与返回值类型,要与函数式接口中抽象方法的函数列表和返回值类型保持一致!②若lambda参数列表中的第一参数是 实例方法的调用者,而第二个参数是实例方法的参数时,可以使用ClassName::method 如方式三。方式一:对象::实例方法名 public static void main(Stri...
2021-08-24 18:36:36
179
原创 Java8新特性(三)-lambda表达式
由上篇文章可见,要写lambda表达式,必须先要有一个函数式接口,贴心的Java源码给我们提供了四种最常用的接口形式,当我们的需求可以套用这四种情况时,我们可以直接使用这四个接口,不需要自己再额外编写接口。一、应用实例:1.Consumer<T> :消费型接口 void accept(T t);Consumer<Employee> consumer = x -> System.out.println(x.getAge()); ...
2021-08-23 11:39:15
227
原创 Java8新特性(二)-lambda表达式
1.什么是lambda表达式lambda表达式是Java8退出的一种新的语法结构,它可以使代码更简洁紧凑。它的本质就是对接口中抽象方法的具体实现。2.lambda表达式使用的条件lambda表达式需要一个"函数式接口"的支持接口中只有一个抽象方法的接口,称为函数式接口,可以使用注解 @FunctionalInterface 来修饰接口,即限制被修饰的接口里只能存在一个抽象方法。3.lambda表达式的语法1> 写一个最简单的lambda表达式,无参数,无返回值public s.
2021-08-20 17:00:43
481
原创 Java8新特性(一)-lambda表达式
本次笔记的学习资料源自B站 尚硅谷UP主发布的教学视频,在此感谢尚硅谷无私的公开了很多高质量的教学视频本次笔记视频地址:https://www.bilibili.com/video/BV14W411u7Ly?p=1场景描述有一个集合,里边存的多个对象Student对象,要求根据不同的需求从集合中过滤出符合条件的对象。Student对象类代码:public class Student { public Student() { } public Stude...
2021-08-20 16:49:44
151
原创 shell 编程笔记 (五)
第十一课 $* 和 $@ 的区别 (1)$*将所有的命令行所有参数视为单个字符串,等同于”$1$2$3” (2)$@将命令行每个参数视为单独的字符串,等同于”$1”/”$2”/”$3”。这是将参数传递给其他程序的最佳方式,因为他会保留所有内嵌在每个参数里的任何空白。 示例: #set -- “I am” handsome...
2019-03-08 22:21:35
255
原创 shell 编程笔记 (四)
第八课 局部变量1.本地变量在用户当前的shell生存期的脚本中使用。例如,本地变量OLDBOY取值为ett98,这个值只在用户当前shell生存期中有意义。如果在shell中启动另一个进程或者退出,本地变量OLDBOY值将无效。 普通字符串变量定义 变量名=value 变量名=‘value’ 变量名=“value”Shell 中变量名的要求:一般是字母,...
2019-02-28 22:53:39
282
原创 shell 编程笔记 (三)
第六课 shell脚本开发基本规范及习惯 开头指定脚本解释器#!/bin/sh 或者#!/bin/bash 2.开头加版本版权等信息#Date 2019-02-17#Author:Created by guochunyu#Mail:1142283977@qq.com#Func:This script is for Test 3.脚本中不用中文注...
2019-02-22 23:14:05
210
原创 shell 编程笔记 (二)
第四课 shell脚本的建立和执行1. Shell脚本(bash shell程序)通常是在编辑器(如vi/vim)中编写,由unix/linux命令、bash shell命令、程序结构控制语句和注释等内容组成。2. 一个规范的shell 脚本的第一行会指出由哪个程序(解释器)来执行脚本中的内容,在linux bash编程中一般为:#!/bin/bash或#!/bin/sh...
2019-02-20 01:06:31
274
原创 shell编程笔记 (一)
第一课什么是shellShell是一个命令解释器,它在操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕返回给用户。 2.示例 清除/var/log下的messages日志文件的简单命令脚本#把所有命令放在一个文件里堆积起来就形成了脚本,下面就是一个最简单的命令堆积形成的shell脚本。#要使用root身份来...
2019-02-18 23:19:36
355
原创 《快学scala》读书笔记--第一章
1.声明值和变量以val定义的值实际上是一个常量,无法改变它的内容。scala>val answer = 8*5scala>answer =0:error:reassignment to val以var 声明的变量,值是可以改变的var counter = 0counter = 1 //OK,可以改变var变量 的值在scala中鼓励使用val来
2017-09-26 00:40:44
368
jdk1.8 64位 官方正式版下载
2018-10-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅