`
文章列表
1.简述    MySQL是工作中很常用的一种开源数据库。自从5.5.5版本开始,便将InnoDB作为了默认的存储引擎。那么,为什么在这个版本后,选择InnoDB作为默认的存储引擎呢?下面是鄙人在工作当中自行整理出来与另外一款主力存储引擎MyISAM的对比,如下表所示:   MyISAM InnoDB 功 能 对 比 不支持 支持ACID的事务4个特性 不支持   支持4种事务隔离级别,默认是可重复读 不支持   支持crash安全恢复 不支持   支持外键 只支持表级别的锁粒度 ...
1. 前言        在谈谈redis的哨兵机制这篇文中,我们知道Redis是使用哨兵机制来监控各个节点之间的状态。但是,在分布式的环境下,哨兵机制就不能很好地监控各个节点之前的状态。为了解决这个问题,Redis在3.0的版本推出了Redis Cluster,即redis集群。本篇就谈谈redis集群,主要介绍常用的几种Redis集群方案。   2. Redis集群方案        Redis Cluster集群模式通常具有高可用、可扩展性、分布式、容错等特性。Redis分布式方案一般有三种:客户端分区方案、代理分区方案、查询路由方案。   2.1 客户端分区方案     ...
1. 背景        一般来说,在工作上用到redis集群,基本上都是主从模式,说的更细致一点,是主从复制模式。在Redis 2.8版本之前,主从复制的模式下,一旦主节点发生故障不能提供服务,一般都是手动的将主节点下掉,把从节点提升为主节点,然后再通知客户端更新主节点的地址,这种方式在很大程度上是难以让人接受的。        为什么这么说呢,这里就是一个Redis高可用的问题。通常的web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务,这里肯定是有一个指标的。在redis层面,高可用的含义要宽泛一些,不仅仅是保证提供正常服务,如主从分离,快速 ...
1. 前言        在浅谈redis数据结构之集合这篇文章中,介绍了一些关于集合类型的知识,本篇就根据集合类型,开展实际应用场景的研究。   2. 应用场景之用户标签        在实际的生活中,我们都在电商网站上买过东西 ...
1. 集合        集合(set)类型也是用来保存多个字符串元素,但和列表类型不一样的是,集合中不允许有重复元素,并且集合中的元素是无序的,不能通过索引下标获取元素。极限情况,一个集合最多可以存储2 ^ 32 - 1个元素。        假设集合user:1:follow包含着 "it"、"music"、"his"、"sports"四个元素,如下图所示:                Redis除了支持集合内的增删改查,同时还支持多个集合取交集、并集、差集。合理地使用好集合类型,能在实际开发中解 ...
1. 前言        在前面的两篇文章:浅谈redis数据结构之列表,浅谈redis数据结构之哈希,考虑到这两种数据结构的通用性及重要性,所以本篇专门为这两种数据结构的应用场景做个补充。   2. 应用场景之文章列表         ...
1. 哈希        哈希(hash)类型是一种比较常用的数据类型,绝大多数的编程语言都提供了hash类型,它们的叫法可能是哈希、字典、关联数组。在redis中,哈希类型是指键(K)值本身又是一个键值对结构。        哈希的形式类似于这样:value={{field1,value1},...{fieldN,valueN}},redis键值对和哈希类型两者的关系如下图所示:           这里有个概念需要说明下,哈希类型中的映射关系叫作field-value,这里的value是指field对应的值,不是键(K)对应的值。   2. 操作命令 2.1 基本命令 ...
1. 列表        上一篇文章:浅谈redis数据结构之字符串。本篇文章我们谈谈列表。        列表(list)类型是用来存储多个有序的字符串。列表是一种比较灵活的数据结构,它可以充当栈(Stack)和队列(Queue)的角色,在实际开发上有很多应用场景。        在redis中,可以对列表的两端进行push和pop操作,还可以获取指定范围的元素列表、获取指定索引下标的元素等。下面通过一个简单的例子,说明下这些个操作:假如有a,b,c,d,e五个元素从左往右组成一个有序的列表,极限情况,这个列表可以存储2 ^ 32 - 1个元素。   列表的push和pop ...
ThreadLocal是什么        ThreadLocal是什么?有些小伙伴喜欢把它和线程同步机制混为一谈,事实上ThreadLocal与线程同步无关。ThreadLocal虽然提供了一种解决多线程环境下成员变量的问题,但是它并不是解决多线程共享变量的问题。我们看下官方API对ThreadLocal的定义: 写道 This class provides thread-local variables. These variables differ from their normal counterparts in that each thread that accesses on ...
1. 前言        在上一篇的文章:浅谈redis数据结构,对redis中的数据结构(字符串,列表,hash,集合,有序集合)做了简单的介绍,本篇就是针对字符串做详细的描述。   2. 字符串(string)       字符串类型是Redis最基础的数据结构。字符串类型的值实际可以是字符串(简单和复杂的字符串,例如:JSON、XML)、数字(整数、浮点数),甚至是二进制(图片、音频、视频),但是值最大不能超过512MB。Redis中关于字符串的命令如下所示:   2.1 常用命令   命令 说明 set key value [ex seconds] [px ...
1. redis安装        正式的redis是安装在linux操作系统上的,但是考虑到很多小伙伴对windows是比较熟悉的。因此,redis windows安装的版本如下:https://github.com/MicrosoftArchive/redis/releases。从这个github上选择对应的release版本,比如,我这里安装的是3.0.504,下载msi或zip都可以,如下图所示:          我这里选择的是msi,后面的安装就不在累述。本地安装好以后,打开redis的安装路径,例如:我本地安装在D:\Program Files\Redis,如下图所示 ...
1. 背景        最近一个多月的事件,加班加点的忙着项目上线,为了赶进度,也没过多的要求兄弟们编写的程序,只要保证线上质量就行,没强调程序的可扩展性及程序设计方面的细节。现在业务稳定了,梳理了整个项目,利用spring中的事件驱动机制做了一次重构。这里,只做个简单的总结,希望能帮到有需要的小伙伴。   2. spring中的事件驱动机制       spring的官方wiki上对事件(Event)是这样描述(翻译成中文)的: 写道 ApplicationContext通过ApplicationEvent类和ApplicationListener接口进行事件处理。 如果将实 ...
1. 背景        Zuul是Netflix提供的一个开源组件,Zuul致力于在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。小弟所在的公司,是使用它来作为网关的重要组成部分。今天就通过一个简单的实例,来具体说明一 ...
为什么要使用消息队列              做过互联网企业级应用开发的同学们,不管是在大厂的还是在小厂的,都会知道或熟悉消息队列。那么,在做企业级应用开发的过程中,为啥需要用消息队列呢?下面是小弟在日常工作中整理出来的心得,希望能帮助有需要的同学。       在正常的项目中使用消息队列,主要是为了以下三种场景:解耦,异步,削峰。下面分别针对这三种场景,做下简单的描述。       1. 解耦       在未使用消息队列之前的企业级应用开发的过程中,如果某个系统是产生关键数据的系统,那么其他的系统都会依赖这个系统去获取数据,如下图所示:       A系统是产生关键数据的系统 ...
     刚来新公司大半年,项目管理工具用的是gradle,而在使用gradle clean build进行编译Java文件的时候,经常出现中文乱码,为了方便提高编码质量,研究了下:      基础环境:Windows操作系统 + IDEA + gradle(版本5.1+)      解决方案:             1. 找到gradle的安装目录,进入到/bin的目录下面,找到gradle.bat文件             2. 编辑gradle.bat文件,将DEFAULT_JVM_OPTS设置成DEFAULT_JVM_OPTS="-Dfile.encoding= ...
Global site tag (gtag.js) - Google Analytics