.NET周刊【1月第1期 2023-01-07】
一月頭條:C# 被評為2023年度編程語言!
在TIOBE指數的歷史上,祝賀 C# 首次贏得了年度編程語言獎項!C# 已經是十大頂尖選手超過兩個十年了,現在它正在迎頭趕上四大語言,憑借一年內最大增幅(+1.43%)贏得了這個當之無愧的獎項。緊隨其后的是Scratch(+0.83%)和Fortran(+0.64%)。C# 正在從Java那里奪取市場份額,并且在諸如Web應用后端和游戲(感謝Unity)等領域變得越來越受歡迎。C# 可以免費使用,并且以穩定的步伐發展,每個新版本都使語言表達能力更強。C# 來了就不會走,并且可能很快就會超過Java。
除了C#,去年TIOBE指數還有很多有趣的變化。Fortran和Kotlin成為了常駐前20名的選手,取代了長期以來的熱門選擇R和Perl。Fortran非常適合進行數字計算,擁有良好的庫,并且在許多領域仍然是大學的寵兒。Kotlin是Java的易學/易寫競爭者。有趣的問題是:哪些語言將在2024年進入TIOBE指數前20名?這很難預測。Julia在2023年短暫觸及了TIOBE指數,但未能保持住這一位置。Julia語言和社區的成熟是獲得第二次機會所需要的。我會把賭注放在Dart(搭配Flutter)和TypeScript上。后者已經在工業界廣泛使用,但由于某些原因,它還沒有在TIOBE指數中取得突破。讓我們看看2024年會發生什么。-- TIOBE軟件公司首席執行官 Paul Jansen
TIOBE編程社區指數是編程語言流行度的一個指標。該指數每月更新一次。評級基于全球范圍內的熟練工程師數量、課程和第三方供應商。使用谷歌、必應、雅虎!、*、亞馬遜、YouTube和百度等流行搜索引擎來計算評級。請注意,TIOBE指數并不是關于最好的編程語言,或者編寫代碼行數最多的語言。
該指數可以用來檢查你的編程技能是否仍然是最新的,或者在開始構建新的軟件系統時做出關于應該采用哪種編程語言的戰略決策。TIOBE指數的定義可以在這里找到。
https://www.tiobe.com/tiobe-index/
國內文章
馬某 說c# 不開源,他是蠢還是壞?
https://www.cnblogs.com/shanyou/p/17946547
本文指出馬某在視頻中錯誤地稱C#不開源且僅限于微軟平臺。實際上,自2014年起,C#已開源10年,包括編譯器、工具集和標準庫等,均在GitHub上以MIT協議公開。文章還提到龍芯中科.NET編譯器團隊的工作,他們針對LoongArch64架構優化了.NET生態,包括C#編譯器和其他關鍵技術。此外,Avalonia UI在Linux桌面開發中有多個案例,尤其是在龍芯.NET平臺上得到了重點支持。
C#/.NET/.NET Core優秀項目和框架2023年12月簡報
https://www.cnblogs.com/Can-daydayup/p/17944249
本文介紹了公眾號“追逐時光者”定期分享的C#/.NET/.NET Core優秀項目和框架,包括項目介紹、功能特點和截圖,并提供了源碼地址。文中特別提到了WalkingTec.Mvvm框架,一個基于.net core的快速開發框架,支持多種前后端分離技術,并內置代碼生成器;AutoMapper,一個.NET對象映射庫,簡化了對象映射的工作量;以及Masuit.Tools,一個全齡段友好的C#萬能工具庫,功能豐富,代碼量小。公眾號旨在為開發者提供高效的開發工具和框架資源。
IIS通過ARR實現負載均衡
https://www.cnblogs.com/wei325/p/17939429
本文介紹了在Windows服務器上通過IIS實現負載均衡的方法。由于80和443端口被占用,無法使用nginx,故采用IIS。首先安裝ARR和URL重寫功能,創建三個網站:一個代理網站(8050端口)和兩個服務網站(8051和8052端口)。設置好后,創建服務器場,配置站點健康檢查和取消緩存。最后,通過URL重寫規則將代理站端口的請求轉發到負載均衡器,實現負載均衡。
確定了-C#是2023年度的編程語言!
https://www.cnblogs.com/Dotnet9-com/p/17950286
本文報告C#在2023年被評為年度編程語言,這是C#首次在TIOBE指數中獲此殊榮。C#因在一年內增長了1.43%的市場份額而勝出,超過了Scratch和Fortran。C#正侵蝕Java的市場份額,在Web后端和游戲開發等領域越來越流行。C#是免費且開源的,每個新版本都在不斷進步。TIOBE指數顯示Fortran和Kotlin進入了前20名,而R和Perl被替代。盡管Julia在2023年曾短暫進入前20名,但未能保持。TIOBE指數每月更新,反映了編程語言的流行度,有助于了解技能是否過時或選擇構建新系統的語言。
一個WPF版的Layui前端UI庫
https://www.cnblogs.com/Can-daydayup/p/17940333
本文介紹了Layui-WPF,這是一個基于.NET后端開發的WPF版Layui前端UI樣式庫。WPF是一個創建富用戶界面Windows應用的框架,而Layui是一款簡約、易用的Web UI組件庫。Layui-WPF項目的源代碼和運行截圖已展示,項目源碼可在GitHub上查看,并鼓勵給予Star支持。此外,該項目被收錄在C#/.NET/.NET Core優秀項目和框架精選中,有助于.NET開發者了解行業動態和最佳實踐。DotNetGuide技術社區提供.NET相關的學習資料和技術交流,歡迎開發者加入。
【ASP.NET Core】使用SignalR推送服務器日志
https://www.cnblogs.com/tcjiaan/p/17938449
本文描述了作者對產線機器人項目上位機啟動流程的優化。原上位機啟動緩慢,作者通過異步請求Web API、延遲連接PLC、簡化窗口管理、替換日志和JSON處理庫等措施,將啟動時間縮短至秒級。此外,作者還改進了日志系統,最初計劃將日志寫入系統,后改為輸出到文件,并通過Web API讀取。最終,考慮到實時監控的需求和現場調試的便利,作者采用SignalR實時推送日志到上位機。這些改造顯著提高了系統的效率和可用性。
實現一個事件總線
https://www.cnblogs.com/donpangpang/p/17939849
本文介紹了如何使用C#實現Event Bus,一種促進應用程序內部或跨組件事件通信的機制。通過定義IEvent和IAsyncEventHandler接口,以及IEventBus接口,實現了事件的發布和訂閱功能。文章還展示了LocalEventBusManager類的實現,它使用Channel來存儲和自動處理事件,從而實現了組件間的松耦合通信,提升了代碼的可維護性和擴展性。GitHub倉庫提供了完整代碼。
【C# 技術】C# 常用排序方式
https://www.cnblogs.com/guojin-blogs/p/17938600
本文講述了在C#中對數據排序的方法。對于基本數據類型,可直接使用Sort方法;自定義數據類型或排序規則則復雜。介紹了Sort方法的三種使用方式,包括默認排序、帶比較函數的排序和自定義比較邏輯的排序。還提到了LINQ語句排序,包括原生LINQ和OrderBy方法。對于多條件排序,展示了使用Lambda表達式和LINQ語句的方法,前者通過定義委托函數實現,后者則更簡單直觀。
Ef Core花里胡哨系列(10) 動態起來的 DbContext
https://www.cnblogs.com/donpangpang/p/17944918
本文介紹了如何動態管理Ef Core的DbContext。通過自定義DbContextBase類和動態生成不同AppId的DbContext,可以有效處理多子應用中動態實體更新追蹤的性能問題。文章還展示了如何使用DbContextGenerator和DbContextContainer來生成和管理不同的DbContext實例,以優化數據庫操作和提高性能。
Freezable ---探索WPF中Freezable承載數據的原理
https://www.cnblogs.com/pandefu/p/17946312
本文探討了如何在WPF中使用Freezable類實現DataGridTextColumn列的綁定隱藏。Freezable是DependencyObject的子類,可以在XAML中使用依賴屬性進行綁定。文章首先回顧了Freezable的功能,然后通過自定義Freezable類和修改界面綁定方式,展示了如何在后臺手動綁定列,以及如何通過Freezable實現數據的中轉和屬性變化通知。最后,通過Code-Behind代碼的InitDataGrid()方法,完成了列的手動綁定。
構建 dotnet&vue 應用鏡像->推送到 Nexus 倉庫->部署為 k8s 服務實踐
https://www.cnblogs.com/morang/p/17938668/devops-docker-to-nexus-deploy-k8s-use
本文介紹了如何將.net core和vue項目(zhontai)打包成Docker鏡像,并部署到Kubernetes(k8s)。首先需要準備k8s環境和相關中間件。文章詳細描述了使用Docker打包應用鏡像的流程,包括準備打包和運行所需的基礎鏡像,以及構建項目鏡像的步驟。同時,提供了Nexus鏡像倉庫的安裝和配置信息,以及如何將項目鏡像推送到倉庫。最后,介紹了如何部署前后端項目到k8s,并使用ingress解析域名到服務。
碼農的轉型之路-偶遇大佬情況或有變
https://www.cnblogs.com/yizhuqing/p/17939352
本文回顧了作者在23年最后一篇帖子的內容,并分享了最新的調研反饋,多數人對其工具的可行性和商業模式提出質疑。作者還描述了與兩位業界朋友的交流,一位需要跨網絡控制暖通系統,另一位是升鮮寶創始人余東升,希望開發WPF版本的分揀系統。盡管作者對余總的技術選擇不認同,認為WPF開發成本高,但仍尊重不同意見,并探討了原生與H5、APP開發的選擇問題。
dotnet-dump工具使用
https://www.cnblogs.com/lgxlsm/p/17944357
本文介紹了dotnet-dump工具,它是.NET Core官方提供的,用于生成和分析轉儲文件,幫助開發者診斷故障。在Linux上,根據系統類型使用yum或apt安裝。安裝dotnet-dump前需先安裝dotnet-sdk。使用dotnet-dump collect命令生成轉儲文件,再用dotnet-dump analyze命令分析。分析時,可用SOS命令識別大內存對象,查找對象分布和應用根,有助于發現內存問題。分析生產環境的大文件時,需要較高的機器配置。
聊一聊 C# 的線程本地存儲TLS到底是什么
https://www.cnblogs.com/huangxincheng/p/17940282
本文講述了C#中的ThreadStatic屬性,它是基于C++的線程本地存儲機制。C#通過ThreadStatic將變量與線程綁定,實際上是CLR利用ThreadLocalInfo結構體在底層實現的。文章還介紹了Windows的兩種TLS技術:動態TLS和靜態TLS。C#使用的是靜態TLS,它在編譯時聲明,在每個線程的堆上復制數據。靜態TLS的數據存放在PE文件的.tls節點,并通過_TEB.ThreadLocalStoragePointer指向的數組管理。
助力項目快捷實現國際化,造個多語言*
https://www.cnblogs.com/fanshaoO/p/17944667
本文介紹了一個多語言項目管理工具,旨在簡化和自動化多語言資源的處理。該工具支持自動翻譯、資源共享、實時同步和多格式導出,通過API和SignalR實現資源的即時更新。它還提供.NET SDK接入,適用于多種應用場景,如后端國際化、Web和APP項目。項目開源,測試環境可供體驗和反饋。
由淺入深理解C#中的事件
https://www.cnblogs.com/mingupupu/p/17946032
本文詳細介紹了C#中事件的概念和使用方法。事件是一種特殊的委托,用于在對象間傳遞消息,它包含私有委托,只能添加、刪除或調用處理程序。文章解釋了發布者和訂閱者的角色,以及事件處理程序的定義和觸發事件的過程。通過示例代碼展示了如何聲明委托類型、事件、注冊事件處理程序以及如何在發布者類中觸發事件。訂閱者類通過注冊其方法到事件上,當事件被觸發時,相應的方法會執行。
Ef Core花里胡哨系列(7) 使用Ef Core也能維護表架構?
https://www.cnblogs.com/donpangpang/p/17942407
本文講述了如何使用Ef Core的遷移功能來維護數據庫表架構。通過創建Operation對象,Ef Core能夠生成對應的Sql語句,減少了與特定數據庫Sql語法的耦合。文章還介紹了兩種使用Operation的方法:直接創建并填充Operation對象,以及類似于遷移文件的寫法。這兩種方法都需要引用相應的數據庫提供程序,以生成和執行Sql語句。通過這種方式,Ef Core提供了一種靈活且高效的表架構維護手段。
在C#中,如何以編程的方式設置 Excel 單元格樣式
https://www.cnblogs.com/powertoolsteam/p/17929835.html
本文介紹了如何使用GcExcel組件修改Excel單元格樣式。包括文本顏色、邊框、字體樣式、對齊縮進、文本方向和旋轉角度等。文本顏色可以突出重要數據,邊框劃分數據區域。字體樣式包括加粗、斜體和下劃線。對齊縮進調整段落格式,文本方向適用于特定語言,旋轉角度有助于垂直文本顯示。GcExcel通過IRange接口和相關屬性實現這些功能,提高了Excel文件處理的效率和效果。
《實現領域驅動設計》—實體
https://www.cnblogs.com/afei-24/p/17920098.html
開發者在軟件開發中往往先考慮數據屬性和關系,而非領域概念,導致實體模型中getter和setter方法泛濫。實體是具有唯一標識和可變性的領域對象,可以追蹤其變化。設計實體時,應關注其唯一標識和查找方式,而非屬性和行為。實體的唯一標識有助于維持其身份,但不一定有助于查找匹配。創建實體標識的策略包括用戶輸入、程序生成、數據庫生成和限界上下文決定。ORM工具如Hibernate處理實體標識時可能與領域模型沖突,可采用委派標識解決,通常隱藏于外界。層超類型是一種抽象基類,隱藏委派主鍵,所有實體都擴展自該基類,使客戶端不關心委派標識。
【OpenCV】在MacOS上使用OpenCvSharp
https://www.cnblogs.com/guojin-blogs/p/17948569
本文介紹了OpenCV和OpenCvSharp的安裝與配置過程。OpenCV是開源的計算機視覺庫,支持多種編程語言和操作系統。OpenCvSharp是其在.Net平臺的封裝庫。文章詳細說明了在Mac OS上使用Visual Studio Code和.NET 6.0環境下,如何創建控制臺項目、添加Nuget包,并通過示例代碼測試OpenCvSharp庫的功能,最終實現圖像讀取和處理。
【OpenCV】在 Mac OS 上使用 EmguCV
https://www.cnblogs.com/guojin-blogs/p/17945244
本文介紹了如何在Mac OS上使用EmguCV,一個跨平臺的OpenCV .Net包裝器。首先,使用Visual Studio Code和.NET 6.0框架設置編碼環境。然后,通過dotnet指令創建并測試控制臺項目。接著,添加Emgu.CV官方包和運行依賴包,并手動配置缺失的libcvextern.dylib文件。最后,通過編寫代碼測試應用,驗證EmguCV的功能。
Kernel Memory 入門系列:異步管道
https://www.cnblogs.com/xbotter/p/17941210/kernel_memory_async_pipeline
本文介紹了Kernel Memory的異步管道處理機制。異步管道允許文檔在導入后立即返回,通過注冊消息隊列和后臺任務,實現文檔處理的異步化。文檔保存在分布式文件存儲中,消息隊列負責傳遞消息,后臺任務監聽隊列并觸發處理流程。客戶端可查詢文檔狀態,從而提高了處理效率,避免了阻塞。
編寫.NET的Dockerfile文件構建鏡像
https://www.cnblogs.com/hejiale010426/p/17944627
本文講解了如何為WebApi項目創建Dockerfile,以便使用Docker容器部署。首先,選擇.NET 7.0 SDK作為基礎鏡像,并設置工作目錄和暴露端口。接著,使用.NET SDK鏡像構建項目,并將構建結果輸出到指定目錄。最后,從構建階段的鏡像中發布應用,并在最終鏡像中配置啟動命令,以運行.NET Core項目。
Visual Studio 2022版本17.8中的實用功能
https://www.cnblogs.com/Can-daydayup/p/17948296
本文介紹Visual Studio 2022版本17.8的四個功能:保留大小寫的查找替換、文本差異比較的摘要視圖、多存儲庫限制提升至25個、代碼搜索導航的狀態欄結果計數。同時,提到DotNetGuide技術社區,它是.NET開發者的開源社區,提供學習資料、技術分享、項目推薦和招聘信息,旨在幫助開發者成長。
aspnetcore使用websocket實時更新商品信息
https://www.cnblogs.com/morec/p/17947739
本文通過動圖演示了效果,然后展示了獲取商品目錄的代碼邏輯。代碼中定義了一個API接口,用于查詢商品信息,支持分頁和按ID篩選。如果提供了ID,接口會返回對應的商品數據;如果沒有提供ID,接口則返回所有商品的分頁列表。
【Azure APIM】APIM 策略語句如何來設置多個Cookie值讓瀏覽器保存
https://www.cnblogs.com/lulight/p/17946065
本文討論了在APIM的<return-response>策略中設置多個Cookie值的問題。兩種嘗試方法:一是將多個Cookie值用分號拼接,二是使用多個set-header節點,但這兩種方法都只能保存一個Cookie值。
日志記錄升級(中間件全局日志)
https://www.cnblogs.com/zhang-3/p/17943024
本文講述了如何在.NET中記錄每個請求的日志并存入數據庫。首先,通過實現IAsyncActionFilter接口創建一個日志記錄過濾器,該過濾器能夠捕獲每個action方法的請求信息。然后,定義一個LogActionFilter類,它在action執行后記錄操作詳情,包括是否有異常、控制器、動作、請求路徑和操作者等信息,并通過日志服務將日志信息異步存入數據庫。最后,將這個過過濾器注入到全局過濾器中,以便自動應用于所有控制器的動作。
ASP.NET Core 8 的內存占用可以更低嗎?
https://www.cnblogs.com/shanyou/p/17929487.html
.NET 8引入了名為“動態適應應用程序大小”(DATAS)的服務器GC新特性,允許動態調整托管堆數量,以平衡吞吐量和內存占用。DATAS默認關閉,可通過環境變量或MSBuild屬性啟用。它適用于內存受限環境,如Docker容器,能在請求高峰自動增加堆數量,提高吞吐量,閑時減少內存使用。服務器GC與工作站GC不同,前者針對服務吞吐量優化,后者適用于客戶端應用,頻繁GC以減少延遲。DATAS結合了兩者優勢,動態調整以適應負載變化。要使用DATAS,需在.NET 8應用中設置相應配置,但不能與GCHeapCount選項同時使用。
記一次 .NET某股票交易軟件 靈異崩潰分析
https://www.cnblogs.com/huangxincheng/p/17932438.html
本文分析了一個程序偶發性崩潰的問題。作者通過WinDbg工具的自動化分析命令發現,程序崩潰是由于棧上的安全檢查值(cookie)被破壞,這通常是由棧溢出引起的。進一步分析指出,問題出現在RtlAllocateLUnicodeString函數,該函數在退出時檢查到cookie被破壞,導致程序異常終止。作者還提到了電離輻射可能導致的bit翻轉問題,但本例中的崩潰與此無關。
【類型轉換】使用c#實現簡易的類型轉換(Emit,Expression,反射)
https://www.cnblogs.com/1996-Chinese-Chen/p/17932654.html
本文討論了在ASP.NET MVC框架中使用EntityFramework時,通過SqlQuery方法查詢數據轉換效率低下的問題。作者嘗試使用Emit和表達式樹優化性能,最終通過DataCommand和DataReader實現硬賦值,提升了80%的性能。文章還分享了IL代碼的學習經驗,并提供了集合轉換的示例代碼,鼓勵讀者自行擴展功能。
.NET開發中合理使用對象映射庫,簡化和提高工作效率
https://www.cnblogs.com/Can-daydayup/p/17925894.html
本文講述了對象映射庫的好處和AutoMapper的使用方法。對象映射庫能減少重復代碼,提高開發效率和代碼質量。AutoMapper是.NET中的一個庫,通過預定義映射規則,自動轉換對象,簡化了開發者的工作。文章以創建控制臺應用為例,介紹了如何安裝AutoMapper包,定義源對象和目標對象,并配置映射規則。這些步驟幫助開發者快速實現對象間的映射,提升開發效率。
Net 高級調試之十五:經典的鎖故障
https://www.cnblogs.com/PatrickLiu/p/17925615.html
本文是《Net 高級調試》系列的第十五篇,介紹了在C#項目調試中解決鎖問題的方法,包括死鎖、孤立鎖、線程中止等問題。文章首先回顧了鎖的實現邏輯,然后詳細講解了如何識別和處理這些鎖問題,強調了深入理解Net框架底層對調試的重要性。調試環境包括Windows 10、Windbg Preview、Visual Studio 2022和Net Framework 4.8。文章還提到了源碼調試的重要性,并舉例說明了如何通過具體代碼來驗證所學知識。
Taurus .Net Core 微服務開源框架:Admin 插件【4-8】 - 配置管理-Mvc【Plugin-Limit 接口訪問限制、IP限制、Ack限制】
https://www.cnblogs.com/cyq1162/p/17934709.html
本文介紹了Taurus .Net Core微服務框架中的系統配置節點,包括接口訪問限制、IP限制和Ack限制。系統配置提供了對內網IP、后臺管理界面、自動化接口測試文檔和微服務通訊的限制忽略選項。訪問頻率限制功能允許動態調整最大TCP連接數和設定特定時間內的最大請求次數。IP黑名單限制可同步到所有客戶端應用。Ack驗證增強了網絡請求安全,要求客戶端請求帶上特定算法生成的ack頭,后端驗證其合法性和一次性使用。文章最后提到作者正在開發分布式事務插件。
從Redis讀取.NET Core配置
https://www.cnblogs.com/zhaorong/p/aspnet-configuration-redis.html
本文講述了如何在.NET Core應用中創建自定義配置源和提供程序,以從Redis讀取配置。首先,.NET Core應用支持多種配置源,如json、xml、ini文件等,并可同時添加多個配置源。配置數據以鍵值對字典形式存儲,鍵的格式為"Node1:Node2:abc"。Redis的Hash數據結構適合存儲這種格式的配置數據。文章接著介紹了如何使用StackExchange.Redis包在.NET應用中實現Redis配置提供程序,包括安裝NuGet包、創建RedisConfigurationProvider和RedisConfigurationSource類,以及如何讀取和轉換Redis中的配置數據。
01的token的年度總結
https://www.cnblogs.com/hejiale010426/p/17935796.html
本文作者是.NET愛好者token,來自湖南衡陽,曾與多位老鄉交流,如李哥。他在.NET領域成長迅速,從Java轉向.NET,逐漸深入開源社區。在實習期間,他通過閱讀微軟官方文檔,不斷提升自己,從三層架構到接觸Abp框架,每次學習都是新挑戰。他在開源社區貢獻代碼,如nanoframework和AvaloniaUI文檔翻譯,參與MASA Blazor組件庫開發,并自創多個開源項目,如ChatGpt.Desktop和EarthChat。他還提供了幾點建議給新手:找人帶學習,設定目標,規劃開源項目。過去一年,他學會了Blazor技術,錄制教程,學習Avalonia框架,深入研究ABP框架和Openiddict庫,并嘗試結合React和openiddict重構授權中心。他掌握了多種技術棧,如React、Blazor、.NET等,并提供了聯系方式和技術交流群。
記一次 .NET某工控 宇宙射線 導致程序崩潰分析
https://www.cnblogs.com/huangxincheng/p/17925800.html
本文分析了程序崩潰的原因,作者在知乎上看到一篇關于程序因宇宙射線或太陽耀斑導致bit位翻轉而崩潰的文章,感到興奮。通過Windbg工具分析,發現程序在后臺垃圾回收標記階段時,托管堆上出現壞對象,導致CLR執行引擎異常。進一步使用命令驗證,確認了托管堆內存布局被破壞,特別是TreeNode.children的MethodTable不正確,導致CLR無法識別內存對象,從而引發崩潰。
在macOS中搭建.NET MAUI開發環境
https://www.cnblogs.com/jevonsflash/p/17937122
本文指導如何在macOS Monterey及以上版本電腦上,使用Visual Studio Code開發并調試MAUI項目。首先安裝XCode13.3以上版本和Visual Studio Code,再安裝.NET MAUI擴展和.NET 8。通過終端命令安裝MAUI工作負載和Xcode命令行工具,以便調試iOS應用。對于Android應用,需下載并安裝JDK,創建.NET MAUI項目,并構建項目以安裝Android SDK。若需使用模擬器,需安裝模擬器、鏡像,并創建虛擬機。通過命令面板可創建新的Android模擬器,完成調試環境設置。
數據智慧:C#中編程實現自定義計算的Excel數據透視表
https://www.cnblogs.com/powertoolsteam/p/17925408.html
本文介紹了如何使用Java在GcExcel中為數據透視表添加計算項,以便進行自定義數據分析。通過五個步驟:加載工作簿、創建數據透視表、添加計算項、隱藏重復項和保存工作簿,可以將數據按需求分類匯總。例如,將訂單狀態分類為“完成”和“未完成”,并計算“未完成”狀態的產品金額總和。計算項功能使數據透視表的分析更加靈活和深入。
使用C#如何監控選定文件夾中文件的變動情況?
https://www.cnblogs.com/mingupupu/p/17933098.html
本文介紹了如何在C#中使用FileSystemWatcher類監控文件夾變動。文章分為前言、效果展示、具體實現和總結四部分。具體實現包括界面設計和全部代碼,界面設計簡潔,代碼部分展示了如何創建FileSystemWatcher實例、設置屬性、注冊事件處理函數,并通過FolderBrowserDialog讓用戶選擇監控文件夾。監控事件包括文件改變、創建、刪除和重命名,且支持子目錄監控。
Kernel Memory 入門系列:文檔的管理
https://www.cnblogs.com/xbotter/p/kernel_memory_document_tag.html
本文介紹了Kernel Memory入門系列中文檔的管理方法。通過Document對象,可以批量上傳文件并管理,自定義DocumentId或使用系統生成的隨機ID。使用Tag標記文檔屬性,如類型、來源等,便于后續檢索時篩選。檢索時,可通過Tag或DocumentId進行范圍篩選,支持復雜的And和Or條件組合。文檔更新時,指定DocumentId上傳新文件即可自動替換。刪除文檔也通過DocumentId實現。此外,Index參數用于文檔隔離,確保檢索時的獨立性。
Json Schema簡介和Json Schema的高性能.net實現庫 LateApexEarlySpeed.Json.Schema
https://www.cnblogs.com/dotnet-diagnostic/p/17927879.html
本文介紹了Json Schema,一種用于描述Json數據結構和限制的聲明式語言。它允許定義Json規則,確保數據格式一致性。Json Schema解決了復雜驗證需求和動態Json結構問題,提供了標準化的Json理解和驗證方法。文章還展示了如何使用.net庫LateApexEarlySpeed.Json.Schema進行Json驗證,包括驗證失敗時的詳細輸出信息。該庫基于最新Json Schema草案,特點是高性能,使用System.Text.Json,通過官方測試套件驗證。
Kernel Memory 入門系列:自定義處理流程
https://www.cnblogs.com/xbotter/p/kernel_memory_custom_handler.html
本文介紹了Kernel Memory的自定義處理流程。用戶可以通過實現IPipelineStepHandler接口來創建自定義Handler,以修改數據流程。自定義Handler可以訪問和修改DataPipeline中的數據,還可以利用IPipelineOrchestrator來讀寫文件和獲取基礎組件。完成自定義Handler后,需要將其注冊到Kernel Memory中,以便在Pipeline中使用。通過這種方式,用戶可以根據需求定制文檔預處理的步驟,實現更加靈活的數據處理流程。
Kernel Memory 入門系列:生成并獲取文檔摘要
https://www.cnblogs.com/xbotter/p/kernel_memory_summaries.html
本文介紹了Kernel Memory入門系列,重點是如何生成和獲取文檔摘要。通過Kernel Memory,用戶可以導入文檔并指定Summary流程來生成摘要,該流程包括提取、總結、生成嵌入和保存記錄等步驟。生成的摘要不是文檔的分片,而是經過語言模型總結后的內容。檢索摘要時,使用SearchSummariesAsync方法,通過文檔過濾條件來獲取。摘要生成和檢索過程涉及數據類型標記和自定義篩選。此外,還可以自定義其他文章處理流程,如分類、關鍵詞提取等。相關參考資料提供了更多信息和代碼示例。
主題
發布版本 v2.60.0 · grpc/grpc-dotnet
https://github.com/grpc/grpc-dotnet/releases/tag/v2.60.0
Visual Studio 2013 停用:對舊版本 Visual Studio 的支持提醒 - Visual Studio 博客
https://devblogs.microsoft.com/visualstudio/visual-studio-2013-retirement-support-reminder-for-older-versions-of-visual-studio/
宣布推出適用于 .NET 的 Azure Migrate 應用程序和代碼評估工具 - .NET 博客
https://devblogs.microsoft.com/dotnet/azure-migrate-app-and-code-assessment-tool-release/
文章、幻燈片等
使用 TensorFlow.NET 和 C# 重溫“從實現中學習深度學習”(作者:@Nezura) - Qiita
https://qiita.com/C5D5E5/items/9de54719f853ef375e95
使用 SearchValues 提升 .NET 8.0 中的字符串搜索性能 | endjin
https://endjin.com/blog/2024/01/dotnet-8-searchvalues-string-search-performance-boost
[C#]使用VS2022的源生成器簡介
https://zenn.dev/mkmonaka/articles/8b9c1a87e35313
在 macOS/Linux 上本地運行包含本機庫的 Azure Function 時出錯
https://zenn.dev/karamem0/articles/2023_12_30_090000
使用 Visitor 模式消除基于類型的 switch 和 if 判斷 - Qiita
https://qiita.com/toRisouP/items/d96a09fab827af17fb37
F# 中更安全的遞歸 - .NET 博客
https://devblogs.microsoft.com/dotnet/safer-recursion-in-fsharp/
讓我們看一下 Semantic Kernel v1.0.1 插件
https://zenn.dev/microsoft/articles/semantic-kernel-v1-003
什么是.NET Aspire? - 概覽 - 奇塔
https://qiita.com/takashiuesaka/items/f45e930ef296c5710acc
嘗試使用 .NET Aspire - Qiita
https://qiita.com/takashiuesaka/items/8794f99b0bf3ce3c3106
部署 .NET Aspire - Qiita
https://qiita.com/takashiuesaka/items/3da744d0511f29270299
使用 .NET Aspire(使用 YARP)配置 Next.js + ASP.NET Core - Qiita
https://qiita.com/takashiuesaka/items/e167852af299a7b00939
將 Prometheus、Jaeger、Grafana 與 .NET Aspire 一起使用 - Qiita
https://qiita.com/takashiuesaka/items/4811e62aa52e39ed834c
在 Azure 中為 Windows 應用程序創建 CI/CD 環境:DevDrive 的效果如何? - 奇塔
https://qiita.com/spc_ksudoh/items/42d7ab8ad27c475d011c
在 Visual Studio 中使用 Git 提高工作效率的一年 - Visual Studio 博客
https://devblogs.microsoft.com/visualstudio/a-year-of-making-you-more-productive-using-git-in-visual-studio/
在 .NET 中使用 PBKDF2 進行進化且強大的密碼散列
https://dev.to/asimmon/evolutive-and-robust-password-hashing-using-pbkdf2-in-net-34pc
可刪除優先級隊列 - Qiita
https://qiita.com/saka_pon/items/7d42012e44978580a0c0
使用 perf 對 Linux 上的 .NET 應用程序進行緊急 CPU 使用情況分析的簡短指南
https://igorexplains.medium.com/a-short-guide-to-urgent-cpu-usage-profiling-of-net-applications-on-linux-using-perf-1e0dbd1f0533
.NET 9 中的新鎖類型
https://steven-giesel.com/blogPost/d7f923b3-13ff-4ecc-8b8f-d847ae581f68
.NET Native AOT 解釋 - NDepend 博客
https://blog.ndepend.com/net-native-aot-explained/?WT.mc_id=link-twitter-isaacl
IntelliSense 對 C# 12 新特性“主構造函數”的神圣支持 - xin9le.net
https://blog.xin9le.net/entry/2023/12/27/220943
.NET Semantic Kernel v1.0 無法使用的子Handlebars模板的使用方法及注意事項
https://zenn.dev/microsoft/articles/semantic-kernel-v1-002
.NET Semantic Kernel v1.0 已經發布了,所以我又回顧了一下。
https://zenn.dev/microsoft/articles/semantic-kernel-v1-001
使用 Quartz.NET 安排作業
https://zenn.dev/oyasumi731/articles/6611ecad604d41
了解 C# 線程、線程池和任務
https://zenn.dev/higty/articles/fea5f57cd1b1c2
使用 C# 序列化餐廳表格
https://blog.ploeh.dk/2023/12/25/serializing-restaurant-tables-in-c/
[C#] 一個關于創建一個可以輕松快速地接收來自競爭性程序等的輸入的庫的故事 - Qiita
https://qiita.com/Kujiro/items/facad439eb0873748f87
如何在 C# 中成功創建方法鏈第 1 部分 - Qiita
https://qiita.com/dhq_boiler/items/61752b74db5f1fa6dfd5
在微服務架構中使用 Jaeger 和 OpenTelemetry 進行分布式跟蹤
https://medium.com/@ebubekirdinc/distributed-tracing-with-jaeger-and-opentelemetry-in-a-microservices-architecture-62d69f51d84e
使用 C# 創建您自己的雙端隊列 - Qiita
https://qiita.com/YuHima03/items/e52fdebdf626192c4b1e
由于 OpenSilver 2.0 與 VB 兼容,我嘗試顯示 Hello World! - Qiita
https://qiita.com/yaju/items/8f210bcc90222fe8826f
在 Fluent UI Blazor 中使用開關的指南
https://zenn.dev/tomokusaba/articles/bec7719e8dc282
嘗試使用語義內核獲取天氣
https://zenn.dev/tomokusaba/articles/6f56ea6556036e
使用 F# 進行匯編編程(基礎知識)
https://zenn.dev/sayurin/articles/22989af1e3833d
使用 F# 進行匯編編程(準備)
https://zenn.dev/sayurin/articles/6768087198fd70
使用 F# 進行匯編編程(實用)
https://zenn.dev/sayurin/articles/fa986cfe698961
C# Boost、DotNext 庫第 2 部分 - Qiita
https://qiita.com/up-hash/items/10138710a9d7c9cba209
庫、存儲庫、工具等。
GitHub - KristofferStrube/Blazor.WebAuthentication:Web 身份驗證瀏覽器 API 的 Blazor 包裝器。
https://github.com/KristofferStrube/Blazor.WebAuthentication
https://x.com/kstrubeg/status/1740133676984246464?s=12&t=ggvrrZ7oLogHyNoIGNgjbw
網站、文檔等
推文
https://x.com/sergiopedri/status/1740826434019434701?s=12
https://x.com/egorbo/status/1739696282686439519?s=12
https://x.com/steplyakov/status/1737895816050934101?s=12
版權聲明
- 國內板塊由 InCerry 進行整理 : https://github.com/InCerryGit/WeekRef.NET
- 其余內容來自 Myuki WeekRef,由InCerry翻譯(已獲得授權) : https://github.com/mayuki/WeekRef.NET
由于筆者沒有那么多時間對國內的一些文章進行整理,歡迎大家為《.NET周刊-國內文章》板塊進行貢獻,需要推廣自己的文章或者框架、開源項目可以下方的項目地址提交Issue或者在我的微信公眾號私信。
格式如下:
- 10~50字左右的標題
- 對應文章或項目網址訪問鏈接
- 200字以內的簡介,如果太長會影響閱讀體驗
https://github.com/InCerryGit/.NET-Weekly
.NET性能優化交流群
相信大家在開發中經常會遇到一些性能問題,苦于沒有有效的工具去發現性能瓶頸,或者是發現瓶頸以后不知道該如何優化。之前一直有讀者朋友詢問有沒有技術交流群,但是由于各種原因一直都沒創建,現在很高興的在這里宣布,我創建了一個專門交流.NET性能優化經驗的群組,主題包括但不限于:
- 如何找到.NET性能瓶頸,如使用APM、dotnet tools等工具
- .NET框架底層原理的實現,如垃圾回收器、JIT等等
- 如何編寫高性能的.NET代碼,哪些地方存在性能陷阱
希望能有更多志同道合朋友加入,分享一些工作中遇到的.NET性能問題和寶貴的性能分析優化經驗。目前一群已滿,現在開放二群。
如果提示已經達到200人,可以加我微信,我拉你進群: ls1075
另外也創建了QQ群,群號: 687779078,歡迎大家加入。
總結
以上是生活随笔為你收集整理的.NET周刊【1月第1期 2023-01-07】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android 蓝牙使用
- 下一篇: 使用Spring AI让你的Spring