- 博客(32)
- 收藏
- 关注
原创 命名空间namespace
C++ 是在 C 的基础上开发的,早期的 C++ 还不完善,不支持命名空间,没有自己的编译器,而是将 C++ 代码翻译成 C 代码,再通过 C 编译器完成编译。需要注意的是,旧的 C++ 头文件是官方所反对使用的,已明确提出不再支持,但旧的 C 头文件仍然可以使用,以保证对 C 的兼容性。但这时已经有很多用老的 C++ 开发的程序了,它们的代码中并没有使用命名空间,直接修改原来的库会带来一个很严重的后果:程序员会因为不愿花费大量时间修改老的代码而极力反抗,拒绝使用新的 C++ 标准。
2022-11-27 17:07:43
641
1
原创 2021.11.4
Linux下,线程和进程区别不大,都有task_struct进程描述符。多线程进程可以看作是几个共享地址空间的进程的集合。但多线程一定是由一个主线程开始,这个主线程启动其他线程。主线程的线程栈在内核空间位置附近,大小为8MB,其他线程的线程栈是主线程在调用pthread_create创建线程时,由mmap分配的,所以这些线程栈在mmap的区域内,跟共享库入口同属一个区域,phtread_t tid中存储的就是线程结构体在mmap区域中的入口。普通线程栈的默认大小也是8MB,但是因为是动态分配的,所以可以在线
2021-11-04 15:36:26
161
原创 hello world 如何打印到屏幕上的
我们编写的第一个c语言程序,hello world,程序编译 运行,最终输出到屏幕上,那这个底层到底是如何在计算机内部流转的呢???假设此时 我们已经编译生成了一个hello文件,我们要./hello运行它,那具体的操作就是,我们先通过i/o输入设备–键盘,输入./hello,然后通过总线传到i/o桥,通过i/o桥数据来到cpu,先通过寄存器,再在alu中计算又回到寄存器,通过i/o桥数据到达内...
2020-04-22 10:45:46
1446
原创 文件的原子操作
每个进程的维护Linux下时task_struct ,其中有一个记录项,记录项是一个文件指针,指向一个文件描述符表,文件描述表相关联的是文件文件描述符标志和指向文件表项的指针内核为所有打开的文件维护一张文件表项,与之相关连的是文件状态标志,当前文件偏移量,指向该文件v节点的指针每个打开的文件都有一个v节点结构,v节点包含了文件类型对文件进行各种操作的函数,例如open,write等等,i 节...
2019-12-19 20:13:09
362
原创 open write read
open#include<fcntl.h>int open(const char *pathname, int flags, mode_t mode)flags有三个必须选项 O_RDONLY, O_WRONLY, O_RDWR 只读,只写,读写flags其他选项O_CREAT, O_APPENDO_CREAT 这个参数必须和第三个参数mode一起使用,mode指定文件的访...
2019-12-19 18:08:19
219
原创 sleek
lseek#include <unistd.h>off_t lseek(int fd, off_t offset, int whence);lseek 函数,就是改变 flip[fd] 指向的 struct file 这个结构中的 f_pos 成员的。当用 open 函数打开一个文件的时候,该偏移量 f_pos 被默认指定为 0。whence:它的选项如果 whence 等...
2019-12-19 18:05:11
441
原创 你是如何和你的他(她)聊QQ的
冯诺依曼计算机结构体系,输入设备,存储器,中央处理器(控制器和运算器),输出设备 当你在键盘上输入“hi girl”的时候,键盘发出一个硬件中断,把字符串存储在计算机内存当中,内存把该字符串给中央处理器,CPU为该数据报加上应用层的报头,向下交付,再加上传输层报头,使你发送的报文安全到达,以至于不在传输的途中丢失,再向下交付,加上网络层报头,cup处理完数据,加载到内存中,把IP数据报发送给网卡...
2018-07-14 21:41:57
182
原创 什么是进程
首先说一下程序和进程的区别 存储位置不同:程序存储在硬盘当中,进程则是从硬盘加载到内存之中 资源分配不同 : 创建进程操作系统要为进程分配相应的资源,内存,页表,I/O设备,cpu,而程序例如一个c文件或c生成的可执行程序,都只是占用硬盘外设资源 程序加载到内存并为其分配相应的资源才变成进程,既然是进程就有并发性,而程序没有,一个动态观念,一个静态观念描述进程有一个概念交进程描述符PCB...
2018-07-14 21:38:47
1306
原创 堆排序
HeapSort(Heap *heap, size_t array[], size_t size ); 功能:传入一个数组给这个数组排序 思路:把数组中的元素一个一个的插入到堆中,然后在依次擦除,为甚么能这么做?因为我们对堆顶元素删除时, 是把堆顶元素和堆尾元素对调位置,size–,如果是大堆,最大值就跑到数组最后边,为升序排列,如果 是小堆,...
2018-05-15 13:28:53
117
原创 进程如何从硬盘找到对应文件
struct task_struct {volatile long state; //说明了该进程是否可以执行,还是可中断等信息unsigned long flags; //Flage 是进程号,在调用fork()时给出int sigpending; //进程上是否有待处理的信号mm_segment_t addr_limit; //进程地址空间,区分内核进程与普通进程在内存存放的...
2018-05-13 22:32:45
475
原创 浅析文件系统
再说文件系统之前,先说一下存储文件的硬件设备——硬盘,硬盘是由一个一个的盘片组成,盘片就跟我们见到的光盘一样,一个盘片又由两个面组成,叫做盘面,每个盘面有一个编号从上到下从0开始,盘面上有一条条的磁道,磁道是一个一个的同心圆从外向内也是从0开始顺序编号,这些同心圆并不是连续的记录数据,而是划分成一段一段的圆弧,每个圆弧叫做一个扇区,扇区从1开始编号,一般扇区的大小为512kb,于是我们就想,是不是...
2018-05-12 17:09:47
166
原创 链表逆置
1 #include<stdio.h> 2 #include<stdlib.h> 3 typedef struct LinkNode 4 { 5 int data; ...
2018-04-30 16:39:55
139
原创 二分查找和斐波拉契
二分查找 3 int binary_search(int *a,int len,int value) 4 { 5 int low,high,mid; 6 low=0; 7 high=len-1; 8 while(low<=high) 9 { 10 mid=(low+high)/2; 11 ...
2018-04-30 16:32:27
144
原创 求最短路径迷宫
迷宫源码 1 #include <stdio.h> 2 #include<stdlib.h> 3 #include"stack.h" 4 #define ROW 6 5 #d...
2018-04-30 16:29:02
265
原创 用栈实现迷宫
迷宫源代码 1 #include <stdio.h> 2 #include"stack.h" 3 #define ROW 6 4 #define LOW 6 5 6 //typede...
2018-04-30 16:24:04
359
原创 递归版迷宫求解
最初级版密宫 1 #include <stdio.h> 2 #include<stdlib.h> 3 #define ROW 6 4 #define LOW 6 5 t...
2018-04-30 16:18:45
294
原创 树的基本操作
树的基本操作1 #include <stdio.h> 2 #include"queue.h" 3 #include<stddef.h> 4 #include<stdlib.h> 5 //typedef char TreeType; 6 //typedef struct TreeNode ...
2018-04-30 16:13:19
235
原创 顺序队列的实现
顺序对列头文件 1 #pragma once 2 #include<stdlib.h> 3 #include <stdio.h> 4 #include<stddef.h> 5 #define MAX_SIZE 100 6 7 typedef char TreeType; 8 typedef struct TreeNode ...
2018-04-30 16:08:57
257
原创 顺序栈的实现
顺序栈头文件 1 #include <stdio.h> 2 #include <stdlib.h> 3 #define MAX_SIZE 1 4 typedef int stackType; 5 typedef struct StackNode ...
2018-04-30 16:02:09
148
原创 循环双链表的头插尾插等操作
“DLinkList.h”#include<stdio.h>#include<stdlib.h>typedef char DLinkType;typedef struct DLinkNode { DLinkType data; struct DLinkNode* next; struct DLinkNode* prev;} DLink...
2018-04-08 19:07:05
610
原创 单链表基本算法
#include<stdio.h>#include<stdlib.h>typedef int LinkType;typedef struct LinkNode{ LinkType data; struct LinkNode *next;}LinkList;//链表初始化void Linklistinit(LinkList **head){...
2018-04-06 17:48:18
663
原创 打印三角形判断括号是否成对
#include<stdio.h>#include<iostream>/*在屏幕上输出以下图案:**************************************************************************************/void print_g(){ for (int i = ...
2018-04-05 23:09:13
331
原创 求1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100
c的小程序回顾#include<stdio.h>#include<string.h>//求1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值。void solve(){ double sum=0; for (int m = 1; m <= 100; m++) { if (m%2==0)...
2018-04-05 16:29:23
648
原创 两数交换和最大公约数求解
两数交换的三种方法,以及求最大公约数的两种方法#include<stdio.h>//交换两个数方法1void swap1(int *a, int *b){ int tmp; tmp = *a; *a = *b; *b = tmp;}//交换两个数方法2void swap2(int *a, int *b){ *a = *a + *...
2018-04-05 15:39:04
158
原创 素数求解等小程序
c语言的小程序#include<stdio.h>#include<math.h>//素数求解void print_prime(int n,int m){ int j, i; for (i = n; i <= m; i++) { for ( j = 2; j < i; j++) { ...
2018-04-04 23:37:37
183
原创 进程创建 进程终止 进程等待
前面了解了什么是进程,那如何创建一个进程呢? 那就要提到两个函数fork()和vfork() fork()函数有两个返回值,子进程返回子进程的pid和0,父进程返回父进程的pid和子进程的pid vfrok()函数和fork()返回值一样,不同之处是子进程和父进程共享地址空间,fork的子进程具有独立的地址空间,而且vfork保证子进程先运行在它调用exec或exit之后父进程才能被调度运行...
2018-04-04 14:45:32
259
原创 进程及task_struct
进程就是正在运行的程序,程序经过键盘输入或硬盘拷贝加载到内存,cpu和内存是双向交互,cpu对数据进行处理计算,在返还给内存,内存中的数据再通过输出设备输出。 举个栗子:我们在一个文件中写的过程,首先操作系统把程序从硬盘加载到内存,cpu执行读写文件的代码,写入文件,完成后再加载到内存,再通过显示器输出。 一个进程就是一个运行着的程序,计算机不可能只运行一个进程,这样就会对资源的浪费,但计算机...
2018-04-03 22:37:24
134
原创 Linux基本命令
linux 常用命令的一些总结 总结可以用四个字概括(当然基本操作啦^-^) 那就是“增”“删”“改”“查” 增—>就是 1.文件的创建 touch 文件名1 文件名2 2.目录的创建 mkdir 目录名1 目录名2 删->就是 1.文件的删除 rm [-f -r] 文件名 rm也可以删除目录 2.目录的删除 rmdir [-f -r] 目录名 改->就是 1...
2018-04-03 22:15:25
108
原创 进程及进程描述符
进程就是正在运行的程序,程序经过键盘输入或硬盘拷贝加载到内存,cpu和内存是双向交互,cpu对数据进行处理计算,在返还给内存,内存中的数据再通过输出设备输出。举个栗子:我们在一个文件中写的过程,首先操作系统把程序从硬盘加载到内存,cpu执行读写文件的代码,写入文件,完成后再加载到内存,再通过显示器输出。一个进程就是一个运行着的程序,计算机不可能只运行一个进程,这样就会对资源的浪费,但计算机同时...
2018-04-03 21:42:39
382
原创 顺序表基本操作及冒泡排序
在前面顺序表基础上加上冒泡排序#include<stdio.h>#include<assert.h>#include<iostream>using namespace std;#define MAX_SIZE 20typedef struct { int a[MAX_SIZE]; int size;}seqlist;/...
2018-03-28 12:29:42
1895
1
原创 静态顺序表的基本操作
顺序表:尾插,尾删,头插,头删,初始化,查,改等操作源码:------------------------------------------------************************************************#include<stdio.h>#include<assert.h>#include<iostream...
2018-03-28 10:20:17
148
原创 素数打表优化
HDU 4548 美素数Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 8049 Accepted Submission(s): 2771Problem Description 小明对数的研究比较热爱,一谈到数,脑子里就涌现
2018-01-04 15:33:16
219
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人