- 博客(29)
- 收藏
- 关注
原创 【消息队列】RabbitMQ基本认识
大家好,今天给大家分享RabbitMQ。MQ呢可以看作一个中间者,我们给MQ发送一条消息,然后其他服务就可以从MQ获取到消息并执行相应的业务。这样的好处就是可以达到异步处理,生产消息的一方只需要把消息发送给MQ即可,无需再关注后续操作,可以继续执行自己的业务。
2025-05-14 17:20:44
918
原创 【Redis】分布式锁的实现
分布式锁利用set nx ex的原理。(set nx的互斥性,ex保证超时释放锁,避免死锁)释放锁时要看看锁是不是该线程的持有者,避免误删使用Lua脚本满足一组操作的原子性。
2025-05-12 13:01:54
1245
原创 【并发问题】一人一单(悲观锁解决)
今天给大家介绍一下分布式锁。在项目中,为了在并发情况下保证保证线程安全来实现,通常使用来实现。而锁也可以分为乐观锁和悲观锁,他们是一种锁的设计理念,关于乐观锁可以看看这一篇博客下面我将详细介绍一下悲观锁,而本地锁和分布式锁的区别和实现会在后面章节讲解。
2025-05-11 10:12:50
795
原创 【java】jdk8及以后的时间类总结
表示两个时间点之间的时长(基于秒和纳秒),不可变且线程安全。:表示不带时区的时间(时、分、秒、纳秒),不可变且线程安全。:表示不带时区的日期(年、月、日),不可变且线程安全。:用于日期时间对象的格式化和解析,线程安全且不可变。:表示带时区的完整日期时间,不可变且线程安全。
2025-05-10 10:36:02
326
原创 【并发问题】商品超卖问题(乐观锁解决)
超卖的意思就是,一些限时限量的订单,在并发场景下,如果没有做对应的措施,就会造成并发问题。比如一个商品限时100份,每一个线程到来时,先判断还有没有库存,如果有就派发出去,并且库存-1,如果没有库存,就直接返回错误信息。在实际项目上线时,由于大量的用户同时抢购,由于线程之间会抢夺cpu的执行权,就会引发并发问题。比如当最后只剩下一个库存时,用户A的线程判断到还有库存,还没来得及减1。cpu的执行权就被用户B的线程抢去了,用户B也判断到了还有库存,执行业务,最后对数据库的库存-1。
2025-05-09 11:19:25
788
原创 【权限模型】RBAC模型详解
大家好,我是jstart千语。今天给大家介绍一下鉴权模型RBAC,传统的鉴权模式就是基于用户和权限之间的多对多关系。而RBAC就更加的精准,更好管理。
2025-04-28 20:08:22
1034
原创 【java】lambda表达式总结
显然,如果使用面向对象的思想,要先自己写实现类,然后重写方法,然后创建对象,最好再调用方法。相对来说比较麻烦,特别是某种情况只用一次的时候。
2025-04-27 16:34:39
1087
原创 Maven的聚合工程与继承
大家好,我是jstart千语。想着平时开发项目似乎都是用maven来管理的,并且大多都是聚合工程。而且在maven的聚合工程中,通常与maven继承一起使用。有时候可能会把这两者混淆,所以在这里做一些总结吧。
2025-04-26 16:31:52
1431
原创 【Git】连接github时的疑难杂症(DNS解析失败)
大家好,我是jstart千语。最近在将项目推送到github的时候,突然github就拒绝访问了,即使挂了VPN,网页也进不去,通过git也不能把代码推送上去。即使后面看别人的一些解决方案,比如取消代理啊、更换ssh的方式、该22端口号为443等等,通通都解决不了。
2025-04-25 12:57:38
1167
原创 【SpringBoot】HttpServletRequest获取使用及失效问题(包含@Async异步执行方案)
Async 是 Spring 提供的一个注解,用来让你的方法异步执行(非阻塞)。它背后是线程池 + AOP 实现的。你只需要加个注解,Spring 就会帮你把方法在新线程里执行,非常适合处理不需要立刻返回的任务,比如发送邮件、日志记录、异步通知等等。
2025-04-21 09:19:19
1294
原创 【实体转换】mapstruct详解
这个工具有些类似于spring提供的BeanUtils.copyProperties()用于对象转化。而mapstruct是通过生成高效的、类型安全的映射代码来帮助开发人员在不同的数据对象之间进行转换。但他们的实现方式大有不同,从而他们从性能方面也会有差异。总得来说,如果项目中使用到的实体转换场景不多,那么使用BeanUtils就可以了,但如果项目中需要大量使用到实体转换,那么使用mapstruct在提高性能方面就是一个很好的选择。
2025-04-18 19:37:25
1197
原创 【版本控制】idea中使用git
大家好,我是jstart千语。接下来继续对git的内容进行讲解。也是在开发中最常使用,最重要的部分,在idea中操作git。目录在右侧哦。
2025-04-16 15:07:58
1122
原创 【版本控制】git命令使用大全(图文讲解)
大家好,我是jstart千语。今天来总结一下git的使用命令,上文会先将git命令都列出来,便于快速寻找,然后还会对部分常用命令图文讲解,适合新手。最后还会总结在idea中使用git。如果有缺失的,欢迎反馈补充。
2025-04-15 22:30:18
980
原创 【AI扩图】基于调用阿里百炼大模型完成
大家好,我是jstart千语。今天来给大家如何给系统接入AI大模型,让我们的系统可以增加AI功能。本篇主要是依赖阿里云百炼来讲解,因为它有丰富的模型和应用,也可以自定义一个应用发布,然后调用API使用自己的模型。本篇以AI扩图为例给大家讲解。
2025-04-14 09:03:06
1479
原创 【websocket】使用案例( JSR 356 标准)
大家好,我是jstart千语。今天补充关于websocket使用的剩下两种使用方法。分别是JSR 356 标准与STOMP 协议。
2025-04-11 10:35:07
1170
原创 【webSocket协议】进阶实战案例(Spring 原生低层 API)
特性类要继承协议层级直接处理 WebSocket 原始帧(文本/二进制)消息格式需自行解析消息内容(如 JSON、XML)连接管理需手动管理连接状态(如在线用户列表、心跳检测)消息路由需自行实现消息路由逻辑(如根据消息类型分发)广播与点对点需手动实现(如遍历所有 Session 发送消息)鉴权与拦截需手动实现(如通过 HandshakeInterceptor 拦截连接)集群支持需自行处理多节点消息同步(如通过 Redis 广播)
2025-04-10 11:40:09
970
原创 【网络协议】WebSocket讲解
WebSocket 是一种基于 TCP 的网络通信协议,设计用于在客户端(通常是浏览器)和服务器之间建立一个持久化的、双向通信通道。实时通信。传统的 HTTP 协议是 请求-响应模式,不适合实时性要求高的应用。而 WebSocket 允许服务器主动向客户端推送消息,非常适合用于聊天室、在线游戏、股票行情、实时通知等场景。半双工允许数据在两个方向上传输,但同一个时间段内只允许一个方向上的传输全双工允许数据在两个方向上同时传输。
2025-04-07 17:12:32
1561
2
原创 【Redis】数据的淘汰策略
大家好,我是jstart千语。今天和大家回来聊一下redis,这次要讲的是它的淘汰策略。为什么需要淘汰策略呢,就是当redis里面的内存占满后,存不下数据了,那么新加入的数据该如何处理呢?这种处理的方式不同,就称为不同的数据淘汰策略。redis支持8种不同的淘汰策略。
2025-04-05 12:59:06
1147
原创 【本地缓存】caffeine缓存详解
给大家介绍一下本地缓存的使用,因为二级缓存是开发中必须要掌握的,可以很大程度上提供数据获取的性能,本篇主要给大家介绍的是caffeine。什么样的数据适合存到缓存里?最简单的就一句话:读多写少的数据。数据不需要频繁更改的数据就很适合存到缓存中,因为它在缓存里读取得更快,不需要在想数据库发送网络请求。当然还有一个重要的因素就是数据的一致性问题,需强一致性的数据,如果非必要,就不用存到缓存当中。废话不多说,直接先教大家怎么使用,再细讲里面的配置。
2025-04-01 09:39:11
2169
原创 【文件上传】使用腾讯云COS实现文件上传
大家好,我是jstart千语。今天记录一下如何使用腾讯云的COS来实现文件上传。文件上传有很多家的产品都可以做,比如阿里云的OSS,还有开源的minio,大家都可以去研究研究。今天主要来讲腾讯的COS,因为它有一个数据万象的功能,可以帮我们解析文件,很是方便。本篇主要演示上传图片的示例。
2025-03-26 14:31:49
1188
原创 【用户登录】基于微信公众号实现登录注册
大家好,我是jstart千语。现在主流的登录注册方式有短信验证登录、邮箱登录、微信扫码登录。但这些方式对于初学者来说成本过于高,比如短信登录需要和云平台对接,邮箱登录的配置也很麻烦。所以接下来我介绍一种基于微信公众号的方式进行登录注册的实现,这是一种成本很低的登录方式,只需要申请一个公众号认证即可,在开发阶段也可以申请一个测试的公众号,开发起来非常方便。
2025-03-24 14:47:15
972
原创 【元婴境】mysql的MVCC(详解)
大家好,我是jstart千语。上篇我们讲到mysql的事务隔离级别,其中MVCC就是控制事务隔离级别的重要组成部分,也是实现事务四大特性之一隔离性的重要手段。那么接下来我将通透地讲解MVCC,让大家对mysql的隔离性有一个更深刻的理解。MVCC全称 Multi-Version Concurrency Control,也就是多版本的并发控制,这一点从名字就可以感受到。具体指维护数据的多个版本,在并发环境下,控制数据的读写没有冲突。
2025-03-22 11:25:45
1047
原创 【金丹境】轻松理解mysql的事务与隔离级别(超详细)
现象产生条件解决办法脏读事务读到了未提交的数据(读已提交)不可重复读事务的同一条数据被修改(可重复读)幻读事务的查询结果发生变化(增删数据)(可序列化)MySQL默认的隔离级别是 REPEATABLE READ,可以防止脏读和不可重复读,但仍可能发生幻读。想让事务更安全,就要在提高隔离级别和性能损耗之间找到平衡。
2025-03-21 10:22:46
766
原创 【结晶期】redis缓存之数据持久化:RDB和AOF
大家好,我是jstart千语。redis作为缓存,既然是存数据的地方,肯定要考虑到数据的持久性。持久性通俗点来讲就是让数据存活地更久一点吧。那么趁热打铁,我们直接开始数据持久化的讲解。
2025-03-20 15:43:48
1270
原创 【结晶期】缓存的数据维护—双写一致性
大家好,我是jstart千语,我们继续修炼redis,现在已经达到结晶期啦,照这个速度下去,化神指日可待呀hhhO(∩_∩)O哈哈~。缓存是一个用来减少数据库访问的中间件,让业务读取数据库之前,先去查缓存,如果有数据就拿缓存的数据。那么使用缓存不得不面临的一个问题就是,当数据库发生更改时,它如何保证与数据库的数据同步呢?这里就探讨一下,redis在使用过程中的问题。具体的解决方案还是要看具体的业务,因为不同的解决方案它的一致性程度不一样,性能也不一样,实现的复杂度也不一样。
2025-03-20 10:32:35
745
原创 【筑基期】深入redis缓存三兄弟问题
大家好呀,我是jstart千语。在大多数的业务中,或多或少都会有高并发的场景,典型的就有电商、社交、游戏等。而且相信大家都知道要用缓存来解决数据库压力的问题,也知道缓存会失效或者出现极端流量的时候,数据库可能被瞬间击穿,导致服务崩溃。redis出现问题导致的结果,无非就是让数据库受到了非常大的压力,所以解决的思路就是这么维护好redis。紧接上回,这里再详细介绍一下redis缓存在使用时出现的问题及其解决思路。
2025-03-19 20:52:48
822
原创 【炼气期】redis的基本使用
hello啊,我是jstart千语,上一篇讲了一个高并发下的缓存实际业务问题,接下来就先从最简单的redis如何使用说起。本篇主要介绍redis各种数据类型的最基础使用。
2025-03-19 18:23:18
947
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人