C++
文章平均质量分 84
CouchDB
专注于系统级应用的开发,研究方向:runtime system, compiler techniques, programming language, computer architecture等
展开
-
MFC中关于m_pMainWnd = &dlg;处报错的解决方案,针对XX处未处理的异常:0xC0000005:写入位置0x00000020时发生访问冲突
在新建一个MFC基于对话框的工程的时候,一般在工程的源文件下会生成如下代码 CFaceDetectDlg dlg; m_pMainWnd = &dlg; 稍微有点MFC开发经验的都知道这两行代码是为了给m_pMainWnd【该指针为app类里面的关键指针】赋值,保存主窗口指针。 当我们在工程的主窗体中添加成员变量,并添加成员函数进行相应的业务逻辑流程的时候,往往会报如下的错误, XX处未处原创 2015-05-13 13:27:02 · 3079 阅读 · 0 评论 -
Intel HEX文件解析
最近有一个需求就是为Arduino开发板做一个基于蓝牙的无线烧录程序。目前的Arduino程序都是通过USB线连接到电脑的主机上,实际的传输过程是基于USB协议的,这个过程还是比较麻烦的。因为每次的编译完以后都需要通过一个USB线来完成传输烧录的工作,这个还是很麻烦的。原理解读在Arduino中,利用USB来完成传输烧录大概是这么一个过程。每个Arduino源程序,即sketch文件,原创 2016-04-05 17:22:50 · 14826 阅读 · 2 评论 -
Arduino自定义通信协议解析
上一篇文章给出了通信协议的设计。通信协议的格式如下:协议首部指令长度控制指令校验和“控制指令”设计成如下格式:设备类型设备号端口号比如说上位机发送如下的格式的数据:AA0305020106,意思就是协议的首部为AA,指令长度为03,控制原创 2016-03-04 15:28:35 · 12796 阅读 · 13 评论 -
Arduino通信协议设计
最近在一直在研究Arduino硬件平台的东西,先从做一个简单的东西入手,比如说,我通过Android端向Arduino硬件发送指令,控制电机的正转、反转。其中一个必不可少的问题就是这两个端设备之间的通信问题。它们之间的通信可以通过蓝牙模块来完成,此外,还需要自己设计通信协议。分析从最简单的模块开始,需求就是控制电机的旋转:反转和正转。再考虑最实际的硬件设备情况:Arduino开发板原创 2016-03-02 18:36:40 · 5394 阅读 · 0 评论 -
利用lex和yacc做词法、语法分析
最近在一直做一个东西。设计一种脚本语言,再写一个翻译器,将这种脚本语言翻译成avr-gcc可以执行的C语言程序,再将得到的C语言程序利用avr-gcc编译器编译成Intel的hex文件格式,再写一个类似bootloader的东西,将这个hex文件以无线的方式加载到内存执行。这个类似bootloader的东西就是直接跟单片机芯片的存储器打交道,实现起来确实有点难度。万事开头难,只要做好第一步,慢慢来原创 2016-03-25 21:48:27 · 5961 阅读 · 0 评论 -
C++虚函数的底层实现原理
在C++中,多态是利用虚函数来实现的。比如说,有如下代码:#include using namespace std;class Animal{public: void Cry() { cout << "Animal cry!" << endl; }};class Dog :public Animal{public: void Cry() { cout << "原创 2016-01-11 18:01:58 · 24930 阅读 · 8 评论 -
基于OK6410嵌入式WinCE 6.0的“街霸”游戏的设计与实现
很久没写博客了。这几天在做嵌入式的课程设计,忙活了将近两周。实验平台的开发板子用的是OK6410,操作系统是WindowsCE,微软旗下一个嵌入式方向的产品。本打算做一个三维的游戏,结果学了一段时间DirectX的东西。悲哀的是WinCE目前还不支持DirectX的API。囧,只好做一个二维的游戏。上周末一兄弟去北京工作,在寝室为他饯行,喝了几杯白兰地,结果周一难受得在床上躺了一天,呵呵,其实我酒原创 2015-12-21 23:21:59 · 1524 阅读 · 0 评论 -
深拷贝和浅拷贝
C++中一个非常经典的问题就是深拷贝和浅拷贝的问题,这属于拷贝构造函数中的内容。浅拷贝时,拷贝类的对象时,将拷贝其指针成员,但是没有复制指针指向的缓冲区,这样做的结果就是,两个对象指向同一块动态分配的内存。浅拷贝会威胁程序的稳定性。这样说起来可能不太好理解,下面给出一个很好的例子,自定义一个类似string的MyString类如下:#include #pragma warning(disab原创 2015-12-30 17:10:42 · 921 阅读 · 0 评论 -
C++ String类的构造函数、拷贝构造函数的实现
构造函数、析构函数与赋值函数是每个类最基本的函数,在一些公司的面试中也会经常问到这方面的问题。每个类只有一个析构函数和一个赋值函数,但可以有多个构造函数(包含一个拷贝构造函数,其它的称为普通构造函数)。对于任意一个类A,如果不手动编写上述函数,C++编译器将自动为类A生成四个缺省的函数: A(void); // 缺省的无参数构造函数 A(con原创 2015-10-10 10:51:24 · 9951 阅读 · 1 评论 -
strlen、strcpy、strcat等字符串处理函数的实现
最近参加不少小公司的笔试,都是关于C++开发工程师的岗位,考察的题目比较基础。不少公司都考察了关于字符处理函数的实现,这些看起来很简单,其实需要注意的地方还是很多的。这里给出strlen、strcpy、strcat等函数的实现,以及指出需要注意的地方。strlen求字符串的实际长度,其函数的原型为:extern unsigned int strlen(char *s);其实现如下:原创 2015-10-17 17:10:20 · 1747 阅读 · 1 评论 -
内存映射文件
在做科研,实现一些大数据的算法的时候,经常要调用一些文件的I/O函数,在数据量很大的时候,除了设计的算法和数据结构的耗时以外,其实主要的耗时还是文件的I/O。因为一般常规的方法就是先读出磁盘文件的内容到内存中,然后修改,最后写回到磁盘上。读磁盘文件是要经过一次系统调用,先将文件的内容从磁盘拷贝到内核空间的一个缓冲区,然后再将这些数据拷贝到用户空间,实际上是两次数据拷贝。写回同样也需要经过两次数据拷原创 2015-08-28 16:26:19 · 94525 阅读 · 1 评论 -
Web服务器开发
服务器是C/S模式的核心,最近在看网络编程的东西,参考了一些书籍,做了一个Web服务器。整体的实现分为四个部分:界面控制、服务流程的实现、HTTP协议的实现、协议的辅助实现部分。界面控制部分主窗体设计比较简陋, Web服务器的运行离不开HTTP协议,定义一个类CHttpProtocol,用来实现HTTP协议。class CHttpProtocol{public: HWND m_hw原创 2015-07-10 20:38:07 · 2189 阅读 · 2 评论 -
基于MFC的网络浏览器Demo
最近在接触C++的HTTP编程,做了一个网络浏览器,仅仅是一个demo版本的,呵呵。下面先介绍一下HTTP的工作原理HTTP在介绍HTTP原理之前,不得不提及一位有关Internet的大师级人物,英国计算机科学家蒂姆·伯纳斯·李(Tim Berners-Lee),他发明了web浏览器,使得Internet的应用变得非常广泛,Internet的发展也就进入了万维网时代。万维网(World Wide W原创 2015-06-14 00:18:39 · 12211 阅读 · 5 评论 -
基于MFC的FTP客户端
最近在看关于C++ FTP编程的东西,写了一个Demo版本的FTP客户端。同样,在开发之前,先弄清原理性的东西。呵呵相关知识FTP(File Transfer Protocol,文件传输协议)工作在TCP/IP协议的应用层,在传输层使用的是TCP,用于在网络上控制文件的双向传输。百度百科上有对其详细的介绍。 FTP主要用于校园网、企业网等各种局域网中,FTP也是传输网络资源的首选途经。FTP具有原创 2015-06-17 22:40:21 · 13456 阅读 · 7 评论 -
REST实战——调用百度语音的云服务
RESTfulREST(REpresentation State Transfer)描述了一个架构样式的网络系统,比如说web应用程序。它首次出现在2000年Roy Thomas Fielding的博士论文中,他是 HTTP 规范的主要编写者之一。REST指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计,即具有REST风格就是RESTful。在REST中,以资源为核心,任何原创 2016-04-19 13:31:34 · 8977 阅读 · 0 评论