自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

xiaoxiaoyu

xiaoxiaoyu

  • 博客(39)
  • 收藏
  • 关注

原创 Linux系统——信号

信号的基本概念 为了理解信号,先从我们最熟悉的场景说起。 用户输入命令,在shell下启动一个前台进程。 用户按下ctrl+c,这个键盘输入产生一个硬件中断。 如果CPU当前正在执行这个进程的代码,则该进程的用户空间代码暂停执行,CPU从用户态切换到内核态处理硬件中断。 中断驱动程序将Ctrl -c解释成一个SIGINT信号,记在该进程的PCB中(也可以说发送了一个SIGINT信号给该...

2018-08-31 20:06:52 252

原创 Linux——进程间通信

进程间通信目的:数据传输:一个进程需要将它的数据发送给另一个进程。资源共享:多个进程之间共享同样的资源通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)进程控制:有些进程希望完全控制另一个进程的执行,此时控制进程能够拦截另一个进程的所有 陷入和异常,并能够及时知道它的状态改变。2.管道 管道 是Unix中最古老的进程间通信...

2018-08-31 10:53:25 194

原创 数据结构——队列

pragma onceextern struct BTNode; typedef struct BTNode* QDataType; typedef struct Node { QDataType _data; struct Node* _pNext; }Node,*PNode; typedef struct Queue { PNode _PHead;...

2018-08-30 22:54:40 184

原创 数据结构——链表基础

#pragma oncetypedef int DataType;#include<stdio.h>typedef struct Node//不带头结点的单链表{ struct Node* _pNext; DataType _data;}Node,*PNode;#include<stdio.h>#include<assert.h>...

2018-08-30 19:56:51 174

原创 数据结构——带头结点的单链表

pragma onceincludeincludeinclude

2018-08-30 17:27:58 2016

原创 顺序表

#pragma once#define MAX_SIZE 10000typedef unsigned int size_t;typedef int DataType;typedef int DataType;typedef struct SeqList{ DataType _array[MAX_SIZE]; int _size;//顺序表中有效元素的个数}SeqLis...

2018-08-30 17:07:32 153

原创 数据结构——带头结点的双向链表

#pragma once#include<assert.h>#include<malloc.h>typedef int DataType;typedef struct DListNode{ struct DListNode* _pNext; struct DListNode* _pPre; DataType _data;}DLNode,*...

2018-08-30 17:05:58 447

原创 数据结构之动态顺序表

#pragma oncetypedef int DataType;typedef unsigned int size_t;//原来如此呀,感谢当初那么认真的自己。typedef struct SeqListD{ DataType* _array; size_t _capacity;//底层空间的大小 size_t _size;//有效元素的个数}SeqListD,...

2018-08-30 04:26:27 249

原创 计算机网络——应用层

应用层包括各种满足用户需要的应用程序,某些应用的使用范围十分广泛,有关国际标准化组织已经进行了标准化,如文件传输,它们都属于OSI应用层的范畴。应用层协议向用户提供各种实际的网络应用服务,使得上网者更方便地使用网络上的资源,随着网络技术的发展,应用层服务的功能还在不断改进和增加。IP地址与域名 为了确保通信时能互相识别,在Internet上的每台主机都必须有一个唯一的标识,即主机的IP地址...

2018-08-27 13:56:19 347

原创 用户数据报传输协议

1.UDP提供的服务具有以下主要特征 (1)传输数据前无须建立连接,一个应用进程如果有数据报要发送就直接发送,属于一种无连接的数据传输服务。 (2)不对数据报进行检查与修改。 (3)无须等待对方的应答 (4)正因为以上的特征,使其具有较好的实时性,效率高。 会出现分组丢失,重复,乱序,应用程序需要负责传输可靠性方面的所有工作。它适用于无须应答并且通常一次只传送少量数据的情况。对于只有一个...

2018-08-27 12:59:55 399

原创 TCP端口和TCP连接管理

TCP段结构中端口地址是16比特,可以有在0~65535范围内的端口号。对于这65536个端口号,有以下使用规定。 (1)端口号小于256的定义为常用端口,服务器一般都是通过常用端口号来识别的。任何TCP/IP实现所提供的服务都用1~1023之间的端口号。这些端口号由Internet端口号分配机构来管理; (2)客户端通常对它所用的端口号并不关心,只需保证该端口号在本机上是唯一的就可以了。客户...

2018-08-27 12:34:49 3164

原创 因特网的互联层协议

互联网协议IP是互联层最重要的协议,它将多个网络连成一个互联网,可以把高层的数据以多个数据报的形式通过互联网分发出去。互联层的功能主要由IP来提供,主要用于负责IP寻址,路由选择和IP数据包的分割和组装。 IP的基本任务是通过互联网传送数据报,各个IP数据报之间是相互独立的。主机上的IP层向传输层提供服务,IP从源传输实体取得数据,通过它传给目的主机的IP层。IP不保证服务的可靠性,在主机资源不...

2018-08-25 18:04:22 3472

原创 计算机网络7层模型之网络层

网络层是OSI参考模型中的第三层,介于传输层和数据链路层之间。它在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从而向传输层提供最基本的端到端的数据传送服务。网络层关系到通信子网的运行控制,体现了网络应用环境中资源子网访问通信子网的方法,是OSI模型中面向数据通信的底三层(通信子网)中最为复杂,关键的一层。 ...

2018-08-25 10:04:34 361

原创 计算机网络7层模型之数据链路层

1.数据链路层最基本的服务是将源机网络层来的数据可靠的传输到相邻节点的目标机网络层,为达到这一目的,数据链路层必须具备一系列相应的功能,它们主要有:如何将数据组合成数据块,在数据链路层中将这种数据块称为数据帧,数据帧是数据链路层的传送单位,如何控制帧在物理信道上的传输,包括如何处理传输差错,如何调节发送数据速率以使之与接收方相匹配;在两个网络实体之间提供数据链路通路的建立,维持,释放和管理.2。基...

2018-08-25 08:34:37 316

原创 在32位平台下,进程的地址空间及fork()与vfork()

进程的地址空间从下到上依次为正文代码,初始化数据,未初始化数据,堆,共享区,栈,命令行参数环境变量,内核空间1G。 由此可以看出,我们在写程序时,数据它有它特定的位置。fork()函数做了些什么? 复制父进程的正文段,数据段,堆,栈这四个部分,并为3个部分分配物理块,除正文段和父进程共享外,其余三个部分都会被分配物理空间。复制之后其内容是相同的。内核除了做这些,内核还会以父进程为...

2018-08-24 16:41:11 694

原创 操作系统之死锁

何为死锁? 若系统中存在一组(两个或多个),它们中每个进程都占用了某种资源,又都在等待已被该进程中的其他进程占用的资源,如果这种等待永远不能结束,则说系统出现了死锁,或者说这组进程处于死锁状态。 注意,要特别指出的是,由于以下两种情况造成的进程永远等待,不属于我们要讨论的死锁问题。 (1)由于某个进程申请了系统中不存在的资源或申请的资源数超过了系统拥有的最大资源数而引起的等待。 ...

2018-08-24 16:40:33 689

原创 我的Python小课堂——异常处理

异常 指程序执行过程中,发生了错误,根据不同的错误类型,抛出不同类型的异常。 如果一个程序抛出了异常,如果不对这个异常做任何处理,默认行为就是导致程序运行终止。 这里我们要把Python的异常和C++/java的异常做一个区分,因为Python是解释执行的,所以语法错误和执行逻辑出现问题导致的错误都被Python统一成了异常,而C++和java会预先对代码进行编译,如果语法出错,在编译期间...

2018-08-23 22:15:54 200

原创 操作系统之页面调度算法

(1)先进先出算法,当然是最先进来的页先出去了啊。简称FIFO(first in first out)。 该算法是基于最早进入主存器的页未被使用的可能性要大。但如果一页要经常的被访问,它在一定的时间内又会被重新的调入。这会增加磁盘启动的次数。(2)最近最久未使用算法(LRU):是基于程序使用的局部性原理,即程序一旦访问到某些位置的数据或指令时,可能在一段时间里经常会访问到它们。但在实际中,我...

2018-08-23 21:46:23 8329

原创 操作系统

什么是操作系统,在以前我们没有操作系统,所谓的计算机只是一堆硬件组合在一起,要让它工作,我们必须手动的输入数据,数据经过运算后,然后再输出到相应的外设上。 但现在有了操作系统,是操作系统帮我们去做这些事情,而我们干什么,我们只是写下我们想要干的事,以及这件事情怎么干,不用去干这件事,那 干这件事就交给操作系统了。 所以这就是操作系统,大体上就是这样。操作系统的实现也是需要人去实现的,所以我想说...

2018-08-23 21:45:50 109

原创 我的Python小课堂——文件操作

文件的基础操作 open():可以打开一个指定路径下的文件,返回一个文件对象。 open最常用的有两个参数,第一个参数是文件名(绝对路径或者相对路径),第二个是打开方式,‘r’ ,’w’, ‘a’, ‘b’,表示读(默认),写,追加写,二进制。关于内建函数 内建函数其实是包含在builtins这个模块中的一些函数。而builtins这个模块Pyhton解释器会自动包含。 使用 ...

2018-08-23 21:36:44 491

原创 我的Python基础语法第三小节

函数定义和调用 用def关键字定义一个函数。函数的定义只是创建了一个函数,并没有执行函数体中的代码,要在真正进行函数调用时,才执行函数体中的代码。 函数内部可以定义函数,函数可以作为函数的参数,函数可以作函数的返回值。函数的参数 函数定义时,可以在()中填入这个函数都需要接受哪些参数,注意,此处不需要指定参数类型,Pyhton是动态类型语言,所以在你写下代码的时候,解释器并不知道参数的...

2018-08-23 14:37:20 120

原创 跟我一起学Python——基础语法第二节

Python对象 一个Python对象包含三部分信息:身份,类型,值 身份:每一个对象都有一个唯一的身份标识自己,使用内建函数id()可以看到这个标识具体的值。 类型:对象的类型决定了对象保存什么样的值,可以进行什么样的操作,以及遵守什么样的规则,使用内建函数type可以查看对象的类型,其本质上就是把对象分类。 值:表示对象中具体保存的内容,有些对象的值可以修改,有些对象的值不能修改,这...

2018-08-23 04:04:05 100

原创 和我一起学Python——Python基础语法第一小节

Python 中,如果一个语句被小括号,中括号,大括号包起来,是可以跨行书写的。 如:server={ ‘ip’ : ‘127.0.0.1’, ‘port’ : 80 } 如果没有用括号包起来,可以使用\来换行。双引号和单引号字符串都不能折行,但是三引号可以折行。 如:print ”’ hello, how are you?””使用逗号可以将多个语句写到同...

2018-08-23 02:28:15 175

原创 根我一起来学Python——模块

Python 模块初识 当代码量比较大的时候,我们最好把代码拆分成一些有组织的代码片段,每个代码片段里面包含一组逻辑上有关联的函数或者类。每一个片段放在一个独立的文件中,这样的片段我们就称之为模块。 使用import可以在一个Python文件中引入其他的模块。模块也是对象 import实际上是创建了一个模块对象,我们是通过这个对象来访问模块中的具体方法。模块的搜索路径:Pytho...

2018-08-22 23:52:43 144

原创 操作系统之死锁的避免

死锁的防止:是在申请资源时,采取某种策略,来以此防止产生死锁。是用防来不产生死锁。 死锁的避免:采用避的方式来不产生死锁。 安全状态:如果操作系统能保证所有进程在有限的时间内得到需要的全部资源,则称系统处于安全状态,否则说系统是不安全的。显然,处于安全状态的系统不会发生死锁,而处于不安全状态的系统可能会发生死锁。银行家算法 这个算法就是让系统处于安全状态,从而避免死锁的产生。 这个算...

2018-08-09 23:02:57 1492

原创 进程的三种状态

进程有三种基本状态:运行态,就绪态,等待态又可以称之为阻塞态。 等待态:等待某一事件 就绪态:等待系统分配处理器以便运行 运行态:正在占用处理器运行。这三种状态的转换关系 运行态到等待态:一个进程运行中启动了外围设备,等待外围设备结束,进程在运行中申请资源得不到满足,变成等待分配资源状态,进程在运行中出现了故障,变成等待人工排除干预状态。(此时已让出处理器了) 等待态到就绪态:...

2018-08-09 19:21:18 10050 2

原创 环境变量和命令行参数

环境变量 当要求系统运行一个程序。但没有告诉它程序所在的路径时,系统除了 在当前目录下面寻找此程序外,还会到path中指定的路径去找,我们可以通过设置环境变量,来更好的运行进程。命令行参数 命令行参数就是一个命令 ,它只是给操作系统提供了程序运行所必须要的一些信息。特别是在Linux下,命令行参数是特别重要的。...

2018-08-09 08:24:44 1357

原创 进程终止

 1. 进程退出场景 代码运行完毕,结果正确 代码运行完毕,结果不正确 代码异常终止2. 进程常见退出方法从main返回调用exit调用_exit 3. 进程异常退出:在任意点被终止了的进程我们称之为异常退出。     ctrl+c: 程序在前台出现问题用它让程序终止4. _exit函数 #include<unistd.h> void_exit(int ...

2018-08-08 21:09:48 751

原创 进程等待

1. 进程等待的必要性 子进程退出,父进程如果不管不顾,就可能造成“僵尸进程”的问题,进而造成内存泄露 另外,进程一旦变成僵尸状态,那就刀枪不入,kill -9也无能为力。 最后,父进程派给子进程的任务完成的如何,我们需要知道,如子进程运行完成,结果对还是不对,或者是否正常退出 父进程通过进程等待的方式,回收子进程资源,获取子进程退出信息。2. 进程等待的方法 wait()方法 #includ...

2018-08-08 21:07:02 573

原创 队列

1.在队列中,用front来标记队首元素,用rear来标记队尾元素的后一个空间。 rear=(rear+1)%QueueSize;2.队列的应用 如何将中缀表达式转换为后缀表达式 中缀表达式:3+4*2-3*7, (3*2+4)*4 后缀表达式:342*+37*-,32*4+4* 算法:遇数字就输出,遇运算符就将栈中高于该运算符的符号输出,然后将该运算...

2018-08-07 23:09:30 110

原创 栈的应用算法

用栈来判断一串字符串是否匹配在了解了栈的基本操作之后,要掌握栈的应用算法,栈应用其实就是解决对称问题的,因为它先进后出的特点,所以比如我们要判断字符串是否对称,我们可以把字符串的前一半依次入栈,然后在依次遍历字符串的后一半,每一次判断该字符和栈顶字符是否相等,若相等,则让栈顶元素出栈,若不相等,则结束,说明该字符串不对称。 最后,若栈为空,则说明该字符串是对称的,其实说实话,最后根本用不着...

2018-08-07 18:25:00 1016

原创 动态库,静态库

静态库:程序在链接时找的那个库就是静态库。 动态库:程序在运行时找的库就是动态库。 何为链接,链接就是在需要某个文件时,我们把通过表找到它,具体说,就是程序在执行时要用到这个文件,而我们只要通过某种方法找到这个文件就可以了,这就是链接。并不是说链接就是将所有的目标文件放在一个文件里头,集中去生成可执行文件。...

2018-08-07 02:17:55 85

原创 Linux下的软硬链接

硬链接 其实就是给磁盘中的数据在起一个别名,相当于是我们可以通过不同的文件名访问磁盘中相同的数据块。硬链接 其实就是一个文件中包含有另一个文件的路径名,当然我们可以通过访问软链接文件去找到和源文件中相同的内容。因为软连接文件中包含的是源文件的路径名。 在linnux下如何创建软链接的命令:ln -s 源文件名 链接文件名...

2018-08-07 01:33:35 82

原创 数据结构之排序(未完,待续)

includeincludeincludeincludepragma warning(disable:4996)冒泡排序,稳定的排序 void bubblesort(int* arr, int len)//稳定的排序算法{ assert(arr&&len > 0); int i = 0; int j = 0; ...

2018-08-06 16:58:16 126

原创 你好,Python

Python是由谁发明的呢? 真的是没想到,原来它竟然是由著名的“龟叔”一个乐队,在1989年圣诞节因为无聊打发时间,竟然写出的一个新的脚本语言。Python是一种解释型的编程语言,那何为解释型的编程语言呢? 即就是由解释器一行一行的读取源代码,每读一行就执行一行,即边读边做,而不是一次性的先读完在执行。 但严格意义上讲,Python算是一种“半编译,半解释”型的语言,即就是一方...

2018-08-04 21:44:24 428

原创 C语言的程序

输出100到200之间的素数,素数就是除了1和他本身外,不能被其他数整除的数 void isprime() { int i = 0; int count = 0; for (i = 100; i <= 200; i++) { int j = 0; for (j = 2; j <=i; j++) { if (i%j == ...

2018-08-03 17:27:37 202

原创 二叉树的基本操作及面试题

typedef int DataType; typedef struct BinaryTreeNode { struct BinaryTreeNode* _left; struct BinaryTreeNode* _right; BTDataType _data; }BTNode; BTNode* BuyBTNode(BTDataType x)//创建新结点 ...

2018-08-03 16:59:15 270

原创 队列的基本操作

typedef int DataType; typedef struct BTNode* QDataType; typedef struct Node { QDataType _data; struct Node* _pNext; }Node,*PNode; typedef struct Queue { PNode _PHead; PNode _...

2018-08-03 11:28:11 251

原创 栈的基本用法

include

2018-08-03 11:25:10 1148 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除