Context理解

最近时常在想,优快云上点击率最高,评论最多的博客,大概以说明性的为主。这可以理解,有问题,baidu search最后才会找到Blog。针对问题的博客,基本上是以说明性的为主的。但个人理解,如果技术要成长,思考是最重要的。否则,只能追随,更难创新。根据重要紧急四象限理论,思考属于重要不紧急的象限。人往往容易陷入紧急象限而忽略重要象限。因此,个人不大喜欢说明性博客,即使有 ,也只是作为记事性为主,避免忘记。

   今天主题,Context理解就属于思考类,之说以提他,是因为在很多技术领域都有这个词频繁出现,而且以前对其理解颇为困难。

   Context中文含义为上下文。在这里,个人建议,搞技术的,首先看英文,其次看中文。毕竟,软件这个行业,最早是从国外来的,别人才是鼻祖。

   上下文中的上下,是以中间的角色来看的。一个事件,一个函数,一个对象,一个变量它们的上下,就是和他们挨得最近的。比如一个函数前后的函数,基本上和这个函数都有关系。文意为内容或者状态。上下文即为当前函数或者对象所处的环境。设想,你处在一个三维空间,比如一个房间,你的上下左右看到的东西的状态。

   在软件开发领域,和上下文相关的例子包括中断上下文,进程上下文,线程上下文,应用上下文等。中断上下文,就是中断所处的环境。一个鼠标事件发生的时候,计算机可能正在进行网络数据传输,也可能正在进行复杂运算。也就是说,每个鼠标事件发生时,其环境状态是变化的。毕竟哲学上讲,变化是恒定的。在处理鼠标中断的时候,我们必须考虑可能面临的所有可能环境状态,因为你没法预测某次鼠标事件发生时的状态。而鼠标事件等硬件事件一般都是由操作系统管理的,在Linux中就是内核处理的。所以内核开发难度比较大。你写的每行Code,都必须考虑不同的情况发生,比如多线程状态,中断嵌入状态,资源可用状态,操作系统调度策略等。你不能假设说,你的代码执行时,一定不会这样不会那样。如果不考虑这些情况,一旦这些情况发生,你的code就不知所措。就有可能最终导致code所处环境即计算机状态不一致,最终给操作系统出了难题,操作系统如果也无法容错,那就只有大叫oops了。

   从另外一个角度来讲,很多理论、原则、方法、Code等都仅仅适用于特定Context。比如函数,如果可以重入,那么其适应范围就广,重复调用时,其运行环境的状态可以独立,互不影响。如果不可以重入,意为这每次调用都会修改相同资源。在多线程情况,就会相互干扰。所以在软件设计时,方案,方法必须搞清楚上下文。

  在现有的很多开源代码中,都有Context的概念,比如ActionContext, ApplicationContext, Context Manager等。


   如果有理解错误,请指正。

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值