es读取磁盘数据的时候主要使用了两种存储类型:

  1. NIO文件系统类型,对应FileChannel类的实现,多线程读写文件时性能较好

  2. MMap文件系统类型,对应elasticsearch的MMapDirectory类,java的类实现为FileChannel.mmap方法,这样就可以把文件映射到虚拟地址空间中,相当于直接访问IO缓存,该方法对应的源码如下` /** Maps a file into a set of buffers */
    final ByteBuffer[] map(String resourceDescription, FileChannel fc, long offset, long length) throws IOException {
    if ((length >>> chunkSizePower) >= Integer.MAX_VALUE)
    throw new IllegalArgumentException("RandomAccessFile too big for chunk size: " + resourceDescription);

    final long chunkSize = 1L << chunkSizePower;

    // we always allocate one more buffer, the last one may be a 0 byte one
    final int nrBuffers = (int) (length >>> chunkSizePower) + 1;

    ByteBuffer buffers[] = new ByteBuffer[nrBuffers];

    long bufferStart = 0L;
    for (int bufNr = 0; bufNr < nrBuffers; bufNr++) {
    int bufSize = (int) ( (length > (bufferStart + chunkSize))
    ? chunkSize
    : (length - bufferStart)
    );
    MappedByteBuffer buffer;
    try {
    buffer = fc.map(MapMode.READ_ONLY, offset + bufferStart, bufSize);
    } catch (IOException ioe) {
    throw convertMapFailedIOException(ioe, resourceDescription, bufSize);
    }
    if (preload) {
    buffer.load();
    }
    buffers[bufNr] = buffer;
    bufferStart += bufSize;
    }

    return buffers;
    }`

es中的高效文件读取方式相关推荐

  1. Linux 命令之 source -- 在当前Shell环境中从指定文件读取和执行命令

    文章目录 一.命令介绍 二.命令格式 三.命令示例 一.命令介绍 source 命令会在当前 Shell 环境中从指定文件读取和执行命令.source 命令通常用于重新执行刚修改的初始化文件,使之立即 ...

  2. Java开发中文件读取方式总结

    JAVA开发中,免不了要读文件操作,读取文件,首先就需要获取文件的路径.路径分为绝对路径和相对路径. 在文件系统中,绝对路径都是以盘符开始的,例如C:abc1.txt. 什么是相对路径呢?相对路径就是 ...

  3. java中文件读取方式的顺序_java中读取文件的方式

    java中读取文件的方式 经常遇到java中读取文件的方式,有时候需要指定编码,有时候不需要指定编码,被搞的挺晕的,抽时间整理了一下java读取文件的方式,主要是对字符型的处理,二进制的暂时不考虑. ...

  4. linux中split分割文件打开方式,Linux系统下使用split命令分割大文件 (转载)

    [小蜗牛闲情之作 ] 我想给一个朋友传一个大视频,有几百M,尝试多种传输办法失败后,最后想到的是把视频切开一片片"邮递"过去给他,让它自己组装起来吧. [root@pps publ ...

  5. Java文件读取方式和效率性能对比

    场景描述 文件大小 8.67G的json文件,一共670万行. 服务器内存:2g.(只能读取一定缓冲数据,然后处理后继续读取,不能一次性加载到内存) 读取文件的内容出来,并未做业务处理. 读取方式和性 ...

  6. Windows 7中修复lnk文件打开方式

    今天在电脑中搜索一个文件,在搜索到的列表中出现很多,就选择了其中一个,直接右键-打开方式-选择记事本,确定后打开发现全是乱码,这才发现我选择的文件是一个快捷方式,更糟糕的是在选择打开的方式中我选中了始 ...

  7. python的文件读取方式_python中文件读取方式

    指\u201CPython编程:从入口到实践\u201D和\u201CPython编程快速启动\u201D1.文件路径获取文件路径包括绝对路径和相对路径.绝对路径是指\u201CE: \\ \\\u2 ...

  8. python中如何打开csv文件_在Python中从CSV文件读取数据

    我正在从包含以下数据的CSV文件(xyz.CSV)中读取数据: col1,col2,col3,col4 name1,empId1,241682-27638-USD-CIGGNT ,1 name2,em ...

  9. 与日俱进,在 Go 1.20 中这种高效转换的方式又变了

    在 Go 1.19 的开发中, string.SliceHeader 和 string.StringHeader 经历了一个生死存亡的争斗,这两个类型一度被标记为弃用( deprecated ),但是 ...

最新文章

  1. Alchemy环境的搭建
  2. 移动端网页特效:左右滑动开关
  3. 2015-03-19 Opportunity order by implementation detail
  4. 学前端可以做哪些功能?
  5. mysql 数据库表重建_mysql 数据库表重建
  6. 有没有想过,你眼中的SQL进阶,别人看来连入门都不是?
  7. 软件工程导论 09章面向对象方法学
  8. mysql的增量备份方法_mySQL 增量备份方案(转)
  9. Laravel框架和TP框架区别
  10. python弧度转角度_Python中转换角度为弧度的radians()方法
  11. 计算机课代表总结,计算机班的班主任工作总结.doc
  12. 兜兜转转还是往前了一小步
  13. Carsim安装教程-破解carsim2016.01和Carsim2018
  14. ASPCMS网站通用标签基本标签
  15. ROS2 Humble测试版功能包列表
  16. 京东全民营业拿金币之辅助脚本网页版
  17. 你有没有感觉现在4G的速度越来越慢了?为什么?
  18. Camunda 工作流并行子流程、工作流会签、或签、加签、比例签、跳转节点
  19. Kali渗透测试之端口扫描1——UDP、TCP、僵尸扫描、隐蔽扫描
  20. weWatch——一个基于vitamio的电视直播软件

热门文章

  1. Java 工程师成神之路!
  2. 《绝地求生》外挂源码被公布后,腾讯蓝洞再次出招打压!
  3. 禅道外部消息提示_Spring Boot中文参考指南(2.1.6)34、消息传递
  4. Redis bgsave 线上分析
  5. c语言实现的optics算法,基于深度学习的光学系统设计方法
  6. python sleep什么意思,Python sleep()
  7. servlet 返回可访问文件_Servlet第二篇「Servlet细节、ServletConfig、ServletContext」
  8. docker增加端口映射_docker配置lamp环境笔记
  9. linux php和java环境变量配置_java_linux配置java环境变量详细过程,直接上实现过程: 一. 解压安 - phpStudy...
  10. mvc ajax图片上传,MVC 通过ajaxSubmit上传图片并显示