基础才是重中之重~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;
}
复制代码

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

回到目录

 

posted @   张占岭  阅读(2305)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
历史上的今天:
2013-05-06 JQ~trigger与bind,触发与绑定何先何后?
2012-05-06 架构,改善程序复用性的设计~第二讲 什么应该提取出来,什么应该保留
点击右上角即可分享
微信分享提示