leveldb是一个非常高效的可嵌入式K-V数据库,在.NET下有着基于win实现的包装leveldb.net;不过leveldb.net只提供了基于byte[]和string的处理,这显然会对使用的时候带来不方便,毕竟在编写应用的时候都是希望通过对象的方式来存储,如我们常见的redis,mongodb和memcached等等都提供对象方式的读写.以下主要讲解leveldb.net基础上封装一层序列化功能方便使用. 制定对象化的访问接口 为了不修改leveldb.net的代码,所以选择在他基础过行封装,为了清楚需要些什么简单地定义了一个规则 public in ...
[转自:http://blog.csdn.net/laigood/article/details/7421197] elasticsearch的config文件夹里面有两个配置文件:elasticsearch.yml和logging.yml,第一个是es的基本配置文件,第二个是日志配置文件,es也是使用log4j来记录日志的,所以logging.yml里的设置按普通log4j配置文件来设置就行了。下面主要讲解下elasticsearch.yml这个文件中可配置的东西。 cluster.name: elasticsearch 配置es的集群名称,默认是elasticse ...
    最近了解了一下LevelDB,发觉这个嵌入式的K-V数据性能不错,所以顺便想在使用层面了解一下.由于LevelDB也有针对.net的实现,所以就针对了LevelDB.NET进行了一个简单的读写压力测试.为了更客观的体现测试结构所以添加了大量的数据,和GET操作的时候随机已经有的KEY进行. Set操作 public static void WriteTest(object state) { while (true) { User user = new U ...
      最近关注了一下ssdb,它的特点是基于文件存储系统所以它支撑量大的数据而不因为内存的限制受取约束.从官网的测试报告来看其性能也非常出色和redis相当,因此可以使用它来代替redis来进行k-v数据业务的处理.想法总是美好的,不过现实中就可能带点骨感.     幸好ssdb是兼容redis的部份协议,所以直接用redis client库就可以进行一个压力测试.以于针对Redis和ssdb的几个读操进行一个简单的性能测试对比,这个测试不是直接在本机调用Redis和ssdb. 而是通过一个程序在别的服务器上调用.测试指令(ge ...
class ConsoleWait { private static System.Diagnostics.Stopwatch mWatch = new System.Diagnostics.Stopwatch(); private static int line; private static bool Runing = true; private static int Count = 1; private static ConsoleColor ForegroundColor; ...
在实际编写程序中大部他开发人员应用到队列的场景并不多,在数据结构层面来说队列是一个先过先出的存储机制;如果经常面向服务器并发应用编写的同学对队列机制应该不会陌生.基于队列的应用设计作为服务的性能和可靠性上起到非常重要的作用,对于刚入门的同学可能对这些东西不太理解,既然添加了一个处理环节为何还能提供性能.通过下面讲解可以让不了解队列机制的同学进一步认识到队列机制在服务器应用设计如何起到重要的作用. 性能提升和可靠性 使用队列机制真的能让代码性能提升吗?从代码角度来说不能,原因很简单因为要执行的代码多了.既然不能提高代码执行性能那为什么服务设计都会考虑队列机制呢?主要原因服务设计一 ...
在之前的文章中简单描述了一下如何通过LRU结合多层缓存机制实现高命中的缓存,这一章节里的主要内容是深入地了解其原理的实现. LRU算法 什么是LRU算法? LRU是Least Recently Used的缩写,即最少使用页面置换算法,是为虚拟页式存储管理服务的.通过这种算法可以把最近使用的数据迁移到数据存储的热区,而不常用的数据则迁到数据存储的冷区;通过数据存储分区那在清除局部冷区数据相应要处理的复杂底就会降低.在.NET中可以通过一个双向链表来实现冷热交互的结构,大概结构如下: 以上是一个基于双向链表存储的原理,新添加进来的数据会添加到头部,当 ...
HttpTest4Net集成了两个简单的压力测试用例,但实际应用中需要提交动态数据,这个时候就需要自己定义测试用例.自定义测试用例相对来说比较简单引用HttpTest4Net.Interfaces,并实现IUrlTester接口即可,也可以简化从PostUrlTester现在用例中承继并重写一些简单的属性来实现。下面是实现一个简单动态用户注册的测试请求用例。 [HttpTest4Net.Interfaces.Test("user register")] public class UserRegister:HttpTest4Net.Interfaces.PostUrlTe ...
发现不少同学在用.NET做通讯的时候都关心一个问题,.NET能支持多少个在线连接。其实.net的通讯由winsocket所支持,既然由低层的winsocket所支持那.NET其端的接入连接数的受限完全取于winsocket当前操作系统的限制。 65535的限制? 有很多同学认为由于端口有限,所以接入的连接会受端口资源限制。其实对于服务端的连接接入是不会产生端口资源的分配,它只分配相应的操作系统句柄。所以可接入的连接不会不会受端口数的限制。其实WIN预留可接入的连接数上限值还是非常大的,通过以下注册表值可以了解到 [HKEY_LOCAL_MACHINE \System ...
在Configuration Agent设计的时候就已经明确兼容.NET默认Configuration的使用规则,下而看一下Configuration Agent和.NET默认Configuration使用的对比。 AppSettings System.Configuration.ConfigurationManager value = System.Configuration.ConfigurationManager.AppSettings["PreserveLoginUrl"]; Configuration4Net.ConfigurationManager ...