- 博客(18)
- 收藏
- 关注
原创 Hashtable和HashMap的区别
是 Java 中两种常用的哈希表实现,虽然功能类似(都用于存储键值对),但在设计、性能、线程安全等方面有显著区别。
2025-03-15 15:16:55
388
原创 RabbitMQ消息持久化与Lazy模式对比分析
在RabbitMQ 3.12+版本中,Lazy模式默认启用,但若队列未持久化,重启后仍会丢失所有数据。是两种不同的机制,分别针对消息可靠性、存储优化等不同维度设计。在RabbitMQ中,
2025-03-14 20:26:50
817
原创 方法区和堆的区别
堆内存的分配和回收是由垃圾收集器(Garbage Collector, GC)管理的,这也是Java自动内存管理的一个核心功能。:方法区是堆的一个逻辑部分,用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。:堆是Java内存管理中最大的一块区域,它是所有线程共享的内存区域,用于存放Java对象实例和数组。:方法区是所有线程共享的内存区域,它有一个别名叫做Non-Heap(非堆),以与堆内存区分。:方法区的内存回收主要针对常量池的回收和对类的卸载。
2025-02-24 16:50:56
204
原创 什么是方法区
方法区作为JVM的核心组成部分,其设计演进(从永久代到元空间)体现了对内存管理的持续优化。理解其存储内容、内存限制及调优方法,有助于开发高性能、高稳定性的Java应用。
2025-02-24 15:28:12
489
原创 SpringBoot调用阿里通义千问大语言模型API-JAVA新手详细教程
官网地址:https://www.aliyun.com/product/bailian什么是大模型服务平台百炼大模型服务平台百炼是一站式的企业专属大模型生产平台,基于通义基础大模型,提供企业专属大模型开发和应用的整套工具链。●面向对象:企业、开发者及ISV的技术人员。●核心能力:支持开箱即用的应用调用,大模型训练微调和一站式在线灵活部署。●服务形式:通过API服务输出给客户,方便客户进行集成和使用专属大模型能力。●。
2024-11-06 18:58:17
794
原创 类的生命周期详解
类加载器在加载完类之后,Java虚拟机会将字节码中的信息保存到方法区中,方法区中生成一个InstanceKlass对象,保存类的所有信息,里边还包含实现特定功能比如多态的信息。Java虚拟机同时会在堆上生成与方法区中数据类似的java.lang.Class对象,作用是在Java代码中去获取类的信息以及存储静态字段的数据(JDK8及之后)。初始化阶段会执行字节码文件中clinit(class init 类的初始化)方法的字节码指令,包含了静态代码块中的代码,并为静态变量赋值。这个阶段一般不需要程序员参与。
2024-11-03 13:00:33
1062
原创 字节码文件详解
字节码文件中保存了源代码编译之后的内容,以二进制的方式存储,无法直接用记事本打开阅读。通过NotePad++使用十六进制插件查看class文件:无法解读出文件里包含的内容,推荐使用 jclasslib工具查看字节码文件。Github地址: https://github.com/ingokegel/jclasslib。
2024-10-29 22:02:34
990
原创 JSR303校验传输参数
统一校验的需求前端请求后端接口传输参数,是在Controller中校验还是Service中校验?答案是都需要校验,只是分工不同Controller中校验请求参数的合法性,包括:必填项校验、数据格式校验,比如:参数是否符合一定的日期格式等Controller中可以将校验的代码写成通用代码Service中要校验的是业务规则相关的内容,比如:课程已经审核通过,所以提交失败等Service中需要根据业务规则去校验,所以不方便写成通用代码早在JavaEE6。
2024-10-29 16:22:06
341
原创 轻松实现Java项目中参数校验 - spring-boot-starter-validation
统一校验的需求前端请求后端接口传输参数,是在Controller中校验还是Service中校验?答案是都需要校验,只是分工不同Controller中校验请求参数的合法性,包括:必填项校验、数据格式校验,比如:参数是否符合一定的日期格式等Controller中可以将校验的代码写成通用代码Service中要校验的是业务规则相关的内容,比如:课程已经审核通过,所以提交失败等Service中需要根据业务规则去校验,所以不方便写成通用代码早在JavaEE6。
2024-10-29 16:21:41
494
原创 简单认识JVM
JVM是Java虚拟机, 本质上是一个运行在计算机的程序,职责是运行Java的字节码文件.Java源代码执行流分为三个步骤:1、编写Java源代码文件。2、使用Java编译器(javac命令)将源代码编译成Java字节码文件。3、使用Java虚拟机加载并运行Java字节码文件,此时会启动一个新的进程。
2024-10-25 20:39:48
494
1
原创 java.lang.OutOfMemoryError: Java heap space
解决错误需要综合考虑代码优化、JVM参数调整和系统架构。通过上述方法,你可以有效地管理Java应用程序的内存使用,确保其稳定运行。记得在调整参数和优化代码时,进行充分的测试,以确保更改不会引入新的问题。
2024-08-07 16:06:30
2258
原创 MybatisPlus快速入门
官方网站:baomidou.com(简称 MP)是一个的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。使用Mybatis-Plus,如果实现单表操作,不需要编写sql语句,封装方法,使用封装的这些方法方便实现如果复杂查询,或者多表查询,还需要编写sql语句实现。
2024-07-16 21:16:46
780
原创 集合篇面经
但当数据量较大时,ArrayList的扩容策略 (通常是当前容量的1.5倍)可以一次提供很多空间,减少了扩容的次数,从而在尾部插入效率上可能超过LinkedList。在尾部插入大量数据时,ArrayList可能更优,在首部插入数据时,LinkedList更优,而在中间插入数据时,需要根据数据量的大小和插入位置来具体分析。LinkedList:在中间插入元素时,需要遍历链表找到插入位置,然后从两端向中间搜索,index越往中间遍历越久,因此效率相对较低。如果需要在多线程环境下使用,需要考虑额外的同步措施。
2024-07-09 20:25:16
867
原创 XXL-JOB详细使用教程
XXL-JOB是一个轻量级分布式任务调度平台,其核心设计是开发迅速、学习简单、轻量级、易扩展,现已开放源代码并接入多家公司线上产品线,开箱即用官网:https://www.xuxueli.com/xxl-job/XXL-JOB主要由调度中心、执行器、任务调度中心与执行器之间的工作流程如下执行流程。
2024-07-09 20:08:37
4248
原创 Redis基础命令
例如:需要存储用户、商品信息到Redis,有一个用户的id是1,有一个商品的id恰好也是1,如果此时使用id作为key,那么就回冲突,该怎么办?Redis是典型的key-value数据库,key一般是字符串,而value包含很多不同的数据类型。Redis没有类似MySQL中Table的概念,那么我们该如何区分不同类型的Key呢?获取sorted set 中的指定元素的排名:ZREVRANK key memeber。我们可以通过给key添加前缀加以区分,不过这个前缀不是随便加的,有一定的规范。
2024-04-02 17:51:31
1697
1
原创 工厂+策略模式
在软件开发中,工厂模式和策略模式常常结合使用,特别适用于根据不同情况选择不同的处理方式的场景。举例来说,假设您正在开发一个考试系统,系统中有不同类型的题目,如选择题、填空题、判断题等,每种题目类型需要不同的处理方式。/*** 枚举身份的识别*//*** 实际的题目的插入*/
2024-03-29 21:52:59
865
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人