自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

sky_Mata的博客

尚未佩妥剑 转眼便江湖 愿历尽千帆 归来仍少年

  • 博客(51)
  • 收藏
  • 关注

转载 Linux内核态和用户态的切换

当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核运行态(或简称为内核态)。此时处理器处于特权级最高的(0级)内核代码中执行。当进程处于内核态时,执行的内核代码会使用当前进程的内核栈。每个进程都有自己的内核栈。当进程在执行用户自己的代码时,则称其处于用户运行态(用户态)。即此时处理器在特权级最低的(3级)用户代码中运行。当正在执行用户程序而突然被中断程序中断时,此时用户程序也可以象征性地称为处于进程的内核态。因为中断处理程序将使用当前进程的内核栈。这与处于内核态的进程的状态有些类似。

2017-08-11 11:24:26 5966

原创 一图了解网络分层模型即各层对应哪些协议

2017-08-10 21:31:11 3189 1

原创 Shell学习笔记

1.shell脚本的特点(1)shell是一种弱类型语言(2)shell是一门解释型语言(3)shell没有数据类型(结构体),所以类型可以直接使用,不用先定义再使用,需要注意二义性(4)非编译2.shell脚本的执行方式(1)直接执行脚本./pid.sh 首先赋予chomd u+x pid.sh //只授予这个文件所属组的执行权限 然后就可以

2017-07-31 09:51:16 603

原创 C++设计模式之单例模式

模拟实现线程安全的单例模式饿汉模式与懒汉模式的模拟实现单例模式的适应场景

2017-07-17 10:24:55 511

原创 链表面试题总结----(可能带环相交问题+复杂链表的复制)

1.顺序表和链表的优缺点以及适应场景2.逆置单链表3.从尾到头打印单链表4.无头单链表的非尾结点5.判断两个个链表是否相交(不带环)6.判断一个链表是否带环7.判断两个链表是否相交(可能带环)8.复杂链表的复制

2017-07-16 22:58:58 886

原创 TCP建立连接和断开连接过程的理解

为什么要三次握手而不是两次握手?主动断开的一方为什么要进入TIME_WAIT状态?为什么要四次挥手?

2017-07-11 15:01:23 822

原创 通过图文来理解快速排序的过程

1.快排的基本思想通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。2.快排的三种实现方式2.1左右指针法代码实现:int PartSort(int* a,int left,int right){ if (left

2017-07-03 21:07:11 410

原创 crond/crondtab—Linux下的任务定时器

1.定时任务crond介绍1.1 crond是什么?crond是linux系统中用来定期执行命令或指定程序任务的一种服务或软件。 特殊需求:(秒级别)crond服务就无法搞定了,一般工作中写脚本守护进程执行。 1.2 为什么要使用crond定时任务?定时任务的作用: (1) 服务器:7*24小时开机提供服务是网站的基本特征 (2) 有重要数据:提高备份周期和备份数量1.3 linux系统的

2017-07-01 19:52:52 965

原创 子数组最大累加和+子矩阵的最大和+子数组累加和为给定值的最大子数组长度

1.如何求一个子数组的最大累加和?(时间复杂度O(N))2.如何求两个子数组的最大累加和?(要求两个子数组无重合的部分,时间复杂度O(N))3.未排序的正数数组中累加和为给定值的最长子数组长度(时间复杂度O(N))3.给定一个无序矩阵,其中有正,有负,有 0,求子矩阵的最大和

2017-07-01 09:40:59 662

原创 作业、会话和守护进程

1.作业和进程组进程组:每个进程除了有一个进程ID之外,还属于一个进程组。进程组是一个或多个进程的集合。性质:(1)每个进程组都有一个唯一的进程组ID,存放在pid_t数据类型中,函数getpgrp返回调用进程的进程组ID。(2)每个进程组都有一个组长进程。组长进程的标识是,其进程组ID等于其进程ID。(3)进程组是否存在与其组长进程是否终止无关。进程组的生命周期从创建开始

2017-06-28 11:18:49 388

原创 BTree的插入和查找算法分析

1.什么叫BTree?一种适合外查找的树,它是一种平衡的多叉树,称为B树(或写成B-树,但是不能误读为“B减树”)。2.BTree的性质 一棵M阶(M>2)的B树,是一棵平衡的M路平衡搜索树,可以是空树或者满足一下性质:1. 根节点至少有两个孩子(孩子为NULL也算作孩子的数量)2. 每个非根节点有[M/2,M]个孩子(注意孩子与关键字的关系,n个key,n+1孩子)3.

2017-06-27 09:47:31 2428

原创 Linux信号(二)——编写自己的mysleep函数

1.alarm函数和pause函数使用alarm函数可以设置一个时间值(闹钟时间),在将来的某个时刻这个值会被超过。当所设置的时间超过后,产生SIGALRM信号。如果不忽略或不捕捉此信号,则其默认动作是终止该进程。参数seconds的值是秒数,经历了指定的seconds秒后会产生信号SIGALRM。 #include unsigned int alarm(unsigned int

2017-06-18 16:10:33 755

原创 Linux信号(一)——子进程的异步等待方式

1.信号信号(是一种软件中断)是由用户、系统或者进程发送给目标进程的信息,以通知目标进程某个状态的改变或系统异常。2.信号的产生(1)前台进程,用户可以通过输入特殊终端字符来给它发送信号。比如Ctrl+C通常给进程发送一个中断信号——2号信号(SIGINT),只能终止前台进程。 (2)系统异常。比如浮点异常——8号信号(SIGFPE)。 (3)系统状态变化。比如alarm函

2017-06-16 18:50:22 1592

原创 对比线程安全和可重入函数

1.什么叫线程安全如果你的程序所在的进程中有多个线程在同时运行,而这些线程可能同时运行一段代码或同时访问一个对象,如果每次运行完这段代码或访问完这个对象之后,所得到的结果和单线程运行的结果一样,而其他变量的值也和预期的保持一致,那么就认为是线程安全的。        也就是说当多个线程同时运行同一段代码,不会造成资源的冲突,不会产生错误的结果就是线程安全的。如果有一段线程安全的代码

2017-06-07 18:04:40 2431

原创 多线程编程总结(二)——条件变量和互斥锁

1.什么叫互斥锁?互斥锁(也成互斥量)可以用于保护关键代码段,以确保其独占式的访问,类似于二元信号量。二者都可以称为挂起等待锁———锁资源得不到满足,就会被挂起,在信号量或互斥锁上等待。注:当前线程的PCB在互斥量的等待队列等待以便快速唤醒。进程等待的本质是将PCB列入某个队列等待。2.使用方式     当进入关键代码段时,需要申请互斥锁,如果失败就挂起等待,将PCB列入互

2017-06-03 19:28:28 972

原创 红黑树(RBTree)的插入算法以及如何测试一棵树是否是红黑树?(详细图解说明)

红黑树的插入数据时,什么时候该调整,什么时候不用调整,什么时候需要旋转,该怎样调节结点的颜色呢?以及如何判断一棵树是否是红黑树,超级详细的图解过程!!!

2017-06-02 22:54:49 5341

原创 AVL树(高度平衡的二叉搜索树)平衡因子的调节和旋转

1.什么叫AVL树?                   AVL树又称为高度平衡的二叉搜索树,它能保持二叉树的高度平衡,尽量降低二叉树的高度,减少树的平均搜索长度(尽量使这棵树保持为完全二叉树,这样就能提高搜索效率)。2.AVL树的性质      (1)左子树和右子树的高度之差的绝对值不超过1          (2) 树中的每个左子树和右子树都是AVL树 

2017-05-31 22:47:36 5630 2

原创 多线程编程小结(一)

线程函数的介绍(pthread_create;pthread_join;pthread_exit;pthread_cancel) 线程与进程的区别 多线程的优点 分离线程的介绍

2017-05-28 22:23:52 4790

原创 进程间通信方式——共享内存

进程间通信方式共享内存和与共享内存函数详解,以及模拟共享内存实现进程间通信,以及共享内存的优缺点。

2017-05-22 23:30:38 19670

原创 进程间通信方式——消息队列

与消息队列的三个数据结构;和消息队列相关的函数;消息队列的工作模式。

2017-05-19 11:00:46 9456

原创 进程间通信方式——信号量(Semaphore)

信号量的工作原理,进程通过信号量如何获得共享资源,详解与信号量有关的函数,sembuf的sem_flg标志设为SEM_UNDO的作用以及模拟实现二元信号量。

2017-05-19 01:26:32 25221 4

原创 最优二叉树--哈夫曼树和最优前缀编码--哈夫曼编码

1.最优二叉树的定义最优二叉树又称哈夫曼树,是一种带权路径长最短的树。树的路径长度是从树根到每一个叶子之间的路径长度之和。节点的带树路径长度为从该节点到树根之间的路径长度与该节点权(比如字符在某串中的使用频率)的乘积。2.构造哈夫曼树2.1贪心算法贪心算法(又称贪婪算法)是指,在对 问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部 最优解。

2017-05-18 11:56:25 21457

原创 shell的工作原理以及模拟实现shell

shell的工作原理以及详解exec函数进行程序替换的过程。

2017-05-15 21:49:53 6565 2

转载 图文——怎样给GitHub上传本地代码(比如VS项目中的代码等)

使用GitHub上传本地代码,超级详细的解释,以及执行客服端shell命令常见的错误该怎样解决!!!

2017-05-13 19:46:06 1378

原创 进程间的通信方式——pipe(管道)

详解进程间通信方式———管道;管道是如何实现进程间通信的;以及管道读取数据的四种方式,以及管道容量的大小。

2017-05-10 00:43:13 105861 20

原创 二叉树的定义和递归实现

递归创建二叉树,递归过程分析;树的基本概念;二叉树的性质;递归实现二叉树的先序、中序、后序、层序遍历;递归求二叉树的深度;递归求二叉树的结点个数;递归求二叉树叶子结点个数;以及递归实现求第k层结点的个数。

2017-05-05 21:43:23 5883

原创 STL中迭代器失效详解

深入探讨vector、list迭代器为什么会失效,以及怎样解决迭代器失效。

2017-05-05 19:09:55 8188

原创 C++异常机制分析

(1)异常优缺点;(2)使用异常的注意事项;(3)标准库异常类exception的模拟实现

2017-04-23 11:04:36 605

原创 C++智能指针详解

了解auto_ptr、scoped_ptr、shared_ptr等智能指针的实现;不同的智能指针存在什么样的问题,以及该怎样选择智能指针。

2017-04-16 14:58:19 944

原创 C++虚函数表与虚函数

深入探究虚函数表(虚表)的构成以及对象模型,比如菱形继承,虚继承,单继承,多继承的对象模型以及虚表的构成以及对象大小的计算。

2017-03-29 22:19:51 1368 3

原创 CentOS 升级编译安装GCC 4.8.1 + GDB 7.6.1 + Vim的简单配置(Taglist、WinManager插件)

vim的简单配置、Taglist、WinManager的插件的安装,以及如何升级gcc g++ 编译器以及gdb调试器来适应语言更新所带来的新特性。

2017-03-29 00:06:31 1237

原创 菱形继承和虚继承、对象模型和虚基表

菱形继承的对象模型、虚继承的对象模型、以及深入探究虚基表的内容,为什么虚基表存放对象的偏移量要存放在第二个位置,而不是第一个位置?

2017-03-25 19:25:01 1973 1

原创 模拟实现string类的增删查改

模拟实现string的operator[] operator+= Push_Back Erase Substr operator= Insert Find的各种操作

2017-03-21 16:01:49 987

原创 Linux文件权限以及Linux文件三个时间解释

Linux的文件属性;Linux怎么修改文件属性;umask查看或修改文件掩码

2017-03-13 20:10:41 993 1

原创 编写类 String 的构造函数、析构函数和赋值函数

编写类String的构造函数、析构函数、赋值函数

2017-03-12 10:54:18 516

原创 malloc、calloc、realloc的区别

malloc realloc calloc的区别和联系

2017-03-11 10:16:04 1041

原创 内存对齐

结构体、位域、联合体对齐,求结构体、位域、联合体的大小,以及为什么要内存对齐。

2017-03-10 13:23:30 439

原创 C++实现一个日期类

用C++实现一个日期类,实现计算两个日期相差多少天,一个日期加多少天到哪一天,一个日期减去多少天到哪一天的理解,重在理解函数的重载,思考代码的复用以及函数返回值什么时候该用引用,还有运算符重载等问题。

2017-03-08 17:49:55 1193

原创 编写一个函数实现n^k,使用递归实现

编写一个函数实现n^k,使用递归实现

2017-01-03 10:23:17 520

原创 编译与链接过程详解

常见预定义符号的含义 ;宏和函数的区别;.编译链接的整个过程和详细的每个过程

2016-12-10 12:37:50 937

空空如也

空空如也

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

TA关注的人

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