自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

如果这是你所爱的,要坚持,并踏实。

你先要相信,你才能做到。

  • 博客(83)
  • 资源 (7)
  • 收藏
  • 关注

原创 自己的一些体会

1、我发现工程和学术这两者有很大的不同,为什么这么说呢?第一,从自己本科时候的实习经历体会中能看出,在企业或公司中,整个开发过程是以目标或者说产品为导向的,开发者并不需要把太多的精力集中在原理上是如何运作的,拘泥于非常细节的东西;只要通过各种手段把最终的产品做出来就可以了,可以借

2011-08-17 09:14:53 1147

原创 Ocaml基本认识

1、Ocaml概述Starting with OCaml 3.05, there are no less than three ports ofObjective Caml for MS Windows available:  - a native Win32 por

2011-08-10 13:22:31 1390

原创 很杂的一些记录

windows下, 安装完java jdk后,并配置好合适的系统环境变量后,可以通过在cmd的终端中,输入java -version和javac -version查看jdk的版本号,如1.6.0对应的就是jdk 6,1.5.0对应的就是jdk 5。

2011-08-09 22:40:35 787

原创 windows程序设计相关思想

<br />就我个人观点,C++/MFC 程序设计必须跨越四大技术障碍:<br />1. 对象导向观念与C++ 语言。<br />2. Windows 程序基本观念(程序进入点、消息流动、窗口函数、callback...)。<br />3. Microsoft Foundation Classes(MFC)本身。<br />4. Visual C++ 整合环境与各种开发工具(难度不高,但需熟练)<br /> <br /><br />SDK - Software Development Kit,原指软件开发工

2011-05-24 20:24:00 1440

转载 应用程序——INI和XML配置文件

INI配置文件的格式 为什么要用INI文件?如果我们程序没有任何配置文件时,这样的程序对外是全封闭的,一旦程序需要修改一些参数必须要修改程序代码本身并重新编译,这样很不好,所以要用配置文件,让程序出厂后还能根据需要进行必要的配置;配置文件有很多如INI配置文件,XML配置文件,还有就是可以使用系统注册表等。本文主要是为读者在实现读写INI配置文件模块之前,提供有关INI文件的格式信息。在早期的windows桌面系统中主要是用INI文件作为系统的配置文件,从win95以后开始转向使用注册表,但是还有很多系统配

2011-05-23 22:03:00 4945

原创 MFC中的六大关键技术

MFC中的六大关键技术这一篇主要讲解一下MFC中的6个主要的关键技术,整个Application Framework其实从本质上来说都是建立在这6个关键技术上的。所以能够了解它们的原理对理解MFC整个框架和程序设计有非常大的好处。1、MFC程序的初始化工作在MFC中所有的类都来源于一个基类:CObject。MFC程序初始化过程中,其实就是虚函数的调用的过程,分清调用执行的到底是哪一个具体的虚函数,是父类的虚函数,还是基类的虚函数,都是至关重要的。2、RTTI运行时类型识别MFC程序运行过程中需要对类的类型进

2011-05-22 20:07:00 7003

原创 C++中RTTI动态类型识别、静态成员、变量的四种存储方式

<br />本文主要来讲解C++中的RTTI机制,也就是动态类型识别技术,之前我在学习《C++编程思想》的时候学习过这个技术,现在也算是复习一下吧,因为RTTI在MFC程序设计中也是有一定用处的。<br /> <br />先来看一段程序,这段程序中就是使用了RTTI,<br />#include <typeinfo> #include <iostream>#include <fstream>using namespace std;ofstream out("out.txt");c

2011-05-21 21:59:00 3512

原创 详解C++中的多态、虚函数、父类子类

<br /> 这一篇主要是想讲解一下C++中的多态性,这也是我在学习Win32和MFC编程中碰到的,算是总结一下吧。<br /> <br />首先来看一段程序:<br /> <br />#include <iostream>using namespace std;class CObject{public: virtual void Serialize(){ cout<<"CObject::Serial() /n/n"; } };class CDoc

2011-05-20 21:46:00 7495

原创 Android开机启动分析(一)logo的显示

<br />Android开机启动的时候会有一个logo出现,它对应的源代码位于/system/core/init/目录下的logo.c中:<br />下面是我注释过的代码:<br />#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <fcntl.h>#include <sys/mman.h>#include <sys/stat.h>#include <sys/types.h>#include

2011-03-02 15:24:00 7137 1

原创 linux相关代码程序,小而精悍

#include #include #include #include #include //strerror()#include //errnoint main(void){int fd ;static const char* name="tmpfile.txt";//if( mknod(name,S_IFCHR | 0600 , (1fd = open(name , O_RDWR);unlink(name);printf("unlink/n");if( fd >= 0){dup2(fd , 0);dup

2011-03-01 22:45:00 1168

转载 android的logcat详细用法

<br /> <br /> <br />>>>>>>>>>>磨刀不误砍柴工,看看logcat的威力原来有这么大,这是转帖:转自 秋天的故事<<<<<<<<<<<<br /> <br />Android日志系统提供了记录和查看系统调试信息的功能。日志都是从各种软件和一些系统的缓冲区中记录下来的,缓冲区可以通过 logcat 命令来查看和使用.<br />使用logcat命令<br />你可以用 logcat 命令来查看系统日志缓冲区的内容:[adb] logcat [<option>] ... [<filte

2011-02-24 20:33:00 2258

原创 linux GT2005摄像头驱动源代码分析

由于近期在研究Android的一些视频通话的一些技术,所以很快就发现实现摄像头的驱动成为必须研究的课题。下面是在telechips公司提供的Android SDK中已经包含的GT2005型号sensor的部分驱动代码。虽然已经有了比较完善的驱动代码,但是我TCC8902板子上的GT2005摄像头还是没能preview出图像来,最近一直在试图进行各种方法的调试和分析。最后觉得硬着头皮来好好研究GT2005 camera的driver,我会分几期来进行分析,如果有不正确的地方,非常欢迎指正。下面的代码是GT20

2011-02-22 21:07:00 5148 6

原创 软件项目开发中的一些体会

<br />就在去年的11月,我和其他几个同学一起在外面接了一个水位计数据采集的项目。这个项目当时接过来的时候,原先以为不会太难,但项目现在进行到今天(2011.1.18),才发现很多东西不是我们想当然的,下面随便写一些东西吧,也算是项目中期体会吧。<br /> <br />1、项目的实施过程中非常重要的一点就是进度的把握,在这个项目推进的过程中,我原本有着一份正规的实习工作,任务也很紧,所以有一段时间,我必须在两个项目之间不停地切换,人很累。两边客户或老板催得紧的时候,那时候唯一的想法就是能够有更多的时间

2011-01-18 12:48:00 1725

原创 Makefile相关总结

<br />1、主要功能:make是一个解释Makefile文件中指令的命令工具,其最基本的功能就是通过Makefile文件描述源程序之间的相互关系并自动维护编译工作,它会告知系统以何种方式编译和链接程序。剩下的工作就是输入make,就可以自动完成所有的编译任务,并且生成目标程序。<br />2、工作流程:<br />(1)查找当前目录下的Makefile文件<br />(2)初始化文件中的变量<br />(3)分析Makefie中的所有规则<br />(4)为所有的目标文件创建依赖关系<br />(5)根

2011-01-17 21:57:00 903

原创 unix之进程通信(IPC)

<br />1、管道<br /><br />管道是半双工的,也就是说数据只能在一个方向上流动。它们也只能在具有公共祖先的进程之间使用(通常一个管道由一个进程创建,然后该进程调用fork,此后父子进程之间就可以使用该管道了)。<br /><br /><br />函数原型:<br />#include <unistd.h><br />int pipe(int filedes[2]);<br />返回值:若成功返回0,若错误返回-1<br />经由参数filedes返回两个文件描述符:filedes[0] 为读打

2011-01-16 14:38:00 769

原创 unix之文件IO

主要总结一下unix中的read和write函数的使用和相关特性。1、read:从打开的文件中读取数据函数原型:#include ssize_t read( int filedes , void* buf , size_t nbytes );参数:filedes 文件描述符  buf 存储读取到的字节内容的缓冲区      nbytes 准备读取的字节数返回值:如果调用成功返回读取的字节数 ; 如果已到文件的结尾处则返回0 ; 发生错误   返回-1其实read在读取文件时,一般都是通过循环,不断读入缓冲区

2011-01-14 16:39:00 2483

原创 Android : 联系人 Turtorial

<br />Android本身提供了与“联系人”应用程序,使用起来也很方便,它包括了一些常用的数据类型字段,比如:联系人姓名、电话号码、IM地址、Email地址等等。但是Android存储联系人信息时并不是像我们想象的那样:直接开一张表,每一行就对应一个联系人,其中一行上包括了所有的数据域类型,如果没有这个数据类型的话,就空着。<br /> <br />事实上完全不是像我们这样想得这么简单,要知道对于查询或者存储联系人信息,在设计android内部预定义联系人数据库表时,必须要考虑今后版本或功能扩展上的兼容

2010-12-17 11:58:00 1159

原创 Android :content包 之学习

<br />下面先主要学习一下android.content.AsyncQueryHandler这个类<br /> <br />简单介绍:<br />A helper class to help make handling asynchronous ContentResolver queries easier. <br />它是一个帮助处理异步ContentResolver查询的帮助类。它继承于Handler。<br /> <br />它的构造函数:<br />public AsyncQueryHandle

2010-12-14 22:32:00 1803

原创 Java 多线程编程 学习笔记

<br />并发编程可以将程序分割成互相独立的task。使用多线程,每个这样的独立的task是由一个执行中的线程来驱动的。一个线程是某个进程中的单独的顺序的控制流。一个thread驱动一个task。可以通过Runnable接口来描述task,为了定义一个task,只要实现Runnale和run()方法。<br /> <br /> <br />在run()中调用static方法Thread.yield(),表示是对thread schedule的一个建议:将CPU时间从一个线程交给到下一个线程。<br />t

2010-12-12 15:32:00 899

原创 Android 电话相关架构及源代码分析和学习

分析com.android.internal.telephony,这是android系统内部实现的一些类。1、ITelephony.aidlinterface ITelephony /** * Interface used to interact with the phone.  Mostly this is used by the * TelephonyManager class.  A few places are still using this directly. * Please clean th

2010-12-12 11:17:00 2881

原创 Android之 Preference的学习

<br />1、android.preference.Preference<br />Represents the basic Preference UI building block displayed by a PreferenceActivity in the form of a ListView. This class provides the View to be displayed in the activity and associates with a SharedPreferences t

2010-12-11 15:51:00 1022

原创 Android开发小结

1、一般在启动虚拟机的时候可以通过cmd中的命令来启动对应的虚拟机并加载sdcard虚拟镜像。但是在eclipse中的对某个具体的project可以在它的run configurations中的target标签中,设置application additional command中的额外的命令选项,在这里加上对应的sdcard的启动命令 : -sdcard F:/Android/mySmallSDcard ,那么以后在通过eclipse启动模拟器时,就会自动加载sdcard虚拟镜像。2、对于UI的微调可以通过

2010-11-13 13:00:00 2461

原创 读研究生读什么?

最近也快要保研成功了,于是有一个问题一直缠绕在心头,读研究生到底读什么?是用三年的时间拼命地追求技术上的卓越吗?是用三年时间掌握更牛的技术吗?其实如果把思路放远一点,就会想到很多值得自己注意的地方。如果单纯是为了技术的提高,直接就业或许是一个更好的选择,所以读研究生决不是单纯的搞技术,更重要的应该是努力掌握研究问题的方法、思路,以及思维的提升。从一个更高的高度来提升自己的能力。另外除了技术的提高,不容忽视的是价值观或者说生活观等方面的提高和转变。要想在进一步使自己有更大的发展,(1)必须对经济、商业、法律等

2010-09-17 09:06:00 1981

原创 八数码算法研究

<br />下面是八数码问题的一些算法实现:<br /> <br />下面的代码使用的是迭代加深的搜索策略,由于这个算法是dfs搜索策略的改进,所以在dfs递归调用返回时,还是需要进行状态还原的:<br /> <br /> <br />/* * 迭代加深搜索 * */#include<cstdio>#include<queue>#include<stack>#include<ctime>#include<cstring>using namespace std;

2010-09-06 21:29:00 1067

原创 程序设计中的小技巧

1、在程序设计中可以使用宏定义:#define __DEBUG 1来进行调试,把调试语句放在if(__DEBUG)中,这样如果不想打印出调试语句,可以直接将__DEBUG宏定义改为 #define  __DEBUG 0即可。2、在程序设计之前,尽量在一开始就选择便于后期处理的数据结构,这样方面后面的编程设计,也可以提高程序设计的效率。3、对于复杂的函数,尽量在整个程序执行前就进行一下单元测试,这样的话,便于找出错误,不会到后面整个程序执行时,无法找到错误的地方。效率提高了。

2010-09-05 22:29:00 1040

原创 深度优先搜索算法

下面是poj3009的题目。http://acm.pku.edu.cn/JudgeOnline/problem?id=3009使用的是dfs搜索,代码如下,从中可以体会到dfs搜索的常规特点://POJ3009 Curling 2.0//使用深度搜索,这题有两个地方需要注意://1、当球与箱子相邻的时候,球无法滚动,也无法装破箱子。//2、题目有一个限界,当球滚了10次还没有进入目标点,看做不能到达。#include#include#include#define __DEBU

2010-09-05 21:22:00 4014

原创 程序设计中的小技巧和注意

1、可以在文件的头部定义一个__DEBUG宏,值为1,来标记程序处于调试阶段还是执行阶段。这样在调试的部分就可以用if(__DEBUG)来包含调试信息,而不需要调试信息时,可以直接将__DEBUG宏定义为0.这样很方便,而且需要屏蔽部分调试信息时,只需要使用if(! __DEBUG)就可以了。2、比较复杂的函数写完之后,可以先进行单元测试,保证功能上执行的正确性,这样其实避免了在一整个程序中去找bug出现在哪里就方便的多了,时间也节省下来了。

2010-09-03 22:12:00 917

原创 徐家印

<br />今天看了一下介绍徐家印的文章,看看他的经历,我发现做事有自己的想法,遇到困难不惧怕,另辟蹊径找出路,想办法才是需要的。<br />对他的非凡经历很有感触。

2010-09-03 09:46:00 5765

原创 搜索算法:IDA*算法

今天学习了IDA*算法,在这里总结一下:IDA*算法是A*算法和迭代加深算法的结合。迭代加深算法是在dfs搜索算法的基础上逐步加深搜索的深度,它避免了广度优先搜索占用搜索空间太大的缺点,也减少了深度优先搜索的盲目性。它主要是在递归搜索函数的开头判断当前搜索的深度是否大于预定义的最大搜索深度,如果大于,就退出这一层的搜索,如果不大于,就继续进行搜索。这样最终获得的解必然是最优解。而在A*算法中,我们通过使用合理的估价函数,然后在获得的子节点中选择fCost最小的节点进行扩展,以此完成搜索最优解的目的。但是A*

2010-09-01 22:30:00 28506 3

原创 搜索算法:爬山法

爬山法是深度优先搜索的改进算法。在这种方法中,使用某种贪心算法来帮助我们决定在搜索空间中向哪个方向搜索。由于爬山法总是选择往局部最优的方向搜索,所以可能会有“无解”的风险,而且找到的接不一定是最优解。但是他比深度优先搜索的效率要高很多。主要的算法描述如下:

2010-08-31 20:07:00 6426

原创 POJ1184Clerver_Writer:广度优先搜索

这是一道poj1184的题目,由于求解的是最优解,所以首先想到的就是使用广度优先搜索。

2010-08-31 15:38:00 1871

原创 string类的一些成员函数

1、const char *data();data()函数返回指向自己的第一个字符的指针. string str3="you are stupid!"; char* cc=(char*)str3.data(); *(cc+1)='n'; cout由于data()函数返回的是const char*,所以不能直接通过指针修改返回的字符串的值,如果要修改,必须把类型转化为char*.2、const char *c_str();c_str()函数返回一个指向正规C字符串的指针, 内容与本字符串相同. 作

2010-08-30 22:31:00 1972

原创 华容道游戏:广度优先搜索优先搜索

华容道游戏是非常经典的BFS应用的题目。下面是几个我参考过的链接:使用java语言实现,充分体现OOAD和数据结构的应用,讲的非常详细,但是太过于复杂了:http://www.cppblog.com/tx7do/archive/2006/09/18/12691.html简单版本的介绍,非常有用,而且有完整的源代码:http://blog.chinaunix.net/u/19651/showart_395172.html虽然讲的详细,但是代码也成这副样子,值得同情:http://www.fjptsz.com/

2010-08-30 21:34:00 2835 1

原创 记忆化搜索的研究

记忆化搜索:算法上依然是搜索的流程,但是搜索到的一些解用动态规划的那种思想和模式作一些保存。 一般说来,动态规划总要遍历所有的状态,而搜索可以排除一些无效状态。 更重要的是搜索还可以剪枝,可能剪去大量不必要的状态,因此在空间开销上往往比动态规划要低很多。 记忆化算法在求解的时候还是按着自顶向下的顺序,但是每求解一个状态,就将它的解保存下来,以后再次遇到这个状态的时候,就不必重新求解了。这种方法综合了搜索和动态规划两方面的优点,因而还是很有实用价值的。上传/更换附件动态规划的另一种实现形式——记忆化搜索的应用

2010-08-29 14:40:00 6792 1

转载 POJ1085 The Triangle War: 记忆化搜索

这是一道关于博弈的题目。我从中得到如下的体会:使用动态规划的方法来解答要比使用极大极小搜索算法,在速度上要快得多。因为极大极小搜索策略每次都要对当前的局面进行某个最大深度的搜索,从中选取出最佳的走法。这样其实是非常耗时的。由于这道题目的本身特点,如果使用动态规划的话,根据dp的思想就是保存搜索过程中的所有状态。在dp的搜索过程中,每次都是非常彻底的搜索,而且由于状态已经描述清楚并记录下来,如果产生了相同的状态,就可以直接使用,这样速度是很快的。但是从这道题目可以开出,dp中状态的描述需要进行保持程序设计的简

2010-08-28 22:53:00 2505

原创 机器博弈:tic-tac-toe游戏

<br />下面是我写的一个tic-tac-toe的简单游戏。<br /> <br />我主要的思路是使用极大极小的搜索策略。并且体会到博弈程序的好坏很大程度上取决于局面评估函数的好坏。<br />因为机器方希望在所有下一步可以下子的集合中,选择最优的步法。这是就需要就局面进行评估,需要附加一些知识,而局面的评估值可以是所有这些知识评估的结果之和。<br /> <br />评估函数和程序对局面的搜索速度是成反比的。<br /> <br /> <br />我的程序中评估函数比较弱。<br /> <br />主

2010-08-28 20:11:00 1232

原创 Android:SQLiteOpenHelper

public abstract classSQLiteOpenHelperextends Object<br />Class Overview<br />A helper class to manage database creation and version management. You create a subclass implementing onCreate(SQLiteDatabase), onUpgrade(SQLiteDatabase, int, int) and optiona

2010-08-25 11:35:00 1231

原创 POJ1924 The Treasure

问题描述:这道题目类似于RPG游戏,player的目标是在被monster吃掉之前,拿到treasure。在游戏中,monster分为aggressive和non-aggressive两种,有不同的吃人能力。player可以run或walk,时间消耗是一样的。要求:求出最短拿到treasure的时间。主要的思路是这样的:使用A*搜索算法,比普通的广度搜索速度上要快一点,但算法上复杂了一些。                               在程序设计中使用面向对象的思想。源代码如下:Player类

2010-08-24 21:18:00 1616

原创 linux内核的烧写

<br />在linux内核移植过程中,需要将linux内核烧写到开发板上。<br /> <br />基本的步骤是:<br />1、将bootloader通过J-TAG烧写到开发板上,而一般bootloader与硬件密切相关,硬件厂商都会提供这样的板级支持包。<br />不同的bootloader会提供不同的bootloader命令,一般都是可以通过help进行查看的。<br /> <br />2、将linux内核通过tftp传输到RAM中,注意在宿主机-开发板的开发环境中,PC主机充当的是tftp的服务器

2010-08-24 10:47:00 7185

原创 请永远相信自己的努力、实力和运气

<br />请永远相信自己的努力、实力和运气

2010-08-20 13:24:00 1052

Learning.the.bash.Shell.3rd

这是最新的关于学习bash的一本电子书,我看过第二版的中文版,感觉不错,好不容易找到了第三版。可以学些shell编程的方法。

2011-01-28

ARM平台开发的GPRS发送短信程序

这是我在ARMs3c2410开发板上,使用BENQ公司的M22 GPRS模块,开发的自动发送短信的C语言程序,其中包含了linux下串口编程的方法。只要在PC端运行编译后的程序,通过串口连接GPRS,就能实现让GPRS模块发送短信到任何人的手机上!!

2010-01-31

软件测试习题集锦、包括了白盒测试和黑盒测试

这是自己整理的白盒测试、黑盒测试的各种题型,其中也包括了上面两种测试方法的综合题。非常实用!!

2010-01-23

软件测试完整版复习资料

这里我自己整理的软件测试方法的集锦。其中包括白盒测试、黑盒测试、静态测试等不同测试大类的各种测试方法,内容详尽,对于复习软件测试考试,绝对是好东西!!我同时也上传了相应的软件测试习题集锦,欢迎下载!!

2010-01-23

21点游戏_OOAD设计_C++语言编写

这是我用C++语言编写,以OOAD思想设计的21点游戏,也就是BlackJack游戏,其中包含了源文件,只要在VC6.0中编译就可以运行!代码有注释,不可多得的好东西!!

2009-12-10

华东师大软件测试ppt

华东师大软件测试ppt---静态测试,讲述了静态测试的各种方法,值得一看!

2009-11-13

华师大软件学院软件测试ppt

软件测试之变异测试,变异测试是软件测试领域的热点研究,值得学习,对于从事软件测试行业的人更值得看!

2009-11-13

空空如也

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

TA关注的人

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