自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

凝神遐想的博客

凝神思考

  • 博客(30)
  • 收藏
  • 关注

原创 JVM相关面试题及常用命令参数

JVM相关面试题及常用命令参数

2024-03-06 20:42:33 731

原创 分布式事务

在分布式系统中,一个操作需要跨越多个服务,并且这些服务的业务数据是紧密关联的,需要实现数据的一致性。并不代表着一个操作多个服务协同就一定要有事务

2024-03-06 17:11:31 411

原创 分布式锁的原理及实现

分布式锁是一种在分布式系统中用于控制并发访问的机制。在分布式系统中,多个客户端同时对同一个资源进行访问时,容易出现数据不一致的问题

2024-03-06 16:00:18 455

原创 缓存穿透解决方案之布隆过滤器

缓存穿透之布隆过滤器

2024-03-01 21:40:29 446

原创 Elasticsearch 倒排索引原理

对应的文档内容关键字做了一些收集,把一些关键字在哪些文档出现的评率比较多的会收集起来

2023-07-13 10:00:07 483

原创 为什么MySQL不适合大数据文本检索

我们为什么不用MySQL作为大数据文本搜索,而是要选用搜索引擎,跟他们底层采用的结构有关系

2023-07-10 12:03:06 519

原创 Redis中的缓存雪崩、击穿、穿透的原因以及解决办法

Redis中的缓存雪崩、缓存击穿、缓存穿透的原因以及解决方法

2023-06-27 13:11:39 2365

转载 idea 调试快捷键

1、F7 单步调试,进入函数内部。 相当于eclipse的f5就是 进入到代码2、F8 单步调试,不进入函数内部。 相当于eclipse的f6 跳到下一步3、F9 继续执行,进入下一个断点或执行完程序4、Shift+F7 选择要进入的函数5、Shift+F8 跳出函数6、Alt+F8 执行表达式查看结果,debug时选中,查看值7、Atl+F9 Run To Cursor 运行到光标处8、Ctrl+F8 设置/取消当前行断点Ctrl+Shift+F8

2022-04-01 15:24:42 6909

原创 Redis 多线程

在Redis 6.0中,非常受关注的第一个新特性就是多线程。这是因为,Redis一直被大家熟知的就是它的单线程架构,虽然有些命令操作可以用后台线程或子进程执行(比如数据删除、快照生成、AOF重写)。但是,从网络IO处理到实际的读写命令处理,都是由单个线程完成的。随着网络硬件的性能提升,Redis的性能瓶颈有时会出现在网络IO的处理上,也就是说,单个主线程处理网络请求的速度跟不上底层网络硬件的速度。为了应对这个问题,一般有两种方法。第一种方法是,用用户态网络协议栈(例如DPDK)取代内核网络协议栈,让网络

2021-12-28 19:14:10 5612

原创 Redis Cluster 集群

我曾遇到过这么一个需求:要用Redis保存5000万个键值对,每个键值对大约是512B,为了能快速部署并对外提供服务,我们采用云主机来运行Redis实例,那么,该如何选择云主机的内存容量呢?我粗略地计算了一下,这些键值对所占的内存空间大约是25GB(5000万*512B)。所以,当时,我想到的第一个方案就是选择一台32GB内存的云主机来部署Redis。因为32GB的内存能保存所有数据,而且还留有7GB,可以保证系统的正常运行。同时,我还采用RDB对数据做持久化,以确保Redis实例故障后,还能从RDB

2021-12-27 19:46:52 157

原创 Redis 哨兵机制

在主从库模式下,如果从库发生故障了,客户端可以继续向主库或其他从库发送请求,进行相关的操作,但是如果主库发生故障了,那就直接会影响到从库的同步,因为从库没有相应的主库,可以进行数据复制操作了。而且,如果客户端发送的都是读操作请求,那还可以由从库继续提供服务,这在纯读的业务场景下还能被接受。但是,一旦有写操作请求了,按照主从库模式下的读写分离要求,需要由主库来完成写操作。此时,也没有实例可以来服务客户端的写操作请求了。无论是写服务中断,还是从库无法进行数据同步,都是不能接受的。所以,如果主库挂了,我们

2021-12-23 19:33:26 118

原创 Redis主从复制

之前没有了解过 Redis中 RDB 和 AOF 的小伙伴,点这里先了解下 RDB 和 AOF如果 Redis 发生了宕机,它们可以分别通过回放日志和重新读入 RDB 文件的方式恢复数据,从而保证尽量少丢失数据提升可靠性。不过,即使用了这两种方法,也依然存在服务不可用的问题。比如说,我们在实际使用时,只运行了一个Redis实例,如果这个实例宕机了,它在恢复期间,是无法服务新来的数据存取请求的。那么,我们总说的Redis具有高可靠性,又是什么意思呢?其实,是有两层含义的一是数据尽量少丢失二是服务尽量

2021-12-22 20:37:24 120

原创 单线程Redis 为什么那么快

通常来说,单线程的处理能力要比多线程差很多,但是Redis却能使用单线程模型,达到每秒数十万级别的处理能力,这是为什么呢?其实,这是Redis多方面设计选择的一个综合结果。一方面,Redis的大部分操作在内存上完成,再加上它采用了高效的数据结构,例如哈希表和跳表,这是它实现高性能的一个重要原因。另一方面,就是Redis采用了多路复用机制,使其在网络IO操作中,能并发处理大量的客户端请求,实现高吞吐率接下来,重点说下多路复用机制。首先,我们要弄明白网络操作的基本IO模型和潜在的阻塞点。毕竟,Redis采

2021-12-21 19:08:06 492

原创 Redis中“万金油“的string,为什么不好用了

分享一个曾经使用Redis时遇到的需求以及解决方案当时,要开发一个图片存储系统,要求这个系统能快速地记录图片ID,和图片在存储系统中保存时的ID(可以直接叫作图片存储对象ID)。同时,还要能够根据图片ID快速查找到图片存储对象ID。因为图片数量巨大,所以我们就用10位数来表示图片ID和图片存储对象ID,例如,图片ID为1101000052,它在存储系统中对应的ID号是3301000052。photo_id: 1101000052photo_obj_id: 3301000052可以看到,图片ID和

2021-12-20 18:43:20 184

原创 Redis 淘汰策略

Redis已经设置了过期时间也就是TTL,那么键过期了不就是已经删除了吗?为什么还存在淘汰策略呢?这要从Redis的过期策略来聊起过期策略分为两种一个是定时删除还有一个是惰性删除先来看下定时删除,就是Redis会将每个设置了过期时间的key,放入到一个独立的字典中,然后会定期遍历这个字典来删除到期的key。除了定时遍历之外,它还会使用惰性策略来删除过期的 key。所谓惰性策略就是在客户端访问这个 key 的时候,Redis 对 key 的过期时间进行检查,如果过期了就立即删除。说白了,定时

2021-12-15 19:38:17 766

原创 Redis持久化之RDB与AOF 的区别

Redis 持久化Redis绝大部分情况都是当做缓存来使用,因为它把后端数据库中的数据存储在内存中,再直接从内存中读取数据,响应速度会非常快但是有一个不可忽略的问题,一旦服务器宕机,内存中的数据将会全部丢失我们很容易想到的解决方案是,从后端数据库恢复这些数据,但是这种方式存在两个问题一个是,需要频繁访问数据库,会给数据库带来巨大的压力另外,这些数据是从慢速数据库中读取出来的,性能肯定比不上从Redis中读取,导致使用这些数据的应用程序响应也会随之变慢所以,对于Redis来说,实现数据的持久化,避

2021-12-13 22:18:05 489

原创 CentOS系统搭建Redis集群(1主2从3哨兵)

这里我们采用的集群整体架构就是主从结构+哨兵(sentinel),实现容灾的自动切换,如下图所示:一个主节点(master)可拥有多个从节点(slave),从节点实现对主节点的复制,保证数据同步。而哨兵(sentinel)则对各节点进行监控,主要包括主节点存活检测、主从运行情况检测等,一旦主节点宕机,哨兵可自动进行故障转移 (failover)、主从切换。接下来就开始搭建这样一个集群,首先是主从结构,然后是哨兵模式接下来搭建 Redis 1主2从集群Redis 集群搭建配置如下主机配置bi

2021-11-30 19:45:39 963

原创 Linux系统上搭建 Redis Cluster 集群

首先创建集群目录[root@localhost local]# mkdir /usr/local/redis/cluster要创建6个实例,在这个文件夹中再创建6个文件夹,进入集群目录可以看到已经创建成功了,后面多了个data目录,这个目录是放数据的,一会讲配置文件的时候在具体的细说[root@localhost local]# cd cluster/[root@localhost cluster]# mkdir -p 9001/data 9002/data 9003/data 9004.

2021-11-29 20:54:24 767

原创 Docker 搭建 Redis 主从复制 + 哨兵集群

主从复制在官网下载 redis.conf 配置文件,修改以下内容修改配置文件master 节点配置port 6379# IP绑定,注释此行# bind 127.0.0.1pidfile /var/run/redis_6379.pidlogfile "/data/redis.log"replication 节点配置# 如果同一台服务器上启动,注意修改为不同的端口port 6380logfile "/data/slave_1.log"# 同一台服务器上要修改成 docker 容器内部

2021-11-28 21:29:50 140

原创 Docker 搭建 Redis Cluster 集群

Redis 配置文件根据需要自己可以定制# bind 127.0.0.1port ${PORT}protected-mode nocluster-enabled yescluster-config-file nodes-${PORT}.confcluster-node-timeout 5000cluster-announce-ip 10.0.18.8cluster-announce-port ${PORT}cluster-announce-bus-port 1${PORT}append

2021-11-27 09:46:18 476

原创 CentOS 安装 Redis

下载Redis进入官网找到下载地址:https://redis.io/download右键 Download按钮,选择复制链接进入到Xshell控制台[root@centos ~]# cd /usr/local[root@centos local]# mkdir redis[root@centos local]# cd redis/[root@centos local]# wget https://download.redis.io/releases/redis-6.2.4.tar.gz

2021-11-26 09:43:03 349

原创 Docker 安装 Redis

查看Docker中可用的版本docker search redis拉取官方最新版本的镜像docker pull redis查看拉取的本地镜像docker images非自定义配置文件运行容器docker run -itd --name redis-01 -p 6379:6379 redis-p 6379:6379 映射容器服务的6379端口到宿主机的6379端口。外部可以直接通过 宿主机ip:6379 访问到 Redis服务.查看容器的运行信息docker ps测试r

2021-11-24 21:00:43 769

原创 如何在.NET中使用Nginx缓存

如何在.NET中使用Nginx缓存缓存对于大家来说已经不是很陌生了,同学们或多或少都有听到过缓存,比如计算机硬件里的CPU,他就有缓存,还有呢就是经常使用的浏览器,也是有缓存的那这里就有一个问题,我们直接去访问我们的WEB服务也是可以的,我们为什么要用缓存呢?那在我们的项目中,缓存要怎么使用呢?就是要把我们经常要用到或者说是要访问的东西,把他存起来,以便于我们下次访问的时候呢,我们就可以直接读取我们已经存到缓存中的东西或者是内容。缓存不仅可以加速我们的访问,还可以改善网站的性能,同时减轻上游服务器的

2021-07-07 16:33:54 354

原创 Java NIO:浅析IO

Java NIO:浅析I/O在进入Java NIO 变成之前,我们今天先来讨论一些比较基础的知识:I/O模型。先从同步和异步概念说起,然后接着阐述阻塞和非阻塞的区别,接着介绍了阻塞IO和非阻塞IO的区别,然后介绍了同步IO和异步IO的区别,接下来介绍5中IO模型,最后介绍了两种高性能IO设计相关的设计模式(Reactor和Proactor)。1.什么是同步?什么是异步?2.什么是阻塞?什么是非阻塞?.3.什么是阻塞IO?什么是非阻塞IO?4.什么是同步IO?什么是异步IO?5.五种IO模型

2020-06-24 13:59:46 265

原创 Linux下Docker安装配置

Linux下Docker安装配置官方安装文档: https://docs.docker.com/install/linux/docker-ce/centos/1.CentOS服务器的系统是CentOS7.6的[root@VM_0_3_centos ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) 安装依赖...

2020-03-19 14:56:28 161

原创 VMware Workstation 创建虚拟机及 xshell 远程连接虚拟机

创建虚拟机,有两种方式第一种:主页创建新的虚拟机第二种:文件 新建虚拟机选择 典型(推荐) 就可以选择自己的 本地系统上的 镜像文件路径,一般都可以检测到选择虚拟机安装位置,不会根据虚拟机名称创建文件夹,最后一级目录是你要安装的文件夹一般选择第一个就可以,硬盘大小看自己的设置,我一般都是设置成50G 后面可以再改选择自定义硬件配置内存,处理器...

2019-03-08 14:03:19 1644

原创 centos7安装 JDK1.8教程

用的是xshell连接虚拟机检查虚拟机上是否安装有jdk开始安装1、用 mkdir /usr/local/java 创建文件夹cd /usr/local 进入文件夹输入 ll查看刚才创建的java 文件夹cd java/ 进入文件夹输入 ll 查看 文件夹 总容量为0 没有任何文件打开新建文件传输会显示如下画面,找到本地系统的linux j...

2019-03-08 11:52:59 157

原创 SVN服务器彻底删除错误提交的版本

尝试通过以下操作可以删除SVN服务器上错误提交的版本,即本次提交1、首先找到本次提交后生成的版本号,例如为:162、登录到SVN服务器上,进入到项目的SVN目录,或者找到本地的SVN配置目录3、进入db目录,删除此目录下的rep-cache.db。并修改此目录下的current文件,将其修改为上一个版本4、删除db/revs/0/目录下的16文件5、删除db/revprop...

2019-01-23 16:10:09 5571

原创 git clone 远程仓库到本地非空目录下

clone 到本地非空目录会出现提示,例如:到你想 git clone 的本地非空文件下然后执行 git clone 到一个临时文件夹 tmp在把git clone 下来的 .git 移动到当前文件夹这个时候就把第一步 git clone 的临时文件夹tmp删掉最后删除 git 操作痕迹,撤销当前 head 的内容并重置...

2019-01-10 15:56:08 2520

原创 spring boot +spring cloud 启动报错问题

这个启动异常围绕了我一下午,上网也搜了许多资料,自己做下整合分析,判断觉得可能是spring boot +spring cloud 的版本冲突问题,于是乎就上网搜了下版本方面的兼容问题,问题最终得以解决。java.io.FileNotFoundException: class path resource [org/springframework/web/context/ServletContex...

2018-03-28 11:29:25 9058

空空如也

空空如也

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

TA关注的人

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