基础才是重中之重~stream和byte[]的概念与转化

时间:2024-01-17 16:43:32

回到目录

多看几篇

之所以写这篇文章完全是因为最近在研究FastDFS这个分布式的文件存储系统,当然这不是我第一次研究它了,就像我们去看一本书,我们不会只看一篇,而是一次次,一篇篇,每看一次会有新的收获,而研究技术,框架也是一样,每研究一次,同样会有不同层次的收获,这次主要把fastDFS的集群就配置了一下,客户端的多tracker,并在程序执行过程中,自己也分析了一下它的集群原理。

原理

事实上,和mongodb,cat等集群原理相似,fastDFS也是有个路由服务器(它被称为trackers),首先客户端根据自己的配置,与trackers进行通讯拿到有效的文件服务器地址(被称为storages),然后客户端再真正的与它进行数据上的通讯,如上传文件,下载文件里,因为fastDFS实际上把文件存储到了storages服务器上。

思维导图

aaarticlea/png;base64,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" alt="" />

基础概念

Stream:流,一般指文件流,内存流,可读的流和可写的流等,是一种数据转换的格式,流在计算机里可以表示为流输入或输出的一个连续的字节序列,它在使用完后,需要把资源释放。

Byte[]:字节数组,字节是通过网络传输信息的单位。在ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。当一个字符通过网络从一端发到别一端时,会将它转换成字节数组,需要再发送。

文件上传时的Stream和byte[],有地我们需要进行转换,这里总结了两个方法

public byte[] StreamToBytes(Stream stream)
{
byte[] bytes = new byte[stream.Length];
stream.Read(bytes, , bytes.Length);
stream.Seek(, SeekOrigin.Begin);
return bytes;
} public Stream BytesToStream(byte[] bytes)
{
Stream stream = new MemoryStream(bytes);
return stream;
}

这种代码其实不难理解,但其中的原理值得我们去回味,因为毕竟,流和字节数据在网络传输中是并不可少的,也是计算机底层所认识的!

回到目录