linux
文章平均质量分 78
yexz
这个作者很懒,什么都没留下…
展开
-
linux基础——linux下多路IO复用接口之select/poll
函数select和poll用于IO复用,它们都是监视一个或多个文件描述符集合,可以进行IO操作的时候就返回。一、函数select()select允许内核等待多个事件中的任何一个发生,并且只要有一个或多个事件发生或者经历了一段指定的时间后才唤醒它。函数原形如下:#include #include #include #include int select(原创 2016-08-23 23:51:56 · 1247 阅读 · 0 评论 -
计算机网络——TCP协议中的三次握手四次挥手以及11种状态转换
TCP的传输连接分为3个阶段:连接建立(三次握手)、数据传送和连接释放(四次挥手)。TCP传输连接的管理就是使传输连接的建立和释放都能正常地进行。原创 2016-08-14 20:37:19 · 27129 阅读 · 2 评论 -
nginx学习——从基本hash表到支持通配符的hash表(下)
在上一篇博文介绍了nginx中基本hash表的实现,今天主要是来介绍nginx是如何实现支持通配符的hash表。话说在看支持通配符的hash表源码时我惊奇地发现它的设计思路居然和我之前设计的中文字典树基本一致,觉得nginx的设计也不过如此,但是看完hash表源码后我才发现我还是too young too simple,nginx的hash表考虑到的问题我想的要多得多!原创 2016-08-29 23:55:20 · 1928 阅读 · 0 评论 -
nginx学习——从基本hash表到支持通配符的hash表(上)
hash表示典型的空间换时间的数据结构,对元素进行查找、插入速度的时间复杂度为O(1),这种高效地方式非常适合频繁读取、插入、删除元素,在nginx服务器中,hash表也得到了广泛应用。在nginx基本hash表中,关键字一般是字符串(URL域名),但是如果要让hash表支持统配符,比如”*.test.com“,就需要用到nginx中特有的支持通配符的hash表。原创 2016-08-28 23:09:32 · 2009 阅读 · 0 评论 -
linux基础——linux线程间通信及同步机制总结
线程间的通信有两种情况:1、一个进程中的线程与另外一个进程中的线程通信,由于两个线程只能访问自己所属进程的地址空间和资源,故等同于进程间的通信。2、同一个进程中的两个线程进行通信。本文说的就是第二种情况。关于进程间通信(IPC)可以看我的另一篇博文http://blog.csdn.net/a987073381/article/details/52006729原创 2016-07-25 22:45:16 · 45125 阅读 · 9 评论 -
nginx学习——nginx中的内存池技术(与STL内存池对比分析)
所有的内存池都有一个共同的特点,那就是一开始就将申请大块内存,避免重复申请释放小区块造成内存碎片。nginx也不例外,我们来看看nginx是怎样管理内存吧!原创 2016-08-27 23:00:19 · 3835 阅读 · 3 评论 -
数据结构——从英文字典树到中文字典树
昨天面试电话中的一道题,题目如下:给你一个姓名的集合,查找你的名字是否在里面出现,比如搜索姓氏为叶的人,那么会出现所有姓为叶的人,应该如何设计?当时的回答是,姓为key,名为value,存放到multimap中,使用multimap中的count函数统计key为叶的个数,然后用find函数找到第一个key为叶的指针,使用迭代器从该指针向后查找count个元素,判断这count个元素中是否有姓名原创 2016-08-09 23:08:09 · 9366 阅读 · 0 评论 -
linux基础——经典线程同步问题解析及编程实现
前两天写了个简单的线程池,结果在处理线程的同步互斥上花了不少时间,觉得有必要把以前学习的知识再过一遍,这次主要复习的是几个非常经典的同步互斥问题:生产者-消费者问题、读者-写者问题、哲学家进餐问题以及吸烟者问题原创 2016-07-31 23:47:32 · 2641 阅读 · 0 评论 -
linux基础——linux进程与线程的区别与联系
进程和线程的区别与联系:1、从属:一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。1、调度:在传统的操作系统中,拥有资源和独立调度的基本单位都是进程。在引入线程的操作系统中,线程是独立调度的基本单位,进程是资源拥有的基本单位。在同一进程中,线程的切换不会引起进程的切换。在不同进程中进行线程切换,如从一个进程内的线程切换到另一个进程的线程时,会引起进程切换。原创 2016-07-28 14:18:18 · 922 阅读 · 0 评论 -
linux基础——linux进程间通信(IPC)机制总结
在linux下的多个进程间的通信机制叫做IPC(Inter-Process Communication),它是多个进程之间相互沟通的一种方法。在linux下有多种进程间通信的方法:半双工管道、命名管道、消息队列、信号、信号量、共享内存、内存映射文件,套接字等等。使用这些机制可以为linux下的网络服务器开发提供灵活而又坚固的框架。原创 2016-07-23 21:33:12 · 52975 阅读 · 10 评论 -
linux基础——epoll学习笔记
epoll是Linux内核为处理大批量文件描述符而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。另一点原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入Ready队列的描述符集合就行了。epoll除了提供select/poll那种IO事件的水平触发(Level Triggered)外,还提供了边缘触发(Edge Triggered),这就使得用户空间程序原创 2016-07-14 22:46:42 · 829 阅读 · 0 评论 -
linux基础——linux下五种IO模型小结(阻塞IO、非阻塞IO、IO复用、信号驱动式IO、异步IO)
一、阻塞IO模型 (同步I/O)阻塞IO是指进程进行IO操作的时候,因为数据没准备好或者缓冲区里没有空间而无法进行IO操作会进入睡眠,直到数据准备或者缓冲区有空间才回被唤醒的行为。阻塞IO是最通用的IO类型,所有套接字默认情况下都是阻塞的。输入操作:read、readv、recv、recvfrom和recvmsg,调用这些输入函数之一,如果缓冲区没有数据可读,该进程会投入睡眠,直到原创 2016-08-13 19:50:32 · 3074 阅读 · 0 评论