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

            colorful

            zc qq:1337220912

             

            vi / vim

            為什么這些死腦筋們在用 VI ?

            http://www.oschina.net/news/25882/why-they-are-using-vi?from=20120226
            看起來是個好文章,不過現在我還不適合看,記下來以后看

            手冊
            http://vimcdoc.sourceforge.net/doc/usr_01.html

            posted @ 2012-04-18 15:40 多彩人生 閱讀(265) | 評論 (0)編輯 收藏

            there are stopped jobs

            Dealing with Stopped Jobs
            Sometimes when you try to logout, you'll get a message saying there are "stopped jobs". These stopped jobs are programs or processes which have been suspended by a ^Z (Ctrl - Z) command. You have to either make the job active again, or get it running properly in the "background" before you can logout.

            Stopping a program is useful if you want to temporarily suspend working on one program so you can do something else.

            To see a list of stopped jobs, type:

            jobs

            You will see a list of the stopped programs. Here's an example showing a stopped "learn" session:

            [1] + Stopped learn


            You can kill this stopped job by typing:

            kill %1 (where %1 is the number of the job
            to be killed>


            Or you can make the program active again by typing:

            fg %1 (where %1 is the number of the job)


            fg stands for foreground. (You are bringing the program from suspended status back to the foreground.) Once brought back to the foreground, you can continue the program or quit in a normal manner.

            posted @ 2012-04-18 14:57 多彩人生 閱讀(547) | 評論 (0)編輯 收藏

            linux command

            查看當前路徑: pwd

            posted @ 2012-04-18 10:57 多彩人生 閱讀(270) | 評論 (0)編輯 收藏

            fcitx

            輸入法切換用ctrl+shift

            Ubuntu自帶的輸入法不太盡如人意思,用起來也不方便,我在Ubuntu和FC中都是用Fcitx,很好用!

            安裝配置如下:

            1. 安裝 fcitx

              sudo apt-get install fcitx

             

            2. 配置默認輸入法為 fcitx

              im-switch -s fcitx  // 注意無須加 sudo


            3. 重啟 x-window

              重啟之后,fcitx 輸入法應當正常啟動,輸入條將顯示在屏幕最上面,不過輸入框中文顯示可能是 “口口”,需要小小的改動。

             

            4. 修改配置文件

              gedit ~/.fcitx/config

              //如果沒有配置gedit 支持GB18030編碼,打開后文件會是亂碼(此處針對9.10前版本,9.10無需配置已支持)

              修改如下幾項:

              顯示字體(中)=YaHei Consolas Hybrid   //主要是看你的OpenOffice中有什么字體,加進來就行

              Enter鍵行為=1 # =1表示回車時清除輸入框中輸入的內容,隨個人喜好設置

              上一頁=, # 使用 , . 翻頁,隨個人喜好設置

              下一頁=.

              [輸入法]

              使用拼音=0

              拼音名稱=智能拼音

              使用雙拼=0

              雙拼名稱=智能雙拼

              默認雙拼方案=自然碼

              使用區位=0

              區位名稱=區位

              使用碼表=1

              提示詞庫中的詞組=1

              其他輸入法=

            5. 修改碼表文件

              sudo gedit /usr/share/fcitx/data/tables.conf

              由于五筆拼音已經完全夠用,其它輸入法就沒必要出現了,文件中只需留下如下內容,其它配置段可以清除或注釋掉。

              [碼表]

              名稱=五筆拼音

              碼表=wbpy.mb

              調頻=2

              拼音=1

              拼音鍵=z

              自動上屏=-1

              空碼自動上屏=-1
              自動詞組=1
              精確匹配=0
              提示編碼=0
            6、重啟 x-window
              重啟 x-window 之后,小企鵝輸入法中文顯示將完全正常,且只有“五筆拼音”,免去了在多個輸入法中來回切換的麻煩。

             

            Note: Restart 后小企鵝面板不是最上面,我們也以用[Ctrl+Alt+h]來把它調上來。

            posted @ 2012-04-17 20:12 多彩人生 閱讀(791) | 評論 (0)編輯 收藏

            ubuntu gcc g++ make

            sudo apt-get install make gcc g++
            再裝上函數手冊
            sudo apt-get install manpages-dev

            另一方法:
            sudo apt-get install build-essential
            執行完后,完成了gcc,g++,make的安裝。
            build-essential 是一整套工具,gcc,libc等等

            函數手冊的使用:
            是的,比如man scanf。
            偶爾會有同名的,比如printf就有兩個,一個在腳本下用,一個在c里面用,可以用
            代碼:
            man -a printf

            這樣會顯示出第一個,按q退出后接著顯示第二個。
            當然,如果你知道你要查的幫助屬于哪一類的話也可以直接加類別號,如:
            代碼:
            man 1 printf
            man 3 printf

            第一個顯示的就是腳本下用的printf,第二個顯示的是c的。
            編譯運行:
            安裝好后必要的工具后,運行
            代碼:
            gcc xxx.c

            運行編譯好的程序,用
            代碼:
            ./xxx.out

            gcc有很多參數,可以看看
            代碼:
            gcc --help


            代碼:
            man gcc
            或:
            $chmod +x a.out
            $./a.out


            用gcc的話加-lstdc++參數

            posted @ 2012-04-17 20:10 多彩人生 閱讀(1618) | 評論 (0)編輯 收藏

            extern c

            時常在cpp的代碼之中看到這樣的代碼:

            #ifdef __cplusplus
            extern "C" {
            #endif

            //一段代碼

            #ifdef __cplusplus
            }
            #endif

              這樣的代碼到底是什么意思呢?首先,__cplusplus是cpp中的自定義宏,那么定義了這個宏的話表示這是一段cpp的代碼,也就是說,上面的代碼的含義是:如果這是一段cpp的代碼,那么加入extern "C"{和}處理其中的代碼。

              要明白為何使用extern "C",還得從cpp中對函數的重載處理開始說起。在c++中,為了支持重載機制,在編譯生成的匯編碼中,要對函數的名字進行一些處理,加入比如函數的返 回類型等等.而在C中,只是簡單的函數名字而已,不會加入其他的信息.也就是說:C++和C對產生的函數名字的處理是不一樣的.

              比如下面的一段簡單的函數,我們看看加入和不加入extern "C"產生的匯編代碼都有哪些變化:

            int f(void)
            {
            return 1;
            }

              在加入extern "C"的時候產生的匯編代碼是:

            .file "test.cxx"
            .text
            .align 2
            .globl _f
            .def _f; .scl 2; .type 32; .endef
            _f:
            pushl %ebp
            movl %esp, %ebp
            movl $1, %eax
            popl %ebp
            ret

              但是不加入了extern "C"之后

            .file "test.cxx"
            .text
            .align 2
            .globl __Z1fv
            .def __Z1fv; .scl 2; .type 32; .endef
            __Z1fv:
            pushl %ebp
            movl %esp, %ebp
            movl $1, %eax
            popl %ebp
            ret

              兩段匯編代碼同樣都是使用gcc -S命令產生的,所有的地方都是一樣的,唯獨是產生的函數名,一個是_f,一個是__Z1fv。

              明白了加入與不加入extern "C"之后對函數名稱產生的影響,我們繼續我們的討論:為什么需要使用extern "C"呢?C++之父在設計C++之時,考慮到當時已經存在了大量的C代碼,為了支持原來的C代碼和已經寫好C庫,需要在C++中盡可能的支持C,而 extern "C"就是其中的一個策略。

              試想這樣的情況:一個庫文件已經用C寫好了而且運行得很良好,這個時候我們需要使用這個庫文件,但是我們需要使用C++來寫這個新的代碼。如果這個代 碼使用的是C++的方式鏈接這個C庫文件的話,那么就會出現鏈接錯誤.我們來看一段代碼:首先,我們使用C的處理方式來寫一個函數,也就是說假設這個函數 當時是用C寫成的:

            //f1.c
            extern "C"
            {
            void f1()
            {
            return;
            }
            }

              編譯命令是:gcc -c f1.c -o f1.o 產生了一個叫f1.o的庫文件。再寫一段代碼調用這個f1函數:

            // test.cxx
            //這個extern表示f1函數在別的地方定義,這樣可以通過
            //編譯,但是鏈接的時候還是需要
            //鏈接上原來的庫文件.
            extern void f1();

            int main()
            {
            f1();

            return 0;
            }

              通過gcc -c test.cxx -o test.o 產生一個叫test.o的文件。然后,我們使用gcc test.o f1.o來鏈接兩個文件,可是出錯了,錯誤的提示是:

            test.o(.text + 0x1f):test.cxx: undefine reference to 'f1()'
              也就是說,在編譯test.cxx的時候編譯器是使用C++的方式來處理f1()函數的,但是實際上鏈接的庫文件卻是用C的方式來處理函數的,所以就會出現鏈接過不去的錯誤:因為鏈接器找不到函數。

              因此,為了在C++代碼中調用用C寫成的庫文件,就需要用extern "C"來告訴編譯器:這是一個用C寫成的庫文件,請用C的方式來鏈接它們。

              比如,現在我們有了一個C庫文件,它的頭文件是f.h,產生的lib文件是f.lib,那么我們如果要在C++中使用這個庫文件,我們需要這樣寫:

            extern "C"
            {
            #include "f.h"
            }

              回到上面的問題,如果要改正鏈接錯誤,我們需要這樣子改寫test.cxx:

            extern "C"
            {
            extern void f1();
            }

            int main()
            {
            f1();

            return 0;
            }

              重新編譯并且鏈接就可以過去了.

              總結


              C和C++對函數的處理方式是不同的.extern "C"是使C++能夠調用C寫作的庫文件的一個手段,如果要對編譯器提示使用C的方式來處理函數的話,那么就要使用extern "C"來說明

            posted @ 2012-04-17 19:12 多彩人生 閱讀(235) | 評論 (0)編輯 收藏

            string

            stl string 里沒有format
            可用 stringstream   來格式化你要的東西。

            http://www.cnblogs.com/lzjsky/archive/2011/01/04/1925538.html

            輸入輸出的頭文件 <iostream>
            string流的頭文件 <sstream>
            文件流的頭文件   <fstream>

            stringstream的用法

            1.利用輸入輸出做數據轉換

            stringstream ss_stream;
            ss_stream << i; // 將int輸入流中
            ss_stream >> str; // 將ss_stream中的數值輸出到str中

            //注意:如果做多次數據轉換;必須調用clear()來設置轉換模式
            ss_stream << "456";
            ss_stream >> i; // 首先將字符串轉換為int
            ss_stream.clear();
            ss_stream << true;
            ss_stream >> i; // 然后將bool型轉換為int;假如之前沒有做clear,那么i會出錯

            //運行clear的結果
            i = 456
            i = 1
            //沒有運行clear的結果
            i = 456
            i = 8800090900

             

             

            2.支持char*的輸入和輸出

            char sz_buf[20];
            ss_stream << 8888;
            ss_stream >> sz_buf; // 直接將數輸出到sz_buf字符數組中

             

            3.來存儲可變數據的列表

            stringstream ss_stream;
            ss_stream << "字符串一" << endl;
            ss_stream << "字符串二" << endl;
            ss_stream << "字符串三" << endl;
            ss_stream << "字符串四" << endl;
            ss_stream << "字符串五" << endl;

            char buffer[100];
            while ( ss_stream.getline(buffer, sizeof(buffer))
            {
            printf("msg=%s\n", buffer);
            }
            ss_stream("");// 釋放字符串流中的資源

            // 或者用string來接收
            stringstream ss_stream;
            string stemp;
            while ( getline(ss_stream, stemp) )
            {
            task_download(stemp.c_str(), relate.c_str());
            }

            posted @ 2012-04-16 17:14 多彩人生 閱讀(165) | 評論 (0)編輯 收藏

            time

            函數簡介
             函數名: time
            頭文件:time.h
            函數原型:time_t time(time_t * timer)
            功 能: [1]獲取當前的系統時間,返回的結果是一個time_t類型,其實就是一個大整數,其值表示從UTC(Coordinated Universal Time)時間1970年1月1日00:00:00(稱為UNIX系統的Epoch時間)
            到當前時刻的秒數。然后調用localtime將time_t所表示的UTC時間轉換為本地時間(我們是+8區,比UTC多8個小時)并轉成struct tm類型,該類型的各數據成員分別表示年月日時分秒。
            補充說明:time函數的原型也可以理解為 long time(long *tloc),
            因為在time.h這個頭文件中time_t實際上就是:
             #ifndef _TIME_T_DEFINED
            typedef long time_t; /* time value */
            #define _TIME_T_DEFINED /* avoid multiple def's of time_t */
            #endif
            即long。
            函數應用舉例
            程序例1: time函數獲得日歷時間。日歷時間,是用“從一個標準時間點到此時的時間經過的秒數”來表示的時間。
            這個標準時間點對不同的編譯器來說會有所不同,但對一個編譯系統來說,
            這個標準時間點是不變的,該編譯系統中的時間對應的日歷時間都通過該標準時間點來衡量,所以可以說日歷時間是“相對時間”,
            但是無論你在哪一個時區,在同一時刻對同一個標準時間點來說,日歷時間都是一樣的。
            #include <time.h>
            #include <stdio.h>
            #include <dos.h>
             int main(void)
            {
             time_t t;
            t = time(NULL);
            printf("The number of seconds since January 1, 1970 is %ld",t);
             return 0;
            }
            程序例2:
             //time函數也常用于隨機數的生成,用日歷時間作為種子。
            #include <stdio.h>
             #include <time.h>
             #include<stdlib.h>
             int main(void)
            {
             int i;
             srand((unsigned) time(NULL));
             printf("ten random numbers from 0 to 99\n\n");
             for(i=0;i<10;i++)
             {
             printf("%d\n",rand()%100);
             }
             return 0;
            }
            程序例3:
            用time()函數結合其他函數(如:localtime、gmtime、asctime、ctime)可以獲得當前系統時間或是標準時間。
            #include <stdio.h>
             #include <stddef.h>
             #include <time.h>
             int main(void)
            {
             time_t timer;//time_t就是long int 類型
            struct tm *tblock;
            timer = time(NULL);//這一句也可以改成time(&timer);
            tblock = localtime(&timer);
            printf("Local time is: %s\n",asctime(tblock));
             return 0;
             }

            posted @ 2012-04-15 23:45 多彩人生 閱讀(243) | 評論 (0)編輯 收藏

            vmware

            Failed to initialize remote display subsystem【VMware】
            錯誤:
            啟動虛擬機后彈出“Failed to initialize remote display subsystem”錯誤提示,點擊確定后虛擬機中的操作系統關閉,無論如何也無法啟動。

            原因:
            虛擬機在安裝時自動添加了一個“__vmware_user__”帳戶,不小心刪掉這個帳戶后虛擬機中的操作系統就會啟動失敗。

            解決:
            進入DOS命令窗口,輸入“net user __vmware_user__  /add”命令添加這個虛擬機帳戶即可。

            posted @ 2012-04-13 19:37 多彩人生 閱讀(271) | 評論 (0)編輯 收藏

            shared_ptr

            //null-pointer-with-boostshared-ptr
            http://stackoverflow.com/questions/621220/null-pointer-with-boostshared-ptr

            shared_from_this 幾個值得注意的地方
            http://www.cnblogs.com/lzjsky/archive/2011/09/09/2172469.html

            posted @ 2012-04-07 15:45 多彩人生 閱讀(209) | 評論 (0)編輯 收藏

            僅列出標題
            共25頁: First 17 18 19 20 21 22 23 24 25 

            導航

            統計

            常用鏈接

            留言簿(3)

            隨筆分類

            隨筆檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            香蕉久久一区二区不卡无毒影院| 日产精品久久久一区二区| 国产成人精品三上悠亚久久| 久久久久久精品免费免费自慰| 久久综合精品国产二区无码| 久久超乳爆乳中文字幕| 91久久九九无码成人网站| 久久久久久亚洲精品不卡| 一本一本久久A久久综合精品 | 国内精品伊人久久久久影院对白| 久久天天躁夜夜躁狠狠| 久久久久久a亚洲欧洲aⅴ| 久久久久国产精品人妻| 久久最新精品国产| 亚洲AV无一区二区三区久久| 亚洲精品国产第一综合99久久| 999久久久无码国产精品| 偷窥少妇久久久久久久久| 开心久久婷婷综合中文字幕| 久久精品国产国产精品四凭| 精品蜜臀久久久久99网站| 日韩久久久久久中文人妻| 久久免费大片| 久久精品国产黑森林| 国产精品久久亚洲不卡动漫| 欧美噜噜久久久XXX| 国产精品久久久久免费a∨| 国产精品成人99久久久久| 久久久久婷婷| 狠狠色综合久久久久尤物| 99久久精品影院老鸭窝| www.久久热.com| 东京热TOKYO综合久久精品| 午夜精品久久久久久毛片| 亚洲中文久久精品无码ww16| 伊人久久久AV老熟妇色| 亚洲伊人久久大香线蕉综合图片| 久久久久亚洲AV无码专区首JN| 一本久久精品一区二区| 老色鬼久久亚洲AV综合| 久久综合给久久狠狠97色|