「RocketMQ 整体设计架构」
下面介绍消息队列的两个不同的实现模式:
- 队列模式
- 订阅-发布模式
条件语句相信大家都很熟悉了,无非就是:
if(condition) { |
或者是 if/else if/else
、三目运算符、switch
等等,但是,你是否了解条件执行的本质呢?让我们来剖析下吧。
Mac 上的终端,我体验下来,iTerm2 应该是最趁手的,配合 homebrew 和 zsh 插件,整个体验下来就很香,接下来就来看看如何来配置吧。
维基百科的解释:"Zero-copy" describes computer operations in which the CPU does not perform the task of copying data from one memory area to another or in which unnecessary data copies are avoided. This is frequently used to save CPU cycles and memory bandwidth in many time consuming tasks, such as when transmitting a file at high speed over a network, etc., thus improving the performance of programs (processes) executed by a computer
简单来说,就是数据搬运过程不需要通过 CPU,所有的数据都是通过 DMA 来进行传输。
因此,零拷贝不是说不拷贝,而是 CPU 不参与数据拷贝的过程。
那如何实现零拷贝呢?
本文将介绍「传统文件传输」,传统文件传输涉及到两个 syscall,也就是
read
和
write
,这个效率是很糟糕,为什么?那么怎么去优化呢?
磁盘可以说是计算机系统中最慢的硬件之一,读写速度跟内存完全不在一个量级上,所以针对优化磁盘的技术非常的多,比如零拷贝、直接 I/O、异步 I/O 等等,这些优化的目的就是为了提高系统的吞吐量,另外操作系统内核中的磁盘高速缓存区,可以有效的减少磁盘的访问次数。
本文是介绍这些技术的开端,讲一讲什么是 DMA 技术。