Other

目录项、inode、数据块

大部分的Linux文件系统(如ext2、ext3)规定,一个文件由目录项、inode和数据块组成: 目录项:包括文件名和inode节点号。 Inode:又称文件索引节点,包含文件的基础信息以及数据块的指针。 数据块:包含文件的具体内容。 一、inode是什么? 理解inode,要从文件储存说起。 文件储存在硬盘上,硬盘的最小存储单位叫做扇区(Sector)。每个扇区储存512字节(相当于0.5KB)。 操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个块(block)。这种由多个扇区组成的块,是文件存取的最小单位。块的大小,最常见的是4KB,即连续八个 sector组成一个 block。 文件数据都储存在块中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为索引节点。 每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。 二、inode的内容 inode包含文件的元信息,具体来说有以下内容:  * 文件的字节数  * 文件拥有者的User ID  * 文件的Group ID  * 文件的读、写、执行权限  * 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。  * 链接数,即有多少文件名指向这个inode  * 文件数据block的位置 可以用stat命令,查看某个文件的inode信息:  stat example.txt 总之,除了文件名以外的所有文件信息,都存在inode之中。至于为什么没有文件名,下文会有详细解释。 当查看某个文件时,会先从inode表中查出文件属性及数据存放点,再从数据块中读取数据。 请看文件存储结构示意图: 三、inode的大小 inode也会消耗硬盘空间,所以硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是inode区(inode table),存放inode所包含的信息。 每个inode节点的大小,一般是128字节或256字节。inode节点的总数,在格式化时就给定,一般是每1KB或每2KB就设置一个inode。假定在一块1GB的硬盘中,每个inode节点的大小为128字节,每1KB就设置一个inode,那么inode table的大小就会达到128MB,占整块硬盘的12.8%。 查看每个硬盘分区的inode总数和已经使用的数量,可以使用df命令。  df -i 查看每个inode节点的大小,可以用如下命令:  sudo dumpe2fs -h /dev/hda | grep Inode size

1. 官网CentOs7镜像下载详细步骤

CentOs官网下载官网:https://www.centos.org/ 1. 官网进入后,点击Download。    2. 进去后,64位机选x86-64   3. 选择国内的阿里云镜像下载地址    4. 点击【CentOS-7-x86_64-DVD-2009.iso】,即可下载 

mysql删除数据还占用硬盘空间

我碰到这么个情况,废话不多说。 针对20亿数据,用了TRUNCATE 命令来快速清除数据(针对大量数据会有,如果是几G的SQL文件,不会产生碎片)。 后面会产生一些bin缓存(删除后,发现磁盘只少一半,(delete语句删除后,实际在磁盘并没有删除,只作为一个标记,把缓存手动删除后,才算真正的删除)) 找到安装MySQL的data缓存里面,找到对应的数据。  在window系统里直接把这些缓存删除掉,就行。(这是个蠢办法,先备份再对碎片粉碎) 还有其他办法我没有实践过,我不做演示,如果再次出现这种懵逼的问题,我再试水下,成功再补上

Python - __name__ == '__main__' 到底是什么意思

总结 之所以常看见这样的写法,是因为该程序可能有“单独执行”(例如执行一些单元测试)与“被引用”两种情况,鉴于这两种情况中__name__的值是不同的: 当一个模块被直接执行时,其__name__必然等于__main__; 当一个模块被引用时,其__name__必然等于文件名(不含.py) 所以利用判断__name__ == '__main__'的真假就可以将这两种情况区分出来。  详细说明 相信许多人初学 Python 时,常会在例子程序中看到如下语句: if __name__ == '__main__': foo() # 或其他语句第 1 行的__name__ == '__main__'到底是什么意思呢? 首先,如果你永远都只执行一个 xxx.py,而不去 import它的话,那你完全不需要了解这是什么。例如你写了一个程序,文件名叫 hello.py print(====this is hello.py====)def foo(): print(hello)print(call foo() which is defined here) foo()print(====this is hello.py END ====)然后你总是直接执行它,就像这样 $ python3 hello.py ====this is hello.py====call foo() which is defined herehello====this is hello.py END ==== 这完全没有问题。 但是,当别人想引用你的foo()函数时,就有问题了。 例如别人写了一个文件,名字是 world.py # world.pyprint(====this is world.py====)from hello import foo

VMWare虚拟磁盘整理与收缩

问题案例: 在Windows宿主机中安装Centos虚拟机,在Centos里面使用了较大的磁盘空间后删除大文件,在Windows下该磁盘仍然保持较大的占用(类似于high water mark的机制),再次拷入大文件会提示空间不足。 解决方案: 在本地物理机上,到vmvare安装目录下执行 #碎片整理 vmware-vdiskmanager.exe -d D:\vmsystem\vmdisk1.vmdk Defragment: 100% done. Defragmentation completed successfully. #磁盘收缩 vmware-vdiskmanager.exe -k D:\vmsystem\vmdisk1.vmdk Shrink: 100% done. Shrink completed successfully.  

C# datagridView 表格渲染变色

private void DGV_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) { if (e.ColumnIndex >= 0 && DGV.Columns[e.ColumnIndex].Name == 字段名称) { if (Collections.Entity.to_double(e.Value) > 0) { e.CellStyle.BackColor = Color.Red; } else { } }  }

python安装pywebview报错

PS F:\python\TeaTerm> python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ pywebview Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple/ Collecting pywebview Using cached https://pypi.tuna.tsinghua.edu.cn/packages/47/94/90d0728146aaec49b25a13578a53dc39bc578cbfd9105426688220ac6a09/pywebview-3.6.3-py3-none-any.whl (351 kB) Collecting pythonnet Using cached https://pypi.tuna.tsinghua.edu.cn/packages/f7/18/be276f27f649199563a59561623c0c008e72bbcb6ecb8b2ca0404a741ae1/pythonnet-2.5.2.tar.gz (1.9 MB) Preparing metadata (setup.py) ... done Requirement already satisfied: proxy-tools in f:\python\teaterm\venv\lib\site-packages (from pywebview) (0.1.0) Requirement already satisfied: pycparser in f:\python\teaterm\venv\lib\site-packages (from pythonnet->pywebview) (2.21) Building wheels for collected packages: pythonnet Building wheel for pythonnet (setup.py) ... error error: subprocess-exited-with-error × python setup.py bdist_wheel did not run successfully.

如何在Java中将列表转换为JSON数组?

import java.util.*; import org.json.simple.*; public class ConvertListToJSONArrayTest { public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add(India); list.add(Australia); list.add(England); list.add(South Africa); list.add(West Indies); list.add(Newzealand); // this method converts a list to JSON Array String jsonStr = JSONArray.toJSONString(list); System.out.println(jsonStr); } } 输出结果 [India,Australia,England,South Africa,West Indies,Newzealand]  

node-sass python

1.安装python 当前项目中node-sass版本为4.13.1,要求python版本为2.x  (1)进入python官网,找到对应下载项下载。(我的是windows64位,因此下载Windows x86-64 MSI installer)  (2)下载完成后之后下载的文件,安装即可。  (3)打开cmd,运行where python 查看python安装路径是否与你装的地址相符,复制python.exe之前的内容,配置环境变量  (4)在cmd中运行python 正常应该可以启动python 如果没启动,说明上述环节出了问题。  解决:(1)检查环境变量是否配置正确  (2)实在不行就重启或者注销当前用户,再登进来。(我就是这样,环境变量没及时改过来,重启后一切正常了)

C# 循环依赖,分片,聚类

1 public static List<ProjectModel> While_ProjectRef(ProjectModel projectModel,SolutionModel solutionModel, 2 List<ProjectModel> ProjectCrip) 3 { 4 List<ProjectModel> Self_Refs = new List<ProjectModel>(); 5 if(projectModel.Projectrefs.Count>0) 6 { 7 foreach(var ProjectRef in projectModel.Projectrefs) 8 { 9 //对于每一个项目引用进行分析 10 foreach (var project in solutionModel.Projects) 11 { 12 //寻找项目引用的projecta 13 if (project.Name == ProjectRef.Name) 14 { 15 //如果已经被分析过了,那么就不再分析这个子引用 16 if (ProjectCrip.Contains(project)) 17 break; 18 ProjectCrip.Add(project); 19 Self_Refs.Add(project); 20 break; 21 } 22 } 23 } 24 foreach (var Project_ref in Self_Refs) 25 { 26 var child_project_ref=While_ProjectRef(Project_ref, solutionModel, ProjectCrip); 27 ProjectCrip = ProjectCrip.