自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 高频面试--redis

现象 → 原因 → 方案”能举实际项目中的使用更加分不确定的地方坦诚说“我理解的是……”,不要硬编。

2025-05-27 22:03:46 1134

原创 高频面试--MySQL

若查询的字段全部包含在索引中,无需回表,直接通过索引返回数据。在存储引擎层利用索引过滤数据,减少回表次数。

2025-05-27 22:00:08 1049

原创 八股问---集合(2)

如果把上面的执行用一句话归纳的话,就相当于是ConcurrentHashMap通过对头结点加锁来保证线程安全的,锁的粒度相比 Segment 来说更小了,发生冲突和加锁的频率降低了,并发操作的性能就提高了。而且JDK1.8 使用的是红黑树优化了之前的固定链表,那么当数据量比较大的时候,查询性能也得到了很大的提升,从之前的 O(n) 优化到了 O(logn)的时间复杂度。当触发扩容时,HashMap 会创建一个新的数组,其大小是原来的 2 倍,并将原数组中的元素重新映射到新数组中,这个过程叫 rehash。

2025-05-26 17:40:12 1302

原创 八股文---集合(1)

双列集合一次需要存一对数据,分别为键和值键不能重复,值可以重复键和值是一一对应的,每一个键只能找到自己对应的值键+值这个整体我们称之为“键值对”或者“键值对对象”,在Java中叫做“Entry对象。

2025-05-26 17:37:01 1095

原创 AOP的代理模式

对于这一点,jdk代理是采用反射,你看,我都反射了,我还拿不到你的原始方法?直接获取到Method类,再放入特定的上下文环境,也就是AOP通知,调用invoke方法即可。而cglib代理是怎么获得原始方法的呢,它的代理类是继承目标类的,那都直接继承目标类了,那不就可以直接通过super.的形式调用目标类的原始方法。

2025-05-23 19:58:10 532

原创 八股--SSM(2)

1.直接在Select语句中增加数据库提供的分页关键字,然后在应用程序中传递当前页和每页展示页数2.Mybatis中提供的RowBounds对象,实现内存级别分页3.基于Mybatis里面的Interceptor拦截器,在Select语句执行之前动态拼接关键字Mybatis 在处理 #{} 时,会创建预编译的 SQL 语句,将 SQL 中的 #{} 替换为 ? 号,在执行 SQL 时会为预编译 SQL 中的占位符(?)赋值,调用 PreparedStatement 的 set 方法来赋值,预编译的 SQL

2025-05-23 19:55:44 1171

原创 八股文--JVM(2)

3.当Eden(伊甸园区)需要垃圾回收时,挑出一个空闲区域作为S(幸存区)区,用复制算法复制存活对象,这时候处于STW(线程暂停)5.将Eden(伊甸园区)以及之前幸存区中的存活对象,采用复制算法,复制到新的S(幸存区),其中较老的对象晋身老年代。,在垃圾回收时,将正在使用的对象复制到另一个内存空间中,然后将该内存空间清空,交换两个内存的角色,完成垃圾的回收。回收的,是一款以获取最短回收停顿时间为目标的收集器,停顿时间短,用户体验就好。,G1收集器是JDK1.7提供的一个新收集器,G1收集器基于"

2025-05-20 21:18:40 1243

原创 天机学堂项目面试回答

我这个项目是基于微服务架构的生产级在线教育项目,面向成年人的非学历职业技能培训平台。分为两部分,学生端:其核心业务主体就是学员,所有业务围绕着学员的展开。管理端:其核心业务主体包括老师、管理员、其他员工,核心业务围绕着老师展开。在领取优惠卷的时候因为我们领取的整个业务外面加了事务,而加锁的是其中的限领数量校验的部分。因此业务结束时,会先释放锁,然后等整个业务结束,才会提交事务。这就导致我们测试的时候还有出现超领。为了解决这个问题,我们将事务的范围缩小,保证了事务先提交,再释放锁,最终线程安全问题不再发生了。

2025-05-20 21:14:30 981

原创 深入理解Java中的Minor GC、Major GC和Full GC

Minor GC、Major GC和Full GC在Java垃圾回收机制中扮演着不同的角色,它们各自有着明确的作用范围、触发条件和特点。理解它们之间的区别和联系,对于优化Java应用程序的内存管理、提高应用程序的性能至关重要。在实际开发中,我们可以根据应用程序的特点和需求,合理选择垃圾回收器,并通过调整相关参数,来尽量减少Full GC的发生,降低垃圾回收对应用程序性能的影响。希望通过这篇博客,大家能对Java中的这三种GC有更深入的理解,在处理Java内存相关问题时能够更加得心应手。

2025-05-18 13:46:15 1392

原创 项目复习(2)

1.直接把需要的字段用.select(InteractionQuestion::getId.......)可以先把问题表的属性赋值了,最后一块修改数据库,不要多次查询修改。基于Redis数据结构模拟JDK的DelayQueue实现。例如RabbitMQ的死信队列。JDK自带延迟队列,基于阻塞队列实现。和上面的分页一模一样。

2025-05-17 19:47:17 847

原创 项目复习(1)

/2.查询正在学习的课程---按照lastest_learn_time排序,取第一个.one();

2025-05-17 19:37:28 367

原创 八股文--JVM(1)

直接内存:并不属于JVM的内存结构,不由JVM进行管理,是虚拟机的系统内存,常见与NIO操作时,用于数据缓冲区,他分配回收成本较高,但读写性能高。

2025-05-16 16:31:22 1257

原创 八股文--JUC(2)

ReentrantLock翻译过来是可重入锁,相对于synchronized它具备以下特点:可中断(可以主动放弃)可以设置超时时间可以设置公平锁支持多个条件变量与synchronized一样,都支持重入。

2025-05-16 16:29:46 1243

原创 八股文---java集合重点

后面还在更新后面还在更新。

2025-05-15 09:44:48 260

原创 八股文---消息队列

例如,像 RabbitMQ 可以通过配置将消息持久化到磁盘,通过将队列和消息都设置为持久化的方式(设置durable = true),这样在服务器重启后,消息依然可以被重新读取和处理。例如,在第一次处理失败后,等待一段时间(如 5 秒)后进行第二次重试,如果重试多次(如 3 次)后仍然失败,可以将消息发送到死信队列,以便后续人工排查或者采取其他特殊处理。:消息队列生产者为每条消息生成唯一的消息 ID,消费者在处理消息前,先检查该消息 ID 是否已经处理过,如果已经处理过则丢弃该消息。

2025-05-15 09:43:05 715

原创 八股文---JUC(1)

这个是在偏向锁开启之后的锁的状态,如果还没有一个线程拿到这个锁的话,这个状态叫做匿名偏向,当一个线程拿到偏向锁的时候,下次想要竞争锁只需要拿线程ID跟MarkWord当中存储的线程ID进行比较,如果线程ID相同则直接获取锁(相当于锁偏向于这个线程),不需要进行CAS操作和将线程挂起的操作。:这是没有开启偏向锁的时候的状态,在JDK1.6之后偏向锁的默认开启的,但是有一个偏向延迟,需要在JVM启动之后的多少秒之后才能开启,这个可以通过JVM参数进行设置,同时是否开启偏向锁也可以通过JVM参数设置。

2025-05-15 09:41:09 1022

原创 八股文---框架SSM(1)

AOP称为面向切面编程,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”(Aspect),减少系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。记录操作日志缓存处理Spring中内置的事务处理回答面向切面编程,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取公共模块复用,降低耦合。

2025-04-22 18:22:29 710

原创 八股文---Redis(2)

回答:单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离。一般都是一主多从,主节点负责写数据,从节点负责读数据3.1.2.能说一下,主从同步数据的流程回答1.从节点请求主节点同步数据(replication id、 offset )2.主节点判断是否是第一次请求,是第一次就与从节点同步版本信息(replication id和offset)3.主节点执行bgsave,生成rdb文件后,发送给从节点去执行。

2025-04-21 19:17:57 1188

原创 八股文---Redis(1)

允许延时一致的业务。

2025-04-19 22:19:58 1549

原创 八股文---MySQl(3)

微服务一般用的多。

2025-04-17 15:12:28 1339

原创 八股文---MySQl(2)

索引是帮助MySQL高效获取数据的数据结构(有序)。

2025-04-16 17:15:04 1238

原创 八股文---MySQL(1)

聚合查询多表查询表数据量过大查询深度分页查询表象:页面加载过慢、接口压测响应时间过长(超过1s)

2025-04-16 15:44:41 288

原创 SpringAi与大模型在项目中的应用(2)

在。

2025-04-14 10:48:10 962

原创 SpringAi与大模型在项目中的应用(1)

这是因为⼤模型是没有记忆的,因此我们调⽤API接⼝与⼤模型对话时,每⼀次对话信息都不会保留, 多次对话之间都是独⽴的,没有关联的。例如,有的模型可以根据⾳频⽣成⽂本,或者根据⽂本⽣成⾳频,还有的模型则可以根据⽂字⽣成图⽚,⽐如Dall-E、MidJourney。⾸先,我们需要下载⼀个Ollama的客⼾端,在官⽹提供了各种不同版本的Ollama,⼤家可以根据⾃⼰的需要下载。因此,不同的⼤模型由于System设定不。根据前⽂推测出接下来的⼀个词语后,把这个词语加⼊前⽂,再次交给⼤模型处理,推测下⼀个字,

2025-04-13 21:56:39 1325

原创 天机学堂第9天我遇到的异常

现在的方法,需要通过实现接口并注入自定义逻辑 来完成动态表名,用这个代码就可以解决了。在做MP动态表名插件的时候。

2025-04-08 20:36:48 212

原创 BitMap的使用(2)

最终,每一发子弹都会从备发射,这就像每一个bit位都会被遍历。

2025-04-07 16:41:37 393

原创 BitMap的使用(1)

当我们做项目的时候肯定遇到过签到功能吧,如果用平常数据库,假如一个用户1年签到100次,而网站有100万用户,就会产生1亿条记录。随着用户量增多、时间的推移,这张表中的数据只会越来越多,占用的空间也会越来越大。有没有什么办法能够减少签到的数据记录,减少空间占用呢?大家回忆一下,小时候上补习班时的签到卡:在这张小小的卡片上面,就记录了从一个月的第一天到最后一天的所有的签到情况。诶,你今天来上课了那就勾一下,没来就空着。这样呢,通过一个小小的卡片就能够记录一个同学这一个月的签到的情况了。

2025-04-07 16:09:37 1201

原创 Redis分布式锁(2)

小总结:利用set nx ex获取锁,并设置过期时间,保存线程标示释放锁时先判断线程标示是否与自己一致,一致则删除锁特性:利用set nx满足互斥性利用set ex保证故障时锁依然能释放,避免死锁,提高安全性利用Redis集群保证高可用和高并发特性我们一路走来,利用添加过期时间,防止死锁问题的发生,但是有了过期时间之后,可能出现误删别人锁的问题,这个问题我们开始是利用删之前 通过拿锁,比锁,删锁这个逻辑来解决的,也就是删之前判断一下当前这把锁是否是属于自己的,但是现在还有原子性问题。

2025-03-28 21:12:59 1057

原创 Redis分布式锁(1)

我们利用redis 的setNx 方法,当有多个线程进入时,我们就利用该方法,第一个线程进入时,redis 中就有这个key 了,返回了1,如果结果是1,则表示他抢到了锁,那么他去执行业务,然后再删除锁,退出锁逻辑,没有抢到锁的哥们,等待一定时间后重试即可。Mysql:mysql本身就带有锁机制,但是由于mysql性能本身一般,所以采用分布式锁的情况下,其实使用mysql作为分布式锁比较少见。只要大家使用的是同一把锁,那么我们就能锁住线程,不让线程进行,让程序串行执行,这就是分布式锁的核心思路。

2025-03-28 20:53:58 279

原创 Redis中缓存更新,缓存穿透,缓存雪崩,缓存击穿

假设现在线程1过来访问,他查询缓存没有命中,但是此时他获得到了锁的资源,那么线程1就会一个人去执行逻辑,假设现在线程2过来,线程2在执行过程中,并没有获得到锁,那么线程2就可以进行到休眠,直到线程1把锁释放后,线程2获得到锁,然后再来执行逻辑,此时就能够从缓存中拿到数据了。,直到新开的线程完成这个逻辑后,才释放锁, 而线程1直接进行返回,假设现在线程3过来访问,由于线程线程2持有着锁,所以线程3无法获得锁,线程3也直接返回数据,只有等到新开的线程2把重建数据构建完后,其他线程才能走返回正确的数据。

2025-03-27 14:43:52 1278

原创 推荐的几个软件/插件

你肯定有这样的烦恼,设计好数据库还得设计DTO,PO,VO,实体类吧,还有什么controller,mapper,service等包名吧。这似乎很麻烦,而且不需要什么技术含量。

2025-03-20 19:04:14 499

原创 我的java学习路线

这只是我想写给刚开始打算学java的初学者的,有什么其他想法希望大佬们能够指出。

2025-03-20 18:14:42 1099 2

空空如也

空空如也

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

TA关注的人

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