- 博客(21)
- 收藏
- 关注
原创 学习秒杀系统-安全优化(接口限流,图形验证码)
本文介绍了秒杀系统中接口地址隐藏和图形验证码的实现方案。通过动态生成随机秒杀地址防止用户直接刷接口,同时使用图形验证码+限流机制防止机器人请求。具体实现包括:1) 前端获取验证码图片并计算结果;2) 服务端生成验证码图片并将正确结果存入Redis;3) 用户提交验证码后验证正确性;4) 验证通过后生成随机秒杀路径。该方案有效防止了脚本刷单、库存抢占等作弊行为,同时削弱了系统并发压力,保障秒杀活动的公平性。
2025-07-24 09:29:04
1310
原创 学习秒杀系统-异步下单(包含RabbitMQ基础知识)
文章摘要 本文介绍了基于RabbitMQ的接口优化方案,核心思路是通过异步处理减少数据库访问。主要步骤包括:1)初始化时将商品库存加载到Redis;2)请求时预减库存,不足则直接返回;3)有效请求入队后立即返回"排队中"状态;4)由消费者异步完成下单和减库存;5)客户端轮询结果。相比传统同步方式,这种异步处理能显著提升系统吞吐量。 文章还详细讲解了RabbitMQ的基础概念、常用组件(生产者、消费者、交换机、队列等)和四种工作模式(简单模式、工作队列模式、发布/订阅模式、路由模式),并提
2025-07-21 20:37:40
1407
原创 学习秒杀系统-页面优化技术
本文介绍了优化Web应用性能的缓存技术,重点讲解了页面缓存、URL缓存和对象缓存的实现。页面缓存通过直接从Redis获取已渲染页面,避免了重复查询数据库和渲染过程;URL缓存是带参数的页面缓存;对象缓存则针对特定数据(如用户信息)进行缓存。文章还介绍了前后端分离方案,将页面静态化后缓存在客户端,动态数据通过AJAX请求获取。这些技术通过减少数据库访问和服务端渲染压力,显著提升了系统性能和用户体验。
2025-07-18 15:22:37
1321
原创 学习秒杀系统-登录功能(明文密码两次MD5,JSR303参数校验,分布式session)
本文主要介绍了密码加密和参数校验的实现方法。在密码加密方面,采用两次MD5处理:第一次在客户端用固定Salt加密防止明文传输风险,第二次在服务端用随机Salt加密防止彩虹表攻击。通过工具类MD5Util实现了加密功能。参数校验使用JSR303标准,通过注解方式校验字段,并自定义了手机号校验注解@IsMobile及其实现类IsMobileValidator。前端提交数据时需要对密码进行第一次MD5加密,后端通过校验后再进行第二次加密比对。该方案有效提升了系统安全性,同时通过注解简化了参数校验代码。
2025-07-12 13:02:25
1267
原创 秒杀系统学习-环境配置-集成redis
本文介绍了在秒杀系统中集成Redis的配置过程。首先创建RedisConfig类来读取配置文件中的Redis连接参数,通过@ConfigurationProperties注解绑定配置项。然后通过RedisPoolFactory类建立Jedis连接池,将配置参数应用到连接池中。在RedisService层实现基本的get和set方法,处理Redis数据存取操作。文章重点说明了为什么要使用配置类而非硬编码,以及如何解决不同用户操作Redis时的key前缀问题。最后通过DemoController展示了Redis
2025-07-08 14:49:19
1170
原创 学习基于springboot秒杀系统-环境配置(接口封装,mybatis,mysql,redis(Linux))
本文记录了SpringBoot秒杀系统的学习过程,主要包含以下内容: 项目创建与目录结构说明 使用IDEA专业版创建SpringBoot项目 强调包路径需在启动程序同级或下级目录 Controller层封装 分为返回JSON和返回页面两种类型 创建Result类统一JSON输出格式(code/msg/data) 使用CodeMsg类集中管理错误信息 通过私有构造方法和静态方法优化调用方式 页面返回配置 配置Thymeleaf模板引擎 演示Thymeleaf的基本使用和数据绑定 区分@Controller和@
2025-07-07 16:10:07
1362
1
原创 通俗理解JVM细节-面试篇
JVM学习摘要(150字) Java虚拟机(JVM)是运行Java字节码的虚拟计算机,通过"编译-加载-执行-回收"四阶段实现跨平台运行。其核心内存结构分为程序计数器、栈(局部变量)、堆(对象实例)和方法区(类信息)。类加载采用双亲委派机制,包含加载-验证-准备-解析-初始化五个阶段,确保类安全加载。相比C++直接编译为机器码,JVM的自动内存管理和跨平台特性以性能为代价换取了开发便利性。理解JVM机制对掌握Spring框架和应对技术面试都具有重要意义。
2025-07-02 20:09:24
1204
原创 RabbitMQ安装过程(windows这一篇就够啦)
本文提供了RabbitMQ 3.7.17及其依赖环境Erlang 21.3的详细安装教程。首先需要安装对应版本的Erlang并将其bin目录添加到系统环境变量。然后下载RabbitMQ安装包,在安装完成后通过命令行启用管理插件并启动服务。最后可通过浏览器访问localhost:15672使用默认账号(guest/guest)登录管理界面。文章包含完整的软件下载链接和安装路径配置说明,适用于Windows系统环境部署。
2025-06-30 22:02:42
721
原创 深入理解redis-缓存一致性&高可用&-面试篇
缓存一致性解决方案与Redis高可用机制总结 一、缓存一致性 Cache Aside Pattern:读时优先查缓存,无则读库并回填;写时先更新数据库再删缓存 数据一致解决方案: 简单场景:延时双删策略(更新DB→删缓存→延迟再删) 高并发场景:通过JVM内存队列串行化读写操作 二、Redis高可用架构 主从模式:单向数据复制,读写分离,需人工故障转移 哨兵模式:自动监控、故障检测和主从切换,客户端通过哨兵获取主节点信息 分片集群:数据分片存储(16384个槽位),支持水平扩展,具备自动故障转移能力 三、核
2025-06-26 17:18:55
955
原创 深入理解Redis-数据清除策略&数据持久化策略&缓存策略-面试篇
Redis数据管理与持久化机制解析 Redis提供了两种数据删除机制:过期删除和内存淘汰。过期删除包含定时、惰性和定期三种策略,分别对应不同的资源消耗和实时性需求;内存淘汰则根据内存压力触发,包含不淘汰和7种淘汰策略(LRU/LFU等)。持久化方面,Redis支持AOF日志(记录命令)、RDB快照(保存数据)以及混合模式,各有优缺点:AOF安全性高但恢复慢,RDB恢复快但可能丢失数据,混合模式折中但可读性差。大key操作可能影响持久化性能,导致主线程阻塞。这些机制共同保障了Redis的高效性和数据可靠性。
2025-06-25 23:03:08
1153
原创 深入理解数据库的索引(灰常详细!零基础->面试通关)
数据库索引核心解析 数据库索引是为加速查询而创建的特殊数据结构,主要目的是减少磁盘I/O次数。B+树是最常用的索引底层结构,相比B树具有三大优势:叶子节点存储所有数据并形成链表支持高效范围查询;内节点仅存索引可减少树高;更适合磁盘预读机制。 索引分为三类:主键索引(聚簇索引)直接存储整行数据;辅助索引需通过主键回表查询;联合索引遵循最左前缀匹配原则。MySQL创建索引语法包括主键自动索引、单列普通索引和唯一索引等。理解索引原理对SQL优化至关重要,例如避免SELECT*可减少回表操作。
2025-06-22 20:16:30
966
原创 从0到1深入理解JAVA常用的设计模式(理解后面试设计模式速通)
设计模式是一套经过验证的编程最佳实践。单例模式保证类只有一个实例,适用于全局配置等场景;工厂模式封装对象创建过程,分为简单工厂、工厂方法和抽象工厂三种形式;代理模式通过代理对象控制对原对象的访问,分为静态代理和动态代理两种实现方式。这些模式在Java开发中广泛应用,如Spring框架中的BeanFactory采用了抽象工厂模式,FactoryBean则使用了工厂方法模式。
2025-06-18 17:54:14
1020
原创 反射、泛型基础
本文介绍了Java反射和泛型的概念及应用。反射允许在运行时动态获取类信息并创建对象(通过Class.forName()和Constructor.newInstance()),还能访问类的字段(getDeclaredFields)和方法(getDeclaredMethods)。泛型则提供了类型参数化能力(如Box<T>),通过类型擦除实现兼容性。文章还展示了结合反射和泛型的应用示例:使用泛型方法获取类的字段名和方法名列表。代码演示了从类加载、对象创建到成员访问的全过程,并处理了内部类(使用$符号)和私有成员访
2025-06-17 18:27:28
146
原创 理解JUC的面试知识点
文章摘要:锁机制主要分为12类,包括可重入锁、读写锁、公平/非公平锁等,各自适用于不同并发场景。volatile关键字保证变量可见性但不保证原子性,通过内存屏障实现。线程池通过复用线程降低开销,采用"核心线程+非核心线程"的弹性设计。另外介绍了线程join方法、CAS原理和阻塞队列特性:CAS通过V/A/B三变量保证线程安全,阻塞队列自动处理满/空时的线程等待。这些机制共同构成了Java并发编程的核心技术栈。
2025-06-16 20:20:10
1178
原创 windows 设置不更新系统方法
【摘要】通过修改Windows注册表可延长系统更新暂停期限。操作方法:1)Win+R输入regedit打开注册表编辑器;2)定位到\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings路径;3)新建名为FlightSettingsMaxPauseDays的32位DWORD值;4)设置十进制数值(如4000天);5)返回系统设置即可获得更长的暂停更新选项。该方法突破系统默认仅能暂停1周的限制,实现长期暂停系统更新。(99字)
2025-06-16 16:35:02
225
原创 JUC中的LOCK锁机制
本文对比了synchronized同步锁与JUC中Lock机制的差异,重点介绍了Lock的灵活特性:支持中断响应、尝试获取锁、公平锁选择等。通过生产者-消费者模型示例,演示了Lock和Condition的使用方法,解释了while循环防止虚假唤醒的必要性。相比synchronized的自动释放,Lock需要手动unlock(),但提供了更精细的线程控制,适合复杂并发场景。
2025-06-15 21:15:55
1276
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅