Linux
文章平均质量分 62
何小柒~
生命不是代码,没有最优解;存在本身,就是最浪漫的bug。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux 15:IO复用方法
文章目录1. I/O复用方法1.1 I/O复用方法图示1.2 使用I/O复用技术条件2. select2. poll系统调用2.1 pollfd结构体定义3. epoll3.1 epoll特点1. I/O复用方法I/O复用使得程序能同时监听多个文件描述符,这对提高程序性能至关重要。1.1 I/O复用方法图示1.2 使用I/O复用技术条件TCP服务器同时要处理监听套接字和连接套接字。服务器要同时处理TCP请求和UDP请求。程序要同时处理多个套接字。客户端程序要同时处理用户输入和网络连接。原创 2023-09-26 16:25:37 · 281 阅读 · 0 评论 -
Linux 15:基于C/S架构——微云盘
基于C/S架构模型——微云盘(2)项目环境:Linux,vim,gcc上传功能:将文件从客户端上传到服务器,显示百分比,实现文件校验,秒传下载功能:将文件从服务器端下载到客户端,显示下载文件百分比,断点续传,文件校验断点续传:当文件在下载中中断,下次可接着上次中断地方继续下载秒传:当服务器已经存在某个文件时,当别的用户再次上传时,服务器直接返回下载成功一个散列函数,比如 MD5,是一个将任意长度的数据字符串转化成短的固定长度的值的单向操作。原创 2022-11-04 13:50:19 · 1003 阅读 · 0 评论 -
Linux 14:HTTP协议与web服务器
浏览器与web服务器在应用层通信使用的是HTTP协议,而HTTP协议在传输层使用的是TCP协议。那么浏览器需要和web服务器三次握手建立连接后,才可以发送HTTP请求报文,服务器收到请求报文后,向浏览器回复HTTP应答报文。浏览器服务器建立连接后,如果两次以上的请求复用同一个TCP连接,则称之为长连接。如果浏览器发送一次请求报文,服务器回复一次应答就断开连接,下次交互再重新进行三次握手建立连接,那么就被称作短连接。使用长连接更好,可以减少网络中的同步报文,也使得服务器的响应速度变快。......原创 2022-08-08 19:28:45 · 766 阅读 · 0 评论 -
Linux 13:TCP编程 / UDP编程
所以发送端就会有一个发送窗口,这个发送窗口的大小是由接收端填充的接收通告窗口的大小决定的,并且窗口的位置会随着发送端数据的发送和接收到接收端对数据的确认而不断的向右滑动,将之称为滑动窗口。UDP会独立发送报文,而且服务器端和客户端没有建立连接,udp发送报文每次要填入目的地的客户和端口,不能确保两次目的地相同,所以不能合并两次报文,udp允许丢包,TCP是一对一建立连接,可靠,但是系统开销较大,电话,发邮件等等,udp不可靠,但是传输速度快,开销较小,视频等等,tcp不允许丢包。◼ 拥塞避免“加法增大”..原创 2022-08-08 14:10:49 · 596 阅读 · 0 评论 -
Linux 12:TCP编程
connect()方法一般由客户端程序执行,需要指定连接的服务器端的IP地址和端口。该方法执行后,会进行三次握手,建立连接。理论上应该输出5个ok,但是由于时间原因,只接收一个,其他4个存入缓冲区,下一次执行recv时候才会输出。三次握手发生在客户端执行connect()的时候,该方法返回成功,则说明三次握手已经建立。TCP提供的是面向连接的、可靠的、字节流服务。从键盘输入的数据先存入缓冲区,等到recv开始执行时候,才开始接收数据。...原创 2022-08-03 19:50:04 · 800 阅读 · 0 评论 -
Linux 11:网络
网络是由若干结点和连接这些结点的链路组成,网络中的结点可以是计算机,交换机、路由器等设备。网络设备有:交换机、路由器、集线器传输介质有:双绞线、同轴电缆、光纤网络示意图多个网络的连接,目前最大的互联网就是我们常说的因特网。互联网示意图。.........原创 2022-08-02 22:10:25 · 1177 阅读 · 4 评论 -
Linux 10:生产者消费者问题
生产者/消费者问题,也被称作有限缓冲问题。可以描述为两个或者更多的线程共享同一个缓冲区,其中一个或多个线程作为“生产者"会不断地向缓冲区中添加数据,另一个或者多个线程作为"消费者"从缓冲区中取走数据。生产者和消费者必须互斥的使用缓冲区缓冲区空时,消费者不能读取数据缓冲区满时,生产者不能添加数据。...原创 2022-07-28 16:25:41 · 557 阅读 · 0 评论 -
Linux 9:线程
线程是进程内部的一条执行序列或执行路径,一个进程可以包含多条线程;线程是资源调度的基本单位。进程一个正在运行的程序,进程是资源分配的基本单位。原创 2022-07-24 22:49:48 · 261 阅读 · 0 评论 -
Linux 8:mybash的实现和进程间通信
文章目录一、bash是什么?1.内置命令二、使用步骤1.2.字体 颜色 大小一、bash是什么?1.内置命令内置命令不可以通过fork+exec方式实现,所以不能用bashcd改变当前工作路径exit二、使用步骤1.2.字体 颜色 大小在这里放入需要修改颜色的语句............................................................原创 2022-06-23 09:35:11 · 897 阅读 · 0 评论 -
Linux 7:信号
文章目录一、信号——exec1. 信号的基本概念二、使用步骤1.2.字体 颜色 大小一、信号——exec1. 信号的基本概念信号是系统响应某个条件而产生的事件,进程接收到信号会执行相应的操作。 与信号有关的系统调用在“signal.h”头文件中有声明常见信号的值,及对应的功能说明:二、使用步骤1.2.字体 颜色 大小 在这里放入需要修改颜色的语句............原创 2022-06-06 09:16:35 · 907 阅读 · 0 评论 -
Linux 6:进程替换,exec系列方法,malloc
文章目录1. 进程替换1.12. exec系列替换方法2.1 execl2.2 execlp2.3 execle2.3.1 自定义环境变量2.4 execv2.5 execvp2.6 execve3. 申请内存(malloc)1. 进程替换fork+exec是系统创建新进程的一种方式。exec替换之后子进程的id号不变,父进程也不变,PCB也不变,只替换了进程实体。1.12. exec系列替换方法2.1 execlint execl(const char *pathname,const原创 2022-05-17 21:02:07 · 540 阅读 · 0 评论 -
Linux 5:bash,僵死进程,写时拷贝,文件描述符(系统调用)
文章目录1. Linux1.1 Linux内核1.2 bash命令解释器1.3 内存空间2. 僵死进程(僵尸进程)2.1 僵死进程的产生2.2 僵死进程定义2.3 僵死进程及处理方法2.4 如何获取僵死进程退出码?1. Linux1.1 Linux内核Linux内核代码是C语言编写的,fork复制进程先复制PCB,在复制进程实体,父子进程并发执行。系统通过双向链表管理进程,节点数量就是进程数量,1.2 bash命令解释器当执行某个命令,比如./main命令,./main命令本质上是一个可执行原创 2022-05-10 20:47:27 · 1070 阅读 · 0 评论 -
Linux 3:makefile文件,gdb,库文件(动态和静态)
这里写目录标题1. makefile文件和make命令1.1 安装1.2 makefile文件和make命令的介绍2. gdb调试2.1 Debug版本和Release版本2.2 gdb应用1. 库文件的生成和使用1.1 什么是库文件?1.2 静态库如何生成和使用1.2.1 静态库的生成1.2.2 静态库的使用1. makefile文件和make命令1.1 安装和以往的gcc,g++同一个操作1.2 makefile文件和make命令的介绍Makefile 可以简单的认为是一个工程文件的编译规则原创 2022-05-05 12:54:27 · 1587 阅读 · 0 评论 -
Linux 2:vim,编译与调试,进程
文章目录一、文件编辑命令1. vim的介绍与安装1.1 vim介绍1.2 vim安装2. vim的三种模式3.vim三种模式切换3.1 模式切换示例图3.2 命令模式 切换到 插入模式3.3 命令模式 切换到 末行模式4. vim常用命令介绍5. vim的配置文件修改5.1 vim的配置文件在哪5.2 vim配置文件的设置修改方法(添加行号,搜索结果高亮,tab缩进等等)4.文件查看命令4.1 cat4.1.1 可以用来查看文件内容2.字体 颜色 大小文章目录一、文件编辑命令1. vim的介绍与安装1.1原创 2022-04-25 23:10:27 · 2120 阅读 · 2 评论 -
Linux 1:基础知识和常用命令
文章目录一、Linux基础1. 为什么要学习Linux?2. Linux学习方法二、Linux历史介绍三、Linux简介1. Linux和window系统有什么区别?2. Linux的内核版本和发行版本2.1 查看自己的内核版本号2.2 linux的发行版本3.桌面介绍3.1开关机(尽可能通过这里)3.2 终端的打开3.3 怎么控制终端的大小四、Linux目录结构1. linux的文件目录结构图2. 常用目录介绍:3. 绝对路径和相对路径的区别五、系统文件类型和文件权限1. 文件类型2. 文件权限的分类3.原创 2022-04-25 20:05:29 · 1294 阅读 · 0 评论 -
Linux面试重点
面试重点1.目录结构各个文件夹存放内容uname -a 查看内核版本lib 库文件bin 命令boot 内核etc 配置文件2.文件类型ls 查看文件类型ls-ltouch file 创建普通文件mkdir tmp 创建目录文件- 普通文件d 目录文件p 管道文件l 链接文件c b 设备文件s 套接字文件3.文件权限chmod原创 2022-03-10 14:26:05 · 185 阅读 · 0 评论 -
Linux:git(2)
1.git使用(1)使得暂存区的数据回到工作区git reset HEAD main.c(2)放弃本次修改,丢弃修改git checkout --filename(3)查看分支git branch合并冲突配对密钥方法:cd .sshssh-keygen -t rsa -C"3357971878@qq.com"lscat id_rsa.pubssh -T git@gitee.com...原创 2022-03-09 00:42:47 · 83 阅读 · 0 评论 -
Linux:git的使用
1.sed(1)原文件经过sed操作后输出新文件,原文件不变,目标文件是编辑后的。(2)使用sed有三种方式,在命令行键入命令,将sed命令插入脚本文件,然后调用sed命令插入脚本文件,并使sed脚本可执行。① 使用sed命令行格式:sed [选项] sed命令 输入文件记住在命令行使用sed命令时,实际命令要加单引号。sed也允许加双引号。② 使用sed脚本文件格式:send [选项] -f sed脚本文件 输入文件③ 要使用第一行具有sed命令解释器的sed脚本文件,格式为:sed原创 2022-03-08 19:51:56 · 2379 阅读 · 0 评论 -
Linux:shell编程(2)
1.脚本类型:(1)编译型:xx.c -> 编译 ->main.exe(运行效率高)(2)解释型:需要解释器解释执行,但是开发简单、2.(1)case语句:case variable in pattern [ | pattern ] ...)statements;; pattern [ | pattern ] ...)statements;; ...esac(2)函数传参,定义变量,函数返回值如何给脚本传参加local表示只在本地函数中生效,为局部变量lo原创 2022-03-08 13:22:10 · 242 阅读 · 0 评论 -
Linux:shell编程
1.shell脚本概述shell脚本通过解释器解释执行,编译型shell文件直接执行bash my.shpython文件直接执行python3 a.pychmod u+x a.py2.shell的语法shell脚本通过调用命令完成,(1)变量:字符串、数字、环境和参数(2)条件:shell中的布尔值(3)程序控制:if、elif、for、while、until、case(4)命令列表(5)函数(6)shell内置命令(7)获取命令的执行结果(8)here文档脚本原创 2022-03-07 18:07:31 · 608 阅读 · 0 评论 -
Linux:数据库事务
1.事务(1)事务:一个操作序列,这些操作要么都执行,要么都不执行。(2)事务四大特性:原子性,一致性,隔离性,持久性(3)隔离级别在sql标准中定义了四种隔离级别,每一种级别都规定了一个事务所做的修改,那些在事务内和事务间是可见的。那些是不可见的,通常较低级别的隔离可以执行更高的并发,系统开销也低。视图 索引 shell,这就是...原创 2022-03-03 23:54:37 · 643 阅读 · 0 评论 -
Linux:数据库c程序链接
1.连接服务器命令p客户端链接服务器端mysql -uroot -p2.查看服务器启动状态service mysql status处于“running”状态即为运行状态3.重启、停止、启动,数据库的命令重启:/etc/init.d/mysql restart停止:/etc/init.d/mysql stop启动:/etc/init.d/mysql start...原创 2022-02-09 20:18:44 · 1789 阅读 · 0 评论 -
Linux:数据库安装使用
1.数据库概念:是存放数据的仓库,它是一个按数据结构来存储和管理数据的计算机软件系统。数据库管理系统:是数据库系统的核心组成部分,主要完成对数据库的操作与管理功能,例如实现数据的存储,查询,修改,删除,及数据库用户的管理,权限管理等。RDBMS :关系数据库管理系统(Relational Database Management System)。SQL :结构化查询语言(Structured Query Language),mysql数据库是一种C/S模型 (即客户端和服务端模型), 客户单通过用户名原创 2022-02-05 14:29:33 · 805 阅读 · 1 评论 -
Linux:守护进程
1.守护进程:长时间在后台运行的程序,一般情况下不会和用户进行交互。特点:(1)运行周期长(2)后台执行,一般不需要和用户进行交互。2.(1)会话:打开终端,即就是和系统建立会话,打开终端急救室和系统建立会话。(2)会话首进程:在会话中运行的第一个进程,即就是第一个打开的终端。(大多数情况下为bash)(3)进程组(4)组长进程3.会话流程(1)fork()产生一个子进程,退出父进程(2)setsid()建立一个新会话(3)fork()退出父进程(4)chdir将文件改到根目录下面原创 2022-01-14 17:22:54 · 4061 阅读 · 0 评论 -
文件传输(3):上传和下载
11_20下载1.在fork之前创建管道(pipe()),管道的写端替换标准输出和标准输入,在服务器端fork(fork())产生一个子进程,然后把子进程替换成我们要执行的那个命令(exec())2.设计协议内容:(1)c->s get name(2)s->c ok#size|err(3)c->s ok,err(4)s->c send-recv...原创 2021-11-24 20:20:07 · 270 阅读 · 0 评论 -
Linux:文件传输(2)
(3)为了防止客户端和服务器端不能交互,所以当每次执行命令时候,客户端给服务器端发送"ok#…(1)ls命令执行:服务器端执行ls命令,服务器端fork复制产生子进程,在把子进程替换成ls(exec),服务器端发给客户端。(4)无名管道:子进程把输出信息写入无名管道中,父进程从无名管道中把信息读出来,然后发送给客户端,客户端在打印出来。(5)服务器端:输入客户端发送过来的命令,然后解析命令。先创建管道,在复制一下,管道就会被自动复制到子进程中。(2)rm命令执行:fork客户端发给服务器端。原创 2023-09-26 16:27:30 · 387 阅读 · 0 评论 -
Linux项目:文件传输
文件传输:在两台计算机之间进行文件的传递客户端与服务器连接,客户端与服务器端不在同一个主机之上,要求客户端可以查看服务器端有哪些文件,删除文件,移动文件,归类文件,增添文件夹;下载文件;上传文件,断点续传。...原创 2023-09-26 16:27:08 · 1226 阅读 · 0 评论 -
Linux:epoll延续——Linux源代码讲解
10_30epoll_createepoll_ctlepoll_wait系统调用是是现在内核中的fd 文件描述符inode 唯一标识一个文件(属性)int epfd=epoll_create(size)创建内核时间表 存放描述符和事件 红黑树原创 2021-10-31 16:05:56 · 141 阅读 · 0 评论 -
Linux:libevent的使用
1.I/O框架库的概述I/O框架库以库函数的形式,封装了较为底层的系统调用,给应用程序提供了一组更便于使用的接口。(1)句柄(文件描述符)I/O框架库要处理的对象,即I/O事件、信号和定时事件,同意成为事件源。(2)事件多路分发器(I/O复用方法select/poll/epoll)事件的到来是随机的、异步的。(3)事件处理器和具体事件处理器(回调函数)事件处理器执行事件对应的业务逻辑(4)ReactorI/O框架的核心① 注册事件② 注销事件③ 事件循环2.Libevent(1)原创 2021-10-31 13:27:32 · 376 阅读 · 0 评论 -
Linux:epoll
1.epoll服务器端代码:在这里插入代码片原创 2021-10-20 16:53:22 · 113 阅读 · 0 评论 -
Linux:poll& epoll
1.poll客户端代码#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<string.h>#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>int main(){ int sockfd=socket(AF_INET,SOCK_STREAM,0);原创 2021-10-19 07:07:48 · 268 阅读 · 0 评论 -
Linux:select
10_10I/O复用方法:select poll epoll文件描述符:select > 0fd_set,fd_isset,检测多个描述符,程序处理多个文件描述符Http服务器端代码:```c#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>#include<sys/socket.h>#include<netinet/in原创 2021-10-10 15:57:38 · 92 阅读 · 0 评论 -
Linux:Http
Tcp:面向连接的,可靠的,流式服务(传输层协议)Udp:无连接,不可靠,数据包服务(传输层协议)Http:应用层协议,端口号80,https(加密)短链接:一次请求需要一个tcp链接长链接:多次请求只需要一个tcp链接(目前常用)请求状态和应答方法:#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>#include<sys/socket.h&原创 2021-10-09 20:25:08 · 121 阅读 · 0 评论 -
Linux:UDP
TCP服务器并发处理多个客户端多进程&多线程单线程服务器端不能并发处理,多线程处理并发TCP特点:面向连接的,可靠的,流式服务三次握手,四次挥手connect语句发起连接之后开始进程握手,accept语句,send语句在close之后进行四次挥手可靠性如何保证:应答确认,超时重传,滑动窗口,乱序重排,去重流式服务,send和receive不对应 (粘包问题)UDP特点:无连接,不可靠,数据报UDP服务器客户端的编程流程netstat状态:接受缓冲区和发送缓冲区,当前...原创 2021-09-26 16:14:48 · 148 阅读 · 0 评论 -
Linux 4:进程,主函数参数,计算机组成,内存管理,fork复制进程
1.查找bin下面是否有“pwd”这个命令原创 2022-05-08 22:58:04 · 641 阅读 · 1 评论
分享