DNN的数据访问方式——合理运用模式,提高数据访问的灵活性

  DNN的核心框架表的数据访问方式是采取单件模式(Singleton)和抽象工厂模式(Abstract Factory)结合的方式来实现的。(各个用户模块的数据访问方式好像也是这样的)
  单件模式(Singleton):用来确保程序只有一个数据访问点。
  抽象工厂模式(Abstract Factory):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
  DataProvider(components/Providers/Data/DataProvider.vb)就是这样的一个抽象类,它提供了系统所需的访问数据库操作的全部接口,SqlDataProvider(Providers/DataProviders/SqlDataProvider/SqlDataProvider.vb)是DataProvider的一个子类,它提供了访问SQLServer数据库的具体实现。在使用的时候我们只需调用“DataProvider.Instance().要用到的方法”即可。至于返回何种子类则在DataProvider类中构造函数调用CreateProvider()动态的构造具体的子类。
动态构造何种子类的设置,则完全由用户在配置文件中设置。如:
     <!-- data默认的Provider是SqlDataProvider -->
    
< data  defaultProvider ="SqlDataProvider" >
      
< providers >
        
< clear  />
        
<!-- Provider的详细信息 -->
        
< add  name ="SqlDataProvider"  type ="DotNetNuke.Data.SqlDataProvider, DotNetNuke.SqlDataProvider"  connectionStringName ="SiteSqlServer"  upgradeConnectionString =""  providerPath ="~/Providers/DataProviders/SqlDataProvider/"  objectQualifier =""  databaseOwner ="dbo"   />
      
</ providers >
    
</ data >
这样如果我们需要用Oracle数据库,只需要编写一个OracleDataProvider子类实现DataProvider中的接口就行了。然后将配置文件的信息修改如下即可。
     < data  defaultProvider ="OracleDataProvider" >
      
< providers >
        
< clear  />
        
<!-- Provider的详细信息 -->
        
< add  name ="OracleDataProvider"  type ="DotNetNuke.Data.OracleDataProvider, DotNetNuke.OracleDataProvider"  connectionStringName ="SiteSqlServer"  upgradeConnectionString =""  providerPath ="~/Providers/DataProviders/OracleDataProvider/"  objectQualifier =""  databaseOwner =""   />
      
</ providers >
    
</ data >
  这种数据访问方式能够灵活的配置应用程序使用的数据库,而且每个用户模块都有自己独立的DataProvider,应该是可以实现不同的用户模块使用不同的数据库。我现在还在看系统框架的东西,关于不同用户模块是否是可以使用不同数据库的问题还不能肯定,不过我想是可以的。

更多相关内容>>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当Python DNN模型在训练数据上出现欠拟合时,意味着该模型不能很好地捕捉到训练数据中的相关模式和特征。常见的欠拟合表现为训练损失无法被有效地降低,模型无法获得足够低的训练误差。 欠拟合可能由以下原因导致: 1. 模型复杂度不足:DNN模型的层数和宽度不足以提取数据中的复杂模式。此时,可以尝试增加模型的层数、神经元个数或者使用更复杂的模型架构来提高模型的表达能力。 2. 数据量不足:如果训练数据量过小,模型可能无法学习到数据中的全部模式。增加训练数据量可以提高模型的泛化性能。 3. 特征选择或提取不当:如果输入特征无法很好地表示数据的信息,模型可能无法学习到准确的规律。此时可以尝试使用更具表征性的特征或者进行特征工程来提升模型性能。 4. 学习率过低:如果模型的学习率设置过低,模型可能需要更长的时间才能适应数据中的特征。增加学习率可以加速模型的训练过程。 针对DNN模型欠拟合问题,可以采取以下解决方法: 1. 增加模型复杂度,增加网络层数和神经元个数。 2. 收集更多的训练数据提高模型的泛化能力。 3. 使用更具表征性的特征或进行特征工程。 4. 调整学习率以提高模型的学习效率。 通过适当地调整模型架构、优化算法和数据集,可以解决DNN模型在训练数据上的欠拟合问题,提高模型的性能和准确度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值