自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

清风雨溪的博客

提高自己,分享他人

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

原创 linux网络设备驱动DM9000驱动分析(1)

本文所分析的DM9000驱动,是基于platform设备模型的。网络驱动程序不再是对文件进行操作,而是由专门的网络接口struct net_device来实现。应用程序不能直接访问网络驱动程序,只能由网络字系统与它交互。此外,不像字符设备和块设备在/dev目录下有一个特殊文件来表示该设备,网络设备没有这样的入口点。首先,在网络驱动程序中,有两个很重要的结构体分别是net_device和sk

2015-07-04 10:09:59 876

原创 linux下的蓝牙驱动程序详解

1、首先要做Bluez协议栈的移植,这样在开发板上才可以用hciconfig, hcitool等命令。关于bluez协议栈的移植步骤网上很多。2、该驱动是USB蓝牙设备驱动,分析根据蓝牙驱动的写的顺序进行。因为只是要做数据的传输,所以讲用于语音的等时传输部分去掉了。首先,定义一个结构体struct bcm_data ={ struct usb_endpoint_descriptor

2015-06-29 21:51:07 17670 2

原创 Linux下的I2S驱动学习

1、I2S概述既然要学习I2S,就要想、首先知道他是干什么用的。I2S(Inter—IC Sound)总线, 又称 集成电路内置音频总线,是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准,该总线专责于音频设备之间的数据传输,广泛应用于各种多媒体系统。它采用了沿独立的导线传输时钟与数据信号的设计,通过将数据和时钟信号分离,避免了因时差诱发的失真,为用户节省了购买抵抗音频抖动的

2015-06-02 15:04:17 18233

原创 Linux的I2C总线驱动(I)

I2C(Inter-Integrated Circuit)总线是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备,是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。I2C子系统   为了方便i2c 设备驱动的开发,避免因为I2C 控制器的硬件差异而导致设备驱动的差异性,linux 对

2015-05-30 15:52:07 766

转载 浅谈bitmap算法

转自:http://weihe6666.iteye.com/blog/1184554浅谈bitmap算法久闻《编程珠玑》一书中提出的bitmap算法之大名,只是没有深入的去研究,今天下午有兴致研究一番,才知道其中的玄机奥秘,不亚于KMP算法之巧妙,下面就由浅入深的谈谈bitmap算法。 一、bitmap算法思想     32位机器上,一个整形,比如int

2016-07-14 14:49:30 830

原创 cocos2dx的命令行编译出现 error: undefined reference to ‘xxx’

在使用cocos2dx的命令行编译的时候,会出现 error: undefined reference to 'SceneManager::createLoadScene()'这样的错误。出现这种错误的原因是,我们自己自定义了一些额外的类,在Android.mk里面../../Classes只是头文件的搜索路径,并没有把我们自己写的那些文件放到编译的文件里面。这个时候就需要找到所建工程文件

2016-06-05 23:18:07 1464 1

原创 安装NET Framework 严重错误 回滚造成的失败问题

主要就是当我们安装失败的时候,这个时候提示信息里面会有一个安装日志,点击打开,将连接地址用IE进行打开,拖到最下面,我们可以看见有红色的提示信息。 根据这些红色是的提示信息,我们发现,他显示的是没有权利对这个文件(C:\windows\system32\msvcp110_clr0400.dll)进行操作,所以,这里我们就要搜索到这个文件,然后对

2016-06-04 21:26:35 6860

原创 输出运算符重载<<为什么一定要使用友元呢

因为当我们使用成员函数的时候,比如Coordinate operator+(const Coordinate &coor){Coordinate temp;temp.m_iX = this0>m_iX+coor.m_iX;temp.m_iY= this0>m_iY+coor.m_iY;return temp;}这种情况下,函数的参数里面,第一个参数其实是隐藏了一

2016-05-25 21:01:19 4294

原创 统计一个字符串中出现的子字符串的个数

int calString(string A) { unsigned int cnt = 0; string s = "coder"; string::size_type pos = 0; while((pos = A.find(s,pos))!=string::npos) { ++cnt;

2016-04-28 16:14:50 1595

原创 int ,long , long long的最大最小值

unsigned   int   0~4294967295   int   2147483648~2147483647 unsigned long 0~4294967295long   2147483648~2147483647long long的最大值:9223372036854775807long long的最小值:-9223372036854775808unsigne

2016-04-20 20:40:41 35897 1

原创 vector<pair<int,int> >的插入排序,字符串中子字符串个数查找

今天试了一下使用pair在vector中,没想到花了挺长时间的,先记录一下,免得以后忘记了。题目大意是寻找一个字符串中含有的子字符串个数,根据出现的频率降序输出原来的字符串,同时若是频率相同,则按照原来的顺序输出,所以这里需要使用稳定排序。往vector中插入pair的时候,使用make_pair(cnt,ix)构建pair。bool cmp(const pair &a, const

2016-04-18 14:48:22 3841

原创 关于C++的getline换行符的问题

例如    string s;    char a;    cin>>a;    cout     getline(cin,s);    cout 当输入num之后就直接输出a的值了, 并不能输入s。而当我们输入aaa bbb的时候,输出的结果是aaa bbb.       这是因为stdin是缓冲式输入,必须在输入换行后才读入num.但是它只把第一个字

2016-04-16 14:22:59 8596

原创 C++中的const_interator

当我们做出如下定义时vector ids;vector::const_iterator iter;并进行了下面的操作,则是正确的 for(iter = ids.begin();iter!=ids.end();++iter) { cout<<(*iter).name<<" "<<(*iter).score<<endl;}但是当我们进行下面的操作时,则是

2016-01-18 21:24:26 884

原创 动态规划初体验

动态规划在有很多的资料,也看了不少,大部分都在说状态转移方程怎么提炼,但是一直都没有弄清楚。模模糊糊的算是理解一点了吧,做下动态规划的笔记。首先,对于动态规划的题目一般有以下几种::线性动规:拦截导弹,合唱队形,挖地雷,建学校,剑客决斗等;区域动规:石子合并, 加分二叉树,统计单词个数,炮兵布阵等;树形动规:贪吃的九头龙,二分查找树,聚会的欢乐,数字三角形等;背包问题:01背包

2016-01-15 16:58:27 574

原创 C++笔记--返回对象还是返回引用

我们发现,在C++中,有些成员函数返回的是对象,而有些函数返回的又是引用。返回对象和返回引用的最主要的区别就是函数原型和函数头。Car run(const Car &)     //返回对象Car & run(const Car &)   //返回引用        返回对象会涉及到生成返回对象的副本,这事调用函数的程序可以使用的副本,因此,返回对象的时间成本包括了调用复制构造函数

2016-01-13 17:14:28 8964

原创 C++按值传递对象和传递引用的选择

在我们看到的程序中,发现大多数的参数传递是采用引用传递,这是为什么呢?     通常,使用对象作为参数的函数时,应按引用而不是按值来传递对象,这样可以有效的提高效率。因为按值传递的时候,将会涉及到调用拷贝构造函数生成临时的拷贝,然后又调用析构函数,这在大型的对象上要比传递引用花费的时间多的多。当我们不修改对象的时候,应当将参数声明为const引用。此外,按引用传递,在继承使用虚函数的时

2016-01-13 16:47:17 1278

原创 关于使用C++的成员初始化列表

初始化列表以冒号开头,后跟一系列以逗号分隔的初始化字段。它位于参数列表的右括号之后,函数体的左括号之前。class Animal{public: Animal(int age); ~Animal(); void setAge(int age); int getAge() const;private:

2016-01-08 16:18:32 760

原创 scanf和gets的区别

今天在网上做一道题时偶然发现,原来gets竟然比scanf快。以下是程序运行时间对比:Gets的: (30ms)#include #include  int main(){    int from,end,l;    char str[5];    char t;    while(gets(str))    {

2015-12-02 09:34:05 908

原创 深度优先搜索——毕业BG

深度优先搜索就是通过递归对所有的点进行遍历操作,同时对已经访问的点进行标记,逐步进行。当发现有点已经被访问过了的时候,则退回到上一层点,同时将标记点取消标记。另选一个未曾访问过的点重新开始,直到遍历了所有的点。OJ题目题目描述:    每年毕业的季节都会有大量毕业生发起狂欢,好朋友们相约吃散伙饭,网络

2015-11-25 21:51:11 1165

转载 C语言标准库函数qsort

qsort包含在头文件中,此函数根据你给的比较条件进行快速排序,通过指针移动实现排序。排序之后的结果仍然放在原数组中。使用qsort函数必须自己写一个比较函数。函数原型:void qsort ( void * base, size_t num, size_t size, int ( * comparator ) ( const void *, const void * ) );

2015-11-20 15:46:50 516

原创 找到一个数的所有字典序即字符串的全排列

字典序:对于数字1、2、3......n的排列,不同排列的先后关系是从左到右逐个比较对应的数字的先后来决定的。例如对于5个数字的排列 12354和12345,排列12345在前,排列12354在后。按照这样的规定,5个数字的所有的排列中最前面的是12345,最后面的是 54321。字典排序算法:1、首先我们对整个序列进行一个快速排序,

2015-11-20 15:20:36 2665

原创 面试经典题目:字符串翻转I am a student

题目:写一个函数,将字符串翻转,翻转方式如下:“I am a student”反转成“student a am I”,不借助任何库函数,要求单词内字符的顺序不变,句子中单词以空格符隔开。思路:先反转整个字符串,然后再反转字串。譬如先将“I am a student”反转为“tneduts a ma I”,然后再对每个字串(空格分割)反转一次。 代码:#include #inc

2015-11-18 15:15:09 5645

原创 staitc用于函数内部和函数外部的不同

1、当static用于函数内部时,例如static int i;当函数执行完后,i不会被释放,下一次调用函数时,i的值会保留上次的值继续使用。程序如下:#include #include void func(){ static int i=0; int j=0; i++; j++; printf("i: %d, j: %d \n",i,j

2015-10-26 23:01:17 1892

原创 数据结构之快速排序

快速排序算法是冒泡排序算法的改进,与冒泡排序类似,快速排序也是通过交换逆序元素来进行排序的。不同的是,冒泡排序的交换是相邻的,而且快速排序一次交换就可以消除多个逆序元素。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

2015-10-26 22:23:52 604

原创 数据结构之直接插入排序、折半插入排序、希尔排序算法

直接插入排序:我们的记录本身就是基本有序的,我们只需要少量的插入操作,就可以完成整个记录集的排序工作,此时直接插入很高效。还有就是记录数比较少时,直接插入的优势也比较明显。void InsertSort(int b[],int n) //直接插入排序{

2015-10-23 16:29:04 5841

原创 二叉树的创建和前序中序后序遍历

二叉排序树或者是一棵空树,或者是具有下列性质的二叉树:(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;(3)左、右子树也分别为二叉排序树;(4)没有键值相等的节点。       二叉树是最为常用的数据结构,它的实际应用非常广泛。二叉树的遍历方式有三种,前序遍历、中序遍历、后序遍历。先序遍历的

2015-10-18 20:49:34 823

转载 一名平庸程序员的自白

一名平庸程序员的自白作者:阿兰·诺顿(Alan Norton)翻译:Purple Endurer分类:开发者,编程标签:程序员,编程,开发工具,软件开发,软件/网站开发,阿兰·诺顿  导读:阿兰·诺顿揭示了他作为一名平庸程序员的生存之道:如何让自己一般般的编程技能发挥出最佳效果。    我一直以编写代码为乐,起因并不是我精于此

2015-10-08 16:17:07 1569 1

原创 图像处理之C语言实现二维卷积

在用C语言实现图像处理中,经常要用到二维卷积的运算,这个在matlab中是非常容易实现的,只需要conv2()就OK啦,而且速度非常的快。但是在C语言中就需要四层的for循环来实现了。首先二维卷积的原理是:       1 2 3               2 2 2 A= 1 2 3         B= 1 1 1      1 2 3               3 3 3

2015-09-29 14:31:15 11189 2

原创 Java学习之封装

什么是封装?封装把对象的所有组成部分组合在一起,封装定义程序如何引用对象的数据,封装实际上使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。使用封装的好处:          1、良好的封装能够减少耦合。          2、类内部的结构可以自由修改。          3、可以对成员进行更精确的控制。          4、隐藏信息,实现细节。1、属性封装

2015-09-03 15:31:10 648

转载 JAVA学习步骤指导

java分成J2ME(移动应用开发),J2SE(桌面应用开发),J2EE(Web企业级应用),所以java并不是单机版的,只是面向对象语言。建议如果学习java体系的话可以这样去学习: *第一阶段:Java基础,包括java语法,面向对象特征,常见API,集合框架; *第二阶段:java界面编程,包括AWT,事件机制,SWING,这个部分也可以跳过,用的时候再看都能来及; *第三阶段:

2015-09-02 16:05:34 555

原创 Java学习之排序

1、冒泡排序法。冒泡排序法就是对一组数字进行相邻的两两比较,一轮排序后,会将最大的数放到最后(为了方便说明这里按照从小到大的规则)。比如:一组数字:19 13 15 10 12 17 14,我们对他们进行从小到大的排序。这组数字共有7个,所以最多需要7-1次就可以排序完成,设为i。当i=0时:19 13 15 10 12 17 14 (原数组)13 19 15 10 12

2015-09-02 15:30:08 494

原创 java学习之String

Java中有一种表示字符串的数据类型String,从其首字母大写可以看出,这是一个类,属于引用数据类型,但是这个属于系统类,在使用上有一些注意事项:(1)String 可以像普通变量那样直接通过赋值的方式进行声明,字符串使用“”括起来。两个字符串之间可以使用“+”号进行连接。(2)任何数据类型与String类型的量相处理后都会转换为String类型。如:public class S

2015-09-01 17:30:33 435

原创 二维数组作为参数传递的问题

1、当我们使用二维数组作为参数传递的时候,所传递的二维数组的第二项必须为一个常数,否则编译不能通过,如int a[][3];例如:#include#define N 3int turn(int a[][N]) //注意此处{ int i,j,temp; temp=0; for(i=0; i<N; i++) { for(j=0; j

2015-08-03 20:08:18 1127

转载 c语言中冒泡排序、插入排序、选择排序算法比较

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

2015-07-29 20:41:10 2029

原创 linux网络设备驱动DM9000驱动分析(4)

转载请注明出处:http://blog.csdn.net/gotowu/article/details/4632980914、接受数据在中断函数中,我们可以看到调用了dm9000_rx。接收数据并存入skbuff,并提交协议上一层。(1)首先看看下面这个结构体,这个结构体按照DM9000的接收格式封装了dm9000接收的数据包信息 struct dm9000_rxhdr {

2015-07-06 19:58:35 1068

原创 linux网络设备驱动DM9000驱动分析(3)

转载请注明出处:http://blog.csdn.net/gotowu/article/details/4632980910、DM9000驱动中有两个中断函数,dm9000_interrupt和dm9000_wol_interrupt(1)dm9000_interrupt:触发中断的时机发生在:1)DM9000接收到一个包以后。2)DM9000发送完了一个包以后static

2015-07-06 19:32:39 952

原创 linux网络设备驱动DM9000驱动分析(2)

转载请注明出处:http://blog.csdn.net/gotowu/article/details/463298094、dm9000_drv_remove 将设备从内核移除,并释放内存区域。 dm9000_drv_suspend 函数并不真正把设备从内核中移除,而是使用netif_device_detach来标志设备为removed状态。dm9000_drv_resume 函数将挂

2015-07-06 19:03:25 645

转载 USB 描述符详解

USB描述符的分类与介绍USB的符述符分为几类?有人可能会答:设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符等。但这里说的不是这样的。上面的几类描述符属于USB标准描述符。另外还有HID描述符和Hub描述符。所以分类是这样的:1. 标准描述符            1) 设备描述符             2) 配置描述符             3) 字符串

2015-06-29 22:14:13 943

转载 Linux使用蓝牙连接设备

今天我们介绍如何在Linux上通过命令使用蓝牙:由于本人的笔记本没有带蓝牙,所以我买了一个usb接口的蓝牙适配器,运行如下命令,就可以开到我们的蓝牙设备了(第二行):lsusb运行hciconfig可以看到:从上图可以看出,我们的蓝牙设备是hci0运行hcitool dev可以看到我们的蓝牙设备的硬

2015-06-19 17:10:39 10899 3

转载 Linux内核编程接口函数

原文链接 http://blog.csdn.net/drivelinux/article/details/8656280字符设备相关函数1.alloc_chrdev_region()功能: 自动分配一个主设备号及基于此主设备号的若干个连续的指定数量的次设备号。函数原型如下:[cpp] view plaincopy

2015-06-02 21:07:00 943

百度校招笔试面试题

百度校园招聘笔试面试题目,涵盖大多数职位

2016-04-14

linux下的platform驱动

linux下的platform驱动,包含有mini2440和linux3.5下的4412

2015-06-04

空空如也

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

TA关注的人

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