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

posts - 26, comments - 2, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

看開源的代碼中發現了一些靜態函數聲明后有如下內容:__attribute__ ((constructor))這是gcc的擴展屬性。
文章來源:http://blog.csdn.net/volant_hoo/archive/2009/05/11/4169081.aspx

posted @ 2009-06-18 14:38 小夜 閱讀(226) | 評論 (0)編輯 收藏

前兩天看libsmi源代碼,里面對strncpy函數進行了封裝,感覺有些缺陷,雖然內部使用的函數,滿足要求就可以了,但想了想發現自己它了解的也不是很多。 關于strncpy,《C程序設計語言》中是這樣介紹的:“char *strncpy(s, ct, n),strncpy用于把字符串ct中最多n個字符拷貝到字符串s中,并返回s。如果ct中少于n個字符,那么就用’\0’補充。” 寫了一個簡單的程序對strncpy進行測試。
文章來源:http://blog.csdn.net/volant_hoo/archive/2009/05/11/4167919.aspx

posted @ 2009-06-18 14:38 小夜 閱讀(533) | 評論 (0)編輯 收藏

上一篇中對gtest進行了一個簡單的擴展,本文通過實例測試并介紹這個擴展的用法。

首先實現兩個Fibonacci函數,然后對這兩個函數進行測試:

Fibonacci_1,使用循環實現:

unsigned int Fibonacci_1(unsigned int n)
{
    unsigned 
int i;
    unsigned 
int f0 = 1, f1 = 1, f2;
    
for (i = 1; i < n; i++)
    
{
        f2 
= f0 + f1;
        f0 
= f1;
        f1 
= f2;
    }

    
return f1;
}


Fibonacci_2,使用遞歸實現:

unsigned int Fibonacci_2(unsigned int n)
{
    
switch (n)
    
{
        
case 0:
            
return 1;
        
case 1:
            
return 1;
        
default:
            
return Fibonacci_2(n - 1+ Fibonacci_2(n - 2);
    }

}


測試用例:

TEST_T(Fibonacci_Recursive, 30)
{
    Fibonacci_2(
30);
    ASSERT_TIME(
0.1);
}


TEST_T(Fibonacci_Loop, 
30)
{
    Fibonacci_1(
30);
    ASSERT_TIME(
0.1);
}


TEST_T(Fibonacci_Recursive, 
40)
{
    TEST_T_SHOWTIME();
    Fibonacci_2(
40);
    EXCEPT_TIME(
0.1);
    ASSERT_TIME(
1<< "\nUsed too long time!";
}


TEST_T(Fibonacci_Loop, 
40)
{
    TEST_T_SHOWTIME();
    Fibonacci_1(
40);
    EXCEPT_TIME(
0.1);
    ASSERT_TIME(
1<< "\nUsed too long time!";
}


測試結果:

 

[==========] Running 4 tests from 2 test cases.
[
----------] Global test environment set-up.
[
----------2 tests from TIME_Fibonacci_Recursive
[ RUN      ] TIME_Fibonacci_Recursive.
30
[       OK ] TIME_Fibonacci_Recursive.
30
[ RUN      ] TIME_Fibonacci_Recursive.
40
FibonacciTest.cpp:
47: Failure
Failed
Time: running 
2.9995(s) > 0.1(s)
FibonacciTest.cpp:
48: Failure
Failed
Time: running 
2.9995(s) > 1(s)
Used too 
long time!
[   TIME   ] used time: 
2.9995(s)
[  FAILED  ] TIME_Fibonacci_Recursive.
40
[
----------2 tests from TIME_Fibonacci_Loop
[ RUN      ] TIME_Fibonacci_Loop.
30
[       OK ] TIME_Fibonacci_Loop.
30
[ RUN      ] TIME_Fibonacci_Loop.
40
[   TIME   ] used time: 
0(s)
[       OK ] TIME_Fibonacci_Loop.
40
[
----------] Global test environment tear-down
[
==========4 tests from 2 test cases ran.
[  PASSED  ] 
3 tests.
[  FAILED  ] 
1 test, listed below:
[  FAILED  ] TIME_Fibonacci_Recursive.
40

 

實例中測試了四個測試用例,分別測試了兩個函數分別計算Fibonacci(30)和Fibonacci(40)所花費的時間。測試用例1、2比較簡單,僅有一個ASSERT_TIME斷言用于測試運行到此該測試用例花費的時間。測試用例3、4,增加了兩條語句:TEST_T_SHOWTIME(),測試用例結束后打印執行時間;EXCEPT_TIME斷言,這里只是測試以下EXCEPT_TIME和ASSERT_TIME的區別,前者繼續執行后續語句,后者則結束當前的測試用例。

posted @ 2008-08-27 23:34 小夜 閱讀(3144) | 評論 (0)編輯 收藏

看了gtest的一個simple,其中有測試運行時間的方法,但使用起來稍微負責,因此做了一個簡單的擴展。

擴展內容:
1. TEST_T(test_case_name, test_name),用于定義運行時間測試用例。
2. TEST_T_SHOWTIME(),打開打印測試用例運行時間打印開關。
3. EXCEPT_TIME(second)和ASSERT_TIME(second),斷言,second為double類型,測試運行時間是否小于second。

使用說明:
向正常使用一樣,只是在需要時間測試時include “gtest_e.h”即可,當然也得把相應的庫鏈接到執行文件中。

具體實現:
源文件gtest_e.h----

/**
 * gtest_e.h
 
*/


#ifndef GTEST_E_H_
#define GTEST_E_H_

#include 
"gtest_time.h"

#define TEST_T(test_case_name, test_name)\
    GTEST_TEST(TIME_##test_case_name, test_name, ::TimeTest)

#define TEST_T_SHOWTIME() TimeTest_setShowFlag(1)

#define ASSERT_TIME(time) if(TimeTest_setTimePoint() - time > 0) \
    FAIL() 
<< "Time: running " << TimeTest_getTime() << "(s) > " << time << "(s)"

#define EXCEPT_TIME(time) if(TimeTest_setTimePoint() - time > 0) \
    ADD_FAILURE() 
<< "Time: running " << TimeTest_getTime() << "(s) > " << time << "(s)"

#endif /* GTEST_E_H_ */
源文件gtest_time.h----
/**
 * gtest_time.h
 
*/


#ifndef GTEST_TIME_H_
#define GTEST_TIME_H_

#include 
<gtest/gtest.h>

class TimeTest: public testing::Test
{
public:
    inline 
void TimeTest_setShowFlag(int flag)
    
{
        show_time_ 
= flag;
    }


    inline 
double TimeTest_getTime()
    
{
        
return end_time_ - start_time_;
    }


    
double TimeTest_setTimePoint();

protected:
    
double start_time_;
    
double end_time_;
    
int show_time_;

    
virtual void SetUp();
    
virtual void TearDown();
}
;

#endif /* GTEST_TIME_H_ */
源文件gtest_time.cpp----
/**
 * gtest_time.cpp
 
*/


#include 
<iostream>
#include 
"gtest_time.h"

using namespace std;

#if defined(WIN32)
#include 
<sys/timeb.h>
double now()
{
    
struct _timeb current;
    _ftime(
&current);
    
return (((double) current.time) + (1.0 * current.millitm) * 0.000001);
}

#else
double now()
{
    
struct timeval current;
    gettimeofday(
&current, NULL);
    
return (((double) current.tv_sec) + 1.0e-6 * ((double) current.tv_usec));
}

#endif

void TimeTest::SetUp()
{
    start_time_ 
= now();
    end_time_ 
= 0;
    TimeTest_setShowFlag(
0);
}


void TimeTest::TearDown()
{
    
if (show_time_)
    
{
        
double used_time = TimeTest_setTimePoint();
        cout 
<< "[   TIME   ] used time: " << used_time << "(s)"
                
<< endl;
    }

}


double TimeTest::TimeTest_setTimePoint()
{
    end_time_ 
= now();
    
return TimeTest_getTime();
}


以上內容只是一個簡單的實現,沒有過多的測試,且時間精度不夠,誤差較大。

posted @ 2008-08-27 23:14 小夜 閱讀(2331) | 評論 (0)編輯 收藏

奧運會結束了,工作也要開始忙起來了。從開幕到閉幕,看了兩個星期的比賽,有高興,有驚喜,有震撼,也有失望。現在被比賽牽動的心,又得趨于平淡。回歸現實,還是工作的勞累和生活的奔波。
前天查了系分考試的成績,論文沒有過。成績在意料之間,一篇字數剛好、內容跑題的論文,又怎么能過呢。失敗也是經驗,感覺以下幾點:
1、系分沒有想象中那么難考。好好準備一下,爭取基礎知識和案例成績再提高一些。
2、自己的文字組織能力有待提高。很長時間沒有動筆寫字了,兩個小時完成2000-3000字的論文和300-500的摘要,是個不小的挑戰。考試的時候,不敢多做思考,就一直寫呀寫的,結束前一分鐘剛好碼字到2000字那一行,慚愧啊!
3、寫論文要學會說廢話。一直以來,自己都崇尚以“簡”為美,經常對外文書籍中動輒“洋洋大論”的行為嗤之以鼻,直到考試的時候,才發現說廢話也是一種好習慣。
4、把規劃細化也是一種好的方式。長期以來,養成的習慣都是先寫好主干內容,然后再逐步擴充,呵呵,像XP一樣,錯了可以改,少了可以加。唉,電子版可以如此,紙質版又能如何,羨慕機試了。
5、需要一塊手表。考場上沒有鐘,手機不能用,有時間規劃也不能落到實處。
換了工作,又換了房子,需要時間去適應新的環境。下半年的系分不打算考了,來年再度奮戰。阿門,祈禱一下,希望能夠順利通過。

posted @ 2008-08-26 11:29 小夜 閱讀(193) | 評論 (0)編輯 收藏

google開源了c++單元測試框架,真讓人興奮。安裝的過程比較簡單,在eclipse+mingw+cygwin下很easy就搞定了。使用也很容易,按照sample不用看文檔也能很快上手。過程就不多少了,記點東西備忘。

斷言:
ASSERT_TRUE(condition); EXPECT_TRUE(condition); condition為真
ASSERT_FALSE(condition);    EXPECT_FALSE(condition);    condition為假

ASSERT_EQ(expected, actual);    EXPECT_EQ(expected, actual);    expected == actual
ASSERT_NE(val1, val2);  EXPECT_NE(val1, val2);  val1 != val2
ASSERT_LT(val1, val2);  EXPECT_LT(val1, val2);  val1 < val2
ASSERT_LE(val1, val2);  EXPECT_LE(val1, val2);  val1 <= val2
ASSERT_GT(val1, val2);  EXPECT_GT(val1, val2);  val1 > val2
ASSERT_GE(val1, val2);  EXPECT_GE(val1, val2);  val1 >= val2

ASSERT_STREQ(expected_str, actual_str); EXPECT_STREQ(expected_str, actual_str); 兩個C字符串有相同的內容
ASSERT_STRNE(str1, str2);   EXPECT_STRNE(str1, str2); 兩個C字符串有不同的內容
ASSERT_STRCASEEQ(expected_str, actual_str); EXPECT_STRCASEEQ(expected_str, actual_str); 兩個C字符串有相同的內容,忽略大小寫
ASSERT_STRCASENE(str1, str2);   EXPECT_STRCASENE(str1, str2);   兩個C字符串有不同的內容,忽略大小寫

頭文件:
#include <gtest/gtest.h>

main:
    testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();

庫:
    -lgtest

posted @ 2008-07-31 12:52 小夜 閱讀(2950) | 評論 (1)編輯 收藏

eclipse的出現和每一次版本升級,都讓人興奮,趕緊把公司和家里都升了上去。試用了兩天,總體感覺還是不錯的。
文章來源:http://blog.csdn.net/volant_hoo/archive/2008/07/17/2668471.aspx

posted @ 2008-07-18 06:14 小夜 閱讀(538) | 評論 (1)編輯 收藏

很久沒有接觸snort了,由于工作的原因,和它打了兩年多的交道,雖然有不少的認識,但缺少深入的研究。閑來時翻的幾篇手冊,原來放在163上,偷懶放個總的上來。
文章來源:http://blog.csdn.net/volant_hoo/archive/2008/07/07/2622733.aspx

posted @ 2008-07-08 04:23 小夜 閱讀(186) | 評論 (0)編輯 收藏

做了幾年C/C++開發,一直想要把單元測試加上,因為工作安排,做了一小段時間的java,更堅定了搭建c++單元測試環境的想法,但不得不說cppunit的配置實在是有些繁瑣,MinGW的安裝還好說,cygwin安裝實在是太慢,可憐的網速讓我數次終止了它的安裝,幸運的是在公司的電腦上居然發現了cygwin的安裝包,于是就開始了我的cppunit的測試旅程。
文章來源:http://blog.csdn.net/volant_hoo/archive/2008/06/02/2502339.aspx

posted @ 2008-06-02 18:30 小夜 閱讀(554) | 評論 (0)編輯 收藏

本文對一篇文中的三種方法進行整理,并描述我面試時的解法。
文章來源:http://blog.csdn.net/volant_hoo/archive/2008/04/12/2283902.aspx

posted @ 2008-04-12 10:32 小夜 閱讀(500) | 評論 (0)編輯 收藏

僅列出標題
共3頁: 1 2 3 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲男女自偷自拍| 久久精品久久综合| 国产亚洲综合性久久久影院| 欧美色图一区二区三区| 国产精品分类| 国产亚洲精品一区二555| 韩国免费一区| 亚洲日本aⅴ片在线观看香蕉| 欧美国产激情二区三区| 玖玖国产精品视频| 亚洲激情黄色| 亚洲免费成人| 午夜在线视频观看日韩17c| 在线一区二区三区做爰视频网站| 亚洲欧美日韩精品久久奇米色影视 | 亚洲欧美国产另类| 亚洲欧美日韩精品久久| 噜噜噜噜噜久久久久久91| 欧美高清在线播放| 国产精品美女久久久久aⅴ国产馆| 欧美在线观看天堂一区二区三区| 亚洲日本中文字幕免费在线不卡| 新67194成人永久网站| 欧美一区二区三区四区在线观看地址| 欧美激情偷拍| 99综合电影在线视频| 亚洲开发第一视频在线播放| 亚洲免费电影在线| 一本在线高清不卡dvd| 亚洲网站啪啪| 午夜精品久久99蜜桃的功能介绍| 久久国内精品自在自线400部| 狠狠色伊人亚洲综合成人| 黄色免费成人| 日韩午夜剧场| 欧美一级在线视频| 久久精品网址| 欧美激情一区二区三区四区| 亚洲九九爱视频| 香蕉久久夜色精品国产| 久久亚洲一区二区三区四区| 欧美精品一区在线| 国产欧美一区在线| 91久久中文| 欧美一区二区三区免费大片| 欧美国产另类| 久久精品亚洲一区二区三区浴池| 久久婷婷综合激情| 欧美性视频网站| 一区二区欧美亚洲| 亚洲成色www8888| 久久久久免费视频| 亚洲视屏一区| 亚洲欧洲精品一区二区精品久久久| 蜜桃久久av| 欧美一级欧美一级在线播放| 国产精品第三页| 亚洲综合视频网| 亚洲婷婷综合色高清在线| 欧美午夜片在线观看| 一区二区三区**美女毛片| 亚洲国产一区二区三区青草影视 | 亚洲视频一区二区| 久久精品噜噜噜成人av农村| 国产女人精品视频| 亚洲一区二区三区欧美| 日韩午夜中文字幕| 欧美午夜精品久久久久久久| 国产精品99久久久久久白浆小说| 校园激情久久| 亚洲免费视频网站| 国产日韩欧美另类| 久久精品人人做人人爽| 久久成人人人人精品欧| 尤物yw午夜国产精品视频| 老色鬼精品视频在线观看播放| 欧美福利一区| 欧美不卡视频| 亚洲欧美视频一区二区三区| 一本色道久久综合一区| 国产精品网站在线播放| 久久一日本道色综合久久| 久久久亚洲影院你懂的| 亚洲美女在线看| 亚洲一区二区欧美| 激情综合网址| 日韩亚洲欧美一区二区三区| 国产乱人伦精品一区二区| 免费观看日韩av| 欧美日韩在线播放三区四区| 欧美一区亚洲| 老牛国产精品一区的观看方式| 欧美日韩久久精品| 欧美一区二区视频免费观看 | 免费观看30秒视频久久| 免费黄网站欧美| 亚洲天堂视频在线观看| 欧美中文字幕第一页| 亚洲另类自拍| 欧美一区二区在线| 一区二区高清在线观看| 久久精品理论片| 亚洲欧美国产视频| 老司机亚洲精品| 欧美一区二区国产| 欧美精品在线视频观看| 久久久久久网址| 国产精品久久久久国产精品日日| 日韩午夜av在线| 欧美一区二视频| 亚洲综合欧美日韩| 麻豆免费精品视频| 久久精品视频在线播放| 欧美日韩一区在线| 亚洲电影下载| 一区二区三区亚洲| 亚洲已满18点击进入久久| 日韩视频免费观看高清在线视频 | 国产免费一区二区三区香蕉精| 久久蜜桃精品| 狠狠色狠色综合曰曰| 99精品视频免费| 亚洲日本成人在线观看| 久久精品一本| 久久婷婷激情| 国产区精品视频| 亚洲区中文字幕| 亚洲激情网站| 久久亚洲二区| 六月天综合网| 狠狠综合久久| 久久精品亚洲一区二区三区浴池| 亚洲第一网站免费视频| 亚洲欧美日韩在线一区| 亚洲免费视频在线观看| 欧美日韩精品一二三区| 亚洲精品视频在线观看免费| 日韩视频亚洲视频| 欧美成人午夜激情在线| 亚洲国产日韩精品| 日韩一级黄色大片| 欧美日韩国产a| 亚洲精品国产系列| 中文亚洲字幕| 国产精品视频在线观看| 性做久久久久久久久| 久久午夜影视| 亚洲高清资源综合久久精品| 美国成人直播| 亚洲看片免费| 欧美在线一二三| 国内精品亚洲| 欧美成人影音| 亚洲精品资源| 欧美在线观看一区二区| 国精产品99永久一区一区| 久久免费精品日本久久中文字幕| 一本一本久久a久久精品综合麻豆| 99视频一区二区| 一区二区欧美日韩| 国产精品综合网站| 久久久久久久成人| 亚洲欧洲日韩女同| 亚洲一区二区高清视频| 国产欧美在线播放| 欧美成人免费小视频| 亚洲午夜av在线| 狼狼综合久久久久综合网| 亚洲美女区一区| 国产精品实拍| 欧美 日韩 国产在线| 亚洲天堂av高清| 免费成人av| 久久精品国产69国产精品亚洲 | 久久福利电影| 亚洲黄色尤物视频| 欧美日韩一区二区三区高清| 午夜在线视频一区二区区别| 国产精品久久久久久模特| 久久久精品性| 夜夜夜精品看看| 欧美激情日韩| 久久久久久穴| 亚洲欧美国产一区二区三区| 亚洲国产一区二区三区高清| 国产精品美女久久久久aⅴ国产馆| 亚洲国产精品黑人久久久| 亚洲三级观看| 国产综合色精品一区二区三区| 一区二区欧美日韩| 久久亚洲精品一区二区| 一区二区三区国产| 在线观看日韩欧美| 国产日韩欧美在线播放| 欧美日产国产成人免费图片| 久久福利电影| 亚洲欧美激情一区| 亚洲婷婷综合久久一本伊一区| 亚洲网站啪啪| 亚洲欧洲日韩女同|