上一篇文章介紹了我的黑莓開發環境, 有了環境,那就得試一試。就像有了槍,總想著支打一槍。還是寫個helloworld來熟悉一下開發環境。點擊案頭上的BlackBerry Java Plug-in 1.3.0, 啟動開發環境。建立一個BlackBerry Project, 然後next,來到:project Name:HelloWorld, 然後點擊Finish.這樣工程目錄如下:MyApp.java是應用程式執行個體類,MyScreen.java是介面類,要顯示
上一節主要講解主進程如何開啟子進程,並且講解了主進程做的一些操作,這一節主要學習子進程處理函數ngx_worker_process_cyclesrc/os/unix/ngx_process_cycle.cstatic voidngx_worker_process_cycle(ngx_cycle_t *cycle, void *data){ ngx_uint_t i; ngx_connection_t *c;
static ngx_int_tngx_epoll_add_event(ngx_event_t *ev, ngx_int_t event, ngx_uint_t flags){ int op; uint32_t events, prev; ngx_event_t *e; ngx_connection_t *c; struct epoll_event ee; c =
今天在我的一個Qt程式中新添加了一個功能表項目和對應的signal和slot之後,編譯運行發現出現這樣的錯誤:Object::connect No Such
從man手冊中,得到ET和LT的具體描述如下EPOLL事件有兩種模型:Edge Triggered (ET)Level Triggered (LT)假如有這樣一個例子:1. 我們已經把一個用來從管道中讀取資料的檔案控制代碼(RFD)添加到epoll描述符2. 這個時候從管道的另一端被寫入了2KB的資料3. 調用epoll_wait(2),並且它會返回RFD,說明它已經準備好讀取操作4. 然後我們讀取了1KB的資料5. 調用epoll_wait(2)......Edge Triggered
Per-vertex渲染技術是針對每個頂點進行渲染計算,然後把計算得到的顏色值和這個頂點關聯起來。然後在多邊形的面上進行顏色插值以後的平滑的渲染效果。這也叫做Gouraud Shading。在早起的OpenGL版本中,它是預設的渲染技術。有的時候我們需要達到遮掩過一種效果:一個多邊形上只有一種顏色,而不是有這種插值方法得到的凹凸貼圖。這個時候的渲染就叫做Flat Shading。下面的圖顯示兩種渲染效果的對比:Gouraud ShadingFlat
關於nginx裡面accept互斥鎖的處理,群裡討論了很多次,很多人都提出了各種問題,比如問到:在ngx_process_events_and_timers中,為什麼在釋放ngx_accept_mutex之後,不把ngx_accept_mutex_held清零?if (ngx_accept_mutex_held) { ngx_shmtx_unlock(&ngx_accept_mutex); /* 有人說應該加上ngx_accept_mutex_held = 0;
今天在寫這樣一個程式,就是匯入一個OBJ模型然後顯示出來的時候,遇到了一個問題。我在程式中開啟了多重採樣,在螢幕上顯示出來的效果確實有消除鋸齒。但是當我用FBO離屏渲染,然後儲存為BMP映像的時候,發現儲存出來的BMP映像並沒有消除鋸齒效果。問題產生原因及解決方案:在預設幀緩衝中啟用多重採樣並不會導致FBO裡也會啟用多重採樣。因此要在FBO裡達到多重採樣的效果,必須建立適用多重採樣的FBO,而不是普通的FBO。關於FBO介紹及使用可參考:FBO下面分別介紹多重採樣消除鋸齒以及怎樣在FBO中使用這
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1. 輸入形式為:A[空格或換行]O[空格或換行]B;//// 2. 1中A、B為大數,O為運算子(如輸入:123456789 / 432432);//// 3. 既然處理大數,就沒必要輸入小數點位了;////
最近有個bug實在讓人抓狂,僅僅是由於一個簡單的類型強轉導致的,這裡給大家講講。這是pwrite系統調用的介面說明,我們關注最後一個參數:ssize_t pwrite(int fd, const void *buf, size_t count, off_t offset);我們有個介面實現是:int storage_write_meta_info(int fd, void *data, int unit){ ... off_t offset; int
堆排序引入了另外一種演算法設計技術:利用某種資料結構(在此演算法中為“堆”)來管理演算法執行中的資訊。一、堆堆簡介我們通常使用的堆的二元堆積,它是一種數組對象,可以被視為一棵完全二叉樹。樹中的每個節點與數組中的節點相對應。如所示:表示堆的數組通常由兩個屬性:數組中元素的個數length[A],存放在A中的堆的元素的個數heap-size[A]。也就是說存放在A中的一些元素可能不屬於對應的堆。因此:heap-size[A] <=
一、紋理投影映射簡介投影紋理映射用於映射一個紋理到物體上,好比將投影片投影到牆上一樣。投影紋理映射經常在一些陰影演算法以及體繪製(Volume Rendering)演算法中用到。嚴格的說,只要涉及到“紋理即時和空間頂點對應”,通常都要用到投影紋理映射技術。下面是一個紋理投影映射的執行個體:圖一 紋理投影映射二、紋理投影映射優點1、將紋理與空間頂點即時對應,不需要預先在建模軟體中產生紋理座標。2、使用投影映射時,可以有效避免紋理扭曲現象。下面圖顯示了投影紋理映射和普通紋理貼圖的效果對比:圖二
在二十一節中,提到過調用ngx_eventfind_timer()擷取timer,然後傳遞給epoll模組,做等待時間,今天我們主要講解下這個方法。本文來自於:http://blog.csdn.net/lengzijiannginx中的timer用紅/黑樹狀結構的結構排序。ngx_event_timer_rbtree就是nginx中timer的紅/黑樹狀結構。1.下面我們來看一下ngx_event_timer_rbtree的結構:src/core/ngx_rbtree.htypedef
設A[1...n]是一個包含n個不同數的數組。如果在i<j的情況下,有A[i]>A[j],則(i,j)就成為A中的一個逆序對(inversion)。要確定一個數組中的逆序對的個數,可以採取分治法。將A分為兩部分A1和A2,則A中逆序對的數目等於A1中逆序對的數目、A2中逆序對的數目和A1,A2合并時A1中比A2中元素大的數目。參考代碼:#include <iostream>using namespace std;#define MAX_VALUE
通過在群裡大家的討論,我總結了兩點問題,很多初學者都問過:1. ngixn事件處理中關於active和ready的問題2. ngx_connection_t與ngx_http_connection_t結構的區別與聯絡這裡分開討論下。1. ngixn事件處理中關於active和ready的問題 這倆成員何時為0,何時又被置1,把很多人搞迷糊了。其實從nginx的設計上來講,它想表達的語義很明確:
在GLSL中,subroutine是這樣一種機制:它根據某個變數的值把一個函數調用和一個函數定義集合中的某一個函數定義綁定起來。在很多方面它和C語言中的函數指標類似。一個全域變數充當指標,用來調用函數。可以在OpenGL中設定這個變數的值,這樣可以把它和多個函數定義中的一個綁定起來。subroutine中的函數定義不一定要同名,但是必須要有同等數量和相同類型的參數以及相同的傳回型別Subroutines提供了在運行時刻不用切換著色器或者是重新編譯或者是使用if判斷就能選擇不同實現功能的方法。例如
自旋鎖簡介Nginx架構使用了三種訊息傳遞方式:共用記憶體、通訊端、訊號。Nginx主要使用了三種同步方式:原子操作、訊號量、檔案鎖。基於原子操作,nginx實現了一個自旋鎖。自旋鎖是一種非睡眠鎖。如果某進程視圖獲得自旋鎖,當發現鎖已經被其他進程獲得時,那麼不會使得當前進程進入睡眠狀態,而是始終保持進程在可執行狀態,每當核心調度到這個進程執行時就持續檢查是否可以擷取到所鎖。自旋鎖的應用情境自旋鎖主要是為多處理器作業系統而設定的,他要解決的共用資源保護情境就是進程使用鎖的時間非常短(如果鎖的使用時
本菜鳥人:專業導航,善於尋北,精通慣導,兼職GPS,然近日因課題之需,方究機器之視覺也,乃歎人生之無常兮!慣導今天不講,講的話可以說上6天7夜(貌似被拍成電影了)。今天主題是GPS,GPS導航俗稱:狗屁式導航(太TM俗了,老美怎麼想出個這麼個名字啊,God forgive me!)。正題開始:近日買了個GPS接受機跑了跑,甚喜。不知何時可用上本土的北鬥啊。第一日:石市天陰細雨,驚為江南之梅雨,連線開機,心如脫兔,目視終端(OK6410開發板,及配套的GPS模組),亂碼!my
一、優秀的模組化設計(1)高度抽象的模組介面所有的模組都遵循著同樣的ngx_module_t介面設計規範。(2)模組介面簡單,靈活性高模組的基本介面ngx_module_t足夠簡單,只涉及模組的初始化、退出以及對配置項的處理,這同時帶來了足夠的靈活性,是的nginx比較簡單的實現了動態可修改性,也就是保持服務正常運行下使得系統功能發生改變。102 struct ngx_module_s {103 ngx_uint_t
上一節,我們主要講了多進程時,主進程如何利用訊號量控制子進程的,這一節我們主要講解下子進程的啟動,和執行的操作。 上一節講過,真正建立worker子進程的函數是ngx_start_worker_processes,這個函數本身很簡單:src/os/unix/ngx_process_cycle.cstatic voidngx_start_worker_processes(ngx_cycle_t *cycle, ngx_int_t n, ngx_int_t type){ ngx_int_t