自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 问答 (1)
  • 收藏
  • 关注

原创 深入理解Redis、ACID特性

Redis事务简介在Redis中,涉及到事务的基本命令有MULTI、EXEC、DISCARD、WATCH等命令。MULTI命令用于启动Redis的事务,将客户端置为事务状态。EXEC命令用于取消事务,执行从MULTI到此命令之前的命令队列,将客户端变为非事务状态。DISCARD命令用于取消事务,清空事务队列中的所有命令。WATCH用于监视键值对,在所有监视键都没有被修改的前提下,事务才能正常被执行。目前,Redis对事务的支持还比较简单,它只能保证一个客户端请求的事务中的命令可以连续的被执行

2020-05-31 14:26:32 680 3

原创 深入理解Redis、服务器启动过程

一台Redis服务器从启动到能够接收客户端的命令请求,需要经过一系列的初始化和设置过程,大致需要经过以下几步。一、服务器状态结构的初始化服务器状态结构的初始化会创建一个struct rdisServer类型的实例变量server作为服务器的状态,同时为结构中的其他属性设置默认值。由redis.c/initServerConfig函数来初始化server变量。initServerConfig 函数的主要任务是设置服务器的运行ID、默认运行频率、默认配置文件路径、运行架构、默认端口、默认RDB持久化条件和A

2020-05-30 14:34:52 396

原创 深入理解Redis、服务器属性

服务器相关属性在服务器运行过程中扮演着重要的角色,他们会与服务器相关函数结合起来,共同维护服务器的正常运行。以下是服务器相关属性的具体描述。cronloopscronloops 属性是一个计数器,用于记录服务器的 serverCron 函数被执行的次数,是一个 int 类型的整数。每执行一次serverCron函数,cronloops属性的值就加1。serverCron函数是Redis服务器中的一个重要函数,默认情况下,每隔100毫米就执行一次,它负责管理服务器的资源,并维持服务器的正常运行。db_

2020-05-30 13:41:41 253

原创 因为说了句金额用double表示,结果被踢出群聊

浮点型变量在进行计算的时候会出现丢失精度的问题,所以,在需要用到金钱的地方要用BigDecimal而不是其他,如下代码段。public class Main { public static void main(String[] args) { System.out.println(0.05+2.05); System.out.println(1.5-1.05); System.out.println(1.0455*100); Sys

2020-05-23 10:18:54 363

原创 对象老祖宗Object:我有话说

什么是Object类Object是所有Java类的祖先,位于 java.lang 包下,(这个包中所有类在使用时无需手动导入,系统会在程序编译期间自动导入)。当一个类没有直接继承某个类时,默认继承Object类,也就是说任何类都直接或间接继承Object,Object 类中能访问的方法在所有类中都可以调用。也就是下面是相等的。public class User {}public class User extends Object{}Object类下所有方法。clone()用于对象

2020-05-20 13:14:59 245

原创 谈谈任务调度的四种实现方式

一、什么是任务调度任务调度是指基于给定时间点,给定时间间隔或者给定执行次数自动执行任务,本文会介绍Timer、ScheduledExecutor、Quartz、Spring Boot中的调度模块使用。二、TimerTimer任务调度的核心类是 Timer 和 TimerTask。其中Timer负责设定TimerTask的起始与间隔执行时间。使用者只需要创建一个 TimerTask 的继承类,实现自己的run方法,然后将其丢给 Timer 去执行即可。下面的例子每隔半秒执行run中的方法,输出当前时间

2020-05-19 11:26:26 8368

原创 Class.forName和ClassLoader有啥区别?

Java中的Class.forName()和ClassLoader 都可以对类进行加载,在学习mysql期间可能会经常用到Class.forName(),ClassLoader负责将Class的字节码形式转换成内存形式的 Class 对象。字节码可以来自于磁盘文件,也就是XXXX.class,也可以来自jar包里的XXXX.class,也可以来自远程服务器提供的字节流,字节码的本质就是一个字节数组[]byte。实际上Class.forName()方法也是调用的 ClassLoader 来实现的。forN

2020-05-17 15:38:35 430

原创 我想你需要了解一下ps命令

ps概述Linux中的ps命令是Process Status的缩写。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等等,ps 为我们提供了进程的一次性的查看,它所提供的查看结果并不动态连续的;如果想对进程时间监控,应该用 top 命令。基本参数:-A :所有的进程均显示出来,与 -e 具有同样的效用;-a :显示现行终端机下的所有进程,包括其他用户的进程;-u :以用户为主的进程状态 ;x :通常与 a 这个参数一起使用,可列出较完整信息

2020-05-16 11:01:20 544

原创 确定不了解下布隆过滤器?

在学习Redis时,三大缓存问题是不可避免的,所以,我也是在此学习到了布隆过滤器?于是总结了这篇文章。一、什么是布隆过滤器?布隆过滤器是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,但是缺点是其返回的结果是概率性的,而不是非常准确的。理论情况下添加到集合中的元素越多,误报的可能性就越大。并且,存放在布隆过滤器的数据不容易删除。说到检索一个元素是否在一个集合中,我们可能想到

2020-05-14 13:14:16 207

原创 SpringBoot+RabbitMQ实现邮箱服务

由于我有两个项目,每个项目都需要用到邮件,所以把邮件拆分出来做成了一个单独的邮件服务,也方便以后的项目直接调用。也就是现在有三个服务,服务A接收其他服务发送的消息,这个消息中会包含三个基本的信息,邮件标题、邮件内容、接收者的邮件号。服务B、C发送包含这三个信息的消息到服务A中,服务A拿到信息后最终发送邮件。一、安装RabbitMQ我的系统是Linux(Deepin),Windows的就不演示了,只需要以下三条命令。RabbitMq需要erlang语言的支持,在安装RabbitMq之前需要安装erl

2020-05-12 11:29:18 2106

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除