linux下怎么设置内存对齐

linux下怎么设置内存对齐,第1张

内存对齐是有规则的:

a. 基本类型:所有的基本类型都有相应的对齐参数,编译器在编译时,会用全局的对齐参数和当前类型的对齐参数中较小的一个进行对齐。比如,编译时指定按8bytes对齐(用#pragma pack(8)实现之),可是由于一个char变量的大小为一个byte,所以最后还是按1byte对齐。

b. 复合类型:复合类型的对齐原则,就是取其成员变量数据类型的字节数的最大者和在编译时指定的对齐数两者之间较小的字节数进行对齐。如果没有用诸如#pragma pack指定全局对齐数,则该复合类型的对齐数就是其成员变量数据类型字节数之最大者。

VC和GCC默认的都是4字节对齐,编程中可以使用#pragma pack(n)指定对齐模数。出现以上差异的原因在于,VC和GCC中对于double类型的对齐方式不同。

Win32平台下的微软VC编译器在默认情况下采用如下的对齐规则: 任何基本数据类型T的对齐模数就是T的大小,即sizeof(T)。比如对于double类型(8字节),就要求该类型数据的地址总是8的倍数,而char类型数据(1字节)则可以从任何一个地址开始。

Linux下的GCC奉行的是另外一套规则:任何2字节大小(包括单字节吗?)的数据类型(比如short)的对齐模数是2,而其它所有超过2字节的数据类型(比如long,double)都以4为对齐模数。

复杂类型(如结构)的默认对齐方式是它最长的成员的对齐方式,这样在成员是复杂类型时,可以最小化长度。

struct{char a;double b;}

在VC中,因为结构中存在double和char,按照最长数据类型对齐,char只占1B,但是加上后面的double所占空间超过8B,所以char独占8B;而double占8B,一共16Byte。

在GCC中,double长度超过4字节,按照4字节对齐,原理同上,不过char占4字节,double占两个4字节,一共12Byte。

在Linux系统里常用于文本查看、 *** 作、统计的命令:

通过多敲键盘,形成手感 肌肉记忆 ,熟练掌握这些命令,在以后生信分析中游刃有余。以下是每个命令的详细的介绍(主要是跟着 生信技能树小郭老师 学习做的笔记)

接下来通过示例把10个命令的常用参数和用法展示出来:

参数的用法介绍:

注意事项:

cat 命令可以 查看文本 ,也可以 编辑文本 ,编辑文本要加 > 符号,退出时,另起一行,按 control C 退出

zcat可以查看压缩的文本文件,tac逆向查看

结合 管道符| 使用

head / tail -n :查看文件的前 / 后 n 行,默认 10 (在R语言里head和tail默认是前6行)。

less命令用得最多 ,more命令用得比较少

3.1 less命令

less [参数] 文件名

less命令重要的补充用法1

需要注意 退出 :只要使用less命令, 按q键

less命令重要的补充用法2

参数用法:

less命令 不加参数 查看文件:

less命令加 -N参数 查看文件:显示行号

less命令加 -S参数 查看文件:单行显示,非常规整

对比:less和cat命令显示文本行号的用法:less -N,cat -n

3.2 more命令

**more ** 逐页查看,按空格翻页,按回车换行 ,more命令一般很少用,熟练掌握less命令就好

查看压缩文件

wc 统计字符是也把换行符统计进去,但是别的命令不一定会把换行符算进去,。

常见参数:

切记:用less命令,按q退出

cut命令是按关键词来切的

常见参数:

排列前:

排列后:

解释:1和0比,1大;7和0比,7大…在sort字典排序里,100816比1737小,所以100816排在前面。

命令行查看一个表格结构时,因为制表符对齐的原因,出现一个错位的现象。还有 字典排序 可能和我们平时的认知不一样,所以 加上-n参数 让数值有数学意义上的大小来排序

uniq命令去重,只有两行出现重复,而且是相邻的两行,如果不相邻,即使出现两行一模一样,不会去重。

uniq命令通常和sort命令搭配使用

换其它文件试试

总之,uniq命令使用时经常和sort一起

常见参数:

常见用法1:

paste file1 file2

-s :按行合并 演示

常见用法2 : paste - -

常见参数:

要养成一个好习惯,原始数据不要轻易修改,修改的东西另外保存,文本保存用>(重定向)或是 >>(追加)

1. less 查看 example.gtf ,然后管道符传递给 wc

2. 截取 example.gtf 9 列的内容

3. 在第2步的基础上截取分号分割的第1列

4. 在第3步的基础上排序、去重复并统计

5. 在第4步的基础上,将空格替换成制表符

补充小知识

清屏 :control L

查看历史(输入过的)命令 :history


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8379037.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-15
下一篇 2023-04-15

发表评论

登录后才能评论

评论列表(0条)

保存