自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

leap的博客

Talk is cheap,show me the code!

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

原创 面试题OJ:反转链表

反转链表是比较基础的问题,直接使用暴力法即可,这里采用了非递归和递归两个版本,大家在写代码时应该注意要在函数前面检查指针是否为NULL的问题,否则很容易会出现空指针的解引用问题:这里直接给出代码,包含测试用例://面试题:反转链表#include <iostream>using namespace std;struct ListNode { int val; struct Li

2017-01-23 13:16:24 704

原创 浅谈计算机内存中浮点数的表示

什么是浮点数提到浮点数相信大家一定不会很陌生,浮点数表示对形如V=x*(z^y)的有理数进行编码,它对执行涉及非常大的数字(|V|>>0)和非常接近于0的数字是非常有用的。浮点数在内存中的存储废话不多述,直接进入正题,首先,我们来看看下面这段代码,大家可以自行在自己的编译器上运行一下:#include <stdio.h>int main(){ float a = 0.0; flo

2017-01-22 00:17:43 1088

原创 进程控制(上):进程创建,进程等待,进程终止

进程创建进程创建被定义为通过父进程创建子进程的过程。fork函数函数原型:pid_t fork(void);特点: 1.fork函数调用一次,返回两次两次返回值得区别分别是子进程当中的返回值为0,父进程当中的返回值为新建子进程的ID(将ID返回给父进程的原因是没有函数可以使父进程得到子进程的ID,这样会便于管理); 2.子进程被创建出来后,子进程是父进程的副本(子进程获得父进程数据空

2017-01-18 18:02:41 2731

原创 关于文件描述符(file_struct)

什么是文件描述符 文件描述符(file_struct)是一个非负整数,对于Linux内核而言,为了高效管理已经被打开的文件所创建的索引,操作系统在每个进程描述符中都提供了文件描述符表,文件描述符表中每个表项都有一个指向已经打开文件的指针;而已经打开的文件在内核中用file结构体表示,文件描述符中的指针指向file结构体;下面,我们首先来介绍一下file结构体:什么是file结构体file结构体

2017-01-15 23:12:18 6716 1

原创 exit函数和_exit函数的区别

高级I/O函数在Linux标准库中,有一套称为高级I/O函数,例如我们所熟知的printf,fopen,fread,fwrite都在此列,他们也被称为缓冲I/O。其特征是对应每一个打开的文件,都存在一个缓冲区,在每次读文件时会多读若干条记录,这样下次读文件时就可以直接从内存的缓冲区去读。在每次写文件时也会先写入缓冲区,当缓冲区写满,或者我们手动的刷新缓冲区,或者遇到\n,EOF这样的结束符,才会把对

2017-01-14 10:51:45 8419

原创 内存描述符mm_struct浅析

什么是内存描述符什么是进程?进程是正在执行的程序,是可执行程序的动态实例,它是一个承担分配系统资源的实体,但操作系统创建进程时,会为进程创建相应的内存空间,这个内存空间称为进程的地址空间,每一个进程的地址空间都是独立的! 当一个进程有了进程的地址空间,那么进程的地址空间就必须被相应的工具所管理这个工具被称为内存描述符mm_struct,它被定义在、/usr/src/kernels/include/

2017-01-12 12:25:03 4311

原创 初始操作系统中的虚拟内存(上)

本文我们将会提到物理和虚拟寻址 虚拟内存作为缓冲工具 页表 地址翻译为什么要引入虚拟内存在一个操作系统中,不同的进程之间都是共享cpu和主存资源的,但是,共享主存会发生一些意想不到的结果,例如当前进程有可能不小心写了其它进程的内存。 为了更加有效管理内存并且少出错,便引入了一种对主存抽象的概念,称为虚拟内存(VM)。它将主存看成是一个存储在磁盘上的地址空间的高速缓存;并且为

2017-01-11 23:09:47 1101

原创 task_struct结构体成员详解

1:引言进程就是程序动态运行的实例,它是承担分配系统资源的实体。我们也可以把进程当成是由一组元素组成的实体,进程的两个基本的元素时程序代码和与代码相关联的数据集合。在进程执行时,都可以被表征为一下元素: 标识符:与进程相关的唯一标识符,用来区别正在执行的进程和其他进程。 状态:描述进程的状态,因为进程有挂起,阻塞,运行等好几个状态,所以都有个标识符来记录进程的执行状态。 优先级:如

2017-01-09 22:18:38 18748

原创 在Linux下实现简易进度条

本文将要概述printf的缓冲区问题;\r和\n的区别;如何实现一个简易的进度条;奇怪的现象进度条是安装和下载软件中常见的部分,它可以表示软件安装或下载了多大,能给客户一种直观的感受,今天我们就来实现一个简易的进度条,基本构思是这样的,我们定义一个大小为102的字符数组,其中100个用来存储‘#’,每跑了进度条的1%它就会在字符数组中增长一个该符号。还有两块空间用于存放’\0’,和防止死循环

2017-01-03 21:57:15 1470 1

原创 Linux下调试器GDB、makefile的使用

前面的几篇博客中我们讲解了Linux下的编辑器vim、编译器gcc和g++,今天我们来介绍一下其他常用的三种工具,它们分别是程序调试器:GDB、代码查看器:ctags、还有一个辅助工程的工具:Makefile程序调试器:GDB在windos下我们常用vs编辑器中自带的调试工具进行程序的调试,对于程序员来说,调试自己写的程序时必须的;在Linux中,我们可以使用GDB来调试已经编译好的可执行程序;注意

2017-01-01 19:28:14 9296

原创 Linux的gcc和g++的区别

Windows中我们常用vs来编译编写好的C和C++代码;vs把编辑器,编译器和调试器等工具都集成在这一款工具中,在Linux下我们能用什么工具来编译所编写好的代码呢,其实Linux下这样的工具有很多,但我们只介绍两款常用的工具,它们分别是gcc和g++.工具用法介绍gcc和g++的用法都是一样的,在这里我们只介绍gcc: 上图介绍了相关指令和参数以及该条指令所做的对应的事情。gcc -E

2017-01-01 12:21:23 47700 7

空空如也

空空如也

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

TA关注的人

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