DataStructure项目总结
来源:互联网 发布:js json对象key值排序 编辑:程序博客网 时间:2024/05/20 12:21
DataStructure是一个在线编程的网站,主要针对的是c语言。这个项目的框架目前已经搭好,基本功能(注册登录-提交代码-服务器编译运行-查看结果)已经实现,只是题库太小。在开发过程中也碰到了许多头疼的问题,现在一一列出,做个小总结。
适合web的编辑器
我一开始做这个项目的时候,最先想到的就是用户体验。因为技术有限,不可能做的面面俱到,但能做的还是尽量去做。既然是在线编程,肯定要有一个看得过去的编辑器,在这里我使用了CodeMirror编辑器,性能方面很不错,用起来也很舒服,还有各种漂亮的主题。配置起来也很容易,还有一些不知道怎么配置的地方,直接去修改了源文件的css,总之用起来很方便。
死循环的代码
所有的代码都要在服务器中跑,因为技术有限,所以暂时做了个单线程的,同一时刻只有一个程序在跑。但是这样就有一个非常头疼的问题,如果有哪个同学提交的代码中有死循环,那么就会造成阻塞。暂时用了一个看上去有点笨的法子:服务器的程序是由java调用Linux命令来编译运行的,在运行程序的时候,另起一个线程,该线程用来记录程序运行的时间,如果超过一定的时间还没结束,就会终止命令的执行。(这个地方有个坑,因为服务器太渣,所以某些递归程序偶尔也会被当成死循环kill掉)
爆内存的jvm
服务器端的程序持续的读取数据库,如果发现有新提交的代码,就会提出来生成c文件然后编译运行,所以java程序是一直跑着的。那么问题就来了,不知道为什么,程序每运行一定的时间就会崩溃,后台查看了一下内存使用情况,发现应该是jvm的内存被程序占满了导致程序崩溃
经过仔细的排查,终于发现是因为PreparedStatement和ResultSet两个类实例化的对象在使用完后没有被关闭(有的时候不能太依靠gc了),加上close()之后,成功解决。
遗留的问题
- c语言的指针过于灵活,使得在服务器端运行c程序很不安全,这里暂时没找到合适的解决方法
- 网站在维护的时候需要手动添加一些文件,比较麻烦且不优雅。
- 没有做个人中心一类的页面。
- DataStructure项目总结
- 【BigHereo 50】---Datastructure---数据结构大总结(八)
- useful datastructure:
- All DataStructure
- Game - datastructure
- 【datastructure】栈。
- Python4:DataStructure
- LeetCode-DataStructure
- Datastructure c++ note 1
- Datastructure c++ note 2
- 【DataStructure&AlgorithmInJava】Ch02-HighArrayDemo
- 【DataStructure&AlgorithmInJava】Ch02-BinarySearchDemo
- 【DataStructure&AlgorithmInJava】Ch02-PersonArrayDemo
- 【DataStructure&AlgorithmInJava】Ch05-LinkedListDemo1
- 【DataStructure】Linked Data Structures
- Object V.S datastructure
- DataStructure-插入排序
- network datastructure --- skb
- 坚持#第195天~培训前自学云计算(只能说是了解吧)
- HTTP协议:无状态协议
- Httpcilent请求数据
- 第四周项目(1)单链表的应用
- binwalk for windows
- DataStructure项目总结
- Python修改字符串的大小写
- 2.笔记go语言——包
- 3.笔记go语言——函数
- 读书笔记:C和指针1
- bzoj 1513: [POI2006]Tet-Tetris 3D 线段树套线段树
- 线程的停止
- 欢迎使用CSDN-markdown编辑器
- HDU1223 Order Count 动态规划 组合数