总结
文章平均质量分 73
小心眼儿猫
这个作者很懒,什么都没留下…
展开
-
C语言·操作符小结
为了您的阅读体验,请移步至专栏文章C语言·操作符小结(排版原因,尤其是使用手机阅读的人)C语言中操作符分为以下几类:算术操作符:+ - * / % 1.除了%操作符之外,其他的几个操作符可以作用于整数和浮点数。 2.对于/操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行 ...原创 2017-11-17 16:45:02 · 176 阅读 · 0 评论 -
动态库和静态库
静态库:(.a)程序在编译连接的时候把库的代码链接到可执行文件中,程序运行的时候讲不再需要静态库。动态库:(.so)程序在运行的时候才去链接动态库的代码,多个程序共享使用库的代码。一个与动态库链接的可执行文件仅仅包含它用到的函数入口地址的一个表,而不是外部函数所在目标文件整个机器码。在可执行文件开始运行以前,操作系统将外部函数的机器码从磁盘上的该动态库中复制到内存中,这个过程称为动态链...原创 2018-03-27 17:59:59 · 147 阅读 · 0 评论 -
系统调用----初步了解文件描述符
在学习操作系统之前,我们在操作文件时会使用一些C接口,比如说,fwrite fread fopen fclose 这些,但是除了这些C接口(其他语言也有),我们还可以使用一些系统调用接口来进行文件访问。例如:写文件(write)代码实现:#include<stdio.h>#include<sys/types.h>#include<s...原创 2018-03-27 22:34:46 · 231 阅读 · 0 评论 -
信号的概念和信号的产生
信号的概念: 这里提到信号,也有必要说一下信号量,信号量是进程间通信的一种方式,与现在要讲的信号并无关系。这里要区分开来。当操作系统接受到信号以后,会在合适的时候执行相应的动作。在我们的日常生活中,红绿灯是一种信号。而我们由于从小便被人告知,红灯停绿灯行……这种规则,因此,我们首先记住了红绿灯这个东西,随后,因为我们已经知道了红绿灯所对应的规则,当我们在遇到红绿灯时就会做出相应的动作。这里,操作系原创 2018-04-10 16:36:58 · 380 阅读 · 0 评论 -
阻塞信号及相关函数
阻塞信号先来看一下几个常见的信号相关概念: 1实际执行信号的处理动作称为信号递达。 2 信号从产生到递达之间的状态称为信号未决。 3进程可以选择阻塞某个信号。 4被阻塞的信号产生时将一直保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作。 5注意:阻塞和忽略是不同的,只要信号被阻塞就永远不会被递达,而忽略就是在递达之后,可选择的一种处理动作。在内...原创 2018-04-10 17:57:21 · 655 阅读 · 0 评论 -
进程间通信(一)---管道
进程间通信的目的: 1、数据传输:一个进程需要将他的数据发送给另一个进程 2、资源共享:多个进程间共享同样的资源 3、通知事件:一个进程需要向另一个或一组进程发送消息,通知他(他们)发生了某种事件(如进程终止时要通知父进程)。 4、进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道他的状态...原创 2018-04-12 11:22:07 · 512 阅读 · 0 评论 -
死锁产生条件,如何避免死锁
什么是死锁? 答:多个进程在运行过程中因争夺资源而造成的一种僵局。当一个进程请求资源时,如果该资源不能立即获得,那么进程就会进入等待状态。如果一个处于等待状态的进程 P1,由于所等待的资源被另一个处于等待状态的进程 p2 所占有,而 p2 所请求的资源又被 p1 占有,这样它们所请求的资源都不会获得,两进程一直处于等待状态,形成死锁。死锁产生的原因? (1) 因为系统资源不足。 ...原创 2018-04-21 23:38:06 · 2037 阅读 · 0 评论 -
进程间关系:进程组、作业、会话
进程组 之前我们在查看系统进程相关信息时,会看到每一个进程的ID和其父进程的ID等相关信息,其中就有一个PGID,代表的是组ID。什么是组ID呢?进程除了有自己的一个进程ID之外,每一个进程还属于一个进程组。而这其中的PGID就是组ID,指明了该进程是属于哪一个进程组。 那么什么是进程组呢?其实这个进程组就是一个或多个进程的集合。通常情况下,他们与同一个作业相关联,可以接收来自同一终端的各种信号原创 2018-04-22 16:41:48 · 1480 阅读 · 1 评论 -
C语言·操作符小结
C语言中操作符分为以下几类:算术操作符:+ - * / % 1.除了%操作符之外,其他的几个操作符可以作用于整数和浮点数。 2.对于/操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法。 3.%操作符的两个操作数必须为整数。返回的是整除之后的余数。移位操作符:<< >> 1、 <&...原创 2018-04-30 15:17:56 · 114 阅读 · 0 评论 -
C语言·数组知识小结
在C语言中我们经常用到数组,这其中有很多我们需要了解并且注意的地方。以下是我学习数组之后的一个简单总结。 这里我们详细说明一维数组和二维数组的相关知识。一维数组一维数组的创建 数组是一组相同类型元素的集合。数组的创建方式: type_t arr_name [const_n]; 例如:int arr[100];或者 char arr[100]等,但像i...原创 2018-04-30 15:58:22 · 325 阅读 · 0 评论 -
线程控制(一):线程创建与终止
说在前面:与线程相关的函数构成了一个完整的系列,绝大多数函数的名字都是以“pthread_”打头的,要想使用这些函数,要通过引入头文,链接这些线程函数库时要使用编译器命令的“-lpthread”选项创建线程//创建一个新的线程int pthread_create(pthread_t *threade,const pthreade_attr_t *attr,void *(*start_rout原创 2018-04-25 11:34:42 · 422 阅读 · 0 评论 -
线程控制(二):线程等待与分离
线程等待为什么需要线程等待呢? 1、已经退出的线程,其空间没有被释放,任然在进程的地址空间内 2、创建新的线程不会服用刚才退出线程的地址空间pthread_join函数://等待线程结束int pthread_join(pthread_t thread,void **value_ptr);//参数thread:线程ID//value_ptr:指向一个指向线程的返回值的指针//返回原创 2018-04-25 13:42:55 · 515 阅读 · 0 评论 -
初识网络,网络协议
网络,我的理解顾名思义就是通过一个网进行联络。然而我们也都知道,这个网可并不是我们能够实实在在摸到看到的一张网。这只是一种形象化的称呼。正如我们所见,我们的每一台计算机与计算机之间是相互独立的,这就是独立模式。虽然计算机之间相互独立,但是多台计算机可以通过网络连接在一起完成数据的共享,这就是网络互联。 我们还听到一些什么局域网(LAN),广域网(WAN)。所谓的局域网,就是一个区域,该区域中有更...原创 2018-05-03 23:55:08 · 183 阅读 · 0 评论 -
网络编程套接字(一)·预备知识
首先我们需要来认识一下IP地址: IP协议有两个版本,IPv4和IPv6。 1、 IP地址在IP协议中,用来标识网络中不同主机的地址。 2、对于IPv4来说,IP地址是一个4字节,32位的整数。IPv6是128位。 3、我们通常也使用“点分十进制”的字符串标识IP地址,例如:192.168.0.1;用点分割开的每一个数字表示一个字节,范围是0~255。源IP地址:来自于哪...原创 2018-05-11 18:00:58 · 243 阅读 · 0 评论 -
C语言基础知识问答
1、什么是C语言? 答:C语言是一门通用的高级计算机编程语言 。(由丹尼斯·里奇与肯·汤普逊,以B语言为基础,在贝尔实验室设计开发出来的)2、C语言有什么特点? 答: 1、C语言是一个有结构化程序设计,具有变量作用域以及递归功能的过程式语言。 2、传递参数就是以值传递,也可以传递指针。 3、不同的变数类型可以用结构体组合在一起。 4、部分变量类型可以转换,例...原创 2018-05-07 00:18:16 · 1660 阅读 · 0 评论 -
进程间通信(四)---信号量
信号量主要用于同步和互斥的。 进程互斥: 1:由于各进程要求共享资源,而且有些资源需要互斥使用,因此各进程竞争使用这些资源,进程的这种关系就叫做进程互斥 2:系统中某些资源一次只允许一个进程使用,称这样的资源为临界资源或互斥资源 3:在进程中涉及到互斥资源的程序段叫临界区例如: 进程同步 进程同步指的是多个进程之间相互配合共同完成一项任务 比如我们日常生活中的原创 2018-04-15 13:11:17 · 285 阅读 · 0 评论 -
进程的终止和等待
进程终止一般来说,进程的退出场景有以下三种:代码运行完毕,结果正确代码运行完毕,结果错误代码异常终止常见的退出方法:从main函数返回调用exit调用_exit在Linux学习的过程中,我们常用 Ctrl+c来终止我们运行的程序,这就是异常终止 _exit函数#include<unistd.h>void _exit(int status);//...原创 2018-03-23 23:14:13 · 319 阅读 · 0 评论 -
顺序表的增删查改(二)
顺序表的增删查改(二)原创 2018-03-19 16:00:11 · 197 阅读 · 0 评论 -
C语言·可变参数列表
可变参数列表浅析原创 2017-12-14 23:24:17 · 1888 阅读 · 0 评论 -
Linux学习小记(三)---基本命令
Linux基本命令原创 2018-03-06 21:13:31 · 155 阅读 · 0 评论 -
Linux ---- 权限
linux 权限管理原创 2018-03-06 22:33:04 · 249 阅读 · 0 评论 -
Linux学习小记(一)---基本命令
Linux基本命令ls指令语法:ls [选项] [目录或文件]功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。常用选项:-a :列出目录下的所有文件,包括以.开头的所有隐含文件-l :列出文件的详细信息-h :方便查看文件的大小-lh :-l与-h的合写-r :对目录反向排序-t :以时间排序2.pwd指令 ...原创 2018-02-27 17:44:49 · 134 阅读 · 0 评论 -
编辑器
Linux学习中接触到vim编辑器。其是vi的升级版,vim兼容vi的所有指令,并且还有语法加亮,可视化操作不仅可以在终端上运行,还可以运行于x window、mac os、Windows。当我们需要使用vim来编辑文件,只需要在终端上输入命令‘’vim [文件名]‘’(如vim hello.c)即可。先来说一说vim最为基本的三种模式及相关操作: 1:命令模式(正常/普通模式) 该模...原创 2018-03-08 11:38:08 · 168 阅读 · 0 评论 -
编译器
gcc编译器和初识readelf命令原创 2018-03-08 21:21:32 · 511 阅读 · 2 评论 -
Linux下c语言实现进度条
颜色的处理 要想把进度条加上颜色,我们只需要在需要显示颜色的部分输入颜色编号即可,但是要在最后用\033[0m关闭所有属性,不然程序运行后会在运行后的后续文字中也变为我们之前所设置的颜色。通过控制符即可设置我们需要的颜色:\033[30m– \033[37m设置前景色(30~37:黑,红,绿,黄,蓝,紫,深绿,白)\033[40m– \033[47m设置背景色(40~47:黑,深红,绿...原创 2018-03-08 23:20:57 · 1139 阅读 · 0 评论 -
指针数组?数组指针??……
指针数组什么是指针数组呢?到底是指针还是数组呢??首先我们要明确一点,指针数组是数组而不是指针。这种数组与我们之前见的数组没什么两样,之所以叫他指针数组只是因为这个数组里的元素是指针。下面我们来举例辨析:1:int *arr1[100];2:char *arr2[100];3:char **arr[100];首先我们都能一眼知道int和char是整型和字符型,其次,我们要想知道到哪一个是指针数组...原创 2018-03-09 16:38:48 · 120 阅读 · 0 评论 -
进程调度
进程调度,进程调度的作用,进程调度算法原创 2018-03-17 22:30:28 · 588 阅读 · 0 评论 -
进程控制块:PCB之task_struct
进程控制块 Linux下的PCB——task_struct原创 2018-03-16 17:43:57 · 636 阅读 · 0 评论 -
僵尸进程与孤儿进程
僵尸进程 与孤儿进程原创 2018-03-18 17:11:00 · 625 阅读 · 0 评论 -
Linux根目录下几个重要目录的作用以及软件包管理器yum基本介绍
Linux根目录(/)下几个重要目录作用 /proc : 这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。也就是说,这个目录的内容不在硬盘上而是在内存里/bin : 二进制可执行命令。该目录下存放着普通用户的命令/dev:系统的设备文件,即设备的驱动程序/sys:管理设备文件/usr/lib : 所有可执行文件所需要的库文件/var ...原创 2018-03-05 23:04:52 · 410 阅读 · 0 评论 -
popen函数 / system函数 / fork函数
popen() 函数函数定义:FILE* popen ( const char* command , const char* type );int pclose ( FILE* stream );函数说明: 通过创建一个管道,调用 fork 产生一个子进程,执行一个 shell 以运行命令来开启一个进程。这个进程必须由 pclose() 函数关闭,而不是 fclose() 函数。...原创 2018-03-22 21:42:01 · 221 阅读 · 0 评论 -
进程的创建
进程的创建 提到进程创建,我们就需要来认识一下 fork()函数。 fork()从一个已经存在的进程中创建一个新的进程。新进程为子进程,而原进程为父进程。 如果fork()函数调用出错则会返回-1,否则子进程返回0,而父进程返回的是子进程的ID。 调用fork()函数以后,当控制转移到内核中的fork()代码以后,内核会进行以下几项工作:分配新的内存块和内核数据结构给子进程将父进程部...原创 2018-03-22 22:46:18 · 190 阅读 · 0 评论 -
浅析海量数据处理问题
生活中我们经常会遇到一些海量数据处理的问题,那么怎样的问题就算是海量数据了呢?来看以下这几个问题: 给定一个大小超过 100G 的文件, 其中存在 IP 地址, 找到其中出现次数最多的 IP 地址 。 给定100亿个整数, 找到其中只出现一次的整数(位图变形, 用两位来表示次数)。 有两个文件, 分别有100亿个query(查询词, 字符串), 只有1G内存, 找到两个文件...原创 2018-05-29 17:01:01 · 2710 阅读 · 0 评论