经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
 C#

为什么 C# 可能是最好的第一编程语言

纵观神州大地,漫游中华互联网,我看到很多人关注为什么你应该开始学习JavaScript做前端,而对blazor这样的面向未来的框架有种莫名的瞧不起,或者为什么你应该学习Python作为你的第一门编程语言,恕不知有多少公司业务是用Python开发的,Python更多是粘合剂,作为胶水语言来使用。 ...[2023/3/17]

C#递归应用之实现JS文件的自动引用

目录背景需求分析1、返回结果类型2、算法选择代码实现 背景 两张表,分别是 :sys_tbl,和 sys_field,其中:sys_tbl 是系统所有表的信息,包含两个字段 :code(表名),name(表描述信息);sys_fld 是记录第张表中的字段 的名称(field)和描述信息(tabl...[2023/3/14]

C#神器"BlockingCollection"类实现C#神仙操作

前言 如果你想玩转C# 里面多线程,工厂模式,生产者/消费者,队列等高级操作,就可以和我一起探索这个强大的线程安全提供阻塞和限制功能的C#神器类 BlockingCollection简单介绍 微软介绍地址:https: learn.microsoft.com/zh-cn/dotnet tand...[2023/3/3]

【C#异步】异步多线程的本质,上下文流转和同步

引言     net同僚对于async和await的话题真的是经久不衰,这段时间又看到了关于这方面的讨论,最终也没有得出什么结论,其实要弄懂这个东西,并没有那么复杂,简单的从本质上来讲,就是一句话,async 和await异步的本质就是状态机+线程环境上下文的流转,由状态机向前推进执行,上下文进...[2023/3/3]

C#后缀表达式解析计算字符串公式

当我们拿到一个字符串比如:20+31*(100+1)的时候用口算就能算出结果为3151,因为这是中缀表达式对于人类的思维很简单,但是对于计算机就比较复杂了。相对的后缀表达式适合计算机进行计算。 我们就从简单到复杂,逐步实现对公式的解析(下述的代码没有经过严格验证,可能会存在极端情况的BUG,作...[2023/2/24]

C# HttpClient使用和注意事项,.NET Framework连接池并发限制

System.Net.Http.HttpClient 类用于发送 HTTP 请求以及从 URI 所标识的资源接收 HTTP 响应。 HttpClient 实例是应用于该实例执行的所有请求的设置集合,每个实例使用自身的连接池,该池将其请求与其他请求隔离开来。 从 .NET Core 2.1 开始...[2023/2/24]

自动化测试如此容易!多语言自动化测试框架 Selenium 编程(C#篇)

介绍 Selenium 官网:https: www.selenium.dev/ Selenium 是功能强大的自动化测试工具集,是支持 Web 浏览器自动化的一系列工具和库的总括项目,一共包括以下三个项目: Selenium WebDriver Selenium IDE Selenium G...[2023/2/22]

研究c#异步操作async await状态机的总结

前言     前一段时间得闲的时候优化了一下我之前的轮子[DotNetCoreRpc]小框架,其中主要的优化点主要是关于RPC异步契约调用的相关逻辑。在此过程中进一步了解了关于async和await异步操作相关的知识点,加深了异步操作的理解,因此总结一下。...[2023/2/22]

C#利用FluentFTP实现FTP上传下载功能详解

C#利用FluentFTP实现FTP上传下载功能详解

目录FTP基础知识FTP环境搭建FluentFTP安装示例演示示例源码 FTP作为日常工作学习中,非常重要的一个文件传输存储空间,想必大家都非常的熟悉了,那么如何快速的实现文件的上传下载功能呢,本文以一个简单的小例子,简述如何通过FluentFTP实现文件的上传和下载功能。仅供学习分享使用,如有不足...[2023/2/22]

基于ChatGPT的API的C#接入研究

今年开年,最火的莫过于ChatGPT的相关讨论,这个提供了非常强大的AI处理,并且整个平台也提供了很多对应的API进行接入的处理,使得我们可以在各种程序上无缝接入AI的后端处理,从而实现智能AI的各种应用。ChatGPT的API可以在前端,以及一些后端进行API的接入,本篇随笔主要介绍基于Cha...[2023/2/20]

C# 委托原理刨析,外加和事件对比

什么是委托 委托是一种引用类型,表示对具有特定参数列表和返回类型的方法的引用。 在实例化委托时,你可以将其实例与任何具有兼容参数和返回类型的方法进行绑定。 你可以通过委托实例调用方法。 简单的理解,委托是方法的抽象类,它定义了方法的类型,可以实例化。和普通的类一样,可以申明变量进行赋值,可以当...[2023/2/17]

我不想再传递 nameof 了

我不想再传递 nameof 了

有的时候抛出一个异常,我们需要知道是哪个方法抛出的异常。那么,我们可以通过传递 nameof 来获取调用者的方法名。但是,感觉很烦,每次都要传递 nameof。那么,有没有更好的方法呢? CallerLineNumberAttribute 获取调用者的行号。 using System; u...[2023/2/17]

C#NPOI操作Excel,实现Excel数据导入导出(支持多个sheet)

  首先在项目中引用NPOI,通过管理NuGet程序包,搜索NPOI,选择版本2.3.0(支持.NET Framework 4.0)根据自己项目选择适当版本。 1.NpoiExcelHelper.cs  Npoi操作Excel类 using System....[2023/2/15]

C#网络爬虫开发

1前言 爬虫一般都是用Python来写,生态丰富,动态语言开发速度快,调试也很方便 但是 我要说但是,动态语言也有其局限性,笔者作为老爬虫带师,几乎各种语言都搞过,现在这个任务并不复杂,用我最喜欢的C#做小菜一碟~ 2开始 之前做 OneCat 项目的时候,最开始的数据...[2023/2/13]

关于C#中async/await的用法

一直对c#中async/await的用法模模糊糊,不太清晰,今天写了一下Demo彻底明确一下async/await的用法,以免因为对其不了解而对后期的业务产生影响(比如事务导致的锁表等等)。 1. 首先,async/await 成对出现才有意义。其意义在于可以等待异步操作完成后继续顺序执行,而...[2023/2/10]

C# 如何部分加载“超大”解决方案中的部分项目

在有的特有的项目环境下,团队会将所有的项目使用同一个解决方案进行管理。这种方式方面了管理,但是却会导致解决方案变得非常庞大,导致加载时间过长。那么,如何部分加载解决方案中的部分项目呢?就让我们来借用微软退出的 slngen 工具来体验一下部分加载解决方案中的部分项目吧。 slngen 从根项目...[2023/2/10]

详解C#如何在不同工作簿之间复制选定单元格区域

目录程序环境不同工作簿之间复制单元格范围完整代码效果图 在处理 Excel 文档时,我们经常需要将数据整合到一个工作表以便于我们进行管理或数据对比。为了提高工作效率,我们可以在不同的工作簿之间复制选定的单元格区域或整个工作表。本文将演示如何通过编程方式将选定的单元格区域从一个工作簿复制到另一个工作簿...[2023/2/10]

如何在 C# 项目中链接一个文件夹下的所有文件

在 C# 项目中通过链接方式引入文件可以让我们在项目中使用这些文件中的代码。常见的比如链接 A emblyInfo.cs 文件,这样我们就可以在项目中使用这个文件中的版本号等信息。但是如果我们想要链接一个文件夹下的所有文件,该怎么做呢?今天我们就来看看如何在 C# 项目中链接一个文件夹下的所有...[2023/2/8]

C# Csv实现基本的读写和转换DataTable

目录Csv文件基本的属性Csv读写方式方式一:一次性读写方式二:使用文件流形式读写Csv文件读写DataTable类型 Csv文件基本的属性 csv文件可以在excel或者wps中以表格形式打开,本质上是每一列以,逗号为分隔符的一种格式,在C#中操作可以把他当做普通txt文本读入,然后通过处理,...[2023/2/8]

重学c#系列—— IO流[三十四]

重学c#系列—— IO流[三十四]

前言 简单介绍一下io流。 以前写过两篇,里面是java 语言写的,简单介绍了一下io流,这里是对io流的整理。 https: www.cnblogs.com/aoximin/p/12007925.html https: www.cnblogs.com/aoximin/p/12044270...[2023/2/6]

图解B树及C#实现(3)数据的删除

目录前言从叶子节点删除数据从非叶子节点删除数据提前扩充只有 t-1 的 Item 的节点:维持 B树 平衡的核心算法从左兄弟节点借用 Item从右兄弟节点借用 Item与左兄弟节点或者右兄弟节点合并最值的删除代码实现Benchmarks:与 优先队列 PriorityQueue 的比较入队性能出...[2023/2/6]

通过一个示例形象地理解C# async await 非并行异步、并行异步、并行异步的并发量控制

前言 接上一篇 通过一个示例形象地理解C# async await异步 我在 .NET与大数据 中吐槽前同事在双层循环体中(肯定是单线程了)频繁请求es,导致接口的总耗时很长。这不能怪前同事,确实难写,会使代码复杂度增加。 评论区有人说他的理解是使用异步增加了系统吞吐能力,这个理解是正确的,...[2023/2/6]

C# 线程同步查漏补缺

同步构造 当线程 A 在等待一个同步构造,另一个线程 B 持有构造一直不释放,那么就会导致线程 A 阻塞。同步构造有用户模式构造和内核模式构造。 用户模式构造通过 CPU 指令来协调线程,所以速度很快。也意味着不受操作系统控制,所以等待构造的线程会不停自旋,浪费 CPU 时间。 内核模式构造通...[2023/2/3]

C#移除字符串中的不可见Unicode字符

背景 最近发现某个数据采集的系统拿下来的数据,有些字段的JSON被莫名截断了,导致后续数据分析的时候解析JSON失败。 类似这样 {"title": "你好 或者这样,多了个双引号啥的 {"title":""你好"} 因为数据库是Oracle,起初以为是Oracle这老古董出问题了...[2023/2/2]

C# 线程查漏补缺

进程和线程 不同程序执行需要进行调度和独立的内存空间 在单核计算机中,CPU 是独占的,内存是共享的,这时候运行一个程序的时候是没有问题。但是运行多个程序的时候,为了不发生一个程序霸占整个 CPU 不释放的情况(如一个程序死循环无法结束了,那么其他程序就没有机会运行了),就需要开发者给不同程序划...[2023/2/1]

通过一个示例形象地理解C# async await异步

前言 相信大家看过不少讲C# async await的文章,博客园就能搜到很多,但还是有很多C#程序员不明白。 如果搞不明白,其实也不影响使用。但有人就会疑惑,为什么要用异步?我感觉它更慢了,跟同步有啥区别? 有的人研究深入,比如去研究状态机,可能会明白其中的原理。但深入研究的毕竟少数。有的...[2023/2/1]

C#开发PACS医学影像三维重建(十四):基于能量模型算法将曲面牙床展开至二维平面

C#开发PACS医学影像三维重建(十四):基于能量模型算法将曲面牙床展开至二维平面

在医学影像领域中,将三维重建中的人体组织展开平铺至二维,用来研判病灶和制定治疗方案的重要手段之一, 它能够将立体曲面所包含的信息更为直观的展示到二维平面上,常用的情景包括: 牙床全景图、平铺血管、骨骼二维化展开(肋骨平铺)。   众所周知,人体牙床正常情况下是有弧度的,无论是从...[2023/2/1]

1.5万字长文:从 C# 入门 Kafka

目录1, 搭建 Kafka 环境安装 docker-compose单节点 Kafka 的部署Kafka 集群的部署2, Kafka 概念基本概念关于 Kafka 脚本工具主题管理使用 C# 创建分区分区与复制生产者消费者修改配置3, Kafka .NET 基础生产者批量生产使用 Tasks.Wh...[2023/1/30]

C# 托管堆 遭破坏 问题溯源分析

一:背景 1. 讲故事 年前遇到了好几例托管堆被损坏的案例,有些运气好一些,从被破坏的托管堆内存现场能观测出大概是什么问题,但更多的情况下是无法做出准确判断的,原因就在于生成的dump是第二现场,借用之前文章的一张图,大家可以理解一下。 为了帮助更多受此问题困扰的朋友,这篇来整理一下如何 ...[2023/1/30]

C# 10 Lambda 语法的改进

C# 10 包括了对 Lambda 表达式的处理方式的许多改进: Lambda 表达式可以具有自然类型,这使编译器可从 Lambda 表达式或方法组推断委托类型。 如果编译器无法推断返回类型,Lambda 表达式可以声明该类型。 属性可应用于 Lambda 表达式。 这些功能使 Lambd...[2023/1/30]

C#高性能数组拷贝实验

前言 昨天 wc(Wyu_Cnk) 提了个问题 C# 里多维数组拷贝有没有什么比较优雅的写法? 这不是问对人了吗?正好我最近在搞图像处理,要和内存打交道,我一下就想到了在C#里面直接像C/C++一样做内存拷贝。 优雅?no,要的就是装逼,而且性能还要强?? 概念 首先澄清一下 C#...[2023/1/30]

C#中检查null的语法糖,非常实用

c#处理null的几个语法糖,非常实用。(尤其是文末Dictionary那个案例,记得收藏) ?? 如果左边是的null,那么返回右边的操作数,否则就返回左边的操作数,这个在给变量赋予默认值非常好用。 int? a = null; int b = a ?? -1; Console.Writ...[2023/1/28]

C#爬虫开发小结

C#爬虫开发小结

前言 2023年以来一直很忙,临近春节,各种琐事更多,但鸽了太久没写文章总是不舒坦,忙中偷闲来记录下最近用C#写爬虫的一些笔记。 爬虫一般都是用Python来写,生态丰富,动态语言开发速度快,调试也很方便 但是 我要说但是,动态语言也有其局限性,笔者作为老爬虫带师,几乎各种语言都搞过,现在...[2023/1/20]

C#11新特性整理

假期中有时间,整理了C#11的各个新特性,简单分享给大家。 一、使用VSCode新建一个.NET7.0的Console工程 <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputTyp...[2023/1/20]

C#调用js库的方法

前言 用.net6开发一个Winform程序,处理Excel文件,并把结果导出Excel文件。 要用到两个算法,一是turf.js库的booleanPointInPolygon方法,判断经纬度坐标是否在区域内;二是经纬度纠偏算法,因为对方给的区域坐标集合有偏移,需要纠偏。 这两个算法,网上找...[2023/1/18]

8KB的C#贪吃蛇游戏热点答疑和.NET7版本

在之前的一篇文章《看我是如何用C#编写一个小于8KB的贪吃蛇游戏》中,介绍了在.NET Core 3.0的环境下如何将贪吃蛇游戏降低到8KB。不过也有很多小伙伴提出了一些疑问和看法,主要是下面这几个方面: .NET Core 3.0可以做到这么小,那么.NET7表现会不会更好? 不敢在生产中用...[2023/1/16]

看我是如何用C#编写一个小于8KB的贪吃蛇游戏的

译者注:这是Michal Strehovsky大佬的一篇文章,他目前在微软.NET Runtime团队工作,主要是负责.NET NativeAOT功能的开发。我在前几天看到这篇文章,非常喜欢,虽然它的内容稍微有点过时(还是使用的.NET Core 3.0),不过其中的一些编程技巧和思维方式很受...[2023/1/16]

在 C# 9 中使用 foreach 扩展

在 C# 9 中,foreach 循环可以使用扩展方法。在本文中,我们将通过例子回顾 C# 9 中如何扩展 foreach 循环。 代码演示 下面是一个对树形结构进行深度优先遍历的示例代码: using System; using System.Collections....[2023/1/6]

对于async和await的使用方式、作用效果不怎么理解 ?没关系,初步看这篇就够了 - 熊泽-学习中的苦与乐

结论 同步还是异步,区别如下: 同步:你使用 await 修饰符去调用一个异步(async)方法(是异步方法,不过是阻塞式的,可简单理解为同步); 异步:你获取异步方法返回的 Task,就是异步(后文有代码示例); 可以实现多任务执行顺序执行且不阻塞。 概述 a...[2022/12/12]

C#深拷贝方法

概述     为什么要用到深拷贝呢?比如我们建了某个类Person,并且实例化出一个对象,然后,突然需要把这个对象复制一遍,并且复制出来的对象要跟之前的一模一样,来看下我们一般会怎么做。 方法一(利用反射实现) public static T DeepCopy<T&g...[2022/12/12]

使用C# 11的静态接口方法改进 面向约定 的设计

使用C# 11的静态接口方法改进 面向约定 的设计

C# 11带来了一个我期待已久的特性——静态接口方法。我们知道接口是针对契约的定义,但是一直以来它只能定义一组“实例”的契约,而不能定义类型(的静态成员)的契约,因为定义在接口中的方法只能是实例方法。由于缺乏针对“类型契约”的支持,我们在设计一些框架或者类库的时候,只能采用“按照约定”的设计,比...[2022/12/12]

天坑,这样一个lambda随机取数据也有Bug

前几天,一位网友跟我说他编写的一段很简单的代码遇到了奇怪的Bug,他要达到的效果是从一个List中随机取出来一条数据,代码如下: 1 var random = new Random(); 2 var users = Enumerable.Range(0, 10).Select(p =>...[2022/12/12]

图解B树及C#实现(1)

目录前言索引原理局部性(Locality)数据的局部性内存存储和磁盘存储磁盘存储适合的索引结构B树简介定义B树中数据的有序性用C#定义数据结构插入数据的过程分裂:新节点诞生的唯一方式根节点的分裂非根节点的分裂分裂导致树的高度增加提前分裂插入算法实现Key 已存在时的处理策略插入算法总结参考资料 ...[2022/12/12]

C#11新特性-Raw string literals原始字符串研究、示例

这几天看C# 11的新语法,学习到了Raw string literals 今天给大家分享一下: 原始字符串是字符串的一种新格式。 原始字符串可以包含任意文本,包括空格、新行、嵌入引号和其他特殊字符,无需转义字符(这个很关键、也很简单)。 原始字符串以至少三个双引号 (""") 字符开头...[2022/12/12]

重学c#系列——linq(1) [二十七]

前言 简单介绍一下linq,linq很多人其实用的很熟练了,但是有些人不知道自己用的是linq。 正文 在介绍linq 之前,先介绍一下集合。 public interface ICollection<T> : IEnumerable<T>, IEnumerabl...[2022/12/12]

MasaFramework -- 领域驱动设计

概念 什么是领域驱动设计 领域驱动的主要思想是, 利用确定的业务模型来指导业务与应用的设计和实现。主张开发人员与业务人员持续地沟通和模型的持续迭代,从而保证业务模型与代码的一致性,实现有效管理业务的复杂度,优化软件设计的目的 痛点 基于领域驱动设计的模型有很多难点需要克服 统一认知 语...[2022/12/5]

工程坐标转换方法C#代码实现

目录1. 前言2. 计算总体框架3. C#代码实现3.1 整体类的构建3.2 椭球参数赋值3.3 转换1、3(大地经纬度坐标与地心地固坐标的转换)3.4 投影转换3.5 转换2的实现(三参数、七参数)3.6 转换5的实现(四参数+高程拟合)3.7 调用过程3.7.1 一步法3.7.2 两步法4....[2022/12/5]

使用c#的 async/await编写 长时间运行的基于代码的工作流的 持久任务框架

持久任务框架 (DTF) 是基于async/await 工作流执行框架。工作流的解决方案很多,包括Windows Workflow Foundation,BizTalk,Logic Apps, Workflow-Core 和 Elsa-Core。最近我在Dapr 的仓库里跟踪工作流构建块的进展时...[2022/12/2]

使用.NET7和C#11打造最快的序列化程序-以MemoryPack为例

译者注 本文是一篇不可多得的好文,MemoryPack 的作者 neuecc 大佬通过本文解释了他是如何将序列化程序性能提升到极致的;其中从很多方面(可变长度、字符串、集合等)解释了一些性能优化的技巧,值得每一个开发人员学习,特别是框架的开发人员的学习,一定能让大家获益匪浅。 简介 我发布了一...[2022/12/2]

重学c#系列——委托和匿名函数[二十五]

前言 简单介绍一下什么是委托。 正文 以前也写过委托,这次算是重新归档,和新的补充吧。 https: www.cnblogs.com/aoximin/p/13940125.html 有些人说委托是函数指针的包装,也有些人说委托是一个方法或多个方法的引用。 这都是没有问题,委托是一个概念,...[2022/11/28]

147
2
记录数:2472 页数:1/5012345678910下一页尾页
 友情链接: NPS
加载更多