随笔分类 -  C#遗忘系列

摘要:一:背景 1. 讲故事 前几天在调试物联柜终端上的一个bug时发现 app.config 中的数据库连接串是加密的,因为调试中要切换数据库,我需要将密文放到专门的小工具上解密,改完连接串上的数据库名,还得再加密贴到 app.config 中,烦的要死,内容如下: <appSettings> <!-- 阅读全文
posted @ 2020-08-12 09:57 一线码农 阅读(4905) 评论(19) 推荐(34)
摘要:一:背景 1. 讲故事 前几天公司一个妹子问我,事件和委托有什么区别? 先由衷感叹一下,编码十余年,年轻的时候常被面试官问起,现在年长了,却被后辈们时常问候,看样子逃离编码生涯之前是跑不掉了,不过奇怪的是,这个问题被问起的时候,我发现有很多人用: 事件是一种特殊的委托 来进行总结,是不是挺有意思,我 阅读全文
posted @ 2020-08-10 09:18 一线码农 阅读(4616) 评论(25) 推荐(22)
摘要:一:背景 1. 讲故事 前几天看公司一个新项目的底层使用了dapper,大家都知道dapper是一个非常强大的半自动化orm,帮程序员解决了繁琐的mapping问题,用起来非常爽,但我还是遇到了一件非常不爽的事情,如下代码所示: public class UserDAL : BaseDAL { pu 阅读全文
posted @ 2020-08-05 12:16 一线码农 阅读(7344) 评论(31) 推荐(23)
摘要:一:背景 1. 讲故事 前段时间和一家公司联调api接口的时候,发现一个奇葩的问题,它的api返回的json会动态改变,简化如下: {"Code":101,"Items":[{"OrderTitle":"订单1"}]} {"Code":102,"Items":[{"ProductTitle":"商品 阅读全文
posted @ 2020-08-03 09:34 一线码农 阅读(5928) 评论(45) 推荐(24)
摘要:一:背景 1. 讲故事 最近因为各方面原因换了一份工作,去了一家主营物联柜的公司,有意思的是物联柜上的终端是用 wpf 写的,代码也算是年久失修,感觉技术债还是蛮重的,前几天在调试一个bug的时候,看到了一段类似这样的代码: var dt = new DataTable(); SqlDataAdap 阅读全文
posted @ 2020-07-22 09:46 一线码农 阅读(2071) 评论(2) 推荐(4)
摘要:一:背景 1. 讲故事 .NET 5 终于在 6月25日 发布了第六个预览版,随之而来的是更多的新特性加入到了 C# 9 Preview 中,这个系列也可以继续往下写了,废话不多说,今天来看一下 Top-level programs 和 Extending Partial Methods 两大新特性 阅读全文
posted @ 2020-06-27 11:52 一线码农 阅读(2181) 评论(3) 推荐(11)
摘要:一:背景 1. 讲故事 最近同事在写一段业务逻辑的时候,程序跑起来总是报:集合已修改;可能无法执行枚举操作,硬是没有找到什么情况下会导致这个异常产生,就让我来找一下bug,其实这个异常在座的每个程序员几乎都遇到过,谁也不是一生下就是大牛,简单看了下代码,确实是多线程操作foreach,但并没有对fo 阅读全文
posted @ 2020-06-15 07:49 一线码农 阅读(5905) 评论(30) 推荐(36)
摘要:一:背景 1. 讲故事 上一篇跟大家聊到了Target-typed new 和 Lambda discard parameters,看博客园和公号里的阅读量都达到了新高,甚是欣慰,不管大家对新特性是多头还是空头,起码还是对它抱有一种极为关注的态度,所以我的这个系列还得跟,那就继续开撸吧,今天继续带来 阅读全文
posted @ 2020-06-13 09:31 一线码农 阅读(4943) 评论(13) 推荐(12)
摘要:一:背景 1. 讲故事 好消息,.NET 5.0 终于在2020年6月10日发布了第五个预览版,眼尖的同学一定看到了在这个版本中终于支持了 C# 9.0,此处有掌声,太好了!!! .Net5官方链接 可以看到目前的C#9还是预览版,实现了一部分新语法供开发者提前尝鲜,从github的roslyn仓库 阅读全文
posted @ 2020-06-12 07:00 一线码农 阅读(13784) 评论(68) 推荐(50)
摘要:一:背景 1. 讲故事 最近也是奇怪,在社区里看到好几篇文章聊static的玩法以及怎么拿这个和面试官扯半个小时,有点意思,点进去看都是java版的,这就没意思了,怎么也得有一篇和面试官扯C#中的 static用法撒,既然没有人开这个头,那我就献丑了。。。,下面以QA的方式记述,大家可以代入一下能回 阅读全文
posted @ 2020-06-07 08:51 一线码农 阅读(1913) 评论(11) 推荐(7)
摘要:一:背景 1. 讲故事 在我们的一个全内存项目中,需要将一家大品牌店铺小千万的trade灌入到内存中,大家知道trade中一般会有订单来源,省市区 ,当把这些字段灌进去后,你会发现他们特别侵蚀内存,因为都是字符串类型,不知道大家对内存侵蚀性是不是很清楚,我就问一个问题。 Question: 一个空字 阅读全文
posted @ 2020-06-04 08:31 一线码农 阅读(5592) 评论(27) 推荐(29)
摘要:一:背景 1. 讲故事 曾今在项目中发现有同事自定义结构体的时候,居然没有重写Equals方法,比如下面这段代码: static void Main(string[] args) { var list = Enumerable.Range(0, 1000).Select(m => new Point 阅读全文
posted @ 2020-05-31 08:39 一线码农 阅读(2968) 评论(8) 推荐(20)
摘要:一:背景 1. 讲故事 如果你常翻看FCL的源码,你会发现这里面有不少方法借助了C/C++的力量让C#更快更强悍,如下所示: [DllImport("QCall", CharSet = CharSet.Unicode)] [SecurityCritical] [SuppressUnmanagedCo 阅读全文
posted @ 2020-05-29 08:21 一线码农 阅读(6035) 评论(20) 推荐(31)
摘要:一:背景 1. 讲故事 去年阿里聚石塔上的所有isv短信通道全部对接阿里通信,我们就做了对接改造,使用阿里提供的.net sdk。 网址:https://help.aliyun.com/document_detail/114480.html 同事当时使用的是ons-.net v1.1.3版本,程序上 阅读全文
posted @ 2020-05-26 17:07 一线码农 阅读(3773) 评论(28) 推荐(24)
摘要:一:背景 1. 讲故事 在前一篇大内存排查中,我们看到了Dictionary正在做扩容操作,当时这个字典的count=251w,你把字典玩的66飞起,其实都是底层为你负重前行,比如其中的扩容机制,当你遇到几百万甚至千万的大集合这个扩容机制还真的需要挖一下,免的入戏太深,难以自拔。 为了方便讲述,我准 阅读全文
posted @ 2020-05-25 07:56 一线码农 阅读(13204) 评论(13) 推荐(19)
摘要:一:背景 1. 讲故事 前天写了一篇大内存排查在园子里挺火,这是做自媒体最开心的事拉,干脆再来一篇满足大家胃口,上个月我写了一篇博客提到过使用 对原来的 进行高强度压缩,将原来的List内存压缩了将近106倍,但是bitmap不是一味的好,你必须在正确的场景中使用,而不是闭着眼睛滥用,bitmap在 阅读全文
posted @ 2020-05-22 07:53 一线码农 阅读(3180) 评论(14) 推荐(13)
摘要:一:背景 1. 讲故事 昨天继续还技术债,优化一轮后的程序拉到线上后内存继续忽高忽低,低的时候20G,高的时候30G,过了一会又下降了几个G,毫无疑问,程序中有什么集合或者什么操作占用了大量内存,所以准备在28,29G的时候抓dump分析分析。 二:解决思路 从快照中找问题就像看病一样,根据病象推测 阅读全文
posted @ 2020-05-20 18:17 一线码农 阅读(4327) 评论(30) 推荐(53)
摘要:一:背景 1. 讲故事 高级语言玩多了,可能很多人对指针或者汇编都淡忘了,本篇就和大家聊一聊指针,虽然C 中是不提倡使用的,但你能说指针在C 中不重要吗?你要知道FCL内库中大量的使用指针,如 等等数不胜数,如例代码: 对,你觉得的美好世界,其实都是别人帮你负重前行,退一步说,指针的理解和不理解,对 阅读全文
posted @ 2020-05-16 09:54 一线码农 阅读(1552) 评论(7) 推荐(5)
摘要:一:背景 1. 讲故事 下决心做好自媒体到现在有一个月了,关注我的兄弟应该知道我产出了不少文章,号里的粉丝也多起来了,我也尽最大努力做到有问必回,现在是基础的、高深的问题都接踵而来,可我也只是一只小菜鸟,想飞也飞不动了(┬_┬),昨天号里有位朋友被面试官问到可空类型的原理,回答的不好,面试官也是,面 阅读全文
posted @ 2020-05-14 08:44 一线码农 阅读(2123) 评论(10) 推荐(12)
摘要:一:背景 1. 讲故事 在项目中摸爬滚打几年,应该或多或少的见过有人把异常当做业务逻辑处理的情况(┬_┬),比如说判断一个数字是否为整数,就想当然的用try catch 包起来,再进行 int.Parse,如果抛异常就说明不是整数,简单粗暴,也不需要写正则或者其他逻辑,再比如一个字符串强制转化为En 阅读全文
posted @ 2020-05-11 07:30 一线码农 阅读(29370) 评论(77) 推荐(135)