use*_*058 152 language-agnostic programming-languages terminology
我已经编程了几个月了,一个经常使用的词是类中的"上下文".喜欢ServletContext(Java),Activity(Android),Service(Java,Android),NSManagedContext(Objective-C,iOS).
通过查看词典,我看到这个词意味着:情境,环境,环境等等.但是,因为我不是母语为英语的人,所以我不明白我应该直接将其翻译成什么.例如,如果我要编写一个已命名的类SomeClassContext,或者一个具有上下文参数的方法,我不明白何时应该将其命名为context,因为我不理解它.
我一直在寻找Stack Overflow的上下文,但没有问题/答案能够帮助我.
如果有人可以向我提供解释,我会很高兴.
Bri*_*lly 177
假设你去看牙医拔牙.
当接待员询问您的姓名时,他们需要这些信息才能开始预约.在此示例中,您的名称是上下文信息.因此,在访问牙医的情况下,您需要提供您的名字以拉动您的牙齿.
现在让我们说你走到银行.
在银行,你要求提取100美元.出纳员需要在给您钱之前建立您的身份,因此您可能需要向他们出示驾驶执照或刷卡您的ATM卡并输入您的密码.无论哪种方式,您提供的是上下文.出纳员使用此信息来推进交易.然后,他们可能会询问您要退出的帐户.当你回答"我的储蓄账户"时,这就是更多的背景.
您提供的背景越多,另一方有助于处理您的请求的知识就越多.有时上下文是可选的(比如在Google搜索中输入越来越多的单词以获得更好的结果),有时需要(例如在ATM上提供您的PIN码).无论哪种方式,它的信息通常有助于完成工作.
现在让我们假设您花100美元购买机票,在您的嘴痊愈时飞到温暖的地方.
你来到一个阳光明媚的目的地,但你的包不能成功.它在机场系统的某个地方丢失了.因此,您将"行李认领券"(带有条形码的贴纸)带到"行李丢失办公室".桌子后面的人要求的第一件事就是带有行李号码的车票.这是一些必要背景的例子.
但随后行李人会要求您提供有关行李的更多信息,以便他们能够更轻松地找到行李.他们问:" 它的颜色是什么颜色?尺寸是多少?是否有轮子?它是硬还是软?虽然它们不一定需要这些信息,但如果你提供这些信息,它会缩小范围.问题区域.它使搜索更快.这是可选的上下文.
这是有趣的部分:对于许多软件和API,所需的上下文通常最终作为方法签名中的实际参数,可选上下文在其他地方,例如可以包含任何内容的灵活键值映射(可能为空或者进入线程本地存储,如果需要可以访问它.
上面的例子来自现实生活,但您可以轻松地将它们映射到计算机科学领域.例如,HTTP标头包含上下文信息.每个标题涉及有关正在进行的请求的信息.或者,当您作为两阶段提交过程的一部分发送全局事务ID时,该事务ID是上下文.它有助于事务管理器协调工作,因为它是有关手头总体任务的信息.
希望有所帮助.
Tay*_*lor 14
上下文可以看作是传递信息的桶.它通常用于传递不一定直接绑定到方法调用的东西,但仍然可能是相关的.描述它的非专业方式可能是"你可能关心的东西".
例如,如果您正在编写服务以更新数据库中的值,则可能会传入记录ID和新值.
如果需要通用接口,还可以定义要传递的上下文,以便服务可以执行任意业务逻辑.因此,您可以在上下文中包括用户身份验证,用户的会话状态等,因为服务可以执行依赖于这些值的附加逻辑.
小智 12
这是2015年 - 可能在这个线程开始后的几年.
尽管如此,我发布这条消息是为了帮助那些像我一样努力理解"上下文"的人
我没有声称在Java程序中使用了Context - 所以完全取决于你在硬编码中编写Context所以这里是: -
"概念上下文"是相同的"告诉我更多"当客户端向服务器发出请求时 - 为了执行请求,服务器说"给我一些更多的信息以便我可以帮助你".因此,与请求一起,客户端提供一组细节.服务器从捆绑中挑选并选择提供请求所需的所有信息.这个包就是所谓的"上下文"
例如
病人去医生并说treat_me("我头疼")Doc办公室给病人填写一份表格.患者填写表格.医生使用该表格来执行"treat_me"请求.
以下是请求现在的样子:
treat_me ( "i have a headache", filled_form_num_23321 )
Run Code Online (Sandbox Code Playgroud)
这是filled_form_num_23321 看起来如何:
问:导致这种情况的原因是什么?A. 10个整齐的苏格兰最后一个
Q.Patient名称?A. Joe Bigdrinker
Q.Age?98
在这个交易中filled_form_num_23321是"背景".
希望这有助于澄清"语境"的概念.
我总是将上下文视为与我正在使用的对象或构造相关的特定状态.
例如,当您在视图中使用drawRect时(必须为视图完成所有绘图),您必须始终获取currentGraphicsContext,您将在其中发出核心图形语句.此上下文包含视图边界,笔触颜色,绘制线条的笔触粗细,填充封闭路径的填充颜色等内容.此上下文(与大多数其他内容一样)只是此时的当前状态.因此,在这种情况下,将图形上下文视为一组状态,例如
笔画粗细是1.5像素填充颜色是黑色边界的视图是(155,200)笔画颜色是红色
它基本上是当前时间的状态......
举一个实际的例子。假设您有某个网页可以根据用户(已登录)和浏览器的语言来获取/呈现一些信息。提取信息的逻辑与用户和语言无关。您的页面将接收用户和一种语言...对于逻辑而言,无论是我还是您,还是英语还是西班牙语,都没有关系。
一些伪代码:
class FooPage
{
void handleRequest(RequestContext context)
{
User user = context.getUser();
Locale locale = context.getLocale();
… do some logic based on the context
}
}
Run Code Online (Sandbox Code Playgroud)
它不是那么困难,但是要花一些时间来理解这个概念
| 归档时间: |
|
| 查看次数: |
38446 次 |
| 最近记录: |