- 博客(32)
- 资源 (7)
- 收藏
- 关注

原创 android编程中容易遇到的若干问题
学习android编程首先就是要搭建android开发环境,这个还比较简单,无外乎包括JDK、eclipse、android sdk、ADT之类的,之前是根据某入门书箱介绍下载的android sdk压缩包中直接包含了platform 1.5和1.6版本,整个开发环境搭建过程都很顺利。 开始第一个android用例——大名鼎鼎的“Hello world”。第一个问题出现了...is m
2012-09-14 13:12:44
4403

转载 COM编程
在VC知识库中发现两篇讲COM编程的,还不错,转载下提供参考了COM编程入门:第一部分 什么是COM,如何使用COMCOM编程入门:第二部分 深入COM服务器将文章中的例子在VS2008中实践了一下:1. 使用单接口的COM对象#include "stdafx.h"#include#pragma comment(lib, "ole32.lib")#includ
2012-06-13 22:50:51
520

原创 C和C++中的static关键字小结
static关键字是C, C++中都存在的关键字, 它主要有三种使用方式, 其中前两种只指在C语言中使用, 第三种在C++中使用(C,C++中具体细微操作不尽相同, 本文以C++为准). (1)局部静态变量 (2)外部静态变量/函数 (3)静态数据成员/成员函数 一、局部静态变量 在C/C++中, 局部变量
2012-06-05 21:25:19
413
原创 VS2012下通过MAP追踪异常代码的位置
本文中涉及的编译环境为Visual Studio 2012.#include "stdafx.h"double DivideBy (double dividend, double divisor) { double retVal = dividend / divisor; return retVal; }int _tmain(int argc,
2013-12-13 14:28:11
4042
原创 字符串间的转换
一、char 与 wchar_t 间的转换1. char to wchar_tchar *chr = "Hello World";wchar_t wchr[128];MultiByteToWideChar(CP_ACP, 0, chr, strlen(chr) + 1, wchr, sizeof(wchr));2. wchar_t to charchr = (c
2013-09-26 09:49:06
1019
转载 Standard Annotation Language (SAL)
A Brief Introduction to the Standard Annotation Language (SAL)
2012-11-30 14:57:44
877
原创 解决英文操作系统中显示中文乱码问题
自从用了英文操作系统后,安装中文版本软件就开始困扰我了,不是因为安装本身问题,而是安装完毕后,中文显示成乱码了,估计不少人也遇到过和我一样的问题吧。下面就我本机的实际环境,来分享一下经验之谈。1. 进入Control Panel,选择Region and Language;2. 切换到Administrative页签,点击Change system locale...按钮;3. 在
2012-08-02 09:38:06
1591
原创 一个有趣的盛水问题
今天遇到一个关于用水壶盛水的问题,感觉很有意思,特贴上来与大家分享分享。题目:假设一个水池有无限的水,现在只提供2个空水壶,1个5升,另1个6升,问仅使用这两个水壶,如何取得3升的水?分析:像这种类似的问题,一般都是拿着几个壶倒来倒去,要是有3个水壶,问题就比较简单,但因为只有两个水壶,还是需要稍微研究研究的。直接上答案吧。先给水壶贴上标签,方便陈述,假设5升的水壶为A壶,
2012-06-27 19:51:02
1004
原创 知识点大杂烩
在工作过程中总会学到一些新的知识,个人习惯将它们一一记录下来,不过没有考虑太多,所以知识点有点分散,最终决定全部转移到个人Blog上,一来统一管理,二来如果能给其他人提供一点点指导也是非常好的。1. 通过代码打开程序引用单元:ShellAPI执行函数(范例:打开Excel文件):ShellExecute(HWND(self), 'open', 'excel', PChar(sExc
2012-06-24 20:25:19
814
原创 用Delphi编写Web Service
一、Delphi中编写Web Service的步骤如下:1. File->New->other;2. 在打开的对话框中,选择Web Services->SOAP Server Application3. 选择ISAPI DLL4. 选择Yes,自动生成接口和实现文件也可以选择No,可以使用SOAP Server Interface向导来添加接口:
2012-06-24 20:02:05
970
转载 VC++多线程编程
一、问题的提出编写一个耗时的单线程程序: 新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下:void CSingleThreadDlg::OnSleepSixSecond(){Sleep(6000); //延时
2012-06-24 13:01:28
542
转载 SQL中的存储过程和事务
一、事务1.什么是事务:事务是一个不可分割的工作逻辑单元,在数据库系统上执行并发操作时事务是做为最小的控制单元来使用的。他包含的所有数据库操作命令作为一个整体一起向系提交或撤消,这一组数据库操作命令要么都执行,要么都不执行。2.事务的语句开始事物:BEGIN TRANSACTION提交事物:COMMIT TRANSACTION回滚事务:ROLLBACK TRANSACT
2012-06-17 21:32:11
639
转载 memcpy和strcpy的区别
strcpy和memcpy都是标准C库函数,它们有下面的特点。strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。已知strcpy函数的原型是:char* strcpy(char* dest, const char* src);memcpy提供了一般内存的复制。即memcpy对于需要复制的内容没有限制,因此用途更广。
2012-06-16 21:55:44
506
转载 构造函数不能是虚函数
先了解一下虚函数的工作原理:编译器处理虚函数的方法是给每个对象添加一个隐藏成员。隐藏成员中保存了一个指向函数地址数组的指针。这种数组称为虚函数表(virtual function table,vtbl)。虚函数表中存储了为类对象进行声明的虚函数的地址。例如,基类对象包含一个指针,该指针指向基类中所有虚函数的地址表。派生类对象将包含一个指向独立地址表的指针。如果派生类提供了虚函数的新定义,该虚函
2012-06-16 20:03:18
501
原创 malloc/free和new/delete
在C/C++中进行内存分配和释放时肯定会用到malloc/free、new/delete,它们是配套使用的。一、malloc、free1. 工作机制malloc函数的实质体现在,它有一个将可用的内存块连接为一个长长的列表的所谓空闲链表。调用malloc函数时,它沿连接表寻找一个大到足以满足用户请求所需要的内存块。然后,将该内存块一分为二(一块的大小与用户请求的大小相等,
2012-06-16 19:45:26
627
转载 关于new和delete,new[] 和delete[]
通常状况下,编译器在new的时候会返回用户申请的内存空间大小,但是实际上,编译器会分配更大的空间,目的就是在delete的时候能够准确的释放这段空间。这段空间在用户取得的指针之前以及用户空间末尾之后存放。实际上:blockSize = sizeof(_CrtMemBlockHeader) + nSize + nNoMansLandSize;其中,blockSize 是系统所分配的实际空间大
2012-06-16 18:41:23
606
转载 new和delete原理
当我们在程序中写下 new 和 delete 时,我们实际上调用的是 C++ 语言内置的 new operator 和 delete operator(注:operator表示操作符)。所谓语言内置就是说我们不能更改其含义,它的功能总是一致的。以 new operator 为例,它总是先分配足够的内存,而后再调用相应的类型的构造函数初始化该内存。而 delete operator 总是
2012-06-16 18:09:55
1577
原创 探究类对象在创建时各成员的构造顺序
一、先看一个简单的例子:class B{public: B(){cout<<"B constructor"<<endl;}private: int m; int n;};int _tmain(int argc, _TCHAR* argv[]){ B b1; system("pause"); return 0;}完成b1对象的构造前,它会先构造类的数据成员(
2012-06-14 23:14:30
630
转载 cookie入门
一、引言HTTP协议是非常强大的。不过,它有一个缺陷就是不记忆状态。这意味着,当一次HTTP会话结束后,不管是客户还是服务器,都不记忆刚刚发生的会话。这有可能导致一些麻烦,因为服务器无法知道一些重要的事情,诸如口令、发给客户的纪录等。 HTTP协议提供了一个基本方法可以让客户的机器中保存一些信息,这样,服务器就可以从中知道上一次HTTP会话的的情况,这就是所谓的Cookie。
2012-06-13 22:43:23
687
原创 vs2008安装失败的原因
刚重装的系统,竟然在安装VS2008时报错,Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->[01/13/10,18:55:42] setup.exe: [2] ISetupComponent::Pre/Post/Install() failed
2012-06-13 22:41:57
705
转载 BootStrap
所谓BootStrap设计法是指父类会定义各种服务方法,但是这些服务方法需要有特定的标的,例如Window Handle或是Window 的 Device Context Handle。父类在实现服务方法时都会使用这些特定的标的,但是这个特定的标的却只由派生类提供,并不由父类提供。这种让特定的标的延迟到派生类才提供的设计便称为BootStrap设计方法,这也就是说使用这种设计的类并不能且不应该创建
2012-06-13 21:21:54
365
转载 Place Holder
Place Holder方法是VCL Framework在设计核心组件类时最常使用的手法。所谓Place Holder方法是指父类的一些虚拟方法被实现为空白的函数面不声明为抽象方法,例如TCanvas类的虚拟方法CreateHandle便使用了Place Holder设计。 使用Place Holder设计的好处是避免了抽象类的缺点,另外父类如果稍后觉得需要加入任何的实现,那么就可以在P
2012-06-13 21:20:52
1245
原创 代码大全学习总结——一般控制问题
主要介绍了控制结构中需要注意的问题或者可以说成一些原则,在最后2节对结构化编程以及控制结构与复杂度的关系做了简单说明,感觉对我们来说指导意义不大,不好的控制结构必然会导致复杂度的增加,此处就不进行展开了。 下面对前4节内容进行学习分享。一、布尔表达式1. 多用True和False做布尔判断,不要用0和1等数值2. 简化复杂的表达式 提到了3种方法
2012-06-13 21:18:00
605
原创 代码大全学习总结——表驱动法
这章讲得还是比较有深度的,尤其是那个“灵活的消息格式”的案例,融合了表驱动法以及面向对象方法,将一个复杂的问题处理设计得非常简单而巧妙。 未看表驱动法前,会想着它是什么样的东西,会不会很难理解,真正学习了这章后,会发现表驱动法并不难,但感觉又容易和子函数混淆,感觉它就是个带参数的子函数... 其实这么理解也是可以的,在使用表驱动法的两个问题中的第一个就说明了这个意思
2012-06-13 21:17:31
692
原创 代码大全学习总结——直线型代码、条件语句
这两章内容很少,也比较简单,以下就分别摘着个人觉得需要注意的点进行阐述。 一、组织直线型代码就2种情况:一个是有顺序关系,一个无顺序关系。 1. 前者是必须有明确顺序的语句关键是2个字“明显”,将关系明显化,主要有以下几个简单原则:a. 利用程序参数来明确依赖关系; 类中常用用私有成员变量来简化参数传递,不过个人建议还是带上,一来
2012-06-13 21:17:09
902
原创 代码大全学习总结——变量
一、变量的初始化应该采用就近原则:在靠近变量第一次使用的位置初始化它。以前编程是时有这样的习惯,在函数体开始处就把该函数所有需要的变量都申明并初始化,MS还挺结构化的,但用起来还不方便,使用变量的时候只能去函数体开始处寻找,比较费劲。理想情况:在靠近变量第一次使用的位置申明并初始化它。 二、作用域这里提到了2个概念:跨度、存活时间。虽然叫法不同,但实
2012-06-13 21:16:24
391
原创 代码大全学习总结——重构
一、简单的知识答疑what 引用Martin Fowler给出的官方解释:重构是在不改变软件外部行为的前提下,对其内部结构进行改变,使之更容易理解并便于修改。(请注意红色标注内容)why 代码重复、程序太长、嵌套过深、参数太多、接口抽象不一致、变化导致多个地方同时修改...MS理由很多很多,其实说白了,当代码看不懂的时候,往往就预示着代码需要重构了。
2012-06-13 21:15:44
636
原创 代码大全学习总结——伪代码编程
对程序员来说,写文档是一件非常痛苦的事情。虽然号称是拥有比非程序员略强的思维逻辑,但本身却对咬文嚼字不感冒。这里推荐伪代码编程,它可以减少设计和编写文档的工作量,同时却起到了设计文档的作用。 伪代码是指某种用来描述算法、子程序、类或完整程序的工作逻辑的、非形式的、类似于英语的记法。1. 用类似英语的语句来精确描述特定的操作2. 避免使用目标编程语言中的语法元
2012-06-13 21:15:01
949
原创 代码大全学习总结——防御式编程
先回忆一下以前使用过哪些防御式编程:IF语句、Assert断言、Except异常...除了这些还能有什么呢?带着这个疑问,学习了代码大全第8章防御式编程,并将学习的成果以及自己的心得体会总结如下。 主要的防御式编程手段有断言、错误处理技术、异常、隔栏。一、断言关键点:它是用来处理“绝不应该”发生的状况。例如:平常在代码里接收用户输入参数时,常常会写如果输入的
2012-06-13 21:09:12
790
转载 C语言中的volatile关键字
volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改。用volatile关键字声明的变量i每一次被访问时,执行部件都会从i相应的内存单元中取出i的值。没有用volatile关键字声明的变量i在被访问的时候可能直接从cpu的寄存器中取值(因为之前i被访问过,也就是说之前就从内存中取出i的值保存到某个寄存器中),之所以直接从寄存器中取值,而不
2012-06-05 21:40:34
299
android sdk-extras
2012-09-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人