一幅映像,背景為黑色。其中有一個白色物體,其邊緣連續。現在要求出其外邊緣,即與黑色背景相交的部分,組成邊緣線,並且由單個像素組成。思想:首先找到位於映像最上方的那個白色點。然後從這個白色點(當前點)開始搜尋下一個相鄰的位於邊緣上的點。並且定義當前起始搜尋方向為方向1(一).搜尋的方式為:從當前方向開始,按順時針依次檢查每個方向上的相鄰點(8連通域),看是否為白色點。如果是,則其為下一個邊緣點。在8個方向搜尋完畢之前,一定能夠搜尋到下一個邊緣點,因為映像邊緣是連續的。接著,把當前點定義為剛剛搜尋到
ngx_http_request_s是nginx中非常重要的一個結構體,貫穿於htpp請求處理的整個過程中。下面解釋了ngx_http_request_s結構體中與HTTP架構相關的重要的成員變數。struct ngx_http_request_s { uint32_t signature; /* "HTTP" */ //請求對應的用戶端串連 ngx_connection_t
驚群問題(thundering
以前都是用Cg的,現在改用GLSL,又要重新學,不過兩種語言很多都是相通的。下面的例子是實現繪製一個三角形的簡單程式。採用了VBO(veretx buffer object)、VAO(vertex array
本文介紹的負載平衡是針對的用戶端請求在多個Nginx進程之間的均衡。注意與用戶端請求在多個後端伺服器之間的均衡相區別。負載平衡問題的產生在nginx中,建立串連的時候,會設計負載平衡問題。在多個子進程爭搶處理一個新串連事件時,一定只有一個worker子進程最終會成功建立串連,隨後它會一直處理這個串連直到串連關閉。那麼,就有可能出現這樣的情況:有的子進程建立並處理了大部分串連,而有的子進程只處理了少量串連。這對多核CPU架構下的應用是很不利的。因為子進程之間應該是平等的,每個子進程應該盡量獨佔一個
GL_TRIANGLE_STRIP繪製三角形方式很多時候令人疑惑,在這裡對其運作機理進行解釋。一般情況下有三種繪製一系列三角形的方式,分別是GL_TRIANGLES、GL_TRIANGLE_STRIP和GL_TRIANGLE_FAN。如所示:GL_TRIANGLES是以每三個頂點繪製一個三角形。第一個三角形使用頂點v0,v1,v2,第二個使用v3,v4,v5,以此類推。如果頂點的個數n不是3的倍數,那麼最後的1個或者2個頂點會被忽略。GL_TRIANGLE_STRIP則稍微有點複雜。其規律是:構
UIImagePickerController是我們最常用的組件之一,用它可以實現照相,選圖片的功能。但是在照像的時候,如果後台開有很多應用,經常會出現crash的情況,是因為照出來的相片像素太高,一般是4M左右,照一張就會有4M記憶體佔用,於是經常會出現memory warning, 然後系統回收記憶體,就使我們的應用crash。解決方案就是,在UIImagePickerControllerDelegate方法中啟用一個線程來crop我們照出來的image,如下:view plaincopy
Nginx事件管理主要是網路事件和定時器事件。下面介紹定時器事件管理,即逾時管理。為什麼要進行逾時管理Nginx有必要對可能發生逾時的事件進行統一管理,並在事件逾時時作出相應的處理,比如回收資源,返回錯誤等。舉例來說,當用戶端對nginx發出請求串連後,nginx機會accept()並建立對應的連線物件、讀取額護短請求的頭部資訊。而讀取這個頭部資訊顯然是要在一定的時間內完成的。如果在一個有限的時間內沒有讀取到頭部資訊或者讀取讀取的頭部資訊不完整,那麼nginx就無法進行正常處理,並且認為這是一個
單鏈表是筆試以及面試手寫代碼中常考的資料結構之一。下面實現了單鏈表的常見操作:建立單鏈表、刪除節點、列印單鏈表(包括正向列印以及逆向列印)、反轉單鏈表、找出單鏈表的倒數第K個節點、合并兩個有序單鏈表等操作。代碼(C++)://筆試面試單鏈表常用操作編程實現#include <iostream>#include <stack>#include <cstdlib>using namespace std;//單鏈表節點資料結構定義typedef struct
影像處理課程上老師布置的任務,要求求出圖片rice.png中米粒的個數及其各米粒的大小。rice.png:大體步驟是:首先進行邊緣檢測,然後進行填充。然後進行開運算,可以使一些輕微連著的米粒分開來。然後是遍曆圖片,把各米粒進行標號,從1開始從小到大標號。每個米粒的各像素點值相同,第i個米粒的各像素點值均為i。其中採用了隊列,用數組類比。最大的米粒標號便是米粒的總個數。最後,遍曆一遍映像數組,便可求出各米粒的面積。參考代碼(matlab實現):clear;close all;I =
在視圖模型變換中,頂點v的變換是按照相反的順序發生的,而不是按照它的代碼中先後順序出現的。下面舉例說明。考慮下面的代碼:glMatrixMode(GL_MODELVIEW);glLoadIdentity();glMultMatrixf(N);glMultMatrixf(M);glMultMatrixf(L);glBegin(GL_POINTS);glVertex3dv(v);glEnd();在這段代碼中,模型視圖矩陣按順序分別包含I、N、NM,最後是NML,其中I表示單位矩陣。經過變化的頂點是N
體繪製中的傳輸函數除了pre-classification和post-classification以外,另外一種是pre-integrated transfer
本文結合實際代碼介紹事件驅動模組介面與epoll用法是如何結合起來發揮作用的。Nginx中ngx_epoll_module模組基於epoll實現了Nginx的事件驅動。模組定義(src/event/ngx_epoll_module.c):ngx_module_t ngx_epoll_module = { NGX_MODULE_V1, &ngx_epoll_module_ctx, /* module context */ ngx_epoll_
建立工程的時候,如果是基於windows的,就有選擇支援coreData,其它的project temple則沒有支援coreData選項。如果項目進行到一半,需要加如coreData的支援如何辦呢?
題目:http://acm.hdu.edu.cn/showproblem.php?pid=3788 代碼:#include<stdio.h>#include<string.h>#include<stdlib.h>int main(){ char s[1001]; int len,cnt,flag1,flag2,flag3,i; while(gets(s)!=NULL){ len=strlen(s); cnt=0
題目:http://acm.hdu.edu.cn/showproblem.php?pid=3791 先建立二叉排序樹,然後進行比較。比較時採用遞迴。代碼:#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct node{//樹節點資料結構定義; int data; struct node *left,*right;}*BiTree,BTNode;void
ASIHTTPRequest,是一個直接在CFNetwork上做的開源項目,提供了一個比官方更方便更強大的HTTP網路傳輸的封裝。特色功能如下:1,下載的資料直接儲存到記憶體或檔案系統裡2,提供直接提交(HTTP POST)檔案的API3,可以直接存取與修改HTTP請求與響應HEADER4,輕鬆擷取上傳與下載的進度資訊5,非同步請求與隊列,自動管理上傳與下載隊列管理機6,認證與授權的支援7,Cookie8,請求與響應的GZIP9,代理請求下面來兩個小例子:NSURL *url = [NSURL
長條圖均衡化的英文名稱是Histogram Equalization.
本文的測試環境:Win7+虛擬機器VMWareVMware-workstation-full-7.1.4-385536+Ubuntu12.04Nginx-1.4.0要想有效研究Nginx源碼,必須要動手調試,GDB就是有用的利器。下面簡要介紹用GDB調試Nginx的一個小例子。本文完成了這樣的工作:跟蹤worker子進程,觀察worker子進程阻塞在何處。然後利用wget向nginx發送一個訊息,觀察整個訊息處理過程。關於GDB調試Nginx,有一篇博文講的很不錯,可以參考下:利用GDB調試Ng
轉載自:http://www.minroad.com/?p=419void audioRouteChangeListenerCallback (void *inUserData,AudioSessionPropertyID inID,UInt32 inDataSize,const void *inData){UInt32 propertySize = sizeof(CFStringRef);AudioSessionInitialize(NULL, NULL, NULL,