
linux
文章平均质量分 90
KOwzb
因为很想得到,所以努力得到、、、、、
展开
-
五种IO模型及设计模式
下面就分别来介绍一下这5种IO模型的异同。1.阻塞IO模型最传统的一种IO模型,即在读写数据过程中会发生阻塞现象。 当用户线程发出IO请求之后,内核会去查看数据是否就绪,如果没有就绪就会等待数据就绪,而用户线程就会处于阻塞状态,用户线程交出CPU。当数据就绪之后,内核会将数据拷贝到用户线程,并返回结果给用户线程,用户线程才解除block状态。典型的阻塞IO模型的例子为:data = socket.read();如果数据没有就绪,就会一直阻塞在read方法。2.非阻塞IO模型原创 2021-04-09 20:56:23 · 1110 阅读 · 0 评论 -
CRC校验
什么是CRC校验? 循环校验码(Jyclic Redundancy Check,简称CRC码): 是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定.CRC校验原理:(1)先选择(可以随机选择,也可按标准选择,具体在后面介绍)一个用于在接收端进行校验时,对接收的帧进行除法运算的除数(是二进制比较特串,通常是以多项方式表示,所以CRC又原创 2017-06-10 18:12:41 · 512 阅读 · 0 评论 -
shell写的彩色进度条
演示:代码如下:[cpp] view plain copy#!/bin/bash index=('|' '/' '-' '\\') #定义一个字符数组 bar='#' i=0 while [ $i -le 100 ] do原创 2017-07-12 09:15:33 · 314 阅读 · 0 评论 -
进程池
进程池让服务器在启动阶段调用fork创建一个子进程池,通过子进程来处理客户端请求。子进程与父进程之间使用socketpair进行通信(为了方便使用sendmsg与recvmsg,如果使用匿名管道,则无法使用以上两个函数)。以下针对TCP进行分析。server端使用select轮询用于监听客户端请求的被动套接字fd_listen以及用于父子之间通信的socketpair。每当原创 2017-06-23 09:17:16 · 325 阅读 · 0 评论 -
eval的用法
shell中的eval功能说明:重新运算求出参数的内容。语 法:eval [参数]补充说明:eval可读取一连串的参数,然后再依参数本身的特性来执行。参 数:参数不限数目,彼此之间用分号分开。 1.eval命令将会首先扫描命令行进行所有的替换,憨厚再执行命令。该命令使用于那些一次扫描无法实现其功能的变量。该命令对变量进行两次扫描。这些需要进行两次原创 2017-07-03 10:44:03 · 655 阅读 · 0 评论 -
UDP的编程
#include #include #include #include #include //#include #include static void usage(const char * str) { printf("Usage:%s [IP] [PORT]\n",str); } // ./se原创 2017-06-25 19:31:25 · 277 阅读 · 0 评论 -
正则表达式
在使用grep、awk和sed命令时,需要使用正则表达式。比如我通过grep找代码编译结果中是否有错误。或者是否有我代码的错误。这里说下正则表达式基本的应用:• 匹配行首与行尾。• 匹配数据集。• 只匹配字母和数字。• 匹配一定范围内的字符串集。 ^只匹配行首$只匹配行尾*一个单字符原创 2017-07-24 19:30:56 · 279 阅读 · 0 评论 -
HTTP协议
HTTP协议的主要特点可概括如下:1.支持客户/服务器模式。2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。4.无连原创 2017-07-25 08:36:05 · 355 阅读 · 0 评论 -
TCP端口扫描方式
一、TCP常用的端口扫描方式有以下三种:1.connect扫描我们知道,常见的TCP的socket实现过程为更本质的连接和结束的过程是如下这个样子的:从上面两个图我们可以看出来目标主机的一个端口如果是监听状态(LISTENING或者LINSTEN),那么当我connect目标主机时就能成功,否则说明端口是关闭的。优点: 编程简单,是需要原创 2017-08-11 11:41:02 · 18410 阅读 · 0 评论 -
select poll 与epoll模型的总结
select()和poll() IO多路复用模型select优点:1.一次可以等待多个文件描述符,减少了平均等待时间2.客户越来越多时,减轻了进程调度的压力(相较于多进程多线程服务器)select缺点:1.能监听的文件描述符有上限,这个上限是由fd_set决定的。2.它返回的只是就绪事件的个数,要判断是那个事件满足,需要遍历文件描述符。3.select监听的集合是输原创 2017-08-04 12:44:47 · 423 阅读 · 0 评论 -
Linux的内存理解
虚拟内存:第一层理解1. 每个进程都有自己独立的4G内存空间,各个进程的内存空间具有类似的结构 2. 一个新进程建立的时候,将会建立起自己的内存空间,此进程的数据,代码等从磁盘拷贝到自己的进程空间,哪些数据在哪里,都由进程控制表中的task_struct记录,task_struct中记录中一条链表,记录中内存空间的分配情况,哪些地址有数据原创 2017-08-13 10:46:52 · 397 阅读 · 0 评论 -
文件锁
多用户多任务操作系统中非常重要的一个内容就是文件锁。用户在更新文件时,期望可以使用某种机制,防止两种进程同时更新文件同一区域而造成丢失,或者防止文件内容在未更新完毕时被读取等并发引起的问题,这种机制就是文件锁。 进程在操作文件期间,可以使用文件锁,锁定文件中的敏感部分,防止其他进程越权操作该部分数据。函数fcntl提供了对文件任意区域置锁的能力,既可以锁住全部文件,又可以锁住文件的部分原创 2017-08-14 12:08:21 · 412 阅读 · 0 评论 -
linux下多种锁的比较
最近研究MySQL源码,各种锁,各种互斥,好在我去年认真学了《unix环境高级编程》, 虽然已经忘得差不多了,但是学过始终是学过,拿起来也快。写这篇文章的目的就是总结Linux 下多线程编程,作为日后的参考资料。本文将介绍linux系统下多线程编程中,线程同步的各种方法。包括:互斥量(mutex)读写锁条件变量信号量文件互斥在介绍不同的线程同步的方法之前,先简单的介绍一下进原创 2017-08-14 12:27:40 · 13775 阅读 · 0 评论 -
Arc协议
前言:ARP协议的作用:1. 什么是ARP? ARP (Address Resolution Protocol) 是个地址解析协议。最直白的说法是:在IP以太网中,当一个上层协议要发包时,有了该节点的IP地址,ARP就能提供该节点的MAC地址。 2为什么要有ARP?OSI 模式把网络工作分为七层,彼此不直接打交道,只通过接口(layre interface原创 2017-06-10 18:05:54 · 1510 阅读 · 1 评论 -
socket编程TCP通信
1.单进程:server服务器:#include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 9 10 int connectfd,listenfd; 11 struct sockaddr_in serv_addr,cli_addr;原创 2017-06-21 17:32:30 · 248 阅读 · 0 评论 -
生产者与消费者模型
生产者消费者模型简单来说就是“321原则(并非某一规则,而是为了理解生产者消费者模型)”“3”代表的是三种关系生产者与消费者的互斥与同步关系生产者与生产者的互斥(或竞争)关系消费者与消费者的互斥(或竞争)关系“2”代表两种角色生产者:往交易场所放东西(在计算机中一般都是数据)的人原创 2017-06-01 18:31:13 · 410 阅读 · 0 评论 -
NAT技术与代理服务器
一、代理服务器 所谓“代理”,就是代而劳之的意思。代理服务器就是代理网络用户去取得网络信息,形象的说:它是网络信息的中转站,使得一个网络终端和另一个网络终端不直接进行相连,代理网络用户去取得信息。主要工作在OSI的会话层中。 一个完整的代理请求过程为:客户端首先与代理服务器创建连接,接着根据代理服务器所使用的代理协议,请求对目标服务器创建连接或者获得目标服务器的指定资源(如文件原创 2017-06-18 15:46:32 · 476 阅读 · 0 评论 -
端口的分类
端口号的范围是从1~65535端口的概念: 在网络技术中,端口(Port)大致有两种意思:一是物理意义上的端口,比如,ADSL Modem、集线器、交换机、路由器用于连接其他网络设备的接口,如RJ-45端口、SC端口等等。二是逻辑意义上的端口,一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。原创 2017-06-18 15:57:19 · 634 阅读 · 0 评论 -
crond和crontab
crond :linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。crontab:linux 系统则是由 cron (crond) 这个系统服务来控制的。Linux 系统上面原原创 2017-06-07 14:07:59 · 371 阅读 · 0 评论 -
守护进程
守护进程:就是通常说的 Daemon 进程(精灵进程),是 Linux 中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。其特点是: 1)其父进程是一号进程,通常以d结尾 2)在后台运行,独立于终端,周期性的以某种任务或等待处理某些发生的事 3)自成进程组,自成会话,不受登陆注销等影响原创 2017-06-07 14:29:26 · 254 阅读 · 0 评论 -
使用gdb调试多进程和多线程
GDB调试多进程1. 默认设置下,在调试多进程程序时GDB只会调试主进程。但是GDB(>V7.0)支持多进程的分别以及同时调试,换句话说,GDB可以同时调试多个程序。只需要设置follow-fork-mode(默认值:parent)和detach-on-fork(默认值:on)即可。 follow-fork-mode detach-on-fork 说明paren原创 2017-06-07 15:30:05 · 452 阅读 · 0 评论 -
进程组 会话 作业
一、进程组、作业、会话1.进程组(process group) 每个进程除了有一个进程ID(保存在PCB当中),还属于一个进程组。进程组由一个或多个进程组成,通常和一个作业相关联,可以接收来自同一终端的各种信号。每个进程组有一个唯一的进程组ID。 每个进程组都有一个组长进程,组长进程的ID等于组ID。 组长进程可以组建一个进程组。只要进程组中原创 2017-06-03 19:01:02 · 325 阅读 · 0 评论 -
select服务器
select介绍我们先来看一下select的接口。 int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);123451234原创 2017-06-28 19:57:33 · 251 阅读 · 0 评论 -
TCP的计时器
TCP在建立连接后会启动四个定时器:重传计时器:Retransmission Timer 坚持计时器:Persistent Timer 保活计时器:Keeplive Timer 2MSL定时器:Time_Wait Timer1、重传计时器 TCP的发送方没有在规定的时间内收到确认就要重传已发送的报文段。这种重传概念很容易理解,但重传时间的选择却不简单。 如果吧超原创 2017-06-20 10:12:06 · 352 阅读 · 0 评论 -
TCP的三次握手和四次挥手
TCP三次握手建立连接第一次握手A 的TCP 向B 发出连接请求报文段,其首部中的 同步位SYN = 1,并选择序号seq = x,表明传送 数据时的第一个数据字节的序号是x。第二次握手.B 的TCP 收到连接请求报文段后,如同意,则 发回确认。•B在确认报文段中应使SYN = 1,使ACK = 1, 其确认号ack = x +1,自己选原创 2017-06-20 10:23:10 · 318 阅读 · 0 评论 -
URG与PSH的联系和区别
1、URG紧急位紧急数据的起始点=序号;紧急数据的终止点=序号+紧急指针;(综上,紧急指针就是记录紧急数据的字节数,紧急指针永远为正数)1)在紧急数据后面的数据为普通数据,需要按序缓存2)窗口为0也可以发送紧急数据3)紧急数据都处理完成后,tcp就告诉进程恢复到正常操作例如,已经发送了很长的一个程序要在远地的主机上运行。但后来发现了一些问题,需要取消程序的运原创 2017-06-20 10:27:46 · 314 阅读 · 0 评论 -
IPC--三---共享内存
一、何谓共享内存?共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式。两个不同进程A、B共享内存的意思是,同一块物理内存被映射到进程A、B各自的进程地址空间。进程A可以即时看到进程B对共享内存中数据的更新,反之亦然。由于多个进程共享同一块内存区域,必然需要某种同步机制,互斥锁和信号量都可以。二:共享内存的使用1. 创建共享内存(打开)#include #in原创 2017-06-09 13:58:18 · 312 阅读 · 0 评论 -
读写锁
概述读写锁类似于互斥锁(互斥量),不过读写锁允许更高的并行性,主要体现在读者方面。这种锁有利于读的机会多,写的机会少的共享数据。它可分为以下两种情况:写者竞争到锁资源。在写者加锁,正在写的情况下,所有试图竞争这个锁的读者写者线程都会被阻塞。读者竞争到锁资源。在读写加锁,正在读的情况下,为了体现并行性,当有新读者试图读取并且申请加锁的时候,将被允许。也就是说,一块共享数据可以同时被多原创 2017-06-05 17:26:15 · 489 阅读 · 0 评论