博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基础才是重中之重~stream和byte[]的概念与转化
阅读量:7050 次
发布时间:2019-06-28

本文共 1001 字,大约阅读时间需要 3 分钟。

多看几篇

之所以写这篇文章完全是因为最近在研究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;}

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

本文转自博客园张占岭(仓储大叔)的博客,原文链接:,如需转载请自行联系原博主。

你可能感兴趣的文章
iOS 12, watchOS 5, macOS Mojave 10 14, tvOS 12 等beta版描述文件下载
查看>>
Python3爬虫-04-模拟登录爬取企信宝200页数据
查看>>
javascript设计模式
查看>>
打造 Laravel 优美架构 谈可维护性与弹性设计
查看>>
新手路:用node js和mongodb数据库创建AJAX API接口
查看>>
如何获得C4C里某个code字段对应的描述信息
查看>>
elasticsearch -- 基础入门 -- 请求体查询 -- 最重要的查询
查看>>
MCPlayerKit 易用的播放组件,通用播放器
查看>>
配置HTTPS,公钥证书有效期短怎么办?
查看>>
重新学习web后端开发-004-了解http响应
查看>>
js判断微信内核浏览器
查看>>
199. Binary Tree Right Side View
查看>>
JS每日一题: 请简述一下vuex实现原理
查看>>
从 TodoList 中学父子组件通信
查看>>
Spring MVC常用客户端参数接收方式
查看>>
用koa开发一套内容管理系统(CMS),支持javascript和typescript双语言
查看>>
Promise面试题,控制异步流程
查看>>
css-从笔试题中看知识
查看>>
LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
查看>>
前嗅ForeSpider教程:数据浏览与可视化
查看>>