



版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第一天1、基礎(chǔ)加強(qiáng)的主要內(nèi)容>第一天:面向?qū)ο螅镜诙⑷?常用類(lèi)庫(kù)(字符串、集合、文件)>第四天:一點(diǎn)點(diǎn)理論、和正則表達(dá)式(匹配提取為主)>第五天:XML處理(半天,簡(jiǎn)單)與委托事件>第六天:反射2、面向?qū)ο驣nt?Num=null!〃可空類(lèi)型>什么是面向?qū)ο?要求對(duì)象去做事->使用代碼寫(xiě)ー個(gè)計(jì)算器->面向過(guò)程:1、輸入數(shù)字和運(yùn)算符;2、進(jìn)行計(jì)算;3、得到結(jié)果->對(duì)象對(duì)象:1,找對(duì)象(工具new);2、調(diào)用輸入的方法;3、得到結(jié)果->面向?qū)ο笾皇侨藗優(yōu)榱吮阌陂_(kāi)發(fā)和維護(hù)而提出的ー種觀點(diǎn)(代碼的組織形式)->三大特征>封裝性;打包,便于管理誕生;為了解決大型項(xiàng)目的維護(hù)與管理>繼承性:拿來(lái)主義什么是繼承性:將一個(gè)類(lèi)庫(kù)作為原始模板,在其上擴(kuò)展另外的類(lèi)庫(kù)帶來(lái)的優(yōu)勢(shì):解決代碼的冗余特征:單根性(C#和Java類(lèi)語(yǔ)言的特征)、傳遞性注意的問(wèn)題:構(gòu)造方法的執(zhí)行順序:里氏轉(zhuǎn)換原則:(多態(tài)實(shí)現(xiàn)的基礎(chǔ))子類(lèi)可以賦值給父類(lèi)對(duì)象父類(lèi)對(duì)象可以強(qiáng)制轉(zhuǎn)化為對(duì)應(yīng)的子類(lèi)對(duì)象is與as運(yùn)算符is(bool)判斷轉(zhuǎn)換是否成功>多態(tài)性:讓ー個(gè)對(duì)象表現(xiàn)出多種類(lèi)型對(duì)象在調(diào)用同一個(gè)方法的時(shí)候表現(xiàn)出來(lái)的多種狀態(tài)>重寫(xiě)基類(lèi)方法實(shí)現(xiàn)多態(tài):父類(lèi)統(tǒng)ー調(diào)用,子類(lèi)具體實(shí)現(xiàn)>隱藏基類(lèi)方法實(shí)現(xiàn)多態(tài)>ロ訣:new則隱藏(父子方法完全一樣,包括參數(shù)),over重寫(xiě):隱藏看類(lèi)型,重寫(xiě)只管新(重寫(xiě)只管新的).抽象成員必須標(biāo)記為abstract,并且不能有任何實(shí)現(xiàn)。.抽象成員必須在抽象類(lèi)中。.抽象類(lèi)不能被實(shí)例化.子類(lèi)繼承抽象類(lèi)后,必須把父類(lèi)中的所有抽象成員都重寫(xiě)。(除非子類(lèi)也是ー個(gè)抽象類(lèi),則可以不重寫(xiě)).抽象成員的訪問(wèn)修飾符不能是private.在抽象類(lèi)中可以包含實(shí)例成員。并且抽象類(lèi)的實(shí)例成員可以不被子類(lèi)實(shí)現(xiàn)
.抽象類(lèi)是有構(gòu)造函數(shù)的。雖然不能被實(shí)例化。8、如果父類(lèi)的抽象方法中有參數(shù),那么。繼承這個(gè)抽象父類(lèi)的子類(lèi)在重寫(xiě)父類(lèi)的方法的時(shí)候必須傳入對(duì)應(yīng)的參數(shù)。如果抽象父類(lèi)的抽象方法中有返回值,那么子類(lèi)在重寫(xiě)這個(gè)抽象方法的時(shí)候也必須要傳入返回值。如果父類(lèi)中的方法有默認(rèn)的實(shí)現(xiàn),并且父類(lèi)需要被實(shí)例化,這時(shí)可以考慮將父類(lèi)定義成?個(gè)普通類(lèi),用虛方法來(lái)實(shí)現(xiàn)多態(tài)。如果父類(lèi)中的方法沒(méi)有默認(rèn)實(shí)現(xiàn),父類(lèi)也不需要被實(shí)例化,則可以將該類(lèi)定義為抽象類(lèi)。->接口接口是ー種規(guī)范。只要一個(gè)類(lèi)繼承了一個(gè)接口,這個(gè)類(lèi)就必須實(shí)現(xiàn)這個(gè)接口中所有的成員為了多態(tài)。接口不能被實(shí)例化(抽象類(lèi),靜態(tài)函數(shù),接口)。也就是說(shuō),接口不能new(不能創(chuàng)建對(duì)象)接口中的成員不能加‘’訪問(wèn)修飾符”,接口中的成員訪問(wèn)修飾符默認(rèn)為public,不能修改。接口中的成員不能有任何實(shí)現(xiàn)(“光說(shuō)不做",讓子類(lèi)去做,只是定義了一組未實(shí)現(xiàn)的成員)。(不允許寫(xiě)具有方法體的函數(shù))接口中只能有方法、屬性、索引器、事件,不能有“字段”和構(gòu)造函數(shù)。接口與接口之間可以繼承,并且可以多繼承。接口并不能去繼承一個(gè)類(lèi),而類(lèi)可以繼承接口(接口只能繼承于接口,而類(lèi)既可以繼承接ロ,也可以繼承類(lèi))實(shí)現(xiàn)接口的了類(lèi)必須實(shí)現(xiàn)該接口的全部成員。ー個(gè)類(lèi)可以同時(shí)繼承一個(gè)類(lèi)并實(shí)現(xiàn)多個(gè)接口,如果一個(gè)子類(lèi)同時(shí)繼承了父類(lèi)A,并實(shí)現(xiàn)了接ロIA,那么語(yǔ)法上A必須寫(xiě)在IA的前面。classMyClass:A,IA{},因?yàn)轭?lèi)是單繼承的。顯示實(shí)現(xiàn)接口的目的:解決方法的近名問(wèn)題什么時(shí)候顯示的去實(shí)現(xiàn)接口:當(dāng)繼承的借口中的方法和參數(shù)一摸ー樣的時(shí)候,要是用顯示的實(shí)現(xiàn)接口classProgram{staticvoidMain(string[]args)〃顯示實(shí)現(xiàn)接口就是為了解決方法的重名問(wèn)題IFlyablefly=newBird();
fly.FlyO;Birdbird=newBird();bird.Fly();Console.ReadKey();))publicclassBird:TFlyable(publicvoidFlyO(Console.WriteLine("鳥(niǎo)飛會(huì)");)III<summary>//Z顯示實(shí)現(xiàn)接UIII</summary>voidIFlyable.FlyO{Console.WriteLine("我是接口的飛“);publicinterfaceIFlyable(voidFlyO;)當(dāng)ー個(gè)抽象類(lèi)實(shí)現(xiàn)接口的時(shí)候,需要子類(lèi)去實(shí)現(xiàn)接口。>構(gòu)造方法>this與base>訪問(wèn)修飾符3、什么是異常、eg-lf(num==O){ThrownewException("出書(shū)不能為〇”);|>運(yùn)行的時(shí)候出現(xiàn)的錯(cuò)誤,或Bug(初學(xué)者可以這么理解)>編寫(xiě)代碼的預(yù)期條件與實(shí)際條件不穩(wěn)合>異常的機(jī)制是為了保證程序可以一直正常運(yùn)行Convert.Tolnt32("123");->1*100+2*10+3Convert.Tolnt32("abc");->怎么做?97*100+98*10+99>如果異常不處理程序就會(huì)死掉publicvoidFuncl()Func2();Try 〃代碼中盡量少用異常處理bool={/Z可能出現(xiàn)異常的代碼//出現(xiàn)異常,其后的代碼不再執(zhí)行//直接跳轉(zhuǎn)到catch}catch(Exceptionex){/Z寫(xiě)入日志,處理異常后的首尾工作)4、作業(yè)>計(jì)算器(多個(gè)版本)>PPT上的練習(xí)5、長(zhǎng)期的作業(yè)>筆記>代碼分析(難點(diǎn))>1、該方法是誰(shuí)調(diào)用的>2,該方法中有幾個(gè)局部變量,幾個(gè)靜態(tài)變量(全局)>3、該方法需要幾步執(zhí)行完>4、每ー步,代碼是如何執(zhí)行的(要求說(shuō)明意義)>5、每ー步執(zhí)行中,每ー個(gè)局部變量的值如何變化第二天4,接ロ語(yǔ)法[訪問(wèn)修飾符]interfaceI接口名{接口成員)publicinterfaceIdable{voidDa();〃默認(rèn)就是public)/Z實(shí)現(xiàn)接口abstractclassCCCJdable/Z繼承自接口,實(shí)現(xiàn)接口〃假定沒(méi)有接口存在,但是需要一個(gè)名字為Da,沒(méi)有返回值,沒(méi)有參數(shù)的方法publicabstractvoidDa();靜態(tài)多用方法,少用靜態(tài)字段。用靜態(tài)模擬全局5、修飾符->類(lèi)型前つ訪問(wèn)修飾符:【public(在所以程序集都可以訪問(wèn))internal(默認(rèn))(只能在當(dāng)前程序集中訪問(wèn))]:限制類(lèi)型在當(dāng)前程序集和外部程序集的訪問(wèn)的級(jí)別->多態(tài)方面的修飾符:abstractsealed(密封,不允許被繼承)(eg-string) static(靜態(tài),與多態(tài)相反)->特性(Attribute):用于反射和平臺(tái)調(diào)用(代用其他代碼)->成員前>訪問(wèn)修飾符publicinternalprivate(默認(rèn))(當(dāng)前項(xiàng)目的當(dāng)前類(lèi)中訪問(wèn))protected(在子類(lèi)和當(dāng)前類(lèi)可以訪問(wèn)) internalprotected(順序可反過(guò)來(lái))>多態(tài)方面的修飾符virtualabstractoverridesealedstatic>特性>外部實(shí)現(xiàn)externenum->enumeratethis與basevoidfunc(){int*p=malloc(1024);MyClassm=newMyClass();}后臺(tái)有一個(gè)線程專(zhuān)門(mén)統(tǒng)計(jì)內(nèi)存使用率三大類(lèi)庫(kù):字符串類(lèi)庫(kù),集合類(lèi)庫(kù),文件操作類(lèi)庫(kù)String>構(gòu)造方法newstring(char[])newstring(chacint)>常用屬性索引(Chars)str[3]Length>常用方法增:構(gòu)造方法stringlnsert(intstartindex,stringvalue);stringstring.Join(stringsplitStr;string[]);stringReplace(string,string);//"123,,.Replace(n2'\"2222");運(yùn)算符+stringstring.Concat(string[]);//stringJoinC",list);stringPadLe代(int,char);//在字符串的左邊填充一定空格或字符char,直到字符長(zhǎng)度為int所表示的長(zhǎng)多一樣為止stringPadRight(int,char);刪:stringRemove(intstartindex,intcount);//"012345".Remove(3z2);=>"0125"stringSubstring(intstartindex,intcount);//"012345".Substring(3,2);=>"34"stringTrim(paramschar[]);stringTrimStart();stringTrimEnd();改首先ToCharArray(),在Join或Concat或構(gòu)造函數(shù)stringToUpper();stringToLower();查boolContains(string);intlndexOf(char,int);intLastlndexOf(char,int);/Z獲得文件名:"C:\123\456\789.mp3";intlndexOfAny(char[],int);/Z找出字符串中所有的e和aintLastlndexOfAny(...);boolStartsWith(string);boolEndsWith(string);其他boolstring.IsNullOrEmpty(string)string[]Split(char[],StringSplitOptions.RemoveEmptyEntries);//entry//"Ihaveadream".Split(',);boolEquals(string);boolstring.Equals(string,string);intstring.Compare(stringsi,strings2);TOC\o"1-5"\h\zsi>s2 1sl=s2 0si<s2 -1stringstring.Format(string,object[]);8、StringBuilder>字符串不可變,長(zhǎng)期拼接字符串性能較低>StringbuilderAppend(string);AppendLine(string);AppendFormat("{0}{l}{2}{3}",1,"23","ab",true);ToString();string[]File.ReadAIILines(string,Encoding);作業(yè)使用冒泡排序,升序排列一個(gè)數(shù)字?jǐn)?shù)組,和一個(gè)字符串?dāng)?shù)組第三天1、答疑>"A""a""b"=>"b">"A">"a"MyCompare方法比較規(guī)則由文化決定一般中文規(guī)則與英文規(guī)則一致>this調(diào)用成員是默認(rèn)classPerson{stringname;publicvoidFunc(stringname)(Console.WriteLine(=name);})p.Func(“趙曉虎”);2、實(shí)際開(kāi)發(fā)中,一般方法或API等使用的是數(shù)組作為規(guī)范,但是實(shí)際的使用都是使用集合斗List<T>線性集合長(zhǎng)度可變的數(shù)組>增 Add()AddRange()>刪 Remove(T)RemoveAt(int)(Int是索引)>改 可以像數(shù)組ー樣修改 〃list[9]='123';>査boolContains(T)lndexOf()>遍歷forforeach(類(lèi)型臨時(shí)變量in集合)(使用臨時(shí)變量進(jìn)行處理}>模擬隊(duì)列:先進(jìn)先出list.Add()進(jìn)入list[i]list.ReamoveAt(O)>模擬棧:先進(jìn)后出(杯子與奧利奧)list.Add()進(jìn)入list[list.Count-1]list.RemoveAt(list.Count-1)->Dictionary<TKey,TValue>散列集合->鍵值對(duì)->為什么要使用這個(gè)集合:為了快速查找->常用方法>增 Add(鍵,值)>刪 RemoveKey>改 索引dic["dictionary"]="詞典?';>查索引ContainsKey->遍歷(不常用)foreach(KeyVaIuePair<TKey,TValue>itemindie)/Z鍵值對(duì)集合,沒(méi)有順序3、文件->文件是什么?->就是ー堆字節(jié)塊->windows環(huán)境下文本文件基本格式>字符集的歷史:ascii?>雙字節(jié)?>unicode(utf-16)?>utf-8->ANSI>unicode>unicodebigendim>utf-8->如何操作Encoding:處理字符集>用什么類(lèi)能做什么東西>命名空間:System.10; //inputoutput>Filestream文件流將文件以字節(jié)的方式進(jìn)行讀寫(xiě)->構(gòu)造方法:newFileStream(文件路徑,FileMode,FileAccess);FileMode:Create>Append、Open->讀寫(xiě)方法:>intReadByte();voidWriteByte(byte);>intRead(byte[]buffer,intoffset,intcount);voidWrite(byte[]buffer,intoffset,intcount);>了解>voidFlush();//清空緩存,寫(xiě)入硬盤(pán)>voidDispose();/Z清空非托管資源>Position屬性〃文件處理,指針與文本文件書(shū)寫(xiě)ー樣是有位置的->StreamReader與StreamWriter專(zhuān)門(mén)針對(duì)文本文件的讀寫(xiě)操作->讀流:newStreamReader("文件路徑",Encoding);->寫(xiě)流newStreamWriter(”文件路徑”,boolisAppend,Encoding);->讀的方法stringReadLine();/Z讀取文件中的一行stringReadToEnd();/Z讀取所有的內(nèi)容->寫(xiě)的方法voidWrite(...);/Z寫(xiě)入內(nèi)容voidWriteLine(...);/Z寫(xiě)入一行文本>File靜態(tài)AppendAIITextAppendAIILinesReadAIITextReadAIILinesWriteAIITextWriteAIILinesboolExist()>Directory靜態(tài)string[]GetFiles(string)//返回指定路徑下的所有文件string[]GetDirectories(string)/7返回改路徑下的所有子文件夾boolExist()>Path處理路徑獲得后綴名獲得文件名獲得沒(méi)有后綴名的文件名獲得全路徑>Fileinfo DirectoryInfoDriverinfoPath類(lèi)(對(duì)字符串操作),不用刻意記。
?Path.Combine(path1,path2)?見(jiàn)MSDN?如果指定的路徑之一是零長(zhǎng)度字符串,則該方法返回其他路徑。如果pa力2包含絕對(duì)路徑,則該方法返回paめ2。?如果paめ7不是以分隔符結(jié)束,并且不是c:或d:等(驅(qū)動(dòng)器引用),則在串聯(lián)前為pa出7增加、分隔符。分隔符:(與操作系統(tǒng)平臺(tái)有關(guān))Path.DirectorySeparatorChar-\Path.PathSeparator-;Path.VolumeSeparatorChar—:?Path.GetFileName()?獲取文件名當(dāng)目錄為c:\windows\test時(shí),可獲取最后ー個(gè)目錄名,但當(dāng)目錄路徑為c:\windows\test、時(shí),不可以。reflector查看?獲取當(dāng)前exe文件執(zhí)行的路徑:Assembly.GetExecutingAssembly().Location;Application.StartupPath.?不要用:?Directory.GetCurrentDirectory();獲取應(yīng)用程序的當(dāng)前工作目錄。因?yàn)檫@個(gè)司能會(huì)變,通過(guò)使用〇penFileDialog或者手場(chǎng)設(shè)置Directory.SetCurrentDirectory()?做WinForm程序時(shí)會(huì)常用到。操作文件(File)
File類(lèi)的方法1File.Copy(Usource,rr''targetFileName,rrtrue)"/文件拷貝,true表示當(dāng)文件存在時(shí)“覆蓋”,如果不加true,則文件存在報(bào)異rnFile.Exists。;//判斷文件是否存在File.Move(''source,r,''target");//移動(dòng)(剪切),思考如何為文件重命名?File.Delete(''path");〃刪除。如果文件不存在?不存在,不報(bào)錯(cuò)File.Create(''path");//倉(cāng)リ建文件File類(lèi)的方法2:操作文本文件File.ReadAllLines(''path,z,Encoding.Default);//讀取所有行,返回stringロFile.ReadAllText(''path,z,Encoding.Default);〃讀取所有文本返回stringFile.ReadAllBytes(''path");〃讀取文件,返回byte口,把文件作為二進(jìn)制f來(lái)處理。File.WriteAllLines(''path,z,newstring[4],Encoding.Default);〃將string數(shù)組按行與入文件。File.WriteAllText(''path",''string");〃將字符串全部寫(xiě)入文件File.WriteAllBytes(''path",newbyte[5]);〃將byte口全部寫(xiě)入到セ件File.AppendAllText()〃將string追加到文件File類(lèi)的方法3[快速得到文件流Filestreamfs=File.Open〇;〃返回FilestreamFilestream£s=File.OpenRead();//返回只讀的FilestreamFilestream£s=File.OpenWrite();〃返回只寫(xiě)的FilestreamFilestreamfs=newFilestream(參數(shù));Stream(所有流的父類(lèi),是ー個(gè)抽象類(lèi)。)文件操作的類(lèi)都在Systern.IO.*;
StreamWriter(讀取文本文件)Stream把所有內(nèi)容當(dāng)成二進(jìn)制來(lái)看待,如果是文本內(nèi)容,則需要程序員來(lái)處理文本和二進(jìn)制之間的轉(zhuǎn)換。用StreamWriter可以簡(jiǎn)化式族類(lèi)型的Stream的處理StreamWriter是輔助Stream進(jìn)行處理的using(StreamWriterwriter=newStreamWriter(stream,encoding))(writer.WriteLine("你好");StreamReader和StreamWriter類(lèi)似,StreamReader簡(jiǎn)化了文本類(lèi)型的流的讀取Streamstream=File.OpenRead("c:/1.txt");using(StreamReaderreader=newStreamReader(stream,encoding))//Console.WriteLine(reader.ReadToEnd());Console.WriteLine(reader.ReadLine());ReadToEnd用于從當(dāng)前位置一直讀到最后,內(nèi)容大的話會(huì)占內(nèi)存;每次調(diào)用都往下走,不能無(wú)意中調(diào)用了兩次ReadLine讀取一行,如果到了末尾,則返回null?!镎f(shuō)一下快速創(chuàng)建流的那幾個(gè)方式?!锏谒奶?、答疑>強(qiáng)制類(lèi)型轉(zhuǎn)換intnum=10;doubledNum=num;//double類(lèi)型所占內(nèi)存比int大intnuml=(int)dNum;//確保數(shù)據(jù)的萬(wàn)無(wú)一失〃使用截?cái)嗟霓k法/Z簡(jiǎn)單的內(nèi)存操作>里氏轉(zhuǎn)換原則
父類(lèi)變量存子類(lèi)對(duì)象,父類(lèi)強(qiáng)制轉(zhuǎn)化成對(duì)應(yīng)的子類(lèi)myBase=newMySub();/Z對(duì)象存儲(chǔ)在ー個(gè)堆內(nèi)存中,變量myBase在棧里//引用類(lèi)型的變量在32位計(jì)算機(jī)中只占4個(gè)字節(jié)>裝箱拆箱裝箱:就是將值類(lèi)型賦值給引用類(lèi)型拆箱:將存儲(chǔ)值類(lèi)型的引用類(lèi)型強(qiáng)制轉(zhuǎn)換為對(duì)應(yīng)的值類(lèi)型〇bject〇=123;〃123在棧里面,。指向堆中>靜態(tài)構(gòu)造方法classMyClass(staticintnum=10;/Z語(yǔ)法糖)classMyClass(staticintnum;staticMyClass()(num=10;})2、Dictionary效率非常高>List慢的原因:ー個(gè)一個(gè)的遍歷>hash算法(哈希算法)要求一個(gè)函數(shù),可以將一個(gè)數(shù)字變成一個(gè)指定范圍的數(shù)字<object>.GetHashCode();/Z每ー個(gè)對(duì)象都和轉(zhuǎn)變成一個(gè)數(shù)字哈希函數(shù)將一個(gè)非常不可預(yù)計(jì)的數(shù)字映射到ー個(gè)較小的范圍例如取余數(shù)n%10->{0,1,2,3,4,5,67,8,9}TOC\o"1-5"\h\z"a" 97 7"ab"97+98=195 5"C" 67 7string!]arr->List<string[]>存"a"arr[7]存"ab"arr[5]存需要根據(jù)哈希函數(shù)算出地址,存入到改地址中取只需要根據(jù)哈希函數(shù)算出地址,直接取出來(lái)第五天2、序列化->序列化就是格式化,是指將一個(gè)對(duì)象以某種格式進(jìn)行呈現(xiàn)->ニ進(jìn)制序列化->在需要序列化的類(lèi)前標(biāo)記[Serializable]->創(chuàng)建序列化的對(duì)象BinaryFormatter->創(chuàng)建流->調(diào)用Serialize方法>XML序列化XmlSerialicer>JavaScript序列化(JSON格式的數(shù)據(jù))(常用)JavaScriptSeralizer3、文件搜索>Directory.GetFiles(路徑)>Directory.GetDrectories(路徑)副本(3)4、ToStringO編程使用類(lèi)基礎(chǔ)類(lèi)型,已經(jīng)定義了顯示方式string ->stringint ->數(shù)字格式stringDateTime->時(shí)間格式string<ListBox>.ltems.Add(<Booklnfo>)第六天2、樹(shù)狀菜單3、XML(XExrensibleMarkupLanguage)>用來(lái)存儲(chǔ)數(shù)據(jù)使用>簡(jiǎn)單的數(shù)據(jù)列表>數(shù)據(jù)交互必須讓所有的人了解數(shù)據(jù)的內(nèi)容結(jié)構(gòu)(結(jié)構(gòu)化了)>借鑒的HTML的存儲(chǔ)結(jié)構(gòu)〈標(biāo)簽名〉數(shù)據(jù)々標(biāo)簽名〉〈標(biāo)簽名屬性="值"/〉->XML基本結(jié)構(gòu)>首先是ー個(gè)文本文件>有一個(gè)文檔描述<?xmlversion="1.0"encoding="utf-8"?>>每ー個(gè)文檔必須有,而且只能由一個(gè)根節(jié)點(diǎn)<rootx/root>在XMし中大小寫(xiě)敏感標(biāo)簽名可以使用任意的合法標(biāo)識(shí)符標(biāo)簽中可以有屬性,屬性使用鍵值表示,屬性的值一定要使用英文的雙引號(hào)括起來(lái),多個(gè)屬性使用空格隔開(kāi)標(biāo)簽一般成對(duì)存在,例如<a〉</a〉等,但是如果標(biāo)簽中沒(méi)有子數(shù)據(jù),可以寫(xiě)成封閉的<a/〉<a><bx/bx/a>->xml組織數(shù)據(jù)都是使用標(biāo)簽嵌套完成的,一般數(shù)據(jù)本身存儲(chǔ)在最后ー個(gè)標(biāo)簽List<Person><list><person>.NET講師<name>牛殼殼</name></person></list>->XML發(fā)展HTML->XHTMLXAML4,使用C#操作XML->基本技術(shù)->DOM(Documentobjectmodel,文檔對(duì)象模型)將文檔看成文檔對(duì)象,里面的所有東西都是節(jié)點(diǎn)對(duì)象->傳統(tǒng)類(lèi)庫(kù):XmlDocument系->LinqtoXML:XDocument系->序列化技術(shù)->事件驅(qū)動(dòng)XmlTextReaderXmlTextWriter>使用5、正則表達(dá)式(Regex,RegExp,RegularExpression)>什么是正則表達(dá)式:是一個(gè)用于匹配(核心功能)、提取、替換用的包含元字符的字符串"楊中.+"linux.+pdf$asf>學(xué)習(xí)元字符->基本元字符:, 任意的ー個(gè)非換行字符[] 集合匹配,表示匹配ー個(gè)出現(xiàn)在口中的ー個(gè)字符!或:a|b,敏感詞:病毒|大媽|海洛因|槍械|。。。。,foo(t|d)footfood()提高優(yōu)先級(jí),實(shí)現(xiàn)分組。a(bc):用在提取和替換上->限定元字符:+ 緊跟在+前面的字符出現(xiàn)任意次,但是至少出現(xiàn)1次? 緊跟在?前面的字符出現(xiàn)任意次linux.?入門(mén)經(jīng)典.pdf? 緊跟在?前面的字符出現(xiàn)或不出現(xiàn)https?://....{n} [0123456789]{ll}(數(shù)字出現(xiàn)11次)[0-9]{17}[X0-9]|[0-9]{15}{n,} +相當(dāng)于{1,}?相當(dāng)于{〇,}{n,m}->首尾元字符:へ判斷是否已某某字符開(kāi)頭:N0-9]在集合匹配中表示否定:屮0-9]$ 必須使用某某字符結(jié)尾:linux.+pdf在分組中表示引用的分組一般使用在驗(yàn)證中需要一起使用首尾元字符"[0-9]+$"([0-9]{17}[xX0-9]|[0-9]{15})$[0-9]{17}[xX0-9][0-9]{15}"(aIb)$aaaaaa或bbbbba或ba包含a這個(gè)字符"a$必須是字符串a(chǎn)->簡(jiǎn)寫(xiě)元字符:\d\Ddigit 匹配任意的整數(shù)\w(正常的文字,例如abc,和下劃線ー,在C#包含中文) \Wword\s\Sspace任意字符有一個(gè)缺陷:無(wú)法匹配換行[\s\S] 任意的ー個(gè)字符6、使用C#操作正則表達(dá)式->命名空間:System.Text.RegularExpression;->RegexboolIsMatch(正常字符串,正則表達(dá)式);MatchMatch(正常字符串,正則表達(dá)式);MatchcollectionMatches(正常字符串,正則表達(dá)式);stringReplace(正常字符串,正則表達(dá)式,替換字符串);第七天1、答疑<root><elel><subelel><subele2><subele3><ele2><subelel><ele3><subelel>root.Elements()返回的是<elel>バele2>バele3>root.Descendants()返回所有的節(jié)點(diǎn)結(jié)合<elel><subelel><subele2><subele3><ele2><subelel><ele3><subelel>類(lèi)似與Object[]os={fathoi;son};返回的類(lèi)型是:IEnumerable<XEIement>不考慮遍歷的情況,為了方便理解,解釋為:XEIement[]Name(包含名字與命名空間:XName)與LocalName(string)2、正則會(huì)不會(huì)造成性能問(wèn)題?->什么是正則表達(dá)式->兀字符:->基本元字符. 11 I ()->限定元字符* + ? {n}{n,}{n,m}->首尾元字符A$->簡(jiǎn)寫(xiě)形式\d\D\w\W\s\S->寫(xiě)正則:首先明確要做什么?找規(guī)律,看看那些是必須有的,哪些是不動(dòng)利用.、+、()等進(jìn)行寫(xiě)正則然后再驗(yàn)證、再修改<htmlximgsrc=""/><.+>3、使用C#操作正則表達(dá)式>boollsMatch(string,string);>MatchMatch(string,string);〃只能返回第一個(gè)字符>MatchcollectionMatches(stringzstring);4、如果在提取的過(guò)程中希望得到匹配項(xiàng),同時(shí)需要匹配項(xiàng)中的某ー個(gè)部分的時(shí)候つ使用分組可以方便的實(shí)現(xiàn)這個(gè)功能只需要用圓括號(hào)將需要的部分括起來(lái)即可例如:[(.+))>組編號(hào)的問(wèn)題Match對(duì)象有一個(gè)屬性,Groups,存儲(chǔ)著正則表達(dá)式匹配到的組第0組就是字符串本身m.Valuem.Groups[0].Value再加圓括號(hào)從第一組開(kāi)始編號(hào)>一般分組步驟>根據(jù)需要加圓括號(hào)進(jìn)行分組,但是注意圓括號(hào)必須成對(duì)>從左邊往右邊數(shù)"(",并從1開(kāi)始>當(dāng)匹配完成后使用Groups[組號(hào)]即可訪問(wèn)所需要的內(nèi)容5、貪婪模式(髙級(jí))stringstr="1234567890";stringregex=@"(\d+)(\d+)(\d+)";正則表達(dá)式默認(rèn)匹配盡可能多一般在寫(xiě)正則的時(shí)候,不需要去考慮貪婪的問(wèn)題,直接寫(xiě)即可。如果出現(xiàn)了匹配結(jié)果比預(yù)期的多了,一般是貪婪造成的,再去考慮取消貪婪的問(wèn)題。6、匹配一個(gè)整數(shù)整數(shù)包含〇的正整數(shù)與負(fù)整數(shù)0+-1+-2...+-n...不允許0123要么。,要么就是ー個(gè)非。開(kāi)頭的數(shù)字A(0|-?[l-9]\d*)$へ()$表示絕對(duì)匹配0-9 0|[1-9]11-2021-30第一位是1-9的數(shù)字,第二位隨便0-9 [l-9]\d7、實(shí)現(xiàn)Path的功能(斜線/反斜線、)C:\123\456\789.txtC:\123.txt(([a-zA-Z]:).*\\)({.+)(\..+))8、替換stringReplace(原始字符串,正則,替換的字符串)9、委托和事件->將方法當(dāng)作變量來(lái)使用■>自定義排序publicstaticvoidSort(string[]arr,比較的方法){for(inti=0;i<arr.Length-1;i++)(for(intj=0;j<arr.Length-1-i;j++){//if(arr[j]>arr[j+l])//string.Compare()if(比較的方法(arr[jLarr[j+l])>0)/Z交換}))>把委托作為方法的ー個(gè)載體,方法好像參數(shù)一樣可以被傳遞,并進(jìn)行運(yùn)算>委托就是具有一定數(shù)據(jù)結(jié)構(gòu)的函數(shù)指針10、幾個(gè)概念>委托與委托變量>使用委托的意義11、使用委托變量的步驟>準(zhǔn)備方法>準(zhǔn)備委托的類(lèi)型publicdelegate返回值委托類(lèi)型的名字(參數(shù)列表);例:無(wú)參無(wú)返回的委托類(lèi)型:publicdelegatevoid委托類(lèi)型名();有一個(gè)int類(lèi)型返回值的:publicdelegateint委托類(lèi)型名();比較字符串的返回值:publicdelegateint委托類(lèi)型名(stringsi,strings2);>聲明委托變量委托類(lèi)型名變量名;>授權(quán)方法或注冊(cè)方法變量名=方法名;〃好比這個(gè)變量名是方法的別名>使用別名調(diào)用方法,調(diào)用規(guī)則與調(diào)用方法一樣,只是換用變量名而已12、匿名方法與Lambda表達(dá)式>在實(shí)際開(kāi)發(fā)中,有時(shí)一個(gè)方法只需要調(diào)用一次,并且這個(gè)方法體又非常的簡(jiǎn)單,那么每次都為這個(gè)方法編寫(xiě)方法語(yǔ)法,就太麻煩了,因此程序員發(fā)明了匿名的方法>語(yǔ)法委托類(lèi)型委托變量=delegate(類(lèi)型參數(shù)列表)(方法體);>Lambda表達(dá)式是對(duì)匿名方法進(jìn)ー步的簡(jiǎn)化語(yǔ)法:(=>goesto)委托類(lèi)型委托變量=(參數(shù)列表)=>方法體;說(shuō)明:如果參數(shù)列表沒(méi)有參數(shù),只需要寫(xiě)ー對(duì)圓括號(hào)即可,如:()=>;如果參數(shù)只有一個(gè),可以省略圓括號(hào),例如:e=>如果方法體只有一句話,可以省略花括號(hào);如果方法只有一句話,返回的return,可以省略>多播委托(多路(多道路)廣播委托,委托鏈)multicastdelegate->什么效果注冊(cè)多個(gè)方法,調(diào)用時(shí)將這些方法依次執(zhí)行一遍->實(shí)現(xiàn)語(yǔ)法準(zhǔn)備委托變量第一個(gè)方法使用=賦值后面的方法使用+=賦值使用ー=可以移除方法->多播委托在執(zhí)行中可以有返回值,但是一般不使用->實(shí)例方法->默認(rèn)的泛型委托Func系委托 有返回值A(chǔ)ction系委托無(wú)返回值->委托本質(zhì)是ー個(gè)類(lèi)13、事件14、反射->為什么要反射?反射是個(gè)什么東西為了實(shí)現(xiàn)插件的效果->具體實(shí)現(xiàn):使用Assembly.Load(全路徑)加載dll文件使用GetType。或GetTypes()獲得里面的類(lèi)型數(shù)據(jù),返回是Type或!ype[]Type對(duì)象具有Get系方法,例如:調(diào)用GetMethod(方法名)獲得對(duì)應(yīng)的方法對(duì)象使用Activator.Createlnstance()創(chuàng)建實(shí)例,因?yàn)闆](méi)有類(lèi)型,只能使用。bject使用方法對(duì)象.Invoke(實(shí)例對(duì)象,參數(shù)數(shù)組)進(jìn)行方法調(diào)用使用屬性對(duì)象的.Set(實(shí)例對(duì)象,值)進(jìn)行屬性的賦值第ハ天1、窗體傳值(將一個(gè)值從ー個(gè)窗體傳遞到另ー個(gè)窗體,用來(lái)調(diào)用方法)->使用屬性構(gòu)造方法(OpenFileDialog類(lèi))ofd里面提供文件路徑,然后在調(diào)用方法中,利用FileName獲得這個(gè)數(shù)據(jù)OpenFileDialogofd=new...if(ofd.ShowDialog()==DialogResult.OK){ofd.FileName...)->使用事件委托事件委托實(shí)際操作的是方法2、SQLServer數(shù)據(jù)庫(kù)->數(shù)據(jù)庫(kù)的安裝->實(shí)例?->服務(wù)是在操作系統(tǒng)ー開(kāi)機(jī)就自動(dòng)的運(yùn)行的幫助維護(hù)系統(tǒng)正常運(yùn)行的ー類(lèi)程序->內(nèi)存中運(yùn)行的應(yīng)用程序副本->工具->配置管理器(ConfigurationManamger)->數(shù)據(jù)庫(kù)操作聯(lián)機(jī)事務(wù)處理(〇LTP)聯(lián)機(jī)分析處理(OLAP)->使用數(shù)據(jù)庫(kù)->數(shù)據(jù)庫(kù)卸載>SQLServer的歷史概述3、課程介紹>SQLServer基礎(chǔ)與基本的T-SQL語(yǔ)句>ADO.NET(SQL語(yǔ)句你能多么強(qiáng)大,ADO.NET就會(huì)多強(qiáng)大)>SQLServer高級(jí)4,基本知識(shí)DBDataBase數(shù)據(jù)庫(kù)(數(shù)據(jù)庫(kù)文件)數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS,databasemanagementsystem)數(shù)據(jù)系統(tǒng)數(shù)據(jù)庫(kù)管理員(DBA,databaseadministrater)數(shù)據(jù)庫(kù)技術(shù)的基本發(fā)展安裝vs一般會(huì)帶有Express版本的數(shù)據(jù)庫(kù)安裝數(shù)據(jù)庫(kù)的時(shí)候會(huì)要求輸入注冊(cè)碼5、數(shù)據(jù)庫(kù)->數(shù)據(jù)的倉(cāng)庫(kù)->創(chuàng)建數(shù)據(jù)庫(kù)文件->SSMS:1、找到數(shù)據(jù)庫(kù)節(jié)點(diǎn),右鍵新建2、首先輸入數(shù)據(jù)庫(kù)的名字(會(huì)自動(dòng)的填充兩個(gè)文件)ー個(gè)是數(shù)據(jù)文件(mdf),ー個(gè)是日志文件(Idf)3、配置數(shù)據(jù)文件和日志文件的大小、最大限制、增量等信息4X確定->T-SQL(Transaction-SQL):1、打開(kāi)數(shù)據(jù)庫(kù)管理工具(SSMS),新建查詢(xún)(或者,直接使用記事本寫(xiě)SQL語(yǔ)句)2、在里面添加SQL語(yǔ)句3、選中SQL語(yǔ)句,點(diǎn)擊快速工具欄中的對(duì)勾,檢查語(yǔ)法4、點(diǎn)擊感嘆號(hào)執(zhí)行(選中什么執(zhí)行什么,如果沒(méi)有選中就全部執(zhí)行)->分離與附加->SSMS->T-SQL:分離:存儲(chǔ)過(guò)程sp一detach一db,數(shù)據(jù)庫(kù)名’附加:CREATEDATABASEArchiveON(FILENAME='D:\SalesData\archdatl.mdf')FORATTACH;->如何開(kāi)啟sa用戶(hù)>選中安全節(jié)點(diǎn),找到登陸名>找到sa右鍵>設(shè)置其密碼(去掉強(qiáng)制實(shí)施密碼策略)>選擇啟用sa用戶(hù)>選擇數(shù)據(jù)庫(kù)對(duì)象,右鍵屬性,設(shè)置混合模式->重啟數(shù)據(jù)庫(kù)1010+26+26=626、->mdf和ndf數(shù)據(jù)庫(kù)可以有多個(gè)數(shù)據(jù)文件進(jìn)行存儲(chǔ)mdf masterdatafilendf notmasterdatafile->附加的時(shí)候看消息>降級(jí)附加使用低版本的數(shù)據(jù)庫(kù)附加高版本的數(shù)據(jù)庫(kù)文件>拒絕訪問(wèn)權(quán)限問(wèn)題磁盤(pán)是有格式的:FAT、FAT32、NTFS如何添加權(quán)限:1、右鍵屬性,選擇安全(XP比較特殊)2、找到編輯按鈕3、找到User或你自己的用戶(hù)名,在權(quán)限中勾上完全控制即可或者添加everyone也可以,但是不太安全>正在使用有一個(gè)與其同名的數(shù)據(jù)庫(kù)正在使用7、創(chuàng)建數(shù)據(jù)庫(kù)表>表是存儲(chǔ)數(shù)據(jù)的地方>如何創(chuàng)建表(表的結(jié)構(gòu))就是在設(shè)計(jì)表結(jié)構(gòu),就是說(shuō)表應(yīng)該有什么列,存儲(chǔ)什么類(lèi)型的數(shù)據(jù)>有哪些數(shù)據(jù)類(lèi)型>數(shù)字類(lèi)型:int、bigint>money、numeric。,2)、bit>時(shí)間類(lèi)型:datetime[ヽdate、time]>字節(jié)類(lèi)型:image>字符串類(lèi)型:>基于ASCII編碼的:char、varchar>基于Unicode編碼:nchar、nvarchar>使用:類(lèi)型(數(shù)字)>char與varchar的區(qū)別char(10)存儲(chǔ)10個(gè)字節(jié)的字符串,如果提供的字符串長(zhǎng)度不夠10個(gè)字節(jié)后面自動(dòng)填充空格varchar(lO)存儲(chǔ)10個(gè)字節(jié)的字符串,如果提供的字符串長(zhǎng)度不夠!0個(gè)字節(jié)有幾個(gè)字節(jié)就存儲(chǔ)幾個(gè)字節(jié)>字符串類(lèi)型的使用注意char(數(shù)字),這個(gè)數(shù)字可以取1到8000,nchar(數(shù)字)可以取1到4000如果高出了這個(gè)范圍,那么可以使用varchar(max),這個(gè)類(lèi)型會(huì)在單獨(dú)的ー個(gè)地方存儲(chǔ)數(shù)據(jù),容量在2G左右,或使用nvarchar(max)性別:char(l)'f' 'm'NULL->如何創(chuàng)建一張表(創(chuàng)建表和約束的語(yǔ)句形式非常多,一般熟練使用ー種即可)->使用當(dāng)前數(shù)據(jù)庫(kù)useXXXX;->創(chuàng)建表createtable表名(列名1類(lèi)型1NULL|NOTNULL,歹リ名2類(lèi)型2NULL|NOTNULL,歹リ名3類(lèi)型3NULL|NOTNULL);8、簡(jiǎn)單的增刪改查增加數(shù)據(jù)insertinto表名(列1,列2,列3,...)values(值1,值2,值3,...);查看數(shù)據(jù)select列1,列2,...from數(shù)據(jù)表;select*from數(shù)據(jù)表;刪除數(shù)據(jù)deletefrom表名where條件;修改數(shù)據(jù)update表名set列名1=值1,列名2=值2,...where條件;第九天1、一個(gè)完整的SQL語(yǔ)句selecttopIdistinct字段列表,常量,函數(shù),表達(dá)式,標(biāo)量子查詢(xún)/???from結(jié)果集(結(jié)果集進(jìn)行集合運(yùn)算的結(jié)果)where邏輯判斷空值處理范圍處理模糊處理groupby分組字段(可以是多個(gè)字段,但是需要注意select只允許有其中出現(xiàn)的字段、聚合函數(shù)與常量等)having與where類(lèi)似,篩選分組后的結(jié)果orderby排序的字段或表達(dá)式;2、ADO.NETodbcoledbado asp網(wǎng)站(90年代末)ADO.NET>什么是使用met技術(shù)操作數(shù)據(jù)庫(kù)的ー套類(lèi)庫(kù)>命名空間System.Data;描述數(shù)據(jù)的命名空間System.Data.SqlClient;SQLServer的命名空間>四大類(lèi),四大模型ConnectionCommandExecuteNonQueryExecuteScalarExecuteReaderDataReaderDataAdapter->ExecuteNonQuery模型intExecuteNonQuery()執(zhí)行非查詢(xún)語(yǔ)句,返回受影響的行數(shù),如果執(zhí)行的是非增刪改操作返回?11、創(chuàng)建連接對(duì)象2、創(chuàng)建執(zhí)行對(duì)象3、打開(kāi)連接4、執(zhí)行操作第十天1、Rand()0-1之間n-m之間2、第一個(gè)模型->執(zhí)行非查詢(xún)語(yǔ)句>準(zhǔn)備連接字符串>準(zhǔn)備SQL語(yǔ)句>創(chuàng)建連接對(duì)象>創(chuàng)建執(zhí)行對(duì)象>打開(kāi)連接>執(zhí)行操作>關(guān)閉>整合stringconnStr=@"server=機(jī)器名或IP、實(shí)例名;database=數(shù)據(jù)庫(kù)名;uid=sa;pwd=123;";stringsql=intcount;using(SqlConnectionconn=newSqlConnection(connStr))using(SqlCommandcmd=newSqlCommand(sql,conn))(conn.Open();count=cmd.ExecuteNonQuery();})3,連接池>演示一下>編碼的規(guī)范4、第二個(gè)模型objectExecuteScalar();返回查詢(xún)的第一行第一列的結(jié)果stringconnStr=@"server=機(jī)器名或IP、實(shí)例名;database=數(shù)據(jù)庫(kù)名;uid=sa;pwd=123;";stringsql=objectcount;using(SqlConnectionconn=newSqlConnection(connStr))(using(SqlCommandcmd=newSqlCommand(sql,conn))(conn.Open();count=cmd.ExecuteScalar();})使用ExecuteScalar一般與聚合函數(shù)連用5、使用配置文件獲得連接字符串>添加App.config>在里面添加權(quán)值>添加connectionstrings標(biāo)簽>在里面添加add標(biāo)簽>add標(biāo)簽有兩個(gè)屬性:name、connectionstring>name用于存儲(chǔ)名字,也就是鍵。在C#中使用這個(gè)名字獲得連接字符串>connectionstring就是連接字符串>添カ口弓|用System.Configuration>使用ConfigurationManager類(lèi)的Connections屬性>利用索引獲得連接字符串6、注入漏洞>原本是ー個(gè)數(shù)據(jù),現(xiàn)在變成一個(gè)數(shù)據(jù)和一個(gè)條件>限制只允許是數(shù)據(jù)>所謂的參數(shù)化,就是將需要值的地方,用ー個(gè)參數(shù)變量表示,而操作數(shù)據(jù)庫(kù)的時(shí)候,給這個(gè)參數(shù)賦值即可7、如何使用參數(shù)化查詢(xún)>將原來(lái)需要字符串拼接的值,用ー個(gè)@引導(dǎo)的變量名代替->使用SqIParameter類(lèi)型將參數(shù)變量與值綁定在ー起->將SqIParameter對(duì)象交給cmd對(duì)象的Parameters集合8、第三個(gè)模型SqlDataReadercmd.ExecuteReader();9、第四個(gè)模型SqlDataAdapterSqlDataAdaptersda=newSqlDataAdapter(sql語(yǔ)句,連接字符串);sda.Fill(DataSet對(duì)象);<DataSet>.Tables[O]DataGridViewDataSource第十一天SQLHelper->數(shù)據(jù)庫(kù)操作,方法、參數(shù)、模式提供sql語(yǔ)句或參數(shù),得到結(jié)果第十三天1、使用ADO.NET執(zhí)行存儲(chǔ)過(guò)程->將sql語(yǔ)句換成存儲(chǔ)過(guò)程的名字stringsql="execusp_FenYel";stringsql="usp__fenYel"; boystringsql="usp_fenyel1";stringsql="execusp_FenYel1,30";dog>給執(zhí)行對(duì)象(SqlCommand)的CommandType屬性設(shè)置ー個(gè)值cmd.CommandType=CommandType.StoredProcedure;//提示ADO.NET這里執(zhí)行的是存儲(chǔ)過(guò)程>如果有。utput參數(shù),使用SqIParameter提供參數(shù),但是不需耍賦值,只需要設(shè)置Direction屬性為output即可,獲得返回值的時(shí)候使用Value屬性第十四天3、HTML初體驗(yàn)ッ新建一個(gè)記事本,修改后綴名為html或htmッ右鍵使用記事本打開(kāi),即可編輯代碼>有一個(gè)基本結(jié)構(gòu)html是瀏覽器進(jìn)行解釋執(zhí)行的html的基本結(jié)構(gòu)需要記?。緲?biāo)簽4、顏色>三原色紅0-255綠0-255藍(lán)0-255>用十六進(jìn)制的數(shù)字表示0-255 1個(gè)字節(jié)2A8oxff#紅紅綠綠藍(lán)藍(lán)表示顏色#ffOOOO紅色#OOffOO綠色#000000黑色#ffffff白色5、文本標(biāo)簽->標(biāo)題標(biāo)簽<h數(shù)字〉標(biāo)題內(nèi)容</h數(shù)字〉1-6 大-〉小〉物理字體〉邏輯字體>客戶(hù)端字體〉物理字體bboldfaceiitalictt擬聲uunderlinesupsubashan〉邏輯字體HTML字體——邏輯字體(推薦使用)<em> 定義強(qiáng)調(diào)文本(斜體)<strong> 定義強(qiáng)調(diào)文本(粗體)<code> 定義計(jì)算機(jī)代碼文本<samp> 定義計(jì)算機(jī)代碼樣本<kbd> 定義鍵盤(pán)文本。?<var> 定義文本的變量部分<dfn> 定義定義項(xiàng)目<cite> 定義引用(citation)<small> 定義小號(hào)文本<big> 定義大號(hào)文本ー〉物理字體bboldfaceiitalictt擬聲uunderlinesupsubashanつ邏輯字體?>客戶(hù)端字體<fontface=""sizeゴ”810r=””>文本</font>6、格式化標(biāo)簽つ在htm!中忽略所有的空格與換行ッ段落標(biāo)簽pparagraph<P>我是一個(gè)自然段,P>つ換行標(biāo)簽<br/>breakrowつ居中<centerx/center>(不用)->br橫線格式標(biāo)簽:?->段落p->align:left/center/right->換行br->居中center?>分割線hrS->size,width,align,noshade,color?->預(yù)格式化pre->少用tab,多與邏輯字體ー起使用7、鏈接與圖表。鏈接標(biāo)簽anchor<ahref="URL"x/a>herf屬性有關(guān)。放至圖片路徑。卜ゆ:〃網(wǎng)址。錨定使用<anameゴ名字”></a>標(biāo)記目標(biāo)使用つhref二”#名字”></a>用來(lái)跳轉(zhuǎn)a標(biāo)簽還有一個(gè)屬性target<ahref=""target="-self|_bank"x/a>。相對(duì)路徑與絕對(duì)路徑?>圖片標(biāo)簽image<imgscrゴURL”width=""height=""/>8、列表標(biāo)簽つ自定義列表<dl><dt>dt</dt><dd>dl是自定義列表,definedlist,dt是標(biāo)題,datatitle,dd是數(shù)據(jù)描述,datadescription</dd></dl>つ有序列表orderlist<ol><li>listitem</li></ol>ol有一個(gè)屬性typeゴl|i|T|a|A"つ無(wú)序列表(用的最多)unorderlist<ul><lix/li></ul>type="circle|disk|square"10、table>所有的行為真列為假排在ー起看起來(lái)像一列vtable〉代表表格〈/table〉vtr>代表表格中的一行v/tr> tr:tablerowvtd>代表表格中的一列v/td>td:tabledatecell>表格的屬性<table>borderwidthheightcellpaddingゴ像素”cellspacing="12"<td>rowspancolspanalignleftcenter rightvalign top middle bottom>表格的標(biāo)題<thx/th>劇中加粗,表示表頭的內(nèi)容11、幾個(gè)常用標(biāo)記<lessthan小于>greaterthan大于空格 notbreakspace 不可打斷空格&&#include<stdio.h>12、表單標(biāo)簽(最重要)>作用:與服務(wù)器進(jìn)行交互>登陸:<formactionゴ提交到哪"method二"提交方式"〉</form>>文本類(lèi)<inputtype="text"value=""name=""/><textareax/textarea><inputtype="password"value=""name=""/><inputtype="hidden”value二”“name二"”/〉>按鈕類(lèi)<inputtype二”submit”value二””/〉<inputtype二”reseピvalue二””ノ〉<inputtype二”button”value二””/〉<inputtype二”file”value二””/〉<inputtype二”image”src二””ノ〉〈button〉按鈕くbutton〉>選框類(lèi)<inputtype二"radio”/〉<inputtype二”checkbox”/〉使用lable標(biāo)簽解決體驗(yàn)問(wèn)題<inputid二”c”type二”checkbox”/〉<labeけor二”c”〉文本</labeb>列表類(lèi)<select><optionx/option><optionx/option><optionx/option><optionx/option></select>name屬性與value屬性selected屬性第十五天1、幀標(biāo)簽(frame)>frameset>iframe2、div+css->divやspan.〉div是一個(gè)塊狀的容器(會(huì)換行)->span是ー個(gè)行級(jí)的容器->將一些頁(yè)面內(nèi)容包裹起來(lái)統(tǒng)ー的設(shè)置“樣式”->CSS干什么用的?(只要是容器就能設(shè)置css:專(zhuān)一的優(yōu)先級(jí)髙)>層疊樣式表(CascadingStyleSheets)>設(shè)置樣式的集合(里面就是可以設(shè)置樣式的種類(lèi)與內(nèi)容)>設(shè)置頁(yè)面元素的特征3、設(shè)置CSS->語(yǔ)法:特征:值;特征:值;特征:值;特征:值;->寫(xiě)在哪里:>寫(xiě)在標(biāo)容器簽中>容器標(biāo)簽不僅僅是div和span(專(zhuān)ー的優(yōu)先級(jí)高)>內(nèi)容標(biāo)簽的里面,這個(gè)是行內(nèi)樣式->在style標(biāo)簽中,用一個(gè)名字與內(nèi)容相連,這個(gè)是內(nèi)嵌樣式(.c{}class="c")>在外部寫(xiě)ー個(gè)樣式文件(.css),使用<linktype="text/css"rel="stylesheet"hrefゴ文件名,css”/>引入后起作用的樣式稱(chēng)為外部樣式(也要取名字)->一般在選擇使用樣式的時(shí)候,統(tǒng)ー的效果使用外部樣式或內(nèi)嵌樣式如果是特殊的、極個(gè)別的效果使用行內(nèi)樣式4、選擇器與優(yōu)先級(jí)(必須會(huì))->選擇器(selector)->基本選擇器->類(lèi)選擇器->語(yǔ)法:.類(lèi)名{樣式屬性:值;}->元素使用classゴ類(lèi)名"來(lái)使用這個(gè)樣式->id選擇器(id唯一標(biāo)識(shí),即頁(yè)面僅有一個(gè))->語(yǔ)法:ttid名{樣式屬性:值;)->元素使用屬性idゴid名"來(lái)使用這個(gè)樣式->標(biāo)簽選擇器->語(yǔ)法:標(biāo)簽名{樣式屬性:值;)->頁(yè)面中所有的該標(biāo)簽都是這個(gè)樣式->通用選擇器->語(yǔ)法:*{樣式屬性:值;}->頁(yè)面中所有的元素都是這個(gè)樣式->符合選擇播->標(biāo)簽類(lèi)選擇器->語(yǔ)法標(biāo)簽名.類(lèi)名(標(biāo)簽名和類(lèi)名之間不能有空格){樣式屬性:值;}->凡是使用了這個(gè)類(lèi)的標(biāo)簽具有該樣式Eg-p.c{} <pclassゴc”>->子代選擇器->語(yǔ)法:
父〉子{樣式屬性:值;}(可以加空格)(父與子看嵌套,每ー層就是每一代)Eg-<div><p><font></font></px/div>div是p的父親p是font的父親div是p的爺爺->后代選擇答->語(yǔ)法:祖代后代{樣式屬性:值;}(空格代表后代)->偽類(lèi)選擇器:active(活動(dòng)的):visited (點(diǎn)擊后):hover (鼠標(biāo)懸?。?>優(yōu)先級(jí)->專(zhuān)ー的優(yōu)先級(jí)最髙->就近原則(瀏覽器的執(zhí)行順序)最后一個(gè)執(zhí)行的元素生效5、常用樣式->盒子模型ド****)(非常重要)瀏覽器中的元乗都是ー個(gè)個(gè)的W子瀏覽竈在存放元素的歎認(rèn)規(guī)則是從左往右,從上到下的堆砌每ー個(gè)盒子是有特定結(jié)構(gòu)的外邊距margin,°Pleft邊框borderleft邊框border■right內(nèi)切距?padding?I—Jbottom標(biāo)準(zhǔn)文檔流塊級(jí)元素(blocklevel)li占據(jù)著ー個(gè)矩形的區(qū)域,并且和相鄰的li依次豎直排列,不會(huì)排在同一行中。ul也具有同樣的性質(zhì),占據(jù)著ー個(gè)矩形的區(qū)域,并且和相鄰的3依次豎直排列,不會(huì)排在同一行中。因此,這類(lèi)元素稱(chēng)為“塊級(jí)元素”(blocklevel),即它們總是以ー個(gè)塊的形式表現(xiàn)出來(lái),并且跟同級(jí)的兄弟塊依次豎直排列,左右撐滿。行內(nèi)元素(inline)對(duì)于文字這類(lèi)元素,各個(gè)字母之間橫向排列,到最右端自動(dòng)折行,這就是另ー種元素,稱(chēng)為“行內(nèi)元素”(inline)。?vdiv>與vspan>標(biāo)t己的區(qū)另リ(test05-06.html):vdiv>標(biāo)記:是ー個(gè)通用的塊級(jí)元素,一般用于放置各種元素方便排版,其他的塊級(jí)元素一般具有一定的邏輯語(yǔ)義vspan>標(biāo)記:是ー個(gè)行內(nèi)元素,當(dāng)其他行內(nèi)元素不合適時(shí)使用該標(biāo)記,作用與<div>標(biāo)記ー樣盒子在標(biāo)準(zhǔn)流中的定位原則行內(nèi)元素之間的水平margin(test05-07)塊級(jí)元素之間的豎直margin(test05?08)嵌套盒子之間的margin(test05?09)->與盒子有關(guān)的樣式border-topcolorwidthstyle:dotted(點(diǎn)線)dashedborder-leftborder-rightborder-bottommargin-toppadding-top>margin與paddingー樣的簡(jiǎn)寫(xiě)形式margin:10px 四個(gè)方向都是10pxmargin:10px20px上下10px,左右20Pxmargin:10px20px30px;上lOpx下30px左右20pxmagrin:上右下左(順時(shí)針)應(yīng)用:居中margin:Opxauto;需要設(shè)置行寬:widthheight6、通過(guò)瀏覽器査看樣式7、文本樣式>color>font(字體、顏色、大小、粗細(xì)、對(duì)齊、裝飾)>font-family>font-size>font-weight:bold>text-align:leftcenterright(設(shè)置的是文本容器)>line-height:數(shù)字使用padding-top>text-decoration(裝飾):underline(下劃線)8、背景樣式>background(背景圖片、圖片位置、圖片重復(fù)、顏色)>background-image:url(路徑)>background-position:10px20px|topcenter>background-repeat:no-repeat|repeat-x|repeat-y(沿有某一方向重復(fù))>background-color:9、圖片樣式>外形與對(duì)齊>width>height>vertical-align:topmiddlebottom>text-align:leftcenterright10、布局樣式>列表>float浮動(dòng)>float:leftright>清除浮動(dòng)的語(yǔ)法:clear:both:list-style-type:none;>定位position11、默認(rèn)文檔流(按照從左往右、從上到下的順序堆砌)脫離文檔流第十六天1、定位>position屬性static(默認(rèn))relativefixed(脫離文檔流)absolute(脫離文檔流)>與top、!eft-,bottom和right連用top元素頂端與距離“瀏覽器”上邊緣的距離left元素頂端與距離“瀏覽器’’左邊緣的距離bottom元素頂端與距離“瀏覽器”下邊緣的距離right元素頂端與距離“瀏覽器”右邊緣的距離>絕對(duì)定位默認(rèn)是以瀏覽器作為參考,但是如果絕對(duì)定位在relative定位的元素中(絕對(duì)定位中也行),那么就以這個(gè)元素為參考>絕對(duì)定位中位置的層次z-index屬性2、display顯示與隱藏以及設(shè)置顯示樣式>none,block(塊)、inline(行級(jí))->div、span3、JavaScript>基礎(chǔ)語(yǔ)法>DOM(文檔對(duì)象模型)>BOM->jQuery(DOM,BOM)->js髙級(jí)4-,JavaScript基礎(chǔ)>基本歷史和現(xiàn)狀>1994-1995,點(diǎn)擊ー個(gè)網(wǎng)頁(yè),需要40s左右オ可以打開(kāi)注冊(cè)的問(wèn)題>就是為了檢驗(yàn)頁(yè)面中的數(shù)據(jù)網(wǎng)景:livescript.1995年sun的java火了,更名為javascript微軟ie綁定到操作體統(tǒng)中(JScript語(yǔ)言)//CGI->asp(vbscript)->jsp1996-2000谷歌v8引擎(可以將腳本編譯成機(jī)器語(yǔ)言執(zhí)行)->jsecma-v3ecma-v5嚴(yán)格模式strict歷史分歧,是的javascript的多面化執(zhí)行在瀏覽器上的ー個(gè)腳本語(yǔ)言flex:actionscript(js是變種)node.js(v8引擎作為js的解釋引為,將js帶到了服務(wù)器后端)NginXCommonJS>庫(kù)jQueryprototypeYUIExtjsdojo5、JavaScript基礎(chǔ)->寫(xiě)在哪里?helloworld>1,新建一個(gè)html文件>2.在head標(biāo)簽中添加一個(gè)〈scripttype="text/javascript,,x/script>>3.在里面添加代碼alert(〃”)->詞法與句法(參照C#學(xué)習(xí))6、javascript的數(shù)據(jù)類(lèi)型(記下來(lái))(重要)->基本類(lèi)型:數(shù)字類(lèi)型number、布爾類(lèi)型boolean、字符串類(lèi)型string->引用類(lèi)型:對(duì)象類(lèi)型、函數(shù)類(lèi)型->空類(lèi)型:null和undefined->運(yùn)算符:typeof語(yǔ)法:stringtypeof(變量);7ヽJavaScript是ー個(gè)弱類(lèi)型的語(yǔ)言->弱類(lèi)型不代表沒(méi)有類(lèi)型,不嚴(yán)格的檢查類(lèi)型>C#intnum=10;//需要檢查類(lèi)型賦值如果不符合要求就報(bào)錯(cuò),編譯不通過(guò)intnum二“123”;〃報(bào)錯(cuò)>js使用var聲明變量varnum=123;/Z不會(huì)檢查類(lèi)型,任何賦值都可以成功8、運(yùn)算符>數(shù)學(xué)運(yùn)算符:+、?、?、ノ>邏輯運(yùn)算符:>、<、>=^<=>==>!=&&、!1===和(==完全等于>與對(duì)象相關(guān)newdeleteinstanceof9、邏輯控制與流程控制>ifif(bool表達(dá)式){語(yǔ)句}elseif(bool表達(dá)式){語(yǔ)句}else{語(yǔ)句)解釋性的語(yǔ)言,規(guī)范結(jié)尾用分號(hào),但是如果不用分號(hào),也不會(huì)錯(cuò),js引擎會(huì)根據(jù)換行自動(dòng)加分號(hào)>switch-caseswitch(val){case值!:語(yǔ)句;break;case值2:語(yǔ)句;break;case值3:語(yǔ)句;break;case值N:語(yǔ)句;break;default:語(yǔ)句;break;)>whilewhile(邏輯表達(dá)式){循環(huán)體)>do-whiledo{}while(條件);->forfor(vari=0;i<max;i++){循環(huán)體)->for-in結(jié)構(gòu)(有點(diǎn)像foreach,但是不同)for(varitemin集合或?qū)ο螅﹞遍歷這個(gè)集合對(duì)象,item為每ー個(gè)項(xiàng)的鍵循環(huán)體}10、使用函數(shù)(函數(shù)、方法)(難點(diǎn))->函數(shù)的語(yǔ)法聲明式語(yǔ)法:function函數(shù)名(參數(shù)列表){/Z函數(shù)體//如果有返回值直接return即可
}(結(jié)尾沒(méi)有分號(hào))<scriptti*pe=Mtext/javascript**>//在c,中使用帕斯卡命名規(guī)則7/在javascrit中沿用C語(yǔ)言的命名規(guī)則/Z小寫(xiě)+下劃銭7/考慮駱駝命名規(guī)則 I77投入生產(chǎn)以后,會(huì)使用壓縮工具將代碼壓縮functiongerMax()</script>Lambda函數(shù)(匿名函數(shù))varfunc=function(參數(shù)){方法體};(結(jié)尾有分號(hào))->在C#中委托如何使用的?->聲明委托類(lèi)型->定義委托變量->授權(quán)方法(匿名)func=delegate(參數(shù)){方法體};func=(參數(shù))=>{方法體};〃C#->使用委托變量調(diào)用方法->arguments參數(shù)函數(shù)內(nèi)部都有一個(gè)arguments參數(shù),表示函數(shù)的參數(shù)像數(shù)組的對(duì)象->使用函數(shù),計(jì)算兔子數(shù)列(Fibonacci數(shù)列)1 1 2 3 5 8 13...->Function對(duì)象(動(dòng)態(tài)函數(shù))語(yǔ)法varfunc=newFunction(...);//Function參數(shù)中最后ー個(gè)參數(shù)是方法體,前面的參數(shù)都是該方法的參數(shù)/Z參數(shù)類(lèi)型都是字符串vargetMax=function(nl,n2){returnnl>n2?nl:n2;);//varfunc=newFunction("nl","n2","returnnl>n2?nl:n2;");/Z將字符串變成函數(shù)11、使用瀏覽器調(diào)試js代碼(*****)->js的代碼量非常大,封裝技巧非常強(qiáng)->代碼分析第十七天1、答疑->作用域
->在js中只有函數(shù)可以限定變量的作用域if(false){varnum=10;}alert(num);//undefined->兔子數(shù)列2、類(lèi)型補(bǔ)充->js中數(shù)字是浮點(diǎn)類(lèi)型,而且是不精確的類(lèi)型0.30000000040.399999998->0,4MongoDB(NoSQL)使用的是javascriptshellー個(gè)是模糊數(shù)字ー個(gè)數(shù)字表示上限ー個(gè)數(shù)字表示下限->字符串varstr="字符串";//在js中雙引號(hào)和單引號(hào)都表示字符串varstr='字符串’;<inputtype="button"onclick="alert("HelloWorld")"/><inputtype="button"onclick="alert('HelloWorld')"/>->json案例varstr="{kl:123,k2:456}";varstr="{kl:‘張三',k2:‘李四’}";newFunction("return"+str)();->數(shù)組vararrl=ロ;〃字面值,直接量vararr2=newArray();3,對(duì)象->js是面向?qū)ο蟮恼Z(yǔ)言->js中對(duì)象是什么:就是鍵值對(duì)函數(shù)是一等公民。使用varfoo=function(){};鍵值對(duì),值可以是數(shù)字、字符串或布爾類(lèi)型的數(shù)據(jù),好比字段值也可以是函數(shù),好比方法,鍵就是變量名或函數(shù)名/Z對(duì)象的字面值(JSON)var〇={};//Object對(duì)象var〇={name:"趙曉虎“,sex:“男”,age:19,sayHello:function(){alert("你好")};>關(guān)聯(lián)數(shù)組o.sayHello()在js中支持將對(duì)象當(dāng)作數(shù)組使用of'name"]o["sayHello"]()>this->在C#中,this表示當(dāng)前對(duì)象(實(shí)例)->js中也是ー樣4、構(gòu)造方法與對(duì)象varol={};varo2=newObject();//Object的構(gòu)造方法//js中所有的對(duì)象類(lèi)型“來(lái)自于"。bject//判斷變量是否是構(gòu)造方法創(chuàng)建出來(lái)boolean變量instanceof構(gòu)造方法alert({)instanceofObject);>什么是構(gòu)造方法>就是普通方法>調(diào)用的時(shí)候使用new就可以將其作為構(gòu)造方法來(lái)使用了>js沒(méi)有類(lèi),直接使用構(gòu)造方法創(chuàng)建對(duì)象->實(shí)現(xiàn)步驟->創(chuàng)建一個(gè)函數(shù)->new這個(gè)函數(shù)>添加成員在構(gòu)造方法中使用this.成員進(jìn)行添加5、js支持動(dòng)態(tài)成員>如果ー個(gè)對(duì)象沒(méi)有定義Memeber的屬性,但是現(xiàn)在希望她有只需要用"對(duì)象.Member=值",那么就可以給這個(gè)對(duì)象創(chuàng)建該成員了6、類(lèi)型的轉(zhuǎn)換與包裝對(duì)象>基本類(lèi)型的轉(zhuǎn)換>number,boolean,string>數(shù)字,字符串>String(數(shù)字)>數(shù)字>數(shù)字.toString()->字符串轉(zhuǎn)數(shù)字>字符串ー〇>Number(字符串)>parselnt()parseFloat()->轉(zhuǎn)booleanif(!!val){)常常會(huì)有能力判斷var〇={};//...〃不知道。里面有沒(méi)有f。。這個(gè)方法,如果有,那么就不添加//如果沒(méi)有,就添加(某ー個(gè)對(duì)象是否具有某個(gè)方法,如果有使用自定義的//如果沒(méi)有就手動(dòng)的添加一個(gè),以便調(diào)用)if(!o.foo){//判斷fo。是否存在,如果存在o.fo。的返回值為非undefined//如果不存在按么o.foo就是undefinedo.foo=function(){};)o.foo();//典型的就是jQuery中trim方法->包裝類(lèi)型>基本類(lèi)型:number、string、boolean>包裝類(lèi)型:Number^String、Boolean>基本類(lèi)型不是對(duì)象,那么就不具備方法,只是一個(gè)簡(jiǎn)單的數(shù)據(jù)>在執(zhí)行諸如"num.toString()"的時(shí)候編譯器會(huì)自動(dòng)的根據(jù)num生成一個(gè)Number類(lèi)型的對(duì)象,并調(diào)用toString方法將結(jié)果返回,然后釋放Number對(duì)象,等待垃圾回收7、常用對(duì)象>字符串>數(shù)組>時(shí)間>正則表達(dá)式>異常8、正則表達(dá)式>復(fù)習(xí)元字符>基本元字符:[]I()>限定元字符:?{n}{n,}{n,m}>首尾元字符A$>簡(jiǎn)寫(xiě)形式\d\D\w\W\s\S-
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑電氣安裝與智能化控制考核試卷
- 文具行業(yè)新材料研究與開(kāi)發(fā)考核試卷
- 半導(dǎo)體器件的光電耦合器件考核試卷
- 標(biāo)準(zhǔn)化服務(wù)在環(huán)保設(shè)備制造的技術(shù)創(chuàng)新考核試卷
- 染整工藝優(yōu)化與節(jié)能減排考核試卷
- 拍賣(mài)行業(yè)國(guó)際市場(chǎng)預(yù)測(cè)與分析考核試卷
- 中草藥種植的農(nóng)業(yè)產(chǎn)業(yè)鏈協(xié)同創(chuàng)新考核試卷
- 塑料板材的耐切割性能研究考核試卷
- 孤殘兒童庇護(hù)服務(wù)社會(huì)效益提升路徑研究與實(shí)踐案例考核試卷
- 模擬射擊器材租賃合同范本考核試卷
- 形勢(shì)與政策(貴州財(cái)經(jīng)大學(xué))知到智慧樹(shù)章節(jié)答案
- 管道自動(dòng)焊培訓(xùn)課件
- 房地產(chǎn)項(xiàng)目開(kāi)發(fā)建設(shè)流程課件
- 2024年醫(yī)療器械經(jīng)營(yíng)質(zhì)量管理規(guī)范培訓(xùn)課件
- 2024年精麻藥品培訓(xùn)
- 項(xiàng)目式學(xué)習(xí)的培訓(xùn)
- 2024年3月30日事業(yè)單位聯(lián)考A類(lèi)《職業(yè)能力傾向測(cè)驗(yàn)》試題
- 食堂從業(yè)人員晨午檢制度
- 現(xiàn)代家政導(dǎo)論-課件 2.1家庭的認(rèn)知
- 護(hù)理相關(guān)法律法規(guī)
- 嬰幼兒窒息的預(yù)防與急救
評(píng)論
0/150
提交評(píng)論