事情的起因是提交java作业的时候,因为有一个模板文件被改动而无法merge。于是需要把这个文件还原到最初下载时的样子

首先是查询特定文件的git log记录

1
git log ./folder/filename

在windows的git bash中,是无法通过 git reset --hard 版本哈希 filename 来回退的

搜索后发现应该用checkout

1
git checkout 版本hash filename

可以避免影响已经完成的作业

但是这样是无法直接push的,因为有文件回退到了过去的版本。会出现 you are not currently on a branch

可以通过 git push origin HEAD:master --force 来强制执行

成功!

Read more »

目标与效果对照

假期前列出了以下to do:(按照重要性排序)

  • 准备GRE 9月开学即考试

  • 完成操作系统课上的PA:FAT12文件系统

  • 搭建博客

  • leetcode习题积累

  • 自学爬虫 解决一些感兴趣的数据分析话题

  • 收集信息

  • 把借来的书读完(世界史系列8本 北欧神话 二战系列2本 说服与不被说服的艺术 20世纪简史)

实际完成的情况:

  • GRE
    • 在假期背完了学期间的GRE单词
      • 粗略过了一遍 做题过程中高频词不够熟悉
    • Issue 写作5篇,分析6篇 和Arguement 5篇写作
      • 有大致的思路框架 但是几天不写会模糊
      • 能够表达 但是打字速度和用词需要继续加强
    • 选词 linduxi做了两遍,高频合集做到20+
      • 与最开始相比能够分析句子
      • 词汇量需要加强
    • 阅读 中间20~30题做了两次 目前到约40题
      • 能够断长难句 理清逻辑
      • 词汇量和长难文有待提高
    • 数学 专题还差概率部分
      • 只做了第一遍 需要复习错题和总结技巧
  • FAT12
    • 完成了基本的框架代码并且同步到了github上 博客同步更新
    • 但是有bug没有调试完
  • 搭建博客:网站已经可以正常运行 包括评论 tag 收录到搜索引擎
    • 反复更换心仪的主题 调试比较花时间
  • Leetcode 100题没有做完,做了一半这样,只要当天在学习就尽量做题
    • 至少每天一题 偶尔有几次能够在玩耍完回家后随手来一题
  • 读书:读完了《说服与不被说服的艺术 》世界史2本 北欧神话 (都没有更新读书笔记)

反思

最大的问题是作息 1点~3点睡 10~12点起成为常态导致一整个上午直接报废,下午的效率比较高 晚上基本在放松躺平

因为一直在熬夜,所以也不敢运动。关键是到点就休息 维持良好的作息才会有更多的自由时间

其次是不太紧张,虽然开了倒计时但是对于没有明确时间节点的任务经常会因为赖床往后推。在GRE考试延期以后连最开始坚持的GRE刷题也松懈了。

因为在家放假,休息时间很容易失控。应当用温和平静的放松方式代替玩手机,避免一次上头忘乎所以。

Read more »

开学前在西西弗随手翻了两本书,因此做一个读书笔记与反思调整。

如何成为一个会学习的人

从学习当中发现乐趣

比如说做GRE阅读题的时候发现自己能够准确梳理文章逻辑,享受抽丝剥茧的乐趣

设置简单的反馈目标

不仅是肯定自己完成了某件事,还应当肯定自己从中学到了什么

遇到困难先做一点点

比如说不想看书的时候先尝试看5页 或者遇到代码题先考虑分析一下思路再看解析

重点是投入

及时隔离包括手机在内的各种干扰源,如果有玩耍的念头 想想无数个恨铁不成钢的时刻,以及投入之后心流的愉悦

Read more »

初期准备

起初真就见财起意,但是由于本人执行力太差,大一下在家期间原本希望的早起刷题并没有实现,暑假又以准备开学考试为由没有刷题,真正刷题是大二上学期在决定申请之后,刷力扣大概一两个月的时间,算法面试题的集合中动态规划几乎没做(划重点这里会考!),其他部分做了七七八八。但是完成度不高,不够精细,基本都是先想一会然后看答案,如果不太难就自己复刻,太难没耐心想就会理解之后copy。而且重难点的题目没有多次巩固。一方面是时间问题,刷题的时间集中在了复习周+美赛爆肝期间(不过事实证明时间确实是海绵里的水,没空是因为还不够渴望);另一方面是方法问题,由于对需要达到怎样的程度并没有清晰的认识,在钻研的深度上有所欠缺。

软实力准备

写了简历,结合了自己做过的一些小项目和课程大作业(呜呜这里也划重点),但是简历当时写的不够精简。

找了HR姐姐给自己内推,之后出现情况也很及时的去push了 夸夸自己!

本人搞笑实录

留了两个邮箱,但是一直以来主要通过新浪联系,导致没发现最后最关键的通知面试信息投到谷歌邮箱去了,还好在朋友开始面试之后去问了hr姐姐 我是憨憨

不知道是否是回复面试通知确认时间太晚的原因,我第二天的上海base面试竟然被放鸽子了,于是只能过年后回来再面。我早早面完的同学第二天就收到了拒信orz

手撕代码部分

第一场 北京base

Read more »

FAT12 File System

DAY-3~1

出现负数是之前的时间一直在厘清思路,并没有很大的进展

大致框架:在main函数内初始化一个模拟磁盘的数据结构,作为FAT12文件系统,在支持输入和输出。目前给定的测试目标是存入文件并且读取。

由于使用的是内存的堆栈的空间,实际上在每次退出程序之后模拟文件系统中的内容都不会保存。阅读别人的代码以后,进行改进:把模拟磁盘的内容使用文件读写写进一个二进制文件(镜像),在程序运行的时候进行装载。

不要想着一口吃成胖子!可以先入手的是固定数据结构的实现

运行逻辑:main函数内接受指令,对模拟磁盘进行操作(模拟磁盘是一个大小与为1.44MB的char型数组,这就意味着以字节为单元),在程序结束时将该模拟磁盘数组的内容写入指定的二进制文件,在程序开始时反之装载二进制文件的内容到模拟磁盘数组。

对连续空间的操作:逐个字节搬运数据;在设计数据结构的时候使用union,使得结构同时具有字符数组的形式,通过对每个字节进行操作来完成读写盘。(ICS的pa中其实有类似的思路,文艺复兴!)

首先实现的读写操作如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//将bootsector结构体中的数据写入缓存磁盘
void Write_rmdisk_bootsector(unsigned char* ramdisk,const BootSector* mbr);
//从缓存磁盘中读出数据到bootsector结构体
void Read_rmdisk_bootsector(const unsigned char*ramdisk,BootSector*mbr);
//从磁盘中指定块读出一个数据块
void Read_rmdisk_block(const unsigned char* ramdisk,unsigned int index,unsigned char* block);
//将一个数据块写入到指定块
void Write_rmdisk_block(unsigned char* ramdisk,unsigned int index,const unsigned char*block);
//将缓存磁盘的数据写入到磁盘文件中 成功返回0 否则-1
int Write_rmdisk(unsigned char* ramdisk,string diskname);
//从一个磁盘文件中读取数据到缓存磁盘中 返回成功从文件中读入的字节数
int Read_rmdisk(unsigned char* ramdisk,string diskname);
//打印bootsector的信息
void print_bootsector(const BootSector* mbr);
Read more »

写这篇的原因是,临时起意在知乎搜索了二中,结合和朋友讨论二中老师近期的反应,有很多零零碎碎又反复出现的想法,不如一次写个痛快。

Read more »

如果表达是为了给自己记录,而不是为了成为大触,那么表达的好坏是无所谓的。

所以这里只是各种碎碎念

Read more »