经验积累
skywalker_leo
hello
展开
-
构造函数为什么不能是虚函数?
1. 从存储空间角度,虚函数对应一个指向vtable虚函数表的指针,这大家都知道,可是这个指向vtable的指针其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,怎么找vtable呢?所以构造函数不能是虚函数。2. 从使用角度,虚函数主要用于在信息不全的情况下,能使重载的函数得到对应的调用。构造函数本身转载 2015-08-07 07:47:36 · 641 阅读 · 0 评论 -
TTL电平 与 RS232电平
这两天在调试带UART的蓝牙模块,由于刚开始分不清UART电平和RS232电平的区别,直接将蓝牙上UART的RX和TX接到PC上串口的TX和RX,导致所有数据都是乱码。后来才弄清楚:在UART上使用的TTL电平,而PC的串口是RS232,它有自己的电平定义,所以在UART和RS232之间需要做一个电平转换。现在来认识一下什么是TTL电平和RS232电平。TTL电平 TTL是原创 2014-01-17 13:37:31 · 30698 阅读 · 2 评论 -
串口:交叉线与直连线的区别
串口针号的基本定义针号功能说明缩写DB9DB2518数据载波检测DCD23接收数据RXD32发送数据TXD420转载 2014-01-16 14:33:08 · 8182 阅读 · 1 评论 -
重新理解“复数”
转载自《线性代数及其应用导论》复数 由于所有实数的平方都非负,所以我们知道方程x2 + 1 = 0在实数系统内无解。为了使此方程有解,我们将引入一类新的数——复数。 早在16世纪,人们已经用符号转载 2014-01-15 10:45:24 · 1963 阅读 · 0 评论 -
PWM的基本原理及其应用实例
脉宽调制(PWM)是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。模拟电路 模拟信号的值可以连续变化,其时间和幅度的分辨率都没有限制。9V电池就是一种模拟器件,因为它的输出电压并不精确地等于9V,而是随时间发生变化,并可取任何实数值。与此类似,从电池吸收的电流也不限定在一组可能的取值范围之内。模拟信号与数字信转载 2014-01-09 10:44:58 · 47138 阅读 · 0 评论 -
[Blackfin]BF506F中Counter和Timer协作测量脉冲的时间间隔
为了计算速度,很多应用希望测量两个事件之间的时间间隔。BF506F中的计数器(GP Counter)与计时器(GP Timer)模块协作可以完成这个任务。 计数器模块会产生一个内部信号,此处简称TO,直接连接到计时器的输入(TACIx)[Counter0 TO连接到TACI0,Counter1 TO连接到TACI1]。计时器有五种工作模式:Quadrature Enco原创 2014-01-08 10:18:17 · 1796 阅读 · 0 评论 -
setup time & hold time
Setup/Hold time是测试芯片对输入信号和时钟信号之间的时间要求,是接收器本身的特性。如果不满足建立和保持时间的话,那么DFF(D type flip-flop/D类型触发器)将不能正确地采样到数据,将会出现亚稳态(metastability)的情况。如果数据信号在时钟沿触发前后持续的时间均超过建立和保持时间,那么超过量就分别被称为建立时间裕量和保持时间裕量。setup time转载 2013-12-19 16:33:46 · 1758 阅读 · 0 评论 -
ARM与X86不具备可比性 性能差距可大上千倍
[转自:http://www.cnbeta.com/articles/167883.htm]我们要明白CPU是一个执行部件,它之所以能执行,也是因为人们在里面制作了执行各种功能的硬件电路,然后再用一定的逻辑让它按照一定的顺序工作,这样就能完成人们给它的任务。也就是说,如果把CPU看作一个人,首先它要有正常的工作能力(既执行能力),然后又有足够的逻辑能力(能明白做事的顺序),最后还要听的懂别人的转载 2013-12-03 15:12:27 · 1567 阅读 · 0 评论 -
同步通信 VS 异步通信
在描述同步通信与异步通信之前,我们先得搞清串行通信的内涵。串行通信是指计算机主机与外设之间,以及主机系统与主机系统之间数据的串行传输。使用串口进行数据传输时,发送和接收的每一个字符实际上都是一次一位的传送的,每一位为1或者为0。而同步通信与异步通信则是串行通信的两种不同方式,分别适合于不同的场合,且各有优缺点。同步通信 同步通信是一种连续串行传送数据的通信方式,一次通信只传送原创 2013-08-29 11:51:59 · 15734 阅读 · 0 评论 -
抢占式多任务处理 vs 协作式多任务处理
抢占式多任务处理是计算机操作系统中,一种实现多任务处理的方式,相对于协作式多任务处理而言。协作式环境下,下一个进程被调度的前提是当前进程主动放弃时间片;抢占式环境下,操作系统完全决定进程调度方案,操作系统可以剥夺耗时长的进程的时间片,提供给其它进程。转载 2013-04-11 14:07:58 · 5240 阅读 · 0 评论 -
Linux内核升级(2.4.20-8->2.6.10)
[转自:http://blog.csai.cn/group.asp?gid=59&pid=2585]题记:最近,想要学习Linux驱动程序设计第三版(好书!!),需要一个2.6.10的内核,于是就想给原有的Redhat 9.0升级一下,耗时一个早上,终于升级成功了,多亏了网上一些大侠的文章,在这我再将我参考的两篇文章总结一下,希望能对大家有帮助。一、准备工作1. 下转载 2013-04-11 10:33:04 · 1107 阅读 · 0 评论 -
有限状态机
1 定义有限状态机(finite-state machine, FSM),又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。2 概念和术语状态存储关于过去的信息,就是说:它反映从系统开始到现在时刻的输入变化。转移指示状态变更,并且用必须满足来确使转移发生的条件来描述它。动作是在给定时刻要进行的活动的描述。有多种类原创 2013-03-28 11:45:17 · 4224 阅读 · 2 评论 -
uClinux下应用程序获取USB键值
[ 注:内核代码中Documentation/input/input.txt,有输入设备的介绍。]系统检测到USB键盘后,一般会将其映射到/dev/input/event0,可能使用cat命令进行确认: #cat /dev/input/event0操作USB键盘时会有乱码出现。也可以用以下命令查看设备与节点的关联: #cat /proc/bus/inpu原创 2013-04-03 15:19:51 · 1273 阅读 · 0 评论 -
关于硬盘分区(主分区、扩展分区和逻辑分区)
一、什么是分区? 分区从实质上说就是对硬盘的一种格式化。当我们创建分区时,就已经设置好了硬盘的各项物理参数,指定了硬盘主引导记录(即Master Boot Record,一般简称为MBR)和引导记录备份的存放位置。而对于文件系统以及其他操作系统管理硬盘所需要的信息则是通过之后的高级格式化,即Format命令来实现。 安装操作系统和软件之前,首先需要对硬盘进行分区和格式化,然后才能使用硬盘保存各转载 2014-09-09 16:38:13 · 5952 阅读 · 0 评论 -
关于MFC CEdit中仅输入数字时,如何使其不能输入以0开头的非0整数
在MFC中使用CEdit时,设置只允许输入数字,但仍然会出现下图所示“数字200前允许输入0”的问题。这种情况被认为是用户界面不友好的表现,需要做成:如果已经输入非零整数200,则不允许在200再输入0,如下图。可以通过以下方法实现:1. 在DoDataExchange函数中为CEdit控制映射整型变量:DDX_Text(pDX, IDC_EDIT_RXDELAY,原创 2014-09-10 11:25:32 · 3341 阅读 · 0 评论 -
MYSQL问题解决方案:安装过程中无法start service...
在my.ini中[mysqld]加入以下配置项:tmpdir=d:\mysqltemp(目录可自己确定),并且确定该目录已经建立。在服务中启动MySQL56,成功……原创 2015-08-04 22:21:19 · 871 阅读 · 0 评论 -
MYSQL问题解决方案:Access denied for user 'root'@'localhost' (using password:YES)
这两天在MyEclipse中开发Web项目时,连接MYSQL数据库,出现问题:Access denied for user 'root'@'localhost' (using password:YES)。 经查找资料发现是root帐户默认不开放远程访问权限,所以需要修改一下相关权限。 解决方案:打开MySQL目录下的my.ini文件,在文件的最后原创 2015-08-04 11:47:56 · 214250 阅读 · 37 评论 -
C++:overload, override和overwrite
Overload(重载):在C++程序中,可以将语义、功能相似的几个函数用同一个名字表示,但参数或返回值不同(包括类型、顺序不同),即函数重载。(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无。Override(覆盖):是指派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与基类);(2)函数名字相转载 2015-08-07 11:24:10 · 661 阅读 · 0 评论 -
函数调用规范
当高级语言函数被编译成机器码时,有一个问题就必须解决:CPU没有办法知道一个函数调用需要多少个、什么样的参数(即计算机不知道怎么给这个函数传递参数),传递参数的工作必须由函数调用者和函数本身来协调。为此,计算机提供了一种被称为栈的数据结构来支持参数传递。 函数调用时,调用者依次把参数压栈,然后调用函数,函数被调用以后,在堆栈中取得数据,并进行计算。函数计算结束以后,由调用者(Ca转载 2015-03-05 12:01:10 · 801 阅读 · 0 评论 -
代码编译过程
从上大学开始学习编程至今,十年有余,这次头一回尝试总结一下平时最常见的工作的在计算机中的本质。从源代码到可执行文件,正常需要经过“预处理器(Preprocessor)”->“编译器(Compiler)”->“链接器(Linker)”这三个过程。如果是嵌入式系统,还需要经过“加载器(Loader)”加载到目标机器的存储器中才能运行。现在逐个解释每个过程的含义:预编译器(Preprocessor)原创 2015-02-11 14:38:33 · 1065 阅读 · 0 评论 -
面向对象的三大特征
大学就学过面向对象的课程,但直到现在才考虑如何在我的项目中运行这些面向对象的思想。语言的细节其实不那么重要,重要的是思想的框架,具体而言就是面向对象的三大特征:封装、继承和多态。封装 封装,是对象和类概念的主要特性。封装是把过程和数据包裹起来,对数据的访问只能通过已定义的接口。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一些受保原创 2015-01-22 10:05:37 · 683 阅读 · 0 评论 -
MFC框架程序中OnIdle
【转自:http://www.cnblogs.com/kex1n/archive/2012/03/02/2377621.html】先看下MSDN对OnIdle()介绍:CWinApp::OnIdleOnIdle is called in the default message loop when the application's message queue is empty. U转载 2015-02-03 11:44:20 · 962 阅读 · 0 评论 -
SDL显示图像和文字
这两天在做一个视频分析软件需要用到SDL显示图像及文字,将阶段成果做一下总结:SDL本身并没有实际文字的功能,需要用到其扩展库SDL_ttf,下载地址:http://www.libsdl.org/projects/SDL_ttf/docs/SDL_ttf.html闲话少说,请看代码(工程环境:VS2005):#include "stdafx.h"#pragma comm原创 2015-01-16 14:20:00 · 8769 阅读 · 0 评论 -
PWM死区时间
死区,简单解释:通常,大功率电机、变频器等,末端都是由大功率管、IGBT等元件组成的H桥或3相桥。每个桥的上半桥和下半桥是是绝对不能同时导通的,但高速的PWM驱动信号在达到功率元件的控制极时,往往会由于各种各样的原因产生延迟的效果,造成某个半桥元件在应该关断时没有关断,造成功率元件烧毁。死区就是在上半桥关断后,延迟一段时间再打开下半桥或在下半桥关断后,延迟一段时间再打开上半桥,从而避免功率元件烧毁转载 2014-10-20 14:46:55 · 4802 阅读 · 0 评论 -
CCES 空格替换Tab
昨天重装了CCES,想设置将用空格替换Tab原创 2014-11-20 10:46:47 · 697 阅读 · 0 评论 -
获取本机MAC地址
#include #include #include #include #pragma comment(lib, "IPHLPAPI.lib")#define MALLOC(x) HeapAlloc(GetProcessHeap(), 0, (x))#define FREE(x) HeapFree(GetProcessHeap(), 0, (x))int GetMacAddres转载 2014-10-15 11:04:11 · 1180 阅读 · 0 评论 -
获取网络时间
这两天有一个应用需要获取网络时间,虽然一直知道可以从时间服务器获取时间,却从来也没有操作过,借这个机会重新进行一下深入了了解。基本的思路就是:通过SOCKET连接时间服务器,直接接收从服务器发送的过来的时间数据。void GetNetTime(){ TIME_ZONE_INFORMATION tzinfo; DWORD dwStandardDaylight;原创 2014-10-15 10:52:28 · 11075 阅读 · 1 评论 -
pthread_join和pthread_detach详解
在任何一个时间点上,线程是可结合的(joinable)或者是分离的(detached)。一个可结合的线程能够被其他线程收回其资源和杀死。在被其他线程回收之前,它的存储器资源(例如栈)是不释放的。相反,一个分离的线程是不能被其他线程回收或杀死的,它的存储器资源在它终止时由系统自动释放。 默认情况下,线程被创建成可结合的。为了避免存储器泄漏,每个可结合线程都应该要么被显示地回收,即调用pth原创 2013-04-02 10:28:43 · 4030 阅读 · 0 评论 -
ubuntu使用经验总结
1. 在命令模式和图形模式间切换 ctrl+alt+(f1~f6)进入命令行 ctrl+alt+f7回到图形界面2. 取消ubuntu的自动锁定 执行:system - preferences - screemsaver,取消最下面lock复选框的对勾。3. 重新设置 root 的密码 $sudo passwd root #按照提示输入两次新原创 2013-01-29 13:57:09 · 1102 阅读 · 3 评论 -
WIN7下给C盘扩容
工具:Acronis Disk Director Suite 10.0下载地址:http://down.vista123.com/AcronisDiskDirector10.rar参考文章:http://www.vista123.com/html/229.html原创 2012-04-13 17:45:08 · 1458 阅读 · 0 评论 -
找回Firefox“保存并退出”的功能
在地址栏内输入:(about:config),回车后会提示:“Thismight void your warranty!……”,点击“I’llbe carefull, I promise!”,打开控制台。在filter栏分别输入:(browser.warnOnQuit)(browser.warnOnRestart)(browser.showQuitWarning),查看它们的“value”,如果是转载 2011-11-02 13:45:53 · 2323 阅读 · 0 评论 -
Win7主题背景目录
下载的主题在:C:\Users\Administrator\AppData\Local\Microsoft\Windows\Themes系统自带的主题在:C:\Windows\Web\Wallpaper原创 2011-11-01 18:01:24 · 1339 阅读 · 0 评论 -
无需任何软件,简单修改Win7开机登陆界面背景图片
修改Win7开机登陆界面背景图片转自:百度文库 作者:非著名小青年Win7已经出来很长时间,其实类似修改Win7开机登陆界面举不胜举,比如ThoosjeLogonEditor等。但是用软件到底都修改了系统的什么文件?系统文件吗?会不会造成系统不稳定啊?最近找到了这样一个方法,利用微软提供给各大厂商制作OEM版Win7时定制登陆界面的方法,自定义Win7开机转载 2011-10-31 17:27:16 · 15467 阅读 · 0 评论 -
Linux常用命令
翻页浏览命令结果 : |less例 : gcc --help | less原创 2011-09-16 09:53:47 · 629 阅读 · 0 评论 -
Linux忘记密码解决方案 <grub篇>
解决方案步骤如下:1. 在出现grub画面时,用上下键选中你平时启动Linux的那一项,然后按e键;2. 再次用上下键选中你平时启动Linux的那一项(类似于kernel /boot/vmlinuz-2.4.18-14ro root=LABEL=/转载 2011-08-01 11:58:08 · 1002 阅读 · 0 评论 -
Windows常用技巧
Ctrl + Shift + Esc,调出”任务管理器“。相比 Ctrl + Alt + Del 的优势:不需要经过 windows安全对话框再选择,直接调出任务管理;一只手就可完成,左手大拇指按 Ctrl + Shift 。 2. Win +原创 2011-07-04 14:39:49 · 1303 阅读 · 2 评论 -
Windows下安装QT4.5
v/:* {behavior:url(#default#VML);}o/:* {behavior:url(#default#VML);}w/:* {behavior:url(#default#VML);}.shape {behavior:url(#default#VML);} Normal 0 7.8 磅 0 2原创 2011-06-24 15:33:00 · 1877 阅读 · 1 评论 -
VS2005下MFC调用Windows Media Player小结
<br />方法一<br />1. 安装WMP9<br />2. VS2005创建mfc工程,名称如MP。<br />在资源视图中,右键“Insert activex control...”,添加Windows MediaPlayer控件。右击控件“Add variable...”,指定变量名m_player。这时,你会发现工程中添加了两个文件,分别为:ocx1.h和ocx1.cpp文件。这时发现ocx1.h文件中只有变量的设定,而并没有对应的方法,并且在MPDlg.转载 2011-04-29 15:30:00 · 3890 阅读 · 0 评论 -
VC++中播放声音的方法
声音是多媒体的一个重要组成部分,在应用程序中加入声音可以使界面更友好。在VC++中可以根据不同的应用要求,用不同的方法实现声音的播放。一、 播放声音文件的简单方法在VC++中的多媒体动态连接库中提供了一组与音频设备有关的函数。利用这些函数可以方便地播放声音。最简单的播放声音方法就是直接调用VC++中提供的声音播放函数BOOL sndPlaySound ( LPCSTR lpszSound, UINT fuSound ); 或BOOL PlaySound ( LPCSTR lpszSound,转载 2011-04-29 10:25:00 · 1516 阅读 · 0 评论 -
_variant_t转CString
1. VARIANT转CString, 也可以将参数类型改为_variant_t。CString VariantToCString( VARIANT var ){ CString strValue; _variant_t var_t; _bstr_t bst_t; time_t cur_time; CTime time_value; COleC原创 2010-12-28 14:19:00 · 3203 阅读 · 0 评论