上下文

Linux设备驱动程序 之 中断

痴心易碎 提交于 2019-12-02 19:57:13
中断 中断使得硬件可以发出通知给处理器,本质上是一种特殊的电信号,由硬件设备发向处理器,处理器接收到中断后,会马上向操作系统反应此信号的到来,然后就由操作系统负责处理这些新来的数据;硬件设备生成中断并不考虑与处理器的始终同步,中断可能随时产生,内核随时都有可能被中断打断; 不同设备的中断不同,而每个中断都对应一个唯一的中断值,这些中断值通常称为中断请求IRQ线;中断号并不一定是严格定义的,也可能是动态分配的,如PCI设备; 异常 异常与中断不同,它的产生必须考虑与处理器时钟同步;实际上,异常也常常被称为同步中断;在处理器执行到又编程失误而导致的错误指令的时候,就会产生一个异常;许多处理器体系结构处理异常与中断的方式类型;因此,内核对它们的处理也很类似; 中断处理程序 在响应一个特定中断的时候,内核会执行一个函数,这个函数叫中断处理程序或者中断服务例程;产生中断的每个设备都有一个相应的中断处理程序;中断处理器程序与其他内核函数的区别在于,中断处理程序是被内核调用来响应中断的,它们要运行于中断上下文中,通常,中断上下文也成为原子上下文,该上下文执行的代码不可阻塞; 中断可能随时发生,因此中断处理程序也就随时可能执行;所以必须保证中断处理程序能够快速执行,这样才能保证尽可能快的恢复中断代码执行,对于硬件和操作系统来讲,缩短响应和处理时间都极为重要; 上半部和下半部 中断处理被分为两个部分

flask请求上下文

半城伤御伤魂 提交于 2019-12-02 19:00:59
dfsd flask请求上下文 from flask import Flask app = Flask(__name__) @app.route("/") def test(): return 'helloworld' if __name__ == '__main__': app.run() app.__call__ #入口 图一: 在self.request_context中返回一个RequestContext(self, environ)类的对象 其中self是app 在RequestContext(self, environ) 图二: 图三: request是我们用的request对象,其中app.request_class是属性 在图二中返回的对象内通过图三可知有request,app,session等,所以图一中的 ctx 对象包含图三的东西 继续向下: ctx.push() _request_ctx_stack是在global.py中,只要程序已运行就直接放在内存中 在进入到_request_ctx_stack.push() 来源: https://www.cnblogs.com/weilantian/p/11758971.html

全局上下文与上下文

╄→гoц情女王★ 提交于 2019-12-02 18:54:15
全局上下文由main函数加载系统的主架构和主事件循环和全局数据构成。 是上帝创造世界时,创建的基础事物。 万物之始 ,大道至简,衍化至繁。 全局上下文代表着程序运行所需要的基础资源。 是程序运行的基础。 全局上下文的特征是在程序运行期间常驻内存。 全局上下文的生命周期和应用程序的生命周期相同。与应用程序同生共死。 在程序的全局可见。 局部上下文在全局上下文的基础上生长和消失。为程序的具体功能提供资源支持。 正如生态系统的土体、资源、营养、能量等。在基础资源的支持下演绎着各类生物的生死循环。 程序的运行演绎出了一个世界。全局上下文是这个世界的基础。 来源: https://www.cnblogs.com/feng9exe/p/11758539.html

进程线程

烂漫一生 提交于 2019-12-02 18:44:30
图像化解释 : http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html 作者:zhonyong 链接:https://www.zhihu.com/question/25532384/answer/81152571 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 首先来一句概括的总论: 进程和线程都是一个时间段的描述,是CPU工作时间段的描述。 下面细说背景 : CPU+RAM+各种资源(比如显卡,光驱,键盘,GPS, 等等外设)构成我们的电脑,但是电脑的运行,实际就是CPU和相关寄存器以及RAM之间的事情。 一个最最基础的事实 :CPU太快,太快,太快了,寄存器仅仅能够追的上他的脚步,RAM和别的挂在各总线上的设备完全是望其项背。那当多个任务要执行的时候怎么办呢?轮流着来?或者谁优先级高谁来?不管怎么样的策略,一句话就是在CPU看来就是轮流着来。 一个必须知道的事实 :执行一段程序代码,实现一个功能的过程介绍 ,当得到CPU的时候,相关的资源必须也已经就位,就是显卡啊,GPS啊什么的必须就位,然后CPU开始执行。这里除了CPU以外所有的就构成了这个程序的执行环境,也就是我们所定义的程序上下文。当这个程序执行完了,或者分配给他的CPU执行时间用完了,那它就要被切换出去

Spring Bean的生命周期和作用域

霸气de小男生 提交于 2019-12-02 15:37:16
Bean的作用域 Spring应用中,对象实例都是在Container中,负责创建、装配、配置和管理生命周期(new到finalize()) Spring Container分为两种:   1、BeanFactory:提供DI支持   2、ApplicationContext:基于 BeanFactory构建,提供应用框架级别的服务 ApplicationContext实现类 :    1、AnnotationConfigApplicationContext: 从一个或多个基于Java的配置类中加载Spring应用上下文    2、AnnotationConfigWebApplicationContext: 从一个或多个基于Java的配置类中加载Spring Web应用上下文    3、ClassPathXmlApplicationContext: 从类路径下的一个或多个XML配置文件中加载上下文定义,把应用上下文的定义文件作为类资源    4、FileSystemXmlappl icationcontext : 从文件系统下的一个或多个XML配置文件中加载上下文定义    5、XmlWebApplicationContext: 从Web应用下的一个或多个XML配置文件中加载上下文定义 加载上下文的方式都很相似:都是直接new。例如:ApplicationContext

Spring Boot项目中使用Mockito

雨燕双飞 提交于 2019-12-02 14:38:46
摘自: https://www.cnblogs.com/javaadu/p/11748415.html Spring Boot项目中使用Mockito 本文首发于个人网站: Spring Boot项目中使用Mockito Spring Boot可以和大部分流行的测试框架协同工作:通过Spring JUnit创建单元测试;生成测试数据初始化数据库用于测试;Spring Boot可以跟BDD(Behavier Driven Development)工具、Cucumber和Spock协同工作,对应用程序进行测试。 进行软件开发的时候,我们会写很多代码,不过,再过六个月(甚至一年以上)你知道自己的代码怎么运作么?通过测试(单元测试、集成测试、接口测试)可以保证系统的可维护性,当我们修改了某些代码时,通过回归测试可以检查是否引入了新的bug。总得来说,测试让系统不再是一个黑盒子,让开发人员确认系统可用。 在web应用程序中,对Controller层的测试一般有两种方法:(1)发送http请求;(2)模拟http请求对象。第一种方法需要配置回归环境,通过修改代码统计的策略来计算覆盖率;第二种方法是比较正规的思路,但是在我目前经历过的项目中用得不多,今天总结下如何用Mock对象测试Controller层的代码。 在之前的几篇文章中,我们都使用bookpub这个应用程序作为例子,今天也不例外

十二 .Flask上下文 总结

心已入冬 提交于 2019-12-02 14:05:39
一 . 上下文管理总结 https://www.cnblogs.com/Zzbj/p/10207128.html 1. 全局的变量 _request_ctx_stack = LocalStack() _app_ctx_stack = LocalStack() current_app = LocalProxy(_find_app) #local就是我们的partial(_lookup_req_object, "request") request = LocalProxy(partial(_lookup_req_object, "request")) session = LocalProxy(partial(_lookup_req_object, "session")) g = LocalProxy(partial(_lookup_app_object, "g")) 2. 项目请求流程 self.wsgi_app(environ, start_response)源码: def wsgi_app(self, environ, start_response): #ctx是ResquestContext的对象,里面request,session ctx = self.request_context(environ) error = None try: try:

十 .Flask上下文管理一

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-02 14:02:07
一 .上下文管理 1. 上下文管理概念 上下文即语境、语意,是一句话中的语境,也就是语言环境. 一句莫名其妙的话出现会让人不理解什么意思, 如果有语言环境的说明, 则会更好, 这就是语境对语意的影响. 而对应到程序里往往就是程序中需要共享的信息,保存着程序运行或交互中需要保持或传递的信息. Flask中有两种上下文分别为:应用上下文(AppContext)和请求上下文(RequestContext). 按照上面提到的我们很容易就联想到:应用上下文就是保存着应用运行或交互中需要保持或传递的信息, 如当前应用的应用名, 当前应用注册了什么路由, 又有什么视图函数等. 而请求上下文就保存着处理请求过程中需要保持或传递的信息,如这次请求的url是什么, 参数又是什么, 请求的method又是什么等. 上下文生命周期: RequestContext: 生命周期在处理一次请求期间, 请求处理完成后生命周期也就结束了. AppContext: 生命周期最长, 只要当前应用还在运行, 就一直存在. (应用未运行前并不存在) 2. local """ { 1232:{k:v} } """ try: from greenlet import getcurrent as get_ident except: from threading import get_ident """ class Local

深入理解计算机系统(速读笔记)

故事扮演 提交于 2019-12-02 12:57:09
第一章 进程与线程的区别: 进程和线程都是一个时间段的描述,程序执行时,cpu处理速度太快,只有寄存器能够赶上cpu的速度,RAM速度远远赶不上,当处理多个任务时,只能一个一个轮流处理,具体的轮流方法就是:先加载程序A的上下文,然后开始执行A,保存程序A的上下文,调入下一个要执行的程序B的程序上下文,然后开始执行B,保存程序B的上下文。进程就是上下文切换的程序执行时间总和 = CPU加载上下文+CPU执行+CPU保存上下文。 如果我们把进程比喻为一个运行在电脑上的软件,那么一个软件的执行不可能是一条逻辑执行的,必定有多个分支和多个程序段,就好比要实现程序A,实际分成 a,b,c等多个块组合而成。那么这里具体的执行就可能变成:CPU加载上下文,开始执行程序A的a小段,然后执行A的b小段,然后再执行A的c小段,最后CPU保存A的上下文。这里a,b,c的执行是共享了A的上下文,CPU在执行的时候没有进行上下文切换的。这里的a,b,c就是线程,也就是说线程是共享了进程的上下文环境。 第二章及后续待更新 来源: https://www.cnblogs.com/tqlzpg/p/11745860.html

深入理解CSS中的层叠上下文和层叠顺序

主宰稳场 提交于 2019-12-02 09:52:19
深入理解CSS中的层叠上下文和层叠顺序 上下文 前端大全 · 2016-01-20 20:12 (点击 上方 公 众 号 ,可快速关注) 作者:张鑫旭 网址:http://www.zhangxinxu.com/wordpress/2016/01/understand-css-stacking-context-order-z-index/ 零、世间的道理都是想通的 在这个世界上,凡事都有个先后顺序,凡物都有个论资排辈。比方说食堂排队打饭,对吧,讲求先到先得,总不可能一拥而上。再比如说话语权,老婆的话永远是对的,领导的话永远是对的。 在CSS届,也是如此。只是,一般情况下,大家歌舞升平,看不出什么差异,即所谓的众生平等。但是,当发生冲突发生纠葛的时候,显然,是不可能做到完全等同的,先后顺序,身份差异就显现出来了。例如,杰克和罗斯,只能一人浮在木板上,此时,出现了冲突,结果大家都知道的。那对于CSS世界中的元素而言,所谓的“冲突”指什么呢,其中,很重要的一个层面就是“层叠显示冲突”。 默认情况下,网页内容是没有偏移角的垂直视觉呈现,当内容发生层叠的时候,一定会有一个前后的层叠顺序产生,有点类似于真实世界中论资排辈的感觉。 而要理解网页中元素是如何“论资排辈”的,就需要深入理解CSS中的层叠上下文和层叠顺序。 我们大家可能都熟悉CSS中的z-index属性,需要跟大家讲的是,z