關於remoteing的啟用

2021-04-02 08:43:49 字數 1830 閱讀 2862

當乙個remoteing例項被建立了以後,他什麼時候開始為我們工作呢,甚麼時候又從記憶體中消失的呢,我們能夠很明確的知道這些嗎,我們可以隨心所欲的控制他嗎?這些問題就是今天所要說的啟用。

啟用分為伺服器啟用(知名wellknonw)和客戶端啟用。伺服器啟用分為單調用物件(singlecall)和單元素物件(singleton)。

還是先看乙個單元素啟用的例子。

根據上次的例子我們只要做少許修改就可以了。

先在dll物件裡面加乙個計數器,通過這個計算器我們可以了解到例項的變化。

using system;

namespace remoteobject

public string str()

public int count()

} }

然後客戶端加乙個呼叫這個計數器的過程。

using system;

namespace remoteclient}}

其他伺服器端沒有變化。

我們執行1次伺服器端的程式,不要關掉,然後我們開乙個客戶端,上面顯示的是1,再開乙個客戶端,上面顯示的是2,再開,又顯示是3,依此類推,數字越來越多,只要伺服器不關,這個數字就在不斷增加。

在做乙個單調用的例子。

這次就在以上的**的基礎上。把伺服器的配置檔案做少許修改。

然後做以上相同的試驗:我們執行1次伺服器端的程式,不要關掉,然後我們開乙個客戶端,上面顯示的是1,再開乙個客戶端,上面顯示的是1,再開,又顯示是1,依此類推,只要伺服器不關,這個數字就永遠顯示1。很多朋友就會在這裡混淆了,因為從試驗看起來似乎單元素物件在不斷增加,而單調用物件才是永遠不變。其實不然。

先看看msdn裡面怎麼解釋:「singleton 物件是這樣的物件:無論該物件有多少個客戶端,總是只有乙個例項,且該物件具有預設的生存期。(客戶端可以使用生存期租約系統來參與 singleton 例項的生存期。有關詳細資訊,請參見生存期租約。)當您將物件配置為 singlecall 物件時,系統將為每個客戶端方法呼叫建立乙個新物件。由於客戶端將在每次呼叫時獲取對新例項的引用,因此 singlecall 型別不會參與生存期租約系統。」

其實以前見過一本書,對於這兩種做了乙個很清晰的解釋,這樣說:「singlecall是單調用物件,每次呼叫都被例項化(會有多個例項),並且最後會被無用單元收集器銷毀。singleton 是單元素物件,只是在第一次呼叫的時候例項化,然後留在那裡直到最後乙個客戶把他釋放」。

清楚了伺服器的啟用,再來看看客戶端啟用。

為了知道客戶端啟用和伺服器啟用的不同點,我們配合兩者做乙個試驗。

遠端物件修改如下:

using system;

namespace remoteobject

public int add(int a,int b)

客戶端程式:

using system;

(typeof(remoteobject.myobject),null,new object{new

system.runtime.remoting.activation.urlattribute

執行程式可以看到,在客戶端啟動的時候服務端就輸出了「啟用」,我們再轉回知名模式進行測試發現只有執行了方法才會在服務端輸出「啟用」。

小結:客戶端啟用類似於單調用物件,每次啟用都會有乙個新的例項產生,客戶端和伺服器端啟用的區別在於:伺服器端啟用要在第一次呼叫了客戶端方法的時候,被啟用,同樣也就是dll在伺服器和容器(伺服器程式)裡面被註冊和申請空間,而客戶端啟用的話,在客戶端發出請求的時候就被例項化(註冊和申請空間)。

(感謝lovecherry的blog,我的文章裡面加入了一些自己的理解和思考,如果大家想看到純淨版的remoting請看http://www.cnblogs.com/lovecherry。不敢掠人之美。)

關於啟用函式

優缺點 1.sigmoid 優點 取值範圍為 0,1 適合用於二分類模型,例如邏輯回歸 lr 缺點 啟用函式計算量大,反向傳播求誤差梯度時,求導涉及除法 反向傳播時,很容易就會出現梯度消失的情況 當z很大時,梯度變化很小 從而無法完成深層網路的訓練 2.tanh 優點 因為tanh取值範圍為 1,1...

關於啟用函式的問題

1 sigmoid函式 優點 一是輸出在 0,1 之間,單調連續,輸出範圍有限。二是容易求導。缺點 一是容易產生梯度消失,導致訓練困難。二是其輸出不是以0為中心。三是要進行指數運算,速度相對較慢。建議 基於上面sigmoid的性質,所以不建議在中間層使用sigmoid啟用函式,因為它會讓梯度消失。2...

關於php啟用xdebug的問題

我在安裝過程中在 中多給我了這麼一行資訊 在這裡很奇怪為什麼多乙個c windows php.ini.剛開始沒有管他,然後配置好以後重啟apache一直報錯,php cgi.exe 什麼的.然後看了一些其他文章說php安裝的話預設的php.ini位置就是c windows 這裡.但是我使用的是php...