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

当“断言”(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.mzph.cn/bicheng/1185.shtml

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

相关文章

上海计算机学会2020年7月月赛C++丙组T2感应门

题目描述 感应门会在有人经过的时候自动打开&#xff0c;冷却 d 秒后自动关闭。如果有人在感应门打开的状态下通过&#xff0c;那么冷却时间会重置&#xff0c;重新冷却 d 秒后再关闭。 在一段时间内&#xff0c;有 n 个人陆续通过了感应门&#xff0c;他们通过感应门的时间点…

Scikit-Learn

机器学习中的重要角色 Scikit-Leran&#xff08;官网&#xff1a;https://scikit-learn.org/stable/&#xff09;&#xff0c;它是一个基于 Python 语言的机器学习算法库。Scikit-Learn 主要用 Python 语言开发&#xff0c;建立在 NumPy、Scipy 与 Matplotlib 之上&#xff0c;…

【python】使用python和selenium实现某平台自动化上传作品的全步骤

第一&#xff0c;我们需要下载python并安装 下载地址&#xff1a;https://www.python.org/downloads/release/python-3123/ 3.x版本的python自带pip工具&#xff0c;因此不需要额外下载。 ModuleNotFoundError: No module named seleniumpip用于下载python适用的各类模块&…

Proxy 代理

意图 为其它对象提供一种代理以控制这个对象的访问。 结构 Proxy保存一个引用使得代理可以访问实体&#xff1b;提供一个与Subject的接口相同的接口&#xff0c;使代理可以用来替代实体&#xff1b;控制实体的存取&#xff0c;并可能负责创建和删除它&#xff1b;其他功能依赖…

关于游戏IP的小讨论

大家好&#xff0c;我是阿赵。   我们平常玩的游戏&#xff0c;很多都是有知识产权(Intellectual Property,简称IP)的。比如游戏内容是某著名动漫、电视剧或者小说之类。阿赵我最近一年多以来&#xff0c;正在做一个日本著名动画IP的游戏。   这个日本动漫&#xff0c;在我…

用户体验至上:独立站脱颖而出的关键要素解析

在数字化时代&#xff0c;独立站成为了许多品牌和企业展示自身形象、推广产品、建立客户联系的重要平台。然而&#xff0c;要想在众多的独立站中脱颖而出&#xff0c;吸引并留住用户&#xff0c;良好的用户体验至关重要。本文Nox聚星将和大家探讨如何做好独立站的用户体验&…

【Linux深造日志】运维工程师必会Linux常见命令以及周边知识!

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《linux深造日志》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引入 哈喽各位宝子们好啊&#xff01;我是博主鸽芷咕。日志这个东西我相信大家都不陌生&#xff0c;在 linxu/Windows 系统…

【自定义类型详解】完结篇——联合体(共用体)与枚举详解

先赞后看已成习惯&#xff01;&#xff01;&#xff01; 联合体 1. 联合体的定义 联合体又叫共用体&#xff0c;它是一种特殊的数据类型&#xff0c;允许您在相同的内存位置存储不同的数据类型。给联合体其中⼀个成员赋值&#xff0c;其他成员的值也会跟着变化。 联合体的结…

kaggle 房价预测 得分0.53492

流程 导入需要的包引入文件,查看内容数据处理调用模型准备训练输出结果 导入需要的包 import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns from sklearn.model_selection import train_test_split from sklearn.linear_model i…

独孤思维:集中火力赚钱,单点爆破

独孤的粉丝体量比较小&#xff0c;不如很多大咖。 所以&#xff0c;独孤给自己设定了一个规则&#xff1a; 即自己体量不够大的时候&#xff0c;这一段时间&#xff0c;只主推一个项目。 独孤之前同时推了好几个项目的时候。 好多粉丝过来问&#xff0c;独孤&#xff0c;你…

js生成word

js生成word 下载依赖 npm install html-docx-js引入 import htmlDocx from html-docx-js/dist/html-docx;代码 //参数 html 文件名字 下载完执行回调函数 function html2word (html,fileName,callback){const converted htmlDocx.asBlob(html);const link document.cre…

适合各大资源网投稿html源码

源码介绍 适合各大资源网投稿html源码&#xff0c;源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面&#xff0c;重定向这个界面 效果预览 源码下载 适合各大资源…

Linux gettid()系统调用源码分析

1、gettid()系统调用作用 gettid() 是一个Linux系统调用&#xff0c;用于获取当前进程的线程ID。在使用此系统调用时&#xff0c;你需要包含 <sys/syscall.h> 头文件&#xff0c;并且可以通过直接调用或使用 syscall() 函数来进行系统调用。 注意&#xff1a;ps 中显示的…

数据分析(1)

数据分析基础&#xff08;1&#xff09; 为了让刚开始学习的朋友对数据分析有一个清晰的整体认识&#xff0c;因此笔者在此对数分进行一个较为详细的介绍有助于大家更好的在宏观层面进行理解&#xff0c;避免在后续学习中产生迷茫。 数据分析的概念 定义&#xff1a;数据分析…

Oracle体系结构初探:聊聊REDO

上一篇文章写了undo&#xff08;文章链接&#xff1a;聊聊UNDO&#xff09;&#xff0c;这篇和大家一起聊聊redo。redo如果按照我的傻瓜翻译&#xff0c;意为再次去做、重新去做。Oracle官方对于redo的描述是&#xff1a;记录对数据所做的所有更改&#xff0c;包括未提交和已提…

Vue3——组件基础

组件基础 1. 组件定义与使用 1.1 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>组件基础&l…

Docker - 镜像、容器、仓库

原文地址&#xff0c;使用效果更佳&#xff01; Docker - 镜像、容器、仓库 | CoderMast编程桅杆Docker - 镜像、容器、仓库 提示 这个章节涉及到 Docker 最核心的知识&#xff0c;也是在使用过程中最常使用到的&#xff0c;需要重点学习。 什么是Docker镜像、容器、仓库&…

leetcode:438. 找到字符串中所有字母异位词

给定两个字符串 s 和 p&#xff0c;找到 s 中所有 p 的 异位词 的子串&#xff0c;返回这些子串的起始索引。不考虑答案输出的顺序。 异位词 指由相同字母重排列形成的字符串&#xff08;包括相同的字符串&#xff09;。 示例 1: 输入: s "cbaebabacd", p "…

前端工程化01-复习jQuery当中的AJAX

4.1、基础概念 什么是服务器 一台存储网站内容、网站文件的电脑 什么是资源 网站中使用的文件&#xff08;html、css、图片、…&#xff09;这些东西就叫做资源数据也是服务器上的资源&#xff0c;而且是一个网站的灵魂 客户端 客户端应该指上网的设备但是在前端开发中&a…

Web后端-请求响应

黑马程序员JavaWeb开发教程 文章目录 一、请求1、简单参数2、实体参数3、数组集合参数&#xff08;1&#xff09;数组参数&#xff08;2&#xff09;集合参数 4、日期参数5、json参数&#xff08;1&#xff09;在Postman中怎么发起请求来传递JSON格式的请求参数&#xff08;2&a…