自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

张维鹏的博客

芝兰生于幽谷,不以无人而不芳!

  • 博客(10)
  • 资源 (2)
  • 收藏
  • 关注

原创 Redis的分布式锁详解

1、什么是分布式锁:为了防止分布式系统中的多个进程之间相互干扰,我们需要一种分布式协调技术来对这些进程进行调度。而这个分布式协调技术的核心就是来实现这个分布式锁。2、分布式锁应该具备哪些条件在分布式系统环境下,一个方法在同一时间只能被一个机器的一个线程执行 高可用的获取锁与释放锁 高性能的获取锁与释放锁 具备可重入特性(可理解为重新进入,由多于一个任务并发使用,而不必担心数据错误) 具备锁失效机制,防止死锁 具备非阻塞锁特性,即没有获取到锁将直接返回获取锁失败分布式锁的实.

2021-01-25 00:02:16 96286 20

原创 使用LinkedHashMap实现LRU算法

LRU算法,最近最少使用原则,如果要实现该算法,可以借助LinkedHashMap数据结构,LinkedHashMap继承HashMap,底层使用哈希表和双向链表来保存所有元素,使用LinkedHashMap可以确保元素按照顺序进行存储。默认情况下,LinkedHashMap是按照元素的添加顺序存储,也可以启用按照访问顺序存储,即最近读取的数据放在最前面,最早读取的数据放在最后面,然后它还有一个判断是否删除最老数据的方法,默认是返回false,即不删除数据。下面就基于这两种存储方式,简单展示一下如何

2021-01-31 23:54:02 7132 2

原创 Redis的缓存雪崩、缓存击穿、缓存穿透与缓存预热、缓存降级

一、缓存雪崩:1、什么是缓存雪崩:如果缓在某一个时刻出现大规模的key失效,那么就会导致大量的请求打在了数据库上面,导致数据库压力巨大,如果在高并发的情况下,可能瞬间就会导致数据库宕机。这时候如果运维马上又重启数据库,马上又会有新的流量把数据库打死。这就是缓存雪崩。2、问题分析:造成缓存雪崩的关键在于同一时间的大规模的key失效,为什么会出现这个问题,主要有两种可能:第一种是Redis宕机,第二种可能就是采用了相同的过期时间。搞清楚原因之后,那么有什么解决方案呢?3、解决方案:(1)

2021-01-31 17:52:39 27970 18

原创 Redis的五种数据结构的底层实现原理

Redis的五种数据结构的底层实现原理:1、String底层实现方式:动态字符串sds 或者 long;2、Hash底层实现方式:压缩列表ziplist 或者 字典dict;3、List在Redis3.2之前的底层实现方式:压缩列表ziplist 或者 双向循环链表linkedlist;4、List在Redis3.2及之后的底层实现方式:quicklist5、Set底层实现方式:有序整数集合intset 或者 字典dict6、Sorted set底层实现方式:压缩列表ziplist 或者zset

2021-01-31 02:49:22 33939 7

原创 Redis的事务机制

一、Redis事务的相关命令:1、MULTI:用于标记事务块的开启。MULTI执行之后,Redis会将后续的命令逐个放到一个缓存队列中,当EXEC命令被调用时,所有队列中的命令才会被原子化执行。2、EXEC:在一个事务中执行所有先前放入队列的命令,然后恢复正常的连接状态。当使用WATCH命令时,只有当受监控的键没有被修改时,EXEC命令才会执行事务中的命令。3、DISCARD:放弃事务,清除事务队列中的命令,然后恢复正常的连接状态。如果使用了UNWATCH命令,那么DISCARD命令

2021-01-31 02:38:16 15437 3

原创 Redis的数据过期清除策略 与 内存淘汰策略

在使用Redis时,我们一般会为Redis的缓存空间设置一个大小,不会让数据无限制地放入Redis缓存中。可以使用下面命令来设定缓存的大小,比如设置为4GB:CONFIG SET maxmemory 4gb既然 Redis 设置了缓存的容量大小,那么缓存被写满是不可避免的。我们需要面对缓存写满时的替换操作。缓存替换需要解决两个问题:决定淘汰哪些数据,如何处理那些被淘汰的数据。一、Redis有哪些淘汰策略Redis共提供了8中缓存淘汰策略,其中 volatile-lfu 和 allk.

2021-01-30 16:01:34 28706 1

原创 Redis的持久化机制

Redis是一个基于内存的数据库,所有的数据都存放在内存中,如果突然宕机,数据就会全部丢失,因此必须有一种机制来保证 Redis 的数据不会因为故障而丢失,这种机制就是 Redis 的持久化机制。Redis的持久化机制有两种,第一种是RDB快照,第二种是AOF日志。RDB快照是一次全量备份,AOF是连续的增量备份。快照是内存数据的二进制序列化形式,在存储上非常紧凑,而 AOF 日志记录的是内存数据修改的指令记录文本。一、RDB机制:RDB快照就是把数据以快照的形式保存在磁盘上,是某个..

2021-01-17 02:01:11 16317 4

原创 Redis哨兵机制原理详解

哨兵模式:(心跳检测机制)前面说到主从模式其实是一种数据的备份方式,如果master宕机了,需要手动切换,并且还要切换客户端的连接数据源。这就无法达到高可用。哨兵模式就可以解决这一问题。哨兵是特殊的redis服务,不提供读写服务,主要用来监控redis实例节点。 哨兵架构下client端第一次从哨兵找出redis的主节点,后续就直接访问redis的主节点,不会每次都通过sentinel代理访问redis的主节点,当redis的主节点发生变化,哨兵会第一时间感知到,并且哨兵会早主从模式的从节点..

2021-01-15 23:53:31 30119 8

原创 Spring中所使用的设计模式

Spring是一个非常优秀的开源框架,项目源码中所使用的设计模式随处可见,这篇文章主要记录一下Spring中常见的设计模式:(1)工厂模式:Spring使用工厂模式,通过BeanFactory和ApplicationContext来创建对象(2)单例模式:Bean默认为单例模式(3)策略模式:例如Resource的实现类,针对不同的资源文件,实现了不同方式的资源获取策略(4)代理模式:Spring的AOP功能用到了JDK的动态代理和CGLIB字节码生成技术(5)模板方法:可以将相同部分

2021-01-14 02:51:09 47619 3

原创 Redis主从复制原理

一、为什么需要主从复制:1、单台Redis节点的局限性:(1)单节点的Redis能够支撑QPS大概在5万左右,如果上千万的用户访问,Redis就承载不了,成为了高并发的瓶颈。(2)内存上,单个Redis的内存不宜过大,内存过大会导致主从同步时全量同步时间过长,而且在实例重启恢复时也会消耗很长的数据加载时间,一般控制在10G以内即可。(2)CPU 的利用率上,单个 Redis 实例只能利用单个核心,这单个核心在面临海量数据的存取和管理工作时压力会非常大。四、Redis主从复..

2021-01-10 23:26:24 32256 1

Spring+Struts + Hibernate整合jar包

spirng4.3.9+struts2.3.24+hibernate5.0.9整合jar包依赖完整版。

2018-07-13

Spring+SpringMVC+Mybaits整合jar包

spring4.3.9+springmvc4.3.9+mybatis3.4.4的整合jar包依赖完整版。

2018-07-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除