自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一线码农的专栏

阴沉的黑夜都是白天的前奏

  • 博客(9)
  • 收藏
  • 关注

原创 linq 查询的结果会开辟新的内存吗?

一:背景1. 讲故事昨天群里有位朋友问:linq 查询的结果会开辟新的内存吗?如果开了,那是对原序列集里面元素的深拷贝还是仅仅拷贝其引用?其实这个问题我觉得问的挺好,很多初学 C# 的朋友或多或少都有这样的疑问,甚至有 3,4 年工作经验的朋友可能都不是很清楚,这就导致在写代码的时候总是会畏手畏脚,还会莫名的揪心这样玩的话内存会不会暴涨暴跌,这一篇我就用 windbg 来帮助朋友彻底分析一下。二:寻找答案1. 一个小案例这位老弟提到了是深拷贝还是浅拷贝,本意就是想问: linq 一个引用类

2020-11-26 13:28:06 176

原创 被 C# 的 ThreadStatic 标记的静态变量,都存放在哪里了?

一:背景1. 讲故事前几天公号里有一位朋友留言说,你windbg玩的溜,能帮我分析下被 ThreadStatic 修饰的变量到底存放在哪里吗?能不能帮我挖出来????????????,其实这个问题问的挺深的,玩高级语言的朋友相信很少有接触到这个的,虽然很多朋友都知道这个特性怎么用,当然我也没特别研究这个,既然要回答这个问题,我得研究研究回答之!为了更好的普适性,先从简单的说起!二:ThreadStatic 的用法1. 普通的 static 变量相信很多朋友在代码中都使用过 static 变量,它的

2020-11-23 12:13:39 415

原创 如何剔掉 sql 语句中的尾巴,我用 C# 苦思了五种办法

一:背景1. 讲故事这几天都在修复bug真的太忙了,期间也遇到了一个挺有趣bug,和大家分享一下,这是一块sql挺复杂的报表相关业务,不知道哪一位大佬在错综复杂的 嵌套 + 平行 if判断中sql拼接在某些UI组合下出问题了,最终的 sql 架构类似这样的。 var sql = "select 1 union all select 2 union all select 3 union all";这种sql到数据库去肯定是报错的,有些朋友可能想说这还不简单,在相关的 if 判

2020-11-21 14:07:07 7372

原创 客户的一个紧急bug,我用了两种方式进行 C# 反编译修改源码

一:背景1. 讲故事周五下午运营反馈了一个紧急bug,说客户那边一个信息列表打不开,急需解决,附带的日志文件也发过来了,看了下日志大概是这样的:日期:2020-11-13 12:25:45,923 线程ID:[3924] 日志级别:INFO 错误类:xxx property:[(null)] - 错误描述:应用程序出现了未捕获的异常,Message:该字符串未被识别为有效的 DateTime。; StackTrace: 在 System.DateTimeParse.Parse(String

2020-11-17 12:26:06 587

原创 C# Span 源码解读和应用实践

一:背景1. 讲故事这两天工作上太忙没有及时持续的文章产出,和大家说声抱歉,前几天群里一个朋友在问什么时候可以产出 Span 的下一篇,哈哈,这就来啦!读过上一篇的朋友应该都知道 Span 统一了 .NET 程序 栈 + 托管 + 非托管 实现了三大块内存的统一访问,????????,而且在 .net 底层 Library 中也是一等公民的存在,很多现有的类都提供了对 Span / ReadOnlySpan 的支持。String 对 Span / ReadOnlySpan 的支持 pub

2020-11-13 12:20:33 905

原创 一个 Task 不够,又来一个 ValueTask ,真的学懵了!

一:背景1. 讲故事前几天在项目中用 MemoryStream 的时候意外发现 ReadAsync 方法多了一个返回 ValueTask 的重载,真是日了狗了,一个 Task 已经够学了,又来一个 ValueTask,晕,方法签名如下: public class MemoryStream : Stream { public override ValueTask<int> ReadAsync(Memory<byte> buffer, Cancell

2020-11-10 09:32:40 603

原创 C# 中的 ref 已经被放开,或许你已经不认识了

一:背景1. 讲故事最近在翻 netcore 源码看,发现框架中有不少的代码都被 ref 给修饰了,我去,这还是我认识的 ref 吗?就拿 Span 来说,代码如下: public readonly ref struct Span<T> { public ref T GetPinnableReference() { ref T result = ref Unsafe.AsRef<T>(null);

2020-11-07 09:21:19 226

原创 一路踩坑,被迫聊聊 C# 代码调试技巧和远程调试

一:背景1. 讲故事每次项目预交付的时候,总会遇到各种奇葩的坑,我觉得有必要梳理一下以及如何快速解决的,让后来人避避坑,这篇就聊聊自己的所闻所遇:我去,本地环境代码跑的哧溜,上了测试环境出问题我去, 第三方提供的 dll 跑出 bug 了二:两个大坑的解决方案1. 本地环境没问题,上了测试出问题相信很多朋友都有我这样类似的遭遇,明明程序代码,配置文件都一样,挪了一个窝就出问题,你说气人不,既然问题出了那怎么快速解决呢? 对,就是用调试,但程序部署在 centos 上,送一个 visuals

2020-11-04 09:45:20 430

原创 把 Console 部署成 Windows 服务,四种方式总有一款适合你!

一:背景1. 讲故事上周有一个项目交付,因为是医院级项目需要在客户的局域网独立部署。 程序: netcore 2.0,操作系统: windows server 2012,坑爹的事情就来了, netcore sdk 一直装不上,网上找了资料说需要先安装 Visual C++ Redistributable for Visual Studio 2015, 开开心心下载下来又是安装失败,再次找资料说要打一堆 系统补丁,搞了一天!!!????????????环境总算是装好了,因为是 Console 服务程序,

2020-11-02 09:55:51 1083

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除