Time of Update: 2018-12-07
我們運行.net的發布工具installutil.exe來添加到windows服務裡面(該工具預設在C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727目錄下)把下面代碼 儲存到txt檔案,並且另存新檔bat檔案,並且和你的exe檔案放在一起,那麼雙擊就可以直接安裝服務了.@echo 安裝WindowService@Set Path=C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;@Set svn_dir=%cd%
Time of Update: 2018-12-07
C++實現二叉樹的基本操作包括 添加節點、刪除節點、前序走訪、中序遍曆、後續遍曆、層序遍曆、最大值、最小值、二叉樹的高度//Tree.h 標頭檔#include <stdio.h> class Tree{ private : //節點元素類型為結構體 struct LinkNode { int data; LinkNode *left; LinkNode *right; LinkNode(const int& dat,LinkNode
Time of Update: 2018-12-07
一直以為自己對多態和繼承已經比較瞭解,當遇到虛繼承的時候,發現有點犯暈,想不通了,於是在微博上向幾個大神請教,很快得到了他們的回複,高興之情無以言表。之後自己查了一些資料,結合大神的回複,在這裡做一下簡單的記錄。我的問題如下:為什麼虛繼承類的sizeof要大些啊,是因為虛繼承中,子類有指向父類的指標和指向父類的虛函數表的指標嗎,比非虛繼承多了這兩個指標? @左耳朵耗子 @簡悅雲風 @GeniusVczh @GeniusVczh:調用的時候給的this和函數實際需要的this的指標不一定是一樣的,
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
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#中,我們一般會用@符號來表示。 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
在多線程中,為了使資料保持一致性必須要對資料或是訪問資料的函數加鎖,在資料庫中這是很常見的,但是在程式中由於大部分都是單線程的程式,所以沒有加鎖的必要,但是在多線程中,為了保持資料的同步,一定要加鎖,好在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方式發送資料 ///
Time of Update: 2018-12-07
C#一個到多個Cookie的字串添加到CookieCollection集合中多個網站(Domain)與多個路徑(Path)與多個Cookie名(c.name)的字元要添加到CookieCollection集合中在網上找不到可行的方法,isGood用一天寫出的添加到CookieCollection集合中多用代碼:/// <summary>/// 一個到多個Cookie的字串添加到CookieCollection集合中【isGood代碼】/// </summary>/// &
Time of Update: 2018-12-07
一 C# 與 C1 C# 通常不使用指標2 可以在一個方法裡的任何地方聲明變數,不必把聲明語句放在方法的頂端3 使用一個對象前,不一定要聲明它,可以在使用的時候再定義4 C#對結構類型的定義有些不同,它根本不支援等位型別5 C#有枚舉類型,允許一系列被命名的量(如顏色,星期)賦值為連續的數值,但文法有些不同6 C#沒有位域,也就是說,變數至少要佔用一個位元組的儲存空間7 C#不支援變長參數列表,必須針對參數值和類型定義一個方法,而C 語句允許函數的最後一個參數為可變參數數組。8
Time of Update: 2018-12-07
一、已最小化的視窗點擊“X”或“Alt+F4”時,已最小化的視窗,如:protected override void WndProc(ref Message m){const int WM_SYSCOMMAND = 0x0112;const int SC_CLOSE = 0xF060;if (m.Msg == WM_SYSCOMMAND && (int) m.WParam == SC_CLOSE){// User clicked close
Time of Update: 2018-12-07
Code highlighting produced by Actipro CodeHighlighter