笔记说明
本博客用于记录一些碎片化的笔记与个人思考,系统化笔记请参考空白阴影的笔记本.
Gitlet 项目实现与设计总结
前言早已听闻gitlet是个值得手搓+自己debug的入门项目(实际做下来确实如此):1.4w单词的文档、1k+行代码,对于没写过工业级代码的小白来说是很好的锻炼机会.于是寒假挑了连续的几天把项目完完整整写完(包含EC),总共用时加上lab6大概是26h(不过这26h是单纯在IDEA界面的计时,算上读文档应该接近40h),如下: 第一天:完成lab6,熟悉文件IO 第二天:完成到log?有点忘了 第三天:完成除了merge和EC的所有部分 第四天:完成merge 第五天:完成EC同时附上完成的截图~在过程中用到的网站/工具:Lab6Gitlet官方spec官方Git Intro补充测试样例【原理解析】让你完全搞明白Git是如何管理你的代码的由于课组要求将GitHub仓库设为private,无法展现所有源代码,后文贴出部分仅供参考.总体思路文件结构首先要确定文件夹的结构以及需要添加哪些类.我除了Commit以外都没有设计新的类(也就是只用了官方给的文件),文件夹的结构是:1234567891011121314151617181920212223242526272829303132...
Java语法-基于proj1
课程资料:CS61B sp21, Project 1: Data Structures 接口与实现在Project1中,我们需要完成两种双端队列:基于链表的和基于数组的.这两种双端队列的方法有许多重复:都要实现头插、尾插、头删、尾删、打印队列等;并且根据类的封装特点,这两种双端队列仅仅是实现方法不同,在用户使用过程中不应该有很大区别.因此,可以将这两种双端队列都视为一个共同接口的实现. 接口接口(Interface) 内部一般而言只需要声明方法的返回类型、方法名及参数,而不需要提供方法的具体实现;这部分通常留给其实现类来完成. 当然,接口内部也可以直接把方法的具体实现补充完全,这样实现类如果没有重写该方法,就会调用接口内的默认实现.此时接口内部该函数前要加 default 关键字. 默认接口中的方法都是 public 的.当我们在方法前加 public 时,IDEA会告诉我们这个修饰是冗余的. 根据proj1对Deque接口方法的描述,其代码实现如下:1234567891011121314public interface Deque<T> { void ad...