![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spring
文章平均质量分 77
大梦谁先觉i
悄悄努力,惊艳众人
展开
-
MQ如何防止消息被重复消费?
被询问如何防止MQ消息被重复消费时,其实是在考察候选人对消息队列、分布式系统设计以及容错机制的理解,通过这些问题,可以全面了解候选人在处理MQ消息重复消费问题时的思考方式、技术能力和实践经验,从而评估其是否适合担任相关岗位。原创 2024-03-03 20:48:37 · 2275 阅读 · 0 评论 -
对程序、进程、线程、并发、并行、高并发概念的讲解
程序、进程、线程、并发、并行和高并发是计算机科学领域中非常重要的概念原创 2024-03-02 22:39:06 · 979 阅读 · 0 评论 -
ThreadLocal 为什么会内存泄漏吗?是怎么产生的?
ThreadLocal是一个本地线程副本变量工具类。主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰,在高并发场景下,可以实现无状态的调用,特别适用于各个线程依赖不通的变量值完成操作的场景原创 2024-03-02 03:30:00 · 928 阅读 · 0 评论 -
Spring AOP知识点详解
AOP,一般称为面向切面,作为面向对象的一种补充,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“**切面**”(Aspect),减少系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。可用于权限认证.日志.事务处理。原创 2023-07-15 22:07:06 · 557 阅读 · 0 评论 -
说一下TreadLocal,深拷贝和浅拷, 强引用,软引用,弱引用和虚引用
软引用可以让对象豁免一些垃圾回收,只有当JVM内存不足时,才会回收掉软引用指向的对象,JVM会确保抛出OOM之前回收掉软引用指向的对象,如果这次回收后还是没有足够的内存,JVM将会抛出OOM。只要强引用还在,垃圾回收器就永远不会回收被引用的对象,即使发生OOM,如果没有其他引用关系,只要超过了引用的作用于或者显式的将相应引用赋值为null,就可以被垃圾回收器回收掉。弱引用也是用来描述非必须对象的,但是强度比软引用更弱一些。无论当前内存是否充足,都会回收掉弱引用关联的对象。原创 2023-06-01 22:25:21 · 471 阅读 · 0 评论 -
九种分布式ID解决方案
在复杂的分布式系统中,往往需要对大量的数据进行唯一标识,比如在对一个订单表进行了分库分表操作,这时候数据库的自增ID显然不能作为某个订单的唯一标识。除此之外还有其他分布式场景对分布式ID的一些要求原创 2023-05-20 23:46:26 · 1420 阅读 · 1 评论 -
新写了的 AOP 日志切面,方便以后直接使用。
面向切面编程是一种编程范式,它作为OOP面向对象编程的一种补充,用于处理系统中分布于各个模块的横切关注点,比如事务管理权限控制缓存控制日志打印等等。核心关注点和横切关注点。业务处理的主要功能为核心关注点,而非核心、需要拓展的功能为横切关注点。集中处理某一关注点/横切逻辑可以很方便的添加/删除关注点侵入性少,增强代码可读性及可维护性 因此当想打印请求日志时很容易想到切面,对控制层代码0侵入。原创 2023-04-30 00:25:48 · 1195 阅读 · 0 评论 -
Java调用第三方http接口的方式
在实际开发过程中,我们经常需要调用对方提供的接口或测试自己写的接口是否合适。很多项目都会封装规定好本身项目的接口规范,所以大多数需要去调用对方提供的接口或第三方接口(短信、天气等)。原创 2023-02-23 21:53:51 · 675 阅读 · 0 评论 -
SpringCache学习笔记
Spring Cache是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能,大大简化我们在业务中操作缓存的代码。Spring Cache只是提供了一层抽象,底层可以切换不同的cache实现。具体就是通过CacheManager接口来统一不同的缓存技术。CacheManager是Spring提供的各种缓存技术抽象接口。针对不同的缓存技术需要实现不同的CacheManager:在SpringCache中提供了很多缓存操作的注解,常见的是以下的几个:在spring boot项目中,使用原创 2022-10-25 02:30:00 · 316 阅读 · 4 评论 -
SpringBoot---WebMvcConfigurer详解
配置类其实是Spring内部的一种配置方式,采用JavaBean的形式来代替传统的xml配置文件形式进行针对框架个性化定制,可以自定义一些Handler,Interceptor,ViewResolver,MessageConverter。基于java-based方式的spring mvc配置,需要创建一个配置类并实现WebMvcConfigurer 接口;在Spring Boot 1.5版本都是靠重写WebMvcConfigurerAdapter的方法来添加自定义拦截器,消息转换器等。原创 2022-10-24 21:39:19 · 1040 阅读 · 0 评论 -
动态代理的两种方式以及区别
JDK动态代理:利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。CGlib动态代理:利用ASM(开源的Java字节码编辑库,操作字节码)开源包,将代理对象类的class文件加载进来,通过修改其字节码生成子类来处理。区别:JDK代理只能对实现接口的类生成代理;CGlib是针对类实现代理,对指定的类生成一个子类,并覆盖其中的方法,这种通过继承类的实现方式,不能代理final修饰的类。强制使用CGlib<!-- proxy-target-class="原创 2022-05-27 12:11:16 · 4133 阅读 · 0 评论 -
Spring学习笔记(一)
1. spring概述1.1 框架概述框架是一个封装了很多功能和模块的程序的半成品。可以理解为是一个由很多工具类组合而成的一个工具包。1.2 Spring是什么Spring是分层的 Java SE/EE应用 full-stack 轻量级开源框架。是Java开发的灵魂框架。Spring有两大内核:IOC(Inverse Of Control:控制反转)AOP(Aspect Oriented Programming:面向切面编程)1.3 Spring功能IOC:控制反转,其实就是把对象的原创 2022-03-09 23:04:25 · 122 阅读 · 0 评论 -
Spring自带工具类详解
断 言断言是一个逻辑判断,用于检查不应该发生的情况Assert 关键字在 JDK1.4 中引入,可通过 JVM 参数-enableassertions开启SpringBoot 中提供了 Assert 断言工具类,通常用于数据合法性检查// 要求参数 object 必须为非空(Not Null),否则抛出异常,不予放行// 参数 message 参数用于定制异常信息。void notNull(Object object, String message)// 要求参数必须空(Null),否则抛原创 2022-02-26 00:52:43 · 230 阅读 · 0 评论 -
MyBatis方法参数详解
1. 单参数方法单参数方法的参数详解, 主要介绍不同类型的参数,在Mapper映射文件中的配置方式.参数为: 简单类型(基本数据类型+String)参数为: 对象类型参数为: List集合类型-List参数为: List集合类型-List参数为: 数组类型参数为: Set集合类型参数为: Map集合类型1.1 简单类型1.1.1 方法示例public User findUserById(int id);1.1.2 映射配置<!-- public User findUse原创 2022-02-23 09:38:47 · 2136 阅读 · 0 评论 -
Mybatis 插入一条数据返回主键自增
方法一:Mybatis 原来一般插入一条数据就这样 <insert id="add" parameterType="com.pojo.CheckGroup"> insert into checkgroup (id,code,name,sex,remark,attention) values (#{id},#{code},#{name},#{sex},#{remark},#{attention}) </insert>当然这样的话 其实他也是会返回1个 int原创 2022-02-21 12:21:21 · 1447 阅读 · 0 评论 -
MybatisPlus入门学习总结
MybatisPlus目标:了解mybatisplus的特点能够掌握mybatisplus快速入门能够掌握mybatisplus常用注解能够掌握mybatisplus常用的增删改查能够掌握mybatisplus自动代码生成概述•MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。•官网:https://mybatis.plus/ 或 https://mp.baomidou.com/版本原创 2022-01-26 11:22:25 · 172 阅读 · 0 评论 -
knife4j的简单使用
knife4j(1)简介knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,前身是swagger-bootstrap-ui,取名kni4j是希望它能像一把匕首一样小巧,轻量,并且功能强悍!gitee地址:https://gitee.com/xiaoym/knife4j官方文档:https://doc.xiaominfo.com/效果演示:http://knife4j.xiaominfo.com/doc.html(2)核心功能该UI增强包主要包括两大核心功能:文原创 2022-01-26 10:33:01 · 1347 阅读 · 0 评论 -
使用AOP做日志处理实例
package com.test.aspect;import org.aspectj.lang.JoinPoint;import org.aspectj.lang.annotation.*;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.stereotype.Component;import org.springframework.web.context.request.Requ原创 2022-01-19 12:27:08 · 117 阅读 · 0 评论 -
Lombok与 MybatisPlus-自动填充功能
lombok1.1 概述可以帮我们生成getter,setter方法,构造方法,toString方法,可以简化我们"实体类"的书写原创 2022-01-18 22:50:06 · 475 阅读 · 0 评论