代码改变世界

Linux IO模型漫谈(6)- 信号驱动IO模型

2012-06-11 22:10 by 轩脉刃, 5199 阅读, 收藏, 编辑
摘要: Unix上有定义了许多信号。源自Berkeley的实现使用的是SIGIO信号来支持套接字和终端设备上的信号驱动IO。 信号驱动IO模型主要是在UDP套接字上使用,在TCP套接字上几乎是没有什么使用的...阅读全文

Go语言_反射篇

2012-06-10 22:51 by 轩脉刃, 32164 阅读, 收藏, 编辑
摘要: Go语言的基本语法的使用已经在前几篇陆陆续续学完了,下面可能想写一些Go的标准库的使用了。 先是reflect库。 reflect库的godoc在http://golang.org/pkg/ref...阅读全文

Go语言_接口篇

2012-06-09 23:13 by 轩脉刃, 16020 阅读, 收藏, 编辑
摘要: 在Go中,接口interface其实和其他语言的接口意思也没什么区别。interface理解其为一种类型的规范或者约定。一种类型是不是“实现”了一个接口呢?就看这种类型是不是实现了接口中定义的所有方法...阅读全文

nginx源码学习Unix - Unix域协议

2012-06-08 10:53 by 轩脉刃, 2389 阅读, 收藏, 编辑
摘要: 说到什么是域协议就会出现这么个解释: UNIX域协议并不是一个实际的协议族,而是在单个主机上执行客户/服务器通信的一种方法,所用API与在不同主机上执行客户/服务器通信所使用的API相同。UNIX域协议可以视为IPC方法之一。 我们白话解释下Unix域协议在什么情况下使用和怎么使用? Unix域协议主要用在同一台机子的不同进程之间传递套接字。为什么不用TCP或者U...阅读全文

Linux IO模型漫谈(5)- IO复用模型之select

2012-06-07 09:05 by 轩脉刃, 5346 阅读, 收藏, 编辑
摘要: 首先需要了解的是select函数: select函数 #include<sys/select.h> #include<sys/time.h> int select (int maxfd , f...阅读全文

Go语言_并发篇

2012-06-06 09:55 by 轩脉刃, 29033 阅读, 收藏, 编辑
摘要: 当被问到为什么用Go语言,一定不得不提的是Go语言的并发程序编写。在C语言中编写非常繁琐复杂的并发程序在Go语言中总是显得如此便捷。 Go中并发程序依靠的是两个:goroutine和channel ...阅读全文

Linux IO模型漫谈(4)- 非阻塞IO

2012-06-05 09:03 by 轩脉刃, 3879 阅读, 收藏, 编辑
摘要: 首先先说一下,阻塞IO会在哪些地方阻塞住呢?输入操作read, 输出操作write,接受请求操作accept,发送请求操作connect,这四个地方阻塞进程。 非阻塞IO的模型图示在前面的章节有讲过,它和阻塞IO的最大区别就是:如果连接或者操作不能立即建立,那么连接的建立照样能发起,只是会返回一个错误信息。 同样,先说明几个用到的函数和操作: 1 fcntl函数 其全名为”file control“。顾名思义,fcntl可以执行各种操作符控制操作。#include <fcntl.h>int fcntl(int fd, int cmd, .. /* int arg */)第一个参数f阅读全文

Linux IO模型漫谈(3) -- 阻塞式IO实现

2012-06-04 09:48 by 轩脉刃, 1978 阅读, 收藏, 编辑
摘要: 在理解代码前有几个函数先说一下: 1 sockaddr_in 套接字地址结构 struct sockaddr_in { uint8_t sin_len; //长度字段,这个sockaddr_in结构的长度,一般不用设置和检查它 sa_family_t sin_family; //协议族,TCP,UDP等协议族就设置为AF_INET...阅读全文

Go语言_函数学习篇

2012-06-03 08:38 by 轩脉刃, 10158 阅读, 收藏, 编辑
摘要: 这里要说一下是Go函数和一些其他语言不一样的地方 1 函数格式不同 func GetMsg(i int) (r string) { fmt.Println(i) r = "hi" return r}func说明这个是个函数GetMsg是函数名(i int) 函数接收一个int参数(r string) 函数返回一个string类型返回值2 函数可以返回多个返回值这点和c,php都不一样,和lua是一样的 func GetMsg(i int) (r string, err string) { fmt.Println(i) r = "hi" err = &qu阅读全文

Go语言_基础学习篇

2012-06-02 07:36 by 轩脉刃, 17251 阅读, 收藏, 编辑
摘要: GO文件目录结构该图是go-windows的目录结构如图,go的程序应该是在gopath文件夹下的,分为bin, pkg, 和src三个子文件夹src文件夹:每个次级文件夹(如demo)就是代表一个go项目,里面存放源程序bin文件夹:go的每个项目生成的二进制可执行程序。windows下会生成.exe文件,linux下会生成可执行文件。Go的最大特色之一就是可移植性,就是说,当生成一个demo.exe之后,将这个exe文件放在任意一台windows系统上(即使没有安装go安装包),也是可以执行的。这是让PHP,Python等脚本语言望成莫及的。pkg文件夹:第三方库。里面存放你的项目中引用的阅读全文