怎么理解输入输出流

文章探讨了在接口设计中,如何处理涉及文件传递的参数问题,特别是是否可以使用字符流。作者强调了流的本质是作为应用与数据源之间操作的工具,提供读写数据的功能,并指出接口设计应考虑数据传输的效率和大小。在数据传输过程中,序列化和反序列化是关键步骤,而选择直接操作流还是数据则取决于所用框架的封装程度。
摘要由CSDN通过智能技术生成

背景

昨天领导开会,讨论两个接口之间参数问题,这个参数涉及文件传递的需求;其中一句话引起了我的思考:“参数怎么定义?能不能定义成字符流?”

当时我沉思了一下,懵的 没明白她的意思
我理解的比如http请求传输的数据无非是字节电信号嘛,肯定是向把传输数据最小化最好。

字符串,数字,字节数组这些基础类型肯定是支持的,其他类型的参数无非是:
1、应用先将数据类型序列化,然后再依赖底层传输协议在网络上传输
2、接收方将获得数据进行反序列化后,生成自定义对象
3、通过对象解析数据

对于输入输出流的理解

网上各种举例的说法

网上很多说法,大部分解释流都会举一个水缸与水的例子(或者其他类似的比喻);
在这里插入图片描述

这样解释我觉得让问题复杂化了,是一种自下而上的理解途径,对于初学者要把例子中的各个角色对应起来还是比较打脑壳;

我的理解

我理解其实很简单,两点(1、流是什么 2、其有什么功能特性):

  • 不是真实数据,而是一类工具(应用与数据源间操作的工具)
  • 这类工具提供读取或者写入数据的特性

从这两个角度(自上而下的整体角度)去理解流的话,就很清晰了;看下图
在这里插入图片描述
上面的源其实可以理解成我们的应用或者操作系统内核

摘自:https://www.zhihu.com/question/38075755

接口

回头想想这个接口,方向应该是在传输数据大小、速率等方向进行深度设计;
至于接收方数据的获取那肯定是离不开流,因为java里的流就是干这个事情的;
我们接口设计成直接操作流还是直接操作数据,这要看我们使用的框架封装的程度

over~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值