小记(重载,重写,多态)(linux du和df)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小记(重载,重写,多态)(linux du和df)相关的知识,希望对你有一定的参考价值。

1.一个方法名,参数不同,这叫方法重载。(Overload)
void foo(String str);
void foo(int number);


2.父类与子类有同样的方法名和参数,这叫方法覆盖。(Override)
class Parent { 
    void foo() {       
        System.out.println("Parent foo()");
    } 
}

class Child extends Parent {
    void foo() {
        System.out.println("Child foo()");
    }

}


3.父类引用指向子类对象,调用方法时会调用子类的实现,而不是父类的实现,这叫多态
Parent instance = new Child();
instance.foo(); //==> Child foo()

多态的三个前提:
1.要有继承关系
2.子类要重写父类的方法
3.父类引用指向子类对象

我理解的多态与继承体系有关,与方法覆盖有关,与方法重载无关。

 

************************************du和df*******************************************

du(disk usage)是通过搜索文件来计算每个文件的大小然后累加,du能看到的文件只是一些当前存在的,没有被删除的。他计算的大小就是当前他认为存在的所有文件大小的累加和。


df(disk free)通过文件系统来快速获取空间大小的信息,当我们删除一个文件的时候,这个文件不是马上就在文件系统当中消失了,而是暂时消失了,当所有程序都不用时,才会根据OS的规则释放掉已经删除的文件, df记录的是通过文件系统获取到的文件的大小,他比du强的地方就是能够看到已经删除的文件,而且计算大小的时候,把这一部分的空间也加上了,更精确了。当文件系统也确定删除了该文件后,这时候du与df就一致了。


du和df不一致情况原因:
常见的df和du不一致情况就是文件删除的问题。当一个文件被删除后,在文件系统 目录中已经不可见了,所以du就不会再统计它了。然而如果此时还有运行的进程持有这个已经被删除了的文件的句柄,那么这个文件就不会真正在磁盘中被删除,分区超级块中的信息也就不会更改。这样df仍旧会统计这个被删除了的文件。

实际上即使你/home什么都没有,df命令依然会显示占用了一部分空间的,文件系统的元数据占了部分空间。

df和du统计的数据是不同的。
打个比方,文件是需要放到文件柜里的,就算只有一个文件,也要占用一个文件柜。文件柜占用的空间比文件要大。
df就是统计使用了多少个文件柜。
du则统计实际有多少个文件。
这样下来,df算的就大,du就小。


簡單地說,df命令是根據該卷的inode使用情況進行統計的,而du則是累加所有文件的字節數。一個文件就算只有1字節,也要佔用一個inode。













































以上是关于小记(重载,重写,多态)(linux du和df)的主要内容,如果未能解决你的问题,请参考以下文章

php 方法重写和多态的区别

重载和重写有啥区别

封装继承和多态,重写重载等基础复习

java学习中,面向对象的三大特性:封装继承多态 以及 super关键字和方法的重写(java 学习中的小记录)

重写和重载的区别

重载和重写方法中的多态性