上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 16 下一页
摘要: 关于深拷贝和浅拷贝区别,先给结论: 浅拷贝:浅拷贝会在堆上创建一个新的对象(区别于引用拷贝的一点),不过,如果原对象内部的属性是引用类型的话,浅拷贝会直接复制内部对象的引用地址,也就是说拷贝对象和原对象共用同一个内部对象。 深拷贝:深拷贝会完全复制整个对象,包括这个对象所包含的内部对象。 clone 阅读全文
posted @ 2025-05-16 09:15 程序员Seven 阅读(133) 评论(0) 推荐(0)
摘要: 消息存储 分布式队列因为有高可靠性的要求,所以数据要进行持久化存储。 消息生成者发送消息 MQ收到消息,将消息进行持久化,在存储中新增一条记录 返回ACK给生产者 MQ push 消息给对应的消费者,然后等待消费者返回ACK 如果消息消费者在指定时间内成功返回ack,那么MQ认为消息消费成功,在存储 阅读全文
posted @ 2025-05-15 09:15 程序员Seven 阅读(596) 评论(0) 推荐(1)
摘要: 前言 生产者-消费者模式是一个十分经典的多线程并发协作模式,弄懂生产者-消费者问题能够让我们对并发编程的理解加深。这也是校招常见面试手撕题 所谓的生产者-消费者,实际上包含了两类线程,一种是生产者线程用于生产数据,另一种是消费者线程用于消费数据,为了解耦生产者和消费者的关系,通常会采用共享的数据区域 阅读全文
posted @ 2025-05-14 09:15 程序员Seven 阅读(106) 评论(0) 推荐(0)
摘要: 泛型的代码只存在于编译阶段,在进入JVM之前,与泛型相关的信息会被擦除掉,称之为类型擦除。 无限制类型擦除:当在类的定义时没有进行任何限制,那么在类型擦除后将会被替换成Object,例如<T>、<?> 都会被替换成Object。 有限制类型擦除:当类定义中的参数类型存在上下限(上下界),那么在类型擦 阅读全文
posted @ 2025-05-13 09:15 程序员Seven 阅读(122) 评论(0) 推荐(0)
摘要: 概述 在支付场景中,支付成功后利用RabbitMQ通知交易服务,更新业务订单状态为已支付。但是大家思考一下,如果这里MQ通知失败,支付服务中支付流水显示支付成功,而交易服务中的订单状态却显示未支付,数据出现了不一致。此时前端发送请求查询支付状态时,肯定是查询交易服务状态,会发现业务订单未支付,而用户 阅读全文
posted @ 2025-05-12 09:15 程序员Seven 阅读(1274) 评论(0) 推荐(1)
摘要: RabbitMQ介绍 RabbitMQ是基于Erlang语言开发的开源消息通信中间件,官网地址: Messaging that just works — RabbitMQ 接下来,我们就学习它的基本概念和基础用法。 安装 在安装命令中有两个映射的端口: 15672:RabbitMQ提供的管理控制台的 阅读全文
posted @ 2025-05-09 19:33 程序员Seven 阅读(430) 评论(0) 推荐(1)
摘要: 编写一段代码,使得这段代码必定会产生死锁 使用Thread.sleep 以下是一个经典的 Java 死锁实现,通过两个线程互相持有对方需要的锁来确保必定发生死锁: public class DeadlockDemo { // 创建两个锁对象 private static final Object l 阅读全文
posted @ 2025-05-07 09:15 程序员Seven 阅读(138) 评论(0) 推荐(0)
摘要: 简要回答 这个是针对set和map这类使用hash值的对象来说的 只重写equals方法,不重写hashCode方法: 有这样一个场景有两个Person对象,可是如果没有重写hashCode方法只重写了equals方法,equals方法认为如果两个对象的name相同则认为这两个对象相同。这对于equ 阅读全文
posted @ 2025-05-06 08:15 程序员Seven 阅读(615) 评论(0) 推荐(3)
摘要: 简要回答 缓存穿透(cache penetration)是用户访问的数据既不在缓存当中,也不在数据库中。出于容错的考虑,如果从底层数据库查询不到数据,则不写入缓存。这就导致每次请求都会到底层数据库进行查询,缓存也失去了意义。当高并发或有人利用不存在的Key频繁攻击时,数据库的压力骤增,甚至崩溃,这就 阅读全文
posted @ 2025-04-30 08:15 程序员Seven 阅读(798) 评论(1) 推荐(3)
摘要: 场景简要概述 新加了个字段,然后发版,上线就发现了报错 当时这个问题很简单,其实就是用的是 JDK序列化,当时这个类实现了 Serializable接口,但是没显示定义 serialVersionUID,这样一来序列化时会根据当前类的信息计算得到一个 serialVersionUID 当数据在序列化 阅读全文
posted @ 2025-04-29 08:15 程序员Seven 阅读(1034) 评论(0) 推荐(4)
摘要: 简要回答 因为存在精度丢失的风险 《阿里巴巴 Java 开发手册》中提到:“浮点数之间的等值判断,基本数据类型不能用 == 来比较,包装数据类型不能用 equals 来判断”。“为了避免精度丢失,可以使用 BigDecimal 来进行浮点数的运算”。 浮点数的运算竟然还会有精度丢失的风险吗?确实会! 阅读全文
posted @ 2025-04-28 08:15 程序员Seven 阅读(222) 评论(0) 推荐(1)
摘要: 已知某个文件内包含100亿个电话号码,每个号码为8位数字,如何统计不同号码的个数?内存限制100M 有人说遍历,使用HashSet或者int数组来存储,这里先不谈算法效率的问题,这100亿数据如何在能否在内存中放下也是一个问题。 如果用int类型来存储这100亿个电话号码,那么就需要 100亿 * 阅读全文
posted @ 2025-04-24 08:15 程序员Seven 阅读(1421) 评论(10) 推荐(9)
摘要: 看下面代码 Integer a = 100; Integer b = 100; System.out.println(a == b);//true Integer c = 200; Integer d = 200; System.out.println(c == d);//false 为什么第一个输 阅读全文
posted @ 2025-04-23 08:15 程序员Seven 阅读(174) 评论(0) 推荐(0)
摘要: JDK的SPI机制的缺点 ⽂件中的所有类都会被加载且被实例化。这样也就导致获取某个实现类的方式不够灵活,只能通过 Iterator 形式获取,不能根据某个参数来获取对应的实现类。如果不想用某些实现类,或者某些类实例化很耗时,它也被载入并实例化了,没有办法指定某⼀个类来加载和实例化,这就造成了浪费。 阅读全文
posted @ 2025-04-22 08:15 程序员Seven 阅读(303) 评论(0) 推荐(1)
摘要: 这个问题说白了就是希望通过预加载数据,达到提升系统性能和响应速度的效果。像目前在很多场景中都有使用: 电商平台的商品分类信息、用户基础资料:避免高并发时数据库被重复查询,降低响应延迟。 系统参数配置(如地区编码、权限规则)、国际化资源:减少对配置中心或数据库的依赖,提升配置读取速度。 促销活动的商品 阅读全文
posted @ 2025-04-21 08:15 程序员Seven 阅读(735) 评论(0) 推荐(3)
摘要: 高级特性 序列化 dubbo 内部已经将序列化和反序列化的过程内部封装了,只需要在定义pojo类时实现Serializable接口即可 一般会定义一个公共的pojo模块,让生产者和消费者都依赖该模块。 地址缓存 注册中心挂了,服务是否可以正常访问? 可以,因为dubbo服务消费者在第一次调用时,会将 阅读全文
posted @ 2025-04-17 08:15 程序员Seven 阅读(154) 评论(0) 推荐(0)
摘要: 基础 ZooKeeper的4个节点 持久节点:默认的节点类型,一直存在于ZooKeeper中 持久顺序节点:在创建节点时,ZooKeeper根据节点创建的时间顺序对节点进行编号 临时节点:当客户端与ZooKeeper断开连接后,该进程创建的临时节点就会被删除 临时顺序节点:按时间顺序编号的临时节点 阅读全文
posted @ 2025-04-15 08:15 程序员Seven 阅读(162) 评论(0) 推荐(0)
摘要: 大部分互联网公司都需要处理计数器场景,例如风控系统的请求频控、内容平台的播放量统计、电商系统的库存扣减等。 传统方案一般会直接使用RedisUtil.incr(key),这是最简单的方式,但这种方式在生产环境中会暴露严重问题: // 隐患示例 public long addOne(String ke 阅读全文
posted @ 2025-04-14 08:15 程序员Seven 阅读(1159) 评论(0) 推荐(6)
摘要: 在微服务架构中,服务与服务之间通过远程调用的方式进行通信,一旦某个被调用的服务发生了故障,其依赖服务也会发生故障,此时就会发生故障的蔓延,最终导致灾难性雪崩效应。服务保护就是为了保证服务的稳定性而出生的一套保护方案。本文则着重介绍请求限流算法 雪崩问题 微服务调用链路中的某个服务故障,引起整个链路中 阅读全文
posted @ 2025-04-11 08:15 程序员Seven 阅读(212) 评论(0) 推荐(0)
摘要: 应用场景 批量提取、替换有规律的字符串 在各种高级文本编辑器的使用 在各类办公软件office的使用 各种开发语言中的使用(C#、Java、JS、Perl、PHP等等) 用户输入的合法性校验(IP地址、特殊的订单号要求等) 模板引擎的标签库开发 网络爬虫(抓取机器人)的开发 批量的文本高效处理 推荐 阅读全文
posted @ 2025-04-08 08:15 程序员Seven 阅读(113) 评论(0) 推荐(0)
上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 16 下一页