自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 从零开始学习Redis(六):Redis最佳实践(使用经验总结)

这篇文章主要讲Redis的使用经验总结,分别从Redis键值设计,批处理优化,服务端优化,集群最佳实践四方面来讲解。

2025-11-02 17:01:12 872

原创 从零开始学习Redis(五):多级缓存

传统的缓存策略一般是请求到达Tomcat后,先查询Redis,如果未命中则查询数据库,存在下面的问题:1· 请求要经过Tomcat处理,成为整个系统的瓶颈2·时,会对数据库产生冲击就是充分利用请求处理的每个环节,分别添加缓存,减轻Tomcat压力,提升服务性能。用作缓存的Nginx是业务Nginx,需要部署为集群,再有专门的Nginx来做反向代理。请求大多在Nginx处理,在Nginx查redis,避免对Tomcat性能造成影响,压力给到了Nginx。

2025-11-02 09:12:06 951

原创 从零开始学习Redis(四):分布式缓存(Redis集群)

之前做的redis缓存(点评项目)都是单节点部署,但单点redis存在一些问题数据丢失问题:Redis是内存存储,服务重启可能会丢失数据并发能力问题:单节点Redis并发能力虽不错,但无法应对高并发场景故障恢复问题:如果Redis宕机,则服务不可用,需要一种自动的故障恢复手段存储能力问题:Redis基于内存,单节点能存储的数据难以满足海量需求而s数据持久化主从集群Redis哨兵分片集群。

2025-10-31 19:05:38 844

原创 HashMap集合

HashMap基于哈希表的Map接口实现,以key-value存储形式存在,主要用来存放键值对。HashMap的实现不是同步(单线程)的,意味着它不是线程安全的。允许使用null值和null键,HashMap的映射不是有序的。哈希表是一种通过哈希函数将键映射到值的存储位置,从而实现快速查找、插入和删除的数据结构。哈希函数映射:输入一个 “键”,哈希函数会计算出一个唯一的 “索引”。这个索引对应着数组(哈希表底层常用数组实现,也叫 “桶”)中的一个位置,用于存放该键对应的值,查询效率高。哈希冲突。

2025-10-28 21:57:00 668

原创 从零开始学习RabbitMQ

RabbitMQ是一款高性能的通讯组件。:发送方发送请求后,必须等待:发送方发送请求后,,可以立即返回并继续处理其他任务。同步调用是程序或服务间交互的一种模式,核心特征是,直到拿到响应后才继续后续流程。吞吐量低时效性强异步调用是程序或服务间交互的一种非阻塞模式,核心特征是,被调用方处理完成后会通过预设方式(如回调、消息通知)反馈结果(或无需反馈)。异步调用方式其实就是基于的方式,一般包含三个角色:投递消息的人,就是原来的调用方:管理、暂存、转发消息,你可以把它理解成微信服务器。

2025-10-22 19:12:50 743

原创 黑马点评|项目总结

这是一个商户点评项目,通过redis解决了项目中的绝大多数问题,实现了redis的多种应用。业务功能板块:短信登录:Redis的共享Session应用商户查询缓存:企业缓存使用技巧,缓存雪崩,穿透等问题解决方案优惠券秒杀:Redis计数器,Lua脚本Redis,分布式锁,Redis的三种消息队列好友关注:基于Set集合的关注,取关,共同关注,消息推送等功能附近商户:Redis的GeoHash的应用UV统计:Redis的HyperLogLog的统计功能。

2025-10-20 10:36:16 1048

原创 Redis实战篇:黑马点评|DAY06

直到遇到。

2025-10-19 14:55:56 821

原创 Redis实战篇:黑马点评|DAY05(异步秒杀的优化)

在之前的秒杀下单业务里,我们将扣减库存和创建订单这两个写操作都放在秒杀下单业务中,但在高并发的情况下,这里会有,会导致业务性能大大降低。因此,我们需要优化。已知秒杀下单的业务逻辑为:查询优惠券------判断秒杀库存-------查询订单-------校验一人一单-------减库存-------创建订单。我们可以将这个业务交给两个线程来做,,即判断秒杀库存和校验一人一单,redis保存优惠券id,用户id,订单id到阻塞队列,之后我们流程:1 新增秒杀优惠券,将优惠券信息保存到redis中。

2025-10-18 08:50:05 831

原创 Redis实战篇:黑马点评|DAY04(分布式锁)

数据结构:用 Redis Hash 存储锁信息,field标识线程,value记录重入次数。原子性保证:通过 Lua 脚本将 “检查 - 修改 - 存储” 操作封装为原子操作,避免并发问题。可重入逻辑:同一线程再次获取锁时,仅递增重入次数,不重新竞争锁。释放逻辑:递减重入次数,仅当次数为 0 时才真正释放锁。安全机制:Watch Dog 自动续期,防止锁意外过期。这种设计既解决了分布式环境下的锁竞争问题,又支持线程重入,同时通过自动续期保证了锁的安全性,是分布式场景中实现可重入锁的经典方案。

2025-10-16 22:12:56 1022

原创 Redis实战篇:黑马点评|DAY03

全局ID生成器,是一种在分布式系统下用来生成性,高可用,高性能,性性。这里我们使用Redis自增利用redis的String数据结构生成全局I只有在key不存在时设置key的值让一个整型的key自增1为了id的安全性,我们不直接使用redis自增的数值,而是拼接一些其他信息因此 Redis自增ID策略为:每天一个key 方便统计订单量1 自定义一个工具类RedisIdWorker2 测试模拟高并发环境下的ID生成。

2025-10-15 20:41:44 694

原创 Redis实战篇:黑马点评|DAY02

什么是缓存是数据交换的缓冲区(Cache),是存储数据的临时地方,读写性能较高。

2025-10-14 22:50:53 1012

原创 从零开始学习Redis(三):缓存更新策略和缓存穿透,雪崩,击穿

我们把数据同时保存在缓存和数据库中,当数据库中的数据发生改变,缓存不会去更新,这就导致了。就是为了解决该问题主动更新业务场景:● 低一致性需求:使用内存淘汰机制。例如店铺类型的查询缓存● 高一致性需求:主动更新,并以超时剔除作为兜底方案。例如店铺详情查询的缓存。

2025-10-14 22:50:32 1172

原创 Redis实战篇:黑马点评|DAY01

黑马点评包含了多个业务功能板块,实现了redis的多种应用短信登录:Redis的共享Session应用商户查询缓存:企业缓存使用技巧,缓存雪崩,穿透等问题解决方案优惠券秒杀:Redis计数器,Lua脚本Redis,分布式锁,Redis的三种消息队列好友关注:基于Set集合的关注,取关,共同关注,消息推送等功能附近商户:Redis的GeoHash的应用UV统计:Redis的HyperLogLog的统计功能用户签到:Redis的BitMap数据统计功能。

2025-10-13 22:46:30 711

原创 从零开始学习Redis(二):Redis的Java客户端

在 Java 生态中,Redis 客户端有多种选择,不同客户端在性能、功能、易用性上各有侧重。:以Redis命令作为方法名称,简单实用。但Jedis实例是线程不安全的,多线程环境下需要基于连接池来使用,适用于小型单体应用 / 快速验证:Lettuce是基于Netty(一种高性能的网络编程框架) 实现的,支持同步,异步和响应式编程方式,并且线程安全。支持Redis的哨兵模式,集群模式,管道模式。适用于高并发微服务 / 异步场景:Redisson是一个。

2025-10-12 20:54:36 735

原创 从零开始学习Redis(一):初识Redis,Redis常用数据类型,Redis常见命令

Redis 中最基础的数据结构,以键值对(key-value)形式存储,value 可以是字符串、数字(整数 / 浮点数)或二进制数据(如图片的二进制流)。也叫散列,类似编程语言中的 “字典” 或 “对象”,一个 key 对应一个哈希表,哈希表中包含多个field-value键值对(field 和 value 都是字符串)。有序的字符串列表(允许重复元素),类似 “双向链表”,支持从两端插入 / 删除元素,按索引访问。无序的字符串集合(不允许重复元素),查找快,类似数学中的 “集合”,

2025-10-12 16:03:53 609

原创 苍穹外卖|项目总结

消息转换器()是 Spring MVC 体系的核心组件,主要负责HTTP 请求体与 Java 对象Java 对象与 HTTP 响应体之间的格式转换,比如将前端传的 JSON 转成 Java Bean,或把 Java Bean 转成 JSON/XML 返回给前端。

2025-10-11 22:38:55 1063

原创 苍穹外卖DAY09

用户统计的业务逻辑和营业额类似 只不过要注意的是 用户统计有两条线 一条每日用户总数量 一条每日用户新增数量。reduce(Integer::sum):使用Integer::sum方法引用来归约流中的所有元素,即将所有订单数量。由于reduce操作返回的是Optional<Integer>,所以需要调用get()方法获取实际的求和结果。List的stream()方法是Java 8引入的Stream API的一部分,它允许你以。中间操作: filter、map、sorted等,返回新的Stream。

2025-10-10 22:25:17 1102

原创 苍穹外卖DAY08

Spring Task是spring框架提供的任务调度工具 定位为一个定时任务框架作用是应用场景有每月还款提醒 火车售票系统处理未支付订单等 在此处的应用为 处理外卖订单状态只要是需要定时处理的场景都可以使用SpringTask。

2025-10-09 21:49:50 920

原创 苍穹外卖DAY07

今天实现了对地址增删改查的接口 ,用户下单的接口 学习了订单支付的接口订单支付这一块因为没有一些权限 只是浅浅看了一遍大致流程 并没有实现完成了用户端历史订单模块、商家端订单管理模块相关业务新功能开发 借助答案梳理了新功能开发的大致流程学习了优化用户下单功能,加入校验逻辑,如果用户的收货地址距离商家门店超出配送范围,则下单失败。

2025-09-30 09:14:24 797

原创 苍穹外卖DAY06

1 菜品和套餐数据都存放在数据库中 当大量用户来点餐 频繁查询数据库可能导致数据库压力过大 性能下降 用户体验差感觉到卡 所以用2 将商品添加到购物车 购物车有 查看购物车 添加商品 减少商品 清空购物车 的功能。

2025-09-28 21:51:09 356

原创 苍穹外卖DAY05

在这里学习redis可以实现店铺营业状态的接口 店铺状态只需要存储一个简单的状态值(营业中/打烊中),Redis 的 key-value 结构非常适合。是微信用户的唯一标识 拿到openid后我们自定义登录状态 将openid存到数据库 同时为微信用户生成一个token令牌 把令牌返回给。此外,还需要拦截器把未登录状态时候的一切请求进行拦截(查询餐厅状态和登录请求除外)在后续的微信登录中用来请求微信的某个接口 来实现微信登录。· 调用HttpClient的execute方法发送请求。

2025-09-28 09:25:32 378

原创 Redis的一些简单操作

Redis是一个基于的key-value结构数据库~基于内存存储 读写能力高~适合存储热点数据(热点商品 资讯 新闻)~企业应用广泛。

2025-09-27 21:53:34 716

原创 苍穹外卖DAY04

今天一天都在写CRUD 巩固之前学的知识点 思路不完整 业务逻辑总是漏了特殊情况。

2025-09-26 22:19:56 455

原创 苍穹外卖DAY03

今天课有点多 学的十分仓促 打算明天重新整理一下。

2025-09-25 22:32:19 1076

原创 苍穹外卖DAY02

在进行增删改查时 并不是所有操作都需要改createTime /updateTime /createUser/ updateUser 而在需要insert和update时 对以上四个字段的操作是相同的 因此为避免代码冗余 多了一些重复繁琐的操作 我们打算将这些公共字段优化 利用。1 @Retention 注解用于指定自定义注解的保留策略,即注解在什么级别可用。@Target 这是Java注解中的元注解,用于指定自定义注解的使用目标位置。这是Java注解中的另一个重要元注解,用于指定注解的保留策略。

2025-09-24 22:20:01 996

原创 苍穹外卖DAY01

{idNumber}等要驼峰命名 不然会报500的错误。

2025-09-23 21:50:38 532

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除