自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 资源 (2)
  • 收藏
  • 关注

原创 深信服面试准备

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

2019-01-11 21:04:28 1849 1

原创 linux下的IO复用epoll详解

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

2019-01-09 19:44:49 473

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

一:select函数:  /* According to POSIX.1-2001 */ #include <sys/select.h> /* According to earlier standards */ #include <sys/time.h> #include <sys/type...

2019-01-09 16:22:01 265

原创 深入理解printf函数的实现

先看glibc中printf函数的实现源码:​#include <ansidecl.h>#include <stdarg.h>#include <stdio.h>/* Write formatted output to stdout from the format string FORMAT. *//* VARARGS1 */int prin...

2019-01-09 11:22:34 12096 2

原创 Unix socket 编程API二之辅助函数

一:网络字节序跟主机字节序转换:#include <arpa/inet.h>uint32_t htonl(uint32_t hostlong); //host to network longuint16_t htons(uint16_t hostshort);//host to network shortuint32_t ntohl(uint32_t netlong); ...

2019-01-08 19:36:28 184

原创 TCP三路握手

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

2019-01-08 18:01:26 151

原创 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 317

原创 linux管道二:FIFO命名管道

FIFO有时又被称为命名管道,通过该管道的名字,可以实现在任意2个进程之间的消息传递:       #include <sys/stat.h>       int mkfifo(const char *pathname, mode_t mode);       int mkfifoat(int dirfd, const char *pathname, mode_t mode);...

2019-01-07 20:01:35 166

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

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

2019-01-07 18:56:27 596

原创 linux管道一

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

2019-01-06 14:35:59 530

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

int memcmp(const void *cs, const void *ct, size_t count){ const unsigned char *su1, *su2; int res = 0; for (su1 = cs, su2 = ct; 0 < count; ++su1, ++su2, count--) if ((res = *s...

2019-01-05 21:42:21 346

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

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

2019-01-05 18:30:26 362 2

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

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

2019-01-05 16:47:26 532

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

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

2019-01-05 14:48:16 535

原创 C标准库源码四:strcmp/strncmp

/*strcmp - compare two strings, returning less than, equal to, or greater thanPurpose: Compares two string, determining their lexical order. Unsigned comparison is used.return < ...

2019-01-05 14:35:47 591

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

​/*char *strcat(dst, src) - concatenate (append) one string to anotherPurpose: Concatenates src onto the end of dest. Assumes enough space in dest.*/char * strcat (char * dst, c...

2019-01-05 14:18:31 328

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

char * strcpy (char * dst, const char * src){ char * cp = dst; while( *cp++ = *src++ != '\0') ; /* Copy src over dst */ return( dst );}/* glibc 实现 Copy SRC to D...

2019-01-05 14:12:57 400

原创 C标准库string.h源码一strlen

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

2019-01-05 14:03:05 1920 2

原创 unix内核对象属性

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

2019-01-03 20:21:24 199

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

1.读写锁       #include <pthread.h>       int pthread_rwlock_destroy(pthread_rwlock_t *rwlock);       int pthread_rwlock_init(pthread_rwlock_t *rwlock,const pthread_rwlockattr_t *attr);      ...

2019-01-03 16:50:11 2444

原创 unix进程及线程之间的通信:互斥锁和条件变量

进程或线程间的通信,通常是为了实现各进程或线程之间的同步,我们的讨论主要分为以下几个方面:1.消息传递(管道(匿名管道),FIFO(有名管道),消息队列)2.同步(互斥锁,读写锁,条件变量,信号量)3.共享内存区本节我们集中讨论互斥锁,条件变量来实现进程跟线程之间的同步。 线程间的同步:互斥锁实现互斥访问临界资源初始化和反初始化:       #include &l...

2019-01-03 15:18:37 404

原创 Unix线程API

一:线程标识:pthread_equal 若相等,返回值为0,若不等,返回值非0#include<pthread.h>pthread_t pthread_self();int pthread_equal(pthread_t id1,pthread_t id2);二:线程创建:​#include <pthread.h>int pthread_creat...

2019-01-02 19:47:56 149

原创 Unix进程API

本节内容主要是介绍linux/unix进程API的使用;getpid,fork,exit,atexit,abort,wait/waitpid。一:进程终止有8种方式使得进程终止,其中5种为正常终止,它们是:1.从main函数返回2.调用exit函数3.调用_exit或_Exit函数4.进程的最后一个线程从启动例程返回5.进程的最后一个线程调用pthread_exit返回...

2019-01-02 17:59:39 425

原创 Linux信号(一):信号类型

首先我们用 kill -l 命令来看看,linux系统有哪些信号:root@1204nStrive:~# kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL ...

2018-12-28 11:18:50 16718 2

原创 socket网络编程客户服务器程序范式(二)

本节介绍:单进程迭代服务器和停等模式的单进程客户程序单进程迭代服务器:它的缺点是在当前客户被处理完之前,新到达的客户无法被服务;停等模式客户程序:缺点,当它等待用户输入而阻塞时,无法监视网络事件,二是停等模式批处理效率极低该模式现实很少使用,效率极低,模型简单,一般学习网络编程都是从该模式开始学习,下面是这个模式的一个例子,客户端输入一段内容,服务器接收后不做任何处理,直接原内容返回。...

2018-12-19 21:03:10 164

原创 socket网络编程客户服务器程序范式(一)

本节是关于linux网络编程各种模型的总的概述。当开发一个linux服务器程序时,我们有如下若干方法可供选择:        1.单进程迭代服务器:它的缺点是在当前客户被处理完之前,新到达的客户无法被服务        2.单进程select服务器:进程内使用select同时服务多个客户        3.多进程并发服务器:它为每个客户fork一个子进程来提供服务,这是传统服务器通常做...

2018-12-19 20:44:52 289

原创 一个简单的时间获取客户服务器程序

以下例子介绍了一个简单的TCP客户-服务器程序,客户与服务器建立一个TCP连接后,服务器以直观可读的方式送回当前时间和日期,客户取得服务器的时间后,将时间显示到终端。时间获取服务器程序(myser1.c):#include<sys/types.h>#include<sys/socket.h>#include<string.h>#include&l...

2018-12-19 17:25:42 914

原创 man指令和Linux开机启动流程

man 指令分类1.Executable programs or shell commands (用户在shell环境中可以操作的指令或可执行文件)2.System calls (functions provided by the kernel) (系统调用)3.Library calls (functions within program libraries) (库函数调用)4.Spe...

2018-12-18 20:28:02 237

原创 unix环境高级编程头文件apue.h,error.c

/* * Our own header, to be included before all standard system headers. */#ifndef _APUE_H#define _APUE_H#define _POSIX_C_SOURCE 200809L#if defined(SOLARIS) /* Solaris 10 */#define _XOPEN_SO...

2018-12-08 16:01:09 443

原创 TCP/IP表头格式

2018-12-06 17:02:22 1084

转载 IP数据报首部校验和算法

看到一篇详细描述IP数据报首部校验和算法的文章,学习转载一下:        https://www.cnblogs.com/fhefh/archive/2011/10/18/2216885.html 

2018-12-06 15:11:37 1556

原创 UNIX 网络编程卷一源码lib/error.c

#include "unp.h"#include <stdarg.h> /* ANSI C header file */#include <syslog.h> /* for syslog() */int daemon_proc; /* set nonzero by daemon_init() */static void err_doit(int, i...

2018-12-05 17:50:24 163

原创 UNIX网络编程卷一源码unp.h文件

/* include unph lib/unp.h*//* Our own header. Tabs are set for 4 spaces, not 8 */#ifndef __unp_h#define __unp_h#include "../config.h" /* configuration options for current OS */ /* "../c...

2018-12-05 17:31:46 792

原创 linux系统文件的压缩与打包

linux常见的压缩文件扩展名与压缩指令compress,gzip,bzip2,tar(打包)compress:一个很老的指令,由于gzip可以解压缩compress压缩的文件,现在的linux预设都没有安装这个指令;可以使用 yum install ncompress来进行安装gzip:bzip2:tar指令:注意: -c/-t/-x对应一组,分别表示打包(压缩)/查看/解包(解压缩)     ...

2018-06-26 11:41:27 630

原创 Linux硬盘与文件系统

1.ext2文件系统硬盘的物理组成为:    a.扇区(Section)为最小的物理存储单位,每个扇区为512bytes    b.将扇区组成一个圆,那就是磁柱(Cylinder),磁柱是硬盘分区(partition)的最小单位    c.第一个扇里面有1)主要开机启动记录(Master Boot Record, MBR),占446bytes;2)分割表(partition table),64by...

2018-06-25 17:17:27 1409

原创 linux文件和目录管理

1.特殊的目录:2.目录的相关操作:cd,pwd,mkdir,rmdircd切换目录(change directory):pwd显示目前所在的目录(print work directory):mkdir创建新目录(make directory)rmdir删除空的目录(remove directory)3.文件与目录管理ls(list directory contents)cp复制文件或目录(cop...

2018-06-23 17:38:35 248

原创 vi和vim

1.vi共分为三种模式,一般模式,编辑模式,指令模式;这三种模式的作用分别是:    一般模式:以vi打开一个文件就进入一般模式了(一般模式为默认模式)。    编辑模式:在一般模式下,你无法对文件内容进行编辑,要等到你按下[a,A,i,I,o,O,r,R]等任何一个字母后才会进入编辑模式,在编辑模式中按下esc键就会回到一般模式。    指令模式:在一般模式中按下[: ? /]三个钟的任何一个按...

2018-06-22 11:18:39 193

原创 Linux文件权限和目录配置

1.改变所属群组:chgrp2.改变文件拥有者:chown3.改变权限:chmod4.符号类型改变文件权限:权限对文件的意义:权限对目录的意义:对目录而言:读权限表示可执行ls命令,显示目录;执行权限表示可执行cd进入该目录;写权限表示可在该目录下新增,修改,删除文件。linux目录配置依据--FHS(Filesystem Hierarchy Standard):    FHS的主要目的是希望让使...

2018-06-21 16:26:19 258

原创 linux基础指令之一

linux指令下达的方式如下:语系的支持:显示日期与时间date:显示日历cal:cal指令的语法为: cal [month] [year]计算器bc:命令补全和文件名补全tab:连续按下2次tab键可进行命令补全或文件补全,如果tab接在第一个字后面,它是命令补全,如果接在第二个字以后,它是文件补全。中断前端进程:ctrl+c键盘输入结束:ctrl+d,也表示logout,exit.帮助手册 m...

2018-06-21 12:21:42 193

原创 Unix操作系统历史

1.1965年前后,由贝尔实验室(Bell),麻省理工学院(MIT),通用电气公司(GE)共同发起了Multics的计划,其目的是想让大型主机可以达成提供300个以上终端联机使用的目标。不过到了1969年前后,计划进度落后,资金短缺,贝尔实验室退出。2.贝尔实验室中的有个叫Ken Thompson的人,他为Multics这个操作系统写了个叫“Space Travel”的游戏,在Multics上经过...

2018-06-15 16:22:09 1591

数据库期末考试试题

数据库期末考试试题,40分填空题,40分选择题,20分大题.

2012-01-05

linux环境高级编程

系统介绍linux系统,有关于C语言在linux下编译运行的具体讲解,还有进程线程等概念的描述,是学习嵌入式的入门书籍

2011-10-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除