程序猿洞晓
数据结构和算法(二):摘要算法之SHA和MD5 数据结构和算法(二):摘要算法之SHA和MD5
几种常用的加密算法,篇幅的百分之九十都是从其他博客摘抄的,因为就我自己的能力,是没法写全这些内容的。另外这些算法内部深层的原理就不解释了(看过相关博客和公众号,看不懂,尴尬),只做简单的介绍,相信这样简单的介绍已经可以让你在工作中很好的使用
Redis学习笔记(七):Redis中Lua语言应用和原子性控制 Redis学习笔记(七):Redis中Lua语言应用和原子性控制
Lua脚本在Redis里面使用的范围还是很广的,如从数据库中批量将数据导入到Redis中、分布式锁防止锁误删、多操作原子性要求等,这些都会用到Lua脚本。但是这里还是需要注意的是Lua只能保证原子性,不能保证事务性。另外根据对Redis的了解,其本身是提供事务机制的,但是这个事务机制在很多情况是不能回滚的(鸡肋),所以用起来也更少。这里不说具体的事务性,而是来一起看看Lua脚本实现原子操作。
2019-08-30
Redis学习笔记(六):Redis之消息发布、订阅机制 Redis学习笔记(六):Redis之消息发布、订阅机制
消息的发布和订阅,第一想到的是Kafka、RabbitMQ、ActiveMQ等,但是实际上Redis也是有这个功能,这个功能在Redis中实现很简单,也比较粗暴。没有存储,没有各种订阅模式。只要订阅同一个渠道的订阅者就都可以收到发布到该渠道的信息。如果没有订阅者,消息也不会缓存起来,而是直接丢弃。在简单的功能、能够接受这种模式并且有补偿机制的业务中是可以考虑使用的。下面看一下这个到底是怎么玩的。
2019-08-20
Redis学习笔记(五):redis使用的RESP报文格式和手写Redis简易客户端 Redis学习笔记(五):redis使用的RESP报文格式和手写Redis简易客户端
Redis客户端和服务端交互是通过tcp协议,在通讯的报文格式使用的是RESP协议规范,也就是意味只要和Redis服务端建立Scoket连接,通过RESP报文格式传输数据就可以实现Redis客户端和服务端的交互。看起来是很简单的,但是实际上的确是这么简单,RESP报文格式的可读性也是很高的。
2019-08-16
数据结构和算法(一):常用编码算法Base64的前世今生 数据结构和算法(一):常用编码算法Base64的前世今生
几年前面试的时候,数据结构和算法基本都是不问的,但是这几年随着程序猿数量的增加,互联网红利的下滑,面试越来越严格,要求也越来越高。源码+数据结构+算法都是家常便饭啦。对于有跳槽想法的你我,及时的补充数据结构和算法知识可是迫在眉睫的事情。
一起谈谈设计模式(三):单例模式4种最终版 一起谈谈设计模式(三):单例模式4种最终版
关于单例模式有很多种实现方式,这些大家都是很熟悉了,各种博客也是写了N中方法,这些博客都看了一圈,但是很多就是一样的,有的标题是九种,其实还是那么核心的几种变来变去,还有把懒汉模式的安全和非安全分为两种,还有更厉害的是把懒汉基本写法、双重检查机制、双重检查机制+volatile三种分开,认为是三种写法,这是懒汉模式从非安全到安全的演变,完全就是一种模式,感觉完全都是在凑字数(如果这样凑,我估计能写出十几种,甚至更多)。总结一下其实只有四种,再怎么变都是离不开这四种写法。
2019-08-09
Redis学习笔记(四):缓存雪崩、缓存击穿、缓存穿透形成的原因和解决方案 Redis学习笔记(四):缓存雪崩、缓存击穿、缓存穿透形成的原因和解决方案
想要了解缓存雪崩、缓存击穿、缓存穿透形成的原因,首先需要了解缓存在项目中是如何运用的。所以本篇文章的开篇就说一下缓存的使用。然后才能循序渐进的来介绍每种问题的出现和处理方案。
2019-08-05
Redis学习笔记(三):Redis应用之投票、红包 Redis学习笔记(三):Redis应用之投票、红包
Redis基本数据类型及基本命令的使用都已经做完笔记了,接下来就需要将这些笔记实际运用到项目中啦。经常在项目中用到的就是缓存常量数据,还有一些基本的计数等操作,比如我的博客里面访问量、文章阅读量都是缓存在Redis中的,累加阅读量、访问量都是在Redis中完成,夜间定时刷入数据库的,这样就不用每次访问都去数据库中查询。基本应用没有问题,那来点稍微复杂的呢,这篇文章就让我们一起来看看其他的应用场景,将从文章投票排行榜、红包出发来依次说说具体使用何种数据结构合适。
2019-07-31
字符串split操作到底有多少坑 字符串split操作到底有多少坑
长字符串切分,取其中元素封装或者将封装信息组合成长字符串都是常规操作,但是这种长字符串往往是不可控的,如一个长字符串就是由一个元素组成,或者存在空字符串的元素,看似这并没有什么问题,但是使用不同工具类的split方法进行切分结果是完全不同的。不知道你是否遇到这样的坑,下面一起来看看。
2019-07-27
Redis学习笔记(二):Redis常用数据类型之set(集合)、zset(有序集合)的命令以及全局命令详解 Redis学习笔记(二):Redis常用数据类型之set(集合)、zset(有序集合)的命令以及全局命令详解
上一篇博客说了str、hash和list三种数据类型,这篇博客将会介绍五种数据类型的后两种set和zset,分别是集合和有序集合。这两个数据类型就我个人的开发经验来说没用过,一方面是不熟悉,一方面是前面的三种类型基本已经满足了日常开发需求。在文章的最后还会补充说明一些全局的命令,至此关于命令的内容就结束啦。写的有点麻烦,但是写完后有种发现新大陆的感觉,后期在使用redis的时候,选择性知识体系将会更宽,不会仅限于一两种数据类型啦。
2019-07-18
Redis学习笔记(一):Redis常用数据类型之str(字符串)、hash(哈希)和list(列表)的命令 Redis学习笔记(一):Redis常用数据类型之str(字符串)、hash(哈希)和list(列表)的命令
redis是日常开发中最常的非关系型数据库,可以说只要是个项目基本都会使用到。常用来做数据缓存、分布式锁等等。……。这篇文章里面就是用来记录和说明这前三种数据类型常使用的命令。虽然在实际开发过程中很少使用这些命令,但是了解这些命令,会更有利于对redis相关API的理解和使用。
2019-07-13
Java虚拟机那些事儿(十三):Java基本命令jps、jinfo、jstat Java虚拟机那些事儿(十三):Java基本命令jps、jinfo、jstat
没事的时候在回顾自己的博客,刚好这段时间朋友在外面面试,根据他的反馈也做了很多了解。JVM对于Java开发人员来说是面试的重中之重,也是最难的,因为内部的东西太多,没有一个系统的学习方案,都是东一块西一块的学习,最终导致这方面的知识都是由记忆碎片拼接,不全面也不系统。之前的十几篇博客都是转载自其他的博客,接下来还会借鉴别人的博客来完善整个Java虚拟机的知识体系。
2019-07-08
7 / 15