Tor源碼檔案分析 — Control

傳統上我們所指的系統訊號,就是系統傳遞給進程的控制訊號。例如,SIGINT,SIGTERM等等。這些訊號的傳遞,通常都是指示相關進程完成相應的操作,或暫停或終止,或其他一些操作。在Tor系統中,訊號分為兩種:傳統訊號,控制器訊號。下面程式碼片段是這些訊號的簡單羅列:/* These signals are defined to help handle_control_signal work. */#ifndef SIGHUP#define SIGHUP 1#endif#ifndef

通過我買西瓜霜來看面板模式(vb.net實現)

前幾天嗓子不舒服,去校醫院買藥。到校醫院,看挂號那沒開門(裡面有人的),就直接到取藥的地方去拿藥。誰知人家就是不給拿。無奈之下只好去挂號那,A說明要來一盒西瓜霜,然後又跑過去拿藥,我給錢人家說不行,這邊不管收費,B到收費室去吧。(汗~),只好又去收費室,把錢給了,C然後又拿著蓋好章的藥單過去,這才拿到藥。我想虧著我不是急診,要是急診也這麼著,還真得把人給急死。下面用圖形來描述整件事:然後再通過vb.net再講故事講一遍:Module FacadeDemo2 Sub Main()

Tor源碼檔案分析 — Log

  日誌模組是Tor系統中一個非常重要的組件。它將Tor系統中的所有事件,分成不同的嚴重層級,分成不同的系統域,進行統一的Tlog。同時它還維護著一個日誌記錄鏈表。日誌記錄鏈表記憶體儲的是所有日誌需要輸出的目標記錄檔或目標日誌輸出位置。下文中我們會詳細地對日誌模組進行分析,並簡要說明源檔案中的各函數的簡單作用。1. 嚴重等級和域  日誌模組內定義了5個嚴重等級,其具體的設定如下:/** Debug-level severity: for hyper-verbose messages of no

通過商場促銷來看策略模式+vb.net實現

商場經常在節日期間做出不同的促銷計劃,因此商場的計費機制要不停地變動,因此在設計時應該考慮使用原則模式策略模式(Strategy),策略模式定義了演算法家族,分別封裝起來,讓它們之間可以相互替換,此模式讓演算法的變化,不會影響到使用演算法的客戶。通過UML圖來說事:其中CashContext算是一個簡單工廠吧。現在有些理解簡單工廠了,其實並不是一個設計模式,只是多態的使用而已(個人理解,歡迎指正)。下面看看用vb.net如何?:(實現的和《大話》上寫的不太一樣,我覺得這樣寫更方便一些)Publi

從我出門來看裝飾模式+vb.net實現

說有天有人來找,要出去。倒持了半天。完畢,然後出門。開始還得先看圖:這個的具體實現可以自己實驗一下。後來又去參加一個什麼晚會,要求戴墨鏡(帶上之後發現天真黑。)上面的那個圖顯然不能用了,再改吧,把抽象的person類改了?no no no。開閉原則不允許我這麼做。為了能夠刷一把帥,只有這樣了,看圖:這樣就好了。又不用違法,又為以後再添加別的裝飾物開闢了空間。哈哈,很好呀。那麼好了,開始具體行動吧: Module Module1 Sub Main() Dim hu As

Tor源碼檔案分析 — Connection_OR

  作為連線類型中最重要的一種串連,OR串連對OP與OR之間,OR與OR之間的通訊負全責。也就是說,OR串連的存在,是解決底層兩機之間通訊的必要條件。所以,有必要對OR串連的源碼檔案進行深入分析,並對OR串連先做簡要介紹。後期,在介紹Tor系統的全部串連之時,會更加詳細地介紹各種串連及他們的作用。  OR串連,即Onion

Tor源碼分析十 — 串連和鏈路

  源碼分析到這個部分,為了讓大家明白源碼中的編碼邏輯,不得不開始從頭梳理程式內部的複雜串連和連結組織形式。否則大家後期會更加一頭霧水。筆者開始分析源碼之時,沒有這些宏觀的概念,只能死嚼代碼,硬猜硬想,再加以檢查代碼進行驗證,才得以明白程式的主要架構邏輯。如果再以猜測驗證的模式向大家講述源碼,必定會越來越混亂。所以,在本節之中,我們會將系統中所有的連線類型,鏈路類型和他們之間的關係和代碼之中的關聯方式盡量講明。若大家遇到不明晰的部分,可以參照代碼進行查閱。  在我們進行詳細分析之前,先再次給出串

從買硬碟來看建造者模式+vb.net實現

最近打算去買塊移動硬碟,買品牌的還是組裝的呢?因為不是很富裕,也沒有那麼高的要求,就買個組裝的吧。便宜些。最近還是在看設計模式,覺得建造者模式和面板模式差不多。於是仔細的比較一番,下面就虛擬用建造者實現買硬碟的過程。先看圖:再來看一個具體的實現:Module Module1 Sub Main() Console.WriteLine("老闆,我來個硬碟,要組裝的。") Dim D As New Director D.GiveHD()

Tor源碼檔案分析 — Connetion_Edge

  所謂的Edge串連主要是形容在鏈路兩端所使用的串連,包括AP串連與EXIT串連兩種。Edge串連的存在,主要是為了個應用程式串連提供服務,所以才將兩種Edge串連命名為Application Proxy應用代理串連和EXIT出口串連。這兩種串連主要出現於鏈路兩端,即鏈路第一跳與鏈路最後一跳,分別用於接受應用請求和處理應用請求的發出。因為Edge串連在Tor系統中也具有重要的作用,所以本篇就簡單分析關於Edge串連的源碼檔案connection_edge.c。  因為Edge串連位於鏈路兩端,

Tor源碼分析十一 — 用戶端執行流程(網路資訊的下載續)

  通過上一節中我們對串連和鏈路的重新描述,我們可以繼續進行源碼的分析了。在本節中,我們會開始著重講述鏈路的建立,以及鏈路所基於的OR串連的建立,同時還有部分Libevent調度的再度分析。大家會明白,進行到此處之時,我們已經開始接觸Tor系統最底層,最深藏著的串連機制以及調度機制。這個部分,是整個系統的精髓。後期幾乎所有的應用請求串連處理等,都是重複地使用該部分的代碼。1. 鏈路建立以及OR串連的開始,circuit_establish_circuit  我們在此處重新分析下鏈路建立的函數:/

用回撥卡打電話來看代理模式+vb.net實現

/* Style Definitions */ table.MsoNormalTable{mso-style-name:普通表格;mso-tstyle-rowband-size:0;mso-tstyle-colband-size:0;mso-style-noshow:yes;mso-style-priority:99;mso-style-qformat:yes;mso-style-parent:"";mso-padding-alt:0cm 5.4pt 0cm

Tor源碼檔案分析 — Circuits全域變數

  Tor系統源碼中用於控制鏈路circuit的檔案主要有三個,分別是:circuitlist.c,circuituse.c,circuitbuild.c。這三個檔案分別主要針對的處理功能與他們的名字相類似,即分別處理鏈路的組織,使用和建立。在本篇中,我們只介紹主要用於鏈路部分的全域變數,即存在於這三個檔案之中的全域變數的使用。此處不再羅列鏈路函數,因為鏈路部分的函數著實不少,尤其是鏈路建立部分。或許在本文之後會花專門的篇幅描述鏈路建立以及對鏈路建立的函數加以說明,不過這不是本篇的主要內容。0.

通過sql語句修改表的主鍵和外鍵

首先建立兩個表,用來測試,代碼如下: sqlcreate table test(tt varchar(50) not nullprimary key (tt))create table myTest(aa varchar(40) not null,bb varchar(50) not null,cc varchar(50) not null,constraint PK_myTest primary key (aa),constraint fk_myTest foreign key (bb)

Tor源碼分析六 — 總體架構圖

1. 用戶端的總體框圖  由於畫框圖的過程稍微繁瑣,所以框圖給出的稍慢了些,請大家見諒。同時,框圖畫的比較急促,一定會有錯誤的地方,請大家指正。  框圖中給出了用戶端Tor系統所使用到的最重要的結構體以及其成員變數,有興趣的朋友可以自行比對,這裡就不便多說了。2. 伺服器端的總體框圖(2合1)  伺服器端的框圖將兩種身份的伺服器所使用到的主要結構體均畫了出來。也就是說該框圖中展現伺服器的兩種功能:Relay OR,EXIT OR.3. 一些額外的說明

多表統計相同欄位用 UNION就行——你能想到的人家都想到了

       線上考試系統,因為把表設計成按照課程和題型來劃分,因為我要統計出來這個課程下的所有的試題難度,按照規定是從1~6,每個表中可能存在不同的難度,因此需要多表統計,剛開始覺得sql語句就可以解決這個問題。然後就開始想,試圖找到一種方法來完成這個目的,但是以我掌握的sql語句來說,是找不到解決辦法的(汗~~,sql學的不好呀,趕緊惡補)       用我已有的知識解決不了,那麼只用再次搜尋了,找了篇sql經典語句大全,看了一下,心想應該有進階的文法可以完成此功能。果不其然,找到了

vb.net 中通過反射實現簡單原廠模式

      前天看了一個設計模式視頻,是用Java實現簡單原廠模式,要是用if……else來判斷的話,改到.net下也是很好實現的,但是在Java裡面用到了反射的機制,這樣就省去了工廠內部或是用戶端內對要生產東西的判斷。直接根據傳進來的參數既可以完成生產。下面我給出我做的例子,先給出一般的通過if ……else來判斷的:Imports System.ReflectionImports System.ComponentModelModule SimpleFactory Sub Main()

Tor源碼分析七 — 握手協議

  本節主要講述Tor系統中所用到的握手協議。握手協議分三層:TCP握手;TLS握手;Tor握手。其中Tor握手又分為三個層次:OR握手;鏈路建立;流建立。  TCP的三向交握我想應該學電腦方向的朋友無人不知了,所以此處就略去。而TLS是SSL的升級版本,其握手過程與SSLv3幾乎一致。同時由於TLS根據用戶端的不同握手選擇,會有些許握手過程中的差別,我們希望大家能夠找到TLS相關的書籍翻閱。此處就不再過多的敘述TLS的握手過程。  本文的重心著眼於描述Tor握手全過程,更甚者是描述整個Tor協

從簡單原廠模式看MVC

上次米老師把我叫過去,問了一通MVC的東西,在確定我真的是不知道之後,決定讓李坤師哥給我們來不上這麼一課——很重要的一課——對於UML以及應用。想了幾天關於mvc的東東,再加上上次米老師給我說的,我現在用一個例子來說明一下。就是簡單原廠模式——這也是米老師當時給我講的。類的關係圖是這樣的: 從這個圖中應該很容易看得出其中各個模組之間的關係,對比一下M-V-C圖: 其中SimpleFactory就是控制器,通過這個工廠來控制視圖和模型之間的關係。下面給出模型模組:

Tor源碼檔案分析 — Hibernation

  本篇會介紹Tor系統的休眠模組。休眠模組的代碼處於源檔案Hibernation.c之中。簡單的說,其主要作用就是在適當的時機將系統進入休眠狀態以保護系統資源被過度消耗;或者在適當的時機重新喚醒系統以達到重新為全域服務的目的。在預設的系統配置下,用戶端的休眠模組是被關閉的,也就是說用戶端永遠不會進入休眠態。而Tor系統中的工作路由伺服器則並非如此。他們很多時候需要設定一些為網路服務的策略和頻寬,那麼他們就需要對自己為Tor系統做出的貢獻做一定的限制。單純從流量角度來說,或許有一些OR伺服器不願

VB.net+Factory 方法模式+思考

同上一個簡單原廠模式一樣,都是那計算機來說事,先看UML圖。在用戶端(form1)中,通過對工廠子類的實現來操作具體的計算類。Factory Method:定義一個用於建立對象的介面,讓子類決定執行個體化哪一個類。Factory

總頁數: 61357 1 .... 20070 20071 20072 20073 20074 .... 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.