自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 生产者与消费者模型

利用C++封装一个线程安全的队列,实现生产者与消费者模型

2019-12-09 20:21:39 144 1

原创 Linux多线程

进程与线程的区别/线程属性/线程的同步与互斥...

2019-12-07 17:39:58 113

原创 Linux进程间通信

进程间通信方式/二元信号量PV操作/同步与互斥/生产者与消费者模型...

2019-11-27 16:40:58 129 1

原创 Linux进程信号

信号概念、信号产生、信号处理、信号block,pending、可重入函数...

2019-11-12 23:16:05 91

原创 Linux进程控制之程序替换

程序替换,exec函数簇

2019-11-11 21:49:27 139 1

原创 Linux关于文件IO操作与动静态库

open/read/write/close等文件相关系统调用接口,fd与FILE结构体,动/静态库的打包与使用...

2019-11-06 22:27:39 151

原创 Linux进程控制

学习进程创建, 等待, 终止. 使用代码实现.编写自主shell.封装fork/wait等操作, 编写函数 process_create(pid_t* pid, void* func, void* arg), func回调函数就是子进程执行的入口函数, arg是传递给func回调函数的参数.调研popen/system, 理解这两个函数和fork的区别....

2019-11-05 17:00:01 155

原创 Linux进程概念

进程的调度算法、task_struct结构体、代码模拟实现僵尸进程/孤儿进程

2019-10-25 22:53:29 117

原创 Linux下实现简单进度条程序

在Linux下实现进度条程序

2019-10-19 22:19:41 94

原创 Linux下软件安装

Linux下软件安装的几种方式

2019-10-13 22:23:38 106

原创 Linux常用工具

软件包管理工具yum查看软件包:yum list(yum list installed 查看已安装的软件包)安装软件包:yum install 软件包名称 (root用户可操作)移除软件包:yum remove package_namelrzsz:Linux服务器和window互传文件工具,只能在XShell中使用。编程相关工具编辑器vimvim有12中模式,常见的有三种:插入模式...

2019-10-11 23:08:27 167

原创 Linux基础指令

一些基本命令命令构成:命令名称 [操作选项] [操作对象]目录相关命令ls:浏览目录内容,默认查看当前所在目录;登陆成功之后,会默认处于该用户的家目录中。-a:显示指定目录下的隐藏文件,以.开头的文件是隐藏文件。-l:显示详细信息,详细信息中的第一列的第一个字母标示文件类型:字母文件类型d目录类型-普通文件l符号链接文件c字符设备文件...

2019-10-09 21:07:53 146

原创 C++模板浅析

模板

2019-09-28 23:31:28 126

原创 C/C++内存管理

内存管理

2019-09-27 23:33:27 98

原创 只出现一次的数字

I给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。算法具有线性时间复杂度,不使用额外空间。class Solution {public: int singleNumber(vector<int>& nums) { int ret=0; for (int i = 0; i &lt...

2019-09-22 22:56:59 70

原创 非比较排序算法之计数排序

计数排序基本思想计数排序是一个非基于比较的排序算法,又称为鸽巢原理,是对哈希直接定址法的变形应用,该算法于1954年由 Harold H. Seward 提出。它的排序思想是:首先统计相同元素的个数,然后将个数存储在用于计数的数组的相应下标位置内,最后根据统计的结果将序列再次回收到原来的序列之中。排序过程首先遍历待排序序列,在遍历的同时统计相同元素的出现次数,然后将统计的次数存储到用于计数...

2019-08-09 22:00:32 278

原创 排序算法之归并排序

归并排序基本思想归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。利用将已有序的子序列合并,得到完全有序的序列进行排序;即先使每个子序列有序,再使子序列段间有序。然后继续进行归并直到最后整个序列有序。排序过程算法首先将待排序序列均分为两部分,然后对于每部分继续均分下去,直到划分为不可分割的...

2019-08-09 21:59:51 278

原创 排序算法之快速排序

快速排序基本思想快速排序(Quicksort)是对冒泡排序的一种改进。它由C. A. R. Hoare在1960年提出,是一种二叉树结构的交换排序方法。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,设立一个关键字,其中一部分的所有数据都比关键字小,另外一部分的所有数据都比关键字大,然后再按此方法对这两部分数据分别进行快速排序,直到达到整个数据变成有序序列。排序过程快速排序的...

2019-08-06 22:25:35 516

原创 排序算法之冒泡排序

冒泡排序基本思想冒泡排序(Bubble Sort),是一种较简单的排序算法。它的基本思想是:重复地走访过要排序的元素列,依次比较两个相邻的元素,如果它们的顺序错误就把它们交换过来。重复进行这个过程直到没有相邻元素需要交换,就说明已经排序完成。排序过程每一趟比较过程会依次比较两个相邻元素的大小关系,并且如果大小关系不符合排序要求则通过交换改变位置,然后就会将最大或最小元素交换到序列的最后一位...

2019-08-05 16:56:27 97

原创 排序算法之堆排序

堆排序基本思想堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序排升序需要建立一个大顶堆,而排降序则需要建立一个小顶堆。排序过程以排升序为例,首先将需要排列的元素序列建立成一个大顶堆,堆顶的元素即为整个序列中的最大值,然后将堆顶元素与最后一个元素交换位置,同时...

2019-08-04 22:11:45 115

原创 排序算法之直接选择排序

直接选择排序基本思想排序过程C语言代码实现时间复杂度空间复杂度稳定性

2019-08-03 15:49:33 605

原创 排序算法之希尔排序

希尔排序基本思想希尔排序(Shell’s Sort)是插入排序的一种,又称“缩小增量排序”,是直接插入排序算法的一种更高效的改进版本。该方法因D.L.Shell于1959年提出而得名。希尔排序法的基本思想是先选定一个整数gap作为初始增量,把待排序文件中所有记录分成gap个组,所有距离为gap的记录分在同一组内,并对每一组内的记录进行直接插入排序。然后,取第二个小于上一个增量增量gap的增量...

2019-08-02 16:52:47 105

原创 排序算法之直接插入排序

直接插入排序基本思想直接插入排序(Straight Insertion Sort)是一种简单的插入排序法,其基本思想是:把待排序的元素依次插入到已排好的有序表中,从而得到一个记录数量增加1的新的有序表,直到所有待排序元素均插入完成为止,此时得到最终的有序序列。排序过程当插入第i(i>=1)个元素时,前面的array[0],array[1],…,array[i-1]已经有序,此时用ar...

2019-08-01 14:55:13 144

原创 几种排序算法性能特点小结

排序算法复杂度及稳定性排序算法平均时间复杂度最坏时间复杂度最好时间复杂度空间复杂度稳定性直接插入排序O(N*N)O(N*N)O(N)O(1)稳定希尔排序O(N^(1.3-2))O(N*N)O(N^1.3)O(1)不稳定直接选择排序O(N*N)O(N*N)O(N*N)O(1)不稳定堆排序O(N*logN)O(N*log...

2019-07-31 00:15:10 152

原创 C语言实现简单扫雷

扫雷扫雷最早是一款1992年发布的小游戏,游戏的目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子,同时避免踩雷,踩到一个雷即全盘皆输。在这里使用C语言实现一下简单的扫雷游戏。首先利用二维数据存储扫雷的格子,...

2019-07-26 17:33:14 140

原创 C语言实现三子棋

三子棋三子棋是指玩家双方在一个3×3的棋盘内落子,首先达成三个棋子连成一条线的玩家则为赢家。这里用C语言实现一下简易的的三子棋游戏代码。首先利用数组存储棋盘,创建一个3×3的数组,内部存储空格表示该位置没有棋子,所以对棋盘进行初始化时将数组内部全部存储为空格:memset(board, ' ', col*row);棋盘初始化之后,每一次的落子都需要对于当前棋盘进行打印,这里利用不同的横线...

2019-07-24 16:53:45 243

原创 时间与空间复杂度

时间复杂度将算法中基本操作的执行次数作为该算法的时间复杂度。大O的渐进表示法实际中计算时间复杂度时,不需要计算精确的执行次数,而只需要大概执行次数,这里使用大O的渐进表示法。大O符号(Big O notation):是用于描述函数渐进行为的数学符号。推导大O阶方法:用常数1取代运行时间中的所有加法常数。在修改后的运行次数函数中,只保留最高阶项。如果最高阶项存在且不是1,则去除与这...

2019-06-27 14:45:40 50

原创 程序的编译连接

编译链接过程程序的两种环境,第1种是翻译环境,在这个环境中源代码被转换为可执行的机器指令;第2种是执行环境,用于实际执行代码。一个程序的源文件经过编译器编译生成目标文件/目标代码,然后经由连接器链接库进行连接生成可执行程序。然后程序就可以运行了,程序执行过程如下:程序载入内存中。在有操作系统的环境中,一般这个由操作系统完成。在独立的环境中,程序的载入须由手工安排,也可能是通过可执行代码置...

2019-06-10 23:12:14 100

原创 自定义类型:结构体/枚举/联合浅析-C语言

结构体结构体声明struct A{ member-list;}variable-list;特殊的声明struct B{ int _a; char _b; float _c;}x;结构体自引用(链表)struct Node{ int data; struct Node* next;};结构体定义struct A a;struct B b1={x, y,...

2019-06-09 23:20:18 116

原创 指针浅析-C语言

指针指针是指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。指针是变量,存放内存单元的地址(编号),地址是唯一标示一块地址空间的。。在32位的机器上,地址是32个0或者1组成二进制序列...

2019-06-09 21:56:27 197

原创 C语言操作符

算数操作符+ - * / %对于+ - * /的操作数可以为整数,也可以是浮点数。对于 / 操作符,如果两个操作数均为整数,则进行整数除法;如果其中一个操作数为浮点数,则进行浮点数除法。对于%操作符的操作数需为整数,计算后返回为两个数整除之后的余数。移位操作符左移操作符<<将操作数在内存储存的补码进行向左移位,移位方式左边抛弃、右边补0。右移操作符>>...

2019-03-31 23:43:41 379

原创 第一篇博客

先做一个简单的自我介绍,目前大二,好奇心旺盛的阶段。感觉编程的目的就是解决生活中的问题,去更好的丰富人们的生活。学习编程也想得到一个满意的工作。学习编程主要还是需要大量的练习,不断地尝试,希望每周可以花费一半的时间去学习编程。目前最想进的IT公司是腾讯,对腾讯的极光计划很感兴趣。...

2019-03-11 23:09:46 139

空空如也

空空如也

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

TA关注的人

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