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

简介:

多看几篇

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

原理

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

思维导图

基础概念

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

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

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

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

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

本文转自博客园张占岭(仓储大叔)的博客,原文链接:基础才是重中之重~stream和byte[]的概念与转化,如需转载请自行联系原博主。

目录
相关文章
|
C#
C# Stream 和 byte[] 之间的转换
原文:C# Stream 和 byte[] 之间的转换 Stream 和 byte[] 之间的转换   /* - - - - - - - - - - - - - - - - - - - - - - - - * Stream 和 byte[] 之间的转换 * - - - - - - - - - ...
833 0
|
C#
C# Stream 和 byte[] 之间的转换
/* - - - - - - - - - - - - - - - - - - - - - - - -  * Stream 和 byte[] 之间的转换 * - - - - - - - - - - - - - - - - - - - - - - - *//// /// 将 Stream 转成 byte...
896 0
silverlight中如何将BitmapImage转化为Stream或byte数组?
上一篇"base64编码在silverlight中的使用"里已经提到WriteableBitmap对象可以借助FluxJpeg转化为base64字符串,而WriteableBitmap又能从BitmapSource直接构造,so .
1065 0
|
5月前
|
Java
java 读取文件 获取byte[]字节 并执行Gzip的压缩和解压
java 读取文件 获取byte[]字节 并执行Gzip的压缩和解压
49 0
|
8月前
|
存储 Java 计算机视觉
java 之byte
当涉及到处理数据时,Java 提供了多种数据类型,其中包括 `byte` 类型。在本文中,我们将深入探讨 Java 中的 `byte` 数据类型,了解它的特点、用途以及在编程中的实际应用。
|
8月前
|
Java
Java中 String与基本数据类型,包装类,char[],byte[]之间的转换
Java中 String与基本数据类型,包装类,char[],byte[]之间的转换
56 0
|
10月前
|
存储 Java
[java 基础知识] byte int 互转
[java 基础知识] byte int 互转
99 0