2012年4月2日
摘要: #define UNIQE_NAME "{1AB792D6-EAF2-3267-9A84-9135681127A4}"#define GIS_MSG "{D48CA993-4925-41cb-8F59-ABAAAFCEF797}"const UINT ID_GIS_INSTANCE = ::RegisterWindowMessage(GIS_MSG);//注册消息// 确保程序只有一个实例在运行m_hOneInstance = ::CreateMutex(NULL, FALSE, UNIQE_NAME);if (GetLastError() == ERR 阅读全文
posted @ 2012-04-02 17:03 莫水千流 阅读(197) 评论(0) 推荐(0) 编辑
摘要: OSVERSIONINFO OsVersionInfo; //包含操作系统版本信息的数据结构 OsVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&OsVersionInfo); //获取操作系统版本信息 if(OsVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) { //Windows98,调用ExitWindowsEx()函数重新启动计算机 DWORD dwReserved; Exit... 阅读全文
posted @ 2012-04-02 17:02 莫水千流 阅读(424) 评论(0) 推荐(0) 编辑
摘要: 函数参数入栈的方式 --------------------------------------------------------------- 在函数调用过程中,会使用堆栈,这三个表示不同的堆栈调用方式和释放方式。 比如说__cdecl,它是标准的c方法的堆栈调用方式,就是在函数调用时的参数压入堆栈是与函数的声明顺序相反的,其它两个可以看MSDN,不过这个对我们编程没有太大的作用 --------------------------------------------------------------- 调用约定 调用约定(Calling convention)决定以下内容:函数参数的. 阅读全文
posted @ 2012-04-02 17:01 莫水千流 阅读(217) 评论(0) 推荐(0) 编辑
摘要: Windows下的多线程与线程同步概述多任务是一个操作系统可以同时运行多个程序的能力。基本上,操作系统使用一个硬件时钟为同时运行的每个进程分配“时间片”。如果时间片足够小,并且机器也没有由于太多的程序而超负荷,那么在用户看来,所有的这些程序似乎在同试运行着。多线程是在一个程序内部实现多任务的能力。程序可以把它自己分隔为单独的执行“线程”,这些线程似乎也同时在运行[1]。[g1]多线程的应用非常广泛,最常见的是在需要进行大量计算的程序中使用辅助线程完成计算工作,而用户界面线程响应用户的操作。多线程中不同线程之间的通讯通常是使用共享数据对象来实现的,不管是使用全局变量还是线程过程函数的指针参数进行 阅读全文
posted @ 2012-04-02 17:00 莫水千流 阅读(560) 评论(0) 推荐(0) 编辑
摘要: 信号量(Semaphore)内核对象对线程的同步方式与前面几种方法不同,它允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访问此资源的最大线程数目。在用CreateSemaphore()创建信号量时即要同时指出允许的最大资源计数和当前可用资源计数。一般是将当前可用资源计数设置为最大资源计数,每增加一个线程对共享资源的访问,当前可用资源计数就会减1,只要当前可用资源计数是大于0的,就可以发出信号量信号。但是当前可用计数减小到0时则说明当前占用资源的线程数已经达到了所允许的最大数目,不能在允许其他线程的进入,此时的信号量信号将无法发出。线程在处理完共享资源后,应在离开的同时通过Relea 阅读全文
posted @ 2012-04-02 16:59 莫水千流 阅读(1511) 评论(0) 推荐(0) 编辑
摘要: Visual C++支持三种DLL,它们分别是Non-MFC DLL(非MFC动态库)、MFC Regular DLL(MFC规则DLL)、MFC Extension DLL(MFC扩展DLL)。Non-mfc dll//文件:lib.h#ifndef LIB_H#define LIB_Hextern "C" int add(int x,int y); //声明为C编译、连接方式的外部函数#endif//文件:lib.cpp#include "lib.h"int add(int x,int y){ return x + y;}静态调用:#include 阅读全文
posted @ 2012-04-02 16:58 莫水千流 阅读(614) 评论(0) 推荐(0) 编辑
摘要: 一 :关于指针和堆的内存分配 先来介绍一下指针 : 指针一种类型,理论上来说它包含其他变量的地址,因此有的书上也叫它:地址变量。既然指针是一个类型,是类型就有大小,在达内的服务器上或者普通的PC机上,都是4个字节大小,里边只是存储了一个变量的地址而已。不管什么类型的指针,char * ,int * ,int (*) ,string * ,float * ,都是说明了本指针所指向的地址空间是什么类型而已,了解了这个基本上所有的问题都好象都变的合理了。 在C++中,申请和释放堆中分配的存贮空间,分别使用new和delete的两个运算符来完成: 指针类型 指针变量名=new 指针类型 (初始化); 阅读全文
posted @ 2012-04-02 16:58 莫水千流 阅读(1704) 评论(1) 推荐(1) 编辑
摘要: 主机使用PPPOE拨号上网 方法一:NAT方式 1、先关闭虚拟机中的操作系统,回到虚拟机主界面 双击主界面右上方的的“Ethernet”,弹出“Network Adapter”对话框,选择“NAT” 2、启动虚拟机操作系统,设置IP为动态获取,即通过DHCP获得。 此时虚拟机中的操作系统用的是主机的IP,主机能够上网,那么虚拟机也能。 补充:用VMnet8,安装好后,选择NAT方式,然后在win主机上用ipconfig查看VMnet8的IP地址,一般是192.168.X.1/255.255.255.0,此时VMnet8的设置应该是自动获取IP,现在改成静态IP,并把此IP直接填入VMnet8里 阅读全文
posted @ 2012-04-02 16:56 莫水千流 阅读(1503) 评论(0) 推荐(0) 编辑
摘要: const_cast 用法:const_cast<type_id> (expression) 该运算符用来修改类型的const或volatile属性。除了const 或volatile修饰之外, type_id和expression的类型是一样的。 常量指针被转化成非常量指针,并且仍然指向原来的对象; 常量引用被转换成非常量引用,并且仍然指向原来的对象;常量对象被转换成非常量对象。 Voiatile和const类试。举如下一例: class B{ public: int m_iNum; } void foo(){ const B b1; b1.m_iNum = 100;... 阅读全文
posted @ 2012-04-02 16:55 莫水千流 阅读(288) 评论(1) 推荐(0) 编辑
摘要: 一。 保证ubuntu 上安装如下软件包Bisonflexbuild-essentialpatchlibncurses5-dev查看该软件包的依赖关系,可以看到以下内容:$ apt-cache depends build-essential安装软件包使用 $sudo apt-get install 软件包名二。 CrosstoolCrosstool 是一组脚本工具集,可构建和测试不同版本的gcc和glibc,用于那些支持glibc的体系结构。它也是一个开源项目,下载地址是http: //kegel.com/crosstool。用Crosstool构建交叉工具链要比分步编译容易得多,并且也方便许 阅读全文
posted @ 2012-04-02 16:54 莫水千流 阅读(726) 评论(0) 推荐(0) 编辑
摘要: 一. samba的安装:sudo apt-get insall sambasudo apt-get install smbfs二。修改/etc/samba/smb.confsudo gedit /etc/samba/smb.conf在smb.conf最后添加[myShare]comment = Shared Folder with username and passwordpath = /home/wangywriteable = yesbrowseable = yesguest ok = yescreate mask = 0777directory mask = 0777available 阅读全文
posted @ 2012-04-02 16:53 莫水千流 阅读(389) 评论(0) 推荐(0) 编辑
摘要: 在Linux下面去压缩文件或者目录。我们将学习zip, tar, tar.gz和tar.bz2等压缩格式的基本用法。zip格式已成为压缩文件的标准选择,而且它在windows上也能使用。经常用zip格式压缩那些需要共享给windows用户的文件。如果只是共享给linux用户或者Mac用户,偏向于选择tar.gz格式。ZIPzip可能是目前使用得最多的文档压缩格式。它最大的优点就是在不同的操作系统平台,比如Linux, Windows以及Mac OS,上使用。缺点就是支持的压缩率不是很高,而tar.gz和tar.gz2在压缩率方面做得非常好。压缩一个目录:# zip -r archive_nam 阅读全文
posted @ 2012-04-02 16:53 莫水千流 阅读(491) 评论(0) 推荐(0) 编辑
摘要: sudo apt-get install build-essential #这将安装gcc/g++/gdb/make 等基本编程工具sudo apt-get install gnome-core-devel gnome-dev-doc #这将安装gnome环境下的 libgtk2.0-dev libglib2.0-dev 等开发相关的库文件sudo apt-get install pkg-config #用于在编译GTK程序时自动找出头文件及库文件位置sudo apt-get install devhelp #这将安装 devhelp GTK文档查看程序sudo apt-get install 阅读全文
posted @ 2012-04-02 16:52 莫水千流 阅读(994) 评论(0) 推荐(0) 编辑
摘要: 1。光盘安装2。通过代理上网 a.Firefox代理上网 这个最简单了,依次点击 edit->preferences-> Advanced->network->settings 在里面填写代理服务器的IP,Port就可以了。 b.设置apt-get永久使用http代理 sudo gedit /etc/apt/apt.conf在您的apt.conf文件中加入下面这行(根据你的实际情况替换yourproxyaddress和proxyport)。 Acquire::http::Proxy "http://yourproxyaddress:proxyport" 阅读全文
posted @ 2012-04-02 16:50 莫水千流 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 一。 安装命令sudo apt-get install apache2 libapache2-mod-php5 php5 php5-gd mysql-server php5-mysql phpmyadmin1.SSHsudo apt-get install ssh2.安装PHPsudo apt-get install php5 libapache2-mod-php5sudo apt-get install libapache2-mod-auth-mysqlsudo apt-get install php5-mysqlsudo apt-get install php5-gd3. 安装Apache 阅读全文
posted @ 2012-04-02 16:50 莫水千流 阅读(1010) 评论(0) 推荐(0) 编辑
摘要: 1、安装xinetd 以及telnetd # apt-get install xinetd telnetd 2、配置文件/etc/inetd.conf #cat /etc/inetd.conf (如果存在就不需要了) telnet stream tcp nowait telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd 3.修改/etc/xinetd.conf # cat xinetd.conf # Simple configuration file for xinetd # # Some defaults, and include /etc/xinetd.d 阅读全文
posted @ 2012-04-02 16:49 莫水千流 阅读(1543) 评论(0) 推荐(0) 编辑
摘要: ++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。一、面向过程设计中的static1、静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下://Example 1#include <iostream.h>void fn();static int n; //定义静态全局变量void main(){ n=20; cout<<n<<endl; fn();}void fn(){ 阅读全文
posted @ 2012-04-02 16:48 莫水千流 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 编辑器加载VM连接 的三种方式 1.bridged(桥接模式) 在这种模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机,它可以访问网内任何一台机器。在桥接模式下,你需要手工为虚拟系统配置IP地址、子网掩码,而且还要和宿主机器处于同一网段,这样虚拟系统才能和宿主机器进行通信。同时,由于这个虚拟系统是局域网中的一个独立的主机系统,那么就可以手工配置它的TCP/IP配置信息,以实现通过局域网的网关或路由器访问互联网。 使用桥接模式的虚拟系统和宿主机器的关系,就像连接在同一个Hub上的两台电脑。想让它们相互通讯,你就需要为虚拟系统配置IP地址和子网掩码,否则就无法通信。 如果你想利 阅读全文
posted @ 2012-04-02 16:45 莫水千流 阅读(936) 评论(0) 推荐(0) 编辑