自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 互斥锁与条件变量的使用

进程线程间的互斥相关背景概念:临界资源:多线程执行流共享的资源就叫做临界资源临界区:每个线程内部,访问临界资源的代码,就叫做临界区互斥:任何时刻,互斥保证有且只有一个执行流进入临界区,访问临界资源,通常对临界资源起保护作用原子性(后面讨论如何实现):不会被任何调度机制打断的操作,该操作只有两态,要么完成,要么未完成1.互斥量(mutex):在多个线程对同一临界资源访问时,会出现竞争的状况,可能会导致线程安全问题。所以,互斥锁就是让线程在访问临界资源的时候,一次只能允许一个线程去访问,一.

2022-05-27 15:51:30 358

原创 线程控制linux

2022-05-22 21:51:11 203

原创 AVL树的实现

#include<iostream>#include<map>#include<assert.h>using namespace std;template<class K,class V>struct avlnode{ avlnode<K, V>* _right; avlnode<K, V>* _parent; avlnode<K, V>* _left; pair<K, V&...

2022-05-14 19:18:19 269

原创 进程通信-共享内存

1.共享内存的概念共享内存就是在物理内存中开辟一段空间,通过页表映射到虚拟地址空间,使两个不同的进程可以看到同一块资源,实现进程间的通信。共享内存是进程间通信最快的方式。2.共享内存的接口 (1)首先创建一段内存空间。key:系统标识,有唯一性。通过函数接口创建。size:空间大小,必须是4KB的倍数。shmflg:如果空间不存在就创建,存在就获取。(2)让页表与空间挂接。const void*shmaddr:通产为NULLint shmflg:通常为0..

2022-05-04 18:19:50 231

原创 进程通信-命名管道

1.命名管道不同于匿名管道,命名管道可以在两个没有血缘关系的进程中通信。2.命名管道的制作

2022-05-04 15:36:30 196

原创 进程间通信-匿名管道

1.进程的概念进程通信就是让两个不同的进程实现交换信息,数据。但是进程具有独立性,难以实现直接通信。但是,我们可以让进程看到同一公共空间或资源。公共空间或资源可以是文件,一段内存块等。所以实现进程间通信的方式有许多。2.匿名管道的特点(1)匿名管道只能单向通信。(2)只能用于父子进程之间。(3)匿名管道面向字节流。(4)自带同步机制(5)生命周期随进程结束。3.匿名管道在进程中的使用...

2022-05-03 22:37:28 951

原创 动静态库的制作-Linux

1.静态库的制作:先编写.c 与.h 文件,在编写makefile使之生成.o 文件,在把所有的.o文件打包,这样就形成了静态库。(1)编写.c .h文件(2)编写makefile,生成.o 文件并打包称为静态库编写完成后,我们在命令行执行(make)所有文件已经生成libmath.a:就是我们打包好的静态库。(3)使用静态库首先把所有的.h 文件与 静态库.a 文件一起打包创建一个friend 目录,将打包好的文件传给friend目录。

2022-05-01 20:19:08 369

原创 C++ string 模拟

#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<string>#include<assert.h>using namespace std;namespace mystring{class string{public: //static int npos; typedef char* iterator; typedef const char* const_itera...

2022-04-30 16:00:14 936

原创 this指针 c++

在执行任何成员函数时,该成员函数都会包含一个隐藏的指针,称为this指针,该指针包含调用该成员函数的对象的地址。函数volume()中的this指针就包含Box的地址,在为另一个Box对象调用该函数时,this指针就被设置为包含该对象的地址。一般情况下:this指针可以显示调用,也可以隐式使用。在返回对象的地址时,需要显示使用this指针。静态成员函数不包含this指针。从函数中返回this指针...

2022-04-30 15:56:02 1111

原创 引用与指针

1.引用的概念引用是一个名称,可以作为某对象的别名。显然,在引用指向内存中的其他内容时,它必须类似与指针,但它与指针大不相同。与指针不同,不能声明引用但不初始化。因为引用是一个别名,所以在初始化引用时,必须提供另外一个对象,使用引用成为该对象的别名。另外,引用不能修饰为另一个对象的别名。一旦将引用初始化为某个变量的别名,在引用的生命周期中,就一直引用该变量。2.引用的用法(1)对于变量的引用对一段空间,赋予两个及以上的名字,任何名字都可以对空间中的值进行修改。我们对b的值进.

2022-04-30 15:37:21 815

原创 二叉搜索树

1.二叉搜索树的概念二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。二叉搜索树作为一种经典的数据结构,它既有链表的快速插入与删除操作的特点,又有数组快速查找的优势;所以应用十分广泛,例如在文件系统和数据库系统一般会采用这种数据结构进行高效率的排序与检索操作。2

2022-04-30 10:55:45 81

原创 多态 C++

{1.理解多态2.纯虚函数}1.理解多态(1)多态的概念多态性是许多面向对象语言提供的一种能力。多态性总是要在调用成员函数是使用对象的指针或者引用基类指针的作用。多态性仅用于共享一个公共基类的类层次结构。(2)虚函数把一个函数加上声明virtual限定符,就是虚函数。使用对象调用虚函数总是进行静态解析。只有通过指针和引用调用的虚函数,才会动态解析。多态就是不同的人完成同一件事情,但是会得到不同的结果。实现多态的要求:基类与派生类中要有一个返回值相同,函数名相同,

2022-04-27 22:50:12 1372

原创 继承 c++

{1.类的继承概念的解释2.函数隐藏3.赋值兼容4.多种继承方式5.函数的使用(构造函数,析构函数,拷贝构造函数,赋值运算符重载函数)}1.类的继承概念解释:假定有一个类A,要创建一个新类B,它是类A的一个特殊版本。类A就称为基类,类B则称为派生类。类A是父,类B就是子。基类一般称为父类,派生类一般称为子类。派生类继承了基类的成员函数与成员变量(但有使用限制)。2.对于子类通常会有3种访问限定符:public protected private.访问限定符是子类在使用父类

2022-04-26 18:36:24 590

原创 常见排序(2)

二:希尔排序:希尔排序可以看作是在直接插入排序上的改进,希尔排序为多次 预排序+直接排序。

2021-11-27 20:47:23 648

原创 常见排序问题

一.直接插入排序直接插入排序的思路:排升序如何向数组中插入一位数字:(1)先给定一组排序好的数组,a[5]={1,3,4,6,7}; 在向数组中插入一位数 x=2时,我们把数组中a[4]=7的位置标记为end位 (2)将我们要插入的数据x=2与end位的数据进行比较,如果x=2小于a[end] ,那么就将a[end]的数据移到a[end+1]的位置上.(3)再将end--,将a[end]的数据再次与2比大小,如果还是x=2小于a[end],那么就重复上面的方法(移end 的位置),如果2大于a[e.

2021-11-20 19:46:43 861

原创 文件如何操作?

C语言为文件提供了独特的函数,我们如何操作他们呢?首先建立一份文件。1.函数原型FILE *fopen(const char *filename, const char *mode);参数 filename-- 这是 C 字符串,包含了要打开的文件名称。 mode-- 这是 C 字符串,包含了文件访问模式。 "w"以只写的形式打开一个文件时,会先将原有内容删除,然后再写入,如果文件不存在,可以自动创建文件。 "r"以只读的形式打开一个文件,文件不存在,不可以自动创..

2021-10-04 22:22:07 190 1

原创 指针进阶(一)指针数组

一:指针数组指针数组用来存储指针,指针数组中的元素都必须具有相同的存储类型、指向相同数据类型的指针变量。指针数组的形式以整型为例int *p[]: []的优先级高于*,所以p先与[]结合,表示数组,int *表示p[]中所存放数据的类型。我们如何使用指针数组呢?首先我们先定义几个变量,int a=10;int b=20;int c=30; 分别将a,b,c进行取地址存放在int *d[3] 中;如图所示。我们将指针存放进指针数组中后,如何取出来呢?...

2021-09-12 20:47:38 583

原创 关于qsort函数的应用

qsort函数C语言编译器函数库自带的排序函数。qsort 的函数原型是void qsort(void*base,size_t num,size_t width,int(__cdecl*compare)(const void*,const void*));使用qsort 函数需要引入头文件#include<stdlib.h>.void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, co.

2021-09-05 19:15:27 107

展板.ai

展板.ai

2023-05-26

空空如也

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

TA关注的人

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