自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 RabbitMQ详解(二):交换机属性、队列属性、持久化、实现发送方确认机制

五、RabbitMQ进阶1、交换机属性详解以DirectExchange为例: @Bean DirectExchange directExchange() { Map<String, Object> map = new HashMap<>(); //将exchange交换机设置为备份交换机 map.put(...

2019-04-30 19:33:28 2654 1

原创 一致性哈希算法

1、基本概念一致性哈希算法将整个哈希值空间组织成一个虚拟的圆环,如假设某Hash函数的值空间为0−232−10-2^{32}-10−232−1(即哈希值是一个32位无符号整数),整个哈希空间如下:整个空间按顺时针方向组织。0和232−12^{32}-1232−1在零点中方向重合下一步将各个服务器使用进行Hash运算,具体可以选择服务器的ip或者主机名作为关键字进行哈希,这样每台机器就能确定...

2019-04-29 20:01:58 473

原创 RabbitMQ详解(一):基本概念、安装、整合SpringBoot

一、RabbitMQ简介1、什么是消息中间件消息队列中间件是指利用高效可靠的消息传输机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成消息队列一般有两种传递模式:点对点模式和发布/订阅模式。点对点是基于队列的,消息生产者发送消息到队列,消息消费者从队列中接收消息,队列的存在使得消息的异步传输成为可能。发布订阅模式定义了如何向一个内容节点发布和订阅消息,这个内容节点称为主题,主...

2019-04-29 15:24:20 766

原创 Redis详解:RDB持久化和AOF持久化

一、RDB持久化RDB是Redis默认的持久化方案。在指定的时间间隔内,执行指定次数的写操作,则会将内存中的数据写入到磁盘中,即在指定目录下生成一个dump.rdb文件,Redis重启会通过加载dump.rdb文件恢复数据RDB持久化既可以手动执行,也可以根据服务器配置选项定期执行,该功能可以将某个时间点上的数据库状态保存到一个RDB文件中RDB持久化功能所生成的RDB文件是一个经过压缩的...

2019-04-21 14:08:29 935

原创 Redis详解:Redis事务

Redis通过MULTI、EXEC、WATCH等命令来实现事务功能。事务提供了一种将多个命令请求打包,然后一次性、按顺序地执行多个命令的机制,并且在事务执行期间,服务器不会中断事务而改去执行其他客户端的命令请求,它会将事务中的所有命令都执行完毕,然后才去处理其他客户端的命令请求127.0.0.1:6379> MULTIOK127.0.0.1:6379> SET name tom...

2019-04-21 10:42:26 576

原创 Redis详解:Redis过期键删除策略

一、三种过期键删除策略定时删除:在设置键的过期时间的同时,创建一个定时器,让定时器在键的过期时间来临时,立即执行对键的删除操作惰性删除:放任键过期不管,但是每次从键空间中获取键时,都检查取得的键是否过期,如果过期的话,就删除该键;如果没有过期,就返回该键定期删除: 每隔一段时间,程序就对数据库进行一次检查,删除里面的过期键。至于要删除多个过期键,以及要检查多少个数据库,则由算法决定第一...

2019-04-20 15:41:27 8198 1

原创 Redis详解:Redis对象

Redis包含字符串对象、列表对象、哈希对象、集合对象和有序集合对象这五种类型的对象Redis的对象系统实现了基于引用计数技术的内存回收机制,当程序不再使用某个对象的时候,这个对象所占用的内存就会被自动释放,还通过引用计数技术实现了对象共享机制,这一机制可以在适当的条件下,通过让多个数据库键共享同一个对象来节约内存Redis的对象带有访问时间记录信息,该信息可以用于计算数据库建的空转时长,在服...

2019-04-20 11:15:41 370

原创 Redis详解:Redis底层数据结构(下)

Redis底层数据结构(上):https://blog.csdn.net/qq_40378034/article/details/89295462四、跳跃表跳跃表是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的跳跃表支持平均O(logN)O(logN)O(logN)、最坏O(N)复杂度的节点查找,还可以通过顺序性操作来批量处理节点Redis使用跳...

2019-04-14 23:02:19 4425

原创 Redis详解:Redis底层数据结构(上)

前言Redis 数据库里面的每个键值对(key-value)都是由对象(object)组成的:数据库键总是一个字符串对象数据库的值则可以是字符串对象、列表对象、哈希对象、集合对象、有序集合对象这五种对象中的其中一种这篇博客要讨论的主要是这五种对象所使用的底层数据结构Redis底层数据结构有以下数据类型:简单动态字符串链表字典跳跃表整数集合压缩列表一、简单动态字符串Re...

2019-04-14 13:21:59 3437

原创 Redisson:Redis官方提供的构建分布式锁的轮子

使用SpringBoot整合Redisson一、引入依赖 <dependency> <groupId>org.redisson</groupId> <artifactId>redisson-spring-boot-starter</artifactId> ...

2019-04-13 11:05:14 831

原创 微服务安全:OAuth 2.0详解

一、应用场景有一个云冲印的网站,可以将用户存储在Google的照片冲印出来。用户为了使用该服务,必须让云冲印读取自己存储在Google上的照片问题是只有得到用户的授权,Google才会同意云冲印读取这些照片二、名次定义1)、Third-party application:第三方应用程序,本文中又称客户端,应用场景中的云冲印2)、HTTP service:HTTP服务提供商,本文中又称服...

2019-04-12 17:15:19 475

原创 SpringBoot整合XXL-JOB

一、pom.xml中引入依赖 <dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>2.0.1</vers...

2019-04-11 20:36:55 26631 11

原创 Redis实现分布式锁

使用Jedis实现Redis客户端,且只考虑Redis服务端单机部署的场景一、可靠性为了确保分布式锁可用,锁的实现至少要同时满足以下三个条件:互斥性。在任意时刻,只有一个客户端能持有锁不会发生死锁。即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户端能加锁。加锁和解锁必须是同一个客户端,客户端自己不能把别人加的锁给解了。二、依赖和配置信息1)、引入依赖 ...

2019-04-10 16:08:21 790

原创 Rancher1.x基本使用(简介、安装、部署Eureka集群)

一、Rancher简介Rancher是一个开源的企业级容器管理平台。通过Rancher,企业再也不必自己使用一系列的开源软件去从头搭建容器服务平台。Rancher提供了在生产环境中使用的管理Docker和Kubernetes的全栈化容器部署与管理平台1)、rancher-server主要负责图形化管理主机容器, 并且储存用户的数据(账号, 主机信息, 应用(task)等)2)、ranche...

2019-04-07 10:33:04 3183

原创 Redis详解:Redis集群

Redis集群是Redis提供的分布式数据库方案,集群通过分片来进行数据共享,并提供复制和故障转移功能一、节点一个Redis集群通常由多个节点组成,连接各个节点的工作可以使用CLUSTER MEET命令来完成,该命令的格式如下:CLUSTER MEET <ip> <port>1)、启动节点Redis服务器在启动时会根据cluster-enabled配置选项是否为y...

2019-04-06 14:35:52 575

原创 StringUtils使用总结

import org.apache.commons.lang.StringUtils;public class StringUtilsTest { public static void main(String[] args) { //StringUtils.isEmpty(String str)字符串判断 //判断字符串是否为空,为空的标准是str==n...

2019-04-04 07:43:19 349

原创 为什么禁止把SimpleDateFormat定义为static类型的?

一、前言最近使用Sonarqube扫描代码的时候发现一个问题,使用static修饰SimpleDateFormat的实例被标记为了BugSonarqube中的提示信息如下:并不是标准Java库中的所有类都被编写为线程安全的。以多线程方式使用它们很可能在运行时导致数据问题或异常当Calendar, DateFormat, javax.xml.xpath.XPath, 或者 javax.xml...

2019-04-03 16:37:58 3406

原创 Redis详解:Redis哨兵

一、Redis Sentinel(哨兵)介绍Sentinel(哨兵)是Redis的高可用解决方案:由一个或多个Sentinel实例组成的Sentinel系统可以监视多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器,然后由新的主服务器代替已下线的主服务器继续处理命令请求上图中,server1为当前的主服...

2019-04-02 09:28:08 454

原创 Docker容器详解(下)(配合阿里云容器镜像服务)

用Docker部署一个用Python编写的Web应用。这个应用的代码部分app.py如下:from flask import Flaskimport socketimport osapp = Flask(__name__)@app.route('/')def hello(): html = "<h3>Hello {name}!</h3>" \ ...

2019-04-01 17:19:06 1230

转载 Maven依赖传递、依赖传递排除、依赖冲突

转自:http://www.cnblogs.com/ygj0930/p/6628429.html一、Maven依赖传递假如有Maven项目A,项目B依赖A,项目C依赖B。那么我们可以说 C依赖A。也就是说,依赖的关系为:C—>B—>A,那么我们执行项目C时,会自动把B、A都下载导入到C项目的jar包文件夹中,这就是依赖的传递性二、依赖传递的排除如上,C—>B—>A。...

2019-04-01 07:43:23 850

空空如也

空空如也

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

TA关注的人

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