- 博客(14)
- 收藏
- 关注
原创 Redis实战篇之好友关注(基于黑马程序员Redis讲解视频总结)
推拉模式是一个折中的方案,站在发件人这一段,如果是个普通的人,那么我们采用写扩散的方式,直接把数据写入到他的粉丝中去,因为普通的人他的粉丝关注量比较小,所以这样做没有压力,如果是大V,那么他是直接将数据先写入到一份到发件箱里边去,然后再直接写一份到活跃粉丝收件箱里边去,现在站在收件人这端来看,如果是活跃粉丝,那么大V和普通的人发的都会直接写入到自己收件箱里边来,而如果是普通的粉丝,由于他们上线不是很频繁,所以等他们上线时,再从发件箱里边去拉信息。需求:利用Redis中恰当的数据结构,实现共同关注功能。
2024-07-18 23:46:21 1214
原创 Redis实战篇之达人探店(基于黑马程序员Redis讲解视频总结)
造成这个问题的原因是,我们现在的逻辑,发起请求只是给数据库+1,所以才会出现这个问题。因为我们的数据是不能重复的,当用户操作过之后,无论他怎么操作,都是。tb_blog:探店笔记表,包含笔记中的标题、文字、图片等。实现查看发布探店笔记的接口。
2024-07-18 23:41:30 370
原创 Redis实战篇之Redis消息队列(基于黑马程序员Redis讲解视频总结)
所谓解耦,举一个生活中的例子就是:快递员(生产者)把快递放到快递柜里边(Message Queue)去,我们(消费者)从快递柜里边去拿东西,这就是一个异步,如果耦合,那么这个快递员相当于直接把快递交给你,这事固然好,但是万一你不在家,那么快递员就会一直等你,这就浪费了快递员的时间,所以这种思想在我们日常开发中,是非常有必要的。注意:当我们指定起始ID为$时,代表读取最新的消息,如果我们处理一条消息的过程中,又有超过1条以上的消息到达队列,则下次获取时也只能获取到最新的一条,会出现漏读消息的问题。
2024-07-16 16:00:17 857
原创 Redis实战篇之秒杀优化(基于黑马程序员Redis讲解视频总结)
秒杀业务的优化思路是什么?先利用Redis完成库存余量、一人一单判断,完成抢单业务再将下单业务放入阻塞队列,利用独立线程异步下单基于阻塞队列的异步秒杀存在哪些问题?内存限制问题数据安全问题。
2024-07-16 15:58:22 788
原创 Redis实战篇之分布式锁(基于黑马程序员Redis讲解视频总结)
利用set nx ex获取锁,并设置过期时间,保存线程标示释放锁时先判断线程标示是否与自己一致,一致则删除锁特性:利用set nx满足互斥性利用set ex保证故障时锁依然能释放,避免死锁,提高安全性利用Redis集群保证高可用和高并发特性。
2024-07-15 10:44:08 776
原创 Redis实战篇之优惠卷秒杀(基于黑马程序员Redis讲解视频总结)
由于现在我们部署了多个tomcat,每个tomcat都有一个属于自己的jvm,那么假设在服务器A的tomcat内部,有两个线程,这两个线程由于使用的是同一份代码,那么他们的锁对象是同一个,是可以实现互斥的,但是如果现在是服务器B的tomcat内部,又有两个线程,但是他们的锁对象写的虽然和服务器A一样,但是锁对象却不是同一个,所以线程3和线程4可以实现互斥,但是却无法和线程1和线程2实现互斥,首先我们要知道事务如果想生效,需要Spring对该类做动态代理,拿到了代理对象,来对事务进行处理。
2024-07-13 11:04:29 889
原创 Redis实战篇之商户查询缓存(基于黑马程序员Redis讲解视频总结)
举个例子:越野车,山地自行车,都拥有"避震器",防止车体加速后因惯性,在酷似"U"字母的地形上飞跃,硬着陆导致的损害,像个弹簧一样;同样,实际开发中,系统也需要"避震器",防止过高的数据访问猛冲系统,导致其操作线程无法及时处理信息而瘫痪;这在实际开发中对企业讲,对产品口碑,用户评价都是致命的;所以企业非常重视缓存技术;缓存(Cache),就是数据交换的缓冲区,俗称的缓存就是缓冲区内的数据。
2024-07-11 00:51:30 1321
原创 Redis实战篇之短信登录(基于黑马程序员Redis讲解视频总结)
在这个方案中,他确实可以使用对应路径的拦截,同时刷新登录token令牌的存活时间,但是现在这个拦截器他只是拦截需要被拦截的路径,假设当前用户访问了一些不需要拦截的路径,那么这个拦截器就不会生效,所以此时令牌刷新的动作实际上就不会执行,所以这个方案他是存在问题的。
2024-07-10 09:11:13 1064
原创 Redis基础篇总结(基于黑马程序员Redis视频讲解)
SpringDataRedis的使用步骤:引入spring-boot-starter-data-redis依赖在application.yml配置Redis信息注入RedisTemplate尽管JSON的序列化方式可以满足我们的需求,但依然存在一些问题,如图:为了在反序列化时知道对象的类型,JSON序列化器会将类的class类型写入json结果中,存入Redis,会带来额外的内存开销。RedisTemplate的两种序列化实践方案:方案一:自定义RedisTemplate。
2024-07-07 22:40:58 1074
原创 SpringBoot全局异常处理器的简单使用
全局异常处理器(Global Exception Handler)是一个在Java Web应用中处理所有未捕获异常的 handler。它可以帮助我们在发生异常时进行统一的错误处理和友好的提示,避免直接向用户展示技术细节。在Spring Boot中,我们可以通过@ControllerAdvice和@ExceptionHandler注解来实现全局异常处理器。
2024-06-02 13:21:13 844
原创 自定义json数据的对象转换器
对象映射器:基于jackson将Java对象转为json,或者将json转为Java对象将JSON解析为Java对象的过程称为 [从JSON反序列化Java对象]从Java对象生成JSON的过程称为 [序列化Java对象到JSON]在上面的基础我们只需注释掉@JsonFormat以排除对这次操作的影响。首先编写JacksonObjectMapper对象转换器。
2024-06-01 12:08:46 573
原创 JWT总结及在springboot中的使用
JWT,全称为JSON Web Token。JWT本质就是一个字符串,它是将用户信息保存到一个Json字符串中,然后进行编码后得到一个JWT Token,并且这个JWT Token带有签名信息,接受之后可以校验是否被篡改。具体的JWT认证流程如下:用户认证:用户向服务器提供登录信息(如用户名和密码)。Token生成:服务器验证用户信息无误后,生成一个JWT,该Token包含三个部分:Header(包含类型和加密算法)、Payload(包含用户相关信息)、Signature(用于验证Token的签名)
2024-05-21 22:14:40 1657
原创 在IDEA中Git的简单使用
合并分支的流程务必规范:先将 master 分支合并到新分支,之后再将新分支合并到 master 分支。这样做的原因是因为一个项目通常由多个人负责,可能在你开发的过程中,有新的代码已经合并到 master 分支并且部署上线了,但是你拉的新分支上的代码依旧是 master 分支的老代码。所以需要先更新你拉的新分支上的代码,将其他人更新的代码合并过来,保证你拉的新分支代码与最新的 master 分支代码一致(以免因为丢失最新修改的代码而造成线上事故)之后再将你的新拉的分支代码合并到 master 分支上面。
2024-05-19 18:51:17 885
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人