9 轻菜头

尚未进行身份认证

我就是我,不一样的烟火。

等级
TA的排名 15w+

深信服面试准备

https://blog.csdn.net/xp731574722/article/details/82868560https://blog.csdn.net/xp731574722/article/details/82807667

2019-01-11 21:04:28

linux下的IO复用epoll详解

前言   I/O多路复用有很多种实现。在linux上,2.4内核前主要是select和poll,自Linux2.6内核正式引入epoll以来,epoll已经成为了目前实现高性能网络服务器的必备技术。尽管他们的使用方法不尽相同,但是本质上却没有什么区别。本文将重点探讨将放在EPOLL的实现与使用详解。为什么会是EPOLLselect的缺陷   高并发的核心解决方案是1个...

2019-01-09 19:44:49

socket网络编程客户服务器程序范式(三)IO复用select

一:select函数: /*AccordingtoPOSIX.1-2001*/#include<sys/select.h>/*Accordingtoearlierstandards*/#include<sys/time.h>#include<sys/type...

2019-01-09 16:22:01

深入理解printf函数的实现

先看glibc中printf函数的实现源码:​#include<ansidecl.h>#include<stdarg.h>#include<stdio.h>/*WriteformattedoutputtostdoutfromtheformatstringFORMAT.*//*VARARGS1*/intprin...

2019-01-09 11:22:34

Unix socket 编程API二之辅助函数

一:网络字节序跟主机字节序转换:#include<arpa/inet.h>uint32_thtonl(uint32_thostlong);//hosttonetworklonguint16_thtons(uint16_thostshort);//hosttonetworkshortuint32_tntohl(uint32_tnetlong);...

2019-01-08 19:36:28

TCP三路握手

https://blog.csdn.net/qq_38950316/article/details/81087809

2019-01-08 18:01:26

unix socket编程API

我们从一个面试题说起,面试题目是这样的:socket网络编程的一般步骤是怎么样的?下面是参考答案:对于TCP连接:1.服务器端1)创建套接字socket;2)绑定端口号bind;3)监听连接listen;4)接受连接请求accept,并返回新的套接字;5)用新返回的套接字read/write;6)关闭套接字close。2.客户端1)创建套接字socket;2)发起建立连接请求conn...

2019-01-08 16:02:46

linux管道二:FIFO命名管道

FIFO有时又被称为命名管道,通过该管道的名字,可以实现在任意2个进程之间的消息传递:    #include<sys/stat.h>    intmkfifo(constchar*pathname,mode_tmode);    intmkfifoat(intdirfd,constchar*pathname,mode_tmode);...

2019-01-07 20:01:35

C++单例模式(懒汉和饿汉)与线程安全,模板单例

本想写一下C++单例模式的懒汉和饿汉模式的实现,并讨论懒汉模式下的线程安全问题,发现下面的文章写的很明白了,这里引用一下,不做具体介绍了。https://blog.csdn.net/hj605635529/article/details/70172842 下面这篇博客介绍了单例模式的模板化过程,讲的很透彻:https://www.cnblogs.com/myd620/p/6133420...

2019-01-07 18:56:27

linux管道一

管道分为匿名管道和有名管道,平时我们说的管道通常指匿名管道,有名管道又叫FIFO,我们先介绍匿名管道,然后介绍有名管道,下文中的管道没特别说明都指的是匿名管道。管道有已下两种局限性:    1.管道是半双工的,只支持数据的单向流动,即管道的一端只能支持读(fd[0]),另一端支持写(fd[1])。    2.管道只能在具体公共祖先之间的进程间使用,通常用户父子进程。通常父进...

2019-01-06 14:35:59

C标准库string.h源码八:memcmp/memset/memchr

intmemcmp(constvoid*cs,constvoid*ct,size_tcount){constunsignedchar*su1,*su2;intres=0;for(su1=cs,su2=ct;0<count;++su1,++su2,count--)if((res=*s...

2019-01-05 21:42:21

C标准库string.h源码实现七memcpy/memmove

void*memcpy(void*dst,constvoid*src,size_tcount){void*ret=dst;while(count--){*(char*)dst=*(char*)src;dst=(char*)dst+1;src=(char*)src+1...

2019-01-05 18:30:26

C标准库string.h源码六:strspn/strcspn/strpbrk/strtok

​size_tstrspn(constchar*str,constchar*accept);【函数说明】strspn()从参数str字符串的开头计算连续的字符,而这些字符都完全是accept所指字符串中的字符。简单的说,若strspn()返回的数值为n,则代表字符串str开头连续有n个字符都是属于字符串accept内的字符。【返回值】返回字符串st...

2019-01-05 16:47:26

C标准库string.h源码五:strchr/strrchr/strstr

 char*strchr(constchar*s,intc);//返回一个字符指针,它指向c在s中首次出现的位置,如果未找到,返回NULL char*strrchr(constchar*s,intc);//返回一个字符指针,它指向c在s中最后出现的位置,如果未找到,返回NULL char*strchrnul(constchar*s,intc);//若c在s中,同...

2019-01-05 14:48:16

C标准库源码四:strcmp/strncmp

/*strcmp-comparetwostrings,returninglessthan,equalto,orgreaterthanPurpose:Comparestwostring,determiningtheirlexicalorder.Unsignedcomparisonisused.return<...

2019-01-05 14:35:47

C标准库string.h源码三strcat/strncat

​/*char*strcat(dst,src)-concatenate(append)onestringtoanotherPurpose:Concatenatessrcontotheendofdest.Assumesenoughspaceindest.*/char*strcat(char*dst,c...

2019-01-05 14:18:31

C标准库string.h源码二:strcpy/strncpy

char*strcpy(char*dst,constchar*src){char*cp=dst;while(*cp++=*src++!='\0');/*Copysrcoverdst*/return(dst);}/*glibc实现CopySRCtoD...

2019-01-05 14:12:57

C标准库string.h源码一strlen

头文件<string.h>中定义了2组字符串函数。第一组函数的名字以str开头;第二组函数的名字以mem开头。除函数memmove外,其他函数都没有定义重叠对象间的复制行为。比较函数将参数作为unsignedchar类型的数组看待。glibc库函数没有对指针的合法性进行检查,用户在调用函数之前,需要先检查指针的合法性。用户应该写类似如下的代码:if(src==NULL|...

2019-01-05 14:03:05

unix内核对象属性

unix中,线程(pthread),互斥锁(mutex),读写锁(rwlock),条件变量(cond)等他们都有一组属性,且功能类似。他们通用的规则如下:1.每个对象与其对应的属性对象相关联,通常属性对象对应用程序是不透明的,它提供了一组接口操作属性对象。2.init函数对属性对象初始化,分配资源3.destory函数销毁属性对象,回收资源4.get函数获取属性值5.set...

2019-01-03 20:21:24

Unix进程间的通信:读写锁,自旋锁,屏障

1.读写锁    #include<pthread.h>    intpthread_rwlock_destroy(pthread_rwlock_t*rwlock);    intpthread_rwlock_init(pthread_rwlock_t*rwlock,constpthread_rwlockattr_t*attr);   ...

2019-01-03 16:50:11

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!