- 博客(14)
- 收藏
- 关注
原创 内存分配方式
一,c++编译程序占用的内存栈区----由编译器自动分配释放,存放参数值和局部变量的值,操作方式类似于数据结构的stack堆区----有程序员自己分配释放,如果程序员自己不释放,程序结束后,OS会自己回收,和数据结构的堆是两码事,分配方式 类似于链表(malloc,new都在堆区)内存映射段----文件映射,动态库,匿名映射数据段----全局数据和静态数据代码段----存放常量,可执行...
2019-09-13 10:46:17 186 1
原创 C++11——右值引用
一,解决什么问题解决c++98中,一个临时对象非必要的昂贵的拷贝工作,在模板函数中如何按照参数的实际类型进行转发二,左值和右值?能取地址的就左值,不能取地址的就是右值只能放在等号右边的就是右值,举例int i = 0;在上面的那句话中,0就是一个右值,不能对其赋值和取地址,i是一个左值,可以放在等号的任意一边,具体来说上面的表达式中等号右边的0是纯右值(prvalu...
2019-05-31 18:40:14 319
原创 进程间通信
一,为什么操作系统给用户提供进程间通信的方式因为进程之间有独立的地址空间,导致进程间无法直接进行通信场景:数据传输,数据共享,进程控制,事件通知二, 分类管道(命名管道和匿名管道)—(传输数据)消息队列—(传输数据)信号量—(进程间的访问控制)共享内存—(数据共享)管道—进程间数据资源的传输1,特点半双工通信----(双向选择的单向通信)数据只能从这一...
2019-04-22 20:01:55 273
原创 进程的同步与互斥
一,小知识什么是临界资源?系统中的某些资源一次只允许一个进程使用的资源临界资源称之为临界资源或者互斥资源共享资源。各进程采取互斥的方式,实现共享的资源称作临界资源。属于临界资源的硬件有,打印机,磁带机等;软件有消息队列,变量,数组,缓冲区等。诸进程间采取互斥方式,实现对这种资源的共享。每个进程中对临街资源实施操作的代码段称为临界区(criticalsection),每次只允许一个进程进入临...
2019-04-22 19:56:13 522
原创 系统中的堆和栈
在数据结构中栈具有先进后出的(First in Last Out FIFO)的特性,而在计算机系统中,栈是一个具有以上属性的动态内存区域。程序可以将数据压入栈中,也可以将数据从栈中弹出。压栈的操作使得栈增大,而弹出操作使得栈变小。在一般的操作系统中。栈是向下增长的。在i386机器上,栈顶由称为esp的寄存器进行定位。压栈的操作使得栈顶的地址减小,弹出的操作使得栈顶的地址增大。。此处栈底的地...
2019-04-10 17:10:22 262
原创 “亲子鉴定”------文件相似度
一,项目应用文本检测----类似于文本查重的功能,检查两个文本的相似程度二,项目原理基于词频:对不同文本进行分词,统计词频,选取一定数量词频较高的词,构建词频向量,然后通过计算余弦相似度,来判断文本是否相似对文本分词,我使用了第三方库-----Jeiba库,通过调用第三方库里的接口,对文本分词,分词后,会有很多无意义的停用词,比如我,我们,怎么办,总之,此外,然而 ,不如,不妨 ,我...
2019-03-16 19:41:49 1014
原创 C语言操作符
算术操作符; + - * / % 注意:“/"两边都为整数时,结果也是整数。 例:3/2=1 3.0/2=1.5 "%"是对某个数取余数, 只能是整数。位移操作符 n<<1 : n的二进制序列向左移一位,右边丢弃,...
2019-03-06 16:57:07 194
原创 众人拾柴火焰高---linux下的线程
一, 引入线程现代软件系统,除了进程之外,线程也是一个重要的概念,特别是随着CPU频率增长开始出现停滞,而开始向多核方向发展,多线程作为实现软件并发执行的一个重要的方法二,什么是线程1,线程概念在一个程序里的一个执行线路就叫做线程,是程序执行流的最小单元。线程是一个进程内部的控制序列,LINUX下没有真正的线程,因为LINUX下的线程是用进程PCB模拟的,所以LINUX下的线程也叫...
2019-03-06 15:54:34 241
原创 多种方式实现次方
一,问题提出问题: 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。满足以下要求:时间限制:1秒 空间限制:32768K方法一:简单的循环举个列子:2 ^ 3 等于8, 也就是 2 * 2 * 2, 也就意味着 2 ^ 3要给2本身乘以两个2,用while和for循环可以实现这个功能;代码实现如下double Po...
2018-11-14 21:16:20 264
原创 最快的排序方法-----快速排序
一,快速排序的思想1,在一个无序的数组里随机找一个作为基准值。2,然后让数组里的每一个数字和基准值比较,比基准值大的放在基准值右边,比基准值小的,放在基准值左边。3,递归调用这个函数,使得整个数组有序。二,快速排序的实现方法方法一:交换法取最后一个数据为基准值,begin标记数组第一个数据,end标记数组最后一个数据begin++向后走,找到比基准值大的数停下来,end–向前走,找...
2018-10-03 14:34:12 20512 5
原创 青蛙跳台阶问题
题目如下:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。1,解题思路,假设只有一个台阶或者有两个台阶,算一下有几种跳法,然后从中找他们之间的联 假设台阶很少,计算有多少种跳法 假设的台阶数 ...
2018-08-25 16:55:07 374
原创 链表的基本操作
1, 首先应该创建一个链表typedef struct Linklist //创建一个结构体取名为LinkList{ DataType data;//一个节点的数据域 struct Linklist* next;//指向下一个节点的指针}List, *pList,//取了别名为List,和一个结构体指针pList2,创建结束后,应该初始化链表(1)初始化链表void ...
2018-08-25 13:35:51 169
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人