Redis【2】- SDS源码分析

12 月 7 日
阅读 16 分钟
159
Redis 中用得最多的就是字符串,在 C 语言中其实可以直接使用 char* 字符数组来实现字符串,也有很多可以直接使用得函数。但是 Redis 并没有使用 C 语言原生的字符串,而是自己实现了一个 SDS(简单动态字符串,Simple Dynamic String) 。
封面图

从缓存到分布式缓存的那些事

11 月 29 日
阅读 8 分钟
85
Cache 一词来源于 1967 年的一篇电子工程期刊论文。其作者将法语词“cache”赋予“safekeeping storage”的涵义,用于电脑工程领域。当时没有 Cache,CPU 和内存都很慢,CPU 直接访问内存。

FIFO 缓存算法很简单,但也可以聊挺久

11 月 29 日
阅读 23 分钟
95
计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决,这句话就是整个计算机软件以及系统设计中的核心思想,而缓存对这一思想的一种实践。

Redis【1】- 如何阅读 Redis 源码

11 月 27 日
阅读 6 分钟
231
Redis 实际上是简称,全称为 Remote Dictionary Server (远程字典服务器),由 Salvatore Sanfilippo 写的高性能 key-value 存储系统,其完全开源免费,遵守 BSD 协议。Redis 与其他 key-value 缓存产品(如 memcache)有以下几个特点。 

聊聊Go里面的闭包

2022-11-21
阅读 15 分钟
1.6k
以前写 Java 的时候,听到前端同学谈论闭包,觉得甚是新奇,后面自己写了一小段时间 JS,虽只学到皮毛,也大概了解到闭包的概念,现在工作常用语言是 Go,很多优雅的代码中总是有闭包的身影,看来不了解个透是不可能的了,本文让我来科普(按照自己水平随便瞎扯)一下:

设计模式【15】--从审批流中学习责任链模式

2022-02-16
阅读 8 分钟
1.6k
责任链模式是一种设计模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。(百度百科)

设计模式【14】-- 从智能音箱中学习命令模式

2022-02-11
阅读 4 分钟
1.1k
张无忌学太极拳,忘记了所有招式,打倒了"玄冥二老",所谓"心中无招"。设计模式可谓招数,如果先学通了各种模式,又忘掉了所有模式而随心所欲,可谓OO之最高境界。

设计模式【13】-- 模板模式怎么弄?

2022-02-10
阅读 4 分钟
980
张无忌学太极拳,忘记了所有招式,打倒了"玄冥二老",所谓"心中无招"。设计模式可谓招数,如果先学通了各种模式,又忘掉了所有模式而随心所欲,可谓OO之最高境界。

设计模式【12】-- 搞定最近大火的策略模式

2022-01-23
阅读 5 分钟
1.5k
开局还是那种图,最近策略模式貌似很火,各位客官往下看...策略模式到底是什么?前面我们其实已经将结构型模式讲解完了,剩下的全都是行为型模式,三种模式的区分:创建型模式:如何创建一个对象结构型模式:对象内部的构造是如何构造的行为型模式:对象是如何运行(可以做什么)而提到策略模式,我们该如何理解呢?从北...

设计模式【11】-- 搞定组合模式

2022-01-19
阅读 5 分钟
3.7k
其实,组合模式,又称为部分整体模式,用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。

万字长文带你漫游数据结构世界

2022-01-12
阅读 22 分钟
1.5k
是的,上面这句话是非常经典的,程序由数据结构以及算法组成,当然数据结构和算法也是相辅相成的,不能完全独立来看待,但是本文会相对重点聊聊那些常用的数据结构。

无聊的周末用Java写个扫雷小游戏

2022-01-11
阅读 5 分钟
1.8k
周末无聊,用Java写了一个扫雷程序,说起来,这个应该是在学校的时候,写会比较好玩,毕竟自己实现一个小游戏,还是比较好玩的。说实话,扫雷程序里面核心的东西,只有点击的时候,去触发更新数据这一步。

java集合【13】——— Stack源码分析走一波

2022-01-10
阅读 4 分钟
1.5k
前面已经把Vector,ArrayList,LinkedList分析完了,本来是想开始Map这一块,但是看了下面这个接口设计框架图:整个接口框架关系如下(来自百度百科):

设计模式【10】-- 顺便看看享元模式

2022-01-09
阅读 6 分钟
1.6k
享元模式(FlyWeight),是结构型模式的一种,主要是为了减少创建对象的数量,减少内存占用以及提高性能。说到这里,不知道你是否会想到池技术,比如String 常量池,数据库连接池,缓冲池等等,是的,这些都应用了享元模式。

设计模式【9】-- 外观模式?没那么高大上

2022-01-07
阅读 2 分钟
1.4k
举个例子,比如我们的Java 三层MVC架构,对外提供的是controller,但是controller内部可能调用了很多service,service又调用了一些mapper,反正就是内部很复杂,但是对外只是一个接口,一个门面,外部看起来是简单的,外观很好看,实际上,你都懂。

设计模式【8】-- 手工耿教我写装饰器模式

2022-01-06
阅读 3 分钟
1.8k
装饰器模式前面学习了好几种设计模式,今天继续...装饰器模式,属于结构型模式,用来包裹封装现在的类对象,希望可以在不修改现在类对象和类定义的前提下,能够拓展对象的功能。调用的时候,使用的是装饰后的对象,而不是原对象。,提供了额外的功能。不知道大家有没有看手工耿的自制钢琴烤串车视频【[链接] 】, 本来是...

设计模式【7】-- 探索一下桥接模式

2022-01-05
阅读 3 分钟
4.2k
桥接模式是把抽象化和实现化解耦,让两者可以独立,该设计模式属于结构性设计模式。何为将抽象化和实现化解耦,可以理解为将功能点抽象出来,功能的实现如何取决于不同的需求,但是抽象的功能点(接口)已经被桥接到原本的类型上,只用关注与实现。原本的类型变化,和抽象的功能点可以自由变化,中间的桥梁已经搭建起来了。

数据库批量插入这么讲究的么?

2022-01-04
阅读 8 分钟
3k
最近新的项目写了不少各种 insertBatch 的代码,一直有人说,批量插入比循环插入效率高很多,那本文就来实验一下,到底是不是真的?测试环境:SpringBoot 2.5Mysql 8JDK 8Docker首先,多条数据的插入,可选的方案:foreach循环插入拼接sql,一次执行使用批处理功能插入搭建测试环境`sql文件: {代码...} 应用的配置文件:...

完蛋,我的事务怎么不生效?

2021-12-28
阅读 13 分钟
4k
事务大家平时应该都有写,之前写事务的时候遇到一点坑,居然不生效,后来排查了一下,复习了一下各种事务失效的场景,想着不如来一个总结,这样下次排查问题,就能有恃无恐了。那么先来复习一下事务相关知识,事务是指操作的最小工作单位,作为一个单独且不可切割的单元操作,要么全部成功,要么全部失败。事务有四大特...

如何用Docker Compose部署项目?

2021-12-21
阅读 7 分钟
5.1k
之前我们用docker部署了springboot,redis,mysql的项目,但是是部署在三个不同的容器里,还需要先知道redis和mysql的ip地址,手动配置到springboot应用容器里,我只是想快速在本地进行测试啊,这样成本太高了,有没有什么办法,把他们集中管理呢?比如把它构建成为一个镜像。

无快不破,在本地 docker 运行 IDEA 里面的项目?

2021-12-18
阅读 8 分钟
2.6k
之前我们用docker部署了springboot,redis,mysql的项目,但是是部署在三个不同的容器里,还需要先知道redis和mysql的ip地址,手动配置到springboot应用容器里,我只是想快速在本地进行测试啊,这样成本太高了,有没有什么办法,把他们集中管理呢?比如把它构建成为一个镜像。

如何基于 Docker 快速搭建 Springboot + Mysql + Redis 项目

2021-12-17
阅读 23 分钟
2.6k
有时候我们需要快速启动一些项目,但是环境往往折腾了好久,因此弄一个可以重用的快速搭建的教程,docker简直就是这方面的神器,Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。

设计模式【6.2】-- 再聊聊适配器模式

2021-12-14
阅读 5 分钟
1k
这里说的适配器不是通常所说的类适配器,对象适配器,接口适配器,这里实现的是把所有的类进行统一管理的适配器。如需要查找设计模式的三种主要适配器模式,请点击[链接]

设计模式【6.1】-- 初探适配器模式

2021-12-14
阅读 5 分钟
1.9k
适配器模式(百度百科):在计算机编程中,适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。

设计模式【5】-- 原型模式

2021-12-11
阅读 7 分钟
2.1k
接触过 Spring 或者 Springboot 的同学或许都了解, Bean 默认是单例的,也就是全局共用同一个对象,不会因为请求不同,使用不同的对象,这里我们不会讨论单例,前面已经讨论过单例模式的好处以及各种实现,有兴趣可以了解一下:[链接]。除了单例以外,Spring还可以设置其他的作用域,也就是scope="prototype",这就是原型...

面试官说:你来设计一个短链接生成系统吧

2021-12-04
阅读 4 分钟
2.4k
相信大家在生活中,特别是最近的双十一活动期间,会收到很多短信,而那些短信都有两个特征,第一个是几乎都是垃圾短信,这个特点此处可以忽略不计,第二个特点是链接很短,比如下面这个:

设计模式【4】-- 建造者模式详解

2021-12-02
阅读 7 分钟
1.7k
<img src="https://markdownpicture.oss-cn-qingdao.aliyuncs.com/blog/设计模式.png" style="zoom: 33%;" >

雪花算法对System.currentTimeMillis()优化真的有用么?

2021-11-30
阅读 8 分钟
2.4k
前面已经讲过了雪花算法,里面使用了System.currentTimeMillis()获取时间,有一种说法是认为System.currentTimeMillis()慢,是因为每次调用都会去跟系统打一次交道,在高并发情况下,大量并发的系统调用容易会影响性能(对它的调用甚至比new一个普通对象都要耗时,毕竟new产生的对象只是在Java内存中的堆中)。我们可以...

面试官:讲讲雪花算法,越详细越好

2021-11-15
阅读 7 分钟
15.1k
据国家大气研究中心的查尔斯·奈特称,一般的雪花大约由10^19个水分子组成。在雪花形成过程中,会形成不同的结构分支,所以说大自然中不存在两片完全一样的雪花,每一片雪花都拥有自己漂亮独特的形状。雪花算法表示生成的id如雪花般独一无二。 snowflake是Twitter开源的分布式ID生成算法,结果是一个long型的ID。其核心思...

讲分布式唯一id,这篇文章很实在

2021-11-09
阅读 9 分钟
3.9k
分布式系统全局唯一的 id 是所有系统都会遇到的场景,往往会被用在搜索,存储方面,用于作为唯一的标识或者排序,比如全局唯一的订单号,优惠券的券码等,如果出现两个相同的订单号,对于用户无疑将是一个巨大的bug。