https://www.cnblogs.com/sdflysha/archive/2023/02/27/dotnet-conf-china-2022-ffmpeg.html
FFmpeg是知名的音频视频处理软件,我平时工作生活中会经常用到。但同时我也是.NET程序员,我以业界普遍使用的开源项目FFmpeg.AutoGen为基础,我我自己动手做了一个Sdcb.FFmpeg。
https://www.cnblogs.com/huangxincheng/archive/2023/02/27/17159384.html
前段时间微信上有一位老朋友找到我,说他的程序跑着跑着内存会突然爆高,有时候会下去,有什么会下不去,怀疑是不是某些情况下存在内存泄露,让我帮忙分析一下,其实内存泄露方面的问题还是比较好解决的,看过这个dump之后觉得还是有一定的分享价值,拿出来和大家分享一下吧。
https://www.cnblogs.com/eventhorizon/archive/2023/03/01/17170301.html
本文介绍了AsyncLocal的常见用法,常踩的坑和避坑指南,另外引入HttpContextAccessor的实现原理来介绍这些内容。
https://www.cnblogs.com/baibaomen-org/archive/2023/02/28/17162795.html
如果你想玩转C# 里面多线程,工厂模式,生产者/消费者,队列等高级操作,就可以和我一起探索这个强大的线程安全提供阻塞和限制功能的C#神器类.
https://www.cnblogs.com/1996-Chinese-Chen/archive/2023/03/02/17172773.html
net同僚对于async和await的话题真的是经久不衰,这段时间又看到了关于这方面的讨论,最终也没有得出什么结论,其实要弄懂这个东西,并没有那么复杂,简单的从本质上来讲,就是一句话,async 和await异步的本质就是状态机+线程环境上下文的流转,由状态机向前推进执行,上下文进行环境切换,在状态机向前推进的时候第一次的movenext会将当前线程的环境上下文保存起来......
https://www.cnblogs.com/xiongze520/archive/2023/02/28/17164309.html
1、拼接字符串 2、嵌套异常处理 3、for和foreach的选择 4、验证简单的原始数据类型 5、处理对象实现IDisposable接口 6、声明公共变量 7、利用System.Data.DataTable访问数据
https://www.cnblogs.com/nigture/p/17174199.html
肉夹馍(https://github.com/inversionhourglass/Rougamo)通过静态代码织入方式实现AOP的组件,其主要特点是在编译时完成AOP代码织入,相比动态代理可以减少应用启动的初始化时间让服务更快可用,同时还能对静态方法进行AOP。
https://mp.weixin.qq.com/s/k7V55wBZ3vLQHPPS7_rcqg
https://mp.weixin.qq.com/s/TLrnRmnPt3Aiep-dnSF8gA
Yarden Shafir 分享了两篇非常通俗易懂的,关于 windbg 新引入的调试数据模型的文章。链接如下:
part1:https://medium.com/@yardenshafir2/windbg-the-fun-way-part-1-2e4978791f9b
part2:https://medium.com/@yardenshafir2/windbg-the-fun-way-part-2-7a904cba5435
本文是第一部分的译文。在有道词典、必应词典、谷歌翻译的大力帮助下完成,感谢以上翻译工具,我只是一个搬运工。强烈建议英文好的朋友阅读原文,因为在翻译的过程中不可避免的按我的理解做了调整。
https://mp.weixin.qq.com/s/uPU6xnoHWmrQPBHXCpbl5g
.NET 8 是一个长期支持(LTS) 版本。这篇文章涵盖了推动增强功能优先级排序和选择开发的主要主题和目标。.NET 8 预览版和发布候选版本将每月交付一次。像往常一样,最终版本将在 11 月的某个时候在 .NET Conf 上发布。
ChatGpt
客户端https://mp.weixin.qq.com/s/F5Qb-RyxBCSEpU9uOQIEmQ
一款基于Avalonia实现的跨平台ChatGpt客户端 ,通过对接ChatGpt官方提供的ChatGpt 3.5模型实现聊天对话。
由于本周时间比较赶,没有对国际板块内容做语言标注。
https://devblogs.microsoft.com/visualstudio/try-visual-studio-2022-v17-6-preview-1/
Visual Studio 2022版本17.6预览版1已经发布。
文章介绍了该版本包含的以下新功能:
https://godotengine.org/article/whats-new-in-csharp-for-godot-4-0/
C#中的新内容与游戏引擎Godot 4.0中的变化有关。
在Godot 4.0中,很多方面都发生了变化,最重要的是SDK从Mono变成了.NET。 移动平台仍然是Mono运行时。 随着这一变化,Mono模块现在被称为.NET模块。
在许多其他变化中,源码生成器、整数和浮点类型、类型和成员名称,以及向NuGet发布程序集的.NET指南。
https://sixlabors.com/posts/announcing-imagesharp-300/
ImageSharp 3.0.0已经发布。
该版本包括各种API的简化和高达14.4倍的性能改进等改进。ImageSharp 3.0.0以.NET 6为目标框架,结束了对传统框架的支持,并且是第一个采用新的Six Labors Split License的版本。
https://devblogs.microsoft.com/dotnet/microsoft-teams-permission-service-migration-to-dotnet-6/
关于Microsoft Teams的权限服务迁移到.NET 6的案例研究。
从.NET Framework 4.7.2到.NET 6,性能提高了100%,延迟降低了30-45%。
权限服务是一个后端服务,在各种情况下用于评估用户和租户,决定他们是否可以显示存在、添加用户、开始聊天或创建会议,这需要严格的性能要求。 .NET 6. 在迁移到.NET 6之前,它是建立在Azure的经典云服务上,采用.NET Framework 4.7.2,API是OWIN/Katana。
迁移过程、执行情况(人数和持续时间以及ServicePointManager淘汰带来的迁移泄漏问题)、在推广过程中看到的(在处理大量流量后,.NET 6版本的性能更好,似乎比现有版本的利用率更高)、好处(延时 改进)。
https://learn.microsoft.com/en-us/visualstudio/releases/2022/release-notes#17.5.1
Visual Studio 2022的17.5.1版已经发布。
该版本解决了17.5(.NET SDK 7.0.200)(.NET SDK 7.0.201)中 "dotnet包 "的--输出
选项的问题,以及一些修复问题。
-output
option disabled in build-related commands - .NET | Microsoft Learn](https://learn.microsoft.com/ja-jp/dotnet/core/compatibility/sdk/7. 0/solution-level-output-no-longer-valid)https://devblogs.microsoft.com/visualstudio/visualstudio-extensibility-preview-3/
宣布VisualStudio.Extensibility预览版3,Visual Studio的新扩展API/SDK。
在这个预览版中,以下功能现在可用/已实现
https://devblogs.microsoft.com/dotnet/hack-together-microsoft-graph-dotnet/
宣布举办虚拟黑客马拉松(活动),您可以在3月1日至15日期间通过使用微软图形和.NET创建应用程序来赢得奖品。
从3月1日至3月15日,通过提交使用微软图形和.NET的应用程序,有机会获得Xbox等奖品。
https://github.com/plotly/Plotly.NET/releases/tag/4.0.0
Plotly.NET v4.0.0已经发布。
这个版本是在改进了可传递给某些图表的数据和改变了plotly.js之后发布的。
https://dev.to/picovoice/pico-chess-start-a-new-game-net-speech-recognition-tutorial-2jj1
来自Picovoice的.NET SDK与基于文本的国际象棋引擎ChessCore相结合,实现语音控制。
https://medium.com/c-sharp-progarmming/7-net-tools-for-interacting-with-web3-96a921c86a21
介绍了七个区块链库(Nethereum、CardanoSharp、BlockM3、Neo、Stratis、Blockfrost.io、Nethermind),可用于.NET中。
https://devblogs.microsoft.com/dotnet/sentence-similarity-mlnet-model-builder/
关于在ML.NET Model Builder中处理句子相似性的能力。
解释了如何在ASP.NET Core中的Minimal APIs幕后处理带有过滤器的自定义RequestDelegate。
https://dev.to/grontis/data-loading-in-entity-framework-2foe
如何使用Microsoft.EntityFrameworkCore.Proxies
在Entify Framework Core中进行懒惰加载。
https://qiita.com/hiroxpepe/items/bc4caa6b6c77f5ddf89a
在Linux上用.NET 6和GtkSharp(GTK)来显示窗口。
https://devblogs.microsoft.com/visualstudio/the-fastest-way-to-add-files-and-folders/
介绍Visual Studio 2022年版本17.5中引入的新的添加文件对话框。
https://devblogs.microsoft.com/dotnet/fsharp-inline-hints-visual-studio/
关于Visual Studio中对F#类型和参数名称的内联提示的支持。
它目前是作为一个预览功能提供的,必须在配置中启用才能使用它。
https://devadjust.exblog.jp/29509340/
如何使用dotnet-trace
对.NET应用程序的CPU时间进行分析。
https://zenn.dev/zubu/articles/f594afaa3b6051
关于用两个ints获得的哈希码的Dictionary的性能及其碰撞率,比较了使用ValueTuple和HashCode等方法。
https://qiita.com/MonaiTakeshi/items/e36c6fc232230699ff03
如何用Math.NET Numerics进行简单线性回归分析。
https://qiita.com/MonaiTakeshi/items/df0ce261a2ffcde71495
如何使用Math.NET Numerics进行多元线性回归分析。
介绍C# 11中的原始字符串和UTF-8字符串,多行字符串补全及其在Rider和ReSharper中的支持。
https://jeremybytes.blogspot.com/2023/02/c-var-with-reference-types-is-always.html
关于在C#中用var
定义的变量被视为空允许的参考类型。
https://qiita.com/takaOG/items/375d67397ddc3dc77fc9
关于如何在Blazor服务器中获得一个客户的IP地址,并在页面之间共享。
https://zenn.dev/au/books/7cec3e306916a5
在.NET中实现一个gRPC服务器,并做一些诸如写入数据库和实现拦截器的事情,这是一个分步指南。
https://zenn.dev/k_maru/articles/first_opentelemetry_dotnet
如何用OpenTelemetry获取和显示ASP.NET Core应用程序的痕迹。
还介绍了调用外部服务和用Zipkin显示等方法。
https://kristoffer-strube.dk/post/the-blazor-navigationmanager/
Blazor NavigationManager类的解析。
在.NET 7中,新的RegisterLocationChangingHandler
API。
https://devblogs.microsoft.com/nuget/write-a-high-quality-readme-for-nuget-packages/
为NuGet包写一个高质量的README指南。
它介绍了在README中应该写些什么、模板、良好的做法等,由于README现在可以在NuGet.org上显示,这些都变得越来越重要。
https://ericsink.com/native_aot/delegate_i32.html
关于从C语言向C#传递委托并在NativeAOT中调用它们。
https://qiita.com/delicioustuna/items/6cd457bbfb40254663d2
关于Formatter用MemoryPack将Math.NET的Vector<T>
序列化的实现。
https://devblogs.microsoft.com/visualstudio/github-copilot-in-visual-studio-2022/
介绍Visual Studio 2022中GitHub Copilot更新的视频。
https://speakerdeck.com/dena_tech/techcon2023-session03
解释如何使用Dena.CodeAnalysis.Testing进行开发的会议幻灯片,它可以协助为Roslyn Analyzer单元测试编写测试代码。
了解如何使用动态程序分析(DPA)来优化Entity Framework Core数据库查询,它可以自动分析ReSharper和Rider应用程序的性能。
https://github.com/Cysharp/csbindgen
一个Rust库,可以生成绑定,将本地C库带到.NET和Unity。
Stack Overflow技术架构的解释。
https://twitter.com/sahnlam/status/1629713954225405952?s=12
Visual Studio 2022 17.5版能够像Visual Studio Code那样从.http
文件中创建REST客户端。
https://twitter.com/Dave_DotNet/status/1628135023722303506
Immutable和Frozen的区别。
https://twitter.com/dave_dotnet/status/1629464212194959362?s=12
不可变的集合是 "不可变的",因为一个集合的特定实例不能被改变。然而,它们确实鼓励变异:不是变异该实例,而是从原始实例中创建新的实例。所以你会看到在不可变集合上的添加和删除等方法,这些方法并不改变原始实例,而是创建一个包含该突变的新实例(你经常会在文献中看到此类集合被描述为 "持久化集合")。这样做的净结果是,除了有一个鼓励这种操作的表面区域外,还为这种使用优化了实现,特别是围绕实例之间的内存共享。如果你有一个
ImmutableDictionary<string, string>
,从表面上看它是一个树形数据结构,当你对它进行 "添加 "时,它会创建一个新的ImmutableDictionary<string, string>,它尽可能多地共享原始树,但要有支持添加项目所需的额外节点。这意味着即使ImmutableDictionary<>
是 "不可变的",它实际上并没有为快速读取进行优化,例如,TryGetValue是一个O(log n)操作。另一方面,新的
FrozenSet<>/FrozenDictionary<>
是真正的不可变的;没有任何API表面区域允许或鼓励添加、删除等。因此,它们是为你能对它们进行的唯一操作而设计的:读取。如果你所关心的是没有任何能够实现任何形式的突变的API,那么你可以只使用ToFrozenSet/Dictionary
。如果你打算让这些东西存在一段时间,并想在构造时花更多的时间把数据放入一种形式,使它们在随后的所有读取中更快,你可以给这些方法传递一个optimizeForReading:true bool
,工厂会花更多的时间计算最好的存储,使随后的操作如TryGetValue非常快。它不需要担心以一种能使创建派生集合的成本降低的方式来存储数据,因为没有执行这种操作的表面区域。
https://github.com/dotnet/wpf/blob/main/roadmap.md
2023年的WPF路线图,包括对Windows 11支持。
由于笔者没有那么多时间对国内的一些文章进行整理,欢迎大家为《.NET周报-国内文章》板块进行贡献,需要推广自己的文章或者框架、开源项目可以下方的项目地址提交Issue或者在我的微信公众号私信。
格式如下:
https://github.com/InCerryGit/.NET-Weekly
相信大家在开发中经常会遇到一些性能问题,苦于没有有效的工具去发现性能瓶颈,或者是发现瓶颈以后不知道该如何优化。之前一直有读者朋友询问有没有技术交流群,但是由于各种原因一直都没创建,现在很高兴的在这里宣布,我创建了一个专门交流.NET性能优化经验的群组,主题包括但不限于:
希望能有更多志同道合朋友加入,分享一些工作中遇到的.NET性能问题和宝贵的性能分析优化经验。目前一群已满,现在开放二群。
如果提示已经达到200人,可以加我微信,我拉你进群: ls1075
另外也创建了QQ群,群号: 687779078,欢迎大家加入。