自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

知秋一叶

这世界里的每一个人,每一个东西,包括高山大海,刀剑风云,其本质都是一串数字流。

  • 博客(48)
  • 资源 (2)
  • 收藏
  • 关注

原创 Linux C 算法——排序

排序(Sort)是将无序的记录序列(或称文件)调整成有序的序列。     为了方便讨论,在此首先要对排序下一个确切的定义:假设含有n个记录的序列为             { R1、R2、,。。。Rn }其相应的关键字序列为             {K1、K2,。。。。Kn}需确定1,2,。。。,n的一种排列 p1,p2,。。。pn,使其相应的关键字满足如下的非递减(或非

2015-12-30 12:54:05 3369 2

原创 Linux C 算法——查找

所谓“查找”记为在一个含有众多的数据元素(或记录)的查找表中找出某个“特定的”数据

2015-12-29 18:41:12 2511

原创 Linux C 数据结构——二叉树

一、树的概念      树(tree)是n(n>=0)个节点的有限集合T,它满足两个条件:1)有且仅有一个特定的称为根(root)的节点;2)其余的节点可以分为m(m>=0)个互不相交的有限结合T1、T2、...、Tm,其中每一个集合又是一棵树,并成为其根的子数(Subtree)。     树的逻辑结构:树中任何节点都可以有零个或多个直接后继节点(子节点),但至多只有一个直接前

2015-12-29 12:57:26 4451

原创 Linux C 数据结构——队列

还是先放这张图,以便对比和理解:    队列是限制在两端进行插入操作和删除操作的线性表,允许进行存入操作的一端称为“队尾”,允许进行删除操作的一端称为“队头”。当线性表中没有元素时,称为“空队”。特点:先进先出(FIFO)。

2015-12-28 18:07:35 11121

原创 Linux C 数据结构——栈

栈是限制在一段进行插入操作和删除操作的线性表(俗称堆栈),允许进行操作的一端称为“栈顶”,另一固定端称为“栈底”,当栈中没有元素称为“空栈”。特点:先进后出(FILO)。栈顶即top,这里top有两种定义方式:1、满栈(Full Stack),top指向最后一个使用的空间;2、空栈(Empty Stack),top指向下一个可用的空间;     栈也是线性表,所以也分顺序存储和

2015-12-28 11:54:15 2099

原创 vim使用—实现程序的自动补齐(C语言)

使用过Source Insight的人一定对它的自动补全功能印象深刻,在很多的集成开发环境中,也都支持自动补全。vim做为一个出色的编辑器,这样的功能当然少不了。至于如何实现程序自动补全,网上教程很多。这里,我将自己配置过程写下来,只要简单的两步,帮助你实现vim的程序自动补全功能。      vim配置文件包,大家移步      下面,我们开始进行配置:首先,下面是我的 ubuntu

2015-12-26 23:11:26 10524

原创 Linux C 数据结构——链表(循环链表)

前面我们学习了单向链表,现在介绍单向循环链表,单向循环链表是单链表的一种改进,若将单链表的首尾节点相连,便构成单向循环链表结构,如下图:     对于一个循环链表来说,其首节点和末节点被连接在一起。这种方式在单向和双向链表中皆可实现。要转换一个循环链表,可以选择开始于任意一个节点然后沿着列表的任一方向直到返回开始的节点。再来看另一种方法,循环链表可以被视为“无头无尾”。这种列表

2015-12-26 19:39:19 2438 2

转载 Linux 命令 ——less命令

less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less 时,就可以使用 [pageup] [pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之外,在 less 里头可以拥有更多的

2015-12-25 21:14:21 1583

原创 Linux C 算法分析初步

提到算法,必须提到数据结构,我们要知道一个著名公式:  数据结构 + 算法 = 程序我们先看看下面这张图:      算法是什么?算法是一个有穷规则(或语句、指令)的有续集和。他确定了解决某一问题的一个运算序列,简单的说,就是解决某一问题的步骤描述。一、算法的特性1)有穷性  ——算法执行的步骤(或规则)是有限的;2)确定性 ——每个计算步骤无二义性;3)可行性——

2015-12-25 20:29:27 1534

原创 Linux C 数据结构---链表(单向链表)

上一篇我们讲到了线性表,线性表就是数据元素都一一对应,除只有唯一的前驱,唯一的后继。       线性表存储结构分为顺序存储、链式存储。       顺序存储的优点:       顺序存储的缺点:       链表就是典型的链式存储,将线性表L = (a0,a1,a2,........an-1)中个元素分布在存储器的不同存储块,成为结点(Node),通过地址或指针建立他们之间的练习

2015-12-25 12:56:07 9384 1

原创 Linux C 数据结构---线性表

数据结构指的是数据元素及数据元素之间的相互关系,包含下面三方面的内容:

2015-12-24 18:34:26 2082

原创 Linux 应用---make及makefile的编写

Make 在我们做linux 开发中是必不可少的一部分,它在我们编写大型项目工程文件中起到非常大的作用。     Make工程管理器也就是个“自动编译管理器”,这里的“自动”是指它能够根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件的内容来执行大量的编译工作。Make将只编译改动的代码文件,而不用完全编译。    而Makefile是Make读入的

2015-12-23 17:40:51 21441 1

原创 Linux C 预处理详解

1.预处理程序按照ANSI标准的定义,预处理程序应该处理以下指令:#if #ifdef #ifndef #else #elif#endif#define#undef#line#error#pragma#include显然,上述所有的12个预处理指令都以符号#开始,每条预处理指令必须独占一行。2.#define#define指令定义一个标识符和

2015-12-23 13:07:08 3238

原创 Linux C 内存管理

提到C语言,我们知道C语言和其他高级语言的最大的区别就是C语言是要操作内存的!     内存的使用时程序设计中需要考虑的重要因素之一,这不仅由于系统内存是有限的(尤其在嵌入式系统中),而且内存分配也会直接影响到程序的效率。因此,我们要对C语言中的内存管理,有个系统的了解。    在C语言中,定义了4个内存区间:代码区;全局变量和静态变量区;局部变量区即栈区;动态存储区,即堆区;具体如下:

2015-12-22 17:58:20 4833

原创 Linux C 深入分析结构体指针的定义与引用

练习一、写出一个模拟时钟程序代码如下:#include #include #include #include typedef struct Clock{ int hour; int minute; int second;}Clock;update(Clock *p){ p->second++; if(p->second ==

2015-12-22 13:24:25 4869 2

原创 Linux C 函数指针应用---回调函数

(这里引用了知乎上一些知友的回答,感觉不错,有助于理解,这里引用作为借鉴,如有冒犯,烦请告知)    我们先来回顾一下函数指针,函数指针是专门用来存放函数地址的指针,函数地址是一个函数的入口地址,函数名代表了函数的入口地址。当一个函数指针指向了一个函数,就可以通过这个指针来调用该函数,可以将函数作为参数传递给函数指针。    那函数指针在我们实际编程中会起到怎样的作用呢?前一篇关于函数指针

2015-12-21 18:08:11 11329 4

原创 Linux C 函数练习

学习函数主要学习的就是函数的声明、定义和调用,下面请看两个例子,来帮助我们学习函数:题目一:编写一个函数iswithin(),它接受两个参数,一个是字符,另一个是字符串指针。其功能是如果字符在字符串中。就返回1 (真);如果字符不在字符串中,就返回0(假)。在一个使用循环语句为这个函数提供舒服的完整程序中进行测试。代码如下:#include int iswithin(cha

2015-12-21 17:49:47 1810

原创 Linux C 指针练习

题目一、已知数组内容如下 s[] = {1,2,3,4,5,6,7,8,9},输入一个常数 m(1代码如下:#include int main(){ int a[] = {1,2,3,4,5,6,7,8,9}; int b[9] = {0}; int *p = a; int *q = b; int i,m,n; printf("请输入要移动的位数:\n"); sca

2015-12-20 16:09:53 2927 3

原创 Linux 下shell编程

什么是shell?Shell是一个命令解析器,是介于Linux操作系统的内核(kernel)与用户之间的一个绝缘层。shell脚本就是讲各类命令预先放入其中,方便一次性执行的一个程序文件,主要用于方便管理员进行设置或者管理。   序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁。用户既可以输入命令执行,又可以利用 She

2015-12-17 18:35:07 4897

原创 Linux环境变量的设置和查看

一、Linux的变量种类      按变量的生存周期来划分,Linux变量可分为两类:      1、永久的:需要修改配置文件,变量永久生效。      2、临时的:使用export命令声明即可,变量在关闭shell时失效。 二、设置变量的三种方法1、在/etc/profile文件中添加变量【对所有用户生效(永久的)】      用VI在文件/etc/profile文件

2015-12-17 13:04:27 69299

原创 Linux 下 NFS服务的搭建

NFS是Network File System的简写,即网络文件系统。   网络文件系统是许多操作系统都支持的文件系统中的一种,也被成为NFS。NFS允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户可以像访问本地文件一样访问远端系统上的文件。   NFS所提供的共享文件服务是建议在高度信任的基础上的,所以,向其他用户释放共享资源之前,一定要确保对方的可靠性。   NFS的

2015-12-17 10:06:41 2296

原创 字符串按照单词为单位逆序排列

我们前面已经写过一个简单字符串逆序排序的方法,这里再开一个字符串排序问题:给定一个字符串“I love China”,编写程序完成以单词为单位的逆序,如"China love I",并要求不使用第三方变量保存数据,但可以使用辅助指针变量这道题如果没有“要求不使用第三方变量保存数据”则很轻松,当然这里字符串肯定要用一个数组进行存放的,意思是不能再定义一个数组存放排列好的字符串,那样的话就太简

2015-12-16 15:22:49 4515 1

原创 linux 目录/sys 解析

今天学习Linux目录时,遇到/sys这个目录,老师怎么讲的,不太清楚,先对/sys目录知识进行一个整理首先,对 /sys目录下的各个子目录进行具体说明:/sys下的子目录内容 /sys/devices该目录下是全局设备结构体系,包含所有被发现的注册在各种总线上的各种物理设备。一般来说,所有

2015-12-15 21:22:02 5814

原创 Linux下静态IP地址的设置及TFTP服务的搭建

TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。TFTP承载在UDP上,提供不可靠的数据流传输服务,不提供存取授权与认证机制,使用超时重传方式来保证数据的到达。   在谈TFTP之前,先简单讲一下Linux网络配置,网络中最重要的当然是IP地

2015-12-15 19:55:13 6357

原创 linux多线程编程——同步与互斥

我们在前面文章中已经分析了多线程VS多进程,也分析了线程的使用,现在我们来讲解一下linux多线程编程之同步与互斥。现在,我们不管究竟是多线程好还是多进程好,先讲解一下,为什么要使用多线程?一、 为什么要用多线程技术?1、避免阻塞,大家知道,单个进程只有一个主线程,当主线程阻塞的时候,整个进程也就阻塞了,无法再去做其它的一些功能了。2、避免CPU空转,应用程序经常会涉及到RPC,数

2015-12-15 17:18:10 6347

原创 Linux目录/bin、/sbin、/usr/bin、/usr/sbin的区别

/bin、/sbin、/usr/bin、/usr/sbin目录的区别 在linux下我们经常用到的四个应用程序的目录是/bin、/sbin、/usr/bin、/usr/sbin 。 而四者存放的文件一般如下: /bin: bin为binary的简写主要放置一些系统的必备执行档例如:cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、mo

2015-12-15 13:12:50 2493

原创 Linux多线程编程实例解析

Linux系统下的多线程遵循POSIX线程接口,称为 pthread。编写Linux下的多线程程序,需要使用头文件pthread.h,连接时需要使用库libpthread.a。顺便说一下,Linux 下pthread的实现是通过系统调用clone()来实现的。clone()是 Linux所特有的系统调用,它的使用方式类似fork,关于clone()的详细情况,有兴趣的读者可以去查看有关文档说明。下

2015-12-14 18:00:22 23404 7

原创 远程WEB控制MP3播放器设计(基于mini2440)

网上有很多 基于mini2440的MP3播放器设计的资料,多是按键控制,这里博主做了些轻微改动,利用远程WEB来控制MP3播放,具体怎么实现,下面会给出,大家先看看效果:WEB界面:后台运行:因为不是什么课程设计报告,博主就不阐述的那么详细,这个设计主要有三部分组成:1、WEB控制端(就是浏览器);2、WEB服务器端(将mini2440开发板作为服务器,其中移植

2015-12-13 20:25:34 2938

转载 多进程 VS 多线程

在Linux下编程多用多进程编程少用多线程编程。         IBM有个家伙做了个测试,发现切换线程context的时候,windows比linux快一倍多。进出最快的锁(windows2k的 critical section和linux的pthread_mutex),windows比linux的要快五倍左右。当然这并不是说linux不好,而且在经过实际编程之后,综合来看我觉得linu

2015-12-12 22:05:00 3152 1

原创 进程与线程的一个简单解释

进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。1.计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。2.假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停

2015-12-12 21:26:53 2470 2

原创 linux C 学习---函数指针

我们经常会听到这样的说法,不懂得函数指针就不是真正的C语言高手。我们不管这句话对与否,但是它都从侧面反应出了函数指针的重要性,所以我们还是有必要掌握对函数指针的使用。先来看看函数指针的定义吧。        函数是由执行语句组成的指令序列或者代码,这些代码的有序集合根据其大小被分配到一定的内存空间中,这一片内存空间的起始地址就成为函数的地址,不同的函数有不同的函数地址,编译器通过函数名来索引函

2015-12-12 19:44:58 5687

原创 Linux C编程学习--main()函数简析

提到C语言的函数,有太多内容要讲,今天我们要看的是main()函数。main()函数时程序的入口点,任何程序都要有main()函数,一般大家都怎么写main()函数啊?main();void main();void main(void);int main();int main(void);int main(int argc,char * argv[]);好像哪种都可

2015-12-11 19:21:37 2288

原创 Linux C编程---指针数组简析(二维数组、多级指针)

讲到指针和数组,先给大家看一道例题:题目:填空练习(指向指针的指针)1.程序分析:     2.程序源代码:main(){ char *s[]={"man","woman","girl","boy","sister"};char **q;int k;for(k=0;k{       ;/*这里填写什么语句*/  printf("%s\n",*q);}

2015-12-11 18:19:43 4177 2

原创 Linux C学习--getline()函数

getline()函数是什么?百度百科这样解释:     getline不是C库函数,而是C++库函数。它会生成一个包含一串从输入流读入的字符的字符串,直到以下情况发生会导致生成的此字符串结束。1)到文件结束,2)遇到函数的定界符,3)输入达到最大限度。linux标准C中使用条件:#define _GNU_SOURCE#include 函数声明:ssize_t ge

2015-12-10 20:01:18 52657 3

原创 linux C --深入理解字符串处理函数 strlen() strcpy() strcat() strcmp()

在linux C 编程中,我们经常遇到字符串的处理,最多的就是字符串的长度、拷贝字符串、比较字符串等;当然现在的C库中为我们提供了很多字符串处理函数。熟练的运用这些函数,可以减少编程工作量,这里介绍几个常用的字符串函数,并编写一些程序,如果没有这些库函数,我们将如何实现其功能;1 求字符串长度函数 strlen头文件:string.h函数原型:size_t strlen(const c

2015-12-10 17:41:43 23613 2

原创 Linux C 编程技巧--利用有限状态机模型编程

我们知道,一般编写程序时都要画出流程图,按照流程图结构来编程,如果编写一个比较繁琐,容易思维混乱的程序时,我们可以利用有限状态机模型画出一个状态转移图,这样便可以利用画出的逻辑图来编写程序,简洁且不易出错。      那什么是有限状态机是什么意思呢?百度百科上这样解释:      有限状态机,(英语:Finite-state machine, FSM),又称有限状态自动机,简称状态机,是表

2015-12-09 17:38:35 10127 9

原创 Linux c学习--从标准输入输出看流和缓冲区

学习标准输入输出,我们都会遇到一个概念,流和缓冲区,但到底什么是流,什么是缓冲区呢?      书《C Primer Plus》上说,C程序处理一个流而不是直接处理文件。后面的解释十分抽象:『流(stream)是一个理想化的数据流,实际输入或输出映射到这个数据流』。这个流具体是一个怎么样的东西呢?      流这个定义非常的形象。我们可以这样理解:     你声明一个FILE *fp

2015-12-09 12:48:12 6102

原创 Linux C学习---递归函数

最近学习到了递归,刚开始看,真是头大,函数里面嵌套其本身,到底是怎么个流程啊?现在,咱们先了解下递归函数的数学原理:高中的时候就出现很多递归函数,应该是在“级数”那里的习题中出现的,而且还不少。还是从例子开始吧: f(x)=f(x-1)+x*x ,其中x>0且f(0)=0求f(4)解:  由于f(0)=0:当x=1 时 f(1)=f(0)+1*1=1;当

2015-12-08 20:29:28 1974

原创 C语言经典编程题--哥德巴赫猜想 、完数 、猜数字等

验证歌德巴赫猜想:任意一个不小于6的偶数都可以表示成两个素数的和。从键盘任意给一个符合条件的数,输出相应的两个素数。素数:指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数代码如下:#include int sushu(int n){ int i,j; for(i = 2;i <= 0.5*n;i++) { if(!(n%i))

2015-12-08 17:56:08 10217

原创 Linux C 算法与数据结构 --二叉树

头文件BiTree.htypedef int Item;typedef struct node{ struct node * lchild; struct node * rchild; Item data;}BiTNode,*BiTree;/*构造一棵新的二叉树*/BiTree InitBiTree(BiTNode *root);/*生成节点*/BiT

2015-12-07 22:40:26 1878

98DX3336芯片手册

98DX3336

2016-07-06

vim配置(程序自动补全)

使用过Source Insight的人一定对它的自动补全功能印象深刻,在很多的集成开发环境中,也都支持自动补全。vim做为一个出色的编辑器,这样的功能当然少不了。至于如何实现程序自动补全,网上教程很多。这里,我将自己用的配置文件发给大家,大家可以移步(待会会补上地址),只要简单的两步,就能实现vim的程序自动补全功能,大大增加了在vim上的开发效率。

2015-12-26

空空如也

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

TA关注的人

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