Java课设1

0.引言

依稀记得二月的一个星期四的晚上,课设小组的五人第一次见了面。“少年曾许凌云志,誓做天下第一流。”彼时的我们,尚且没有经受折磨,对未来充满了激情与乐观。曾经的我们觉得两个月很长,长到足以自学前端技术,代替老师提供的颇有年代感的前端界面。但实际上,时不我待,十二周转瞬即逝,济南没有春天。

1.入门及Git

1)idea的安装与配置

springboot项目建议使用idea Ultimate版本,极其方便。学生邮箱可以白嫖(虽然部分学校的邮箱验证被ban了,包括沙袋),网上也有破解版。

2)项目的启动

启动失败时应检查9090端口是否堵塞。

3)Git的使用

玄学问题

Git入门还是需要时间与精力的,小项目可以考虑不用(泪

常见命令 add,commit,remote,push,pull

千万不要乱用!!

git push -f

血的教训(叹气

而且git在合并分支(merge)的时候可能会出现奇怪的问题。

2.python部分(PersonalPicture的开发)

由于历史遗留原因,我的电脑在安装pycharm(内置python 3.9)之后又通过MicrosoftStore安装了python 3.10,导致了一系列问题。

1)wordcloud的安装

由于pycharm自动安装没有找到worldcloud这个库,我是从网上下载后手动安装。下载时选择了错误的版本,309版本对应python 3.9,310版本对应python 3.10版本。然后安装时在cmd中使用pip,安装好之后须在pycharm中手动导入。

from wordcloud import WordCloud

2)wordcloud的使用

wordcloud默认是用于英文的,如用于中文首先要配置字体(.ttf),中文分词可以使用jieba分词。使用mask设置蒙版时需要注意背景图片需要是黑白分明的,如果白色不纯会导致无法正确识别图片,同时图片的形状也不能过于复杂。

mask = np.array(Image.open("xxx.png"))
wc=WordCloud(mask=mask,font_path='msyh.ttc',background_color="white").generate(text=text)

3)pyinstaller打包(大坑!

耗时:约6h(泪目

在使用wordcloud做好词云生成器之后,我决定将其打包为exe程序,方便其在没有配置python的环境下运行。刚开始,我使用其默认打包方式进行打包,导致其出现闪退,无法正常使用。后来经过上网搜索,我先后采用了指定路径打包、虚拟环境打包等多种方式,折磨了好久,都没有解决这个问题。之后我发现了下图中的报错信息。

 

又经过一番搜索,我在csdn上发现了一篇极其有帮助的文章。

(https://blog.csdn.net/Beyond_F4/article/details/88706837)

按照文中所说一番操作,然后激动的心颤抖的手在terminal中敲下一行

pyinstaller -F -p 指定路径 xxxx.py

然后调出cmd,成功按我的预期输出了png图片。

在那一刻,我付出的所有用来debug的时间与经历,都得到了回报。

3.springboot框架的使用

1)springboot中调用exe程序

这个其实我在网上找到好几种方法,但是经过实验这一种一次成功且代码简洁。

String cmdStr1= "main.exe" + " " + fileName + " " + outFileName;
Runtime.getRuntime().exec("cmd.exe /c start "+cmdStr1);

2) JPA中注解的使用

单向多对一@ManyToOne

@ManyToOne(fetch = FetchType.Lazy)
@JoinColumn(name="xxx")

举个例子:有两张表,员工表(employee)和部门表(department)。这个时候,员工对于部门来说,属于ManyToOne的一个关系,即多个员工对应一个部门。当我们创建表结构时,应在多的一方去维护表关系,也就是说,应将@ManyToOne注解加在员工表中,并且设置为懒加载。

fetch = FetchType.Lazy 懒加载,作用是用到该属性的时候,才会将该属性加载到内存。加载employee对象时,并不会去立即加载dept属性。如果不设置,缺省为eager,急加载。

3)对于dataRequest的理解与使用

dataRequest是课设框架中老师封装好的一个类,它传递了每次操作的学生id等信息,善加使用,就可以实现链接跳转指定页面等功能。这里给出家庭管理的例子。

//家庭管理初始化方法
   @PostMapping("/familyInit")
   @PreAuthorize("hasRole('ADMIN')")
   public DataResponse familyInit(@Valid @RequestBody DataRequest dataRequest) {
       int id=dataRequest.getInteger("studentId");
       Student student=studentRepository.getById(id);
       String name=student.getStudentName();
       List dataList = getFamilyMapList(name);
       return CommonMethod.getReturnData(dataList);  //按照测试框架规范会送Map的list
  }

4)其他

信息的CRUD,GPA的计算,文件的输入输出,本身都比较简单,也没有遇到什么大的问题,没有必要再赘述。

4.结语

1)感想

1 自主学习

“纸上得来终觉浅,绝知此事要躬行。”项目实践与我们上学期学习的Java知识有云泥之别,对自我学习能力提出了极大的挑战。“师傅领进门,修行看个人。”编程的学习就是这样,能力的高低要靠自己学习编程的热爱与毅力。信息时代,信息获取的方式多种多样,

2 细心细致

编程中不存在模棱两可,能run就是能run,有bug就是有bug,做不得假。往往错误之处就在于一些微小的细节,它们也许并不显眼,却对程序的正确运行起到了不可或缺的重要作用。

3 平和耐心

“一杯茶一包烟,一个bug,de一天。”这句话听起来有些夸张,但是在实际的开发过程中,一个bug一天也不一定能解决。在debug的过程中,保持平和的心态,耐心地去解决,是debug的关键。当一个困扰已久的bug被解决,心底喷涌而出的那种喜悦,犹如清晨出于长空的第一缕朝阳,难以用言语形容。

2)致谢

感谢学校和老师为我们提供了与往年迥异的面目一新的Java课设题目,极大地锻炼了我们的能力。

感谢我的课设小组的朋友们,没有摆烂,一起共同坚持到了最后。我们做的也许不是最好的,但我相信我们已经做的了我们能做的最好的。

最后感谢我自己一路坚持了下来,学到了不少有趣有用的技术。也希望我继续前行,成为自己心中理想的模样。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值