- 博客(126)
- 收藏
- 关注
原创 2026最新Java八股文(完整版)
单个redis节点的并发能力是有限的,所以为了提高并发能力,我们需要搭建redis集群,就比如:主从复制。主从复制的流程主从复制主要分为:全量同步和增量同步。全量同步:在salve请求数据同步的时候会携带application Id和offset,如果master判断出applid和自己的不一样,就认为slave是第一次进行同步,所以会进行全量同步。
2023-11-10 15:39:09
38375
4
原创 java学习路线26版
作为大四老学长的秃狼,近日收到大量兄弟们的私信,希望我能出一期java学习路线的视频,很多小伙伴也是大一的新生,都想和我一样做最美逆行者。还有一些非科班准备转码的小伙伴,不想走培训班那条路线想要通过自学找Java工作。鼠鼠我呀就是宠粉,整!!!!!!!
2023-11-03 20:31:26
35949
80
原创 mysql explain 使用入门
本文探讨了生产环境中接口响应慢问题的排查思路。首先指出测试环境数据量小导致开发时难以察觉性能问题。提出自上而下的排查方法:先用Arthas或Skywalking分析接口调用链,定位慢子接口;若非远程调用问题,则通过日志抓取慢SQL并用EXPLAIN分析。重点解析了EXPLAIN的关键字段:id(查询优先级)、select_type(查询类型)、type(连接类型,从system到all性能递减)、key(实际使用索引)等,并说明如何通过这些指标判断SQL性能瓶颈。最后列举了extra字段中常见性能
2026-01-03 17:37:25
416
原创 优惠卷业务超卖问题解决方案
摘要:在线教育优惠券领取过程中可能出现"超领"问题,即实际领取量超过运营设置的总量。主要原因是在并发场景下多个用户同时领取最后一张券。解决方案包括:1)保证数据原子性(当前方案),通过条件判断和行锁控制,需设置索引和重试机制;2)悲观锁,可靠性高但效率低;3)乐观锁,效率高但成功率低,使用更新时间作为版本号。极端情况下可能出现ABA问题,但对业务影响有限。方案选择需权衡可靠性、效率与实现复杂度。
2025-12-20 16:56:21
147
原创 LangChain4j入门手册
本文介绍了使用Ollama快速安装DeepSeek轻量版AI模型的方法,并详细讲解了如何通过Spring Boot集成LangChain4j框架实现AI服务调用。主要内容包括:1)使用Ollama作为AI容器管理工具;2)通过@AiService注解自动生成AI代理接口;3)聊天记忆功能的实现与配置;4)会话隔离机制的实现原理及自定义扩展方法。文章还分析了框架底层通过BeanFactoryPostProcessor动态生成代理类的实现机制,并提供了会话数据持久化的扩展思路。
2025-10-19 16:15:41
633
原创 Execel文档批量替换标签实现方案
摘要:针对批量导出Excel文件时标题错误的问题,提出两种解决方案:重新导出(耗时10小时)或使用Java代码替换标签(仅需10分钟)。采用Apache POI库实现,通过读取模板样式、删除旧标签行并插入新模板行的方式快速修正。代码支持处理合并单元格和样式复制,对于仅含标签的空文件会提示手动处理。经测试成功处理上千个文件,将总耗时从10小时大幅缩短至10分钟,显著提升工作效率。
2025-07-25 17:49:18
422
原创 在线人数统计业务设计(场景八股文)
最开始的时候,想到的就是使用mysql直接实现,但是明显在技术的选型上就不太合理,假设一天有十万人上下线,那么一天就会十万条以上的数据,一个月下来就是300w条数据,一年下来就是3000w的数据,虽然可以配合定时任务定期删除的旧数据。因为涉及到用户的上下线的操作,所以就存在大量的打db操作。不同的类型也是通过不同的定时任务来计算出来的。在当经的网站中,在线人数的实时统计已经是一个必不可少的模块了,并且该统计功能最好能够按不同的时间间隔做的统计,现在需要你设计一个在线人数统计的模块,你应该怎么进行设计的呢?
2025-04-27 23:25:06
905
原创 Aop +反射 实现方法版本动态切换
其实这个切换模式准确的来讲用到了:AOP + 反射 来实现的,因为目前就考虑两种数据库的方式,如果未来使用了其他的数据库,那基本上代码的实现思路基本没有变,最终我们只需要在apollo上切换设置就可以动态的实现不同版本的方法的切换。
2025-02-21 15:51:59
457
原创 JAVA接口机结构解析
在Java项目中,接口机通常指用于与外部系统进行数据交互的中间层,负责处理请求和响应的转换、协议适配、数据格式转换等任务。接口机的结构。
2025-02-07 10:40:00
1073
原创 dubbo+Zookeeper微服务方案入门
比如现在有三个服务器,前一半服务器在做投票的时候都会将票投给事务id最大的那个服务器,第一个服务器会将票投给自己,但是呢,在第二个服务器做投票的时候,服务器一发现服务器二的事务id更大,就会将票投给服务器二,以此类推。:当发生网络波动的时候,master节点中的心跳没有被哨兵收到,此时哨兵就会认为其客观下线,会在从节点中选择新的master节点,此时就会导致旧的master中新的数据未被同步就丢失的情况,最终导致服务的脑裂。当有新的服务器节点进入时,会最自动变成从节点并和主节点做数据的同步。
2024-11-25 08:54:16
809
1
原创 解决mysql查询时条件字符串无法区分大小写
最近在修数据库数据的时候,业务上要求我们需要将用户身份证字段中尾号为x的数据,将其都转换成大写,为此我编写了一个sql语句。在查询结果的时候,会发现大写的X对应的数据也会被查询出来,这样子就会导致我们修改数据的时候变的非常的麻烦。我们只需要在查询的字段值之前加上关键字 BINARY即可。最终我们就可以查询到需要的数据。主要的原因:默认的编码格式是不区分大小写的,为此我们需要修改sql语句。
2024-11-15 11:03:10
498
原创 2025最新前端八股文(快速版)
2.当数据发生改变的时候,vue会生成新的虚拟dom树并和旧的虚拟dom进行比较,采用diff算法来实现的,比较到两个虚拟dom的不同位置,最终将这个不同的数据更新到真实的dom中,减少了不必要的真实dom操作。1.保证数据渲染的性能,当我们设置了key的唯一标识的时候,集合数据发生修改的时候,vue会尽可能的使用原来的组件进行更新(而不是直接销毁组件),通过key来锁定对应的节点。1.Model:数据层,主要就是负责数据的存储和处理操作,就比如在Vue中data中的数据,向后端发送请求获取的数据操作。
2024-10-16 15:45:37
1643
原创 java.lang.NoClassDefFoundError: kotlin/Result解决方案
在idea2021之后,kotlin都使用远程仓库(kotlinx-coeouties-core),会导致和我们导入的kotlin的内容冲突,最终找不到kotlin,在定位到问题发生出后,解决方案也就自然浮出水面了。在控制窗口上虽然报错是找不到对应的class,但是呢在我们导入kotlin的后,还是报相同的异常,在网上查找了各种资料,都没有解决方案。在setting中的Debugger中将 Disable coroutine agent,禁用远程库调用。
2024-10-09 13:49:10
1483
1
原创 若依使用(二次开发)
将生成的前后端代码复制到我们的前后端代码中。将main中的文件放到子项目中的main中,将vue中的代码存放到前端项目的views中。2.将设计好的数据库导出成sql文件,导入到对应的数据库中,启动若依项目并执行代码生成。将子项目的依赖添加到主pom.xml中或者添加到rouyi-admin的pom中。1.创建子项目到RouYi-springboot中,添加对应的依赖。,并将当前子项目的依赖添加到RouYi-admin中。添加到新建子项目中的pom.xml中。填写对应的参数,生成修改后的文件。
2024-10-05 17:35:18
1021
原创 Error running Application.Command line is too long
本质上就是执行启动类Application的时候,执行的指令太长了,所以运行失败。3.勾选 Shorten command line。1.打开Edit Configuration。4.选择classpath file。2.点击Modify options。
2024-09-25 17:08:50
2932
3
原创 Circular dependency between the following tasks(gradle循环依赖的问题)
目前公司项目主要使用gradle而不是maven,所以对gradle的使用不是很清楚,遇到这个问题的时候一直在晚上查资料,但是解决方案基本都是安卓的,后续先前辈请教了一下,才找到解决方案。
2024-09-25 17:02:45
1148
3
原创 面经学习(上海鑫玥轩信息)
Hash结构中,使用大key存储课表Id,课表用来关联userId和课程的Id,使用小key存储节Id,value存储观看位置的数据,在每次请求进来后直接修改Hash中的数据,并且每次发送一个延迟消息,使用Redis的死信发送一个延迟15秒消息,并且也是当前的节点去监听该消息,监听到消息后,使用监听到的观看位置和当前在Hash结构中的观看位置进行比较,如果发现二者的相同,说明在这15秒内没有再次进行观看了,这个时候就去修改数据库。反之,如果不相同的话,说明此时用户还在进行观看,我们就直接丢掉消息。
2024-09-22 22:31:04
596
原创 CQRS模型解析
CQRS中文意思为命令于查询职责分离,我们可以将其了解成读写分离的思想。分为两个部分 业务侧和数据侧,业务侧主要执行的就是数据的写操作,而数据侧主要执行的就是数据的读操作。当然两侧的数据库可以是不同的。目前最为常用的CQRS思想方式为事件驱动。CQRS模型也是未来微服务形态的一个趋势。
2024-09-22 22:23:56
699
原创 gradle入门
在项目中的使用还是和maven非常相似的,我们需要修改依赖的版本号或者修改插件都需要到build.gradle文本中修改。(例如:group='xxx.xxx.xxx',version='0.0.1')明显我们会发现gradle的配置明显少很多,gradle将依赖的引入格式为 groupId:artifactId:version。(需要注意的时候,因为Gradle和idea存在兼容问题,所以最好使用6.8版本以上的Gradle)2.plugin的配置和dependencies还是比较相似的。
2024-09-17 22:05:47
716
原创 面经学习(越亮传奇实习)
的实习项目主要就是做C端的在线教育项目,并且呢,它采用的基于alibaba那套落地的微服务方案。可能也是因为我是实现生的源固,我没有负责黄金链路,从用户登录到用户下单再到用户观看视频的整个流程,我主要负责的就是负责辅助模块的开发。那我给您介绍一下我记得比较清楚的难点吧。
2024-07-19 15:51:59
843
原创 面经学习(厦门安全狗实习)
我的实习项目主要就是做C端的在线教育项目,并且呢,它采用的基于alibaba那套落地的微服务方案。可能也是因为我是实现生的源固,我没有负责黄金链路,从用户登录到用户下单再到用户观看视频的整个流程,我主要负责的就是负责辅助模块的开发。那我给您介绍一下我记得比较清楚的难点吧。
2024-07-19 14:42:27
1484
1
原创 面经学习(杭州实在智能实习)
当发现B中需要依赖A,此时将使用A的ObjectFactory生成A的代理对象,并将A的代理对象存放到二级缓存中,将A注入到B中,将完整的B存放到一级缓存中,此时回溯,将完整的B注入到A中,最终解决三级缓存的问题。Spring的实现方式主要就是使用Aop的来实现的,使用环绕通知,在执行方法的时候,开启事务,并对执行的方法使用Try/catch,如果捕获异常的话就进行回滚,如果执行完方法后就进行提交。解决这个问题的主要方案就是:增加我们的消费者个数,加快消费者的消费速度,对我们消息队列进行扩容。
2024-07-18 23:35:55
1121
原创 Java实习手册(小白也看得懂)
距离俺发布的学习路线已经六个月了,那我给小伙伴的学习周期是四五个月左右,我相信大多的小伙伴已经学习的差不多了。正好赶上暑期实习的阶段,在暑期找到实习就成为暑期的头等大事。实习经验在校招的起到决定性的作用,所以我们需要认真准备。
2024-07-05 22:46:10
3722
10
原创 在线教育实习经验总结
主要就是服务于考研学生培训的微服务C端项目,主要分前台和后台,其中的黄金链路就是从用户登录到购买课程再到课程观看的流程。那在这个过程中还存在一些辅助模块来提高用户的使用体验,包括问答,点赞,热门榜,积分及优惠劵模块,我只要就是负责对辅助模块的开发。
2024-05-16 18:25:59
1494
1
原创 物流项目实习话术(家政,二手回收项目通用)
我的实习项目呢,他是基于微服务框架体系的物流项目中,主要负责人,货,车三者之间的调度关系。主要的黄金链路就是用户下单 -> 快递员揽收->通过一系列的调度完成商品运单的运输->再到快递员派送商品->用户签收的整个流程。主要的模块主要就是调度模块,通过调度模块来异步的调度其他模块,包括运单模块,订单模块,路线规划模块等等。这个模块是物流微服务中最重要的就是调度微服务。其中主要就是包含订单转运单,运单合并,计算运力,司机出入库,快递员派件等流程。那我就按执行流程给您介绍一下调度微服务模块,您看行吗?订单转运单。
2024-05-01 17:39:19
1487
原创 面经学习(上海旭千实习)
难度中等,Java的基础部分有点忘了,还有那个token的实现流程也有点给忘了,项目问的比较少,还是要注重Java基础部分的复习。
2024-04-19 23:11:10
1211
1
原创 面经学习(众智宏图实习)
难度还是有的,中等难度吧,可能是因为项目使用的是物流项目,该项目本来就比较庞大难度比较高,流的八股文我真的是一点不会,还需要加强,reidis的多路io复用模型没有深问,要是问了就寄了,这个模型的底层太就没有复习了,这次面试题差不多就是 50%项目+50%八股文。
2024-04-13 20:03:30
1186
原创 面经学习(湖北地信科技实习)
很简单的面试题,八股文问得都比较浅,这次项目问得比较多,在mysql的索引失效中,数据分布影响导致的索引失效这一点比较深,能够讲出来的话,还是比较加分的。
2024-04-11 23:17:34
1201
原创 面经学习(北京商越网络实习)
比较简单的面试题,不知道 nacos和gateway这块有没有深问,如果深问的话,那难度就升级了。一直对io的八股文不感冒,io这块的知识还得加强,该面经最后一问我是没有如何思路的,算是长知识了欸。
2024-04-11 01:14:07
1309
8
原创 在线影院项目话术(0.7w精选)
这个电影院项目不同于常见的基于会员限制用户观看范围的在线影院项目,主要就是按需购买片源来进行观看,用户就不会因高额的会员费而劝退。项目的主要实现就是:微服务的五大主键,数据库使用mysql,redis,中间件使用rabbitmq,xxl-job,工具使用skywalk和jenkins。项目的主要功能就是 片源的观看及购买及一些辅助用户的功能包括:签到积分,热门电源排行,优惠劵模块。简单的来说,用户登录并按规则下单->用户观看片源的整个流程。
2024-03-25 16:29:34
983
原创 在线教育项目话术(1W字精选)
我们考虑到此模块可能会存在高并发的场景,所以在原先涉及大量的DB操作旧方案上通过redis的数据结构和定时任务来优化。(面试官感兴趣就介绍优化方案)
2024-03-20 15:32:52
1411
原创 Redis的BitMap的使用
Redis的Bitmap不是一个独立的数据结构类型,而是基于字符串(String)类型实现的一种功能 ,存储的是二进制的文件,布隆过滤器就是基于BitMap实现的。
2024-03-06 16:53:12
662
原创 DelayQueue使用手册
DelayQueue是Java中的一个并发容器,它实现了Delayed接口,用于存储具有延迟时间的元素。DelayQueue内部使用PriorityQueue来存储元素,并根据元素的延迟时间进行排序。延迟时间指的是元素需要在指定的延迟时间之后才能被取出。目前主流的延迟对应的方案为:使用mq的延迟队列。而DalayQueue是java自带的延迟队列,我们可以根据需求去选择。使用创建一个队列元素去实现 Delayed 接口。@Data//携带的数据//延迟时间//元素在队列中的剩余时间。
2024-02-29 16:17:00
396
原创 Leetcode 热门百题斩(第三天)
针对leetcode的热门一百题,解决大多数实习生面试的基本算法题。通过我自己的思路和多种方法,供大家参考。
2024-02-01 16:24:32
622
1
原创 mysql高级使用教程
页分裂:主键底层是存到数据页上,一遍主键是自增的,所以会进行顺序存储。但是当数据不按顺序的时候会,数据在找到对应的位置会会将后百分之五十的数据存储到新的页上,如何将新的看数据存储到对应的位置上,最终在调整页的位置。页合并:但主键进行删除的时候,会先将要删除的数据进行标记,当达到阈值(MERGE_THRESHOLD)时就会进行删除,并判断前后侧的页是否能合并,能就进行合并,最终出现页合并。因为二级索引中的数据就会主键,当二级索引多的情况就会占用大量的空间,并在数据的读取的时候需要大量的io操作。
2024-01-15 20:35:40
1650
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅