- 博客(16)
- 收藏
- 关注
原创 正向代理与反向代理
正向代理和反向代理都可以实现数据传输和代理的功能,但它们的位置、作用和用途有所不同。正向代理主要位于客户端和服务器之间,用于缓存和代理;而反向代理主要位于客户端和应用服务器之间,用于隐藏真实服务器信息、增强安全性并提高网站性能。
2023-08-14 20:35:23
654
原创 Redisson的看门狗策略——保障Redis数据安全与稳定的机制
看门狗策略是一种自动检测并处理过期键的机制。它基于Redis的“WATCH”命令实现,通过在Redisson库中创建一个监视器(Watch Dog)来监控Redis服务器上的指定键。当应用程序使用Redisson库监视一个键时,Watch Dog会向Redis服务器发送一个“WATCH”命令,并在服务器上对该键进行监视。如果另一个客户端尝试修改被监视的键,Redis服务器将返回一个错误。这个错误会被Watch Dog捕获并处理。
2023-08-10 20:16:58
3012
2
原创 死锁的四个必要条件及如何防止死锁
死锁是操作系统中的一个重要问题,它是指两个或更多的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,如果没有外力干涉,它们都无法继续执行下去。死锁不仅会严重影响系统的正常运行,还会导致系统的崩溃和数据损坏。
2023-08-09 20:11:26
606
原创 redis中哨兵机制解决方案
Sentinel(哨岗、哨兵)是Redis的高可用性(high availability)解决方案:由一个或多个Sentinel实例(instance)组成的Sentinel系统(system)可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器,然后由新的主服务器代替已下线的主服务器继续处理命令请求。
2023-08-08 21:23:33
240
转载 Redis缓存的淘汰机制
假设生产环境中MySQL 数据库有 1000万条数据,但是Redis缓存中只存能10万条的数据,我们怎么才能保证 Redis 中的数据都是热点数据?在这里我们需要Redis缓存淘汰机制,保证Redis中的数据都是热点数据,Redis缓存也不会因为大量的key撑爆内存。
2023-07-22 17:29:33
223
原创 Redis缓存的雪崩、击穿、穿透问题
缓存雪崩是指当缓存中有大量的key在同一时刻过期,或者Redis直接宕机了,导致大量的查询请求全部到达数据库,造成数据库查询压力骤增,甚至直接挂掉。缓存击穿是指当缓存中某个热点数据过期了,大量的数据请求击穿了某个key,在该热点数据重新载入缓存之前,有大量的查询请求穿过缓存,直接查询数据库。这种情况会导致数据库压力瞬间骤增,造成大量请求阻塞,甚至直接挂掉。缓存穿透是指查询一个缓存中和数据库中都不存在的数据,导致每次查询这条数据都会透过缓存,直接查库,最后返回空。
2023-07-20 21:20:44
72
原创 Java的类加载机制
类加载器是在加载阶段,通过类的全限定名,获取该类字节流数据。负责加载\lib 目录,或者被 -Xbootclasspath 参数制定的路径,例如 jre/lib/rt.jar 里所有的class文件。由C++实现,不是ClassLoader子类。负责加载Java平台中扩展功能的一些jar包,包括\lib\ext 目录中 或 java.ext.dirs 指定目录下的jar包。由Java代码实现。
2023-07-19 21:29:29
128
转载 CAP理论
CAP理论,指的是在一个分布式系统中,Consistency(一致性)、Availability(可用性)、Partition Tolerance(分区容错性),不能同时成立。
2023-07-17 20:56:47
73
原创 Redis的主从搭建-基于docker
昨天搭建好了redis的docker容器也就是redis_6379,今天以redis_6379作为master(主),配置他的slave(从)redis_6380.
2023-07-13 21:44:16
79
原创 Redis的docker搭建过程
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。输入命令:2.在docker中拉取redis输入命令:docker search redis输入命令:docker pull redis下载最新版本的re
2023-07-12 22:00:07
639
原创 Java设计模式--单例模式(三种实现方式)
单例模式是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式。简单来说保证在内存中有给定数量的对象,例如内存中产生唯一一个对象,不管创建多少次,也只有唯一的对象。
2023-07-11 21:27:54
1500
原创 前端项目工程化的开发过程--基于VS code
最早的前端开发就是实现页面,顶多再写写JS让页面可以有交互的特效。但是随着需求的增加,我们不仅要做Web应用,还要做App、小程序以及各种端。在这种需求日增的情况下,必须得考虑一种新的方式,优化前端的开发工作,例如,解决代码冗余,项目可维护性,提升版本迭代速度等等一系列的问题。前端工程化的概念也就是在这中情况下被提出了。
2023-07-10 21:54:37
161
原创 Spring Boot中的缓存注解@Cacheable,@CachePut,@CacheEvict 的作用及用法。
在 Spring Boot 中,缓存是非常重要的。通过使用缓存注解,可以方便地实现缓存功能,提高程序的性能。在代码中,我们可以通过使用 @Cacheable、@CachePut、@CacheEvict 注解来开启缓存功能,也可以通过配置文件来配置缓存属性。
2023-07-08 16:06:36
1045
转载 数据库mysql的优化方案
通常为了方便拼装查询条件,我们会默认使用该条件,数据库引擎会放弃索引进行全表扫描。1.所有的数据都储存在数据库当中,数据库的数据非常庞大,对数据库中的数据进行CRUD时的速度影响系统的相应速度.7、尽量避免在where条件中等号的左侧进行表达式、函数操作,会导致数据库引擎放弃索引进行全表扫描。6、尽量避免进行null值的判断,会导致数据库引擎放弃索引进行全表扫描。5、尽量避免在字段开头模糊查询,会导致数据库引擎放弃索引进行全表扫描。优化方式:使用具体的字段代替*,只返回使用到的字段。
2023-07-06 21:43:35
57
原创 SpringBoot整合MyBatis-Plus搭建项目
MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 Getting Startedhttps://docs.spring.io/spring-boot/docs/2.7.14-SNAPSHOT/reference/html/getting-started.html#getting-started.introducing-spring-boo
2023-07-05 21:47:22
1077
原创 MySQL的主从模式搭建--基于docker
1.在虚拟机中装好centOS 72.在centOS 7 中搭建好docker环境3.在docker中通过拉取镜像安装好mysql4.通过虚拟机的ip地址,连接navicat,测试mysql是否连接成功。
2023-07-04 21:58:10
166
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人