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