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