背景:最近系统内缓存CPU使用率一直报警,超过设置的70%报警阀值,针对此场景,需要对应解决缓存是否有大key使用问题,扫描缓存集群的大key,针对每个key做优化处理。以下是扫描出来的大key,此处只放置了有效关键信息。图1大key介绍:想要解决大key,首先我们得知道什么定义为大key。什么是大KEY:大key 并不是指 key 的值很大,而是 key …
arrays.copyof
最近客户的生产环境经常出现问题,搞的头大,测试在开发环境、模拟环境又复现不了,没法进行实时跟踪,最后只能从hprof文件进行分析,这篇文章就是记录内存溢出问题分析过程的记录。一、遇到这类问题,首先简单看下CPU、内存使用情况,大概了解下,然后把服务启动,在保证服务先运行的情况下,再把hprof从生产环境Copy本地,hprof文件如下所示,最好不要在生产环境 …
以下是 `CopyOnWriteArrayList` 的源码注释翻译:public class CopyOnWriteArrayList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable {private static final long ser …
简介斐波那契查找算法又称黄金分割查找算法。黄金分割点是把一条线段分成两个部分,使其中一部分与全长之比等于另一部分与这部分之比。取其前三位数字的近似值是0.618。了解斐波那契查找算法就必须了解斐波那契数列,例如这样一组数列{1,1,2,3,5,8,13,21,34,55}。从第三个值开始,其每项的值等于前两项之和,两个相邻数字的比例无限接近与0.618原理斐 …
今天给大家带来JVM体验之内存溢出问题的定位方法。废话不多说直接开始:一、Java堆溢出测试代码如下:import java.util.*;public class A {public static void main(String[] args) {List<String> strList = new ArrayList<>();w …
一、概览CollectionMap二、容器中的设计模式迭代器模式适配器模式三、源码分析ArrayListVectorCopyOnWriteArrayListLinkedListHashMapConcurrentHashMapLinkedHashMapWeakHashMap参考资料一、概览容器主要包括 Collection 和 Map 两种,Collectio …
1. ArrayArray(数组)是基于索引(index)的数据结构,它使用索引在数组中搜索和读取数据是很快的。Array获取数据的时间复杂度是O(1),但是要删除数据却是开销很大,因为这需要重排数组中的所有数据, (因为删除数据以后, 需要把后面所有的数据前移)缺点: 数组初始化必须指定初始化的长度, 否则报错例如:int[] a = new int[4] …
从本篇勾勾开始学习数据结构,主要是了解一些数据结构的概念,掌握常用的数据结构,以便在开发中能根据不同的业务场景选择合适的数据结构。一道算法题我们首先看Leetcode第26题:26. 删除排序数组中的重复项给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 …
前言算法是程序的灵魂,一个优秀的程序是可以在海量的数据中,仍保持高效计算。目前各大厂的面试要求也越来越高,算法肯定会要去。如果你不想去大厂,只想去小公司,或许并不需要要求算法。但是你永远只能当一个代码工人,也就是跟搬砖的没区别。可能一两年后你就会被淘汰。 如果不想永远当个代码工人,就在业余时间学学数据结构和算法。今天就来分享一个朋友阿里四面挂了的排序算法题9 …
概念CopyOnWrite 只是看字面意思就能看出来,就是在写入时复制,说得轻巧,写入时复制,具体是怎么实现的呢?先来说说思想,具体怎么实现等下分析CopyOnWrite 的思想就是:当向一个容器中添加元素的时候,不是直接在当前这个容器里面添加的,而是复制出来一个新的容器,在新的容器里面添加元素,添加完毕之后再将原容器的引用指向新的容器,这样就实现了写入时复 …