<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      .NET相關知識點分享一

      第一章 .NET Core入門

      1 .NET 為什么要跨平臺?

      A. 安全考慮(Linux開源)

      B. 成本原因(Windows收費)

      C. 軟件生態(tài)(服務器軟件生態(tài)優(yōu)先在Linux)

      2 .NET Framework和.NET Core的區(qū)別?

      1. 跨平臺支持:
        • .NET Framework:最初是為Windows平臺設計的,因此只能在Windows操作系統(tǒng)上運行。
        • .NET Core:專注于跨平臺支持,并且可以在Windows、macOS和Linux等多種操作系統(tǒng)上運行。
      2. 開源性:
        • .NET Framework:在過去是封閉源代碼的,但在后來的版本中,微軟提供了部分源代碼的訪問權限。
        • .NET Core:是一個完全開源的項目,其源代碼可在GitHub上公開訪問。
      3. 支持的應用類型:
        • .NET Framework:主要用于開發(fā)Windows桌面應用程序、ASP.NET Web Forms和ASP.NET MVC等Web應用程序。
        • .NET Core:可用于開發(fā)跨平臺的桌面應用程序、Web應用程序、移動應用程序以及云服務等。
      4. 版本控制:
        • .NET Framework:以版本號形式進行更新,例如.NET Framework 3.5、4.0、4.5等。
        • .NET Core:在某個時間點之后,經(jīng)歷了版本變化,并逐漸演變?yōu)?NET 5、.NET 6等,最后演進為.NET 6和更高版本。
      5. 部署方式:
        • .NET Framework:應用程序依賴于特定版本的.NET Framework,需要在目標機器上安裝相應的.NET Framework版本才能運行。
        • .NET Core:應用程序可以包含自身所需的.NET Core運行時,因此無需在目標機器上單獨安裝.NET Core。
      6. 性能:
        • .NET Framework:由于歷史原因,性能方面可能不如.NET Core,并且較舊版本可能會有性能問題。
        • .NET Core:專注于性能優(yōu)化,因此通常在性能方面表現(xiàn)更好。
      7. 后續(xù)發(fā)展:
        • .NET Framework:自.NET Core的推出后,微軟將其定義為“永久不會再有新的版本”,并且未來的新功能主要集中在.NET Core和后來的.NET 5及更高版本。
        • .NET Core:最終與.NET 5合并為.NET 5,并成為.NET平臺的未來發(fā)展方向。這個新的.NET平臺統(tǒng)一了之前的.NET Framework和.NET Core,形成一個統(tǒng)一的、跨平臺的.NET生態(tài)系統(tǒng)。

      3 .NET Standard是什么?

      ? .NET Standard是一種規(guī)范,規(guī)定了.NET Framework和.NET Core等共同實現(xiàn)的一組API,它不是一個框架,只是一種規(guī)范。從.NET 5開始,微軟不再更新.NET Standard,而是把.NET 5、.NET 6等視為單一的代碼庫,在編譯和運行時來檢查不同平臺所支持的功能差異。

      4 .NET Core項目結構的創(chuàng)新之處?

      .csproj 文件的區(qū)別:A. .NET Framework里,項目中的所有代碼文件都要添加到*.csproj文件,如果某個沒有添加到,這某個代碼文件就不會被編譯。

      B. .NET Core項目中的代碼文件不用添加到*.csproj文件里,而是默認都被自動包含到項目中,除非手動排除。

      第二章 .NET Core 重難點知識

      2.1 異步編程

      2.1.1 什么是異步編程?有啥用處?

      例子:“異步點餐” 說明

      對照“異步點餐”的例子,異步編程的優(yōu)點就是可以提高服務器接待請求的數(shù)量,但不會使得單個請求的處理效率變高,甚至有可能略有降低。

      2.1.2 使用和編寫異步方法?

      在調(diào)用異步方法的時候,一般都要加上await關鍵字。如果一個方法中有await關鍵字,那么該方法也必須修飾為async。

      async修飾了方法后,在方法內(nèi)部直接返回int類型就行了,編譯器會幫助我們把int轉換為Task;否則需要直接創(chuàng)建Task的返回對象。

      2.1.3 async和await的原理?

      async方法會被C#編譯器編譯成一個類,并根據(jù)await調(diào)用把方法切分成多個狀態(tài),對async方法的調(diào)用就會被拆分為若干次對MoveNext方法的調(diào)用。

      2.1.4 async背后的線程切換

      異步調(diào)用前的線程在異步等待期間會被放回線程池,等異步等待結束后,一個新的空閑線程會從線程池中被獲取,異步等待調(diào)用后續(xù)的代碼會在這個新的空閑線程中。

      編譯器會把async拆分成多次方法被調(diào)用,程序在運行的時候會通過線程池中取出空線程執(zhí)行不同的MoveNext調(diào)用的方式來避免線程的“空等”,這樣就提升系統(tǒng)的并發(fā)處理能力。

      2.1.5 為什么有的異步方法沒有async?

      因為編譯器會把async方法編譯成類的緣故,這不僅會增加程序集的尺寸,而且運行效率一般也會比普通方法低。

      對于使用async的異步方法,如果返回值是Task類型,我們可以直接用return結束方法的執(zhí)行,比如如果方法的返回值是Task,我們直接return 5,編譯器會把它們轉換成Task對象。但是如果不用async的異步方法,需要我們手動創(chuàng)建Task對象。

      如果由于某些框架的限制,我們編寫的方法不能標注為async,那么在這個方法中就不能使用await調(diào)用異步方法。那么對于返回值為Task類型的異步方法,可以在Task類型對象上調(diào)用Result屬性或者GetAwaiter().GetResult來等待異步方法執(zhí)行結束后1獲取返回值;對于Task類型對象上調(diào)用Wait方法來調(diào)用異步方法并等待任務執(zhí)行結束。【不過這種調(diào)用方式不推薦,因為會阻塞調(diào)用線程,導致系統(tǒng)的并發(fā)能力下降,甚至會出現(xiàn)死鎖】

      2.1.4 CancellationToken的使用?

      .NET Core中有很多異步方法中,有CancellationToken這個類型的參數(shù),可以通過它提前終止異步方法

      2.1.5 WhenAll、WhenAny等方法的使用

      await Task.WhenAll(t1,t2,t3); 同時等待多個Task的執(zhí)行結束。

      對應接口或者抽象類中的方法是不能修飾為async,但這些方法仍然可以把返回值設置為Task對象,在實現(xiàn)類中為方法添加async修飾。

      2.2 LINQ

      2.2.1 LINQ是什么?有啥用?本質是啥?

      LINQ是.NET Core中提供的簡化數(shù)據(jù)查詢的技術。LINQ關鍵的功能是提供了集合類的擴展方法,所有實現(xiàn)了IEnumerable接口的類都可以使用這些方法。

      2.2.2 LINQ能做什么?

      A. 數(shù)據(jù)過濾 Where

      B. 獲取數(shù)據(jù)條數(shù) Count

      C. 判斷是否至少有一條滿足的數(shù)據(jù) Any

      D. 獲取一條數(shù)據(jù) Single、SingleOrDefault、First、FirstOrDefault

      E. 排序 OrderBy、OrderByDescending

      F. 限制結果集(主要用于分頁查詢,例如:從第2條開始獲取3條數(shù)據(jù),list.Skip(2).Take(3);)

      G. 聚合函數(shù) Max、Min、Average、Sum和Count,可以和前面的配合使用

      H. 分組 GroupBy

      I. 投影 Select,用于把集合中的每一項的數(shù)據(jù)類型進行轉換。

      J. 集合轉換 IEnumerable轉換成數(shù)組類型和List類型。

      上述方法均可被鏈式調(diào)用!!!

      2.2.3 LINQ另一種寫法

      除了上述的“方法語法外”,還有一種“查詢語法”的寫法。

      C#編譯器會把“查詢語法”編譯成“方法語法”,運行時沒有區(qū)別。但是推薦“方法語法”。

      第三章 .NET Core核心基礎組件

      3.1 依賴注入

      3.1.1 什么是控制反轉?有什么有用處?

      控制反轉就是把“我要創(chuàng)建對象”,變成“我要對象”。控制反轉是設計模式中非常重要的思想,而依賴注入(DI)是控制反轉思想的一種重要的實現(xiàn)方式。

      依賴注入簡化了模塊的組裝過程,減小了模塊之間的耦合度

      3.1.2 實現(xiàn)控制反轉的兩種方式是什么?

      一、服務定位器

      二、依賴注入

      3.1.3 .NET依賴注入的基本使用

      .NET Core內(nèi)置了控制反轉機制,它同時支持依賴注入(主要)和服務定位器兩種方式。(Microsoft.Extensions.DependencyInjection)

      知道:

      1、注冊服務:“生命周期”的概念(3種:瞬態(tài)、范圍和單例);分別指定服務類型和實現(xiàn)類型(可相同可不同)

      2、獲取服務的時候必須指定獲取什么類型的服務。

      使用時

      1、創(chuàng)建 用于注冊服務的容器:容器的接口IServiceCollection(里定義了3種不同“生命周期”的范圍服務),默認實現(xiàn)類使用ServiceCollection類注冊服務

      2、使用IServiceCollection的BuildServiceProvider創(chuàng)建對象

      posted @ 2023-08-16 09:21  不愛菠蘿的菠蘿君  閱讀(149)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 成人无码潮喷在线观看| 日本一区二区三区在线播放| 亚洲精品综合一区二区三区 | 亚洲国产欧美在线人成AAAA| 日韩丝袜欧美人妻制服| 伊人成人在线视频免费| 亚洲av永久无码精品漫画| 免费无码一区无码东京热| 亚洲影院丰满少妇中文字幕无码 | 亚洲欧美人成电影在线观看| 护士张开腿被奷日出白浆| 国产日韩精品视频无码| 国产成人8x视频一区二区| 欧美黑人乱大交| www成人国产高清内射| 中文字幕在线日韩| 久久影院综合精品| 97人妻免费碰视频碰免| 亚洲va久久久噜噜噜久久狠狠| 一本大道久久香蕉成人网| 国产精品白丝久久av网站| 日本精品不卡一二三区| 江北区| 国产精品视频第一第二区| 日本一卡2卡3卡四卡精品网站| 丝袜美腿亚洲综合第一页| 麻豆国产va免费精品高清在线| 久久香蕉国产线看观看怡红院妓院| 实拍女处破www免费看| 成人动漫综合网| 国産精品久久久久久久| 好吊妞视频这里有精品| 蜜臀av一区二区三区精品| 一区二区三区激情都市| 亚洲精品一区二区美女| 黑人精品一区二区三区不| 激情国产一区二区三区四区| 亚洲码国产精品高潮在线| 思热99re视热频这里只精品| 狠狠色丁香婷婷综合尤物| 呦系列视频一区二区三区|