青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

網絡服務器軟件開發/中間件開發,關注ACE/ICE/boost

C++博客 首頁 新隨筆 聯系 聚合 管理
  152 Posts :: 3 Stories :: 172 Comments :: 0 Trackbacks

#

       1.新建查詢語句文件query.sql,內容如下:
--------------------------------------分割線----------------------------------------
         use appdb;
         set names utf8;
         select FeedID, City , Message  from Feed limit 1000;
--------------------------------------分割線----------------------------------------
上面的set names utf8語句是設施當前使用的編碼,如果編碼和數據庫的編碼不一致,會出現亂碼
      2.執行如下:
     [root@proxy tianqg]# mysql -uroot -p < query.sql > query.txt
回車,輸入密碼,在當前目錄下會產生查詢結果文件query.txt
      這些語句以前都是非常熟悉的,昨天有人問起,一時沒有給出準確的回答,命令行操作這種東西是容易忘記的,還是記下來備忘吧
posted @ 2011-01-19 09:55 true 閱讀(1430) | 評論 (0)編輯 收藏

      有個存儲過程,功能是:根據用戶名查詢非好友的ID,代碼如下:
begin

  select UserID  from  Users
    where
    UserID 
!= pUserID and
    Users.UserID  not 
in
    (
        select FriendID from Users_Friend where Users_Friend.UserID 
= pUserID and DeleteFlag = 0
    )
    and
    Users.Name like BINARY  concat(
'%',pUserName,'%')  ;

end
 其中,pUserID是搜索者的UID,pUserName是要搜索的用戶名。今天發現這個存儲過程非常慢,分析結論是:not in 后面的select子查詢是每次都執行的,這出乎意料!mysql難道不能優化掉這樣的查詢嗎?
      后來用了臨時表的方案,如下:
begin

    Create TEMPORARY  Table  IF NOT EXISTS temp(FriendID 
int );
    insert into temp(FriendID) select FriendID from Users_Friend where Users_Friend.UserID 
= pUserID and DeleteFlag = 0;

      select UserID  from  Users
    where
    UserID 
!= pUserID and
    Users.UserID  not 
in
    (
        select FriendID from temp
    )
    and
    Users.Name like BINARY  concat(
'%',pUserName,'%')  ;

    drop TEMPORARY  table temp;
end

問題較好的解決了,因為臨時表temp中保存的都是好友的ID,非常快,不用每次都去執行好友的篩選邏輯。另外一種方式是:將好友ID作為參數傳遞到存儲過程中,在程序外面查詢好友,但要改動程序。
 
posted @ 2011-01-13 13:05 true 閱讀(2968) | 評論 (0)編輯 收藏

     摘要: 最近幾天一直在思考一個問題:我們需要什么樣的網絡基礎開發包?libevent,asio,ace,還是自己封裝?Buffer類,內存池  閱讀全文
posted @ 2011-01-13 00:51 true 閱讀(3203) | 評論 (16)編輯 收藏

已經非常的陌生了,沒有網絡幾乎寫不了代碼了,準備寫個自用的抓包工具,可以指定某個應用來抓包,這樣抓到的包分析起來更具有針對性,常用工具wireshark雖然支持過濾規則,但是對走多協議的應用,比如tcp,udp,http都用的應用過濾起來比較吃力,WPE也不太合適,我想集成一些實用小工具,如網絡字節序的轉換,UTF8和GB的轉換等,如此則可以快速分析協議,所以索性自己寫個吧,網絡抓包這塊是做服務器的基本功,已經搞定了,界面的布局和實現方面還沒有確定,不用MFC好多年,希望這次嘗試算是一個新的開始。

posted @ 2011-01-06 23:42 true 閱讀(559) | 評論 (0)編輯 收藏

     自從做公司的SNS社區以來,寫了不少的C#代碼,與C++相比,C#是易于使用的,開發效率提高很多倍,其中印象比較深刻的是,在一個C#工程中,可以通過向導添加配置文件,默認文件名為App.Config,是XML格式,一般內容為:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
     
    
<appSettings>

        
<add key="Ip" value="localhost"/>
        
<add key="Port" value="8888"/>
        
<add key="ServiceName" value="Indexer"/>


    
</appSettings>
    
</configuration>
通過在appSettings里面添加add元素,即可實現通常的配置功能,更重要的是,可以進一步擴展為多級的樹形結構,與Ini格式相比,更直觀,可讀性更強,下面是基于CMarkup(http://www.firstobject.com/)的一個簡單實現:
頭文件如下:
#pragma once

#include 
<string>
#include 
<map>


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

    
int        GetInt(std::string key);
    std::
string    GetString(std::string key);
private:
    std::map
<std::string,std::string> config_map_;
}
;
 
extern AppConfig appConfig;
源文件如下:

#include 
"AppConfig.h"
#include 
"Markup.h"

AppConfig appConfig;


AppConfig::AppConfig(
void)
{
    CMarkup parser;
    
if (!parser.Load( "App.Config"  ))
    
{
        
return;        
    }

    
if (parser.FindChildElem("appSettings"))
    
{
        parser.IntoElem();
        
while (parser.FindChildElem("add"))
        
{
            std::
string key = parser.GetChildAttrib("key");
            std::
string value = parser.GetChildAttrib("value");
            config_map_[key] 
= value;
        }

        parser.OutOfElem();
    }

    
}


AppConfig::
~AppConfig(void)
{
}


int AppConfig::GetInt( std::string key )
{
    
if (config_map_.find(key) != config_map_.end())
    
{
        
return atoi(config_map_[key].c_str());
    }

    
else
    
{
        
return 0;
    }

}


std::
string AppConfig::GetString( std::string key )
{
    
if (config_map_.find(key) != config_map_.end())
    
{
        
return config_map_[key];
    }

    
else
    
{
        
return "";
    }

}

測試代碼為:
// MarkupTest.cpp : 定義控制臺應用程序的入口點。
//

#include 
"stdafx.h"

#include 
"AppConfig.h"
#include 
<iostream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{    
    cout 
<< appConfig.GetString("Ip")  << "-----" << appConfig.GetInt("Port")  << "----" << appConfig.GetString("ServiceName"<< endl;
    
return 0;
}


posted @ 2010-12-29 00:25 true 閱讀(2581) | 評論 (0)編輯 收藏

         CDR可以提供對基本數據類型如int,short,double,string等的序列化機制,簡單包裝后即可擔當RPC中的序列化角色。
#include <iostream>
#include 
<string>
#include 
<ace/OS.h>
#include 
<ace/String_Base.h>
#include 
<ace/CDR_Stream.h>
using namespace std;
#pragma comment(lib,
"aced")

int main(int argc, char* argv[])
{
    cout 
<< "ACE CDR demo" << endl;

    ACE_CString sAppName 
= "CDRDemo",sAppName2;
    ACE_CDR::Long nUID 
= 123456,nUID2;
    ACE_CDR::Float nfPosX 
= 120.51,nfPosX2;
    ACE_CDR::Double ndScore 
= 120.51,ndScore2;
    ACE_CString sDummy 
= "another string",sDummy2;
    ACE_CDR::Short  nsLength 
= 10,nsLength2;

    ACE_OutputCDR outCDR(ACE_DEFAULT_CDR_BUFSIZE);    
    
    outCDR 
<< nUID;
    outCDR 
<< nfPosX;
    outCDR 
<< ndScore;
    outCDR 
<< sAppName;//寫字符串時,先寫入字符串的長度
    outCDR << sDummy;
    outCDR 
<< nsLength;

    cout 
<< "OutputCDR size = " << outCDR.length() << endl;

    
//可以通過socket發送出去,而在服務端進行下面的解析
    
//1.ACE_Message_Block *ACE_OutputCDR::begin (void)
    
//2.通過ACE_SOCK_Stream發送出去    

    ACE_InputCDR inCDR(outCDR);

    inCDR 
>> nUID2;
    inCDR 
>> nfPosX2;
    inCDR 
>> ndScore2;
    inCDR 
>> sAppName2;
    inCDR 
>> sDummy2;
    inCDR 
>> nsLength2;
        

    ACE_ASSERT(nUID 
== nUID2);
    ACE_ASSERT(nfPosX 
== nfPosX2);
    ACE_ASSERT(ndScore 
== ndScore2);
    ACE_ASSERT(sAppName 
== sAppName2);
    ACE_ASSERT(sDummy 
== sDummy2);
    ACE_ASSERT(nsLength 
== nsLength2);

    cout 
<< "test ok." << endl;

    
return 0;
}

假若有如下的demo.idl,內容如下:

      struct user_info
      {
            int user_id;
            string user_name;            
      }
利用idl_gen生成代碼時:
      (1)如果是侵入式的方案,則生成user_info類時,自動添加成員OutputCDR和InputCDR成員,并添加pack(ACE_Message_Block &* msg)和parse(ACE_Message_Block * msg)成員函數,在pack和parse里面,調到對于的CDR類,按照類中數據成員的聲明順序依次序列化,反序列化
      (2)如果是非侵入式方案,則生成user_info類時,生成獨立函數的pack(user_info& info, ACE_Message_Block &* msg)和parse(user_info& info,ACE_Message_Block * msg),pack和parse的函數實現同上
posted @ 2010-12-26 09:52 true 閱讀(3255) | 評論 (2)編輯 收藏

      wireshark(http://www.wireshark.org/)是我經常用到的抓包工具,這對于網絡程序的調試至關重要,特別是客戶端人員和服務端人員都認為自己的代碼沒問題時,wireshark本身是開源的,在windows平臺下基于 winpcap(http://www.winpcap.org/)開發的,安裝wireshark的時候,會提示在線安裝winpcap,今天在筆記本上用VS2008,編譯了Examples-pcap下面的basic_dump和basic_dump_ex,不曾想到的是抓不到包,甚是奇怪,因為用wireshark抓包是可以的,因此懷疑是不是哪個參數設施不對,終于比對wireshark,得出結論:將pcap_open_live的第四個參數設為0,即不能打開混雜模式,

if ((adhandle= pcap_open_live(d->name, // name of the device
        65536,   // portion of the packet to capture.
           // 65536 grants that the whole packet will be captured on all the MACs.
        0,    // promiscuous mode (nonzero means promiscuous)
        1000,   // read timeout
        errbuf   // error buffer
        )) == NULL)
 {
  fprintf(stderr,"\nUnable to open the adapter. %s is not supported by WinPcap\n", d->name);
  /* Free the device list */
  pcap_freealldevs(alldevs);
  return -1;
 }
posted @ 2010-12-22 21:59 true 閱讀(4355) | 評論 (3)編輯 收藏

   手冊上的說明:
   

   UNIX_TIMESTAMP(), UNIX_TIMESTAMP(date)

If called with no argument, returns a Unix timestamp (seconds since '1970-01-01 00:00:00' UTC) as an unsigned integer. If UNIX_TIMESTAMP() is called with a date argument, it returns the value of the argument as seconds since '1970-01-01 00:00:00' UTC. date may be a DATE string, a DATETIME string, a TIMESTAMP, or a number in the format YYMMDD or YYYYMMDD. The server interprets date as a value in the current time zone and converts it to an internal value in UTC. Clients can set their time zone as described in Section 5.11.8, “MySQL Server Time Zone Support”.


      這里的UNIX_TIMESTAMP()的返回值和C函數time(NULL)的返回值含義一樣,
  mysql> select UNIX_TIMESTAMP();
+------------------+
| UNIX_TIMESTAMP() |
+------------------+
|       1292815556 |
+------------------+
1 row in set

mysql> select FROM_UNIXTIME(1292815556);
+---------------------------+
| FROM_UNIXTIME(1292815556) |
+---------------------------+
| 2010-12-20 11:25:56       |
+---------------------------+
1 row in set

posted @ 2010-12-20 12:01 true 閱讀(500) | 評論 (0)編輯 收藏


終于碰到這個問題了,原文鏈接:http://hi.baidu.com/zzy_cqok/blog/item/46ee33998777f3056f068c2b.html

vs2008調試后控制臺窗口關不了2010-07-29 16:19
最近用Visual Studio 2008 寫一些控制臺程序,調試后的時候,當走到完成的時候,這個控制臺程序的窗口就關不了了。再調試的時候就會出現一個新的控制臺程序。
在任務管理器還可以看到這個窗口,但是關不掉了。感覺這個控制臺程序已經失控了。
雖然這個對電腦運行沒有影響,但還是很不爽。而且最后關機還有問題,導致不能關機。
找到一些相關的網頁也討論的,最后結論是windows的一個更新KB978037導致cress.exe出了一些問題。
解決辦法:刪除KB978037更新,刪除的辦法是在控制面板的添加或刪除程序面板里,勾選顯示更新,找到KB978037更新,刪除。
附別人的討論記錄:http://social.msdn.microsoft.com/Forums/en-US/vsdebug/thread/e6d4a4f5-7002-401a-90e1-6174d7f9e3ca/
 
posted @ 2010-12-12 13:16 true 閱讀(1122) | 評論 (0)編輯 收藏

http://www.boostpro.com/download/
目前只有windows平臺的,而且是32位
posted @ 2010-12-06 12:08 true 閱讀(450) | 評論 (0)編輯 收藏

僅列出標題
共15頁: 1 2 3 4 5 6 7 8 9 Last 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            在线欧美亚洲| 亚洲激情电影在线| 国产精品99久久久久久久女警 | 欧美国产日韩一区| 国产欧美日韩一区二区三区在线| 欧美福利专区| 亚洲精品免费在线| 影音先锋欧美精品| 韩国成人福利片在线播放| 久久免费视频网| 久久久国产精品一区二区三区| 国内外成人免费激情在线视频网站 | 亚洲精品视频一区二区三区| 欧美日韩一区二区在线播放| 午夜国产不卡在线观看视频| 欧美亚洲自偷自偷| 亚洲精品乱码久久久久久久久 | 久久精品一二三区| 91久久精品日日躁夜夜躁欧美| 欧美激情bt| 国产精品国产三级国产专区53| 久久er精品视频| 欧美顶级大胆免费视频| 亚洲欧美伊人| 嫩模写真一区二区三区三州| 亚洲一区二区高清视频| 香蕉av777xxx色综合一区| 亚洲日本免费电影| 午夜精品久久99蜜桃的功能介绍| 在线观看成人网| 亚洲在线播放| 亚洲精选一区二区| 欧美一区二区高清| 亚洲四色影视在线观看| 久久久久看片| 性欧美8khd高清极品| 麻豆亚洲精品| 久久久久久亚洲精品中文字幕| 欧美丰满高潮xxxx喷水动漫| 久久天堂成人| 国产精品毛片在线看| 亚洲国产日韩综合一区| 国产亚洲一区二区三区在线观看| 亚洲国产精品999| 国产视频自拍一区| 亚洲图中文字幕| 99在线|亚洲一区二区| 久久久无码精品亚洲日韩按摩| 亚洲欧美清纯在线制服| 欧美日韩大片一区二区三区| 欧美不卡一卡二卡免费版| 国产深夜精品| 亚洲一区二区成人| 亚洲自拍偷拍网址| 欧美日韩亚洲一区二区| 亚洲欧洲精品一区二区三区不卡 | 亚洲人成人99网站| 久久这里只精品最新地址| 久久久精品性| 国产一区日韩二区欧美三区| 亚洲欧美另类在线观看| 亚洲免费视频网站| 国产精品国色综合久久| 亚洲婷婷国产精品电影人久久| 亚洲视频综合在线| 国产精品www| 亚洲图片自拍偷拍| 午夜精品一区二区三区四区| 国产精品电影观看| 亚洲一区成人| 久久激情视频| 在线看片成人| 欧美成ee人免费视频| 亚洲国产美女久久久久| 日韩亚洲欧美在线观看| 欧美日韩精品综合在线| 一区二区三区免费在线观看| 亚洲欧美日韩精品久久亚洲区 | 欧美激情自拍| 这里只有精品视频| 久久精品成人一区二区三区蜜臀| 国产伦理一区| 久久综合久久综合九色| 亚洲国产成人91精品| 中国女人久久久| 国产精品乱码妇女bbbb| 欧美一区二区在线播放| 欧美国内亚洲| 亚洲一级高清| 国产主播精品在线| 欧美黄免费看| 亚洲自拍都市欧美小说| 嫩草国产精品入口| 亚洲视频在线观看网站| 国产日韩免费| 免费亚洲婷婷| 亚洲一区二区三区777| 裸体歌舞表演一区二区| 亚洲一区www| 在线观看久久av| 欧美午夜视频在线| 久久综合久久美利坚合众国| 中文精品在线| 欧美成人精品在线| 午夜亚洲福利| 日韩一区二区精品葵司在线| 国产欧美丝祙| 欧美久久久久久蜜桃| 久久成人精品视频| 亚洲精品日本| 欧美高清在线视频| 久久精品九九| 亚洲一区一卡| 亚洲精品国产精品国自产在线 | 国产噜噜噜噜噜久久久久久久久| 免费视频最近日韩| 久久久久成人精品免费播放动漫| 亚洲乱码国产乱码精品精可以看| 久久综合色天天久久综合图片| 一区二区三区精品视频| 亚洲激情视频在线| 黄色成人在线网站| 国产欧美三级| 国产精品视频999| 欧美三级视频在线观看| 欧美高清自拍一区| 久久亚洲捆绑美女| 久久精品国产第一区二区三区| 亚洲深夜福利| 野花国产精品入口| 99精品福利视频| 亚洲日本va午夜在线影院| 欧美高清不卡| 欧美国产国产综合| 免费亚洲一区| 免费看av成人| 男人的天堂亚洲| 欧美成人午夜激情在线| 噜噜噜躁狠狠躁狠狠精品视频| 久久国内精品视频| 久久久亚洲人| 免费成人黄色| 欧美激情偷拍| 亚洲激情国产精品| 亚洲精品视频在线观看免费| 亚洲精品乱码| 一区二区三区精品国产| 这里只有视频精品| 亚洲永久免费| 欧美一区二区日韩| 久久青青草综合| 美日韩丰满少妇在线观看| 美女精品国产| 欧美日本网站| 国产精品推荐精品| 国语自产精品视频在线看| 一区在线观看| 亚洲欧洲视频在线| 在线视频日韩精品| 小黄鸭视频精品导航| 久久久噜噜噜久噜久久| 欧美成人精品| 日韩午夜在线观看视频| 午夜精品久久久久久久99水蜜桃| 久久狠狠婷婷| 欧美国产在线电影| 国产精品视频你懂的| 韩国久久久久| 一区二区电影免费观看| 欧美在线啊v| 亚洲风情亚aⅴ在线发布| 一区二区三区成人精品| 欧美一区二区视频在线观看2020| 美女精品在线| 国产精品视频男人的天堂| 亚洲国产精彩中文乱码av在线播放 | 欧美一区免费视频| 欧美精品18| 国产自产精品| 一本色道久久88精品综合| 久久爱www| 亚洲欧洲在线视频| 欧美伊人久久久久久久久影院| 欧美/亚洲一区| 国产日韩欧美在线| 一本色道久久综合亚洲精品按摩 | 欧美岛国在线观看| 亚洲综合日韩| 欧美日韩另类字幕中文| 狠狠久久亚洲欧美| 亚洲一区二区三区在线| 亚洲成人在线视频播放| 国产精品久久久久久久久久ktv| 狠狠操狠狠色综合网| 亚洲一区二区三区中文字幕| 欧美va天堂在线| 午夜精品网站| 国产精品激情偷乱一区二区∴| 亚洲精品美女在线| 六月天综合网|