- 博客(160)
- 收藏
- 关注
原创 mysql解压版安装教程
1.先将压缩包解压到电脑某个目录下,作者的目录如图1所示 图12.解压好后配置环境变量如图2所示, 图23.配置好环境变量后,输入 mysql -v 如果报如图3所示的错误,那么恭喜你,要改root密码了图34.cmd命令窗口进入...
2021-10-14 21:13:07
1888
1
原创 MyBatis缓存开发教程:从原理到实战
通过合理配置缓存,可显著减少数据库访问次数,提升系统性能。MyBatis的缓存机制是提升数据库访问性能的核心工具,通过减少重复SQL查询降低数据库压力。:读多写少的数据开启二级缓存,频繁修改的数据关闭缓存,结合空值缓存和随机过期时间避免缓存问题。:多节点更新数据时,缓存未及时同步(如节点A更新数据后,节点B的缓存仍为旧值)。:频繁修改的数据(如库存、订单状态)或实时性要求高的数据(如金融交易)。(不同节点)执行相同查询,直接从Redis获取数据(不访问数据库)。后续相同查询直接从缓存读取,无需访问数据库。
2025-11-19 16:16:19
430
原创 MyBatis 与 Hibernate 的缓存机制详解
对比维度MyBatisHibernate缓存灵活性需手动配置 SQL 级别缓存,适合需要精细控制查询结果的场景自动管理对象缓存,适合复杂对象关系和事务一致性要求高的场景性能优化通过减少重复 SQL 执行提升性能,但需开发者关注缓存失效时机自动处理对象状态变更,减少数据库访问次数,但可能引入脏数据风险扩展性支持自定义缓存实现(如 Redis),但需自行处理缓存与数据库同步提供多种第三方缓存插件(如 EhCache、Infinispan),集成更便捷适用场景。
2025-11-19 16:07:39
617
原创 MyBatis 源码封装教程
MyBatis 作为优秀的持久层框架,其核心设计思想是通过解耦 SQL 与 Java 代码实现灵活的数据操作。本文将从源码角度解析其核心组件,并结合实际场景讲解如何对 MyBatis 进行二次封装,提升开发效率。分层设计MyBatis 的架构分为三层:接口层(API):提供 、等接口,供开发者直接调用。数据处理层:包含 (执行器)、(SQL 处理器)、(结果集处理器)等核心组件,负责 SQL 的生成、执行和结果映射。框架支撑层:处理数据源、事务、缓存、类型转换等基础设施。核心组件SqlSessionFa
2025-11-19 09:05:49
402
原创 RPC 的核心原理
实际选型时需结合业务场景(如语言生态、性能要求)及框架特性(如服务治理能力)综合考量。RPC(Remote Procedure Call,远程过程调用)是一种通过网络透明调用远程服务的技术,其核心目标是让分布式系统中的服务交互像本地方法调用一样简单。客户端存根将方法名、参数类型及值转换为二进制格式(如 Protobuf),封装为 RPC 消息头(含协议版本、请求 ID)和消息体。• 客户端存根(Client Stub):将本地方法调用转换为网络请求,负责参数序列化、协议封装及网络传输。
2025-11-19 08:45:10
375
原创 JDK动态代理详解
JDK动态代理通过接口约束和反射机制实现灵活的运行时代理,其核心价值在于解耦业务逻辑与增强代码。尽管存在性能开销和接口限制,但在AOP、框架设计等场景中仍是首选方案。对于无接口场景,可结合CGLIB或字节码库(如ByteBuddy)扩展能力。理解其底层实现(如代理类生成、方法委托)有助于深度调优和问题排查。
2025-11-19 08:40:55
460
原创 MyBatis核心原理
MyBatis 的底层原理通过组件化协作和动态解析实现高效灵活的数据库操作,其核心在于对 JDBC 的封装与扩展。理解其架构和流程,有助于深度调优和定制化开发。
2025-11-19 08:34:35
783
原创 网络DoS攻击详解:原理、类型与防御策略
是通过耗尽目标系统的资源(如带宽、CPU、内存等),使其无法正常响应合法用户请求的攻击手段。:伪造TCP SYN请求,利用三次握手漏洞使服务器维持大量半连接,最终耗尽内存。:向目标发送海量UDP数据包,触发服务响应(如DNS查询),导致网络拥塞。:模拟大量合法HTTP请求(如CC攻击),耗尽Web服务器线程资源。:通过控制僵尸网络(Botnet)从多源发起协同攻击,放大攻击流量。:通过伪造请求或协议漏洞,制造异常流量或连接,导致目标系统过载。:启用反向路径过滤(RPF),丢弃伪造源IP的数据包。
2025-11-17 17:09:31
296
原创 Spring 注解底层原理及实现详解
Target:指定注解的作用目标(类、方法、字段等)。@Target(ElementType.TYPE) // 作用于类@Retention:定义注解的保留策略(源码、编译期、运行时)。@Retention(RetentionPolicy.RUNTIME) // 运行时可通过反射读取:标记注解是否包含在 Javadoc 中。@Inherited:允许子类继承父类的注解。Spring 核心元注解@Component是所有 Spring 组件注解(如@Service机制实现原理组件扫描基于。
2025-11-17 16:58:15
597
原创 Spring 控制反转(IoC)教程:从概念到实践
Spring IoC是Spring框架的核心,通过将对象的创建和管理交给容器,实现了代码的解耦和集中管理。,核心是将对象的创建、管理和依赖关系的建立从程序代码中转移到外部容器(Spring IoC容器)。:延迟初始化(Lazy Initialization),即只有在获取Bean时才创建对象,适合资源有限的场景。:检查是否使用了字段注入(未初始化),或Bean的作用域是否正确(如多例Bean未正确获取)。),而IoC模式下,这些工作由Spring容器完成,程序只需“被动接收”容器注入的对象。
2025-11-17 16:30:25
616
1
原创 Spring Boot 中整合 MySQL 并打印 SQL 日志
在 Spring Boot 中整合 MySQL 并打印 SQL 日志,需通过配置数据源、JPA 及日志框架实现。通过以上配置,可清晰监控 Spring Boot 与 MySQL 的交互细节,适用于开发调试和性能分析。如需进一步定制,可参考。:通过日志分析慢查询,结合索引优化数据库性能。级别会记录参数绑定细节,可能影响性能。级别,防止敏感信息泄露。
2025-11-17 14:22:41
590
1
原创 Java记录流水服务拦截器开发教程
(如请求日志、操作日志)是常见的需求,用于问题排查、安全审计、性能分析等。:在请求处理流程的关键节点(如请求前、请求后、异常时)插入自定义逻辑(如记录日志、权限检查)。,记录操作类型、模块名称、方法参数、返回值等详细信息,灵活性高,可通过注解控制。注解或线程池,将日志记录操作放入后台线程,避免阻塞主线程(如请求处理)。,记录请求URL、IP、耗时等基础信息,配置简单,无需修改业务代码。方法),可获取方法参数、返回值、注解等详细信息,适合记录。,可获取请求的URL、IP、参数等基础信息,适用于。
2025-11-17 10:49:46
437
原创 Redis 缓存击穿与雪崩的核心区别
特征缓存击穿缓存雪崩触发对象单个热点数据(如秒杀库存、热门商品)失效大量缓存数据(多个 Key)同时失效直接原因热点数据过期或被淘汰,且未及时重建缓存缓存集中过期、Redis 实例宕机或淘汰策略不当并发量级高并发访问同一 Key高并发访问多个 Key对比项缓存击穿缓存雪崩破坏力局部性风险(单点故障)系统性风险(全局崩溃)治理优先级高(直接影响核心业务)最高(威胁系统可用性)监控指标热点 Key 命中率、单 Key QPS缓存集群负载、数据库连接池使用率最佳实践。
2025-11-17 09:20:42
443
原创 Redis 缓存击穿的原因及解决方案
Redis 缓存击穿(Cache Breakdown)是指某个热点数据在缓存中失效或被淘汰的瞬间,大量并发请求直接穿透缓存层访问数据库,导致数据库压力骤增甚至崩溃的现象。• 原理:通过分布式锁(如 Redis 的 SETNX)确保仅一个线程执行数据库查询和缓存重建,其他线程阻塞等待。• 示例:用户首次访问某新闻详情页时,缓存失效,后续大量用户同时请求导致数据库过载。3. 更新时使用双删策略(先删缓存再更新数据库,最后再删缓存)避免脏数据。• 场景:当缓存失效后,多个线程同时触发数据库查询和缓存重建操作。
2025-11-17 09:15:38
277
原创 Redis 雪崩的成因及应对策略
成因解决方案缓存集中失效分散过期时间、热点数据永不过期Redis 实例故障高可用集群、熔断限流资源不足/配置不当垂直扩容、优化淘汰策略外部攻击/误操作布隆过滤器、请求合法性校验最佳实践预热机制:大促前手动加载热点数据至缓存。监控告警:实时监控 Redis 内存、QPS 及数据库负载,设置阈值告警。通过上述措施,可显著降低 Redis 雪崩风险,保障系统在高并发场景下的稳定性。
2025-11-17 09:09:41
439
原创 Kafka 创建多个主题的指南
通过上述方法,可灵活创建满足不同业务需求的 Kafka 主题。建议生产环境中结合监控工具(如 Prometheus + Grafana)持续观察主题性能指标。在 Kafka 中创建多个主题时,需根据业务需求灵活配置分区数、副本数、存储策略等参数。每个 Broker 的副本数 ≤ Broker 总数。消费者数量 ≤ 分区数,建议 3-10 的倍数。副本数 ≥ 2 保障高可用,但需平衡存储成本。:ISR 中最小同步副本数(高可用性配置)注意:仅支持增加分区数,无法减少。604800000 (7天)
2025-11-17 08:45:37
446
原创 Zookeeper 原理详解
Zookeeper 通过选举机制Zab 协议 和监听器 实现分布式系统的高可用与一致性。其核心设计围绕顺序性原子性 和实时性,适用于配置管理、服务协调等场景。理解其内部原理(如 zxid、事务广播、Watcher 触发)是高效使用 Zookeeper 的关键。
2025-11-17 08:30:04
490
原创 request.getParameter无法在HandlerInterceptor中获取参数
直接读取输入流会导致后续Controller无法再次读取,需通过包装类缓存输入流。对于POST请求,若参数通过请求体(如JSON或表单数据)传递,直接调用。可能无法获取(尤其是JSON格式):若参数在请求体的表单中(包装请求,缓存输入流数据。
2025-11-14 09:13:07
181
原创 Kafka 菜鸟教程:从入门到实践
通过本教程,你可以快速搭建一个 Kafka 环境,发送和接收消息,并与 Spring Boot 应用整合,为后续开发实时流处理应用打下基础。:从 Topic 订阅并处理消息的应用程序(同一 Consumer Group 内的消费者共享消息,不同 Group 则广播)。:Kafka 集群中的节点,负责存储和转发消息(单机部署时仅需 1 个 Broker)。:消息的“类别”,所有消息按主题分类存储(如“用户订单”“日志事件”)。:Zookeeper 未启动、端口被占用(如 9092、2181);
2025-11-13 15:58:27
667
原创 Kafka 报错 No readable meta.properties files found解决方案
变量值:JDK安装路径(如C:\Program Files\Java\jdk1.8.0_291)。解压Kafka安装包到目标目录(如D:\kafka_2.12-3.5.1)。变量值:Kafka安装路径(如D:\kafka_2.12-3.5.1)。在Path变量中添加%KAFKA_HOME%\bin\windows。右键“此电脑”→“属性”→“高级系统设置”→“环境变量”。在Path变量中添加%JAVA_HOME%\bin。设置Kafka_HOME变量。变量名:KAFKA_HOME。设置Java环境变量。
2025-11-13 14:30:14
444
原创 Java工厂模式原理详解
没有工厂模式的问题:// 客户端直接创建具体对象 - 紧耦合// 直接依赖具体实现类// 如果要换车型,需要修改代码// 或者// 还是需要修改代码工厂模式的优势:解耦:客户端不关心对象的创建细节可扩展:新增产品类型时不需要修改客户端代码统一管理:集中管理对象的创建逻辑符合开闭原则:对扩展开放,对修改关闭提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。特性简单工厂模式工厂方法模式抽象工厂模式创建对象方式。
2025-11-12 11:04:54
323
原创 Java程序运行原理详解
Java程序的运行原理可以概括为:编译期.java→javac→.class(平台无关字节码)加载期:类加载器加载字节码到JVM,进行验证、准备、解析运行期:解释执行:逐条解释字节码指令JIT编译:热点代码编译为本地机器码内存管理:自动内存分配和垃圾回收线程管理:栈内存分配和线程调度优化机制:方法内联、逃逸分析、锁消除等编译优化分代垃圾回收策略即时编译和自适应优化。
2025-11-12 10:56:40
482
原创 Java单例模式的用处详解
严格控制实例数量:确保全局唯一实例全局访问点:方便其他类访问节省资源:避免重复创建重量级对象状态一致性:保证全局状态统一单例模式在以下场景中特别有用:需要严格控制资源访问的场景需要全局状态管理的场景重量级对象需要复用的场景需要保持状态一致性的场景但也要注意不要滥用单例模式,特别是在需要测试、需要灵活扩展的场景中,应该考虑使用依赖注入等其他设计模式。选择枚举或静态内部类实现方式,可以更好地保证单例的安全性和简洁性。
2025-11-12 10:02:15
450
原创 HttpServletRequest中的 Attribute(属性)生命周期和作用域是 Java Web 开发中的重要概念
HttpServletRequest Attribute 的生命周期仅限于单个 HTTP 请求范围内。具体来说:开始:当请求到达服务器时创建结束:当响应返回给客户端后销毁作用域:仅在当前请求处理过程中有效特性说明生命周期单个 HTTP 请求期间开始时间请求到达服务器时结束时间响应返回客户端后作用域当前请求和转发(forward)的请求共享范围。
2025-11-11 17:27:44
443
原创 java world转pdf简易教程二
需要j所有jar包,笔者这里是将jar包下载后进行了jar包导入。mvn工程的自己需要根据jar包名自己去配置pom文件,笔者后续有空再补充。主类ProfessionalPdfWithAdobeFonts在这里完成pdf编写。需要编写字体加载工具类AdobeFontManager,中文的话需要中文字体。需要编写word文档读取的每行内容的实体类对象。AdobeFontFileLoader类。读取word文档工具类。
2025-11-10 10:17:27
267
原创 在Java中判断Word文档中是否包含表格并读取表格内容,可以使用Apache POI库教程
笔者这里整理的jar包包含pdf读写的jar包,jar包如图1所示。读取world文件代码如下。
2025-11-04 08:38:07
279
原创 javax.mail.internet.MimeMessage发送邮件开发教程
【代码】javax.mail.internet.MimeMessage发送邮件开发教程。
2025-10-24 08:53:47
105
原创 maven 项目 scratches and consoles 加载不出来
检查下pom.xml artifactId要和项目名称一致,不一致的话无法加载scratches and consoles。
2025-10-22 16:46:09
78
原创 pom连网下载jar包失败
org.springframework.cloud为本地jar包仓库spring-cloud-starter-circuitbreaker-reactor-resilience4j对应的父文件夹,spring-cloud-starter-circuitbreaker-reactor-resilience4j为存放spring-cloud-starter-circuitbreaker-reactor-resilience4j.jar的文件夹,5.0.0-M1为版本号。上图为本地jar包目录存放结构结构。
2025-10-20 11:01:12
318
原创 Spring Cloud 整合教程
Spring Cloud 是一个用于构建分布式系统的工具集,基于 Spring Boot 提供了一系列微服务解决方案。以下是一个完整的 Spring Cloud 整合教程,涵盖核心组件和配置步骤。添加依赖 在 中添加 Eureka Server 依赖: 启用 Eureka Server 在主类上添加 注解: 配置 Eureka Server 在 中配置: 添加依赖 在 中添加 Eureka Client 依赖: 启用 Eureka Client 在主类上添加 注解
2025-10-18 12:12:46
426
原创 Eureka 客户端状态为 DOWN 的解决方案
通过以上步骤,大多数状态为 DOWN 的问题可解决。重点检查配置、网络和健康端点。如果问题持续,提供更多日志细节以便进一步分析。确保所有设置后重启服务,并在 Eureka 仪表盘上监控状态变化(预期状态应为UP。
2025-10-18 12:09:37
473
原创 javax.el.PropertyNotFoundException: Cannot resolve identifier ‘approved‘
activiti中流程节点报错javax.el.PropertyNotFoundException: Cannot resolve identifier 'approved'任务完成时approved参数必须要传。则必须将表达式的变量加到以下标签。如果配置了条件表达式。
2025-10-16 17:30:44
177
原创 No qualifying bean of type ‘org.activiti.engine.TaskService‘ available: expected at least 1
显式指定要注入的 Bean 名称/限定符,优先级高。若同类型有多个候选,再结合名称或使用其他策略。指定的名称/限定符为准进行精确匹配(优先级高于。在字段/方法/参数上需与。先按类型在容器中查找候选 Bean。可单独用于字段、构造器、方法、参数。若仍未唯一,再尝试按名称或报错。 标记的 Bean,优先注入;配合时,按名称/限定符精确匹配。不匹配时通常导致注入失败。负责“按名称/限定符精确指定”(配合自动装配使用)负责“按类型找候选”,多候选 Bean 时。、构造器/方法/字段。
2025-10-14 11:07:16
329
原创 spring boot 整合 activiti 教程
1、pom.xml2、application.yml3、对于习惯使用XML配置的项目,可通过文件定义流程引擎配置。步骤1:创建配置文件在目录下创建,内容如下步骤2:通过配置文件获取引擎在代码中加载配置文件,获取流程引擎:步骤3:验证表创建启动应用后,检查数据库中的前缀表是否存在Activiti支持四种数据库表更新策略,通过参数控制:常见问题排查•表未生成:检查数据库连接配置是否正确(如URL、用户名、密码)、依赖是否冲突(如Activiti版本与数据
2025-10-11 14:52:03
360
原创 Maven 进行项目构建settings.xml 配置教程
在使用 Maven 进行项目构建时,有时由于网络原因,直接访问 repo.maven.apache.org 可能会遇到连接速度慢或者无法连接的问题。为了提高构建效率,你可以配置使用 Apache Maven 的镜像仓库。配置好镜像后,当你运行 Maven 构建命令(如 mvn clean install)时,Maven 将自动使用你指定的镜像来下载依赖。找到合适的镜像后,你可以在 Maven 的配置文件中设置该镜像。这个命令会显示当前的 Maven 设置,包括你配置的镜像。2. 配置 Maven 镜像。
2025-10-11 11:12:09
403
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅