- 博客(18)
- 收藏
- 关注
原创 SVN版本升级,本地文件不可更新
两步:1、安装最新版本SVN后重启计算机(必须)2、右键要更新的文件,点击SVN Upgrade Working Copy
2020-11-11 13:45:31
346
原创 排序算法自我总结
最近在复习,总会遇到一些关于排序算法的问题,所以最近抽了点时间,对常用的几种排序算法进行了一点总结;其中包括最简单的冒泡排序,直接选择排序,直接插入排序,插入排序的进化版:希尔排序,堆排序,最常用的快速排序,还有递归,二分的典型运用:归并排序(并轨排序,合并排序)。排序算法,每个人都有每个人的实现方法,但是大体思想是一致的,在此就将自己的想法分享给大家。接下来,我将从思想,时间复杂度,稳定性以及实...
2018-05-03 18:09:48
243
原创 设计模式之一:单例模式
好久不写博客,最近都在复习,心血来潮,写一篇关于设计模式--单例模式的博客。。。。我们知道,对于C++OOP思想,我们怎么可以说不熟悉设计模式,接下来就简单地介绍一下单例模式。在我们的设计当中经常要保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例。思考一下,什么时候构造函数不能手动调用?答:自然是将构造函数私有化;再思考,构造函数私有化了,我们如何将我们的对象构造呢?答:提供...
2018-04-30 21:00:19
173
原创 函数/代码的安全与volatile
我们在写代码的时候,常常会遇到一些代码安全方面的问题什么时候会不安全?我们只知道当内存占用量越来越大的时候,函数的运行难免都会出现一些问题我将函数不安全问题大体分为三类:1、访问无效内存,资源未释放那么要问了,什么叫做无效内存个人认为,这里所说的访问无效内存,也就是我们平时遇到的未定义变量,指针未初始化,访问空指针,溢出的数组,栈等等;最常见的应该就是我们在malloc如果
2017-10-26 15:20:07
233
原创 const与重载
最近在学习重载函数,所以在这里总结一下:看到重载二字,我们不由想起几个问题:什么叫函数重载?为什么要用函数重载?函数重载为什么不需要考虑返回值类型?函数重载的条件有哪些?接下来一一解答:1、什么叫函数重载,为什么要用函数重载:函数重载就是在同一作用域内,函数名相同,参数列表不同的几个函数(不要求返回类型);重载函数通常用来命名一组功能相似的函数,这样做减少了函数名的数量
2017-10-25 17:51:52
206
转载 指针和引用的区别
指针在引用变量的时候需要加& 或*不够方便而定义一个引用,就相当与给变量起了个别名,在引用变量是只需要通过别名就可以直接引用对应变量指针不确定有无初始化过其变量的值引用不存在这个问题,要考虑同名的问题基本上两者一样,看你用在什么方面了方便.变量一样的用法, 指针一样的功能.指针可以不用初始化,引用是一个变量的别名,在定义时必须指定某个变量。而且,引用作为类成
2017-10-21 11:34:34
156
原创 进程间通信-管道
进程间通信: 管道,信号量,存储空间,消息队列,套接字(SOCKET,网络编程)在我们学习进程间通信之前,我们在进程之间都是用什么来进行数据传递的?显而易见,我们使用的是文件。不过我们的文本文件一般都是存储在磁盘中,所以我们在使用时,必须先把数据从磁盘中读取到内存中,然后cpu从内存中读取并做相应的处理。我们自己来感觉,这种方式是不是很浪费时间。所以我们就衍生出了第一种进程间通信的方
2017-10-18 09:57:37
165
原创 函数栈帧的调用过程
初学者,个人总结,不介意做参考说到函数栈帧的调用过程,我们应当首先了解一下以下内容:一、堆和栈首先要清楚的是程序对内存的使用分为以下几个区:l 栈区(stack):由编译器自动分配和释放,存放函数的参数值,局部变量的值等。操作方式类似于数据结构中的栈。l 堆区(heap):一般由程序员分配和释放,若程序员不释放,程序结束时可能由操作
2017-10-16 14:51:01
282
原创 GCC编译程序的过程
GCC、编译的过程大致可以分为:预处理,编译,汇编,生成可重定位目标文件,链接,生成可执行文件六个步骤;下面我将一一解答。一、预处理预处理又叫做预编译,我们想了解的也就是这个阶段到底做了一些什么: 1、将所有的#define删除,并且展开所有的宏定义,也就是我们常说的宏替换;2、处理所有条件的预编译指令,比如:"#if" "#ifdef" "#endif"等
2017-10-14 13:04:37
357
原创 信号量基本操作函数用法
int semget(key_t _key ,int _nsems,int _semflg);功能:创建一个新的信号量或获取一个已经存在的信号量的键值。返回值:成功返回信号量的标识码ID。失败返回-1;参数:_key 为整型值,用户可以自己设定。有两种情况:1. 键值是IPC_PRIVATE,该值通常为0,意思就是创建一个仅能被进程进程给我的信号量。2. 键值不是IPC_P
2017-10-03 11:54:37
2899
转载 linux进程如何捕捉信号
linux中一共有32种信号,在/usr/include/bits/signum.h 头文件中可以看到#define SIGHUP 1 /* Hangup (POSIX). */#define SIGINT 2 /* Interrupt (ANSI). */#define SIGQUIT 3 /* Q
2017-09-29 19:11:43
1533
转载 程序,进程,作业之间的区别和联系
程序与进程之间的区别:(1)进程更能真实地描述并发,而程序不能。(2)进程由程序和数据两部分组成,进程是竞争计算机系统有限资源的基本单位,也是进程处理机调度的基本单位。(3)程序是静态的概念;进程是程序在处理机上一次执行的过程,是动态的概念。(4)进程有生存周期,有诞生有消亡。是短暂的;而程序是相对长久的。(5)一个程序可以作为多个进程的运行程序;一个进程也
2017-09-29 19:09:40
17930
原创 写时拷贝技术
COW技术初窥: 在Linux程序中,fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于效率考虑,linux中引入了“写时复制“技术,也就是只有进程空间的各段的内容要发生变化时,才会将父进程的内容复制一份给子进程。 那么子进程的物理空间没有代码,怎么去取指令执行exec系统调用呢? 在fork之后exec之
2017-09-29 18:46:32
162
原创 线索二叉树
#include#include#includetypedef char ElemType;typedef enum{ LINK = 0, THREAD = 1 }PointTag;typedef struct BiThrNode{BiThrNode *leftchild;BiThrNode *rightchild;ElemType data;Po
2017-09-28 19:32:15
188
原创 int main (int argc ,char *argv[])
argc是命令行总的参数个数 argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数 命令行后面跟的用户输入的参数,char *argv[]是一个字符数组,其大小是int argc,主要用于命令行参数 argv[] 参数,数组里每个元素代表一个参数;比如你输入 test a.c b.c t.c 则
2017-09-25 11:03:18
186
原创 二叉树
#include"My_Tree_wxx.h"BinaryTree * Buy_Node(){BinaryTree *s = (BinaryTree *)malloc(sizeof(BinaryTree));if (NULL == s) exit (1);memset(s, 0, sizeof(BinaryTree));return s;}
2017-09-24 09:21:40
193
原创 my_bash
#include #include #include #include #include #include #include #include #define LEN 10char* Cmd[LEN] = {0};int count = 0;char OLDPWD[1024] = {0};void out_flag(){
2017-09-23 18:26:54
596
原创 排序
#include "sort.h"#include #include void swap(int *p,int *q){int temp = *p;*p = *q;*q = temp;}void swap_sort(int arr[],int len){int count = 0;for (int i=0;i{
2017-09-23 18:20:05
119
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人