2012年4月2日
摘要: 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 莫水千流 阅读(725) 评论(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) 编辑