自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ypt

最初的梦想,终会抵达!

  • 博客(16)
  • 资源 (1)
  • 收藏
  • 关注

原创 排序算法(七大经典排序算法)

排序算法在我们的现实生活中应用非常广泛,我们应该很好的掌握。下面我们将对7种常见算法逐个进行介绍:常见的排序算法:1.插入排序(1)直接插入排序思路分析:思路分析:①在长度为N的数组,将数组中第i  [1~(N-1) ] 个元素,插入到数组 [0~i] 适当的位置上。②在排序的过程中当前元素之前的数组元素已经是有序的了。③在插入的过程中,有序的数组元素,需要向右...

2018-05-26 17:32:14 3551

原创 Linux下查看文件内容的命令和工具

在Linux下如果我们想要查看一个文件里面的内容,除了用编译器将其打开查看之外,Linux还提供了几条命令,可用不用打开文件就能把文件内容输出到显示屏上进行查看。1.catcat命令主要用来查看文件内容,创建文件,合并文件,追加文件等。1.1、查看文件格式:cat 文件名称说明:这条命令会把文件内容全部输出到显示屏上。cat -n 文件名称:查看文件内容,并对每一行进行编号。cat -b 文件名称...

2018-05-26 15:30:09 3524

原创 Linux下的查询命令

1.whichwhich命令是在PATH变量指定的路径中,搜索某个系统命令的位置,并返回第一个搜索结果。也就是说,使用which命令,就可以看到系统命令是否存在,以及执行的到底是哪一个位置的命令。命令格式:which + 可执行文件名称which指令会在PATH变量指定的路径中,搜索某个系统命令的位置,并返回第一个搜索结果。2.whereiswhereis命令用于程序名的搜索,而且只搜索二进制文件...

2018-05-25 18:54:08 370

原创 Linux下find指令的详解

我们都知道,Linux下一切皆文件,所以对于Linux来说 find 是一条很重要的命令。Linux下面的 find 指令用于在目录结构中搜索文件,并执行指定的操作。它提供了相当多的查找条件,功能比较强大。在不指定查找目录的情况下, find 会对整个系统进行遍历。即使系统中含有网络文件系统,find 命令在该文件系统中同样有效。在运行一个非常消耗资源的 find 命令时,很多然都倾向于把它们放在...

2018-05-25 18:51:04 481

原创 单例模式

什么是单例模式有时候我们会有这样的需求,需要一个类只能有一个对象被实例化,这时我们可以使用单例模式。单例模式通过类本身来管理其唯一实例,在设计这个类的时候,让它只能创建一个实例并提供对此实例的全局访问。因此单例模式有两个基本的条件:(1)确保一个类只有一个实例被创建 (2)提供一个对实例的全局访问指针常见的单例模式的实现常用的单例模式实现方法有两种:饿汉模式和懒汉模式懒汉式单例模式:...

2018-05-25 16:22:57 358

原创 宏的用法与简介

预处理指令例如:#include<stdio.h>    #include<stdlib.h>    #define MAX 100......因为它们是由预处理器解释的,所以称为预处理指令。预处理器读取代码,然后对其进行修改,并把修改过的代码传给编译器,再由编译器编译。在我们上述的例子当中预处理器用库函数stdio.h,stdlib.h的内容替换执行第一二条预处理指令,就...

2018-05-21 20:59:49 374

原创 线程安全与可重入函数的区别与联系

线程安全线程安全是多个线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取结束并且释放了锁,其他线程才可使用,保证了数据的一致性。与之对应的则是线程不安全,对数据的访问不提供保护机制,导致多个线程先后更改数据造成数据的不一致问题,这是一个非常严重的问题。从之前的二元信号量到生产者消费者模型都存在很严重的线程不安全问题,不过那只是线程安全性问题的一...

2018-05-20 11:56:44 3655 2

原创 生产者消费者模型(一)——模拟单线程的互斥与同步

在现实的软件开发过程中,经常会碰到如下情景:某个模块负责产生数据,这些数据由另外一个模块来负责处理(此处的模块是广义的,可以是类、函数、线程和进程等)。产生数据的模块称之为生产者,而处理数据的模块就是消费者。条件变量在正式开始生产者与消费者模型之前,我们应该对条件变量有一个新的认识。条件变量(Condition Variable):它的作用是描述资源的就绪状态,属于线程的一种同步机制。互斥锁用于上...

2018-05-19 13:54:28 1103

原创 Linux信号处理机制(三)——信号捕捉

本文主要针对信号捕捉展开话题,文中可能会提到前两篇博客中的知识点,对此迷惑的可以查看前两篇博客:信号引入、阻塞信号内核是如何捕捉信号的?如果信号的处理动作是用户自定义的函数,在信号递达时就调用这个函数,这称为信号捕捉。由于信号处理函数的代码是在用户空间执行的,处理过程较为复杂,我们画图来进行解释:上图很好的说明了信号捕捉时用户态和内核态的切换(用户处理信号最好的时机是程序从内核态切换至用户态的时候...

2018-05-18 17:57:10 4131 4

原创 Linux信号处理机制(二)——阻塞信号

信号在内核中的表示信号在内核中一般有三种状态:(1)信号递达(Delivery):实际执行信号的处理动作称为信号递达;(2)信号未决(Pending):信号从产生到递达之间的状态;(3)信号阻塞(Block):被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作;注意:阻塞与忽略是不同的,只要信号被阻塞就不会递达,而忽略是在递达之后可选的一种处理动作。信号在内核中的表示...

2018-05-16 23:27:28 4967 5

原创 Linux信号处理机制(一)——信号引入

信号在最早的Unix系统中被引入,内核可用信号通知进程系统所发生的事件。在现实生活中,我们每天都在接触信号,下课铃声、红绿灯、闹钟等都是信号。信号的本质操作系统给进程发送信号,本质上是给进程的PCB中写入数据,修改相应的PCB字段,进程在合适的时间去处理所接受的信号。我们模拟...

2018-05-14 17:48:09 6283

原创 指针相关概念详解

说起指针,这是很多人头疼的问题,因为它这几个概念相当混淆,下面我们来分析一下这几个概念:int num = 10;         //假设num的地址是0x0000004Cint *p = NULL;        //假设p的地址是0x0035FA94p = #指针的内容:指针里面存放的是地址指针p里面存放的是num的地址(&num),即指针p里面存放的内容是0x000...

2018-05-07 18:02:14 425

原创 static、extern、volatile作用

static:作用:1.进行内部链接指定(将全局变量或者函数限定为仅在本文件内可用)。          2.改变局部变量的生命周期。          3.改变存储类型使得局部变量由原来的栈上改变为静态区,在整个程序结束才释放。          4.定义一个变量时,加上static前缀,定义的变量默认初始化为0。extern:作用:1.进行外部链接指定(使得全局变量或者函数在其他文件内可以使用...

2018-05-07 17:14:37 498

原创 const在C语言中的用法

用const来修饰变量常量和变量的样子完全一样,只是常量的值不允许被修改。例如:下面这两种声明方式所产生的效果是一样的const int a = 10;int const a = 10;用const来修饰指针int const *p;const int *p;上面的两个声明方式产生的效果是一样的,p都是一个指向整型常量的指针,因为const修饰的是*p,所以我们不能修改p所指向的值,但是我们可...

2018-05-04 18:06:26 414

原创 动态内存简介

为什么要使用动态内存?通常当我们声明一个数组时必须要指定数组的长度,但是数组的长度只有在程序运行的时候才知道,这是因为它所需的内存空间取决于输入数据的类型。这种方法虽然简单,但是它的缺点也是显而易见的,它极大的限制了程序的灵活性和健壮性。这种方式受到了人为的限制,一旦我们输入的数据元素超过了数组长度,它就无法处理这种情况,所以通常我们将数组的长度设置的很大,但是问题又来了,如果数组很大,我们输入的...

2018-05-04 16:30:42 234

原创 多线程编程(二)——互斥锁与死锁问题

二元信号量提供了一种很方便的方法来确保对共享变量的互斥访问,即每个共享变量与一个信号量 s(初始为1)联系起来,然后P(s)和V(s)操作将相应的临界区包围起来。互斥锁是以提供互斥为目的的二元信号量,二者均属于挂起等待锁。互斥锁(针对于线程)互斥锁用于确保同一时间只有一个线程能访问被互斥锁保护的资源(互斥锁是针对于线程的)。锁定互斥量的线程与解锁互斥量的线程必须是同一个线程。互斥锁的引入必须对互斥...

2018-05-02 23:06:39 902

基于Huffman树的文件压缩

基于Huffman树和堆实现对不同类型的文件进行压缩和解压缩。

2018-08-16

空空如也

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

TA关注的人

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