zero-copy总结
基本概念
零拷贝,通常在java NIO编程中会使用,比如netty网络工具包。 其真实意思是:
网卡或者其他外设进行io操作时不经过CPU,  而是直接和主memory交互,不经过CPU寄存器,这样可以释放CPU,让CPU做其他更有意义的事。 CPU不会成为网络性能瓶颈,网卡的性能也能打满
0-copy一般是基于DMA, DMA控制器一般是集成在设备端(比如网卡),或者主板上, 硬件上一般不在CPU芯片上
linux内核对应的dma api 有 dma_map_single 。。。 设备驱动申请内存之后 完成IO操作之前,cpu不能再访问这片内存, 完成IO操作之后 dma控制器会通知CPU 其他线程再进行后面的读写操作
rocketMq broker发送消息给消费者时 是从commitLog 内存映射文件中读取 然后放入网卡,其高性能读写也是基于netty的FileRegion 0-copy

参考
https://en.wikipedia.org/wiki/Zero-copy
http://www.voidcn.com/article/p-cnfwakoo-bma.html
https://nieyong.github.io/wiki_cpu/CPU%E4%BD%93%E7%B3%BB%E6%9E%B6%E6%9E%84-DMA.html
zero-copy总结的更多相关文章
- HEC-ResSim原文档
		HEC-ResSim Reservoir System Simulation User's Manual Version 3.1 May 201 ... 
- 关于ubuntu实机与虚机互相copy
		我的开发环境是在ubuntu上的,但是ubuntu上没有官方支持的QQ,有些不太方便,所以在上面虚了一个Win7(先是win10,但是win10最新版本太坑了,不说了),不过经常会出现复制文件,或者文 ... 
- 探究@property申明对象属性时copy与strong的区别
		一.问题来源 一直没有搞清楚NSString.NSArray.NSDictionary--属性描述关键字copy和strong的区别,看别人的项目中属性定义有的用copy,有的用strong.自己在开 ... 
- copy()之绝版应用
		我选用了一个稍稍复杂一点的例子,它的大致功能是:从标准输入设备(一般是键盘)读入一些整型数据,然后对它们进行排序,最终将结果输出到标准输出设备(一般是显示器屏幕).这是一种典型的处理方式,程序本身具备 ... 
- Marshal.Copy将指针拷贝给数组
		lpStatuss是一个UNITSTATUS*的指针类型实例,并包含SensorDust字段 //定义一个数组类型 byte[] SensorDust = new byte[30] //将指针类型拷贝 ... 
- @property中的copy.strong.weak总结
		1.NSString类型的属性为什么用copy NSString类型的属性可以用strong修饰,但会造成一些问题,请看下面代码 #import "ViewController.h" ... 
- block为什么用copy以及如何解决循环引用
		在完成项目期间,不可避免的会使用到block,因为block有着比delegate和notification可读性更高,而且看起来代码也会很简洁.于是在目前的项目中大量的使用block. 之前给大家介 ... 
- [LeetCode] Copy List with Random Pointer 拷贝带有随机指针的链表
		A linked list is given such that each node contains an additional random pointer which could point t ... 
- NSString属性什么时候用copy,什么时候用strong?
		我们在声明一个NSString属性时,对于其内存相关特性,通常有两种选择(基于ARC环境):strong与copy.那这两者有什么区别呢?什么时候该用strong,什么时候该用copy呢 ... 
- iOS 浅谈:深.浅拷贝与copy.strong
		深.浅拷贝 copy mutableCopy NSString NSString *string = @"汉斯哈哈哈"; // 没有产生新对象 NSString *copyStri ... 
随机推荐
- Java 栈与堆简介
			一.前言 长久以来,一直被Java的内存分配问题,堆和栈问题困扰好久,面试的时候也非常心虚,这几天好好通过看书和技术博客来整理了一下,希望能找到我自己的理解方式. 二.内存 内存分物理内存和虚拟内存, ... 
- 可排序的 COMB 类型 GUID
			最新代码在这儿:CombGuid.cs 首先这里不做GUID与整形作为主键的优劣之争,GUID自有它优势,但GUID本身是乱序的,会对索引的维护带来性能上的损耗,数据量越大越明显. COMB 类型 G ... 
- git 只merge一个commit的方法
			https://git-scm.com/book/tr/v2/Git-Basics-Viewing-the-Commit-History gil log 来查看commit的记录 Other main ... 
- route -A inet6查看路由 getnameinfo failed [UNKNOWN]解决方案
			route -A inet6查看路由 getnameinfo failed [UNKNOWN]解决方案, 结果如下: route -A inet6 -n 查看即可 
- c_c++基础问题(平时读书时笔记)
			1 IP私有地址: 10.0.0.0 -- 10.255.255.255 172.16.0.0 -- 172.31.255.255 192.168.0.0 -- 192.168.255.255 2OS ... 
- WebApi跨域请求
			在实际开发中 会有提供webapi给前端js 直接调用的情况, 这时候就会有存在跨域的情况, 解决方案: 在Global中添加代码 protected void Application_BeginRe ... 
- docker中安装Jenkins
			1.获取Jenkins镜像(不要直接docker pull jenkin,这样获取的不是最新的版本,后续安装部分插件会不成功) docker pull jenkins/jenkins 创建文件夹 su ... 
- C#成员设计建议
			所谓成员,是指类型的字段和方法.在成员设计时,掌握一定原则可以避免设计上的陷阱. 1.不要为抽象类提供公开的构造方法 抽象类可以有构造方法,但是抽象类不能实例化.如果编程人员没有制定构造方法,编译器会 ... 
- 使用原生javascript和jQuery解析json数据
			JSON(JavaScript Object Notation)是一种轻量级的数据交换格式. JSONM文件中包含了关于“名称”和“值”的信息. 有时候我们需要读取JSON格式的数据文件,在jQuer ... 
- BF、kmp算法
			第七周 字符串匹配 BF算法,kmp算法 BF:时间复杂度为 O(m*n) int Index_BF(SString S, SString T, int pos) { ; while (i <= ... 
