C#.NET 中的類型轉換

C# 出來也有些日子了,最近由于編程的需要,對 C# 的類型轉換做了一些研究,其內容涉及 C# 的裝箱/拆箱/別名、數值類型間相互轉換、字符的 ASCII 碼和 Unicode 碼、數值字符串和數值之間的轉換、字符串和字符數組/字節數組之間的轉換、各種數值類型和字節數組之間的轉換、十六進制數輸出以及日期型數據的一些轉換處理,在這里與大家分享——

1. 裝箱、拆箱還是別名

  許多 C#.NET 的書上都有介紹 int -> Int32 是一個裝箱的過程,反之則是拆箱的過程。許多其它變量類型也是如此,如:short <-> Int16,long <-> Int64 等。對于一般的程序員來說,大可不必去了解這一過程,因為這些裝箱和拆箱的動作都是可以自動完成的,不需要寫代碼進行干預。但是我們需要記住這些類型之間的關系,所以,我們使用“別名”來記憶它們之間的關系。
C# 是全面向對象的語言,比 Java 的面向對象都還徹底——它把簡單數據類型通過默認的裝箱動作封裝成了類。Int32、Int16、Int64 等就是相應的類名,而那些我們熟悉的、簡單易記的名稱,如 int、short、long 等,我們就可以把它稱作是 Int32、Int16、Int64 等類型的別名。
  那么除了這三種類型之外,還有哪些類有“別名”呢?常用的有如下一些:

bool -> System.Boolean (布爾型,其值為 true 或者 false)
char -> System.Char (字符型,占有兩個字節,表示 1 個 Unicode 字符)
byte -> System.Byte (字節型,占 1 字節,表示 8 位正整數,范圍 0 ~ 255)
sbyte -> System.SByte (帶符號字節型,占 1 字節,表示 8 位整數,范圍 -128 ~ 127)
ushort -> System.UInt16 (無符號短整型,占 2 字節,表示 16 位正整數,范圍 0 ~ 65,535)
uint -> System.UInt32 (無符號整型,占 4 字節,表示 32 位正整數,范圍 0 ~ 4,294,967,295)
ulong -> System.UInt64 (無符號長整型,占 8 字節,表示 64 位正整數,范圍 0 ~ 大約 10 的 20 次方)
short -> System.Int16 (短整型,占 2 字節,表示 16 位整數,范圍 -32,768 ~ 32,767)
int -> System.Int32 (整型,占 4 字節,表示 32 位整數,范圍 -2,147,483,648 到 2,147,483,647)
long -> System.Int64 (長整型,占 8 字節,表示 64 位整數,范圍大約 -(10 的 19) 次方 到 10 的 19 次方)
float -> System.Single (單精度浮點型,占 4 個字節)
double -> System.Double (雙精度浮點型,占 8 個字節)

  我們可以用下列代碼做一個實驗:

 TestAlias() {a = 1;  b = 'a';  c = 1;d = 2;  e = 3;  f = 4;  g = true;
.textBox1.Text = ;
.textBox1.AppendText( + a.GetType().FullName + );
.textBox1.AppendText( + b.GetType().FullName + );
.textBox1.AppendText( + c.GetType().FullName + );
.textBox1.AppendText( + d.GetType().FullName + );
.textBox1.AppendText( + e.GetType().FullName + );
.textBox1.AppendText( + f.GetType().FullName + );
.textBox1.AppendText( + g.GetType().FullName + );
}

  在窗體中新建一個按鈕,并在它的單擊事件中調用該 TestAlias() 函數,我們將看到運行結果如下:

byte -> System.Byte
char -> System.Char
short -> System.Int16
int -> System.Int32
long -> System.Int64
uint -> System.UInt32
bool -> System.Boolean

  這足以說明各別名對應的類!

2. 數值類型之間的相互轉換

  這里所說的數值類型包括 byte, short, int, long, fload, double 等,根據這個排列順序,各種類型的值依次可以向后自動進行轉換。舉個例來說,把一個 short 型的數據賦值給一個 int 型的變量,short 值會自動行轉換成 int 型值,再賦給 int 型變量。如下例:

 TestBasic() {a = 1;  b = a;  c = b;d = c;  e = d;  f = e;
.textBox1.Text = ;
.textBox1.AppendText( + a.ToString() + );
.textBox1.AppendText( + b.ToString() + );
.textBox1.AppendText( + c.ToString() + );
.textBox1.AppendText( + d.ToString() + );
.textBox1.AppendText( + e.ToString() + );
.textBox1.AppendText( + f.ToString() + );
}

  譯順利通過,運行結果是各變量的值均為 1;當然,它們的類型分別還是 System.Byte 型……System.Double 型。現在我們來試試,如果把賦值的順序反過來會怎么樣呢?在 TestBasic() 函數中追加如下語句:

int g = 1;
short h = g;
this.textBox1.AppendText("h = " + h.ToString() + "\n");

  結果編譯報錯:
  G:\Projects\Visual C#\Convert\Form1.cs(118): 無法將類型“int”隱式轉換為“short”
  其中,Form1.cs 的 118 行即 short h = g 所在行。

  這個時候,如果我們堅持要進行轉換,就應該使用強制類型轉換,這在 C 語言中常有提及,就是使用“(類型名) 變量名”形式的語句來對數據進行強制轉換。如上例修改如下:

short g = 1;
byte h = (byte) g; // 將 short 型的 g 的值強制轉換成 short 型后再賦給變量 h
this.textBox1.AppendText("h = " + h.ToString() + "\n");

  編譯通過,運行結果輸出了 h = 1,轉換成功。
  但是,如果我們使用強制轉換,就不得不再考慮一個問題:short 型的范圍是 -32768 ~ 23767,而 byte 型的范圍是 0 ~ 255,那么,如果變量 g 的大小超過了 byte 型的范圍又會出現什么樣的情況呢?我們不妨再一次改寫代碼,將值改為 265,比 255 大 10

short g = 265; //265 = 255 + 10
byte h = (byte) g;
this.textBox1.AppendText("h = " + h.ToString() + "\n");

  編譯沒有出錯,運行結果卻不是 h = 265,而是 h = 9。
因此,我們在進行轉換的時候,應當注意被轉換的數據不能超出目標類型的范圍。這不僅體現在多字節數據類型(相對,如上例的 short) 轉換為少字節類型(相對,如上例的 byte) 時,也體現在字節數相同的有符號類型和無符號類型之間,如將 byte 的 129 轉換為 sbyte 就會溢出。這方面的例子大同小異,就不詳細說明了。

3. 字符的 ASCII 碼和 Unicode 碼

  很多時候我們需要得到一個英文字符的 ASCII 碼,或者一個漢字字符的 Unicode 碼,或者從相關的編碼查詢它是哪一個字符的編碼。很多人,尤其是從 VB 程序序轉過來學 C# 的人,會報怨 C# 里為什么沒有提供現成的函數來做這個事情——因為在 VB 中有 Asc() 函數和 Chr() 函數用于這類轉換。
但是如果你學過 C,你就會清楚,我們只需要將英文字符型數據強制轉換成合適的數值型數據,就可以得到相應的 ASCII 碼;反之,如果將一個合適的數值型數據強制轉換成字符型數據,就可以得到相應的字符。
C# 中字符的范圍擴大了,不僅包含了單字節字符,也可以包含雙字節字符,如中文字符等。而在字符和編碼之間的轉換,則仍延用了 C 語言的做法——強制轉換。不妨看看下面的例子

 TestChar() {ch = 'a'; short ii = 65;
.textBox1.Text = ;
.textBox1.AppendText( + ch +  + (short) ch + );
.textBox1.AppendText( + ii.ToString() +  + (char) ii + );cn = '中';  uc = 22478;
.textBox1.AppendText( + cn +  + (short) cn + );
.textBox1.AppendText( + uc.ToString() +  + (char) uc + );
}

  它的運行結果是

The ASCII code of 'a' is: 97
ASCII is 65, the char is: A
The Unicode of '中' is: 20013
Unicode is 22478, the char is: 城

  從這個例子中,我們便能非常清楚的了解——通過強制轉換,可以得以字符的編碼,或者得到編碼表示的字符。如果你需要的不是 short 型的編碼,請參考第 1 條進行轉換,即可得到 int 等類型的編碼值。

4. 數值字符串和數值之間的轉換

  首先,我們得搞明白,什么是數值字符串。我們知道,在 C# 中,字符串是用一對雙引號包含的若干字符來表示的,如 "123"。而 "123" 又相對特殊,因為組成該字符串的字符都是數字,這樣的字符串,就是數值字符串。在我們的眼中,這即是一串字符,也是一個數,但計算機卻只認為它是一個字符串,不是數。因此,我們在某些時候,比如輸入數值的時候,把字符串轉換成數值;而在另一些時候,我們需要相反的轉換。
  將數值轉換成字符串非常簡單,因為每一個類都有一個 void ToString() 方法。所有數值型的 void ToString() 方法都能將數據轉換為數值字符串。如 123.ToSting() 就將得到字符串 "123"。
那么反過來,將數值型字符串轉換成數值又該怎么辦呢?我們仔細查找一下,會發現 short, int, float 等數值類型均有一個 static Parse() 函數。這個函數就是用來將字符串轉換為相應數值的。我們以一個 float 類型的轉換為例: float f = float.Parse("543.21"); 其結果 f 的值為 543.21F。當然,其它的數值類型也可以使用同樣的方法進行轉換,下面的例子可以更明確的說明轉換的方法:

 TestStringValue() {f = 54.321F;str = ;
.textBox1.Text = ;
.textBox1.AppendText( + f.ToString() + );(.Parse(str) == 123) {
.textBox1.AppendText();
}  {
.textBox1.AppendText();
}
}

  運行結果:

f = 54.321
str convert to int successfully.

5. 字符串和字符數組之間的轉換

  字符串類 System.String 提供了一個 void ToCharArray() 方法,該方法可以實現字符串到字符數組的轉換。如下例:

 TestStringChars() {str = ;
[] chars = str.ToCharArray();
.textBox1.Text = ;
.textBox1.AppendText( + str.Length + );
.textBox1.AppendText(" + chars.Length + );
.textBox1.AppendText( + chars[2] + );
}

  例中以對轉換轉換到的字符數組長度和它的一個元素進行了測試,結果如下:

Length of "mytest" is 6
Length of char array is 6
char[2] = t

  可以看出,結果完全正確,這說明轉換成功。那么反過來,要把字符數組轉換成字符串又該如何呢?
  我們可以使用 System.String 類的構造函數來解決這個問題。System.String 類有兩個構造函數是通過字符數組來構造的,即 String(char[]) 和 String[char[], int, int)。后者之所以多兩個參數,是因為可以指定用字符數組中的哪一部分來構造字符串。而前者則是用字符數組的全部元素來構造字符串。我們以前者為例,在 TestStringChars() 函數中輸入如下語句:

char[] tcs = {'t', 'e', 's', 't', ' ', 'm', 'e'};
string tstr = new String(tcs);
this.textBox1.AppendText("tstr = \"" + tstr + "\"\n");

  運行結果輸入 tstr = "test me",測試說明轉換成功。
  實際上,我們在很多時候需要把字符串轉換成字符數組只是為了得到該字符串中的某個字符。如果只是為了這個目的,那大可不必興師動眾的去進行轉換,我們只需要使用 System.String 的 [] 運算符就可以達到目的。請看下例,再在 TestStringChars() 函數中加入如如下語名:

char ch = tstr[3];
this.textBox1.AppendText("\"" + tstr + "\"[3] = " + ch.ToString());

  正確的輸出是 "test me"[3] = t,經測試,輸出正確。

6. 字符串和字節數組之間的轉換

  如果還想從 System.String 類中找到方法進行字符串和字節數組之間的轉換,恐怕你會失望了。為了進行這樣的轉換,我們不得不借助另一個類:System.Text.Encoding。該類提供了 bye[] GetBytes(string) 方法將字符串轉換成字節數組,還提供了 string GetString(byte[]) 方法將字節數組轉換成字符串。
  System.Text.Encoding 類似乎沒有可用的構造函數,但我們可以找到幾個默認的 Encoding,即 Encoding.Default(獲取系統的當前 ANSI 代碼頁的編碼)、Encoding.ASCII(獲取 7 位 ASCII 字符集的編碼)、Encoding.Unicode(獲取采用 Little-Endian 字節順序的 Unicode 格式的編碼)、Encoding.UTF7(獲取 UTF-7 格式的編碼)、Encoding.UTF8(獲取 UTF-8 格式的編碼) 等。這里主要說說 Encoding.Default 和 Encoding.Unicode 用于轉換的區別。
  在字符串轉換到字節數組的過程中,Encoding.Default 會將每個單字節字符,如半角英文,轉換成 1 個字節,而把每個雙字節字符,如漢字,轉換成 2 個字節。而 Encoding.Unicode 則會將它們都轉換成兩個字節。我們可以通過下列簡單的了解一下轉換的方法,以及使用 Encoding.Default 和 Encodeing.Unicode 的區別:

 TestStringBytes() {s = ;
[] b1 = System.Text.Encoding.Default.GetBytes(s);
[] b2 = System.Text.Encoding.Unicode.GetBytes(s);t1 = , t2 = ;( b  b1) {
t1 += b.ToString() + ;
}( b  b2) {
t2 += b.ToString() + ;
}
.textBox1.Text = ;
.textBox1.AppendText( + b1.Length + );
.textBox1.AppendText(t1 + );
.textBox1.AppendText( + b2.Length + );
.textBox1.AppendText(t2 + );
}

  運行結果如下,不說詳述,相信大家已經明白了。

b1.Length = 6
67 35 211 239 209 212
b2.Length = 8
67 0 35 0 237 139 0 138

  將字節數組轉換成字符串,使用 Encoding 類的 string GetString(byte[]) 或 string GetString(byte[], int, int) 方法,具體使用何種 Encoding 還是由編碼決定。在 TestStringBytes() 函數中添加如下語句作為實例:

byte[] bs = {97, 98, 99, 100, 101, 102};
string ss = System.Text.Encoding.ASCII.GetString(bs);
this.textBox1.AppendText("The string is: " + ss + "\n");

  運行結果為:The string is: abcdef

7. 各種數值類型和字節數組之間的轉換

  在第 1 條中我們可以查到各種數值型需要使用多少字節的空間來保存數據。將某種數值類型的數據轉換成字節數組的時候,得到的一定是相應大小的字節數組;同樣,需要把字節數組轉換成數值類型,也需要這個字節數組大于相應數值類型的字節數。
  現在介紹此類轉換的主角:System.BitConverter。該類提供了 byte[] GetBytes(...) 方法將各種數值類型轉換成字節數組,也提供了 ToInt32、ToInt16、ToInt64、ToUInt32、ToSignle、ToBoolean 等方法將字節數組轉換成相應的數值類型。

  由于這類轉換通常只是在需要進行較細微的編碼/解碼操作時才會用到,所以這里就不詳細敘述了,僅把 System.BitConverter 類介紹給大家。

8. 轉換成十六進制

  任何數據在計算機內部都是以二進制保存的,所以進制與數據的存儲無關,只與輸入輸出有關。所以,對于進制轉換,我們只關心字符串中的結果。
  在上面的第 4 條中提到了 ToString() 方法可以將數值轉換成字符串,不過在字符串中,結果是以十進制顯示的。現在我們帶給它加一些參數,就可以將其轉換成十六進制——使用 ToString(string) 方法。
  這里需要一個 string 類型的參數,這就是格式說明符。十六進制的格式說明符是 "x" 或者 "X",使用這兩種格式說明符的區別主要在于 A-F 六個數字:"x" 代表 a-f 使用小寫字母表示,而 "X" 而表示 A-F 使用大字字母表示。如下例:

 TestHex() {a = 188;
.textBox1.Text = ;
.textBox1.AppendText( + a.ToString() + );
.textBox1.AppendText( + a.ToString() + );
.textBox1.AppendText( + a.ToString() + );
}

  運行結果如下:

a(10) = 188
a(16) = bc
a(16) = BC

  這時候,我們可能有另一種需求,即為了顯示結果的整齊,我們需要控制十六進制表示的長度,如果長度不夠,用前導的 0 填補。解決這個問題,我們只需要在格式說明符“x”或者“X”后寫上表示長度的數字就行了。比如,要限制在 4 個字符的長度,可以寫成“X4”。在上例中追加一句:

this.textBox1.AppendText("a(16) = " + a.ToString("X4") + "\n");

  其結果將輸出 a(16) = 00BC。
  現在,我們還要說一說如何將一個表示十六進制數的字符串轉換成整型。這一轉換,同樣需要借助于 Parse() 方法。這里,我需要 Parse(string, System.Globalization.NumberStyles) 方法。第一個參數是表示十六進制數的字符串,如“AB”、“20”(表示十進制的 32) 等。第二個參數 System.Globalization.NumberStyles 是一個枚舉類型,用來表示十六進制的枚舉值是 HexNumber。因此,如果我們要將“AB”轉換成整型,就應該這樣寫:int b = int.Parse("AB", System.Globalization.NumberStyles.HexNumber),最后得到的 b 的值是 171。

9. 日期型數據和長整型數據之間的轉換

  為什么要將日期型數據轉換為長整型數據呢?原因很多,但就我個人來說,經常將它用于數據庫的日期存儲。由于各種數據庫對日期型的定義和處理是不一樣的,各種語言對日期型數據的定義的處理也各不相同,因為,我寧愿將日期型數據轉換成長整型再保存到數據庫中。雖然也可以使用字符串來保存,但使用字符串也會涉及到許多問題,如區域等問題,而且,它需要比保存長整型數據更多的空間。
  日期型數據,在 C# 中的參與運算的時候,應該也是轉換為長整型數據來運算的。它的長整型值是自 0001 年 1 月 1 日午夜 12:00 以來所經過時間以 100 毫微秒為間隔表示時的數字。這個數在 C# 的 DateTime 中被稱為 Ticks(刻度)。DateTime 類型有一個名為 Ticks 的長整型只讀屬性,就保存著這個值。如此,要從一個 DataTime 型數據得到 long 型值就非常簡單了,只需要讀出 DataTime 對象的 Ticks 值即可,如:

long longDate = DateTime.Now.Ticks;

  DateTime 的構造函數中也提供了相應的,從長整型數據構造 DateTime 型數據的函數:DateTime(long)。如:

DateTime theDate = new DateTime(longDate);

  但這樣對于很多 VB6 程序員來說,是給他們出了一道難題,因為 VB6 中的日期型數據內部是以 Double 型表示的,將其轉換為長整型后得到的僅僅是日期,而沒有時間。如何協調這兩種日期類型呢?
System.DateTime 提供了 double ToOADate() 和 static DateTime FromOADate(double) 兩個函數來解決這個問題。前者將當前對象按原來的 double 值輸出,后者則從一個 double 值獲得一個 System.DateTime 對象。舉例如下:

 TestDateTimeLong() {doubleDate = DateTime.Now.ToOADate();
DateTime theDate = DateTime.FromOADate(doubleDate);
.textBox1.Text = ;
.textBox1.AppendText( + doubleDate.ToString() + );
.textBox1.AppendText( + theDate.ToString() + );
}

  運行結果:

Double value of now: 37494.661541713
DateTime from double value: 2002-8-26 15:52:37

10. 格式化日期型數據

  編程的過程中,通常需要將日期型數據按照一定的格式輸出,當然,輸出結果肯定是字符串。為此,我們需要使用 System.DateTime 類的 ToString() 方法,并為其指定格式字符串。
  MSDN 中,System.Globalization.DateTimeFormatInfo 類的概述里對模式字符串有非常詳細的說明,因此,這里我只對常用的一些格式進行說明,首先請看下表:

d月中的某一天一位數的日期沒有前導零
dd月中的某一天一位數的日期有一個前導零
ddd周中某天的縮寫名稱在 AbbreviatedDayNames 中定義
dddd周中某天的完整名稱在 DayNames 中定義
M月份數字一位數的月份沒有前導零
MM月份數字一位數的月份有一個前導零
MMM月份的縮寫名稱在 AbbreviatedMonthNames 中定義
MMMM月份的完整名稱在 MonthNames 中定義
y不包含紀元的年份如果不包含紀元的年份小于 10,則顯示不具有前導零的年份
yy不包含紀元的年份如果不包含紀元的年份小于 10,則顯示具有前導零的年份
yyyy包括紀元的四位數的年份?
h12 小時制的小時一位數的小時數沒有前導零
hh12 小時制的小時一位數的小時數有前導零
H24 小時制的小時一位數的小時數沒有前導零
HH24 小時制的小時一位數的小時數有前導零
m分鐘一位數的分鐘數沒有前導零
mm分鐘一位數的分鐘數有一個前導零
s一位數的秒數沒有前導零
ss一位數的秒數有一個前導零

  為了便于大家的理解,不妨試試下面的程序:

 TestDateTimeToString() {
DateTime now = DateTime.Now;format;
.textBox1.Text = ;
format = ;
.textBox1.AppendText(format +  + now.ToString(format) + );
format = ;
.textBox1.AppendText(format +  + now.ToString(format) + );
}

  這段程序將輸出結果:

yyyy-MM-dd HH:mm:ss: 2002-08-26 17:03:04
yy年M日d日: 02年8日26日

  這時候,又出現一個問題,如果要輸出的文本信息中包含格式字符怎么辦?如

format = "year: yyyy, month: MM, day: dd";
this.textBox1.AppendText(now.ToString(format) + "\n");

  將輸出:

2ear: 2002, 4on下5: 08, 26a2: 26

  這并不是我想要的結果,怎么辦呢?有辦法——

format = "\"year\": yyyy, \'month\': MM, \'day\': dd";
this.textBox1.AppendText(now.ToString(format) + "\n");

  看,這次運行結果對了:

year: 2002, month: 08, day: 26

  可以看出,只需要使用單引號或者雙引號將文本信息括起來就好。
  如果文本信息中包含雙引號或者單引號又怎么辦呢?這個問題,請讀者們動動腦筋吧!

轉載于:https://www.cnblogs.com/mjgforever/archive/2007/02/07/643629.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/277100.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277100.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277100.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AngularJS的學習--$on、$emit和$broadcast的使用

來源&#xff1a;http://www.cnblogs.com/CraryPrimitiveMan/p/3679552.html AngularJS中的作用域有一個非常有層次和嵌套分明的結構。其中它們都有一個主要的$rootScope(也就說對應的Angular應用或者ng-app)&#xff0c;然后其他所有的作用域部分都是繼承自這個$rootScope的&a…

17、【 商品管理模塊開發】——后臺商品圖片的springmvc和富文本上傳以及ftp文件服務器的開發...

1、FTP文件服務器的搭建&#xff1a; 軟件下載&#xff1a;ftpserver&#xff1b; image.png瀏覽器訪問&#xff1a;ftp://127.0.0.1/image.png點擊任意一個文件&#xff0c;就可以看到我們圖片啦&#xff0c;前提是前面指定的目錄里面有圖片文件~ image.png2、接口編寫&#x…

我們常說……

從過完元旦到現在&#xff0c;乖乖在公司辦公的時間很少&#xff0c;好多時候都是在外地&#xff0c;或者是在路上、車上。有n多次&#xff0c;乖乖一天至少坐6個小時的車&#xff0c;回到家里都是帶著一身的疲憊&#xff0c;雖然他并不表現出來&#xff0c;但是因為長時間坐車…

那些油管上高質量的學習編程的頻道 之一

國內確實有很多不錯的學習編程的網站或者個人博客&#xff0c;但是對于初學者&#xff0c;往往更希望獲得那種引導性的教學&#xff1a;即一步一步的教你跟著操作的教學。這種教學最好的方式當然就是視頻了。畢竟在Apple Podcast上超火爆的斯坦福教授iOS開發的課程也是這種形式…

SQL Server 2005 Express附加(Attach)的數據庫為“只讀”的解決方法

我的操作系統為Windows 2003 Server , 文件系統NTFS, 在SQL Server 2005 Express 上附加(Attach)從另外一臺電腦Copy過來的數據庫后&#xff0c;數據庫為“只讀”。如下圖&#xff1a; 解決辦法&#xff1a; 打開 SQL Server Configuration Manager, 打開SQL Server SQLEXPRESS…

[導入]blog年終小結

1. 2006-11-30 注冊了本域名thws.cn&#xff0c;喜歡的thw.com被注冊了&#xff0c;只好退而就其次了&#xff1b;2. 12-20在alexa上登陸站點&#xff0c;綜合排名從起初490多萬上升到現在的590327,下期566,880&#xff1b;3. 2007-1-11適逢google PR更新&#xff0c;PR值從0變…

Maven學習筆記(2) --mvn archetype:create 說明

前面一篇相對比較簡單。 看完前面的內容我們會來到實戰部分&#xff0c;也就是創建一個簡單的項目 1 mvn archetype:create -DgroupIdorg.sonatype.mavenbook.ch03 \ 2 -DartifactIdsimple \ 3 -DpackageNameorg.sonatype.mavenbook 于是我們得到了步入Maven領域的第一份打擊 真…

UI設計:C4D作品案例分享

中文名4D電影&#xff0c;外文名CINEMA 4D&#xff0c;研發公司為德國Maxon Computer&#xff0c;特點為極高的運算速度和強大的渲染插件&#xff0c;使用在電影《毀滅戰士》、《阿凡達》中&#xff0c;獲得貿易展中最佳產品’的稱號&#xff0c;前身為FastRay。CINEMA 4D擁有快…

又是一個人的情人節

又是一個人的情人節 上午送完弟弟返鄉的車&#xff0c;回家的心情也越來越迫切&#xff0c;很想立刻回到家里&#xff0c;和老爸老媽嘮叨嘮叨&#xff0c;和一年未見的堂兄弟一起喝喝酒&#xff0c;玩耍玩耍&#xff0c;那種心情真是沒有辦法形容&#xff0c;在我個人看來&…

C# Global.asax.cs 定時任務

定時執行更新Redis緩存操作 protected void Application_Start(object sender, EventArgs e) {Timer timer new Timer();timer.Enabled true;timer.Interval 3600000; //執行間隔時間,單位為毫秒; 這里實際間隔為1小時 timer.Start();timer.Elapsed new System.Timers.Ela…

給div拼接html 拼接字符串

簡單描述&#xff1a;拼接html 拼接字符串&#xff0c;說實話&#xff0c;拼接這種東西我自己弄&#xff0c;得花費很多時間&#xff0c;主要是轉義字符&#xff0c;單引號&#xff0c;雙引號這種小細節調整起來比較麻煩&#xff0c;一旦疏忽多了少了一個符號&#xff0c;頁面就…

P2587 [ZJOI2008]泡泡堂 神仙貪心

思路&#xff1a;貪心 提交&#xff1a;1次&#xff08;看了題解$QwQ$&#xff09; 題解&#xff1a; 若我方最弱可以干掉對方最弱&#xff0c;則干&#xff1b; 否則若我方最強可以干掉對方最強&#xff0c;則干&#xff1b; 否則若我方最弱與對方最強平手&#xff0c;則平&am…

LifeCycle源碼解讀

對于LifeCycle的簡單使用可以看上一篇文章&#xff1a;LiveDataViewModelRepository搭建MVVM 這篇文章主要是為了閱讀源碼&#xff0c;盡量深入閱讀&#xff0c;能力還是一般&#xff0c;見諒&#xff1a; LifeCycle的作用 解決onCreate等生命周期方法&#xff0c;由于各種原因…

Microsoft SQL Server 2005 Service Pack 2 已經可以下載

下載地址為http://www.microsoft.com/downloads/details.aspx?FamilyIDd07219b2-1e23-49c8-8f0c-63fa18f26d3a&DisplayLangzh-cn嘿嘿,這么快就SP2了 轉載于:https://www.cnblogs.com/lazerjulysky/archive/2007/03/04/663279.html

單點登錄(sso)入門

單點登錄的英文名叫做Single Sign On&#xff0c;簡稱SSO。 在以前&#xff0c;一般我們就單系統&#xff0c;所有的功能都在同一個系統上。 后來&#xff0c;我們為了合理利用資源和降低耦合性&#xff0c;于是把單系統拆分成多個子系統。 比如阿里系的淘寶和天貓&#xff0c;…

Cocopods的升級錯誤解決

2019獨角獸企業重金招聘Python工程師標準>>> 寫在前面&#xff1a; 這篇筆記的由來&#xff0c;是因為在這個周五下班后想起了之前 GitHub 上一個關于 iOS Charts 的 demo 仍處于未完待續的狀態。便想著完成了它&#xff0c;遂打開了該工程&#xff0c;開始用 pod 更…

XML 命名空間以及它們如何影響 XPath 和 XSLT (Extreme XML)

Dare Obasanjo Microsoft Corporation 2002 年 5 月 20 日 本文是有望長期發表的系列文章的第一篇&#xff0c;這些文章專門闡釋由 Microsoft 支持的 W3C XML 技術的更微妙的內容。盡管 XML 的核心仍相當簡單&#xff0c;但是圍繞它的技術已經變得日益復雜&#xff0c;而且其中…

帆軟報表(finereport)點擊事件對話框打開

點擊事件對話框打開iframe var iframe $("<iframe id001 name001 width100% height100% scrollingyes frameborder0>") // iframe參數的命名及寬高等iframe.attr("src", "http://192.168.100.17:8075/WebReport/ReportServer?reportlet1.cpt&…

部署虛擬環境

創建虛擬環境 導入Virtualenv虛擬環境模塊 pip install virtualenv python -m pip install virtualenv 創建虛擬環境 cd 項目文件夾 virtualenv 虛擬環境名 激活虛擬環境 cd 虛擬環境文件夾 運行 Scripts 目錄下的 activate 腳本 Scripts\activate 退出當前虛擬環境 Scripts\d…

走馬觀花:Visual Studio Code Name Orcas Mar07CTP /體驗DLINQ

不知道什么叫“Orcas”&#xff1f;簡單說應該就是下一版本的Visual Studio 吧。現在atlas&#xff0c;LINQ&#xff0c;WF之類東西&#xff0c;對于VS2005是單獨安裝的&#xff0c;Orcas應該是全內置吧。還有很多功能的增強&#xff0c;可以參考英文說明。閑話不說&#xff0c…