该项目是基于SpringBoot+Vue+MyBatis-Plus+JWT+Docker开发的一款云编辑器。允许用户无需进行任何配置,登录网站即可进行开发项目。目前支持大部分编程语言项目的运行,如Java、C/C++、Python、SpringBoot等。
1. 每一个项目都会创建一份对应编程语言的Docker容器,通过Docker的沙箱隔离机制,保证了用户项目的安全性,同时防止了不同项目的环境影响。
2. 使用Docker动态调度算法,在用户项目每次启动时分配给该项目需要的内存大小,防止了某一个Docker容器占用大量内存而导致其他Docker容器无法使用内存崩溃,同时而保障了该Docker容器的正常运行。
3. 使用JWT token的无状态登录实现用户登录鉴权,用户访问时会在过滤器中统一进行鉴权,过滤器中会解析header中附带的token来判断用户的权限,在拦截器中带有token的过期鉴定,来保证token的安全性。
4. 在用户项目代码实时保存方面,使用WebSocket链接每一个代码编辑框,在编辑框关闭或项目运行时才进行IO读写保存代码到Docker容器文件中,将O(n*m)-(n为每秒代码修改字符数,m为代码修改时间,单位秒)的IO降低到了O(1)的IO。