Time of Update: 2018-12-08
下面從組合語言看其原理.下面是c++原始碼:複製代碼 代碼如下:void add() { static int i = 1; i++;}int main() { add();}下面是main對應的彙編碼複製代碼 代碼如下:; 5 : int main() { push ebp mov ebp, esp; 6 : add(); call ?add@@YAXXZ ; 調用add; 7 :
Time of Update: 2018-12-08
首先簡單說一下什麼是行壓縮圖,其實嚴格意義上應該是行壓縮矩陣。正常情況下,矩陣是用二維數組簡單儲存的,但是如果是疏鬆陣列,也就是零很多的時候,這樣比較浪費空間。所以就有各種節省空間的儲存方式,三元組儲存就是其中一種。什麼是三元組呢?一個三元組就是(row,col,value),這樣把所有不為零的值組成一個向量。這種儲存方式比二維數組節省了不少空間,當然還可以進一步節省,因為三元組裡面row或者col重複儲存了,一行或者一列存一次就行了,按這種思路走下去就是行壓縮儲存了。那具體什麼是行壓縮儲存呢?
Time of Update: 2018-12-08
如何計算矩陣乘法,這個大家都知道。通常情況下,我們都是用以下代碼實現的:複製代碼 代碼如下:for(i=0;i<n;++i) for(j=0;j<n;++j){ sum=0; for(k=0;k<n;++k) sum+=A[i][k]*B[k][j]; C[i][j]+=sum;}但是考慮了快取的問題後,其實有一種更好的實現方式:複製代碼 代碼如下:for(i=0;i<n;++i) for(k=0
Time of Update: 2018-12-08
常用的位元運算主要有與(&), 或(|)和非(~), 比如:1 & 0 = 0, 1 | 0 = 1, ~1 = 0在設計許可權時, 我們可以把許可權管理操作轉換為C#位元運算來處理.第一步, 先建立一個枚舉表示所有的許可權管理操作:複製代碼 代碼如下:[Flags] public enum Permissions { Insert = 1, Delete = 2, Update = 4, Query = 8 } [Flags]表示該枚舉可以支援C#位元運算, 而枚舉的每一項值,
Time of Update: 2018-12-08
區別C++中對於類來說,對於其中的成員,用點操作符.來獲得,而對於一個指向類對象的指標來說,則用箭頭操作符->調用該指標所指向對象的成員。當類定義->重載操作符後,則既可以用箭頭操作符,也可以用點操作符。重載->操作符重載箭頭操作符必須定義為類成員函數。沒有顯式形參(而且是類成員,唯一隱式形參是this)。->的右運算元不是運算式,而是對應類成員的一個標識符,由編譯器處理擷取成員工作。重載箭頭操作符必須返回指向類類型的指標,或者返回定義了自己的箭頭操作符的類類型對象。如果
Time of Update: 2018-12-08
條碼在生活中的應用非常廣泛,具體的條碼知識大家自行百度,瞭解條碼知識對理解下面的代碼是必要的。如果只是應用的話,直接拿去就可以用了。廢話不多說,上代碼複製代碼 代碼如下:public Bitmap GetCode39(string sourceCode) { int leftMargin = 5; int topMargin = 0; int thickLength = 2; int
Time of Update: 2018-12-08
C#擷取遠程圖片,需要Form使用者名稱和密碼的Authorization認證複製代碼 代碼如下:using System;using System.Collections.Generic;using System.Drawing;using System.IO;using System.Linq;using System.Net;using System.Text;using System.Web;using System.Web.UI;using
Time of Update: 2018-12-08
複製代碼 代碼如下:protected virtual OnPaint(PaintEventArgs e){ if(paint != null){ paint(this,e);}}如果直接重寫onpaint,paint就會失效;這樣就不會失效:複製代碼 代碼如下:protected override OnPaint(PaintEventArgs e){ base.OnPaint(e);
Time of Update: 2018-12-08
添加方法:選擇項目->引用->右擊“添加引用”->選擇COM 找到上面組件—>點擊“確定”。實現代碼如下:複製代碼 代碼如下: private void 匯出資料_Click(object sender, EventArgs e) { ExportToExecl(); } /// <summary> /// 執行匯出資料 /// </summary>
Time of Update: 2018-12-08
消極式載入(lazy loading) 設計模式是為了避免一些無謂的效能開銷而提出來的,所謂消極式載入就是當在真正需要資料(讀取屬性值)的時候,才真正執行資料載入操作.為了便於理解, 我們來建立一個情境, 假設我們要構造一個Hero(英雄) 類, 每個Hero 有自己的名字和(SpecialSkill)特殊技術.建模這是一種建立的方法:複製代碼 代碼如下:public class Hero{ public string FullName { get; set; } public
Time of Update: 2018-12-08
1.讓方法返回多個參數1.1在方法體外定義變數儲存結果複製代碼 代碼如下:using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Method { class Program { public static int quotient; public static int remainder;
Time of Update: 2018-12-08
比如有這樣兩個字串:複製代碼 代碼如下: var a = "a-b=c12"; var b =
Time of Update: 2018-12-08
1.委託的定義委託可以看成是一種資料類型,可以用於定義變數能接受的值只能是一個方法。委託簡單的樣本:複製代碼 代碼如下:namespace DelegateDemo { class Program { public delegate int MathOptDelegate(int value1,int value2); public int add(int value1, int value2) {
Time of Update: 2018-12-08
前言 一直沒有系統去看過c++,因為懂得一些c的基本文法,在實際編程中用到c++,只能用到哪些看哪些,發現這樣雖然能夠完成大部分工作,但是有時候效率實在太低,比如說這節要講的Std::sort()函數的使用,調了半天才調通。開通c/c++序列部落格是記錄在使用c++中一些難題,避免以後重犯錯,當然以後會盡量擠出時間來較系統學習下c++。 開發環境:QtCreator2.5.1+OpenCV2.4.3 實驗基礎 首先來看看std中的快速排序演算法sort的使用方法: template
Time of Update: 2018-12-08
其實很簡單。。。C#位移運算子:左移:<<右移:>>位移理解可能簡單一些:其實就是資料轉換成二進位的左右移動;右移左補0,左移右補0,後面多出來的部分去掉。用乘除法去理解位移也可以: 左位移:相當於乘 左移1位相當於乘2,左移2位相當於乘4,左移3位相當於乘8,左移4位相當於乘16...類推 右位移:相當於除
Time of Update: 2018-12-08
複製代碼 代碼如下: class HuffmanTree { private Node[] data; public int LeafNum { get; set; } public Node this[int index] { get { return data[index]; } set { data[index] = value; } } public
Time of Update: 2018-12-08
1、調用系統dll使用其提供的方法。引用的dll,複製代碼 代碼如下:[DllImport("kernel32.dll")] public static extern int WinExec(string exeName, int operType); 調用,WinExec(@"路徑\exe的檔案名稱", 參數);operType參數如下複製代碼 代碼如下:0: 隱藏, 並且工作列也沒有最小化表徵圖 1: 用最近的大小和位置顯示, 啟用 2: 最小化, 啟用 3: 最大化, 啟用
Time of Update: 2018-12-08
情境介紹如果需要使用UDP傳輸較大資料,例如傳輸10M的圖片,這突破了UDP的設計原則。UDP的設計是基於"datagram",也就是它假設你發送的每個資料包都能包含在單一的包內。並且設定UDP資料包的最大長度受基礎網路通訊協定的限制。UDP資料包的理論最大長度限制是 65535 bytes,這包含 8 bytes 資料包頭和 65527 bytes 資料。但如果基於IPv4網路傳輸,則還需減去 20 bytes
Time of Update: 2018-12-08
複製代碼 代碼如下: //計算耗時任務所需的秒數 public int GetTimeSpan(DateTime dtStart, DateTime dtEnd) { TimeSpan tsStart = new TimeSpan(dtStart.Ticks); TimeSpan tsEnd = new TimeSpan(dtEnd.Ticks); TimeSpan ts = tsEnd.Subtract(tsStart).Duration();//秒 //dateDiff =
Time of Update: 2018-12-08
在X86的環境下,var wParam = (int)msg.WParam;工作得很好。在X64的環境下,快速滾動滾輪會出現msg.WParam 轉換為int的時候溢出,(WParam=4263510016)。資訊為:未處理System.OverflowException Message=算術運算導致溢出。 Source=mscorlib StackTrace: 在 System.IntPtr.op_Explicit(IntPtr value) 在