seaboat的专栏——a free boat on the sea.

思想自由,技术自由

套接字输入缓冲装置——InternalInputBuffer

互联网的世界很复杂,信息从一端传向另一端过程也相当复杂,中间可能通过若干个硬件,为了提高发送和接收效率,在发送端及接收端都将引入缓冲区,所以两端的套接字都拥有各自的缓冲区,当然这种缓冲区的引入也带来了不确定的延时,在发送端一般先将消息写入缓冲区,直到缓冲区填满才发送,而接收端则一次只读取最多不超过...

2015-02-24 21:33:07

阅读数:2177

评论数:0

套接字输入流——InputStream

输入缓冲装置里面必须要包含读取字符的通道,否则就谈不上缓冲了,这个通道就是InputStream,它属于jdk中java.io包的类,有了它我们就可以从源头读取字符,它的来源可以有多种多样,这里主要探讨的是从socket连接中读取字符。 如上图,InputStream充当从操作系统底层读取s...

2015-02-19 23:22:55

阅读数:2071

评论数:0

套接字工厂——ServerSocketFactory

接收器Acceptor在接收连接的过程中,根据不同的使用场合可能需要不同的安全级别,例如在支付相关的交易就必须对信息加密后再发送,这其中还涉及到密钥协商的过程,而在另外一些普通场合则无需对报文加密。反应到应用层则是使用http与https的问题,具体跟http/https相关的一些知识请到前面相关...

2015-02-16 19:21:50

阅读数:2970

评论数:0

任务定义器——SocketProcessor

将socket扔进线程池前需要定义好任务,要进行哪些逻辑处理由SocketProcessor定义,根据线程池的约定,作为任务必须扩展Runnable。用如下伪代码表示 protected class SocketProcessor implements Runnable {         pub...

2015-02-08 19:31:23

阅读数:2056

评论数:0

任务执行器——Executor

上节说到接收器Acceptor在接收到socket后会有一系列简单的处理,其中将socket扔进线程池是最重要的一步,线程池是一个怎样东西?其原理在前面的“线程池原理”章节已经说明过了,这里重点讲tomcat中用于处理客户端请求的线程池——Executor。 为确保整个web服务器的性能,应该在接...

2015-02-07 19:21:27

阅读数:2114

评论数:0

Socket接收器——Acceptor

Acceptor是JIoEndpoint的内部类,主要的职责就是监听是否有客户端套接字连接并接收socket,再将socket交由任务执行者(Executor)执行。不断从系统底层读取socket,接着做尽可能少的处理(最好就是接收到后不做任何处理),最后扔进线程池。为什么强调要做尽可能少的处理?...

2015-02-01 19:47:35

阅读数:2735

评论数:8

提示
确定要删除当前文章?
取消 删除
关闭
关闭