看到一个牛人 小结一些文章

http://blog.csdn.net/zhuweisky/

 插件的“动态替换”

2)在内存中复制插件Dll,然后加载内存中的Dll。这样,硬盘上的Dll就可以随意地被覆盖或删除了。以前我们是直接从硬盘加载插件Dll,就像这样:
Assembly asm = Assembly.LoadFrom(addinFilePath) ;       现在,我们需要转个弯:
                Assembly asm  = null ; 
              
                //先将插件拷贝到内存缓冲
                byte[] addinStream = null ;                   
                if(FileHelper.ReadFileToBuff(addinFilePath ,out addinStream))
                {
                    asm = Assembly.Load(addinStream) ; //加载内存中的Dll
                }

对大多数大型系统而言,数据库往往是最容易出现瓶颈的地方,而通过使用恰当的缓存技术可以非常有效地减轻数据库的负载。
    
    将系统中用到的所有数据进行分类,分别对待不同种类的数据而不是一视同仁,有利于正确地做出缓存哪些数据、以及如何缓存的决策。
    我通常将系统中用到的数据分为四类:恒定不变的数据,只发生增量的数据,偶尔改变的数据,经常改变的数据。
(1)对于恒定不变的数据,采用普通的恒定缓存,即这种缓存在系统启动后初始化一次就不再改变了。
(2)对于只发生增量的数据,采用智能式的增量缓存,如果所要的数据在这种缓存中不存在,则该缓存会从其它地方(如数据库)自动加载目标对象并缓存起来。
(3)对于偶尔改变的(但不是十分敏感的)数据,采用定时刷新的缓存,如每隔10分钟刷新一次。
(4)对于经常改变的数据,则又可以进一步细分:
       将数据中变动部分和非变动部分区分开来,而非变动部分又可以封装为单独的对象,从而对该“部分”对象采用上述三种方式之一进行缓存。

    如此,便可最大程度的利用缓存,从而可以有效提高系统性能,并明显减轻数据库和网络负载。

原文地址:https://www.cnblogs.com/zc22/p/1609147.html