
JAVA
文章平均质量分 79
慧一居士
即心是佛,无心是道
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java如何实现打印list对象占用多大内存
快速查看内存:使用JOL生产环境监控:使用 JVM 工具(如 VisualVM、JProfiler)精确测量:结合和 JOL📌重要:Java 中对象内存占用是近似值,不同 JVM 实现和垃圾回收器会导致结果差异。原创 2025-07-17 23:11:18 · 446 阅读 · 0 评论 -
Mybits-plus 表关联查询,嵌套查询,子查询示例演示
查询类型实现方式关联查询使用JOIN+ XML/注解手动映射结果嵌套查询通过或关联其他 Mapper 方法子查询利用的等方法直接嵌入子查询 SQL复杂子查询在 XML 中手写完整的 SQL 语句(推荐复杂场景)注意MyBatis-Plus 的 Wrapper 仅支持简单子查询,复杂关联查询建议使用 XML/注解。嵌套查询可能引发 N+1 问题,大数据量时慎用。表名/字段若为 SQL 关键字(如order),需用反引号包裹。原创 2025-07-08 19:12:31 · 677 阅读 · 0 评论 -
Lombok 增强工具介绍及完整使用示例演示
Lombok是一款 Java 开发工具,通过注解(Annotation)自动生成代码,减少模板代码(如gettersettertoStringequalshashCode等),从而提升开发效率。简化代码:通过注解自动生成重复性代码。增强可读性:减少冗长代码,聚焦业务逻辑。兼容现有类:可通过为现有类(包括第三方库)添加扩展方法。Lombok 通过注解极大简化了 Java 开发中的模板代码,其中提供了灵活的扩展能力,适用于增强第三方类或系统库。原创 2025-07-08 18:05:15 · 850 阅读 · 0 评论 -
Mybatis-plus 中 LambdaQueryWrapper和QueryWrapper 区别对比,及完整示例演示
在现代 Java 开发中具有显著优势,是 Mybatis-Plus 的最佳实践推荐方式。LambdaQueryWrapper 自动识别 null 值,无需手动添加。是两种用于构造 SQL 查询条件的工具类,它们的核心区别在于。Mybatis-Plus 中。如果修改实体类字段名(如将。通过以上示例可以看出,原创 2025-07-08 17:31:21 · 455 阅读 · 0 评论 -
Mybatis-plus复杂查询条件示例演示
Data。原创 2025-07-08 15:39:40 · 507 阅读 · 0 评论 -
Mybatis-Plus框架中,`BaseMapper`、`IService`和`ServiceImpl`区别对比
维度BaseMapperIService层级DAO层(数据访问)Service层(业务逻辑)Service层(业务逻辑实现)核心功能基础CRUD操作(单表)业务逻辑方法定义(增删改查、分页)业务逻辑实现(调用BaseMapper)方法命名insertupdateByIdsaveremovelist继承IService并实现通用方法自定义扩展需新建Mapper接口需实现接口并定义业务方法可直接扩展,调用BaseMapper方法适用场景直接操作数据库(简单需求)原创 2025-07-08 14:52:51 · 936 阅读 · 0 评论 -
MyBatis-Plus 框架中,`BaseMapper` 和 `ServiceImpl` 是两个核心组件区别对比
是两个核心组件,分别承担数据访问层(DAO)和服务层(Service)的职责。在 MyBatis-Plus 框架中,原创 2025-07-08 14:41:07 · 804 阅读 · 0 评论 -
MyBatis-Plus的完整使用示例,完整使用示例手册
以上内容覆盖了MyBatis-Plus的核心功能和使用场景,更多细节可参考官方文档及示例仓库。更新时会自动检查版本一致性,避免并发冲突。配置或工具类一键生成。原创 2025-07-08 13:54:42 · 1073 阅读 · 0 评论 -
Spring WebFlux 功能介绍,使用场景,完整使用示例
Spring WebFlux 是一个强大的框架,为构建高性能、可扩展、资源高效的异步和非阻塞 Web 应用程序和微服务提供了现代解决方案。它特别适合处理高并发、低延迟和流式数据场景。在决定采用 WebFlux 时,务必权衡其优势(性能、可伸缩性)与挑战(学习曲线、调试、库兼容性),确保它适合你的具体应用需求和团队技能。,旨在充分利用现代多核处理器和异步 I/O 模型(如 Netty、Undertow、Servlet 3.1+ 容器),处理海量并发连接,特别适合低延迟、高吞吐量的应用场景。原创 2025-06-24 17:09:38 · 813 阅读 · 0 评论 -
Reactor框架介绍,和使用示例
Reactor是一个基于JVM的非阻塞响应式编程框架,遵循Reactive Streams规范,专为构建高并发、低延迟的异步应用设计[2][4异步流处理提供Flux(处理0或N个元素)和Mono(处理0或1个元素)两个核心抽象,支持链式操作(如mapfilterflatMap等)实现数据的异步处理[5][4背压支持通过Reactive Streams协议实现流量控制,避免生产者过快导致内存溢出[2][4非阻塞I/O基于Netty实现高效的网络通信,支持TCP、HTTP等协议的非阻塞IO操作[4][6。原创 2025-06-24 14:34:57 · 542 阅读 · 0 评论 -
Flux功能介绍,完整使用示例,与Mono对比
核心定义Flux是Reactor库中的核心接口,表示一个异步的、包含零到多个元素的序列(类似流式数据处理)[3][4][7它可以处理无限长度的数据流,适用于需要持续处理多个事件的场景[4][8关键特性异步非阻塞:基于响应式编程模型,以事件驱动方式处理数据流,避免阻塞主线程[3][4背压支持:通过背压机制协调生产者与消费者速率,防止数据过载[3][8丰富操作符:提供mapfilterflatMapmerge等操作符,支持数据转换、合并、分组等复杂逻辑[3][7多源组合。原创 2025-06-23 19:25:31 · 1026 阅读 · 0 评论 -
Mono 功能介绍与使用示例
Mono是 Spring Reactor 框架中的核心组件,属于响应式编程(Reactive Programming)模型,专注于处理包含0 或 1 个元素的异步序列[1][2][5异步非阻塞:通过 Reactive Streams 规范实现,适用于高并发场景[1][5冷信号:仅在订阅(subscribe)时执行,支持延迟计算[1][4资源高效:相比传统多线程模型,Mono 通过事件驱动减少资源消耗[1简化异步代码:通过链式调用替代回调地狱[1][3高效资源利用。原创 2025-06-23 18:56:37 · 751 阅读 · 0 评论 -
WebClient 功能介绍,使用场景,完整使用示例演示
WebClient 是 Spring 5+ 中引入的响应式 HTTP 客户端,用于替代已弃用的,专为异步非阻塞编程设计,基于 Reactor 框架实现。异步与非阻塞通过Mono和Flux处理请求与响应,避免线程阻塞,适合高并发场景[1][2][3全HTTP方法支持支持GETPOSTPUTDELETE等所有 HTTP 方法,并可灵活配置路径参数、查询参数和请求体[1][4响应式流处理直接返回或Flux,可链式调用处理状态码、响应头和响应体,支持流式数据(如 SSE)处理[1][4灵活配置。原创 2025-06-23 18:29:46 · 680 阅读 · 0 评论 -
RestClient 功能介绍、完整使用示例演示, 和RestTemplate、WebClient 对比
RestClient是Spring Framework 6.1版本引入的同步HTTP客户端,旨在替代老旧的,提供更现代、流畅的API设计。流畅API(Fluent API)支持链式调用,通过方法链接实现自然语言风格的代码,可读性更强[1][4.build();同步阻塞式通信与类似,RestClient是同步客户端,适用于简单或低并发场景[1][4高度可定制支持通过builder配置请求工厂、默认Header、拦截器、消息转换器等[1][7][9异常处理默认对4xx/5xx状态码抛出异常,但可通过。原创 2025-06-23 16:44:35 · 1045 阅读 · 0 评论 -
springboot服务如何获取pod当前ip方案及示例
Pod 的 IP 通常绑定在主网络接口上,可通过遍历 Java 网络接口获取非回环地址。Kubernetes 提供 Downward API,可将 Pod 的元数据(如。)注入为容器的环境变量。Spring Boot 服务可直接读取该环境变量。原创 2025-06-12 10:26:45 · 963 阅读 · 0 评论 -
Java中拦截器和过滤器的区别总结、使用场景介绍及完整示例
区别项拦截器(Interceptor)过滤器(Filter)技术定位Spring框架组件,基于AOP实现Servlet规范的一部分,与Servlet容器相关作用范围仅对Spring MVC映射的请求生效对所有请求生效,包括静态资源调用时机请求进入控制器前后、视图渲染前后请求到达Servlet前后实现原理基于Java反射机制基于函数回调机制依赖框架依赖Spring框架不依赖特定框架,适用于所有Java Web应用访问能力可访问控制器方法、ModelAndView等主要处理请求和响应对象。原创 2025-05-28 13:34:37 · 810 阅读 · 0 评论 -
EasyExcel集成使用总结与完整示例
创建与Excel列对应的实体类,使用注解指定列名。@ExcelProperty("姓名") private String name;@ExcelProperty("年龄") private Integer age;@ExcelProperty("邮箱") private String email;// 省略构造方法、Getter和Setter }@ExcelProperty("姓名") private String name;原创 2025-05-15 17:14:24 · 774 阅读 · 0 评论 -
Java高频常用工具包汇总
这些工具包可以大大提高开发效率,根据项目需求选择合适的工具组合使用。原创 2025-04-27 19:47:01 · 497 阅读 · 0 评论 -
限流熔断神器 sentinel 使用总结
在基于 SpringCloud 构建的微服务体系中,服务间的调用链路会随着系统的演进变得越来越长,这无疑会增加了整个系统的不可靠因素。在并发流量比较高的情况下,由于网络调用之间存在一定的超时时间,链路中的某个服务出现宕机都会大大增加整个调用链路的响应时间,而瞬间的流量洪峰则会导致这条链路上所有服务的可用线程资源被打满,从而造成整体服务的不可用,这也就是我们常说的 “雪崩效应”。而在微服务系统设计的过程中,为了应对这样的糟糕情况,最常用的手段就是进行 ”流量控制“ 以及对网络服务的调用实现“熔断降级”。原创 2025-04-25 17:25:26 · 1030 阅读 · 0 评论 -
Spring Boot 集成 Redis 实战总结
依赖引入</</</默认使用 Lettuce 作为连接池(优于 Jedis,支持异步和 Reactive 编程)。配置文件spring:redis:port: 6379lettuce:pool:max-active: 16 # 最大连接数max-idle: 8 # 最大空闲连接min-idle: 2 # 最小空闲连接序列化配置默认的@Bean// 使用 Jackson2JsonRedisSerializer。原创 2025-04-21 16:25:10 · 825 阅读 · 0 评论 -
Spring Boot集成MongoDB及实战技巧与性能调优
通过以上步骤与技巧,可高效集成MongoDB并优化应用性能。实际项目中需结合监控工具(如MongoDB Atlas、Spring Boot Actuator)持续分析调整。原创 2025-04-20 10:46:45 · 967 阅读 · 0 评论 -
多个业务UPDATE同一条记录出现覆盖如何解决
通过结合业务场景选择合适的方案,可有效解决并发更新导致的数据覆盖问题。原创 2025-04-17 09:04:22 · 469 阅读 · 0 评论 -
Nacos集群搭建和mysql持久化配置
Nacos集群搭建和mysql持久化配置原创 2025-04-14 11:39:21 · 1476 阅读 · 0 评论 -
HuTool工具类常用方法汇总
HuTool工具类常用方法汇总原创 2025-04-09 20:22:37 · 961 阅读 · 0 评论 -
SpringBoot获取当前运行环境三种方式
SpringBoot获取当前运行环境三种方式原创 2025-04-02 23:23:15 · 903 阅读 · 0 评论 -
生产 Heap Dump 的几种方式
Heap Dump的格式有很多种,而且不同的格式包含的信息也可能不一样。同时,当你在执行一个转储操作时,往往会触发一次GC,所以你转储得到的文件里包含的信息通常是有效的内容(包含比较少,或没有垃圾对象了)。注意:JVM 生成 Heap Dump 的时候,虚拟机是暂停一切服务的。Heap Dump 是 Java进程所使用的内存情况在某一时间的一次快照。分析 Heap Dump 的工具都可以获取 Heap Dump 文件。包含了转储时刻的线程调用栈信息和栈帧中的局部变量信息。Heap Dump 包含的信息。原创 2024-12-10 17:39:38 · 553 阅读 · 0 评论 -
JAVA虚拟机 中 -D, -X, -XX ,-server 参数使用总结
D、-X和-XX是JVM启动参数中的三个常用选项,它们具有不同的用途和功能。在实际应用中,应根据具体的需求和场景选择合适的参数选项,以达到最佳的性能和效果。接下来,我们将深入探讨JVM启动参数中的-D、-X和-XX三个常用选项,以便更好地理解它们在JVM启动和运行中的作用。-X参数用于设置JVM的特定参数,这些参数不是Java应用程序的一部分,而是用于配置JVM的行为。-XX参数是JVM的调试和高级配置选项,用于更深入地控制JVM的行为和性能。类似的,还有“-Xmx”参数用于设置堆内存的最大大小。原创 2024-12-10 17:16:16 · 774 阅读 · 0 评论 -
【字节码】JavaAgent的全链路监控篇二,通过字节码增加监控
关于java字节码的处理,目前有很多工具,如bcel,asm。javassist是jboss的一个子项目,其主要的优点,在于简单,而且快速。直接使用java编码的形式,而不需要了解虚拟机指令,就能动态改变类的结构,或者动态生成类。Javassist是一个开源的分析、编辑和创建Java字节码的类库。通过上一章节的介绍,我们已经知道通过配置-javaagent:文件.jar后,在java程序启动时候会执行premain方法。接下来我们使用javassist字节码增强的方式,来监控方法程序的执行耗时。原创 2024-11-28 11:55:43 · 343 阅读 · 0 评论 -
Jprofiler 内存分析使用
【代码】Jprofiler 内存分析使用。原创 2024-11-26 14:48:04 · 717 阅读 · 0 评论 -
ClassFinal 使用实战
于是转向使用classfinal解决问题,classfinal可以完美加密源码以及lib依赖,所有的方法在保留主体的前提下清理内容,返回值都为null。注意:无密码启动模式并不太安全,因为classfinal加密后jar包下生成一个名为org.springframework,config.pass的文件,这个里面装的就是随机生成的32位明文,这个密码进行md5加密后保存密文,下一次无密码启动的时候就去拿明文进行md5校验,因此不建议用无密码启动这种方式不太安全。记得给别人就给加密后的包。原创 2024-12-09 11:21:01 · 856 阅读 · 0 评论