自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(123)
  • 资源 (4)
  • 收藏
  • 关注

原创 关于const int*, int const*以及int *const的区别

使用C++也有些年了,这个语言确实有诸多繁琐和变态的地方,比如这次要说明的const int*、int const*以及int *const的区别就是一例。相信不少同学都会对这其中的差异表示不解,我尝试着用一段代码来对他们进行区别。        先用上一篇文章中提到的助记方法(从变量名开始从右往左读)来理解一下这三者的字面意思:        const int* ip;    // i

2015-09-21 17:01:52 25643

转载 关于const与指针混合使用的助记法

助记方法:把一个声明从右向左读比如:1.        char * const cp;  //cp is a const pointer to char2.        const char * cp;  //cp is a pointer to const char; 规则:¨  声明从右到左读:¨  * 读成 pointer to¨  ** 读成 (

2015-09-21 15:42:51 958

原创 C语言中的复杂声明和定义,以及如何使用typedef进行简化

在阅读Linux的内核代码是经常会遇到一些复杂的声明和定义,诸如:        (1)  void * (* (*fp1) (int)) [10];        (2)  float (* (*fp2) (int, int, float)) (int);        (3)  typedef double (* (* (*fp3) ()) [10] ();

2015-09-21 10:12:16 7400 6

转载 Centos 安装五笔

【转自:http://www.cnblogs.com/emyueguang/p/3789212.html】Centos安装五笔步骤:Ctrl + Alt + [F2 - F6]进入控制台模式f2 - f6是五个控制台。进入之后用Alt + [F2 - F6]来切换不同的控制台。输入root / 密码# yum list | grep wubi,使用这个命令来看看有哪些可以安装的

2015-09-18 23:18:55 1122

转载 C++智能指针详解

一、简介        由于C++语言没有自动内存回收机制,程序员每次new出来的内在都要手动delete。程序员忘记delete;流程太复杂导致没有delete;异常导致程序过早退出,没有执行delete的情况并不罕见。        用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scoped_ptr、boost::s

2015-09-09 17:55:00 631

转载 Linux异步I/O

Linux中最常用的输入/输出(I/O)模型是同步I/O。在这个模型中,当请求发出之后,应用程序就会阻塞,直到请求满足为止。这是很好的一种解决方案,因为调用应用程序在等待I/O请求完成时不需要占用任何CPU时间。但是在某些情况中,I/O请求可能需要与其他进程产生交叠。可移植操作系统接口(POSIX)异步I/O(AIO)应用程序接口(API)就提供了这种功能。在本文中,我们将对这个API概要进行介绍

2015-09-05 11:06:43 902

转载 Windows支持的4种类型的同步对象:临界区、互斥量、事件和信号量

Windows支持4种类型的同步对象,可以用来同步由并发运行的线程所执行的操作:临界区互斥量事件信号量    MFC在名为CCriticalSection、CMutex、CEvent和CSemaphore的类中封装了这些对象。下面分别对这些同步对象进行介绍。临界区    最简单类型的线程同步对象就是临界区。临界区用来串行化对由两个或者多个线程共享的资源的访问。这些线程必须属

2015-09-01 15:03:01 3307

原创 关于C++两个类相互引用的一点思考

昨天跟朋友讨论了一下在C++中如果出现两个类相互引用的情况,编译无法通过的问题如何解决:// A.h#ifndef A_H#define A_H#include "B.h"class A{ B b;};#endif A_H// B.h#ifndef B_H#define B_H#include "B.h"class B{ A a

2015-09-01 10:40:46 2370

转载 C++:overload, override和overwrite

Overload(重载):在C++程序中,可以将语义、功能相似的几个函数用同一个名字表示,但参数或返回值不同(包括类型、顺序不同),即函数重载。(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无。Override(覆盖):是指派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与基类);(2)函数名字相

2015-08-07 11:24:10 624

转载 构造函数为什么不能是虚函数?

1.  从存储空间角度,虚函数对应一个指向vtable虚函数表的指针,这大家都知道,可是这个指向vtable的指针其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,怎么找vtable呢?所以构造函数不能是虚函数。2.  从使用角度,虚函数主要用于在信息不全的情况下,能使重载的函数得到对应的调用。构造函数本身

2015-08-07 07:47:36 623

原创 MYSQL问题解决方案:安装过程中无法start service...

在my.ini中[mysqld]加入以下配置项:tmpdir=d:\mysqltemp(目录可自己确定),并且确定该目录已经建立。在服务中启动MySQL56,成功……

2015-08-04 22:21:19 849

原创 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 213946 37

转载 C++:公有继承、私有继承和保护继承

在C++中有三种继承方式:公有继承(public)、私有继承(private)和保护继承(protected)。1. 公有继承(public)公有继承:基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的,不能被这个派生类的子类所访问。2. 私有继承(private)私有继承:基类的公有成员和保护成员都作为派生类的私有成员,并且

2015-07-09 11:25:41 1208

原创 关于VS中静态调用dll的一些问题

在静态调用dll时,只需要在代码中加入#pragma comment(lib, "E:\\test.lib")就可以正确编译,而只有程序运行时才会载入相应的test.dll。为了方便调试,通常希望直接调用Debug目录下的库文件,如E:\test\debug,以便于在库函数调用时可单步调试。#pragma comment(lib, "E:\\test\\debug\\tes

2015-05-08 16:32:49 3363

转载 函数调用规范

当高级语言函数被编译成机器码时,有一个问题就必须解决:CPU没有办法知道一个函数调用需要多少个、什么样的参数(即计算机不知道怎么给这个函数传递参数),传递参数的工作必须由函数调用者和函数本身来协调。为此,计算机提供了一种被称为栈的数据结构来支持参数传递。        函数调用时,调用者依次把参数压栈,然后调用函数,函数被调用以后,在堆栈中取得数据,并进行计算。函数计算结束以后,由调用者(Ca

2015-03-05 12:01:10 760

原创 代码编译过程

从上大学开始学习编程至今,十年有余,这次头一回尝试总结一下平时最常见的工作的在计算机中的本质。从源代码到可执行文件,正常需要经过“预处理器(Preprocessor)”->“编译器(Compiler)”->“链接器(Linker)”这三个过程。如果是嵌入式系统,还需要经过“加载器(Loader)”加载到目标机器的存储器中才能运行。现在逐个解释每个过程的含义:预编译器(Preprocessor)

2015-02-11 14:38:33 1026

转载 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 927

原创 面向对象的三大特征

大学就学过面向对象的课程,但直到现在才考虑如何在我的项目中运行这些面向对象的思想。语言的细节其实不那么重要,重要的是思想的框架,具体而言就是面向对象的三大特征:封装、继承和多态。封装        封装,是对象和类概念的主要特性。封装是把过程和数据包裹起来,对数据的访问只能通过已定义的接口。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一些受保

2015-01-22 10:05:37 669

原创 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 8694

原创 CCES 空格替换Tab

昨天重装了CCES,想设置将用空格替换Tab

2014-11-20 10:46:47 657

转载 PWM死区时间

死区,简单解释:通常,大功率电机、变频器等,末端都是由大功率管、IGBT等元件组成的H桥或3相桥。每个桥的上半桥和下半桥是是绝对不能同时导通的,但高速的PWM驱动信号在达到功率元件的控制极时,往往会由于各种各样的原因产生延迟的效果,造成某个半桥元件在应该关断时没有关断,造成功率元件烧毁。死区就是在上半桥关断后,延迟一段时间再打开下半桥或在下半桥关断后,延迟一段时间再打开上半桥,从而避免功率元件烧毁

2014-10-20 14:46:55 4636

转载 获取本机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 1142

原创 获取网络时间

这两天有一个应用需要获取网络时间,虽然一直知道可以从时间服务器获取时间,却从来也没有操作过,借这个机会重新进行一下深入了了解。基本的思路就是:通过SOCKET连接时间服务器,直接接收从服务器发送的过来的时间数据。void GetNetTime(){ TIME_ZONE_INFORMATION tzinfo; DWORD dwStandardDaylight;

2014-10-15 10:52:28 10999 1

原创 关于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 3301

转载 关于硬盘分区(主分区、扩展分区和逻辑分区)

一、什么是分区? 分区从实质上说就是对硬盘的一种格式化。当我们创建分区时,就已经设置好了硬盘的各项物理参数,指定了硬盘主引导记录(即Master Boot Record,一般简称为MBR)和引导记录备份的存放位置。而对于文件系统以及其他操作系统管理硬盘所需要的信息则是通过之后的高级格式化,即Format命令来实现。 安装操作系统和软件之前,首先需要对硬盘进行分区和格式化,然后才能使用硬盘保存各

2014-09-09 16:38:13 5814

原创 考试总结

今天“顺利”能过科目二的考试,这真让我有点出乎意料……       考前真的是很有点紧张的,不为什么,只是我甚至连50%能过的把握都没有。这并不是说我没有好好练车,或者说我的教练水平太差,我倒大胆的认为是整个培训系统出了问题。这问题在哪呢?我得慢慢地一一道来。首先,我认为我的教练是个好人,也是个不错的教练,每天对我的训练很尽心。唯有一点,我觉得他在帮我踩刹车这点上有点过了。正常情况下,

2014-01-24 12:53:36 1096

原创 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 30557 2

转载 串口:交叉线与直连线的区别

串口针号的基本定义针号功能说明缩写DB9DB2518数据载波检测DCD23接收数据RXD32发送数据TXD420

2014-01-16 14:33:08 7960 1

转载 重新理解“复数”

转载自《线性代数及其应用导论》复数       由于所有实数的平方都非负,所以我们知道方程x2 + 1 = 0在实数系统内无解。为了使此方程有解,我们将引入一类新的数——复数。       早在16世纪,人们已经用符号

2014-01-15 10:45:24 1910

转载 PWM的基本原理及其应用实例

脉宽调制(PWM)是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。模拟电路       模拟信号的值可以连续变化,其时间和幅度的分辨率都没有限制。9V电池就是一种模拟器件,因为它的输出电压并不精确地等于9V,而是随时间发生变化,并可取任何实数值。与此类似,从电池吸收的电流也不限定在一组可能的取值范围之内。模拟信号与数字信

2014-01-09 10:44:58 46240

原创 重新理解“充要条件”

什么是充要条件?       从字面上看,充要条件即充分必要条件。那“充分”和“必要”又包含什么样的含义呢?先来说明一下什么是“充分”。举个例子,我们说“男人会长胡子”。这里就可以说“男人”是“会长胡子”的充分条件。再来看一下什么是“必要”。继续看“男人会长胡子”这句话。我们说“会长胡子”是“男人”的必要条件。很显然,如果一个人不长胡子,那他就一定不是男人,所以说“会长胡子”是必要的。

2014-01-09 10:30:52 1381

原创 [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 1759

转载 三角函数

这几天想搞明白“正交”的概念,其中涉及到cos90度的值为0。以前只知道cos90一定为0,却不知道它为什么为0。现在决定对这个问题一探究竟!下面的内容摘自百度百科:       三角函数是数学中常见的一类关于角度的函数。三角函数将直角三角形的内角和它的两个边的比值相关联,也可以等价地用与单位圆有关的各种线段的长度来定义。三角函数在研究三角形和圆等几何形状的性质时有重要作用,也是研究周期性

2014-01-07 10:09:57 3972

转载 setup time & hold time

Setup/Hold time是测试芯片对输入信号和时钟信号之间的时间要求,是接收器本身的特性。如果不满足建立和保持时间的话,那么DFF(D type flip-flop/D类型触发器)将不能正确地采样到数据,将会出现亚稳态(metastability)的情况。如果数据信号在时钟沿触发前后持续的时间均超过建立和保持时间,那么超过量就分别被称为建立时间裕量和保持时间裕量。setup time

2013-12-19 16:33:46 1650

翻译 TWO-WIRE INTERFACE CONTROLLER(TWI控制器)

[摘自:ADSP-BF50x Blackfin Processor Hardware Reference]注:每一行英文原文后面是中文翻译。The TWI externally moves 8-bit data while maintaining compliance with I2C bus protocol. The TWI controller includes these fe

2013-12-04 16:57:11 2976

转载 ARM与x86优劣比较

[转自:http://bbs.uc.cn/forum.php?mod=viewthread&tid=1531183]一、背景知识      指令的强弱是CPU的重要指标,指令集是提高微处理器效率的最有效工具之一。从现阶段的主流体系结构讲,指令集可分为复杂指令集(CISC)和精简指令集(RISC)两部分。相应的,微处理随着微指令的复杂度也可分为 CISC 及 RISC 这两类。

2013-12-04 15:48:47 7057

转载 复杂指令集计算机(CISC) VS 精简指令集计算机(RISC)

[转自:计算机体系结构,Ian McLoughlin]复杂指令集计算机(CISC):即Complex Instruction Set Computer将能想到的所有有用的操作都放到CPU硬件中,不必担心有多大、多耗电或使CPU变慢,那么最终得到的就是一个CISC机器。早期的VAX机器,据说包含超过2000个时钟周期的指令。精简指令集计算机(RISC):即Reduced Inst

2013-12-04 14:01:34 7339

翻译 Blackfin处理器架构概述

[原文:http://www.analog.com/en/processors-dsp/Blackfin/products/Blackfin_architecture/fca.html]       Blackfin® 处理器是一类专为满足当今嵌入式音频、视频和通信应用的计算要求和功耗约束条件而设计的新型 16-32 位嵌入式处理器。Blackfin 处理器基于由 ADI 和 Intel

2013-12-04 10:27:57 1319

转载 EMBEDDED MICROPROCESSORS-Blackfin Processor Architecture Overview

Blackfin Processors are a new breed of 16-32-bit embedded microprocessor designed specifically to meet the computational demands and power constraints of today's embedded audio, video and communicatio

2013-12-04 10:12:04 1288

转载 ARM与X86不具备可比性 性能差距可大上千倍

[转自:http://www.cnbeta.com/articles/167883.htm]我们要明白CPU是一个执行部件,它之所以能执行,也是因为人们在里面制作了执行各种功能的硬件电路,然后再用一定的逻辑让它按照一定的顺序工作,这样就能完成人们给它的任务。也就是说,如果把CPU看作一个人,首先它要有正常的工作能力(既执行能力),然后又有足够的逻辑能力(能明白做事的顺序),最后还要听的懂别人的

2013-12-03 15:12:27 1501

SDL显示图片及文字

本段示例代码在vs2005中实现,用于演示SDL图片及文字的显示。

2015-01-16

MFC全屏显示图片

将图片将不同比例显示,可以全屏显示。 相关类:Image、CStaticLink

2012-10-23

Writing Clean Code

编程精粹 ─── Microsoft 编写优质无错C程序秘诀

2011-07-04

#define VS typedef

#define是预处理指令 typedef是在编译时处理的 typedef与#define的区别

2011-04-15

空空如也

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

TA关注的人

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