HTTP协议简介 1. 使用谷歌/火狐浏览器分析 在Web应用中,服务器把网页传给浏览器,实际上就是把网页的HTML代码发送给浏览器,让浏览器显示出来。而浏览器和服务器之间的传输协议是HTTP,所以: HTML是一种用来定义网页的文本,会HTML,就可以编写网页; HTTP是在网络上传输HTML的协 ...
分类:
编程语言 时间:
2018-05-14 19:02:57
阅读次数:
204
为什么要响应式编程? 传统的Servlet模型走到了尽头 传统的Java服务器编程遵循的是J2EE的Servlet规范,是一种基于线程的模型:每一次http请求都由一个线程来处理。 <! ?xml version="1.0" encoding="UTF 8" standalone="no"? 客户端 ...
分类:
编程语言 时间:
2018-05-11 23:56:43
阅读次数:
947
简单的TCP程序客户端流程:创建套接字(套接字用IP地址:端口号)表示)socket()->请求连接connect()->交换数据 send()/recv()->关闭连接 closesocket() 简单的TCP程序服务端流程:创建套接字socket()->绑定相应的端口bind()->监听端口li ...
分类:
Web程序 时间:
2018-03-03 00:39:55
阅读次数:
247
在多进程编程中,我们用fork系统调用创建子进程,值得注意的是,fork函数复制当前进程并在内核进程表中创建一个新的表项,其堆、栈指针,标志寄存器的值都和父进程相同,但是其ppid被设置成父进程pid,信号位图被清除。而子进程代码和父进程完全相同,其数据也会复制自父进程,但是其复制过程是写时复制,即 ...
分类:
系统相关 时间:
2018-02-27 23:31:43
阅读次数:
243
第十一章 定时器 这里的定时器主要指的是定时器容器,TCP连接中有保活定时器,为了定期查看TCP连接是否断开,可以用socket选项实现,但是较为麻烦,所以一般都由应用层负责保活,这是定时器的一个运用场景,或者在应用层需要执行一些定时操作,这样就需要一个高效的定时器容器,主要是时间轮和时间堆,当然定 ...
分类:
系统相关 时间:
2018-02-13 15:39:58
阅读次数:
335
第十章 信号 Linux中信号是由用户、系统或进程发送给目标进程的信息,用来通知进程某个状态的改变或系统异常,其产生条件如下:1)对于前台进程,用户可以通过输入特殊的终端字符来发送信号,比如Ctrl+C发送中断信号;2)系统异常;3)系统状态变化,如SIGALRM信号;4)运行kill命令或使用ki ...
分类:
系统相关 时间:
2018-02-10 21:20:16
阅读次数:
295
第九章 I/O复用 I/O复用技术是重要的提高服务器工作效率和性能的手段,Linux下实现I/O复用的系统调用主要有select、poll和epoll。 首先我们来看一下select的函数原型和常用的宏: 首先来看select函数原型,nfds指定了被监听的文件描述符的总数,其值通常被设定为所有文件 ...
分类:
系统相关 时间:
2018-02-07 00:33:51
阅读次数:
274
第八章 高性能服务器程序框架 我们将服务器一般分为三个主要模块,I/O处理单元、逻辑单元及存储单元。常用的服务器模型有C/S模型和P2P模型,比较简单。我们来看一下网络编程中的I/O模型。首先我们要了解阻塞模型和非阻塞模型的区别,socket在创建时默认是阻塞的,可以在socket系统调用的第二个参 ...
分类:
系统相关 时间:
2018-02-03 20:55:49
阅读次数:
280
第七章 Linux服务器程序规范 服务器程序除了需要网络通信外,还应该考虑很多其他的细节,而这些细节很多很杂,但又基本是模板式的。1)服务器程序基本都是以后台形式运行的,没有控制终端,不能接受用户输入,其父进程通常是init。2)服务器程序有一套日志系统。3)服务器程序以某个专门的非root身份运行 ...
分类:
系统相关 时间:
2018-02-03 16:01:07
阅读次数:
209
第六章 高级I/O函数 网络I/O一直是Linux网络编程中极其重要的一部分,除了前面讲到的send、recv等,socket编程接口还给出了很多高级了I/O函数,这些函数大致分为三类:用于创建文件描述符的函数、用于读写控制的函数和用于控制I/O行为和属性的函数。 pipe函数是用来创建一个管道,管 ...
分类:
系统相关 时间:
2018-02-02 23:11:19
阅读次数:
268