- 博客(144)
- 资源 (2)
- 收藏
- 关注
原创 Redis实战:如何用ZSet打造高性能排行榜?连“同分按时间排序”都给你解决了!
《Redis ZSet实现高性能排行榜:支持同分排序的终极方案》摘要 本文详细介绍了如何使用Redis有序集合(ZSet)实现高性能排行榜,重点解决同分情况下的排序问题。通过巧妙构造复合分数公式(score=积分+(1-时间戳/10^13)),实现了同分时按时间先后排序的功能。文章包含SpringBoot完整实现代码,实测百万级数据查询仅需3.8ms,并提供了生产环境优化建议。方案适用于游戏积分、电商热销等多种排行榜场景,在保证高性能的同时完美解决同分排序难题。
2026-01-30 11:10:32
605
原创 1亿用户收益发放,如何在3小时内搞定?揭秘高并发批量任务处理方案
《亿级用户收益发放系统设计》摘要:面对1亿用户每日收益发放需求,本文提出两种解决方案:1)百万级用户的单机多线程批处理方案,通过线程池和分批处理优化性能;2)亿级用户的MQ+分布式集群方案,采用任务分片、并行消费架构,包含任务分发、收益记录表、消费者集群三层设计,确保幂等性和可追溯性。重点分析了分布式方案的关键技术:消息队列任务分发、数据库分表策略、消费者集群负载均衡,以及容灾监控机制。性能测算表明该方案可在3小时内完成处理,同时提供了不同规模下的选型建议,强调根据业务量级选择合适架构的重要性。
2026-01-30 10:26:18
640
原创 超卖问题太头疼?4种实战方案,彻底解决高并发库存扣减难题!
摘要:本文深入剖析电商秒杀系统中的超卖问题,提出4种生产验证的解决方案。核心在于解决并发修改的"时间差陷阱",通过加锁排队确保库存扣减的原子性。方案1(Update条件判断)最为推荐,利用单条SQL实现"判断+更新";方案2(乐观锁)适合已有版本号字段的系统;方案3(前后对比)适用于批量操作验证;方案4(辅助表锁)是老系统改造的救星。文章对比了各方案的复杂度、性能和适用场景,建议新项目首选简单高效的方案1,老系统改造可采用最小侵入的方案4。
2026-01-29 08:15:00
357
原创 文件上传总失败?一文搞懂分片上传,大文件秒传不是梦!
分片上传技术通过将大文件切分为多个小分片并行传输,解决了传统上传方式的痛点。该技术具有三大优势:极速上传(多线程提升速度3-5倍)、断点续传(仅需重传缺失分片)和服务端友好(降低内存压力)。实现过程包括初始化任务、并行上传分片、合并分片和断点续传四个步骤,配合两张数据库表记录任务状态和分片进度。相比普通上传,分片上传使5GB文件传输时间从30分钟缩短至8分钟,网络中断恢复成本降低90%。高阶优化包括动态分片大小、MD5预校验秒传和分片压缩等,显著提升用户体验和系统性能。
2026-01-29 07:00:00
470
原创 如何保证 MQ 消息的可靠性?这 4 种方案,面试官听了都点头!
本文系统分析了高并发系统中消息队列的可靠性问题,提出了从生产者到消费者的全链路解决方案。首先指出消息丢失可能发生在生产、MQ服务端和消费三个环节,然后针对电商场景详细对比了四种方案:事务内/后发消息(存在缺陷)、本地消息表+补偿Job(推荐)、独立消息服务(金融级方案)。文章还强调了MQ服务端的持久化和高可用配置,以及消费者必须实现幂等处理。最后总结指出,消息可靠性需要生产端确保发送、MQ确保存储、消费端确保处理的全链路设计,可根据业务需求选择适合的方案。
2026-01-28 08:30:00
568
原创 解决幂等性问题,这4种方案够用!高并发场景必备
文章摘要:本文针对高并发系统中常见的幂等性问题,提出4种实用解决方案。重点推荐乐观锁方案(方案2),通过版本号控制确保并发更新唯一性,具有代码简洁、性能优异、通用性强等特点。其他方案包括数据库条件更新、唯一约束和分布式锁,分别适用于不同场景。文章强调幂等性是高并发系统的基本要求,建议在项目初期就设计幂等框架,优先采用乐观锁方案,并避免"伪幂等"处理。通过这4种方案,可有效解决重复提交、重复回调等导致的业务数据混乱问题。
2026-01-28 08:00:00
766
原创 线程池这样配,并行查询让接口性能飞跃
摘要:本文介绍了通过并行查询优化接口响应速度的实战方案。针对电商系统中商品详情查询耗时过长的问题,作者提出将原本串行执行的4个独立查询改为并行执行,使用CompletableFuture和优化线程池配置,使响应时间从402ms降至106ms,提升近4倍性能。关键点包括:正确配置线程池参数(核心线程数=CPU核数×4,队列容量为0)、独立线程池隔离核心业务、适用于无依赖关系的I/O密集型查询场景。文章强调性能优化要找到瓶颈点,在合理成本下满足业务需求。
2026-01-27 11:06:27
740
原创 MQ 常见使用场景:从异步解耦到任务分发,看消息队列如何撑起高并发系统
消息队列(MQ)在分布式系统中发挥关键作用,主要解决7大核心场景:1)异步解耦,分离核心业务与辅助功能;2)流量削峰,应对双十一等突发流量;3)延迟消息,精准处理定时任务;4)分布式事务,实现最终一致性;5)日志收集,高效处理海量数据;6)任务分发,并行处理亿级任务;7)高性能Job服务,分离调度与执行。MQ通过"解耦+异步+缓冲"机制,显著提升系统性能、扩展性和可靠性,成为高并发系统的必备基础设施。
2026-01-27 10:48:30
505
原创 最近在用的一个免费去水印小程序,分享给大家。
"全能去水印助手"支持抖音、快手、微博、小红书等主流平台,提供视频/图片去水印、一键下载功能,操作简单即用即走。小程序界面简洁直观,让用户轻松去除水印保存内容。(49字)
2026-01-26 17:51:08
1305
原创 Kafka消息持久化机制全解析:存储原理与实战场景
Kafka的消息持久化机制通过日志分段、索引文件和批量写入技术,实现了高可靠性、高效性和消息可追溯性。默认配置下采用7天保留期和1GB日志段大小,平衡了性能与存储效率。典型应用场景包括电商流量削峰、金融审计追溯和IoT数据分层存储。常见误区包括过度分区和过大日志段设置,正确实践需结合业务需求调整参数。掌握Kafka存储机制对构建高性能分布式系统至关重要,适用于不同职业阶段的技术人员深入学习和应用。
2025-08-21 12:11:29
856
原创 Kafka如何保证消费确认与顺序消费?
《Kafka核心机制实践:消费确认与顺序消费详解》深入解析了Kafka的两个关键特性:消费确认机制通过自动/手动提交位移确保消息可靠处理,电商订单处理案例展示了手动提交如何避免数据丢失;顺序消费需保证单分区内消息顺序,通过分区策略和消费者设计实现,金融交易系统案例展示了强顺序场景的实现方案。文章还总结了常见误区,如自动提交更安全、增加分区数提高顺序性等错误认知,并给出最佳实践建议,包括手动提交+异常重试、单分区/同Key聚合等。掌握这些技能能有效提升分布式系统开发能力。
2025-08-20 21:54:42
1233
原创 Spring AOP的实现原理
本文深入解析Spring AOP的核心原理与应用场景,通过五大典型案例展示其在日志记录、权限校验、事务管理等企业级开发中的实战价值。文章首先剖析AOP如何解决OOP的代码冗余问题,详解关键概念如Pointcut、Advice等组件,并对比JDK动态代理与CGLIB代理的差异。随后通过完整流程揭秘AOP工作机理,重点给出日志记录、缓存优化等场景的代码实现方案,最后提供生产环境中的表达式规范、性能优化等最佳实践。AOP能显著提升代码复用率、降低耦合度,是Java开发者必备的高级技能。
2025-08-18 13:44:15
1000
原创 深入浅出Seata分布式事务:核心原理与实战场景
《Seata分布式事务核心原理与模式解析》摘要:Seata是解决微服务数据一致性的分布式事务框架,包含TC协调器、TM管理器和RM资源管理器三大角色。提供四种主要模式:1)XA模式强一致但性能差;2)AT模式通过自动生成回滚日志实现无侵入事务;3)TCC模式分Try/Confirm/Cancel三阶段实现精细控制;4)SAGA模式通过补偿机制处理长事务。实际应用需根据场景选择:电商下单适用AT,金融交易推荐XA,长流程业务适合SAGA。关键考点包括事务传播、幂等处理和性能对比等。
2025-07-21 14:41:32
789
原创 单体VS微服务:如何选择最适合的架构?
本文对比分析了Java开发中的单体架构与微服务架构。单体架构将所有功能模块打包成一个应用,部署简单但扩展性差;微服务架构将应用拆分为独立服务,灵活可扩展但复杂度高。单体适合小型项目或快速迭代,微服务适用于大型复杂系统。实际案例显示,早期Uber采用单体,而亚马逊、Netflix则采用微服务。文章建议根据项目规模、团队能力和业务需求选择架构,并指出随着云原生技术发展,微服务渐成主流,但单体仍有其价值。开发者需权衡二者优劣,做出合理的技术选型。
2025-07-21 14:08:56
1134
原创 Java中的值传递 vs 引用传递本质区别
【摘要】Java参数传递机制本质上是值传递,而非引用传递。对于基本类型直接传递值副本,对象类型传递引用副本。关键点:1) 修改对象属性会影响原对象;2) 重新赋值引用副本不会改变原引用;3) 数组/集合元素修改会同步,但重新赋值引用无效。常见误区包括混淆对象属性修改与引用赋值,以及误判String的特殊性。实际开发中90%场景可归为三类:对象属性修改、集合操作和数组处理。Java选择值传递是为了保证安全性和简化内存管理。面试时应明确:Java只有值传递,所谓"引用传递"实为引用副本的值传
2025-07-17 12:13:14
1506
原创 在Java中String类为什么不可以修改?
Java中String类的不可变性是其核心设计,通过final修饰和私有字符数组确保内容不可修改。这种设计支持字符串常量池优化、哈希码缓存和线程安全。虽然可通过反射强制修改,但会破坏设计原则。频繁修改字符串应使用StringBuilder/StringBuffer。不可变性在性能、安全和内存管理方面提供了关键优势,是Java语言的主动选择。
2025-07-17 11:40:28
1522
原创 Spring声明式事务原理?哪些场景事务会失效?
摘要:Spring声明式事务通过AOP动态代理实现,核心包括事务属性配置和代理机制。事务失效的常见原因包括:1)方法未被Spring管理;2)非public方法;3)同类自调用;4)异常被捕获;5)数据库引擎不支持;6)传播行为错误;7)final/static方法;8)多线程隔离。解决方案包括正确配置注解、调整方法权限、避免自调用、重新抛出异常等。确保代理生效和事务属性正确配置是保证事务有效的关键。(150字)
2025-07-14 13:32:19
662
原创 Netty入门:手把手实现Echo Server/Client(附完整代码)
Netty作为Java高性能NIO框架,是实现网络编程的关键技术。本文通过Echo模式案例详细讲解Netty开发流程:从环境搭建(Maven配置)到实现服务器端(EchoServer)和客户端(EchoClient),重点解析了核心组件(EventLoopGroup、ChannelPipeline等)的作用。案例展示了消息收发机制,并提供了常见问题排查方法和扩展思考方向(如改造聊天室、WebSocket实现等)。该教程不仅帮助初学者掌握Netty基础开发,也为后续高并发系统设计打下基础。
2025-07-03 15:39:15
921
原创 接口限流算法解决方案详解:计数器、滑动窗口、令牌桶(Guava RateLimiter)、漏桶
本文介绍了四种主流限流算法及其应用场景。计数器算法(固定窗口)实现简单但存在临界问题;滑动窗口算法统计更精准但内存消耗高;漏桶算法能稳定输出流量但不适合突发场景;令牌桶算法(如Guava RateLimiter)支持突发流量且灵活可控。文章还提供了Java代码示例,并对比了各算法优缺点,建议根据业务需求选择合适方案(如API网关首选令牌桶,后台任务适用漏桶)。最后提出分布式限流的Redis实现方案,强调合理限流是保障系统稳定性的关键。
2025-07-03 07:00:00
1095
原创 Redis缓存穿透、击穿、雪崩解决方案详解
本文系统介绍了Redis缓存使用中的三大典型问题及其解决方案:1. 缓存穿透(查询不存在数据)建议采用布隆过滤器、空值缓存和参数校验;2. 缓存击穿(热点数据过期)推荐使用互斥锁、逻辑过期和缓存预热;3. 缓存雪崩(集体失效)应对方案包括随机过期、熔断限流和高可用集群。文章通过电商库存、热点新闻等实际案例,说明了组合使用多种技术手段(如布隆过滤器+互斥锁+随机过期)的有效性,并强调监控预警、多级缓存和压力测试等综合防范措施的重要性。
2025-07-02 07:51:43
1850
原创 Redis分布式锁实战:从入门到生产级方案
Redis分布式锁实现方案解析 在分布式系统中,Redis分布式锁是解决资源竞争的关键技术。本文介绍了四种主流实现方案:1)基础版SETNX+EXPIRE,简单易用但需处理锁误删问题;2)Redisson框架推荐方案,提供自动续期、可重入等高级特性;3)RedLock算法适用于集群环境,确保强一致性;4)Lua脚本实现原子操作。同时分析了锁误删、主从一致性等常见问题及解决方案,建议生产环境优先采用Redisson,集群场景使用RedLock,并注意锁粒度、超时设置等优化细节。
2025-07-02 07:43:39
1048
原创 Redis 常用数据类型操作详解(Jedis版本)
本文介绍了Redis主要数据类型及其Java操作实践。涵盖String、Hash、List、Set和ZSet五种核心数据类型,详细说明每种类型的使用场景和Jedis客户端操作方法,包括缓存设置、计数器、消息队列等典型应用。文章还提供了环境配置指南、完整代码示例和性能优化建议,强调合理选择数据类型对Redis应用开发的重要性,并对比了Jedis与Lettuce客户端的差异。通过本文,开发者可以快速掌握Redis数据结构的实际应用技巧。
2025-07-01 08:14:41
783
原创 Spring事务传播行为(@Transactional(propagation=...))案例详解
摘要:本文系统解析Spring事务传播行为的7种类型及其应用场景。主要内容包括:1)事务传播行为的概念与核心作用,解决嵌套调用时的事务控制问题;2)7种传播行为的详细对比,从默认的REQUIRED到强制事务的MANDATORY;3)典型应用案例解析,如订单处理(REQUIRED)、独立日志(REQUIRES_NEW)和部分回滚(NESTED);4)常见误区与解决方案,强调同类内调用失效问题和行为选择原则。最佳实践建议优先使用REQUIRED,独立操作用REQUIRES_NEW,查询方法用SUPPORTS。正
2025-07-01 08:03:06
850
原创 Spring AOP 实现日志记录案例详解
摘要:本文介绍了使用Spring AOP实现日志记录的技术方案。首先分析了传统日志代码的三大痛点:冗余、耦合度高、功能单一,提出AOP解决方案。通过核心概念讲解(切面、切入点、通知)和基础案例演示(自定义注解+环绕通知),展示了方法级日志的实现。进阶案例扩展了动态参数和异常处理功能,高级应用则实现数据库持久化。文章总结了AOP日志的优势(解耦、扩展性、统一管理)和使用注意事项(性能影响、代理模式、异常处理),最后提出扩展思考方向。全文通过递进式案例,系统性地展示了Spring AOP在日志记录中的实践应用。
2025-06-30 15:08:25
903
原创 设计模式:代理模式 (静态代理、JDK动态代理、CGLib动态代理) 案例详解
代理模式通过引入"中间人"解决对象直接访问的耦合度高、功能冗余和安全风险问题。核心角色包括抽象主题(Subject)、真实主题(RealSubject)、代理(Proxy)和客户端(Client)。实现方式有三种:静态代理需手动编写代理类,简单直观但代码冗余;JDK动态代理基于接口动态生成代理类,耦合度低但仅支持接口;CGLib动态代理通过生成子类实现,支持普通类但性能稍逊。实际应用广泛,如Spring AOP、MyBatis插件等,选择时需根据场景(有无接口、性能要求等)权衡。建议结合
2025-06-30 07:15:00
943
原创 设计模式:观察者模式 (Observer) 案例详解
《观察者模式解耦实践》摘要(150字) 观察者模式通过解耦主题与观察者,解决对象间一对多依赖问题。核心原理是:主题维护观察者列表,状态变化时自动通知所有订阅者;观察者实现统一更新接口,响应主题变化。典型应用场景包括:GUI事件处理(如按钮点击触发多操作)、数据同步(如股票价格通知投资者)和MVC架构(模型数据变更更新视图)。Java提供了Observable/Observer接口但灵活性不足,建议自定义实现。该模式优势在于动态扩展性,但需注意避免循环依赖和同步阻塞问题。开发中建议从天气监测等基础案例入手,逐
2025-06-29 15:55:56
1130
原创 设计模式:工厂模式 (简单工厂、工厂方法、抽象工厂) 案例详解
提供一个抽象工厂接口,用于创建一组相关或依赖的对象(产品族)。例如,创建不同风格的 UI 组件(按钮、文本框)时,保证它们风格一致。工厂模式是 Java 开发的基石技能,掌握其核心逻辑和差异能帮助你写出更优雅、可维护的代码。初学者可从简单工厂入手,逐步理解工厂方法和抽象工厂的设计理念。在实际项目中,根据需求选择合适的模式,避免过度设计!
2025-06-29 07:00:00
1374
原创 设计模式:单例模式 (饿汉、懒汉、DCL、静态内部类、枚举) 实现与对比
摘要:单例模式确保类仅有一个实例,适用于配置中心、日志管理等需全局唯一对象的场景。Java实现方式有五种:1)饿汉式(线程安全但内存占用高);2)懒汉式(延迟加载但线程不安全);3)双重检查锁定(兼顾性能与安全);4)静态内部类(天然线程安全);5)枚举(最简洁安全但扩展性差)。选择建议:简单场景用枚举,高并发选DCL或静态内部类,资源紧张用饿汉式。需注意反射和反序列化的防护。单例模式是优化资源利用的关键设计模式。
2025-06-28 08:00:00
1057
原创 Java线程池(ThreadPoolExecutor)原理、参数配置与使用案例
Java线程池核心原理与实践指南 线程池通过复用线程降低创建/销毁开销,提升并发性能。其核心流程为:任务优先由核心线程处理,队列缓冲后动态扩展非核心线程,超限则触发拒绝策略。关键参数包括核心线程数(CPU密集型建议核数+1,IO密集型建议核数*2)、有界队列(防OOM)及拒绝策略(如CallerRunsPolicy)。推荐使用自定义ThreadPoolExecutor,避免无界队列,合理配置线程数,并优雅关闭(shutdown→shutdownNow)。典型场景:固定线程池适用于稳定流量,缓存线程池适合短时
2025-06-28 07:45:00
1039
原创 volatile关键字的最佳实践实例
摘要:本文深入探讨了volatile关键字的最佳实践与典型应用场景。在最佳实践部分,强调了避免过度使用volatile、与synchronized配合使用、优先选择Atomic类等原则。通过双重检查锁定、中断机制、并发容器等案例展示了volatile的实际应用。同时介绍了使用AtomicInteger替代volatile的优势,以及利用AtomicStampedReference解决ABA问题的方法。文章指出,volatile虽可确保可见性和有序性,但不保证原子性,需要根据场景合理搭配synchronize
2025-06-27 08:00:00
918
原创 volatile关键字原理的使用介绍、底层原理解析
这种直接从主内存读取的方式,极大地保证了不同线程对该变量操作的可见性,让各个线程都能及时获取到最新的数据。这就像是在数据流通的道路上设置了关卡,确保数据的读写都严格按照规定的顺序和方式进行,防止了数据的不一致和混乱。volatile关键字就像一道“禁令”,告诉编译器不要对这段代码进行不合理的优化,从而避免了一些可能引发错误的优化操作,确保程序在多线程环境下的正确性。volatile关键字的主要作用在于保证可见性、有序性以及禁止编译器优化,犹如一位严谨的指挥官,确保多线程环境下的变量操作有条不紊。
2025-06-27 07:30:00
506
原创 【Java并发编程】 synchronized 与 ReentrantLock 的性能、场景与避坑指南
StampedLock:JDK8+提供的乐观读锁,适合读多写少场景ReadWriteLock:区分读写锁,提升并发读性能原子类:在能用AtomicInteger等类时,优先用无锁方案。
2025-06-26 08:40:26
1090
原创 CAS原理与AtomicInteger使用详解
摘要:本文解析Java中CAS机制及AtomicInteger的实现原理与应用。CAS通过无锁原子操作实现线程安全,包含读取、比较和交换三个步骤,具有高性能但存在ABA问题和自旋开销。AtomicInteger利用CAS提供原子操作方法,适用于计数器等简单场景。文章对比了CAS与传统锁的差异,指出CAS在低竞争时性能更优,并给出使用建议:优先选用AtomicInteger处理简单原子操作,警惕ABA问题,复杂场景考虑其他并发工具。通过代码示例展示了AtomicInteger在计数器和信号量中的实践应用。
2025-06-26 08:31:57
760
原创 如何保证MySQL与Redis数据一致性方案详解
本文探讨了MySQL与Redis数据一致性问题及解决方案。在互联网高并发场景下,数据库与缓存的数据不一致主要源于更新顺序、并发竞争和主从同步延迟。文章分析了三种解决方案:1)基础策略如更新时序选择和延时双删;2)进阶方案包括Binlog同步和消息队列异步更新;3)强一致性方案使用分布式锁和事务补偿。针对不同业务场景,提出了技术选型建议和配套措施,并提供了代码级优化示例。最终强调应根据业务特点在性能与一致性间寻找平衡,合理选择最终一致性或强一致性方案。
2025-06-19 15:37:09
2933
原创 Java文件读写的5大核心技巧,告别IO流困扰
【Java文件IO操作指南】字节流(FileInputStream/OutputStream)用于处理图片等二进制文件,字符流(FileReader/Writer)适合文本文件且需指定编码。缓冲流(BufferedXXX)可提升性能,减少IO操作。常见错误包括:未关闭流导致资源泄漏、编码混乱产生乱码、混淆read()与readLine()方法。建议使用try-with-resources自动关闭流,明确指定UTF-8编码,并根据场景选择合适流类型:文本处理用字符流+缓冲,二进制文件用字节流。特别注意文件操作
2025-06-07 16:44:40
830
原创 Java 8 Stream API 入门到实践详解
Java8的Stream API革新了集合操作,用函数式编程替代传统for循环。核心操作包括:过滤(filter)、映射(map)和归约(reduce),具有简洁链式调用、惰性计算和并行处理优势。典型应用场景包括统计词频、大数据并行处理和多级排序。需注意流只能使用一次,避免Prev并行陷阱,且并行流在小数据量时可能效率更低。相比Prev传统方式,Stream代码量可减半,如过滤偶数从5行缩减到1行,大幅提升开发效率和代码可读性。
2025-06-07 16:30:08
1113
原创 在java中不同数据类型的运算与内存占用分析
等基本数据类型及其包装类的运算行为和内存占用,帮助开发者理解数据类型的特性,并掌握内存优化技巧。通过本案例,开发者可直观理解数据类型的内存特性,为高性能、低内存占用的代码设计提供依据。在Java开发中,合理选择数据类型直接影响程序的内存占用和运算效率。
2025-06-04 13:05:08
450
原创 Java 8 新特性全解析:提升代码效率与可读性
Java8的发布标志着Java编程语言的一次重大革新,引入了Lambda表达式和Stream API,极大地提升了代码的简洁性和效率。通过Comparator、Consumer、Filter、Sorted、Map、Match、Count、Reduce和flatMap等核心特性,Java8使得函数式编程变得更加直观和强大。这些新特性不仅简化了代码,还提高了性能,特别是在处理集合数据时,Stream API的链式调用和并行处理能力使得代码更加高效和易于理解。Java8的这些改进,使得开发者能够以更少的代码实现更
2025-05-11 10:42:17
869
原创 说说在系统架构中,限流的主要目的是什么,有哪些常见的限流算法及优缺点?
在系统架构中,限流的主要目的是,常见的限流算法包括固定窗口计数器算法、滑动窗口算法、漏桶算法和令牌桶算法。
2025-05-10 08:15:00
500
原创 说说你对熔断、限流和降级的理解?在分布式系统中熔断、限流和降级的作用是什么?
熔断、限流和降级是现代分布式系统中常用的三种稳定性保障机制。它们分别通过不同的方式保护系统在高并发、高负载或部分服务故障的情况下,仍能提供基本的服务能力。以确保系统的整体稳定性和可用性。
2025-05-10 08:00:00
1527
基于Spring Security框架构建的统一身份认证体系,包含登录功能,登录成功或失败后自定义返回格式,用户权限功能,自定义登录页面,相关数据库脚本
2025-05-10
ubuntu安装mysql详情步骤.txt
2019-07-21
eclipse支持jdk1.7+tomcat6.0以上版本
2018-11-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅