
Linux
H_Expect
长风破浪会有时,直挂云帆济沧海。
展开
-
Linux | 模拟服务器与浏览器之间的通信
在学习网络编程之前,一直疑惑浏览器是怎么进行工作的,因此有了这个项目。虽然代码不多,但是也基本实现了浏览器和服务器之间的通信过程。项目描述:在 Linux 操作系统下,模拟 Apache 服务器,使用 TCP、HTTP 等协议实现服务器与浏览器之间的交互通信。实现过程:首先创建socket套接字,通过 htons 函数将主机字节序转换为网络字节序、绑定端口号等一系列操作建立TCP 连接。其...原创 2019-03-17 00:17:10 · 539 阅读 · 0 评论 -
IP地址及划分子网
目录IP地址IP地址的分类IP地址的分类点分十进制记法常用的三种类别的IP地址IP地址和硬件地址划分子网从两级IP地址到三级IP地址子网掩码子网掩码的应用默认子网掩码子网划分的方法IP地址是在互联网上给主机编址的方式,为每个计算机分配一个在全世界范围是唯一的32位的标识符,这样不但能够对计算机进行识别,还能进行信息共享。IP地址的分类...原创 2019-08-23 23:52:41 · 2123 阅读 · 0 评论 -
Git的安装及使用
Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git 是Linus Torvalds为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。安装Git 最早Git是在Linux上开发的,很长一段时间内,Git也只能在Linux和Unix系统上跑。不过,慢慢地有人把它移植到了 Windows上。现在,Git可以在Linux、Un...原创 2019-08-10 11:36:42 · 417 阅读 · 0 评论 -
高性能服务器程序框架1——I/O模型
在学习Linux高性能服务器程序框架时,学到了I/O模型。Linux下的五种I/O模型:阻塞I/O(blocking I/O) 非阻塞I/O (nonblocking I/O) I/O复用(I/O multiplexing) 信号驱动I/O ((SIGIO)signal driven I/O ) 异步I/O (asynchronous I/O关于同步与异步,阻塞与非阻塞的概念,在...原创 2019-07-28 23:46:58 · 394 阅读 · 0 评论 -
Linux | 三种I/O函数(select,poll和epoll)
在Linux下,实现IO复用的系统调用主要有 select,poll 和 epoll。1. select用途:在一段时间内,监听用户感兴趣的文件描述符上的可读、可写和异常等事件。(1)函数原型:int select(int nfds, struct fd_set *readfds, struct fd_set *writefds,struct fd_set *execptfd...原创 2019-08-01 20:32:30 · 596 阅读 · 0 评论 -
Linux | TCP拥塞控制原理
在学习TCP拥塞控制之前,我想向大家分享两个知识点。不知道大家有没有跟我一样的困惑,我们整天说着网络协议、TCP/IP协议了的,那么协议到底是什么呢?(是计算机领域的协议啦,不是其他方面的)协议:为进行网络中的数据交换而建立的规则、标准或约定称为网络协议,简称为协议。另外,还有一个专业术语“协议栈”,那么,这个又是什么呢?协议栈:网络中各层协议的总和;由于网络各层画在一起很像一个栈...原创 2019-08-05 21:49:48 · 661 阅读 · 0 评论 -
同步与异步、阻塞与非阻塞
一、同步与异步同步和异步关注的是消息通信机制同步:在发出一个调用时,在没有得到结果之前,该调用就不返回。但是一旦调用返回,就得到返回值了。换句话说,就是由调用者主动等待这个调用的结果。异步:与同步相反,调用在发出之后,这个调用就直接返回了,所以没有返回结果。换句话说,当一个异步过程调用发出后,调用者不会立刻得到结果,而是在调用发出后,等被调用者准备好数据后反过来通知调用者。(回调)...原创 2019-07-26 21:37:52 · 183 阅读 · 0 评论 -
常用协议及端口号总结
现在 Internet 使用的主流协议族是 TCP/IP 协议族,这是一个分层、多协议的通信体系。对常用的协议端口号做一个总结,可以帮助我们更好的记忆!协议名 全称 端口号 简介 FTP 文件传输协议 20、21 提供有效地将文件从一台服务器移到另一台服务器的方法;20用于连接,21用于传输 SSH 安全外壳协议 22 专为远程...原创 2019-07-25 21:34:41 · 746 阅读 · 0 评论 -
高性能服务器程序框架3——并发模式
在探讨并发模式前,我们需要知晓什么是并发编程。并发编程的目的:让程序“同时”执行多个任务,提高效率。当一个程序是计算密集型时,并发编程并没有优势,反而由于任务的切换使效率降低。但是,当一个程序是I/O密集型时,采用并发编程会极大地提高CPU的利用率。因为I/O操作的速度远远小于CPU的计算速度,所以让程序阻塞于I/O操作上会浪费大量的CPU时间。而并发编程可以让阻塞于I/O操作的线...原创 2019-07-30 18:51:21 · 475 阅读 · 0 评论 -
高性能服务器程序框架2——事件处理模式
服务器程序通常需要处理三类事件:I/O事件、信号事件、定时事件。那我就有了一点疑惑,服务器是怎么来处理这些事件的呢?所以今天呢,就来说说两种高效的事件处理模式:Reactor模式和Proactor模式。通常使用同步I/O模型(select,poll,epoll 等)用来实现Reactor模式,而异步(aio_read 或aio_write 等)用来实现Proactor模式,不过还可以使...原创 2019-07-29 20:28:55 · 341 阅读 · 0 评论 -
Linux | 进程创建--fork
1、fork 函数原型:pid_t fork(void);函数返回值类型为 pid_t,实质是 int 类型,Linux 内核2.4.0版本的定义是:typedef int _kernel_pid_t;typedef _kernel_pid_t pid_t;2、fork 函数的底层实现:fork()、vfork()和clone()的底层均调用do_fork(),只是传...原创 2019-07-23 23:58:44 · 230 阅读 · 0 评论 -
Linux | 信号量相关知识点
信号量:信号量(Semaphore)有时被称为信号灯,是解决并发问题过程中所使用的一种设施,可以用来保证两个或多个关键代码段不被并发调用。一个进程在进入一个关键代码段之前,进程(或线程)必须获取一个信号量;一旦关键代码段完成了,那么该进程(或线程)必须释放信号量。其它想进入该关键代码段的进程(或线程)必须等待直到第一个进程(或线程)释放信号量。从并发机制的角度看,信号量是一种并发机制,它用于进...原创 2019-01-18 14:33:52 · 246 阅读 · 0 评论 -
Linux | 线程同步--信号量、互斥锁和条件变量
一、线程线程是程序中完成一个独立任务的完整执行序列,即一个可调度的实体。Linux线程库:Linux上两个最有名的线程库是 LinuxThreads 和NPTL。用户可以使用如下命令来查看当前系统上所使用的的线程库getconf GNU_LIBPTHREAD_VERSION(我查了下自己的,发现我系统上使用的线程库是NPTL2.12)二、线程同步多线程程序...原创 2019-08-20 20:10:35 · 376 阅读 · 0 评论