Redis 入门与 ASP.NET Core 缓存

如果你还没有 redis 集群,可以参考笔者的另一篇文章:搭建分布式 Redis Cluster 集群与 Redis 入门 本文将使用 StackExchange.Redis 库来连接和操作 Redis 。 StackExchange.Redis 的使用,本文只是参照文档,换种方式表示,如果英文基础 ... »

初识 MongoDB 和 .NET Core 入门

昨天搭建完毕 MongoDB 集群 后,开始计划了解 MongoDB ,并引入使用场景,这里介绍一下学习过程中的一些笔记,帮助读者快速了解 MongoDB 并使用 C# 对其进行编码。 浅入 MongoDB MonogoDB 是什么 MongoDB 是 NoSQL 型数据库,主要特征是存储结构化数据 ... »

GDB 调试 .NET 程序实录 - .NET 调用 .so 出现问题怎么解决

注:本文重要信息使用 *** 屏蔽关键字。 最近国庆前,项目碰到一个很麻烦的问题,这个问题让我们加班到凌晨三点。 大概背景: 客户给了一些 C语言 写的 SDK 库,这些库打包成 .so 文件,然后我们使用 C# 调用这些库,其中有一个函数是回调函数,参数是结构体,结构体的成员是函数,将 C# 的函 ... »

C# 反射与特性(十):EMIT 构建代码

前面,本系列一共写了 九 篇关于反射和特性相关的文章,讲解了如何从程序集中通过反射将信息解析出来,以及实例化类型。 前面的九篇文章中,重点在于读数据,使用已经构建好的数据结构(元数据等),接下来,我们将学习 .NET Core 中,关于动态构建代码的知识。 其中表达式树已经在另一个系列写了,所以本系 ... »

Blazor入门:ASP.NET Core Razor 组件

[TOC] 官方文档原文位置: https://docs.microsoft.com/zh cn/aspnet/core/blazor/components?view=aspnetcore 3.1 本文并不是独立教程的文章,而是属于对微软文档的讲解和说明。 组件:项目 Blazor 中,使用 结尾的 ... »

C# 多线程(18):一篇文章就理解async和await

[TOC] 前言 扯淡了 17 篇,这篇终于开始学习 async 和 await 了,有了前面的基础,来理解 async 和 await 就容易理解多了。 这一篇一定要按照每一个示例,去写代码、执行、输出结果,自己尝试分析思路。 async 微软文档:使用 修饰符可将方法、lambda 表达式或匿名 ... »

C#多线程(16):手把手教你撸一个工作流

[TOC] 前言 前面学习了很多多线程和任务的基础知识,这里要来实践一下啦。通过本篇教程,你可以写出一个简单的工作流引擎。 本篇教程内容完成是基于任务的,只需要看过笔者的三篇关于异步的文章,掌握 C 基础,即可轻松完成。 "C 多线程(13):任务基础①" "C 多线程(14):任务基础②" "C ... »

C#多线程(15):任务基础③

[TOC] 任务基础一共三篇,本篇是第三篇,之后开始学习异步编程、并发、异步I/O的知识。 本篇会继续讲述 Task 的一些 API 和常用的操作。 TaskAwaiter 先说一下 ,`TaskAwaiter` 表示等待异步任务完成的对象并为结果提供参数。 Task 有个 方法,会返回 或 ,`T ... »

C#多线程(14):任务基础②

[TOC] 上一篇,我们学习了任务的基础,学会多种方式场景任务和执行,异步获取返回结果等。上一篇讲述的知识比较多,这一篇只要是代码实践和示例操作。 判断任务状态 | 属性 | 说明 | | | | | IsCanceled | 获取此 Task 实例是否由于被取消的原因而已完成执行。 | | IsC ... »

C#多线程(13):任务基础①

[TOC] 多线程编程 多线程编程模式 .NET 中,有三种异步编程模式,分别是基于任务的异步模式(TAP)、基于事件的异步模式(EAP)、异步编程模式(APM)。 基于任务的异步模式 (TAP) :.NET 推荐使用的异步编程方法,该模式使用单一方法表示异步操作的开始和完成。包括我们常用的 asy ... »

C#多线程(12):线程池

[TOC] 线程池 线程池全称为托管线程池,线程池受 .NET 通用语言运行时(CLR)管理,线程的生命周期由 CLR 处理,因此我们可以专注于实现任务,而不需要理会线程管理。 线程池的应用场景:任务并行库 (TPL)操作、异步 I/O 完成、计时器回调、注册的等待操作、使用委托的异步方法调用和套接 ... »

C#多线程(6):线程通知

[TOC] 回顾一下,前面 lock、Monitor 部分我们学习了线程锁,Mutex 部分学习了进程同步,Semaphor 部分学习了资源池限制。 这一篇将学习 C 中用于发送线程通知的 AutoRestEvent 类。 AutoRestEvent 类 用于从一个线程向另一个线程发送通知。 微软文 ... »

C#多线程(4):进程同步Mutex类

"Mutex 类" "构造函数和方法" "系统只能运行一个程序的实例" "解释一下上面的示例" "接替运行" "进程同步示例" "另外" Mutex 类 Mutex 中文为互斥,Mutex 类叫做互斥锁。它还可用于进程间同步的同步基元。 Mutex 跟 lock 相似,但是 Mutex 支持多个进程 ... »

C#多线程系列(3):原子操作

本章主要讲述多线程竞争下的原子操作。 [TOC] 知识点 竞争条件 当两个或两个以上的线程访问共享数据,并且尝试同时改变它时,就发生争用的情况。它们所依赖的那部分共享数据,叫做竞争条件。 数据争用是竞争条件中的一种,出现竞争条件可能会导致内存(数据)损坏或者出现不确定性的行为。 线程同步 如果有 N ... »

C#多线程系列(2):多线程锁lock和Monitor

"1,Lock" "lock 原型" "lock 编写实例" "2,Monitor" "怎么用呢" "解释一下" "示例" "设置获取锁的时效" C 中,可以使用 lock 关键字和 Monitor 类来解决多线程锁定资源和死锁的问题。 官方解释:lock 语句获取给定对象的互斥 lock,执行语句 ... »

C#多线程系列(1):Thread

[TOC] 本篇是《多线程入门和实践(初级)》的第一篇,也是大家相当熟悉和不屑的的最简单的入门部分。作为系列文章,笔者将从最简单的部分开始,与各位伙伴一起不断学习和探究 C 中的多线程。 对于涉及理论的东西,这里不会过多讨论。更加深入的成分会在中级系列加以说明和探讨,届时会有很多与底层相关的知识。 ... »