今天在做开发的时候,突然要用IIS,然后发现了有这么一个问题,使用后,果然解决了问题.收藏.

win2003 sp2无法安装或重装IIS的解决方法

情况是这样的,服务器系统是windows 2003并开了自动更新,因此自动更新到了windows 2003 sp2版,昨天用系统自带的IIS备份程序恢复了一下站点,结果发现所有站点都打不开了,出现“Service Unavailable”的提示,反复调试未果,决定重新安装IIS6。
由于系统是使用原来是使用SP1版,因此也是SP1的I386包复制到了系统工具软件文件夹中备用,可问题出来了,使用SP1的I386重新安装IIS6的时候,总是提示文件找不到文件无法复制,就算是跳过了,下一个照样都是无法复制,就算用原来的系统安装盘也是一样不行。
上网查了一下,才知道是系统的安全性数据库出了问题, secedit.sdb到底是怎么样的一个数据库,我也无从所知,哈哈。据说是一个二进制的安全数据库!

Read More

近期使用数据库比较频繁,有些小技巧与大家分享一下.
目前我正在做的是高并发的写数据库的操作.其中对于insert与update的操作做得比较多.因此呢这里面就有一个效率的问题了.
如果每次都去select,然后再去检测一下,是否存在这么一条记录,这样的话,总感觉有点慢的.
后来无意中借鉴了一下,前不久写的一篇关于直接脚本建表的文章.就是检测一下是否存在某张表,如果不存在的话,就创建一张表.
我们在insert与update也是一样的,可以在insert的时候也exists一下.然后发现没有的话,就会自动插入这条记录.

Read More

写了一个监控服务的程序,共享上来,大家共同学习一下.网上找了很久,没什么收获,就自己写了一个.

CMonitorServiceDlg *g_pDlg = NULL;
DWORD WINAPI MonitorServices(LPVOID lpParameter)
{
    char serviceName[128];
    memset(serviceName, 0, sizeof(serviceName));
    sprintf(serviceName, "Data Acquisition Service");
    SetDlgItemText(g_pDlg->m_hWnd, IDC_SERVICE_NAME, serviceName);
    SC_HANDLE schSCManager = NULL, schService = NULL;
    SERVICE_STATUS ssStatus;
    DWORD dwOldCheckPoint;
    try
    {
        schSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
        if (schSCManager != NULL)
        {
            schService = OpenService(schSCManager, serviceName, SC_MANAGER_ALL_ACCESS);
            if (schSCManager != NULL)
            {
                while (true)
                {
                    if (QueryServiceStatus(
                        schService,        //   handle   to   service
                        &ssStatus) )     //   address   of   status   information
                    {
                        if (ssStatus.dwCurrentState == SERVICE_STOPPED)
                        {
                            StartService(schService, 0, NULL);
                            Sleep(20000);
                        }
                    }
                }
            }
        }
    }
    catch(...)
    {
    }
    if (schService) CloseServiceHandle(schService);
    if (schSCManager) CloseServiceHandle(schSCManager);
    return 0;
}

上面只写了一个线程代码,这个是主体程序.

1.schSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
打开服务控制管理.
2.schService = OpenService(schSCManager, serviceName, SC_MANAGER_ALL_ACCESS);
打开指定服务,获取服务句柄.
3.QueryServiceStatus(schService, &ssStatus)
查询指定服务句柄的状态.
4.CloseServiceHandle(schService);
关闭服务句柄.(与线程一样)

Read More

printf的格式控制的完整格式:
% - 0 m.n l或h 格式字符
下面对组成格式说明的各项加以说明:
①%:表示格式说明的起始符号,不可缺少。
②-:有-表示左对齐输出,如省略表示右对齐输出。
③0:有0表示指定空位填0,如省略表示指定空位不填。
④m.n:m指域宽,即对应的输出项在输出设备上所占的字符数。N指精度。用于说明输出的实型数的小数位数。为指定n时,隐含的精度为n=6位。
⑤l或h:l对整型指long型,对实型指double型。h用于将整型的格式字符修正为short型。

Read More

mysql slave server 上进程停止, 重启后不接收master上的更新

    mysql>show slave status\G;
    *************************** 1. row ***************************
             Slave_IO_State: Waiting for master to send event
                Master_Host: 192.168.10.168
                Master_User: admin
                Master_Port: 3306
              Connect_Retry: 60
            Master_Log_File: mysql-bin.000055
        Read_Master_Log_Pos: 720589499
             Relay_Log_File: YD227-relay-bin.000108
              Relay_Log_Pos: 505783744
      Relay_Master_Log_File: mysql-bin.000051
           Slave_IO_Running: Yes
          Slave_SQL_Running: No
            Replicate_Do_DB: try2u
        Replicate_Ignore_DB:
         Replicate_Do_Table:
     Replicate_Ignore_Table:
    Replicate_Wild_Do_Table:
    Replicate_Wild_Ignore_Table:
                 Last_Errno: 1062
                 Last_Error: Error 'Duplicate entry '370' for key 4' on query. Default database: 'webdb'. Query: 'INSERT INTO webdb.t_coin_update SET spid = 370 ,   uid = 1863421 , got = 0 , room_id = 235789'

Read More