Time of Update: 2018-12-07
notsamenum++;}}if(notsamenum<4){char cj=(char)datachar[ii];return cj.ToString();}}return jieguo;}/// <summary>/// 檢查特徵庫中是否已經存在相關記錄/// </summary>bool ischardatain(){bool jieguo=false;for(int
Time of Update: 2018-12-07
摘要:本文討論了如何使用C#2.0實現抓取網路資源的網路蜘蛛。使用這個程式,可以通過一個入口網址(如 http://www.comprg.com.cn)來掃描整個互連網的網址,並將這些掃描到的網址所指向的網路資源下載到本地。然後可以利用其他的分析 工具對這些網路資源做進一步地分析,如提取關鍵詞、分類索引等。也可以將這些網路資源作為資料來源來實現象Google一樣的搜尋引擎。關鍵 詞:C#2.0,Html,網路蜘蛛, 鍵樹,Regex 一、引言
Time of Update: 2018-12-07
在.Net應用程式中,我們經常看到VS為我們產生的項目工程中都會含有App.config或者Web.config這樣的檔案。這個檔案就是我們所說的應用程式設定檔。在這個檔案裡面記述著一些與我們的應用程式相關的資訊,如:資料庫連接,認證模式等。我們在程式中可以利用ConfigurationManager的ConnectionStrings屬性方便的擷取設定檔中的資料庫連接字串資訊。 可是有時候,我們需要對它進行一些擴充,加入一些自訂的元素,而不是僅僅使用預設的配置。例如,我們可能需要在程式啟動
Time of Update: 2018-12-07
C/C++中有一個快速排序的標準庫函數 qsort ,在stdlib.h 中聲明,其原型為:void qsort(void *base, int nelem, unsigned int width, int ( * pfCompare)( const void *, const void *)); 使用該函數,可以對任何類型的一維數組排序。該函數參數中,base 是待排序數組的起始地址,nelem 是待排序數組的元素個數,width
Time of Update: 2018-12-07
上天上.Net課我穿著一件T-Shirt正面印有涅槃三個人,中間是Kurt Cobain披頭散髮,面帶微笑。老師看到我說,“喲,你衣服上印的不是寫《C#入門經典》的那幾個人嗎?”(注意:這裡的C#是一門程式設計語言,不是C調升半調....)我大窘~然後說:“這幾個是彈吉它的,估計還C#沒有入門,好像也沒有機會學了,不過他們倒是會按C#和弦。。。” 我衣服上的Nirvana~~ C#入門經典 C#進階編程顯然我們Kurt Cobain要帥很多好吧!!!其實,乍看還是有點像的。。。。
Time of Update: 2018-12-07
通常swap(a,b),都是用中間變數public static void Swap1(ref int a, ref int b) { int temp = a; a = b; b = temp; }產生的IL如下(去除ref) .maxstack 1 .locals init ( [0] int32 temp) L_0000: ldarg.0 L_0001:
Time of Update: 2018-12-07
今早看到了《你真的瞭解a ^= (b ^= (a ^= b))嗎?》一文,文章中提到了一個有趣的運算式:a ^= (b ^= (a ^= b)); 很簡單的一個程式: 1 int a = 2; 2 int b = 9; 3 a ^= (b ^= (a ^= b)); 4 Console.WriteLine("{0}, {1}", a.ToString(), b.ToString());最後的運算結果不是預期的9,2,而是0,2。同時,還有1個運算式:
Time of Update: 2018-12-07
經典就是經典,不論多少年,經典永遠不會改變。語言,架構總有一天會過時,但是唯獨經典永遠存在。這就是研究這些經典演算法的永恒。當我這樣一個.net程式員去應聘Java, C++,
Time of Update: 2018-12-07
1. 動態記憶體分配先來介紹三個動態記憶體分配的函數:malloc,calloc和realloc。說來慚愧,以前只知道malloc。現在來看下他們的區別:malloc:最常用的分配記憶體塊,但是不對記憶體進行初始化。calloc:分配記憶體塊,但是對記憶體塊進行清零操作,這就造成此函數的效率要比malloc要低。realloc:調整(增加或者減少)之前分配記憶體塊的大小。由於上面的函數只是開闢了一段記憶體,因此無法知道你要利用這段記憶體來儲存什麼類型的資料,因此只是返回一個void *類型的值,
Time of Update: 2018-12-07
在C語言中,經常會出現一些複雜的型別宣告。而大多數都是涉及到指標的類型。那麼就在這一節來集中認識一下。首先,我們先來瞭解*,()和[]的組合。在看實際例子前,先來看一個重要的規則:在做選擇時,始終使[]和()的優先順序大於*。舉個簡單的例子:int *arr[10]。由於[]的優先順序大於*。也就代表,首先這是一個含有10個元素數組,那麼數組內的內容是什麼呢?是int *arr。去掉類型名稱,數組內的類型是int *。所以這是一個含有10個整數類型指標的數組。同樣的規則繼續看:float
Time of Update: 2018-12-07
1. typedef在前文中,我們用宏定義來定義了一個BOOL類型,那麼現在就用更專業的方式來定義類型。typedef int Bool;int main (void){ Bool flag=1;if(flag) { printf("True"); }else{ printf("false"); }}typedef 的作用就是類型定義(Type Definition)。類型定義有以下三個優點:1. 易於閱讀。比如我們可以把定義一個Dollar,
Time of Update: 2018-12-07
1. 數組大小我相信,在C#/Java中,更多的人願意用List<T>來取代數組,一方面是List提供了較多的方法,另一方面也無需我們去指定數組的大小。那麼在C語言中,我們既然需要必須指定數組的大小,而一般來講,很多數組大小事我們無法確定並且經常會發生變化的,那麼我們最好的方式就是用宏定義來限定數組的大小。#define SIZE 10int main (void){int a[SIZE];} 如果包含多個數組的話,用宏就很難記憶,那麼我們就可以利用sizeof運算子。int
Time of Update: 2018-12-07
1. 字串入門字串也稱字串字面量,是用一對雙引號括起來的字元序列。我們也許經常會遇到字串特別長的情況,在C#中,我們一般會用@符號來表示。 Console.WriteLine(@"HelloWorld"); 但是在C中,我們會這樣來寫:int main(){ printf("Hello " "world");return 0;}還記得我曾經講的最多的一句話就是,把字串當做字元數組來玩。其實在本質上,C語言就是把字串作為字元數組來處理,當C語言編譯器遇到長度為N的字串時,
Time of Update: 2018-12-07
1. 摘要在這篇文章中,我會通過IL去分析一個簡單的語句。如果覺得實在簡單,可以略過。2. 引子事情是這樣的,同事寫了一段類似這樣的代碼:class Program{ static void Main(string[] args) { object o = new object(); int i; Int32.TryParse(Console.ReadLine(), out
Time of Update: 2018-12-07
網頁自動登入(提交Post內容)的用途很多,如驗證身份、程式升級、網路投票等,以下是用C#實現的方法。 網頁自動登入和提交POST資訊的核心就是分析網頁的原始碼(HTML),在C#中,可以用來提取網頁HTML的組件比較多,常用的用WebBrowser、WebClient、HttpWebRequest這三個。以下就分別用這三種方法來實現: 1、WebBrowser是個"迷你"瀏覽器,其特點是Post時不用關心Cookie、內建JS等問題
Time of Update: 2018-12-07
m_objExcel = new Excel.Application();m_objExcel.Visible = true;Excel.Workbook m_objBook = m_objExcel.Application.Workbooks.Add(FileWrite);m_objBook = m_objExcel.Workbooks.Add(Missing.Value);Excel.Worksheet m_objSheet =
Time of Update: 2018-12-07
public class XmlControl { protected string strXmlFile; protected XmlDocument objXmlDoc = new XmlDocument(); public XmlControl(string XmlFile) { // // TODO: 在這裡加入建構函式的程式碼 // try { objXmlDoc.Load(XmlFile); } catch (System.Exceptio
Time of Update: 2018-12-07
在多線程中,為了使資料保持一致性必須要對資料或是訪問資料的函數加鎖,在資料庫中這是很常見的,但是在程式中由於大部分都是單線程的程式,所以沒有加鎖的必要,但是在多線程中,為了保持資料的同步,一定要加鎖,好在Framework中已經為我們提供了三個加鎖的機制,分別是Monitor類、Lock關鍵字和Mutex類。 其中Lock關鍵詞用法比較簡單,Monitor類和Lock的用法差不多。這兩個都是鎖定資料或是鎖定被調用的函數。而Mutex則多用於鎖定多線程間的同步調用。簡單的說,
Time of Update: 2018-12-07
using System; using System.IO; using System.Text; using System.Collections; namespace PDFGenerator { public class PDFGenerator { static float pageWidth = 594.0f; static float pageDepth = 828.0
Time of Update: 2018-12-07
通過應用程式讀取網頁資訊的時候,通常需要抓取網頁的資料,但是有一個問題就是很多網頁需要登入後才能夠獲得頁面資料,那麼就需要儲存當前的cookie,在.NET中可以使用CookieContainer 對象來儲存登入後的Cookie資訊,每次發送資料的時候加上Cookie資訊,就可以解決這個問題了。 #region 同步通過POST方式發送資料 /// <summary> /// 通過POST方式發送資料 ///