- 博客(19)
- 收藏
- 关注
转载 Redis 缓存穿透、击穿、雪崩
Redis 缓存穿透、击穿、雪崩作者:IT可乐出处:http://www.cnblogs.com/ysocean/1、缓存穿透一、概念缓存穿透:缓存和数据库中都没有的数据,可用户还是源源不断的发起请求,导致每次请求都会到数据库,从而压垮数据库。如下图红色的流程:比如客户查询一个根本不存在的东西,首先从Redis中查不到,然后会去数据库中查询,数据库中也查询不到,那么就不会将数据放入到缓存中,后面如果还有类似源源不断的请求,最后都会压到数据库来处理,从而给数据库造成巨大的压力。二、解决办法
2021-02-23 23:46:07 174
转载 Redis----RDB、AFO持久化
Redis----RDB、AFO持久化作者:IT可乐出处:http://www.cnblogs.com/ysocean/RDBRDB是Redis用来进行持久化的一种方式,是把当前内存中的数据集快照写入磁盘,也就是 Snapshot 快照(数据库中所有键值对数据)。恢复时是将快照文件直接读到内存里。触发方式自动触发**① save:**这里是用来配置触发 Redis的 RDB 持久化条件,也就是什么时候将内存中的数据保存到硬盘。比如“save m n”。表示m秒内数据集存在n次修改时,自动触发b
2021-02-20 19:46:50 273
原创 Redis五大数据类型和底层数据结构
Redis的五大数据类型String数据类型 string 是Redis的最基本的数据类型,可以理解为与 Memcached 一模一样的类型,一个key 对应一个 value。string 类型是二进制安全的,意思是 Redis 的 string 可以包含任何数据,比如图片或者序列化的对象,一个 redis 中字符串 value 最多可以是 512M。①、相关命令介绍string 数据类型在 Redis 中的相关命令:表格图片引用:http://www.cnblogs.com/xrq730
2021-02-19 21:27:51 453
转载 设计模式----单例模式
设计模式----单例模式什么是单例模式面试官问什么是单例模式时,千万不要答非所问,给出单例模式有两种类型之类的回答,要围绕单例模式的定义去展开。单例模式是指在内存中只会创建且仅创建一次对象的设计模式。在程序中多次使用同一个对象且作用相同时,为了防止频繁地创建对象使得内存飙升,单例模式可以让程序仅在内存中创建一个对象,让所有需要调用的地方都共享这一单例对象。单例模式的类型单例模式有两种类型:懒汉式:在真正需要使用对象时才去创建该单例类对象饿汉式:在类加载时已经创建好该单例对象,等待被程序使用
2021-02-18 21:59:56 180
原创 反射
反射Java反射机制是在程序的运行过程中,对于任何一个类,都能够知道它的所有属性和方法;对于任意一个对象,都能够知道调用它的任意属性和方法,这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。Java反射机制提供的功能在运行时判断任意一个对象所属的类在运行是构造任意一个类的对象在运行是判断任意一个类所有的成员变量和方法在运行是调用任意一个对象的方法实现一个反射类定义一个人类public class Person { public int age; p
2021-02-18 21:58:53 164
原创 CopyOnWriteArrayList
CopyOnWriteArrayList一、CopyOnWriteArrayList实现原理 如果有多调用者同时请求相同资源,他们会共同获取相同的指针指向相同的资源,直到某个调用者试图修改资源的内容是,系统才会真正复制一份专用副本给该调用者,而其他调用者所见到的最初的资源仍然保持不变。 优点是如果调用者没有修改该资源,就不会有副本被建立,因此多个调用这只是读取操作时可以共享同一份资源。CopyOnWriteArrayList是相对于ArrayList是线程安全容器,底层通过复制数组的方式来
2021-02-13 00:23:40 424 2
原创 集合Set
集合----Set一、HashSet实现Set接口不保证迭代顺序允许元素为null底层实际上是一个HashMap实例非同步初始容量非常影响迭代性能Map是一个映射,有key和value,使用HashSet放入元素时,实际是将元素作为map的key放入容器中,而value值是以Object,所有的value都是它。二、TreeSet实现NavigableSet接口可以实现排序功能底层实际上是一个TreeMap实例非同步三、LinkedHashSet迭代是有序的允许为n
2021-02-13 00:22:54 62
原创 集合TreeMap
集合----TreeMapTreeMap实现了NavigableMap接口,NavigableMap接口继承这SortedMap接口,所以TreeMap是有序的。TreeMap底层是红黑树。是非同步的。使用Comparator或者Comparable来比较key是否相等与排序问题。TreeMap的域private final Comparator<? super K> comparator;//Comparator维护了一个变量,如果该变量为Null,则使用自然顺序排序
2021-02-09 23:34:25 130
原创 集合LinkedHashMap
集合----LinkedHashMap LinkedHashMap提供了Map应有的所有算法,允许为null。 与HashMap一样,初始容量和加载因子对LinkedHashMap影响很大,但是它便利时初始容量是不受影响的。 LinkedHashMap是非同步的。 access-ordered结构性的修改是会影响遍历的顺序的。在insertion-ordered这种条件下,修改已有的key的value,不是结构性修改。但在access-ordered这种条件下,使用get方法就已经是
2021-02-09 23:33:33 260
原创 集合HashMap
集合----HashMapHashMap的基本属性//初始容量static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 /** * The maximum capacity, used if a higher value is implicitly specified * by either of the constructors with arguments. * MUST be a
2021-02-08 23:10:27 55
原创 Map集合
Map集合什么是Map集合特点 将键映射到值的对象,一个映射不能包含重复的键,每个键最多只能映射到一个值。与Collection集合的区别Map集合存储元素是成堆出现的,Map的键是唯一的,值是可以重复的。Collection集合存储元素是单独出现的,Collection的儿子Set是唯一的,List是可重复的。Map集合的数据结构针对键有效,跟值无关,Collection集合的数据结构针对元素有效。Map的简单常用功能添加功能put(K key,V value):添加元素,如果
2021-02-08 23:08:15 111
原创 Collectin集合
Collectin集合一、为什么需要Collection Java是一门面向对象的语言,就免不了处理对象,为了方便操作多个对象,就需要把这多个对象存储起来,想要存储多个对象,很容易想到一个容器,常用的容器有StringBuffered、数组,虽然有对象数组,但是数组的长度是不可变的,所以Java就为我们提供了集合Collection。二、数组和集合的区别1、长度的区别:数组的长度固定集合的长度可变2、元素的数据类型数组可以存储基本数据类型,也可以存储引用数据类型集合只能存储引用数据
2021-02-07 13:17:20 195
原创 集合LinkedList
集合----LinkedList一、LinkedList的属性 LinkeList底层是双向链表。transient int size = 0; /** * Pointer to first node. * Invariant: (first == null && last == null) || * (first.prev == null && first.item != null) */
2021-02-07 13:13:49 83
原创 集合ArrayList
集合----ArrayList一、ArrayList的属性 private static final long serialVersionUID = 8683452581122892189L; /** * Default initial capacity. */ private static final int DEFAULT_CAPACITY = 10;//初始话容量为10 /** * Shared empty array instance u
2021-02-07 13:09:32 93
原创 JAVA基础
JAVA基础一、Java语法1、==和equals的区别==:基础数据类型比较值,引用数据类型比较内存地址。(概括说就是比较两个对象的地址是不是相等)。equals():比较两个对象是否相等,不能用于比较基本数据类型,在Object类中默认比较的就是两个对象的地址是否相等。2.hashCode()和equals()的区别和联系 在Java中任何一个对象都具备equals()和hashCode()方法,因为他们都是在Object类中定义的。 equals()方法用来判断两个对象是否“相同”,
2021-02-04 22:17:56 78 1
原创 2020-12-02
Map容器 Map是以键和值的形式保存元素,Map也叫做映射表,通过键映射值,从容器中拿值和在容器中放值都通过键来操作,这个键就是值的唯一标识。 Map容器没有角标。Map中的方法1、size() : int 计算Map中有多少个键值对。2、isEmpty(Object) : boolean 判断Map是否为空。3、containsKey(Object) : boolean 判断Map所有的内容中包不包含这个Object型键的键值对。4、containsValue(Object) :
2020-12-02 21:14:11 182
原创 2020-12-02
ConcurrentHashMap```java```javaprivate static final int MAXIMUM_CAPACITY = 1 << 30;private static final int DEFAULT_CAPACITY = 16; static final int TREEIFY_THRESHOLD = 8;static final int UNTREEIFY_THRESHOLD = 6;static final int MIN_TREEIFY_
2020-12-02 21:11:47 85
原创 ReentrantLock重入锁
ReentrantLock重入锁lock() 和 unlock()的使用public class Main{ public static void main(String[] args){ ReentrantLock lock = new ReentrantLock(); Thread t1 = new Thread(new Runnable() { @Override public void run() {
2020-11-30 09:32:49 103
原创 容器
容器容器的基本操作分成定位,求长,替换容器中包含一些常用的方法,但是容器本身不包含角标的概念。容器的子接口,有List,Set,这些子接口有部分包含角标概念,我们通过源码的阅读发现List是Collection的子接口,包含角标概念。JAVA对于常用的List是会给出具体的实现方案的。JAVA给出了常用List的实现类型,如果我们需要使用List,那么直接调用List的实现类就可以。Iterator迭代器在用迭代器循环遍历的同时,不能向容器中添加元素hasNext()next()Colle
2020-11-13 09:07:19 66
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人