我已经编程好几个月了,在课堂上经常使用的一个词是“上下文”。比如ServletContext (Java), Activity (Android), Service (Java, Android), NSManagedContext (Objective-C, iOS)。
通过查字典,我知道这个词的意思是:处境,环境,情况等。然而,因为我的母语不是英语,我不知道我应该直接翻译成什么。例如,如果我要编写一个命名为SomeClassContext的类,或者一个具有上下文参数的方法,我就不知道什么时候应该将其命名为context,因为我不理解它。
我一直在Stack Overflow上搜索上下文,但没有问题/答案能够帮助我。
如果有人能给我解释一下,我将非常高兴。
我总是认为上下文是与我正在处理的对象或结构相关的特定状态。
For example, when you are using drawRect in a view (where all drawing must be done for a view) you must always get the currentGraphicsContext into which you will issue your core graphics statements. This context contains things like bounds of the view, the stroke colour, the stroke thickness for drawing a line, the fill color for filling a closed Path etc. this context (like most others) is just the current state at this point in time. so think of the graphics context in this case as just a set of state such as
描边厚度为1.5像素
填充颜色为黑色
视界为(155,200)
笔画颜色为红色
它基本上是当前时间点的状态……
假设你去牙医那里拔了一颗牙。
当接待员问你的名字时,这是他们开始约会所需的信息。在这个例子中,你的名字是上下文信息。所以在看牙医的时候,你需要提供你的名字来拔牙。
现在假设你走到银行。
在银行,你要求取100美元。柜员在给你钱之前需要确认你的身份,所以你可能需要向他们出示驾照或刷你的ATM卡并输入你的密码。无论哪种方式,你所提供的都是上下文。出纳使用这些信息来推动交易。然后他们可能会问你想从哪个账户中提取。当你回答“我的储蓄账户”时,那就更有背景了。
你提供的背景信息越多,对方就有越多的知识来帮助处理你的请求。有时上下文是可选的(比如在谷歌搜索中输入越来越多的单词以获得更好的结果),有时它是必须的(比如在自动取款机上提供你的密码)。不管怎样,这些信息通常都有助于完成工作。
现在让我们假设你拿着100美元买了一张机票,在你的口腔愈合期间飞往一个温暖的地方。
你到达了一个阳光明媚的目的地,但你的包没能到达。在机场系统的某个地方丢失了。所以,你拿着你的“行李认领票”(上面有条形码的贴纸)去行李丢失处。柜台后面的人首先要的是那张有你行李号的机票。这是一些必需上下文的例子。
但是行李员会问你更多关于你的包的信息,这样他们就可以更容易地找到你的包。他们问:“这是什么颜色?”它的尺寸是多少?它有轮子吗?它是硬的还是软的?虽然他们不一定需要这些信息,但如果你提供这些信息,就能帮助他们缩小范围。它减少了问题区域。它使搜索速度更快。这是可选的上下文。
有趣的是:对于很多软件和api来说,必需的上下文通常是方法签名中的实际参数,而可选的上下文则放在其他地方,比如一个灵活的键值映射,它可以包含任何内容(可能是空的),或者放到线程本地存储中,在需要时可以访问它。
上面的例子来自现实生活,但你可以很容易地将它们映射到计算机科学领域。例如,HTTP报头包含上下文信息。每个报头都与正在发出的请求有关。或者当您发送全局事务ID作为两阶段提交流程的一部分时,该事务ID就是上下文。它帮助事务管理器协调工作,因为它是关于当前总体任务的信息。
作者常常假定读者对“上下文”这个词所处的语境有详细的了解。
如何在下面的句子“the ?”运行时创建一个上下文,其中可以存储可能的注入值。这个上下文可以被修改,例如,应用程序和框架可以向上下文添加元素。
It would seem the author is using context to mean some kind of container, perhaps a heap, that holds the context of something. It has become buzz word that is taking on many meaning and confusing things. Is it the elements that are the context and are being stored in a context. To reduce the confusion of the context that the word context is being used it could be said that "the runtime creates a container to store the context in the form of elements." Better yet "the runtime creates a container to store the state in the form of elements and this container with it's state is called the CONTEXT."
这是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”。
希望这有助于澄清“上下文”的概念。