自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(97)
  • 收藏
  • 关注

原创 已经有了redis了,为什么还要用本地缓存

在Java开发中,使用本地缓存和Redis这样的分布式缓存通常是有不同的使用场景和优势的。

2024-07-18 17:49:25 155

原创 在Spring Boot 中使用Kafka

确保在启动应用程序时 Kafka 已经正常运行,并且配置了正确的连接信息和主题名称。可以根据你的需要配置更多的 Kafka 相关属性,如序列化器、反序列化器等。现在,你可以在你的 Spring Boot 应用程序中通过。方法设置了 Kafka 消费者的配置,包括反序列化器。方法设置了 Kafka 生产者的配置,包括序列化器。文件中添加 Kafka 相关的依赖。是你所需的 Spring Kafka 版本。提供的依赖来集成 Kafka。用于监听 Kafka 消息。,并处理接收到的消息。

2024-07-17 11:13:25 303

原创 HttpUtils工具类

工具类已经更加完善,支持超时设置、URL参数处理、请求体格式选择、异常处理和日志记录。你可以根据你的需求进一步扩展和定制它。为了设置超时,我们需要创建一个自定义的。

2024-07-12 11:52:22 337

原创 使用任务表,实现两个数据库表数据迁移

创建任务表结构编写实体类和Mapper接口编写迁移服务类处理数据和计算/转换错误处理与恢复通过以上步骤,您可以使用Spring Boot和MyBatis实现从Oracle到MySQL的数据迁移,并在迁移过程中进行数据计算或转换。任务表的使用可以有效地管理迁移任务的状态,确保数据迁移的可靠性和一致性,同时提供了错误处理和人工恢复的机制。

2024-07-12 11:01:47 327

原创 Spring容器加载Bean和JVM加载类

类的加载是在首次需要访问类的信息或实例化类的对象时发生的过程。ClassLoader负责加载类的字节码,并在内存中创建对应的Class对象,从而使得Java程序能够操作和使用这些类。在Java中,类的加载是按需进行的,也就是说,只有在需要使用某个类时才会进行类的加载过程。这意味着如果某个类在程序执行过程中从未被使用过(包括实例化、访问静态变量或方法、反射等),那么这个类就不会被加载到内存中。具体来说,当执行Java程序时,JVM会按照需要逐步加载类。例如,如果程序中某个方法引用了一个类,那么在该方法被调用之

2024-07-09 13:59:01 1031

原创 常见的设计模式

通过复制现有对象来创建新对象的一种方式,而不是通过实例化类。

2024-07-05 21:25:11 364

原创 如何理解synchronized锁升级

锁在运行时会根据竞争的情况逐步升级锁的状态,从无锁到偏向锁再到轻量级锁,最后才是重量级锁。这种锁升级的过程是为了在保证数据安全的前提下,尽量减少锁带来的性能开销。关键字是实现线程同步的一种方式,它涉及到锁的升级和释放的过程。锁的升级可以分为三个阶段:无锁状态、偏向锁状态和轻量级锁状态。

2024-07-04 15:15:15 312

原创 CompletableFuture和FutureTask

runAsyncthenApplythenAcceptthenRunhandlecompletejoinallOfanyOfrungetcancelisDone这些API提供了灵活的异步编程和任务控制机制,使得在Java中进行并发编程变得更加简便和高效。通过合理使用这些工具,可以大大提高程序的性能和响应能力。

2024-07-04 10:31:16 370

原创 synchronized和volatile

在Java内存模型中,涉及到volatile变量的可见性时,主内存和本地缓存是两个重要的概念。主内存(Main Memory)主内存是所有线程共享的内存区域。所有的volatile变量都存储在主内存中。线程的工作内存(Thread’s Working Memory,或称本地内存)中的变量值必须从主内存中读取。当一个线程修改了一个volatile变量的值,它会立即将修改后的值刷新到主内存中,而不是仅仅更新自己的本地缓存。本地缓存(Thread’s Working Memory)

2024-07-04 10:18:02 650

原创 ThreadLocal、InheritableThreadLocal 和 TransmittableThreadLocal

适用于每个线程需要独立变量副本的场景。:适用于子线程需要继承父线程变量的场景。:适用于需要在线程池等并发环境中传递上下文数据的场景。选择合适的工具取决于具体的使用需求和场景。

2024-07-02 23:22:53 346

原创 Spring中的InitializingBean接口

【代码】Spring中的InitializingBean接口。

2024-06-27 14:08:35 281

原创 设计模式之【适配器模式】

类适配器通过继承来实现适配器功能。

2024-06-27 11:33:59 264

原创 JAVA中的内存泄漏和内存溢出

通常在 JVM 无法分配足够的内存给对象时发生。这可能是因为应用程序需要的内存超过了 JVM 可用的最大内存,也可能是因为存在过多的活动对象导致内存耗尽。

2024-06-25 22:26:45 586

原创 在MySQL中,定义字段为TINYINT(1)、TINYINT(2) 和 INT(2)的区别

显示宽度是 MySQL 用来格式化输出的一个特性,不影响实际的存储空间或数值范围。当结合ZEROFILL属性使用时,显示宽度可以用前导零填充不足的字符数,达到预期的格式输出。没有ZEROFILL时,显示宽度对输出的格式化作用有限,实际显示时可能会忽略。

2024-06-25 10:42:33 907

原创 设计模式之【工厂模式、适配器模式】

工厂模式和适配器模式

2024-06-24 23:31:56 547

原创 优雅的参数校验——Guava库中的Preconditions

类提供了一些静态方法,用于在程序中执行参数的检查和验证。这些方法在编写健壮和可维护的代码时非常有用。方法在代码中提供了一种简洁而一致的方式来进行参数和状态检查,从而有助于编写更加健壮的代码。

2024-06-24 23:28:59 529

原创 对称/非对称加密

加密

2024-06-23 21:46:31 724 1

原创 微服务中的相关概念

Eureka 作为微服务架构中的服务注册和发现中心,提供了动态服务注册、服务发现、健康检查和高可用性等功能,简化了服务间的调用和管理。通过与 Spring Cloud 的集成,Eureka 提供了简单而强大的服务注册和发现机制,极大地提高了分布式系统的弹性和可靠性。Eureka 的自我保护模式和灵活的客户端配置,使其能够适应各种复杂的网络环境和应用场景,是构建稳定可靠的微服务架构的重要工具。Nacos 在微服务架构中充当了服务发现、配置管理和动态 DNS 的重要角色,极大地简化了服务治理和配置管理的工作。

2024-06-18 22:20:20 1527

原创 JVM之【类的生命周期】

在Java中数据类型分为基本数据类型和引用数据类型基本数据类型由虚拟机预先定义,引用数据类型则需要进行类的加载按照]ava虚拟机规范,从class文件到加载到内存中的类,到类卸载出内存为止,它的整个生命周期包括如下7个阶段:其中,验证、准备、解析 3个部分统称为链接(Linking)。

2024-06-06 22:35:15 1292

原创 JVM之【字节码/Class文件/ClassFile 内容解析】

字节码文件/Class文件,是JVM的基石!!!Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的操作码(opcode)以及跟随其后的零至多个代表此操作所需参数的操作数(operand)所构成。虚拟机中许多指令并不包含操作数,只有一个操作码。0 aload_04 aload_0 //只有操作码5 bipush 30 //操作码+操作数10 aload_014 aload_020 return。

2024-06-05 22:24:04 1725 2

原创 JAVA中一段有趣的代码-关于类、多态、变量的执行分析

以下代码的执行结果是什么?为什么?代码分析Father类的定义:在类中是一个实例变量,初始值为10。构造方法中调用了方法,然后将设置为20。Son类的定义:类继承类,并重新定义了实例变量,初始值为30。构造方法中调用了方法,然后将设置为40。test类的main方法:创建了一个类的实例,并将其引用赋给类型的变量。打印的值。代码执行过程创建Son对象:打印f.x:

2024-06-04 21:33:29 430

原创 JVM之【垃圾回收中的相关概念】

并发不是真正意义上的“同时进行”,只是CPU把一个时间段划分成几个时间片段(时间区间),然后在这几个时间区间之间来回切换,由于CPU处理的速度非常快,只要时间间隔处理得当,即可让用户感觉是多个应用程序同时在进行。当然,也不是在任何情况下垃圾收集器都会被触发的》比如,我们去分配一个超大对象,类似一个超大数组超过堆的最大值,JVM可以判断出垃圾收集并不能解决这个问题,所以直接抛出OutOfMemoryError。其实决定并行的因素不是CPU的数量,而是CPU的核心数量,比如一个CPU多个核也可以并行。

2024-06-03 21:39:57 922

原创 JVM之【GC-垃圾清除算法】

不同垃圾收集算法和垃圾收集器各有优缺点,应根据具体应用需求和硬件环境选择合适的垃圾收集策略。标记-清除和复制算法比较基础,适用于小型或简单应用;分代收集算法适用于大多数常规应用;G1、Shenandoah更适合大内存、低延迟的高性能应用。

2024-06-03 20:54:36 871

原创 MySQL临时表满了/临时表空间耗尽

在 MySQL 中,当你收到“临时表满了”的警报时,通常意味着 MySQL 在处理查询时创建的临时表空间已经耗尽。这可能会导致查询失败或性能下降。临时表通常用于处理一些需要排序、分组、或者使用临时数据存储的操作。和:当查询包含 ORDER BY 或 GROUP BY 子句时,如果 MySQL 需要对大量数据进行排序或分组,可能会使用临时表。:使用 DISTINCT 关键字进行去重操作时,如果数据量较大,MySQL 也可能创建临时表来存储中间结果。

2024-06-03 19:48:30 394

原创 JVM之【GC-可达性分析算法】

可达性分析算法通过从一组称为"根对象"(GC Roots)的对象开始,遍历对象引用图,确定哪些对象是可达的。那些无法从根对象访问到的对象被视为不可达的,可以被垃圾收集器回收。

2024-06-03 10:27:55 998

原创 JVM之【执行引擎】

程序员编写的就是Java源代码文件。Java源代码文件:由程序员编写,扩展名为.java。字节码文件:由Java编译器生成,包含JVM能够理解和执行的指令,扩展名为.class。HotSpot虚拟机采用解释器与即时编译器并存的架构,结合了快速启动和高效执行的优势。在Java虚拟机运行过程中,解释器和JIT编译器相互协作,动态调整执行策略,以提供最佳的性能和响应时间。这种设计不仅提升了应用程序的启动速度,还通过JIT编译器的动态优化,实现了长时间运行下的高效执行。

2024-06-01 14:36:07 877

原创 如何评价GPT-4o?【该回答来自GPT-4o】

总的来说,GPT-4o代表了人工智能语言模型的一个重要进步,在许多方面都优于其前代版本。无论是在学术研究、商业应用还是日常使用中,GPT-4o都展示出了强大的潜力和广泛的应用价值。GPT-4o是OpenAI最新推出的语言模型,代表了对前代模型的进一步提升和优化。作为一个用户和观察者,GPT-4o展现出了强大的技术能力和广泛的应用前景。

2024-05-30 21:57:46 516

原创 永久代(Permanent Generation)和元空间(Metaspace)

永久代和元空间的主要区别在于内存管理方式和位置。永久代在JVM堆内存中管理类的元数据,而元空间则利用本地内存,带来了更灵活和高效的内存管理,减少了内存溢出和垃圾收集的压力。通过这种改进,元空间提高了Java应用程序的性能和稳定性。

2024-05-29 21:10:05 724

原创 Class类和类元数据

Class类和类元数据的区别

2024-05-29 11:23:54 270

原创 JVM之【运行时数据区2——方法区(元空间)】

方法区(元空间)

2024-05-28 22:11:47 417

原创 JVM之【运行时数据区2——堆】

JVM只运行时数据区2:堆

2024-05-27 23:39:05 1079

原创 JVM之【运行时数据区1】

JVM运行时数据区1

2024-05-26 23:43:25 829

原创 JVM之【类加载机制】

JVM的类加载机制

2024-05-26 21:44:27 548

原创 Kafka之【消费消息】

Kafka之【消费消息】

2024-05-24 23:44:55 305

原创 Kafka之【存储消息】

Kafka之【存储消息】

2024-05-24 23:43:40 398

原创 Kafka之【生产消息】

kafka生产消息相关的所有内容:包括生产者的组成和原理,拦截器,分区器,同步异步、ACK、数据重复、数据乱序、幂等、事务等

2024-05-24 22:23:01 1234

原创 Java缓存池-为什么同值的Integer之间做比较,有时true,有时false

由于 366 超出了 Java Integer 缓存池的范围(-128 到 127),所以。因为 100 在 Java Integer 缓存池的范围内(-128 到 127),所以。对象的值是否相等,应该使用。的值及其对象的创建方式。

2024-05-24 11:28:18 264

原创 AQS原理和底层实现

AQS(AbstractQueuedSynchronizer,抽象队列同步器)是Java并发包(java.util.concurrent)中的一个核心框架,用于实现各种同步器,如ReentrantLock、CountDownLatch、Semaphore等。AQS提供了一种通用的机制,简化了同步器的实现。它的设计思想和原理使得许多不同的同步器可以复用相同的底层代码,从而提高了代码的可靠性和可维护性。

2024-05-24 08:52:55 507

原创 为什么说kafka没办法保证数据不丢?

Kafka设计为高吞吐量和分布式环境中的数据流处理系统,但在某些情况下,它无法完全保证数据不丢失。

2024-05-23 22:23:04 818

原创 Kafka概述

介绍Kafka的起源与历史Kafka在大数据生态系统中的地位和作用基本概念消息队列和流处理的基础Kafka的基本术语:Producer、Consumer、Broker、Topic、PartitionKafka的核心组件及其关系Producer:生成消息的客户端,向Kafka集群中的Topic发送消息。Consumer:消费消息的客户端,从Kafka集群中的Topic中读取消息。Broker:Kafka的服务器节点,负责消息的存储和传递。一个Kafka集群由多个Broker组成。

2024-05-21 23:55:30 856 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除