软件构造复习笔记(二)

Git 的结构、工作原理、基本指令:


一个git仓库有以下三部分结构:
本地的CMDB(存储所有版本的数据);工作目录;暂存区(隔离工作目录和git仓库)

 

文件的三种形态:modified(已修改);Staged(已暂存);committed(已提交)。

Object Graph:版本之间的演化关系图,一条边A->B表征了“在版本 B 的基础上作出变化,形成了版本A”。

git init :创建仓库

git status:显示状态

git add *.*:加入缓冲区

git commit -m “xxxx”:提交

git log:日志

git remote add origin xxxxxxxx:创建一个叫origin的东西与xxx连接

git push origin master:master

git clone xxxx:克隆xxx下的仓库

 

每一个commit指向一个父亲。

多个commit指向同一个父亲:分支

一个commit指向两个父亲:合并

HEAD永远指向当前提交文件。

Git采用树形结构存储文件。

Git和传统的VCS有什么不同:Git存储发生变化的文件(而非代码行),不变化的文件不重复存储;传统VCS存储  版本之间的变化(代码行):

 

Git中的生成与合并分支:

 

 

主动合并的合并,被动合并的不改变。

基本数据类型、对象数据类型:

数据类型:一群值并且伴随一组操作。

变量:特定数据类型定义,可存储满足类型约束的值。

java基本数据类型:int,long,boolean,double,char

对象数据类型:String, BigInteger。

静态/动态类型检查:

Java是静态类型语言,因此会在编译阶段进行类型检查。

Python是动态类型语言,因此会在运行阶段进行类型检查。

静态检查:在运行之前bug就被自动发现了。

动态检查:执行时bug被自动发现了。

注意静态检查和动态检查针对bug,并不是说针对类型检查。

静态检查:语法错误;类名/函数名错误;参数数目错误;参数类型错误;返回值类型错误。

动态检查:非法的参数值(/0);非法的返回值;越界;空指针。

静态检查:关于“类型”的检查,不考虑值

动态检查:关于“值”的检查

 Mutable/Immutable:

改变一个变量:将该变量指向另一个值的存储空间。

改变一个变量的值:将该变量当前指向的值的存储空间中写入一个新的值。

不变数据类型:一旦被创建,其值不能改变

Final类型:第一次赋值之后就不能改变

final类无法派生出子类

Final变量无法改变值/引用

Final方法无法被子类重写

不变对象:一旦被创建,始终指向同一个值/引用

可变对象:拥有方法可以修改自己的值/引用

可变的引用就是不加final的,不可变的引用就是加final的。

??String str1 = “ABCD”;

String str2 = new String(“ABCD”);

Snapshot 怎么画

不可变类型:产生大量的临时拷贝(垃圾回收)

可变类型:最少化拷贝提高效率;可以获得更好的性能;诗和在多个模块之间共享数据。

可变类型安全性措施:

防御式拷贝,但是大部分时候拷贝不会被客户端修改,造成内存浪费。

安全使用可变类型:局部变量(不涉及共享)。

 Snapshot diagram:

Running time :描述程序运行时的内部状态(堆和栈)。

基本类型的值:

 

对象类型的值:

 

不可变对象:双线椭圆

 

可变对象:直接改变里面的值

 

不可改变的引用:用双线箭头

 

引用式不可改变的,但是指向的值是可以改变的(final StringBuilder sb)

可变的引用也可以指向不可变值(String s)

An example:

 

注意:使用迭代器的时候需要:

 

如果采取上一种写法,会使得index++同时元素减少而出错。因此需要remove迭代器,这样迭代器会自动调整。

Collections是List,Set和Map的父类。

 

这样声明的是无法被改变的类型。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值