上下文

WinDbg常用命令系列---异常相关操作

ε祈祈猫儿з 提交于 2019-11-29 21:32:26
.exr (Display Exception Record) .exr命令显示异常记录的内容。 .exr Address .exr -1 参数: Address 指定异常记录的地址。如果指定-1作为地址,调试器将显示最新的异常。 环境: 模式 用户模式下,内核模式 目标 实时、 崩溃转储 平台 全部 .exr命令显示与调试器在目标计算机上遇到的异常相关的信息。 显示的信息包括异常地址、异常代码、异常标志和异常参数的变量列表。 通常可以通过使用!pcr扩展命令获取地址。 下面的例子是在dmp文件里的演示 这个是一个具体异常记录地址 0:000> .exr 010fd1c8 ExceptionAddress: 694c4b4c (nvoglv32!DrvPresentBuffers+0x000c19fc) ExceptionCode: c0000005 (Access violation) ExceptionFlags: 00000000 NumberParameters: 2 Parameter[0]: 00000000 Parameter[1]: 4592e000 Attempt to read from address 4592e000 这个地址用-1的结果 0:000> .exr -1 *** ERROR: Symbol file could not be found.

JavaScript中的bind,call和apply函数的用法和区别

偶尔善良 提交于 2019-11-29 18:47:03
一直没怎么使用过JavaScript中的bind,call和apply, 今天看到一篇比较好的文章,觉得讲的比较透彻,所以记录和总结如下 首先要理解的 第一个概念 ,JavaScript中函数调用的方式,总结下来,有以下4种 1. 方法调用 2. 正常函数调用 3. 构造器函数调用 4. apply/call 调用 要明白的 第2个概念, JavaScript 中的函数,无论是上面哪种函数调用方式,除了你函数声明时定义的形参外,还会自动给函数添加两个形参,分别是 this 和 arguments 要明白的 第3个概念 , Javascript中的函数,存在函数上下文(context) 这么一个概念, 而函数上下文又存在【定义时上下文】,【运行时上下文】,【上下文是可以改变的】这样子的情况, 而第2个概念中的this, 指向的就是当前函数中的上下文 要明白的 第4个概念, 也是我们今天在这里要讲的call, apply函数的目的 => 它们在JavaScript函数中存在的目的,就是为了改变某个函数运行时的上下文(context)而存在的, 换句话说,是为了改变函数体内部this的指向 来源: https://www.cnblogs.com/wphl-27/p/11526801.html

flask请求上下文

不问归期 提交于 2019-11-29 17:51:48
先看一个例子: #!/usr/bin/env python # -*- coding:utf-8 -*- import threading # local_values = threading.local() class Foo(object): def __init__(self): self.name = 0 local_values = Foo() def func(num): local_values.name = num import time time.sleep(1) print(local_values.name,threading.current_thread().name) for i in range(5): th = threading.Thread(target=func, args=(i,), name='线程%s' % i) th.start() 4 线程0 4 线程1 4 线程3 4 线程2 4 线程4    上述结果不是我们想要的,local_values.name的值被最后一个覆盖了............................. flask的request和session设置方式比较新颖,如果没有这种方式,那么就只能通过参数的传递。 flask是如何做的呢? 1. 本地线程,保证即使是多个线程,自己的值也是互相隔离。 #!/usr

flask 请求上下文

女生的网名这么多〃 提交于 2019-11-29 17:50:52
一篇引用大牛的 https://www.cnblogs.com/zhaopanpan/p/9457343.html ### 线程安全 ```python# 线程不安全class Foo(object): passfoo = Foo()foo.num = 1import timeimport threadingdef my_num(i): foo.num = i time.sleep(1) print(foo.num,threading.current_thread().ident)for i in range(20): th = threading.Thread(target=my_num,args=(i,)) th.start()----------------------------------------------------------------------------# 线程安全from threading import localclass Foo(local): passfoo = Foo()foo.num = 1import timeimport threadingdef my_num(i): foo.num = i time.sleep(1) print(foo.num,threading.current_thread().ident)for i in

FLask 流程图、上下文、上下文隔离原理

强颜欢笑 提交于 2019-11-29 17:49:53
流程图: 最近在看flask源码学习下flask工作原理,然后就尝试着画了个流程图,如上图所示,部分功能细节可能没有写上去,有什么遗漏的地方欢迎大家补充。 WSGI: 全称是Web Server Gateway Interface,WSGI不是服务器,python模块,框架,API或者任何软件,只是一种规范,描述web server如何与web application通信的规范。server和application的规范在 PEP 3333 中有具体描述。要实现WSGI协议,必须同时实现web server和web application,当前运行在WSGI协议之上的web框架有Torando,Flask,Django,  Flask 基于werkzeug 库,而werkzeug则是对WSGI 具体的实现 Flask中的上下文 flask中实现了上下文的变量共有,如下图所示,分别是current_app、request、session、g current_app: 当前应用环境上下文 request: 当前请求上下文,每个请求上下文都有一个专门对应的应用上下文 session: 用于管理当前请求的session g: 与当前应用上下关联的全局变量 1、flask处理不同请求之间是如何实现隔离的? 前面有介绍Flask主要是借助werkzueg来实现的

CPU上下文切换

风流意气都作罢 提交于 2019-11-29 16:51:42
进程在竞争 CPU 的时候并没有真正运行,为什么还会导致系统的负载升高呢?CPU 上下文切换就是罪魁祸首。 我们都知道,Linux 是一个多任务操作系统,它支持远大于 CPU 数量的任务同时运行。当然,这些任务实际上并不是真的在同时运行,而是因为系统在很短的时间内,将 CPU 轮流分配给它们,造成多任务同时运行的错觉。 而在每个任务运行前,CPU 都需要知道任务从哪里加载、又从哪里开始运行,也就是说,需要系统事先帮它设置好CPU 寄存器和程序计数器(Program Counter,PC)。 CPU 寄存器,是 CPU 内置的容量小、但速度极快的内存。而程序计数器,则是用来存储 CPU 正在执行的指令位置、或者即将执行的下一条指令位置。它们都是 CPU 在运行任何任务前,必须的依赖环境,因此也被叫做 CPU 上下文 。 知道了什么是 CPU 上下文,我想你也很容易理解 CPU 上下文切换 。 CPU 上下文切换,就是先把前一个任务的 CPU 上下文(也就是 CPU 寄存器和程序计数器)保存起来, 然后加载新任务的上下文到这些寄存器和程序计数器,最后再跳转到程序计数器所指的新位置,运行新任务。 而这些保存下来的上下文,会存储在系统内核中,并在任务重新调度执行时再次加载进来。这样就能保证任务原来的状态不受影响,让任务看起来还是连续运行。 根据任务的不同 ,CPU

CPU上下文切换

对着背影说爱祢 提交于 2019-11-29 13:28:16
原创转载请注明出处: https://www.cnblogs.com/agilestyle/p/11518557.html CPU 的上下文切换场景 Linux 是一个多任务操作系统,它支持远大于 CPU 数量的任务同时运行。当然,这些任务实际上并不是真的在同时运行,而是因为系统在很短的时间内,将 CPU 轮流分配给它们,造成多任务同时运行的错觉。 而在每个任务运行前,CPU 都需要知道任务从哪里加载、又从哪里开始运行,也就是说,需要系统事先帮它设置好 CPU 寄存器 和 程序计数器(Program Counter,PC) 。 CPU 寄存器 : 是 CPU 内置的容量小、但速度极快的内存。 程序计数器 : 是用来存储 CPU 正在执行的指令位置、或者即将执行的下一条指令位置。 它们都是 CPU 在运行任何任务前,必须的依赖环境,因此也被叫做 CPU 上下文 。 CPU 上下文切换,就是先把前一个任务的 CPU 上下文(也就是 CPU 寄存器和程序计数器)保存起来,然后加载新任务的上下文到这些寄存器和程序计数器,最后再跳转到程序计数器所指的新位置,运行新任务。而这些保存下来的上下文,会存储在系统内核中,并在任务重新调度执行时再次加载进来。这样就能保证任务原来的状态不受影响,让任务看起来还是连续运行。 根据任务的不同,CPU 的上下文切换就可以分为几个不同的场景, 进程上下文切换

翻译:Contoso 大学 - 10 - 高级 EF 应用场景

僤鯓⒐⒋嵵緔 提交于 2019-11-29 12:46:55
By Tom Dykstra, Tom Dykstra is a Senior Programming Writer on Microsoft's Web Platform & Tools Content Team. 原文地址: http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/advanced-entity-framework-scenarios-for-an-mvc-web-application 全文目录: Contoso 大学 - 使用 EF Code First 创建 MVC 应用 在上一个教程中,你已经实现了仓储和工作单元模式。这个教程涵盖下列主题: 执行原始的 SQL 查询 执行没有跟踪的查询 检查发送到数据库的查询 使用代理类 禁用修改的自动检测 在保存修改时禁用验证 多数内容使用你已经创建的页面。为了使用原始的 SQL 进行批更新,你需要创建一个新的更新数据库中所有课程学分的页面。 以及在 Department 编辑页面中增加新的验证逻辑,使用非跟踪的查询。 10-1 执行原始的 SQL 查询 在 EF 中包含有允许你直接将 SQL 命令发送到数据库的 API 方法,你有以下选择: 使用 DbSet.SqlQuery 方法进行查询以返回实体类型。返回的对象类型必须是 DbSet

Go语言标准库之context

时光总嘲笑我的痴心妄想 提交于 2019-11-29 12:15:35
在 Go http包的Server中,每一个请求在都有一个对应的 goroutine 去处理。请求处理函数通常会启动额外的 goroutine 用来访问后端服务,比如数据库和RPC服务。用来处理一个请求的 goroutine 通常需要访问一些与请求特定的数据,比如终端用户的身份认证信息、验证相关的token、请求的截止时间。 当一个请求被取消或超时时,所有用来处理该请求的 goroutine 都应该迅速退出,然后系统才能释放这些 goroutine 占用的资源。 为什么需要Context 基本示例 package main import ( "fmt" "sync" "time" ) var wg sync.WaitGroup // 初始的例子 func worker() { for { fmt.Println("worker") time.Sleep(time.Second) } // 如何接收外部命令实现退出 wg.Done() } func main() { wg.Add(1) go worker() // 如何优雅的实现结束子goroutine wg.Wait() fmt.Println("over") } 全局变量方式 package main import ( "fmt" "sync" "time" ) var wg sync.WaitGroup var exit

11、上下文管理器(魔术方法2)

与世无争的帅哥 提交于 2019-11-29 10:21:36
上下文管理器 上下文管理器的服务对象是with语法 with open(‘file’, ‘r’, encoding=‘utf-8’) as f: # 这个f,是所打开文件的句柄 content = f.read() print(f) 什么是上下文管理器? 1.上下文管理器是一个Python对象,为操作提供了额外的上下文信息。这种额外的信息,在使用with语句初始化上下文,以及完成with代码块中的所有代码时,采用可调用的形式 上下文管理器是由两个魔术方法来组成的 1.object. enter (str) a.输入与此对象相关的运行时上下文。如果存在的话,with语句将绑定该方法的返回值到该语句的as子句中指定的目标。 b.这个方法是在with语句开始时执行的 2.object. exit (self, exc_type, exc_val, exc_tb) a.退出与此对象相关的运行时上下文。如果该上下文退出时没有异常,这三个参数都为None。 b.这个方法是在with语句结束时执行的,可不使用try来记录错误日志。 c.参数解释: exc_type:异常类型 exc_val:异常值 exc_tb:异常回溯追踪 exc_type=> <class ‘NameError’> exc_val=> name ‘a’ is not defined exc_tb=> <traceback