摘要:
代码讲解 stringRedisTemplate.opsForList().leftPushAll(CACHE_SHOP_TYPE_KEY, shopTypes); 这行代码的作用是将shopTypes列表中的所有元素批量从左侧推入(即插入)到Redis中键名为CACHE_SHOP_TYPE_KEY
阅读全文
posted @ 2025-04-08 17:57
kuki'
阅读(98)
推荐(0)
摘要:
Service Interface https://baomidou.com/guides/data-interface/#service-interface IService 是 MyBatis-Plus 提供的一个通用 Service 层接口,它封装了常见的 CRUD 操作,包括插入、删除、查询
阅读全文
posted @ 2025-04-08 17:49
kuki'
阅读(99)
推荐(0)
摘要:
在Spring框架中,StringRedisTemplate是一个专门用于操作Redis字符串数据的模板类。它提供了多种方法来处理Redis中的数据结构,包括列表(List)、集合(Set)、哈希(Hash)等。使用了opsForList().range方法来获取Redis列表中的元素。 List<
阅读全文
posted @ 2025-04-08 17:22
kuki'
阅读(101)
推荐(0)
摘要:
缓存问题与解决策略 缓存雪崩(Cache Avalanche): 缓存雪崩是指在同一时间大量缓存数据过期,导致大量请求直接访问数据库,可能导致数据库宕机。 解决方案: 设置不同的过期时间: 为缓存数据设置不同的过期时间,避免大量数据同时过期。 加锁或队列: 使用锁或队列控制缓存重建的进程,防止大量
阅读全文
posted @ 2025-04-08 14:34
kuki'
阅读(30)
推荐(0)
摘要:
由于 UserHolder 的方法是静态的,您可以在任何地方直接通过类名调用这些方法,而无需创建 UserHolder 的实例。这种设计模式使得在整个应用程序中都可以方便地访问和管理用户信息。 UserHolder 是否是全局变量 UserHolder 本身是一个类,其中的静态变量(如上述示例中的
阅读全文
posted @ 2025-04-08 00:09
kuki'
阅读(36)
推荐(0)
摘要:
解决 application.yaml中修改RabbitMQ相关 rabbitmq: host: localhost username: guest password: guest virtual-host: / port: 5672 说明: host要和浏览器中RabbitMQ管理页面一致 账户和
阅读全文
posted @ 2025-04-07 18:12
kuki'
阅读(94)
推荐(0)
摘要:
下载 brew install rabbitmq 安装RabbitMQWeb管理界面 rabbitmq-plugins enable rabbitmq_management 启动rabbitmq brew services start rabbitmq 打开浏览器输入 http://localhos
阅读全文
posted @ 2025-04-07 18:08
kuki'
阅读(15)
推荐(0)
摘要:
1. 解决 原因是你的Redis虽然正确启动了,但是你的Redis有密码,所以在Redisson实例化的时候需要配置,在黑马点评项目里的config/RedissonConfig.java中增加setPassword("密码")进行配置。 @Bean public RedissonClient re
阅读全文
posted @ 2025-04-07 16:47
kuki'
阅读(492)
推荐(0)
摘要:
使用 brew 启动软件 brew services start redis 执行命令,启动服务 redis-server
阅读全文
posted @ 2025-04-07 16:18
kuki'
阅读(49)
推荐(0)
摘要:
学习自 https://blog.csdn.net/m0_74570541/article/details/133352659 安装(homebrew) brew install nginx 启动nginx brew services start nginx // 重启的命令是: brew serv
阅读全文
posted @ 2025-04-07 16:11
kuki'
阅读(26)
推荐(0)
摘要:
打开 IntelliJ IDEA,选择 Setting 打开设置对话框。 在设置对话框中,选择 Editor > Code Style > Java(或其他你正在使用的编程语言)。 在 Code Style 页面中,找到 Code Generation 部分。 在 Code Generation 部
阅读全文
posted @ 2025-04-07 12:03
kuki'
阅读(320)
推荐(0)
摘要:
IDEA 全局查找快捷键: Shif+ Command + F
阅读全文
posted @ 2025-04-07 10:49
kuki'
阅读(17)
推荐(0)
摘要:
节选自 https://blog.csdn.net/bestone0213/article/details/47424255 IoC的一个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象。这一点是通过DI(Dependency Injection,依赖注入)来实现的。 理解:向某个对象提供
阅读全文
posted @ 2025-04-06 14:50
kuki'
阅读(12)
推荐(0)
posted @ 2025-04-06 14:11
kuki'
阅读(15)
推荐(0)
摘要:
怎么理解Bean? Bean是指由Spring容器管理的对象,它的生命周期由容器控制。 它的生命周期由容器控制,包括 创建、 初始化、 使用和销毁。 通过三种方式声明:注解方式、XML配置、Java配置。 三种声明方式 使用 @Component、@Service、@Repository、@Cont
阅读全文
posted @ 2025-04-05 23:12
kuki'
阅读(102)
推荐(0)
posted @ 2025-04-05 22:41
kuki'
阅读(261)
推荐(0)
摘要:
需要考虑字段的基数(即字段中不同值的数量)和查询的选择性(即通过索引过滤掉无关数据的能力)。 性别字段: 通常只有 "男" 和 "女" 两种取值,基数非常低。由于值的重复率高,索引的选择性差,使用索引的效果有限,甚至可能导致查询优化器不使用索引。 出生年月字段: 理论上可以有较多不同的取值,基数相对
阅读全文
posted @ 2025-04-04 16:21
kuki'
阅读(28)
推荐(0)
摘要:
在 MySQL 的 InnoDB 存储引擎中,执行 SELECT 语句时,默认情况下不会对表或行加锁。InnoDB 使用多版本并发控制(MVCC)机制,通过读取数据的快照来实现一致性非锁定读取,从而允许多个事务并发地读取数据而不会相互阻塞。 然而,在以下情况下,SELECT 语句会对数据行加锁: 显
阅读全文
posted @ 2025-04-04 16:16
kuki'
阅读(38)
推荐(0)
摘要:
简单的读取操作: 对于只读操作,如果不需要修改数据,通常不需要开启事务。(不过,如果读取操作需要满足一定的隔离性要求,可能仍然需要在事务中执行。) 独立操作: 如果一个操作是完全独立的,并且它的成功或失败不影响其他数据的一致性,那么可以不必开启事务。例如,向日志表中插入一条日志记录。 性能考虑: 事
阅读全文
posted @ 2025-04-04 15:57
kuki'
阅读(29)
推荐(0)
摘要:
基类的 protected 成员是包内可见的,并且对子类可见; 若子类与基类不在同一包中,那么在子类中,子类实例可以访问其从基类继承而来的protected方法,而不能访问基类实例的protected方法。
阅读全文
posted @ 2025-04-03 22:27
kuki'
阅读(10)
推荐(0)
摘要:
super 关键字:我们可以通过 super 关键字来实现对父类成员的访问,用来引用当前对象的父类。 this 关键字:指向自己的引用,引用当前对象,即它所在的方法或构造函数所属的对象实例。
阅读全文
posted @ 2025-04-03 20:02
kuki'
阅读(13)
推荐(0)
摘要:
声明抽象方法会造成以下两个结果: 如果一个类包含抽象方法,那么该类必须是抽象类。 任何子类必须重写父类的抽象方法,或者声明自身为抽象类。
阅读全文
posted @ 2025-04-03 16:32
kuki'
阅读(9)
推荐(0)
摘要:
在 Java 中,抽象类不能直接实例化, 也就是说不能用 new 关键字创建抽象类的对象。 抽象类主要用于定义共通接口和部分实现, 具体的对象必须由其具体子类来创建, 抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。 而这些子类必须实现抽象类中的所有抽象方法才能被实例化。
阅读全文
posted @ 2025-04-03 16:27
kuki'
阅读(40)
推荐(0)
摘要:

实例化是指创建类的对象(或实例)的过程。 通过实例化,可以根据类的定义, 在内存中分配空间, 并初始化该对象的属性和方法,使其可供程序使用
阅读全文
posted @ 2025-04-03 15:50
kuki'
阅读(37)
推荐(0)
摘要:
抽象类不能直接实例化。 也就是说,不能使用 new 关键字来创建一个抽象类的对象。 抽象类通常用于定义一些共性行为或接口,让具体子类继承并实现其中的抽象方法,从而确保所有子类都符合该规范。 由于抽象类不能实例化对象,所以抽象类必须被继承
阅读全文
posted @ 2025-04-03 15:22
kuki'
阅读(26)
推荐(0)
摘要:
抽象类实现接口时,不必实现接口中所有的方法,只要这个类本身被声明为抽象类即可。 未实现的方法会保留为抽象方法,最终需要由具体子类实现才能实例化对象。 Animal.java package interfaceAndAbstract; // 定义一个接口 public interface Animal
阅读全文
posted @ 2025-04-03 15:12
kuki'
阅读(9)
推荐(0)
摘要:
HashMap 的 key 不重复性主要是通过两步来实现的: 通过 hashCode 确定存储位置: 当你使用 put 方法添加一个 key-value 对时, HashMap 会先调用 key 的 hashCode() 方法计算出一个哈希值, 并根据这个值确定该 key 应该存放在哪个桶中。 通过
阅读全文
posted @ 2025-04-03 12:31
kuki'
阅读(115)
推荐(0)
摘要:
在 HashMap 中,key 是不允许重复的。 如果你使用一个已存在的 key 进行 put 操作,原来该 key 对应的 value 会被新值覆盖。
阅读全文
posted @ 2025-04-03 12:23
kuki'
阅读(28)
推荐(0)
摘要:
当 hashCode 重复时,也就是发生哈希碰撞,HashSet(实际上是基于 HashMap 实现的)会采取以下措施来处理: 同一桶中存储多个对象: 当多个对象计算出相同的 hashCode 后,它们会被存放到同一个桶中。 使用 equals() 方法区分: 在同一桶中,添加新元素时,会依次使用
阅读全文
posted @ 2025-04-03 12:19
kuki'
阅读(40)
推荐(0)
摘要:
是的,两个不同的对象在计算 hashCode 时有可能得到相同的值,这种情况称为“哈希碰撞”。 Java 的 hashCode 方法并没有保证不同对象一定返回不同的哈希码, 只保证如果两个对象通过 equals() 比较为相等,它们的 hashCode 必须相同。 因此,即使两个对象不相等,也可能产
阅读全文
posted @ 2025-04-03 11:22
kuki'
阅读(34)
推荐(0)
摘要:
HashSet 底层是基于 HashMap 实现的。 在添加元素时,HashSet 会调用元素的 hashCode() 方法来计算其哈希值,并定位到对应的桶。 如果该桶中已经有一个或多个元素, 它会用 equals() 方法比较新元素与桶中已有元素是否相等。 如果相等,说明该元素已经存在,新的元素就
阅读全文
posted @ 2025-04-03 11:09
kuki'
阅读(33)
推荐(0)
posted @ 2025-04-03 10:55
kuki'
阅读(16)
推荐(0)
摘要:

Java集合
阅读全文
posted @ 2025-04-02 20:45
kuki'
阅读(49)
推荐(0)
posted @ 2025-04-02 19:36
kuki'
阅读(9)
推荐(0)
摘要:

JavaSE
阅读全文
posted @ 2025-04-02 19:18
kuki'
阅读(17)
推荐(0)
摘要:

JavaSE
阅读全文
posted @ 2025-04-02 19:06
kuki'
阅读(37)
推荐(0)
摘要:

阿里云一面面经重基础
阅读全文
posted @ 2025-04-02 11:47
kuki'
阅读(15)
推荐(0)