ASP.NET企业开发框架IsLine FrameWork系列之十一--HttpContentProvider 访问缓存

ASP.NET企业开发框架IsLine FrameWork系列之十一--HttpContentProvider 访问缓存

  今天我们来介绍 IsLine.HttpContent.HttpContentProvider命名空间:

  这个Provider主要封装了对缓存、Session与Cooike的操作,该空间下主要有三个类:CookieProvider、SessionProvider、CacheProvider。

  关于约束

  这三个类库统一实现ICapability接口,ICapability继承自IBaseCapability接口,IBaseCapability规范了HttpContentProvider的基础能力,而ICapability则是对基础能力的扩展,如下:

 

复制代码
代码
    
    
namespace IsLine.HttpContent.HttpContentProvider { public interface IBaseCapability { bool Remove( string Name); bool IsExit( string Name); } public interface ICapability : IBaseCapability { object GetContent( string Name); bool UpdateContent( string Name, object value); } }
复制代码

 

  可以看出,接口主要约束了如何删除、获得与更新一个对象,即约束了Session、Cookie、Cache的行为。

  CacheProvider类

  首先来看看有关Cache的操作,CacheProvider支持.Net两种类型的Cache:运行时Cache(HttpRuntime.Cache)与上下文Cache(HttpContext.Current.Cache),这两种Cache有什么区别呢?这里简单的解释一下:

  HttpRuntime.Cache是Application级别的,而HttpContext.Current.Cache是仅对当前WEB页面请求才有效的。换句话说,HttpRuntime Cache所有的web与非web程序都可以调用,而HttpContext则只能用在WEB中。

  缓存中的数据是易失的,数据并不是在整个应用程序生命周期中都存储在内存中,由 ASP.NET 管理缓存,它会在项过期、无效、或内存不足时移除缓存中的项。还可以配置应用程序缓存,以便在移除项时通知应用程序。所以,你并不知道缓存在什么时候会失效,即使你已经配置了依赖项。

  关于缓存的过期有2种类型:

过期类型

说明

滑动窗口

指定某项自上次被访问后多长时间过期。

绝对过期

指定某项在设定的时间过期,而不考虑访问频率。

    可以将缓存中某一项的生存期配置为依赖于其他应用程序元素,如某个文件或数据库。当缓存项依赖的元素更改时,ASP.NET 将从缓存中移除该项。

CacheProvider类支持以下2种依赖:

 

说明

文件依赖项

缓存中的项依赖于外部文件。如果该文件被修改或删除,则缓存项也会被移除。

SQL 依赖项

缓存中的项依赖于 Microsoft SQL Server 2005、SQL Server 2000 或 SQL Server 7.0 数据库中表的更改。对于 SQL Server 2005,缓存中的项可依赖于表中的某一行。

 

  使用CacheProvider中的方法

方法

说明

CacheProvider()

构造函数

CacheProvider(string cacheName)

构造函数,参数指明了需要操作的缓存名称

CacheProvider(CacheType useCacheType, string cacheName, CacheDependencyType cdt,object depend)

构造函数,CacheType指明缓存类型,可以是运行时或上下文Cache,默认为运行时Cache;cacheName为需要操作的缓存名称;CacheDependencyType为依赖项类型,可以是sql或文件;

depend为具体依赖项

Object GetContent()

获得默认缓存内容

Object GetContent(string Name)

获得缓存内容,参数指明了需要操作的缓存名称

Bool UpdateContent(object o)

更新或新建默认缓存内容

Bool UpdateContent(string Name,object o)

更新或新建缓存内容,参数指明了需要操作的缓存名称

bool Remove()

移除默认缓存

bool Remove(string Name)

移除缓存,参数指明了需要操作的缓存名称

bool IsExit()

判断默认缓存是否存在

bool IsExit(string Name)

判断缓存是否存在,参数指明了需要操作的缓存名称

 

    缓存依赖项可以以参数方式统一传入,这样方便了开发人员。SQL缓存只针对SQL SERVER数据库有效,指定使用文件缓存还是数据库缓存,可以通过CacheDependencyType参数达到目的,CacheDependencyType是一个枚举值,在IsLine.HttpContent.HCDataTypeEnum命名空间下,IsLine.HttpContent.HCDataTypeEnum命名空间:

 

复制代码
代码
    
    
namespace IsLine.HttpContent.HCDataTypeEnum { public enum DateType { Days, Hours, Years, Minutes } public enum CacheType { HttpRuntime, HttpContext } public enum CacheDependencyType { Sql, File, None } public enum RemoveType { RemoveInput, RemoveAllExcludeInput } }
复制代码

 

 

    需要注意的是,即使使用CacheProvider(string cacheName)指明了需要操作的Cache,但是如果后面的代码中,实例调用的方法中包含其他Cache的名称,那么以后使用不带Cache名称参数的方法时,将会操作那个新的Cache,而忽略构造函数中指明的Cache。

例如:

复制代码
   
   
CacheProvider cp = new CacheProvider(“A”); cp.GetContent(); // 这一步将获得Cache“A”的内容 cp.IsExit(“B”) // 这一步检测Cache“B”是否存在 cp.GetContent(); // 这一步将获得Cache“B”的内容,而不是构造函数中的Cahce“A”
复制代码

 

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
应用背景为变电站电力巡检,基于YOLO v4算法模型对常见电力巡检目标进行检测,并充分利用Ascend310提供的DVPP等硬件支持能力来完成流媒体的传输、处理等任务,并对系统性能做出一定的优化。.zip深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值