六大程序设计原则 + 合成复用原则
六大程序设计原则 + 合成复用原则程序设计领域的设计模式的六大设计原则 + 合成复用原则(Composite Reuse Principle...
要从1亿个数据中找出最大的前100个,通常可以使用堆(Heap)数据结构来实现,特别是最小堆(Min Heap)。以下是一种常见的方法:1创建一个最小堆,并将前100个数据插入堆中。2遍历剩余的数据,对于每个数据,如果它比堆顶的元素大,就将堆顶元素弹出,然后将当前数据插入堆中。3继续遍历所有数据,不断地维护堆,确保堆中保留的是最大的100个数据。4当遍历完成后,堆中的元素就是前100个最大的数据。这种方法的时间复杂度是O(N * log(100)),其中N是数据总数,因为在堆中保持了100个元素。这比将所有数据排序的时间复杂度要低得多...
有可能两个不相等的对象有可能具有相同的哈希码。哈希码是由对象的哈希函数生成的一个整数值,用于支持快速查找和比较对象。然而,由于哈希码的范围通常比对象的数量小得多,因此不同的对象可能会产生相同的哈希码。这种情况被称为哈希冲突。哈希算法设计的目标是将不同的输入均匀分布在哈希码空间中,但无法避免完全消除冲突。因此,当发生哈希冲突时,哈希算法会使用特定的策略(例如链表或树结构)来处理这些冲突,以确保不同的对象可以存储在同一个哈希桶中。综上所述,虽然不同的对象可能具有相同的哈希码,但哈希码仅用于初步判断对象是否可能相等,最终的相等性检查还需要通过 equals...
K8s 是什么?K8S 是单词 Kubernetes 的缩写,是...
什么是接口幂等性?首先看看幂等性的概念:幂等性原本是数学上的概念,用在接口上就可以理解为:同一个接口,多次发出同一个请求,必须保证操作只执行一次。调用接口发生异常并且重复尝试时,总是会造成系统所无法承受的损失,所以必须阻止这种现象的发生。比如下面这些情况,如果没有实现接口幂等性会有很严重的后果:支付接口,重复支付会导致多次扣钱 ;订单接口,同一个订单可能会多次创建。
今天,我想谈谈 Spring 提供的@Transactional(readOnly = true)。很多同学都说@Transactional(readOnly = true)提高了性能。那我们不得不思考:●@Transactional(readOnly = true) Spring对它做了什么?真的提高了性能吗?
ArrayList和LinkedList是Java集合框架中List接口的两个常见实现类,它们在底层实现和性能特点上有以下几点区别:1底层数据结构:ArrayList使用数组来存储元素,而LinkedList使用双向链表来存储元素。2随机访问性能:ArrayList支持高效的随机访问(根据索引获取元素),因为它可以通过下标计算元素在数组中的位置。而LinkedList在随机访问方面性能较差,获取元素需要从头或尾部开始遍历链表找到对应位置。3插入和删除性能:ArrayList在尾部添加或删除元素的性能较好,因为它不涉及数组的移动。而在中间插入或删除元素时,Ar...
域名服务器(也称为 DNS 服务器)负责存储域名和 IP 地址的映射关系,当我们需要获取某个域名对应的 IP 地址时,只需要从域名服务器中查询即可。
窗口算法以一个单位为时间段,基于一定数量的请求进行通行,其他的抛弃
滑动窗口算法多个时间段计数,超出抛弃
1. 限流限流是从系统的流量入口考虑,从进入的流量上进行限制,达到保护系统的作用
是指需要限制并发/请求量的场景(如秒杀等),通过限流保护服务免受雪崩之灾。
主流的限流算法有:
1.1 计数器多少次每秒/每分/每...