Redis学习笔记(四):redis使用的RESP报文格式和手写Redis简易客户端

Redis客户端和服务端交互是通过tcp协议,在通讯的报文格式使用的是RESP协议规范,也就是意味只要和Redis服务端建立Scoket连接,通过RESP报文格式传输数据就可以实现Redis客户端和服务端的交互。看起来是很简单的,但是实际上的确是这么简单,RESP报文格式的可读性也是很高的。

一起谈谈设计模式(三):单例模式4种最终版

关于单例模式有很多种实现方式,这些大家都是很熟悉了,各种博客也是写了N中方法,这些博客都看了一圈,但是很多就是一样的,有的标题是九种,其实还是那么核心的几种变来变去,还有把懒汉模式的安全和非安全分为两种,还有更厉害的是把懒汉基本写法、双重检查机制、双重检查机制+volatile三种分开,认为是三种写法,这是懒汉模式从非安全到安全的演变,完全就是一种模式,感觉完全都是在凑字数(如果这样凑,我估计能写出十几种,甚至更多)。总结一下其实只有四种,再怎么变都是离不开这四种写法。

Redis学习笔记(三):Redis应用之投票、红包

Redis基本数据类型及基本命令的使用都已经做完笔记了,接下来就需要将这些笔记实际运用到项目中啦。经常在项目中用到的就是缓存常量数据,还有一些基本的计数等操作,比如我的博客里面访问量、文章阅读量都是缓存在Redis中的,累加阅读量、访问量都是在Redis中完成,夜间定时刷入数据库的,这样就不用每次访问都去数据库中查询。基本应用没有问题,那来点稍微复杂的呢,这篇文章就让我们一起来看看其他的应用场景,将从文章投票排行榜、红包出发来依次说说具体使用何种数据结构合适。

字符串split操作到底有多少坑

长字符串切分,取其中元素封装或者将封装信息组合成长字符串都是常规操作,但是这种长字符串往往是不可控的,如一个长字符串就是由一个元素组成,或者存在空字符串的元素,看似这并没有什么问题,但是使用不同工具类的split方法进行切分结果是完全不同的。不知道你是否遇到这样的坑,下面一起来看看。

Redis学习笔记(二):Redis常用数据类型之set(集合)、zset(有序集合)的命令以及全局命令详解

上一篇博客说了str、hash和list三种数据类型,这篇博客将会介绍五种数据类型的后两种set和zset,分别是集合和有序集合。这两个数据类型就我个人的开发经验来说没用过,一方面是不熟悉,一方面是前面的三种类型基本已经满足了日常开发需求。在文章的最后还会补充说明一些全局的命令,至此关于命令的内容就结束啦。写的有点麻烦,但是写完后有种发现新大陆的感觉,后期在使用redis的时候,选择性知识体系将会更宽,不会仅限于一两种数据类型啦。

Redis学习笔记(一):Redis常用数据类型之str(字符串)、hash(哈希)和list(列表)的命令

redis是日常开发中最常的非关系型数据库,可以说只要是个项目基本都会使用到。常用来做数据缓存、分布式锁等等。……。这篇文章里面就是用来记录和说明这前三种数据类型常使用的命令。虽然在实际开发过程中很少使用这些命令,但是了解这些命令,会更有利于对redis相关API的理解和使用。

Java虚拟机那些事儿(十三):Java基本命令jps、jinfo、jstat

没事的时候在回顾自己的博客,刚好这段时间朋友在外面面试,根据他的反馈也做了很多了解。JVM对于Java开发人员来说是面试的重中之重,也是最难的,因为内部的东西太多,没有一个系统的学习方案,都是东一块西一块的学习,最终导致这方面的知识都是由记忆碎片拼接,不全面也不系统。之前的十几篇博客都是转载自其他的博客,接下来还会借鉴别人的博客来完善整个Java虚拟机的知识体系。

Kafka学习笔记(五):消费者偏移量提交、独立消费者、再均衡监听器以及消费者对重复消费、消息丢失问题的解决

再均衡的概念以及触发的情况都在上一篇文章中做了说明。再均衡的执行过程是造成重复消费、消息丢失的主要原因。另外消费者偏移量如何提交,如何保证再均衡后,消费者能够从上次执行到的偏移量开始消费,防止重复消费和丢失问题,都将在这篇文章中体现。