leetcode下载-OnlineEditor:基于SpringBoot的线上java编程网站

上传者: 38596093 | 上传时间: 2022-11-24 22:16:20 | 文件大小: 2.06MB | 文件类型: ZIP
leetcode下载 OnlineEditor 基于SpringBoot的线上java编程网站 网站地址: 涉及技术:SpringBoot框架、Java动态编译、java类文件的结构、java类加载器&java热替换、java反射 、如何将一个类变为线程安全类等。 开发环境:Idea+jdk1.8 项目简介:本项目灵感来源于leetcode,刷题时偶然想到是否可以做个类似leetcode在线编辑器的,于是在基于 SpringBoot 的基础上实现了一个在线的 Java Editor,技术要点如下: 实现编译模块: 使用动态编译技术,可将客户端发来的源代码字符串直接编译为字节数组。 实现字节码修改器: 根据 Java 类文件结构修改类的字节码,可将客户端程序对 System 的调用替换为对 System的替代类 HackSystem 的调用。 实现运行模块: 自定义类加载器实现类的加载 & 热替换,通过反射实现 main 方法的运行。 解决多用户同时发送执行代码请求时的并发问题: 通过 ThreadLoacl 实现线程封闭,为每个请求创建一个输出流存储标准输出及标准错误结果。 未来规划:

文件下载

资源详情

[{"title":"( 26 个子文件 2.06MB ) leetcode下载-OnlineEditor:基于SpringBoot的线上java编程网站","children":[{"title":"OnlineEditor-master","children":[{"title":"mvnw.cmd <span style='color:#111;'> 5.67KB </span>","children":null,"spread":false},{"title":"mvnw <span style='color:#111;'> 8.90KB </span>","children":null,"spread":false},{"title":"src","children":[{"title":"test","children":[{"title":"datas","children":[{"title":"test_data_system_in.txt <span style='color:#111;'> 288B </span>","children":null,"spread":false}],"spread":true},{"title":"java","children":[{"title":"org","children":[{"title":"olexec","children":[{"title":"service","children":[{"title":"ExecuteStringSourceServiceTest.java <span style='color:#111;'> 3.32KB </span>","children":null,"spread":false}],"spread":true},{"title":"OnlineExecutor","children":[{"title":"OnlineExecutorApplicationTests.java <span style='color:#111;'> 351B </span>","children":null,"spread":false}],"spread":true},{"title":"execute","children":[{"title":"ByteUtilsTest.java <span style='color:#111;'> 630B </span>","children":null,"spread":false}],"spread":true}],"spread":true}],"spread":true}],"spread":true}],"spread":true},{"title":"main","children":[{"title":"resources","children":[{"title":"application.properties <span style='color:#111;'> 116B </span>","children":null,"spread":false},{"title":"image","children":[{"title":"image2.jpg <span style='color:#111;'> 1.99MB </span>","children":null,"spread":false}],"spread":true},{"title":"templates","children":[{"title":"ide.html <span style='color:#111;'> 2.91KB </span>","children":null,"spread":false}],"spread":true}],"spread":true},{"title":"java","children":[{"title":"org","children":[{"title":"olexec","children":[{"title":"service","children":[{"title":"ExecuteStringSourceService.java <span style='color:#111;'> 2.96KB </span>","children":null,"spread":false}],"spread":true},{"title":"controller","children":[{"title":"RunCodeController.java <span style='color:#111;'> 1.63KB </span>","children":null,"spread":false}],"spread":true},{"title":"compile","children":[{"title":"StringSourceCompiler.java <span style='color:#111;'> 4.29KB </span>","children":null,"spread":false}],"spread":true},{"title":"OnlineExecutorApplication.java <span style='color:#111;'> 320B </span>","children":null,"spread":false},{"title":"execute","children":[{"title":"TempScanner.java <span style='color:#111;'> 87.26KB </span>","children":null,"spread":false},{"title":"HotSwapClassLoader.java <span style='color:#111;'> 306B </span>","children":null,"spread":false},{"title":"ClassModifier.java <span style='color:#111;'> 2.63KB </span>","children":null,"spread":false},{"title":"ByteUtils.java <span style='color:#111;'> 1.25KB </span>","children":null,"spread":false},{"title":"TempPrintStream.java <span style='color:#111;'> 14.40KB </span>","children":null,"spread":false},{"title":"JavaClassExecutor.java <span style='color:#111;'> 2.53KB </span>","children":null,"spread":false},{"title":"TempSystem.java <span style='color:#111;'> 4.40KB </span>","children":null,"spread":false},{"title":"TempInputStream.java <span style='color:#111;'> 805B </span>","children":null,"spread":false}],"spread":false}],"spread":true}],"spread":true}],"spread":true}],"spread":true}],"spread":true},{"title":".mvn","children":[{"title":"wrapper","children":[{"title":"maven-wrapper.jar <span style='color:#111;'> 47.20KB </span>","children":null,"spread":false},{"title":"maven-wrapper.properties <span style='color:#111;'> 116B </span>","children":null,"spread":false}],"spread":true}],"spread":true},{"title":"README.md <span style='color:#111;'> 1.36KB </span>","children":null,"spread":false},{"title":"pom.xml <span style='color:#111;'> 1.64KB </span>","children":null,"spread":false},{"title":".gitignore <span style='color:#111;'> 269B </span>","children":null,"spread":false}],"spread":true}],"spread":true}]

评论信息

免责申明

【只为小站】的资源来自网友分享,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,【只为小站】 无法对用户传输的作品、信息、内容的权属或合法性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论 【只为小站】 经营者是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。
本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二条之规定,若资源存在侵权或相关问题请联系本站客服人员,zhiweidada#qq.com,请把#换成@,本站将给予最大的支持与配合,做到及时反馈和处理。关于更多版权及免责申明参见 版权及免责申明