1

C#调用bat文件

一、生成bat文件生成bat文件可以直接通过文本文档写入bat内容,然后将文件后缀名改成bat即可,这里介绍用C#生成bat文件的方法。/// <summary> /// 生成bat文件 /// </summary> /// <param name="fileContent">文件内容</param> public void createBatFile(string fileContent) { string filePath = "D:\\CISMZ\\注册.bat"; if (!File.Exists(filePath)) ...

阅读全文>>

1

.NET 6 新特性 System.Text.Json 中的 Writeable DOM

.NET 6 新特性 System.Text.Json 中的 Writeable DOM 特性Intro在 .NET 6 Preview 4 中,微软加入了 JSON Node 的支持,我们可以动态的编辑一个 JSON 文档,一个可以修改的 JSON 文档,就像 Newtonsoft.Json 里的 JToken,这样我们就可以更加灵活的操作一个 JSON 了。主要新增的 API 如下:JsonNode: JSON 文档中的一个节点,对应 Newtonsoft.Json 里的 JTokenJsonObject: JSON 对象,对应 Newtonsoft.Json 里的 JObjectJson...

阅读全文>>

1

迈向 64 位时代,Visual Studio 2022 要来啦

Visual Studio 2022 首个公开预览版即将于今年夏季同开发者见面。Visual Studio 的这套主要版本将带来更快的运行速度、更低的访问门槛以及更轻的体量设计,专为学习者以及构建工业规模解决方案的用户们打造而成。此外,新的 Visual Studio 也将第一次迈入 64 位时代,为您带来更整洁、更智能、更具操作友好性的使用体验。时至今日,开发团队成员们的地理分布要比以往任何时候都更加分散。面对去年突然爆发的全球疫情,组织当然希望自己的开发团队能够异地安全协同、快速提供解决方案,并不断提高最终用户的满意度与价值。通过更出色的 GitHub 集成效果,我们希望帮助各位轻松实现协...

阅读全文>>

1

.NET 中依赖注入组件 Autofac 的性能漫聊

Autofac 是一款超赞的 .NET IoC 容器 ,在众多性能测评中,它也是表现最优秀的一个。它管理类之间的依赖关系, 从而使 应用在规模及复杂性增长的情况下依然可以轻易地修改。它的实现方式是将常规的.net类当做 组件 处理。简单的性能测试在 LINQPad 中,我们可以很容易的构建出一个测试环境(需要引入 Microsoft.Extensions.DependencyInjection 和 Autofac.Extensions.DependencyInjection 组件):写一些简单的性能进行测试代码:在 LINQPad 中对上述代码进行一万次、十万次、百万次三个量级的测试,得出以下...

阅读全文>>

1

Autofac一个优秀的.NET IoC框架

1 简介Autofac与C#语言的结合非常紧密,并学习它非常的简单,也是.NET领域最为流行的IoC框架之一。2 使用首先,将Autofac的NuGet软件包安装到您的应用程序中。Autofac 然后,我们通过创建ContainerBuilder来注册组件。var builder = new ContainerBuilder(); builder.RegisterType<Knife>(); builder.RegisterType<Actor>(); 接着,可以通过在一个已存在的生命周期上调用 BeginLifetimeScope() 方法来创建另一个生命周期作用域,...

阅读全文>>

1

什么是依赖注入

1 定义依赖注入(Dependency Injection),简称DI,类之间的依赖关系由容器来负责。简单来讲a依赖b,但a不创建(或销毁)b,仅使用b,b的创建(或销毁)交给容器。2 例子为了把DI讲清楚,我们需要举一个简单例子。例子足够小,希望让你能直观的了解DI而不会陷入真实示例的泥潭。例子:小明要杀怪,那小明拿什么武器杀怪呢?可以用刀、也可以用拳头、斧子等。首先,我们创建一个演员类,名字叫“小明”,具有杀怪功能。namespace NoInjection.ConsoleApp { public class Actor { private string n...

阅读全文>>

1

Ocelot一个优秀的.NET API网关框架

1 什么是Ocelot?Ocelot是一个用.NET Core实现并且开源的API网关,它功能强大,包括了:路由、请求聚合、服务发现、认证、鉴权、限流熔断、并内置了负载均衡器与Service Fabric、Butterfly Tracing集成。2 如何使用Ocelot?首先,创建2个WebApi项目,WebApi01和WebApi02,地址分别https://localhost:44313和https://localhost:44390,其中WebApi01当作网关,WebApi02当作具体的微服务Api。然后,将Ocelot的NuGet软件包安装到WebApi01项目中。Ocelot 注意...

阅读全文>>

1

ASP.NET+MVC+使用+Log4net+记录日志笔记

前言:记录系统中的日志,是一个好的项目产品必备的一个环节。每一个产品最终的目的都是要交予客户使用,因为程序员代码的开发水平参差不齐,Bug就成为了项目运维成本最大的因素之一。如何降低项目运维的成本呢,最重要的是要缩短开发人员在系统运维排查问题的时间成本。如果你的系统中很好的集成了日志框架。那么你可以更快更高效的定位问题、解决问题。从而降低系统运维的时间成本。今天小编给大家介绍Log4net日志框架如何在项目中 使用,希望能对大家有所帮助。Log4net 介绍1、Log4net 是什么?Log4net 是 Apache 旗下一个开源的日志框架的项目,它是Log4j 的一个复制版。Log4net中...

阅读全文>>

1

C#中多线程的那点事-死锁

我们讲述了多线程编程过程中,一种限制多个线程对资源的同时访问的技术——锁。小明同学,上周未和家人出去游玩去了。刚学了锁的用法,小明终于完善的模拟出了早餐店的流水线,所以他游玩很开心。但是回家的路上,却遇到了烦心事!由于天气很好,小明一家人游玩到了天黑才驱车回家。正值交通拥堵的时候,在他们即将行进到一个环岛的时候,交通完全堵死了。传说中的堵死小明在车上看着道路资源被无限的占用着,联想到多线程编程中的锁:要是限制一下进入环岛的车辆的数量,是不是就不会出现这种无限的堵死在状态呢!由于车辆太多,已经进入环岛的车辆,出环岛的路被堵死,无法出去,无法释放占用的道路资源。想要进入环岛的车辆,却又因为无法进入...

阅读全文>>

1

HttpClient的两种重试机制

本文基于 HttpClient 4.5.13使用 http 请求外部服务时,由于网络或者服务本身的不稳定性,经常需要重试。重试当然可以通过手撸代码实现,但更好的方式是通过现有的机制去实现。 HttpClient 中支持两种重试:异常重试。服务不可用重试。异常重试HttpClient 执行时会抛出两种异常:java.io.IOException ClientProtocolExceptionjava.io.IOException 被认为是非致命性且可恢复的,而 ClientProtocolException 被认为是致命性的,不可恢复。处理的时候要注意, ClientProtocolExcept...

阅读全文>>