- 博客(84)
- 资源 (12)
- 收藏
- 关注
转载 linux--进程在内存中的布局
先从(Linux平台下)虚拟内存管理说起, 写C程序时,我们经常会打印一个指针地址,说这个指针指向某某内存地址.可这些地址是真实物理内存地址吗?不是!这些只是虚拟内存地址. 当一个C程序调入内存开始执行后,在内存中就会产生一个进程.而在多任务操作系统中每个进程都拥有一片属于自己的内存空间(内存沙盘),这个沙盘就是虚拟地址空间,在32位下是一个4GB的大小的地址块,这些虚拟地址通过页表映
2014-10-24 12:03:04
1817
原创 linux--环境变量
Linux是一个多用户多任务的操作系统,可以在Linux中为不同的用户设置不同的运行环境,具体做法是设置不同用户的环境变量(称之为Linux中定制的环境变量)。但是仍有些环境变量是用户都需要的,我们称之为Linux中常见的环境变量,本文只涉及常见的环境变量的简介!Linux中常见的环境变量有:1.PATH:指定命令的搜索路径2.HOME:指定用户的主工作目录(即用户
2014-10-21 16:35:05
1166
原创 Linux----文件I/O
1.文件描述符:每次我们打开一个文件,就会得到一个对应于该文件的较小的整数,这个整数就是这个文件的文件描述符。在shell操作中,0,1,2这三个文件描述附总是打开的,通常是指向shell运行所在的终端。0对应于标准输入,1对应于标准输出,2对应于标准错误。因为0,1,2这三个文件描述符总是打开的,所以一般我们打开一个文件时,该文件所对应的文件描述符为3,再打开一个文件时,新打开的文件描述符为4,
2014-10-11 16:08:48
1122
原创 linux中man手册的高级用法
Linux提供了丰富的帮助手册,当你需要查看某个命令的参数时不必到处上网查找,只要man一下即可。Linux 的man手册共有以下几个章节:1、Standard commands (标准命令)2、System calls (系统调用)3、Library functions (库函数)4、Special devices (设备说明)5、File formats (文件格式
2014-10-11 15:44:25
2112
原创 argc, argv简单使用
通过一下例子认识一下argc, argv:代码如下:#include using namespace std;int main(int argc, char * argv[]){ char filename[80]; if(argc ==1 || argc > 2) { cout << "input the filename you want to edit: "
2014-10-11 14:57:07
1001
转载 socket入门及理解
对TCP/IP、UDP、Socket编程这些词你不会很陌生吧?随着网络技术的发展,这些词充斥着我们的耳朵。那么我想问:1. 什么是TCP/IP、UDP?2. Socket在哪里呢?3. Socket是什么呢?4. 你会使用它们吗?什么是TCP/IP、UDP? TCP/IP(
2014-10-10 16:37:30
963
原创 linux下系统调用、API、系统命令,内核函数的区别与联系
1.系统调用: 应用程序和内核间的桥梁,是应用程序访问内核的入口点;但通常情况下,应用程序通过操作系统提供的API进行编程而不是使用系统调用直接编程; linux的全部系统调用加起来大约只有250个左右。2.API: API常以c库(libc)的形式提供,c库提供了绝大部分API,每个系统调用在c库中都有对应的封装函数(通常封装函数与系统调用的名称相同)。系统调用与c库函
2014-09-16 15:51:52
9920
原创 ubuntu下如何查看命令源代码
下面以查看ls这个命令的源代码为例:1.输入 which lsliuwei@liuwei:~/test$ which ls/bin/ls2.输入sudo dpkg -S /bin/lsliuwei@liuwei:~/test$ sudo dpkg -S /bin/lscoreutils: /bin/ls3.输入sudo apt-get source coreutil
2014-09-14 21:08:04
5883
原创 autotools的详细使用
autotools是系列工具, 它主要由autoconf、automake、perl语言环境和m4等组成;所包含的命令有五个: (1)aclocal (2)autoscan (3)autoconf (4)autoheader (5)automake一、准备源代码 本项目有三个源文件,分别为score.cpp, sum.
2014-09-09 16:46:12
1467
转载 gdb的使用
用GDB调试程序 GDB是一个强大的命令行调试工具。大家知道命令行的强大就是在于,其可以形成执行序列,形成脚本。UNIX下的软件全是命令行的,这给程序开发提代供了极大的便利,命令行软件的优势在于,它们可以非常容易的集成在一起,使用几个简单的已有工具的命令,就可以做出一个非常强大的功能。 于是UNIX下的软件比Windows下的软件更能有机地结合,各自发挥各自的长处,组合成更
2014-09-06 16:41:15
468
转载 gcc的使用
在学习使用GCC之前,下面的这个例子能够帮助用户迅速理解GCC的工作原理,并将其立即运用到实际的项目开发中去。首先用熟悉的编辑器输入清单1所示的代码: 清单1:hello.c#include int main(void){ printf ("Hello world, Linux programming!\n"); return 0;}
2014-09-03 21:04:25
513
转载 vim教程
vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的。下面的文章翻译自《Learn Vim Progressively》,我觉得这是给新手最好的VIM的升级教程了,没有列举所有的命令,只是列举了那些最有用的命令。非常不错。——————————正文开始——————————你想以最快的速度学习人类
2014-09-02 18:55:37
485
原创 linux基础知识
二.Linux的体系结构 1.Linux内核-Linux内核本身并不是操作系统,它是一个完整操作系统的组成部分-具有最基本功能,如虚拟内存、多任务、共享库、需求加载、共享的写时拷贝(copy-on-write)可执行程序和TCP/IP网络功能2.Shell-系统的用户界面,用户与内核交互操作的一种接口,接收用户输入的命令、解释命令-它接
2014-08-06 23:29:42
566
转载 linux各发行版之间的区别
Linux的发行版本可以大体分为两类,一类是商业公司维护的发行版本,一类是社区组织维护的发行版本,前者以著名的Redhat(RHEL)为代表,后者以Debian为代表。下面介绍一下各个发行版本的特点:Redhat,应该称为Redhat系列,包括RHEL(Redhat Enterprise Linux,也就是所谓的Redhat Advance Server,收费版本)、Fedora Core
2014-08-06 23:14:17
5871
原创 快速排序
快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。总的说来,要直接默写出快速排序还是有一定难度的,因为本人就自己的理解对快速排序作了下白话解释,希望对大家理解有帮助,达到快速
2014-07-25 11:57:31
571
原创 冒泡排序
冒泡排序是非常容易理解和实现,,以从小到大排序举例:设数组长度为N。1.比较二相邻的前后个数据,如果前面数据大于后面的数据,就将二个数据交换。2.这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。3.N=N-1,如果N不为0就重复前面二步,否则排序完成。
2014-07-23 15:51:49
618
原创 希尔排序
希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。 该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况下(接近最好情况),效率是很
2014-07-23 15:13:47
483
原创 插入排序
1.插入排序/**本程序演示插入排序。插入排序:插入即表示将一个新的数据插入到一个有序数组中,并继续保持有序。 例如有一个长度为N的无序数组,进行N-1次的插入即能完成排序; 第一次,数组第1个数认为是有序的数组,将数组第二个元素插入仅有1个有序的数组中; 第二次,数组前两个元素组成有序的数组,将数组第三个元素插入由两个元素构成的
2014-07-22 21:24:11
569
转载 硬盘结构及工作原理
外存储器—磁盘计算机存储设备一般分为两种:内存储器(main memory)和外存储器(external memory)。 内存存取速度快,但容量小,价格昂贵,而且不能长期保存数据(在不通电情况下数据会消失)。外存储器—磁盘是一种直接存取的存储设备(DASD)。它是以存取时间变化不大为特征的。可以直接存取任何字符组,且容量大、速度较其它外存设备更快。2.1磁盘的构造磁盘是一个扁
2014-07-02 21:17:48
894
原创 八皇后问题
八皇后问题是在8*8的棋盘上放置8枚皇后,使得棋盘中每个纵向、横向、左上至右下斜向、右上至左下斜向均只有一枚皇后。八皇后的一个可行解如图所示:
2014-05-23 11:47:25
710
转载 结构体在内存中是如何存储的
一个结构体变量定义完之后,其在内存中的存储并不等于其所包含元素的宽度之和。例一: #include using namespace std;
2014-05-14 12:34:38
10490
5
原创 c++实现对分查找
说明及代码如下:/***本例用来实现对分查找:对分查找:给定一个整数X和一列已经排好序的整数,查找X是否在这列整数中,若在,则返回整数 在这列整数中的位置;若不在,则返回-1***/#include using namespace std;int BinarySearch(int a[], int n, int X);int main(){
2014-05-13 16:50:51
1845
1
原创 c++实现最大子序列和
说明及代码如下:/***本程序完成求子序列最大和的任务输入:若干整数,有正数有负数输出:这串整数的子序列的最大子序列和***/#include using namespace std;int main(){ int num; //序列中元素的个数 int i, j, k; //i,j,k作为循环变量 int m, n;
2014-05-13 16:28:17
4136
原创 c++实现汉诺塔
问题描述: 有一个梵塔,塔内有三个座A、B、C,A座上有诺干个盘子,盘子大小不等,大的在下,小的在上(如图)。把这些个盘子从A座移到C座,中间可以借用B座但每次只能允许移动一个盘子,并且在移动过程中,3个座上的盘子始终保持大盘在下,小盘在上。描述简化:把A柱上的n个盘子移动到C柱,其中可以借用B柱。
2014-05-12 16:25:27
1680
原创 c++实现静态循环队列的各种操作
队空时aio: front=rear队满时: (rear+1)%maxsize=frontfront指向队首元素,rear指向队尾元素的下一个元素。
2014-05-11 21:59:58
735
原创 c++实现栈的各种操作
以下是c++实现的栈的各种操作:#include using namespace std;// 定义一个节点的结构typedef struct Node{ int data; //数据域 struct Node * next;//指针域}NODE,*PNODE;// 定义一个栈结构typedef struct Stack{
2014-05-10 21:19:21
1588
原创 c++实现单链表的各种操作
在下例中,演示了链表的各种操作#include using namespace std;typedef struct Node{ int data; //数据域 struct Node * next; //指针域}NODE, *PNODE; //NODE相当于struct Node, PNODE相当于struct Node *PNODE CreateList()
2014-05-09 19:56:15
809
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人