论接口原子化和简单化的重要性

这篇文章咱们不说技术,而是来说说接口的设计,最近在做一个项目,遇到一个产品设计的问题,对前端的交互、后端实现带来很大的麻烦。在产品经理提出这样做的时候我就提出了很强的异议,但是技术经理觉得这样在技术上实现没有任何问题,最后只能屈服,完成这个功能的开发,现在随着版本的迭代,问题慢慢被放大,不但界面交互很low,后端数据存储和关联也隐藏了弊病。接下来就详细说一下这个过程,然后说说我对接口要原子化、简单化重要性的理解。

数据结构和算法(三):常用对称加密算法之AES

摘要加密算法一般是用来保证数据的完整性和一致性,上一篇文章中提到了两个常用的摘要算法分别是SHA和MD5。在这篇里面,一起来学习一下一个常用的对称加密算法AES,它的主要作用是保证私密信息不被泄漏。对于这个应该都很熟悉,只要使用到对称加密,相信百分八十以上都是用AES。

数据结构和算法(二):摘要算法之SHA和MD5

MD5加密算法从使用上是很简单的,JDK有MD5的加密类,但是使用起来比较麻烦,其加密方法返回的是长度为16二进制数组,需要将二进制数组转换成16进制,然后转换成对应的字符串。另外Spring对MD5也有封装,其实就是对JDK中MD5加密类进行封装,执行上面提到的转换步骤。下面来了解一下自己实现转换和直接使用Spring封装的转换方法。

Redis学习笔记(六):Redis中Lua语言应用和原子性控制

Lua脚本在Redis里面使用的范围还是很广的,如从数据库中批量将数据导入到Redis中、分布式锁防止锁误删、多操作原子性要求等,这些都会用到Lua脚本。但是这里还是需要注意的是Lua只能保证原子性,不能保证事务性。另外根据对Redis的了解,其本身是提供事务机制的,但是这个事务机制在很多情况是不能回滚的(鸡肋),所以用起来也更少。这里不说具体的事务性,而是来一起看看Lua脚本实现原子操作。

Redis学习笔记(五):Redis之消息发布、订阅机制

消息的发布和订阅,第一想到的是Kafka、RabbitMQ、ActiveMQ等,但是实际上Redis也是有这个功能,这个功能在Redis中实现很简单,也比较粗暴。没有存储,没有各种订阅模式。只要订阅同一个渠道的订阅者就都可以收到发布到该渠道的信息。如果没有订阅者,消息也不会缓存起来,而是直接丢弃。在简单的功能、能够接受这种模式并且有补偿机制的业务中是可以考虑使用的。下面看一下这个到底是怎么玩的。

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

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

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

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

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

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