Skip to content

Commit ac5f32a

Browse files
committed
fix 16 - 22
1 parent 9bde3cf commit ac5f32a

7 files changed

+61
-73
lines changed

docs/episode-016.md

+9-11
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
Global Using 怎么使用?
66

7-
![using](https://dotnetweeklyimages.blob.core.windows.net/016/globalusing.jfif)
7+
![image](https://github.com/DotNETWeekly-io/DotNetWeekly/assets/11272110/a1a450df-a51b-4ab4-8d62-c9e026548ba1)
88

99
`using` 关键字在 `C#` 中有多种用途,最主要的是引入命名空间,以方便该文件中的代码可以使用这些命名空间中的类,委托等等。但是在 `C# 10` 之前,`Using` 的作用域是文件级别的,也就是说不同的文件,都要包含响应的的 `using` 语句,这些难免有写繁琐。在 `C# 10` 引入了 `Global using` 的功能,它主要有两种实现方式,当然也可以混合使用。
1010

@@ -32,27 +32,25 @@ global using MyNamespace;
3232

3333
1、[.NET 用户态线程要来了?](https://twitter.com/davidfowl/status/1532880744732758018)
3434

35-
![greenthread](https://dotnetweeklyimages.blob.core.windows.net/016/greenthread.png)
35+
![image](https://github.com/DotNETWeekly-io/DotNetWeekly/assets/11272110/67e1c8f3-11ff-4a8f-a04a-532933823b38)
3636

3737
总所周知,线程上下文切换是非常耗时的操作,在 `.NET``async``await` 都是交给线程池来处理。 `.NET` 团队打算实现一种用户态的线程,也叫做 `Green Thread`,它是由 `runtime` 来控制,并且非常轻量,就跟 `Go` 语言中的 `goroutine` 一样。
3838

3939
2、[.NET VSCode 插件不再开源?](https://github.com/OmniSharp/omnisharp-vscode/issues/5276)
4040

41-
![image](https://dotnetweeklyimages.blob.core.windows.net/016/omnisharp.png)
42-
4341
最近 `.NET` 社区又一个充满争议的话题出现了,我们都知道在使用 `VS Code` 开发 `.NET` 项目的时候,`OmniSharp` 是一个不可缺少的插件,但是由于历史的原因改插件没有采用 `LSP` 协议。现在微软打算不使用开源协议方式,开发新的 `VS Code` 插件,这个在社区引发了剧烈的讨论。大多人认为这个违反了 `Microsoft Love Open Source` 的宣传。
4442

4543
## 文章推荐
4644

4745
1、[Exchange Online 迁移 .NET Core](https://devblogs.microsoft.com/dotnet/exchange-online-journey-to-net-core/)
4846

49-
![exchagneonline](https://dotnetweeklyimages.blob.core.windows.net/016/exchange.jpg)
47+
![image](https://github.com/DotNETWeekly-io/DotNetWeekly/assets/11272110/fc65ca86-1c57-4169-acb4-0cc96f7a6c5e)
5048

5149
`CosmosDB``GraphAPI` 之后,微软的另一个重要服务 `Exchange Online` 也尝试将之前的 `.NET Framework` 迁移到 `.NET Core`。由于 `Exchange Online` 的庞大的仓库,首先从使用量不大的 `Pop3``IMap4` 开始,逐步从 `.NET Framework``.NET Core 3.1` ,再到 `.NET 5` `.NET 6` 等等,答案是显著的,不管是内存使用,CPU 的使用量,以及 GC 的时间和次数,都得到了显著的提升。
5250

5351
2、[AWS Lambda 推广者关于 .NET 的故事](https://fbouteruche.medium.com/why-i-have-been-in-love-with-c-and-net-for-more-than-15-years-34af4ddce0d8)
5452

55-
![image](https://dotnetweeklyimages.blob.core.windows.net/016/lambdadotnet.png)
53+
![image](https://github.com/DotNETWeekly-io/DotNetWeekly/assets/11272110/f1d6eda7-4535-45ed-bf38-21b0c5691205)
5654

5755
这个一篇来自 `.NET` 开发者的文章,他回顾了自己 `.NET` 经历的开端,然后分析了 `.NET` 社区的缺陷和进步,并且分析了 `AWS` 中 的 `Lambda` 中使用 `.NET` 的故事。
5856

@@ -64,13 +62,13 @@ global using MyNamespace;
6462

6563
4、[.NET 内存测验](https://tooslowexception.com/net-quiz-check-your-level-of-knowledge-about-net-memory-management/)
6664

67-
![image](https://dotnetweeklyimages.blob.core.windows.net/016/memory.png)
65+
![image](https://github.com/DotNETWeekly-io/DotNetWeekly/assets/11272110/da630bd3-a000-4f76-a3c9-b7ca9771db39)
6866

6967
这是这是一些列测试题目问卷,考察一下你对 `.NET` 内存的了解程度。
7068

7169
5、[string.Empty 和 "" 比较](https://www.youtube.com/watch?v=qWBi32-Njm8&ab_channel=NickChapsas)
7270

73-
![image](https://dotnetweeklyimages.blob.core.windows.net/016/stringempty.png)
71+
![image](https://github.com/DotNETWeekly-io/DotNetWeekly/assets/11272110/4d7a12f4-145d-473d-9bff-40a85865fa91)
7472

7573
`C#` 中, `string.Empty``""` 是一样的吗?首先 `string.Empty` 不是一个字面常量,也就是说它不能作为一个函数的默认参数。那么他们之间有什么性能上的差别吗?
7674

@@ -109,7 +107,7 @@ L0032: call 0x719cc280
109107

110108
6、[为什么你需要关心 .NET GC 的问题](https://tooslowexception.com/why-should-you-care-about-net-gc/)
111109

112-
![gc](https://dotnetweeklyimages.blob.core.windows.net/016/gc.png)
110+
![image](https://github.com/DotNETWeekly-io/DotNetWeekly/assets/11272110/37b5ff63-7e53-4538-b20b-62ea2c590eff)
113111

114112
很多时候,我们并不关心 `.NET` GC 的问题,因为它看上去好像跟我们没有什么关系。`.NET` 的抽象已经将这些细节全部隐藏起来了, 只需要关心使用即可。但是仅仅是抽象是不够的,因为
115113

@@ -131,7 +129,7 @@ L0032: call 0x719cc280
131129

132130
1、[Enum 增强版](https://github.com/andrewlock/NetEscapades.EnumGenerators)
133131

134-
![image](https://dotnetweeklyimages.blob.core.windows.net/016/enum.png)
132+
![image](https://github.com/DotNETWeekly-io/DotNetWeekly/assets/11272110/f8443f17-07b8-4fb0-a7bc-e855bc8eeaf7)
135133

136134
`Enum` 类型是 `.NET` 中重要的类型,它的很多方法是采用反射的方式实现,比如 `ToString``IsDefined` 或者 `TryParse` 方法。我们都知道反射的都是非常慢,因此 `NetEscapades.EnumGenerators` 这个库可以帮你解决这个问题,它主要采用 `.NET 6``Source Generator` 方法,通过自动生成相关的代码来避免反射带来的开销。
137135

@@ -189,4 +187,4 @@ public class EnumRunner
189187
}
190188
```
191189

192-
![benchmark](https://dotnetweeklyimages.blob.core.windows.net/016/benchmark.png)
190+
![image](https://github.com/DotNETWeekly-io/DotNetWeekly/assets/11272110/7834651c-7fe9-41bc-92a1-9ad9565099c4)

docs/episode-017.md

+9-12
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
可枚举类型的选择
66

7-
![image](https://dotnetweeklyimages.blob.core.windows.net/017/ienumerable.png)
7+
![image](https://github.com/DotNETWeekly-io/DotNetWeekly/assets/11272110/549bea43-5680-4bfc-8f66-41a1f1c32d7a)
88

99
C# 基础库中包含了很多集合,比如 `List`, `Array` 或者 `HashSet`, 它们都实现了 `IEnumerable<T>` 接口。这样就会给编码的时候代码带来困惑,究竟使用哪种方式来实现呢?接下来分三种情况来考虑:
1010

@@ -118,7 +118,7 @@ class Example4
118118

119119
1、[.NET 类型的内存分配](https://www.youtube.com/watch?v=jONSIhMST9E&ab_channel=NickChapsas)
120120

121-
![image](https://dotnetweeklyimages.blob.core.windows.net/017/memory.png)
121+
![image](https://github.com/DotNETWeekly-io/DotNetWeekly/assets/11272110/2dc70e49-2144-483e-a943-0f04d1b5095c)
122122

123123
`C#` 中有两个主要类型,值类型和引用类型。一般我们认为值类型分配在栈上,而引用类型分配在堆上。事实果真如此吗?答案是一半正确,引用类型分配在堆上,而值类型会根据下面情况分别处理:
124124

@@ -130,19 +130,19 @@ class Example4
130130

131131
2、[.NET 101](https://dusted.codes/dotnet-basics)
132132

133-
![my-dotnet-bot-mod](https://dotnetweeklyimages.blob.core.windows.net/017/dotnet101.png)
133+
![image](https://github.com/DotNETWeekly-io/DotNetWeekly/assets/11272110/2bac1ea3-0713-4f4d-8085-28f76fe669bd)
134134

135135
这篇综述的文章,完整地介绍了 `.NET` 过去和现在,对于新手来说可以很方便地全局了解什么是 `.NET`
136136

137137
3、[.NET 字符串操作技巧汇总](https://www.youtube.com/watch?v=ioi__WRETk4&ab_channel=IAmTimCorey)
138138

139-
![image](https://dotnetweeklyimages.blob.core.windows.net/017/string.png)
139+
![image](https://github.com/DotNETWeekly-io/DotNetWeekly/assets/11272110/bd88f4a7-a235-4e08-810c-96342c382847)
140140

141141
字符串操作几乎是每个应用程序都要关注的内容,这个视频详细介绍了 `C#` 中如何使用操纵字符串。
142142

143143
4、[.NET 中的正则表达式](https://code-maze.com/regular-expressions-csharp/)
144144

145-
![image](https://dotnetweeklyimages.blob.core.windows.net/017/regex.png)
145+
![image](https://github.com/DotNETWeekly-io/DotNetWeekly/assets/11272110/8db15604-3199-4fc9-9eb8-0c99a8628904)
146146

147147
正则表达式是字符串处理的利器,在 `C#``Regex` 类包含了正则表达式处理的全部功能,这篇文章介绍了如何使用它们,包括
148148

@@ -232,7 +232,7 @@ foreach (T result in listWithDuplicates)
232232

233233
7、[C# Lambda 表达式](https://code-maze.com/lambda-expressions-in-csharp/)
234234

235-
![image](https://dotnetweeklyimages.blob.core.windows.net/017/linq.png)
235+
![image](https://github.com/DotNETWeekly-io/DotNetWeekly/assets/11272110/44b29386-0fd3-45ea-b6f3-4a09f090ae69)
236236

237237
`Lambda` 表达式式 `C#` 的一个重要的功能,主要会用在如下的情况中
238238

@@ -246,25 +246,22 @@ foreach (T result in listWithDuplicates)
246246

247247
1、[.NET interactive 的 VS Code 插件](https://github.com/dotnet/interactive)
248248

249-
![image](https://dotnetweeklyimages.blob.core.windows.net/017/vscode.png)
249+
![image](https://github.com/DotNETWeekly-io/DotNetWeekly/assets/11272110/af49b490-29c8-45dd-8a9b-192438bfae06)
250250

251251
Visual Studio Code 是广泛使用的编辑器,其丰富的插件使得生态非常繁荣。`.NET``interactive` 项目提供了这样的插件,可以在 `VS Code` 中使用 `notebook` 编写 `.NET` 的代码,还支持其他语言,比如 `PowerShell`, `Javascript` 等等。
252252

253253
2、[Java 运行在 .NET 平台上](https://github.com/ikvm-revived/ikvm)
254254

255-
![image](https://dotnetweeklyimages.blob.core.windows.net/017/hava.png)
255+
![image](https://github.com/DotNETWeekly-io/DotNetWeekly/assets/11272110/1b1cfe52-ca5d-477f-b15e-1c71e436c76e)
256256

257257
`IKVM`是一个有意思的开源项目,它可以将 `Java` 编写的 `Jar` 包转换成 `dll`, 并且可以在普通的 `C#` 应用程序中引用这个库。通常它要求 `Jar` 包使用的是 `JDK` 包含的标准库,否则出现错误的概率会非常大。
258258

259259
3、[Ant Design Blazor](https://github.com/ant-design-blazor/ant-design-blazor)
260260

261-
![image](https://dotnetweeklyimages.blob.core.windows.net/017/antdesign.png)
261+
![image](https://github.com/DotNETWeekly-io/DotNetWeekly/assets/11272110/a768edd7-d2fd-4526-a4b9-e2e96db57229)
262262

263263
Ant Design Blazor 是基于 `Ant Design``Blazor` 的 UI 应用框架,支持 `.NET 3.1` 以上版本,并且各种主流浏览器。
264264

265265
4、[roslynpad](https://github.com/roslynpad/roslynpad)
266266

267267
通过 Avalonia UI 支持 Win/Mac/Linux,支持.csx——基于 C# 的脚本语言. 支持下载源代码,自行修改编译。
268-
功能对比 LinqPad 高级版
269-
270-
![image](https://dotnetweeklyimages.blob.core.windows.net/017/roslynpad.png)

docs/episode-018.md

+9-10
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
微软公司选择在每年的 11 月份发布新的 `.NET` 版本,主要分为两种类型
66

7-
![net](https://dotnetweeklyimages.blob.core.windows.net/018/DotnetEdition.png)
7+
![image](https://github.com/DotNETWeekly-io/DotNetWeekly/assets/11272110/1f3e50d4-9ad8-4b1b-a090-1fa003b42bb1)
88

99
- Long Term Support (LTS): 长期支持版本,通常为偶数版,比如 `.NET 6`
1010
- Current: 是当前版本,通常为奇数版,比如 `.NET 5`.
@@ -21,35 +21,35 @@
2121

2222
1、[MAUI 和 DevOps 结合](https://devblogs.microsoft.com/dotnet/devops-for-dotnet-maui/)
2323

24-
![Maui and DevOps](https://dotnetweeklyimages.blob.core.windows.net/018/MauiAndDevOps.png)
24+
![image](https://github.com/DotNETWeekly-io/DotNetWeekly/assets/11272110/2305300a-0e8b-4833-be95-47ae61552763)
2525

2626
MAUI 已经推出很久了,那么如何使用 CI/CD 来构建和部署 MAUI 的应用程序呢?这篇文章提供了参考。
2727

2828
2、[VS Code Server 来了](https://dotnetweeklyimages.blob.core.windows.net/018/VSCodeServer.png)
2929

30-
![VS Code Server](https://dotnetweeklyimages.blob.core.windows.net/018/VSCodeServer.png)
30+
![image](https://github.com/DotNETWeekly-io/DotNetWeekly/assets/11272110/704c219c-10e9-4d8e-9cd7-6bc5c9df83b7)
3131

3232
自从微软发布了 `VS Code` 之后,几乎占据了大部分编辑器的市场份额。之前 `VS code` 专注于桌面市场,随着新冠疫情依旧肆虐,居家办公越来越常见,远程开发变得越发流行。之前 `VS Code` 借助 `Remove Development` 插件,实现了远程办公。但是 `VS code` 团队想要更近一步,希望在浏览器上完成开发工作,这样手机,平板上也能进行开发。
3333

3434
最近 `VS Code Server` 进入预发布状态,它可以在一台远程服务器上安装服务,然后通过 [vscode.dev](http://vscode.dev) 进行访问。
3535

3636
3、[一键部署.NET 到 AWS](https://aws.amazon.com/blogs/developer/aws-announces-a-streamlined-deployment-experience-for-net-applications)
3737

38-
![Dotnet publish to AWS](https://dotnetweeklyimages.blob.core.windows.net/018/PublishAWS.png)
38+
![image](https://github.com/DotNETWeekly-io/DotNetWeekly/assets/11272110/502db465-f02c-4d00-9c3a-5c5b089061e1)
3939

4040
我们都知道 `Visual Studio``Azure` 结合的非常好,比如 C# 项目 `Publish` 按纽可以一键部署到 `Azure` 服务上,这也是微软的商业策略。但是不可否认的是 `AWS` 是最大的云服务提供商,最近 Amazon 推出了 `VS` 插件,可以一键将 C#代码部署到 `AWS` 中。
4141

4242
## 文章推荐
4343

4444
1、[C# 实现神经网络](https://rubikscode.net/2022/07/04/implementing-simple-neural-network-in-c/)
4545

46-
![Neural Network](https://dotnetweeklyimages.blob.core.windows.net/018/NeuralNetwork.png)
46+
![image](https://github.com/DotNETWeekly-io/DotNetWeekly/assets/11272110/b1333648-06e7-475f-b71d-36b9c37aeccb)
4747

4848
神经网络是目前人工智能的支持体系,虽然说现在流行的框架比如 PyTourch, TensorFlow 使我们不需要关心神经网络的具体实现,但是从头到尾实现一个神经网络可以是我们的基础更加牢固。这篇文章介绍了如何用 C# 实现一个神经网络,并且复习神经网络的基本知识。
4949

5050
2、[C#中的切片和范围](https://code-maze.com/csharp-ranges-and-indices/)
5151

52-
![Ranges and Indices](https://dotnetweeklyimages.blob.core.windows.net/018/RangesAndIndices.png)
52+
![image](https://github.com/DotNETWeekly-io/DotNetWeekly/assets/11272110/87d5ac97-12aa-4507-a2f7-5b6850027cca)
5353

5454
C# 8 引入了索引 (index) 和范围 (range),可以支持类似 python 的索引和范围查询。
5555

@@ -125,7 +125,8 @@ public static string[] GetThreeElementsFromMiddle(string[] arr)
125125

126126
3、[FirstOrDefault 和 SingleOrDefault 的区别](https://www.youtube.com/watch?v=ZTWl2s8ScMc&ab_channel=NickChapsas)
127127

128-
![FirstOrDefault and SingleOrDefault](https://dotnetweeklyimages.blob.core.windows.net/018/FirstOrSingle.png)
128+
![image](https://github.com/DotNETWeekly-io/DotNetWeekly/assets/11272110/8a2be940-ef8a-4cb5-a2a2-4604e2ab184e)
129+
129130

130131
- 如果集合没有元素: `SingleOrDefault``FirstOrDefault` 都返回类型的默认值
131132
- 如何集合只有一个元素: `SingleOrDefault``FirstOrDefault` 都返回该元素
@@ -173,12 +174,10 @@ public static string[] GetThreeElementsFromMiddle(string[] arr)
173174

174175
1、[F#入门文档](https://leanpub.com/essential-fsharp)
175176

176-
![Essential F#](https://dotnetweeklyimages.blob.core.windows.net/018/EssentialFsharp.png)
177+
![image](https://github.com/DotNETWeekly-io/DotNetWeekly/assets/11272110/49e6ce72-24b2-4f5b-be77-f14bc9e5c4c4)
177178

178179
F# 入门文档。
179180

180181
2、[Awesome Blazor](https://github.com/AdrienTorris/awesome-blazor)
181182

182-
![Awesome Blazor](https://dotnetweeklyimages.blob.core.windows.net/018/AwesomeBlazor.png)
183-
184183
该项目中汇总了许多与 Blazor 相关的内容,包含但不限于 Blazor 介绍、应用模板、不同种类的示例项目、教程、库和扩展、效率工具、文章、书籍推荐、课程等等。如果想要学习如何编写 Blazor 应用可以在该项目中查找到很多非常有用的推荐内容,同时该项目提供了[网站](https://jsakamoto.github.io/awesome-blazor-browser)可以对项目中的条目进行搜索。

0 commit comments

Comments
 (0)