自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

https://github.com/Wang-Jun-Chao

分享知识,创造快乐!

原创 博文总目录

【博文目录】 【>>>架构<&amp...

2017-06-19 07:50:59

阅读数 7111

评论数 4

原创 Java——Retry重试机制详解

Java——Retry重试机制详解@[TOC](Java——Retry重试机制详解)[【博文目录>>>】](http://blog.csdn.net/derrantcm/article/details/73456550)[【项目源码>>>】](https://g...

2019-05-20 16:40:52

阅读数 349

评论数 3

转载 深入浅出Event Sourcing和CQRS

深入浅出Event Sourcing和CQRS Event Sourcing也叫事件溯源,是这些年另一个越来越流行的概念,是大神Martin Fowler提出的一种架构模式。简单来说,它有几个特点: 整个系统以事件为驱动,所有业务都由事件驱动来完成。 事件是一等公民,系统的数据以事件为基...

2019-01-18 10:49:14

阅读数 424

评论数 0

原创 Java新一代垃圾回收器——ZGC

Java新一代垃圾回收器——ZGC 在JDK 11当中,加入了实验性质的ZGC。它的回收耗时平均不到2毫秒。它是一款低停顿高并发的收集器。 ZGC几乎在所有地方并发执行的,除了初始标记的是STW的。所以停顿时间几乎就耗费在初始标记上,这部分的实际是非常少的。那么其他阶段是怎么做到可以并发执...

2018-11-20 08:35:10

阅读数 585

评论数 0

原创 【31-Redis分布式锁进化史】

【博文总目录>>>】 Redis分布式锁进化史 近两年来微服务变得越来越热门,越来越多的应用部署在分布式环境中,在分布式环境中,数据一致性是一直以来需要关注并且去解决的问题,分布式锁也就成为了一种广泛使用的技术,常用的分布式...

2018-11-19 09:33:09

阅读数 281

评论数 2

原创 MAC Pro 装Ubuntu 18 虚拟机字太小的调节方法

macpro 装Ubuntu18 虚拟机 字太小的调节方法 用的macpro安装了ubuntu15虚拟机。结果因为分辨率太高,ubuntu里字体图标都很小。最后发现了一个可调节的方法: 1.点击ubuntu的setting 2.点击弹出窗口的dispalys 3.弹出的Displays窗口...

2018-07-21 06:40:34

阅读数 1428

评论数 0

原创 消息对队的使用和常用消息对列对比

【博文总目录>>>】 一、消息队列使用的四种场景介绍 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题 实现高性能,高可用,可伸缩和最终一致性架构 使用较多的消息队列有ActiveMQ,RabbitMQ,Zer...

2018-03-11 10:29:07

阅读数 847

评论数 0

原创 使用cglib在内存中动态生成类

【博文总目录>>>】|【项目源码>>>】 CGLIB是一个强大的、高性能的代码生成库。其被广泛应用于AOP框架(Spring、dynaop)中,用以提供方法拦截操作。本示例展示了如何使用cglib动态生成类。 ...

2018-02-22 09:55:05

阅读数 2204

评论数 1

原创 使用javaassist在内存中动态生成类

【博文总目录>>>】|【项目源码>>>】 Javassist是一个开源的分析、编辑和创建Java字节码的类库。是由东京工业大学的数学和计算机科学系的 Shigeru Chiba (千叶 滋)所创建的。它已加入了开...

2018-02-22 09:08:23

阅读数 1041

评论数 0

原创 最简RPC框架实现

【博文总目录>>>】|【项目源码>>>】 RPC概述 RPC(Remote Proceduce Call 远程过程调用) 一般用来实现部署在不同机器上的系统之间的方法调用,使程序能够像访问本地系统资源一样,通过网络传输过去访问远端系统资源。 RPC...

2018-02-04 10:56:01

阅读数 970

评论数 0

转载 第八章JAVA CAS原理深度分析

【博文总目录>>>】 【Java 7 并发编程实战手册目录>>>】 java.util.concurrent包完全建立在CAS之上的,没有CAS就不会有此包。可见CAS的重要性。 CAS CAS:Compare and Swap, 翻译成比较并交...

2018-01-21 19:52:53

阅读数 585

评论数 0

转载 【第13章】【TCP粘包/拆包问题和Netty的解决方案】

【博文总目录>>>】 工程下载【1>>>】|【2>>>】 什么是TCP协议? TCP(Transmission Control Protocol传输控制协议)是Internet协议组的主要协议之一。起源于初始的网络实现,补充了IP...

2018-01-20 22:48:30

阅读数 398

评论数 0

原创 跳跃表Skip List的原理和实现(Java)

【博文总目录>>>】|【代码下载>>>】 为什么要有跳跃表 我们在实际开发中经常会有在一堆数据中查找一个指定数据的需求,而常用的支持高效查找算法的实现方式有以下几种: 有序数组。这种方式的存储结构,优点是支持数据的随机访问,并且可以采用二分查找算法降低查...

2018-01-15 13:09:54

阅读数 3260

评论数 4

原创 【30-Redis设计与实现-整数集合】

【博文总目录>>>】|【工程下载>>>】 整数集合( intset )是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时, Redis 就会使用整数集合作为集合键的底层实现。 整数集合的实现 整数集合( intset )是...

2018-01-09 08:05:53

阅读数 430

评论数 0

原创 【29-Redis设计与实现-跳跃表】

【博文总目录>>>】|【工程下载>>>】 跳跃表( skiplist )是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。 跳跃表支持平均O(logN)、最坏O(N)(的复杂度的节点查找,还可以通过顺序性操作来批量...

2018-01-08 08:11:46

阅读数 712

评论数 0

原创 【28-Redis设计与实现-字典】

【博文总目录>>>】|【工程下载>>>】 字典,又称为符号表( symbol table )、关联数组( associative array )或映射( map ),是一种用于保存键值对( key-value pair )的抽象数据结构。在字典中,一个键( ...

2018-01-07 09:14:30

阅读数 451

评论数 0

原创 【27-Redis设计与实现-链表】

链表提供了高效的节点重排能力,以及顺序性的节点访问方式,并且可以通过增删节点来灵活地调整链表的长度。 作为一种常用数据结构,链表内置在很多高级的编程语言里面,因为Redis 使用的C 语言并没有内置这种数据结构,所以Redis 构建了自己的链表实现。 链表在Redis 中的应用非常广泛,比如列表键...

2017-12-27 07:40:35

阅读数 418

评论数 0

原创 【26-Redis设计与实现-简单动态字符串】

Redis 没有直接使用C 语言传统的字符串表示(以空字符结尾的字符数组,以下简称C字符串),而是自己构建了一种名为简单动态字符串( simple dynamic string, SDS )的抽象类型,并将SDS 用作Redis 的默认字符串表示。 在Redis 里面, C 字符串只会作为字符串...

2017-12-26 08:10:51

阅读数 386

评论数 0

原创 【25-Reids内存优化】

edis2.2版本及以后,存储集合数据的时候会采用内存压缩技术,以使用更少的内存存储更多的数据。如Hashes,Lists,Sets和Sorted Sets,当这些集合中的所有数都小于一个给定的元素,并且集合中元素数量小于某个值时,存储的数据会被以一种非常节省内存的方式进行编码,使用这种编码理论上...

2017-12-23 08:10:38

阅读数 661

评论数 0

原创 【24-Redis发布订阅】

订阅,取消订阅和发布实现了发布/订阅消息范式(引自wikipedia),发送者(发布者)不是计划发送消息给特定的接收者(订阅者)。而是发布的消息分到不同的频道,不需要知道什么样的订阅者订阅。订阅者对一个或多个频道感兴趣,只需接收感兴趣的消息,不需要知道什么样的发布者发布的。这种发布者和订阅者的解耦...

2017-12-22 08:10:33

阅读数 585

评论数 0

原创 【23-将redis当做使用LRU算法的缓存来使用】

当Redis被当做缓存来使用,当你新增数据时,让它自动地回收旧数据是件很方便的事情。这个行为在开发者社区非常有名,因为它是流行的memcached系统的默认行为。LRU是Redis唯一支持的回收方法。本页面包括一些常规话题,Redis的maxmemory指令用于将可用内存限制成一个固定大小,还包括...

2017-12-21 07:15:14

阅读数 540

评论数 0

原创 【22-Redis管道】

Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。这意味着通常情况下一个请求会遵循以下步骤:客户端向服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响应。服务端处理命令,并将结果返回给客户端。

2017-12-20 07:27:59

阅读数 506

评论数 0

原创 【21-Redis:LRU算法使用】

当Redis被当做缓存来使用,当你新增数据时,让它自动地回收旧数据是件很方便的事情。这个行为在开发者社区非常有名,因为它是流行的memcached系统的默认行为。

2017-12-19 08:18:31

阅读数 562

评论数 0

原创 【20-Redis协议说明】

Redis协议在以下几点之间做出了折衷: 简单的实现 快速地被计算机解析 简单得可以能被人工解析 网络层 Redis在TCP端口6379上监听到来的连接,客户端连接到来时,Redis服务器为此创建一个TCP连接。在客户端与服务器端之间传输的每个Redis命令或者数据都以\r\n结尾。 ...

2017-12-16 08:14:51

阅读数 522

评论数 0

原创 【19-Redis集群规范】

Redis 集群是 Redis 的一个分布式实现,主要是为了实现以下这些目标(按在设计中的重要性排序): - 在1000个节点的时候仍能表现得很好并且可扩展性(scalability)是线性的。 - 没有合并操作,这样在 Redis 的数据模型中最典型的大数据值中也能有很好的表现。 - 写入...

2017-12-15 07:32:30

阅读数 496

评论数 0

原创 【18-Redis集群教程】

Redis 集群是一个提供在多个Redis间节点间共享数据的程序集。 Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误. Redis 集群通过分区来提供一定程度的可用性,在实际环境中当某个...

2017-12-14 07:48:31

阅读数 453

评论数 0

原创 【17-Redis延迟监控框架】

每个Redis实例经常被用于每时每刻都要提供大量查询服务的场景,同时,对平均响应时间和最大响应延迟的要求都非常严格。 当Redis用作内存系统时,它以不同的方式与操作系统进行交互,例如,持久化数据到磁盘上。再者,Redis实现了丰富的命令集。大部分命令执行都很快,能在确定时间内或对数时间内完成(...

2017-12-13 08:22:09

阅读数 578

评论数 0

原创 【16-Redis的Sentinel】

Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务: 监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。 提醒(Notification): 当被监控的某个 Redis 服务器出现问题...

2017-12-12 08:12:35

阅读数 283

评论数 0

原创 【15-Redis信号处理】

SIGTERM信号会让Redis安全的关闭。Redis收到信号时并不立即退出,而是开启一个定时任务,这个任务就类似执行一次SHUTDOWN命令的。 这个定时关闭任务会在当前执行命令终止后立即施行,因此通常有有0.1秒或更少时间延迟。 万一Server被一个耗时的LUA脚本阻塞,如果这个脚本可以被...

2017-12-11 07:52:45

阅读数 388

评论数 0

原创 【14-Redis如何处理客户端连接】

Redis通过在TCP端口上进行监听,或者Unix socket(如果启用)的方式来接受客户端的连接。当一个新的客户端连接被接受执行以下操作: - 当Redis使用非阻塞I/O复用,客户端socket设置为非阻塞状态。 - socket TCP_NODELAY属性被设置确保在连接中我们不会延迟...

2017-12-09 07:30:18

阅读数 485

评论数 0

原创 【13-Redis安全性】

本文档从以下几点提供了关于Redis安全主题的介绍:Redis提供的访问控制,代码安全问题,通过外部的恶意输入触发的攻击和其它类似的主题也包含在内。 Redis被设计成仅有可信环境下的可信用户才可以访问。这意味着将Redis实例直接暴露在网络上或者让不可信用户可以直接访问Redis的tcp端口或U...

2017-12-08 07:53:51

阅读数 446

评论数 0

原创 【12-Redis持久化】

Redis 提供了不同级别的持久化方式:RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储.AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以redis协议追加保存每次写的操作到文件末尾.Redis还能对AOF文件进行后台重写,使...

2017-12-07 07:36:51

阅读数 335

评论数 0

原创 【11-Redis复制】

Redis复制很简单易用,它通过配置允许slave Redis Servers或者Master Servers的复制品。接下来有几个关于redis复制的非常重要特性: 一个Master可以有多个Slaves。Slaves能过接口其他slave的链接,除了可以接受同一个master下面slaves的...

2017-12-06 07:46:21

阅读数 460

评论数 0

原创 【10-Redis分布式锁】

分布式锁在很多场景中是非常有用的原语, 不同的进程必须以独占资源的方式实现资源共享就是一个典型的例子。 有很多分布式锁的库和描述怎么实现分布式锁管理器(DLM)的博客,但是每个库的实现方式都不太一样,很多库的实现方式为了简单降低了可靠性,而有的使用了稍微复杂的设计。 这个页面试图提供一个使用Re...

2017-12-05 07:06:13

阅读数 693

评论数 0

原创 【09-Redis-分区:怎样将数据分布到多个redis实例】

分区是将你的数据分发到不同redis实例上的一个过程,每个redis实例只是你所有key的一个子集。文档第一部分将介绍分区概念,第二部分介绍分区的另外一种可选方案。Redis分区主要有两个目的: 分区可以让Redis管理更大的内存,Redis将可以使用所有机器的内存。如果没有分区,你最多只能使用一...

2017-12-04 08:36:49

阅读数 714

评论数 0

原创 【08-Redis大量数据插入】

有些时候,Redis实例需要装载大量用户在短时间内产生的数据,数以百万计的keys需要被快速的创建。 我们称之为大量数据插入(mass insertion),本文档的目标就是提供如下信息:Redis如何尽可能快的处理数据。

2017-12-03 07:10:47

阅读数 543

评论数 0

原创 【07-Redis从文件中批量插入数据】

在redis中,有时候需要批量执行某些命令,但是在redis的redis-cli下,只能一条条的执行指令,实在太麻烦了! 想到这,你是不是蓝瘦香菇? 如果能将要执行的指令一行行存储到文件中,然后用一行命令将文件中的命令一次执行完成,那肯定爽死了! 所以下面,我要带你冒着手指怀孕的危险,让你爽一把

2017-12-01 07:43:10

阅读数 345

评论数 0

原创 【06-Redis事务】

MULTI 、 EXEC 、 DISCARD 和 WATCH 是 Redis 事务相关的命令。事务可以一次执行多个命令, 并且带有以下两个重要的保证: 事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。 事务是一个原子操...

2017-11-30 08:16:22

阅读数 353

评论数 0

原创 【05-Redis 数据类型(下)】

你也许已经知道Redis并不是简单的key-value存储,实际上他是一个数据结构服务器,支持不同类型的值。也就是说,你不必仅仅把字符串当作键所指向的值。

2017-11-29 07:31:20

阅读数 415

评论数 0

原创 【04-Redis数据类型(上)】

本文介绍了Redis的七种数据类型:String,List,Set,Hash,Sorted set,Bitmap和 HyperLogLog

2017-11-28 07:47:38

阅读数 379

评论数 0

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