找工作前把最近做的项目总结一下,面试的时候也好说说,虽然都不是什么很难得项目,但是对于最近学习的知识做到了一个很好的总结和巩固.
1.微信后台开发
这是学校老师接的一个项目,然后找我来做的,顺便吐槽下,老师真会赚钱…因为有javaWEB的基础,所以做起来感觉还好,不是很难,除了微信本身的坑,比如一些错误码找不到,一些文档因版本太老和实际信息不符合等,其他都和普通的WEB后台开发大同小异.
该项目主要功能是通过微信端来控制该公司提供的插板,比如说获取插板的状态信息,获取电流电压,另外还可以提供定时,延时功能,这些都由对方提供相应的接口,而我所做的就是熟悉整个微信开发流程,搭建出一套微信后台框架,然后实现在微信端来显示获取到的数据并且可以给插板设置新的状态.整个流程如下图:
可以发现消息是异步的,举个例子:我想获取插板的电流信息,我发送这个请求给微信,然后微信告诉我有没有发成功,而不是直接返回电流信息,然后微信再处理这个请求,从设备中得到相应的电流信息,发送给处理设备的那台服务器,而我本身这台服务器和设备服务器之间只能通过数据库中转来获取.
有一点要知道,消息发送成功,不代表真的设置到设备上,例如我要开启设备,我发送请求,微信只告诉我我的请求有没有送达,具体有没有成功开启,这个是发送到设备服务器上的,所以本机服务器还要从数据库获取状态刷新,才能知道有没有设置成功,当微信设置设备失败的时候,这个请求的返回大概2秒钟吧,也就是3秒钟才能知道有没有设置成功….我是崩溃了(获取是我没什么经验,而且网上关于微信智能硬件开发的文档并不是很多,所以也没找到好的办法解决)
总之按照这样的思路,一路写下来了,最后完成度还是不错的,项目主要使用的是Spring SpringMVC mybatis也就是SSM框架来完成,正好也是前段时间学习的内容,做了很好的巩固,遇到了不少小问题,最终在google下都解决了,相应的在各个学习问题记录文章里面记录了大部分
在做项目中学习了maven,nginx(因为两个tomcat服务部署到一台服务器上了,需要做端口转发),能熟练地使用AJAX改善页面体验,更多的提升是对整个项目写下来的那种感觉吧,反正写着写着就越来越上手了
2.OJ在线判题系统
学校不是很出名,一直都不重视ACM这样的比赛,看到其他学校都有自己的ACM训练站点,就想着给自己的学校也弄一个,刚开始搜集资料,看到不少OJ站点使用的是开源的HUSTOJ搭建的,不过这个是php搞得,反正也要做项目,所以自己就用jsp写了一个,顺便说下,OJ分为WEB部分和判题内核部分,判题内核用的一个桂电学长开源的系统,这玩意用C语言写的,我拿过来改改还是可以,自己写的话就有难度了.所以拿过来自己更改了一些设置就直接用了.
从前端页面到数据库设计,到页面逻辑的实现,当最后判题成功的那一刻,感觉努力得到了回报,总之每次写项目很累,写完运行起来总是那么的高兴.最近临近期末,准备考试和面试,所以也就暂时写到这里了,题目和一些细节的调整等只能等找到工作后再慢慢来做吧,最后还想加上师生交互部分,这样的话有老师带动学生,网站就比较容易发展起来了.
整个项目使用的也是SSM框架,使用maven来构建,数据库采用mysql,前端主要是jQuery和bootstrap等,项目中最难写的感觉就是涉及权限的地方了,比如比赛管理,要考虑时间允许,身份允许,秘钥允许等,最后使用spring 的拦截器,不过写的比较臃肿,还没想到比较好的办法解决.另一个比较烦的问题就是form表单重复提交,最后在提交的地方都使用了重定向,传参数就使用spring的flashMap,效果还是可以的,网上搜到的解决办法是通过生成的token值来判定,个人感觉比较麻烦,就放弃了,
最后关于项目效果可以访问 http://mrdear.cn:8080/,渣渣服务器,比较卡哈服务器并没配置C的环境,所以目前只能java判题.