关键词:
1.我们先新建一个FreeSCADA的工程实例,看下实际的存储效果:
a) 建立几个数据通道作为数据源(Communication菜单编辑,Channels Tree下显示):
b) 建立一个数据库存档(工具栏的Archiver Settings):
c) 定义数据库连接属性(Project菜单下的Database settings子菜单):
d) 编译项目,并运行,查看数据库存储结果:
2.存储过程探究(FreeSCADA2解决方案下的Archiver工程):
我们主要分析Archiver工程下Archiver.cs文件内的的几个方法:
Start方法:
public bool Start() { dbWriter = new DbWriter(); if (dbWriter.Open() == false) return false; channelUpdaterThread = new Thread(new ParameterizedThreadStart(ChannelUpdaterThreadProc)); channelUpdaterThread.Start(this); dbReader = new DbReader(); if (dbReader.Open() == false) return false; return IsRunning; }
ChannelUpdaterThreadProc方法:
private static void ChannelUpdaterThreadProc(object obj) { ArchiverMain self = (ArchiverMain)obj; try { for (; ; ) { //System.Console.WriteLine("{0} ChannelUpdaterThreadProc: Start loop", System.DateTime.Now); foreach (Rule rule in self.channelSettings.Rules) { if (rule.Enable) { foreach (BaseCondition cond in rule.Conditions) cond.Process(); if (rule.Archive) // 判断是否需要将本规则下对应的各个数据通道数据存入数据库(通过判断是否使能了本项存储规则、并且存储规则对应的存储条件的参数:间隔时间是否已经到了) self.dbWriter.WriteChannels(rule.Channels); } } Thread.Sleep(100); // 线程休眠100ms。所以FreeSCADA的查询各个数据通道的间隔就是100ms。 } } catch (ThreadAbortException) { } if (self.dbWriter != null) self.dbWriter.Close(); }
Stop方法:
public void Stop() { if (channelUpdaterThread != null) { channelUpdaterThread.Abort(); channelUpdaterThread.Join(); channelUpdaterThread = null; if (dbWriter != null) dbWriter.Close(); } if (dbReader != null) dbReader.Close(); }
代理和 ARC,不兼容?
...发布时间】:2012-05-0208:27:16【问题描述】:我正在尝试为数据库存储过程实现代理。这个想法是让我的代码在数据库中找到一系列存储过程,然后在内存中创建一个代理对象,该对象将实现与这些存储过程匹配的方法。该代理对... 查看详情
ads.ini 中的更改未反映在 arc 的连接存储库中
...映在弧连接存储库中。但是现在,什么都没有改变,新的数据库连接没有显示出来。我应该检查什么以使 查看详情
如何存储开源 Heroku Node.js 应用程序的数据库凭据?
】如何存储开源HerokuNode.js应用程序的数据库凭据?【英文标题】:Howtostoredatabasecredentialsforanopen-sourceHerokuNode.jsapp?【发布时间】:2011-12-0507:27:02【问题描述】:我正在构建一个Node.js应用程序,并且需要以这样一种方式存储数据... 查看详情
如何android多activity间共享数据
...储数据。1使用SharedPreferences存储数据2文件存储数据3SQLite数据库存储数据4使用ContentProvider存储数据5网络存储数据不同的业务逻辑,或者需求,用不同的实现方式,以下是这几中数据存储方式的说明用及法:第一种:使用SharedPreferences... 查看详情
淘宝开源key/value结构数据存储系统tair技术剖析
摘要:Tair的功能Tair是一个Key/Value结构数据的解决方案,它默认支持基于内存和文件的两种存储方式,分别和我们通常所说的缓存和持久化存储对应。Tair除了普通Key/Value系统提供的功能,比如get、put、delete以及批量接口外,还有... 查看详情
如何以编程方式为非 ARC xcode 项目中的特定文件启用 ARC?
】如何以编程方式为非ARCxcode项目中的特定文件启用ARC?【英文标题】:HowtoenableARCprogrammaticallyforspecificfilesinanon-ARCxcodeproject?【发布时间】:2014-01-0915:02:47【问题描述】:我有一种情况,我需要在几个非ARCxcode项目中为许多文件... 查看详情
小记--------hbase数据库介绍及存储方式
...原理1、hbase基本介绍HBASE是一个分布式的,面向列的开源数据库。Hbase的存储是基于hadoop的。因为Hadoop实现了一个分布式文件系统(HDFS),基于hadoop意味着hbase与生俱来的超强的扩展性和吞吐量,hbase采用的是key、value的存储方式... 查看详情
ARC 禁止合成具有未指定所有权或存储的财产
】ARC禁止合成具有未指定所有权或存储的财产【英文标题】:ARCforbidssynthesizingapropertywithunspecifiedownershiporstorage【发布时间】:2012-01-1715:18:44【问题描述】:我创建了@property的UIColor,@property(nonatomic)UIColor*color;然后我尝试合成它:... 查看详情
云原生时代开源监控软件prometheus架构介绍
...定义的格式存储在本地硬盘上。Prometheus的本地时间序列数据库以每两小时为间隔来分块(block)存储,每一个块中又分为多个chunk文件,chunk文件是用来存放采集过来的数据的时间序列数据,元数据(metadata)和索引文件(index)... 查看详情
以编程方式从 ARC 中的导航堆栈中删除 viewController
】以编程方式从ARC中的导航堆栈中删除viewController【英文标题】:RemovingtheviewControllerprogrammaticallyfromthenavigationstackinARC【发布时间】:2012-12-0411:16:52【问题描述】:我想在推送第三个新的ViewController之前清除我的导航堆栈,它有两... 查看详情
在 ARC 中使用 Blocks 和以某种方式复制的奇怪内存泄漏
】在ARC中使用Blocks和以某种方式复制的奇怪内存泄漏【英文标题】:WeirdmemoryleakwithBlocksandcopyingincertainwayinARC【发布时间】:2013-04-2814:01:00【问题描述】:以下简单代码在ARC下,在最新的Xcode(4.6.2)中使用Leaks工具进行分析,在iOS模... 查看详情
盘古开源:完善数据存储体系,保障数字经济安全高效发展
随着社会经济各领域数字化建设的推进,数据成为经济发展的战略资源,数据存储需求呈现指数级增长,数据中心、5G网络等新型基础设施为数字经济发展提供基础保障的同时,也产生了高能耗与高成本等问题。... 查看详情
quartzscheduler开源框架学习记录
...3.核心元素介绍4.线程视图5.数据存储简介Quartz是OpenSymphony开源组织在任务调度领域的一个开源项目,完全基于Java实现。该项目于2009年被Terracotta收购,目前是Terracotta旗下的一个项目。http://www.quartz-scheduler.org/这里可以下载Quartz的... 查看详情
盘古开源丨filecoin是旨在存储人类社会最重要信息的分布式网络
Filecoin是由协议实验室发起的一种分散式存储解决方案,它将现有的云存储转化为一个算法市场。为数据交流和交换建立一个统一的、通用的平台,使得整个数据的扭转或交换成为一个标准化的统一系统,而不是之前... 查看详情
内存管理的思考方式2(arc下)
...tain或者release,完美的满足了‘引用计数式内存管理的思考方式’:自己生成的对象自己持有非自己生成的对象,自己也可以持有不再需要自己持有的对象时释放非自己持有 查看详情
openfiler---开源存储管理平台
Openfiler能把标准x86/64架构的系统变成一个强大的NAS、SAN存储和IP存储网关,为管理员提供一个强大的管理平台,并能能应付未来的存储需求。依赖如VMware,VirtualIron和Xen服务器虚拟化技术,Openfiler也可部署为一个虚拟机... 查看详情
开源web框架django知识总结(代码片段)
...取速度很快的内存意义:视图渲染有一定成本,数据库的频繁查询过高,对于低频变得的页面可以考虑使用缓存技术,减少 查看详情
richtext开源项目总结
一、RichEditor开源项目地址:https://github.com/renhui/RichEditorRichEditor是本人开源的一个富文本编辑器,功能相对简单,但麻雀虽小五脏俱全,支持了图文混排的编辑方式和展示方式的控件及对应的demo。核心功能:图文混排展示,支持... 查看详情