SpringBoot
文章平均质量分 93
在下小吉.
我心爱的花在那里,在那颗遥远的星星上。
展开
-
【SpringBoot篇】详解Bean的管理(获取bean,bean的作用域,第三方bean)
在项目中,我们自定义一个类,如果我们想把这个类交给ioc容器管理,加上@Component衍生注解即可如果这个类不是我们自己自定义的,是我们引入第三方依赖中的,而且我们还想把这个类交给ioc容器管理,那么我们应该定义一个方法,在这个方法上加上@Bean在技术的道路上,我们不断探索、不断前行,不断面对挑战、不断突破自我。科技的发展改变着世界,而我们作为技术人员,也在这个过程中书写着自己的篇章。让我们携手并进,共同努力,开创美好的未来!愿我们在科技的征途上不断奋进,创造出更加美好、更加智能的明天!原创 2024-05-13 15:39:10 · 1837 阅读 · 84 评论 -
【SpringBoot篇】基于Redis分布式锁的 误删问题 和 原子性问题
如果属于自己,则不进行锁的删除,假设还是上边的情况,线程1卡顿,锁自动释放,线程2进入到锁的内部执行逻辑,此时线程1反应过来,然后删除锁,但是线程1,一看当前这把锁不是属于自己,于是不进行删除锁逻辑,当线程2走到删除锁逻辑时,如果没有卡过自动释放锁的时间点,则判断当前这把锁是属于自己的,于是删除这把锁。这个时候线程2开始执行,在线程2执行过程中,线程1阻塞结束了,会执行删除锁的操作,相当于判断锁标识并没有起到作用(因为之前一句判断过了),于是就把线程2的锁给删除掉了,又一次发生了误删操作。原创 2024-05-10 15:36:26 · 1861 阅读 · 124 评论 -
【SpringBoot篇】再战 登录注册操作
总结了一下登录注册的操作,担心忘了。就记录一下,方便以后复习使用。本篇文章仅仅作为我自己复习使用,可能会有问题,请谅解!原创 2024-03-13 20:59:41 · 1332 阅读 · 3 评论 -
【SpringBoot篇】解决Redis分布式锁的 误删问题 和 原子性问题
如果属于自己,则不进行锁的删除,假设还是上边的情况,线程1卡顿,锁自动释放,线程2进入到锁的内部执行逻辑,此时线程1反应过来,然后删除锁,但是线程1,一看当前这把锁不是属于自己,于是不进行删除锁逻辑,当线程2走到删除锁逻辑时,如果没有卡过自动释放锁的时间点,则判断当前这把锁是属于自己的,于是删除这把锁。这个时候线程2开始执行,在线程2执行过程中,线程1阻塞结束了,会执行删除锁的操作,相当于判断锁标识并没有起到作用(因为之前一句判断过了),于是就把线程2的锁给删除掉了,又一次发生了误删操作。原创 2024-02-07 10:58:03 · 3935 阅读 · 104 评论 -
【SpringBoot篇】springboot的自动装配原理
自动装配(Auto-Configuration)是Spring Boot框架的一个核心特性之一,它通过扫描应用程序的classpath和依赖关系,自动配置和装配Spring应用程序所需的各种组件在传统的Spring应用程序中,开发者需要手动配置大量的bean,例如数据源、事务管理器、视图解析器等。这些配置过程繁琐而容易出错,加大了开发难度和成本。而Spring Boot的自动装配机制则能够自动完成这些配置过程,使得开发者可以更加专注于业务逻辑的实现。原创 2024-01-26 13:46:11 · 7907 阅读 · 170 评论 -
【SpringBoot篇】添加富文本编辑器操作
富文本编辑器是一种能够编辑和展示富文本内容的工具或程序。与纯文本编辑器不同,富文本编辑器可以处理文本的格式、样式、布局等方面,使文本更加丰富多样。富文本编辑器通常提供以下功能:文字样式: 可以设置字体、字号、颜色、粗体、斜体、下划线等文字样式。段落样式: 可以设置标题、段落对齐方式、缩进等段落样式。列表: 可以创建有序或无序列表,方便排列项目或要点。插入图片和视频: 可以插入图片和视频文件,丰富文本内容。超链接: 可以插入超链接,使文本具有跳转功能。原创 2024-01-17 12:53:10 · 3316 阅读 · 167 评论 -
【SpringBoot篇】详解Bean的管理(获取bean,bean的作用域,第三方bean)
在项目中,我们自定义一个类,如果我们想把这个类交给ioc容器管理,加上@Component衍生注解即可如果这个类不是我们自己自定义的,是我们引入第三方依赖中的,而且我们还想把这个类交给ioc容器管理,那么我们应该定义一个方法,在这个方法上加上@Bean在技术的道路上,我们不断探索、不断前行,不断面对挑战、不断突破自我。科技的发展改变着世界,而我们作为技术人员,也在这个过程中书写着自己的篇章。让我们携手并进,共同努力,开创美好的未来!愿我们在科技的征途上不断奋进,创造出更加美好、更加智能的明天!原创 2023-12-29 13:25:05 · 4544 阅读 · 145 评论 -
【SpringBoot篇】优惠券秒杀 — 添加优惠劵操作(基本操作 | 一人仅一张券的操作)
在该函数中,使用了synchronized关键字加上锁,这是为了确保在多线程环境下,同一时间只有一个线程能够执行该代码块。具体来说,在该代码块中,使用了线程的id作为锁,可以确保每个线程都有自己的锁,互不干扰。因为我们希望id值一样的 用的是同一把锁,每次请求的都是不同的对象,对象变了,为了保证值一样,我们使用了tostring()方法。这是一张秒杀券,里面包含了普通券的所有信息,还有秒杀券独有的特点,比如库存,生效时间,生效时间等信息。我们使用上面的操作,线程少的话,没问题,可以执行。原创 2023-12-27 11:49:27 · 2802 阅读 · 126 评论 -
【SpringBoot篇】解决缓存击穿问题② — 基于逻辑过期方式
逻辑过期是一种指定缓存数据失效时间的方式,与物理过期不同。逻辑过期并不直接将缓存中的数据删除,而是在缓存中保留该数据,但标记其为过期,表示该数据已经不再可用。在逻辑过期的情况下,当有请求查询该数据时,缓存会先检查该数据是否过期,如果过期,则缓存会认为该数据不存在,并重新从数据源获取最新的数据。如果数据没有过期,则直接返回缓存中的数据。需要注意的是,逻辑过期时间是相对较短的,通常设置在几分钟或者几十分钟之内。原创 2023-12-25 14:02:30 · 4550 阅读 · 133 评论 -
【SpringBoot篇】解决缓存击穿问题① — 基于互斥锁方式
缓存击穿是指在使用缓存系统时,对一个热点数据的高并发请求导致缓存失效,多个请求同时访问数据库,造成数据库压力过大,性能下降。热点数据失效:当某个热点数据的缓存过期或被删除时,此时如果有大量的并发请求同时访问该数据,缓存系统无法命中缓存,每个请求都会直接访问数据库。频繁更新数据:某个数据被频繁地修改,导致缓存频繁失效,而此时大量的请求同时访问该数据,造成缓存击穿。缓存击穿会严重影响系统的性能和可用性,因为数据库无法处理如此高的并发请求,导致系统响应变慢甚至崩溃。原创 2023-12-22 09:29:29 · 6458 阅读 · 134 评论 -
【SpringBoot篇】基于Redis实现生成全局唯一ID的方法
科技的发展改变着世界,而我们作为技术人员,也在这个过程中书写着自己的篇章。总之,生成全局唯一ID有助于提高系统的可用性、数据的完整性和安全性,同时也方便数据的管理和分析。总结来说,生成全局唯一ID有助于确保数据的唯一性、提高系统的可用性和性能,并支持数据跟踪、安全性和权限控制等功能。然后,使用位运算符 | 进行按位或操作,将左移后的时间戳与序列号 count 进行按位或操作,合并它们的二进制表示。最终得到的结果就是一个64位的ID,其中高位是时间戳部分,低位是序列号部分。ID生成器的算法如下。原创 2023-12-20 12:20:02 · 13534 阅读 · 201 评论 -
【SpringBoot篇】Interceptor拦截器 | 拦截器和过滤器的区别
拦截器的工作方式是通过将其注册到应用程序的处理管道中,并在请求或响应传递过程中执行相应的操作。拦截器可以在整个应用程序中使用,用于执行跨越多个层的通用任务,如身份验证、授权、缓存、日志记录、性能计量等。例如,在Spring框架中,可以使用拦截器来实现身份验证和授权检查,记录请求和响应的日志,以及处理全局异常等。总之,拦截器是一种非常有用的设计模式,可以帮助开发人员在应用程序中实现通用的功能,提高代码的可重用性和可维护性。拦截器是一种非常有用的设计模式,它可以在应用程序处理请求或响应时对其进行拦截和修改。原创 2023-12-16 14:24:29 · 3890 阅读 · 155 评论 -
【SpringBoot篇】基于布隆过滤器,缓存空值,解决缓存穿透问题 (商铺查询时可用)
缓存穿透是指在使用缓存机制时,大量的请求无法从缓存中获取到结果,导致请求都要直接访问后端存储系统,从而增加了系统的负载和响应时间。通常的缓存机制是将请求的结果缓存在内存或其他高速存储介质中,当相同的请求再次到达时,可以直接从缓存中获取结果,避免了从后端存储系统中读取数据的开销。然而,在缓存穿透的情况下,由于大量请求所对应的数据在缓存中不存在,每个请求都需要直接访问后端存储系统。这可能是因为恶意请求、频繁的随机查询或者查询不存在的数据等原因。原创 2023-12-14 16:12:56 · 3757 阅读 · 102 评论 -
【SpringBoot篇】详解基于Redis实现短信登录的操作
分布式系统:当系统需要支持多个节点的分布式部署时,使用 Redis 存储登录信息能够更好地支持多节点间的共享和同步,确保用户的登录状态能够在整个系统中得到有效的传递和管理。高并发访问:面对大规模的并发访问,使用 Redis 可以提供更好的性能表现。Redis 是一个基于内存的高性能 Key-Value 数据库,能够更快速地读取和写入数据,因此适用于需要处理大量并发请求的场景。原创 2023-12-12 12:39:50 · 5563 阅读 · 139 评论 -
【SpringBoot篇】5种类型参数传递&&json数据传参的操作
5种类型参数传递&&json数据传参原创 2023-12-10 11:04:33 · 4994 阅读 · 140 评论 -
【SpringBoot篇】登录校验 — JWT令牌
头部包含了令牌使用的加密算法信息,载荷包含了所需传输的用户信息,签名用于保证令牌的完整性和真实性,防止令牌被篡改。每次向服务器发送请求时,在请求的头部中携带该令牌,以便服务器对请求进行身份验证。服务器收到请求后,从请求头中提取JWT令牌,并进行解析和验证。用户向服务器发送登录请求,服务器进行身份验证,如果验证成功则返回一个JWT令牌给客户端。(相当于校验令牌,只要解析令牌不报错,就相当于校验jwt令牌正确)运行后发现,出现了jwt令牌。原创 2023-11-29 12:15:34 · 9073 阅读 · 219 评论 -
【SpringBoot篇】阿里云OSS—存储文件的利器
阿里云对象存储(Alibaba Cloud Object Storage Service,简称OSS)是阿里云提供的海量、安全、低成本、高可靠的云存储服务。用户可以通过简单的API接口在任何时间、任何地点上传和下载数据,适用于图像、音视频、文档、网站等各种类型的数据存储和分发场景。原创 2023-11-25 10:30:04 · 7383 阅读 · 125 评论 -
【SpringBoot篇】Spring_Task定时任务框架
Spring Task 是 Spring 框架提供的一种任务调度和异步处理的解决方案。可以按照约定的时间自动执行某个代码逻辑它可以帮助开发者在 Spring 应用中轻松地实现定时任务、异步任务等功能,提高应用的效率和可维护性。原创 2023-11-23 13:08:52 · 4096 阅读 · 179 评论 -
【SpringBoot篇】分页查询 | 扩展SpringMvc的消息转换器
分页查询是指将大量数据按照固定大小的页进行切分,每次查询只返回一页数据,通过不断翻页来获取全部数据。原创 2023-11-16 15:17:53 · 2523 阅读 · 158 评论 -
【SpringBoot篇】使用Spring Cache高效处理缓存数据
Spring Cache是一个框架,只要简单加一个注解,就能实现缓存功能。Spring Cache是Spring Framework提供的一个模块,它为应用程序添加了缓存支持。通过使用Spring Cache,你可以在方法级别上定义缓存规则,将方法的返回结果缓存起来,以提高方法调用的性能和响应速度。原创 2023-11-13 10:12:17 · 5230 阅读 · 189 评论 -
【SpringBoot篇】SpringBoot整合Mybatis实战 | 报错:需要目标发行版17解决方法
SpringBoot整合Mybatis实战原创 2023-11-06 10:18:52 · 2536 阅读 · 178 评论 -
【SpringBoot篇】基于SpringBoot进行Web开发
基于SpringBoot进行Web开发原创 2023-10-16 13:45:12 · 2047 阅读 · 160 评论