自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java各大厂实习面试题面经新鲜出炉!--贰

客户端在收到服务器返回的 fin 之后,不能立即释放 tcp 连接(close),

2025-11-03 10:52:45 783 10

原创 励志从零打造LeetCode平台之C端竞赛列表

本文介绍了竞赛系统优化方案,重点围绕Redis缓存和xxl-job任务调度展开。主要内容包括:1. 竞赛列表业务分析,对比B端与C端差异;2. 代码结构调整,实现分层架构;3. Redis缓存优化,通过list结构存储竞赛数据,封装缓存管理类;4. 引入xxl-job定时任务更新缓存数据;5. 前端开发与效果展示。系统通过Redis缓存提高查询效率,使用xxl-job解决缓存数据实时性问题,最终实现了竞赛列表的高效查询和展示。

2025-10-10 23:37:42 21608 51

原创 数据库备份与恢复(2)

存储过程、触发器和调度事件。

2025-12-23 16:12:23 418

原创 数据库备份与恢复(1)

DDL定义 / 修改 / 删除数据库的结构(比如数据库、表、索引、视图等对象的结构)DML操作数据库中的数据内容(增、删、改),查询(SELECT)

2025-12-19 15:36:21 875

原创 SQL调优(2)

对 BTree/HASH 索引:使用=、<=>、IN()操作符,且索引列与常量值比较。仅对 BTree 索引:使用操作符,且索引列与常量值比较。LIKE 条件:当LIKE的参数是 “不以通配符开头的常量字符串”(如多条件组合:多个范围条件用OR/AND组合(适用于所有索引类型)。“常量值” 的判定标准查询字符串中的常量(如数字、字符串);表连接中const表 /system表的列(这两类表是查询中仅返回 1 行的表,其列可视为常量);由上述类型组成的表达式(如100+200。

2025-12-16 18:44:42 536 4

原创 SQL调优(1)

type。

2025-12-04 10:00:57 286

原创 Mysql进阶---存储过程&变量&SQL编程

存储过程是⼀组为了完成特定功能的SQL语句集,经编译后存储在数据库中,⽤⼾通过指定存储过程的名字和参数来执⾏,并获取相应的结果。2.优点&缺点:存储过程在创建时编译并存储在数据库中,执⾏速度⽐单个SQL语句快。:可以限制⽤⼾直接访问数据库,通过存储过程间接访问,从⽽保证系统安全性。当表结构发⽣变化时,只需要修改相应的存储过程,应⽤程序的改动较⼩。:在⾼并发场景下,存储过程可能会增加数据库的压⼒,难以维护。:存储过程不能跨数据库移植,更换数据库时需要重新编写。

2025-11-27 19:34:18 871 1

原创 牛客面经八股题目----包含题解版

进程是指在内存中运行的应用程序线程是指进程中的一个执行任务流,负责进程的程序执行。

2025-11-09 22:59:18 655 9

原创 OJ项目面经

1.UUID存储会占据更大的空间,增加了数据库存储需求2.UUID是一串字符串组成,不易于人类阅读记忆。

2025-11-07 11:27:29 1094 2

原创 Java各大厂实习面试题面经新鲜出炉!---肆

核心思想是将对象的创建逻辑与使用逻辑分离,通过专门的 “工厂类” 来负责对象的创建,从而降低代码耦合度,提高扩展性。简单工厂模式(Simple Factory)工厂方法模式(Factory Method)抽象工厂模式(Abstract Factory)简单工厂模式(Simple Factory)简单工厂模式的核心是定义一个创建对象的接口,将对象的创建和本身的业务逻辑分离,降低系统的耦合度,使得两个修改起来相对容易些,当以后实现改变时,只需要修改工厂类即可。

2025-11-04 20:11:50 1172 12

原创 Java各大厂实习面试题面经新鲜出炉!--参

一个系统需要多个步骤相互合作完成,分布式就是将多个步骤分成多个模块进行部署,互相搭配完成,在分布式中的每个模块,我们可以引入集群,通过负载均衡将请求分发到不同节点,实现并行处理。其核心是 “并行”,从而解决 “单节点性能瓶颈” 问题。分布式还可以提高系统可用性,使得其中一个模块瘫痪后,可能不会导致整个系统瘫痪,这里也可以通过多节点冗余(如主从备份),某节点故障时其他节点可接管,避免单点失效。分布式数据库是将数据分散存储在多个物理节点(服务器)上,通过统一的逻辑接口对外提供服务的数据库系统。

2025-11-04 15:25:10 752 1

原创 Java各大厂实习面试题面经新鲜出炉!---壹

如果你项目中有使用websocket,面试官拷打项目时候可能会问Websocket是一种协议,用于在客户端和服务器之间建立持久的双向通信连接,广泛应用于需要实时数据交换的应用程序核心特点持久连接:一旦建立连接,客户端和服务器保持长期通信状态,无需频繁创建和关闭连接。双向通信:服务器可以主动向客户端推送数据,客户端也可以随时向服务器发送数据,打破了 HTTP 中只能由客户端发起请求的限制。低开销:连接建立后,数据传输时无需携带大量 HTTP 头部信息,减少带宽消耗。

2025-11-02 16:07:16 3282 56

原创 励志从零打造LeetCode平台之我的消息功能

【代码】励志从零打造LeetCode平台之我的消息功能。

2025-10-24 21:15:33 140 9

原创 励志从零打造LeetCode平台之用户拉黑功能

创建注解定义注解。

2025-10-24 09:31:04 251 2

原创 励志从零打造LeetCode平台之判题功能

【代码】励志从零打造LeetCode平台之判题功能。

2025-10-22 13:48:38 308 9

原创 励志从零打造LeetCode平台之竞赛题目展示

如果是竞赛答题,则通过examId进行搜索题目,否则题目id去搜索题目。获取竞赛,根据有无竞赛id传递判断是题目列表的答题,还是竞赛答题。历史竞赛同理,只是删除了定时器罢了。增加一个时间判断即可。

2025-10-19 11:18:01 231 5

原创 励志从零打造LeetCode平台之答题功能

【代码】励志从零打造LeetCode平台之答题功能。

2025-10-16 17:39:08 347 9

原创 励志从零打造LeetCode平台之用户头像上传功能

【代码】励志从零打造LeetCode平台之用户头像上传功能。

2025-10-16 13:12:55 273

原创 零基础OSS组件(Java)

•oss⽀持免费试⽤,可以选择免费试⽤进⾏测试使⽤。创建bucket创建⽬录集成oss到项⽬使用 RAM 用户的 AccessKey 配置访问凭证。在,创建的 RAM 用户,保存 AccessKey,然后为该用户授予权限。使用 RAM 用户 AccessKey 配置环境变量。nacos增加配置(哪里需要就在哪里配置即可)例如我们的oj-friend需要使用,那我们就在oj-friend相关nacos配置即可。

2025-10-15 15:07:45 191 2

原创 励志从零打造LeetCode平台之c端用户详情

【代码】励志从零打造LeetCode平台之c端用户详情。

2025-10-15 08:55:28 299 3

原创 OJ竞赛平台----C端题目列表

注解意思如下图所示:must表示必传,should表示选择传递,但是有一个最小传递数。首先,我们这里先完成上节课分页器的部署。

2025-10-15 08:12:34 237 3

原创 JVM 底层原理最全知识总结--肆

在 32 位 JDK 上,1.6G 分配给堆,还有一部分分配给 JVM 的其他内存,直接内存最大也只能在剩余的 0.4G 空间中分出一部分, 如果使用了 NIO,JVM 会在 JVM 内存之外分配内存空间,那么就要小心“直接内存”不足时发生内存溢出异常了。加载、验证、准备、初始化和卸载这 5 个阶段的顺序是确定的,类的加载过程必须按照这种顺序按部就班地开始(注意是“开始”,而不是“进行”或“完成”),而解析阶段则不一定:它在某些情况下可以在初始化后再开始,这是为了支持 Java 语言的运行时绑定。

2025-10-14 23:35:21 609 3

原创 JVM 底层原理最全知识总结--参

值是否设置为允许担保失败, 如果是,那么会继续检查老年代最大可用的连续空间是否大于历次晋升到老年代对象的平均大小, 如果大于,将尝试进行一次 Minor GC,尽管这次 Minor GC 是有风险的;一般客户端应用所需内存较小,不会创建太多对象,而且堆内存不大,因此垃圾收集器回收时间短,即使在这段时间停止一切用户线程,也不会感觉明显卡顿。对象的内存分配,就是在堆上分配(也可能经过 JIT 编译后被拆散为标量类型并间接在栈上分配),对象主要分配在新生代的 Eden 区上,少数情况下可能直接分配在老年代,

2025-10-14 23:33:27 637 1

原创 JVM 底层原理最全知识总结--贰

如果对象被判定为有必要执行 finalize() 方法,那么对象会被放入一个 F-Queue 队列中,虚拟机会以较低的优先级执行这些 finalize()方法,但不会确保所有的 finalize() 方法都会执行结束。比如,一个字符串 "bingo" 进入了常量池,但是当前系统没有任何一个 String 对象引用常量池中的 "bingo" 常量,也没有其它地方引用这个字面量,必要的话,"bingo"常量会被清理出常量池。所有对象的存储空间都是在堆中分配的,但是这个对象的引用却是在堆栈中分配的。

2025-10-14 23:32:16 887 1

原创 JVM 底层原理最全知识总结----壹

程序计数器是一块较小的内存空间,是当前线程正在执行的那条字节码指令的地址。若当前线程正在执行的是一个本地方法,那么此时程序计数器为Undefined。Java 虚拟机栈是描述 Java 方法运行过程的内存模型。局部变量表操作数栈动态链接方法出口信息......本地方法栈是为 JVM 运行 Native 方法准备的空间,由于很多 Native 方法都是用 C 语言实现的,所以它通常又叫 C 栈。它与 Java 虚拟机栈实现的功能类似,只不过本地方法栈是描述本地方法运行过程的内存模型。

2025-10-14 23:31:07 844 1

原创 SpringOJ竞赛项目----组件ElasticSearch

使用redis的话,如果使用redis原生逻辑来解决的话,很明显,redis并不具有(或者不好实现)这种搜索功能,如果使用后端处理reids返回的值,然后使用for循环进行筛选的话,这样效率也太低,所以我们引出组件-----ElasticSearch。其实我们应该下载和es版本相同的8.5.3版本的分词器,但是官⽅未提供8.5.3版本的,所以我们下载8.5.2版本的。这其实就是es中的分词器在起着作⽤,它负责将⽂本切分成⼀个个有意义的词语,以建⽴索引或进⾏搜索和分析。

2025-10-14 08:04:35 914 1

原创 励志从零打造LeetCode平台之C端竞赛报名功能

如果不满足,直接返回用户报名失败 + 报名失败原因。如果满足:将用户的报名信息存储到数据库和 redis。如果成功、如果失败。前端接收到后端的响应之后,根据返回的结果 提示用户报名成功或者报名失败。如果成功,竞赛列表中该竞赛展示已报名标签,并且在我的竞赛列表中要能找到报名的这个竞赛。先登录,登录成功之后在竞赛列表中找到要报名的竞赛,点击报名参赛按钮,前端携带着竞赛 id 和 token 向后端发请求。那如果我们每次都去获取,会增加我们的代码成本以及比较麻烦,所以我们想到,我们可以把userId存起来,

2025-10-14 08:00:15 608

原创 微服务项目->在线oj系统(Java-Spring)--C端用户(超详细)

从请求头中提取token并解析后,若未能从Redis获取到对应的LoginUser信息,则返回错误响应;若成功获取,则将LoginUser中的相关数据映射到返回给前端的VO对象中。由于我们前面已经讲了很多后端代码相关内容了,相信大家学到这里的时候应该对代码很熟悉了,就不做详细讲解,看代码直接懂就好了。3.查看一天内发送了多少次,如果超过一定限度则抛出异常,每次发送后++;2.获得当前验证码还剩多少秒,如果一分钟内有5次以上,则抛出异常。1.检查这个手机号是否为正确的。配置功能,不多余解释。

2025-10-06 17:39:06 693 9

原创 微服务项目->在线oj系统(Java-Spring)--C端用户管理

【代码】微服务项目->在线oj系统(Java-Spring)--C端用户管理。

2025-10-05 14:22:31 340 4

原创 微服务项目->在线oj系统(Java-Spring)--竞赛管理

这个方法是批量进行插入操tb_exam_questionxam_question中插入数据(竞赛id,题目id,题目顺序)----》》先将数据统一存在一个列表里面,然后一起插入,但是因为mybatis-plus中没有对应的批量插入方法,所以我们继承其他类提高的savaBatch方法。字段在序列化为 JSON 时的日期时间格式,这里设置为 “年 - 月 - 日 时:分: 秒” 的格式,能让日期时间数据在 JSON 传输时按照指定格式呈现,方便前后端对日期时间格式的统一处理。

2025-10-03 15:56:51 2853 49

原创 微服务项目->在线oj系统(Java-Spring)--增删改(前端)

发现和前面的不一样,前面都是直接v-model双向绑定,而我们这里是调用的子组件,所以无法显示,那么我们和之前一样(子组件接收父组件的参数)但是我们知道增加的时候我们是不知道它的questionId的,但是修改的时候知道,所以根据有无Id进行判断,如果有ID进行编辑。现在去访问,我们发现有报错,这是因为我们之前写的代码,具有双向绑定,但是它没有找到参数,所以我们创建一个参数(响应式数据)但是当我们如果切换到第二页,然后进行添加操作的时候,我们会发现没有显示,因为我们还是在第二页,所以我们继续修改。

2025-10-01 10:27:59 908 5

原创 微服务项目->在线oj系统(Java-Spring)--增删改

如果数据库中有该题,则从数据库里面查询到数据,然后创建一个返回给前端的VO。通过前端的输入框获得数据,然后点击按键去进行调用后端函数,将参数传入赋值。有了前面俩个的学习,我们接下来就会轻松许多,我们这里后端只做第三步。首先通过id进行查询,看是否存在这本书,如果不存在抛出异常。然后将值复制给这个VO类,返回VO。然后继续进行修改操作。

2025-09-29 19:44:22 656 9

原创 微服务项目->在线oj系统(Java-Spring)---分页功能

现在看起来好像没问题了,但是当我们如果正在看第二页的时候,如果切换每页数目,可能会丢失一些数据,所以我们继续修改。看起来没问题,但是,我们当前展示的是第一页数据,但是下面却说是第二页数据,这里需要我们进行双向绑定。我们如果修改每页数目的时候,我们的参数的当前页面修改1,分页器也会跟着变化。但是现在的效果是这样的,它默认展示是10,20,30,40,50,100。但是这个时候,我们的total是写死的,这样的话,所以我们需要继续修改。但是当我们想要切到第二页的时候,我们发现它的数据并没有改变。

2025-09-29 18:36:59 463 3

原创 微服务项目->在线oj系统(Java-Spring)-后台管理(2)

由于我们的查询条件较多,所以我们这里不使用Mybatis-plus提供的类,使用原始的xml方式。总数目,题目列表,响应状态码,响应消息。我们需要题目,难度,

2025-09-28 16:42:11 569 25

原创 微服务项目->在线oj系统(Java-Spring)-后台管理(1)

定义响应式数据(使数据动态变化),然后创建一个函数,等待后端处理完之后对响应式数据进行赋值,最后调用函数但是,这个时候,我们如果前端去访问后端,我们的token现在存储于cookie中,其他接口去访问后端数据时候也需要携带token,所以我们增加一个请求拦截器,对所有的请求增加处理再修改原来固定的昵称。

2025-09-28 09:05:46 1381 23

原创 微服务项目->在线oj系统(Java-Spring)----[前端]

前端开发创建一个VUE项目。

2025-09-26 08:52:15 1554 24

原创 微服务项目->在线oj系统(Java-Spring)----8.0

我们如果在一个项目中使用的mybatis-plus的相关注解但是没有配置数据库url(即使是间接),可能报错,找不到database Url。这样,在我们插入数据的时候,我们只需要提供账号和密码即可,服务器会自动帮我们填入创建时间,创建人,以及修改时候的修改时间修改人。我们修改之前创建的 BaseEntity类,对它加入一些mybatis-plus相关的注释。首先,我们要对传入的账号进行检测,如果我们发现数据库里面以及有了这个账号,那么抛出异常。这里我们就有疑问了,那我们的创建时间之类的怎么办?

2025-09-24 10:09:58 486 4

原创 微服务项目->在线oj系统(Java-Spring)----7.0

由于我们延迟token的时机在于登录获得token之后,在调用Controller之前,那我们可以把延长的时机订到拦截器中,我们可能会想着可以单独弄一个过滤器,但是这样一方面以后可能添加其他过滤器导致问题,也会增加代码直接耦合度,所以我们这里选择使用过滤器。这里的secret采用依赖注入的方式,因为我们这里是为了让哪个服务被拦截的时候,就从哪个服务的nacos中读取。

2025-09-23 13:56:54 357 5

原创 微服务项目->在线oj系统(Java-Spring)----6.0

Service@Autowired/*** 创建令牌*/// Jwt存储信息核心代码详解:首先我们通过UUID来获取一个唯一的userKey创建一个claim,存放着用户的userId以及刚刚创建的userKey;这个是调用方传入通过nacos得到的密钥,我们需要传给createToken我们通过claim,secret来生成一个token.然后我们创建一个变量key(其实就是一个常量+userKey);然后将key存入redis中,value是用户身份。

2025-09-23 07:18:27 2252 38

原创 微服务项目->在线oj系统(Java-Spring)----5.0

此外,MySQL⾃⾝也⽀持⾼可⽤性和故障转移,如使⽤主从复制或集群解决⽅案,从⽽进⼀步提⾼系统的可⽤性。jwt中仅存储⽤⼾的唯⼀标识信息,使⽤redis作为第三⽅存储机制,存储⽤于⽤⼾⾝份认证的信息,并通过redis控制jwt的过期时间。使⽤nacos内置的数据库虽然能够简化部署,但是性能受到限制,外置的MySQL可以根据需要进⾏优化和扩展,满⾜更⾼的性能要求。(token上述的jwt串)服务端收到请求,然后去验证客⼾端请求⾥⾯带着的Token,如果验证成功,就向客⼾端返回请求的数据。

2025-09-20 21:46:26 1016 11

空空如也

空空如也

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

TA关注的人

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