哥特式建筑安全系统

本文讲的是哥特式建筑安全系统,在我的童年记忆里,电视上播放的那些低劣的冒险电影是模糊却持久的。通常,这些电影的场景会安排某个古旧的城堡、密室或走廊在其中起着重要的作用。为了找到它们,英雄们需要拉动楼顶的蜡烛托架,然后,轻拍两次墙壁。

想象有这样一家公司,他们决定根据这个想法构建一套安全系统。他们进入之后,设置某种无线网络,安装一些小的设备。如果发生某些有趣的事情,这些设备会发出一条四字符的消息。比如,打开抽屉,抽屉上附着的感应器就会发出一条消息:D2OP。还有一些小的控制设备,响应这样的四字符命令消息,比如,某个设备收到D1UL消息,就会打 开一扇门。
所有这一切的核心是一些控制器软件,它们会监听事件消息,弄清楚要做什么,然后发送命令消息。在那个网络产业崩溃的年代,这家公司买到了一堆廉价的烤面包机,它们可以用Java控制,所以,公司准备用它们来做控制器。因此,只要客户买了哥特式建筑安全系统,公司就会进驻其中,给这个建筑物装上一大堆设备,当然,还有一个烤面包机,里面装有Java编写的控制程序。

就这个例子而言,我们的关注点在于这个控制程序。每个客户都有各自的需求,但是,只要有一些好的样本,我们就不难发现其中的通用模式。为了打开密室,格兰特小姐要关上卧室房门,打开抽屉,然后,再开一盏灯。而肖瓦小姐则先要打开水龙头,再打开正确的灯,从而开启两个密室中的一个。至于史密斯小姐,她的办公室里有一个上锁的壁橱,内有一个密室。她必须先关上门,把墙上的画摘下来,再打开桌子上的灯三次,最后,打开那个满满的橱柜最上面的抽屉,这时,壁橱打开了。如果在打开里面的密室前,她忘记了关闭桌子上的灯,就会警报大作。
这是个异想天开的例子,但它所要表达的意图一点都不特别。我们有这样一系列系统,它们共享着大多数组件和行为,却彼此间差异极大。在这个例子里,对所有的客户来说,控制器发送和接收消息的方式是相同的,但是产生的事件序列和发送的命令却不尽相同。我们要整理一下这些东西,这样,当公司安装一个全新系统时,付出的代价才会是最小的。因此,对他们而言,为控制器编写动作序列必须非常简单才行。
了解了所有这些情况,一种好的处理方式浮出水面:把控制器看做状态机(state machine)。每个感应器都可以发送事件(event),改变控制器的状态(state)。当控制器进入某种状态时,它就会在网络上发出一条命令消息。
至此,我应该坦白,写作之初,这是全然不同的。状态机是一个很好的DSL例子,因此,我先选择了它。之所以选择 哥特式城堡,是因为我厌倦了其他所有状态机的例子。
格兰特小姐的控制器
这家神秘的公司拥有成千上万感到满意的客户,但在这里,我们只准备强调其中的一位:格兰特小姐,我最喜欢的客户。她的卧室里有个密室,通常情况下,这个密室都会紧锁着,隐蔽在那里。要打开这个密室,她就要关上门,然后,打开柜子里的第二个抽屉,打开床边的灯─二者顺序任意。做完这些,秘密面板就会解锁,她就可以打开密室了。
我用一张状态图来表示这个序列(见图1-1)。
如果你没接触过状态机,其实,它们只不过是描述行为的一种常见方式而已─并非广泛适用,但对于类似这样的情况,却是再合适不过了。其基本的想法是,控制器会处于不同的状态。当它们处于某个特定的状态时,某个事件会让控制器转换为另一个状态,在那种状态下会有不同的转换(transition)。因此,一系列的事件会让控制器从一个状态进到另一个状态。在这个模型里,当进入一个状态时,会执行某个动作(比如发送消息)。(其他类型的状态机可能会在不同的地方执行动作)。
基本上,这个控制器就是一个简单的传统状态机,不过需要一些微调。客户的控制器要有一个明确的空闲(idle) 态,系统会有大多数的时间处在该状态。某种特定的事件就可以让系统跳回到这个空闲态,即便它正处于一个更有趣的状态转换中间,这样就可以有效地重置整个模型了。在格兰特小姐的这个例子里,开门就是这样一个重置事件。
引入重置事件,意味着这里描述的状态机并不完全满足某种经典的状态机模型。状态机有几种非常有名的变体,这个模型便是以其中一个为起点的,只是略做微调,增加了重置事件,也就变成了只针对这种情况。
需要特别注意的是,严格来说,未必一定要有重置事件才能表示格兰特小姐的控制器。一种替代方案是,为每个状态添加一个转换,只要触发doorOpened,就会转换为空闲态。重置事件这个想法很有用,因为它简化了整个状态图。

来源:华章计算机

原文标题:哥特式建筑安全系统

时间: 2024-10-28 07:58:50

哥特式建筑安全系统的相关文章

《领域特定语言》一第1章 入 门 例 子1.1 哥特式建筑安全系统

第1章 入 门 例 子 落笔之初,我需要快速地解释一下本书的内容,就是解释什么是领域特定语言(Domain– Specific Language,DSL).为达此目的,我一般都会先展示一个具体的例子,随后再给出抽象的定义.因此,我会从一个例子开始,展示DSL可以采用的不同形式.在第2章里,我会试着把这个定义概括为一些更广泛适用的东西. 1.1 哥特式建筑安全系统 在我的童年记忆里,电视上播放的那些低劣的冒险电影是模糊却持久的.通常,这些电影的场景会安排某个古旧的城堡.密室或走廊在其中起着重要的作

《领域特定语言》一导读

前 言 在我开始编程之前,DSL(Domain–Specific Language,领域特定语言)就已经成了程序世界中的一员.随便找个UNIX或者Lisp老手问问,他一定会跟你滔滔不绝地谈起DSL是怎么成为他的镇宅之宝的,直到你被烦得痛不欲生为止.但即便这样,DSL却从未成为计算领域的一大亮点.大多数人都是从别人那里学到DSL,而且只学到了有限的几种技术. 我写这本书就是为了改变这个现状.我希望通过本书介绍的大量DSL技术,让你有足够的信息来做出决策:是否在工作中使用DSL,以及选择哪一种DSL

ACCESS数据库的安全系统

access|安全|数据|数据库 Access是MicroSoft公司始于1994年发表的微机数据库管理系统.作为一种功能强大的MIS系统开发工具,它具有界面友好,易学易用,开发简单,接口灵活等特点,是一个典型的新一代数据管理和信息系统开发工具.与Microsoft的其他数据库产品如FOXPRO等相比,Access具有较独特的优势-提供了更强大的数据组织,用户管理,安全检查等功能.在一个工作组级别的网络环境中,使用Access开发的多用户数据库管理系统具有传统的XBASE数据库系统所无法比拟的客

ACCESS数据库安全系统

Access是MicroSoft公司始于1994年发表的微机数据库管理系统.作为一种功能强大的MIS系统开发工具,它具有界面友好,易学易用,开发简单,接口灵活等特点,是一个典型的新一代数据管理和信息系统开发工具.与Microsoft的其他数据库产品如FOXPRO等相比,Access具有较独特的优势-提供了更强大的数据组织,用户管理,安全检查等功能.在一个工作组级别的网络环境中,使用Access开发的多用户数据库管理系统具有传统的XBASE数据库系统所无法比拟的客户服务器(Cient/Server

基于J2EE网银系统的安全系统解决方案概述

简介:本文介绍网络银行所普遍采用的安全技术和方案,将从数据和业务逻辑的两个角度详细地分析一般网络银行系统的安全需求,并据此引入以 PPDRR 为安全模型的安全设计方案.通过阅读本文,读者不但可以了解网上银行普遍采用的安全系统架构以及相关技术,而且对开发实际安全应用系统具有一定的指导意义. 摘要 随着中国加入 WTO,外国银行进入中国市场,国内银行的业务越来越多的移植到网络银行上,因此网上银行的需求日益增加.但是 Internet 的开放性特点,使网上银行面临种种风险,可以说安全性是网上银行最大的

Comcast Xfinity家庭安全系统被曝严重漏洞

近日,研究人员发现Comcast Xfinity家庭安全系统中存在一个安全漏洞,攻击者可以在不触发警报的前提下进入用户住宅. Comcast(康卡斯特)是美国最大的有线电视公司,同时也是宽带网络及IP电话服务供应商.Xfinity家庭安全系统是一套月租型的智能家庭监控系统解决方案,不仅提供给使用者拥有住宅报警的功能之外,还可以提供使用者收看有线电视,互联网和电话的服务等服务. Xfinity主要依靠使用电池供电的传感器检测入侵者,而这种传感器使用工作在2.4 GHz无线频段的无线通信协议ZigB

《网络安全体系结构》一2.3 安全系统的开发与运行概述

2.3 安全系统的开发与运行概述 网络安全体系结构现在你已经对安全策略的概念,以及实施这些规则的方式有了基本的了解,在这一节中,我们会把这些知识放到安全系统的开发与运行的环境进行讨论.首先,我们可以看到对这个过程的概括.图2-1所示的是此过程及其各步骤之间相互关系的概述. 业务需求和风险分析是安全策略的主要来源.全部安全策略都是由三类不同的文档构成的. 策略-是安全策略的基本要素,一般不是某种特定的技术,而是一些与网络运行有关的更加宏观的因素.指导方针-组织机构的最佳做法.标准-是一套针对某项技

《Arduino家居安全系统构建实战》——第1章 家居安全系统的入门知识

第1章 家居安全系统的入门知识 Arduino家居安全系统构建实战在这一章中,我们将会介绍如下的内容: 什么是家居安全基础设施它是如何工作的部署这样一个系统都需要些什么在当前条件下为安全系统所做的准备有线安全系统和无线安全系统传统系统与现代化家居安全系统为了紧紧跟随硬件的发展趋势,本书介绍了随处可见且价格极为低廉的平台--Arduino.今时今日,我们可以在各种各样的公共场所如中小学校.高等院校.小型企业或者公共机构见到这个小电路板的身影. Arduino平台因其众多的优势而著名,例如低廉的成本

《Arduino家居安全系统构建实战》——1.2 工作原理

1.2 工作原理 之前讨论了家居安全系统基本的组成部分,但是这些要素都是什么,它们是如何工作的呢?通过对它们进行分类,我们可以将一个安全系统分成两个部分. 1.2.1 硬件部分 一个基础设施的硬件要素必须能够胜任软件的所有技术需求.可以将它们进一步细分为3个不同的子类别.这种分类方式不应该被理解为具有排斥性,因为一个要素经常可以被分到多个子类别中,这种分类方式反而有助于你理解系统所执行的功能. 传感器:传感器将作为系统的感觉器官,其作用就如同人类的身体感官.它们的功能就是从环境中搜集信息,并将这