作业
^_^
最后更新于
这有帮助吗?
^_^
最后更新于
这有帮助吗?
试着理解并总结 Git 的底层原理. 我们推荐你去阅读 关于这一部分的讲解.
创建一个属于自己的 Git 仓库! 然后在你的机子上试着执行我们文档里给出的指令. 看看会发生什么! 这也是熟悉命令行工具的一环. 同样, 我们推荐你阅读官方文档去了解这些命令背后的原理.
熟悉 Git 在 IDE 里的使用方式. 完成各大 IDE 文档给出的教程内容. 在接下来的课程中, 我们都会改用 IDE 进行 Git 操作.
完成 的全部练习. 分支操作很有用!
这里是本次. 我们在这个仓库里藏了一个小彩蛋, 看看你能通过什么方式找到它! (其实方法很简单) 如果找到了, 你可以 fork 一下然后开一个 Pull Request 向我们提交(如果你发现文档里有错误, 可以用相同的方式提交).
看看是哪位部长创建了 zuo-ye.md
:)
创建一个 git log --all --graph --decorate --oneline
的别名 git graph
. 你可以在 ~/.gitconfig
去配置(不要去修改 ~/.bash_profile
).
使用 Git 的一个常见错误是提交不应该由 Git 管理的大文件, 例如视频文件(但实际上有一个 的东西), 或者把敏感信息(例如数据库的密码)提交给了 Git. 先前我们提到 Git 会把一切对象存储到仓库内, 撤回也只是新建一个抹除文件后的快照, 这些内容仍然存储在历史记录内. 试着把某一个文件彻底地从历史记录中删去. (参考)
这是 T 大暑期培训 Git 的, 里面讲到了很多命令的细节. 同时涉及的作业也很有意思, 采用的是 CTF(夺旗), 如果你感兴趣可以用 Docker pull 他们的镜像然后尝试完成.
完成 CS-61A 的一个 . 按照文档指示一直做到最后, 同时完成自动化评测. 注意: 你需要添加一个 --local
的标记(因为我们不是UCB的学生).
尝试去阅读并完成 的练习.
之前我们提到了, Git 里的一切都是对象. 你会发现, 我们可以用 OOP 的思想去设计一个 Git 的模型:
设计一个基类 Object, 然后它的子类 Blob, Tree, Commit.
你只需要设计 Template. 换句话说不需要你实现, 但你需要把接口设计出来.
学习下 argparse
或者 click
这个库. 试着能够在终端里像执行 git 一样执行你的应用程序. (创建一个 mygit
文件, 调用 mygit_lib.py
然后将它添加到你的 PATH, 可以去了解下 shebang)
你只需要实现一个打印功能, 例如下面的演示
实践环节: 上传到你的 Git 仓库! 就算你还是 WIP, 照样可以上传. 如果你愿意, 可以分享出来. 说不定你还可以拉上几个小伙伴一起团队开发一个 Git 呢!
深入理解java的面向对象部分,并自己实现一个基于继承的工厂模式。要求能够生产至少3个类别。
更进一步的理解泛型,自己动手实现一个基于泛型的计算器。这个计算器要求包含加减乘除功能,使用命令行交互。
进阶版本:
想一想该如何提供一个更友好的交互界面,如像python的交互模式一样区分输入与输出。
你可能只实现了两个数的加减乘除,该如何分析更长的表达式呢?
该如何验证你的表达式的正确性?
反射部分需要大家实现一个反编译器,不过只是基础版本大家不要担心。你需要实现反汇编一个类的import部分、属性部分、方法部分并将其格式化(即标准的java缩进),最后在输出到一个.java
文件中即可。
注解部分基础要求为仔细阅读注解的原理与接口。详细描述注解如何发挥作用并提交即可。
PS:这个东西难度确实有点大^_^
构建命令行接口你也可以 google 开发的 库. 但我们推荐你先学习传统的构建方式.
如果你愿意进一步探索, 可以去实现一些简单的 Git 功能. 参考我们对 Git 底层原理的讲解, 以及 的项目.
:这是一个南京大学提供的硬核pa实验,里面给出了基本的表达式分析功能,可以作为参考。
:所有未经测试的代码都是不正确的,想办法自己实现一个单元测试来检查你的实现。
该如何反编译呢?你只需要先写出一个真正的类(比如在第一项作业中实现的factory),然后使用java的反射机制,在运行时将整个类的信息读取出来,具体的做法请详细阅读我们提供的一节。再使用一些字符串拼接的技巧,拼出完整的类再输出出来即可。
进阶部分:上面的第三部分中实现了一个弱小的反编译器将其从class格式转换为人类能阅读的形式。事实上类还可以用别的方式存储比如。请使用注解提供一个快速将json格式文件转换为java类的工具。如果你不知道该怎么做请阅读的源码。