日常分享:关于时间复杂度和空间复杂度的一些优化心得分享(C#)

前言 今天分享一下日常工作中遇到的性能问题和解决方案,比较零碎,后续会持续更新(运行环境为.net core 3.1) 本次分享的案例都是由实际生产而来,经过简化后作为举例 Part 1(作为简单数据载体时class和struct的性能对比) 关于class和struct的区别,根据经验,在实际开发 ... »

理解C#中的 async await

前言 一个老掉牙的话题,园子里的相关优秀文章已经有很多了,我写这篇文章完全是想以自己的思维方式来谈一谈自己的理解。(PS:文中涉及到了大量反编译源码,需要静下心来细细品味) 从简单开始 为了更容易理解这个问题,我们举一个简单的例子:用异步的方式在控制台上分两步输出“Hello World!”,我这边 ... »

C#使用struct直接转换下位机数据

编写上位机与下位机通信的时候,涉及到协议的转换,比较多会使用到二进制。传统的方法,是将数据整体获取到byte数组中,然后逐字节对数据进行解析。这样操作工作量比较大,对于较长数据段更容易计算位置出错。 其实,对于下位机给出通讯的数据结构的情况下,可以直接使用C#的struct将数据直接转换。需要使用到 ... »

开发进阶:Dotnet Core多路径异步终止

今天用一个简单例子说说异步的多路径终止。我尽可能写得容易理解吧,但今天的内容需要有一定的编程能力。 今天这个话题,来自于最近对gRPC的一些技术研究。 话题本身跟gRPC没有太大关系。应用中,我用到了全双工数据管道这样一个相对复杂的概念。 我们知道,全双工连接是两个节点之间的连接,但不是简单的“请求 ... »

VS2019项目docker启动且访问SQLSERVER数据库配置

VS2019编译、调试的Blazor纯前台项目,使用控制台启动,去连接纯后台的API项目,使用docker启动,并且通过EFCore访问SQLSERVER数据库,有几个地方需要修改配置: 一、前台连后台需要设置:文件Program中修改为Docker容器Apps的端口号:Uri("https://l ... »

串口使用Pipeline时诡异的ReadOnlySequence问题

借鉴之前的Pipeline的操作方式,现在目标是给串口读取操作也使用上Pipeline。稍微改造一下,以下代码可以直接运行。 协议为使用连续的4个0XFF作为结尾,没有头标志。数据总长为68位定长。 我需要判断从开始到选定位置是否长度足够,这里面用来判断segment长度我用了这个方式。 buffe ... »

.NET Core部署到linux(CentOS)最全解决方案,常规篇

本文为大家介绍使用 .NET Core部署到Linux服务器的方法,通过本文你将了解到Linux在虚拟机下的安装、Xshell,Xftp的使用方法、git在linux下的交互使用以及.net core在linux下的发布与运行全过程,本文皆在总结了一些经验与笔记在部署过程中遇到的一些问题,同时分享... ... »

[C#.NET 拾遗补漏]14:使用结构体实现共用体

在 C 和 C# 编程语言中,结构体(Struct)是值类型数据结构,它使得一个单一变量可以存储多种类型的相关数据。在 C 语言中还有一种和结构体非常类似的语法,叫共用体(Union),有时也被直译为联合或者联合体。而在 C# 中并没有共用体这样一个定义,本文将介绍如何使用 C# 实现 C 语言中的 ... »

.netcore 急速接入第三方登录,不看后悔

此次带来的这个小项目是 OAuth2 登录组件,看到 Java 平台 JustAuth 项目很方便的接入第三方平台登录,心里痒痒啊,搜了一大圈,发现我大 .netcore 能用的可说是少之又少,而且代码写得一塌糊涂,全在一个库里,代码风格也看不惯,所以下定决定,操起键盘,开干。 ... »

[日常填坑系列]CAP食用指南-版本引用问题

一、前言 最近,由于好久没升级底层框架,一直用着netcore2.2版本,导致有些包没能更新到最新的版本,例如:CAP。 然而,在最近升级到CAP:3.1.2版本的时候,发现有点小坑,只能退回到CAP:3.1.1版本了。 二、原因 为啥要将CAP版本从3.1.2退回到3.1.1呢? 根本原因:CAP ... »

WebApi 中请求的 JSON 数据字段作为 POST 参数传入

使用 POST 方式请求 JSON 数据到服务器 WebAPI 接口时需要将 JSON 格式封装成数据模型接收参数。即使参数较少,每个接口仍然需要单独创建模型接收。下面方法实现了将 JSON 参数中的字段作为接口参数接收。实现的并不完美,现在只支持 JSON 格式顶级结构字段作为参数使用,且未处理复 ... »

WPF DataGrid与ListView性能对比与场景选择

开门见山的说 性能对比: 在Demo中,DataGrid与ListView默认开启虚拟化(可以理解为动态渲染,类似懒加载只渲染屏幕可以看见的地方) DataGrid渲染10列50行随机字符280ms ListView渲染10列50行随机字符80ms 场景选择: ListView只生成需要展示的数据类 ... »

深入浅出Dotnet Core的项目结构变化

有时候,越是基础的东西,越是有人不明白。 前几天Review一个项目的代码,发现非常基础的内容,也会有人理解出错。 今天,就着这个点,写一下Dotnet Core的主要类型的项目结构,以及之间的转换和演化。 一、最基础的应用Console 控制台应用,是Dotnet Core乃至前边的Dotnet ... »

ASP.NET Core 上传文件到共享文件夹

参考资料:ASP.NET 上传文件到共享文件夹 创建共享文件夹参考资料:https://www.cnblogs.com/dansediao/p/5712657.html 一、配置上传文件相关参数并读取参数 1.配置appsettings.json { "FileUploadInfo": { "Upl ... »