如何编写一个 SendFile 服务器

前言

之前讨论零拷贝的时候,我们知道,两台机器之间传输文件,最快的方式就是 send file,众所周知,在 Java 中,该技术对应的则是 FileChannel 类的 transferTo 和 transferFrom 方法。

在平时使用服务器的时候,比如 nginx ,tomcat ,都有 send file 的选项,利用此技术,可大大提高文件传输效能。

另外,可能也有人谈论 send file 的缺点,例如不能利用 gzip 压缩,不能加密。这里本文不做探讨。

纸上得来终觉浅,绝知此事要躬行。

那么,如何使用这两个 api 实现一个 send file 服务器和客户端呢?

想象一下,你写的 send file 服务器利用 send file 技术,利用万兆网卡,从各个 client 端 copy 海量文件,瞬间打爆你那 1TB 的磁盘和 48核的 CPU。并且,注意:只需很小的 JVM 内存就可以实现这样一台强悍的服务器。为什么?如果你知道 send file 的原理,就会知道,使用 send file 技术时, 在用户态中,是不需要多少内存的,数据都在内核态。

是不是很有成就感?什么?没有?那打扰了

最新文章

  1. 使用Event Message 对 Package 进行Troubleshoot
  2. xp
  3. airline 設定 安裝
  4. 14——小心copying行为
  5. jquery checkbox checked
  6. 防止IE7,8进入怪异模式
  7. Micro Python - Python for microcontrollers
  8. const对象默认是static的,而不是extern的
  9. 面试 | 商汤科技面试经历之Promise红绿灯的实现
  10. bzoj 1598: [Usaco2008 Mar]牛跑步 [k短路 A*] [学习笔记]
  11. css 文本设置
  12. Beta冲刺博客汇总(麻瓜制造者)
  13. php 7 新特性整理小结
  14. GEO数据下载分析(SRA、SRR、GEM、SRX、SAMN、SRS、SRP、PRJNA全面解析)
  15. Build Tool(构建工具)
  16. 拷贝某个区间(copy,copy_back)
  17. 窗体的构造函数和OnCreate事件
  18. Installation failed: Timeout was reached: Operation timed out after 10000 milliseconds with 0 out of 0 bytes received
  19. 个人作业2——APP案例分析
  20. LaTeX 制作表格

热门文章

  1. #3144. 「APIO 2019」奇怪装置
  2. 【TCP/IP网络编程】:01理解网络编程和套接字
  3. mysql常用命令杂记
  4. yolov3和ssd的区别
  5. c#中取绝对值
  6. Java内功心法,Set集合的详解
  7. map元素area热区坐标自适应窗口大小
  8. CSS filter滤镜试玩
  9. 关于es6及以上的js编译成es5
  10. Jquery选择器个人总结