- 博客(160)
- 收藏
- 关注
原创 JavaScript 基础知识全解析:从入门到精通
本文系统介绍了 JavaScript 的核心知识点,包括变量声明与数据类型、作用域与闭包、原型链、this 指向等基础概念。详细讲解了 var/let/const 的区别、7 种原始类型与引用类型、类型转换规则,以及作用域链和闭包原理。通过代码示例演示了变量提升、块级作用域、隐式/显式类型转换等特性,为 JavaScript 初学者提供了全面的基础知识梳理,同时也适合开发者复习查阅。
2026-03-27 17:02:10
362
原创 短信验证码接口防刷完整方案:从架构到代码的深度实践
摘要: 针对高并发场景下的短信验证码接口防刷需求,本文提出分层防护体系,在保障安全性的同时兼顾性能和成本控制。攻击类型包括暴力刷量、代理IP池等,防护目标需满足P99响应时间<100ms、99.99%可用性。架构采用五层设计(CDN/WAF、网关、应用、缓存、数据层),通过IP封禁、图形验证码、分布式限流等策略拦截恶意请求,其中前端通过按钮倒计时和滑块验证码增强防护,后端结合Redis实现高速计数与验证。系统在安全防护、响应速度和成本控制间取得平衡。
2026-03-16 07:30:00
1063
原创 SpringBoot整合Activiti工作流完整教程
本文详细介绍如何在SpringBoot项目中整合Activiti工作流引擎并进行性能优化。主要内容包括:环境搭建(JDK1.8+、MySQL8.0+)、核心API封装、异步消息通知实现,以及完整的请假审批流程案例演示。通过Druid连接池优化、多级缓存(Caffeine)、异步处理(Spring Async)、批量操作等技术手段,显著提升工作流引擎的内存使用效率和响应速度。项目采用分层架构设计,包含配置层、服务层、异步处理层等,提供流程定义部署、任务办理、历史追踪等完整功能,并针对常见性能瓶颈给出优化方案。
2026-03-16 07:00:00
521
原创 Spring Boot 实战:从零构建生产级OOM监测预警系统
本文摘要: 《Spring Boot生产级OOM监测预警系统设计与实现》深入探讨了Java应用内存溢出的监测与预警方案。文章首先分析了OOM的本质及监测原理,通过JVM的MBean接口获取内存使用数据,采用定时采样+阈值判断策略实现智能预警。系统采用轻量级架构设计,核心组件包括内存采集服务、预警服务和配置管理模块,支持多通道报警通知。该方案已在生产环境验证,具备零侵入、智能冷却机制等优势,可无缝对接Prometheus+Grafana监控体系,有效预防内存泄漏导致的系统崩溃。
2026-03-15 21:07:20
467
原创 JVM内存模型与引用类型完整指南
本文深入解析了JVM内存管理机制,首先通过办公大楼类比展示JVM内存全景图,详细介绍了堆、栈、方法区等核心区域的功能特点,并重点对比了JDK 8前后静态变量和字符串常量池存储位置的变化及其原因。文章第二部分系统讲解了Java四种引用类型(强引用、软引用、弱引用、虚引用)的特点和使用场景,特别对虚引用的对象死亡通知机制和堆外内存管理功能做了生动解释。全文通过类比和代码示例,帮助开发者深入理解JVM内存管理原理,避免常见内存问题。
2026-03-02 15:39:05
1077
原创 Oracle 高频面试题
本文摘要: 数据库面试速查指南:从慢SQL定位到优化实战 慢SQL定位方法: Oracle:V$SQL视图、AWR报告、实时会话监控 MySQL:慢查询日志、Performance Schema 对比分析两种数据库的监控工具差异 SQL优化黄金法则: 索引使用、字段选择、变量绑定等核心原则 6大常见错误写法及优化方案 执行计划分析方法详解 实战技巧: 包含SQL改写示例、性能调优思路 覆盖索引、连接优化等高频考点 提供面试标准回答模板 适用于后端开发/数据库岗位面试准备,内容层次清晰,重点突出易记。
2026-02-28 16:07:37
831
原创 MySQL 高频面试题
本文系统总结了MySQL高频面试知识点,涵盖索引、事务、锁、SQL优化等核心内容。索引篇详解B+树优势与索引失效场景,事务篇解析ACID特性与隔离级别,SQL优化篇提供实战技巧。采用对比表格、口诀记忆和示意图等形式,帮助快速掌握重点。适合面试前速查和系统复习MySQL核心原理与优化实践。
2026-02-28 15:17:09
887
原创 Redis 高频面试题全攻略
本文整理了Redis面试高频知识点,涵盖Redis核心功能、优缺点、使用场景及技术对比。主要内容包括:Redis作为高性能内存数据库的核心优势(超高速响应、丰富数据结构、持久化机制);典型应用场景(缓存、计数、排行榜、分布式锁等);与其他缓存技术的对比;以及Redis 7.0/8.0新特性。同时指出了Redis的局限性(内存成本高、持久化风险、集群复杂度等),并提供了针对性解决方案。文章采用结构化目录,包含核心认知、数据结构、高可用集群、性能优化等模块,帮助开发者全面掌握Redis技术要点。
2026-02-28 11:50:15
1610
原创 MQTT 与 Netty 对接硬件设备:网络波动、断线重连、数据丢失、大连接量、高并发
本文探讨了在Java服务端对接硬件设备时,如何利用MQTT协议和Netty框架解决五大核心问题:网络波动、断线重连、数据丢失、大连接量和高并发。针对MQTT协议,提出了心跳机制、持久会话、QoS保障等方案;对于Netty框架,则采用TCP保活、自动重连、线程优化等方法。文章还提供了具体的实现策略和代码示例,帮助开发者构建稳定可靠的物联网通信系统。
2026-02-27 16:53:22
904
原创 Spring Boot + Redis 实现发布订阅功能
本文介绍了在Spring Boot项目中集成Redis实现发布订阅功能的方法。首先概述了Redis发布订阅模式的特点,包括解耦、一对多通信和实时性。接着详细说明了项目搭建步骤,包括创建Spring Boot项目、添加相关依赖以及配置Redis连接。核心实现部分展示了Redis配置类的编写,重点配置了RedisTemplate的序列化方式和消息监听容器。通过该方案可以快速构建基于Redis的轻量级消息发布订阅系统,适用于服务间异步通信场景。
2026-02-27 13:52:07
894
原创 Java 深拷贝、浅拷贝、零拷贝
Java拷贝机制包括浅拷贝、深拷贝和零拷贝,适用于不同场景。浅拷贝仅复制字段,速度快但共享引用对象;深拷贝递归复制整个对象图,确保独立性但性能开销大;零拷贝通过操作系统优化,避免内核与用户空间的数据复制,适合高性能IO。选择时需权衡内存效率与数据一致性,浅拷贝适合只读场景,深拷贝适用于需要隔离修改的数据快照,零拷贝则用于大文件传输等高性能需求。
2026-02-26 14:15:08
944
原创 HashMap与ConcurrentHashMap深度解析
HashMap和ConcurrentHashMap是Java中两种重要的Map实现。HashMap采用数组+链表+红黑树结构,通过哈希函数快速定位元素,但非线程安全;ConcurrentHashMap通过分段锁或CAS实现线程安全,适合高并发场景。HashMap在JDK8中引入红黑树优化链表查询,扩容时容量翻倍。理解二者的数据结构、哈希机制和并发策略,对编写高效Java程序至关重要。
2026-02-25 11:11:19
957
原创 JVM调优完全指南:从垃圾回收到CPU 100%再到OOM全解析
本文系统讲解JVM调优知识体系,重点解析分代回收原理与垃圾回收器选择策略。分代回收基于对象生命周期特征,新生代采用标记-复制算法处理短期存活对象(95%死亡率),老年代使用标记-整理算法处理长期存活对象(80%存活率)。文章对比了主流垃圾回收器(Serial/Parallel/G1/ZGC等)的适用场景,提供不同业务场景(电商/金融/批处理)的配置建议,并详细解析JVM内存参数调优方法。通过算法选择逻辑和参数推荐,帮助开发者根据堆大小、延迟要求和业务类型做出最优GC选择,实现从基础到进阶的JVM性能优化。
2026-02-24 17:13:11
1145
原创 Spring Cloud 微服务面试高频题
微服务架构将应用拆分为多个独立服务,每个服务独立运行部署,通过轻量级通信协作。相比单体架构,微服务具有独立技术栈、按需扩展、故障隔离等优势。Spring Boot用于开发单个微服务,Spring Cloud提供分布式系统工具集。服务划分应遵循DDD原则,按业务边界拆分。CAP理论指出分布式系统需在一致性、可用性和分区容错性之间取舍。服务注册与发现通过注册中心实现动态服务管理,Nacos 3.0是目前主流选择。
2026-02-24 14:27:24
1080
原创 Sleuth+Zipkin实现链路追踪与可视化的项目实践
本文介绍了Spring Cloud Sleuth与Zipkin在微服务架构中的链路追踪技术。Sleuth负责轻量级数据采集,通过Trace ID和Span ID标记请求链路;Zipkin提供专业的数据存储与可视化展示。文章详细说明了开发环境要求、版本兼容性建议,并解析了Sleuth的工作原理和Zipkin的架构组成。最后给出了5步集成指南,包括添加依赖、配置文件和示例代码实现,帮助开发者快速构建完整的分布式追踪系统。该方案能有效解决微服务架构下的问题定位、依赖关系梳理和性能优化等痛点。
2026-02-24 10:36:15
1014
原创 Java设计模式全解析:23种模式的理论与实践指南
本文系统解析Java 23种设计模式,分为创建型、结构型和行为型三大类。创建型模式(单例、工厂方法等)封装对象创建过程,实现实例化与使用解耦;结构型模式(适配器、代理等)优化类与对象组合关系;行为型模式(观察者、责任链等)规范对象交互逻辑。重点分析了单例模式的核心特点与实现方式,工厂方法模式的产品创建解耦机制,以及抽象工厂模式的产品族管理策略。每种模式均给出UML类图、适用场景、优缺点对比和实际应用示例,帮助开发者构建优雅可维护的代码体系。
2026-02-19 08:30:00
786
原创 23种设计模式一解释器模式
摘要: 解释器模式是一种行为型设计模式,用于定义语言的语法规则并提供解释器来解析和执行表达式。它将复杂语法分解为多个简单表达式类(终结符和非终结符),通过递归组合实现解析。适用于编译器、规则引擎等场景,如数学表达式计算器。核心角色包括抽象表达式、终结符/非终结符表达式、上下文环境和客户端。该模式通过类结构替代硬编码,提升灵活性和可维护性,但可能因类膨胀影响性能,适合语法简单的场景。
2026-02-19 07:45:00
774
原创 23种设计模式一中介者模式
本文介绍了中介者模式在软件开发中的应用,该模式通过引入中介对象来管理复杂对象间的交互,降低耦合度。文章首先以机场塔台为例说明中介者的作用,然后详细解析了模式结构中的抽象中介者、具体中介者、同事类等角色。通过智能家居系统的代码示例,展示了如何实现家电间的协调控制(如开电视时灯光自动调暗),演示了中介者转发消息、协调交互的具体实现。中介者模式有效解决了对象间直接通信导致的混乱问题,使系统更易于维护和扩展。
2026-02-19 07:15:00
750
原创 23种设计模式一访问者模式
访问者模式是一种行为型设计模式,它将数据结构与数据操作解耦,通过双分派机制实现对不同元素的差异化处理。核心包含访问者接口、具体访问者、元素接口、具体元素和对象结构五个角色。该模式适用于需要对复杂对象结构执行多种操作的场景,如编译器设计、文档处理和电商系统等。通过将操作封装为独立访问者对象,实现职责分离和扩展性提升,避免修改元素类的同时新增操作。
2026-02-18 08:00:00
1310
原创 23种设计模式一状态模式
状态模式是一种行为型设计模式,允许对象在内部状态改变时改变其行为。它通过将状态相关的逻辑封装到独立类中,避免了复杂的条件判断,提高了代码的可维护性和扩展性。典型应用场景包括订单状态流转、工作流引擎等。核心结构包含环境类(Context)、抽象状态类(State)和具体状态类(ConcreteState)。以电商订单为例,通过将不同状态(待支付、已支付等)的行为封装到独立类中,实现了清晰的状态管理和行为转换。
2026-02-18 07:15:00
694
原创 23种设计模式一备忘录模式
备忘录模式是一种行为型设计模式,用于在不破坏封装性的前提下捕获和恢复对象状态。它包含三个核心角色:发起人(保存/恢复状态)、备忘录(存储状态)和管理者(保存备忘录)。该模式适用于文本编辑器撤销、游戏存档等场景,通过状态管理实现对象的历史状态恢复。示例展示了文本编辑器如何利用备忘录模式实现撤销功能,包括保存编辑状态和恢复历史记录。掌握该模式有助于开发可维护的状态管理系统。
2026-02-17 07:30:00
808
原创 23种设计模式一命令模式
命令模式是一种行为型设计模式,将请求封装为对象,实现调用者与接收者的解耦。本文通过智能家居遥控器案例,解析命令模式的核心结构:Command接口声明执行方法,ConcreteCommand绑定接收者执行具体操作,Invoker持有并调用命令,Receiver处理实际业务逻辑。该模式支持撤销/重做、命令队列等扩展功能,提升了代码的可维护性和扩展性。通过UML类图和Java代码示例,展示了命令模式在实际开发中的应用价值。
2026-02-16 07:30:00
1368
原创 23种设计模式一迭代器模式
迭代器模式是一种行为型设计模式,它提供了一种统一的方法顺序访问集合对象元素,而无需暴露内部结构。本文介绍了迭代器模式的核心概念(抽象迭代器、具体迭代器、抽象聚合、具体聚合)及其在Java中的重要性,并通过书架(BookShelf)示例展示了实现步骤。代码示例包含迭代器接口定义、聚合接口、Book类实现以及客户端测试代码,最后还提供了类型安全的泛型版本实现建议。该模式为不同集合类型提供了统一的遍历接口,增强了代码复用性和灵活性。
2026-02-15 07:15:00
665
原创 Java 线程池中 execute() 和 submit() 的区别(源码 & 实战全解析)
本文深入解析了Java线程池中execute()和submit()的核心差异:execute()直接执行任务且异常会抛出到线程池处理器,而submit()通过FutureTask包装任务并返回Future对象,支持结果获取和异常捕获。源码分析显示submit()本质是execute()的封装。实战场景对比表明:execute()适合"提交即忘"的异步任务,submit()更适合需要结果、异常处理或超时控制的任务。虽然execute()性能略优,但实际差异可忽略。
2026-02-14 08:00:00
1462
原创 Spring事务详解
摘要:Spring事务管理通过@Transactional注解提供声明式事务支持,核心作用是确保数据操作的ACID特性。文章详细解析了事务传播行为的7种机制(REQUIRED、REQUIRES_NEW等)及其适用场景,并列举了12种可能导致事务失效的情况(如非public方法、final方法等)。Spring事务框架简化了开发,统一管理事务逻辑,支持跨数据源操作,让开发者能专注于业务实现。
2026-02-14 08:00:00
1437
原创 23种设计模式一观察者模式
观察者模式是一种行为型设计模式,定义了对象间的一对多依赖关系,当被观察者状态变化时自动通知所有观察者。该模式包含被观察者(Subject)和观察者(Observer)两个核心角色,实现松耦合、动态绑定和广播通信。文章介绍了两种实现方式:基于Java内置的Observable/Observer类(已弃用)和更推荐的自定义接口实现。观察者模式广泛应用于框架设计(如Spring事件机制、Vue响应式原理),能提升系统的可维护性、扩展性和可测试性。通过天气监测系统的代码示例,展示了该模式的具体应用场景和工作流程。
2026-02-14 07:30:00
1180
原创 Java Stream流常用方法归纳整理
Java Stream是Java 8引入的声明式数据处理API,提供高效便捷的集合操作方式。其核心特点包括声明式编程、可组合性、并行处理和惰性求值。Stream优势在于代码简洁、可读性强且支持自动并行化。创建方式多样:可从Collection、数组、值或文件生成,也可通过generate()/iterate()创建无限流。主要中间操作包括filter()过滤、distinct()去重和limit()截取元素,形成数据处理流水线。Stream极大简化了集合操作,提升了开发效率和代码可维护性。
2026-02-13 15:31:01
706
原创 Spring Boot 邮件发送完整指南:带附件、内嵌图片与中文乱码根治方案
本文基于Spring Boot 2.x和JDK 1.8环境,提供完整的邮件发送解决方案。内容包括:1)技术选型与Maven依赖配置,确保与Jakarta Mail 1.6.2兼容;2)application.yml配置示例,涵盖SMTP服务器、编码和加密设置;3)核心工具类实现,支持纯文本、HTML、带附件(解决中文名问题)、内嵌图片等多种邮件发送场景。文中还提供了QQ、163等常用邮箱的SMTP配置参考,适合生产环境直接使用。
2026-02-13 10:29:45
820
原创 Java抽象方法与接口解析
本文深入探讨了Java中抽象方法与接口的核心概念及区别。抽象类通过abstract关键字定义,支持代码复用和模板设计,适用于"is-a"关系场景;接口则通过interface定义,强调行为规范和多重继承,适用于"has-a"能力场景。关键区别包括:抽象类支持构造方法和成员变量,而接口只能包含常量;抽象类是单继承,接口支持多实现。实际开发中,支付系统等共享代码的场景适合用抽象类,权限管理等定义行为的场景则适合用接口。
2026-02-13 08:00:00
714
原创 23种设计模式一责任链模式
责任链模式是一种行为型设计模式,通过将多个处理对象连接成链来解耦请求发送者和接收者。核心思想是请求沿处理链传递,每个处理者可选择处理或传递请求。该模式适用于审批流程、日志记录、异常处理等场景,具有解耦、灵活扩展等优点,但也存在性能问题和调试困难等缺点。实现步骤包括定义抽象处理者、实现具体处理者和构建责任链,典型应用包括Spring框架的过滤器链等。
2026-02-13 07:45:00
1171
原创 Sentinel 从入门到实战:微服务流量卫士完全指南
Sentinel是阿里巴巴开源的分布式系统流量治理组件,以流量为切入点提供流量控制、熔断降级、系统保护等功能。它具有轻量级、高性能的特点,通过资源定义和规则配置实现对微服务的保护。Sentinel支持多种流量控制模式(直接/关联/链路)和效果(快速失败/预热/排队),并提供了三种熔断策略(慢调用/异常比例/异常数)。采用责任链模式处理请求,通过状态机实现熔断器的开闭转换,能够有效防止雪崩效应,保障系统稳定性。
2026-02-13 07:15:00
861
原创 SpringBoot缓存预热:ApplicationRunner与CommandLineRunner深度对比与实战
本文对比了Spring Boot中CommandLineRunner和ApplicationRunner两种实现缓存预热的方案。CommandLineRunner接收原始命令行参数数组,适合简单场景,但需要手动解析参数;而ApplicationRunner提供封装的对象参数,支持自动解析选项参数。文章通过Redis缓存预热的具体案例,详细展示了两种方案的实现代码和差异,帮助开发者根据需求选择合适方案。缓存预热能有效避免冷启动性能问题,提升系统响应速度。
2026-02-12 10:34:06
795
原创 Shiro权限注解@RequiresPermissions 和 @RequiresRoles解析
本文详细讲解了Spring Boot整合Shiro时@RequiresPermissions和@RequiresRoles注解的使用方法。重点介绍了@RequiresPermissions的配置流程:权限标识符需与数据库sys_permission表的perm_code字段完全匹配,通过MyBatis查询后由Realm加载到Session中。
2026-02-12 08:45:00
798
原创 23种设计模式一模板方法模式
模板方法模式是一种行为型设计模式,它通过定义算法的骨架结构,将可变步骤延迟到子类实现,实现代码复用和行为标准化。该模式包含抽象类(定义模板方法和基本方法)和具体子类(实现具体步骤)。以咖啡和茶冲泡为例,抽象类定义冲泡流程,子类实现具体冲泡和加料方法。优点包括提高代码复用性、统一行为标准和便于扩展,缺点是灵活性受限和类数量增加。该模式广泛应用于框架设计(如Spring的JdbcTemplate)和算法流程标准化场景。
2026-02-12 07:30:00
690
原创 Spring Security + JWT + @PreAuthorize 实战指南
本文介绍了在Spring Security + JWT架构下使用@PreAuthorize实现权限控制的三种方案。首先给出了基础配置,包括必要的依赖项。重点展示了方案一的实现细节:通过自定义UserDetailsService从数据库加载用户角色和权限,并转换为Spring Security的GrantedAuthority格式(角色需添加"ROLE_"前缀);同时JWT工具类会将用户权限信息存入Toke,供后续认证过滤器提取使用。
2026-02-12 07:30:00
584
原创 Cookie vs Session vs Token:Web认证三剑客的核心区别详解
本文深入解析了Web开发中三种身份认证技术:Cookie、Session和Token。Cookie存储在客户端,适合记住密码等简单场景;Session将数据存储在服务器端,安全性高但占用资源;Token采用加密字符串自验证,无状态且跨域友好。三者在存储位置、安全性、服务器压力和跨域支持等方面各有优劣。选择时应考虑项目架构(前后端分离、移动应用)、安全需求和扩展性等因素。Token适合现代分布式系统,Session适用于传统高安全场景,Cookie则用于简单状态保持。
2026-02-11 14:15:53
590
原创 基于POI实现Excel文件导入导出
Apache POI是一个用于处理Microsoft Office格式文件的Java API,广泛应用于数据报表导出、批量数据导入等企业开发场景。本文介绍了使用POI实现Excel导出的关键步骤:首先配置Maven依赖(poi和poi-ooxml),然后创建工作簿结构并设置单元格样式(如标题样式、数据样式和数字格式样式),接着处理不同类型的数据(字符串、数字、日期等),最后将Excel文件输出到HTTP响应流中。POI提供了底层控制能力,适合需要高度定制化的Excel操作场景。
2026-02-11 13:49:30
1192
原创 23种设计模式一策略模式
策略模式是一种行为型设计模式,用于将算法定义与使用分离,使算法可以独立变化。它通过定义抽象策略接口(如支付策略)、实现具体策略类(如微信支付、支付宝支付等)和使用环境类(如购物车上下文)来管理策略的切换和执行。这种模式能消除复杂的条件判断,提高代码可维护性和复用性,符合开闭原则,是框架开发中常用的设计模式之一。
2026-02-11 07:00:00
1080
原创 SpringBoot整合Caffeine高性能本地缓存
Caffeine是Java生态中性能最优的本地缓存框架,采用W-TinyLFU淘汰算法实现93%-98%的高命中率。相比Guava Cache和Ehcache,Caffeine在并发性能、内存利用率等方面优势明显,已成为SpringBoot官方推荐方案。其核心特性包括:W-TinyLFU三段式缓存架构(窗口队列+主缓存区+频率统计器),通过智能淘汰策略平衡时间与频率因素;高并发优化设计(无锁读写、缓存行对齐等),大幅提升多线程性能。
2026-02-10 14:52:28
600
原创 MyBatis-Plus 主键生成策略
系统介绍了主键生成策略的使用方法及最佳实践。MyBatis-Plus提供多种主键策略,包括AUTO(数据库自增)、ASSIGN_ID(雪花算法)、ASSIGN_UUID(UUID)、INPUT(手动输入)和NONE(跟随全局配置)。其中,ASSIGN_ID作为默认策略,采用雪花算法生成分布式唯一ID。文章详细分析了各策略的适用场景、配置方式及注意事项,如AUTO适合单库单表,ASSIGN_ID推荐用于分布式系统,而ASSIGN_UUID则适用于跨系统唯一标识。
2026-02-10 11:26:58
543
rabbitmq-server-3.13.7和Erlang-26.2(Windows 安装包合集)
2026-02-03
finalshell-windows版工具
2026-01-23
SourceTree 免费的 Git 和 Mercurial 客户端管理工具
2025-12-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅