01 2013 档案

摘要:前面那篇关于字符统计的算法只能找出出现次数最多的一个字符,对于“aaabbb”这些有2个或以上的出现次数最多的情况无法全部找出来,于是做了一下改进,解决了这个问题。现在的算法并没有增加时间复杂度,但增加了空间复杂度。有什么问题欢迎交流。 1 #include <stdio.h> 2 #include <string.h> 3 4 5 //要统计的字符串 6 char *s = "abbbbccddddeeeegikgvvbdful697574999999eeeebrykjty478559454hhsdf"; 7 8 9 int main(void)1 阅读全文
posted @ 2013-01-18 20:34 lknlfy 阅读(599) 评论(1) 推荐(0)
摘要:一、要求 给定一个字符串,从字符串中找出出现次数最多的字符。二、实现 原理:利用数组来存储字符出现的次数,利用数组下标表示对应的字符。 1 #include <stdio.h> 2 #include <string.h> 3 4 5 //要统计的字符串 6 char *s = "aaffcsdf23aaaaa41678hjjmrfaaaaa"; 7 8 9 int main(void)10 {11 int len,i;12 int char_count;13 char c;14 //字符串中每个字符出现的次数,最多能表示128种字符(7位ASCI.. 阅读全文
posted @ 2013-01-15 10:53 lknlfy 阅读(766) 评论(2) 推荐(1)
摘要:wake on lan是一种网络唤醒功能,它可以实现远程开机,刚好实验室有一台ftp服务器,因为不是24小时开机的,所以每次开机都要跑过去用手按开关,非常麻烦,于是在网上找了下资料,自己实现了一把,并在windows下用Qt写了个简单的界面,以后想开服务器就方便了。原理就是源主机广播一个特殊的数据包给目的主机,前提是目的主机的主板支持wake on lan并在BIOS里已经设置好,还有就是要知道目的主机的MAC地址。这个特殊的数据包叫做magic packet,它由102个字节组成,最前面六个字节为0xFF,其他字节为目的主机的MAC地址(6个字节为一组,共16组),如下图所示: ... 阅读全文
posted @ 2013-01-12 17:36 lknlfy 阅读(2052) 评论(0) 推荐(0)
摘要:在很多应用中都需要应用程序主动去查询驱动中是否有数据可读或者是否可以向驱动写入数据,对于单线程的应用,这可能会导致进程阻塞。当然,可以使用select来不断轮询驱动是否可读或可写,但是这并不是很好的解决方法,更好的解决方式是由驱动主动通知应用程序其状态,而不是应用程序主动去查询驱动的状态。 异步通知就类似于回调,应用程序首先向驱动注册一个回调函数,然后应用程序就可以无阻塞地去做其他事情,当驱动认为其已经可以被写入或者被读取时就会调用应用程序之前注册的回调函数,从而实现异步通知。下面以一个简单的例子说明驱动中异步通知的用法。 新建eclipse工程,具体过程见前面的文章,编写异步... 阅读全文
posted @ 2013-01-09 13:22 lknlfy 阅读(1387) 评论(0) 推荐(0)
摘要:之前写Linux驱动都是在纯文本下完成的,最近发现原来可以使用Eclipse来开发,于是捣鼓了半天终于编译成功,感觉还不错。下面以Hello World驱动为例说一下使用Eclipse开发ARM-Linux驱动的过程。 关于Eclipse和CDT的安装就不说了。安装完Eclipse和CDT后,运行Eclipse,file->New->project选择C/C++里面的C Project,如下图:然后点击Next,填写工程名为hello和设置工程路径,设置如下:点击Next后再点击Next,填写交叉编译器前缀和交叉编译器路径,如下:然后点击finish,此时的工程结构如下图所示,.. 阅读全文
posted @ 2013-01-08 20:04 lknlfy 阅读(2611) 评论(0) 推荐(0)
摘要:这里说的继承有点像C++里的父类和子类,实际上是结构体类型的强制转换,最近看Linux内核源码时经常接触到这种方法,在这里就当作是一个简单的学习吧。 下面给出一个Demo,很简单,分别定义了一个father结构体和一个son结构体,father结构体里定义了2个整形变量,son结构体里的第一个成员是father结构体类型的变量,son里的另外2个成员也是整形变量,这样,son结构体就好像继承了father结构体,并增加了2个成员,代码如下: 1 #include <stdio.h> 2 3 //父结构体 4 struct father 5 { 6 int f1; 7 ... 阅读全文
posted @ 2013-01-06 21:55 lknlfy 阅读(6072) 评论(1) 推荐(1)
摘要:wmaster0是linux无线网络设备的主接口,根据官方说明,从linux2.6.32开始删除了这个接口,所以从linux2.6.32版本开始不会再看到这个接口,我们比较熟悉的是类似于waln0这种接口,因为简单来说,一个wlanx(0,1,2,…)接口就代表一张无线网卡。但是,在linux2.6.31以前,所有的发送操作(还有其他一些操作)都要通过wmaster0来实现,下面以ath5k驱动程序为例简单分析一些发送操作这个过程。 首先,从ieee80211_register_hw()函数看看wmaster0的注册过程:1 …2 mdev = alloc_netdev_mq... 阅读全文
posted @ 2013-01-04 14:47 lknlfy 阅读(1041) 评论(0) 推荐(0)