• <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>

            woaidongmao

            文章均收錄自他人博客,但不喜標(biāo)題前加-[轉(zhuǎn)貼],因其丑陋,見諒!~
            隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
            數(shù)據(jù)加載中……
            共2頁: 1 2 
            @飯中淹
            每個對象都要顯示的create和release。那基本上等價于放棄了C++構(gòu)造函數(shù)和析構(gòu)函數(shù)這兩個特性。
            對于棧對象,這樣會很累,也很容易泄漏。
            re: 美利達公爵 vs ATX740 肥仔 2009-10-19 10:29
            我是博主,樓上的說話不雅
            狄公真乃神人也!
            re: 能用于 VC6 的 CImage 類 肥仔 2009-01-09 10:50
            強,支持
            對VC6這東西太有感情,完全不可割舍。
            Ragel用來解析協(xié)議是很棒,很快的東西。
            Ruby的若干個http服務(wù)器,是使用Ragel生成http_parser的。還有解析html,xml的,等等。
            做網(wǎng)絡(luò)或者Web數(shù)據(jù)抓取的,也有空的兄弟,可以研究下,無奈中文資料基本沒有,國外使用的人也不是太多。
            @陳梓瀚(vczh)
            我知你對這類東西蠻有研究的,介紹Ragel,你不妨去弄弄,據(jù)我現(xiàn)在所得結(jié)果,雖然都是自動機識別,但他比Lex要快,尤其-G2選項之后,函數(shù)全部內(nèi)聯(lián),統(tǒng)統(tǒng)goto,沒有用數(shù)組,速度快到無法形容。

            另外還可以生成dot文件,調(diào)用Graphviz畫出自動機的圖形,這個很爽啊(我把ragel生成的r_atoi自動機圖補到上面了,翻上去找找...)

            不知誰有閑時間去翻譯一下它的man page,我想去翻譯,無奈真是太忙了,生活所迫啊。
            再次改善了一下,加了一個inline,時間變?yōu)?2562 ms了,因為去掉了函數(shù)調(diào)用開銷

            inline long my_atoi(const char *str)
            {
            long val = 0;
            bool b_neg = ('-' == *str);
            if(*str == '-' || *str == '+')++str;
            while(*str)
            {
            if(('0' - 1) < *str && *str < ('9' + 1))
            val = val*10 + *str++ - '0';
            else
            break;
            }
            return b_neg?-val:val;
            }
            改善了一下my_atoi, 同等規(guī)模下測試,時間為:3468 ms
            這一下心里平衡了,可以安穩(wěn)睡一個覺了

            long my_atoi(const char *str)
            {
            long val = 0;
            bool b_neg = ('-' == *str);
            if(*str == '-' || *str == '+')++str;
            while(*str)
            {
            if(('0' - 1) < *str && *str < ('9' + 1))
            val = val*10 + *str++ - '0';
            else
            break;
            }
            return b_neg?-val:val;
            }
            剛剛自己再手寫了一個my_atoi,同等規(guī)模下測試,時間為:13536 ms
            為什么差距就這么大涅?

            long my_atoi(const char *str)
            {
            long val = 0;
            bool b_neg = ('-' == *str);
            if(*str == '-' || *str == '+')++str;
            while(1)
            switch(*str++)
            {
            case 0:
            return b_neg?-val:val;
            case '0':
            val = val*10 + 0;
            break;
            case '1':
            val = val*10 + 1;
            break;
            case '2':
            val = val*10 + 2;
            break;
            case '3':
            val = val*10 + 3;
            break;
            case '4':
            val = val*10 + 4;
            break;
            case '5':
            val = val*10 + 5;
            break;
            case '6':
            val = val*10 + 6;
            break;
            case '7':
            val = val*10 + 7;
            break;
            case '8':
            val = val*10 + 8;
            break;
            case '9':
            val = val*10 + 9;
            break;
            default:
            return 0;
            }
            return 0;
            };
            @NeutralEvil
            第二條補充得太棒了,我沒有想到你補充的那點,汗!
            STL的偉大,正是在抽象之后,形式上的統(tǒng)一,優(yōu)美啊。
            re: CHttpDwonLoad Bete 1.0 肥仔 2008-12-23 14:04
            樓上的眼睛好犀利
            re: VC++ 6 的 MSDN 插件 肥仔 2008-12-22 20:35
            我用VC6和SDK/MSDN 2003,不需要額外的東西就可以關(guān)聯(lián)。
            MSDN用那么高版本有什么意義嗎?如果VC6能夠把編譯器升級到高版本才叫爽啊,可惜不行。
            re: 代碼壞味3 肥仔 2008-12-22 20:21
            我的幾個觀點,供參考
            1、從代碼看來,你的設(shè)計是面向功能的,按功能分解是結(jié)構(gòu)型程序設(shè)計方法的模式;
            2、OOP應(yīng)該是面向?qū)ο蟮模?pulic 功能,應(yīng)該是:public 基礎(chǔ)對象;
            3、好的設(shè)計不應(yīng)該出現(xiàn)多繼承;

            請參見轉(zhuǎn)貼的這篇博文,有更好的對如何繼承的原則描述
            http://www.shnenglu.com/woaidongmao/archive/2008/12/16/69567.html
            re: 日志該怎么記錄? 肥仔 2008-12-22 12:18
            日志作用大了去了,查bug,特別是業(yè)務(wù)邏輯的bug,查安全,黑客,做roll back, 作業(yè)務(wù)分析,用處實在太多了
            一個大系統(tǒng),若沒有規(guī)范的日志體系,那就是個豆腐渣工程。
            總是有很多人喜歡說別人搞不清什么跟什么的區(qū)別。我真的很糊涂,那些所謂的區(qū)別,在眼里根本就不值一提的東西,有必要寫出來嗎?

            我支持摟主,原創(chuàng)即分享,Great。
            re: 面試在華為 肥仔 2008-12-18 18:42
            華為的名聲在深圳這邊很差,有工作經(jīng)驗的coder,如果打電話過來叫面試,一聽是華為,馬上就掛了,我也掛過很多次,壓根沒投過他的簡歷,他也找得到你,估計和51job有合作關(guān)系。
            華為工資不高,但把人當(dāng)牛使。喜歡去的都是沒畢業(yè)或剛畢業(yè)的學(xué)生,覺得華為牛而已吧,事實卻和想象有蠻大的差別,需要慎重考慮了。
            批處理實現(xiàn)不了太復(fù)查的更新邏輯,這個是弱點
            re: 代碼的壞味2 肥仔 2008-12-17 23:10
            剛剛特意再查了一下資料,找到了一片bbs,轉(zhuǎn)到了我自己的空間,你看看,是不是可能SendMessage死鎖
            http://www.shnenglu.com/woaidongmao/archive/2008/12/17/69696.html
            re: 代碼的壞味2 肥仔 2008-12-17 22:56
            個人感覺搞錯了方向,可能的原因有2種
            1、死鎖,可能性不大,因為并不是每次都不行;
            2、工作線程執(zhí)行了更新界面的操作,且通過調(diào)用引用控件的方法來更新的。因為控件方法調(diào)用實際上是SendMessage,應(yīng)該用PostMessage就不會錯了。

            考慮如下情況:
            按下按鈕,界面線程執(zhí)行OnButton,等待工作者線程釋放鎖;
            在同一時刻工作者線程更新界面,因為任何界面更新實際上都是界面線程完成(通過消息隊列),如果用的是SendMessage模式,工作者線程必須等待完成才可以走一下步,而等待完成的前提是OnButton完成。

            這樣就OnButton在等待鎖,工作者線程在等待OnButton完成才可以釋放鎖,無響應(yīng)了,所以工作者線程更新,應(yīng)該用PostMessage。
            永不停息的強人。
            這是一個人的戰(zhàn)斗!
            @于
            這個是從別人博客抄過來的,你需要google一下這個標(biāo)題,就應(yīng)該能找到原作者了。
            re: 用Mis平臺生成Mis 肥仔 2008-12-12 13:58
            上傳個你軟件生成的HTML前臺如何?
            re: 用Mis平臺生成Mis 肥仔 2008-12-12 13:54
            很不錯啊
            HTML做出了桌面軟件的風(fēng)格。

            你那個軟件是用來定制HTML的和數(shù)據(jù)庫表的?
            定制生成前臺這個ideal很棒!!!
            re: 小寫了個XML解析器 肥仔 2008-12-10 18:20
            struct xmlNode
            {
            ...
            struct xmlNode *child;
            struct xmlNode *sibling;
            };
            ==================
            這種結(jié)構(gòu)處理起來,好累的。我的xml解析器采用下面這種結(jié)構(gòu)
            struct xmlNode
            {
            ...
            vector<xmlNode*> childs;
            struct xmlNode* parent;
            };
            very good ideal
            good.
            回調(diào)函數(shù)和函數(shù)指針是低階的技術(shù)特性。
            一個建議是,可以在此基礎(chǔ)上,更進一步,學(xué)習(xí)理解“委托”這種基于回調(diào)的高階編程思想,將得到更多。。。。。。
            @helpsoff.com.cn
            呵呵,好了。

            我必須得承認(rèn),你很強,你問的問題讓我不知所措,我非常地茫然,幾乎無地自容。當(dāng)然不會刪你的留言,只要不是粗痞話,我都不會刪。大俠的更要留著偶爾看看,好讓自己感到自卑。

            這既然是一個你不屑的地方,就不必再來了吧,何必來看這么膚淺的文章影響了您老人家的心情?

            送客了,遠(yuǎn)方的客人請您別再來~~~,:)


            @helpsoff.com.cn
            呵呵,這不是我們第一次交流了,你這位同志比較喜歡好為人師嘛。但是需要說出點稍微有參考價值的東西,才可以教育別人,是不是。

            交流需要平等,干嘛老擺個姿態(tài)呢,我覺得不好。
            @guest
            汗,VC6如果對POD這樣的標(biāo)準(zhǔn)都支持不了,那就太那個。
            VC6一直在用,而且最近1~2年內(nèi)應(yīng)該還是會作為工作的首選,沒覺得有什么不好。賽揚CPU,512MB的內(nèi)存,開4個VC6 IDE,并行開發(fā)一點都不卡,舒舒服服。
            AMD雙核,2G內(nèi)存,打開一個VS 2008,只聽到硬盤狂叫,10秒以上才能出個界面,這就是.net的效果?。
            上次CSDN看到一個投票,目前C++集成開發(fā)環(huán)境,10年了的VC6占30%多,依然居第一位。



            re: SIZEOF宏,彌補sizeof不足 肥仔 2008-12-04 11:02
            @vczh
            這種核武器都用上了。。。

            看來看去,還是宏最簡潔,優(yōu)美,漂亮。
            @RedNax
            ?? 有差別嗎? 代碼不好看,我指p_self->data.val_a,多了一個data,能夠去掉這個data就好看了。

            因為項目中需要提供一個這樣的能力:有幾百個全部是static成員的struct,它們只有最后一個字段是個POD數(shù)組,長度會不同,需要有一個統(tǒng)一的接口來訪問這些struct的成員,所以做了這個測試。

            @RedNax
            根據(jù)你的提示,測試了另一個種情況,證明內(nèi)存確實不連續(xù),與定義順序相關(guān) +編譯器相關(guān)。

            我找到了一種強制內(nèi)存連續(xù)的辦法,接口轉(zhuǎn)換也OK,但代碼不好看了,如下:


            #include "stdafx.h"
            #include <stdio.h>

            typedef struct
            {
            struct __Data
            {
            char* text;
            int val_a;
            int val_b;
            } static data;

            } sData, *Self_Ptr;

            typedef struct
            {
            char* text;
            int val_a;
            int val_b;
            }* Other_Ptr;

            sData::__Data sData::data
            ={ "this is a test string\0", 100, 200};

            int main(int argc, char* argv[])
            {
            Self_Ptr p_self = 0;
            Other_Ptr p_other = (Other_Ptr)&(sData::data.text);
            printf("%d\n", sizeof(sData));
            printf("val_a: %d-%d\n", p_self->data.val_a, sData::data.val_a);
            printf("val_b: %d-%d\n", p_self->data.val_b, sData::data.val_b);
            printf("val_a: %d-%d\n", p_self->data.val_a, p_other->val_a);
            printf("val_b: %d-%d\n", p_self->data.val_b, p_other->val_b);
            return 0;
            }
            @RedNax
            right, 你的判斷正確,換成Self_Ptr p_self = NULL; p_self->val_a不會內(nèi)存訪問違規(guī),說明編譯期已經(jīng)替換了p_self->val_a。
            @RedNax
            如果我沒有記錯的話
            class不是POD,即使是非靜態(tài)成員,也不能保證連續(xù),標(biāo)準(zhǔn)沒有這樣的規(guī)定。
            成員為內(nèi)置內(nèi)型或POD類型且同時沒有成員函數(shù)的struct可以歸為POD了,標(biāo)準(zhǔn)規(guī)定POD內(nèi)存必須連續(xù),有static成員的struct還算不算POD,這個我倒是不知道。
            @brian
            牛,確實太油才了
            re: 我繪制的圓餅圖 肥仔 2008-12-03 01:00
            程序是好的,想法是好的,就是少那么點美感。泡個做美工的女孩調(diào)教調(diào)教吧
            a. 這一層的類命名為 CxxxDlg, CxxxView……
            ------------------------------------------
            應(yīng)該是CDlgXXXX,CViewXXXXX, 這樣文件名和class view排序都會連續(xù),而且更易理解,看左邊幾個字符,并明白了類型。
            一點經(jīng)驗。
            re: 截取網(wǎng)頁快照的dll 肥仔 2008-12-01 12:57
            很有創(chuàng)意,且提供源代碼
            可惜沒有這方面的需求,用不上了。
            re: SIZEOF宏,彌補sizeof不足 肥仔 2008-12-01 12:34
            @周星星
            傳說中挖bug狂人?
            我blog偷盜了你蠻多篇文章,不要報警啊
            文法好寫,也好理解,但文法之后的事情才叫難于上青天,借助YACC解析代碼生成一顆語法樹就非常頭痛了,剩下的符號提取,解釋器,語法樹運算更不用說了。
            我找過很多yacc的文章,但還來沒有發(fā)現(xiàn)過中國誰用它真正實現(xiàn)了一個腳本引擎的。可見難度之不低。
            @908971
            資料都是收集別人的,我也學(xué)別人,一起學(xué)習(xí)。
            @陳梓瀚(vczh)
            牛,yacc可不是一般的輪子
            走上了一條陽春白雪的道路
            都依賴于自己造的輪子,對別沒有價值,除非別人愿意用你的輪子。否則也就落到自娛自樂了。
            反正都是基于文件系統(tǒng),直接寫文件不行嗎?沒有與其他進程共享內(nèi)存通訊,為什么要MappingFile呢?難道速度有優(yōu)勢?
            似乎沒有什么用,讀書時候考的人比較多,工作后的人都很少在乎這些了,程序員不像其他行業(yè),能力有多少,寫幾天代碼就徹底暴露了,證書能夠頂個球用。
            @megax
            我理解你所說的和你的建議,書里面也是如你所說的。CRT,MFC也是從來ASSERT后面,沒有if,沒有參數(shù)合法性檢查。

            但是這種形式給我?guī)磉^很多麻煩,請聽聽我的理解:
            以strcpy舉例(在這個函數(shù)上沒有栽過跟頭的程序員,不是個合格的程序員),strcpy(buf, NULL);將導(dǎo)致程序崩潰,為何?因為ASSERT后面沒有帶if,也就是沒有對參數(shù)合法性進行校驗。

            我理解的,strcpy這樣行為的后果是:把一個業(yè)務(wù)邏輯的bug,轉(zhuǎn)成耦合了平臺底層的bug。

            1、strcpy(buf, NULL),邏輯上的bug應(yīng)該是buf沒有拷貝任何數(shù)據(jù),如果作了參數(shù)檢查,那么這個bug的最終表現(xiàn)形式是邏輯上的:buf沒有出現(xiàn)應(yīng)該出現(xiàn)的數(shù)據(jù);
            2、因為沒有參數(shù)檢查,程序崩潰了,那么這個bug就耦合上了平臺的內(nèi)存管理規(guī)則,內(nèi)存訪問違規(guī)了,程序崩潰是這個bug的表現(xiàn),這種表現(xiàn)形式和邏輯上應(yīng)該出現(xiàn)的結(jié)果有聯(lián)系嗎?沒有;
            3、檢測與修正業(yè)務(wù)邏輯的bug的難度遠(yuǎn)遠(yuǎn)小于與平臺耦合的bug,可以依賴于日志,模擬重現(xiàn)等許多方法。但是比如程序崩潰這樣耦合了平臺的bug,如果不是到了一定程度的程序員,讓他去調(diào)查一個服務(wù)器運行幾天down掉的原因,那將難于上青天。
            4、若寫服務(wù)器,你將體會到,偶爾業(yè)務(wù)邏輯執(zhí)行不正確不是什么大事情,只是一個業(yè)務(wù)邏輯上的bug而已,真正的大事情是服務(wù)器時不時給你來個crash down。很多情況的發(fā)生都是因為參數(shù)錯誤不合法,到了ntdll或者其他系統(tǒng)dll里面崩掉了。

            C/C++庫里面,成千上萬的函數(shù),你需要一個個了解他們傳遞什么樣的參數(shù)才是合法,要保證不犯錯誤,是不可能的,但是一旦犯錯,它給你來一刀,可不是很好受,為什么如此?原因就是ASSERT后面沒有if。

            所以,吃過虧后,我一般都在參數(shù)的ASSERT后面,帶上一個if,個人覺得很受用。

            @陳梓瀚(vczh)
            Debug會有ASSERT,也會有if
            Release沒有ASSERT,有if.
            沒有不同行為
            @www.helpsoff.com.cn
            程序以外,人生很多地方都需要與別人探討,對于不合己見者,請不必太在懷,更沒必要帶著情緒和語氣,擺出姿態(tài)。這樣才能贏得更多的合作,我想我的這幾句話還算中肯。
            共2頁: 1 2 
            99久久免费国产特黄| 久久99热这里只有精品国产| 免费观看久久精彩视频| 久久精品天天中文字幕人妻| 一本久久免费视频| 久久免费视频1| 中文字幕无码久久人妻| 一本色综合久久| 精品久久久久久国产潘金莲 | 久久艹国产| 91精品观看91久久久久久| 99国内精品久久久久久久| 99久久精品国产毛片| 久久亚洲精品无码VA大香大香| 91久久精品91久久性色| 亚洲精品乱码久久久久久不卡| 国产精品一区二区久久国产| 伊人久久国产免费观看视频| AV无码久久久久不卡蜜桃| 亚洲精品乱码久久久久久蜜桃| 久久九九亚洲精品| 久久久久亚洲AV无码网站| 亚洲另类欧美综合久久图片区| 久久精品中文字幕久久| 久久精品国产亚洲AV嫖农村妇女| 久久久久无码国产精品不卡| 99久久精品国产免看国产一区| 99久久国产综合精品女同图片 | 国产亚洲色婷婷久久99精品91| 久久精品人人做人人爽电影蜜月| 久久久精品国产| 亚洲?V乱码久久精品蜜桃| 91精品久久久久久无码| 久久婷婷国产麻豆91天堂| 国产精品99久久99久久久| 国内精品久久久久久久97牛牛| 欧美久久久久久午夜精品| 久久丫忘忧草产品| 青青青国产精品国产精品久久久久| 久久亚洲国产精品五月天婷| 亚洲国产精品高清久久久|