自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ArrayList 和 LinkedList区别

内存使用方式不同:由于 ArrayList 是基于动态数组实现的,它的内存空间是预先分配好的,因此随着元素的增加,可能会导致内存空间的浪费;而 LinkedList 是基于双向链表实现的,它的内存空间是动态分配的,因此插入或删除元素时只需要改变节点的指针,不会浪费额外的内存空间。增加/删除元素的效率不同:由于 ArrayList 内部是基于数组实现的,当需要在列表中插入或删除元素时,需要进行数据的移动操作,因此效率较低;综上所述,当需要进行大量随机访问元素或遍历列表时,使用 ArrayList 更为合适;

2023-05-08 16:37:55 348

原创 volatile 和 synchronized

当一个变量被声明为 `volatile` 后,任何对该变量的修改都会立即刷新到主内存中,并且任何对该变量的读取操作都会从主内存中获取最新的值。1. 保证可见性:当一个变量被声明为 `volatile` 后,任何对该变量的修改都会立即刷新到主内存中,并且任何对该变量的读取操作都会从主内存中获取最新的值。综上所述,`volatile` 和 `synchronized` 都可以用于解决缓存一致性问题,但是它们的作用和实现机制有所不同,需要根据具体的应用场景选择使用。

2023-05-08 11:10:42 132 1

原创 Mybatis中的$和#

在SQL语句执行时,Mybatis会将$占位符替换为对应的参数值,并将SQL语句发送到数据库执行。使用$占位符可以在某些情况下提高SQL语句的性能,因为在预编译时不需要处理参数占位符。#用于预编译,表示参数占位符,例如:#{username}。在SQL语句执行时,Mybatis会将占位符替换为对应的参数值,并将SQL语句发送到数据库执行。使用#占位符可以有效地防止SQL注入攻击,因为Mybatis会将参数值转义后再替换占位符。使用哪种占位符取决于具体的需求,如果需要防止SQL注入攻击,则应该使用#占位符;

2023-05-08 10:46:44 2753 1

原创 rocketMq被多实例重复消费问题

要防止 RocketMQ 被多实例重复消费,您可以使用 RocketMQ 提供的消息消费者集群特性,来确保每条消息只被一个消费者实例消费一次。在 RocketMQ 中,一个消费者集群由多个消费者实例组成,每个消费者实例在启动时会指定一个唯一的消费者组名(Consumer Group Name),消费者组名相同的消费者实例会共同消费订阅的消息主题(Topic)。3. 当有新的消息到达时,RocketMQ 会将消息均衡地分配到消费者集群中的所有消费者实例中,确保每条消息只被一个消费者实例消费一次。

2023-05-08 10:29:20 3316 1

原创 Java中实现线程的几种方式

2. 实现Runnable接口:创建一个类实现Runnable接口并重写它的run()方法。然后创建一个Thread实例,将该Runnable对象作为参数传递给Thread构造函数,调用start()方法启动线程。1. 继承Thread类:创建一个类,继承Thread类并重写它的run()方法。然后创建一个实例对象,调用start()方法启动线程。这些都是实现线程的常见方式,根据具体的场景和需求选择不同的方式。// 线程执行的代码。// 线程执行的代码。// 线程执行的代码。// 线程执行的代码。

2023-05-08 10:07:30 644 1

空空如也

空空如也

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

TA关注的人

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