Fine,自动机与软构实验轮番轰炸的一周,在自动机考完的晚上,写下这篇有关实验一的思考总结。
Git的使用
软构这门课提交实验的方式与以前的实验不一样,是使用github上传,因此git的使用就成了刚需。接下来讲一下本次实验中发现的几种上传方式。
1、命令行式(git组件)
这个就与Linux和Windows的cmd很像,通过输入内置命令来实现分布式仓库的管理。然后通过一系列git命令就可以实现对文件(夹)的管理。
下面展示一下成功的上传过程(来自实验报告):
把实验所需的文件git clone下来,clone下来的文件在当前cmd目录下
创建本地仓库,选在了GitHub桌面版默认位置(其实哪里都行只要git bash here):
(事实上后来我用的仓库不是这个,而是实验目录)
完事后把P2移入工作目录下,然后自动设置为package,把import文件头加上P2.前缀,否则会因为不是module而无法运行。
版本管理:git add * ,表示把所有文件加入管理,可以看出这里status有更新,且还没commit
Git log查看历史:
Submit阶段,在实验目录下右键git bash here
Git add .
Git commit -m “first commit”
git remote add origin https://github.com/ComputerScienceHIT/HIT-Lab1-120L020318.git
git -u push origin master
登陆后即可传输,结果如下。
MIT的实验界面要我们使用的是这种方法,我用的是https协议,并没有使用到ssh。然后讲一下这期间遇到的一些困难:
1、有一次修改报告时把副本一起传上去了,然后直接在GitHub上进行了delete操作,且并没有fetch回本地,因此之后几次push都不成功。当然更糟糕的是后面网络代理也出了问题,不得不使用git config将https和http删除重来再reset(顺序不太记得了,反正就这几个操作,至于代理怎么有问题,难道科学上网原因?),才得以修复。反正得到的教训就是一定得保持版本的一致,在push前一定要fetch/pull确保最新版本。
2、正常修改时,git push -u origin master时有时会抛出(初期,后期不会)fatal,这是把远端origin删除重新git remote add origin …即可。
2、GitHub桌面版上传
这个简单且粗暴,只需要你有科学上网的途径(doge),正常状况下在你首次登陆后,本地仓库都是默认建立在系统的“文档”的GitHub目录下,.git就是仓库的标志。当然也可以自己改,我就是改成了实验用的目录。
查看历史,自动检测changes,得到difference、一键push的功能也是非常好用。
3、idea上传
当然这个我没试过,不过貌似有学长和同学是这么干的,成功与否未知。只需要在VCS中启动git功能,在联系到GitHub账号,就可以通过右上角的箭头很轻松完成push。不过因为本身自己没试过,也是提供一种思路。
利用idea进行build
群里有大佬是用gradle,我仅仅是使用idea自带的功能构建jar文件。具体步骤也很简单(idea yyds),进入项目结构(project structure)-工件:
点击+号,选择具有依赖项的那个,然后选择主类,输出目录即可。生成后在jar所在目录下用命令行输入java -jar xxx.jar即可。此时需要注意JDK版本。值得小心的是,P1的幻方涉及到路径问题,因此得移到项目根目录下才有用。
还有一个细节,META-INF文件尽量放在不同文件夹下,否则可能主类会串。
Eclipse与IDEA的互通:
Eclipse导入IDEA项目,workspace下打开eclipse,点击file-open projects from file system,出现下列界面后直接浏览文件夹就可以:
然后注意保持JDK的一致,在preference里compile等选项修改一下就可以。然后就是不要干idea里作为eclipse项目export的傻事,因为改变了文件结构从而出现一堆错误,最后发现居然什么都不管就可以。建议在GitHub或其他地方有之前正确版本的备份。
Idea导入eclipse:还是项目结构,这次选中模块,选中文件夹后作为eclipse项目导入。总之就挺简单的。。。
实验过程的一些教训:
1、Java的最大特色就是OOP,可以多学习一些库以达到事半功倍效果;
2、Java由于去年只有小学期四周有接触,基础语法并不是很熟练,得多加练习;
3、备份的重要性,玩脱了还可以救回来。
总之,实验一代码算法方面倒是没什么难度,主要就是工具的使用,将我印象深的内容都写在上面了,仅供参考。然后具体的一些操作步骤可能有误,因为是凭记忆写的,如有错误恳请指出!