摘要:Dictionary<TKey,TValue>是日常.net开发中最常用的数据类型之一,基本上遇到键值对类型的数据时第一反应就是使用这种散列表。散列表特别适合快速查找操作,查找的效率是常数阶O(1)。那么为什么这种数据类型的查找效率能够这么高效?它背后的数据类型是如何支撑这种查找效率的?它在使用过程 阅读全文
posted @ 2020-06-28 11:17 hkant 阅读(1682) 评论(8) 推荐(19) 编辑
摘要:一 概要 二进制序列化是公司内部自研微服务框架的主要的数据传输处理方式,但是普通的开发人员对于二进制的学习和了解并不深入,容易导致使用过程中出现了问题却没有分析解决的思路。本文从一次生产环境的事故引入这个话题,通过对于事故的分析过程,探讨了平时没有关注到的一些技术要点。二进制序列化结果并不像Json 阅读全文
posted @ 2019-07-01 23:33 hkant 阅读(7056) 评论(17) 推荐(15) 编辑
摘要:MemoryCache是.Net Framework 4.0开始提供的内存缓存类,使用该类型可以方便的在程序内部缓存数据并对于数据的有效性进行方便的管理,借助该类型可以实现ASP.NET中常用的Cache类的相似功能,并且可以适应更加丰富的使用场景。在使用MemoryCache时常常有各种疑问,数据是怎么组织的?有没有可能用更高效的组织和使用方式?数据超时如何控制?为了够知其所以然,本文中对于MemoryCache的原理和实现方式进行了深入分析,同时在分析的过程中学习到了许多业界成熟组件的设计思想,为今后的工作打开了更加开阔的思路 阅读全文
posted @ 2018-06-11 15:05 hkant 阅读(13600) 评论(7) 推荐(18) 编辑
摘要:Nuget快捷实践 简介 本文主要包含三个部分,即创建nuget包、上传nuget包和删除nuget包。旨在引导快速使用nuget打包和使用,并实现对于nuget的简单管理。 本文使用的nuget服务是基于自行搭建的nuget server v3.0.0.0。具体搭建方法可以参考nuget官方的 " 阅读全文
posted @ 2018-03-04 18:44 hkant 阅读(335) 评论(1) 推荐(2) 编辑
摘要:基于多级缓存的充电系统优化实践 原文是发表在文章中,刚看了下文章主要用于转载,因此在随笔中重新发布一下。 摘要 正如前文中《海量并发下充电业务优化实践》所述,在充电过程中由于涉及到大量的实时数据处理,随着设备规模的扩大,各个节点和服务均感受到较大的压力。为了解决这个情况,文中探讨内存缓存组件的使用及 阅读全文
posted @ 2018-03-04 18:41 hkant 阅读(548) 评论(0) 推荐(0) 编辑
摘要:在处理实时数据的过程中需要缓存的参与,由于在更新实时数据时并发处理的特点,因此在更新实时数据时经常产生新老数据相互覆盖的情况,针对这个情况调查了Redis事务和Lua脚本后,发现Redis事务并不能很好的满足该场景的业务需要,必须借助Lua脚本执行原子化的操作才能在理论上解决数据更新的准确性问题。 阅读全文
posted @ 2017-11-03 14:17 hkant 阅读(546) 评论(1) 推荐(0) 编辑
摘要:目前在进行充电业务开发时,面对的是充电终端上报的海量并发数据。访问缓存的TPM可达120w,访问数据库的TPM在3w左右,高峰时段面对的是近二十万终端上传的百万条并发的实时数据。在这样的场景下有些无伤大雅的小漏洞最终酿成了生产环境的大问题,正所谓千里之堤毁于蚁穴,面对这样的场景,必须深入理解系统所使用的技术并对于常见问题有必备运维经验和分析能力。本文针对这些问题及解决过程进行分析,总结过往,以飨未来。 阅读全文
posted @ 2017-07-13 13:23 hkant 阅读(1298) 评论(1) 推荐(3) 编辑
摘要:理解数据库中的事务及其并发过程中的各种限制对于合理的解决数据问题据有着重要意义,否则极有可能出现非常难以排查的由数据导致的程序bug。 阅读全文
posted @ 2017-06-22 22:02 hkant 阅读(2262) 评论(2) 推荐(2) 编辑
摘要:这两天在看园友的文章《8天玩转并行开发——第三天 plinq的使用》对里面的第一个实例亲手实践了一下,发现了一点有意思的事情。测试环境:.net 4.5 64位(如果是32位的,测试千万数据时会爆出out of memory的错误)在我的机器上,千万数据的测试结果:百万数据的测试结果:十万数据的测试... 阅读全文
posted @ 2015-09-09 09:32 hkant 阅读(266) 评论(0) 推荐(0) 编辑