问道Netty。持续更新。。。

概念

Zero Copy

  • 0拷贝,速度快
  • 操作数据时, 不需要将数据 buffer 从一个内存区域拷贝到另一个内存区域. 因为少了一次内存的拷贝, 因此 CPU 的效率就得到的提升.
  • 在 OS 层面上的 Zero-copy 通常指避免在 用户态(User-space) 与 内核态(Kernel-space) 之间来回拷贝数据. 例如 Linux 提供的 mmap 系统调用, 它可以将一段用户空间内存映射到内核空间, 当映射成功后, 用户对这段内存区域的修改可以直接反映到内核空间; 同样地, 内核空间对这段区域的修改也直接反映用户空间. 正因为有这样的映射关系, 我们就不需要在 用户态(User-space) 与 内核态(Kernel-space) 之间拷贝数据, 提高了数据传输的效率.

而需要注意的是, Netty 中的 Zero-copy 与上面我们所提到到 OS 层面上的 Zero-copy 不太一样, Netty的 Zero-coyp 完全是在用户态(Java 层面)的, 它的 Zero-copy 的更多的是偏向于 优化数据操作 这样的概念.

实操

代码

服务器

新建Maven项目:
在这里插入图片描述
添加插件:

		<plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>exec-maven-plugin</artifactId>
          <version>1.6.0</version>
          <executions>
            <execution>
<!--              // 可以添加对应的执行阶段-->
              <phase>test</phase>
<!--              ...-->
              <goals>
<!--                // 指定来的 goal为java,表示运行java程序-->
                <goal>java</goal>
              </goals>
            </execution>
          </executions>
          <configuration>
<!--            // 指定了运行的main class-->
            <mainClass>com.cc.netty.server.EchoServer</mainClass>
<!--            // 执行运行 main class的参数-->
<!--            // 其实就是传入main方法的String[]-->
            <arguments>
              <argument>argument1</argument>
<!--              ...-->
            </arguments>
<!--            // 运行java的程序的系统参数-->
            <systemProperties>
              <systemProperty>
                <key>myproperty</key>
                <value>myvalue</value>
              </systemProperty>
<!--              ...-->
            </systemProperties>
          </configuration>
        </plugin>

执行mvn exec:java:
报错:在这里插入图片描述
说明插件里的参数有问题。

发布了49 篇原创文章 · 获赞 6 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/cc007cc009/article/details/90640285