Linux&网络
文章平均质量分 55
叫我豆黄
向善
展开
-
Linux基础常见命令以及vim 常用命令
ls : 列出目录的内容及其内容属性 cd: 从当前工作目录切换到指定的工作目录 find: 查找目录及目录下的文件 mkdir: 创建目录 mv: 移动或者重命名文件 pwd: 显示当前工作目录的绝对路径 rm: 删除一个或多个文件或目录 rmdir: 删除空目录 touch: 创建新的空文件,改变已有文件属性的时间戳 file: ...原创 2017-12-03 16:10:58 · 192 阅读 · 0 评论 -
Linux下的守护进程分析
1. 是什么?守护进程也被称为精灵进程,是运行在后台的一种特殊进程,独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。系统上的许多进程都与用户登录注销有关,但是守护进程不随进程注销而销毁,它一直存在并运行着。守护进程一般以d结尾,表示Daemon2. 如何创建?使用setsid函数创建守护进程,对于该进程来说,不能是该进程组的组长,调用fork()再调用setsid()就能够让该进程...原创 2018-06-25 13:52:18 · 178 阅读 · 0 评论 -
进程线程对比总结以及对于生产者消费者的场景分析
进程是一个正在执行的程序,是在计算机上执行的程序实例,是能分配给处理器并由处理器执行的实体。进程信息在Linux下被放在一个叫做task_struct的结构体里。在多线程的情况下,进程通常被定义为资源分配的单位和保护的单位。线程在Linux下也叫做轻量级进程,是程序执行的最小单位。线程是存在于进程中,每个线程都有线程执行状态,在运行时会保存线程的上下文,具有独立的执行栈,并且有用于每个线程局部变量...原创 2018-06-26 11:31:24 · 325 阅读 · 0 评论 -
网络套接字
套接字使得客户端和服务端的进程通信要么是面向连接的,要么是面向无连接的。如果一台计算机上的客户端套接字使用某个地址访问在另一台计算机上的服务套接字,那么在指定的套接字进行应答后,这两台计算机之间就可以进行数据交换了。套接字:每个TCP及UDP的协议头都包含了源端口和目的端口,端口值指明了两个互相独立的TCP单元使用者。端口号和IP地址合起来唯一的表示了Internet上的唯一的主机上的...原创 2018-06-26 15:12:36 · 173 阅读 · 0 评论 -
使用UDP如何进行网络通信
UDP是一种面向无连接的通信协议,何为面向无连接?即两方通信时,另一方可以不在线,但是一方却可以发送消息,期间消息段可能会丢失,但是因为是面向无连接,所以不保证消息一定能送达。UDP是面向数据报的。但是在通信时,无法保证对方机器和我们的机器的字节序端口什么的都一样,比如有的机器是大端,有的机器是小端,那么报文传输到对方的机器时就会变成混乱的无序的。由于该项问题的产生,所以在网络中对报文进行了规...原创 2018-06-20 10:57:07 · 12308 阅读 · 0 评论 -
基于select模型的server
前面一篇介绍了IO模型。其中重点介绍了IO多路转接中的三种模型,包括了select,poll,epoll三种。下面就是基于select模型编写的服务器与客户机,两者可以进行交互。 服务器端代码:k#include<stdio.h>#include<stdlib.h>#include<sys/types.h>#include<sys/...原创 2018-07-23 15:28:10 · 1150 阅读 · 1 评论 -
对于高级I/O中一些函数的理解
在Linux中IO分为基础和高级,在基础部分主要是read,write等函数,在高级IO中的一些函数不是非常常用,但是在内核使用中可能会进行编写。高级IO分为三部分:1、用于创建文件描述符的函数,pipe,dup,dup2等2、用于网络套接字编写时进行读写数据的函数,recv,send,sendfile,readv等3,、用于控制IO行为和属性的函数下面分别介绍:pipe...原创 2018-07-19 11:19:05 · 193 阅读 · 0 评论 -
对IO复用以及五种IO模型的理解
阻塞IO当系统调用没有拿到想要的数据时,它就会一直在等待,不会做其他事情,直到拿到了想要的数据或者资源,它才会返回调用成功的结果。非阻塞IO当系统调用产生,但是对于想要的数据来说它还没有被内核处理好,那么它不会一直等待,它立即返回,然后每过一段时间来查询数据是否被准备好。最后数据被读取后便不再轮询检查,直接返回调用结果信号驱动IO系统调用只管产生,然后便不管了,当有数据可以返回...原创 2018-07-19 14:44:57 · 1342 阅读 · 1 评论 -
基于epoll模型的server/client
对于epoll来说,当产生epoll调用时,不单是进行了epoll调用。在调用epoll_create()的时候创建了epoll模型,epoll模型分为三部分,红黑树,就绪队列,回调机制。红黑树,注册epoll事件就是将事件添加至红黑树中,并将想关心的事件也添加进去,该红黑树以文件描述符作为key值;就绪队列,就绪队列里存放是就绪的文件描述符,当文件描述符就绪时会将其拷贝至就绪队列;...原创 2018-07-25 16:12:23 · 659 阅读 · 0 评论 -
对于应用层HTTP协议的学习
<start>在TCP/IP协议栈中,HTTP协议处于应用层,它在最顶层进行数据报转发给应用进程,它是最靠近用户的那一层。它的默认端口号为80。HTTP协议是基于请求响应的协议,那么在传输中就会有标识等,像其他协议一样,HTTP协议也有属于自己的报头,因为它是基于请求响应的,所以报头分为请求报头,响应报头。以下就是请求报头与响应报头的格式:在请求报头中分三到四部分,因为...原创 2018-07-21 10:54:12 · 360 阅读 · 0 评论 -
计算机网络基本概述及简单介绍
网络为我们的生活提供了很大的方便!但是作为一个学计算机的学生不仅要会用它,我们需要了解它,甚至要熟记于心。除了作为一门考试课,更是作为自己的一门技能与知识。从网络逻辑功能来讲计算机网络分为资源子网和通信子网。 计算机网络的定义:互相连接、自治的计算机集合 计算机网络的功能:资源共享,信息通信和资源处理 计算机网络的分类:局域网、城域网、广域网 计算机网络的性能指标:速率,带宽、吞吐量、时延、原创 2017-12-07 18:21:40 · 5263 阅读 · 0 评论 -
物理层简述
物理层的功能: 1、实现二进制(比特)位流与信号之间的转换,完成信号传输 2、实现二进制位流的传输原创 2017-12-17 17:37:37 · 326 阅读 · 0 评论 -
数据链路层简述
数据链路层的协议定义了通过通信媒介互连的设备之间传输的规范。 数据链路层相关技术MAC地址:用于识别数据链路层中互连的结点,长48比特共享介质型网络:多个设备共享某一个介质的网络1、争用方式:争夺获取数据传输的权力(CSMA),可能会产生冲突,导致网络拥堵以至性能下降避免冲突:CSMA/CD,发送前先检查一遍线路上是否有人要发送,若有等待2、令牌传递方式:沿着令牌环发送...原创 2018-05-17 21:50:42 · 381 阅读 · 0 评论 -
TCP/IP协议中的网络层
主要功能:实现终端节点之间的通信IPIP主要作用:在复杂的网络环境中将数据传送到目标IP特点:面向无连接IP地址分为主机号和网络号A,B,C,D类地址广播地址:将数据包发送给连接在同一链路中的每个主机上 本地广播:在同一网络内 直接广播:不同网络内 IP多播:将数据包发送给特定组内的所有主机(即不影响其他不需要这个数...原创 2018-05-18 21:00:07 · 2873 阅读 · 0 评论 -
深入理解shell脚本
前言之前有一篇博文简单写了一个shell脚本程序,主要用来计算日期这里是链接之后再仔细去看了这方面的一些书,还是觉得那时候的自己太年轻,应该踏实的从根基做起,于是重新将语法之类的再学了一遍。以前是觉得shell脚本学了是没有什么用途,但是在读了一些书之后发现是自己学的少了才会有这样的想法,况且我是相信存在即合理这种说法的,开始重视起来这个脚本语言。介绍shell脚本一般情况...原创 2018-07-30 13:45:51 · 628 阅读 · 0 评论 -
shell脚本--续
工具使用。sort默认是升序,降序可用选项-r-u 去除重复行-n 以文本中的数字进行排序-t 指定分隔符uniq-u 只显示不重复的行-c 计数-d 只显示重复的行paste拼接两个文件-d 后面跟分隔符,将两个文件中的内容用分隔符隔开-s 将每个文件的内容合并成一行cut-b 以字节为单位进行切割,(Linux下一个汉字三...原创 2018-08-01 16:10:53 · 241 阅读 · 0 评论 -
shell脚本(续2)
shell脚本的知识其实不算多,但是要完全记住这些命令还是需要经常的使用才能熟练起来。 awkawk不仅可以用行作为分割单位,还可以用列作为单位处理文件。awk缺省的行分隔符是换行符。缺省的列分隔符是连续的空格和tab。自定义也是可以的。使用方式:awk /pattern/{actions}pattern可使用正则表达式,action表示一系列的操作。$0表示输出整条记...原创 2018-08-10 18:34:31 · 154 阅读 · 0 评论 -
使用信号模拟实现sleep
信号是一种机制,然后对于该问题系统发出信号,告诉程序说出了问题现在用信号来写一下如何模拟实现sleep第一个方法实现第二种方法实现主函数原创 2018-06-09 18:11:53 · 186 阅读 · 0 评论 -
如何理解线程池(代码理解)
线程池: 当需要大量的并且是相对短暂的线程,我们需要创建线程池。 计算密集型:线程池中线程的个数应该等于CPU IO密集型:线程池中线程的个数>CPU能够动态的增加线程池中线程的个数,动态的销毁线程池中线程。本质上是一个生产者消费者模型,来了任务放入任务队列,线程池中线程从任务队列中取任务,进程处理。/////////////////////////////////////...原创 2018-05-27 11:48:23 · 297 阅读 · 0 评论 -
如何理解条件变量&&Posix信号量
条件变量为什么要有条件变量??当一个线程互斥的访问某个变量时,这个线程在其他线程改变状态之前什么也不能干,只能等待比如说,一个线程访问队列时,发现队列为空,那么就会一直等待,直到有节点添入该队列,这个时候就应该使用条件变量,告诉该线程你可以去做其他的事情不用一直等,如果有你想要的我会通知你1. pthread_cond_t cond;------------------------创建条件变量2...原创 2018-05-12 09:39:27 · 305 阅读 · 0 评论 -
配置vim,以及linux下的编辑器和编译器
vim简单配置 vim 的插件是在.vimrc中控制的,位于~/.vimrc,通过这个窗口可以将vim配置成你想要的任何形式。 前缀键:vim 中有很多快捷键,再加上其他插件中的快捷键,容易引起冲突,所以为缓解这个问题,引入了前缀键。键r可以配成 r、 r等等 文件类型侦测:即允许基于不同语言加载不同插件原创 2017-12-13 20:36:54 · 736 阅读 · 0 评论 -
##Git##如何从本地Git推送代码到GitHub上
记录如何从本地Git仓库推送代码到GitHub上 文件共享算是在这个科技时代必备的一项功能了,那么在和线上的小伙伴进行项目合作时要如何做到代码共享?GitHub提供了非常大的方便。大家可以去Git官网上下载安装程序,安装时选择默认,一直点下一步即可。安装好了之后就可以开始创建仓库了 mkdir 文件名 //创建目录cd 文件名 //进入到此目录gi...原创 2018-01-30 18:16:51 · 1180 阅读 · 0 评论 -
Linux下动静态编译链接以及gdb调试命令
windows下编写程序分动态编译和静态编译,linux下同样也分。Linux下运行程序的步骤:以上就是在linux下执行程序时所做的,windows下也大同小异。动静态链接:动态链接:依赖于第三方库,在执行程序时,当需要库函数时,会直接进到库里去找,整个程序本身不具有需要的库,所以动态链接的缺点就是不利于移植,因为可能会因为库的原因而出错,但也有有点就是不浪费资源,生成的文件占内存小。静态链接:...原创 2018-03-18 20:04:42 · 1368 阅读 · 1 评论 -
阐述make/makefile 依赖关系与依赖方法
make/makefilemakefile 是一个文件,make是一条命令。make是依赖于makefile的,要运行make,当前目录下就必须有makefile此目录名的文件。makefile是阐述依赖关系和依赖方法的。makefile文件命名只允许首字母大写或小写,其余都是小写。依赖关系必须与依赖方法搭配,依赖方法必须以tab开头(显示红色即正确)重构代码.PHONY:cleanclean...原创 2018-03-19 23:09:29 · 6713 阅读 · 0 评论 -
##Linux##进程控制中的进程创建,进程等待,进程程序替换等
进程创建:在Linux中,创建进程主要用函数fork(),vfork()。fork()它表示从一个已存在的进程中创建一个新的子进程,新进程为子进程,原进程则为父进程。函数原型:pid_t fork(); 返回值:子进程返回值为0,父进程返回子进程的id,出错返回-1进程调用fork()之后,内核需要做的事情有:分配新的内核空间和数据结构给子进程将父进程部分数据结构的内容拷贝给子进...原创 2018-03-23 20:39:08 · 221 阅读 · 0 评论 -
简单的shell编写,静态库打包
纵向对比fd与FILE结构体fd:是文件描述符,linux下有三个默认打开的文件描述符,0-->标准输入(键盘),1-->标准输出(显示器),2-->标准错误(显示器),fd的使用规则:在files_struct数组中,找到没有被使用的最小的整数下标,作为新的文件描述符。FILE:是一个结构体,但是其被封装于库函数被系统调用,所以C库FILE结构体中一定含有fd,那么通过fd就可...原创 2018-03-21 11:45:13 · 445 阅读 · 0 评论 -
Linux中的进程简介及僵尸进程和孤儿进程代码实现
概念:进程:正在执行的程序每个进程都包括一个PCB(进程控制块),而这个PCB在Linux下叫做task_struct(这是个结构体)。task_struct结构体, 结构体中的各个字段的含义.这个结构体里包含了进程的信息:标示符:描述本进程唯一标示符,用来区别其他进程。状态:任务状态,退出代码,退出信号。优先级:相对于其他进程的优先级。程序计数器:程序中即将被执行的下一条指令的地址。内存指针:包...原创 2018-03-21 14:32:05 · 251 阅读 · 0 评论 -
使用Linux中的信号做一个小小的类似考试系统
说是考试系统,其实就是玩玩而已,重要的是里面的用法。使用定时信号来处理超时与不超时的问题。该类似系统中就做了处理结果显示:左边为不超时,右边为超时 ...原创 2018-04-08 11:27:24 · 205 阅读 · 0 评论 -
##Linux##进程间通信的方式
目的:数据传输资源共享通知事件进程控制通信分类管道:管道分为匿名管道和命名管道匿名管道:创建无名管道int pipe(int fd[2]); fd[0]---->表示读 fd[1]---->表示写由fork()来共享管道原理父进程:关掉fd[1] 子进程:关掉fd[0]特点: 只能用于具有共同祖先的进程之间通信...原创 2018-04-09 17:37:31 · 215 阅读 · 0 评论 -
Linux中的进程信号
信号概念信号:系统为了响应某些状况而产生的事件,进程收到信号需要采取相应的动作。信号产生信号产生的条件:1、按下终端键-------->Ctrl+C、Ctrl+\2、硬件异常----------->除零操作、无效内存3、某些软条件发生---->时间片到4、管道破裂用kill -l 可以查看系统定义的信号列表信号产生的方式:1、通过终端键产生信号2、调用系统函数向进程发送信号3...原创 2018-04-18 11:11:59 · 285 阅读 · 0 评论 -
Linux中的目录与档案以及目录配置
ls -al 表示列出所有的档案详细的权限以及属性档案的类型有十位举个栗子:1:代表这个文件名是目录或者档案,本例为档案(-)234:表示拥有者的权限,本例中是可读可写可执行456:表示同群组用户的权限,本例中为可读可执行890:表示其他用户的权限,本例中是可读linux中非常看重数据安全性,因此在档案上加了很多权限与属性,以防数据被改或者数据共享等。如何改变文件属性与权限:chgrp:改变档案...原创 2018-04-06 20:25:35 · 357 阅读 · 0 评论 -
shell脚本编程
shell script也叫做shell脚本,其实它是根据shell的功能设计的一个程序。shell脚本的功能的主要 有以下几个:自动化管理,追踪和管理系统,简单入侵检测功能,连续指令单一化,简易的数据处理等功能。shell 脚本程序以.sh结尾,执行时使用sh XXX.sh命令即可执行。下面来进行第一个脚本程序编写吧。此程序的目的是简单计算出两个数的加减乘除:执行该脚本:该程序的目的是计算出...原创 2018-04-19 11:08:00 · 407 阅读 · 0 评论 -
设置Linux下把工作目录保持在当前的工作目录
命令:cd /home/zienonvi .bashrc 注:如果没有/home/zienon该路径,可直接vim .bashrc即可进入该文件,处在根目录的情况下找到该行代码:PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '改成:PS1='${debian_chroot:+($debian_chroot)}\u@\h:\W\$ '(注:就是将...原创 2018-05-02 11:21:58 · 3565 阅读 · 0 评论 -
线程基本概念以及基本函数
线程线程实际上也是进程的一种,只不过它是进程内部被执行的一部分,进程是为所有线程提供资源的,所以这两部分可造成资源竞争,对于线程而言,它的执行粒度比进程要细,并且对于线程来说,在一个进程里可以存在多个,多个线程也可以并行。那么既然已经有进程了为什么还要提出线程的概念??对于进程来说,它在某一时刻一个进程只能执行一个任务,当该任务执行完成之后才会执行下一个任务,那么对于操作系统来说是非常浪费资源和时...原创 2018-05-09 23:23:02 · 468 阅读 · 0 评论 -
使用多线程交替打印ABC十次
这道题在我面试的时候被问到过。 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<pthread.h> 4 #include<string.h> 5 #include<unistd.h> 6 #define DEBUG 1 7 int num=0; ...原创 2018-10-06 15:04:14 · 1106 阅读 · 1 评论