不懂就问:关于查看官方文档的困惑。

2020-12-01 02:30:08 +08:00
 Nebo
今天学习的时候遇到一个问题,NIO 资料 网上一搜,很多都很详细的说明了 (1)非直接缓冲区、( 2 )直接缓冲区 的使用。
但是在官方文档中: https://docs.oracle.com/javase/tutorial/essential/io/fileio.html 我却没有看到有讲 直接缓冲区。
按照道理来说官方文档不应该是最全的吗, 或者说是在别的章节里面我没注意到吗。感到十分困惑 ,一直觉得官方文档应该是最详细的。
求教一下这是什么原因 3ks ~
1836 次点击
所在节点    程序员
7 条回复
lewis89
2020-12-01 07:53:48 +08:00
没啥原因,人家这个是个基础的教程,你非要人家面面俱到怎么可能,Linux 教程教你文件读写 也是上来先 fd = open(
"/data/path","w+") write(fd)

不会上来教你 mmap 吧... 另外 mmap 使用的场景也很少,大部分时候 一次 IO 拷贝 4 次 并不是一个太大的问题,除非你确实在高性能场景需要去大量传输数据
yaphets666
2020-12-01 09:17:04 +08:00
正常 很多工具 框架都是这样的 面面俱到介绍每一个概念 每一个 api 的文档 极少
Nebo
2020-12-01 11:41:17 +08:00
@yaphets666 嗯。我的困惑在于,这样的话。在最初只有官方文档的时候,其他人是如何整理这些资料的呢。 是通过阅读官方 api 、阅读源码之后理清脉络做的总结吗 --感觉好难呀。。 主要是想学习下别人的学习方法。
SWALLOWW
2020-12-01 14:13:59 +08:00
我也有这样的困惑。。一有问题别人就能告诉你因为底层啥啥啥有问题,官方文档都没有你在哪看的呢
leo2menhui
2020-12-01 14:25:25 +08:00
其实我也有这样的困惑
Nebo
2020-12-01 15:17:12 +08:00
@lewis89 嗯嗯,然后我的困惑就是这类问题, 官网上既然没有提到。那别人是怎么总结出来的呢。 想了解了解别人的学习方法。
lewis89
2020-12-01 15:30:28 +08:00
@Nebo #6 别人怎么总结出来的?其实没啥总结出来的,无非就是对底层内核实现跟操作系统原理的了解,因为大部分科班毕业的都读过操作系统原理跟体系结构,虽然内核实现细节很多,但是原理并不是太复杂,有兴趣可以去了解一下两本书 Unix 环境高级编程 Linux 编程手册 CSAPP 操作系统原理 读完这几本基本上体系结构就明了,上头封装的东西就那么回事。

因为大部分应用层编程 是用不到 direct memory 的, 也就是说一次 IO 至少 写-拷贝 2 次 读-拷贝 2 次,但是这个消耗对大部分应用来说根本就不算是一个事情,你要应把这个抽象去掉是没有意义的,就像我用的这个 Chrome 浏览器,你说它下载 V2EX 10mb+ 的网络数据 从内核拷贝两次到用户态 算个事情吗? 内存总线速度快得很,根本没必要去优化这个东西。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/730794

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX