上下文

python 上下文管理器contextlib.ContextManager

假装没事ソ 提交于 2019-12-02 02:42:54
1 模块简介 在数年前,Python 2.5 加入了一个非常特殊的关键字,就是with。with语句允许开发者创建上下文管理器。什么是上下文管理器?上下文管理器就是允许你可以自动地开始和结束一些事情。例如,你可能想要打开一个文件,然后写入一些内容,最后再关闭文件。这或许就是上下文管理器中一个最经典的示例。事实上,当你利用with语句打开一个文件时,Python替你自动创建了一个上下文管理器。 with open("test/test.txt","w") as f_obj: f_obj.write("hello") 如果你使用的是Python 2.4,你不得不以一种老的方式来完成这个任务 f_obj = open("test/test.txt","w") f_obj.write("hello") f_obj.close() 下文管理器背后工作的机制是使用Python的方法:__enter__和__exit__。让我们尝试着去创建我们的上下文管理器,以此来了解上下文管理器是如何工作的。 2 模块使用 2.0 一个简单的demo import contextlib import time @contextlib.contextmanager def timeit(title): print('1...') start = time.time() yield print('2...')

异步事件的处理机制:上下文与执行流

和自甴很熟 提交于 2019-12-02 02:36:19
一、异步事件的处理机制 1、事件队列机制 2、中断机制 二、异常、异步与执行流 1、异常: 异常是切换到新的执行流以后,原来的执行流不再保存。 2、异步: 异步是切换到新的执行流,执行完毕后再切换到原来的执行流。 三、两个核心: 1、上下文: 保存了执行流的上下文(先后顺序);上下文是执行流信息的结构化描述。 2、执行流: 执行逻辑。 四、处理机制与线程 1、线程的事件循环: 新的执行流的上下文作为消息,进入消息的派发队列; 2、中断 原来的执行流上线文由中断栈保存。 执行新的指令流。 执行完毕后切换到原来的中断栈。 五、其它补充 Linux 中有几种栈?各种栈的内存位置? 介绍完栈的工作原理和用途作用后,我们回归到 Linux 内核上来。内核将栈分成四种: 进程栈 线程栈 内核栈 中断栈 四、中断栈 进程陷入内核态的时候,需要内核栈来支持内核函数调用。中断也是如此,当系统收到中断事件后,进行中断处理的时候,也需要中断栈来支持函数调用。由于系统中断的时候,系统当然是处于内核态的,所以中断栈是可以和内核栈共享的。但是具体是否共享,这和具体处理架构密切相关。 https://blog.csdn.net/yangkuanqaz85988/article/details/52403726 来源: https://www.cnblogs.com/feng9exe/p/11726240

四、django数据处理

被刻印的时光 ゝ 提交于 2019-12-02 02:29:56
一、django上下文管理器(使变量能在每个页面被访问) 上下文管理器会被自行访问,自动加载这些变量,每个页面都可以使用这些变量   1、创建一个python文件     在与项目名称相同的文件夹下面创建一个名字为context_process的python文件(文件名可以叫其它    2、在这个python文件里面写一个函数 def nav_title_process(request): '''上下文管理器,这个函数里面返回的每个变量,在每个页面里面都可以用''' navs = ['我的首页','我的日记','python','linux','性能测试','性格测试'] title = '颜颜的个人博客' content = {'daohang':navs,'title':title} return content    3、在setting.py中配置     TEMPLATES--》OPTIONS --》context_processors     加上'di_test.context_process.nav_title_process'     就是与项目相同的文件名+刚刚创建的py文件的文件名+刚刚创建的函数名                      这样每个页面都可以使用daohang、title这样的变量 二、数据在html页面中使用   1、在子目录的views

EF中获取当前上下文的表名

两盒软妹~` 提交于 2019-12-02 02:14:54
EF在处理并发上并不是很好,很多时候我们需要手动写sql操作数据库。但是在基类中我们如何获取当前服务上下问操作的表呢? 使用正则是其中一种解决办法 var sql= Repository.Table.ToString(); var regex = new Regex("FROM (?<table>.*) AS"); var match = regex.Match(sql); string table = match.Groups["table"].Value; 其中sql= SELECT "Extent1"."uuid", "Extent1"."imageid", "Extent1"."description", "Extent1"."order", "Extent1"."tags", "Extent1"."isdefault", "Extent1"."billid", "Extent1"."filename", "Extent1"."fileext", "Extent1"."filesize", "Extent1"."storepath", "Extent1"."storename", "Extent1"."createby", "Extent1"."createon", "Extent1"."updateby", "Extent1"."updateon" FROM "dbo".

Flask中的上下文

巧了我就是萌 提交于 2019-12-02 01:52:12
上下文:相当于一个容器,保存了 Flask 程序运行过程中的一些信息。 Flask中有两种上下文,请求上下文和应用上下文 请求上下文(request context) 思考:在视图函数中,如何取到当前请求的相关数据?比如:请求地址,请求方式,cookie等等 在 flask 中,可以直接在视图函数中使用 request 这个对象进行获取相关数据,而 request 就是请求上下文的对象,保存了当前本次请求的相关数据,请求上下文对象有:request、session request 封装了HTTP请求的内容,针对的是http请求。举例:user = request.args.get('user'),获取的是get请求的参数。 session 用来记录请求会话中的信息,针对的是用户信息。举例:session['name'] = user.id,可以记录用户信息。还可以通过session.get('name')获取用户信息。 应用上下文(application context) 它的字面意思是 应用上下文,但它不是一直存在的,它只是request context 中的一个对 app 的代理(人),所谓local proxy。它的作用主要是帮助 request 获取当前的应用,它是伴 request 而生,随 request 而灭的。 应用上下文对象有:current_app,g

django基础——上下文处理器

雨燕双飞 提交于 2019-12-01 22:43:56
当我们在views.py中写逻辑时,需要返回数据,但有时有些数据是每个页面都需要用的,如果每个方法中返回同样数据就会很冗余。这是就需要“上下文处理器“来统一返回数据。 在上下文处理器中返回的每个变量,在每个页面都可以使用。 如,博客中的导航、博客标题等信息,在每个页面可能都会用到,我们就可以写在上下文处理器中,代码如下: 首先在工程目录下建一个py文件,如context_process.py(与settings.py同级): from user import models #这个是数据库操作的模块,这里可以暂时忽略,想要了解可以去看数据库操作的博客 def nav_title_process(request): # 上下文处理器 :这个函数里返回的每个变量,在每个页面都可以使用 #需要在setting中的TEMPLATES中配置这个方法的路径 # navs = ['我的相册', '我的日记', 'python', 'linux', '接口测试'] navs=models.Nav.objects.filter(is_delete=1) #这里是从数据库读出来的数据。query_Set 的对象,类似list title = 'HM的个人主页' content={'daohang':navs,'title':title} return content nav_title

JS ----- 底层原理

烂漫一生 提交于 2019-12-01 21:49:26
什么是JS JavaScript是一种基于对象的动态、弱类型脚本语言(简称JS),是一种解释型语言,和其他的编程语言不同,如java/C++等编译型语言,这些语言在代码执行前会进行通篇编译,先编译成字节码(机器码)。然后在执行。而JS不是这样做的,JS是不需要编译成中间码,而是可以直接在浏览器中运行,JS运行过程可分为两个阶段,编译和执行。(可参考你不知道的JS这本书),当JS控制器转到一段可执行的代码时(这段可执行代码就是编译阶段生成的),会创建与之对应的执行上下文(Excution Context简称EC)。执行上下文可以理解为执行环境(执行上下文只能由JS解释器创建,也只能由JS解释器使用,用户是不可以操作该"对象"的)。 JS 的底层运行原理 每调用一个函数就会生成一个执行环境(俗称执行上下文),执行上下文环境数量没有限制 每调用一个函数就会生成一个执行环境(俗称执行上下文),执行上下文环境数量没有限制 单线程 同步执行,只有栈顶的上下文处于执行中,其他上下文需要等待 每次某个函数被调用,就会有个新的执行上下文为其创建,即使是调用的自身函数,也是如此。 JS中的执行环境分为三类: 全局环境:当JS引擎进入一个代码块时,如遇到 <script>xxx</script> 标签,就是进入一个全局执行环境 函数环境:当一个函数被调用时,在函数内部就形成了一个函数执行环境 eval(

Spring中bean的管理

℡╲_俬逩灬. 提交于 2019-12-01 20:13:00
Spring 中常见的容器    我们知道spring容器就是spring中bean的驻留场所。spring容器并不是只有一个。spring自带了多个容器实现,可以归为两种不同的类型:bean工厂和应用上下文。 bean工厂是最简单的容器,提供了基本的Di支持;而应用上下文是基于beanFactory构建,并提供了应用框架级别的服务,例如从属性文件解析文本信息以及发布应用实践给感性趣的事件监听者。   虽然我们可以在bean工厂和应用上下文之间任选一种,但是bean工厂对于大多数应用来说往往太低级了,因此,应用上下文要比bean工厂更受欢迎。所以下面我们重点讨论的都是 应用上下文对bean的管理 。 两类容器的区别: BeanFactory    BeanFactory 采用了工厂设计模式,负责读取 bean 配置文档,管理 bean 的加载,实例化,维护 bean 之间的依赖关系,负责 bean 的生命周期。 BeanFactory 在解析配置文件时并不会初始化对象 , 只有在使用对象 getBean() 才会对该对象进行初始化 ApplicationContext(接口)    ApplicationContext 除了提供上述 BeanFactory 所能提供的功能之外,还提供了更完整的框架功能:国际化支持、 aop 、事务等。 而 A pplicationContext

深度长文回顾web基础组件

左心房为你撑大大i 提交于 2019-12-01 18:58:49
摘自: https://www.cnblogs.com/ZhuChangwu/p/11712899.html 深度长文回顾web基础组件 什么是Serlvet ? 全称 server applet 运行在服务端的小程序: 首先来说,这个servlet是java语言编写的出来的应用程序,换句话说servlet拥有java语言全部的优点,比如跨越平台,一次编译到处运行 其次: 相对于CGI(common gateway interface)规范而言,CGI是针对每一个用户的请求 创建一个进程处理 ,而servlet所在的服务器会对每一个请求 创建一个线程 来处理,虽然线程数量有上限,但是相对于创建进程来说,后者对系统资源的开销更小 然后就是: 现在盛行javaWeb服务器Tomcat也是java语言编写的,毕竟Tomcat有Serlvet容器支持,所以servlet和web服务器之间无缝连接 Servlet其实一个接口,一套规范,不同的厂家对它有不同的实现,tomcat也是如此, web服务器会把解析http协议信息的逻辑封装进他们的Servlet中,比如将用户发送的请求(request) HttpRequestServlet , 把响应给用户http报文的逻辑封装进 HttpResponseServlet 中, 然后web服务器负责不同组件,不同servlet之间的调度关系,

深度长文回顾web基础组件

ぐ巨炮叔叔 提交于 2019-12-01 18:48:50
什么是Serlvet ? 全称 server applet 运行在服务端的小程序: 首先来说,这个servlet是java语言编写的出来的应用程序,换句话说servlet拥有java语言全部的优点,比如跨越平台,一次编译到处运行 其次: 相对于CGI(common gateway interface)规范而言,CGI是针对每一个用户的请求 创建一个进程处理 ,而servlet所在的服务器会对每一个请求 创建一个线程 来处理,虽然线程数量有上限,但是相对于创建进程来说,后者对系统资源的开销更小 然后就是: 现在盛行javaWeb服务器Tomcat也是java语言编写的,毕竟Tomcat有Serlvet容器支持,所以servlet和web服务器之间无缝连接 Servlet其实一个接口,一套规范,不同的厂家对它有不同的实现,tomcat也是如此, web服务器会把解析http协议信息的逻辑封装进他们的Servlet中,比如将用户发送的请求(request) HttpRequestServlet , 把响应给用户http报文的逻辑封装进 HttpResponseServlet 中, 然后web服务器负责不同组件,不同servlet之间的调度关系, 什么是调度呢? 比如说: 通过某个URL找到指定的Servlet,回调Servlet的 service() 方法处理请求