2014.7.21

(一)上次测试vertx用的是普通的开发模式。测试也相当的不方便,现在改用maven搭建。

maven使用比较简单,利用Eclipse的插件填入相应的groupid等等就可以构建好一个成熟的vertx开发环境,而且测试方便可以再junit里面测试,因为vertx封装好了一个测试类TestVerticle,不过junit的before after这类就不可以使用了。

进入http://www.mvnrepository.com/搜索vertx  

<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-maven-archetype</artifactId>
<version>2.0.7-final</version>
</dependency>

输入相应groupid artifactid version 就可以自动构建了。

(二)关于TCP/IP看了本书《Java TCP IP Socket编程》。感想如下:

TCP IP Socket Application的关系

     

          传输协议:书中讲了2种传输方式:1.文本型 2:二进制型,这两种都需要对应的编码解码。个人理解为json,和protobuf。

  整个网络服务器的发展历程:

          1.当然是单线程服务端。

  2:多线程服务端。具体又分为每个请求一个线程和线程池。

          3:因为请求可能很零碎频繁,在线程之间切换保存上下文会占用大量cpu时间,所以出现了NIO,又回到了单线程,原理是监控所有连接,排队,挨个处理需要处理的任务。原因在于:在socket进行connect,accept,read,write的时候都会阻塞。这时的cpu会空转。其中nodejs和vertx是采取这种方式(不确定是不是,因为他们都是利用回调函数,在设备就绪时候通知处理。而不是轮询。

4.其中nodejs的做服务器的话,只能用到1个核,对于多核来说还是挺浪费的。但是vertx 提供了instance X这个选项,可以同时启动好几个进程,充分利用多核cpu,vertx会自动选择一个instance进行处理。

NIO:书中的例子很详细,但是当时还是没怎么看懂,结合了http://www.iteye.com/magazines/132-Java-NIO里面的例子差不多至少原理上懂了。

主要组成由buffer,channel,select。buffer其实就是一个静态的数组。。需要具体分配大小。channel和buffer会互相写入读取数据。而select是选取就绪的设备出来。具体的javaeve讲的很清楚,不过没有书中讲的深入,包括后备数组啥的。。。

不过vertx是根据jdk1.7的NIO2编写的,具体有什么差别还没有研究。

         

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值