大作业笔记-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 文件树真赤石啊。

这是人类想出来的东西吗?
mybatis 也是一坨史,不能直接对象注入,你一个对象有 10 个字段,那 SQL 上就要写连着 10 个字段,那我如果要细分改哪个字段,那是不是要写 10 个 SQL句子,wow。并且,如果某一天我要修改一个字段名~~~
好像 plus 对这块有很好的改进,未来改一改也行。
再也不想干开发了!

浙公网安备 33010602011771号