IRIS 高级概念
文章平均质量分 82
yaoxin521123
创造价值,分享学习,一起成长,相伴前行。
展开
-
第二十三章 使用 %Status 值
许多类使用 数据类型类来表示状态信息,并且它们的方法返回表示成功或错误的 值(状态)。如果状态表示一个错误(或多个错误),则状态值还包括有关错误的信息。还可以返回自己的状态值。本文讨论状态值以及如何使用它们。如上所述,许多 类中的方法返回一个状态以指示成功或错误。例如,%Library.Persistent%Save()` 方法返回一个状态。对于任何此类方法,请务必获取返回值。然后检查状态,然后适当地继续。基本工具如下:要检查状态是表示成功还是错误,请使用以下任一方法:要显示错误详细信息,请使用 或原创 2022-07-10 22:54:41 · 349 阅读 · 0 评论 -
第二十二章 安全自定义 Web 应用程序登录
除了推荐的 应用程序支持之外,产品还支持两种类型的传统 应用程序: 和 。在配置使用 和 的自定义登录页面时,遵循推荐的协议很重要。这些协议提供了更高的安全性,并最大限度地减少了升级到新产品或版本时的不兼容性。创建自定义 登录页面:请注意, 和 方法调用 方法。重要提示:创建自定义登录页面时,必须使用 的子类。在 应用程序中创建登录页面的其他方法可能会导致各种问题。如果编写了不使用 子类的自定义登录页面,并且应用了来自任何用于升级或保护实例的更改,那么登录页面可能会失败而没有错误消息。原创 2022-07-09 08:48:00 · 194 阅读 · 0 评论 -
第二十一章 使用工作队列管理器(四)
通常,初始化一组工作程序,将工作项排队,然后等待工作程序完成工作项。但是,可能会遇到工作人员作业完成工作项所需的时间比预期更长的情况,或者无法将单个进程专门用于等待。因此,工作队列管理器使能够将工作队列与进程分离,然后将工作队列附加到同一进程或不同的进程。例如,假设队列引用了初始化的工作队列。还假设向工作队列中添加了几个工作项。在调用 或 来确定正在处理的工作的状态之前,可以使用以下方法:从初始化工作队列时创建的对象引用中分离工作队列对象。 方法使任何正在进行的工作能够继续并保留工作队列的当前状态。原创 2022-07-08 09:21:22 · 161 阅读 · 0 评论 -
第二十章 使用工作队列管理器(三)
一个类别是一个独立的worker jobs池。当初始化一组worker jobs时,可以指定提供worker的类别。如果集合中的任何worker jobs在执行work项时请求额外的worker jobs,则新的worker jobs来自同一类别。例如,假设系统提供的 SQL 类别分配了最多 个worker。然后,假设与相关的流程创建了一个类别,并将最多四个worker分配给该类别。如果 SQL 池中的所有worker在给定时间都参与了工作,则 类别中的worker可能仍然可以立即处理工作项。系统包括两原创 2022-07-07 08:53:18 · 227 阅读 · 0 评论 -
第十九章 使用工作队列管理器(二)
可以通过执行以下步骤来使用工作队列管理器:可以指定要使用的并行worker jobs的数量,也可以使用默认值,这取决于机器和操作系统。此外,如果已创建类别,则可以指定应从中获取job的类别。创建工作队列时,工作队列管理器会创建以下工件:对添加到队列的项目立即开始处理。如果队列中的项目多于队列可用的worker jobs,则job会竞争清空队列。例如,如果有 个项目和四个job,则每个job从队列的头部移除一个项目,处理它,然后返回到队列的头部以移除并处理另一个项目。这种模式一直持续到队列为空。工作队列管理原创 2022-07-06 09:03:48 · 240 阅读 · 0 评论 -
第十八章 使用工作队列管理器(一)
工作队列管理器是的一项功能,使能够通过以编程方式将工作分配给多个并发进程来提高性能。在引入工作队列管理器之前,可能已经使用 命令在应用程序中启动多个进程并使用自定义代码管理这些进程(以及任何导致的故障)。工作队列管理器提供了一个高效且直接的 API,使能够卸载流程管理。代码在多个地方内部使用工作队列管理器。可以将它用于自己的需求,如以下部分中的高级描述。计算机硬件开发的最新创新趋向于高性能、多处理器或多核架构。与此同时,内存和网络设备的速度也只是慢慢地提高了。 开发了工作队列管理器以响应这些趋势并根据以下原创 2022-07-05 07:43:53 · 289 阅读 · 0 评论 -
第十七章 进程内存
进程使用许多不同的资源来实现其目标。其中包括部分或全部 CPU 周期、内存、外部存储、网络带宽等。这篇文章是关于内存使用的。具体来说,它处理为数据存储分配的内存,例如:当第一次为它们分配值时,它们被分配了内存空间。在局部数组的情况下,局部变量名称加上所有下标的值的组合引用单个变量值。除了包含极长字符串的变量外,变量会占用与 相关的空间。包含极长字符串的变量以不同方式存储,并且不占用 中的空间。每当实例化一个对象时,都会分配空间来保存对象的当前内容以及它所引用的对象。删除最后一个对象引用时返回该空间。将与原创 2022-07-04 08:48:11 · 931 阅读 · 0 评论 -
第十六章 字符串本地化和消息字典(二)
消息文件是消息字典的导出。这也是希望导入的任何消息的必需格式。只要有可能, 消息文件应该使用 编码。但是,在某些情况下,开发人员或翻译人员可能会使用本地平台编码,例如 ,以便于编辑 XML 消息文件。无论 文件使用何种编码,应用程序的语言环境都必须支持它,并且它必须能够表达该语言的消息。 消息文件可能包含一种语言和多个域的消息。 元素是 XML 消息文件的顶级容器,每个文件只有一个 元素。元素有一个必需的属性,。 属性的值是一个全小写的 代码,用于标识文件的语言。它由一个或多个部分组成:主要语言标原创 2022-07-03 08:53:39 · 243 阅读 · 0 评论 -
第十五章 字符串本地化和消息字典(一)
本文概述了字符串本地化,并描述了如何导出、导入和管理消息字典。当本地化应用程序的文本时,会创建一种语言的文本字符串清单,然后当应用程序区域设置不同时,建立约定以另一种语言替换这些消息的翻译版本。支持以下本地化字符串的过程:这种机制各不相同,但最常见的机制是 宏。代替硬编码的文字字符串,开发人员包含 宏的实例,为宏参数提供如下值:替换为编译代码时,编译器会在消息字典中为 宏的每个唯一实例生成条目。消息字典是全局的,因此可以在管理门户中轻松查看(例如)。有一些类方法可以帮助完成常见任务。结果是一原创 2022-07-02 09:06:39 · 266 阅读 · 0 评论 -
第十四章 信号(四)- 多进程任务示例
信号多进程任务原创 2022-07-01 07:02:54 · 202 阅读 · 0 评论 -
第十三章 信号(三)- 示例演示
、 和 这三个类中的每一个都有自己的 方法,最好在各自的终端窗口中运行它们。每次运行时,它都会显示它为日志生成的消息。一旦用户通过提供它正在等待的输入来响应 类, 的 方法将终止删除信号量。然后,用户可以通过键入命令查看所有进程的合并日志文件的显示注意:以下所有示例都假定所有类都已在命名空间中编译。最简单的例子演示了信号量的创建和销毁。它使用 类。请执行下列操作:该方法创建信号量。如果成功,将看到消息“输入任何字符以终止运行方法”。按下 键。该方法显示信号量的初始化值,将其删除,然后退出。原创 2022-06-30 09:23:19 · 228 阅读 · 0 评论 -
第十二章 信号(二)- 生产者消费者示例
下面是一系列使用信号量实现生产者/消费者场景的类。 “主”进程初始化信号量并等待用户指示活动已全部完成。生产者在循环中随机增加一个信号量值,更新之间的延迟可变。消费者尝试在随机时间从信号量中删除随机数量,也是在循环中。该示例由 5 个类组成:注意:组成这些类的代码特意写得简单。尽可能地,每个语句只完成一个动作。这应该使用户更容易和更直接地修改示例。此类建立演示环境。它调用实用程序类来初始化日志和名称索引工具。然后它用初始值 初始化公共信号量,并等待用户输入一个字符(通常是 键),表明实验已经完成。一旦它原创 2022-06-28 09:04:25 · 164 阅读 · 0 评论 -
第十一章 信号(一)- 概念
维基百科对信号量有这样的定义:“在计算机科学中,特别是在操作系统中,信号量是一种变量或抽象数据类型,用于控制多个进程在并行编程或多用户环境中对公共资源的访问。”信号量不同于互斥体(或锁)。互斥锁最常用于管理竞争进程对单个资源的访问。当一个资源有多个相同的副本并且这些副本中的每一个都可以由单独的进程同时使用时,就会使用信号量。考虑一个办公用品商店。它可能有几台复印机供其客户使用,但每台复印机一次只能由一个客户使用。为了控制这一点,有一组键可以启用机器并记录使用情况。当客户想要复印文件时,他们向职员索取钥匙,使原创 2022-06-27 07:39:16 · 182 阅读 · 0 评论 -
第十章 设置结构化日志记录(二)
注:IRIS有,Cache无。 例程允许管理结构化日志记录;还有一个基于类的 ,将在下一节中介绍。要使用 启用结构化日志记录:这将启动一个带有以下提示的例程:按 以便可以指定配置详细信息。然后,该例程会提示输入以下项目:a. 最低日志级别,以下之一:b. 管道命令,它指定系统将结构化日志发送到哪里。输入以下形式的响应:但将 替换为目标日志文件的完全限定路径名。在此命令中,irislogd 是 可执行文件的名称,它将接收日志数据并将其写入指定文件(通过 -f 选项)。对于管道命令,最简单的选原创 2022-06-26 08:55:08 · 259 阅读 · 0 评论 -
第九章 设置结构化日志记录(一)
IRIS 支持结构化日志记录。创建多个日志,每个日志用于不同的目的。从以前的产品迁移过来的客户可以像过去一样利用这些日志,但现在还可以将所有日志信息导入一个单一的、中央的、机器可读的日志文件——结构化日志。然后可以将此文件与第三方分析工具一起使用。本文概述了结构化日志中的信息,展示了日志示例,并描述了如何启用结构化日志记录。当启用结构化日志记录时,系统会将相同的数据写入结构化日志,它也会写入其他日志(无论哪个)。例如,系统将相同的行写入 和结构化日志。启用结构化日志记录后,结构化日志包含以下所有信息:本部分原创 2022-06-25 07:10:50 · 331 阅读 · 0 评论 -
第八章 操作位和位串(四)
要创建一个存储为整数的新位串,请对每个位求和 的幂:要将现有位串中的位设置为 ,请使用 函数(逻辑 OR)的选项 :要将现有位串中的位设置为 ,请使用 函数的选项 :要在现有位串中切换位,请使用 函数(逻辑 )的选项 :测试位是否已设置要将位字符串显示为整数,可以使用如下方法,该方法循环位并使用 函数:查找设置位此方法使用函数将位字符串中的哪些位设置为整数,该函数返回以为底的对数值。该方法删除越来越小的位串块,直到没有剩余:执行按位算术使用 函数对存储为整数的位串执行按原创 2022-06-24 09:26:44 · 219 阅读 · 0 评论 -
第七章 操作位和位串(三)
要创建新的位串,请使用 函数将所需位设置为 :使用 将现有位串中的位设置为 :使用 将现有位串中的位设置为 :由于位串中的第一位是位 ,因此尝试设置位 会返回错误:测试位是否已设置要测试是否在现有位串中设置了位,还可以使用 函数:如果测试未明确设置的位,则 返回 0:显示位要显示位串中的位,请使用 函数获取位串中位的计数,然后遍历位:还可以使用 来计算位串中 或 的数量:查找设置位要查找在位串中设置了哪些位,请使用 函数,该函数返回指定值的下一位的位置,从位串中的原创 2022-06-23 09:13:01 · 411 阅读 · 0 评论 -
第六章 操作位和位串(二)
如果要将一系列布尔参数传递给方法,一种常见的方法是将它们作为编码为单个整数的位序列传递。例如, 方法用于从 IRIS 实例中导出安全设置。如果查看此方法的类引用,将看到它的定义如下:第三个参数 是一个整数,其中每个位代表一种可以导出的安全记录。存储为整数的位串中的位 表示 ,位 表示 ,依此类推。如果要导出与位 、、、、、 和 对应的类型的安全记录,可以通过将 设置为 + + + + + + = 来完成.在 ObjectScript 中,这可能看起来像:一些 API 定义了宏以原创 2022-06-22 09:19:07 · 239 阅读 · 0 评论 -
第五章 操作位和位串
有时可能希望在基于数据平台的应用程序中存储一系列相关的布尔值。可以创建许多布尔变量,也可以将它们存储在数组或列表中。或者可以使用称为“位串”的概念,它可以定义为位序列,首先呈现最低有效位。位串允许您以非常有效的方式存储此类数据,无论是在存储空间还是处理速度方面。位串可以以两种方式之一存储,作为压缩字符串或整数。如果在没有上下文的情况下听到术语“位串”,则表示位序列存储为压缩字符串。本文向介绍了这两种类型的位串,然后介绍了一些可用于操作它们的技术。存储位序列的最常见方式是在位串中,这是一种特殊的压缩字符串。除原创 2022-06-21 09:43:32 · 1461 阅读 · 0 评论 -
第四章 锁定和并发控制(四)
增量锁定具有潜在危险,因为它可能导致称为死锁的情况。当两个进程各自对已被另一个进程锁定的变量断言增量锁定时,就会出现这种情况。因为尝试的锁是增量的,所以现有的锁不会被释放。结果,每个进程在等待另一个进程释放现有锁的同时挂起。举个例子:此 命令不返回;进程被阻塞,直到进程 释放这个锁。此 命令不返回;进程被阻塞,直到进程 释放这个锁。但是,进程 被阻塞,无法释放锁。现在这些进程都在等待对方。有几种方法可以防止死锁:如果发生死锁,可以使用管理门户或 本节介绍在实践中使用锁的基本方法。锁经常用于控制对存原创 2022-06-20 09:07:08 · 187 阅读 · 0 评论 -
第三章 锁定和并发控制(三)
使用升级锁来管理大量锁。当锁定数组的节点时,它们是相关的,特别是当将多个节点锁定在同一下标级别时。当给定进程在同一数组中的给定下标级别创建了超过特定数量(默认为 )的升级锁时, 将删除所有单独的锁名称并用新锁替换它们。新锁位于父级,这意味着数组的整个分支被隐式锁定。示例(如下所示)演示了这一点。应用程序应在合适的情况下尽快释放特定子节点的锁(与非升级锁完全相同)。当释放锁时, 会减少相应的锁计数。当的应用程序移除足够多的锁时,会移除父节点上的锁。第二小节显示了一个示例。假设有 个 形式的锁,其中 表示日原创 2022-06-18 09:22:36 · 233 阅读 · 0 评论 -
第二章 锁定和并发控制(二)
如上所述,如果您将 指定为 , 会添加锁。但是,如果使用零超时锁定父节点,并且已经在子节点上锁定,则忽略零超时并使用内部 秒超时。要删除默认类型的锁,请使用 命令,如下所示:如果执行此命令的进程拥有具有给定名称的锁(默认类型),则此命令将删除该锁。或者,如果进程拥有多个锁(默认类型),此命令将删除其中一个。或者删除另一种类型的锁:其中 是一串锁类型代码。为了完整起见,本节讨论 命令的其他基本变体:使用它来创建简单的锁并使用它来删除所有锁。这些变化在实践中并不常见。对于 命令,如果省略 运算原创 2022-06-17 09:28:04 · 194 阅读 · 0 评论 -
第一章 锁定和并发控制制(一)
任何多进程系统的一个重要特征是并发控制,即防止不同进程同时更改特定数据元素的能力,从而导致损坏。 提供了一个锁管理系统。本文提供了一个概述。此外, 类提供了一种控制对象并发访问的方法,即 的并发参数和该类的其他方法。这些方法最终使用本文讨论的 ObjectScript 命令。所有持久对象都继承这些方法。同样,系统会自动对 、 和 操作执行锁定(除非指定 关键字)。 类还提供方法 、、、、 和 。基本的锁定机制是 命令。此命令的目的是延迟一个进程中的活动,直到另一个进程发出可以继续进行的信号。锁本身原创 2022-06-16 09:16:16 · 372 阅读 · 0 评论