自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (1)
  • 收藏
  • 关注

原创 操作系统之生产者与消费者

生产者消费者模型描述生产者/消费者问题可以描述为:两个或者更多的进程(线程)共享同一个缓冲区,其中一个或多个进程(线程)作为“生产者”会不断地向缓冲区中添加数据,另一个或者多个进程(线程)作为“消费者”从缓冲区中取走数据。生产者/消费者模型关注的是以下几点:n 生产者和消费者必须互斥的使用缓冲区n 缓冲区空时,消费者不能读取数据n 缓冲区满时,生产者不能添加数据生产者/消费者模型的优点在于:...

2020-02-15 11:13:35 8205 4

原创 poll & epoll & select 三种IO函数区别联系

时间复杂度1.sellect:O(N)它仅仅知道了,有I/O事件发生了,却并不知道是哪那几个流(可能有一个,多个,甚至全部),我们只能无差别轮询所有流,找出能读出数据,或者写入数据的流,对他们进行操作。所以select具有O(n)的无差别轮询复杂度,同时处理的流越多,无差别轮询时间就越长。2.poll:O(n)poll本质上和select没有区别,它将用户传入的数组拷贝到内核空间,然...

2020-01-23 22:47:09 320

原创 银行家算法

在了解银行家算法之前,我们先了解一下死锁的概念和它的相关知识。死锁概念 :多个进程相互等待,互不相让,导致所有进程无限期等待。死锁分为 资源死锁 和通信死锁。资源死锁:每个进程都在等待其他进程释放资源。资源死锁时最常见的死锁类型。通信死锁:由于信息丢失,导致通信双方互相等待对方发送消息。一般可以设置超时时间来解决。资源死锁条件1)互斥条件:一个进程不能被两个以上的进程同时占有。2)...

2020-01-21 22:04:15 1383

原创 设计模式(1)之观察者模式

设计模式之观察者模式

2020-01-19 20:01:41 377

原创 读写者问题

只要求读文件的进程称为reader进程,其他进程称为writer进程。允许多个进程同时读一个共享对象,但不允许一个writer进程和其他reader进程同时或writer进程同时访问一个共享对象。简单来说,读写者问题是保证一个writer进程必须与其他进程互斥的访问共享对象的同步问题。三句话来说,就是:读读共享;写写互斥;读写互斥...

2020-01-17 21:26:10 477 2

原创 子网掩码和子网划分

子网掩码子网掩码又叫网络掩码,地址掩码,子网络遮罩,它是一种用来指明一个ip地址的哪些位,标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码是在IPV4地址资源紧缺的背景下为了解决ip地址分配而产生的虚拟ip技术,通过子网掩码将A,B,C三类地址划分为若干子网,从而显著提高了ip地址的分配效率,有效解决了ip地址资源紧张的局面。为什么要用子网掩码?在使用tcp/ip协议的两台...

2020-01-17 20:15:45 2192

原创 泛型算法

泛型算法首先我们对泛型算法有一个概念,它是可以操作在任何容器之上,实现共同的操作。大多数算法都是通过遍历由两个迭代器表示的一段元素来实现的。1.泛型算法本身从不执行容器提供的操作,只是单独依赖迭代器和迭代器操作实现。2.使用“普通”的迭代器时,算法从不修改基础容器的大小。正如我们看到的,算法也许会改变存储在容器中元素的值,也许会在容器内移动元素,但是,算法从不直接添加或删除元素。c++泛型...

2019-11-05 18:05:31 545

原创 迭代器失效

迭代器是什么迭代器类型类似于指针类型,也提供了对对象的间接访问。就迭代器而言,其对象便是容器中的元素或者string对象中的字符。使用迭代器可以访问某个元素,迭代器也能从一个元素移动到另一个元素。迭代器有有效和无效之分,这一点和指针差不多。有效的迭代器指向某个元素,或者指向容器中尾元素的下一位置。我们可以把迭代器理解为指针 但它又不同于指针 。比如我们用sizeof来测它所占的内存,它并不占...

2019-11-05 17:23:31 206

原创 linux之ps, kill , & , jobs

进程所谓进程,简单的来说,就是一个正在运行的程序。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体。在当代面向线程设计的计算机结构中,进程是线程的容器,进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。操作系统管理计算机上的软件硬件资源,为用户提供一个交互的接口。pid用来标识一个进程,一个进程有一个进程ID号,也就是pid。ppid当前进程的父进程的ID号。...

2019-08-01 23:17:46 177

原创 linux基本操作

1.目录结构根目录: /根目录底下还有许多目录,他是一个倒状树结构。(Windows中的文件夹,也就是linux中的目录)1.boot 内核,与系统启动有关的文件2.etc 系统的配置文件3.dev 设备文件4.bin 命令或者是可执行程序5.lib 库文件6. home 普通用户的家目录7. root 管理员的家目录8. mnt 临时挂载点9. proc 虚拟的目...

2019-07-24 00:42:14 161

原创 python一个简单的学生名片管理系统

题目:实现一个简单的学生名片管理系统可以进行增删改查。可以循环输入,用户可以选择继续或者是退出。分析:运用列表和字典进行实现,将学生信息存在字典里,然后在存进列表中。总体代码较为简单,适合初学者代码实现:print("="*50)print("名片系统")print("1.增加")print("2.删除")print("3.查询")print("4.修改")print...

2019-07-07 00:23:26 881

原创 python实现最小费用购物问题

问题描述:商店中每种商品都有标价.例如,一朵花的价格是2元.一个花瓶的价格是5元.为了吸引顾客,商店提供了一组优惠商品价. 优惠商品是把一种或多种商品分成一组,并降价销售.例如,3朵花的价格不是6元而是5元.2个花瓶加1朵花的优惠价是10元.是设计一种算法,计算出某一顾客所购商品应付的最少费用.参考的知识:动态规划. 程序语言不限.题目分析:首先确定需要哪些数据,要想实现这个题目,我们...

2019-07-06 23:55:03 3030 2

原创 数组 和 循环 冒泡排序,斐波那契,杨辉三角

练习题先来看几道练习题:1.打印杨辉三角分析 :杨辉三角是怎样的一个三角呢 他是这个样子的11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1通过观察我们可以发现,每一个数字是他上面的数字和他上面数字的前面的数字之和。当然 ,最简单...

2019-07-05 00:23:41 210

原创 memset memmove函数

memset 函数:函数原型:void * memset(void *s ,int c,int count)s:是指针或者是数组c:是赋给s的值count:是s的长度memset用来对一段内存空间全部设置为某个字符,一一班用在对定义的字符串进行初始化为‘ ’或者是‘\n’。例如:char a[100];memset(a,’\n’,sizeof(a));char buffer[...

2019-06-30 22:09:00 208

原创 c++之数组值左移右移升级版

分析首先,这个是前面那个代码的升级版,我们暂时先不考虑时间复杂度的问题。先说说之前代码的缺陷。第一个:之前没有考虑到如果移动的位数大于数组长度,那我们就相当于做了一个重复的事情,比如说移动十二位 ,我们数组长度有十位,那么 ,移动十位后就和原来的数组一模一样。所以 ,我们应该提出一个解决方法。第二个:我们没有考虑到负数的情况 ,万一用户输入了负数,那么我们就可以把它处理为右移。设计运用...

2019-06-28 01:45:24 770 1

原创 python 入门基础之函数

函数函数是组织好的,可重复使用的,用来实现单一或相关联的功能的代码段。函数可以提高应用的模块性,和代码的重复利用率。python提供了许多内建函数,比如说print(),当然自己也可以创建函数,这就叫做用户自定义函数。定义函数:def 标识符名称 ():pass调用函数:标识符名称()注意: 函数内容以冒号起头,并且缩进。return结束函数,并且返回一个值。不带表达式...

2019-06-26 23:34:52 862 1

原创 C语言之指针(2)

const(1)const修饰*,代表指针所指向的内存是只读。例:const int * p2=&a; 或者是 int const * p2=&a如果你要 *p2=100; //errorp2=NULL ; //ok(2)const修饰指针变量,代表指针变量的值为只读int * const p4 =&a;*p4=100 ; /...

2019-06-26 22:34:37 134

原创 C语言之初识指针

什么是指针?内存,以一个字节进行分配。每个字节的内存都有标号,这个标号就叫做地址,也叫做指针,地址需要存储,32位系统的编译器分配四个字节的内存,那么,64位的编译器也就分配8个字节。寻址就像给房间分配房号,根据每个房间的房号找到房间。也就是根据地址找到对应的内存。这也就叫做寻址。指针就是一种数据类型,例如:int* p你可以这样理解,定义了一个变量p,p的数据类型是int*型的。...

2019-06-26 16:47:03 180

原创 c++实现 数组值左移右移

题目1.实现三个函数(1)打印数组(2)数组值进行左移 通过由用户自定义左移几位(3)数组右移分析(1)打印数组很简单,我们可以用for循环遍历数组,进行打印。(1)左移,我们首先想一下左移一位该怎么办如果定义了一个数组 元素顺序是1 2 3 4 5 6那么左移一位之后将变成2 3 4 5 6 1 来 我们整理一下思路,这样想 我们可以把第一个值取出来存到一个变量里...

2019-06-25 00:46:23 10187

原创 C语言之静态变量,sizeof

staticstatic 修饰变量,包括局部变量,全局变量。1.修饰全局变量,在变量前加一个static。特点:这个变量在全局数据区分配内存。如果不显式初始化,那么就隐式初始化为0。2.static修饰局部变量。有时希望函数中局部变量的值在函数调用结束后不消失而继续保留原值,也就是他占用的存储单元不释放,在下一次在调用该函数时,该变量就是上一次函数调用结束时的值。这时就指定一个该局部变...

2019-06-25 00:21:33 745

原创 C语言基础之闰年升级版

判断闰年 月份天数 以及是第几天这个代码较之前改进了有bug的处理方法。如果年份 月份 天数不对,就会提示错误,跳出循环 并重新输入。#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdbool.h>//函数声明bool Is_LeapYear(int year);int YearM...

2019-06-24 00:52:47 293

原创 C语言之 数组翻转 数组最大值

数组最大值求数组元素的最大值,定义一个临时变量,存储最大值,用for循环来遍历整个数组。找到最大值int main(){ int a[] = { 1,-1,99, 2, 34, 45, 6, 8, 9, 32 }; int lengths=( sizeof(a)/ sizeof(a[0])); int max=0; for (int i = 0;i<lengths; ++i){...

2019-06-23 22:43:47 651

原创 python 入门 之字典列表

python是一种面向对象,解释型计算机程序设计语言。python语法简单,这也就是许多人说:人生苦短,我学python。python的特点是用空白符作为语句缩进。python具有丰富强大的库。它经常被称为是胶水语言。字典字典是python中最强大的数据类型之一。(1)什么是字典?字典是python语言中唯一的映射类型字典的对象是可变的,它是一个容器类型,能存储任意个数的python对...

2019-06-23 22:21:41 634

原创 C语言基础(2)

我们接着上一篇博客来看。让我们来看一段代码, int add(a, b){ int c = a + b; a += 100; return c;}int main(){ int a = 10, b = 20, c; c = add(a, b); printf("%d %d", c, a); system("pause"); return 0;}这个代码打印...

2019-06-22 13:54:58 429

原创 C语言基础(1)

宏定义简单来说,以#开头的文件在运行处理时都是在预编译时候处理的。先进行预编译将.c文件变为.i文件,在进行编译后变为.o/.obj文件,在进行编译后变为.exe文件。也就是说,预编译过程处理的就是#号开头的文件。宏定义的本质是替换,它不开辟空间,也没有类型。#include<stdio.h>#define PI 3.14 // 宏定义一个PI为3.14int...

2019-06-22 00:46:18 149

原创 c语言基础之循环

三种循环(1)for格式:for(xx1;xx2;xx3){循环体;}(2)while格式:while(xx1){循环体;}(3)do while格式:do{循环体;}while(xx1);在这里 do while循环在执行时至少执行一次。for循环三个表达式可以省略,但是分号一定要写例:for循环打印0-10奇偶数#include<stdio.h&...

2019-06-19 22:48:32 286 1

原创 C语言入门基础

数据类型char 1个字节short 2个字节int 4个字节long int 4个字节long long 8个字节==========================float 4个字节double 8个字节bool 1byte=1bitlong double 8 / c11=...

2019-06-19 00:36:23 264 2

原创 判断闰年,判断月份天数,判断输入的日期是一年的中第几天

题目实现三个函数:(1)Is_LeapYear();判断是否是闰年,判断条件是1. 能整除4,但不能整除1002. 能整除400(2)YearMonth_To_day()判断输入的月份是多少天,在这里应该注意二月份的天数,闰年二月份和不是闰年二月份天数是不一样的,在这应该加入一个判断语句。(3)YearMonthDay_To_Total()判断你输入的年月日是一年中的第几天。在...

2019-06-18 23:46:07 3100

原创 简单的运算器

题目:实现一个简单的运算器。功能:(1)能进行 " + " , " - " , " * " , " / ",(2)循环计算,直至用户要求退出分析:首先要实现四个功能,那么可以定义四个函数,分别实现 加减乘除说到循环,就可以想到 for ,while 语句 。在这里 ,我们是用户自己控制循环次数,所以在这里我们选用...

2019-06-18 23:14:11 1101

银行家算法详细资料代码.zip

银行家算法的代码,里面有详细的注释。 银行家算法(Banker’s Algorithm)是一个避免死锁(Deadlock)的著名算法,是由艾兹格·迪杰斯特拉在1965年为T.H.E系统设计的一种避免死锁产生的算法。它以银行借贷系统的分配策略为基础,判断并保证系统的安全运行。

2020-01-21

空空如也

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

TA关注的人

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