- 博客(20)
- 资源 (4)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Linux下线程同步机制(吐血整理)
线程同步资源竞争线程同步1. 互斥锁2. 读写锁3. 自旋锁4. 信号量5. 条件变量6. 屏障资源竞争当进程中的多个线程,同时读取一块内存数据,与此同时其中一个或多个线程修改了这块内存数据。这样就会导致不可预期的结果因为线程不安全引起的错误往往非常难发现,因为这种现象是不能稳定复现的。下面举个例子:#include <stdio.h>#include <string.h>#include <pthread.h>int g = 0;//1000000
2020-09-12 19:57:49
3084
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 virtualbox:如何设置共享文件夹以及可能会遇到的问题
假设将Windows下的share文件夹作为共享文件夹。设置好共享文件夹之后,进入虚拟机,共享文件夹的地址是/media/sf_share。但是进入该文件夹时,会发现共享文件夹无法访问,系统提示的原因是权限不足(Permission denied)。在虚拟机下查看共享文件夹的属性,发现该目录的所有者是root,所属组是vboxsf。而一般而言我们登录的用户和所属组都是(你的用户名),所以确实没有权限。...
2020-08-23 14:10:28
9456
2
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 高效强大的程序调试工具——gdb(基本命令用法详解)
一、GDB概论 gdb是GNU debugger的缩写,是编程调试工具。 UNIX及UNIX-like(Linux)下的调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果 你是在 UNIX平台下做软件,你会发现GDB这个调试工具相比于VC的优点是具有修复网络断点以及恢复链接等功能,比BCB的图 形化调试器有更强大的功能。所谓"尺有所
2020-08-23 11:35:24
2418
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 应届毕业生面试必考:十种经典排序总结(C语言实现)
十大排序算法可以说是每个程序员都必须得掌握的,对于毕业生,掌握十种排序也能在面试中加分不少。因此我花了一天的时间将十种排序进行整理,并且附上代码以供大家学习。十大排序1. 冒泡排序2. 选择排序3. 插入排序4. 希尔排序5. 堆排序6. 归并排序7. 快速排序8. 计数排序9. 基数排序10. 桶排序1. 冒泡排序冒泡排序算法的思路如下:(1). 比较相邻的元素,如果前一个比后一个大,就交换他们两个。(2).
2020-08-16 13:00:16
987
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 C语言课程设计:图书管理系统(动态内存 + 文件存储数据)
readerme.txt中详细介绍了该图书管理系统的功能,并且介绍每个.c文件所有函数都有详细的批注,希望大家多多支持~~~~~~链接:https://pan.baidu.com/s/1Q-uUHyIUge23Mky80buHaQ提取码:4yic
2020-08-01 20:54:36
706
原创 哲学家就餐问题(条件变量)
1965年,著名计算机科学家艾兹格·迪科斯彻,提出并解决了一个他称之为哲学家就餐的同步问题。 从那时起,每个发明同步原语的人,都希望通过解决哲学家就餐问题来展示其同步原语的精妙之处。这个问题可以简单地描述如下: 五个哲学家
2020-09-12 20:20:08
731
原创 linux环境高级C语言知识整理:共享内存
四、共享内存1.基本特点(1) 两个或者更多进程,共享同一块由系统内核负责维护的内存区域,其地址空间通常被映射到堆和栈之间。(2) 无需复制信息,最快的一种IPC机制。(3) 需要考虑同步访问的问题。(4) 内核为每个共享内存,维护一个shmid_ds结构体形式的共享内存对象。2.常用函数 #include <sys/shm.h>(1) 创建/获取共享内存int shmget (key_t key, size_t size, int shmflg);A. 该函数以key参数
2020-09-06 13:57:18
393
原创 Linux:静态库和共享库的生成与调用
库1.合久必分——增量编译——易于维护,分久必合——库——易于使用。2.链接静态库是将库中的被调用代码复制到调用模块中, 而链接共享库则只是在调用模块中,嵌入被调用代码在库中的(相对)地址。3.静态库占用空间非常大,不易修改但执行效率高。共享库占用空间小,易于修改但执行效率略低。4.静态库的缺省扩展名是.a,共享库的缺省扩展名是.so。静态库创建静态库编辑源程序:.c/.h编译成目标文件:gcc -c xxx.c -> xxx.o打包成静态库文件:ar -r libxxx.a x
2020-09-06 13:41:02
257
原创 头文件定义的定位方式
环境变量C_INCLUDE_PATH - C头文件的附加搜索路径,相当于gcc的-I选项CPATH - 同C_INCLUDE_PATHCPLUS_INCLUDE_PATH - C++头文件的附加搜索路径LIBRARY_PATH - 链接时查找静态库/共享库的路径LD_LIBRARY_PATH - 运行时查找共享库的路径通过gcc的-I选项指定C/C++头文件的附加搜索路径:# gcc calc.c cpath.c -I.将当前目录作为C
2020-09-06 12:14:28
283
原创 经典题型:整数分解(堆栈)
stack.h#ifndef _STACK_H__#define _STACK_H__#include <stdio.h>#include <stdbool.h>#include <stdlib.h>enum DIRE{R,D,L,U,N};typedef struct Pos{ int x; //行 int y; //列 enum DIRE dire;//方向}Pos;//typedef Pos T;typedef int T;t
2020-08-09 13:44:12
278
原创 经典题型:走迷宫(堆栈)
stack.h#ifndef _STACK_H__#define _STACK_H__#include <stdio.h>#include <stdbool.h>#include <stdlib.h>enum DIRE{R,D,L,U,N};typedef struct Pos{ int x; //行 int y; //列 enum DIRE dire;//方向}Pos;//typedef Pos T;typedef int T;t
2020-08-09 13:34:32
252
原创 数据结构小笔记:二叉搜索树
1. 定义定义:二叉查找树(Binary Search Tree),又被称为二叉搜索树。设x为二叉查找树中的一个结点,x节点包含关键字key,节点x的key值记为key[x]。如果y是x的左子树中的一个 结点,则key[y] <= key[x];如果y是x的右子树的一个结点,则key[y] >= key[x]。在二叉查找树中:(01) 若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;(02) 任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;(03
2020-08-09 13:08:12
232
原创 C语言小笔记——万能排序
#include <stdio.h>#include <string.h>#include <stdlib.h> typedef struct Stu{ int no; char name[40]; int score[3];}Stu;/* 函数功能:排序(万能排序) 形参列表: void *base:数据起始位置 size_t nmemb:数据的个数 size_t size:每个元素的字节大小 int (*compare)(con
2020-08-02 12:24:59
346
原创 C语言基础之结构体小练习——学生成绩管理系统
定义一个学生的结构体:学号 姓名 三门功课成绩输入10个学生信息 保存在动态内存中1.按学号升序显示2.按总成绩降序显示,如果总成绩一样,按照学号升序显示3.输入一个学号,删除该学生4.输入两个学生信息 添加到内存中(扩容)#include <stdio.h>#include <string.h>#include <stdlib.h>#define N 3typedef struct Stu{ int no;//学号 char name[40]
2020-07-25 20:37:35
469
原创 C语言小笔记——结构体
1. 结构体介绍char name[40]; //姓名char *name = malloc(40);int age; //年龄int score[3];变量与变量之间没有关联数据传递比较复杂结构体是一种自定义类型,与数组不同的是它可以存放不同类型的一组变量,而数组只能存同类型的一组变量。结构体需要定义,定义类型:struct 类名{类型 成员名;//定义结构体类型时 不能对成员进行赋值(初始化)…};在结构体内部定义的变量 称为 成员变量2. 定义结构体变量结构体类型
2020-07-25 20:13:08
292
原创 经典题型之回溯算法——八皇后问题
题目:在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法,并把每一种结果打印出来。#include <stdio.h>//判断能不能在cnt行第col列摆放一个皇后 能返回1 不能返回0int judge(int queens[],size_t n,size_t row,size_t col){ int i = 0; //遍历当前皇后的位置是否符合条件 for(i=0;i<row;i+
2020-07-18 20:48:34
250
原创 C语言小笔记——指针
C++ 引用(底层是指针) C语言程序在内存中的分布 4G的虚拟内存空间 编号:0x0000 0000 - 0xffff ffff4G = 2^2 * 2^30 byte = 2^32 byte 一个地址只能存储1byte数据
2020-07-18 19:53:57
280
原创 求10000!的阶乘末尾一共有多少个0
结果中的 0 是如何产生的呢?1.有些数字本身含有 0 ,例如数字10、20、30…2.数字(10的整数倍以外的数字)相乘结果得到10的倍数,如尾数为2、4、6、8的数字与5相乘而每一个10的整数倍的数字都可以写成 5*k 的形式那么10000! = 1∗2∗3∗4∗5∗......∗10∗......∗15∗......∗20∗......∗25∗......∗30∗......∗35∗......∗40∗......∗45∗......∗50∗..............∗100001*2*3
2020-07-12 10:45:09
3206
原创 C语言小笔记——sizeof内存宽度运算符
sizeof 定义sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。sizeof 操作数可以是 数值、变量、表达式、类型。sizeof 的用法1. sizeof(表达式) sizeof只关心内存宽度,不计算表达式。2. 表达式如果是一个混合类型 虽然不计算表达式 但结果取内存宽度最大的值。3. 表达式在进行计算时数据会进行转换:char->int short->intunsigned char --> un
2020-07-12 09:26:03
1368
3
68个内置函数.htm
2020-08-29
python基础模块及内置函数.zip
2020-08-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人