假设您去看牙医拔出牙齿。
当接待员询问您的姓名时,这就是他们开始约会所需的信息。在此示例中,您的名字是上下文信息。因此,在上下文看牙医,你需要提供您的姓名,让您的牙拔掉。
现在,假设您走到银行。
在银行,您要求提取$ 100。出纳员需要先确定您的身份,然后才能给您钱,因此您可能必须向他们出示驾驶执照或刷ATM卡并输入PIN码。无论哪种方式,您提供的都是context。柜员使用此信息来推动交易前进。然后,他们可能会问您您要从哪个帐户中提款。当您回答“我的储蓄帐户”时,就更能说明问题了。
您提供的上下文越多,另一方就必须更多地帮助您处理请求。有时上下文是可选的(例如,在您的Google搜索中键入越来越多的单词以获得更好的结果),有时则是必需的(例如,在ATM上提供您的PIN码)。无论哪种方式,通常都是有助于完成工作的信息。
现在,假设您拿$ 100买了张机票,在嘴巴愈合的时候在温暖的地方飞行。
您到达了一个阳光明媚的目的地,但您的皮包却没有成功。它在机场系统的某个地方丢失了。因此,您将“行李认领票”(带有条形码的不干胶标签)带到“行李寄存处”。桌子后面的人首先要问的是那张票上有您的行李号码。这是一些必需上下文的示例。
但是随后,行李员要求您提供有关您的行李的更多信息,以便他们可以更轻松地找到它。他们问:“ 它是什么颜色?它是什么尺寸?它有轮子吗?是硬的还是软的?虽然他们不一定需要这些信息,但如果您提供这些信息,它可以缩小范围。问题的区域。这使得搜索速度更快。这是可选的上下文。
这是有趣的部分:对于许多软件和API,所需的上下文通常以方法签名中的实际参数结尾,而可选的上下文则位于其他地方,例如可以包含任何内容(可能为空)的灵活键值映射)或放入线程本地存储中(如果需要,可以在其中进行访问)。
上面的示例来自现实生活,但是您可以轻松地将它们映射到计算机科学领域。例如,HTTP标头包含上下文信息。每个标题都与有关正在发出的请求的信息有关。或者,当您在两阶段提交过程中沿着全局事务ID发送时,该事务ID为上下文。它可以帮助事务经理协调工作,因为它是有关手头总体任务的信息。
希望有帮助。