- 博客(112)
- 收藏
- 关注
原创 redis 过期键删除策略与回收策略
当key设置有过期时间,且过期时间到达时,立即执行key的删除操作优点:节约内存,到时就删除,立即释放不必要的内存占用缺点:CPU压力较大,无论CPU此时负载量多高,均占用CPU,会影响redis服务器响应时间和指令吞吐量总结:用处理器性能换取存储空间(时间换空间),适用于小内存,强CPU场景特点1:CPU性能占用设置有峰值,检测频度可自定义设置特点2:内存压力不是很大,长期占用内存的冷数据会被持续清理。
2025-03-06 10:52:21
598
原创 Redis RedisCommandExecutionException: ERR DISCARD without MULTI
redis配置:以下使用事务需要注意两点第一点是开启支持事务,以及事务的执行建议使用redisTemplate的execute方法实现接口,因为官网建议的spring官网https://docs.spring.io/spring-data/data-redis/docs/current/reference/html/#tx.spring。因为redisTemplate使用事务命令multi之后discard命令和exec命令二选一,因为不管执行哪一个代码最后都会关闭当前的连接,看源码。
2025-03-04 10:45:15
245
原创 Redis高级特性发布/订阅(Pub/Sub)
发布/订阅(Publish/Subscribe,简称Pub/Sub)是一种消息传递模式,允许消息的生产者(发布者)和消费者(订阅者)通过频道进行通信,而无需直接了解彼此的存在。发布者将消息发布到特定的频道,订阅者则订阅感兴趣的频道以接收相应的消息。这种模式实现了松耦合的组件间通信,适用于实时通知、事件驱动架构等场景。Redis的发布/订阅(Pub/Sub)模式是实现实时消息传递和事件驱动架构的重要工具,具有高性能、低延迟、易于集成等优点。
2025-02-20 17:08:10
950
原创 解决 redis内存过度分配 | WARNING Memory overcommit must be enabled
内存过度分配是 Linux 系统中的一个机制,允许系统分配的总内存超过实际物理内存的总量。默认情况下,Linux内核根据可用的物理内存来决定是否允许分配内存块。然而,在某些情况下,比如 Redis的后台保存或复制操作,系统可能需要分配超过可用物理内存的内存,这时如果内存过度分配未启用,操作可能会失败。
2025-02-19 14:13:20
469
1
原创 springboot集成日志
在 Spring Boot 项目中集成日志记录,可以使用常见的日志框架如 Logback 或 Log4j2。Spring Boot 默认使用的是 Logback,但你也可以根据需求选择其他框架。
2025-02-08 10:26:19
1041
原创 spring-boot-starter-parent 作用
spring-boot-starter-parent是一个特殊的父项目,它为SpringBoot应用提供了一组默认的配置和依赖管理。它的主要作用是简化Spring Boot应用的构建和配置。
2025-02-07 16:19:13
955
原创 SpringBoot跨域问题解决方案~
跨域问题是浏览器为了保护用户的信息安全,实施了同源策略(Same-OriginPolicy),即只允许页面请求同源(相同协议、域名和端口)的资源,当 JavaScript发起的请求跨越了同源策略,即请求的目标与当前页面的域名、端口、协议不一致时,浏览器会阻止请求的发送或接收。
2025-02-07 15:00:01
937
原创 springboot读取配置文件的几种方式
首先定义一个配置类,然后使用@ConfigurationProperties(prefix = “myapp”)注解它,其中prefix指定了配置属性的前缀。通过Environment抽象来访问配置属性,这可以通过@Autowired注入Environment对象实现。通过 @PropertySource,我们可以为每个环境加载不同的配置文件,从而实现环境隔离。在Spring Bean的字段上使用@Value注解来注入配置值。Spring Boot 可以通过以下注解来绑定变量。
2025-02-07 10:01:29
204
原创 MessageSource实现国际化
messages_en_US.properties(英语)messages_fr_FR.properties(法语)messages_zh_CN.properties(中文)配置文件内容 - 样例。
2025-02-05 11:05:27
159
原创 连接服务器mysql 1130- Host ‘1.203.173.72‘ is not allowed to connect to this MySQL server
第一种方式1, 打开mysql配置文件vi /etc/my.cnf在mysqlId下面加入 : skip-grant-tables 跳过密码登录2, Navicat 可以链接到数据库,修改用户表的host ,改成 %号3,注释点mysql 配置文件中的 skip-grant-tables 配置,第二种方式1, 打开mysql配置文件vi /etc/my.cnf在mysqlId下面加入 : skip-grant-tables 跳过密码登录2, 登录服务器 ,输入命令直接回车
2024-07-17 11:28:47
205
原创 mysql char 与 varchar 的区别
字段存储固定长度的字符串,如果数据不足指定的长度,MySQL会在其后添加空格以达到指定的长度。
2024-03-21 09:16:43
420
1
原创 redis概述和安装
redis-benchmark:性能测试工具,可以在自己本子允许,看看自己本子性能如何redis-check-aof:修复有问题的AOF文件,rdb和aof后面讲redis-check-dump:修复有问题的dump.rdb文件redis-sentinel:redis集群使用redis-server:redis服务器启动命令redis-clit:客户端,操作入口。
2024-03-11 08:55:01
480
原创 简述 final 关键字 有哪些用法?
1 , 被final修饰的类不可以被继承2 , 被final修饰的方法不可以被重写3 , 被final修饰的变量不可以被改变.如果修饰引用,那么表示引用不可变,引用指向的内容可变.4 ,被final修饰的方法,JVM会尝试将其内联,以提高运行效率5 ,被final修饰的常量,在编译阶段会存入常量池中.除此之外,编译器对final域要遵守的两个重排序规则更好:在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序 初次读一个包含final
2024-03-08 14:27:39
378
原创 简述Hashcode的作用
java的集合有两类,一类是List,还有一类是Set。前者有序可重复,后者无序不重复。当我们在set中插入的时候怎么判断是否已经存在该元素呢,可以通过equals方法。但是如果元素太多,用这样的方法就会比较慢。于是有人发明了哈希算法来提高集合中查找元素的效率。 这种方式将集合分成若干个存储区域,每个对象可以计算出一个哈希码,可以将哈希码分组,每组分别对应某个存储区域,根据一个对象的哈希码就可以确定该对象应该存储的那个区域。hashCode方法可以这样理解:它返回的就是根据对象的内存地址换算出
2024-03-08 14:20:00
385
原创 ArrayList和linkedList的区别精简概述
Array获取数据的时间复杂度是O(1),但是要删除数据却是开销很大,因为这需要重排数组中的所有 数据, (因为 删除数据以后,需要把后面所有的数据前移)
2024-03-08 11:40:26
621
原创 Redis与 Memcache区别
Redis与 Memcache区别1 , Redis 和 Memcache 都是将数据存放在内存中,都是内存数据库。不过 Memcache 还可用于缓存其他东西,例如图片、视频等等。2 , Memcache 仅支持key-value结构的数据类型,Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,hash等数据结构的存储。3 , 虚拟内存– Redis 当物理内存用完时,可以将一些很久没用到的value 交换到磁盘4 , 分布式–设定
2024-03-07 10:47:45
653
原创 List去除重复数据的五种方式
LinkedHashSet 是在一个 ArrayList 删除重复数据的最佳方法。LinkedHashSet 在内部完成两件事:删除重复数据保持添加到其中的数据的顺序Java 示例使用 LinkedHashSet 删除 arraylist 中的重复项。在给定的示例中,numbersList 是包含整数的arraylist,其中一些是重复的数字。
2024-02-26 16:22:12
813
原创 redis 集群配置
redis集群是对redis的水平扩容,即启动N个redis节点,将整个数据分布存储在这个N个节点中,每个节 点存储总数据的1/N。如下图:由3台master和3台slave组成的redis集群,每台master承接客户端三分之一请求和写入的数据,当master挂掉后,slave会自动替代master,做到高可用。如下图,咱们再来看看集群合并的过程中输出的一些信息Redis集群内部划分了16384个slots(插槽),合并的时候,会将每个slots映射到一个master上面,比。
2023-11-01 11:22:57
369
原创 redis 配置主从复制,哨兵模式案例
反客为主的自动版,能够自动监控master是否发生故障,如果故障了会根据投票数从slave中挑选一个作为master,其他的slave会自动转向同步新的master,实现故障自动转义。
2023-10-25 14:49:14
997
原创 redis持久化之AOF(Append Only File)
1. AOF文件是一个只进行追加的日志文件2. edis可以在AOF文件体积变得过大时,自动地在后台对AOF文件进行重写3. AOF文件有序地保存了对数据库执行的所有写入操作,这些写入操作以redis协议的格式保存,因此AOF文件的内容非常容易被人读懂,对文件进行分析也很轻松。4. 对于相同的数据集来说,AOF文件的体积通常要大于RDB文件的体积5. 根据所使用的fsync策略,AOF的速度可能会慢于RDB官方推荐2个都启用。如果对数据不敏感,可以单独用RDB。
2023-10-24 15:32:17
673
原创 redis持久化之RDB(Redis DataBase)
Redis是一个基于内存的数据库,它的数据是存放在内存中,内存有个问题就是关闭服务或者断电会丢 失。Redis的数据也支持写到硬盘中,这个过程就叫做持久化。
2023-10-24 15:13:52
419
原创 redis 主从复制
在/opt/master-slave目录创建 redis-6380.conf 文件,内容如下,和上面master的类似,多了后面2行。下面我们来配置1主2从的效果,现实中是需要3台机器的,为了方便,我们就在一台机器上来演示,通过不同的端口来区分机器,3台机器的配置。若启动有误,大家好好检查下配置,也可以看日志,3台机器启动会在 /opt/master-slave 目录产生日 志,如下。执行下面命令创建 /opt/master-slave 目录,本次所有操作,通过下面2个命令查询从机slave1的信息。
2023-10-24 13:38:23
163
原创 linux 安装操作 redis
性能测试工具,可以在自己本子允许,看看自己本子性能如何:修复有问题的AOF文件,rdb和aof后面讲:修复有问题的dump.rdb文件:redis集群使用:redis服务器启动命令redis-clit:客户端,操作入口。
2023-10-18 10:58:20
338
原创 Linux 安装 git
下载git: wget https://Github.com/Git/Git/archive/v2.9.5.tar.gz。
2023-09-21 15:46:04
1202
原创 Arrays.asList() 有坑
Arrays.asList()方法是将数组转换为List的方法,它返回一个List对象,但这个List对象并不是java.util.ArrayList对象,而是Arrays内部的ArrayList对象。Arrays.ArrayList类继承自AbstractList,实现了List接口。它重写了add()、remove()等修改List结构的方法,并将它们直接抛出UnsupportedOperationException异常,从而禁止了对List结构的修改。
2023-07-21 15:21:53
270
原创 Spring中@NotEmpty、@NotBlank、@NotNull 的区别和使用
进行校验的时候,当校验不通过的时候,程序会抛出400异常,阻止方法中的代码执行,这时需要再写一个全局校验异常捕获处理类,然后返回校验提示。4:总体来说,@Validated 使用起来要比 @Valid 方便一些,它可以帮我们节省一定的代码,并且使得方法看上去更加的简洁。1:@Valid 和 @Validated 两者都可以对数据进行校验,待校验字段上打的规则注解(@NotNull,注:被其标注的字段可以使用 @size、@Max、@Min 对字段数值进行大小的控制。@Validated 包的位置。
2023-07-03 14:15:36
736
原创 list 去重多种方式比较
准备数据 : 造出一个 List 模拟数据,一共2W条,里面有一半数据1W条是重复的。这里是采取使用 set 的 add 方法做去重。
2023-06-13 14:49:44
130
原创 int(1) 和 int(10)区别
有个表的要加个user_id字段,user_id字段可能很大,int(1)怕是不够用吧,接下来是一通解释。我们知道在mysql中 int占4个字节,那么对于无符号的int,最大值是2^32-1 =4294967295,将近40亿,难道用了int(1),就不能达到这个最大值吗?id字段为无符号的int(1),我来插入一个最大值看看。可以看到成功了,说明int后面的数字,不影响int本身支持的大小,int(1)、int(2)…int(10)没什么区别。
2023-04-12 11:46:32
2522
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人