自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 学习Java第六十二天——Hot 100-09-438. 找到字符串中所有字母异位词

本文讨论了LeetCode 438题"找到字符串中所有字母异位词"的解题思路。首先介绍了两种基础方法:排序法(比较排序后的子串)和哈希表法(统计字母频率)。重点分析了滑动窗口优化技巧,指出其优势在于只需调整窗口两端元素而非重新遍历整个子串。文中引用了灵神的代码示例,展示了如何通过维护字母频率数组来高效比较异位词。最后分享了评论区的优化思路,包括剪枝策略和动态维护目标串特征的方法,将时间复杂度优化至O(n)。

2025-12-31 14:06:02 374

原创 学习Java第六十一天——Hot 100-08-3. 无重复字符的最长子串

本文探讨了LeetCode上寻找无重复字符最长子串问题的多种解法。作者首先尝试了双指针法和Set集合去重法,发现双指针法存在缺陷,而Set法虽然能AC但效率较低(O(n^2))。随后参考题解提出了更优的滑动窗口方案:1)使用字符数组作为桶,动态调整窗口边界;2)利用哈希表记录字符位置,快速定位重复字符。这两种优化方法都能实现O(n)时间复杂度,显著提升效率。文章通过代码示例展示了不同解法的实现细节,重点分析了滑动窗口的核心思想——动态维护无重复字符的窗口范围。

2025-12-29 14:14:48 418

原创 学习Java第六十天——Redis篇(待完善)

Redis支持多种数据类型,包括五种基础类型(String、Hash、List、Set、Zset)和四种扩展类型(BitMap、HyperLogLog、GEO、Stream),各有特定应用场景。String适用于缓存和计数,Hash适合对象存储,List可用于消息队列,Set支持聚合计算,Zset适用于排序场景。扩展类型如BitMap用于二值统计,HyperLogLog适合基数统计,GEO处理地理位置,Stream改进消息队列功能。此外,文章还探讨了缓存穿透和缓存击穿问题,提出了布隆过滤器和互斥锁/逻辑过期

2025-12-29 14:07:30 347

原创 学习Java第五十九天——MySQL篇

本文系统讲解了MySQL性能优化的关键知识点,包括慢查询定位、索引原理、SQL优化和事务机制。主要内容有:1) 通过日志和监控工具定位慢SQL;2) B+树索引结构优势及聚集/二级索引区别;3) 索引创建原则和失效场景;4) SQL优化方法如覆盖索引解决分页问题;5) 事务隔离级别和MVCC实现原理;6) 主从同步的binlog复制机制。文章结合图解和实例,全面剖析了MySQL性能调优的核心技术要点。

2025-11-04 15:41:36 1389

原创 学习Java第五十七天——Java基础-集合篇

本文摘要:文章系统讲解了Java中常见数据结构原理与应用。数组(Array)使用连续内存空间实现O(1)查询,但插入删除效率低;ArrayList基于数组实现动态扩容(初始10,1.5倍增长);LinkedList采用双向链表结构实现高效增删。对比分析了ArrayList(查询快)与LinkedList(增删快)的特性差异,并指出线程安全问题解决方案。重点剖析HashMap底层实现,综合运用哈希表(O(1)查询)、链表(解决哈希冲突)和红黑树(防退化至O(n))三种数据结构,详细阐述了其时间复杂度变化规律和

2025-11-02 15:44:21 863

原创 学习Java第四十九天——黑马商城MQ高级101~113完结撒花

本文介绍了RabbitMQ的高级可靠性保障方案,主要包括发送者可靠性、MQ可靠性和消费者可靠性三个层面。 发送者可靠性方面: 通过配置重连机制确保网络异常时的连接恢复 采用确认机制(ConfirmCallback和ReturnCallback)保证消息成功投递 需要权衡确认机制带来的性能开销 MQ可靠性方面: 介绍了数据持久化机制,包括交换器、队列和消息的持久化 详细讲解了LazyQueue惰性队列的优势,它能直接写入磁盘避免内存溢出,同时提高写入效率 消费者可靠性方面: 采用确认机制确保消息正确处理后才返

2025-10-25 21:35:01 1234

原创 学习Java第四十六天——黑马商城MQ入门85~100

本文介绍了MQ(消息队列)的基础知识与应用场景,重点讲解了RabbitMQ的安装部署、数据隔离、同步与异步调用的优缺点,以及Spring AMQP的快速入门。 核心内容包括: MQ技术选型:对比Kafka、ActiveMQ、RabbitMQ等,分析RabbitMQ的优势(轻量级、高并发、易用性)。 同步与异步调用:同步适用于需即时结果的场景(如支付),异步适用于非核心业务(如日志记录),支持流量削峰填谷。 RabbitMQ部署:通过Docker快速安装,管理控制台访问,并说明消息收发流程(生产者→交换机→队

2025-10-22 16:52:53 1002

原创 学习Java第四十二天——黑马点评75~95-实战篇完结撒花

本文摘要:主要介绍了Redis消息队列Stream的单消费和消费者组模式的应用,分析了其优缺点;同时探讨了基于Stream实现异步秒杀的业务流程。此外,还涉及达人探店功能(发布笔记、查看、点赞、排行榜)和好友关注功能(关注取关、共同关注、Feed流推送、滚动分页查询)的实现细节。文章指出Redis Stream适合轻量级消息队列场景,但在持久化、消息确认机制等方面存在不足,高要求业务建议使用专业消息队列如RabbitMQ。(149字)

2025-10-16 18:48:40 958

原创 学习Java第三十八天——黑马点评69~74

本文介绍了秒杀系统的优化策略,重点讲解了基于Redis的异步秒杀方案。主要内容包括:1)将同步下单改为异步下单,通过Redis判断人行资格后快速返回结果,耗时较久的库存扣减和订单创建采用异步处理;2)使用阻塞队列实现异步下单,但存在内存限制和数据安全问题;3)引入Redis消息队列(List、PubSub、Stream)作为更优解决方案,具有独立服务、持久化和消息确认机制,能有效解决内存溢出和数据丢失问题。文章详细比较了各种消息队列实现流血,最终推荐使用Stream模式实现异步秒杀,既提高并发性能又保证数据

2025-10-12 23:07:12 637

原创 学习Java第三十七天——黑马点评61~68

本文主要探讨分布式锁的实现原理及解决方案。文章首先指出分布式锁的原子性问题源于锁标识判断和释放两个动作间的阻塞,提出必须保证这两个操作的原子性。随后介绍了Lua脚本解决多条命令原子性问题的方法,并展示了Java调用Lua脚本改造分布式锁的实践。此外,文章详细解析了Redisson框架的功能特性,包括可重入锁实现原理、锁重试机制、WatchDog机制和multiLock主从一致性解决方案。最后强调Redisson通过哈希结构记录线程和重入次数,配合Lua脚本确保原子性操作,是推荐的分布式锁实现方案。全文从问题

2025-10-11 22:52:20 1039

原创 学习Java第三十四天——黑马点评48~60

本文包含两部分内容:LeetCode算法题解和Redis优惠券秒杀实战。第一部分探讨三数之和问题的解法优化,从O(n³)暴力法改进为O(n²)双指针法。第二部分详细讲解使用Redis实现优惠券秒杀的完整方案,包括全局唯一ID生成、库存超卖问题分析及解决方案(乐观锁和悲观锁)、一人一单功能实现,以及集群环境下的并发安全问题。重点介绍了Redis在秒杀场景中的关键技术应用,如分布式ID生成、并发控制等,并分析了事务处理和锁机制的实现细节及潜在问题。

2025-10-08 23:30:02 1654

原创 学习Java第三十二天——黑马点评43~47

本文总结了Redis缓存的核心知识点与应用场景。主要内容包括:1)缓存基础概念,强调其高效读写能力和减轻后端负载的作用,同时指出开发成本、运维成本和一致性问题等挑战;2)缓存更新策略,分析内存淘汰、过期淘汰和主动更新三种方案,推荐主动更新为主、过期淘汰兜底的组合方案;3)缓存穿透、击穿等热点问题解决方案,重点介绍互斥锁和逻辑过期两种应对高并发场景的技术;4)实践指导,包括Redis工具类封装和测试方法(如JMeter压测),最终形成包含查询优先、修改后删缓存等最佳实践方案。

2025-10-06 20:57:09 1093

原创 学习Java第三十天——黑马点评37~42

本文主要包含两部分内容:LeetCode算法题解和Redis缓存实战。算法部分介绍了移动零问题的两种解法(收集非零数后补零/快慢指针交换)。实战篇详细讲解了商户查询缓存方案,包括缓存更新策略选择(推荐先更新数据库再删除缓存)、线程安全处理、缓存穿透解决方案(缓存空对象或布隆过滤器)以及缓存雪崩预防措施(随机TTL、集群部署等)。此外还涉及商铺缓存与数据库的双写一致性实现方法和编码实践。

2025-10-04 23:08:04 694

原创 学习Java第二十九天——黑马点评33~36

本文摘要: 算法题解:Leetcode 128题最长连续序列的两种解法——暴力排序(O(NlogN))和哈希优化(O(N))。 实战开发: 基于Redis实现短信登录,涉及请求头token验证与刷新机制优化,解决用户无操作时token失效问题。 商户查询缓存技术介绍,包括缓存优势(提速、减轻DB压力)与成本(代码复杂度、集群维护开销),并演示缓存添加流程。 (摘要共135字)

2025-10-03 23:20:14 737

原创 学习Java第二十八天——黑马点评26~32

本文包含两部分内容:1. LeetCode字母异位词分组题目解析,从最初使用Set的错误思路到改用Map统计字符频率,最终优化为字符串排序作为哈希key的高效解法;2. 短信登录系统实现方案,详细介绍了基于session的登录流程、验证码发送、拦截器校验、敏感信息隐藏等核心功能,并分析了session共享问题及Redis替代方案的技术选型优势。两部分内容均配有流程图和关键代码示例,展示了从问题分析到优化实现的全过程。

2025-10-02 23:38:31 973

原创 学习Java第二十七天——黑马点评24~25

本文主要包含两部分内容:1)LeetCode两数之和问题的哈希表优化解法,通过空间换时间将复杂度从O(n²)降至O(n);2)Redis企业级实战课程介绍,包括短信登录项目导入和前后端分离架构说明。文章详细讲解了哈希表在查找元素时的优势,并演示了如何部署黑马点评项目的前后端环境,同时补充henyl提到使用Git进行版本控制的内容。课程学习笔记中还包含相关SQL数据库导入和Nginx部署的实践操作。

2025-10-01 23:06:14 653

原创 苍穹外卖项目面试总结话术

摘要 "美食速递"是一款校园外卖配送系统,包含管理系统后台和小程序端。项目采用前后端分离架构,后端使用Spring Boot开发并打包为JAR运行,前端部署于Nginx。系统包含11张核心数据表,涵盖员工、菜品、订单等功能模块。技术亮点包括:1) 使用Nginx实现前后端分离部署;2) 通过Nginx反向代理简化访问路径;3) 支持负载均衡提升系统扩展性。作者主要负责后端开发,实现了用户登录、员工管理、菜品管理和订单管理等核心功能模块。

2025-09-30 15:43:10 397

原创 学习Java第二十四天——苍穹外卖Day12-all-完结撒花

这篇文章主要记录了软件开发过程中的工作内容和技术实现。在Day11阶段完成了销量排名统计的需求分析、设计和代码开发,并进行了功能测试。Day12课程介绍了工作台功能、Apache POI技术,以及导出Excel报表的实现。文章详细讲解了工作台的设计思路,强调数据接口拆分的重要性。通过Apache POI技术实现了Excel文件的读写操作,并展示了导出运营数据Excel报表的完整流程,包括需求分析、代码开发和模板设计的实现方法。文档配有大量截图和代码示例,直观展示开发过程和实现效果。

2025-09-28 21:43:12 446

原创 学习Java第二十三天——苍穹外卖Day11-01~18

本文介绍了使用Apache ECharts进行数据可视化的开发过程,主要包括四个统计模块的实现:营业额统计、用户统计、订单统计和销量排名统计。每个模块都按照需求分析、设计、代码开发和功能测试的完整流程展开,通过ECharts图表直观展示数据趋势和排名情况。其中营业额统计模块特别说明了后端数据格式由前端决定的开发原则。文章配有多个开发截图,展示了各统计功能的实现效果和关键代码片段。

2025-09-27 23:03:06 605

原创 学习Java第二十二天——苍穹外卖Day10-all

本文介绍了Spring Task定时任务和WebSocket的相关内容。Spring Task主要用于定时自动处理任务,如订单状态定时处理,通过cron表达式设置执行时间。WebSocket则是一种实现浏览器与服务器全双工通信的网络协议,支持双向数据传输,适用于实时消息推送场景,如订单提醒和客户催单。与HTTP协议的请求响应模式不同,WebSocket建立持久连接后,服务器可主动向浏览器推送消息,适用于需要实时交互的应用场景。

2025-09-25 23:07:22 664

原创 学习Java第二十一天——苍穹外卖Day09-all

本文摘要:文章详细介绍了用户端历史订单模块的开发实现,主要包括查询历史订单和查询订单详情两大功能。在查询历史订单部分,实现了分页查询、按状态筛选、展示订单基础信息和明细的功能,涉及控制器、服务层、数据访问层的完整代码实现。查询订单详情部分则提供了查看单个订单详情的功能设计。整体采用Spring Boot框架,通过MyBatis进行数据库操作,并使用Swagger进行接口测试。文章还包含商家端订单管理模块的功能需求清单(如订单搜索、状态统计、订单处理等)和优化用户下单功能的要求(增加配送范围校验)。

2025-09-24 22:42:34 1402

原创 学习Java第二十天——苍穹外卖Day08-12~16+Day09-02/13

本文介绍了微信支付在订单系统中的应用实现。主要内容包括:微信支付产品介绍、接入流程和支付时序图说明(Day08-12~13);详细解析了微信支付相关接口功能和准备工作,如证书加密、内网穿透技术(Day08-14~15);提供了功能代码导入和解读指南(Day08-16~18);最后展示了用户端历史订单查询功能的实现,包括订单列表和详情查询接口(Day09-01~02)。整个流程覆盖了从支付接入到订单管理的完整业务场景。

2025-09-23 22:39:44 424

原创 学习Java第十九天——苍穹外卖Day07-14~Day08-11

本文摘要记录了外卖系统开发过程中的购物车和订单功能实现。主要内容包括:购物车功能开发(添加套餐/菜品、查看、清空、删除商品);用户下单功能设计(接口参数分析、数据库表结构);地址簿模块导入(6个业务功能对应7个接口)。开发过程中强调前后端数据交互逻辑,如通过Token获取用户ID、按产品原型设计接口返回数据等。订单功能部分展示了完整的开发流程,从需求分析、接口设计到数据库设计,为后续支付功能开发奠定基础。所有功能均配有操作界面截图和关键代码片段。

2025-09-22 22:36:41 537

原创 学习Java第十七天——苍穹外卖Day07-01~13

本文摘要Day07课程内容,主要涵盖缓存菜品/套餐功能和购物车开发。在缓存实现方面,讲解了Spring Cache如何自动选择Redis作为缓存存储(通过引入spring-data-redis依赖),并演示了相关注解的使用方法。购物车功能开发包括添加套餐和菜品(支持口味选择)的操作实现。课程还涉及缓存数据一致性处理、代码提交等细节,通过图文结合的方式展示了功能实现的关键步骤和界面效果。全文以实际项目开发为导向,突出Spring Cache与Redis的集成应用。

2025-09-10 22:42:52 176 1

原创 学习Java第十六天——苍穹外卖Day06_all

本文主要介绍了微信小程序登录功能的实现流程及代码开发。首先通过官方提供的微信登录流程,利用code2Session接口将临时登录凭证js_code换取用户唯一标识openid。接着分析了无需注册、直接获取openid的需求设计,并详细展示了配置文件、控制器和服务层的代码实现。最后简要提及了商品浏览功能的代码导入。整个流程包括:小程序提交授权码→调用微信接口→获取openid→返回JWT令牌,实现了微信用户的快速识别和登录功能。

2025-09-09 21:34:41 361 1

原创 学习Java第十五天——苍穹外卖Day05-12~17和Day06-01~12

本文介绍了Redis的配置与基本数据类型操作。主要内容包括: 配置Redis连接参数,包括主机、端口、密码和数据库选择 创建RedisTemplate配置类,设置连接工厂和key序列化器 通过测试类演示了五种数据类型的操作: 字符串类型:set/get/setex/setnx等操作 哈希类型:hset/hget/hdel等操作 列表类型:lpush/lrange/lpop等操作 集合类型:sadd/smembers/sinter等操作 有序集合类型:zadd/zrange/zincrby等操作 测试代码展示

2025-09-08 22:59:46 1799

原创 学习Java第十四天——苍穹外卖Day04另一半和Day05-1~11

本文摘要:文章首先介绍了Day04完成的套餐管理功能接口开发,包括根据ID查询套餐、修改套餐以及起售停售功能。随后转向Day05的Redis学习内容,包括Redis简介(内存存储、key-value结构)、常用数据类型(string、hash、list等)及基础命令操作。最后讲解了在Java中通过Spring Data Redis操作Redis的方法。整体内容涵盖后端接口开发和Redis缓存技术应用两部分技术要点。(149字)

2025-09-07 22:59:56 902

原创 学习Java第十三天——苍穹外卖Day04一半

本文介绍了Day04关于套餐管理的三个功能模块:新增套餐、套餐分页查询和删除套餐。每个功能模块均配有相关图片说明,展示了操作界面和功能实现效果。整体内容围绕套餐管理系统的核心操作展开,提供直观的视觉参考,便于理解各功能的具体应用场景和实现方式。

2025-09-06 22:11:42 533

原创 学习Java第十二天——苍穹外卖Day03全部

本文档记录了菜品管理功能的开发过程,包括修改菜品、起售停售状态切换等功能的实现。重点内容包括:1)修改菜品功能分查询和更新两步实现,涉及菜品数据和口味数据的关联操作;2)菜品起售/停售状态切换功能,支持联动更新相关套餐状态;3)新增根据分类ID查询菜品接口,用于套餐管理中的菜品选择。开发过程中采用了动态SQL更新、批量操作等技术,并通过接口文档和截图详细说明了各功能的设计和实现方式。

2025-09-05 20:49:01 725

原创 学习Java第十一天——苍穹外卖Day03_10~14

本文介绍了菜品管理系统的分页查询和删除功能实现。在分页查询部分,设计了每页10条记录的查询功能,支持按菜品名称、分类和状态筛选。删除功能支持单条和批量删除,但限制启售中和被套餐关联的菜品不可删除。通过中间关系表处理菜品与套餐的多对多关联,并优化了删除时的性能问题,确保同时删除关联的口味数据。文章包含需求分析、设计思路和代码实现截图,展示了完整的开发流程和测试结果。

2025-09-04 21:59:55 710 2

原创 学习Java第十天——苍穹外卖Day03_07~09

本文记录了开发过程中三个关键节点的进展:Day03_07实现了CommonController.java的文件上传功能;Day03_08完成了新增菜品功能的开发;Day03_09通过前后端联调测试,相关功能运行正常。每个阶段均配有对应的界面截图作为开发完成的证明。该摘要简要概括了项目在文件上传、菜品管理功能开发及系统联调方面的阶段性成果。

2025-09-03 22:09:31 514

原创 学习Java第八天——苍穹外卖Day03_05~06

本文档主要包含两个部分内容:Day03_05和Day03_06的接口设计与实现。Day03_05已完成分类查询功能,需继续开发文件上传和新增菜品功能。Day03_06重点介绍了阿里云OSS文件上传的实现方法,并附有相关功能示意图。文档通过截图直观展示了阿里云OSS的使用方式和本视频教学内容的关键要点。

2025-08-28 19:20:46 776 2

原创 学习Java第七天——苍穹外卖Day03_01~04

本文记录了数据库优化相关内容:首先针对多个数据库表中存在相同字段的问题,提出了集中管理的解决方案;随后展示了数据表结构优化过程,包括字段调整和表关系重构。通过示意图直观呈现了优化前后的对比效果,重点解决了数据冗余问题。这些改进有助于提升数据库查询效率并降低维护成本。

2025-08-27 01:11:53 393

原创 学习Java第四天——苍穹外卖Day02_12~15

本文记录了员工管理功能的开发过程。Day02_12~14主要完成员工编辑功能的需求分析和设计,包含两个核心接口:通过ID查询员工信息和编辑员工信息。Day02_15直接导入了现成的实现代码。此外,作者还自行实现了修改密码功能并成功通过测试。全文配有接口设计截图和测试结果图示,展示了完整的开发流程。

2025-08-22 12:24:12 499 1

原创 学习Java第三天——苍穹外卖Day02_04~11

本文主要介绍了员工管理系统的几个功能开发过程。针对新增员工功能,解决了用户名重复异常处理和创建人ID设置问题,通过ThreadLocal实现用户ID传递。在员工分页查询功能中,完成了Controller到Mapper的代码开发,并优化了日期格式显示问题。最后实现了启用/禁用员工账号功能,包括动态SQL更新操作。这些功能开发涉及异常处理、线程变量、分页查询、日期格式转换等技术要点,完善了系统的基础员工管理能力。

2025-08-21 01:05:25 723 2

原创 学习Java第二天——苍穹外卖Day02_01~03

本文记录了新增员工功能从需求分析到测试的全过程。Day02-01阶段完成产品原型设计、接口定义和数据库表结构设计。Day02-02阶段进行代码开发,采用DTO模式优化数据传输,实现从Controller到Mapper的完整调用逻辑。Day02-03阶段通过接口文档和前后端联调进行功能测试,其中前端对手机号格式做了特殊限制(必须13开头)。整个开发过程体现了规范化的设计思路和完整的测试流程。

2025-08-20 01:40:06 583 1

原创 学习Java第一天——苍穹外卖Day01_01~14

《苍穹外卖项目开发日志》记录了博主从零开始学习Java企业级开发的过程。文章首先介绍了项目背景(管理端Web+用户端小程序)和技术栈,随后详细记录了开发环境搭建过程,包括Nginx配置、前后端联调、三层架构调试等关键环节。特别强调了安全注意事项,如数据库密码保护和MD5加密登录验证。技术实现方面涉及了反向代理、负载均衡配置,以及使用Knife4j和Swagger进行API文档管理。文章以实操截图配合代码片段,展现了完整的企业级项目开发流程,适合Java初学者参考学习。

2025-08-18 23:26:10 544 1

Redis实战篇-hmdp

Redis实战篇-hmdp

2025-10-16

Redis课程大纲-V1.0

Redis课程大纲-V1.0

2025-10-06

空空如也

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

TA关注的人

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