- 博客(47)
- 资源 (1)
- 收藏
- 关注
原创 DSP入门知识
偷偷滴找个实习工作,要弄DSP,从零开始,整理了些入门知识,包括网摘的和书上摘的,和初学者共勉一下。主要的DSP芯片种类1.TI公司的DSP芯片对于TI的DSP系列产品介绍如下:1) C5000系列(定点、低功耗):相比其它系列的主要特点是低功耗,所以最适合个人与便携式上网以及无线通信应用,如手机、PDA、GPS等应用。处理速度在80MIPS-- 400MIPS之间。C5000系列
2012-05-11 16:43:34 14166 2
原创 RF2401在6410开发板linux系统下的驱动(一)
(一)6410在linux下spi驱动及测试 还有2周就过年了,学校的事没有进展,弄点自己想弄滴,手头有一块RF2401的无线模块,之前是在arm9的裸机用了一下,现在想通过6410开发板来使用这个无线模块,因为无线模块式spi接口的,板子下/dev没有对应的设备,先将spi驱动编译进入内核 主机: ubuntu 2.6.32开发板:友善之臂6
2011-12-28 22:22:25 2620 3
原创 开发板运行aodv算法
下午在开发板运行了aodv算法,过程如下: 环境: 主机 ubuntu 10.04 2.6.32 开发板 友善之臂的6410 2.6.38 查看无线网为wlan0[root@FriendlyARM /]# iwconfig lo no wireless extensions. eth0 no
2011-11-04 19:03:23 2469 4
原创 交叉编译aodv路由算法
交叉编译aodv路由算法将aodv路由算法移植到友善之臂的6410开发板上这个aodv算法可以在内核版本为2.6.32的ubuntu环境下直接运行编译通过。友善之臂的6410开发板的内核是2.6.38 首先搭建好arm-linux-gcc编译环境友善之臂的6410光盘附有搭建方法:Step1:将光盘Linux 目录中的arm-linux-gcc-4.5.1-v6-
2011-11-04 15:37:33 3451 1
转载 linux重要头文件
1、 一些头文件的作用::ANSI C。提供断言,assert(表达式):GCC。GTK,GNOME的基础库,提供很多有用的函数,如有数据结构操作函数。使用glib只需要包含:GCC。文件夹操作函数。struct dirent,struct DIR,opendir()
2011-09-25 11:27:12 739
原创 《c++程序性能优化》——操作系统的内存管理
<br />第5章 操作系统的内存管理<br /> 长期以来内存是重要的计算机资源。在内存有限的情况下,虚拟内存的技术就引入了。<br /> <br />~window内存管理 ~ <br /> win32为每一个win32进程提供了私有且基于页的4GB(32位)大小的线性虚拟地址空间<br /> 2进程工作集 <br /> 频繁的调页操作会引起磁盘i/o,会大大的降低程序的运行效率对于每一个进程,虚拟内存管理器都会将其一定的内存驻留在内存里,并跟踪性能指标。工作集会动态变化的,如果所执行
2011-03-03 15:32:00 859
原创 《c++程序性能优化》——常用数据结构性能分析
第4章 常用数据结构性能分析1从遍历,插入,删除,排序,查找5个基本操作,分别对数组,链表,哈希表和二叉树的性能做分析。~遍历~数组:遍历很容易,无论升序和倒序,而且初始位置从任意K开始。链表:通过跟踪指针的方式来完成整个链表的遍历。双向连链表课以支持升序和倒序。哈希表:如果我们事先知道Key值,可以通过哈希函数来找到非空的桶,进行遍历,否则的哈遍历哈希数组的方式访问每个桶。二叉树:有三种方法,前序,中序,后序。递归实现遍历。随着树的深度的增加程序对栈的使用越多,而栈是有限空间的。~插入~数组:插入新节点西
2011-03-02 17:15:00 1868
原创 《c++程序性能优化》——c++中语言特性中的性能分析
第三章 c++中语言特性中的性能分析1构造函数和析构函数调用构造函数的顺序(1)递归从父类对象开始(2)然后是成员变量(3)执行函数构造函数堆和函数体创建对象一般有两个方式(1)从线程的栈中创建,也成为局部对象 { ..... Object obj; ..... }(2)从全局堆里创建。 { ..... Object* obj=new Object; ..... delete obj; ..... } 2继承和虚拟函数 怎样写动态绑定的继承体系。
2011-03-01 20:52:00 796
原创 《c++程序性能优化》——C++对象模型
第二章 C++对象模型 ~内存区~一般分为以下五个部分1全局/静态变量区2常量数据区3代码区4栈5堆全局变量和静态变量,以及局部的静态变量储存在全局/静态变量区。字符串存储在常量数据区,而且是4个字节对齐的。程序中的其他字符串常量,如printf()中函数中的格式串,也是存储在常量数据区中。通过new和malloc或得的内存是在堆中的内存。堆上分配内存是以16字节对齐的。~全局/静态变量区和常量数据区~全局/静态变量区和常量数据区是程序编译阶段已经分配好的,在整个程序运行的过程中是始终存在的,用于存储全局变
2011-02-28 18:41:00 1017
转载 关于23种设计模式的有趣见解
<br />关于23种设计模式的有趣见解 <br /> 创建型模式 <br /> 1、ABSTRACT FACTORY—追MM少不了请吃饭了,麦当劳的套餐和肯德基的套餐都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“两个B套餐”就行了。麦当劳和肯德基就是B套餐的Absctract Factory, B套餐里含有汉堡, 鸡翅和饮料. 麦当劳或肯德基会根据B套餐的规格, 让汉堡Factory, 鸡翅Factory, 饮料Factory分别生产对应B套餐的材料. <br
2011-02-23 16:01:00 566
原创 多机器人初始化程序
<br />#include "Aria.h"<br />int main(int argc, char** argv)<br />{<br /> int ret;<br /> std::string str;<br /> <br /> // get hostnames and port numbers for connecting to the robots.<br /> ArArgumentParser argParser(&argc, argv);<br /> char* host1 = a
2010-12-06 18:30:00 1334 1
原创 机器人圆形队列算法(待完成2)
<br />最近学习上的事比较多,复习随机过程,还有准备今天下午计算机系统机构的讲课,最主要是这个机器人圆形队列算法的具体函数实现写了加起来有10来个小时吧,今天终于把一些难点搞定,之前总没有意识到八个声纳是有角度的,每次测坐标的时候都没有加修正值,走了很多了弯路,现在到了正轨,还有对于机器人自我坐标清零函数一直没有在开发库里找到,害的我在几千行的开发库的原cpp文档找对应的函数,眼睛都为此上升的几度,最中和巧合的在用户培训手册看到了这个函数接口,众里寻他千百度,得来全不费工夫哈,程序还没完成,但都是一些小
2010-12-01 22:06:00 1816
原创 机器人圆形队列算法(待完成)
ArActionKeydrive control;ArPose min_pose;ArPose max_pose;ArPose var_pose;ArPose mid_pose;ArPose ori_pose; //原点 originint min,max,var;int i;int r; //期望的半径int v; //一次最多移动的距离while(1){min=5000;max=0;for(i=0;i{ control.left(); //左转一度 for (i = 0; i
2010-11-21 20:38:00 906
原创 对机器人队列形成问题
xiaoping yun分析了一种圆形队形形成算法:Step1 决定出距离自己最远和最近的机器人Rf和RcStep2 计算出从它当前的位置到Rf和Rc连成线段的中点Pm之间的距离dStep3 当d-r>0时朝着Pm移动距离min(d-r,v);否则,机器人远离Pm移动min(r-d,v)。其中v是机器人一次能移动的最大距离,r是系统希望完成的距离。
2010-11-16 20:47:00 620
原创 神一般的const
const在前面 1 const int n; //n是const 2 const char *p; //*p是const, p可变 3 const (char *) p;//p是const,*p可变 4 const char* const p; //p和*p都是const const在后面,与上面的声明对等 5 int const n.; // n.是const 6 char const * p.;// *p.是const, p.可变 7 (char*) const p.;// p.是const,
2010-11-15 21:54:00 685 1
原创 花了一晚上的时间把程序调通~~~~
今天这个程序花时间好长啊有了一点程序的心得1。一定要先懂得程序的架构,这样才能事半功倍2。良好的书写习惯是必须的3。在类里面的函数实现用写在程序最后的显示方式书写4。括号要写清楚5。变量名不要起类似的6。函数的参量是不是指针要清楚代码如下:#include#include#includeusing namespace std;//中间层计数类class Expr_node {friend ostream& operatorfriend class Expr;public:int use; //计数器vi
2010-11-13 22:23:00 767
原创 多机器人操作平台
今天实际测试了一个自己以前在仿真环境下写好的多机器人操作,内容是一个控制,一个漫游。又一次小有成就感。哈哈~~代码如下:#include "Aria.h"ArActionGroup *teleop;int main(int argc, char** argv){ int ret; std::string str; // get hostnames and port numbers for connecting to the robots. ArArgumentParser argParser(&ar
2010-11-13 11:07:00 831
原创 《c++沉思录》-day3
今天看到第八章 一个面向对象的程序范例1问题描述我们希望将四则运算的表达式来调用合适的函数来创建一个数(-5)*(3+4)为 * / / - + / / / 5 3 4这样的树2面向对象的解决方案 我们需要一个类来表示节点这个概念,这个类并不是一个具体的节点,我们所有的实际的类型都将从这个公共的基类派生出来。class Expr_node { friend ostream& operatorprotected:
2010-11-13 10:55:00 632
转载 静态绑定和动态绑定
C++中,非虚函数都是静态绑定,而虚函数却是动态绑定。 为了能够更清楚地了解静态绑定与动态绑定,我们可以看下面这个例子:#includeusing namespace std;class B{public: void fun(){ cout} };class D: public B{public://void fun()//{ //cout//} };int main(){D x; B *pB = &x; pB->fun();
2010-11-12 12:17:00 612
原创 关于进程
看到ppt有几段话,关于进程的,讲的很犀利,照抄如下Fork()-父亲克隆一个儿子。执行fork()之后,兵分两路,两个进程并发执行。Exec()-新进程脱胎换骨,离家独立,开始了独立工作的职业生涯。Wait()-等待不仅仅是阻塞自己,还准备对僵死的子进程进行善后处理。Exit()-终止进程,把进程的状态置为“僵死”,并把其所有的子进程都托付给init进程,最后调用schedule()函数,选择一个新的进程运行。 随着一句fork,一个新进程呱呱落地,但这时它只是老进程的一个克隆。然后,随着ex
2010-11-10 22:03:00 637 1
原创 《c++沉思录》day2
今天上课偷偷看了几章,总结一下~第五章 代理类 我们需要设计一个容器,有能力包含类型不同而彼此相关的对象,使用代理的方法来实现而且surrogate是handle的基础代理类的大致的框架是~有一个父类,是一个抽象基类,并派生出子类,子类在父类的基础上派生出更多的功能,我们的目的是要将不同的子类对象用一个容器来实现操作,建立一个代理类,其中的一个成员变量是指向抽象基类的指针,在建立容器时使用代理类在继承和容器共用,迫使我们来处理两个问题,控制内存分配和把不同的类型和对象发在同一个容器中,采用基础的c++技术,
2010-11-10 20:24:00 710
原创 《c++沉思录》学习笔记 day1
这本书开头自我介绍是一本关于思想的书,看了几章,也体会到了作者给读者要表达的不是c++语言的技术细节,而是在c++语言的基础上面向对象的一些思考,和编程注意的问题 前三章讲了c与c++的区别和联系,主要是说明c语言的局限性和c++的便利性第四章 核查表,用途是帮助你回忆你可能忘掉的事情程序员需要考虑的一些事(核查表):·你的类需要一个构造函数么? 复杂的类需要构造函数·你的数据成员是私有的么? 公有的数据成员不是什么好事·你的类需要一个无参的构造函数么? 如果类有了非无参的构造
2010-11-09 21:05:00 541
原创 《c++必知必会》学习心得——day4
条款42 智能指针是对c++语言的一种扩展智能指针式一个类型,他乔装打扮为一个指针,并提供了内建指针无法提供的功能,也就是说,一个智能指针就是使用类的构造函数,析构函数,和复制操作符所所提供的功能来控制或跟踪他所指向的东西的访问,他的应用有资源句柄和auto-ptr到stl迭代器从计数指针到指向成员函数的指针包装器条款43 auto-prtauto-prt是一个一个类模板,用于生成具体的智能指针auto_ptr源码 template class auto_ptr{public: explicit au
2010-11-05 21:52:00 590
原创 《c++必知必会》学习心得——day3
条款34 禁止或强行使用堆分配背景知识:内存分四个区局部变量: 栈区局部静态变量:静态区全局变量: 静态区的常量区全局静态变量:静态区内存分四个区:静态区,栈区,堆区,代码区 有时候,知名一些特定的类的对象不应该被分配到堆上是个好主意,用的方法就是:将new 和 delete 定义在protect成员变量下和private下条款 35 placement new placement new 是重载operator new 的一个标准、全局的版本,它不能够被自定义的版本代替(不像普通版本的oper
2010-10-31 21:02:00 514
原创 《c++必知必会》学习心得——day2
条款 17 处理函数和数组声明指向函数的指针声明也指向数组的指针声明容易混淆,原因在于函数和数组修饰符的优先级比指针修饰符的优先级高,所以通常要圆括号int *f1(); 一个返回值为int的函数int (*fp1)(); 一个指针,指向一个返回值为int的函数const int N=12;int *a1[N]; 一个具有N个int*元素数的数组int(*ap1)[n]; 一个指针,指向有N个int元素的数组条款 18 函数对象函数对象就是常规的类对象,但是可以采用逼标准的函数语法来调用它的oper
2010-10-26 17:05:00 605
转载 初始化与赋值
<br />区别说明:赋值操作是在两个已经存在的对象间进行的,而初始化是要创建一个新的对象,并且其初值来源于另一个已存在的对象。<br />int a=12 ; //初始化, copy 0X000C to a <br /> a =12 ; //赋值, copy 0X000C to a<br /><br /><br /><br />1、静态变量在定义时未显式地指定初值,则自动初始化为相应类型的零值(数值型为0或0.0;字符型为'/0'),即静态变量能够自动初始化(有称之为隐式初始化),且静态变量只初始化一次。
2010-10-25 21:10:00 1808
原创 《c++必知必会》学习心得——day1
条款5 引用和指针的区别: 1不存在空引用; 2所有引用要初始化; 3一个引用永远指向对他初始化的对象;理解一个引用是就是该引用被初始化之前的已存在的一个对象的别名。一旦一个引用被初始化去指向一个对象,那么该引用以后就不能指向其他别的对象;在一个引用周期内,该引用绑定在用于初始化的那个对象上;这样的属性使得成为函数形参的优秀选择。一个指向非常量的引用是不可以用字面值或临时值所初始化的当然指向常量就没事了 注意:一个指向常量的引用采用一个字面值初始化,该引用实际设置为“采用该字面初始化”的一个临时值;con
2010-10-25 19:17:00 563
原创 我的纠结机器人程序初步搞定啦,很充实
作为一个菜,通过自学完成了老师给的目标,小有激动,最要感谢的网上一个多线程的程序给我的灵感。代码如下:#include "stdafx.h"#include #include #include #includeusing namespace std;int num = 100; //模拟售票系统,共100张票DWORD WINAPI Fun1(LPVOID lpParameter){ while (num != 0) { cout num -= 1; Sleep(500); } retu
2010-10-19 20:37:00 535
转载 一个linux c++的学习大纲
Linux/UNIX C++全科班 * 培养目标:Linux/UNIX C++高级软件工程师 专注Linux/UNIX服务器端的软件开发(后台开发),培养企业所需的专业Linux/UNIX C++高级软件工程师。 课程涉及服务器端软件开发的方方面面:Linux/UNIX、C++、Boost、ACE、Shell编程、Oracle/MySQL、数据库建模、UML建模、项目实践、开发模式等等。我们希望从轩辕毕业的学员不仅是Coder,而且应该是Designer!http://www.xu
2010-10-18 18:29:00 647
转载 一个关于容器使用的段子 学习一下
#include #include #include using namespace std;template istream& operator>>(istream& is, vector& vec){ T temp; while (is >> temp) vec.push_back(temp); return is;}template ostream& operator& vec){ typename vector::const_iterator first = v
2010-10-17 21:35:00 473
原创 C++自动提供的成员函数
重新梳理一下知识C++自动提供的成员函数,有:默认构造函数,复制构造函数,默认析构函数,赋值操作符,地址操作符即this指针1默认构造函数c++可以在将创建对象的初始化工作放在函数体内完成特点:a构造函数是与所在类同名的函数 b构造函数没有返回值 c构造函数可以重载 d构造函数的作用是为类对象的数据成员赋初值 e构造函数又定义类对象时由系统自动调用,不许像其他函数一样直接由用户调用 f构造函数一般是类的public成员 g系统默认的构造
2010-10-17 21:03:00 632
原创 运算符前置++和后置++的重载
今天学习了一下运算符前置++和后置++的重载函数的头如下const Counter& operator++(); // prefix const Counter operator++(int); // postfix 有两个区别一个是返回值的引用因为在postfix函数中,返回的是一个函数内部的临时的变量,如果使用引用时不能正确返回,所以使用非引用一个是参数问题在Postfix中的参数int实际上没有传入值的意义,作用是为了区别前置和后置,也就是告诉编译器这是
2010-10-17 16:40:00 720
转载 C++中extern “C”含义深层探索C++中extern “C”含义深层探索
1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显的不同。 2.从标准头文件说起 某企业曾经给出如下的一道面试题: 面试题 为什么
2010-10-16 21:24:00 515
转载 C++一维数组与指针
#include "stdafx.h"#include #include #includeusing namespace std;//C++一维数组与指针void main(){ int a[10]; cout cout cout cout cout cout Sleep(100000);
2010-10-16 19:51:00 526
转载 c++ 内存对齐
这是原来研究内存对齐的时候在网上看到的一篇文章,希望对你有用,不过内存对齐你大概明白,对于简单的能计算就行,因为有的时候笔试会出这个。1:数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小的整数倍开始(比如int在32位机为4字节,则要从4的整数倍地址开始存储。2:结构体作为成员:如果一个结构里有某些结构体成员,则结构体成员要从其内部最大元素大小的整数倍地址开始存储.(struct a里存有stru
2010-10-15 10:04:00 514
原创 c++中对父类的初始化
在构造函数的参数列表右边括号后面,花括号前面,可以用冒号引出构造函数的调用表,该调用表可以省略类型名称,但可以有常见对象的作用。#include "stdafx.h"#include #include #include #includeusing namespace std;//C++一维数组与指针class StudentID{ int value;public: StudentID(int id=0) { value=id; cout }};class Student{ string name; S
2010-10-14 21:56:00 3511
转载 浅谈C++命名规则
匈牙利命名法的来历和介绍分类:C Plus Plus 匈牙利命名法是一种编程时的命名规范。基本原则是:变量名=属性+类型+对象描述,其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部分。命名要基于容易记忆容易理解的原则。保证名字的连贯性是非常重要的。 举例来说,表单的名称为form,那么在匈牙利命名法中可以简写为frm,则当表单变量名称为Switchboard时,变量全称应该为 frmSwitchboard。这样可以很容易从变量名看出Switchboard是一个表单,同样,如果
2010-10-14 12:22:00 892
转载 你必须知道的.NET》 - 学习方法论
1、基础至上 再花哨的应用,再绝妙的技巧,其实都架构在技术基础的基础上,没有对技术本质的深入理解,何来更进一步了解其他。所以必须要坚持,不放弃枯燥,从基础开始踏踏实实的学习基础,这是一个由量到质的飞跃,就.NET来说,了解CLR运行机制,深刻的认识内存管理、类型系统、异常机制,熟悉FCL基本架构,学习C#语言基础,认识MSIL、元数据、Attribute、反射、委托,面向对象和设计架构,都是必不可少的基础内容。Don Box, Chris Sells, 《Essential .NET》,一本圣经,深刻
2010-10-14 12:21:00 858
转载 System.Threading
System.Threading命名空间是.Net多线程编程的基础。对于多线程编程在实际工作中一直用的不多,所以了解也就不多。尽管如此,随着多核,多个cpu的出现,大计算量的需要,多线程将越来越受关注。所以打算写个系列博客,以便更多的了解学习多线程的知识。听说.Net4.0中有一个更方便多线程的类库,可惜还没真的见识过,先熟悉System.Threading就当“温故而知新”了第一篇:从Thread的线程单元状态ApartmentState说起ApartmentState是一个枚举变量,用来设置线程的单元状
2010-10-14 12:19:00 659
转载 OnDraw(CDC* pDC)
OnDraw(CDC* pDC)函数对应用程序窗口的客户区进行绘图的所有代码都必须写在这个函数中TextOut(int x,int y,CString& str)函数参数x为文本显示在应用程序窗口用户区的水平位置参数y为文本显示在应用程序窗口用户区的垂直位置str为要显示的字符串,他是一个CString类的对象; pDC->TextOut(50,50,"asdadsda");设置文本颜色virtual COLORREF SetTextColor(COLORREF crColor);参数crColor是要使用
2010-10-14 12:18:00 7673 3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人