自學之筆記總結


類:類是一個抽象的概念,是對多個對象提取相同的特性的產物,對象是類的一個具體實例化對象,在程序中,要使用得實例化對象來訪問類中的成員。

1.三大特性:封裝、繼承、多態
2 封裝:把字段封裝成屬性,把多個參數封裝成一個對象,把代碼封裝到方法裏面調用,多個CS封裝成程序集
繼承:把幾個類相同的特性存在父類裏,進行引用,做用:減小代碼的重複性, 實現多態(繼承的特性:單根性、傳遞性)
多態:現實中就是事物的多種形態,在程序裏,表現爲父類的對象指向子類的實例,在調用方法時,調用的是子類重寫的方法(多態使程序可擴展,更靈活),舉例子,人,中國人,日本人
 
構造函數:不能被繼承,子類中若是有多個構造函數的話,
子類中能夠用this調用其餘構造函數,子類能夠用case調用父類的構造函數,當子類調用構造函數的時候,默認會調用父類中無參的構造函數(解決辦法:1父類寫一個無參構造函數;2:在子類中寫加一個:case去調用有參的構造函數)

虛方法:子類調用父類的虛方法,能夠重寫也能夠不用重寫

靜態類:不能被繼承,不能被實例化。靜態類在第一次被使用的時候被調用,而且只調用一次。
靜態構造函數:沒有訪問修飾符,沒有參數。

密封類(sealed):不能繼承(),不想被繼承在前面加一個私有關鍵字(privete),String類


類型轉換

抽象方法:1.抽象方法必須用abstract標記,而且抽象方法不能用任何實現
  2.抽象成員必須標記在抽象類中
  3.抽象類不能被實例化
  4。子類繼承抽象類後,必須把父類中的全部抽象成員都重寫(除非子類也是一個抽象類,能夠不重寫)
  5.抽象成員的訪問修飾符不能是private
  6.在抽象類中能夠包含實例成員
  7.抽象類是有構造函數的。雖然不能被實例化

何時須要虛方法,何時須要抽象方法
若是父類中的方法有默認的實現,而且父類須要被實例化,這時能夠考慮將父類定義成一個普通類,用虛方法來實現多態。
若是父類中的方法沒有默認實現,父類也不須要被實例化,則能夠講該類定義爲抽象類
(簡單講就是要實例化的時候能夠用虛方法實現多態,不須要的時候能夠用抽象類來實現)


接口:1.接口中只能包含方法(方法、屬性、索引器、事件)
     2.接口中的方法也不能有任何實現(就行抽象方法,直接加一個分號)
     3.接口中的成員不能有任何訪問修飾符(哪怕是public)默認爲public
     4.接口也不能被實例化
     5.實現接口的類,必須實現接口中全部的成員

1.若是使用virtual和override?
 子類要重寫父類的方法的時候,能夠把父類定義爲virtual的虛方法,子類定義用override的重寫
。(方法的重寫是爲了多態,多態多種表現形態,就是進行方法的重寫實現多種狀況,好比作OA系統的時候,有領導和員工類,而後兩個都須要打卡,但打卡的時間不同,調用的打卡具體方法不同)
2.若是使用abstract和override?
在抽象類中,父類須要用abstract定義爲抽象類,抽象方法也須要用abstract方法來標記而且抽象方法必須在抽象類中,而後子類繼承父類使用的時候,調用該方法的時候必須重寫用override關鍵字(除非子類也是抽象類)
3."方法重載overload"、"方法重寫override"、"隱藏類new"是同一律念嗎?
不是,方法重載只看方法名必須同樣,方法的參數列表不同(個數不同,類型不同,順序不考慮),就叫重載,和方法返回值沒有半點關係。  
方法重寫:子類繼承並重寫父類的方法的時候用,用這個關鍵字,好比虛方法和抽象方法的時候重寫(而後再講何時用虛方法和抽象方法的時候)
  new:子類想隱藏父類中繼承下來的方法的時候,能夠使用new方法關鍵字
4.抽象類和接口的區別?
抽象類適用於同一系列,而且有須要繼承的的成員
接口適用與不一樣的系列,具備相同的動做(行爲、動做、方法)。
對於不是相同的系列,但具備相同的行爲,這個能夠考慮有接口實現,接口解決類不能多繼承的問題。

全部的引用類型都繼承自Object
全部的值類型都繼承自System.ValueType[System.ValueType又繼承自Object]

結構體:值類型。
值類型、引用類型。

值傳遞:傳遞的是棧中的內容
ref引用傳遞:傳遞的是棧自己的地址


異常:在運行的時候發生不可預知的錯誤(用異常捕獲try{}catch{}finally)


統計一個字符串中,天安門出現的次數(天安門,我愛北京天安門,天安門上太陽升)
string s="天安門,我愛北京天安門,天安門上太陽升";
int n=s.Split('天安門').Length-1;
面試題:動態顯示[]裏面的某某某,獲取他第一次出現的索引位置(我愛[某某某]哈哈哈哈)
string msg = "我愛[某某某]哈哈哈哈";
msg = msg.Substring(msg.IndexOf("[")+1, (msg.IndexOf("]")-msg.IndexOf("[")-1)); Console.WriteLine(msg);


字符串
1.不可變性:不管對字符串怎麼操做,可是開闢一塊新內存。
2.留用性:能夠把程序中的字符串相同的字符串變量指向同一個地址。
3字符串池:當程序中有多個相同的字符串常量的時候,這時,這些字符串常量都是指向內存中的同一個字符串地址,這個特性叫字符串池。

StringBuilder(字符串拼接)
爲何不都用StringBuilder?
1.通常才字符串參數都是用string類型,stringBuilder還要轉換成ToString()
2.字符串有一些特性(好比有不可變、字符串池)

如何比較兩個對象是否相同?
兩個對象在堆裏面使用的是同一塊內存,這時是同一個對象。
用object.ReferenceEuals(p1,p2),若是用Equals的話(由於Equals方法是父類Object的一個虛方法,,子類均可以進行重寫,因此用這種方法就不許確了)

DotNet爲何有代的概念(分3代,分代能夠不用一次性回收,否則會影響程序執行效率,優先回收第0代,第0代的回收概率高,第1代次低,第2代再次之)

若引用:WeakReference,對於建立比較耗時的對象能夠使用若引用。(好比建立List集合來存儲數據庫中一百條數據,當這個List不用的話能夠用若引用,若是後來還沒回收能夠調用若引用調用(建立集合須要時間,鏈接數據庫也須要時間和內存))

垃圾回收。
做用:提升內存的利用率
什麼樣的對象才能夠被垃圾回收?
1引用類型 2沒有任何變量應用的對象(何時被回收不知道,系統指定的)
(一開始建立對象都是在第0代,當垃圾回收的時候會先回收第0代的對象,把那些能夠被釋放的釋放掉,沒有釋放的自動移到第1代,而後建立對象的時候仍是第0代,當下次回收的時候仍是第0代,把沒有被回收的自動移到第1代,當第1代滿了,把該回收回收了,仍是滿的時候自動移動第2代,第2代滿了才垃圾回收,仍是慢了系統就會報錯)(爲何要分代垃圾回收,由於垃圾回收會影響程序正常執行的效率)

泛型集合
1 ArrayList object
2 Hashtable key(object),val(object)
(一、2需別:ArrayList查找的時候要循環遍歷,Hashtable能夠根據鍵值就能夠找到,免得循環遍歷,查詢速度快)
(爲何要集合,不用數組?由於數組的長度是固定的,只能裝同一類型的)
3 List<T>
Dictionary<K,V>
(當對於1 2 ,3 4的數據類型固定了,使用省去各類的類型轉換)



string s1 = "a";
string s2 = "b";
int n3 = 10;
double d4 = 99.9;
string result = string.Concat(s1,s2,n3,d4);  //Concat發生字符串鏈接
有沒有發生裝下和拆箱,若是發生了,發生了幾回?(面試題)
用Reflector看把 int double 給object發生兩次裝箱,沒有發生拆箱,只發生類型轉換


我產生亂碼緣由:文本文件存儲時採用的編碼,與讀取時採用的編碼不一致,就會形成亂碼問題。
解決:採用統一的編碼就Ok了


爲何有些對象能夠用foreach,有些不行?
能被foreach裏面有一個GetEnumerator方法,經過這個方法實現了IEnumerable接口的對象,這個對象就能夠對類中的元素進行遍歷,foreach經過查看Reflector的il代碼,也是經過類調GetEnumerator返回一個接口類型,接口類型MoveNext()也許生成這個代碼

爲何要進行序列化?(序列化,對象到byte[]的過程)(步驟:1.建立序列化對象2.建立流,將對象序列化 )
將一個複雜的對象轉換成流,方便咱們的存儲與信息的交換。


問題:爲何反序列化的時候須要原來定義Person類的那個程序集?
 反序列化的時候,要返回一個對象,這個對象必須根據原來person所在的程序集才能建立,也就是說person.bin中包含的僅僅是一些數據,根據這些數據是沒法在內存中建立對象的。只能是根據原來person類型的程序集來建立對象,而後把perosn.bin中的數據---對應進行賦值。因此反序列化的時候須要添加對原來程序集的引用。


什麼樣的類型才能被序列化?
1.要被序列化的對象的類型必須標記爲可序列化的[Serializable]
2.當前被序列化的對象的父類也要標記爲可序列化。
類中字段或者或屬性的類型也必須爲可序列化的。

正則表達式   通配符
1>  .除\n任意的單個字符     如 a.b    axb   a2b
2>   [] 表示[]裏面的任意單個字符
a[xys]b
aab
axb
a[0-9]b (表示0-9之間的任意一個字符與ab匹配,如a1b a2b)
a[^xyz]b 表示中間數出xyz以外的任意一個字符
a[^a-zA-Z0-9]b   表示ab之間除了a-z或A-Z或0-9之間的任意一個字符均可以。

3>   | :將兩個匹配條件進行邏輯「或」運算。‘z|food’ 能匹配 「z」 或 「food」。‘(z|f)ood’ 則匹配 「zood」 或 「food」。 //注意^$問題。
4>( ) :將 () 之間括起來的表達式定義爲「組」(group),而且將匹配這個表達式的字符保存到一個臨時區域,這個元字符在字符串提取的時候很是有用。把一些字符表示爲一個總體。改變優先級、定義提取組兩個做用。
5>  *:匹配0至多個在它以前的子表達式,和通配符*不要緊。例如正則表達式「zo*」(等同於z(o)*)能匹配 「z」 、「zo」以及 「zoo」;所以「.*」意味着可以匹配任意字符串。"z(b|c)*"→zb、zbc、zcb、zccc、zbbbccc。"z(ab)*"能匹配z、zab、zabab(用括號改變優先級)。
6>  + :匹配前面的子表達式一次或屢次,和*對比(0到屢次)。例如正則表達式9+匹配九、9九、999等。 「zo+」能匹配 「zo」以及 「zoo」 ,不能匹配"z"。
7>  ? :匹配前面的子表達式零次或一次。例如,「do(es)?」 能夠匹配 「do」 或 「does」 。通常用來匹配「可選部分」。(終止貪婪模式)
8>  {n} :匹配肯定的 n 次。「zo{2}」→zoo。例如,「e{2}」 不能匹配「bed」中的「e」,可是能匹配「seed」中的兩個「e」。 //seeeed,不能夠。
9>  {n,} :至少匹配n次。例如,「e{2,}」不能匹配「bed」中的「e」,但能匹配 「seeeeeeeed」中的全部「e」。
10>  {n,m} :最少匹配 n 次且最多匹配 m 次。「e{1,3}」將匹配「seeeeeeeed」中的前三個「e」。 {2,5}//bed,seed,seeed;beeeeed錯誤。
11>  ^(shift+6) :匹配一行的開始。例如正則表達式「^regex」可以匹配字符串「regex我會用」的開始,可是不能匹配「我會用regex」。
^另一種意思:非!([^0-9])
11>  $ :匹配行結束符。例如正則表達式「浮雲$」 可以匹配字符串「一切都是浮雲」的末尾,可是不能匹配字符串「浮雲呀」  

^abc,匹配一個正則表達式的開始
abcjflkdsjfkdsjf
888$,匹配一個正則表達式的結束。
積分多少快樂解放路口的手機費888

簡寫表達式
\d:表明一個數字,等同於[0-9]   \\d  →\d
\D:表明非數字,等同於[^0-9]
\s:表明換行符、Tab製表符等空白字符 ,(空格、回車、製表符)
\S:表明非空白字符(a0%$@@)
\w:匹配字母或數字或下劃線或漢字,即能組成單詞的字符,除%&#@!$等字符。[a-zA-Z0-9_漢字]
\W:非\w ,等同於[^\w] %  
d:digital;s:space、w:word。大寫就是「非」


Regex.IsMatch();  //判斷一個字符串是否匹配某個正則表達式
            
Regex.Match();  //從某個字符串中提取匹配正則表達式的某個子字符串

Regex.Matches();  //字符串提取,能夠提取全部匹配的字符串

Regex.Replace();  //字符串替換,把全部匹配正則表達式的字符串替換爲對應的字符串

驗證郵政編碼   string regex = "^\\d{6}$";
驗證身份證號碼 string iDregex = @"^(\d{15}$|^\d{18})$";

電話號碼類型如010-8888888或010-88888888或010xxxxxxx或0335-8888888或0335-88888888(區號-電話號),1008六、10000、9559五、9558八、13245678901
驗證電話號碼的正則   string reg = @"^(\d{3,4}\-?\d{7,8}|\d{5})$";  
郵箱驗證:  string regEmail = @"^[a-zA-Z0-9_\.]+@[a-zA-Z]+(\.[a-zA-Z]+)+$";

驗證IP:     @「^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$」。.是正則表達式中的特殊含義,所以須要轉義。進一步嚴謹:^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$ "

合法的日期格式「2008-08-08」。四位數字-兩位數字-兩位數字。@「^\d{4}\-\d{2}\-\d{2}$」,進一步嚴謹:^\d{4}\-((0[1-9])|(1[0-2]))-((0[1-9])|(1[0-9])|(2[0-9])|(3[0-1]))$

什麼是貪婪模式?
當正則表達式在字符串中找匹配的時候,假如匹配一個也行,多個也行,他會盡可能多的匹配最多。(?加在限定符(如+、*等))

委託:委託能夠存儲一個委託對象,也能夠把一個方法存儲到存儲到委託對象裏面,委託類型聲明一個委託對象,他指向的必須是一個委託對象,它直接指向一個方法內部也new一個委託對象,在委託對象裏面存儲了一個方法。(引用類型)
委託使用步驟:
1>定義一個委託類型(public  delegate void WeituoDelegate(參數);)
2>聲明一個委託變量(WeiTuodelegate wd=new WeiTuoDelegate(方法);)
3>調用委託 (if(wd!=null){//調用委託  //ed();  wd.Invoke();})

委託的做用就是:能夠在某個代碼內部,嵌入一段外部代碼,至關因而:注入,編寫這個類的人能夠先把這個類先寫好,用這個類的人能夠隨意擴展裏面的內容。在自定義控件中的事件會大量使用到委託(寫事件的時候會用到委託)
//能夠把靜態方法或者私有方法賦值給委託變量,賦值後只要使用到該委託變量的地方就能使用該方法,打破了訪問修飾符的限制。

匿名方法:當
lamdba表達式:編譯的時候會將lamdba表達式編譯成一個C#的匿名方法,可是使用lamdba表達式會在不少時候減小代碼量

委託的特性:1.具備相似於string同樣的不可變性。
          2.建議使用的時候儘可能少定義本身的委託,使用系統中已經有的委託。減小程序集中定義的類型的個數。

經過委託來實現事件的功能的問題:
1.能夠在類的外部來觸發。由於委託變量TripleClick的訪問修飾符爲public的,因此在外部任何地方均可以訪問。
2 若是把TripleClick的訪問修飾符修改爲private的,那麼的卻不能  在外部觸發,可是也不能在外部賦值。
3.因爲委託能夠使用=來賦值,因此,就有可能將前面的全部的已經註冊的事件 處理程序都覆蓋掉了

委託和事件的區別:
委託是數據類型,事件是一個委託變量。(事件最終是生成 1.一個私有的委託 2.兩個public的方法Add和Remove,分別用來實現事件的+=和-=)

事件:先聲明委託 public delegat void MyDelgate();  public Event MyDelegate MyClick


程序集  .dll .exe

XML(extensible markup language)

XML和HTML的且只有一個跟元素
2.XML中元素必須關閉
3.XML中屬性值必須 用引號
4.XML大小寫敏感(CseSensitive)


深拷貝:
淺拷貝:


Xml序列化:把一個對象寫成一個XML過程

把一個對象寫成流的過程叫作二進制序列化的過程

DSMS(Database Management System,數據庫管理系統)


主鍵的做用:保證表中的每條數據的惟一性。

========主鍵的特色============
1.主鍵不能重複
2.主鍵不能爲空

========主鍵的分類==============
1.>邏輯主鍵(選擇爲表中增長的那些"自動編號"或者"GUID"列做爲主鍵(沒有實際業務上的意義)的主鍵,叫作邏輯主鍵)
2.業務主鍵(選擇表中那些在業務中有實際意義的列做爲主鍵,叫作業務主鍵)

===========組合主鍵(不建議使用)=================
同時選擇多列做爲一個主鍵,叫作組合主鍵。(複合主鍵) 組合主鍵通常不建議使用
1>.主鍵,建議選擇那些通常不會被修改的列。
2.>選擇單列,不要選擇多列(不用組合主鍵)
3.>選擇那些簡單列(整數列(自動編號),)


bit數據類型在寫程序的時候只能用1(true)或0(false)來表示,可是在設計器中只能用true或false單詞來表示。

3.主鍵,建議選擇那些通常不會被修改的列


存儲字符串的幾種數據類型
char(10)
nchar(10)

varchar(10)
nvarchar(10)

varchar(max)
nvarchar(max)

------不建議使用text和ntext,推薦使用varchar(max)與narchar(max)--------
text
ntext

=================varchar與char的區別=======================
--可變長度,表示該列最多能夠存儲10個字節,若是實際存儲不夠10個字節,則會在存儲的時候自動計算一下實際的存儲個數,而動態的改變長度。【節省空間】

--可變長度
varchar(10)  
char(10)   固定長度,表示在數據庫中存儲的時候佔用10個字符的空間,若是超出10個則報錯,若是不夠則補全


===============nchar(10)、char(10)======================
nchar(10) 能夠存儲10個字母或者5個漢字
char 用來存儲數據的時候,英文佔1個字節,中文佔2個字節。因此若是是10個長度的char,能夠存儲10個字母或者是5個漢字,char或者varchar的小括號中的最大長度能夠寫8000。

nchar(10) 表示能夠存儲10個字母或10個漢字
nchar 來存儲數據的時候不管存儲的是中文仍是英文都是每一個字符佔2個字節。 最大能夠寫4000

SQL全名:結構化查詢語言(Structured Query Language)

SQL注意分DDL(數據定義語言,建表建庫等語言)、DML(數據操做語言)、和DCL(數據庫控制語言)
Create table 、Drop Table、Alter Table 等屬於DDL、select insert Update Delete等屬兔DML,GRA於EVOKE取消受權屬於DCL




SqlDataReader因爲每次向前走一條都會將上一條記錄銷燬,因此DataReader是隻進的(不能回頭)

SqlDataReader特性2:只能讀取數據不能修改數據,由於查詢出的數據集(結果集)是一個獨立的再服務器內存中的數據, 已經與源表沒有關係了。
當使用DataReader的時候必須保證Connection是open狀態。



建立了一個鏈接對象:SqlConnection conn=new SqlConnection();
conn.Open();
conn.Cloese();  
   conn並無關閉,一直處於打開狀態,當調用Close()方法的時候會把當前的鏈接對象放入到鏈接池中。

當下次再建立一個對象,若是該鏈接對象所使用的鏈接字符串與上次鏈接對象的鏈接字符串徹底一致(必須徹底一致,包括大小寫,空格) 這時,其實並不會真正的再建立一個數據庫的鏈接,而是使用鏈接池中現有的鏈接。



Ado.net鏈接池使用總結:
  1.第一次打開鏈接會建立一個鏈接對象。
  2.當這個鏈接關閉時。(調用Close()方法時)會將當期那鏈接對象放入池中。
  3.下一個鏈接對象,若是鏈接字符串與池中現有鏈接對象的鏈接字符串徹底一致,則會使用池中的現有鏈接,而不會重寫建立一個。
  4.只能對象調用Close()的時候纔會放入池中,若是一個鏈接對象一直在使用,則下次在建立一個鏈接對象發行池中沒有,也會再建立一個新鏈接對象。
  5.在池中的鏈接對象,若是過一段時間沒有被訪問則自動銷燬。




微軟企業庫:Enterprise Library
http://www.cnblogs.com/kyo-yo/tag/%E5%BE%AE%E8%BD%AF%E4%BC%81%E4%B8%9A%E5%BA%93/

彙集索引(聚簇索引):當數據實際的存儲順序,與索引的順序一致就把該索引叫聚簇索引。
非彙集索引(非聚簇索引):當索引中數據的順序與數據實際存儲的順序不一致的時候,該索引叫非彙集索引。

填充因子


面試題:
 單張表A數據量過百萬,關聯表B數據過千萬,如何查詢優化?
  把A表可能用到數據提到臨時表1中,把B表可能用到的數據提取到臨時表2中,而後再進行查詢(緣由:1.放到臨時表中數據量變小了,2.臨時表只用來查詢性能高(減小不少增刪改) 3.在內存裏面查詢速度灰常快)
  通常過千萬的都不會存在一張表中,用分表來存儲(主動分區 和被動分區)

 
視圖 優勢:
  篩選表中的行\下降數據庫的複雜程序
  防止未經許可的用戶敏感數據


事務:  能夠回滾 錯誤的代碼 照成的損失


存儲過程:
  1.執行速度更快 --在數據庫中保存的存儲過程語句都是編譯過的
  2.容許模塊化程序設計--相似方法的服用
  3.提升系統安全性--防止SQL注入
  4.減小網絡流量-只要傳輸 存儲過程的名稱

存儲過程與select對比:1.減小解析編譯的過程 2.靈活:業務邏輯編號的時候直接改存儲過程就能夠,程序不用從新編譯部署 3.直接使用存儲過程的話,全部業務邏輯都放到存儲過程裏面了。

呼叫中心(Call Center):
   計算機與電信集成技術(CTI)(來電顯示等)
   CRM(客戶關係管理,Customer Relationship Managerment)。 CRM不必定非要和CTI集合。和CTI集成之後就有了自動化的過程。
   OA(Office Automation):MIS(Management information System,信息管理系統,什麼都是MIS系統)
   ERP(Enterprise Resources Planning)


坐席(Seat)→電話後面坐着的客服。
    交換機(應用於具備成百上千的坐席的大型的呼叫中心)
     PK語音卡(200人如下,至關於共享上網,無需申請業務)


MD5(散列算法)
 1.不可逆
 2.同一只每次計算出來的ms5值都是相同的。
 3.不一樣的值計算出來的md5值是不一樣的。(理論上是兩個不一樣的值,是可能計算出相同的md5值)


Excel遇到大數據導出怎麼辦?
1》1.佔內存  2.Excel存儲的行有限的。3一個Excel中建立Sheet也有限。
2>太大數據量考慮文本文件(csv)或者xml

面試題:
  樹的深度遍歷和廣度遍歷
 深度遍歷就是把一個節點以及子節點都加上出來,而後再加載下一節點
 廣度遍歷就是把每一節點都加載出來,而後在加載每一個節點的下一節點。

遞歸刪除
   DelegateId(int id)
   //1,先根據id,查詢當前id下的全部子節點
   List<..>list=GetDataByPaRentId(id);

解耦:解除耦合,手機電池和手機就是高耦合(你的手機我不能用,互相的依賴度高),耳機和電腦就是低耦合。不要寫delete(TreeNode)


string? n1 = null;  //錯的,值類型才能用?,引用類型自己就能夠爲null


三層架構
 界面層(UI):用戶控件,採集數據,經用戶返回數據按某些方式顯示出來。(app.config)
 業務邏輯層BLL(Business是設數據返回不一樣的結果,判斷用戶是否鎖定,發帖時候作一些審覈
 數據訪問層DAL(Data Acess layer):拼接sql語句,出現各類數據庫的類,好比connection command

做用:
  解耦:1.分工合做,開發人員能夠專一於某一層。
        2.可移植性 3. 支出分佈式系統開發(基於網絡) 4.擴展性強。MSSQL、Oracle之間切換。

代碼生成器: 1. 動軟代碼生成器 2.CodeSmith(CodeSmith(支持VS2010包含三層模板文件)

partial 關鍵字:
   部分類( partial class),把一個類的定義放到多個cs文件中,類標註「partial 」,多個cs文件中定義的內容不能重複,多個cs文件合在一塊兒構成一個類(文件名任意,由於類的名字不必定要和文件名一致。)。部分類的應用:WinForm、ASPX中自動生成的界面和用戶編寫的代碼cs文件構成部分類,這樣就避免用戶誤修改自動生成的代碼。
用部分類能夠解決代碼生成器的代碼的擴展問題,不要修改自動生成的代碼文件,由於代碼生成器生成的DAL文件是部分類,這樣能夠編寫一個DAL的部分類文件,爲DAL增長一個方法。


  C# 怎麼把 網絡流(NetWorkStream) 拷貝 到 內存流(MemoryStream)

//流高級中網絡流與內存流中切換讀取,讀服務器上的excel文件
        //做此實驗  要建一個excel文件  讀取第一行第一列值
        //還要用cassiniDev server  建一個小型web服務器
        static void simple5()
        {
            WebClient wc = new WebClient();
            //wc.DownloadFile("http://localhost:32768/abc.xls", @"c:\\abc.xls");//由於擔憂安全問題,因此採用流讀取,能夠下載下來直接打開
            Stream stream= wc.OpenRead("http://localhost:32768/abc.xls");//因返回的是connectstream流,但他不支持來回讀取,此流不能用NPOI讀,因此把網絡流讀到內存中
            MemoryStream ms;//定義內存流
            using (stream)
            {
                ms = new MemoryStream();//建一個網絡流
                byte[] bytes = new byte[1024];
                int readbytes;
                while((readbytes=stream.Read(bytes,0,1024))>0)//把網絡流中複製到內存流中
                {
                    ms.Write(bytes, 0, readbytes);//一次讀寫1K
                }
            }
            using (ms)
            {
                HSSFWorkbook workbook = new HSSFWorkbook(ms);//用工做薄接收內存流
                HSSFSheet sheet = workbook.GetSheetAt(0);//取第一個表
                HSSFRow row = sheet.GetRow(0);//取第一行
                HSSFCell hc = row.GetCell(0);//取第一列
                Console.WriteLine(hc.StringCellValue);//輸出 王小明
            }
        }


中文與拼音轉換
D:\Program Files\Microsoft Visual Studio International Pack\Simplified Chinese Pin-Yin Conversion Library\

簡繁體轉換
D:\Program Files\Microsoft Visual Studio International Pack\Traditional Chinese to Simplified Chinese Conversion Library and Add-In Tool\


爲何不用別人的郵箱,要本身架設?
1 別人的郵箱有垃圾郵件攔截機制。 2. 安全性

 使用CSS的三種方式:1.元素內聯(h行內樣式表:直接寫在元素style屬性裏面);2.頁面嵌入:在頁面的head加入 ;3.外部引用(外部樣式表)

文檔流:1.position:absolute;絕對定位,即徹底脫離文檔流,相對於positio屬性非static值的最近元素偏移
        2.position:fixed; 固定定位即徹底脫離文檔流,相對於視區進行偏移
        3.position:relative;相對定位,這個屬性值保持隊形所在文檔流中的位置,相對於元素在文檔流中的位置進行偏移,但保留原佔位。
        4.position:static;默認值
佈局:表格佈局(加載的時候要等tr td所有加載完才能顯示,也不利於搜索引擎收入裏面的內容)
      框架佈局(很差控制佈局)
      div+css佈局()

//遇到換行的時候把單詞斷開
word-break:
    normal(中文會換行,普通的英文(帶空格的)遇到換行會按單詞換行,連續的英文不會換行)
    break-all(全部的文字該換行時都會換行,遇到單詞也會把單詞拆開來換行,不保留單詞完整性。)
    keep-all(英文仍是normal狀態,中文也不換行了。)
word-wrap;
    normal
    break-word(帶空格的保留單詞完整性,連續的英文也會換行,兼容FF)
overflow:
    visible
    scroll
    hidden
    auto
層內文字連續英文不換行的問題,word-break:break-all;
溢出處理。overflow:scroll,overflow:hide


 background-color:Red !important;  /*強制設置爲這個顏色,不事後面顏色有沒有改變都不變*/


Visual Studio 2008(支持jQuery智能提示的方法)
安裝補丁後js與jQuery都有智能提示
首先安裝:Visual Studio 2008 SP1補丁
而後再安裝: VS90SP1-KB958502-x86補丁(for jQuery)
使用jQuery的智能提示須要引入jQuery-1.x.x-vsdoc.js(或將該文件放在與jQuery-1.x.x.js的同目錄下)


javascript沒有塊級的做用域。


window.setInterval(code,delay)   //每隔一段時間執行指定的代碼(第一個參數是指定的代碼字符串,第二個參數:時間間隔(毫秒數))   var intervalId=setInterval("alert('hello');",1000)

window.clearInterval(intervalid);  //中止計時器

setTimeout


通用的HTML元素的事件:onclick(單擊)、ondblclick(雙擊)、onkeydown(按鍵按下)、onkeypress(點擊按鍵)、onkeyup(按鍵釋放)、onmousedown(鼠標按下)、onmousemove(鼠標移動)、onmouseout(鼠標離開元素範圍)、onmouseover(鼠標移動到元素範圍)、onmouseup(鼠標按鍵釋放)、oncontextmenu(在瀏覽器中單擊鼠標右鍵顯示」右鍵菜單」時觸發)等


 document.onmousemove = function() {
            //document.title = window.event.clientX + "==" + window.event.clientY;  //鼠標在瀏覽器上的位置
            //document.title = window.event.screenX + "==" + window.event.screenY;  //鼠標在屏幕上的位置;
            document.title = window.event.offsetX + "==" + window.event.offsetY;   //鼠標相對於事件源的位置
        }


動態禁止頁面跳轉的方法
 function btn_click() {
            var txt = document.getElementById("txt").value;
            if (txt.length == 0) {
                alert("請輸入用戶名");
                //讓文本框得到光標
                document.getElementById("txt").focus();
                //取消默認行爲的執行  submit action,不適用firefox
                window.event.returnValue = false;     //fifox是用e.preventDefault();
            }
        }

        //動態註冊時間..事件響應函數
        //只有在事件響應函數中return false;才能夠取消後續內容的執行

        window.onload = function() {
            //給a標籤動態註冊事件
            document.getElementById("alink").onclick = function() {
                alert("無權限");
                return false;
            };
        }

appName 返回瀏覽器名。IE 返回 'Microsoft Internet Explorer',NN 返回 'Netscape'。
下面的例子顯示了 appName 屬性的值:
document.write("navigator.appName 的值是 " + navigator.appName)

appVersion 返回瀏覽器版本,包括了大版本號、小版本號、語言、操做平臺等信息。
language 語言
mimeType 以數組表示所支持的MIME類型
platform 返回瀏覽器的操做平臺,對於 Windows 9x 上的瀏覽器,返回 'Win32'(大小寫可能有差別)。
userAgent 返回以上所有信息。例如,IE5.01 返回 'Mozilla/4.0 (compatible; MSIE 5.01; Windows 98)'。
plugins 以數組表示已安裝的外掛程序
javaEnabled() 返回一個布爾值,表明當前瀏覽器容許不容許 Java。


window.event.srcElement指最初引起事件的事件源(對象、元素)

取消事件冒泡: window.event.cancelBubble=true;//IE下的寫法。
               e.stopPropagation();  Firefox


window.onload與body的onload
1.兩者效果徹底同樣,都是在頁面內容都加載完畢後才觸發。
2.因爲網頁中沒有window因此在body中寫onload
3.建議使用window.onload//使用js腳本的方式高效
4.其實應該是document.onload,可是全部瀏覽器都實現到了window對象上。

動態建立DOM
=====================經常使用方法與屬性===========================
方法:
createElement(‘element’);
appendChild(node);
removeChild(node);
replaceChild(new,old);
insertBefore(new,參照);
屬性:
firstChild
lastChild

//經過js動態建立的元素,直接  右鍵→查看源碼是看不到的,須要經過「開發人員工具」才能看到。s


nodeType
nodeType 屬性可返回節點的類型。
nodeValue  //只能獲取文本節點和註釋節點的內容
最重要的節點類型是: 元素類型 節點類型 元素element 1 屬性attr 2 文本text 3 註釋comments 8 文檔document 9

children[]  //返回元素節點
childNodes[]  //獲取全部直接子節點 包括文本節點和屬性節點
parentNode() //獲取父節點
nextSibling //獲取下一個兄弟節點
previouSibling  //獲取上一個兄弟節點

value 獲取 設置 表單元素的值

innerText(FF不支持innerText,在FF下用textContent屬性)、innerHTML屬性

面試題:說說開發項目的時候不一樣瀏覽器的不一樣點,你是怎麼解決的?appendChild,insertCell,px
不一樣瀏覽器中對DOM支持的方法不同
獲取網頁中那個元素觸發了事件:在IE裏使用srcElement ;在FireFox裏使用target
使用Dom獲取和更改網頁標籤元素內文本:在IE裏使用innerText ;在FireFox裏使用textContent
動態爲網頁或元素綁定事件:在IE中綁定事件的方法是attachEvent ;在FireFox中綁定事件的方法是addEventListener (相似於多播委託。使用該方法是還有一些其餘的注意事項)
透明度:IE中filter:alpha(opacity=50);  firefo中opacity:0.5
動態建立表格的時候Ie是默認日後添加insertCell,而chrome是前往添加,因此在insertCell()後面加參數-1;
動態建立表格tr的時候若是沒有寫在tbody,在choome能夠顯示,ie有些版本顯示不出來、firefox顯示不了

更多http://www.360doc.com/content/09/0319/12/16915_2855107.shtml
en.Attribute()  獲取便籤的自定義屬性,在ie中能夠直接img.aa,可是其餘瀏覽器不兼容
label.setAttribute("for","t")

Jquery規則:  $(who).when({what});   例:  $('#a').click(function(){});


層次選擇器:
(1)$("div p")獲取div下的全部p元素(後代,子、子的子……)
(2)$("div > p")獲取div下的直接p子元素
(3)$(".menuitem + div")獲取樣式名爲menuitem以後的第一個div元素(不經常使用)
(4)$(".menuitem ~ div")獲取樣式名爲menuitem以後全部的div元素(不經常使用)


爲何jQuery中不多有屬性的用法,由於屬性寫法很難實現"鏈式編程"


:first 選取第一個元素。$("div:first")選取第一個<div>$(".warn:first");
:last 選取最後一個元素。$("div:last")選取最後一個<div>
:not(選擇器) 選取不知足「選擇器」條件的元素,$("input:not(.myClass)")選取樣式名不是myClass的<input>
:even、:odd,選取索引是奇數、偶數的元素:$("input:even")選取索引是奇數的<input>
:eq(索引序號)、:gt(索引序號)、:lt(索引序號) 選取索引等於、大於、小於索引序號的元素,好比$("input:lt(5)")選取索引小於5的<input>
$(":header")選取全部的h1……h6元素(*)
$("div:animated")選取正在執行動畫的<div>元素。 (*)


爲何大的網站都是使用一張大圖而不是多張小圖
由於瀏覽器去訪問服務器上面的一個頁面,瀏覽器返回僅僅是html代碼,而這個頁面去引用外部的css,js,圖片,瀏覽器要去解析,請求獲取圖片,若是有多張圖片就要獲取屢次。而是用一張大圖只要獲取一次就能夠了


擴展方法:靜態類、靜態方法、this

字節數據轉換成字符串:String
System.Text.Encoding.UTF8.GetString(byte[])
字符串轉換成字節數組:byte[]
System.Text.Encoding.UTF8.GetBites(String)

一個進程能夠有多個應用程序域,一個應用程序域能夠執行多個線程,可是同一時間線程只能在一個應用程序域中執行。
應用程序域含:異常處理、代碼安全

AddDel del=new AddDel();
del.BeginInvoke(1,2,回調函數,回調函數狀態)
  第一步:從線程池裏獲取一個線程
  第二步:執行委託執行的方法(在工做線程裏面執行)
  第三步:調用回調函數(能夠爲null)

FIFO(普通列先進先出) 。FILO(本地工做項的隊列是先進後出)
工做任務請求隊列的時間是不肯定的,


解決死鎖:從代碼級別:操做資源的順序一致。

TCP/IP(Transmission Control Protocol/Internet Protocol)即傳輸控制協議/網間協議,是一個工業標準的協議集,它是爲廣域網(WANs)設計的。
UDP(User Data Protocol,用戶數據報協議)是與TCP相對應的協議。它是屬於TCP/IP協議族中的一種。
應用層 (Application):應用層是個很普遍的概念,有一些基本相同的系統級 TCP/IP 應用以及應用協議,也有許多的企業商業應用和互聯網應用。
傳輸層 (Transport):傳輸層包括 UDP 和 TCP,UDP 幾乎不對報文進行檢查,而 TCP 提供傳輸保證。
網絡層 (Network):網絡層協議由一系列協議組成,包括 ICMP、IGMP、RIP、OSPF、IP(v4,v6) 等。
鏈路層 (Link):又稱爲物理數據網絡接口層,負責報文傳輸。


socket的三次握手
第1次:程序1發了一小段消息給程序2
第2次:程序2解析程序1發送來的消息,發送指定的消息給程序1
第3次:程序1發送確認消息


Socket (): 建立一個Socket
Bind(): 綁定一個本地的IP和端口號(IPEndPoint)
Listen(): 讓Socket偵聽傳入的鏈接嘗試,並指定偵聽隊列容量
Connect(): 初始化與另外一個Socket的鏈接
Accept(): 接收鏈接並返回一個新的socket
Send(): 輸出數據到Socket
Receive(): 從Socket中讀取數據
Close(): 關閉Socket (銷燬鏈接)

端口查詢 netstat -a -n

網絡編程幫助  netstat /?

端口分爲如下三類:
(1)公認端口(Well Known Ports):從0到1023,它們緊密綁定(binding)於一些服務。一般這些端口的通信 明確代表了某種服務的協議。例如:80端口實際上老是HTTP通信。
(2)註冊端口(Registered Ports):從1024到49151。它們鬆散地綁定於一些服務。也就是說有許多服務綁定於 這些端口,這些端口一樣用於許多其它目的。例如:許多系統處理動態端口從1024左右開始。
(3)動態和/或私有端口(Dynamic and/or Private Ports):從49152到65535。理論上,不該爲服務分配這些端 口。實際上,機器一般從1024起分配動態端口。但也有例外:SUN的RPC端口從32768開
    始。


用httpwatch查看訪問一個網站的響應狀況。敲入一個網址後,瀏覽器向服務器發出請求。頁面中的圖片、js、css在單獨的請求中。
GET / HTTP/1.1表示向服務器用GET方式請求首頁,使用HTTP/1.1協議
Accept-Encoding gzip, deflate表示瀏覽器支持gzip、deflate兩種壓縮算法
Accept-Language zh-cn 表示瀏覽器支持的語言,不少進入後自動就是中文界面的國際網站就是經過讀取這個頭的值實現的。
Connection Keep-Alive。通常狀況下,一旦Web服務器向瀏覽器發送了請求數據,它就要關閉TCP鏈接,
而後若是瀏覽器或者服務器在其頭信息加入了Connection:keep-alive,則TCP鏈接在發送後將仍然保持打開狀態,因而,瀏覽器能夠繼續經過相同的鏈接發送請求。保持鏈接節省了爲每一個請求創建新鏈接所需的時間,還節約了網絡帶寬。
Cookie是瀏覽器向服務器發送和當前網站關聯的Cookie,這樣在服務器端也能讀取瀏覽器端的Cookie了。
User-Agent爲瀏覽器的版本信息。經過這個信息能夠讀取瀏覽器是IE仍是FireFox、支持的插件、.Net版本等。


異步委託的做用:異步委託用來bicom -t
telnet www.baidu.com 80

編譯的原理
瀏覽器==>服務器==>服務器軟件(IIS)==》.NET FrameWork==》請求頁面(判斷是否在內存中是否有機器碼,判斷C盤中是否有中間代碼文件,將domo.aspx和制定的Demo.aspx.cs頁面類進行合併用中間語言(IL)編譯成一個類,默認存儲在C盤中)

第一次請求網頁的時候爲何慢?由於第一次在內存中沒有機器碼、C盤中沒有中間代碼,要將頁面的代碼和頁面的.cs頁面類進行合併用中間語言,編譯成一個類。默認存儲在C盤中

表單提交數據:input texteare select 能夠提交到後臺,必須有name屬性纔回提交,並且提交數據的時候以name爲key,以value屬性爲值 ,若是這個標籤是disable的那麼也不會提交到後臺


優化dome:好比作報警系統的時候,表可能進行大量的增刪改的時候,自己有加索引的會影響增刪改的速度。把一個表拆分紅兩個表,一個是當前表,一個是歷史表,由於當前表可能進行大量的增刪改,而歷史數據通常進行查詢適合見索引,而後使用數據庫裏面一個照,天天讓他自動導數據

//ctrl+m+l  快速展開  ctr+m+o  快速摺疊

淘寶圖片存放的原理:圖片用名用GUID命名,給服務器請求獲取圖片,客戶端發過來的是圖片的Id(由GUID生成的),後臺handler拿到Id,而後在圖片表裏面找圖片的相對路徑地址,而後圖片表把圖片的存放的服務器ID編號傳給數據庫表,在圖片服務器表根據服務器ID編號進行查詢服務器IP和具體路徑,而後把圖片的目錄與圖片的相對路徑結合,根據服務器IP地址進行查詢獲取圖片

集羣技術
LVS
NLB
網絡負載均衡(nlbmanager.msc技術)
F5:硬件

Myspbeis
多IIS、多主庫多從庫(數據庫),主庫用來寫入,從庫用來讀取
垂直分庫(模塊間的低耦合:用戶模塊、新聞模塊、博客模塊)
水平分庫(表分區:把同一個表的數據文件分派到不一樣的數據庫文件裏面,這樣不一樣的文件能夠放到不一樣的磁盤上面,這樣能夠利用多個磁頭增長數據庫的訪問速度)
不行在把數據放到服務器的緩存裏面,用空間換時間
NOccode(如新浪,把多個列轉換爲一個列)   nonjoadb
Context-Type

應用程序池:HttpApplication實例的建立是根據Gloable.asax文件編譯後的類型,再經過反射的方式建立的實例,因此建立實例都灰常消耗時間和資源,則使用對象池技術

頁面週期: 1.建立控件樹 2初始化頁面控件(幫控件賦值默認值) 3處理viewstate(建立控件樹的實例)
4 load(把表單提交過來的新值放到控件上) 5調用事件響應方法 6保存viewState 7渲染html

Response其餘成員
響應的緩衝輸出:爲了提升服務器的性能,ASP.Net向瀏覽器Write的時候默認並不會每Write一次都會當即輸出到瀏覽器,而是會緩存數據,到合適的時機或者響應結束纔會將緩衝區中的數據一塊兒發送到瀏覽器。
Response對象的主要成員:
一、Response.Buffer、Response.BufferOutput:通過Reflector反編譯,發現兩個屬性是同樣的,Buffer內部就是調用的BufferOutput。這個屬性用來控制是否採用響應緩存,默認是true。
二、Response.Flush()將緩衝區中的數據發送給瀏覽器。這在須要將Write出來的內容當即輸出到瀏覽器的場合很是適用。案例:大批量數據的導入,顯示正在導入第*條數據,用Thread.Sleep模擬耗時。
三、Response.Clear()清空緩存區中的數據,這樣在緩存區中的沒有發送到瀏覽器端的數據被清空,不會被髮送到瀏覽器。
四、Response.ContentEncoding輸出流的編碼。
五、Response.ContentType 輸出流的內容類型,好比是html(text/html)仍是普通文本(text/plain)仍是JPEG圖片(image/JPEG)。



Request其餘成員:
一、Request.UrlReferrer 請求的來源,能夠根據這個判斷從百度搜的哪一個關鍵詞、防下載盜鏈、防圖片盜鏈,能夠僞造(好比迅雷)。 (使用全局通常處理程序)
二、Request.UserHostAddress得到訪問者的IP地址
三、Request.MapPath(virtulPath)將虛擬路徑轉換爲磁盤上的物理路徑,Request.MapPath("./a/b.aspx")就會獲得D:\2008\WebSites\WebSite4\a\b.aspx
Server.MapPath裏就是調用的Request.MapPath

HttpUtility.HtmlDecode(); //將html進行編碼
HttpUtility.HtmlEncode(); //將html js進行轉換爲字符串
 HttpUtility.UrlDecode();  //將url編碼數組轉換爲字符串
HttpUtility.UrlEncode();   //將字符串數組轉換爲url編碼字符串

 <% Server.Execute("a.aspx"); %>
      <hr />
 <% Server.Execute("b.aspx"); %>   <!--Execute:執行另一個頁面的腳本-->
<%Server.Transfer("a.aspx"); %>  <!--Transfer:服務器獲取新的url地址->

ViewState保存狀態:適合當前頁面屢次跟服務器交互,非表單控件,不能把數據提交到後臺,只能經過ViewState

若是服務器兩次都輸出同一個名稱的Cookie,瀏覽器會怎麼辦? 覆蓋
若是服務器輸出兩個不一樣名的Cookie,瀏覽器怎麼辦?  添加
如何刪除瀏覽器Cookie?  服務器設置過時時間,response給用戶

cookie.Path(爲指定的文件夾生成Cookie)
cookie.Domain (域/域名)
Response.Cookies和Request.Cookies中間的關係 – 有共用部分


四種 彈出登陸失敗提示
1. Response.Write("<script>alert('登陸成功!')</script>");

2. <script type="text/javascript">
     <%=JsScriptData %>
    </script>
 public string JsScriptData;
JsScriptData = "alert('登陸鳥人了...吧')";

3. this.RegisterStartupScript("key1", "<script>alert('登陸鳥人了...吧')</script>");

4. Page.ClientScript.RegisterClientScriptBlock(GetType(), "key3", "alert('登陸成功')", true);

思考:怎麼來模擬實現session:先經過靜態變量來存儲session
   後面項目:分佈式緩存+cookie id
session在維護灰常消耗性能

在webconfig中禁用cookie來傳遞sessionid能夠經過url的方式傳遞sessionid,若是瀏覽器把cookie禁用了,這時候session每次都是新建的。

AJAX:」Asynchronous JavaScript and XML」
中文意思:異步JavaScript和XML。
指一種建立交互式網頁應用的網頁開發技術。

不是指一種單一的技術,而是有機地利用了一系列相關的技術:
簡單理解爲:JavaScript + XMLHttpRequest + CSS +服務器端 的集合.


Ajax request和response

 $(function() {
            $("#btnGetDate").click(function() {
                var xhr;
                //第一步:建立異步請求的核心的對象
                if (XMLHttpRequest) {
                    xhr = new XMLHttpRequest();  //運行:ie8  ie9,chrom,ff
                }
                else {  //ie6 ie5
                    xhr = new ActiveXObject("XMLHttpRequest");
                }

                //第二步:設置請求對象跟後臺哪一個頁面進行交互
                //HTTP請求方法名  請求的頁面 是不是異步
                xhr.open("Get", "ProcessAjax.ashx?p=3", true);

                //第三步:發送請求
                xhr.send();
                //第四步:後臺返回數據後,會調用此方法,回調函數
                xhr.onreadystatechange = function(data) {

                    //4標識:前臺已經接收完了後臺發送來的響應報文
                    if (xhr.readyState == 4) {
                        //if (xhr.status == 200) {
                        //alert(data);                      
                        alert(xhr.responseText);
                    }
                };    

                /*//post請求
                xhr.open("Post", "ProcessAjax.ashx", true);
                //post經過此來傳遞參數
                xhr.send("ip=3&enp=100");
                //Post請求要設置一下請求頭部
                xhr.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded");

                xhr.onreadystatechange = function(data) {

                    //4標識:前臺已經接收完了後臺發送來的響應報文
                    if (xhr.readyState == 4) {
                        //if (xhr.status == 200) {
                        //alert(data);                      
                        alert(xhr.responseText);
                    }
                };  */
            });

        })C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data


四種數據提交後臺的方法
$(function() {
            $("#btnGetJSon").click(function() {
                $.getJSON("ResponJSon.ashx", "a=3&b=4", function(data) {
                    alert(data[1].CityName);
                });
            });

            $("#btnJQGet").click(function() {
                $.get("ResponJSon.ashx", "dd=33", function(data) {
                    alert(data);
                });
            });

            /*$("#btnJQPost").click(function() {
            $.post("ResponJSon.ashx", {dd:33,demo:'shit'}, function(data) {
            alert(data);
            })
            }); */
            $("#btnJQPost").click(function() {
                $.post("ResponJSon.ashx", { dd: 33, demo: 'shit' }, function(data) {
                    alert(data[0].CityName);
                }, "json");
            });

            $("#btnAjax").click(function() {
                $.ajax({ url: "ResponJSon.ashx",
                    data: "a=3&b=4",
                    type: "Post",
                    success: function(data) {
                        alert(data);
                        // $("#divDemo").text(data);
                    },
                    errot: function() {
                        alert("錯誤");
                    }
                });
            });
            $("#btnLoad").click(function() {
            $("#divDemo").load("ResponJSon.ashx", { id: 333 }, function(data) {
                    alert(data);
                });
            });
        })


上傳圖片到服務器
  //下載官網 http://jquery.malsup.com/form/#download 下載地址
 $("@form1").ajaxSubmit({
            success:function(str){
            },
            error:function(error){alert(error);},
            url: '/ggodManaGer/Goods/ImageHandler.ashx', //設置post提交到的也你按
            type:"post",  //設置表單以post方法提交
            dataType:"json" //設置返回值類型爲文本
            })


在index.aspx頁面頭部寫上AutoEventWireup="false"  ,Page_Load, ***事件都不執行

在index.aspx頁面頭部寫上Trace="true",開始頁面追蹤
在Refleact,Search上System.Web.UI.Page,找到ProcessRequest方法,在找到 this.ProcessRequest(true, true);, this.FrameworkInitialize();用來是初始化頁面控件數, this.ProcessRequestMain()處理頁面控件數的過程

獲取服務器控件生成在客戶端的ID:alert("<%=this.Button1.ClientID %>");

解決多個上下文亂的問題:1.單例模式(缺陷:由於會幫咱們緩存的是實體,實體隨着查詢的增多後,佔用內存會瘋長) 2.使用線程惟一的方法。也就是:每次請求一個新的實例(指的是aspnet webform mvc不包括winform)  三、只要用就新建一個新的實例(在方法內就new一個實例,性能最差,當前請求內不能共享查閱出來的實體 的緩存)。


//面向接口編程
//第7-8事件,建立IHttpHandler的實例:通常處理程序給接口,也能夠把Page類給它

//第11-12事件之間執行IhttpHandler的實例ProcessRequest方法

HttpApplication和HttpModule通常是在Init方法裏面註冊事件。


服務器端控件高效率分頁
Repeater:CRUD
  第一步:到BLL層服務對象裏面去添加兩個方法,返回一共多少條,返回當前當前頁的數據
  第二步:設置數據源,設置到咱們添加的方法crud的方法,而後刪除
   <SelectParameters>
                <asp:Parameter DefaultValue=" " Name="start" Type="Int32" />
                <asp:Parameter DefaultValue=" " Name="count" Type="Int32" />
   </SelectParameters>
 第三步:設置ListView;設置刪除須要的配置:DataKeyNames="Id",不要啓動分頁
 第四步:設置分頁控件DataPage,將當前的分頁控件指向ListView
  第五步:設置數據源的方法

EF 跨數據庫支持
目前已有數個數據庫廠商或元件開發商宣佈要支持 ADO.NET Entity Framework:
  (1) Core Lab,支持Oracle、MySQL、PostgreSQL 與 SQLite 數據庫。
  (2) IBM,實現 DB2 使用的 LINQ Provider。
  (3) MySQL,發展 MySQL Server 所用的 Provider。
  (4) Npqsql,發展 PostgreSQL 所用的 Provider。
  (5) OpenLink Software,發展支持多種數據庫所用的 Provider。
  (6) Phoenix Software International,發展支持 SQLite 數據庫的 Provider。
  (7) Sybase,將支持 Anywhere 數據庫。
  (8) VistaDB Software,將支持 VistaDB 數據庫。
  (9) DataDirect Technologies,發展支持多種數據庫所用的 Provider。
  (10) Firebird,支持 Firebird 數據庫。

學習資料:http://www.cnblogs.com/xray2005/category/189491.html
英文參考書
個人BLOG: http://www.cnblogs.com/fly_dragon/


CallContext和多線程(http://www.cnblogs.com/vwxyzh/archive/2009/02/21/1395416.html
):當對另外一個 AppDomain 中的對象進行遠程方法調用時,當前的 CallContext 類生成一個將與該調用一塊兒傳播到遠程位置的 LogicalCallContext。CallContext 是相似於方法調用的線程本地存儲區的專用集合對象,並提供對每一個邏輯執行線程都惟一的數據槽。數據槽不在其餘邏輯線程上的調用上下文之間共享。當 CallContext 沿執行代碼路徑往返傳播而且由該路徑中的各個對象檢查時,可將對象添加到其中。只有公開 ILogicalThreadAffinative 接口並存儲在 CallContext 中的對象被傳播到 AppDomain 外部。

MVC
Controller:
必須以Controller結尾
//控制器下面的全部的 方法都稱做Action
控制器必須實現Icontroller
控制器不能是靜態類

View:每一個控制器都對應本身一個文件夾

若是IIS出問題:兩個命令 cmd裏面aspnet_regiis -i         vs命令行裏面也執行下
若是W3WP.EXE仍是不行沒啓動的話(查看你發佈那個網站的基本設置,而後進行編輯網站,點擊測試設置「身份驗證」和「受權」都成功才能夠(若是是受權不成功則在編輯網站裏面點擊"鏈接爲"設置特定用戶,如"Administrator(不能沒有密碼)"),設置成功以後在重啓下整個站點,而後瀏覽當前項目所在的網站裏面有個"瀏覽",在進程裏面有出現W3WP.EXE就好了), 在VS的Debug裏面把 顯示全部用戶的進程和顯示全部session的進程都勾上就能夠看到W3WP.EXE了。

EF上下文實例的管理:就是幫咱們生成sql腳本,EF上下文實例的管理是經過線程內惟一的方式實現的,其實他就是跟EF上下文應用程序跟數據庫一次會話的邊界。
NH:Session

DatimeTime-DateTime=TimeSpan;

網站的SEO基本原則:全部但願搜索引擎抓取的內容都應該是經過超連接(Get請求)得到的,Post得到的內容、js腳本打開的頁面是沒法被搜索引擎抓取的,因此儘可能不要JS、Post來進行頁面導航、內容的生成。搜索引擎通常不會執行JS、不會發Post請求。
由於LinkButton是執行JavaScript向服務器發請求來進行Redirect,而蜘蛛不會執行JS,因此儘可能不要用LinkButton。
內嵌js生成的超連接是搜索引擎看不到的。服務器端動態生成的內容是能夠被蜘蛛看到的,客戶端瀏覽器(蜘蛛)不知道服務器是動態生成的仍是靜態文件,只有Response。蜘蛛只分析靜態的HTML內容,不會去執行JS。
SEO友好的AJAX:作一個簡單的根據參數來得到一、二、3三個文章的AJAX效果。
蜘蛛程序是下載Get請求的結果,而不是下載aspx源碼。
聊SEO的時候說的一個很牛的技巧:<a href=「GetArticle.ashx?Id=1」 onclick=「ShowArticle(1);return false;」>文章1</a>,也對不支持JavaScript的瀏覽器提供友好的使用。

1.用戶上傳視頻文件
注意:調整運行文件的大小:
ASP.NET爲了防止過大的http惡意請求阻塞網站,全部每次上傳文件最大4M,ASP.NET1.1中把用戶上傳的文件先放到內存中,2.0後若是上傳的文件過大(默認256K)則會把文件保存到磁盤中。
不要修改全局的web.config來解除限制,保證安全,只對視頻上傳的ashx文件夾添加獨立的web.config
<system.web>
    <httpRuntime maxRequestLength="204800" requestLengthDiskThreshold="1024"/>
</system.web>

maxRequestLength表示最大上傳文件的長度(KB爲單位)。requestLengthDiskThreshold表示最多上傳204800k(200M),大於1024K之後保存到磁盤上,防止暫用內存空間。

經過根文件夾和子文件夾中設置不一樣的AppSettings值來看待:子文件夾中的Web.Config,能夠覆蓋父文件夾中的設置,這樣對於上傳的文件夾才把上傳限制放開200MB

2.啓動FFMepg進行轉碼、抓縮略圖
最牛的:利用ddmpeg讓用戶上傳任意格式的視頻、生成預覽圖片、動態gif預覽圖片,而後轉換爲flv、多線程。
     //建立並啓動一個新進程
            Process p = new Process();
            //設置進程啓動信息屬性StartInfo,這是ProcessStartInfo類,包括了一些屬性和方法
            p.StartInfo.FileName = Server.MapPath("/ffmpeg/ffmpeg.exe");  //程序名
            p.StartInfo.UseShellExecute = false;
            //-y選項的意思是當輸出文件存在的時候自動覆蓋輸出文件,不提示"y/n"這樣才能自動化

            //string srcFileName = Server.MapPath("/Video/aa.avi");
            //string destFile = Server.MapPath("/Video/1.jpg");
            //p.StartInfo.Arguments = "-i" + srcFileName + " -y -f image2 -ss 53 -t 0.001 -s 600x500 " + destFile; //執行參數


            string srcFileName = Server.MapPath("Video/aa.avi");
            string destFileName = Server.MapPath("Video/a.flv");
            p.StartInfo.Arguments = "-i" + srcFileName + " -y -ab 56 -ar 22050 -b 800 -r 29.97 -s 420x340" + destFileName;  //執行參數

            p.StartInfo.RedirectStandardInput = true;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.RedirectStandardError = true; //把外部程序錯誤輸出寫到StandardError流中

            p.ErrorDataReceived += new DataReceivedEventHandler(p_ErrorDataReceived);
            p.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived);
            p.Start();
            p.BeginErrorReadLine(); //開始異步讀取
            p.WaitForExit(); //阻塞等待進程結束
            p.Close(); //關閉進程

轉碼結束後p.WaitForExit*( 纔會返回
這樣在轉碼、抓圖結束後在數據庫中添加一條記錄(建一個和視頻表:Id、Title、FlvPath、Flv的路徑、ThumPath:縮略圖的路徑)

3.作一個頁面展現全部的視頻,點擊某個視頻後打開頁面,使用OsFLVPlayer播放視頻
VidieoList.aspx。ViewVideo.aspx?Id=5

Winphone
WP項目生成的是XAP格式,XAP的安裝和卸載由系統控制,避免流氓軟件。
XAP會安裝到系統爲每一個應用分配的以ProductID爲文件夾,必須放到這個文件夾下。    
XAP實際上是壓縮包,安裝過程聽說把XAP解壓到ProductID文件夾的過程。

XAP原理
「生成操做=Content」是放到XAP壓縮包中,"生成操做=Resource,資源"是放在dll中的。Content效率高

XAML是編譯生成到dll的資源中,而後容許時經過LoadComponent加載xaml文件,不像asp.net中aspx和cs

那樣的繼承關係


xaml就是嚴格的xaml文件格式,每個標籤都是一個元素,有的標籤還能夠父容器

佈局(Layout)就是控制子元素控件大小和位置的技術

Silverlight中Canvas、StackPanel、Grid三種基本佈局容器,放在佈局容器中的控件按照佈局容器的特色進行佈局。

winphone設置起始頁Properties下面的<tasks> 下面的<DefaultTask> 裏面的NaviigationPage

Marketplace的審覈
不要覺得能運行經過微軟就會審覈經過,盜版:使用未經受權的圖片音樂等,明顯的抄襲,海天學院事件,經過ProductID,微軟發現之後就把之後就把全部的海天出品軟件"下架":普通下架和召回。蘋果也有UUID事件!API限制:微軟限制若是有讀取GPS的功能,必須提供關閉讀取GPS的選項:軟件啓動時也要容許讀取GPS,XAP最大90MB;

ISAPIRUNTIME中的ProcessRequest方法查看管道流程
System.Web.Routing 查看路由的流程。
Httpapplication 的ApplicationStepManager方法中的BuildSteps的方法查看application管道的具體工做,而 MapIntegratedHttpHandler則查看怎麼要映射.

asp.net mvc是怎麼進入管道的(管道模型)

區域功能:經過 區域功能實現,將多個項目部署到一個站點
項目生成的時候,能夠知道生成的目錄的路徑,另外能夠控制生成後的事件來幫咱們作copy 子項目文件夾到主站點的工做


分卷壓縮(MvcThreeLayer)

這是類型參數約束,.NET支持的類型參數約束有如下五種:
where T : struct                               | T必須是一個結構類型
where T : class                               
where T : new()                               | T必需要有一個無參構造函數
where T : NameOfBaseClass          | T必須繼承名爲NameOfBaseClass的類
where T : NameOfInterface             | T必須實現名爲NameOfInterface的接口
(如  public interface IBaseRepository<T> where T : class, new() )
路由配置,過濾器

sqlutility
查詢某個數據庫裏面的全部的表:exec sp_tables  
查詢某個表的有哪些列 :exec sp_columns '表名'

VSS 2005及VSS教程
svn
Visual SourceSafe
memcache(分佈式緩存)

mongodb :使用場景並非來取代關係型數據庫的,互相補充,互相輔助
key-value:
  爲何快:1.全部的操做幾乎都是在內存裏面進行的。而後他會選擇合適的時機進行持久化到磁盤上。2.nosql就一個列,key-value,也沒有表和表的關係。

memcache:搭建使用。

J2EE:SSH=Spring+Struts+Hibernate
NET:Spring.Net+Aspnet mvc+NHibernate
(http://www.cnblogs.com/GoodHelper/tag/Spring.NET/
開源框架完美組合之Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文雙語言小型企業網站Demo
)
Spring.NET is an application framework that provides comprehensive infrastructual support for developing infrastructural support for developing enterprise .NET applications.

ORM:全部實際實現了ORM框架,都是實現一個綜藝的入口,開發人員經過這個綜藝入口對錶實體進行Crud操做,而後ORM框架自動幫咱們監控實體狀態的變化,而後根據實體的狀態生成相依的sql腳本,而後調用底層的ADONET執行到數據庫裏面去影響到表的變化。


練習Htmlhelper的控件的使用
ActionLink           超級連接
BeginForm          form提交
CheckBox           多選框
DropDownList     下來列表框
Hidden                 隱藏域
ListBox                 列表
Password             密碼框
RadioButton         單選
TextArea               文本域
TextBox                 文本框

MvcContrib
開源地址:http://mvccontrib.codeplex.com/
Html.Grid(Model)擴展方法介紹
View中添加:<%@ Import Namespace="MvcContrib.UI.Grid" %>


獲取Asp.Net MVC3.0安裝包http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=4211
獲取源碼(代碼發給你們)http://aspnet.codeplex.com/wikipage?title=MVC&referringTitle=Home

Web Forms  Vs MVC
MVC優勢
    一、很容易將複雜的應用分紅M、V、C三個組件模型
    經過model、view和controller有效的簡化了複雜的架構,體現了很好的隔離原則
     二、由於沒有使用server-based forms 。因此咱們程序員控  制的更加靈活,頁面加乾淨
     三、能夠控制生成自定義的url。對於seo友好的url更是不在話下
    四、強類型View實現,更安全、更可靠、更高效。
     五、讓web開發能夠專一於某一層。更利於分工配合適用於大型架構開發
     六、不少企業已經使用MVC做爲項目開發框架,招聘明確要求熟悉MVC開發模式,我如今作的項目架構就是mvc+ef+wcf+…
(馬倫:。http://www.cnblogs.com/fly_dragon/
malun666@126.com  QQ:515154084


HTML5中的結構標籤:
<section>標籤:定義文檔中的節
<article>:獨立的、完整的相關內容塊
nav標籤:頁面導航的連接組
aside:標籤用來裝載非正文的內容
<header>標籤訂義文檔的頁眉
footer標籤訂義section或document的頁腳

演示繪製圓形
演示繪製三角形
演示繪製圖片
http://www.cnblogs.com/lhb25/archive/2011/06/03/great-examples-of-html5-power.html


VS擴展插件的地址:http://visualstudiogallery.msdn.microsoft.com/


WCF中的ABC :
Endpoints是WCF實現通訊的核心要素。一個WCF Service由一個Endpoints集合組成,每一個Endpoint就是用於通訊的入口,客戶端和服務端經過Endpoint交換信息。
Endpoint由三部分組成:Address,Binding,Contract。便於記憶,咱們每每將這三部分稱爲是Endpoint的WCF ABC。
Address: Address經過一個URI惟一地標識一個Endpoint,並告訴潛在的WCF service的調用者如何找到這個Endpoint。因此Address解決了Where to locate the WCF Service?
Binding: Binding實如今Client和Service通訊的全部底層細節。好比Client與Service之間傳遞的Message是如何編碼的—— text/XML, binary,MTOM;這種Message的傳遞是採用的哪一種Transport——TCP, Http, Named Pipe, MSMQ; 以及採用怎樣的機制解決Secure Messaging的問題——SSL,Message Level Security。因此Binding解決的是How to communicate with service?
Co    ntract: Contract的主要的做用是暴露某個WCF Service所提供的全部有效的Functionality。從Message Exchange的層面上講,Contract其實是抱每一個Operation轉化成爲相對應的Message Exchange Pattern——MEP(Request/Response; One-way; Duplex)。因此Contract解決的是What functionalities do the Service provide?


在HTML5中,window.navigator對象添加了一個geolocation屬性。經過geolocation的API對此屬性進行操做,就能夠處理瀏覽器的地理信息
獲取當前地理信息:navigator.geolocation.getCurrentPosition(successCallback, errorCallback);//參數一:獲取成功的 相應方法,第二:出錯處理函數
   函數: function successCallback(position) {}
   position:表明position對象實例,屬性:latitude(經度);longitude(經度的精度)altitude(緯度);accuracy(緯度的精度);altitudeAccuracy;heading;speed;verticalSpeed;

WP項目生成的是XAP格式,XAP的安裝和卸載由系統控制,避免瀏覽軟件。XAP會安裝到系統爲每一個應用分配的以ProductID爲文件夾下,必須放到這個文件夾下。 XAP其實就是壓縮包。安裝過程就是把XAP解壓到ProductID文件夾的過程。

"生成操做=Content(內容)"是放到XAP壓縮包中的,"生成操做=Resource(資源)"是放到dll中。
XAML是編譯生成到dll的資源中的,而後容許時經過LoadComponent加載xaml文件。
XAML就是嚴格xml格式,每個標籤就是一個元素。 有的標籤就是能夠是父容器

WP 開放常去的網站:wpxap.com,xda(國外是正版,xda.cn)
dft:dark force team,黑暗軍團、qdppc
ROM:Ghost

Silverlight的界面都是使用畫刷(Brush)畫出來的,能夠改變不一樣的畫刷畫不一樣的內容:
SolidColorBrush:實心顏色畫刷
LinearGradientBrush:漸變畫刷
RadialGradientBrush:徑向漸變畫刷(以圓心散射)
ImageBrush:圖片畫刷
Brush類型的屬性均可以指定各類Brush,好比Button的Foreground屬性、Rectangle(矩形圖形)的Fill屬性。
        <Rectangle>
            <Rectangle.Fill>
                <SolidColorBrush>Red</SolidColorBrush>
            </Rectangle.Fill>
        </Rectangle>

變換Transform:
RotateTransform:旋轉變換。
ScaleTransform:縮放變換。
SkewTransform:傾斜變換。
TranslateTransform:平移變換。

Silverlight推薦用Tap(點擊) 、DoubleTap(雙擊)、Hold(長按保持一段時間)

用戶控件實現等待控件:繼承自UserControl,使用的時候先在頭部引用所在的命名空間和程序集,而且給一個別名:xmlns:ctrls="clr-namespace:PhoneApp1.Strls" 而後就能夠
<ctrls:WaitingControl x:Name="wc1"></ctrls:WaitingControl>使用了。
自定義控件:繼承現有的控件,給控件加更多功能。
用戶控件 是組合現有控件,自定義控件是繼承現有控件增長更多功能。

1.XAML 中全部的屬性都能當樣式使用。
2. 能夠在根節點的Resources屬性中Style:
   <phone:PhoneApplicationPage.Resources>
      <Style TargetType="TextBox" x:Name="defaultText">
            <Setter Property="Background" Value="Yellow"></Setter>
            <Setter Property="BorderBrush" Value="SteelBlue"></Setter>
        </Style>
 </phone:PhoneApplicationPage.Resources>
若是沒有設定x:Name或者x:Key,那麼則應用於做用範圍以內的全部同類型的控件,不然須要
  <TextBox Height="154" Style="{StaticResource txtSuper1}"  來引用樣式
3. 樣式文件
 新建一個xaml文件(沒有嚮導),模版:
 <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Style TargetType="Button" x:Key="rb1">
        <Setter Property="Foreground" Value="Red"></Setter>
    </Style>
    <Style TargetType="TextBox" x:Key="tbStyle1">
        <Setter Property="Background" Value="Gold"></Setter>
        <Setter Property="BorderBrush" Value="Green"></Setter>
    </Style>
</ResourceDictionary>
而後再頁面中
  <phone:PhoneApplicationPage.Resources>
        <ResourceDictionary Source="DefaultStyle.xaml">
        </ResourceDictionary>
    </phone:PhoneApplicationPage.Resources>
4. 若是說整個程序的樣式就一分,那麼能夠聲明到App.xaml的Resources中,整個應用程序全局共享。
  <Application.Resources>
        <Style TargetType="CheckBox">
            <Setter Property="Foreground" Value="Yellow"></Setter>
        </Style>
        <Style TargetType="CheckBox" x:Key="checkboxStyle2">
            <Setter Property="Foreground" Value="Yellow"></Setter>
        </Style>
    </Application.Resources>


1.動態修改圖片地址:image1.Source = new BitmapImage(new Uri("Images/00_09.jpg", UriKind.Relative));
1.如何經過代碼修改元素的Cavans.Top、Grid.Row
 Canvas.SetTop(btn1, Canvas.GetTop(btn1) + 30);

後臺修改皮膚
 ResourceDictionary newStyle = new ResourceDictionary();
            newStyle.Source = new Uri("/PhoneApp1;component/換膚/小清新.xaml", UriKind.RelativeOrAbsolute);
            ApplySkin(newStyle);   //程序集重點資源的Uri路徑格式: "程序集名:component/路徑"

 private static void ApplySkin(ResourceDictionary newStyle)
        {
            //就是動態把"資源字典"加載到app.xaml中。
            App.Current.Resources.MergedDictionaries.Clear();
            App.Current.Resources.MergedDictionaries.Add(newStyle);
        }




若是要求界面隨着Model變,則須要繼承DependencyObject或者實現INotifyPropertyChanged

 public class Person : DependencyObject
    {
        //靜態的、DependencyProperty類型、屬性名+Property=DependencyProperty.Register("屬性名",typeof(屬性類型),typeof(所屬類),null);
        public static DependencyProperty NameProperty = DependencyProperty.Register("Name",typeof(string),typeof(Person),null);
        public String Name
        {
            get { return (string)GetValue(NameProperty); }
            set
            {
                //name = value;
                SetValue(NameProperty,value);
            }
        }

    public class Person:INotifyPropertyChanged
    {
        private string name;
        public String Name
        {
            get { return name; }
            set
            {
                name = value;
                if (PropertyChanged != null)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs("Name"));
                }
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;
    }

2.給控件設定DataContext
 <TextBox Height="72" Name="textBox1" Text="{Binding Name}"   DataContext="{StaticResource p1}"  />

3.上下文DataContext能夠設定到父節點上,子節點默認繼承父容器DataContext。
子控件能夠單獨設置DataContext覆蓋父容器繼承的DataContext

4.Text="{Binding}"表示屬性值把綁定到DataContext自己,而不是某個屬性。

5.手機訪問PC時是兩個系統的訪問,由於不可以127.0.0.1,要使用PC的IP或者機器名。手機和PC鏈接後位於一個虛擬機網絡中。Windows Phone鏈接到PC之後就可以經過PC的網絡上網、

6.Silverlight 中不能在非UI線程中訪問UI線程的控件。繼承自DependencyObject的類都是UI線程的東東,都必須在UI線程建立。
要使用 this.Dispatcher.BeginInvoke(() => { textBlock1.Text = "hello"; });來在非UI線程中更新UI線程。

7.要求集合的數據變化反映到UI上,則集合對象要實現INotifyCollectionChanged接口,通常使用系統預約義的ObservableCollection<Book> 類

Winphone三種綁定模式:
OneTime:一次綁定,綁定建立時使用源數據更新控件。(能夠是普通的set、get屬性)。
OneWay (默認值):單向綁定,在綁定建立時使用源數據更新控件,當源數據發生變化的時候也更新控件。(必須實現INotifyPropertyChanged接口或者繼承自DependencyObject)。至關於Eval
TwoWay:雙向綁定,數據源的變化會更新控件,控件的變化也會更新到數據源。(必須實現INotifyPropertyChanged接口或者繼承自DependencyObject)。至關於Bind

Winphone手機方向(*)
手機有Landscape(橫放)、Portrait(直立)兩個基本方向。能夠設置頁面的SupportedOrientations屬性來設置當方向發生變化的時候頁面是否自動調整。Orientation屬性爲當前手機方向。覆蓋頁面的OnOrientationChanged方法來編寫當頁面方向改變時的代碼。模擬器中如何翻轉手機
ApplicationBar
ApplicationBarIconButton是圖片按鈕,IconUri指向項目中的圖片,圖片的「生成操做( BuildAction )」要設置爲「內容(Content)」,有Click事件;思考:沒有Command屬性,怎麼MVVM綁定Command?ApplicationBarMenuItem是菜單項,Text屬性爲菜單文本,有Click事件。圖片必須是PNG格式,圖片的大小48*48,不須要本身畫圈。WPDT中有一些經常使用的圖片(須要改系統的默認背景顏色),路徑見備註,傻瓜製做工具:Metro Studio

如何在代碼中動態修改ApplicationBar:ApplicationBar中的按鈕、菜單沒法用FindName找到,因此即便給控件Name,也爲null
ApplicationBarIconButton btn = (ApplicationBarIconButton)ApplicationBar.Buttons[1];
btn.IconUri = new Uri("/Images/appbar.check.rest.png",UriKind.Relative);

SIP:SoftInputPanel,軟鍵盤
點擊「abcd」、「&123」能夠在數字鍵盤和字母鍵盤之間切換。如何設置不一樣中文輸入法(九宮格、手寫等)
設置文本框的InputScope屬性(因爲模擬器條件所限,在傳智播客WP7模擬器中,要設置phone:TextBoxEx.InputScope屬性),可選值:Number、TelephoneNumber、EmailNameOrAddress等(全部可選值見InputScopeNameValue枚舉)

await async

VisualTree:可視化樹

windows phone 頁面導航
WP7中是沒有對話框的概念的,不一樣的界面是不一樣的頁,相似於網頁,經過NavigationService.Navigate(new Uri(「/RadioTestPage.xaml」,UriKind.Relative))來在不一樣的頁面間導航。
NavigationService屬性的方法:GoBack()後退;GoForward()前進;CanGoBack屬性判斷是否能夠後退(是否有以前的頁面,若是沒有以前頁面,再調用GoBack() 會報錯)。
頁面三個和頁面導航相關的四個虛方法:
OnNavigatedTo:當頁面成爲活動頁面時調用。e.NavigationMode得知是新來的(New)仍是後退進來的(Back)仍是前進來的(forward)
OnNavigatedFrom:當頁面再也不是活動頁面時調用
OnNavigatingFrom:在頁面即將再也不是活動頁面時調用,實現確認是否退出
OnBackKeyPress:當用戶按下手機上的後退鍵的時候調用,也能夠實現點擊圖片在Popup中顯示大圖,而後按後退鍵關閉大圖Popup的功能。
WP頁面的生命週期:每次導航回來的時候還會複用以前的頁面對象(不會構造多個對象,構造函數只調用一次),以前動態建立的元素也都有(和DOM同樣),但每次都會前後觸發OnNavigatedTo和Loaded,在OnNavigatedTo 中能夠經過e. NavigationMode得知是後退進入仍是第一次進入(IsPostBack),所以能夠更好的控制邏輯,建議把全部初始化代碼放到OnNavigatedTo ,並考慮NavigationMode 。
經過ListPicker的使用不當的Bug看爲何應該把初始化寫到OnNavigatedTo


如何給頁面添加翻轉動畫
使用Silverlight Toolkit,app.xaml.cs裏面RootFrame = new PhoneApplicationFrame();改爲 RootFrame = new TransitionFrame();
頁面xaml中添加toolkit的xmlns
在頁面的<phone:PhoneApplicationPage>元素下添加備註中的代碼
若是頁面比較多每一個頁面都想要效果,那麼能夠將效果做爲樣式添加到全局樣式中。
<toolkit:NavigationInTransition.Backward>等地方切換不一樣的切換動畫效果。
(備註:<toolkit:TransitionService.NavigationInTransition> <toolkit:NavigationInTransition> <toolkit:NavigationInTransition.Backward> <toolkit:TurnstileTransition Mode="BackwardIn"/> </toolkit:NavigationInTransition.Backward> <toolkit:NavigationInTransition.Forward> <toolkit:TurnstileTransition Mode="ForwardIn"/> </toolkit:NavigationInTransition.Forward> </toolkit:NavigationInTransition> </toolkit:TransitionService.NavigationInTransition> <toolkit:TransitionService.NavigationOutTransition> <toolkit:NavigationOutTransition> <toolkit:NavigationOutTransition.Backward> <toolkit:TurnstileTransition Mode="BackwardOut"/> </toolkit:NavigationOutTransition.Backward> <toolkit:NavigationOutTransition.Forward> <toolkit:TurnstileTransition Mode="ForwardOut"/> </toolkit:NavigationOutTransition.Forward> </toolkit:NavigationOutTransition> </toolkit:TransitionService.NavigationOutTransition>
)

經常使用的Task
全部Task都有Show方法,調用Show方法啓動任務,任務執行完畢通常會返回應用。全部任務都不是自動啓動,而是須要用戶手動點擊啓動,是WP7基於安全考慮,防止泄密、吸費等問題。沒法用來實現批量發短信。全部Task都須要用戶手動觸發執行。這些Task監視工具都看不到,經過電腦攝像頭看。
SmsComposeTask:啓動發送短信的任務,能夠經過To、Body兩個屬性設置對方號碼和短信內容。注意Show之後只是顯示發送界面。
EmailComposeTask:發郵件的任務,能夠經過Subject 、 Body 、To 、 Cc屬性設置標題、內容、收件人、抄送。
WebBrowserTask:打開網頁的任務,能夠經過URL屬性設置要打開網頁的地址。實現二維碼軟件的「在線購買」功能
PhoneCallTask:撥打電話的任務,能夠經過PhoneNumber、DisplayName屬性設置撥打的號碼和顯示的名稱。實現「在軟件。
有一些須要獲得執行結果的任務,這些任務通常都從ChooserBase繼承,監聽Completed事件,從e中能夠得到執行結果,全部e任務都有屬性TaskResult表示執行結果(OK執行成功,Cancel任務被取消),Error表示執行過程當中的異常信息(若是沒有異常就是null)。
SavePhoneNumberTask:保存聯繫人(People)號碼。
PhoneNumberChooserTask:選擇電話號碼,e. PhoneNumber爲選擇的電話號碼。能夠實現支付寶手機客戶端的「給手機充值」功能中讓用戶選擇用戶,自動填充手機號碼。
如下CameraCaptureTask等和攝像頭、音樂、圖片等和媒體相關的要用WPConnect鏈接,不能用Zune鏈接。
CameraCaptureTask啓動拍照任務,e. ChosenPhoto爲拍照的圖片流。(代碼在備註中)。模擬器用電腦攝像頭模擬手機攝像頭,若是電腦沒有攝像頭能夠拖入圖片或者wmv視頻。
PhotoChooserTask選擇圖片的任務, e. ChosenPhoto爲拍照的圖片流。PixelHeight、PixelWidth屬性爲要選擇圖片的尺寸,若是設置了這兩個屬性則會提供圖片截取的功能(能夠用來實現上傳QQ頭像的功能),ShowCamera爲是否容許用戶拍照。實現微博的插入圖片功能。
戶拍照。實現微博的插入圖片功能。

系統信息(*)
DeviceStatus類能夠得到一些系統、硬件的信息。DeviceManufacturer:設備生產商、DeviceName:設備名稱、DeviceUniqueId:設備惟一編號、DeviceFirmwareVersion:設備固件版本、DeviceHardwareVersion:設備硬件版本、DeviceTotalMemory:設備總內存、ApplicationCurrentMemoryUsage(應用當前內存佔用)、ApplicationPeakMemoryUsage(應用峯值內存佔用)、PowerSource是否連了充電器,PowerSourceChanged能夠得到充電器連上、斷掉的事件。
沒法得到手機號、sim卡編號、ip地址等信息。防止應用偷偷手機用戶手機號,好比一個免費的炒股軟件手機用戶手機號,而後再打電話推銷。
NetworkInterface類(注意是Microsoft.Phone.Net.NetworkInformation命名空間下)能夠得到網絡信息,NetworkInterface. GetInternetInterface()能夠得到實例對象,NetworkInterfaceType屬性能夠得到當前網絡類型(Wifi、GSM或CDMA等),GetIsNetworkAvailable()方法(bool類型返回值)判斷當前是否有可用網絡。UCWeb的Wifi網絡下的優化、手機版迅雷當處於非wifi網絡會提示用戶:真的要下載嗎:墨跡天氣也是檢查GetIsNetworkAvailable告訴用戶「沒有可用網絡」。API很簡單,能夠實現的功能不簡單。
WIFI;經過無線路由器上網。
獲取屏幕大小:能夠經過Application.Current.RootVisual.RenderSize得到屏幕尺寸,可是在首頁面的NavigatedTo方法中取到的是0,由於RootVisual尚未加載。所以最好使用Application.Current.Host.Content.ActualWidth、Application.Current.Host.Content.ActualHeight得到尺寸


windoows phone手機瀏覽器項目
WMAppManifest.xml和配置,添加圖標、配置啓動畫面等
瀏覽器內核使用WebBrowser,核心是IE,PC上不少瀏覽器也是使用IE內核。Windows Phone上只有IE瀏覽器內核,UC等都是使用它。在Microsoft.Phone.dll的Microsoft.Phone.Controls命名空間的WebBrowser下。Navigate方法用戶導航到指定頁面。
本機測試本身搭建一個網站就能夠,因爲是跨網絡,所以使用IIS或者CassiniDev 4等當服務器。
WebBrowser屬性:IsScriptEnabled是否啓用腳本執行,默認是False;Source當前地址。
WebBrowser的事件:LoadCompleted頁面全部元素加載完畢;Navigated已經完成加載網頁;Navigating正在導航;NavigationFailed導航失敗,好比服務器沒法鏈接等;ScriptNotify,網頁內調用window.external.notify會觸發ScriptNotify,實現網頁調用.Net的方法。這就是用JS寫網頁應用的PhoneGap原理(example下是實例,templates下是模板)。


windowsphone 瀏覽器的窗口大小控制
 <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no;" />
width - viewport的寬度 height - viewport的高度 initial-scale - 初始的縮放比例 minimum-scale - 容許用戶縮放到的最小比例 maximum-scale - 容許用戶縮放到的最大比例 user-scalable - 用戶是否能夠手動縮放
   <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, user-scalable=no;" />
    <meta http-equiv="Content-type" content="text/html; charset=utf-8"/>


WebBrowser控件方法
InvokeScript調用頁面中的js方法,第一個參數爲方法名,能夠經過第二個參數傳遞參數,返回值爲string類型。注意:方法必須明確的返回string類型,不然都是返回」」,不能return 1;而是return 「1」;toString()方法
執行一段JS代碼的方法:IE中的系統函數execScript能夠接受傳遞一段JS代碼去執行;拿不到返回值。應用:前進後退:history.back()、history.forward()。案例:3g.baidu.com自動填表提交。
思考:編寫一個無污染的執行一段帶返回值的JS代碼的通用方法。答案見備註。應用:得到標題、得到文本框的值。
NavigateToString在瀏覽器中顯示一段html代碼。若是中文可能會亂碼,使用備註中的代碼ConvertExtendedAscii把中文轉碼便可
SaveToString獲得瀏覽器中的HTML內容。
自定義瀏覽器端錯誤頁:響應NavigationFailed方法,動態生成內容(從Content中讀取模板),NavigationFailed中直接NavigateToString在模擬器中會閃退,多線程解決。錯誤頁中能夠點擊重試,也能夠訪問推薦的站點。


 /// <summary>
        /// 解決NavigateToString亂碼問題
        /// </summary>
        /// <param name="html"></param>
        /// <returns></returns>
        private static string ConvertExtendedAscii(string html)
        {
            StringBuilder sb = new StringBuilder();
            foreach (var c in html)
            {
              int charInt = Convert.ToInt32(c);
              if (charInt > 127)
                 sb.AppendFormat("&#{0};", charInt);
              else
                 sb.Append(c);
            }
            return sb.ToString();
        }

 public void ExecuteScript(string js)
        {
            browser.InvokeScript("execScript", new string[] { js });
        }

        /// <summary>
        /// 調用方法
        /// </summary>
        /// <param name="methodName"></param>
        /// <param name="args"></param>
        /// <returns></returns>
        public string InvokeFunction(string methodName, params string[] args)
        {
            return (string)browser.InvokeScript(methodName, args);
        }

        /// <summary>
        /// 執行一個帶返回值的代碼段,返回值必須是string類型
        /// </summary>
        /// <param name="code"></param>
        /// <returns></returns>
        public string ExecuteReturnableScript(string code)
        {
            //生成一個臨時的方法,採用Guid做爲方法名,避免衝突
            string tempFuncName = "f" + Guid.NewGuid().ToString("N");
            //生成方法定義
            ExecuteScript("window."+tempFuncName+"=function(){"+code+"}");
            //調用臨時方法
            string retVal = InvokeFunction(tempFuncName);
            //銷燬臨時方法
            ExecuteScript("window." + tempFuncName + "=undefined;");
            return retVal;
        }



winphone  
一、URL的正則表達式:@"http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?"
二、FocusManager.GetFocusedElement()得到當前焦點空間
三、放置圖標到桌面
 /// <summary>
        /// 放置圖標到桌面
        /// </summary>
        /// <param name="title"></param>
        /// <param name="image"></param>
        /// <param name="backTitle"></param>
        /// <param name="backContent"></param>
        /// <param name="backImage"></param>
        /// <param name="url"></param>
        public static void PinToStart(string title, string image, string backTitle, string backContent, string backImage, string url)
        {
            //若是存在則刪除,並在下面從新Pin到桌面
            ShellTile oldTile = ShellTile.ActiveTiles.FirstOrDefault
                (e => e.NavigationUri.ToString().Contains(url));  //引用System.linq;
            if (oldTile != null)
            {
                oldTile.Delete();
            }

            //生成Tile
            StandardTileData myTile = new StandardTileData
            {
                BackgroundImage = new Uri(image, UriKind.Relative),
                Title = title,
                Count = 0,
                BackTitle = backTitle,
                BackContent = backContent,
                BackBackgroundImage = new Uri(backImage, UriKind.Relative)
            };
            //固定到開始界面
            ShellTile.Create(new Uri(url, UriKind.Relative), myTile);
        }

 CommonHelper.PinToStart(title,
                "/Contents/BgIcon.png", title, title,
                "", "/MainPage.xaml?starturl=" + Uri.EscapeDataString(url));


Windows phone 7 讀取xml的方法
 /// <summary>
        /// 從XML文件中加載歷史記錄
        /// </summary>
        public void Load()
        {
            IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication();
            if (isf.FileExists("History.xml"))  //若是文件不存在(第一次),則不加載!
            {
                return;
            }
            //加載xml
            using (Stream stream = isf.OpenFile("History.xml",FileMode.Open))
            {
                //添加System.Xml.Linq;
                XDocument xdoc = XDocument.Load(stream);
                foreach (var elementItem in xdoc.Root.Elements())
                {
                    string Title = elementItem.Attribute("Title").Value;
                    string url= elementItem.Attribute("Url").Value;
                    string LastVisitDateTime = elementItem.Attribute("LastVisitDateTime").Value;

                    HistoryItem item = new HistoryItem();
                    item.Title = Title;
                    item.Url = url;
                    item.LastVisitDateTime = Convert.ToDateTime(LastVisitDateTime);
                    Items.Add(item);
                }
            }
        }


//Windows phone 7 保存xml的方法
   /// 保存歷史記錄
        /// </summary>
        public void Save()
        {
            IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication();
            if (isf.FileExists("History.xml"))
            {
                isf.CreateFile("History.xml").Close();
            }
            using (Stream stream = isf.OpenFile("History.xml",FileMode.Open))
            {
                XDocument xdocument = new XDocument(new XElement("Items"));
                foreach (var item in Items)
                {
                    XElement element = new XElement("Item");
                    element.SetAttributeValue("Title",item.Title);
                    element.SetAttributeValue("Url",item.Url);
                    element.SetAttributeValue("LastVisitDateTime",item.LastVisitDateTime);
                    xdocument.Root.Add(element);
                }
                xdocument.Save(stream);
            }
        }



SEO
對於開發人員來說:搜索引擎只認get請求得到的原始代碼;制人頁面中的a標籤,而且不能是href="javascript:";
案例
不要用<a href="javascript:document.location='http://www.rupeng.com'">如鵬網</a>
不要用LinkButton的Onclick中來作Response.Redirect,由於生成的是js
不要在頁面找中動態經過js生成超連接,而應該像「車品彙」同樣先把鏈接都生成都頁面中,只是隱藏,而後經過js來控制不一樣稱的顯示。

實現AJax,經過指定onclick和href,讓普通用戶走onclick的ajax效果,搜索引擎蜘蛛走href。


Lucenet.net(下載地址:https://lucenenet.apache.org/)
盤古分詞(下載地址:http://pangusegment.codeplex.com/releases/view/46545)
盤古使用:
1.把PanGu4Lucene_V2.3.1.0.zip的PanGu.Lucene.Analyzer.dll、PanGu.dll添加到項目引用
2.把分詞算法改爲Analyzer analyzer = new PanGuAnalyzer(); ,根據報錯信息把PanGuDictionaries.zip中的文件解壓到相應目錄。
若是須要修改詞庫,使用DictManage.exe打開Dict.dct進行修改(若是說找不到'XXX\Dict.dct',緣由是這個文件默認是在\bin文件夾下面(bin的子文件夾也能夠))
  Analyzer analyzer = new PanGuAnalyzer();
            TokenStream tokenStream = analyzer.TokenStream("", new StringReader("北京,Hi歡迎大家你們情人節快到了,你們去哈姆拉多了,--哈默拉多。"));
            Lucene.Net.Analysis.Token token = null;
            while ((token = tokenStream.Next()) != null)  //只要還有詞,就不返回null   //高版本不支持
            {
                //Console.WriteLine(token.TermText());
      

                 string word = token.TermText();  //tokenStream.Next()爲當前分的詞。
                Response.Write(word+" <br/>");
            }


隊列(先入先出): Queue、ConcurrentQueue(*線程安全,多線程中用這個) 。 棧(*):Stack:先進後出
發郵件、發短信偶爾會碰見半個小時才收到的狀況就是在排隊處理。
C# 信號量(Semaphore)
ManualResetEvent
Redis分佈式隊列
Quartz.Net是一個定時任務框架,能夠實現異常靈活的定時任務,開發人員只要編寫少許代碼就能夠實現"每隔1小時執行任務"、"每個月18日的下午執行8次"等各類定時任務。

OCR圖片識別軟件

session喜歡丟值且佔內存,Cookie不安全 (Profile)


unity多開的方法
好比原本在桌面有一個快捷鍵,而後複製一份,Windows上: 修改快捷方式的屬性。 在後面加上個 -projectPath, 例如:   "D:\Program Files\Unity\Editor\Unity.exe" -projectPath 。注意-projectPath前面還有個空格符。  有時候運行的時候窗口底部會報一個找不到路徑的錯誤,無所謂,clear一次就行

flex(在線編輯器,如在線股票波動,在線ps編輯器等)

問題2 如何經過代碼動態添加控件?
 TextBox tb = new TextBox();
sp1.Children.Add(tb);
問題3 以及動態定位控件?
 TextBox  tb1=(TextBox)FindName("動態TXT1");  //至關於GetElementById()
問題4:winform 或者wp7 WebBrowser空間 如何控制在打開網頁以前我就禁止圖片或者媒體?

若是類從FrameworkElement(有Name屬性,全部可以使控件都是從FrameworkElement繼承),則能夠使用Name爲元素命名,若是不是從FrameworkElement繼承,就用x:Name類命名。

問題:RepeaterDemo.aspx  綁定數據 顯,

問題:實體數據模型嚮導 鏈接  中的從數據庫生成,「是在鏈接字符串中包括敏感數據」 沒辦法選中

問題:純靜態的 網頁 會 緩存 不能獲取到最新的 數據(http://zhidao.baidu.com/question/535148546.html)  IE會出現,可讓html不緩存
解決:使用「Last-Modified和ETag」(http://www.itlearner.com/article/4228)

如何遠程數據庫下載東西回本地

如何使用新浪微博、QQ等第三方賬號進行登陸

購物車不用登錄頁也能添加到購物車裏面,用的是cookie


DataSet DataAdapter DataTable  區別

如何配置錯誤頁面
用分佈式緩存模擬session

攻擊類型:IIS,注入式攻擊,xxs(跨站腳本攻擊),CSRF(跨站請求僞造)

ViewStateDecoder2.zip
jqzoom_v2.2

win 7 沒語言功能(Text To Speech)

驗證正則表達式(傳智 馬倫)
slideToggle();

dht(網絡爬蟲)


IndentGuilde.vsix    JSEnhancements.vsix  JsParser_pachage_3,5.vsix

Httpwatch、debug

Test Socket 工具
請求管道中國的19個事件

 function window_load(){
    var str = "Test String";
    //將字串放進剪貼板,執行完這個html頁面後,你能夠打開一個文本文件,按ctr+v看看.
    clipboardData.setData("text",str);
    
    //從剪貼板取值的方法,
    //clipboardData.getData("text");
    //清空剪貼板的方法
    //clipboardData.clearData();    
  }



流媒體:作在線學習網站、視頻網站

瀏覽器IE會自動彈出打印窗口
ASP.NET中的正則表達式.mht

WebRTC

蔣金楠

李建忠 設計模式21種  webcast視頻  ireaper

電腦沒辦法點擊 處理程序映射

異聯網的項目 html .net

執行帶參數的方法(搖獎機)

webcast 視頻

www.aa25.cn/layout/
asp.net頁面生命週期.chm

jq怎麼獲取當前節點的父節點   用js而後再轉換

爲何添加a 超連接沒有出現  innerText


ocr  圖文識別
lis[j].removeAttribute("class", "");  沒法移除
jquery 1.6_EN.chm   jquery幫助文檔

第一是《structure and interpretation of computer programs》這本書,用 scheme (lisp 的一種)
另外一個就是上課編譯原理,還有寫相似 yacc 的 compiler-compiler

Websaver.exe或則debugar能夠看到網址禁止複製的文字

HTML、JS壓縮和混淆。去掉空格、縮短變量名,讓html尺寸更小,提升下載速度(Googlr Closure Compiler、YUI Compressor、JsPacker)
DirectX編程

Lucene.NET(搜索引擎:http://home.cnblogs.com/group/topic/4683.html)

SharePoint (團隊開發 部署)
TCP網絡編程、
Wecservice 、WCF
ISA Server
ArcGIS()地理空間信息技術)

lanp架構(淘寶初期:LAMP)

robots.txt(搜索引擎公約)
INFORMATIC(信息)

amCharts股票走勢圖
使用 jQuery 和 KnockoutJS 開發在線股票走勢圖應用
內涵圖的製做(把兩個文件的Stream合在一塊兒)
GDI(using System.Drawing)

node.js (一個後端的Javascript運行環境(支持的系統包括*nux、Windows))
V8 JavaScript 引擎(能閱讀執行JavaScript源代碼的解釋器)

Windows Phone 7高級編程(超級實用的的WP7教程 經典紅皮書)
windows Phone 7程序設計
(Windows Phone 7(含7.8)SDK 下載地址
Windows Phone 7.1
http://go.microsoft.com/fwlink/?LinkID=226694

Windows Phone 7.1.1
英文版
http://download.microsoft.com/download/5/6/C/56C12272-31DA-44CD-BBA3-603AA47FE564/WPSDK-7.1.1-KB2669191-x86.exe

中文版
http://download.microsoft.com/download/9/B/1/9B1EAE94-B328-451E-AF9D-89BD73CDA9E0/WPSDK-7.1.1-KB2669187-x86.exe

Windows Phone 7.8
英文版
http://www.microsoft.com/en-us/download/details.aspx?id=36474

中文版
http://www.microsoft.com/zh-cn/download/details.aspx?id=36474

系統要求:
支持的操做系統: Windows 7, Windows Vista

Windows Vista(x86 和 x64)Service Pack 2 - 除 Starter Edition 以外的全部版本
Windows 7(x86 和 x64)- 除 Starter Edition 以外的全部版本
安裝須要系統驅動器上有 4 GB 可用磁盤空間。
3 GB 內存
Windows Phone Emulator 要求有使用 WDDM 1.1 驅動程序的支持 DirectX 10 或更高版本的圖形卡

Windows Phone SDK 7.1 與 Visual Studio 2010 SP1 的最終版本兼容。
 )

SDK(WPDT:Windows Phone Develop Toolkit)

《windows phone 7高級編程》

《windows phone 7程序設計》


ZONE下載地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=27163

微軟爲開發者:WPConnect(Program Files\Microsoft SDKs\Windows Phone\v7.1\Tools)
 
Windows Developer Toolkit
微軟地址:http://www.microsoft.com/en-us/download/details.aspx?id=13890
(我安裝完Windows Developer Toolkit會把vs2010 sp1把刪除某些功能,而致使不能打開vs,有重裝安裝vs 2010 sp1,因此最好在安裝sp1以前安裝)

reflector插件下載地址:http://reflectoraddins.codeplex.com/releases

coding4fun下載地址:http://coding4fun.codeplex.com/

silverlight toolkit  for window phone 下載:http://silverlight.codeplex.com/releases


數據庫優化的實現
第一步:
《海量數據庫解決方案》
第二步:
《數據庫系統實現》
第三步
google的三大論文(bigtable ,hdfs,map reduce)



算法類型:遞歸、回朔、八皇后問題

博客園 job.cnblogs.com
前程無憂 51job.com   智聯
廣深地區 www.cjol.com/shenzhen/    人才熱線

-------版權聲明:筆記大部分傳智博客的歷史培訓內容(可是建議你們自學就行了,不要報什麼培訓機構)javascript

相關文章
相關標籤/搜索