io操作

1 缓冲

https://juejin.cn/post/7130062768413081637

https://juejin.cn/post/7085935695432269861

多级缓存

1.用户空间缓冲区

咋用

只有buffer满了才会读写

作用

1.减少io次数

不到buffer的大小,不会io

2.减少内存峰值

一次buffer的大小

2.内核缓冲区

3.磁盘缓冲区

2 落盘

open 打开文件句柄

write 写磁盘buffer

sync 写到磁盘

close 关闭文件句柄

3 三方库

https://cloud.tencent.com/developer/article/1656755

4 优化技术

零拷贝

https://zhuanlan.zhihu.com/p/357820303

protobuf

1.原理

https://www.wdbyte.com/tool/protobuf/

是由 Google 开发的一种轻量级、高效的数据交换格式,它被用于结构化数据的序列化、反序列化,对标json,xml

相比于 XML 和 JSON,Protobuf 有以下几个优势:

  • 更小的数据量:Protobuf 的二进制编码通常只有 XML 和 JSON 的 1/3 到 1/10 左右,因此在网络传输和存储数据时可以节省带宽和存储空间。
  • 更快的序列化和反序列化速度:由于 Protobuf 使用二进制格式,所以序列化和反序列化速度比 XML 和 JSON 快得多。
  • 跨语言:Protobuf 支持多种编程语言,可以使用不同的编程语言来编写客户端和服务端。这种跨语言的特性使得 Protobuf 受到很多开发者的欢迎(JSON 也是如此)。
  • 易于维护可扩展:Protobuf 使用 .proto 文件定义数据模型和数据格式,这种文件比 XML 和 JSON 更容易阅读和维护,且可以在不破坏原有协议的基础上,轻松添加或删除字段,实现版本升级和兼容性。

2.使用

编写.proto

编译

python

编译生成.py

1.bazel 编译

2.python编译

使用

python

import XX.py

例子

1 结构化数据传输

2 实现rpc框架

3.问题


:D 一言句子获取中...