随笔分类 - C#遗忘系列
摘要:最近在看一个同事的代码,代码的本意是在main方法中开启10个线程,用这10个线程来处理一批业务逻辑,在某一时刻当你命令console退出的时候,这个 时候不是立即让console退出,而是需要等待10个线程把检测状态之后的业务逻辑执行完之后再退出,这样做是有道理的,如果强行退出会有可能造成子线程的
阅读全文
摘要:最近在做taobao的一个卖家应用,需要订阅taobao的订单推送,示例代码如下:看到上面的OnMessage场景之后,我突然就鬼使神差的在想最近写的一个服务,其中的一个功能是需要定时的轮询一个集合,这样可以方便的把数据取出来,但是轮训对我来说是被迫的,我急迫需要一种机制对一个集合的数据...
阅读全文
摘要:终于写到终结篇了,整个人像在梦游一样,说完这一篇我得继续写我的js系列啦。一:带索引的对象初始化器 还是按照江湖老规矩,先扒开看看到底是个什么玩意。1 static void Main(string[] args)2 {3 Diction...
阅读全文
摘要:接着上篇继续扯,其实语法糖也不是什么坏事,第一个就是吃不吃随你,第二个就是最好要知道这些糖在底层都做了些什么,不过有一点叫眼见为实,这样才能安心的使用,一口气上五楼,不费劲。一:字符串嵌入值 我想String.Format方法就是化成灰大家都认识,比如下面代码:1 class Bird...
阅读全文
摘要:今天没事,就下了个vs2015 preview,前段时间园子里面也在热炒这些新的语法糖,这里我们就来看看到底都会生成些什么样的IL?一:自动初始化属性 确实这个比之前的版本简化了一下,不过你肯定很好奇,到底编译器给我们做了哪些东西呢?1 class Student2 {3 ...
阅读全文
摘要:这几天太忙没时间写博客,今天回家就简单的看了下ThreadPool的源码,发现有一个好玩的东西,叫做”执行上下文“,拽名叫做:”ExecutionContext“。一:ThreadPool的大概流程。第一步:它会调用底层一个helper方法。第二步:走进这个helper方法,我们会发现有一个队列...
阅读全文
摘要:最近做一个小项目,项目中有一个定时服务,需要向对方定时发送数据,时间间隔是1.5s,然后就想到了用C#的Timer类,我们知道Timer确实非常好用,因为里面有非常人性化的start和stop功能,在Timer里面还有一个Interval,就是用来设置时间间隔,然后时间间隔到了就会触发Elaps...
阅读全文
摘要:说到.net中的并行编程,也许你的第一反应就是Task,确实Task是一个非常灵活的用于并行编程的一个专用类,不可否认越灵活的东西用起来就越复杂,高度封装的东西用起来很简单,但是缺失了灵活性,这篇我们就看看这些好用但灵活性不高的几个并行方法。一:Invoke 现在电子商务的网站都少不了订单的流...
阅读全文
摘要:我记得以前在园子里面讨论这两个类的文章有很多很多,并且还拿出了很多的测试报告,在什么情况下,谁比谁快,在什么情况下,该用谁不该用谁等等这些,我这里就不比较了,我就简单看看他们里面的内部实现,那就先看看String吧。一:String类 说到String类,资料上都说是存在于堆上的一个不可CUR...
阅读全文
摘要:既然说到匿名类型超级实用,得要找到场景来说服一下,如果大家玩过php,里面有一个万能的关联数组array,任你在关联数组array里面怎么写,都可以用json_encode来生成json,非常非常的方便。"hxc","age"=20,"isMale"=>true); //也可以这么写 $...
阅读全文
摘要:在很多家公司面试,也包括在携程,大多都会被问到一些算法的问题,其中机票事业部的面试,基本上算是算法问题的重灾区,没办法,有几个领导喜欢用数据结构来考人家,其中包括一些常见数据结构的复杂度以及手写一些算法,比如快排,单链表等等,前几天我一个推荐过来的朋友膝盖就被中了一箭。 题目就不方便具体说了,...
阅读全文
摘要:好久没过来扯淡了,话说这年头还有偶遇的事情吗?比如国庆回家的汽车上有个妹子要你qq,要你微信,想着法子跟你聊天,然后睡了一觉,醒来发现肾不见了?小花絮小花絮,要是肾真没了,也吹不了牛,败不了火了,继续言归正传。一:扩展方法 说到扩展方法,我想大家都已经再熟悉不过了,也许你的解决方案中有无数个...
阅读全文
摘要:前段时间出了个三级事件,查下来竟然是因为一个溢出造成的死循环,在公司出事件还是挺冒险的一件事,除了大boss要扣钱,还要给高层一个合理的解释,如果在小公司干活,可能就算网站宕了一天估计也没事,如果在大点的公司每秒都是银子的流失,也许造成的损失就算我们白干一二年也抵不了,所以责任心和代码意识真的很...
阅读全文
摘要:众所周知在面试中,经常有些崽子面试官会问些“事件和委托”的关系,也许一路走来的程序员大多都会被问到这个,那么对于这个高频的”事件和委托“问题,如何回击呢?首先我从最经典的一套面试题说起,用事件来实现 “猫爪老鼠“,这是一个从网上copy过来的一个例子。 static void M...
阅读全文
摘要:这段时间忙的像狗一样,写博客的事情也就耽搁了,继续扯,为什么说decimal神奇呢,大家都知道decimal是基元类型,但是这个decimal类型在IL中居然没有相应的IL指令,也就是说CLR根本不认识decimal,全是编译器这一层在糊弄我们。 话不多说,看下最simple的例子,(加了点注...
阅读全文
摘要:构造函数这玩意也是面试官经常会问到的东西,我们知道一个类的状态初始化就全靠它了,下面提几个小问题。Q:我看到Web项目里面通常都有一个BasePage页面,其中构造函数里面做了权限验证, 请问为什么要这么做。A: 既然这么做了,那么设计者肯定就知道了一个原则就是实例构造器中,父类构造器先于子类...
阅读全文
摘要:这篇继续聊聊 ”参数“的一些话题,我们知道参数大概有”默认参数“,”可选参数“,”ref参数“,”out参数“以及”可变参数“。下面提几个小问题,可能在面试中会被问到。Q:请问我按照如下方式传递参数的时候,最后的m等于多少? 1 static void Main(string[]...
阅读全文
摘要:这些天太忙了都没更新博客了,这篇我们继续聊聊“属性”,大家都知道,属性其实分两种,无参属性和有参属性,顾名思义无参属性就是我们平时用到的 “属性”,有参属性就是我们所说的 “索引器”,1 public class Bird2 {3 public int Age ...
阅读全文
摘要:我们在学习C#的时候通常都会多多少少接触ILDasm和Reflector,这两样工具让我们对C#的理解不会只停留在编译器这个层面上,而是让我们更深入的穿透编译器。这篇也是希望对IL和Reflector不是很了解或者懒的了解的同学能够重视起来,同样这篇我还是以QA的形式来告知这两样工具的强大和必...
阅读全文
摘要:首先不可否认,这些在面试上会经常被面试官问起,但是你回答的让面试官满意吗?当然如果你知道了这些原理,或许你就不怕了。既然说到了原理,我们还是从MSDN说起。 一:值得推敲的几个地方1.先来看看msdn上面对const是怎么说的,我们会看到。不能修改,编译时常量这些关键性信息。Q: const为...
阅读全文