
Linux
文章平均质量分 94
蓬莱道人
半路出家的研究僧
展开
-
TCP那些事儿
1、三次握手和四次挥手 三次握手和四次挥手的状态转移图如下所示:(1)三次握手状态 LISTEN :Server调用listen函数后,开始进入LISTEN状态; SYN_SENT :Client调用connect函数之后,并在connect函数返回前进入SYN-SENT状态; SYN_RECEIVED:Server在收到SYN和发送一个ACK后,此时进入SYN_RECEIVED状态; ESTABLISHED:代表一个打开的连接。Client的Conne...原创 2021-03-05 00:55:28 · 423 阅读 · 2 评论 -
Linux网络编程函数
1、socket函数:2、bind函数:3、网络字节序和主机字节序4、listen函数:5、accept函数:6、connect函数:7、读写socket的函数8、close函数:9、TCP服务器和客户端示例程序10、UDP服务器和客户端示例程序1、socket函数: 作用:创建套接字#include <sys/socket.h>int socket(int domain, int type, int protocol); // 成功则...原创 2021-01-24 17:24:49 · 544 阅读 · 0 评论 -
多线程间的几种锁
1、互斥量(互斥锁)2、读写锁(共享互斥锁)3、自旋锁4、条件变量5、屏障1、互斥量(互斥锁)#include<pthread.h>// 初始化互斥量int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restrict attr); // 销毁互斥量int pthread_mutex_destroy(pthread_mutex_t *mut原创 2020-12-13 13:52:11 · 3872 阅读 · 0 评论 -
进程间的几种通信方式
1、匿名管道pipe 匿名管道是半双工的,并且只能在具有公共祖先的两个进程之间使用。通常一个管道由一个进程创建,在进程调用fork之后,这个管道就能在父进程和子进程之间使用了。管道创建时会创建两个文件描述符,其中fd[0]为读而打开,fd[1]为写而打开。#include "apue.h"int main(){ int n; int fd[2]; pid_t pid; char line[MAXLINE]; if (pipe(fd) &..原创 2020-12-13 12:47:01 · 593 阅读 · 0 评论 -
popen和system的区别
1、system() 串行执行,程序会阻塞到system执行完成。2、popen() 并行执行,可以在程序中读取命令的标准输出,也可在程序中写入命令的标准输入。原创 2020-12-12 21:02:21 · 4180 阅读 · 0 评论 -
vim的常用技巧
1、跳转2、删除3、查找4、窗口操作1、跳转光标移动到文件开头 在命令模式下输入:gg 光标移动到文件结尾 在命名模式下输入:shift + g 光标移动到行首 home键 或者 0 光标移动到行尾 end键 或者 $ 光标移动到某一行 在命令模式下输入: :n 或者 ngg 或者 nG 向前翻半页 命令模式下输入:ctrl + u 向后翻半页 命令模式下输入:ctrl + d 向前翻一页 命令模式下输入:...原创 2020-11-21 12:06:53 · 222 阅读 · 0 评论 -
ffmpeg视频处理教程
1、ffmpeg简介 FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。多媒体视频处理工具FFmpeg有非常强大的功能包括视频采集功能、视...原创 2020-02-16 19:59:50 · 1905 阅读 · 0 评论 -
CGI介绍
1、什么是CGI2、CGI和Webserver的区别2、CGI的标准输入和标准输出3、CGI的环境变量4、CGI程序数据处理的一般工作流程5、CGI中From表单数据的分析和解码1、什么是CGI CGI即通用网关接口(Common Gateway Interface),是一个Web服务器主机提供信息服务的标准接口。通过CGI接口,Web服务器就能够获取客户端提交...原创 2019-04-16 21:01:01 · 3500 阅读 · 0 评论 -
TCP的Nagle算法和粘包问题
1、糊涂窗口综合征(SWS)2、Nagle算法3、粘包问题1、糊涂窗口综合征(SWS)(1)什么是糊涂窗口综合症(Silly Window Syndrome) 当发送端应用进程产生数据很慢、或接收端应用进程处理接收缓冲区数据很慢,或二者兼而有之;就会使应用进程间传送的报文段很小,特别是有效载荷很小。极端情况下,有效载荷可能只有1个字节;而传输开销有40字节(20字节的IP...原创 2019-04-09 23:04:30 · 2724 阅读 · 1 评论 -
如何处理Linux中的僵尸进程defunct
1、什么是僵尸进程 我们知道,每个Unix进程在进程表里都有一个进入点(entry),核心程序执行该进程时使用到的一切信息都存储在进入点。当用ps命令察看系统中的进程信息时,看到的就是进程表中的相关数据。当以fork()系统调用建立一个新的进程后,核心进程就会在进程表中给这个新进程分配一个进入点,然后将相关信息存储在该进入点所对应的进程表内。这些信息中有一项是其父进程的识别码。当这个进程...原创 2019-02-24 10:35:41 · 3238 阅读 · 0 评论 -
Linux系统编程易错点
1、Linux中的内存布局(参考)1)每个进程有独立的虚拟地址空间,进程访问的虚拟地址并不是真正的物理地址; 2)虚拟地址可通过每个进程的页表与物理地址进行映射,获得真正物理地址; 3)如果虚拟地址对应的物理地址不在物理内存中,则产生缺页中断,并真正分配物理地址,同时更新进程的页表;如果此时物理内存已耗尽,则根据内存替换算法淘汰部分页面至物理磁盘中。 ...原创 2019-03-07 17:03:02 · 479 阅读 · 0 评论 -
TCP的半连接队列和全连接队列
本文全文转载于:https://blog.csdn.net/russell_tao/article/details/91117691、网络编程模型: 首先看一张网络编程的模型图: 编写服务器时,许多程序员习惯于使用高层次的组件、中间件(例如OO(面向对象)层层封装过的开源组件),相比于服务器的运行效率而言,他们更关注程序开发的效率,追求更快...转载 2019-03-26 10:26:12 · 2894 阅读 · 0 评论 -
Linux下C语言实现线程池
前面看完C++实现线程池之后,接下来我们看看C语言如何实现线程池,原理是类似的,C++主要是使用线程的类Thread,而C语言的实现主要是调用Linux中的系统函数。1、线程池的具体的实现代码如下: 文件thread_pool.cpp:#include<stdio.h>#include<stdlib.h>#include<unistd.h...原创 2019-03-26 19:53:21 · 1982 阅读 · 0 评论 -
I/O复用:select、poll、epoll
本文全文转载于:https://blog.csdn.net/ljx0305/article/details/40650581、epoll的函数接口:(1)int epoll_create(int size): 创建一个epoll的句柄,成功则返回 epoll 专用的文件描述符epfd,失败返回 -1。size用来告诉内核这个监听的数目一共有多大。这个参数不同于select()中的...原创 2019-03-27 13:16:06 · 1433 阅读 · 0 评论 -
详解coredump
1、什么是coredump:2、开启或关闭core文件的生成:3、core文件的存储位置和文件名:4、造成程序core的原因(参考):5、用GDB调试coredump:1、什么是coredump: 我们经常听到大家说到程序core掉了,需要定位解决,这里说的大部分是指对应程序由于各种异常或者bug导致在运行过程中异常退出或者中止,并且在满足一定条件下会产生一个叫做co...原创 2019-03-29 23:04:11 · 33493 阅读 · 0 评论 -
Linux的几种I/O模型
1、阻塞I/O2、非阻塞I/O3、存储映射I/O(mmap)——参考这里和这里4、为什么I/O多路复用最好使用非阻塞I/O(参考)5、必须采用非阻塞 I/O的几种情形6、listenfd阻塞还是非阻塞、是ET还是LT(参考)1、阻塞I/O 系统调用分成两类:“低速”系统调用和其它,低速系统调用是可能会使进程永远阻塞的一类系统调用,包括:(1)如果某些文件类型(...原创 2019-03-30 22:59:49 · 763 阅读 · 0 评论 -
Linux 惊群详解
本文转载于https://jin-yang.github.io/post/linux-details-of-thundering-herd.html先说结论(参考):1、linux多进程accept系统调用的惊群问题(注意,这里没有使用select、epoll等事件机制),在linux 2.6版本之前的版本存在,在之后的版本中解决掉了。2、使用select epoll等事件机制,在lin...原创 2019-03-31 17:24:48 · 305 阅读 · 0 评论 -
详解TCP连接
1、TCP最大连接数(参考)2、TCP连接的几种状态(参考)3、 为什么需要TIME_WAIT?4、TIME_WAIT很多对服务器的影响(参考)1、TCP最大连接数(参考) 计算机通信,有一个问题必须解决,就是如何唯一识别一个会话,英文名称是session,TCP/IP协议里没有一个字段可以完全胜任这个工作,意味着,无法遴选出一个主键,我们可以退而求其次,遴选出组合键来完...原创 2019-03-31 21:41:55 · 948 阅读 · 0 评论