断言(Assertion)在IT技术中的确切含义— 基于四类典型场景的分析

news2024/12/24 2:58:07

当“断言”(Assertion)一词成为IT术语时,语义的混沌性和二义性也随之而生。那么,何为断言?断言何为?实际上,只需分析四种典型场景,确切答案和准确描述就将自然显现。
在SAML(Security Assertion Markup Language,安全断言标记语言)一词中,含有Assertion一词。
在SOA的服务质量(QoS)的策略中,有Policy Assertions(策略断言)这一专业术语。
当使用Visual Studio写C/C++代码时,在编译过程中,有时会遇到Assertion Failed对话框弹出的情况。
在SCCM服务器的日志中,有时会出现“SQL Server Assertion”的警告信息。
那么,断言(Assertion)在IT技术中的确切含义是什么?
简言之,断言(Assertion),或者是系统中实体的自我描述(声明),或者是对系统中实体的符合性检验(要求),或者是两者兼而有之。具体而言,如果系统中实体的自我描述通过了符合性型检验(即,声明符合要求),那么,就允许提供服务或者允许系统继续运行,反之,就拒绝提供服务或者使得系统中断运行。
应将“断言”(Assertion)理解为关键的因而是“强烈的”陈述,因为,与条件(condition)、要求(requirement)、准则(criteria)等词相比,断言(Assertion)具有更为强烈的强制性含义。
以下,基于Merriam-Webster字典中动词Assert和名词Assertion的原意,对上述四类场景作简要分析。

一、在字典中的原意
(1)Assert
① 强烈的陈述或声明
to state or declare positively and often forcefully or aggressively(积极主动地、通常是强有力的或带有侵略性的陈述或声明)
例句:The suspect continued to assert his innocence(嫌犯继续坚持自己的清白)
② 强制性的接受或承认
to compel or demand acceptance or recognition of (something, such as one's authority) — 迫使或要求接受或承认(某事,例如,某人的权威)
例句:… the confrontations that inevitably occur [between orangutans] when several males try to assert dominance …(……当几只雄性猩猩试图夺取统治地位时,[猩猩之间]不可避免地会发生冲突……)
③ 证明存在性
to demonstrate the existence of(证明某种事物或属性的存在)
例句:He wished to vindicate himself in some way, to assert his manhood(他希望以某种方式证明其正当性,以证明自己够男人)

(2)Assertion
1. insistent and positive affirming, maintaining, or defending (as of a right or attribute) — 坚持和积极的确认、维护或保卫(作为权利或属性)
2. a declaration that something is the case — 声明某事属实

二、IT技术中的引申含义
基于以上文字分析,可对Assertion在IT技术中的引申含义进行分析。

(1)SAML
在SAML(Security Assertion Markup Language,安全断言标记语言)中,Assertion意为“强制性的要求,必须完全实现的要求,必须毫无疑义地得到证明的要求”。正是因为SAML在安全性方面的高强度要求(认证交换、消息完整性、消息保密等),使得“Assertion”一词被选为用于表述的文字。
下图为SAML的工作原理图(截图引用)。

具体而言,一个系统实体(Entity,可理解为客户端)发送应用请求,其目的是访问正处于被保护状态的资源,此时,系统中的凭证收集器对与此系统实体相关联的认证断言、属性断言和授权断言进行认证,在成功确认有效性后,才决定将访问权限授予此系统实体(客户端)。策略实施点根据该授予的权限来处理具体的应用请求。在这个过程中,SAML断言(包括认证断言、属性断言和授权断言)被封装在 SAML 协议中在不同实体间传递。

(2)Policy Assertions(策略断言)
在SOA和微服务架构中,服务提供者都会要求服务消费者符合某种策略,比如,要求服务消费者提供Kerberos安全标识才能获得某项服务,这些要求,就被定义为Policy Assertions,而一项Policy(策略)可以包括多个Policy Assertions。
策略断言,就是对服务消费者的强制性的技术要求,通常与安全性密切相关,在被证明有效后方可获得服务提供者的服务

(3)在Visual Studio中的Assertion Failed对话框
An assertion statement specifies a condition that you expect to hold true at some particular point in your program. If that condition does not hold true, the assertion fails, execution of your program is interrupted, and this dialog box appears.
翻译如下:
断言语句指定了期望在程序中某个特定点上保持为真的条件。如果该条件不成立,则断言失败,程序的执行被中断,并出现此对话框。

在此种场景中,C/C++代码里的Assertion语句表达了预期为真的条件,即,代码编写者“期待”条件为真。运行时,若条件果然为真,则继续运行后续代码,否则(条件为假),就中断运行并弹出错误对话框。

(4)在警报中出现“SQL Server断言”
此种情况多出现在SCCM环境中,与运维相关。
:SCCM是微软的System Center Configuration Manager,现在,这一产品已更名为Endpoint Configuration Manager并属于Endpoint Manager suite。
① “源”为:CONFIGMGRSEC
“CONFIGMGRSEC”是在字符串“CONFIGuration ManaGeR SECondary”中取大写字母而形成。
具体而言,如果在SCCM环境中安装辅助站点(第2个Site站点,The secondary site),在安装过程中,可选择自动安装SQL Express版本并配置使用,而默认的SQL Instance名称就是“CONFIGMGRSEC”。
故此,这一警报来自于SCCM环境中的辅助站点中的SQL Server Express版本。
② 警报的源路径为:安装为SCCM第2个站点(The secondary site)的服务器。
③ 具体的警告信息为:
SQL Server Assertion: File: <%s>, line=%d Failed Assertion = '%s'. This error may be timing-related. If the error persists after rerunning the statement, use DBCC CHECKDB to check the database for structural integrity, or restart the server to ensure in-memory data structures are not corrupted.
如下图所示:

微软对“Assert”的解释 -- 点击可打开连接。
Asserts are statements placed in the code of an application to ensure that certain conditions are satisfied.   In that respect an assert behaves similar to an error.   You can think of asserts as emphatic, firm errors.   The condition specified must be met for the program to continue regular execution.  If the condition isn't met, the assert is raised.
此段叙述意为:
断言是置于应用程序代码中的语句,以此,确保某些条件的满足性。就此而言,断言的行为类似于错误。可将断言视为被强调的无疑的错误。唯有被指定的条件满足,程序才可继续正常执行,否则就引发断言。
与上述场景(3)相似,满足条件就继续运行,不满足条件就中断。
对此类问题的解决,微软官方文档给出的建议是:尽可能地安装SQL Server的累计更新(Cumulative Update),再使用命令“DBCC CHECKDB”执行检查,若正常则保持观察。此后,若再次出现此类情况,应在搜集相关信息后向微软技术支持寻求帮助。
在具体的技术实践中,在安装累计更新之后,问题能得到解决。
即便此类报警仍然持续出现,只要没有其他异常情况出现,就可安全地忽略之,除非出现因assert而导致产生dump文件(很可能导致SQL Server失去响应)的现象。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1613385.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【讲解下Spring Boot单元测试】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

数据可视化(七):Pandas香港酒店数据高级分析,涉及相关系数,协方差,数据离散化,透视表等精美可视化展示

Tips&#xff1a;"分享是快乐的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不仅有知识的海洋&#x1f30a;&#xff0c;还有满满的正能量加持&#x1f4aa;&#xff0c;快来和我一起分享这份快乐吧&#x1f60a;&#xff01; 喜欢我的博客的话&#xff0c;记得…

websocket 请求头报错 Provisional headers are shown 的解决方法

今日简单总结 websocket 使用过程中遇到的问题&#xff0c;主要从以下三个方面来分享&#xff1a; 1、前端部分 websocket 代码 2、使用 koa.js 实现后端 websocket 服务搭建 3、和后端 java Netty 库对接时遇到连接失败问题 一、前端部分 websocket 代码 <template>…

B2024 输出浮点数 洛谷题单

首选需要进行了解的就是%a.bf所代表的含义就行了&#xff0c;直接莽了&#xff0c;没啥解释的笑脸&#x1f644; 在 Python 中&#xff0c;%a.bf 中的参数 a 和 b 是用来格式化浮点数的输出的&#xff0c;具体含义如下&#xff1a; a 表示总输出宽度&#xff0c;包括小数点、…

Kubernetes Kubelet 的 Cgroups 资源限制机制分析

前言 容器技术的两大技术基石&#xff0c;想必大家都有所了解&#xff0c;即 namespace 和 cgroups。但你知道 cgroups 是如何在 kubernetes 中发挥作用的吗&#xff1f;kubelet 都设置了哪些 cgroups 参数来实现对容器的资源限制的呢&#xff1f;本文就来扒一扒 Kubernetes k…

Docker - WEB应用实例

原文地址&#xff0c;使用效果更佳&#xff01; Docker - WEB应用实例 | CoderMast编程桅杆Docker - WEB应用实例 在之前的章节中&#xff0c;仅对普通容器进行了演示&#xff0c;但在实际中常常使用到 Docker 容器中的 WEB 应用程序。 运行一个WEB应用 拉取镜像 创建一个容器…

VBA技术资料MF144:将PDF首页作为对象插入工作表

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…

四.RocketMQ的几种消息发送方式应用

RocketMQ的几种消息发送方式应用 一&#xff1a;普通消息1&#xff09;发送同步消息2&#xff09;发送异步消息3&#xff09;单向发送消息4&#xff09;消费消息-负载均衡模式5&#xff09;消费消息-广播模式 二&#xff1a;顺序消息1.顺序消息指的是:严格按照消息的发送顺序进…

第 394 场 LeetCode 周赛题解

A 统计特殊字母的数量 I 哈希&#xff1a;遍历然后枚举 class Solution {public:int numberOfSpecialChars(string word) {unordered_map<char, int> m;for (auto ch : word)m[ch] 1;int res 0;for (char ch a; ch < z; ch)if (m.count(ch) && m.count(A …

TPM RNG是什么?

TPM是什么&#xff1f; TPM&#xff08;可信平台模块&#xff09;用于提高电脑的安全性。 BitLocker 硬盘加密、Windows Hello 等服务都使用它来安全地创建和存储加密密钥&#xff0c;并确认设备上的操作系统和固件是正确的&#xff0c;没有被篡改。 虽然 TPM 2.0 标准允许英特…

Qt实现XYModem协议(五)

1 概述 XMODEM协议是一种使用拨号调制解调器的个人计算机通信中广泛使用的异步文件运输协议。这种协议以128字节块的形式传输数据&#xff0c;并且每个块都使用一个校验和过程来进行错误检测。使用循环冗余校验的与XMODEM相应的一种协议称为XMODEM-CRC。还有一种是XMODEM-1K&am…

电磁仿真--S参数测试中的参考阻抗

目录 1. 背景介绍 2. 参考阻抗 2.1 简单二端口网络 2.2 离散端口模型 3. 阻抗归一化的指定值 4. 总结 1. 背景介绍 当我们使用网络分析仪来测量S参数&#xff0c;或借助示波器来检测高速信号时&#xff0c;选择仪器系统预设的参考阻抗变得异常简便&#xff0c;通常这个值…

Android14 - WindowManagerService之客户端Activity布局

Android14 - WindowManagerService之客户端Activity布局 一、主要角色 WMS作为一个服务端&#xff0c;有多种客户端与其交互的场景。我们以常见的Activity为例&#xff1a; Activity&#xff1a;在ActivityThread构建一个Activity后&#xff0c;会调用其attach方法&#xff0c;…

FPGA Quartus IP核 打开使用

两种Quartus版本下的IP核&#xff0c;从使用者的角度来看仅仅是配置界面不同&#xff0c;在参数设置和使用方法上基本一致。本文以“MegaWizard Plug-In Manager”中的FIR Compiler IP核使用为例。 Quartus的FIR IP核属于收费IP&#xff0c;如果是个人学习使用需要对IP核单独破…

OpenStack 常见模块详解

目录 一、OpenStack 架构 二、控制台 Dashboard 三、身份认证服务 Keystone 1&#xff09;用户&#xff08;user&#xff09; 2&#xff09;项目&#xff08;project&#xff09; 3&#xff09;角色&#xff08;role&#xff09; 4&#xff09;服务&#xff08;serv…

Linux内核驱动开发-字符设备驱动框架

1前置条件 &#xff08;1&#xff09;【linux】内核编译结束 &#xff08;2&#xff09;【linux】目录配置跳转文件&#xff1a;补充&#xff1a;配置的跳转文件只能在【linux】目录下使用&#xff0c;子目录无法使用2驱动框架 2.1编写驱动程序 #include <linux/init.h&g…

ConcurrentHashMap 源码分析(二)

一、序言 本文和大家探讨一下 ConcurrentHashMap#get() 方法的源码。 二、源码概览 public V get(Object key) {// 定义变量Node<K,V>[] tab; Node<K,V> e, p; int n, eh; K ek;// 计算键的哈希值int h spread(key.hashCode());// 检查哈希表是否为空&#xff…

前端三大件速成 02 CSS(1)CSS是什么、CSS的四种引入方式、CSS的选择器和优先级、继承

文章目录 一、CSS是什么二、CSS的四种引入方式1、行内式2、嵌入式3、链接式&#xff08;推荐&#xff09;4、导入式 三、CSS的选择器1、基本选择器2、组合选择器3、属性选择器4、伪类 四、选择器的优先级1、选择器的权值2、附加说明 五、继承 一、CSS是什么 CSS为层叠样式表&a…

伪分布Hadoop下安装Hive

一、下载并安装Mysql &#xff08;1&#xff09;下载mysql安装包&#xff08;mysql-8.0.26-1.el7.x86_64.rpm-bundle.tar&#xff09; 下载官网&#xff1a;MySQL :: Download MySQL Community Server (Archived Versions)https://downloads.mysql.com/archives/community/ &…

在centos系统中使用boost库

打开MobaXterm软件 下载 boost_1_85_0.tar.gz tar -zxvf boost_1_85_0.tar.gz解压缩成boost_1_85_0文件夹 双击arrayDemo.cpp 在里面可以编写代码 arrayDemo.cpp #include <boost/timer/timer.hpp> #include <boost/array.hpp> #include <cmath> #inc…