- 博客(106)
- 收藏
- 关注
原创 JVM-垃圾回收器
垃圾回收算法是垃圾回收的方法论,垃圾收集器是垃圾回收算法的具体实现Java虚拟机规范中对垃圾收集器应该如何实现并没有任何规定,因此不同厂商、不同版本的虚拟机所提供的垃圾收集器都有可能有很大差别目前为止,还没有完美的收集器出现,Java的应用场景很多,没有万能的收集器能解决所有应用场景,只是针对具体应用选择最合适的收集器,进行分代收集。1.Serial(年轻代) + Serial Old(老年代)2.Parallel Scavenge(年轻代) + Parallel Old(老年代)
2026-01-08 14:58:05
535
原创 JVM-垃圾回收算法
垃圾回收的基本思想是考察每一个对象的可触及性,即从根节点开始是否可以访问到这个对象,如果可以,则说明当前对象正在被使用,如果从所有的根节点都无法访问到某个对象,说明对象已经不再使用了,一般来说,此对象需要被回收。
2026-01-06 14:17:36
611
原创 SpringBoot项目部署
4.2.1打开/usr/share/nginx/html,将dist文件夹的内容逐个复制到其中。编写代理文件/etc/nginx/conf.d/ruoyi-vue.conf。查看日志,表明启动成功之后,访问公网IP地址进行效果查看。查看初始密码并登录mysql。4.2.2写入反向代理文件。
2026-01-03 14:24:26
409
原创 JVM逃逸分析与标量替换
如果逃逸分析判定一个聚合量对象没有逃逸,JVM 会将这个对象 “拆解” 成它的各个标量字段,直接在栈上分配这些标量,而不是在堆上创建整个对象 —— 这个过程就是标量替换。
2025-12-31 10:18:50
741
原创 JVM经典面试题
CMS 是以牺牲吞吐量为代价来获得最短回收停顿时间的垃圾回收器。对于要求服务器响应速度的应用上,这种垃圾回收器非常适合。在启动 JVM 的参数加上“- XX:+UseConcMarkSweepGC”来指定使用 CMS 垃圾回收器。CMS 使用的是标记-清除的算法实现的, 所以在GC的时候回产生大量的内存碎 片,当剩余内存不能满足程序运行要求时,系统将会出现 Concurrent Mode Failure,临时 CMS 会采用 Serial Old 回收器进行垃圾清除,此时的性能将会被降低。在介绍。
2025-12-30 00:01:59
689
1
原创 Java面试题-JVM
JVM 本质是一台 “虚拟的计算机”,核心作用是运行 Java 字节码(.class 文件),屏蔽不同操作系统的底层差异,实现 “一次编写,到处运行”。负责将磁盘上的.class字节码文件加载到 JVM 的运行时数据区中,是 JVM 执行代码的 “前置准备环节”。.classClassstatic{}:遵循 “双亲委派模型”,保证类加载的安全性(避免核心类被篡改)。这是 JVM 最核心的内存区域,所有运行时的数据都存储在这里,分为和两类。undefined。
2025-12-29 23:14:59
737
原创 Map集合的比较
1.: HashMap 是非线程安全的,HashTable 是线程安全的;HashTable 内部的方法基本都经过 synchronized 修饰。(如果你要保证线程安全的话就使用 ConcurrentHashMap 吧!2.: 因为线程安全的问题,HashMap 要比 HashTable 效率高一点。另外,HashTable 基本被 淘汰,不要在代码中使用它;3.: HashMap 中,null 可以作为键,这样的键只有一个,可以有一 个或多个键所对应的值为 null。
2025-12-28 22:13:47
656
原创 Collections和Arrays工具类整理
2.1、工具类的设计目标是提供静态方法,无需创建实例;2.2、源码层面:构造方法被声明为 且抛出异常,防止通过反射实例化;2.3、符合 Java 工具类的设计规范(如 类同理)
2025-12-27 17:57:21
191
原创 HashMap整理
HashMap是Java.util包下的一个实现了Map接口的哈希表实现类,用于存储键值对(Key-Value)映射关系。它的核心特点是通过哈希函数将键(Key)映射到对应的存储位置,从而实现O(1)级别的平均查找和插入效率(最坏情况下为O(n),后续版本通过优化已大幅改善)。存储无序性:不保证键值对的插入顺序和遍历顺序一致;HashMap的键具有唯一性,但是值无唯一性限制允许一个null键和多个null值:但键只能有一个null(因为键唯一),值可以有多个null;非线程安全。
2025-12-27 17:12:25
929
原创 禁用TransationManager
TransactionManager 是 Java 中的一种接口,它定义了事务的基本管理操作,包括事务的开始、提交、回滚等。它提供了直接控制事务的能力,让开发者能够精确控制事务的生命周期。虽然 TransactionManager 能够在一些简单场景下实现事务控制,但它并不具备高级事务功能,因此在复杂的应用中,直接使用 TransactionManager 往往会导致很多问题。
2025-12-27 13:02:50
852
原创 Java面试题1-Java基础
封装是将数据(属性)和行为(方法)包装在一个类中,并通过对数据的访问权限进行控制,隐藏对象的内部实现细节。继承是面向对象的一种机制,允许一个类(子类)基于另一个类(父类)来构建,获得父类的属性和方法。多态是指同一操作作用于不同的对象,可以有不同的执行结果。主要有两种形式:编译时多态(重载)和运行时多态(重写+向上转型)。01.定义abstract是面向对象编程中的关键字,用于声明抽象类和抽象方法抽象类:用abstract修饰的类,不能被实例化抽象方法:用abstract修饰的方法,只有声明没有实现。
2025-12-26 16:29:00
939
原创 128陷阱,==与equals区别
128陷阱,本质是Java中Integer包装类的缓存机制导致的“==比较异常”现象:当使用自动装箱(将int基本类型转为Integer包装类)创建Integer对象时,若数值在-128~127范围内,Java会直接复用缓存池中的已有对象;若超出该范围,则会创建新的Integer对象。由于==运算符对于引用类型比较的是“对象内存地址”而非“数值”,就会出现:同数值的Integer对象,在-128~127范围内用==比较为true,超出范围则为false的“陷阱”。
2025-12-25 11:04:58
608
原创 从lastIndexOf和split看病毒文件防御
特性split性能更高较低(需要创建数组)内存使用更少更多处理空文件更好(返回"")可能返回"hiddenfile"代码可读性更直观稍复杂推荐使用lastIndexOf,因为它更高效且对于特殊文件名处理更一致。
2025-12-22 11:03:42
270
原创 MySQL不同版本对于max_allowed_packet 参数的差异
MySQL 的 max_allowed_packet 参数用于控制服务器和客户端之间单个数据包的最大大小(包括查询、结果集、BLOB 数据等)。配置语法和位置没有本质区别(均为 [mysqld] 下设置数值,支持 K/M/G 单位,如 64M 或 67108864)。修改后需重启 MySQL 服务生效。
2025-12-12 16:18:56
325
原创 SpringMVC和SSM的执行流程
SSM 整合的实现流程可从配置与容器协同的角度系统梳理:首先,通过 web.xml 配置作为入口,注册 SpringMVC 的核心 DispatcherServlet,指定其加载 springmvc.xml 配置文件以初始化 MVC 容器,同时配置 ContextLoaderListener 加载 applicationContext.xml 来初始化 Spring 根容器,实现 Web 层与业务层容器的分离与协同,此外还配置字符编码过滤器解决请求编码问题;
2025-11-29 22:26:15
666
原创 XML文件解读
等核心 Bean 配置标签的 XML 词汇表,作用是让 XML 解析器校验这些核心 Bean 配置标签的语法合法性,并识别其对应的 Spring 核心 Bean 配置语义。用来约束此配置文件中所有的配置内容都是以beans为基础,spring的核心命名空间。这个命名空间是约束spring的核心,声明后才能在 XML 配置中使用以。这个命名空间是约束声明式事务的,声明后才能在 XML 配置中使用以。这是xml编写的一个约束,这是xml文件编写所遵循的一个规范。这是对于3命名空间的具体指向,与上面相对应。
2025-11-29 21:26:23
287
原创 乐观锁和悲观锁
悲观锁 “宁可信其有”,通过加锁保证强一致性,适合高冲突、核心业务;乐观锁 “宁可信其无”,通过校验保证最终一致性,适合低冲突、非核心业务。悲观锁通过加锁,确保小李和小王串行操作,数据绝对一致;乐观锁通过版本号校验,允许并行读取,冲突时重试,兼顾性能和一致性。在实际开发和面试中,不仅要掌握两种锁的实现方式,更要理解其设计思想和适用场景 —— 这才是解决并发问题的核心。希望本文能帮助你彻底吃透乐观锁与悲观锁,从容应对面试和工作中的各类并发场景!
2025-11-29 12:40:22
1017
原创 JDK1.8新增语法
摘要:JDK1.8是Java的重大更新,核心特性包括:1)Lambda表达式简化函数式编程;2)函数式接口与内置接口(Consumer/Supplier等);3)方法引用语法糖;4)接口默认/静态方法;5)Stream API实现流式集合处理;6)Optional类解决空指针;7)新日期时间API(LocalDateTime等);8)重复注解、类型注解等辅助特性。这些改进显著提升了代码简洁性、可读性和功能性,使Java支持现代编程范式。
2025-11-29 10:20:58
906
原创 @Mapper、@Repository、@MapperScan
框架不同@Mapper是 MyBatis 提供的注解,用于映射 SQL 操作。是 Spring 提供的注解,表示数据访问组件,并用于 Spring 的 Bean 管理。功能不同@Mapper使 MyBatis 自动生成接口实现,主要用于简化数据访问操作。用于标记 DAO 类,并为其提供异常转换功能。使用场景@Mapper主要用于 MyBatis 的接口层。主要用于 Spring Data JPA 或 Hibernate 等框架的 DAO 类层,或者自定义的持久化层组件。可以独立使用:你可以选择使用。
2025-11-23 19:29:17
1095
原创 MyBatis-Plus整理
MyBatis-Plus是一款强大的MyBatis增强工具,提供无侵入式CRUD操作支持。主要特性包括:自动生成基础CRUD方法、Lambda表达式查询、多种主键生成策略、ActiveRecord模式、代码生成器、分页插件等。通过@TableName、@TableId、@TableField等注解实现灵活的表字段映射,支持逻辑删除功能。内置IService接口封装常见业务逻辑,提供批量操作、条件更新等便捷方法。其雪花算法主键策略可解决分布式系统ID生成问题,支持水平分表场景。MyBatis-Plus简化了数
2025-11-23 17:17:02
939
原创 MyBatis整理
1.把数据库的信息定义property标签中的方式--配置环境们-->--配置具体的环境-->--配置事务管理类型-->-- 配置是否需要使用连接池,POOLED使用,UNPOOLED不使用 -->-- 加载映射的配置文件 --><mappers></mappers>2、在项目中定义jdbc.properties属性文件,存储数据库相关的信息,统一管理1.jdbc.properties属性文件2.SqlMapConfig.xml的配置文件--配置环境们-->--配置具体的环境-->
2025-11-22 21:03:20
764
原创 SpringBootTest和SpringBootApplication
SpringBootTest 与 @SpringBootApplication 关系总结用于单元测试,自动加载 Spring 上下文,适用于集成测试。是 Spring Boot 启动类的注解,包含了应用配置、自动配置和组件扫描功能,通常用于应用启动入口类。包结构的重要性Spring Boot 会从启动类所在的包开始自动扫描组件和配置。如果测试类不在合适的包路径下,可能会导致启动失败或组件注入问题。保持启动类和测试类在相同或相邻的包结构中,可以避免这类问题。
2025-11-20 23:18:09
950
原创 文件上传的整理
在Spring之前,Java中没有一个统一的API来处理文件上传,因此文件上传方式是比较分散的。随着Spring框架的流行,Spring对文件上传的封装和支持大大简化了这项操作。Spring框架的出现大大简化了文件上传的处理。Spring Boot对文件上传的支持比Spring MVC更加简洁。除了上述的常见方式,Spring还支持一些其他的文件上传技术。数据的解析和文件上传过程,使得上传文件的代码更加简洁和高效。接口,另一种是使用Spring Boot自带的文件上传支持。,并自动配置了文件上传的环境。
2025-11-20 19:39:03
326
原创 网络与后端技术总结:从域名到 K8s、Nginx
域名是互联网中用于标识计算机或计算机组的易记名称,是 IP 地址的 “别名”。由于 IP 地址是一串难以记忆的数字(如),域名通过域名系统(DNS)实现 “域名→IP 地址” 的解析,方便用户访问网络资源。例如就是一个域名,用户通过它可访问百度服务器。
2025-11-19 23:18:02
952
1
原创 docker pull 和 docker-compose
作用: 是用来从 Docker Hub 或其他 Docker 镜像仓库拉取镜像的命令。使用场景:你只需要单独拉取某个镜像,并且手动运行容器时,使用 就可以了。之后,你可以用 启动一个容器。适用情况:适合单个容器的简单使用。比如你只想启动一个 Nginx 容器,直接拉取镜像并启动即可。作用: 是一个用于定义和运行多个 Docker 容器的工具。它通过一个 文件来描述多个容器的配置、网络、数据卷等,简化了管理多个容器的过程使用场景:当你需要管理多个互相配合的容器(例如,前端、后端、数据库等)时, 会
2025-11-19 17:51:42
740
原创 nginx的部署和使用
Nginx 是流量网关,专注于网络流量的处理,如负载均衡、反向代理等,它负责接收客户端请求并将流量路由到后端服务。API 网关是一种业务网关,处理特定于 API 的功能,如路由、负载均衡、身份验证等。它通常位于客户端和微服务之间,统一管理 API 请求。业务网关更加泛指用于微服务架构中的中介层,除了 API 网关功能外,还包括其他微服务之间的通信与管理功能,如流量控制、服务治理等。
2025-11-19 17:48:40
571
原创 docker整理
docker exec -it +容器ID /bin/bash。docker start/stop/restart +容器ID。docker ps(查看正在运行的容器)docker logs -f +容器ID。docker rmi 容器ID,删除镜像。10、查看每个docker容器的资源占用。docker ps -a(所有的容器)docker rm 容器ID,删除容器。1、搜索docker镜像。2、下载docker镜像。
2025-11-18 23:34:27
232
原创 拦截器和过滤器的区别
过滤器是Servlet 规范的核心组件,属于 “容器级” 的拦截技术,作用于 Servlet 容器(如 Tomcat)的请求处理链路中,不依赖 Spring 框架即可使用。1. 核心作用对请求 / 响应进行 “包装” 处理:如统一字符编码、设置响应头(跨域配置)请求拦截与过滤:如禁止非法 IP 访问、拦截敏感请求路径日志记录:如记录请求 URL、参数、响应时间等全局日志2. 实现方式方式 1:实现javax.servlet.Filter接口。
2025-11-18 13:54:46
827
原创 Thymeleaf 访问机制
Thymeleaf 模板的访问必须依赖「请求映射」配置的(简洁,适合纯页面跳转场景);编写类的请求方法(灵活,适合需要业务逻辑处理的场景)。
2025-11-18 11:07:35
328
原创 Serializable接口
为什么必须显式定义 serialVersionUID?serialVersionUID是 “序列化版本号”,用来唯一标识一个类的结构。如果一致:正常反序列化;如果不一致:直接抛出InvalidClassException(类版本不兼容)。如果不显式定义,JVM 会自动生成一个serialVersionUID,但生成规则依赖类的结构(字段、方法、父类等)。
2025-11-18 10:25:50
882
原创 Map的遍历方式
Map 集合与 List、Set 等单列集合不同,它存储的是键值对映射关系,因此遍历的核心是。该方式支持三种遍历实现:增强 for 循环、迭代器、Lambda 表达式。该方式同样支持三种遍历实现,且效率通常高于键找值法(无需多次调用。结合流的操作(如过滤、映射等)实现更灵活的遍历。Java 8 之后,Map 接口直接提供了。
2025-11-16 22:34:20
604
1
原创 @Autowired和@Resource的区别
Autowired 和 @Resource 的核心区别:两者均为Spring项目中依赖注入的核心注解,核心差异集中在【依赖来源、注入逻辑、功能特性及兼容性】四大维度:@Autowired是Spring框架提供的注解,耦合Spring生态,注入时优先按照类型匹配,若同一类型存在多个bean,需搭配@Qualifier注解指定bean名称,且支持required属性控制依赖是否必须存在(默认为true);@Resource是JDK原生注解,无框架耦合,兼容性更强,注入时优先按照名称。
2025-11-14 17:09:14
705
原创 SpringMVC整理
SpringMVC的概述是一种基于Java实现的MVC设计模型的请求驱动类型的轻量级WEB框架。Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts2等。
2025-11-11 18:07:58
907
1
原创 JDK动态代理和CGLib动态代理
对比维度JDK 动态代理CGLib 动态代理实现原理基于接口 + 反射基于继承 + 字节码生成依赖条件目标类必须实现接口目标类不能是 final,方法非 final/private代理范围仅接口声明的方法所有非 final、非 private 方法技术依赖Java 原生,无额外依赖依赖 CGLib(第三方库)性能(创建 / 调用)创建快,调用略慢(反射)创建慢,调用略快(直接重写)
2025-11-11 11:26:34
457
原创 MySQL中的事务
1.概述:了解什么是事务 * 事务是数据库提供的一个特性。* 事务:组成各个数据的执行的单元,要么都成功,要么都不成功。2.转账的例子* 转账的功能,冠希给美美转1000元钱。* 使用事务 * 先给冠希扣除掉1000元* 再给美美加上1000元* 事务结束了。
2025-11-06 20:58:55
1017
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅