- 博客(19)
- 收藏
- 关注
原创 Java中HashSet如何检查重复
HashSet是基于哈希表实现的无序的、不重复的集合类。它在添加元素时会自动检查是否存在重复元素,通过hashCode()和equals()方法来确定元素的相等性。
2024-01-15 03:30:00 1154
原创 Java中hashCode()与equals()的相关规定
API文件有对对象的状态制定出必须遵循的规则。hashCode()和equals()是object中定义的两个方法,它们都与对象的相等性有关。通常情况下我们需要同时使用这两个方法来判断两个对象是否相等,只有两个对象的equals()方法返回true,并且它们的hashCode返回值相等,那么可以认为这两个对象相等。
2024-01-14 22:51:36 650 1
原创 IDEA创建导入Maven工程时出错Connection refused to host
IDEA创建导入Maven工程时出错Connection refused to host。问题:创建新Maven工程时加载不了,导入之前的Maven项目没有任何提示直接失败,无法显示右侧的Maven导航菜单。创建时具体报错:java.util.concurrent.ExecutionException:java.rmi.ConnectException:Connectionrefusedtohost:127.0.0.1;
2024-01-02 22:43:35 1190 1
原创 Java中的串流链
Java中的串流链(Stream Chain)是指将多个输入/输出流串联在一起形成的流链,使得数据可以在这些流之间传递。通过串流链可以实现复杂的IO操作,并且可以轻松地扩展和组合不同类型的数据源和目标以达到最大的适应性。
2023-12-28 00:00:00 542 1
原创 Java语法糖-双括号初始化
Java语法糖-双括号初始化。该语法糖用于简化创建集合类对象并添加元素的操作,可用于所有集合类对象。原理是通过使用双括号初始化来创建一个匿名内部类,并在该匿名内部类的实例初始化块中添加元素或执行其他操作。
2023-12-27 00:00:00 645 1
原创 Java中的==和equals
在Java中,“==”操作符和equals()方法都用于比较两个数据之间的相等性。"=="操作符:对于基本数据类型比较两个值是否相等。对于引用类型比较两个对象的地址是否相等,即比较两个引用是否指向同一个对象。equals()方法:默认情况下比较两个对象的地址是否相等。重写Object的equals()方法可实现自定义比较逻辑。
2023-12-26 00:14:04 832 1
原创 Java中的浅拷贝和深拷贝
在Java中,拷贝对象的方式可以分为浅拷贝和深拷贝两种。浅拷贝是指创建一个新对象,然后将原始对象的非静态字段值复制到新对象中,基本类型复制其值,引用类型则复制其引用(内存地址)。新旧对象仍然共享相同的引用对象,浅拷贝只复制对象本身,不会复制对象包含的引用对象。深拷贝是指创建一个新对象,并复制原始对象及其包含的所有引用对象,深拷贝会复制整个对象引用链,使得新旧对象完全独立,互不影响。
2023-12-23 14:32:49 554 1
原创 Java异常体系结构
Java异常体系结构分为三种类型的异常:Error:无法被恢复的严重问题,通常与JVM或底层系统相关,程序员无法进行捕获和处理,而是需要依靠JVM或其它系统工具来解决。可检查异常:Exception及其除RuntimeException外子类,编译器能够检查出来的异常,编译期就必须要进行捕获和处理。运行时异常:RuntimeException及其子类,程序运行时期可能产生的异常,通常是由程序逻辑错误导致的,可以选择捕获和处理,如果未对这些异常进行处理,将由 JVM 默认处理。
2023-12-22 20:32:20 443
原创 CAP理论
CAP分别表示一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP理论是分布式系统中非常重要的理论之一,在一个分布式系统中最多只能同时满足两个条件。分布式系统必须满足分区容错性,因为节点之间难免出现网络异常,不能因为局部网络异常导致整个系统不可用。当网络出现分区后,系统只能选择满足一致性或可用性:CP:系统保持一致性,可能会拒绝一些请求以保证数据一致性。AP:系统保持可用性,可能会返回旧值或部分数据。
2023-12-20 02:18:41 704 1
原创 BASE理论
BASE理论。BASE是指Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)。BASE理论是对分布式系统的另一种理论性指导,它是对传统的ACID事务特性的一种补充。基本可用:当系统无法满足去全部可用时保证核心服务可用即可。软状态:是指可以存在中间状态。最终一致性:舍弃强一致性,满足最终一致性。
2023-12-20 02:10:20 345 1
原创 RocketMQ消息丢失问题
RocketMQ消息丢失问题。同步消息要同步刷盘才完成一次消息发送,一般不会消息丢失,但会增加一定的延迟。异步消息异步刷盘,先将消息存于缓冲区,达到一定大小才进行刷盘,存在消息丢失风险。实际开发中一般使用异步消息,防止消息丢失通常自己对消息进行持久化:日志记录在文件或记录数据库等。生产者发送消息后将消息记录在MySQL并添加状态,消费者处理完消息后更新MySQL中消息的状态,最后通过定时任务将设定时长内未消费的消息进行补发避免消息丢失,同时防止重复消费。
2023-12-19 01:34:31 825 1
原创 用户态和内核态
用户态和内核态是操作系统中的两种运行模式。用户态是指应用程序所在的运行环境,应用程序只能访问自己的内存空间和一些受限资源,无法直接访问硬件和操作系统等底层资源。内核态是指操作系统的运行环境,操作系统拥有最高的权限,可以访问所有硬件和系统资源。当应用程序需要访问受限资源或执行特权指令时,需要通过系统调用从用户态切换到内核态以完成相应操作。用户态和内核态的切换是一种重要的机制,它保证了操作系统内核和用户程序之间的隔离和安全性。通过将特权操作限制在内核态,可以防止用户程序对系统造成破坏或滥用权限。
2023-12-19 01:12:52 476 1
原创 SpringBoot3集成RocketMQ
SpringBoot3集成RocketMQ。编辑配置文件,NameServer服务地址等。导入配置类,在SpringBoot3及其后续版本中,不会默认导入RocketMQ的配置类,可通过在启动类使用@Import导入或创建其配置类。生产者,通过RocketMQTemplate其API发送消息。消费者,添加@Component和@RocketMQMessageListener注解,注解中指定消费者的具体配置,实现RocketMQListener接口。
2023-12-14 22:22:33 2302 2
原创 RocketMQ死信消息解决方案
RocketMQ死信消息解决方案。当消息消费重试达到阈值后,将不再投递到消费者,而是存于名为"%DLQ%消费者组名"主题中为死信消息。死信消息解决方案:A、通过业务控制避免死信消息,当重试次数大于自定义时,将消息记录到特定位置或通知人工处理并完成消费,该方案使用较多。B、消费死信主题消息,将消息记录到特定位置或通知人工处理并完成消费,但对于过多的死信主题则需要很多的消费者,该方案使用较少。
2023-12-11 01:15:13 726 1
原创 RocketMQ重复消费问题
RocketMQ重复消费问题。问题产生原因:生产者重复发送消息。例如一次消息发送还未完成,但消息已存于Brocker时Brocker宕机,过后生产者会重试发送消息从而导致消息重复。消费者扩容进行重平衡后消息还未消费完成可能会导致消息重复消费。解决方案:首先生产者给消息携带唯一标记(自定义key等业务控制,消息的msgId一定是全局唯一标识符,但实际使用中可能会出现相同消息有两个不同的msgId)。然后通过消费者控制消息的幂等性,可通过MySQL自定义去重表或Redis实现。
2023-12-09 01:49:10 864
原创 MySQL实现乐观锁
乐观锁是一种并发控制的策略,其思想是在并发操作之间,假设数据不会被其他并发操作修改,因此不需要加锁,尽管去执行,通过版本号等机制来控制并发。通过MySQL实现乐观锁,在表中增加一个version字段,更新时判断是否等于某个版本号,更新成功则获取锁。乐观锁可以提供较高的并发性能,因为它避免了严格的加锁和阻塞操作,允许多个操作同时执行。
2023-12-05 17:31:55 586 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人