摘要: 需求:在多个方法前后输出日志 logger.Info("begin"); method(); logger.Info("end"); 如果需要在方法后输出日志同时加上时长 logger.Info("begin"); var sw= Stopwatch.StartNew(); method(); sw 阅读全文
posted @ 2025-10-28 20:53 Rick Carter 阅读(4) 评论(0) 推荐(0)
摘要: 这个计算是否准备,或者差不多也行,我理解是差不多的 Process.GetCurrentProcess().WorkingSet64 - Gc.GetGCMemoryInfo().HeapSizeBytes 阅读全文
posted @ 2025-10-16 22:58 Rick Carter 阅读(5) 评论(0) 推荐(0)
摘要: 比较水的文章,非常的基础,就当是记录下吧! 1.关于在集合中搜索带来的性能问题,建议用字典(Dictionary) 很多时候需要在一个集合如List中按唯一键查找某个对象,如果用Where扩展方法或者find等方法,是很慢的,特别是大量这样的查找就特别慢。 如果是对集合中的每个数据都要做点什么,那么 阅读全文
posted @ 2025-10-16 22:58 Rick Carter 阅读(126) 评论(1) 推荐(1)
摘要: 这是很早以前遇到的一个问题,觉得说出来有那么一点意义。 有个树形控件,每行前面都有一个复选框,勾选它需要把下级所有的行也都勾上,下级的每行都勾选时还需要给上级也勾选上,存在多级级联。 就上面的功能,勾选框的change事件里需要给下级的勾选框设置相同的checked,导致下级的change事件触发, 阅读全文
posted @ 2025-05-15 21:12 Rick Carter 阅读(59) 评论(0) 推荐(0)
摘要: 1. 问题 环境是dotnet8及以前的版本,dotnet9+不知道是否还有这个问题(我猜是一样的)。 如下代码,在多播委托await异步执行时,不会等待委托方法执行完成,它们在新的线程中运行。 async Task A() { } async Task B() { } Func<Task> fun 阅读全文
posted @ 2025-04-29 21:01 Rick Carter 阅读(279) 评论(2) 推荐(1)
摘要: 本文基于efcore8.0,参考文档。 假设需要重写efcore或者特定数据库的方法的SQL转换,按上面文档及其示例代码,本例中我们大概就是提供下面几个接口的实现。 IMethodCallTranslator IMethodCallTranslatorPlugin IDbContextOptions 阅读全文
posted @ 2025-04-21 22:51 Rick Carter 阅读(206) 评论(0) 推荐(0)
摘要: C#9.0是2020年发布的,record特性还没用上的可以看过来,一起讨论下。 下面通过一个简单的示例演示record带来的好处。 1. 通过一个示例引出问题 public class Person { public string Name { get; set } ... } public cl 阅读全文
posted @ 2025-03-20 22:30 Rick Carter 阅读(265) 评论(0) 推荐(0)
摘要: 如题,当CultureInfo是俄文(ru-RU)时,浮点数中的点是用逗号表达的,如1.1会显示成1,1,造成很多的麻烦,当然如果全系统中全部采纳逗号作为浮点也没问题,只要用户接受就可以,但有时需要继续用点号,那么解决办法如下。 1. 修改DefaultThreadCurrentCulture 我们 阅读全文
posted @ 2025-01-22 17:07 Rick Carter 阅读(136) 评论(1) 推荐(0)
摘要: 如题 hangfire.entityframeworkcore这个库因为System.Threading.Timer未停止也未释放,导致产生大量的Timer一直在执行,占用大量cpu和内存。 https://github.com/sergezhigunov/Hangfire.EntityFramew 阅读全文
posted @ 2024-12-26 20:32 Rick Carter 阅读(29) 评论(0) 推荐(0)
摘要: 1. 问题 达梦dotnet efcore的驱动DM.Microsoft.EntityFreameworkCore。 如果实体中存在DateTimeOffset类型字段时,查询报错:invalid cast from DateTime to DateTimeOffset。 Invalid cast 阅读全文
posted @ 2024-12-14 14:52 Rick Carter 阅读(303) 评论(4) 推荐(3)
摘要: 达梦数据库的DOTNET驱动DM.Provider,这个版本8.3.1.30495有bug,会把空字符串改成DBNull处理,反编译代码发现Dm.DmSetValue.SetString方法中判断字符串长度==0就设置成DBNull。 解决办法就是 降低版本到8.3.1.28188。 // Dm.D 阅读全文
posted @ 2024-12-13 11:54 Rick Carter 阅读(122) 评论(0) 推荐(1)
摘要: 工作中经常遇到性能问题,包括cpu和内存占用高等问题,还有经常想监控当前程序运行情况,如代码运行频次、耗时、占用cpu和内存情况等。基本都是要从dump等诊断工具或者日志去分析,操作麻烦。 今年初就思考是否可以做这样的一个更加方便的工具,可以线上实时分析诊断dotnet程序,并给出结果或者建议,也可 阅读全文
posted @ 2024-11-28 16:02 Rick Carter 阅读(240) 评论(3) 推荐(3)
摘要: 问题 Abp vNext框架,后台服务使用IStringLocalizer获得翻译时,与设置的“Abp.Localization.DefaultLanguage”不一致,一直是按服务器的本地语言来的。 分析 Abp中重写了IStringLocalizer,Abp源码简化如下。 public clas 阅读全文
posted @ 2024-11-27 21:55 Rick Carter 阅读(136) 评论(0) 推荐(0)
摘要: 上个文章介绍了动态LINQ库。 然后动态造了一个查询,示例如下: //ctx是EF的DbContext,字段Value是字符串类型 await ctx.Tables.Where("As(Value,\"DateTime?\")>@0",datetime).ToListAsync(); 上面的查询条件 阅读全文
posted @ 2024-11-27 21:54 Rick Carter 阅读(1995) 评论(0) 推荐(1)
摘要: dynamic-linq.net,这个库大家都用过,简单说就是使用字符串编写查询表达式的,非常强大,因为字符串是可以运行时拼接的,所以就可以在运行时动态的构造查询,非常适合框架开发和需要灵活性的场景。 我用它解决了在原生代码非常困难且耗时(需要动态构造表达式)的功能,真正的直达痛点。 它dotnet 阅读全文
posted @ 2024-11-22 21:56 Rick Carter 阅读(703) 评论(0) 推荐(0)