我已经编程好几个月了,在课堂上经常使用的一个词是“上下文”。比如ServletContext (Java), Activity (Android), Service (Java, Android), NSManagedContext (Objective-C, iOS)。
通过查字典,我知道这个词的意思是:处境,环境,情况等。然而,因为我的母语不是英语,我不知道我应该直接翻译成什么。例如,如果我要编写一个命名为SomeClassContext的类,或者一个具有上下文参数的方法,我就不知道什么时候应该将其命名为context,因为我不理解它。
我一直在Stack Overflow上搜索上下文,但没有问题/答案能够帮助我。
如果有人能给我解释一下,我将非常高兴。
假设你去牙医那里拔了一颗牙。
当接待员问你的名字时,这是他们开始约会所需的信息。在这个例子中,你的名字是上下文信息。所以在看牙医的时候,你需要提供你的名字来拔牙。
现在假设你走到银行。
在银行,你要求取100美元。柜员在给你钱之前需要确认你的身份,所以你可能需要向他们出示驾照或刷你的ATM卡并输入你的密码。无论哪种方式,你所提供的都是上下文。出纳使用这些信息来推动交易。然后他们可能会问你想从哪个账户中提取。当你回答“我的储蓄账户”时,那就更有背景了。
你提供的背景信息越多,对方就有越多的知识来帮助处理你的请求。有时上下文是可选的(比如在谷歌搜索中输入越来越多的单词以获得更好的结果),有时它是必须的(比如在自动取款机上提供你的密码)。不管怎样,这些信息通常都有助于完成工作。
现在让我们假设你拿着100美元买了一张机票,在你的口腔愈合期间飞往一个温暖的地方。
你到达了一个阳光明媚的目的地,但你的包没能到达。在机场系统的某个地方丢失了。所以,你拿着你的“行李认领票”(上面有条形码的贴纸)去行李丢失处。柜台后面的人首先要的是那张有你行李号的机票。这是一些必需上下文的例子。
但是行李员会问你更多关于你的包的信息,这样他们就可以更容易地找到你的包。他们问:“这是什么颜色?”它的尺寸是多少?它有轮子吗?它是硬的还是软的?虽然他们不一定需要这些信息,但如果你提供这些信息,就能帮助他们缩小范围。它减少了问题区域。它使搜索速度更快。这是可选的上下文。
有趣的是:对于很多软件和api来说,必需的上下文通常是方法签名中的实际参数,而可选的上下文则放在其他地方,比如一个灵活的键值映射,它可以包含任何内容(可能是空的),或者放到线程本地存储中,在需要时可以访问它。
上面的例子来自现实生活,但你可以很容易地将它们映射到计算机科学领域。例如,HTTP报头包含上下文信息。每个报头都与正在发出的请求有关。或者当您发送全局事务ID作为两阶段提交流程的一部分时,该事务ID就是上下文。它帮助事务管理器协调工作,因为它是关于当前总体任务的信息。
这是2015年,在这篇文章开始的5年之后。
尽管如此,我发布这条消息是为了帮助那些像我一样难以理解“上下文”的人
我绝不声称在Java程序中使用了Context——所以完全取决于你用硬编码来编写Context
所以是这样的:-
"概念上的上下文"和"告诉我更多"是一样的当客户
向服务器发出请求-以便执行请求
服务员说:“给我更多的信息,这样我可以帮助你。”因此,
除了请求,客户端还提供了一组详细信息。的
服务器从包中选择所需的所有信息
为请求服务。这个bundle叫做Context
E.g.
病人去找医生说给我治疗(“我头痛”)医生
办公室给了病人一张表格让他们填写。病人填写表格。表单
由医生用于执行“treat_me”请求。
下面是请求现在的样子:
treat_me ( "i have a headache", filled_form_num_23321 )
下面是filled_form_num_23321的外观:
问题:什么导致了这种情况?A.昨晚喝了10杯纯苏格兰威士忌
病人姓名?年龄?98
在这个事务中,filled_form_num_23321是“context”。
希望这有助于澄清“上下文”的概念。