随笔分类 -  [07]探索c#系列

摘要:阅读目录:概述算法介绍清理线程获取、插入、删除总结概述最近在看storm,发现其中的TimeCacheMap算法设计颇为高效,就简单分享介绍下。 思考一下如果需要一个带过期淘汰的缓存容器,我们通常会使用定时器或线程去扫描容器,以便判断是否过期从而删除。但这样性能并不友好,在数据量较大时O(n)检查是... 阅读全文
posted @ 2015-09-14 08:32 蘑菇先生 阅读(2870) 评论(2) 推荐(1) 编辑
摘要:把静态成员导入,但扩展方法比较特殊、排除在外。这时static是c# 6.0的新功能。 等同于把扩展方法的命名空间导入,所以在集合上可以打点可以调扩展方法。这是之前就有的功能,而不是把扩展方法转成成单纯的静态方法导入使用。 阅读全文
posted @ 2015-07-22 08:29 蘑菇先生 阅读(26348) 评论(62) 推荐(68) 编辑
摘要:举个例子,楼主逛完街要回张江玉兰香苑,如果从人民广场做公交车回去,要经历非常多站: 阅读全文
posted @ 2015-06-28 16:25 蘑菇先生 阅读(6387) 评论(1) 推荐(7) 编辑
摘要:Async,主线程A逻辑->异步任务线程B逻辑->主线程C逻辑。 注意:这3个步骤是有可能会使用同一个线程的,也可能会使用2个,甚至3个线程。 1. net4.5的async,抛去语法糖就是Net4.0的Task+状态机。 2. net4.0的Task, 退化到3.5即是(Thread、ThreadPool)+实现的等待、取消等API操作。 阅读全文
posted @ 2015-06-15 08:35 蘑菇先生 阅读(73217) 评论(21) 推荐(41) 编辑
摘要:提高缓存命中率,使用计数改进Bloom filter。 阅读全文
posted @ 2015-06-06 18:06 蘑菇先生 阅读(8191) 评论(2) 推荐(3) 编辑
摘要:阅读目录背景虚拟桶(virtual buckets)实现总结背景关于数据分片讨论最多的是一致性hash,然而它并不是分布式设计中的银弹百试百灵。 在数据稳定性要求比较高的场景下它的缺点是不能容忍的。比如在Redis分布式缓存设计中,使用一致性Hash进行key分片存储,通过虚拟节点最大化降低添加或删... 阅读全文
posted @ 2015-05-31 22:01 蘑菇先生 阅读(3848) 评论(2) 推荐(3) 编辑
摘要:MapReduce近几年比较热的分布式计算编程模型,以C#为例简单介绍下MapReduce分布式计算。阅读目录背景 Map实现 Reduce实现支持分布式总结背景某平行世界程序猿小张接到Boss一项任务,统计用户反馈内容中的单词出现次数,以便分析用户主要习惯。文本如下: const s... 阅读全文
posted @ 2015-05-22 01:06 蘑菇先生 阅读(8274) 评论(10) 推荐(10) 编辑
摘要:阅读目录:使用场景算法原理虚拟节点代码示例使用场景以Redis为例,当系统需要缓存的内容超过单机内存大小时,例如要缓存100G数据,单机内存仅有16G时。这时候就需要考虑进行缓存数据分片,也即是把100G的数据拆分成多块小于单机内存的数据。例如以10G为单位,拆分10份,存储到多台机器节点上。 但是... 阅读全文
posted @ 2015-05-04 08:40 蘑菇先生 阅读(11352) 评论(4) 推荐(10) 编辑
摘要:接上篇探索c#之尾递归编译器优化累加器传递模式(APS)CPS函数CPS变换CPS尾递归总结累加器传递模式(Accumulator passing style)尾递归优化在于使堆栈可以不用保存上一次的返回地址/状态值,从而把递归函数当成一个普通的函数调用。递归实际上是依赖上次的值,去求下次的值。 如... 阅读全文
posted @ 2015-04-06 16:55 蘑菇先生 阅读(2116) 评论(1) 推荐(1) 编辑
摘要:1、探索c#之函数创建和闭包2、探索c#之尾递归编译器优化3、探索c#之不可变数据类型4、 探索c#之递归APS和CPS5、探索c#之一致性Hash详解6、探索c#之微型MapReduce7、探索c#之虚拟桶分片8、探索c#之布隆过滤器(Bloom filter)9、探索c#之Async、Await... 阅读全文
posted @ 2015-03-29 11:48 蘑菇先生 阅读(3017) 评论(0) 推荐(3) 编辑
摘要:阅读目录:不可变对象自定义不可变集合Net提供的不可变集合不可变优点不可变对象缺点不可变对象不可变(immutable): 即对象一旦被创建初始化后,它们的值就不能被改变,之后的每次改变都会产生一个新对象。var str="mushroomsir";str.Substring(0, 6)c#中的st... 阅读全文
posted @ 2015-03-28 14:44 蘑菇先生 阅读(6441) 评论(1) 推荐(6) 编辑
摘要:C#/64位/Release是有JIT编译器进行尾递归优化的(非C#编译器优化)。 C#/32位或C#/Debug模式中JIT是不进行优化的。 简单的尾递归优化成while循环, 复杂的尾递归,F#编译会生成IL指令Tail进行优化 阅读全文
posted @ 2015-03-16 09:07 蘑菇先生 阅读(5226) 评论(4) 推荐(7) 编辑
摘要:阅读目录:动态创建函数匿名函数不足之处理解c#中的闭包闭包的优点动态创建函数大多数同学,都或多或少的使用过。回顾下c#中动态创建函数的进化:C# 1.0中: public delegate string DynamicFunction(string name); public static Dy... 阅读全文
posted @ 2015-02-27 08:47 蘑菇先生 阅读(5833) 评论(5) 推荐(5) 编辑

点击右上角即可分享
微信分享提示