<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[小GIS的成长日记]]></title><description><![CDATA[小成靠智 大成靠德]]></description><link>https://blog.csdn.net/tttt418</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; tttt418]]></copyright><item><title><![CDATA[FILE指针在两个dll中无法正确操作的问题]]></title><link>https://blog.csdn.net/tttt418/article/details/6122630</link><guid>https://blog.csdn.net/tttt418/article/details/6122630</guid><author>tttt418</author><pubDate>Fri, 07 Jan 2011 14:52:00 +0800</pubDate><description><![CDATA[<br />int main(int argc, char* argv[])<br />{<br />    FILE * stream;<br />    if( (stream=fopen("F://1.txt","w+")) !=NULL )<br />    {<br />        printf("fp1=%X/n", stream);<br />        testFile( stream );<br />    }<br />    return 0;<br />}<br />//dl]]></description><category></category></item><item><title><![CDATA[HEAP[xxx.exe]:Invalid Address specified to RtlValidateHeap 错误的解决方法]]></title><link>https://blog.csdn.net/tttt418/article/details/6122126</link><guid>https://blog.csdn.net/tttt418/article/details/6122126</guid><author>tttt418</author><pubDate>Fri, 07 Jan 2011 11:21:00 +0800</pubDate><description><![CDATA[<br />抽象出问题是这样的：<br /> <br />class DLL_API1 A<br />{<br />func()<br />{<br />vector vec;<br />B b;<br />b.func(vec);<br /> <br />return TRUE;<br />}<br />}<br /> <br />其中B是另一个导出类，定义如下<br />class DLL_API2 B<br />{<br />private:<br />vector m_vec;<br />publi]]></description><category></category></item><item><title><![CDATA[五分钟法则(five minute rules)]]></title><link>https://blog.csdn.net/tttt418/article/details/6113870</link><guid>https://blog.csdn.net/tttt418/article/details/6113870</guid><author>tttt418</author><pubDate>Mon, 03 Jan 2011 16:52:00 +0800</pubDate><description><![CDATA[<br /><br /><br /> 1987年，Jim Gray和Gianfranco Putzolu推出了著名的5分钟法则[Gray 1987]，他们通过内存，硬盘的性能以及当时的成本，给出了这样的公式：BreakEvenIntervalinSeconds =<br />(PagesPerMBofRAM /AccessesPerSecondPerDisk) × (PricePerDiskDrive /PricePerMBofRAM)。并由该公式得到了5分钟左右的近似值，因此做出这样的判断，如果一个数据的]]></description><category></category></item><item><title><![CDATA[Page Size]]></title><link>https://blog.csdn.net/tttt418/article/details/6113860</link><guid>https://blog.csdn.net/tttt418/article/details/6113860</guid><author>tttt418</author><pubDate>Mon, 03 Jan 2011 16:47:00 +0800</pubDate><description><![CDATA[看好多论文和源码中都有Page Size的概念，我却一直比较模糊，今天特地仔细查了一下。基本概念 Traditionally, pages in a system had uniform size, for example 4096 bytes.一般来说，系统中页的大小是规定好的，比如说4096B，也即4KB页的内部分段When transferring from disk, much of the delay is caused by seek time, the time it takes to cor]]></description><category></category></item><item><title><![CDATA[解决VC6.0中ostringstream类输出__int64类型导致的错误error C2593: 'operator <<' is ambiguous]]></title><link>https://blog.csdn.net/tttt418/article/details/6017868</link><guid>https://blog.csdn.net/tttt418/article/details/6017868</guid><author>tttt418</author><pubDate>Thu, 18 Nov 2010 10:45:00 +0800</pubDate><description><![CDATA[#includeint main(){    std::ostringstream ss;    ss     __int64 i;    // error C2593: 'operator     ss }以上代码提示错误error C2593: 'operator {    char buf[255]={0};    _i64tot( data, buf,10);    stream     return stream;]]></description><category></category></item><item><title><![CDATA[CString 转化为 char*]]></title><link>https://blog.csdn.net/tttt418/article/details/6016633</link><guid>https://blog.csdn.net/tttt418/article/details/6016633</guid><author>tttt418</author><pubDate>Wed, 17 Nov 2010 22:57:00 +0800</pubDate><description><![CDATA[<br /><br /> CString orig("Hello, World!");<br /><br />    // Convert to a char*<br />    const size_t newsize = 100;<br />    char nstring[newsize];<br />    strcpy(nstring, orig);<br /><br />另外的方法如下：<br />方法一: <br />char *p; <br />CString str="hello"; <b]]></description><category></category></item><item><title><![CDATA[VC中Radio Button的用法]]></title><link>https://blog.csdn.net/tttt418/article/details/6016456</link><guid>https://blog.csdn.net/tttt418/article/details/6016456</guid><author>tttt418</author><pubDate>Wed, 17 Nov 2010 22:08:00 +0800</pubDate><description><![CDATA[先为对话框加上2个radio button，分别是Radio1和Radio2。问题1：如何让Radio1或者Radio2默认选上？如何知道哪个被选上了？关键是选上，“默认”只要放在OnInitDialog()即可。三种方法可以让它选上，第一种：((CButton *)GetDlgItem(IDC_RADIO1))->SetCheck(TRUE);//选上((CButton *)GetDlgItem(IDC_RADIO1))->SetCheck(FALSE);//不选上((CButton *)GetDlgIt]]></description><category></category></item><item><title><![CDATA[获取文件大小]]></title><link>https://blog.csdn.net/tttt418/article/details/6014990</link><guid>https://blog.csdn.net/tttt418/article/details/6014990</guid><author>tttt418</author><pubDate>Wed, 17 Nov 2010 15:31:00 +0800</pubDate><description><![CDATA[ #include #include #include #include #define _AFXDLLusing namespace std;void main(){    // 此文件在工程打开状态下为不可访问    char* filepath = "..//test.ncb";    // 方法一    struct _stat info;    _stat(filepath, &info);    int size = info.st_size;// 大小：byte    cout    // 方]]></description><category></category></item><item><title><![CDATA[字符和数值的相互转换]]></title><link>https://blog.csdn.net/tttt418/article/details/6014974</link><guid>https://blog.csdn.net/tttt418/article/details/6014974</guid><author>tttt418</author><pubDate>Wed, 17 Nov 2010 15:26:00 +0800</pubDate><description><![CDATA[老忘… 写这里提醒下字符串转换为其它数据类型 
strcpy(temp,"123"); 

短整型(int) 
i = atoi(temp); 
长整型(long) 
l = atol(temp); 
浮点(double) 
d = atof(temp)]]></description><category></category></item><item><title><![CDATA[stack类]]></title><link>https://blog.csdn.net/tttt418/article/details/6013858</link><guid>https://blog.csdn.net/tttt418/article/details/6013858</guid><author>tttt418</author><pubDate>Wed, 17 Nov 2010 08:51:00 +0800</pubDate><description><![CDATA[与vector、list、deque等顺序容器不同，stack是标准库提供的顺序容器适配器。适配器（adapter）从本质上说是使一类事物的行为类似于另一类事物的行为的一种机制。容器适配器就是让一种已经存在的容器类型采用另一种不同的抽象类型的工作方式实现。stack就可以使任何一种顺序容器以栈的方式工作。由此可见，stack是一种逻辑上的概念，是在基本容器上次的一种封装。常用的stack相关的操作：#include stack stk;s.empty();s.size();s.pop(); 删除栈顶元素s.]]></description><category></category></item><item><title><![CDATA[基类和派生类的构造函数]]></title><link>https://blog.csdn.net/tttt418/article/details/6009729</link><guid>https://blog.csdn.net/tttt418/article/details/6009729</guid><author>tttt418</author><pubDate>Mon, 15 Nov 2010 11:48:00 +0800</pubDate><description><![CDATA[<br />关于基类和派生类的构造函数这篇文章写的很清楚，转载过来：<br /> <br /><br />1. 顺序<br />      当创建一个派生类的对象时，系统首先自动创建一个基类对象，也就是说，在调用派生类构造函数创建派生类对象之前，系统首先调用基类的构造函数创建基类对象。当派生类对象生命期结束时，首先调用派生类的析构函数，然后调用基类的析构函数。简而言之，就是说，构造函数：基类->派生类。析构函数：派生类->基类。<br />这个我们完全可以通过一个小程序来说明：//通过输出就可以看出在创建派]]></description><category></category></item><item><title><![CDATA[函数指针]]></title><link>https://blog.csdn.net/tttt418/article/details/6005934</link><guid>https://blog.csdn.net/tttt418/article/details/6005934</guid><author>tttt418</author><pubDate>Fri, 12 Nov 2010 21:26:00 +0800</pubDate><description><![CDATA[在看stanford牛人们写的代码里经常用到这个。貌似很好用的，学习下~

【函数指针】

       在程序运行中，函数代码是程序的算法指令部分，它们和数组一样也占用存储空间，都有相应的地址。可以使用指针变量指向数组的首地址，也可以使用指针变量指向函数代码的首地址，指向函数代码首地址的指针变量称为函数指针。

1．函数指针定义

函数类型 （*指针变量名）(形参列表)；

“函数类型”说明函数的返回类型，由于“()”的优先级高于“*”,所以指针变量名外的括号必不可少，后面的“形参列表]]></description><category></category></item><item><title><![CDATA[ STL中用erase()方法遍历删除元素]]></title><link>https://blog.csdn.net/tttt418/article/details/5966179</link><guid>https://blog.csdn.net/tttt418/article/details/5966179</guid><author>tttt418</author><pubDate>Tue, 26 Oct 2010 11:02:00 +0800</pubDate><description><![CDATA[erase(it)删除元素后指向删除元素的下一个元素的地址，所以正确的使用方法：std::vector Vec;      std::vector::iterator itVec;      for( itVec = Vec.begin(); itVec != Vec.end(); )      {            if( WillDelete( *itVec) )            {                 itVec = Vec.erase( itVec);            }]]></description><category></category></item><item><title><![CDATA[C++中 public，protected， private 访问标号小结]]></title><link>https://blog.csdn.net/tttt418/article/details/5953415</link><guid>https://blog.csdn.net/tttt418/article/details/5953415</guid><author>tttt418</author><pubDate>Wed, 20 Oct 2010 10:27:00 +0800</pubDate><description><![CDATA[<br />第一：private, public, protected 访问标号的访问范围。private：只能由1.该类中的函数、2.其友元函数访问。不能被任何其他访问，该类的对象也不能访问。<br />protected：可以被1.该类中的函数、2.子类的函数、以及3.其友元函数访问。但不能被该类的对象访问。<br />public：可以被1.该类中的函数、2.子类的函数、3.其友元函数访问，也可以由4.该类的对象访问。 注：友元函数包括3种：设为友元的普通的非成员函数；设为友元的其他类的成员函数；设为]]></description><category></category></item><item><title><![CDATA[Oracle EM 中主机身份证明的问题]]></title><link>https://blog.csdn.net/tttt418/article/details/5150901</link><guid>https://blog.csdn.net/tttt418/article/details/5150901</guid><author>tttt418</author><pubDate>Thu, 07 Jan 2010 15:21:00 +0800</pubDate><description><![CDATA[登陆时输入了系统的用户名和密码也总是提示错误 设置－控制面板－管理工具－本地安全策略－本地策略－用户权利指派－作为批处理作业登陆中加入administrator]]></description><category></category></item><item><title><![CDATA[oracle控制文件管理]]></title><link>https://blog.csdn.net/tttt418/article/details/5128582</link><guid>https://blog.csdn.net/tttt418/article/details/5128582</guid><author>tttt418</author><pubDate>Mon, 04 Jan 2010 12:10:00 +0800</pubDate><description><![CDATA[oracle数据库通过控制文件保持数据库的完整性，一旦控制文件被破坏数据库将无法启动，因此建议采用多路控制文件或者备份控制文件的方法。 控制文件是数据库建立的时候自动生成的二进制文件，只能通过实例进行修改，如果手动修改的话会造成控制文件与物理信息不符合，从而导致数据库不能正常工作。oracle数据库通过控制文件保持数据库的完整性，一旦控制文件被破坏数据库将无法启动，因此建议采用多路控制]]></description><category></category></item><item><title><![CDATA[Oracle查看用户表]]></title><link>https://blog.csdn.net/tttt418/article/details/5128531</link><guid>https://blog.csdn.net/tttt418/article/details/5128531</guid><author>tttt418</author><pubDate>Mon, 04 Jan 2010 11:56:00 +0800</pubDate><description><![CDATA[在Oracle中查看所有的表: select * from tab/dba_tables/dba_objects/cat; 看用户建立的表   :  select table_name from user_tables;  //当前用户的表       select table_name from all_tables;  //所有用户的表       select table_name from]]></description><category></category></item><item><title><![CDATA[基于MFC的OpenGL绘图 ]]></title><link>https://blog.csdn.net/tttt418/article/details/4559820</link><guid>https://blog.csdn.net/tttt418/article/details/4559820</guid><author>tttt418</author><pubDate>Wed, 16 Sep 2009 18:03:00 +0800</pubDate><description><![CDATA[ 一、简介 　 GDI是通过设备句柄（Device Context以下简称"DC"）来绘图，而OpenGL则需要绘制环境（Rendering Context，以下简称"RC"）。每一个GDI命令需要传给它一个DC，但与GDI不同，OpenGL使用当前绘制环境(RC)。一旦在一个线程中指定 了一个当前RC，在此线程中其后所有的OpenGL命令都使用相同的当前RC。虽然在单一窗口中可以]]></description><category></category></item><item><title><![CDATA[VC中OpenGL的配置]]></title><link>https://blog.csdn.net/tttt418/article/details/4474953</link><guid>https://blog.csdn.net/tttt418/article/details/4474953</guid><author>tttt418</author><pubDate>Sun, 23 Aug 2009 13:24:00 +0800</pubDate><description><![CDATA[第一步：选择一个编译环境    现在Windows系统的主流编译环境有Visual Studio，Broland C++ Builder，Dev-C++等，它们都是支持OpenGL的。但这里我们选择VC++ 6.0作为学习OpenGL的环境。    第二步：安装GLUT工具包    GLUT不是OpenGL所必须的，但它会给我们的学习带来一定的方便，推荐安装。    Windows环境下的GLUT]]></description><category></category></item><item><title><![CDATA[C++ 内存泄露的检测]]></title><link>https://blog.csdn.net/tttt418/article/details/4473161</link><guid>https://blog.csdn.net/tttt418/article/details/4473161</guid><author>tttt418</author><pubDate>Sat, 22 Aug 2009 17:42:00 +0800</pubDate><description><![CDATA[首先，我们需要知道C运行库的Debug版本提供了许多检测功能，使得我们更容易的Debug程序。在MSDN中有专门的章节讲这个，叫做Debug Routines，建议大家先看看里面的内容吧。我们会用到里面很重要的几个函数。其中最重要的是 _CrtDumpMemoryLeaks();自己看MSDN里的帮助吧。使用这个函数，需要包含头文件crtdbg.h该函数只在Debug版本才有用，当在调试器下运行程]]></description><category></category></item></channel></rss>