偏底层(深入)的一些概念整理

1. 大端模式和小段模式

key:网络通信、字节序、底层驱动开发、Big-Endian & Little-Endian

2. 字节对齐

key:padding

3. 编码

简单来说,GBK、GB2312、Unicode这些是字符编码格式,是字符对应的编码值,根据编码表可以找到对应字符的编码值;而UTF_8、UTF_16这些是编码值的存储方式(几个字符存储,大小端字节序),其中UTF_8是变长格式存储方式即不同的字符需要的存储空间大小可能不同,而UTF_16是2字节存储。GBK和GB2312是2字节存储一个汉字,GB2312仅包含简体字,而GBK包含了繁体字;UTF_8因为是变长格式存储,汉字以3字节存储较多。

4. 带缓冲和不带缓冲的IO

  • 带缓存的文件操作是标准C库的实现,第一次调用带缓存的文件操作函数时标准库会自动分配内存并且读出一段固定大小的内容存储在缓存中。标准IO库提供缓冲的目的是尽可能减少使用read和write调用的次数,降低执行IO的时间,它提供三种类型的缓冲:全缓冲、行缓冲、不带缓冲
  • 不带缓存的文件操作通常都是系统提供的系统调用,更加低级,直接从硬盘中读取和写入文件,由于IO瓶颈的原因,速度并不如意,而且原子操作需要程序员自己保证,但使用得当的话效率并不差。另外标准库中的带缓存文件IO是调用系统提供的不带缓存IO实现的
链接:
摘录可以看出标准IO会缓冲4096Bytes的数据,当达到这么多数据时才会进行实际的磁盘写入,而系统调用write则是直接写入,不进行缓冲。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值