自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

.Net Framework托管問(wèn)題詳解

開(kāi)發(fā) 后端
.Net Framework托管的了解,首先就要先從.NET的工作機(jī)制開(kāi)始看起。那么這篇文章就為大家進(jìn)行了詳細(xì)的分析,方便大家理解。

.Net Framework中有多特殊的功能值得我們?nèi)ド钊氲难芯?。比如今天我們向大家介紹的范式以及.Net Framework托管等等。大家可以通過(guò)本文介紹的內(nèi)容對(duì).Net Framework有一個(gè)深入的理解程度。#t#

昨天一家外包公司的技術(shù)人員給我打電話,問(wèn)了一些數(shù)據(jù)庫(kù)的知識(shí),他問(wèn)我知道什么叫范式嗎?我說(shuō)不知道。他又問(wèn)我你知道數(shù)據(jù)庫(kù)的底層操作嗎?我說(shuō)不知道。當(dāng)時(shí)他問(wèn)范式我確實(shí)是沒(méi)反映過(guò)來(lái),他問(wèn)數(shù)據(jù)庫(kù)的底層操作我是不知道他指的底層操作是什么東西,后來(lái)上網(wǎng)查查資料,基本對(duì)底層操作有了一個(gè)了解。

一般來(lái)說(shuō),關(guān)系型數(shù)據(jù)庫(kù)的范式分為***至第六范式,我們平常用到的也就是***、第二、第三范式。關(guān)系型數(shù)據(jù)庫(kù)必需滿(mǎn)足***范式,否則就不是關(guān)系型數(shù)據(jù)庫(kù)。

***范式指的就是一條記錄應(yīng)該是一行,而不是放到一列,比如公司信息有公司名稱(chēng)、公司地址、聯(lián)系電話、傳真等,這些信息應(yīng)該都放到一行,而不是在一列,這就是***范式。

第二范式指的是一條記錄應(yīng)該有一個(gè)唯一區(qū)別的字段,也就是主鍵了,我們?cè)跀?shù)據(jù)庫(kù)常的主鍵有自增量、GUID等,主鍵也是索引鍵。

第三范式實(shí)際上就是關(guān)系庫(kù)中用得最多的了,一對(duì)多,多對(duì)多都屬于第三范式范疇,這樣可能不太好理解。我們這么講吧,比如說(shuō)產(chǎn)品的信息中有一個(gè)與廠商相關(guān)的信息,這個(gè)廠商的信息包括名稱(chēng)、地址、電話等,那么我們就應(yīng)該將廠商的信息獨(dú)立出來(lái)作為一個(gè)表,在產(chǎn)品信息表中只一個(gè)索引與廠商表的主鍵相匹配。

一般來(lái)說(shuō),我們?cè)诮ū淼倪^(guò)程中,第二范式與第三范式用得最多,***范式幾乎很少用,因?yàn)闆](méi)有主鍵的記錄幾乎是沒(méi)有意義的。但我們?cè)诮◣?kù)的時(shí)候是否一定要合乎某一范式呢?我給的答案是No,建庫(kù)一定要符合實(shí)際情況,而不是死搬硬套建庫(kù)要符合第三范式這個(gè)原則。第三范式確實(shí)有他的好處,如減少數(shù)據(jù)冗余,但我們也不能忽略第三范式給我們帶來(lái)的麻煩,如更加復(fù)雜的Sql語(yǔ)句,我們?cè)诓樵?xún)的時(shí)候需要用到聯(lián)接查詢(xún)或者子查詢(xún)才能得到結(jié)果,這樣在使用.Net框架開(kāi)發(fā)中并不太好處理;又如多表查詢(xún)會(huì)減慢速度。所以我們?cè)诮◣?kù)的時(shí)候應(yīng)該根據(jù)實(shí)際情況來(lái)確定是用第三范式還是第二范式,像我先提到的廠商信息與產(chǎn)品信息,就一定要使用第三范式。

關(guān)于第二個(gè)問(wèn)題,就是數(shù)據(jù)庫(kù)的底層操作,我當(dāng)時(shí)不明白他說(shuō)的數(shù)據(jù)庫(kù)底層是什么東西,后來(lái)到網(wǎng)上一查,數(shù)據(jù)庫(kù)的底層就是數(shù)據(jù)庫(kù)的一些系統(tǒng)表、插入及更新數(shù)據(jù)等。
Sql Server在建一個(gè)庫(kù)的時(shí)候,每一個(gè)庫(kù)都會(huì)有一些系統(tǒng)表,如Sys_Objects、Sys_Columus等,這些表是干嘛的呢,這些表是描述你所建表、存儲(chǔ)過(guò)程、觸發(fā)、索引等的信息的,也就是說(shuō),你所有建立的表都是保存在系統(tǒng)表中,例如Sys_Columus保存表的列信息。

另一個(gè)是數(shù)據(jù)庫(kù)的插入數(shù)據(jù)方式,當(dāng)數(shù)據(jù)在插入時(shí),會(huì)有一條臨時(shí)數(shù)據(jù)(inserted);在更新數(shù)據(jù)時(shí),會(huì)先刪除原有的記錄,將新的記錄再插進(jìn)去;而刪除數(shù)據(jù)就是直接刪除了。所以觸發(fā)時(shí),數(shù)據(jù)庫(kù)的動(dòng)作只有inserted和updated兩種,根據(jù)這兩種特性,在寫(xiě)觸發(fā)時(shí)很有用的。

還有第三個(gè)問(wèn)題,不記得是哪家公司問(wèn)我了,是關(guān)于.Net Framework托管的問(wèn)題,我當(dāng)是以為是回調(diào)機(jī)制的托管,因?yàn)樵贑#中是有一個(gè)托管的,但他實(shí)際問(wèn)的是.Net的代碼托管。

要想了解.Net Framework托管,我們需要從.Net的工作機(jī)制說(shuō)起,.Net實(shí)際是上將你編寫(xiě)的代碼編譯成中間語(yǔ)言(MSIL),也就是說(shuō)不管你使用C#還是.Net,都會(huì)編譯成為一個(gè)MSIL,而不是本地機(jī)器碼(根據(jù)特定的操作系統(tǒng)與特定的硬件環(huán)境生成的二進(jìn)制代碼)。

在運(yùn)行的程序的時(shí)候,首先必需啟動(dòng).Net Framework(隨操作系統(tǒng)啟動(dòng)的一個(gè)服務(wù))來(lái)運(yùn)行你的程序,也就是說(shuō).Net Framework是一個(gè)環(huán)境,你的程序不是運(yùn)行在操作系統(tǒng)中,而是運(yùn)行在.Net Framework中。.Net Framework會(huì)把你的程序編譯成與本地機(jī)器相符合的二進(jìn)制碼,叫做Just-in-time(JIT,運(yùn)行時(shí)編譯),運(yùn)行時(shí)編譯是一種按需編譯的機(jī)制。

這個(gè)過(guò)程就是.Net Framework托管了,在你的程序被.Net Framework托管的時(shí)候,.Net Framework會(huì)為你的程序提供垃圾回收機(jī)制,直到運(yùn)行的程序生命周期結(jié)束。***,說(shuō)一句,其實(shí)概念性的東西有時(shí)候還是很有用,特別是你在找工作的時(shí)候,因?yàn)樗麄円话銜?huì)考這些,所以要多記一些術(shù)語(yǔ)、概念、名詞,呵呵

責(zé)任編輯:曹凱 來(lái)源: 博客園
相關(guān)推薦

2010-01-06 19:22:43

.NET Framew

2009-08-26 14:52:19

.NET Framew

2009-07-09 09:28:19

.Net Micro

2012-01-09 16:00:56

2010-01-05 16:20:46

.NET Framew

2010-01-05 09:35:07

.Net Framew

2010-01-05 18:09:07

.NET Framew

2010-01-05 16:15:05

.NET Framew

2010-01-05 10:29:43

.NET Framew

2010-01-06 16:33:50

.Net Framew

2009-08-26 15:25:06

.NET Framew

2010-01-05 15:43:13

.NET Framew

2010-01-05 14:04:53

.NET Framew

2010-01-05 16:31:45

.NET Framew

2013-08-19 17:25:18

.Net托管

2009-11-04 14:54:51

.NET類(lèi)

2010-04-20 09:40:38

ADO.NET Ent

2009-08-26 14:23:14

C#.Net Fram

2009-12-15 11:28:34

.NET Framew

2011-06-20 17:33:58

Qt MeegoTouch Maemo
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)