面试中被问到“Java为什么有这么多‘O’,比如PO、DTO、VO、BO”,我之前的回答不够系统,复盘时发现自己对这些“O”的理解和串联不够清晰。本文以一个基于Spring Boot + MyBatis的用户查询接口为例,解析各“O”的定位、必要性及对象转换优化方案。 一、场景:用户查询接口 需求:前端通过GET /u […]
面试中被问到“Java为什么有这么多‘O’,比如PO、DTO、VO、BO”,我之前的回答不够系统,复盘时发现自己对这些“O”的理解和串联不够清晰。本文以一个基于Spring Boot + MyBatis的用户查询接口为例,解析各“O”的定位、必要性及对象转换优化方案。 一、场景:用户查询接口 需求:前端通过GET /u […]
当你在面试中流畅地背出线程池的七大参数时,面试官微微一笑,抛出一个灵魂拷问:"那你说说线程池是怎么实现核心线程保活的?非核心线程超时销毁时怎么保证不误杀正在执行任务的线程?" 此时你突然意识到,机械记忆参数的年代早已过去,现在面试官更关注参数背后的设计思想和源码层面的实现逻辑。本文将带你直击线程池最 […]
相信各位 Javaer 在面试中或多或少肯定被问到过线程池相关问题吧,线程池是一个相对比较复杂的体系,基于此可以问出各种各样、五花八门的问题。 若你很熟悉线程池,如果可以,完全可以滔滔不绝跟面试官扯一个小时线程池,一般面试也就一个小时左右,那么这样留给面试官问其他问题的时间就很少了,或者其他问题可能问的也就不深入了,那 […]
DynamicTp 是什么 DynamicTp 是一个基于 Java 的动态线程池框架,特性如下: 代码零侵入:我们改变了线程池以往的使用姿势,所有配置均放在配置中心,服务启动时会从配置中心拉取配置生成线程池对象放到 Spring 容器中,使用时直接从 Spring 容器中获取,对业务代码零侵入 轻量简单:使用起来极其 […]
mybatis-plus-join-boot-starter是MyBatis - Plus的一个增强工具包,用于简化开发。 功能特点 简化多表操作:它是MyBatis - Plus的扩展,让开发者能更便捷地进行多表关联查询、子查询等操作,通过简洁的API满足复杂查询需求。例如,在进行多表联合查询时,无需编写大量复杂的S […]
-XX:InitialRAMPercentage 和 -XX:MaxRAMPercentage 是 Java 虚拟机(JVM)的两个参数,用于基于系统可用物理内存的百分比来动态设置堆内存的初始大小和最大大小。 参数解释 -XX:InitialRAMPercentage:此参数用来设定 JVM 堆内存的初始大小,以系统可 […]
在 Java 里,触发垃圾回收(GC)的方式多种多样: 代码层面触发 1. 调用 System.gc() 或 Runtime.getRuntime().gc() 在 Java 代码中,可以调用 System.gc() 或者 Runtime.getRuntime().gc() 方法来建议 JVM 进行垃圾回收。不过要注意 […]
今天排查线上问题的时候,执行jmap -heap 1遇见一个报错: Error: -heap option used Cannot connect to core dump or remote debug server. Use jhsdb jmap instead 这是因为在较新的 JDK 版本中,jmap 工具的一 […]
大厂(转转、携程、京东)都用分代ZGC,卡顿降低20倍,吞吐量提升4倍 案例1: 携程的要全面升级jdk21 的消息: 网上有小道一个消息说携程要全面升级jdk8到jdk21了,jdk8其实是2014年正式发布的,正式发布已经有10年的时间了。 这次升级应该跟spring boot也有关,大家都知道从spring bo […]
技术选型 要实现认证功能,很容易就会想到JWT或者session,但是两者有啥区别?各自的优缺点?应该Pick谁?夺命三连 区别 基于session和基于JWT的方式的主要区别就是用户的状态保存的位置,session是保存在服务端的,而JWT是保存在客户端的 认证流程 基于session的认证流程 用户在浏览器中输入用 […]
在 WordPress 中,让自定义文章类型支持古腾堡编辑器(即块编辑器)其实很简单,下面详细介绍几种不同的实现方式。 方法一:在注册自定义文章类型时启用支持 在注册自定义文章类型的代码里,可以通过设置 show_in_rest 参数为 true 并且保留 'editor' 在 supports 数 […]
后台添加说说模块 首先我们把以下代码,添加到主题根目录中的functions.php文件中。下面两步代码安装完成后,在后台页面,建立微语页面,在设置菜单,保存首页导航栏即可。 function create_shuoshuo_post_type() { $labels = array( 'name' […]
在 Maven 项目里,可以借助不同的方式来依赖本地的 JAR 包。下面介绍几种常见的方法: 方法一:使用 system 范围 在 pom.xml 文件中把依赖的范围设置成 system,同时指定本地 JAR 包的路径。示例如下: <dependencies> <dependency> < […]
Consul 是 HashiCorp 公司推出的一款用于实现分布式系统的服务发现与配置的工具。下面介绍在不同操作系统下安装和使用 Consul 的步骤。 安装 Consul 1. macOS 系统 在 macOS 上可以使用 Homebrew 进行安装,操作如下: brew install consul 若未安装 Ho […]
AbstractRoutingDataSource 是 Spring 框架中的一个抽象类,它位于 org.springframework.jdbc.datasource.lookup 包下,主要用于实现动态数据源的切换。以下将从其作用、原理、使用步骤和示例代码等方面进行详细介绍。 介绍 作用 在一些复杂的业务场景中,可 […]
醉后不知天在水,满船清梦压星河。