随笔分类 -  C#

摘要:接上一篇:C#性能优化基础:内存诊断(dump) 内存说完了,另外一个C#性能优化需要关注的点就是高CPU使用率了,所谓高CPU使用率,其实就是程序在执行大量的计算,这些计算也许是正常的,也可能是异常,比如死循环、多线程密集型执行、大量的并发锁等,这就需要我们能排查这样的问题了。 假如我们有如下代码 阅读全文
posted @ 2025-11-16 16:09 没有星星的夏季 阅读(27) 评论(0) 推荐(0)
摘要:接上一篇:C#性能优化基础:垃圾回收机制 本文说下怎么去查找内存问题,举个例子,我们有这样的一段程序: namespace ConsoleApp1 { internal class Program { static List<Demo> Demos { get; } = new List<Demo> 阅读全文
posted @ 2025-10-09 18:42 没有星星的夏季 阅读(93) 评论(0) 推荐(0)
摘要:相信很多C#开发者都没有关注过内存问题,毕竟我们有垃圾自动回收机制,不用像C/C++那样,需要手动去释放。 其实关于内存是自动还是手动回收释放,一直也是有争议的,像C/C++这样的开发者认为,内存这么珍贵,就应该让人去操作,怎么能让没有思维的机器去操作呢,而支持垃圾自动回收的开发者者认为,就是因为内 阅读全文
posted @ 2025-09-26 20:10 没有星星的夏季 阅读(58) 评论(0) 推荐(0)
摘要:很多公司电脑都是windows,而对用户的管理则很多采用AD域的形式来管理,本文简单的来介绍一下.NetCore中怎么接入AD域来实现登录等操作。 首先,我这里使用的是.net6,其它版本类似。 其次,这里假设你已经对AD域有了基本的了解,比如AD域所使用的LDAP、属性等,如果不了解先自行百度下。 阅读全文
posted @ 2024-09-26 19:14 没有星星的夏季 阅读(944) 评论(0) 推荐(0)
摘要:PostgreSQ作为开源免费的数据库,现在正在火热的占据市场,它衍生产品,比如GaussDB在国产化替代中使用比较多,然而它们或多或少存在一个兼容问题,或者说是版本之间的问题,所以这里记录几个在使用过程中碰到的问题,做个笔记,后续有新的问题就再记录。 问题一:0A000: DISCARD stat 阅读全文
posted @ 2024-07-22 17:56 没有星星的夏季 阅读(1151) 评论(0) 推荐(1)
摘要:现在B/S开发基本都是前后端分离的方式了吧,那么这往往会涉及到一个跨域的问题,为了安全,跨域访问往往做了很多的限制,这里对跨域时自定义响应头做个笔记。 当我们在.NetCore的后端给请求添加了一个自定义的响应头的时候,通过api调用,响应头完美的返回: public class HomeContr 阅读全文
posted @ 2024-04-09 15:10 没有星星的夏季 阅读(232) 评论(0) 推荐(0)
摘要:我们知道,.net core内置了IOC容器,通常,一个服务的生命周期有三种:Transient、Scoped、Singleton Transient:临时性的服务,当进行服务注入时,每次都是重新创建一个新的对象实例 Scoped:范围性的服务,当在一个范围内进行服务注入时,保证使用同一个实例对象( 阅读全文
posted @ 2024-02-28 14:12 没有星星的夏季 阅读(812) 评论(0) 推荐(0)
摘要:接上一篇,上一篇说道.NetCore上使用Ftp的一些建议,主要是希望我们的应用对Ftp不要形成强依赖,因为我们还有其他的替代方案,比如Cifs/Smb 本文给出我自己封装使用的两个辅助类,基础功能类似(代码运行环境.Net6) CifsClient 第一个辅助类是基于包SharpCifs.Std, 阅读全文
posted @ 2024-01-06 12:47 没有星星的夏季 阅读(2906) 评论(0) 推荐(1)
摘要:上一篇说道C#使用FluentFTP来简单的连接使用Ftp,本篇是个人在.NetCore中使用Ftp的建议(可能有点啰嗦): 1、为Ftp的配置创建基类 在开发过程中,我们如果要使用Ftp,往往需要这几个信息: Host:Ftp地址 Port:端口号 User:用户名 Password:密码 Wor 阅读全文
posted @ 2023-12-30 19:03 没有星星的夏季 阅读(1723) 评论(0) 推荐(1)
摘要:作为一个.net开发这,说到C#连接使用Ftp,我就想到了很早之前的使用WebRequest来连接的方式,比如下载: FtpWebRequest req = (FtpWebRequest)WebRequest.Create(new Uri("192.168.0.0:21/RootPath")); r 阅读全文
posted @ 2023-11-26 15:54 没有星星的夏季 阅读(8320) 评论(8) 推荐(2)
摘要:using一般有两个作用: 1、作为语句,用于定义一个范围,在此范围的末尾将释放对象(IDisposable和IAsyncDisposable接口) 2、作为指令,用于引入命名空间或者类型,或者为引入的命名空间或者类型定义别名 using语句 using语句应该都很熟悉了吧,从最早的ADO.net, 阅读全文
posted @ 2023-06-29 13:34 没有星星的夏季 阅读(3323) 评论(0) 推荐(0)
摘要:元组 元组提供了一种轻量级的方式,允许我们从一个方法中返回多个数据,而不需要自定义类或者使用out、ref等关键字,如: public Tuple<int, string> GetTuple() { return new Tuple<int, string>(200, "OK"); } 上面是C#7 阅读全文
posted @ 2023-03-30 18:46 没有星星的夏季 阅读(1159) 评论(0) 推荐(0)
摘要:接前上一篇:平台调用 (P/Invoke):DllImport特性说明 首先,我们知道C#和C/C++都是跨平台的,但是原理上他们是不一样的: C#首先编译成一种中间语言(IL)的程序集,然后将这种程序集放到不同平台下的解释器里面去执行,这就是说一次编译到处运行 C/C++是针对不同的平台直接编译, 阅读全文
posted @ 2023-02-20 18:05 没有星星的夏季 阅读(874) 评论(4) 推荐(1)
摘要:接上一篇:平台调用 (P/Invoke):托管代码(C#)调用非托管代码(C/C++) 上一篇实现了C#代码以三种方式调用C/C++的非托管代码,核心是DllImportAttribute特性的使用 DllImportAttribute指示某个静态方法的入口在非托管动态链接库中 用我们面向对象的思想 阅读全文
posted @ 2023-01-30 16:42 没有星星的夏季 阅读(852) 评论(0) 推荐(1)
摘要:首先,本文基于.net6来实现C#代码来调用C/C++程序(VS2022),主要从三个角度来说明:简单的调用实现、自定义类和结构体、回调函数。 其次,C#调用C/C++一般是通过调用C/C++的动态连接库来实现的,而windows和linux、macos下的动态链接库是有区别的,后面再说,所以本文以 阅读全文
posted @ 2022-12-25 20:18 没有星星的夏季 阅读(1505) 评论(0) 推荐(1)
摘要:从C#7.0开始,推出了一种新的特性:弃元,这种思想可能来源于Golang。 弃元,就是不想要了的元素变量,用单下划线(_)表示,弃元在编译时起作用,就是搞编译器:这个变量我不要,你可以优化处理。 我们经常在下面几个过程中使用弃元: 1、元组解构赋值 在使用元组解构赋值时,我们往往需要接收元组的所有 阅读全文
posted @ 2022-11-01 18:23 没有星星的夏季 阅读(1329) 评论(2) 推荐(1)
摘要:C#从7.0开始,陆陆续续推出了各种模式匹配,模式是一种特殊的表达式,通过判断给定的值是否满足此表达式而返回true或者false,它就类似于正则表达式的作用。 目前(C#10),可以使用模式匹配的地方有三个: 1、is表达式,从C#7.0开始,is表达式的右边不在只是一个类型,而是一个模式,具体例 阅读全文
posted @ 2022-11-01 18:18 没有星星的夏季 阅读(1497) 评论(0) 推荐(4)
摘要:switch-case语句经常被认为是if-else语句的替代品,但是在众多程序语言中还是能见到switch的存在,这很大程度上是因为switch更实用,这一点在C#中更能提现。 简单的语法就不说了,一个简单的switch用法: switch (cmd) { case "start": Consol 阅读全文
posted @ 2022-10-31 20:03 没有星星的夏季 阅读(5809) 评论(1) 推荐(5)
摘要:is运算符 is在C#7.0之前,主要用于检验实例是否是指定的类型,格式: expr is type expr是一个具有值的表达式,type是一个类型。 从C#7.0开始,is表达式将使用模式匹配来操作,格式: expr is pattern expr是一个具有值的表达式,pattern是模式匹配, 阅读全文
posted @ 2022-10-31 20:03 没有星星的夏季 阅读(1191) 评论(0) 推荐(0)
摘要:委托 .NET团队之初想要实现一种用于任何后期绑定算法的引用类型,也就是想要一种可用于对方法引用的一种结构,同时又希望它能支持单播和多播,于是委托诞生了。 多播指的将多个方法调用链接在一起调用,就像一个列表一样 单播指的是单一方法的调用,其实可以认为单播是多播的一种特例 委托是.NET 1.0版本的 阅读全文
posted @ 2022-08-26 20:19 没有星星的夏季 阅读(3491) 评论(0) 推荐(1)