1. 程式人生 > >C#程式設計下,網易雲課堂,計算機專業

C#程式設計下,網易雲課堂,計算機專業




C#程式設計下:
第一講 繪圖及其影象,
1.1 繪圖基礎 GDI+
GDI:Graphics Device Interface
是.NET框架結構的重要組成部分。和GDI一樣提供對二維影象的支援
這段程式碼包含常見所有用法

system.Drawing, 提供了對GDI+基本圖形功能的訪問,對於一般圖形繪製足夠。
System.Drawing.2D,提供高階的二維和向量圖形功能
System.Drawing.Imaging提供高階影象處理功能
System.Drawing.Text提供高階排版功能,該命令控制元件中的類允許使用者建立和使用多種字型。

座標系統:
預設從左上角是座標原點,往右是X
往下是Y
常用結構
color封裝了對顏色的定義,
000黑色,255白色
Rectangle是整形
RectangleF是浮點
1.2 繪圖物件及其繪圖方法
Graphics劃線,直線,矩形
g.Dispose()顯示釋放建立的graphics物件。
draw畫
fill填充
alignment對齊
dashstyle點線,
dot點
startCapEndCap
brush畫刷
myGraphics.Transform矩陣
1.3
一組漂亮繪圖示例
視訊自動演示,然後給了程式碼
1.4控制元件的重繪和雙緩衝
呼叫了下面幾個方法
invalidate()
update()
refresh()
雙緩衝技術:
畫很多矩形,圓形,佔據很多時間,螢幕會閃爍,方法,在記憶體裡畫好,直接放上去,避免閃爍。做動畫都是這樣做。
控制元件的doubleBuffered屬性在framework3版本中有
1.5 影象處理
BITMAP類
點陣圖,從image派生。
處理BMP,JPEG,.GIF格式
影象的繪製
影象處理,直接在記憶體中處理畫素採用指標。平常用不上指標。
stride一行畫素點佔據的位元組數
允許不安全程式碼
有兩個處理圖片的例子
ImageProcessor
更高階的處理影象的例子
CSharpFilters_src6

第二講
文字處理及正則表示式
使用environment類
console類:控制檯類
string類每次生成物件
stringbuilder類
system.text.encoding類。
default utf8 預設編碼格式
.getencoding
getbytes(str)
.GetString(byte[])

2.2正則表示式
匹配某類文字。查詢各種需要的某類文字。
處理文字,沒有正則表示式,寸步難行。
【0-9】{2.4}出現2-4次
^[a-zA-A] + $
從頭到尾匹配
幾個主要要素
字元ab
\t \[
\u0020
\x20
a- z :\w
0-9: \d
\s表示空白,
\S表示非空白
.表示任意字元
次數:
{2,6}2到6次
*:{0,}0到無窮次
+:{1,}1到無窮次
?表示:{0,1}
*? +?  ??懶惰匹配
|或者
()成組,算成一部分,是一起的。
位置限定
^ 開頭
xxxxxxxx$表示末尾
\b單詞邊界   \B非單詞邊界
?<名稱>xxxxxx
分組進行命名
忽略大小寫
mulitline影響^$的含義
singleline影響.的含義
Regex類
using System.Text.RegularExpressions在這個類下面有正則表示式
W+多個字母,
\d+多個數字,
regex正則表示式
播放歌曲,顯示歌詞的軟體
歌詞:lrc格式
時間和歌詞匹配
重複歌詞就會有多個時間。
工具箱,選擇項,找到控制元件,新增windows按鍵
原則就是:
歌詞和時間匹配
第三講
網路資訊獲取及XML處理
HTTP協議:傳輸文字,圖片,視訊等。
客戶端和服務端組成。
之間通訊,客戶端提出請求request,服務端相應,response
之間用IO流stream來表示
get:寫到網址, post
檢視通訊過程中的請求響應資訊:fiddler2工具,
瀏覽器中輸入網址,代替我們像服務端發出請求,按下F12或者右擊,審查元素,檢視源,開啟開發者選項,看到每次請求,用到的get方法,
headers傳遞的資訊,response相應的資訊。
軟體監控瀏覽器所有過程。
cookies指本機伺服器一點資訊。下次同樣網站,會把資訊傳遞到服務端。有時候記錄個人資訊
set-cookie:
webRequest請求
根據網址得到request
WebResponse
寫資訊:給伺服器傳送資訊
讀資訊:從服務端得到資訊

程式碼段:
credentials要求認證,

request得到response


3.2
XML基本操作
是在資料交換和表示中最常用的方式,用文字呈現,有特有的結構
isbn書的屬性,
所有東西成對,
DOM文件物件模型,通用的
SAX解析的簡單API
XMLNODE的操作
查詢,增加,刪除

3.3
XPath 及Xlst
Axes路徑/及//
第幾個子節點[1]等
屬性@
條件[]
load裝入
root根節點
selectnodes選擇節點
使用xlst進行轉換
3.4
一組示例,視訊,很快就過去了,然後給了原始碼


第四講
多執行緒與非同步程式設計
4.1 執行緒及其控制
建立,控制,執行緒池,集合中使用,介面中使用
程序:process
每個事情成為執行緒,
thread相當於一個任務,
指令:一個方法
資料:相關物件
abort撤銷,
join等待
建立執行緒:thread類,
多執行緒:同時執行多個任務
sleep等待會
cnt ++計數
同一個任務建立三個執行緒,交替執行
停止:執行緒函式會一直執行,直到結束
查詢執行緒狀態
執行緒有優先順序
highest
lowest
線上程中畫圖,每個執行緒畫自己的圖,然後互不干擾
isBackground成為後臺執行緒,主執行緒停止,後臺執行緒也停止。
run()方法核心
無限迴圈,x,y位置做個小變化,建立物件,矩形,圓,物件。
第二個視訊
執行緒同步
使用join()方法
兩個執行緒都要訪問同樣一個變數,
lock()物件進行鎖定,等一系列執行完畢,其他執行緒才能進來,用於訪問關鍵變數。
執行緒池及其他相關類。
執行緒會帶來新的開銷,代價很高,
很多執行緒會很慢,才有了執行緒池,需要從裡面取執行緒,執行任務,任務結束,物件不釋放,用作別的用途。
Threadpool.
Timer的構造方法如下:
視訊3
集合的執行緒安全性
array,arraylist使用方法獲取一個執行緒安全的包裝物件
Windows介面與執行緒
使用backgroundworker元件。
C#5.0用更加方便的非同步方法

4.2 並行程式設計
多個CPU同時執行任務
TPL並行任務庫。
task用執行緒池進行任務執行,比threadpool更優化,
parallel是並行執行任務類的實用類

Task類的使用。
task中的異常
aggregateException合併的異常
parallel類的使用
並行Linq
在集合上加個AsParallel()

#########
4.3 非同步程式設計
asynchronize非同步
特點:
不堵塞當前任務,,提高UI相應能力
傳統方法:委託:beginInvoke and endInvoke
C#5.0(.net framework4.5, vs 2013)
增加await and async關鍵字
解決了傳統方法中:非同步任務與回撥方法分開寫
在winform中

非同步的流

第五講 訪問資料庫
5.1
資料庫基礎知識
資料按照一定結構儲存和管理
資料庫管理系統DBMS
oracle,MS SQL Server。
優點:
共享性,獨立性,完整性
管理功能:定義,操縱,完整,安全,併發
微軟的:
Microsoft SQL Server
microsoft access
其他的資料庫
Oracle, Mysql(開源)
RDBMS基本概念
關係型資料庫RDB
9成都是關係型資料庫
二維表格組織資料
表datatable
行datarow: 記錄record
列:datacolum:欄位field
主鍵:primary key
資料庫表的設計
示例:
書籍表:編號,書名,作者,出版社
院系表:編號,名稱,辦公地址,辦公電話
實體關係圖E-R圖

第三個視訊
資料庫的使用
1視覺化的管理介面
類似Windows桌面軟體
2 程式
SQL結構化查詢語言
資料庫標準操作語言
包含資料定義,資料查詢,操縱,控制,
最常用的操作,增刪改查。
CRUD:creat,re,update,delete,
通過程式設計操作資料庫

5.2
ADO.NET資料庫的訪問技術
位於system.data名稱控制元件裡面
ODBC,
DAO,
ADO
ADO.NET
四個重要物件:
connection, command,
datareader,
dataadapter,
供應程式provider

5.3 訪問資料庫的方法
方式1:dataadapter and dataset
適合離線處理,自動建立command物件。
方式2:datareader
適合於只讀資料,效率較高。
connection物件:
不同data provider有不同connection物件
連線字串:
使用command物件:
使用引數:
第二個視訊:
command and datareader
5.4
資料庫應用程式
應用示例:酒店管理系統
介面和資料庫的關係:介面-sql語句-資料庫
使用者在介面輸入一個查詢語句,生成一個sql語句,語句去訪問資料庫。結果再顯示到介面上

圖書管理系統
數書目查詢,
登入,查詢等都是介面到SQL語句的過程。

點選確定,跳轉到程式內部,通過程式碼取得使用者名稱,密碼。

分層架構
UI :user graphical interface
BLL:business logic layer
DAL: data access layer
MODEL:資料模型
這幾層之間傳遞引數
ORMapping(object-relation mapping)
物件-關係對映

第三個視訊,重要,重複看
資訊管理系統
後臺資料庫,前臺UI介面
分層,每層建立一個資料夾,或者每層建立一個專案
介面層主要是窗體

第六章
深入理解C#語言
6.1 型別與轉換

C#資料型別
值型別,引用型別。

值型別包括:
簡單型別
結構型別
列舉型別
引用型別包括:
類型別
陣列型別
指代型別

引用
分配到堆裡,

分配到棧裡

引用型別轉換
隱式轉換:子類轉換為父類
顯示轉換:父類轉換為子類。

引用型別和值型別轉換Boxing and unboxing
把引用型別包裝好,封裝成Object物件,然後轉換為值型別。


域變數和區域性變數
類static變數類似類中的全域性變數
域變數類似物件中的變數
區域性變數:在函式體及其{}中,在棧中分配,自動消失
域變數自動有初值,區域性變數則不

6.2變數及其傳遞
ref引數
params引數
預設引數


6.3 多型與虛方法
多型:同名字
編譯時候多型
執行時候多型

上溯造型和虛方法呼叫

最可派生的方法

6.4 動態型別確定

is運算子
用於判斷執行時物件的型別

== 與!=

6.5
物件構造與析構
構造方法的初始化部分:使用this and base

class Student : Person
{
}
說明學生是人的子類
base是父類的構造方法

域的初始化
中不能引用this

構造方法的執行過程
若有this(),轉向之
執行域的初始化
轉到base
執行方法體
應避免在構造方法中呼叫任何虛方法

靜態構造方法

第二個視訊
析構方法(前面不能有修飾)
~類名(){}

自動垃圾回收

顯示資源管理

6.6C#語言新特性
泛型C#20.
動態語言特性C#4.0
非同步程式設計 C#5.0
task, await
初始化更方便C#6.0