编程中的术语“上下文”?

我已经编程了几个月,而且一个常用的单词是类中的“上下文”。 像ServletContext (Java), Activity (Android), Service (Java,Android), NSManagedContext (Objective-C,iOS)。

通过查看词典,我发现这个词的意思是:情况,环境,情况等。但是,因为我不是英语母语的人,所以我不明白我应该直接把它翻译成什么。 例如,如果我要编写一个名为SomeClassContext的类或者一个具有上下文参数的方法,那么我就不能理解何时应该将其命名为上下文,因为我不了解它。

我一直在寻找堆栈溢出的上下文,但没有问题/答案能够帮助我。

如果有人能给我解释,我会很高兴。

比方说,你去看牙医拔牙。

当接待员问你的名字,这是他们需要的信息,以开始预约。 在这个例子中,你的名字是上下文信息 。 所以在访问牙医时,你需要提供你的名字来拉你的牙齿。

现在让我们说你走到银行。

在银行,你要求提取100美元。 出纳员在给您钱之前需要确定您的身份,所以您可能需要向他们出示驾驶执照或刷卡提款卡并input您的密码。 无论哪种方式,你提供的是上下文 。 出纳员使用这些信息来推动交易。 他们可能会问你想退出哪个账户。 当你回答“我的储蓄账户”时 ,这更是上下文

您提供的背景越多,对方的知识越多,以帮助处理您的请求。 有时上下文是可选的(就像在你的谷歌search中input越来越多的单词来获得更好的结果),有时它是必需的(例如在ATM上提供你的PIN号码)。 无论哪种方式,这是通常有助于完成的东西的信息。

现在让我们假设你拿着你的100美元购买机票,在你的嘴巴愈合的同时,飞到一个温暖的地方。

你到达一个很好的阳光明媚的目的地,但你的包没有成功。 它在机场系统的某处丢失了。 所以,你把你的“行李索赔票”(贴有条形码的标签)带到“丢失行李处”。 办公桌后面的人要问的第一件事就是带上行李号的机票。 这是一些需要的上下文的例子。

但是,那么行李的人要求你提供更多关于你的行李的信息这样他们就可以更容易地find它。 他们问:“ 它是什么颜色的?它有多大?它有轮子吗?它是硬的还是软的?虽然他们不一定需要这些信息,但是如果你提供这些信息,问题区域,它使search更快,这是可选的上下文

以下是一个有趣的部分:对于许多软件和API, 所需的上下文通常以方法签名中的实际参数结束,而可选上下文则在其他地方,比如可以包含任何内容的灵活的键值映射(并且可能是空的)或线程本地存储,如果需要可以访问它。

上面的例子来自现实生活,但是您可以轻松地将它们映射到计算机科学领域。 例如,HTTP标头包含上下文信息。 每个标题都与正在进行的请求有关的信息有关 。 或者,当您作为两阶段提交过程的一部分发送全局事务ID时,该事务ID是上下文。 它有助于交易pipe理者协调工作,因为它是关于手头整体任务的信息。

希望有所帮助。

上下文可以被看作是传递信息的桶。 它通常用于传递不一定直接绑定到方法调用的东西,但仍然可以是相关的。 一个非专业的描述方式可能是“你可能关心的东西”。

例如,如果你正在编写一个服务来更新数据库中的值,你可能会传入loggingID和新的值。

如果你想要通用接口,你也可以定义一个上下文来传递,这样服务可以执行任意的业务逻辑。 所以你可以在上下文中包含用户authentication,用户会话状态等等,因为服务可以依赖于这些值执行额外的逻辑。

我总是把上下文看作与我正在使用的对象或构造相关的特定状态。

例如,当您在视图中使用drawRect(必须为视图执行所有绘图)时,您必须始终获取将发出核心graphics语句的currentGraphicsContext。 这个上下文包含视图的边界,笔画颜色,绘制线条的笔划厚度,填充闭合的path的填充颜色等等。这个上下文(像大多数其他的)就是这个时间点的当前状态。 所以在这种情况下将graphics上下文想象为一组状态,如

笔画粗细为1.5像素填充颜色为黑色边界的视图是(155,200)笔触颜色为红色

它基本上是当前时间点的状态…

这是2015年 – 这个线程开始的五年后。

尽pipe如此,我发布这个消息来帮助那些像我一样挣扎着理解“上下文”的人,

我决不声称在Java程序中使用过上下文 – 所以它完全取决于你在硬编码中编写上下文所以在这里:

“概念上下文”是一样的“告诉我更多”当客户端向服务器发出请求 – 为了执行请求服务器说:“给我一些更多的信息,以便我可以帮助你”。 因此,与请求一起,客户提供了一系列细节。 服务器从捆绑中挑选并select服务请求所需的所有信息。 这个捆绑包就是所谓的“上下文”

例如

病人去医生说treat_me(“我有一个头痛”)文件办公室给病人填表。 病人填写表格。 该表格被医生用来执行“treat_me”请求。

以下是请求现在的样子:

 treat_me ( "i have a headache", filled_form_num_23321 ) 

这里是filled_form_num_23321看起来如何:

问:导致这种情况的原因是什么? 答:10个整洁的苏格兰最后的晚报
Q.患者姓名? A.乔Bigdrinker
Q.年龄? 98

在这个事务中, filled_form_num_23321是“上下文”。

希望这有助于澄清“语境”的概念。

举一个实际的例子。 比方说,你有一个特定的网页来获取/呈现一些基于用户(即login)和浏览器语言的信息。 获取信息的逻辑与用户和语言无关。 你的页面将会收到一个用户和一个语言……对于逻辑来说,如果是我或你,英语或西class牙语,那么这个逻辑就不重要了。

一些伪代码:

 class FooPage { void handleRequest(RequestContext context) { User user = context.getUser(); Locale locale = context.getLocale(); … do some logic based on the context } } 

这并不困难,但需要一些时间来理解这个概念

上下文是指执行上下文,它是从代码中的给定点可到达的符号,以及在该特定执行中的那些符号的值。

环境是一个重要的概念,因为:

  1. 可执行单元(函数,过程,指令)可能产生不同的结果,或者在不同的环境下performance不同。
  2. 上下文越大或越复杂,代码就越难理解(这就是为什么全局variables不被回避)。

您不必编写上下文类或传递上下文参数。 传递给函数/方法的任何参数在调用时都成为执行上下文的一部分。

即使您不是英语发言者,我build议您阅读“ 代码完成”的副本,以深入浅出地介绍上下文模块化耦合内聚等概念。

命名服务将名称与对象关联起来。 名称和对象之间的关联称为绑定,一组这样的绑定称为上下文。 上下文中的名称可以绑定到使用相同命名约定的另一个上下文; 绑定的上下文被称为子上下文。 例如,在一个文件系统中,一个目录(如/ temp)是一个上下文,它包含文件名和对象之间的绑定,系统可以使用该对象来操作这些文件(通常称为文件句柄)。 如果目录包含另一个目录的绑定(例如,/ temp / javax),则子目录是一个子上下文。

作者经常认为读者对“背景”这个词在上下文中的使用有详细的了解。

如何在下面的句子中定义上下文“运行时创build一个可以存储注入的可能值的上下文,这个上下文可以被修改,例如应用程序和框架可以添加元素到上下文中。

看起来作者正在使用上下文来表示某种容器,也许是一堆容纳某种内容的容器。 这已成为stream行语,这是一个意义重大,令人困惑的事情。 它是上下文的元素,并被存储在上下文中。 为了减less上下文被使用的上下文的混淆,可以说“运行时创build容器来以元素的forms存储上下文”。 更好的是,“运行时创build一个容器来以元素的forms存储状态,这个容器的状态称为上下文(CONTEXT)。

3年后,所以也许有点晚,但是,也许这个线程会帮助你。 它说明“语境”一词在编程上具有技术意义(不仅仅是一种简单的英语含义)。

什么编程语言是上下文无关的?

不知道你是否可以使用它作为一个例子,并拉出一些信息。 我也很想听到技术编程术语“语境”的语言不可知论的解释,

编辑:或者它至less表明,术语“上下文”可以应用在技术,编程上下文(没有打算打算)。 可能在该术语的多个具体应用中。

上下文就是你的应用程序运行的环境。

它提供您的应用程序需要的信息/服务/能力才能正常运行。

HTH

我没有看到在编程环境中解释单词上下文的相关性。

要理解上下文,首先必须了解上下文。 它是recursion的。

语境是一个抽象的词,抽象的词语对某些人来说是很难理解的。 能够抽象地思考是一种礼物。 我并不是说你没有,但是有不同的抽象层次,我认为上下文的抽象层次比你能够轻易掌握的要高。

我不知道你是从哪里来的,但是我确定你的母语里面还有一个关于上下文的词汇,你可能也不理解那个词。

我在编程的上下文中使用了上下文,我可以给你一个例子,但是我真的认为你需要首先理解上下文。