Intel處理器的結構–多核編程學習筆記1

單核處理器電腦系統框圖:以前的晶片集由兩塊晶片構成,稱為南橋和北橋,二者之間通過PCI互連。後來Intel用MCH(Memory Controller Hub)替換了北橋,用ICH(I/O Controller Hub)替換了南橋,二者之間用DMI(Direct Media Interface)串連。此外,主處理器與晶片集通過FSB(Front Side Bus)串連。處理器的功能模組圖以及指令在處理器內的基本執行步驟圖:根據處理器核的不同,Intel公司的處理器可分為兩種基本類型:l 

小心stringstream使用時的一個陷阱

前幾天在偵錯工具時發現一個bug,和對stringstream的不當使用有關,代碼如下:char number = 0;std::stringstream str_number;str_number << number;.....這段代碼的目標是把一個8位整數轉換成一個字串,但實際上不能達到這個效果。如果在轉換後加入列印資訊:std::cout << "the number is " << str_number.str() <<

《演算法導論》讀後感

終於讀完了這本厚書,雖然讀了後面忘了前面,但讀下來還是有點成就感的,而且我從中學到了好多東西。這本書又被稱作CLRS,是由四位作者名字的首字母組成。我學習這本書純屬偶然,去年和一個同事交流技術時,他向我推薦這本書,於是一時心血來潮,從網上買了一本,但是看到它的厚度,以及裡面所描述的內容,確實有一種令人望而生畏的感覺,感覺還不知道何年何月才能把這本書看完。還好,今年上半年因為比較空,因此得以抽出很多時間學習這本書,整體感覺整本書寫得相當的嚴謹,涉及到了廣泛的數學知識。書中的所有的演算法都可以用數學

TDD實踐小結

所謂TDD,就是測試驅動開發。近期看了一些如何寫代碼的書,包括《修改代碼的藝術》,《代碼整潔之道》等,這些書都提到了TDD。我記得幾年以前在書店就開始看到關於極限編程的書,也偶爾聽到測試驅動開發的概念。大體的思想就是在實現一個功能時,先寫測試案例,再寫代碼,然後讓代碼

冒泡排序演算法分析——《演算法導論》學習筆記

BUBBLESORT(A)1 for i ← 1 to length[A]2     do for j ← length[A] downto i + 13            do if A[j] < A[j - 1]4                  then exchange A[j] A[j - 1] 1        

證明:在一棵有n個結點的二叉尋找樹中,剛好有n-1種可能的旋轉

用數學歸納法證明:首先對n=1時,對於二叉尋找樹,只有一個結點,也就是根結點,這時無法旋轉,因此有0(n-1)種可能的旋轉,命題成立。假設對於n=k(k>1)時,對於二叉尋找樹,有k-1種可能的旋轉。那麼對於n=k+1時,也就是我們在原來的二叉尋找樹中添加了一個結點,這個結點最終一定是二叉尋找樹的一個葉結點,其父結點一定存在(k>1),這個葉結點可能是其父結點的左子結點,也可能是其父結點的右子結點。如果是左子結點,那麼相對於原二叉尋找樹,增加了一個右旋操作;如果是右子結點,那麼增加了

證明:在RB-DELETE中,如果y是紅色的,則當y被刪除後,紅黑性質得以保持

在RB-DELETE中,當y是黑色時,會調用RB-DELETE-FIXUP函數對紅/黑樹狀結構的顏色進行調整,這意味著,如果y是紅色的,就不需要進行調整,下面來證明這個命題的正確性。 首先,紅/黑樹狀結構的性質1)和3)顯然滿足,對於性質2)、4)和5)分為3種情況來討論。 對於情況1),刪除的結點z的子結點只有黑色哨兵結點,這種情況下,y=z,刪除y不會對紅/黑樹狀結構的黑高度造成影響,y是紅色,也不可能是根,也不可能造成出現兩個紅色結點相鄰,因此,性質2)、4)和5)都滿足。 對於情況2),

ACE中的條件變數學習心得

ACE的線程同步的方法之一是使用條件變數,我原來對條件變數不大理解,主要原因是Windows 作業系統下並沒有直接與之對應的核心對象,而且條件變數需要和Mutex共同使用, 這個讓人一下子摸不著頭腦。經過反覆測試,又查看了ACE的原始碼, 我終於理解條件變數為什麼總是與Mutex混合使用了。 像以下這段範例程式碼: intHA_CommandHandler::svc (void){  ACE_DEBUG ((LM_DEBUG,              ACE_TEXT ("(%t)

二項樹和二項堆(Binomial Heaps)

二項樹Bk是一種遞迴定義的有序樹。二項樹B0隻包含一個結點。二項樹Bk由兩個子樹Bk-1串連而成:其中一棵樹的根是另一棵樹的根的最左孩子。二項樹Bk具有以下性質:1)共有2的k次方個結點;2)樹的高度為k;3)在深度i處恰有(上k,下i)(因此叫二項樹)個結點,其中i=0,...,k;4)根的度數為k,它大於任何其他結點的度數,並且,如果對根的子女從左至右編號為k-1,k-2,...,0,子女i是子樹Bi的根。證明:略,請參考《演算法導論》第十九章。 二項堆H由一組二項樹構成,但需要滿足下面兩個

《ACE程式員指南》中領導者與跟隨者模式範例程式碼中的bug和解決方案

《ACE程式員指南》中線程池一章中提到了兩個模式: 半同步半非同步模式和領導者和跟隨者模式,對於後者 書中給出了一個樣本程式,為了方便說明,我把範例程式碼貼在這裡: #include "ace/config-lite.h"#if defined (ACE_HAS_THREADS)#include "ace/OS_NS_string.h"#include "ace/OS_NS_sys_time.h"#include "ace/Task.h"#include

Pictrue Control和TreeCtrl的拖動

Pictrue Control實際上就是CStatic,它的動態建立過程如下:m_Static.Create(_T(""), WS_VISIBLE|WS_CHILD|SS_BITMAP|SS_CENTERIMAGE, CRect(200,200,300,300), this);HBITMAP hBitMap = ::LoadBitmap(AfxGetInstanceHandle(),

建構函式初始化列表和函數內部賦值的區別

轉自:http://www.cnblogs.com/BlueTzar/articles/1223169.html建構函式初始化列表以一個冒號開始,接著是以逗號分隔的資料成員列表,每個資料成員後面跟一個放在括弧中的初始化式。例如:class CExample {public:    int a;    float b;    //建構函式初始化列表    CExample(): a(0),b(8.8)    {}    //建構函式內部賦值    CExample()    {        a=

一些常用的字元轉換

最近做FTP相關的東西,遇到各種轉換:1.utf-8與unicode的轉換:Unicode是定長,而utf-8是變長。轉換原理: U-00000000 - U-0000007F: 0xxxxxxx  //以0開頭的為ASCII碼(<=0x7f))        U-00000080 - U-000007FF: 110xxxxx 10xxxxxx //開頭兩個“1”,表示有兩個位元組(16個二進位位),        U-00000800 - U-0000FFFF: 1110xxxx

證明:如果作用於一動態表上的第i個操作是TABLE-DELETE,且αi-1 ≥ 1/2,則以勢函數(17.6)表示的每個操作的平攤代價由一個常數從上方限界

這是《演算法導論》(原書第二版)中第17章的一個習題(17.4-2)。分成三種情況討論:1)αi≥ 1/2這時表並沒有進行擴張或收縮,只是表中的項數少了1平攤代價^Ci=ci+Φi-Φi-1 =1 + (2 · numi - sizei) - (2 · numi-1 - sizei-1)= 1-2 =-12)  1/4<=αi < 1/2這時表並沒有進行擴張或收縮,除了表中的項數少了1,^Ci =ci+Φi-Φi-1 =1 + (sizei /2 - numi) - (2 ·

B樹的定義

 A B-tree T is a rooted tree (whose root is root[T]) having the following properties:1.  Every node x has the following fields:a.  n[x], the number of keys currently stored in node x,b.  the n[x] keys themselves, stored in nondecreasing order, so

自寫PNGButton類,實現透明按鈕

主要通過GDIPlus的Image類來載入圖片資源,使之支援bmp以外的圖片。GDIPlus的初始化方式網上都是用的如下方法:1、在stdafx.h中添加以下聲明://引入GDI+標頭檔 #include <GdiPlus.h> using namespace Gdiplus;#pragma comment(lib, "gdiplus.lib"

ACE_Timer_Queue學習心得

今天學習ACE的定時器,有個地方開始怎麼都不理解,現在終於搞清楚了, 現在總結一下: 1)ACE_Timer_Queue的gettimeofday函數,返回的是一個絕對時間值,它可以是當前的絕對時間,也可以不是。 2) ACE_Timer_Queue的calculate_timeout  (  ACE_Time_Value *  max   )

試找出被9,8,7除時,餘數分別為1,2,3的所有整數x。

《演算法導論》練習31.5-2x ≡ 1 (mod 9)x ≡ 2 (mod 8)x ≡ 3 (mod 7) 根據中國餘數定理,n=504a1 = 1, n1 = 9,m1 = 56,56-1≡ 5 (mod 9)a2 = 2, n2 = 8,m2 = 63,63-1≡ 7 (mod 8)a3 = 3, n3 = 7,m2 = 72,72-1≡ 4 (mod 7)c1 = 56(5 mod 9) = 280c2 = 63(7 mod 8) = 441c3 = 72(4 mod 7) = 288 

《ACE程式員指南》讀後感

我從去年開始學習ACE,當時從同事那裡借了這本《ACE程式員指南》,最開始看到這本書時,有點輕視的心態,在我印象中好像叫什麼什麼指南之類的書都是屬於比較簡單的入門書,所以大概翻了翻,就擱置不看了。今年年初,為了研究使用ACE進行多線程編程,我打算研究這本書中的幾個例子,在仔細閱讀相關章節後,我覺得這本書的內容非常豐富,值得仔細研究,最開始看書時,不知道有配套的源碼,閱讀支離破碎的程式片段,理解並不深刻,不過幸運的是,不久以後我在ACE發布的原始碼中,找到了這本書的配套程式,感覺就像發現了一個大寶

小心ACE_OS::fopen的一個陷阱

今天用ACE_OS::fopen函數遇到一個很隱形問題,我用ACE讀一個二進位檔案,然後把內容寫到另外一個檔案中,和原來的內容不一樣了,0A前面加了個0D。後來研究了ACE的原始碼,才把這個問題搞清楚,ACE_OS::fopen實際上封裝的是c函數庫的fopen函數,我寫二進位檔案,調用函數的代碼如下:ACE_OS::fopen(sFileName.c_str(),"at+");t表示文字格式設定的檔案,a+表示Opens for reading and appending; the

總頁數: 61357 1 .... 17804 17805 17806 17807 17808 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.