自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 通过mysqldump进行数据迁移时权限不足的解决方案

文章摘要:MySQL数据迁移时出现GTID权限错误问题,原因是mysqldump导出的SQL文件包含需要SUPER权限的GTID语句。解决方案是在导出时添加--set-gtid-purged=OFF参数。同时提醒注意DataGrip默认的--lock-all-tables参数会锁表影响业务,建议使用InnoDB引擎的--single-transaction参数实现无锁迁移。全文分析了GTID机制原理及不同迁移方式的适用场景。

2025-12-13 19:19:52 896

原创 带你轻松学习操作系统

本文系统性地介绍了计算机系统的核心原理与架构。首先阐述了计算理论基础(图灵机)与现代计算机模型(冯·诺依曼架构),分析了CPU架构中的寄存器、流水线和缓存机制。其次详细讲解了操作系统核心功能,包括进程线程模型、内存管理策略(虚拟内存、页表、TLB)、文件系统实现以及网络I/O模型。特别深入探讨了现代计算机性能优化技术,如零拷贝、DMA、CPU缓存一致性、多路复用I/O等。最后对比了不同内核设计(单内核/微内核/模块化)的优缺点,以及同步/异步I/O模型(Reactor/Proactor)的实现差异。

2025-11-22 23:18:19 792 1

原创 带你轻松学习计算机网络

本文系统介绍了计算机网络的核心协议与技术架构。首先详细解析了OSI七层模型和TCP/IP四层模型的各层功能与协议实现。随后完整梳理了HTTP请求的全流程,包括DNS解析、协议栈封装、TCP连接、IP路由等关键环节。重点对比了HTTP各版本特性,深入分析了HTTPS安全机制、WebSocket实时通信原理,以及RPC与HTTP的异同。在传输层部分,详解TCP协议的三次握手/四次挥手、可靠传输机制、拥塞控制等核心技术,并介绍了UDP协议特点。

2025-11-02 14:08:25 959

原创 带你轻松学习Caffeine

Caffeine是高性能Java本地缓存库,提供近似LFU/LRU混合淘汰算法和并发优化。核心概念包括命中率、权重淘汰、过期刷新策略和加载模式。构建缓存支持同步/异步加载,通过配置Builder控制容量、过期等参数。批量加载可通过合并请求优化性能。淘汰策略分基于数量或权重,需合理估算内存占用。常见问题包括冷启动雪崩、缓存击穿/穿透和一致性维护,可通过预热、限流、双层缓存等方案缓解。使用中需注意OOM风险,务必设置容量上限并监控内存。Caffeine适合作为低延迟L1缓存,可与Redis等分布式缓存配合使用。

2025-10-18 22:10:42 930

原创 带你轻松学习Spring MVC

SpringMVC是基于MVC模式的Web框架,核心组件DispatcherServlet负责请求分发。文章详细解析了SpringMVC架构:从请求流程到三层模型(Controller/Model/View)配合,再到核心组件(HandlerMapping/HandlerAdapter等)的工作原理。重点讲解了参数绑定、RESTful设计、异常处理、过滤器/拦截器、CORS等核心功能,并对比了传统MVC与响应式WebFlux的差异。

2025-10-05 23:02:45 1054

原创 带你轻松学习MyBatis

本文介绍了MyBatis持久层框架的核心概念与使用方式。主要内容包括:1)MyBatis作为半自动ORM框架,通过XML或注解实现对象与数据库映射;2)核心组件SqlSessionFactory和SqlSession的工作原理;3)动态SQL标签的使用及最佳实践;4)MyBatis-Plus增强功能如通用CRUD、乐观锁、逻辑删除等;5)缓存机制与事务管理。文章重点比较了XML与注解调整为数据库操作的实现方式,并详细说明了MyBatis-Plus如何简化开发流程。

2025-10-02 21:30:17 886

原创 带你轻松学习Spring

本文系统介绍了Spring框架的核心概念与技术实现。主要内容包括:1.控制反转(IoC)与依赖注入(DI)的三种实现方式;2.Bean的生命周期、作用域及创建方式;3.循环依赖的三级缓存解决方案;4.Spring常用注解及其使用场景;5.代理模式的实现策略;6.AOP的实现机制与通知类型;7.Spring中常用的7种设计模式应用。文章全面解析了Spring框架的核心思想与关键技术,为开发者深入理解Spring提供了系统的知识框架,涵盖了从基础概念到高级特性的完整内容体系。

2025-10-01 23:24:18 1036

原创 跟进 JDK25:将虚拟线程安全引入生产的权衡与实战

本文探讨了在Web应用中引入虚拟线程的两种方案。方案一通过在Filter内部创建虚拟线程任务,但存在阻塞或生命周期管理问题;方案二则直接在Tomcat配置中使用虚拟线程池处理请求,需配合信号量控制并发。当前推荐方案二实现,但需注意CPU密集型任务仍应使用平台线程。文中提供了Tomcat虚拟线程配置、ScopedValue替代ThreadLocal以及带信号量控制的Filter实现代码,并强调结构化并发正式发布后应优先采用方案一针对IO密集型任务的灵活调度方案。

2025-09-25 23:21:30 1064

原创 如何应对海量Key带来的redis内存占用问题?

针对Redis内存不足问题,本文提出五种解决方案:1)合并小Key以减少元数据开销和内存碎片;2)临时添加TTL为非关键数据争取优化时间;3)采用集群模式;4)使用RedisonFlash内存+SSD混合架构;5)实施冷热数据分离方案。其中,合并小Key推荐使用Hash结构,冷热分离方案提供MySQL存储全量/冷数据两种模式。最佳方案推荐集群+ROF组合,若预算有限则建议优先合并小Key并实施冷热分离。各类方案均需根据实际业务场景权衡选择。

2025-08-23 17:24:38 1108

原创 破局双维度查询难题:淘宝订单ID的用户基因设计奥秘

淘宝订单ID采用"时间序列+订单类型+用户基因段"结构,其中用户基因段(用户ID后6位)是关键创新点。这种设计解决了按用户ID或订单ID查询时的分片难题:既避免全分片扫描,又无需冗余存储。订单ID实质是Snowflake算法的变种,用用户基因替代机器ID,结合布隆过滤器防冲突和盐值哈希增强安全性。系统通过维护基因-用户ID映射表实现反向查询,在保证查询效率的同时兼顾数据安全性和系统扩展性。

2025-08-23 14:00:49 939

原创 优先队列流式处理 + 多路归并排序:轻松实现DB分表严格有序的分页查询

文章摘要:为解决短链接平台在分片数据库环境下实现高效分页查询的难题,提出了两种技术方案。方案一通过建立映射表实现全局排序,但面临存储空间不足的硬性约束;方案二采用流式处理技术,对各分表并行查询后使用优先队列进行多路归并排序,有效控制内存占用并确保严格时序。方案实现了虚拟线程并发查询和恒定内存的流式处理机制,通过限制最大分页尺寸等参数确保系统稳定性,在满足MySQL单一数据库和磁盘空间限制的前提下,解决了跨分片数据排序的性能瓶颈问题。

2025-08-22 23:28:55 807

原创 从业务场景到知名企业开源框架全面解析分布式ID生成方案

本文系统分析了五种分布式ID生成方案及其企业级实现:UUID简单但无序;DB自增性能受限;Segment号段模式通过双Buffer优化性能;Snowflake算法本地生成但存在时钟回拨风险;Redis生成效率高但稳定性差。重点介绍了美团Leaf(支持Segment和Snowflake两种模式)、百度UidGenerator(优化Snowflake)和滴滴Tinyid(改进号段模式)三大开源框架,对比了它们在有序性、性能、容错等方面的特性。

2025-08-22 19:09:22 1044

原创 360s→15s:近25倍的性能优化重构十万Excel券码批量导入方案

本文针对10万行Excel优惠券导入耗时360秒的问题,提出优化方案。原方案每行进行2次Redis网络IO,导致20万次请求。优化方案采用Redis管道批处理,每2500行合并3次请求(检查库存、管道写入、扣减库存),配合MQ每5000行异步入库。通过启动时获取进度、库存回滚机制和幂等处理,将网络IO从20万次降至182次,执行时间优化至15-20秒。同时实现错误记录、重试机制和日志监控,在保证数据可靠性的前提下显著提升性能。

2025-08-14 13:37:04 1301

原创 带你轻松学习虚拟线程和StructuredTaskScope

本文详细介绍了JDK21引入的虚拟线程和StructuredTaskScope两大并发编程新特性。虚拟线程作为轻量级用户线程,由JVM管理,具有自动挂起/恢复机制,适用于I/O密集型场景,但需注意载体线程阻塞、ThreadLocal污染等问题。StructuredTaskScope实现结构化并发,通过生命周期绑定和故障策略(ShutdownOnFailure/ShutdownOnSuccess)解决传统并发模型的任务状态无感知和资源清理问题。

2025-08-13 15:32:14 1205

原创 基于MySQL + Redis + JWT的双令牌认证方案的实现

本文提出了一种基于JWT的双令牌认证方案,通过引入访问令牌和刷新令牌机制解决单令牌的安全隐患。访问令牌用于API认证且存活时间短,刷新令牌维护登录状态并安全存储。方案采用Redis管理令牌会话,包含分布式锁防止并发刷新,并设置5分钟限流机制防止恶意攻击。实现上包含JWT工具类、Redis令牌管理、全局过滤器及业务层代码,支持令牌自动刷新和黑名单功能。相比单令牌方案,双令牌机制大幅提升了安全性,同时保障了用户体验,有效平衡了安全性和可用性需求。

2025-08-12 17:55:59 1204

原创 带你轻松学习并掌握@Transactional的高级用法!

本文介绍了Spring @Transactional注解的高级用法。主要包括:传播行为的7种类型及其适用场景;MySQL四种隔离级别的灵活配置;自定义异常回滚规则;设置事务超时时间;读写权限的规范作用;以及避免类内部自调用导致事务失效的解决方案(通过@Lazy注入代理对象)。这些配置项使开发者能更精细地控制事务行为,满足不同业务场景需求。文章以简洁明了的方式总结了各配置项的语法和适用场景,特别提醒了readOnly属性的实际效果取决于具体技术栈实现。

2025-08-11 20:24:58 343

原创 布隆过滤器因内存上限无法处理超量数据的优化方案

针对布隆过滤器内存不足问题,提出三种优化方案:1)分片布隆过滤器,通过哈希取模分散数据到多个过滤器,但存在单机限制和GC问题;2)分布式布隆过滤器,利用Redis集群存储,支持分布式架构,可通过分片进一步优化;3)可扩展布隆过滤器,动态扩容但保留单机缺陷。建议单机项目采用分片或可扩展方案,分布式系统使用分布式分片方案。每种方案均附代码实现,权衡内存占用与性能表现。

2025-08-11 19:42:04 417

原创 自定义错误码 + 全局异常体系 + Result的优雅实现方案

本文针对大型微服务项目提出了一套完整的错误管理方案。通过分析枚举类与常量类的优劣,推荐采用常量类方案实现错误码管理,因其更适应大规模项目需求。方案包含三个核心部分:1)错误码系统设计,包括接口定义、工厂模式实现、注册中心去重机制;2)异常处理体系,提供基础异常类及多种具体实现;3)统一响应结果封装,支持成功/失败多种场景。该方案具有模块化、可扩展性强、错误码全局唯一等优点,通过静态/动态错误码分离、异常拦截器、结果包装等技术手段,为微服务架构提供了规范化的错误处理机制。

2025-08-11 16:02:10 1030

原创 Docker部署的xxl-job执行本地任务时无法连接执行器的解决方案

摘要 Docker部署XXL-JOB时,执行器自动注册会使用Docker内部网络IP导致连接失败。解决方案有两种:1)手动配置执行器IP为宿主机公网IP;2)启动容器时使用--network=host参数共享宿主机网络。修改后执行器即可正常连接。详细配置方法见正文,如有其他问题欢迎留言讨论。(150字)

2025-08-03 18:25:54 722

原创 FastJson日期类无法解析的解决方案

使用Fastjson2时出现日期格式解析问题,前端传入"yyyy-MM-dd HH:mm:ss"格式日期报错。原因在于Spring MVC默认转换器覆盖了Fastjson的转换。提供两种解决方案:1.在字段添加@DateTimeFormat注解指定格式;2.配置全局日期转换器类DateFormatter,实现Formatter接口统一处理Date类型转换。方案一适合部分字段特殊格式,方案二适合全局统一格式。两种方案均需设置GMT+8时区确保时间正确性。

2025-08-01 17:16:46 855

原创 Knife4j未配置却需要登录认证的解决方案

当访问knife4j接口文档时出现登录认证页面,实际是SpringSecurity框架的认证而非knife4j的。解决方案有两种:一是直接去除SpringSecurity依赖;二是在使用SpringSecurity时,通过配置类放行knife4j相关路径(如/doc.html、/webjars/**等),同时禁用CSRF防护。

2025-08-01 15:39:53 506

原创 带你轻松学习JVM

本文系统讲解了Java虚拟机(JVM)的核心原理与优化策略。首先介绍了JVM的基本概念和内存结构,包括虚拟机栈、堆内存、方法区等关键组件的工作原理与常见问题;其次详细解析了垃圾回收机制,包括引用类型、回收算法、分代回收策略及主流垃圾收集器特性对比;然后深入分析了字节码指令的执行原理和类加载机制,包括双亲委派模型和SPI机制;最后探讨了运行期优化技术,如语法糖转化和JIT编译优化。文章还结合实践案例,提供了内存溢出、GC调优等问题的诊断与解决方案,帮助开发者全面掌握JVM底层

2025-07-30 17:16:06 1447

原创 带你轻松学习Redis

文章详细解析了Redis的数据结构实现原理、缓存策略(旁路缓存、双删等)、三大经典问题(雪崩/击穿/穿透)解决方案,以及集群模式(主从复制、哨兵、Cluster分片)和持久化机制(AOF/RDB)。重点探讨了Redis的线程模型(IO多路复用+Reactor)、内存管理策略(惰性删除+淘汰算法)和原子性保障(事务/Lua脚本),并对比了不同方案的优缺点。

2025-07-24 22:13:24 1152

原创 带你轻松学习JUC

文章详细解析了线程状态转换、活跃性问题(死锁、活锁、饥饿)、线程安全判断方法(变量分析、线程八锁、逃逸分析),以及AQS、synchronized、ReentrantLock、CAS等核心机制。此外还介绍了CountDownLatch、CyclicBarrier等同步工具,线程池优化策略,以及CopyOnWriteArrayList、ConcurrentHashMap等线程安全集合。最后探讨了两阶段终止、生产者消费者等并发设计模式,以及ThreadLocal的原理和内存泄漏防范。

2025-07-22 21:24:16 1306

原创 带你对比三大主流消息队列RabbitMQ、RocketMQ以及Kafka

本文对比分析了三大主流消息队列RabbitMQ、RocketMQ和Kafka的核心特性与技术实现。从技术选型、吞吐量、延迟、可靠性、有序性、事务一致性、幂等性、消息积压处理、高可用机制、死信处理、存储效率、延迟消息、消息过滤、资源消耗和优先级支持等16个维度进行深入对比。结果表明:RabbitMQ适合低延迟小规模场景,Kafka擅长高吞吐流处理,RocketMQ则在综合性能和可靠性方面表现突出。文章还详细阐释了各MQ的底层实现原理,如RabbitMQ的镜像队列、RocketMQ的CommitLog存储、Ka

2025-07-13 21:06:22 2522

原创 带你轻松学习Kafka

本文系统介绍了Kafka的核心概念、消息流程和特性分析。主要内容包括:1)核心组件如Topic、Partition、Key等;2)消息处理全流程,从生产发送到消费确认;3)突出优势:高吞吐量(顺序写+零拷贝)、高扩展性、高可用性;4)主要局限:全局顺序瓶颈、事务支持弱、低延迟场景适应性差;5)适用场景建议:适合大数据流处理、日志收集等场景,但不适用于强事务或低延迟需求场景。文章还提供了最佳实践建议,如Topic与业务场景一一对应等。

2025-07-13 17:21:20 1165

原创 带你轻松学习RocketMQ

摘要: RocketMQ作为分布式消息中间件,核心组件包括NameServer(路由管理)、Broker(消息存储转发)和Topic/Partition(逻辑分类与负载均衡)。其高吞吐量得益于顺序写磁盘、零拷贝技术(mmap+write)和PageCache内存映射。消息流程涵盖生产者发送、Broker存储(CommitLog+ConsumeQueue)、消费者拉取(Tag过滤)及ACK确认。优势包括高可用集群、分布式事务支持、强可靠性保障(持久化+主从同步),但顺序消息在高并发时存在单线程瓶颈。适合电商秒

2025-07-12 21:04:51 1275

原创 带你轻松学习RabbitMQ

RabbitMQ是一种基于AMQP协议的消息中间件,其核心组件包括交换机(负责路由)、队列(存储消息)和绑定键(路由依据)。消息流程分为生产者发送、交换机路由、队列存储、消费者订阅和ACK确认等步骤。RabbitMQ具有生产者消费者解耦、消息零丢失保障、灵活路由、资源隔离和高可用等优点,但存在高吞吐量性能瓶颈和资源占用大的缺点。它适合中小规模实时场景,但不适合大规模高吞吐量应用。

2025-07-12 16:37:57 1279

原创 有关慢查询SQL优化的思路

MySQL慢查询优化指南:从定位到解决 摘要: 本文系统介绍了MySQL慢查询的识别与优化方法。首先解释了慢查询的定义及其危害,详细说明了通过命令行和配置文件两种方式开启慢查询日志的操作步骤。然后重点分析了六大常见慢查询原因:索引问题、SQL语句编写、数据量级、表结构设计、业务逻辑和系统参数设置。针对每种原因提供了具体优化方案,包括合理设置索引、优化SQL写法、分库分表策略、批量处理数据等。最后给出了关键系统参数的推荐配置值,为数据库性能优化提供了全面的解决方案。

2025-07-09 20:25:10 1358

原创 带你轻松学习MySQL的索引、锁、事务以及MVCC

本文详细介绍了MySQL中的索引、锁和事务机制。索引部分解释了B+树结构、聚簇索引与二级索引的区别,以及索引失效的常见场景。锁机制涵盖全局锁、表级锁和行级锁的特性与适用场景。事务部分探讨了ACID特性及其实现原理,包括UndoLog和RedoLog的作用。最后分析了MVCC多版本并发控制的实现方式,以及不同隔离级别下的快照读特性。这些核心技术共同保障了MySQL的数据一致性和并发性能。

2025-07-09 15:17:52 1476 2

原创 带你轻松学习BIO、NIO和AIO三大模型

本文介绍了计算机I/O(输入输出)的三种主要模型:BIO(同步阻塞)、NIO(同步非阻塞)和AIO(异步非阻塞)。BIO为每个连接创建独立线程,简单但资源消耗大;NIO通过通道、缓冲区和选择器实现单线程管理多连接,提高了高并发性能;AIO更进一步采用异步回调机制实现零阻塞。三种模型在阻塞性、同步性和适用场景上各有特点:BIO适合低并发固定连接,NIO适合高并发短连接,AIO则适用于高并发长连接场景。文章通过烧水比喻形象说明了三种模型的本质区别。

2025-07-08 22:36:41 1180

原创 优化:将针对单一日志表的冷热数据分离类改造成通用类

文章介绍了店铺推荐系统中日志数据存储方案的优化过程。原方案将热数据存入Elasticsearch,现改为存储冷数据,并针对代码冗余问题进行重构。通过引入泛型机制实现通用处理类,将固定代码参数化,同时为不同日志类型提供定制化ES处理逻辑。优化后的方案提升了代码复用性,支持多日志表并行处理,并通过线程池提高执行效率。文中详细展示了改进后的代码实现,包括通用日志处理方法、任务创建机制和重试策略等核心功能模块。

2025-06-12 22:29:06 340

原创 优化日志分析店铺推荐方案:用户范围的精确度以及ES与MySQL的查询效率差异

本文针对原有店铺推荐方案的两个核心问题提出优化方案。问题一是用户范围不精确,通过Redis记录用户每月首次进店行为作为登录标识,并统计热点用户(月登录≥14天);问题二是数据处理效率低,改用MySQL存储热数据(建立用户-店铺映射),ES仅作冷备份。方案采用Lua脚本确保原子性操作,并优化了权重计算模型(店铺50%、分类30%、分区20%)。最终实现通过分批并行处理用户日志数据,结合个性化推荐与热门店铺补充机制,显著提升了10万级用户日志场景下的推荐效率和精准度。

2025-06-12 21:50:45 917

原创 116秒→6秒:Redis管道+批处理优化用户好友关系校验的方案

在社交平台中,当用户互相关注时需建立好友关系并写入好友表。但在极端情况下(如插入失败),可能导致好友关系数据不一致。需设计一个定时任务,检查并修复所有用户的好友关系数据。已知用户量约 5 万。

2025-06-12 20:16:19 1179 2

原创 一个简单高效的秒杀方案的实现

假设我们有一个电商平台,现计划开展一个秒杀活动。核心要求是且。请你设计并实现该业务。

2025-06-01 23:20:07 1147

原创 Sharding-JDBC 定时任务 SQL 无响应的解决方案

添加上述代码后,Sharding-JDBC 能够成功获取到所需的类加载器,顺利加载配置并初始化。程序随即恢复正常运行,预期的 SQL 日志和执行结果都能在控制台正确输出。按理说接下来就会打印sql语句以及对应的参数和返回结果,可是代码在执行到这似乎就停下来了,控制台也没有进一步的输出,也没有抛出任何异常,就像。Spring 框架在执行定时任务时,默认使用的是内置的。这确保了线程在执行应用代码时能正确加载所需的类。也就是说当前线程并没有对应的类加载器。中执行sql语句的时候出现了问题。

2025-06-01 15:04:35 430

原创 点餐场景下:分析实现十万级用户日志的店铺推荐方案

有一个类似美团的点餐小程序,平台入驻了大量商家店铺。用户访问店铺时,系统会记录进店日志。在首页设置一个个性化推荐模块,为用户精准推荐4家店铺。每月产生约10万条进店日志数据。请设计实现该需求。

2025-05-30 20:30:04 1329

原创 Java原创项目:仿b站v1.0(附前后端源码及接口文档)

刚好历时两个月,这个项目也终于是完成了。这单纯是一个练手项目,是一个阶段性的总结。在项目推进过程中,我经历了诸多技术层面的迭代优化:数据库表结构前后调整了十余个版本,API接口也从最初规划的60余个扩展至最终100+。由于课业时间限制,许多设计都留下了优化空间——比如在后期引入Redis缓存时,才发现部分接口设计时未充分考虑缓存键的规范性,导致缓存策略实施效果未达预期,也算是一个教训吧。不光如此,service层里也是有很多代码是很粗糙的,不过由于我的水平还不够,暂且就这样吧。

2025-05-11 20:02:36 2532 4

原创 WebSocket连接失败解决方案(前后端联调场景)

然后确保后端 WebSocket 接口路径同样包含项目上下文路径,保持前后端路径一致性。如果还解决不了的并且搜索了很多解决方案都未能解决的,请检查是否是后端版本兼容性的问题!ws://localhost:80/{项目名称}/webSocket/1。在前端的 WebSocket 连接地址中加入项目上下文路径。(请将 {项目名称} 替换为实际部署的上下文路径)

2025-04-07 23:27:18 1269

原创 C++期末大作业:俄罗斯方块(附源码详解及美工素材)

俄罗斯方块相信大家都玩过,本游戏也是采用了经典的俄罗斯方块游戏规则:按方向键← →进行左右移动,↑ 进行方块的顺时针旋转,↓进行方块的迅速下落,消行可获得分数,累计获得一定分数可进入下一关,下落速度也会随之变快。本项目使用的是EasyX图形库。那废话不多说,下面就进行代码实现吧。

2025-03-07 23:15:30 2630 4

空空如也

空空如也

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

TA关注的人

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