大作业笔记-1.md

笔记 1

emm,这个项目已经做了两星期了,前面的忘记去写了,只能靠我仅存的记忆了(现在 tm 都有 40+ 个提交了,这我记毛线)。

项目仓库在这里

README 还没更新,可能未来会更。

登录模块

我先从登录模块入手的,这部分我的实现很简单,也参考了一些网上的做法。

spring-security 自带了一套 authentication 管理系统,但是其数据库依赖全自动 ORM,例如 herbinate 那些。

不知道哪根经搭错了,我比较讨厌那种全自动 ORM?于是我用了 mybatis 写数据库,那 security 没有原生支持,但得益于 boot 的条件注入,我可以自己搭一个。

入门级别的 security 认证无非就是创建 authentication ,然后拿去认证,这其中完成一个 UserDetailsService 就完成了基本的 username-password 验证,入门来说还是很简单的。我觉得我更需要了解的是各种 FilterChain ,这个比较多而杂,有些 chain 能很好地拦截一些请求。

实不相瞒, Session 那一块是 AI 写的,我后面实现了一个 ban 人的功能,这需要把这个人从 Session 中移除掉(不然还能继续登录)。

密码用的默认 brcypt ,可能后面还要改吧?

权限

目前的权限极其简单,ROOT -> ADMIN -> USER,就三个权限等级。

评测

这个是队友干的,跟我没关系()

大致思路是创建 docker 然后脚本测评,之前预热时发现 AI 能很好的完成,可能这块东西业界已经实现的很成熟了,AI 吃了很多。

按队友进度,已经可以做评测工作了,试了一下 A+B 是可以玩的,但我还没对接,后续要写对接。

对接的接口我们已经商量好了,遵循了网上的一些建议,因为评测不是瞬时的,每次修静态文件很赤石,采用临时起一个内存数据库(没用 redis,一个同步 map 先顶着),当评测机返回一个 complete 记录时结束评测。

评测目前只支持 xcpc 赛制,即全部通过才给分,这个细分下来是所有评测分数的最小值,后续等群 U 开发出更多赛制。

文件系统

这部分我真不会,AI 给了许多建议。

首先是学到了文件写入用临时文件写,这样能保证一个事物支持,这样中途炸了可以方便回退。

AI 写了个 zip 文件的解压,其中包含了些安全措施?但我看不懂,就全删掉了(逃)。

学了前后端分离下怎么给前端传文件,spring 自带了 FileStream 可以直接塞到 body 里面,非常方便!

至此文件方面的操作也完成了。

我还差什么

想了一下,抛开 debug,现在任务就很少了(真的吗):

  • 和评测机的对接,消息队列还没写,还需要些内存数据库,评测完成写入文件等等东西,应该很快。
  • 前端,这方面 AI 应该可以吧(希望希望),按理来说我给 api 就可以了。前端炸了我可怎么活啊!

AI 堆史这块

大概率是我的 prompt 不太对,从我队友第一版那块。AI 上来 500 行代码起步,类中套好几个类,完全不分开复用的。

我这块还行,我都要让 AI 先阅读 common 块,要不可能我那个也要堆史()

唠嗑

java+mvn 文件树真赤石啊。

img

这是人类想出来的东西吗?

mybatis 也是一坨史,不能直接对象注入,你一个对象有 10 个字段,那 SQL 上就要写连着 10 个字段,那我如果要细分改哪个字段,那是不是要写 10 个 SQL句子,wow。并且,如果某一天我要修改一个字段名~~~

好像 plus 对这块有很好的改进,未来改一改也行。

再也不想干开发了!

posted @ 2025-12-08 15:04  蒻蒻虫  阅读(13)  评论(0)    收藏  举报