自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(82)
  • 资源 (2)
  • 收藏
  • 关注

原创 一个整数数组里面,除了两个数之外,其他的数字都出现了两次,写一个程序找出这两个数

一个整数数组里面,除了两个数之外,其他的数字都出现了两次,写一个程序找出这两个数,要求算法的时间复杂度为O(n).n为数组的长度。 程序代码如下://取二进制中首个为1的位置int findFirstOne(int value){ int pos = 0; while ((value&1) != 1) { value = value>>1;

2013-08-22 15:18:42 2517 1

原创 关于微软的一道面试题

原题是:求 1 + 2 + 3 + ... + n要求:不能用乘除法,不能用if,while, switch,case, 不能用(a  关键点:利用&&运算的短路性质以及递归 关键代码:int fun3(int n, int *sum){ int ret; ret = n&&fun3(n-1, sum); return (*sum += n); }

2013-08-22 15:09:18 1050

原创 C语言实现定积分求解方法

求定积分的方法有很多种,下面是我总结的几种比较常用的方法。#include #include #include #include #define N 3double fun(double x){ double y; y = sqrt(4-(x)*(x)); //y = sin(x); return y;}/*随机点法求定积分*/double D

2013-08-19 16:30:45 10641

原创 opendir----打开目录函数

opendir   打开目录相关头文件:#include #include 函数原型:DIR *opendir(const char *name);函数说明:opendir()函数用来打开参数name指定的目录,并返回DIR *形态的目录流,和open函数类似,接下来对目录的读取和搜索都要使用此返回值。返回值:成功返回DIR *形态的目录

2013-05-09 14:23:26 1731

原创 linux网络编程之广播编程

广播方式主要是指使用UDP套接口发送数据,发送数据的目标地址不是普通的地址,而是所指定网络的广播地址。 什么是广播地址?是指IP地址中主机地址部分全为1的IP地址。下面是一个广播发送简单流程图。如何实现广播发送?一般情况下使用sendto函数只能向非广播地址发送数据,如果要发送广播数据就必须要告诉内核,可以通过设置套接字属性为SO_BROADCAST来坐到这一点。i

2013-04-15 20:10:31 3253 1

原创 linux网络编程多进程并发服务器

服务器端代码#include #include #include #include #include #include #include #include #include #include #define PORT 1234#define MAXSIZE 1024struct ARG{ int connfd; struct sockaddr_in

2013-04-12 14:23:56 858

原创 linux网络编程多进程并发服务器

服务器端:#include #include #include #include #include #include #include #include #define PORT 1234#define MAXSIZE 1024static int clientProcess(int connfd, struct sockaddr_in clientSoc

2013-04-12 13:59:23 1007

原创 基于select函数的单进程并发服务器程序----TCP

下面是一个简单的时间服务器程序。#include #include #include #include #include #include #include #include #include #define MAX_LISTEN 5 #define PORT 1234 i

2013-04-12 13:51:30 891

原创 select函数介绍

阻塞方式block,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回。使用Select就可以完成非阻塞non-block,就是进程或线程执行此函数时不必非要等待事件的发生,一旦执行肯定返回,以返回值的不同来反映函数的执行情况,如果事件发生则与阻塞方式相同,若事件没有发生则返回一个代码来告知事件未发生,而进程或线程继续执行,所以效率较高。

2013-04-12 13:47:11 757

转载 关于setsockopt和getsockopt函数

功能描述:       获取或者设置与某个套接字关联的选项。选项可能存在于多层协议中,它们总会出现在最上面的套接字层。当操作套接字选项时,选项位于的层和选项的名称必须给出。为了操作套接字层的选项,应该将层的值指定为SOL_SOCKET。为了操作其它层的选项,控制选项的合适协议号必须给出。例如,为了表示一个选项由TCP协议解析,层应该设定为协议 号TCP。用法:#includ

2013-04-12 13:34:51 691

转载 优化C语言代码

程序进行优化,通常是指优化程序代码或程序执行速度。优化代码和优化速度实际上是一个予盾的统一,一般是优化了代码的尺寸,就会带来执行时间的增加,如果优化了程序的执行速度,通常会带来代码增加的副作用,很难鱼与熊掌兼得,只能在设计时掌握一个平衡点。一、程序结构的优化1、程序的书写结构虽然书写格式并不会影响生成的代码质量,但是在实际编写程序时还是应该尊循一定的书写规则,一个书写清晰、明了的程

2013-04-11 15:35:34 729

转载 C语言编程时常犯十八个错误

C语言的最大特点是:功能强、使用方便灵活。C编译的程序对语法检查并不象其它高级语言那么严格,这就给编程人员留下“灵活的余地”,但还是由于这个灵活给程序的调试带来了许多不便,尤其对初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误。看着有错的程序,不知该如何改起,本人通过对C的学习,积累了一些C编程时常犯的错误,写给各位学员以供参考。1、书写标识符时,忽略了大小写字母的区别。m

2013-04-11 15:33:31 660

转载 mysql查询操作

一查询数值型数据: SELECT * FROM tb_name WHERE sum > 100; 查询谓词:>,=,,!=,!>,!,= 二查询字符串 SELECT * FROM tb_stu  WHERE sname  =  '小刘' SELECT * FROM tb_stu  WHERE sname like '刘%' SELECT * FROM tb_stu  W

2013-04-08 20:29:27 653

原创 makefile文件模板

linux下程序开发中,Makefile文件是一个很重要的工具文件。下面是简单的两个Makefile文件模板,大致可以按这样修改1、单个文件的Makefile文件模板CROSS_COMPILE = arm-linux- CC = $(CORSS_COMPILE)gccLD = $(CROSS_COMPILE)ldSTRIP = $(CROSS_COMPILE)strip

2013-04-08 20:15:07 865

原创 进程间通信之FIFO

管道使用起来很方便,但是没有名字,因此只能用于具有亲缘关系的进程之间进行通信,而有名管道就克服了这一点,FIFO管道提供了一个路径名与之相对应,即使进程不是亲缘进程,只要能访问到该路径就能使用FIFO进行通信。有名管道的创建:#include #include int mkfifo(const char *pathname, mode_t mode);第一个

2013-04-08 20:13:11 3474

原创 ipcs命令和ipcrm命令介绍

在进程间通信过程学习中,经常用到的两个命令:ipcs和ipcrm.查看ipc对象信息#ipcs查看全部ipc对象信息#ipcs -a查看消息队列信息#ipcs -q查看共享内存信息#ipcs -m查看信号量信息#ipcs -s删除IPC对象的ipcrmipcrm -[smq] ID 或者ipcrm -[SMQ] Key-q

2013-04-08 20:08:41 1013

原创 进程间通信之消息队列

在linux下有两种消息队列,一种是POSIX的消息队列,另一种是system v消息队列。system V消息队列使用消息队列标识符标识,在某个进程往一个队列中写入一个消息之前,不要求另外某个进程正在等待该队列上的一个信息的到达。对于系统中每个消息队列,内核都维护一个定义在头文件中的消息结构,结构定义如下:struct msqid_ds{    struct ipc_perm m

2013-04-08 20:07:01 697

原创 C语言中三大经典的排序算法

掌握好常用的排序算法,在实际的项目开发中可以节省很多的时间。每一种排序算法在执行的效率上是存在差别的,这些微小的时间差,也许在平常的联系当中感觉不到,但是涉及到数据量比较大或者是在资源比较紧张的系统中就显得尤其的重要,比如嵌入式系统。下面简要介绍三种常用的排序算法以及他们的执行效率的比较。冒泡排序:思路:将相邻的两个数比较,将较小的数调到前头;有n个数就要进行n-1趟比较,第一次比较中要进

2013-04-08 19:59:44 14383

原创 关于struct,union,enum三大复合数据类型

struct结构体struct声明一个结构体,它将一些相关联的数据打包成一个整体。首先看结构体占用内存空间的大小。struct student{ }stu;sizeof(stu)是多少?这里我们联想到前面讲到的模子的概念,大概就知道答案了。关于求结构体所占内存空间的大小,我们遵循字节对齐的原则,计算的出的结果是8的倍数。看下面的代码:struct stude

2013-04-08 19:54:04 7682 1

原创 struct tm时间和字节数之间的转换

在某些场合需要将时间存储格式压缩到4个字节,在字符串的时间和字节数的格式之间进行一个转换。短时间存储的格式:Time(HMS) /*时分秒*/ Bit Position0  1  2  3  45  6  7  8  9  AB  C  D  E  FLength(bit)56

2013-04-08 19:51:18 2518

原创 比较两个数的大小

比较两个数大小的方法    比较两个数大小的方法有很多种,如if、?:、switch等其他的判断语句。在这里看看其他的方法:            方法1、                        a=a+b;                        b=a-b;                        a=a-b;            方法2:

2013-04-07 21:27:19 1052

原创 strcpy和memcpy函数的实现

strcpy函数的原型为:char *strcpy(char *strDest,const char *strSrc) char *strcpy(char *strDest,const char *strSrc){ assert((strDest != NULL) && (strSrc != NULL)); char *address = str

2013-04-07 21:26:13 794

原创 linux下C实现cat命令

#include #include #include #include #include #include #include int cats(const char *filename);void print(const char *filename, struct stat *st);void mode_to_letters(int mode, char

2013-04-07 21:24:37 4921

原创 在linux下创建自己的命令

当我们自己编写了一个比较好的程序,比如说,我写了一个打印文件的cat命令,觉得比较好用,你想把他当系统命令来使用。只需要简单的步骤就可以实现。    将你编译好的程序可执行文件复制到/bin目录下面。仅此而已。     编写自己的man资源,很简单,你编辑(用vi或其它任何文本编辑工具都可以)一个cat文件,里面是你的命令使用方法说明,然后用gzip cat命令把这手册压缩一下生成一个

2013-04-07 21:23:12 1152

原创 嵌入式面试中遇到几道笔试题

嵌入式编程方面的问题:1、找出下面程序的错误 (一个中断服务子程序ISR)    interrupt double compute_area(double radius)    {        double area = PI *radius * radius;        printf("\nArea=%f",area);        return area;

2013-04-07 21:21:47 3790

原创 static关键字的作用

这个关键看似简单,但是在程序中却有很多的作用:    1、在函数体内,一个被申明为静态的变量在这一函数调用的过程中维持不变。    2、在模块内但是函数外,一个被声明为静态的变量可以被模块内所有函数访问,但是不能被模块外的函数访问。    3、他是一个本地的全局变量。在模块内,一个被申明为静态的函数只可被这一模块捏的函数调用,那就是,这个函数被限制在声明他的模块的本地范围内。

2013-04-07 21:20:11 612

原创 const和#define的用途和比较以及注意事项

const的用途:    不规范的说法:const意味着“只读”。    1、可以定义const变量    2、const可以修饰函数参数(输入参数)、返回值、甚至函数的定义体。被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。#define 宏定义:    宏定义中不能有分号,还有要注意宏定义中括号的使用。 const和#define都可以

2013-04-07 21:19:07 1031

原创 stat结构体以及文件状态相关函数

基本的stat结构体的大体组成成员如下:    struct stat    {        mode_t st_mode;  //文件类型或文件模式        ino_t st_ino;   //目录进入点的inode节点        dev_t st_dev;   //系统文件设备        dev_t st_rdev;  //特殊文件设备

2013-04-07 21:17:25 2607

原创 C语言实现的linux下ls命令

用C语言实现linux下的ls -l命令。与文件相关的结构体、函数等等知识请看"stat结构体以及文件相关函数"#include #include #include #include #include #include #include #include void do_ls(char *dirname);voi

2013-04-07 21:15:41 10765 4

原创 判断一个邮箱地址是否合格

主要使用的函数:memchr函数:在某一内存范围中查找一特定字符  #include   void *memchr(const void *s,int c,size_t n)  函数说明:函数从头开始搜索s所指的内容内存前N个字节,直到发现第一个值为c的字节,则返回  指向该字节的指针;  返回值:如果找到指定的字节则返回改字节的指针,否则返回0. 判断一个邮箱地址

2013-04-07 21:12:48 3325

原创 关于sizeof和strlen的使用

关于sizeof和strlen经常容易搞混淆,特别是初学者。 先看一个关于sizeof的应用的实例:    写出下面程序的答案:                         答案:4,11,100,400,4,3,4,6,8,4,4        1、ss1是一个指针,指针的大小是一个定值,就是4.        2、ss2是一个字符数组,这个数组的出事大小

2013-04-07 21:08:10 897

原创 BOOL,float,指针变量与零值比较的if语句

BOOL flag 与“零值”比较的if语句:标准答案:                                不良风格:    if(flag)                                       if(flag == TRUE)    if(!flag)                                      if(flag ==

2013-04-07 21:01:16 1075

原创 内存使用

在做嵌入式开发过程中,内存问题时时提醒着我们,小心小心又小心的使用者有限的内存。 内存分配方式:1、从静态区域分配。内存在程序编译的时候就已经分配好了,这块内存在程序的整个运行期间都存在。例如全局变量、static变量。2、在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配的运算内置于处理器的指令集中,效率很高,但是

2013-04-07 20:59:04 681

原创 关于x=x+1、x+=1、x++的执行效率问题

好久不来了,把最近遇到的一些问题贴出来,总结总结,增加自己对他们的记忆,欢迎各位网友不吝赐教! 关于x=x+1、x+=1、x++的执行效率问题是小弟在一次面试中以为面试官提及的。 x=x+1的效率最低,因为他的执行过程如下:1、读取右x的地址;2、x+1;3、读取左x的地址;4、将右值传给左边的x(编译器并不认为左右x的地址相同)x+=1其次,其执行过程如下

2013-04-07 20:50:46 881

原创 守护进程

UNIX操作系统为用户提供inetd daemon 进行网络服务管理。它将所有的后台应用程序置于它的管理之下,在客户端没有请求时,所有的后台应用程序都不启动,一旦客户端有特定的请求上来,它将根据/etc/services 和/etc/inetd.conf 文件描述的请求端口号和服务名调动相应的应用程序进行处理,而其它后台应用程序是不启动的。被启动的应用程序完成了特定任务后就终结自己的进程,这就减轻

2013-04-07 20:44:29 793

原创 嵌入式系统编程中的全局变量的使用

在嵌入式系统编程中,一般很少建议使用全局变量进行参数的传递,因为全局变量将破坏函数的封装性。并且会浪费一些内存,但是他至少还是有下面两个好处:1、节省了函数切换的开销——参数的入栈、出栈2、可以随时检测和控制内存的使用量,在编译过程中就可以知道程序运行时将占用多大的内存,如果使用堆或者是栈是不可能知道这些内容的。全局变量是不可冲入的。  嵌入式系统中参数的传递方式:当调

2011-12-20 09:21:16 2567

转载 linux下的sed命令

1.简介sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。具体过程如下:首先sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空间),然后处理临时缓冲区中的行,完成后把该行发送到屏幕上。sed每处理完一行就将其从临时缓冲区删除,然后将下一行读入,进行处理和显

2011-12-18 11:04:23 843

原创 linux下自动创建设备文件节点---class

在驱动模块初始化函数中实现设备节点的自动创建我们在刚开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点,实际上Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在/dev目录下创建相应设备节点,并在卸载模块时删除该节点,当然前提条件是用户空间移植了udev。内核中定义了struct class结构体,顾名思义,一个struct class结构体

2011-12-05 08:48:09 2718

转载 THIS_MODULE介绍

结构体struct module在内核中代表一个内核模块,通过insmod(实际执行init_module系统调用)把自己编写的内核模块插入内核时,模块便与一个 struct module结构体相关联,并成为内核的一部分。下面是结构体struct module的完整定义,接下来会逐个解释:    struct module    {        enum module_state s

2011-11-30 17:03:33 610

转载 windows和linux的比较

最近有关操作系统的讨论无论在法庭上还是在网上都是越来越热烈了。这种热烈气氛的出现自然是与操作系统巨头 Microsoft 脱不了干系的。法律界为是否该裁定并惩罚 Microsoft 在操作系统上的非法垄断行为而头疼,软件业界为如何抵御 Microsoft 君临天下的庞大攻势而失眠,而被 Microsoft 日益苛刻的版权限制惹恼了的个人和公司电脑用户也在思考是否还应该对 Microsoft 从一而

2011-11-28 08:46:20 620

JAVA程序设计教程课后习题答案

清华大学出版社出版 林巧民主编 JAVA程序设计课程 课后习题答案

2010-06-01

生活中的博弈论考试试题

江西农业大学2009-2010第一学期《生活中的博弈论》期末考试试题

2009-11-23

空空如也

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

TA关注的人

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