原创 對map和hash_map的一點總結

    map內部實現是依據紅黑樹的,查詢的時間複雜度爲log(n)。hash_map的內部實現是哈希表,查詢的時間複雜度爲n(1)。hash可以看成用空間複雜度換取了時間複雜度。     在hash_map中,每個key都對應於一個桶,

原创 對程序員面試題目的重要總結

    在面試題目中經常要讓我們從一個數字序列中找出我們想要的一些信息,針對這樣的題目,本人有如下重要總結,希望幫助大家:     1.如果要處理的數字序列是一個無序的數列,那麼儘量往快速排序上靠,用快速排序的思想解決此類問題。    

原创 讀stl源碼解析的感悟(2)

    在stl實現的過程中allocate()函數負責內存的分配(注意只是分配內存,並不對內存做初始化操作實)deallocate()函數用來釋放內存(實際上最底層是通過operator delete實現的)     內存配置好後的對象

原创 結合數據挖掘分類談談對信息熵的理解

     信息是個很抽象的概念。人們常常說信息很多,或者信息較少,但卻很難說清楚信息到底有多少。比如一本五十萬字的中文書到底有多少信息量。直到1948年,香農提出了“信息熵”的概念,才解決了對信息的量化度量問題。    公式爲:H(x)=

原创 數據挖掘中的劃分聚類簡介(k均值和k中心點)

     k均值方法介紹:          從中任意選擇k個對象作爲簇的中心      repeat         根據均值,將每個對象劃分到最相似的簇         更新簇均值,計算每個簇對象的均值     until 不再發生變

原创 linux編程中對死鎖的一點感想

    死鎖是由於一系列線程競爭一些列資源產生的永久阻塞。導致死鎖的有兩種情況:    1.自死鎖(往往被忽略)     一個線程在擁有某個資源的情況下又試圖申請對該資源的使用,陷入到自死鎖。    2.另外一種情況是線程1用於資源A,線

原创 在網絡編程的時候使用非阻塞的connect

  對於面向連接的socket類型(SOCK_STREAM,SOCK_SEQPACKET)在讀寫數據之前必須建立連接,首先服務器端socket必須在一個客戶端知道的地址進行監聽,也就是創建socket之後必須調用bind綁定到一個指定的地

原创 關於tcp協議斷開連接以及在socket編程時候連接的一些理解

    要釋放一個TCP連接,需要通過四次握手過程,這是由TCP的半關閉特性造成的,因爲TCP連接時全雙工的,因此,需要TCP兩端要單獨執行關閉。值得注意的是,主動關閉的一端在發送FIN之後,依然還能正常接收對方的數據,只是通知對方它已經

原创 不用循環,遞歸,if,switch語句編寫從1+2+.....n的結果的程序

      #include<iostream> using namespace std; class sun {  static int sum;  static int n; public:  sun()  {   n++;   su

原创 隨機數範圍擴展方法總結 .

  題目: 已知有個rand7()的函數,返回1到7隨機自然數,讓利用這個rand7()構造rand10() 隨機1~10。 分析:要保證rand10()在整數1-10的均勻分佈,可以構造一個1-10*n的均勻分佈的隨機整數區間(n爲任何

原创 讀stl源碼之後對list容器的一點感想

     list容器是以鏈表的方式實現的,並且是一個循環鏈表,也就是通過任何一個節點可以遍歷完全list。      鏈表的節點由三部分組成爲一個next指針指向下一個節點(當做++操作的時候,直接可以通過next就可以到達下一個節點)

原创 判斷兩個鏈表是否相交

解題思路:首先分別判斷兩個鏈表是否存在環。                    (1)如果兩個鏈表都不存在環,則直接比較兩個鏈表的表尾節點是否相等即可,如果相等,則相交,否則不想交。                    (2)如果一個

原创 等概率隨機函數的實現 .

題目:已知隨機函數rand(),以p的概率產生0,以1-p的概率產生1,現在要求設計一個新的隨機函數newRand(), 使其以1/n的等概率產生1~n之間的任意一個數。解決思路:可以通過已知隨機函數rand()產生等概率產生0和1的新隨

原创 靜態鏈接與動態鏈接

      靜態鏈接是由連接器在鏈接時將庫的內容加入到可執行程序中的做法,全部內容都放到同一個可執行文件中。       靜態鏈接使得不同的程序開發者和部門能夠相對獨立地開發和測試自己的程序模塊,從某種意義上來講大大促進了程序的開發效率,

原创 gcc/g++基本命令簡介

gcc & g++現在是gnu中最主要和最流行的c & c++編譯器 。 g++是c++的命令,以.cpp爲主,對於c語言後綴名一般爲.c。這時候命令換做gcc即可。其實是無關緊要的。 其實編譯器是根據gcc還是g++來確定是按照C標準還