在VS2010中使用附加進程的方式調試IIS中的頁面


 

在VS2010中使用附加進程的方式調試IIS中的頁面

 

准備篇-配置IIS環境

在發布網站之前,需要安裝iis環境!

image

image

image

之后點擊確定即可!

發布網站至IIS-附加到進程調試

 

1.       用VS2010將整個站點發布到某個文件夾下。

image

選擇目標位置:

image

2.     在IIS中添加剛剛發布的網站

在開始菜單下搜索IIs即可找到iis服務器,或者右擊計算機,選擇服務!

image

右擊網站->添加網站

image

設置身份驗證

image

注意->如果設置了主機名,那么你就需要配置一下  hosts 文件

位置:C:\Windows\System32\drivers\etc

用編輯器打開,在后面添加   

127.0.0.1          test.cool.com

 

3.       對要測試的頁面設置斷點,然后選擇”調試”->”附加到進程”,在進程中選擇w3wp.exe進程(需要先打開需測試的頁面)

image

image

5.       配置完成,當打開你需要測試的頁面的時候,遇到斷點就會跳轉到vs!

我不追求自己是何等的完美,但我追求每一天的提高!
算法打基礎——順序統計(找第k小數)

 

這次主要是講如何在線性時間下找n個元素的未排序序列中第k小的數。當然如果k=1ork=n,即找最大最小

數,線性時間內遍歷即可完成,當拓展到一般,如中位數時,相關算法就值得研究了。這里還要說明的是,排序解

決是一種平凡算法,但其復雜度是Θ(nlogn)

這次內容的主要知識點有:1.隨機化版本的分治法求解&分析  2.基於1的優化pivot選擇的算法&分析  

1.隨機化版本的分治法求解與分析

首先,要明確的是現在我們要解決的問題是求解n元素序列的第k小數

這種方法的主要思想是:從序列中隨機選一個數pivot,然后用類似於merge-sort的分割方法,將序列分成大於和小於pivot的兩部分.

根據兩邊元素的數量,迭代的去求解,最終找到第k小元素. 下面給出偽代碼:

RAND-SELECT(A, p, q, i)           ⊳ith smallest ofA[p..q]

  if p= q then returnA[p]

  r←RAND-PARTITION(A, p, q) ⊳隨機化分割子程序,返回處理完后pivot下標(分割見前面分治法)

  k←r–p+ 1                 ⊳k 是 A[r]這個元素在子序列A[p~q]中的位置

  if i== k then return A[r]

  if i< k

    then return RAND-SELECT(A, p, r –1, i)

    else return RAND-SELECT(A, r + 1, q, i –k)

這里給出一個實例:

 

對這種隨機化版本的分割進行分析,如果我們每次比較幸運分類的話:

 T(n)=T(9n/10)+Θ(n)

        =Θ(n)

如果每次分類都是最差情況的話(即0:n-1 split)

T(n)=T(n-1)+Θ(n)

     =Θ(n2)   這種情況下比排序找這種平凡情況還要差

更具體的我們要分析隨機版本運行的期望時間,因為數學公式多,所以這個就寫在我的算法筆記里面了

結果最終肯定是Θ(n)!

  2.基於1的優化pivot選擇的算法&分析  

算法1是期望時間復雜度為O(n),那么存不存在最差情況都是O(n)的算法呢? 由算法1,我們可以思考,是

什么導致了算法1的最差情況:是糟糕的划分。那么只要我們能找到一個好的划分方法,再基於算法1,就能

得到最差情況也是線性的算法了。

這里給出的Select算法就是這樣的一個神奇的算法,這里先給出偽代碼然后在用實例說明:

SELECT(i, n)

1.Divide the n elements into groups of 5. Find the median of each 5-element group by rote.

2.Recursively SELECT the median xof the floor{n/5} group medians to be the pivot.

3.Partition around the pivot x. Let k= rank(x).

4 if i= k then return x

   elseif i< k

           then recursively SELECT the ith

                  smallest element in the lower part

           else recursively SELECT the (i–k)th

                  smallest element in the upper part

注意這個算法的3、4步和前面的算法是一樣的,因為這個算法的主要目的是通過第1,2步找到一個分割的pivot

所以我們也着重分析1,2步

第一步:首先將序列按照5個一組進行分組,多出來的就不用管了; 然后通過隨意什么方法找到5個元素中位數

第二步:通過遞歸調用這個算法Select找到floor{n/5}個元素的中位數x,我們將這個數作為分割用的pivot

注意這里的箭頭都是指向更小的數。然后我們來更具體的分析:

我們知道至少ceil{floor{n/5}/2}個中位數是不大於x的,那么必然有3floor{n/10}個值是不大於x的。同理,對稱的也有那么多是不小於x的.

然后我們想讓3floor{n/10}≥n/4,  當n≥50時是成立的。 也就是說這樣分割一部分必然是≥4/n,即另一部分

小於等於3n/4. 就是說如果來處理的話不會超過T(3n/4)

 

然后我們來分析一下整個算法的復雜度:

step1 分割應該就是遍歷過程Θ(n)

step2 遞歸解決n/5的問題 T(n/5)

step3 按照得到的pivot分割數組 Θ(n)

step4 遞歸解決分割的數組,最大不超過3n/4 T(3n/4)

故 T(n)=T(n/5)+T(3n/4)+Θ(n)

由替代法(其實就是n/5+3n/4=19/20n),可以得到這個算法是線性的。

 

下面自己寫的給出隨機化算法的代碼,第二個太懶了。。。還沒寫。寫完會加上的

 

  Rand_kth

/////////////////////////CLRS video lec6 隨機化版本的找第k大數/////////////////////////////////////////////////
/// 運行時間的期望是O(n),最差情況O(n^2) /////////////////////////////////////////////////////

#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;

#define random(x)(rand()%x)

void findkth(int* a,int s,int e,int k)
{
if(s>e) return;
if(s==e)
{
cout<<a[s]<<endl;
return;
}
int index=rand()%(e-s+1);
int pivot = a[s+index],temp;
temp=a[s];a[s]=pivot;a[s+index]=temp;
// 下面這一段做partition的工作
int i=s,j;
for(j=s+1;j<=e;j++)
{
if(a[j]<pivot)
{
temp=a[++i];
a[i]=a[j];
a[j]=temp;
}
}
temp=a[i];a[i]=pivot;a[s]=temp;
if(i==k)
{
cout<<pivot<<endl;
return;
}
else if(i<k)
{
findkth(a,i+1,e,k);
}
else
{
findkth(a,s,i-1,k);
}
}

 

int main()
{
int a[10];
int i,j,k,index;
srand(time(0));
for(i=0;i<10;i++)
{
a[i]=random(50);
cout<<a[i]<<" ";
}
cout<<endl;
while(1){
cin>>k;
findkth(a,0,10-1,k);
}
return 0;
}

Rand_kth

 

 

 

 
 
 
標簽:  算法基礎

可發布指定的ASP.NET頁面的插件:LimusicAddin

2013-10-26 16:54 by Limusic, 294 閱讀, 0 評論, 收藏編輯

涉及到的技術點

  1. VS插件開發。推薦閱讀:Visual Studio 2008 可擴展性開發
  2. asp.net 預編譯。使用aspnet_comlier.exe(在目錄:C:\Windows\Microsoft.NET\Framework\v4.0.30319 ) 來發布網站。推薦閱讀:

    ASP.NET 編譯工具

    例如:

    aspnet_compiler -p c:\website -c -v c:\PrecomplierWeb -fixednames –u

    參數說明:

適用范圍:

  1. 平台:.Net Framework 4.o及以上
  2. 對象:web網站,而不是web項目
  3. 發布方式為:預編譯發布且可更新和固定名稱,如下圖

     

使用說明

  1. 下載LimusicAddin壓縮包

  2. 復制文件:LimusicAddin.AddIn和LimusicAddin.dll到[My documents]/[VS2010、VS2008]/Addins下

  3. VS打開一個網站,右鍵—自定義發布。如下圖:

  4. 或者選中多個aspx頁面,右鍵--自定義發布

    image_thumb3 image_thumb10


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM