面对现实,超越自己
逆水行舟,不进则退
posts - 269,comments - 32,trackbacks - 0

手动注册:

      大家知道,当我们安装VC++6.0/VB6.0时,如果选择了ACtiveX控件项(自定义安装),MSComm控件就会自动安装在计算机上了,并在系统文件夹下多了3个文件:Mscomm.srg, Mscomm32.ocx,Mscomm32.dep

  注意,操作系统不同,则系统文件夹不同:
       Win98:    windows/system
       Win2000:  winnt/system32

     那么用了MSComm控件的程序在发布时或者在VS2008开发环境下如何来注册MSComm控件呢?发布程序时可以用安装程序,我们这里不介绍,只谈谈如何手工来注册安装MSComm控件。

 

  第一步:将Mscomm.srg, Mscomm32.ocx,Mscomm32.dep三个文件复制到系统文件夹中。要注意的是,MSComm控件是要授权的,所以必须将其使用“执照”Licence 在注册表中登记注册,下一步就是注册方法。至于为什么要这样做,可以看看下面的网页:http://support.microsoft.com/support/kb/articles/q151/7/71.asp

  

  第二步:用Windows下的注册工具regsvr32注册该OCX控件,点击“开始”->"运行",再在中填入(假设操作安装在C盘,WIN2000):

      Regsvr32  C:\winnt\system32\Mscomm32.ocx

 

    第三步:在注册表中手工新建一个主键项:先在点击“开始”->"运行",再在中填入regedit命令打开注册表,找到HKEY_CLASSES_ROOT\Licenses,在其中添加主键
4250E830-6AC2-11cf-8ADB-00AA00C00905 并将内容设置为:

       kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun

   (注:这项内容也可以用记事本程序打开Mscomm.srg文件看到)

 

  在VC(包括VC.NET)中应用,我已经介绍多次了,这里再说说在Delphi中的应用:进入Delphi环境中,选择菜单命令:Component->Import ActiveX Control,在列表中可以看到Microsoft Comm Control,version 6.0, 选中后点击Install按钮,就完成安装。在ActiveX控件页上可以看到MSComm控件的电话图标。

以上转自:http://www.gjwtech.com/scomm/manaualregistermscomm.htm


自动注册:
     
      运行附件中的“注册.cmd”完成自动注册 MSComm控件。  MSComm
       

posted @ 2013-03-20 10:23 王海光 阅读(1774) | 评论 (0)编辑 收藏
1、安装mysql-5.0.22-win32mysql-connector-odbc-5.1.12-win32.msi
    然后:开始菜单->设置->控制面板->管理工具->数据源(ODBC)->系统DSN->添加->选择MySQL ODBC 5.1 Driver

2、首先导入ADO类型库,您的环境中msado15.dll不一定在这个目录下,请按实际情况修改。或者把msado15.dll这个文件拷贝到你的工程目录下,直接#import "msado15.dll" \ no_namespace \rename ("EOF", "adoEOF")包含进来。
在stdafx.h加入如下代码:
#include <afxdb.h>        // MFC Automation classes
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") rename("BOF","adoBOF")

3、代码示例:

.h文件:
/************************************************************************
*Copyright:
*FileName:ADOConn.h
*
*Author:wanghaiguang
*Date:2013-03-07
*Description:ADO Operate MySql DataBase
***********************************************************************
*/

#pragma once

class CADOConn
{
public:
    CADOConn(void);
    ~CADOConn(void);

public:
    //添加一个指向Connection对象的指针:
    _ConnectionPtr m_pConnection;
    //添加一个指向Recordset对象的指针:
    _RecordsetPtr m_pRecordset;
    // 定义方法
public:
    // 初始化—连接数据库
    void OnInitADOConn();
    // 执行查询
    _RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);
    // 执行SQL语句,Insert Update _variant_t
    BOOL ExecuteSQL(_bstr_t bstrSQL);
    void ExitConnect();
};

.cpp文件:
#include "StdAfx.h"
#include "ADOConn.h"

CADOConn::CADOConn(void)
{
}

CADOConn::~CADOConn(void)
{
}

/************************************************************************
*Function   : OnInitADOConn
*Description: Init DataBase Connect
*param      : bconString[in] ()
*return     : void
***********************************************************************
*/
void  CADOConn::OnInitADOConn()
{
    // 初始化OLE/COM库环境 
    ::CoInitialize(NULL);
    HRESULT hr;
      
    try
    {
         // 创建Connection对象,可以通过配置文件获取连接信息
         hr = m_pConnection.CreateInstance("ADODB.Connection");
         if(SUCCEEDED(hr))
         {
             m_pConnection->ConnectionTimeout=600;//设置连接超时时间
             m_pConnection->CommandTimeout=120;//设置执行命令超时时间
        
             m_pConnection->Open("DSN=MySqlTest;Server= localhost;Database=school","root","sa",adModeUnknown);
         }
    } 
    // 捕捉异常
    catch(_com_error e)
    {
        // 显示错误信息
        AfxMessageBox(e.Description());
    }
}

/************************************************************************
*Function   : GetRecordSet
*Description: Select Data
*param      : bstrSQL[in] SQL
*return     : _RecordsetPtr
***********************************************************************
*/
_RecordsetPtr&  CADOConn::GetRecordSet(_bstr_t bstrSQL)
{
    try
    {
        // 连接数据库,如果Connection对象为空,则重新连接数据库
        if(m_pConnection==NULL)
            OnInitADOConn();
        // 创建记录集对象
        m_pRecordset.CreateInstance(__uuidof(Recordset));
        // 取得表中的记录
        m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
    }
    // 捕捉异常
    catch(_com_error e)
    {
        // 显示错误信息
        AfxMessageBox(e.Description());
    }
    // 返回记录集
    return m_pRecordset;
}

/************************************************************************
*Function   : ExecuteSQL
*Description: Exec SQL For Insert Update _variant_t
*param      : bstrSQL[in] SQL
*return     : BOOL
***********************************************************************
*/
BOOL CADOConn::ExecuteSQL(_bstr_t bstrSQL)
{
    // _variant_t RecordsAffected;
    try
    {
        // 是否已经连接数据库
        if(m_pConnection == NULL)
                OnInitADOConn();
        // Connection对象的Execute方法:(_bstr_t CommandText, 
        
// VARIANT * RecordsAffected, long Options ) 
        
// 其中CommandText是命令字串,通常是SQL命令。
        
// 参数RecordsAffected是操作完成后所影响的行数, 
        
// 参数Options表示CommandText的类型:adCmdText-文本命令;adCmdTable-表名
        
// adCmdProc-存储过程;adCmdUnknown-未知
        m_pConnection->Execute(bstrSQL,NULL,adCmdText);
        return true;
    }
    catch(_com_error e)
    {
        AfxMessageBox(e.Description());
        return false;
    }
}

/************************************************************************
*Function   : ExitConnect
*Description: Exit Connect DataBase
*param      : 
*return     : void
***********************************************************************
*/
void CADOConn::ExitConnect()
{
    // 关闭记录集和连接
    if (m_pRecordset != NULL)
    {
        m_pRecordset->Close();
        //m_pRecordset->Release();
    }
    m_pConnection->Close();
    //m_pConnection->Release();
    
// 释放环境
    ::CoUninitialize();
}

其他连接数据库:

BOOL ConnectMySqlFun1()
{
    CoInitialize(NULL); //初始化Com组件
    conPtr.CreateInstance(__uuidof(Connection)); //Connection用于与数据库服务器的链接另一种方式
    /******************连接数据库********************/
    try
    {
        // MySqlTest为数据源名 localhost表示本地 root表示用户名 sa表示密码
        conPtr->Open("DSN=MySqlTest;server=localhost;database=school;","root","sa",adModeUnknown);///连接MySql数据库(测试成功)
    }
    catch(_com_error e) //捕捉异常
    {
        printf("Connect Error : %s", e.Description());
        return FALSE;
    }

    return TRUE;
}

BOOL ConnectMySqlFun2()
{
    CoInitialize(NULL); //初始化Com组件
    try
    {
        //创建连接对象实例
        conPtr.CreateInstance("ADODB.Connection");
        //设置连接字符串
        
//mdb------------------------------------------------
        CString strConnect="DSN=MySqlTest";
        //使用Open方法连接数据库
        conPtr->Open((_bstr_t)strConnect,"root","sa",adModeUnknown);
    }
    catch(_com_error e)
    {
        printf("Connect Error : %s", e.Description());
        return FALSE;
    }
    return TRUE;
}

操作MySql数据库:
    CADOConn m_ADO;
    m_ADO.OnInitADOConn();
        
    //设置SELECT语句
    _bstr_t vSQL, vInserSQL;
    vSQL = "select name from teacher";
    //设置INSERT语句
    vInserSQL = "insert into teacher values(27, 'hai', '哈尔滨六中', '1998-05-05')";
    ///执行INSERT语句
    if (m_ADO.ExecuteSQL(vInserSQL))
    {
        printf("Insert Data Successful!!!");
    }

    //执行SELETE语句
    _RecordsetPtr m_pRecordset;
    m_pRecordset = m_ADO.GetRecordSet(vSQL);

    CString name0;
    //返回各列的值
    while (!m_pRecordset->adoEOF)
    {
        name0 = (LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("name");
        //CString name=(CString)recordPtr->GetCollect(_variant_t("name")).bstrVal;
        
//int no=recordPtr->GetCollect(_variant_t("stuno")).intVal;
        printf("name : %s\n", name0);
        m_pRecordset->MoveNext();
    }
    //断开与数据库的连接
    m_ADO.ExitConnect();

参考链接:http://www.cppblog.com/current/archive/2009/07/24/91069.html
posted @ 2013-03-07 15:30 王海光 阅读(4841) | 评论 (0)编辑 收藏
方法1:

In the Options go into Projects and Solutions -> VC++ Directories page and place this rows:

$(SystemRoot)\System32
$(SystemRoot)
$(SystemRoot)\System32\wbem

适用VC8的各种工程项目(包括移动设备的项目),如果在加了以后还出现这样的错误提示,将上面的三句删除掉,重新加一次就可以。

方法2:

在Visual Studio中,选择工具->选项->工程和解决方案->VC++目录 
点击上方的像文件夹的按钮-新建行,然后在空白处添加cmd.exe所在的目录C:\Windows\System32\ (如果你是默认装在C盘的话)点击确定,就OK了。 

In VS, go to 

tools>options>projects and solutions>VC++ Directories 

click the little folder button (new line) then in the new line that appears put: 

本文转自:http://www.cppblog.com/zhangyq/archive/2009/02/16/73940.html
posted @ 2013-03-07 10:49 王海光 阅读(1074) | 评论 (1)编辑 收藏
代码下载:
            
            Socket编程示例_异步

            Socket编程示例_同步
posted @ 2013-03-01 16:10 王海光 阅读(903) | 评论 (0)编辑 收藏
代码示例:

#include <Sensapi.h>
#pragma comment(lib, "Sensapi.lib")
BOOL CheckNetIsOK(const CString sUpdateIP)
{
    //Judge Network is Connected
    int nCount = 1;
    do 
    {
        DWORD dw;
        if( IsNetworkAlive(&dw))
        {
            break;
        }
        else
        {
            Sleep(10000);
            CString sNetWorkConnect;
            sNetWorkConnect.Format("第%d次网络未成功连接, 10秒后重试", nCount);
            m_recvCtrl.SetWindowText(sNetWorkConnect);
            nCount++ ;
        }
    } while (nCount <4);

    if (nCount == 4)
    {
        m_recvCtrl.SetWindowText("网络连接失败, 共检测40秒");
        return FALSE;
    }

    DWORD n = CCommonFun::WinExecAndWait32(_T("ping.exe"), sUpdateIP + " -n 2"/*sCmdPara*/, NULL, 10000);
    if (n == 0)
    {
        return TRUE;
    }
    else
    {
        CString sNetWorkConnect;
        sNetWorkConnect.Format("网络连接正常, Ping:%s 失败, 请检测此IP对应的服务器是否正常工作", sUpdateIP);
        m_recvCtrl.SetWindowText(sNetWorkConnect);
        return FALSE;
    }
}

posted @ 2013-03-01 15:51 王海光 阅读(7424) | 评论 (5)编辑 收藏
代码示例:
    int LineNum=m_recvCtrl.GetLineCount();
    if(LineNum > 100)                                // 超过最大信息显示行数
    {
        m_recvCtrl.SetSel(0, -1);
        m_recvCtrl.Clear();                            // 清空编辑框
    }    

    CTime RevTime = CTime::GetCurrentTime();
    CString Temp = RevTime.Format("[%Y/%m/%d %H:%M:%S]: ");

    CString strEdit;    
    m_recvCtrl.GetWindowText(strEdit);   
    m_recvCtrl.SetSel(strEdit.GetLength(), strEdit.GetLength());  
    m_recvCtrl.ReplaceSel(Temp + sText + "\n");
posted @ 2013-03-01 15:50 王海光 阅读(2644) | 评论 (0)编辑 收藏
代码示例:
CString GetPeerName_(SOCKET so)
{
    struct sockaddr_in sa;
    int len = sizeof(sa);
    getpeername(so, (struct sockaddr *)&sa, &len);

    return CString(inet_ntoa(sa.sin_addr));
}
posted @ 2013-03-01 15:46 王海光 阅读(2674) | 评论 (0)编辑 收藏

mysql资源

  mysql5.1中文参考手册

mysql管理

  基于linux使用mysql二进制包安装mysql5.5

  mysql client命令行选项

  mysqld服务器系统变量和状态变量

  mysql SQL服务器模式

  mysql 账户管理

  mysql日志文件

  

  mysql列类型

  mysql数据库操作

  mysql创建和删除表

  mysql修改表

  mysql索引操作

  mysql索引详解

 

  mysql select操作

  mysql insert操作

  mysql load操作

  mysql update操作

  mysql 删除操作

  mysql join操作

  mysql子查询

  mysql函数

 

  mysql show操作

  mysql flush操作

  mysql kill操作

  mysql表维护操作

  mysql导入导出

 

mysql调优

  MySQL执行计划解读

  MySQL Profiling 的使用

    mysql常见sql优化

  mysql日志设置优化

  MySQL缓存参数优化

  MySQL表结构优化

  MySQL 索引优化 

  MySQL SQL优化

  MySQ 存储引擎选择

   MySQL硬件瓶颈分析

  硬件环境对系统性能的影响

 

  MySQL内存使用-全局共享

  MySQL内存使用-线程独享

  mysql数据库锁定机制

  Join的实现原理及优化思路

  mysql ORDER BY,GROUP BY 和DISTINCT原理

mysql架构

  mysql主要应用场景

  MySQL Server系统架构

  MySQL Replication 常用架构

  可扩展性设计之数据切分

  可扩展性设计之Cache与Search的利用

 

nosql

  NoSQL数据库笔谈

redis

  redis官方文档

  redis中文官方文档

  Redis命令参考中文版翻译

  入门资料

    Redis新手入门详解

    redis快速入门详解PPT

    redis中文入门手册

    redis深入浅出

    

  Redis数据库?-Redis的Virtual Memory介绍

  Redis 或弃用当前 VM 机制,采用新的 diskstore 模型

  Redis内存使用优化与存储

  节约内存:Instagram的Redis实践

  Redis进阶教程-aof(append only file)日志文件 

 

  Redis作者谈Redis应用场景

  Memcached真的过时了吗?看看Redis作者怎么说

  浅谈Redis数据库的键值设计

  案例:用Redis来存储关注关系

  Bump的Redis应用经验

 

  Redis容量及使用规划

  Redis几个认识误区

  使用Redis的五个注意事项

 

    Redis大数据之路

  新浪微博开放平台中的redis实践

  Redis运维之道

 

  Redis复制与可扩展集群搭建

    Redis监控技巧

  深入Redis内部-Redis 源码讲解

 

  

 

 


本文转自:
http://www.cnblogs.com/ggjucheng/archive/2012/11/02/2751119.html 
posted @ 2013-02-27 16:13 王海光 阅读(382) | 评论 (0)编辑 收藏

海量数据

    大数据量,海量数据 处理方法总结

    布隆过滤器应用

    悉数那些“巨型”数据仓库

    Hadoop在业界的使用情况

    淘宝Hadoop集群的概况

  分布式

    Paxos在大型系统中常见的应用场景

hadoop的实现

    

    HDFS的基本概念

    HDFS 读写流程

    HDFS namenode源码分析 

    HDFS datanode源码分析

      HDFS dfsclient读文件过程 源码分析

      HDFS dfsclient写文件过程 源码分析

    MapReduce源码分析总结

 

    mapreduce作业流程概论

    How MapReduce Works 

 

    基于hadoop的crc校验谈hadoop的离线设计思想

    Hadoop在MapReduce中使用压缩详解

    HDFS数据的Checksum

    Hadoop开发常用的InputFormat和OutputFormat

    Hadoop之failed task和killed task

    Hadoop的调度器总结

  管理

    hadoop集群部署

    hadoop部署注意项

    hadoop配置文件说明

    hadoop集群默认配置和常用配置

      hadoop集群测量

    Hadoop管理员的十个最佳实践

    Hadoop 权限管理

 

    Hadoop FS Shell

    Hadoop Shell 讲解

    hadoop fs -count的结果含义

 

 

    Hadoop添加节点datanode

    Hadoop删除节点

    hadoop SecondaryNameNode和NameNode

    hadoop 根据SecondaryNameNode恢复Namenode

    hadoop机架感知

 

    HDFS 安全模式

    hadoop的dfs.replication

    Hadoop回收站trash

    hadoop升级

 

    Hadoop计算能力调度器算法解析

    Hadoop计算能力调度器应用和配置

 

    hadoop和kerberos的整合总结

    hadoop的dfs.umask

 

    NFS服务对Hadoop(hdfs)集群影响测试

    Facebook团队关于Hadoop/HBase在SSD上的实验和讨论

  调优

  架构设计

   Hadoop使用场景

hive

  Hive体系架构

  应用

    Hadoop和Hive的数据处理流程

  管理

    hive部署手册

    hive元数据中utf8的修改

      hive并发调用的运行方式-个人经验篇

     

    hive Cli常用操作(翻译自Hive wiki)

    hive数据类型(翻译自Hive Wiki)

 

    hive 创建/删除/截断 表(翻译自Hive wiki)

    hive数据操作(翻译自Hive wiki+实例讲解)

    hive原生和复合类型的数据加载和使用

      hive修改 表/分区语句

 

    hive select操作(翻译自Hive wiki)

    hive GroupBy操作(翻译自Hive wiki)

      hive 中 Order by, Sort by ,Dristribute by,Cluster By 的作用和用法

     Hive Join(翻译自Hive wiki)

     hive lateral view语句(翻译自Hive wiki)

     Hive Union(翻译自Hive wiki)

     Hive子查询(翻译自Hive wiki)

     hive实例讲解实现in和not in子句

     Hive Explain(翻译自Hive wiki)

     Hive虚拟列(翻译自Hive wiki)

     hive 锁定(翻译自Hive wiki)

 

      hive函数(Hive wiki)

    hive udf开发流程(Hive wiki)

    hive udaf开发入门和运行过程详解

    hive中UDTF编写和使用

    hive属性(Hive wiki)

 

    hive中分组取前N个值的实现

 

    hive sql遇到的问题

  优化

    hive大数据倾斜总结

    hive join详解

     

    hive文件存储格式

 

    hive怎样决定reducer个数

    hive的hive.exec.parallel参数说明

    hive local hadoop特性    

hbase

  管理

    Hbase配置手册

pig

  介绍入门

    Apache Pig入门 –介绍/基本架构/与Hive对比

  管理

    pig部署手册

  教程

    Apache Pig中文教程集合

  

 
本文转自:http://www.cnblogs.com/ggjucheng/archive/2012/04/22/2465625.html

posted @ 2013-02-27 16:09 王海光 阅读(419) | 评论 (0)编辑 收藏

 GDB 是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。 一般来说,GDB主要帮忙你完成下面四个方面的功能:

  1. 启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。
  2. 可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)
  3. 当程序被停住时,可以检查此时你的程序中所发生的事。
  4. 动态的改变你程序的执行环境。

        从上面看来,GDB和一般的调试工具没有什么两样,基本上也是完成这些功能,不过在细节上,你会发现GDB这个调试工具的强大,大家可能比较习惯了图形化的调试工具,但有时候,命令行的调试工具却有着图形化工具所不能完成的功能。让我们一一看来。

 

gdb基本命令列表:   

                                                     

 

实例:

1 新建一个源文件vi swap.cc


源文件内容如下:

#include<iostream>
using namespace std;
void swap(int &a,int &b)
{
        int tmp;
        tmp=a;
        a=b;
        b=tmp;
}

int main()
{
        int i,j;
        cout<<endl<<"Input two int number:"<<endl;
        cin>>i>>j;
        cout<<"Before swap(),i="<<i<<" j="<<j<<endl;
        swap(i,j);
        cout<<"After swap(),i="<<i<<" j="<<j<<endl<<endl;
        return 0;
}

直接复制粘贴生成源文件

 2.生成可执行文件 g++ -g -o swap swap.cc,注意必须使用-g参数,编译会加入调试信息,否则无法调试执行文件

3.启动调试 gdb swap


       3.1  查看源文件 list 1,回车重复上一次指令


             3.2设置调试断点 break 16,在第16行设置断点,info break查看断点信息(亦可使用缩写i b )



         3.3 调试  运行 输入run 或者


         3.3 单步调试,step 或者 s进入函数内部


                3.4查看变量 print b 或者 p b


                3.5查看函数堆栈bt,退出函数finish


                   3.6  继续运行直到下一个断点或主函数结束continue或者c


                  3.7 退出调试 输入q

 



本文转自:http://blog.csdn.net/wfdtxz/article/details/7368357

其他链接:http://blog.csdn.net/zzymusic/article/details/4815142
        http://blog.sina.com.cn/s/blog_7dc317590101bouz.html
posted @ 2013-02-27 15:38 王海光 阅读(511) | 评论 (0)编辑 收藏
仅列出标题
共27页: First 6 7 8 9 10 11 12 13 14 Last