随笔分类 - [37]C#12
-
同步代码中做了 异步代码.Result 导致的死锁问题
摘要:同步代码 中做了 异步代码.Result 导致的死锁问题 记一次 .NET 某药品仓储管理系统 卡死分析 一:背景 1. 讲故事 这个月初,有位朋友wx上找到我,说他的api过一段时间后,就会出现只有请求,没有响应的情况,截图如下: 从朋友的描述中看样子程序是被什么东西卡住了,这种卡死的问题解决起来 阅读全文
-
学习泛型的协变与逆变
摘要:C# - 逆变的具体应用场景 前言 早期在学习泛型的协变与逆变时,网上的文章讲解、例子算是能看懂,但关于逆变的具体应用场景这方面的知识,我并没有深刻的认识。本文将在具体的场景下,从泛型接口设计的角度出发,逐步探讨逆变的作用,以及它能帮助我们解决哪方面的问题? 这篇文章算是协变、逆变知识的感悟和分享, 阅读全文
-
c#多进程通讯
摘要:c#多进程通讯 引言 在c#中,可能大多数人针对于多线程之间的通讯,是熟能生巧,对于AsyncLocal 和ThreadLocal以及各个静态类中支持线程之间传递的GetData和SetData方法都是信手拈来,那多进程通讯呢,实际上也是用的比较多的地方,但是能够熟能生巧的人和多线程的相比的话呢,那 阅读全文
-
动态创建表达式C# Expression
摘要:[C# Expression] 之动态创建表达式 上一篇中说到了 Expression 的一些概念性东西,其实也是为了这一篇做知识准备。为了实现 EFCore 的多条件、连表查询,简化查询代码编写,也就有了这篇文章。 在一些管理后台中,对数据进行多条件查询是一件很普遍的事情,比如在用户列表需要实现可 阅读全文
-
自定义表单引擎
摘要:企业自定义表单引擎解决方案 架构及核心模块设计 先总体介绍一下大概的架构和核心模块设计。先上一张整体设计图 概念还是有点多,有一些概念可能比较新,如果熟悉K2自定义表单,可能比较好理解一些。代码地址:https://gitee.com/kuangqifu/sprite,或者QQ交流:52347777 阅读全文
-
库Microsoft.CodeAnalysis.CSharp.Scripting
摘要:C# 脚本 有些情况下,需要在程序运行期间动态执行C#代码,比如,将某些经常改变的算法保存在配置文件中,在运行期间从配置文件中读取并执行运算。这时可以使用C#脚本来完成这些工作。 使用C#脚本需要引用库Microsoft.CodeAnalysis.CSharp.Scripting,下面是一些示例:最 阅读全文
-
C#面对抽象编程
摘要:C#面对抽象编程第一讲 闲话不多说,面向对象编程是高级语言的一个特点,但是把它概括成面向抽象更容易直击灵魂,经过了菜鸟大家都要面对的是不要写这么菜的代码了。 上例子,这应该是大家都很熟悉耳熟能详的代码, so easy。 1 using System; 2 using System.Diagnost 阅读全文
-
.net程序连接Oracle数据库
摘要:备忘录:关于.net程序连接Oracle数据库 目录 关于使用MSSM访问Oracle数据库 关于. net 程序中连接Oracle数据库 志铭-2021年12月7日 21:22:15 关于使用MSSM访问Oracle数据库 安装访问接口组件:OraOLEDB.Oracle 官网可以下载,但是需要注 阅读全文
-
代码是怎么运行
摘要:代码是怎么运行的? 本文内容来自我写的开源电子书《WoW C#》,现在正在编写中,可以去WOW-Csharp/学习路径总结.md at master · sogeisetsu/WOW-Csharp (github.com)来查看编写进度。预计2021年年底会完成编写,2022年2月之前会完成所有的校 阅读全文
-
表达式树
摘要:表达式树,一种提高代码复用性的方式 一、问题源起 在有些情况下,我们的计算逻辑跟传入数据的内部结构有关系,不仅不同的数据的计算逻辑不同,即使同一种数据结构的计算逻辑也会随时间变化;例如我们的大数据收集系统,需要根据前方业务人员配置的过滤表达式,来决定数据是否可以入库;那么我们就需要这个筛选的逻辑既要 阅读全文
-
Parallel的使用
摘要:C#并行编程之Parallel的使用 前言:在C#的System.Threading.Tasks 命名空间中有一个静态的并行类:Parallel,封装了Task的使用,对于执行大量任务提供了非常简便的操作。下面对他的使用进行介绍。 本篇内容: 1.1、Parallel.For 使用1.2、Paral 阅读全文
-
C#调用Lua
摘要:xLua中C#调用Lua C#调用Lua 一.前提 这里使用的是XLua框架,需要提前配置xlua,设置加载器路径; 可以参考之前的Blog:《xlua入门基础》; 二.C#调用Lua全局变量 lua中所有的全局变量都会存在一个表中,对应xLua中的Global,通过lua解释器返回出来; 通过Gl 阅读全文
-
.Net 6 Log4Net File Logging in ASP.NET Core
摘要:Log4Net File Logging in ASP.NET Core 今天在这篇文章中,我们将看到如何在ASP.NET Core API应用程序中使用Log4Net进行文件/滚动文件日志记录和控制台日志记录。 在.NET Core 2.2和.NET Core 3.1 +以后的框架中,日志记录被进 阅读全文
-
XPath路径表达式
摘要:XPath路径表达式 Xpath介绍 XPath 使用路径表达式在 XML 文档中进行导航 XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。 XPath 包含一个标准函数库 XPath 含有超过 100 个内建的函数。 阅读全文
-
异步模式:基于事件的异步模式 (EAP),以及异步编程模型 (APM) 。
摘要:.net 温故知新:【5】异步编程 async await 1、异步编程 异步编程是一项关键技术,可以直接处理多个核心上的阻塞 I/O 和并发操作。 通过 C#、Visual Basic 和 F# 中易于使用的语言级异步编程模型,.NET 可为应用和服务提供使其变得可响应且富有弹性。 上面是关于异步 阅读全文
-
泛型Generic------c#2.0新出的规则和框架的升级
摘要:01.泛型Generic 1. 基本了解 1.1 什么是泛型? 字面意思:不确定的类型 泛型常用:泛型方法,泛型类,泛型接口,泛型委托 1.2 泛型 T(熟悉) T 的作用,其实就是一个通用的容器,制造它的人开始不指定它是用来装什么的,而使用者在使用它的时候要告诉这个容器准备用来装什么,容器知道了用 阅读全文
-
.NET 中创建对象
摘要:.NET 中创建对象 在 .NET 中创建对象的几种方式的对比 在 .net 中,创建一个对象最简单的方法是直接使用 new (), 在实际的项目中,我们可能还会用到反射的方法来创建对象,如果你看过 Microsoft.Extensions.DependencyInjection 的源码,你会发现, 阅读全文
-
Task异常
摘要:Task异常捕获的方式 这节来讲一下如何捕获Task的异常。 当Task运行中出现了异常,正常情况下我们在主线程的Try是捕获不到的,而如果在Task内部写try,出现了异常我们会完全不知道。下面就来介绍几个主线程捕获Task异常的方法。 阻塞线程式 我们可以使用Wait(),WaitAny(),W 阅读全文
-
C#中对虚拟属性和抽象属性的重写
摘要:public abstract class A { //抽象属性不能有实现代码 public abstract string AbstractProperty { get; set; } string s; //虚拟属性可以有实现代码 public virtual string VritualPro 阅读全文
-
TPL Dataflow并行工作流
摘要:TPL Dataflow并行工作流 本系列学习在.NET中的并发并行编程模式,实战技巧 本小节了解TPL Dataflow并行工作流,在工作中如何利用现成的类库处理数据。旨在通过TDF实现数据流的并行处理。 TDF Block 数据流由一个一个的块组成,一个块处理完毕后链接到下一个块上。每一个块以消 阅读全文