• <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>
            posts - 18,  comments - 2,  trackbacks - 0

            這部分內(nèi)容會隨著時間逐漸的積累,很多東西只要很用心,沒有辦不到的。

            archlinux下安裝firefox如下:
            $ sudo pacman -S firefox flashplugin gecko-mediaplayer
            gecko-mediaplayer is More stable combined with MPlayer 1.0RC2, A good replacement of the now aging mplayer-plugin.

            設(shè)置1. urlclassifier3.sqlite

            urlclassifier3.sqlite文件用于記錄Firefox從Google抓取的反釣魚網(wǎng)站和惡意站點數(shù)據(jù)的,但是這個文件大小在默認(rèn)情況下 會不斷地增長,會導(dǎo)致firefox啟動響應(yīng)很慢。

            通過設(shè)置"urlclassifier.updatecachemax"可以限制urlclassifier3.sqlite的大小.

            Linux版本下"urlclassifier.updatecachemax"默認(rèn)為104857600 (100 MB)。

            在地址欄輸入about:config,出現(xiàn)一個警告,點擊同意后進行高級設(shè)置。在過濾器中輸入上面字串,改它的值為20971520(20m)。刪除urlclassifier3.sqlite重新啟動Firefox就可以了。


            擴展列表:

            1. Vimperator

                Make firefox behave like vim.

            2. Adblock Plus

                Ads were yesterday!

            3. CacheView

                Allows searching and sorting cache files.

            4. Download Statusbar

                View and manage downloads from a tidy statusbar.

            5. DownloadHelper

                Download videos and images from many sites.

            6. Fission

                Safari style progress bar in the address bar.

            7. ColorfulTabs

                Colors every tab in a different color.

            8. Better Gmail 2

                Enhances Gmail.

            9. Gmail notifier

                A notifier for Gmail accounts.

            10. Better GCal

                Enhances Google Calendar.



            posted @ 2009-05-23 20:59 xuejzt 閱讀(399) | 評論 (0)編輯 收藏
            vimperator是firefox下面的一款插件,它可以將你的firefox變成vim,就感覺你在用vim。效果特別好。強烈推薦~~
            nomal模式下輸入:help就可以查看vimperator幫助
            小結(jié)如下:
               1. esc,當(dāng)快捷鍵無效時候大部分是因為切換到了命令模式,esc返回正常模式;
               2. tab,善用tab補全;
               3. o/t,當(dāng)前/新標(biāo)簽打開頁面;
               4. Shift+h/l,后退/前進,一般來說后退用的比較多;
               5. u,undo,撤銷關(guān)閉的標(biāo)簽;
               6. d,關(guān)閉當(dāng)前頁面;
               7. r/R,刷新/強制刷新當(dāng)前頁面;
               8. /,當(dāng)前頁面查找,回車后n標(biāo)記下一個關(guān)鍵字,N標(biāo)記上一個關(guān)鍵字;
               9. y/Y,復(fù)制當(dāng)前標(biāo)簽頁url/復(fù)制選中的文字;
              10. gg/gG,跳轉(zhuǎn)到頁面頂端/底端;
              11. p/P,粘帖并打開當(dāng)前剪貼板里的url地址,小寫當(dāng)前標(biāo)簽打開,大寫新標(biāo)簽打開;
              12. gf,查看頁面源代碼;
              13. f,進入QuickHint modo,用的不多;
              14. :pref,或者 :pr 加tab補全,打開Fx opinion對話框;
              15. :addons,擴展列表,同樣可以tab補全;
              16. :restart,重啟Fx;


            posted @ 2009-05-23 20:13 xuejzt 閱讀(392) | 評論 (0)編輯 收藏
            #include <iostream>

            using namespace std;

            int main(int argc, char *argv[])
            {
                
            char str1[] = "abc";
                
            char str2[] = "abc";
                
            const char str3[] = "abc";
                
            const char str4[] = "abc";
                
            const char* str5 = "abc";
                
            const char* str6 = "abc";

                cout 
            << boolalpha << (str1 == str2) << endl;
                cout 
            << boolalpha << (str3 == str4) << endl;
                cout 
            << boolalpha << (str5 == str6) << endl;
                
            return 0;
            }

            分別輸出false,false,true。str1和str2都是字符數(shù)組,每個都有其自己的存儲區(qū),它們的值則是各存儲區(qū)首地址,不等;str3和 str4同上,只是按const語義,它們所指向的數(shù)據(jù)區(qū)不能修改。str5和str6并非數(shù)組而是字符指針,并不分配存儲區(qū),其后的“abc”以常量形 式存于靜態(tài)數(shù)據(jù)區(qū),而它們自己僅是指向該區(qū)首地址的指針,相等

            boolalpha 用符號形式表示真假。
            #include <iostream>
            using namespace std;

            int main(int argc, char *argv[])
            {
                
            float a = 1.0f;
                cout 
            << (int)a << endl;
                cout 
            << (int&)a << endl;
                cout 
            << boolalpha << ( (int)a == (int&)a ) << endl; // 輸出什么?
                float b = 0.0f;
                cout 
            << (int)b << endl;
                cout 
            << (int&)b << endl;
                cout 
            << boolalpha << ( (int)b == (int&)b ) << endl; // 輸出什么?
                return 0;
            }

            ...
            cout < < boolalpha < < ( (int)a == (int&)a ) < < endl;
            // 輸出 false, 因為 float 的 1 和 int 的 1 在內(nèi)存里的表示不一樣。
            ...
            cout < < boolalpha < < ( (int)b == (int&)b ) < < endl; // 輸出 true
            // 輸出 true, 因為 float 的 0 和 int 的 0 在內(nèi)存里的表示是一樣的。

            (int &)a 就表示 不管 a 是什么,我都當(dāng)他是一個int變量。
            從機器碼的角度來說,變量a會被翻譯成一個內(nèi)存地址,(int &)a 就是說,這個內(nèi)存地址里的內(nèi)容它是一個整數(shù)。

            (int)a 呢不同:如果 a 不是整數(shù),就會按規(guī)則轉(zhuǎn)換成整數(shù),存入另一個地址(或臨時變量)中去。

            浮點數(shù)的 1.0f 在內(nèi)存里是這樣表示的:
            0011 1111 1000 0000 00000000 00000000
            這個32位二進制數(shù)被當(dāng)作整數(shù)輸出就是:
            1065353216
            而整數(shù)的 1 在內(nèi)存里是這樣表示的:
            0000 0000 0000 0000 00000000 00000001

            所以 (int)a != (int&)a

            浮點的0和整數(shù)的0 在內(nèi)存里都是:
            0000 0000 0000 0000 00000000 00000000

            所以 (int)b == (int&)b

            posted @ 2008-10-08 14:56 xuejzt 閱讀(482) | 評論 (0)編輯 收藏
            emacs里面undo有兩種快捷方式:
            1. C-x u
            2. C-/
            我喜歡用第二種方式,因為用起來很方便,而且因為這種方式,讓我想到了用“C-;”來表示redo.因為“'”就在“/”的旁邊,當(dāng)
            小指放在"\"上時無名指可以很輕松地放在";"上面。
            redo的調(diào)用方式:
            (require 'redo)
            (global-set-key [(control \;)] 'redo)
            posted @ 2008-10-04 14:36 xuejzt 閱讀(407) | 評論 (0)編輯 收藏
            linux系統(tǒng)有很多守護進程,大多數(shù)服務(wù)器都是用守護進程實現(xiàn)的。守護進程是生存期長的一種進程。它們獨立于控制終端并且周期性的執(zhí)行某種任務(wù)或等待處理某些發(fā)生的事件。
            他們常常在系統(tǒng)引導(dǎo)裝入時啟動,在系統(tǒng)關(guān)閉時終止。你也可以自己來啟動它們。archlinux下所有的服務(wù)器守護進程都放在/etc/rc.d文件夾下面。如果安裝了mysql,就會在這個
            文件夾里有一個名為mysqld的守護進程。要啟動它,采用:
            $ sudo /etc/rc.d/mysqld start
            之后就可以登錄mysql對里面的數(shù)據(jù)進行操作了。如果沒有開啟這個守護進程,嘗試連接mysql數(shù)據(jù)庫就會提示:
            ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
            一下是使用mysql數(shù)據(jù)庫常用的一些命令總結(jié):
            1:查看都有哪些數(shù)據(jù)庫
              mysql> SHOW DATABASES;
            2:創(chuàng)建MYSQLDATA數(shù)據(jù)庫
              mysql> CREATE DATABASE MYSQLDATA;
            3:選中MYSQLDATA數(shù)據(jù)庫
              mysql> USE MYSQLDATA; (按回車鍵出現(xiàn)Database changed 時說明操作成功!)
            4:查看當(dāng)前數(shù)據(jù)庫中TABLE
              mysql> SHOW TABLES;
            5:創(chuàng)建一個TABLE
              mysql> CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1));
            6:顯示表結(jié)構(gòu)
              mysql> DESCRIBE MYTABLE;
            7:插入數(shù)據(jù)
              mysql> insert into MYTABLE values ("hyq","M");
            8:用文本方式將數(shù)據(jù)裝入數(shù)據(jù)庫表中
              mysql> LOAD DATA LOCAL INFILE "/home/test/music.txt" INTO TABLE MYTABLE;
            9:導(dǎo)入.sql文件命令(例如D:/mysql.sql)
              mysql>use database;
              mysql>source d:/mysql.sql;
            10:刪除表
              mysql>drop TABLE MYTABLE;
            11:清空表
              mysql>delete from MYTABLE;
            12:更新表中數(shù)據(jù)
              mysql>update MYTABLE set sex="f" where name='hyq';


            MySql的用戶管理是通過 User表來實現(xiàn)的,添加新用戶常用的方法有兩個,一是在User表插入相應(yīng)的數(shù)據(jù)行,同時設(shè)置相應(yīng)的權(quán)限;二是通過GRANT命令創(chuàng)建具有某種權(quán)限的用戶。其中GRANT的常用用法如下:
            grant all on mydb.* to NewUserName@HostName identified by "password" ;
            grant usage on *.* to NewUserName@HostName identified by "password";
            grant select,insert,update on mydb.* to NewUserName@HostName identified by "password";
            grant update,delete on mydb.TestTable to NewUserName@HostName identified by "password";
            若要給此用戶賦予他在相應(yīng)對象上的權(quán)限的管理能力,可在GRANT后面添加WITH GRANT OPTION選項。而對于用插入User表添加的用戶,Password字段應(yīng)用PASSWORD 函數(shù)進行更新加密,以防不軌之人竊看密碼。對于那些已經(jīng)不用的用戶應(yīng)給予清除,權(quán)限過界的用戶應(yīng)及時回收權(quán)限,回收權(quán)限可以通過更新User表相應(yīng)字段,也可以使用REVOKE操作。
            下面給出本人從其它資料(www.cn-java.com)獲得的對常用權(quán)限的解釋:
            全局管理權(quán)限:
            FILE: 在MySQL服務(wù)器上讀寫文件。
            PROCESS: 顯示或殺死屬于其它用戶的服務(wù)線程。
            RELOAD: 重載訪問控制表,刷新日志等。
            SHUTDOWN: 關(guān)閉MySQL服務(wù)。
            數(shù)據(jù)庫/數(shù)據(jù)表/數(shù)據(jù)列權(quán)限:
            ALTER: 修改已存在的數(shù)據(jù)表(例如增加/刪除列)和索引。
            CREATE: 建立新的數(shù)據(jù)庫或數(shù)據(jù)表。
            DELETE: 刪除表的記錄。
            DROP: 刪除數(shù)據(jù)表或數(shù)據(jù)庫。
            INDEX: 建立或刪除索引。
            INSERT: 增加表的記錄。
            SELECT: 顯示/搜索表的記錄。
            UPDATE: 修改表中已存在的記錄。
            特別的權(quán)限:
            ALL: 允許做任何事(和root一樣)。
            USAGE: 只允許登錄--其它什么也不允許做。
            posted @ 2009-05-23 21:21 xuejzt 閱讀(283) | 評論 (0)編輯 收藏
              1 #include <mysql.h>/*注意要包含這個頭文件*/
              2 #include <string.h>
              3 #include <stdlib.h>
              4 #include <stdio.h>
              5 
              6 /*定義了一些數(shù)據(jù)庫連接需要的宏*/
              7 #define HOST "localhost"
              8 #define USERNAME "ABitNo"
              9 #define PASSWORD "ABitNo"
             10 #define DATABASE "abitno"
             11 
             12 /*這個函數(shù)用來執(zhí)行傳入的sql語句*/
             13 void exe_sql(char* sql) {
             14 
             15     MYSQL my_connection; /*這是一個數(shù)據(jù)庫連接*/
             16     int res; /*執(zhí)行sql語句后的返回標(biāo)志*/
             17 
             18     /*初始化mysql連接my_connection*/
             19     mysql_init(&my_connection);
             20 
             21     /*這里就是用了mysql.h里的一個函數(shù),用我們之前定義的那些宏建立mysql連接,并
             22     返回一個值,返回不為空證明連接是成功的*/
             23     if (mysql_real_connect(&my_connection, HOST, USERNAME, PASSWORD, DATABASE,
             24             0, NULL, CLIENT_FOUND_ROWS)) {/*連接成功*/
             25 
             26         printf("數(shù)據(jù)庫執(zhí)行exe_sql連接成功!\n");
             27 
             28         /*這句話是設(shè)置查詢編碼為utf8,這樣支持中文*/
             29         mysql_query(&my_connection, "set names utf8");
             30 
             31         /*下面這句話就是用mysql_query函數(shù)來執(zhí)行我們剛剛傳入的sql語句,
             32         這會返回一個int值,如果為0,證明語句執(zhí)行成功*/
             33         res = mysql_query(&my_connection, sql);
             34 
             35         if (res) {/*現(xiàn)在就代表執(zhí)行失敗了*/
             36             printf("Error: mysql_query !\n");
             37             /*不要忘了關(guān)閉連接*/
             38             mysql_close(&my_connection);
             39         } else {/*現(xiàn)在就代表執(zhí)行成功了*/
             40             /*mysql_affected_rows會返回執(zhí)行sql后影響的行數(shù)*/
             41             printf("%d 行受到影響!\n\n", mysql_affected_rows(&my_connection));
             42             /*不要忘了關(guān)閉連接*/
             43             mysql_close(&my_connection);
             44         }
             45 
             46     } else {
             47         /*數(shù)據(jù)庫連接失敗*/
             48         printf("數(shù)據(jù)庫執(zhí)行exe_sql連接失敗!\n");
             49     }
             50 }
             51 
             52 /*這個函數(shù)用來執(zhí)行傳入的sql語句,并打印出查詢結(jié)果*/
             53 void query_sql(char* sql) {
             54     MYSQL my_connection; /*這是一個數(shù)據(jù)庫連接*/
             55     int res; /*執(zhí)行sql語句后的返回標(biāo)志*/
             56     MYSQL_RES *res_ptr; /*指向查詢結(jié)果的指針*/
             57     MYSQL_FIELD *field; /*字段結(jié)構(gòu)指針*/
             58     MYSQL_ROW result_row; /*按行返回的查詢信息*/
             59 
             60     int row, column; /*查詢返回的行數(shù)和列數(shù)*/
             61     int i, j; /*只是控制循環(huán)的兩個變量*/
             62 
             63     /*初始化mysql連接my_connection*/
             64     mysql_init(&my_connection);
             65 
             66     /*這里就是用了mysql.h里的一個函數(shù),用我們之前定義的那些宏建立mysql連接,并
             67     返回一個值,返回不為空證明連接是成功的*/
             68     if (mysql_real_connect(&my_connection, HOST, USERNAME, PASSWORD, DATABASE,
             69             0, NULL, CLIENT_FOUND_ROWS)) {/*Connection success*/
             70 
             71         printf("數(shù)據(jù)庫查詢query_sql連接成功!\n");
             72 
             73         /*這句話是設(shè)置查詢編碼為utf8,這樣支持中文*/
             74         mysql_query(&my_connection, "set names utf8");
             75 
             76         /*下面這句話就是用mysql_query函數(shù)來執(zhí)行我們剛剛傳入的sql語句,
             77         這會返回一個int值,如果為0,證明語句執(zhí)行成功*/
             78         res = mysql_query(&my_connection, sql);
             79 
             80         if (res) { /*現(xiàn)在就代表執(zhí)行失敗了*/
             81             printf("Error: mysql_query !\n");
             82             /*不要忘了關(guān)閉連接*/
             83             mysql_close(&my_connection);
             84         } else { /*現(xiàn)在就代表執(zhí)行成功了*/
             85             /*將查詢的結(jié)果給res_ptr*/
             86             res_ptr = mysql_store_result(&my_connection);
             87 
             88             /*如果結(jié)果不為空,就把結(jié)果print*/
             89             if (res_ptr) {
             90                 /*取得結(jié)果的行數(shù)和*/
             91                 column = mysql_num_fields(res_ptr);
             92                 row = mysql_num_rows(res_ptr) + 1;
             93                 printf("查詢到 %lu 行 \n", row);
             94 
             95                 /*輸出結(jié)果的字段名*/
             96                 for (i = 0; field = mysql_fetch_field(res_ptr); i++)
             97                     printf("%s\t", field->name);
             98                 printf("\n");
             99 
            100                 /*按行輸出結(jié)果*/
            101                 for (i = 1; i < row; i++) {
            102                     result_row = mysql_fetch_row(res_ptr);
            103                     for (j = 0; j < column; j++)
            104                         printf("%s\t", result_row[j]);
            105                     printf("\n");
            106                 }
            107 
            108             }
            109 
            110             /*不要忘了關(guān)閉連接*/
            111             mysql_close(&my_connection);
            112         }
            113     }
            114 }
            115 
            116 int main(int argc, char *argv[]) {
            117     /*測試下向里面插入數(shù)據(jù)*/
            118     char *exe = "insert into abitno values('ABitNo','http://ABitNo.LinPie.com');";
            119     exe_sql(exe);
            120 
            121     /*測試下查詢*/
            122     char *query = "select * from abitno;";
            123     query_sql(query);
            124 
            125     return 0;
            126 }

            轉(zhuǎn)載自:
            http://abitno.linpie.com/linux-c-connect-mysql.html

            posted @ 2009-05-23 21:05 xuejzt 閱讀(4617) | 評論 (1)編輯 收藏

            這部分內(nèi)容會隨著時間逐漸的積累,很多東西只要很用心,沒有辦不到的。

            archlinux下安裝firefox如下:
            $ sudo pacman -S firefox flashplugin gecko-mediaplayer
            gecko-mediaplayer is More stable combined with MPlayer 1.0RC2, A good replacement of the now aging mplayer-plugin.

            設(shè)置1. urlclassifier3.sqlite

            urlclassifier3.sqlite文件用于記錄Firefox從Google抓取的反釣魚網(wǎng)站和惡意站點數(shù)據(jù)的,但是這個文件大小在默認(rèn)情況下 會不斷地增長,會導(dǎo)致firefox啟動響應(yīng)很慢。

            通過設(shè)置"urlclassifier.updatecachemax"可以限制urlclassifier3.sqlite的大小.

            Linux版本下"urlclassifier.updatecachemax"默認(rèn)為104857600 (100 MB)。

            在地址欄輸入about:config,出現(xiàn)一個警告,點擊同意后進行高級設(shè)置。在過濾器中輸入上面字串,改它的值為20971520(20m)。刪除urlclassifier3.sqlite重新啟動Firefox就可以了。


            擴展列表:

            1. Vimperator

                Make firefox behave like vim.

            2. Adblock Plus

                Ads were yesterday!

            3. CacheView

                Allows searching and sorting cache files.

            4. Download Statusbar

                View and manage downloads from a tidy statusbar.

            5. DownloadHelper

                Download videos and images from many sites.

            6. Fission

                Safari style progress bar in the address bar.

            7. ColorfulTabs

                Colors every tab in a different color.

            8. Better Gmail 2

                Enhances Gmail.

            9. Gmail notifier

                A notifier for Gmail accounts.

            10. Better GCal

                Enhances Google Calendar.



            posted @ 2009-05-23 20:59 xuejzt 閱讀(399) | 評論 (0)編輯 收藏
            vimperator是firefox下面的一款插件,它可以將你的firefox變成vim,就感覺你在用vim。效果特別好。強烈推薦~~
            nomal模式下輸入:help就可以查看vimperator幫助
            小結(jié)如下:
               1. esc,當(dāng)快捷鍵無效時候大部分是因為切換到了命令模式,esc返回正常模式;
               2. tab,善用tab補全;
               3. o/t,當(dāng)前/新標(biāo)簽打開頁面;
               4. Shift+h/l,后退/前進,一般來說后退用的比較多;
               5. u,undo,撤銷關(guān)閉的標(biāo)簽;
               6. d,關(guān)閉當(dāng)前頁面;
               7. r/R,刷新/強制刷新當(dāng)前頁面;
               8. /,當(dāng)前頁面查找,回車后n標(biāo)記下一個關(guān)鍵字,N標(biāo)記上一個關(guān)鍵字;
               9. y/Y,復(fù)制當(dāng)前標(biāo)簽頁url/復(fù)制選中的文字;
              10. gg/gG,跳轉(zhuǎn)到頁面頂端/底端;
              11. p/P,粘帖并打開當(dāng)前剪貼板里的url地址,小寫當(dāng)前標(biāo)簽打開,大寫新標(biāo)簽打開;
              12. gf,查看頁面源代碼;
              13. f,進入QuickHint modo,用的不多;
              14. :pref,或者 :pr 加tab補全,打開Fx opinion對話框;
              15. :addons,擴展列表,同樣可以tab補全;
              16. :restart,重啟Fx;


            posted @ 2009-05-23 20:13 xuejzt 閱讀(392) | 評論 (0)編輯 收藏
            已經(jīng)大概有半年沒有登錄我的這個博客了,不是因為我懶,只是自己一直在徘徊。我一直在尋找一個可以讓我長久的留下來寫博客的地方,現(xiàn)在我回來了!!我現(xiàn)在有兩個博客,一個我想用來記錄我自己的生活,情感,感悟,以及對人生的一些看法及認(rèn)識,起名為“我就在這里”,現(xiàn)在我把這個地方選在了微軟的windows live里xuej's blog. 另外一個就是這個地方,我要用來記錄我在技術(shù)學(xué)習(xí)中的一些體會,還有一些總結(jié),以及看書的筆記。我很喜歡這個博客,沒有多少廣告,界面干凈整潔,代碼可以高亮顯示,常用的工具都列在了工具欄里很方便使用。
            馬上要論文答辯了,論文寫作還有個關(guān)鍵的環(huán)節(jié)就完成了,等答辯結(jié)束了,我就會回來。

            posted @ 2009-05-22 13:19 xuejzt 閱讀(229) | 評論 (0)編輯 收藏
            class Empty
            {
            public:
                Empty();                          
            // 缺省構(gòu)造函數(shù)
                Empty( const Empty& );            // 拷貝構(gòu)造函數(shù)
                ~Empty();                         // 析構(gòu)函數(shù)
                Empty& operator=const Empty& ); // 賦值運算符
                Empty* operator&();               // 取址運算符
                const Empty* operator&() const;   // 取址運算符 const
            };

            posted @ 2008-10-08 15:14 xuejzt 閱讀(1441) | 評論 (0)編輯 收藏
            #include <iostream>

            using namespace std;

            int main(int argc, char *argv[])
            {
                
            char str1[] = "abc";
                
            char str2[] = "abc";
                
            const char str3[] = "abc";
                
            const char str4[] = "abc";
                
            const char* str5 = "abc";
                
            const char* str6 = "abc";

                cout 
            << boolalpha << (str1 == str2) << endl;
                cout 
            << boolalpha << (str3 == str4) << endl;
                cout 
            << boolalpha << (str5 == str6) << endl;
                
            return 0;
            }

            分別輸出false,false,true。str1和str2都是字符數(shù)組,每個都有其自己的存儲區(qū),它們的值則是各存儲區(qū)首地址,不等;str3和 str4同上,只是按const語義,它們所指向的數(shù)據(jù)區(qū)不能修改。str5和str6并非數(shù)組而是字符指針,并不分配存儲區(qū),其后的“abc”以常量形 式存于靜態(tài)數(shù)據(jù)區(qū),而它們自己僅是指向該區(qū)首地址的指針,相等

            boolalpha 用符號形式表示真假。
            #include <iostream>
            using namespace std;

            int main(int argc, char *argv[])
            {
                
            float a = 1.0f;
                cout 
            << (int)a << endl;
                cout 
            << (int&)a << endl;
                cout 
            << boolalpha << ( (int)a == (int&)a ) << endl; // 輸出什么?
                float b = 0.0f;
                cout 
            << (int)b << endl;
                cout 
            << (int&)b << endl;
                cout 
            << boolalpha << ( (int)b == (int&)b ) << endl; // 輸出什么?
                return 0;
            }

            ...
            cout < < boolalpha < < ( (int)a == (int&)a ) < < endl;
            // 輸出 false, 因為 float 的 1 和 int 的 1 在內(nèi)存里的表示不一樣。
            ...
            cout < < boolalpha < < ( (int)b == (int&)b ) < < endl; // 輸出 true
            // 輸出 true, 因為 float 的 0 和 int 的 0 在內(nèi)存里的表示是一樣的。

            (int &)a 就表示 不管 a 是什么,我都當(dāng)他是一個int變量。
            從機器碼的角度來說,變量a會被翻譯成一個內(nèi)存地址,(int &)a 就是說,這個內(nèi)存地址里的內(nèi)容它是一個整數(shù)。

            (int)a 呢不同:如果 a 不是整數(shù),就會按規(guī)則轉(zhuǎn)換成整數(shù),存入另一個地址(或臨時變量)中去。

            浮點數(shù)的 1.0f 在內(nèi)存里是這樣表示的:
            0011 1111 1000 0000 00000000 00000000
            這個32位二進制數(shù)被當(dāng)作整數(shù)輸出就是:
            1065353216
            而整數(shù)的 1 在內(nèi)存里是這樣表示的:
            0000 0000 0000 0000 00000000 00000001

            所以 (int)a != (int&)a

            浮點的0和整數(shù)的0 在內(nèi)存里都是:
            0000 0000 0000 0000 00000000 00000000

            所以 (int)b == (int&)b

            posted @ 2008-10-08 14:56 xuejzt 閱讀(482) | 評論 (0)編輯 收藏

            簡介

            對于瀏覽源代碼來說,在 Emacs 里面也有很多工具可用,比如自帶的 etags 就 不錯,不過功能不如 Cscope 強大。 Cscope 并不像 etags 那樣屬于 Emacs , 它是一個獨立的程序。它是一個具有完全 Unix 血統(tǒng)的程序,用于幫助開發(fā)人員 瀏覽源代碼。它最初(那還是 PDP-11 的時代)是由 Bell 實驗室開發(fā),并且多年 以來一直是 AT&T Unix 商業(yè)發(fā)行版的一部分。它已經(jīng)被用于管理超過兩千萬行代 碼的工程。在2000年4月,多虧了 Santa Cruz Operation, Inc. (SCO) , Cscope 的源代碼在 BSD license 下開放了源代碼。

            Cscope 的發(fā)行包里面有個 xcscope.el 能很好地用于 (X)Emacs 。它處于源代 碼包的 contrib/xcscope 目錄下。該目錄下面還有一個名為 cscope-indexer 的腳本文件,用于處理源代碼并不是在一個文件夾下面的情況。

            安裝和配置

            首先到 Cscope 的主頁 上去下載最新的源代碼包,編譯安裝。要在 Emacs 里面 使用,首先必須把 xcscope.el 拷貝到 load-path 里面包含的目錄里面。并在 ~/.emacs 里面加上 (require 'xcscope) 就可以了,或者,如果你希望在打開 c 或者 c++ 文件的時候才加載 xcsope ,可以寫:

            (add-hook 'c-mode-common-hook
            '(lambda ()
            (require 'xcscope)))

            如果源代碼全部處于同一個目錄下面,現(xiàn)在就可以使用了。否則,如果源代碼有 多層目錄,或者其他地方還有附加的源代碼,則需要 cscope-indexer 腳本。把 那個腳本拷貝到系統(tǒng) PATH 里面去(如 /usr/bin/)。如果所有的源代碼以及子目 錄都是在同一個目錄下面的,只要執(zhí)行 C-c s I(cscope-index-files) 就可以 生成 Cscope 的數(shù)據(jù)庫,接下來就可以使用了。

            使用簡介

            默認(rèn)是的快捷鍵都是綁定到 C-c s 的前綴上面,如果嫌麻煩的話可以自己更改 快捷鍵綁定。這是默認(rèn)的用于查找的鍵綁定:

            C-c s s         Find symbol.
            C-c s d Find global definition.
            C-c s g Find global definition (alternate binding).
            C-c s G Find global definition without prompting.
            C-c s c Find functions calling a function.
            C-c s C Find called functions (list functions called
            from a function).
            C-c s t Find text string.
            C-c s e Find egrep pattern.
            C-c s f Find a file.
            C-c s i Find files #including a file.

            下面是在搜索到的結(jié)果之間切換用的快捷鍵:

            C-c s b         Display *cscope* buffer.
            C-c s B Auto display *cscope* buffer toggle.
            C-c s n Next symbol.
            C-c s N Next file.
            C-c s p Previous symbol.
            C-c s P Previous file.
            C-c s u Pop mark.

            更詳細(xì)的使用說明請參見 xcscope.el 文件頭部的注釋。

            轉(zhuǎn)載:http://pluskid.lifegoo.com/wiki/EmacsCscope.html

            posted @ 2008-10-04 16:37 xuejzt 閱讀(865) | 評論 (0)編輯 收藏
                 摘要: 正則表達式(regular expression)就是用一個“字符串”來描述一個特征,然后去驗證另一個“字符串”是否符合這個特征。比如表達式“ab+” 描述的特征是“一個 'a' 和 任意個 'b' ”,那么 'ab', 'abb', 'abbbbbbbbbb' 都符合這個特征。  閱讀全文
            posted @ 2008-10-04 15:45 xuejzt 閱讀(306) | 評論 (0)編輯 收藏
            /**
             * Accelerated C++ 筆記
            **/
            每一個標(biāo)準(zhǔn)容器,例如向量,都定義了兩種相關(guān)的迭代器類型:
            container-type::const_iterator
            container-type::iterator
            這里container-type是諸如vector<Student_info>這樣的容器類型。
            如果我們想用一個迭代起來修改存儲在容器中的值,就使用iterator類型;如果我們僅僅需要讀操作,那么就使用const_iterator類型。
            //索引方式
            for(vector<Student_info>::size_type i = 0; i != students.end(); ++i)
                cout 
            << students[i].name << endl;

            //迭代器
            for(vector<Student_info>::const_iterator iter = students.begin(); iter != students.end(); ++iter){
                cout 
            << (*iter).name << endl;
                
            //或者 cout << iter->name << endl;
            }
            //用迭代器代替索引:效率可能不高
            vector<Student_info> extract_fails(vector<Student_info>& students)
            {
                vector
            <Student_info> fail;
                vector
            <Student_info>::iterator iter = students.begin();

                
            while(iter != students.end()){
                    
            if(fgrade(*iter)){
                        fail.push_back(
            *iter);
                        iter 
            = students.erase(iter);
                    }
                    
            else
                        
            ++iter;
                }
                
            return fail;
            }


            posted @ 2008-10-04 15:13 xuejzt 閱讀(653) | 評論 (0)編輯 收藏
            僅列出標(biāo)題  下一頁

            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            常用鏈接

            留言簿(1)

            隨筆分類

            隨筆檔案

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            久久综合九色综合久99| 日产精品久久久久久久性色| 久久精品国产99久久丝袜| 精品久久久久成人码免费动漫| 久久久久久国产精品免费无码| 97超级碰碰碰碰久久久久| 久久妇女高潮几次MBA| 伊人丁香狠狠色综合久久| 国产美女亚洲精品久久久综合| 久久99国产综合精品女同| 日日狠狠久久偷偷色综合96蜜桃| 久久国产高潮流白浆免费观看| 久久久久久久国产免费看| 国产99精品久久| 久久人人爽人人爽人人片AV高清 | 99精品久久精品一区二区| 久久精品国产亚洲av瑜伽| 久久婷婷激情综合色综合俺也去| 欧美久久久久久午夜精品| 97久久综合精品久久久综合| 久久99精品国产麻豆宅宅| 久久久久久久久久久免费精品| 久久精品国产亚洲网站| 久久天天躁狠狠躁夜夜躁2O2O| 久久人妻AV中文字幕| 亚洲午夜久久久| 久久无码国产| 青青热久久国产久精品 | 亚洲v国产v天堂a无码久久| 一级做a爱片久久毛片| av无码久久久久久不卡网站 | 久久se精品一区二区| 蜜臀av性久久久久蜜臀aⅴ麻豆| 欧美久久久久久| 精品久久久久久无码不卡| 亚洲精品成人网久久久久久| 国产精品永久久久久久久久久| 亚洲嫩草影院久久精品| 99久久精品免费| 久久久久国产一区二区三区| 久久无码人妻精品一区二区三区 |