自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

飞奔在原野

希望有一天,代码如风一般,飞奔在原野……

  • 博客(23)
  • 资源 (3)
  • 收藏
  • 关注

原创 《深度探索C++对象模型》阅读笔记(一)——对象的内存布局1

本章是从整个对象的全局观来审视C++,并对比C++和C,讨论出一个较为高效和简明的C++对象模型,最后详细介绍了继承如何对程序造成影响。主要分为以下几个内容:引入。C++如何基于C构建对象C++简单对象的内存布局模型讨论Class 和 Struct 间的关系和影响详细讨论对象的继承关于C++的强大以及C的简洁之间的讨论已经很多,因而我不打算介绍C++是如何基于C构建对象的。而是

2012-09-23 15:41:29 1271 3

原创 《深度探索C++对象模型》阅读笔记(零)——引子

C++本不是门易学的语言,入门如此,进阶更甚,而当我从一个写C++程序之人,转变成调试大型C++工程之人的时候,我深切的感受到了C++的晦涩难懂。当我面对一个个bug的时候,我是那么迷茫:明明已经是个空指针了,为何程序会崩溃在指针指向的函数之中,而不是调用之时?明明是已经被删除的指针,怎么还能对内存访问得那样自如?明明也是个空指针,但这次为何在函数调用之时就崩溃了?再加上找不到

2012-09-16 00:02:29 813

原创 Go!漂亮的语言!

这一周,利用每天晚上下班回来后的一小时,学习了Google开发的Go语言,算是对其有了个基本的了解。确实是门漂亮的语言。首先,从它的设计目标是设计一种高效的、静态编译的、易于编写的语言。它涉足的是系统级的编程,试图与C/C++抗衡。详细来说,它的设计目标有如下几点(来自wikipedia和golang FAQ):安全:类型安全与内存安全。没有继承,无需处理类型的依赖关系,弱化类

2012-09-09 03:09:30 2562 5

原创 自定义 HID 设备的实现――下位机

<br />最近在做一个投票系统的上位机。虽然是上位机,但还是要弄清楚下位机与自己的接口――HID。<br />因为windows下已经有一个usb监听程序――USB HOUND。所以,我选择先写好下位机的程序,成功发送数据后,再进行上位机程序的编写。<br />下位机程序,重点在于HID设备的描述符配置。什么是描述符?<br />HID 设备,<br />|– 通过设备描述符来标识自己的设备信息,如设备ID、厂商名称、版本、配置数量等;<br />|– 通过配置描述符集合来标识自己的配置信

2011-04-16 15:18:00 5712 1

翻译 你做错了。。。

<br />英文原文:http://labs.qt.nokia.com/2010/06/17/youre-doing-it-wrong/<br /> <br />我们之间经常使用IRC(网络聊天工具?)进行交流,社区也同样是这样。我在上 Freenode 网络的 QT 频道时会帮那些有问题的人解答。一个普遍的问题(也是我厌烦的问题)是如何理解QT多线程,还有如何使他们的代码工作。他们将他们的代码,或者基于他们代码的实例展示给我看,而我经常会回复他们一句:<br /> 你做错了。。。<br />我知道这个

2011-03-09 21:31:00 945

原创 操作系统笔记(二)---进程、线程

<br />进程:是一个具有一定独立功能的程序关于某个数据集合的一次运行活动线程:是进程内的一个相对独立、可调度的执行单元。进程可以直接在任务管理器中看到其程序名称,线程则没有具体的程序名,只是进程中的一个执行单元。一个进程中至少包含一个线程。线程间的资源共享更容易,但也更容易相互干扰。<br />关于程序、进程和线程的一个比喻(by Crazyman):你的QQ不运行的时候就是一个程序,不占用CPU你登陆以后,你的QQ.exe就是一个进程这个QQ不光可以聊天,上面还有广告、QQ秀等东西,这

2011-03-09 19:14:00 392

原创 操作系统笔记(一)

<br />一个程序在加载过程中会发生分页缺失中断,为什么?<br />答: 一个进程在启动后会分配一块特定的区域。程序语句的调用会有两种方式:在程序开始,或发生跳转等语句的时候,先加载硬盘中需要的语句到内存,再执行。在发生这些跳转的时候,先不加载,之间跳转,执行失败后,再加载硬盘中的语句到此内存。<br />在运行过程中可能发生多出跳转,或需要多次访问一个内存地址。此时,第二种方式的优势体现出来。因为程序的运行过程中并不需要多次进行硬盘数据的读取。大大提高了程序运行的效率。<br /> <br />分时系

2011-03-07 11:15:00 385

原创 Linux初步(二)——Linux 简单编程

编程,我们都会,但是具体经历哪些步骤,我们都清楚嘛?打开VC,新建一个文件,编写完后,F5运行,这就是所有的步骤?VC把太多的底层实现封装了,使你几乎不用关心底层的操作。而Linux中,一览无余。总的来说,简单流程如下:编辑 -> 编译 -> 链接 -> 运行。首先,当然是要编辑源文件,用什么编辑器?VI,对,就是它,Windows下也不乏它的身影,跨平台的优秀编辑软件,扯远一点,“这个世界上有三种程序员,一种用VIM (VI升级版),一种用xxx的,还有一种用其他”。足见VIM在编辑器领域的地位。关于VI

2011-02-22 10:12:00 579 2

原创 Linux初步(一)——关于操作系统的启动

今天,收获非常非常多,熟悉了Linux的操作,并了解了整个操作系统的启动过程。Linux的操作网上资料很多很全,我就不细数了。。我就来回顾和总结一下操作系统 (Ubuntu 10.10 为例) 的全部启动过程。首先,操作系统的启动过程如下:BIOS -> MBR -> OS Loader -> OS Kernel -> Application Manager -> Applications.附上图片一张以更清楚的说明:下面,我分各个部分回顾操作系统启动过程: 1. BIOS我们都知道,就如单片机程序一样,写

2011-02-22 07:56:00 581

原创 《Head First 设计模式》阅读笔记(八)——模板方法模式

Oh yeah, 看到这个模式的时候,我很happy~因为我发现我居然在之前的编程中用过,而且是自己想出来的设计方式,很有成就感,哈哈。模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以在不改变算法结构的情况下,重新定义算法的中的某些步骤。从模板方法模式的定义中,我们就可以明确这个模式的实现方式了,即构造一个有算法骨架的基类,当你需要使用这个骨架的时候,继承该基类,并实现一些算法的细节。换句话说,基类定义了整个算法的框架。并实现某些通用的算法,使得需要这个框架的一些

2011-02-19 13:26:00 527

原创 如何使用 Google spreadsheet 创建一个账本?

早就想弄一个这样的应用。因为经常不记得钱是花在什么上面了,总想记账,但是总觉得记录到一个专门的账本上太麻烦,用软件也麻烦,用excel也很麻烦,什么样子的不麻烦呢?在线填写不麻烦~~Google Doc,非常可爱,可惜现在被墙了。。。要生活,还得会翻墙啊~在网上找了找,发现用Google Doc 确实能很方便的创建一个账本,而且使用起来非常方便。如果大家找到什么不用翻墙的好方法,请告诉我,谢谢~首先是创建一个表格 (spreadsheet 喜欢装B,用的英文,见谅。。),保存,并输入一些你需要的项目,如下图

2011-02-18 01:40:00 8177

原创 《Head First 设计模式》阅读笔记(七)——适配器和外观模式

详细介绍了适配器模式的两种实现方式:类适配器和对象适配器。并附上了经过测试的c++示例代码。简略介绍了外观模式。最后,对适配器模式、外观模式、命令模式做了些分析比较。

2011-02-17 12:18:00 672

原创 《Head First 设计模式》阅读笔记(六)——命令模式

命令模式其实比较简单,就是封装了请求,使得请求有统一的接口。其定义如下:将请求封装成对象,这可以让你使用不同的请求、队列,或者日志请求来参数化其他对象。命令模式也可以支持撤销操作。也就是说,命令模式可以通过一个抽象的命令类来扩展各种命令,接着,你可以使用诸如队列、链表之类的结构来很好的管理这些命令,使得命令对象包含的操作被有序的执行,以实现日志等功能。并且,由于命令对象能很清楚的知道它负责的请求需要的执行流程,它就能很轻易的实现撤销操作。命令模式具有上述的这些特性,使得它被广泛的使用于日志、撤销、菜单操作等

2011-02-15 17:46:00 398

原创 《Head First 设计模式》阅读笔记(五)——单件模式

c++中的单件模式实现,列举各种方案,并分析其优劣。注:未考虑多线程情况。

2011-02-14 20:37:00 540

原创 《Head First 设计模式》阅读笔记(四)——工厂模式

这一章,看得比较纠结,以前以为自己看懂了,回顾一下,组织语言想写博客的时候,发现还是没弄清楚。遂又上网查资料,发现一个比较好的网站: http://www.jdon.com/designpatterns/,就是广告多了点,说的还是很明白的。但我发现该网站上所说的工厂模式,似乎与Head First上讲述的模式有些出入,或者是侧重点不同?于是又在wiki上查找,再通过研究Head First的Java代码,终于发现,JDon上的说法确实是对的,即“这两个模式区别在于需要创建对象的复杂程度上”。不过简单工厂,似

2011-01-15 21:01:00 618

原创 《Head First 设计模式》阅读笔记(三)——装饰者模式

装饰者模式 (Decorator Pattern) 非常有趣,如果不是看过设计模式,看到这个模式的代码时一定大吃一惊:“这是什么东西?怎么这么多类!”是的,这就是这个模式的特别之处了,无数类摆在你面前,你无所适从。但这个模式是用来干什么的呢?用来管理大量同样类型但有细小属性差别的事物(我自己想的定义)。这也就注定了这个模式中,类的多样性。为什么会出现这么个模式?如果是我自己编程,我第一个想到的,肯定是继承。一个抽象类,其他各种功能的子类。这样设计是多么丑陋你应该一眼就看出来了,因为只要一个小小的改变,你就需

2011-01-14 11:45:00 448

原创 《Head First 设计模式》阅读笔记(二)——观察者模式

观察者 (Observer) 模式应该是使用得非常广泛的一个模式,在JDK中就有内建的观察者模式。首先我来说说什么是观察者模式。观察者模式:定义了对象之间一对多的依赖,这样,当一个对象改变时,它的所有依赖者都会收到通知并自动更新。很多场合下,我们都需要这样的一对多关系。设想一个GUI的计算器程序,当你按下一个按钮时,你需要按钮改变形状,更重要的,你需要将按键的信息传递给数据处理者。我们如果这样编程(伪码):class Button { void pushed() { change

2011-01-13 10:36:00 421

原创 《Head First 设计模式》阅读笔记(一)——策略模式

上回将之前看过的章节都大致梳理了一遍,回过头去看的时候,发现看不懂了。。太泛。从这篇文章起,我想一个个详细的说明,当是复习了。今天,先来讲述策略模式的故事。为什么要用策略模式?这一章从一开始便告诉我们,用继承来解决扩展问题并不是最好的办法,因为一旦你需要一个新的行为时,你就必须继承出一个新类,如此,代码便会在多个子类中重复,而由于我们不清楚到底有多少行为需要定义,设计之初的父类很可能要改变,而这种改变会导致其所有的继承者都受到牵连,这是很可怕!接下来,就是讨论该如何解决这个问题了。首先一个原则是,封装变化,

2011-01-12 08:24:00 685

原创 使用QT做跨平台编程

<br />前两周,各种课程设计和实验,各种团队活动占据了我几乎所有的时间,睡觉都没啥时间,更不用说写博客了。<br /> <br />今天下午刚刚投出高频课设的PCB,暂时得以清闲,赶紧来写写博客,待我整理完微机原理的课设,后面的课设和实验也该总结了~~<br /> <br />QT,是我最近一直在使用的编程框架,非常便捷和强大~不但封装了各种复杂的系统操作,而且非常容易实现跨平台的C++编程。<br /> <br />QT的程序,一般来说,只要不是跟系统直接相关的程序,都能极为顺利的实现跨平台,但是事情

2011-01-10 21:28:00 7439 4

原创 《Head First 设计模式》阅读笔记 (零)

很长一段时间前,看了一部分书,写了些笔记,由于某些原因中断了,今天重新拾起这本书,要继续看下去~~以下是上次的笔记,重新开始~    1. OO原则:        1.1.封装变化            指的是设计过程中,设计者应当充分考虑将来可能会发生变化的代码部分,将它们提取并封装起来。        1.2.多用组合,少用继承            即多使用has-a的关系,少用is-a的关系。若过分依赖继承,当父类的功能发生变化以后,将会影响到所有的子类。不利于代码的修改。而组合则是将各个功能独立

2011-01-10 21:01:00 599 2

原创 为Ubuntu搭建QT开发环境

<br />又是两个星期没有写文章了,事情太多太杂,无法静下心来整理自己的思绪。只有这新年的清晨,才有闲情逸致~~<br /> <br />废话不多说了,切如正题。这段时间,经常性的跑到Ubuntu下去撒野。为的就是看看自己的程序到底有多跨平台。。当然,QT成了我跨平台最好的助手。<br /> <br />Ubuntu下的安装其实也是蛮简单的,今天我就主要讲讲如何在eclipse里使用QT。<br /> <br />QT-SDK的安装非常简单,sudo apt-get install qt-sdk,搞定!<

2011-01-03 06:57:00 1642

原创 QT程序实例——电子台签上位机软件

<br />    这篇博客会比较长,因为大部分内容是我写的上位机技术手册,很详细,有耐心的同学应该还是能收获不少的,源代码开放于Google code,欢迎大家checkout:<br />http://dian-matrix.googlecode.com/svn/trunk/<br />废话不多少,开始介绍:<br /> 1.  概述<br />为使用户更为方便的生成汉字和绘制自己的图形,我们为《电子台签》开发了一款跨平台的上位机软件。<br />本软件可以自动生成常用汉字字模,也可以方便的绘制直线

2010-12-18 22:06:00 6698 3

原创 刚刚结束的微机原理课设

关于硬件、嵌入式、软件系统的一个微机原理课程设计系列博客的引子~~

2010-12-08 14:29:00 1340 3

基于MFC对话框的《IP地址转换》软件

很使用的软件。它可以帮助你记录并更改你的网络IP地址。 底层是用DOS批处理实现的。有很好的文件处理。

2010-01-11

基于MFC对话框的简易闹钟软件(支持标签页)

一个简单的闹钟实现,可以自定义闹铃。 对标签页的实现比较好。 包含较多的MFC控件,是个学习的好资料。

2010-01-11

自己编写的游戏《一百层》

一个很流行的游戏,但是这个程序最重要的一点是它对位图的管理,绘制等有很好的处理。 使用MFC编写,但是精简了部分MFC的框架。 游戏的界面有一定的自行设计空间。

2010-01-11

空空如也

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

TA关注的人

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