摘要:大家好,今天给大家分享一套 C# 与 .NET 设计模式视频教程,目前是我发现的基于 .NET 来讲设计模式的教程中最好也是最全的一套(含配套源代码)。 我每天上下班中上都看两集,今天终于看完了(中间对于非常简单的知识点使用了 1.25 倍加速)。尽管我是个 .NET 老司机,但看完后依然收获不少。 阅读全文
posted @ 2020-06-20 13:52 精致码农 阅读(2422) 评论(3) 推荐(8) 编辑
摘要:在 C 和 C# 编程语言中,结构体(Struct)是值类型数据结构,它使得一个单一变量可以存储多种类型的相关数据。在 C 语言中还有一种和结构体非常类似的语法,叫共用体(Union),有时也被直译为联合或者联合体。而在 C# 中并没有共用体这样一个定义,本文将介绍如何使用 C# 实现 C 语言中的 阅读全文
posted @ 2021-01-15 08:45 精致码农 阅读(320) 评论(1) 推荐(5) 编辑
摘要:作者:Casey McQuillan 译者:精致码农 原文:http://dwz.win/YVW 说明:原文比较长,翻译时精简了很多内容,对于不重要的细枝末节只用了一句话概括,但不并影响阅读。 你还记得上一次一个无足轻重的细节点燃你思考火花的时刻吗?作为一个软件工程师,我习惯于专注于一个从未见过的微 阅读全文
posted @ 2020-12-17 21:42 精致码农 阅读(3594) 评论(51) 推荐(42) 编辑
摘要:前几天发布了几篇关于要小心使用 Task.Run 的文章,看了博客园的所有评论。发现有不少人在纠结示例中的现象是不是属于内存泄漏,本文分享一下我个人的看法,大家可以保留自己的意见。 在阅读本文前,如果你对 GC 分代算法还不了解,建议先阅读我的上一篇文章:小心使用 Task.Run 终篇解惑。 背景 阅读全文
posted @ 2020-12-10 11:02 精致码农 阅读(5198) 评论(101) 推荐(51) 编辑
摘要:继上一篇文章之后,这篇文章主要解答以下两个疑惑: 由于值类型是拷贝的方式赋值,所以捕获的本地变量和类成员是指向的是各自的值,对本地变量的捕获不会影响到整个类。但如果把 _id 改为引用类型(如 StringBuilder),那两者指向的就是同一个对象值,那是不是意味着即便使用本地变量也还是无法避免内 阅读全文
posted @ 2020-12-09 09:10 精致码农 阅读(772) 评论(4) 推荐(12) 编辑
摘要:关于前两天发布的文章:为什么要小心使用 Task.Run,对文中演示的示例到底会不会导致内存泄露,给很多人带来了疑惑。这点我必须向大家道歉,是我对导致内存泄漏的原因没描述和解释清楚,也没用实际的示例证实,是我的错。 但是,文中示例演示的 Task.Run 捕获类成员的情况,确实会有内存泄漏的风险,我 阅读全文
posted @ 2020-12-08 09:41 精致码农 阅读(2720) 评论(54) 推荐(13) 编辑
摘要:昨天在博客园有园友问了我一个问题,是这样的: 先是半个月前 @碧水青荷 童鞋的一句话“大家都说不要随便 Task.Run(()=>{}) 这样写”,当时没有想太多,这句话并没有引起我注意,只顾着回答他“不想在代码中加 async/await 该怎么做”的问题。 然后这句话被 @裤兜 童鞋注意到,昨天 阅读全文
posted @ 2020-12-03 12:03 精致码农 阅读(4286) 评论(37) 推荐(25) 编辑
摘要:在 Visual Studio 中有一个窗口叫 Immediate 窗口,中文版本应该叫即时窗口。默认会在你启动调试时在 VS 编辑器中弹出来。你也可以通过 Debug | Windows | Immediate 或者使用快捷键 Ctrl+Alt+I 手动把它调出来。 这个窗口很实用,尤其是在调试的 阅读全文
posted @ 2020-12-02 09:20 精致码农 阅读(3702) 评论(18) 推荐(55) 编辑
摘要:大多数系统在数据库存的都是系统的状态数据,比如一个用户表可能会存用户的姓名、头像、个性签名等信息。只存状态数据的传统模式会有什么问题呢? 问题起源 假设你公司做了一个系统,并正式上线了。经过一周的推广,老板问你要一些用户的行为数据。老板想知道所有用户平均修改个性签名的次数。 对于传统的数据库设计,当 阅读全文
posted @ 2020-11-30 09:23 精致码农 阅读(2248) 评论(14) 推荐(28) 编辑
摘要:最近工作中遇到一个这样的需求:在某个列表查询功能中,可以选择某个数字列(如商品单价、当天销售额、当月销售额等),再选择 小于或等于 和 大于或等于 ,再填写一个待比较的数值,对数据进行查询过滤。 如果只有一两个这样的数字列,那么使用 Entity Framework Core 可以这么写 LINQ 阅读全文
posted @ 2020-11-26 08:55 精致码农 阅读(2102) 评论(4) 推荐(24) 编辑
摘要:之前写了一篇文章《快速了解 ASP.NET Core Blazor》,大家关心最多的问题是,我该不该花时间去学习 Blazor。今天聊聊这个话题,并表达一下我个人的看法。 在此之前,我还是想不厌其烦的介绍一个 Blazor。 Blazor 是微软 .NET 团队开发的一个新的 UI 框架,目前生态发 阅读全文
posted @ 2020-11-19 07:12 精致码农 阅读(4371) 评论(55) 推荐(53) 编辑
摘要:.NET 5 旨在提供统一的运行时和框架,使其在各平台都有统一的运行时行为和开发体验。微软发布了与 .NET 协作的大数据(.NET for Spark)和机器学习(ML.NET)工具,这些工具共同提供了富有成效的端到端体验。在本文中,我们将介绍 .NET for Spark、大数据、ML.NET 和机器学习的基础知识,我们将研究其 API 和功能,向你展示如何开始构建和消费你自己的 Spark 作业和 ML.NET 模型。 阅读全文
posted @ 2020-11-16 08:57 精致码农 阅读(3032) 评论(11) 推荐(38) 编辑
摘要:多线程编程时,如果涉及同时读写共享数据,就要格外小心。如果共享数据是独占资源,则要对共享数据的读写进行排它访问,最简单的方式就是加锁。锁也不能随便用,否则可能会造成死锁和活锁。本文将通过示例详细讲解死锁和活锁是如何发生的​,以及如何避免它们。​ 避免多线程同时读写共享数据 在实际开发中,难免会遇到多 阅读全文
posted @ 2020-11-13 07:34 精致码农 阅读(2882) 评论(9) 推荐(43) 编辑
摘要:作者:Richard 翻译:精致码农-王亮 原文:http://dwz.win/WFz 说明:文章太长,后面关于 C# 9 语言新特性及平台新特性的部分没有翻译,这部分基本都是代码示例,请直接阅读原文。关于 C# 9 新特性的介绍也可以阅读我的系列文章[C# 9.0 新特性]。 我们很高兴今天(北京 阅读全文
posted @ 2020-11-11 09:21 精致码农 阅读(3098) 评论(20) 推荐(21) 编辑
摘要:线程的知识太多,知识点有深有浅,往深的研究会涉及操作系统、CPU、内存,往浅了说就是一些语法。没有一定的知识积累,很难把线程的知识写得全面,当然我也没有这个能力。所以想到一个点写一个点,尽量总结一些有用的知识点。线程是个大话题,这个系列可能会有好几遍关于线程的,先从基础的开始,热热身。 一些基础概念 阅读全文
posted @ 2020-11-10 09:04 精致码农 阅读(2271) 评论(12) 推荐(43) 编辑
摘要:C# 语言一贯秉承简洁优美的宗旨,每次升级都会带来一些语法糖,让我们可以使代码变得更简洁。本文分享两个使用 C# 9.0 提升 if 语句美感的技巧示例。 使用属性模式代替 IsNullOrEmpty 在任何你使用 IsNullOrEmpty 的时候,可以考虑这样替换: string? hello 阅读全文
posted @ 2020-11-06 08:40 精致码农 阅读(5491) 评论(47) 推荐(53) 编辑
摘要:自从 Windows Terminal 正式发布后就再没有用过 Windows 系统自带的终端了。主要是 Terminal 简洁且灵活,更重要的是支持特殊字体,通过一些简单的配置可以使得终端看起来更舒适养眼。 自从 Win 10 有了 Linux 子系统(WSL),早就把电脑上的 vmware 虚拟 阅读全文
posted @ 2020-11-04 09:45 精致码农 阅读(2909) 评论(2) 推荐(10) 编辑
摘要:要理解 C# 中的 volatile 关键字,就要先知道编译器背后的一个基本优化原理。比如对于下面这段代码: public class Example { public int x; public void DoWork() { x = 5; var y = x + 10; Debug.WriteL 阅读全文
posted @ 2020-10-28 08:49 精致码农 阅读(2876) 评论(23) 推荐(34) 编辑
摘要:原文:http://dwz.win/ThX 作者:Richard 翻译:精致码农-王亮 说明:本译文舍弃了少许我实在不知道如何翻译但又不是很重要的语句。 今天(10月13日)我们发布了 .NET 5.0 候选版本 2(RC2),它是 11 月 .NET 5.0 正式版发布前的最后一个 RC 版本。R 阅读全文
posted @ 2020-10-16 08:54 精致码农 阅读(4329) 评论(13) 推荐(30) 编辑
摘要:作者:Richard 翻译:精致码农-王亮 原文:http://dwz.win/Q4h 自从 .NET 5 宣贯以来,很多人都在问这对 .NET Standard 意味着什么,它是否仍然重要。在这篇文章中,我将解释 .NET 5 是如何改进代码共用并取代 .NET Standard 的,我还将介绍什 阅读全文
posted @ 2020-10-13 08:32 精致码农 阅读(4302) 评论(16) 推荐(57) 编辑
摘要:数据标注(Data Annotation)是类或类成员添加上下文信息的一种方式,在 C# 通常用特性(Attribute)类来描述。它的用途主要可以分为下面这三类: 验证 Validation:向数据添加验证规则 显示 Display:指定数据如何呈现给用户 模型 Modeling:添加关于用法和与 阅读全文
posted @ 2020-10-09 10:27 精致码农 阅读(2062) 评论(3) 推荐(16) 编辑