原创 《More Effective C++》 Item M1:指針與引用的區別

C++中指針與引用的區別主要體現在兩點:引用不可以指向空值、引用總是指向初始化時指定的對象。 1、因此,當你使用一個變量並讓它指向一個對象,但是該對象有時可能也不指向任何對象時,應該把該變量聲明爲指針;相反如果變量肯定指向一個對象,不允許

原创 《More Effective C++》 Item M2:儘量使用C++風格的類型轉換

c++有四種類型轉換:static_cast、const_cast、dynamic_cast、reinterpret_cast。 1.static_cast<type>(expression) static_cast在功能上基本上與C風格

原创 OSG updateTraversal(更新遍歷)

OSG 的更新遍歷函數updateTraversal 在系統每幀的執行過程中有着重要的地位,除了 處理用戶的更新回調對象之外,還要負責更新攝像機的位置,並且更新分頁數據庫 DatabasePager 和圖像庫ImagePager 的內容。

原创 OSG Note

1. osg::NodePath 在include/osg/Node中定義, /** A vector of Nodes pointers which is used to describe the path from a root no

原创 句柄與指針

句柄是一個32位的整數,實際上是一個Windows在內存中維護的一個對象(窗口等)內存物理地址列表的整數索引。因爲Windows的內存管理經常會將當前空閒的對象的內存釋放掉,當需要時再重新提交到物理內存,所以對象的物理地址是變化的,不允許

原创 MPICH Demo測試__兩主機進行通信出現的問題及解決方案

最近利用VM虛擬機搭建MPICH2 + windows的並行環境,開始入門MPI 編程。運行MPI自帶的CPI.exe沒有問題,根據教程寫了一個兩主機進行數據發送和接受的Demo時運行出錯,代碼如下: #include "mpi.h"

原创 MPICH2 Windows 多節點並行計算Demo

剛剛接觸MPICH,入手寫了一個計算A * B(A 矩陣,B 向量)的測試程序,以熟悉MPICH。 程序以主從模式進行設計,主節點負責分發計算任務到不同的計算節點,然後接收從計算節點發送來的計算結果。 應用OpenThread線程庫,在主

原创 OSG 視景器、漫遊器、攝像機與場景的關係

視景器包括幾個最主要的組件:漫遊器_cameraManipulator,用於實現交互式的場景漫 遊;事件處理器組_eventHandlers,負責處理視景器的事件隊列_eventQueue,主要是鍵盤/ 鼠標等事件的處理;場景_sc

原创 CUDA線程模型

 線程格: 由 gridDim.x 個線程塊組成 線程塊: 由 blockDim.x 個線程組成 下面線程格就是由 4 個線程塊組成,其中每個線程塊有4個線程。 定位某個線程的方法: threadIdx.x 表示該線程於所在線程

原创 CUDA二維網格模型下線程索引的計算

 用於線程索引計算的CUDA運行時庫提供的變量 gridDim.x —— 線程網格X維度上線程塊的數量 gridDim.y —— 線程網格Y維度上線程塊的數量 blockDim.x  —— 一個線程塊X維度上的線程數量 blockD

原创 結合Java反射用簡單工廠模式改進抽象工廠模式

前一篇簡單介紹了抽象工廠模式,結合Java的反射機制,可以用簡單工廠模式來改進抽象工廠模式,減少類的數量,增加可維護性。UML圖如下: 去除IFactory、SqlserverFactory和AccessFactory三個工廠類,取而

原创 OSG更新回調(UpdateCallback)與事件回調(EventCallback)的相似之處和不同之處

相似之處: (1)由專門的訪問器對象 _updateVisitor負責場景圖形的更新遍歷 (2)所有的節點和Drawable幾何體對象都可以調用setUpdateCallback設置回調 (3)通過實現NodeCallback::oper

原创 OSG更新遍歷(updateTraversal)流程

OSG 的更新遍歷函數updateTraversal 在系統每幀的執行過程中有着重要的地位,除了 處理用戶的更新回調對象之外,還要負責更新攝像機的位置,並且更新分頁數據庫 DatabasePager 和圖像庫ImagePager 的內容。

原创 B-Tree 、B+樹、B*樹

大規模數據存儲中,實現索引查詢這樣一個實際背景下,樹節點存儲的元素數量是有限的(如果元素數量非常多的話,查找就退化成節點內部的線性查找了),這樣導致二叉查找樹結構由於樹的深度過大而造成磁盤I/O讀寫過於頻繁,進而導致查詢效率低下。 1. 

原创 三線性插值計算重採樣點數值

三線性插值是一種較爲經典的計算重採樣點數值的方法,它將距離重採樣點最近8個頂點的權重Wi(i=0,1,2…7)分別計算出來,在進行相加後得到重採樣點值。 如圖所示:假設立方體8個頂點上的數值分別爲Pi(i=0,1,2…7),三個座