西维蜀黍

【Network】C10K问题与高性能网络编程入门

C10K 问题

C10K是服务器应用领域很古老很出名的一个问题,大意是说单台服务器要同时支持并发 10K 量级的连接。

  ...


【Linux】I/O轮询技术

轮询(poll)技术

下文将介绍Linux中的四种轮询技术,分别是:

  • read
  • select
  • poll
  • epoll

read 轮询技术对应于同步非阻塞I/O模型,每次轮询只能获知一个I/O操作对应的状态,轮询操作由用户负责。

select、poll、epoll 轮询技术对应于I/O多路复用(I/O Multiplexing),每次轮询可检测多个I/O操作的状态,轮询(poll)操作由操作系统负责(而用户线程调用对应的轮询函数时会被阻塞)。

注意:

  • 以下这些轮询技术都分别对应一种逻辑上的轮询方法(Function)。而每一种轮询方法,内核都会以系统调用(本质是一个或一系列的C语言函数)的形式提供给用户线程进行调用;
  • 轮询技术仅仅描述了当用户已经发起I/O操作后,从“用户线程获取这些I/O操作是否已经完成”的过程;
  • 这些轮询技术对应的轮询方法都会阻塞用户线程。换句话说,若所有监听的 fd 对应的I/O操作在很长时间内都没有完成,在这段时间内,这些轮询方法都不会返回控制流给用户线程。
  ...


【Java】关键字 - finally

[例子1] final 的意义

    public static int test1() {
        int i = 0;
        try {
            System.out.println("try"); //1
            return i;
        } finally {
            System.out.println("finally"); //2
        }
    }
// 执行结果
try
finally
  ...


【Nginx】Nginx学习

初探Nginx架构

nginx在启动后,在unix系统中会以daemon的方式在后台运行,后台进程包含一个master进程和多个worker进程。我们也可以手动地关掉后台模式,让nginx在前台运行,并且通过配置让nginx取消master进程,从而可以使nginx以单进程方式运行。很显然,生产环境下我们肯定不会这么做,所以关闭后台模式,一般是用来调试用的,在后面的章节里面,我们会详细地讲解如何调试nginx。所以,我们可以看到,nginx是以多进程的方式来工作的,当然nginx也是支持多线程的方式的,只是我们主流的方式还是多进程的方式,也是nginx的默认方式。nginx采用多进程的方式有诸多好处,所以我就主要讲解nginx的多进程模式吧。

  ...


【Node.js】Node的模块定义和使用

模块定义和使用

在模块中, 上下文提供 require() 方法来引入外部模块。 对应引入的功能, 上下文提供了 exports对象用于导出当前模块的方法或者变量,并且它是唯一导出的出口。在模块中,还存在 一个module对象,它代表模块自身,而exports是module的属性。在Node中,一个文件就是一个 模块,将方法挂载在exports对象上作为属性即可定义导出的方式:

  ...