buffer:很好的用的数据BUFFER



仔细模拟下你数据库你有没有发现在计算时(特别是多用户计算时)经常重复读取数据库数据?!这是数据库处理性能最主要杀手

有些人说在写的前应该把算法想好使得数据记录成批地、次性地读取但是这实际上往往不可能复杂贴近逻辑流程才清晰可维护更何况这也不能解决多用户访问情况最好我们根本不用在写时去考虑数据是否会被重复读取从而改变流程但是又能自然而然地防止重复读取数据库当对计算过程进行优化而又不想破坏逻辑清晰性时候当然就是要依靠简单Cache —— 对象只要能够缓存Cache几秒钟就好

下面我这里写个世界上最懒惰员使用.net写个最简单Cache但是它往往可以让复杂计算大大提高计算速度



C# code
using ;
using .Collections.Generic;

DoBase
{
public ObjectCache
{
//Dictionary<K,T> 会自动维护个空链表来保存不用单元
//这里使用被缓存Cache对象“弱引用”允许这些对象被垃圾回收

private Dictionary<, WeakReference> Buffer = Dictionary<, WeakReference>;

public object this[ key]
{
get
{
WeakReference ret;
(Buffer.TryGetValue(key, out ret) && ret.IsAlive)
ret.Target;

null;
}

{
WeakReference ret;
(Buffer.TryGetValue(key, out ret))
ret.Target = value;

Buffer.Add(key, WeakReference(value));
}
}

public void Remove( key)
{
Buffer.Remove(key);
}
}
}


这就是最简单Cache例如:

public Class User
{
ObjectCache Buffer= ObjectCache;

public GetUser( id)
{
User ret=Buffer[id];
(retnull)
{
ret=读取数据库产生User对象(id);
Buffer[id]=ret;
}
ret;
}
.....

这里个Dictionary <K,T>结构字典中保存了对象key以及对象“弱引用”这样当内存不足时GC会照样去释放被缓存Cache对象当我们需要将对象在几秒钟内进行缓存Cache时使用这个最简单Cache很有用

.net framework中有非常多非常多东西需要员去了解不要仅仅抱着那些空洞、不实惠“放的 4海而皆准”大部头著作有时间要多读些实际地分析 .net framework 系统本身方面资料在每个技术中都可以找对两个细节这个细节就像掌握DNA技术样能够让你不但扩展原理而且通过动手能力得到巨大实惠
Tags:  framebuffersize response.buffer bufferoverrun buffer

延伸阅读

最新评论

发表评论