⑴ 程序开发中with语句主要用在哪些地方呢
with 语句主要用于包装带有使用上下文管理器 定义的方法的代码块的执行。
1.这允许对普通的 try...except...finally 使用模式进行封装以方便地重用。
带有一个“项目”的 with 语句的执行过程如下:
对上下文表达式 (在 with_item 中给出的表达式) 求值以获得一个上下文管理器。
载入上下文管理器的 __enter__() 以便后续使用。
载入上下文管理器的 __exit__() 以便后续使用。
发起调用上下文管理器的 __enter__() 方法。
如果 with 语句中包含一个目标,来自 __enter__() 的返回值将被赋值给它。
执行语句体。
2.发起调用上下文管理器的 __exit__() 方法。如果语句体的退出是由异常导致的,则其类型、值和回溯信息将被作为参数传递给 __exit__()。 否则的话,将提供三个 None 参数。
如果语句体的退出是由异常导致的,并且来自 __exit__() 方法的返回值为假,则该异常会被重新引发。 如果返回值为真,则该异常会被抑制,并会继续执行 with 语句之后的语句。
如果语句体由于异常以外的任何原因退出,则来自 __exit__() 的返回值会被忽略,并会在该类退出正常的发生位置继续执行。
3.函数定义是一条可执行语句。它执行时会在当前局部命名空间中将函数名称绑定到一个函数对象(函数可执行代码的包装器)。 这个函数对象包含对当前全局命名空间的引用,作为函数被调用时所使用的全局命名空间。
4.函数定义并不会执行函数体;只有当函数被调用时才会执行此操作。
一个函数定义可以被一个或多个 decorator 表达式所包装。 当函数被定义时将在包含该函数定义的作用域中对装饰器表达式求值。 求值结果必须是一个可调用对象,它会以该函数对象作为唯一参数被发起调用。 其返回值将被绑定到函数名称而非函数对象。 多个装饰器会以嵌套方式被应用如果语句体的退出是由异常导致的,并且来自 __exit__() 方法的返回值为假,则该异常会被重新引发。 如果返回值为真,则该异常会被抑制,并会继续执行 with 语句之后的语句。
如果语句体由于异常以外的任何原因退出,则来自 __exit__() 的返回值会被忽略,并会在该类退出正常的发生位置继续执行。
5.with语句主要的性能:with作用域内\/的变量都来自with提供的作用域时,减少不必要的指针路径解析运算
⑵ Win8系统启动任务管理器的五种办法分享
第一种方法打开“任务管理器”
-
按Ctrl
+
Shift
+
Esc键。可以直接调出win8系统的任务管理器!这是当用户使用系统用鼠标不能正常控制的时候可用的办法。也是比较根本的方法。找到挂起的进程,你可以使用箭头键,完成结束进程操作。
第二种方法,您还可以使用“热键”。在某些情况下,您可以使用键Ctrl
+
Alt
+
Del,会弹出一个窗口,选择任务管理器即可。除了启动“任务管理器”还有锁定,更改密码和用户等可操作。要选择一个命令,你可以使用箭头键。
第三种方法,运行任务管理器还有另一种方法:按下Win
+
X,然后从上下文菜单中选择“任务管理器”,然后按Enter键。
第四种方法,利用Win8系统强大的搜索功能可以快速找到打开任务管理器,Win8e.com八亿网笔者按下Win+W或者Win+Q输入查找任务管理器或者直接查看,enter键确定。
第五种方法,使用Win+R快速打开“运行”,输入Taskmgr.exe
按“确认”即可打开任务管理器。
⑶ 计算机中with语句的使用
with 语句用于包装带有使用上下文管理器 定义的方法的代码块的执行。
1.这允许对普通的 try...except...finally 使用模式进行封装以方便地重用。
带有一个“项目”的 with 语句的执行过程如下:
对上下文表达式 (在 with_item 中给出的表达式) 求值以获得一个上下文管理器。
载入上下文管理器的 __enter__() 以便后续使用。
载入上下文管理器的 __exit__() 以便后续使用。
发起调用上下文管理器的 __enter__() 方法。
如果 with 语句中包含一个目标,来自 __enter__() 的返回值将被赋值给它。
执行语句体。
2.发起调用上下文管理器的 __exit__() 方法。 如果语句体的退出是由异常导致的,则其类型、值和回溯信息将被作为参数传递给 __exit__()。 否则的话,将提供三个 None 参数。
如果语句体的退出是由异常导致的,并且来自 __exit__() 方法的返回值为假,则该异常会被重新引发。 如果返回值为真,则该异常会被抑制,并会继续执行 with 语句之后的语句。
如果语句体由于异常以外的任何原因退出,则来自 __exit__() 的返回值会被忽略,并会在该类退出正常的发生位置继续执行。
3.函数定义是一条可执行语句。 它执行时会在当前局部命名空间中将函数名称绑定到一个函数对象(函数可执行代码的包装器)。 这个函数对象包含对当前全局命名空间的引用,作为函数被调用时所使用的全局命名空间。
4.函数定义并不会执行函数体;只有当函数被调用时才会执行此操作。
一个函数定义可以被一个或多个 decorator 表达式所包装。 当函数被定义时将在包含该函数定义的作用域中对装饰器表达式求值。 求值结果必须是一个可调用对象,它会以该函数对象作为唯一参数被发起调用。 其返回值将被绑定到函数名称而非函数对象。 多个装饰器会以嵌套方式被应用
如果语句体的退出是由异常导致的,并且来自 __exit__() 方法的返回值为假,则该异常会被重新引发。 如果返回值为真,则该异常会被抑制,并会继续执行 with 语句之后的语句。
如果语句体由于异常以外的任何原因退出,则来自 __exit__() 的返回值会被忽略,并会在该类退出正常的发生位置继续执行。
⑷ java中何时用到上下文加载器呢在什么情况下用到。还有何时用到类加载器小弟不懂,求高手解答。
这个问题经常出现在编写框架代码 , 需要动态加载很多类和资源的时候 . 通常当你需要动态加载资源的时候 , 你至少有三个 ClassLoader 可以选择 :
系统类加载器或叫作应用类加载器 (system classloader or application classloader)
当前类加载器
当前线程类加载器
上面的问题指的是最后一种类加载器 . 哪种类加载器是正确的选择呢 ?
第一种选择可以很容易地排除 : 系统类加载器 (system classloader). 这个类加载器处理 -classpath 下的类加载工作 , 可以通过 ClassLoader.getSystemClassLoader() 方法调用 . ClassLoader 下所有的 getSystemXXX() 的静态方法都是通过这个方法定义的 . 在你的代码中 , 你应该尽量少地调用这个方法 , 以其它的类加载器作为代理 . 否则你的代码将只能工作在简单的命令行应用中 , 这个时候系统类加载器 (system classloader) 是 JVM 最后创建的类加载器 . 一但你把代码移到 EJB, Web 应用或 Java Web Start 应用中 , 一定会出问题 .
所以我们来看第二种选择 : 当前上下文环境下的类加载器 . 根据定义 , 当前类加载器就是你当前方法所属的类的加载器 . 在运行时类之间动态联编 , 及调用 Class.forName,() Class.getResource() 等类似方法时 , 这个类加载器会被隐含地使用 . It is also used by syntactic constructs like X.class class literals.
线程上下文类型加载器是在Java 2平台上被引入的. 每一个线程都有一个类加载器与之对应(除非这个线程是被本地代码创建的). 这个类加载器是通过Thread.setContextClassLoaser()方法设置的. 如果你不在线程构造后调用这个方法, 这个线程将从它的父线程中继承相应的上下文类加载器. 如果在整个应用中你不做任何特殊设置, 所有的线程将都以系统类加载器(system classloader)作为自己的线程上下文类加载器. 自从Web和J2EE应用服务器使用成熟的类加载器机制来实现诸如JNDI, 线程池, 组件热部署等功能以来, 这种在整个应用中不做任何线程类加载器设置的情况就很少了.
为什么线程上下文类加载器存在于如此重要的位置呢? 这个概念在J2SE中的引入并不引人注目. 很多开发人员对这一概念迷惑的原因是Sun公司在这方面缺乏适当的指引和文档.
事实上, 上下文类加载器提供了类加载机制的后门, 这一点也在J2SE中被引入了. 通常, 在JVM中的所有类加载器被组织成了有继承层次的结构, 每一个类加载器(除了引导JVM的原始类加载器)都有一个父加载器. 每当被请示加载类时, 类加载器都会首先请求其父类加载器, 只有当父类加载器不能加载时, 才会自己进行类加载.
有时候这种类加载的顺序安排不能正常工作, (此处的意思是:正常情况下都是从子类加载器到根类加载器请求,万一有根类里需要加载子类时,这种顺序就不能满足要求,就要有一条反向的通道,即得到子类加载器,这样就用到了thread context classloader,因为通过thread.getcontextclassloader()可以得到子类加载器).通常当必须动态加载应用程序开发人员提供的资源的时候. 以JNDI为例: 它的内容(从J2SE1.3开始)就在rt.jar中的引导类中实现了, 但是这些JNDI核心类需要动态加载由独立厂商实现并部署在应用程序的classpath下的JNDI提供者. 这种情况就要求一个父classloader(本例, 就是引导类加载器)去加载对于它其中一个子classloader(本例, 系统类加载器)可见的类. 这时通常的类加载代理机制不能实现这个要求.解决的办法(workaround)就是, 让JNDI核心类使用当前线程上下文的类加载器, 这样, 就基本的类加载代理机制的相反方向建立了一条有效的途径.
另外, 上面一段可能让你想起一些其它的事情: XML解析Java API(JAXP). 是的, 当JAXP只是J2SE的扩展进, 它很自然地用当前类加载器来引导解析器的实现. 而当JAXP被加入到J2SE1.4的核心类库中时, 它的类加载也就改成了用当前线程类加载器, 与JNDI的情况完全类似(也使很多程序员很迷惑). 明白为什么我说来自Sun的指导很缺乏了吧?
在以上的介绍之后, 我们来看关键问题: 这两种选择(当前类加载器和当前线程类加载器)都不是在所有环境下都适用. 有些人认为当前线程类加载器应该成为新的标准策略. 但是, 如果这样, 当多个线程通过共享数据进行交互的时, 将会呈现出一幅极其复杂的类加载的画面, 除非它们全部使用了同一个上下文的类加载器. 进一步说, 在某些遗留下来的解决方案中, 委派到当前类加载器的方法已经是标准. 比如对Class.forName(String)的直接调用(这也是我为什么推荐尽量避免对这个方法进行调用的原因). 即使你努力去只调用上下文相关的类加载器, 仍然会有一些代码会不由你控制. 这种不受控制的类加载委派机制是混入是很危险的.
更严重的问题, 某些应用服务器把环境上下文及当前类加载器设置到不同的类加载器实例上, 而这些类加载器有相同的类路径但却没有委派机制中的父子关系. 想想这为什么十分可怕. 要知道类加载器定义并加载的类实例会带有一个JVM内部的ID号. 如果当前类加载器加载一个类X的实例, 这个实例调用JNDI查找类Y的实例, 些时的上下文的类加载器也可以定义了加载类Y实例. 这个类Y的定义就与当前类加载器看到的类Y的定义不同. 如果进行强制类型转换, 则产生异常.
这种混乱的情况还将在Java中存在一段时间. 对于那些需要动态加载资源的J2SE的API, 我们来猜想它们的类加策略. 例如:
JNDI 使用线程上下文类加载器
Class.getResource() 和Class.forName()使用当前类加载器
JAXP(J2SE 1.4 及之后)使用线程上下文类加载器
java.util.ResourceBundle 使用调用者的当前类加载器
URL protocol handlers specified via java.protocol.handler.pkgs system property are looked up in the bootstrap and system classloaders only
Java 序列化API默认使用调用者当前的类加载器
这些类及资源的加载策略问题, 肯定是J2SE领域中文档最及说明最缺乏的部分了.
⑸ 如何用python 中with 用法
要使用 with 语句,首先要明白上下文管理器这一概念。有了上下文管理器,with 语句才能工作。
下面是一组与上下文管理器和with 语句有关的概念。
上下文管理协议(Context Management Protocol):包含方法 __enter__() 和 __exit__(),支持
该协议的对象要实现这两个方法。
上下文管理器(Context Manager):支持上下文管理协议的对象,这种对象实现了
__enter__() 和 __exit__() 方法。上下文管理器定义执行 with 语句时要建立的运行时上下文,
负责执行 with 语句块上下文中的进入与退出操作。通常使用 with 语句调用上下文管理器,
也可以通过直接调用其方法来使用。
运行时上下文(runtime context):由上下文管理器创建,通过上下文管理器的 __enter__() 和
__exit__() 方法实现,__enter__() 方法在语句体执行之前进入运行时上下文,__exit__() 在
语句体执行完后从运行时上下文退出。with 语句支持运行时上下文这一概念。
上下文表达式(Context Expression):with 语句中跟在关键字 with 之后的表达式,该表达式
要返回一个上下文管理器对象。
⑹ 电脑资源管理器的右键上下文菜单打不开怎么办
某个文件或文件夹右键单击后,出现的菜单,就是上下文菜单,资源管理器的右键上下文菜单,就是在桌面空白处,或者在资源管理器空白处右键单击显示出来的菜单。资源管理器中的右键上下文菜单打不开可以用下面的方法来解决!
方法一:解除组策略禁用
1、先从开始菜单中打开“运行”程序,然后输入gpedit.msc命令,确定,就进入组策略编辑框了。
2、进入组策略窗口后,先找到“用户配置”这一项,然后在其子项中,找到“用户模板”,再打开其子项
3、进入用户模板的子项中,找到并打开“Windows 组件”,再从其打开的子项中,找到并选择“Windows 资源管理器”这一项。
4、然后到“Windows 资源管理器”这一项的右侧窗口,找到“删除 Windows 资源管理器的默认上下文菜单”,双击进入其属性窗口。
提示:如果项目看不完整,可以调整一下窗口,把左侧的目录缩小一点,右侧窗口就比较大了,再把列头拉开一点,就能看到完整的项目了。
5、进入属性窗口后,在“常规”选项下,其当前状态为“已启用”这项,就是因为这项设置为了已启用,才导致不能出现资源管理器的上下文菜单。
6、解决方法,就是把“已启用”改为“未配置”这一项,然后按“应用”保存,按“确定”退出,组策略禁用就解除了。
7、既然解除了设置,就试试效果如何,先在资源管理器窗口空白处右键,这回,右键上下文菜单就能打开了。再试试桌面空白处右键菜单,也能打开了。组策略禁用就成功解除了
方法二:解除注册表禁用
1、先从始菜单中打开“运行”程序,然后在运行编辑框中输入regedit命令,确定,就进入了注册表。
2、进入注册表编辑器窗口后,依次打开[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]这条路径,最后选定Explorer此项
3、然后到Explorer的右侧窗口,找到“NoViewContextMenu”这一项,双击打开修改窗口,也可以从右键中选择“修改”这一项。
提法:NoViewContextMenu的中文意思是“不显示上下文菜单”。
4、进入“编辑 DWORD 值”窗口,在数据数值下,显示当前值为“1”,将其值改为“0”,然后按“确定”,就修改完成了。
5、还有一个解决方法,就是直接选择“NoViewContextMenu”这一项,然后右键,选择右键菜单中的“删除”,将此项删除,与设置为“0”的效果是一样的。
注意事项:
1、修改注册表之前,最好备份一下注册表,以便错误时,能用备份恢复。
2、上面的方法随便用一个即可,如果用了组策略方法,就会在注册表中看不到NoViewContextMenu这一项。
⑺ 怎样通过命令行调用文件管理器
要输入文件的完整路径。如你的a.exe 文件在d盘下面的aa文件夹下面的,就要这样运行:
d:\aa\a.exe
开始 - 运行 cmd 回车
再运行你自己的文件: d:\aa\a.exe
⑻ 程序开发中with语句的使用
with 语句用于包装带有使用上下文管理器 定义的方法的代码块的执行。 这允许对普通的 try...except...finally 使用模式进行封装以方便地重用。
带有一个“项目”的 with 语句的执行过程如下:
对上下文表达式 (在 with_item 中给出的表达式) 求值以获得一个上下文管理器。
载入上下文管理器的 __enter__() 以便后续使用。
载入上下文管理器的 __exit__() 以便后续使用。
发起调用上下文管理器的 __enter__() 方法。
如果 with 语句中包含一个目标,来自 __enter__() 的返回值将被赋值给它。
执行语句体。
发起调用上下文管理器的 __exit__() 方法。 如果语句体的退出是由异常导致的,则其类型、值和回溯信息将被作为参数传递给 __exit__()。 否则的话,将提供三个 None 参数。
如果语句体的退出是由异常导致的,并且来自 __exit__() 方法的返回值为假,则该异常会被重新引发。 如果返回值为真,则该异常会被抑制,并会继续执行 with 语句之后的语句。
如果语句体由于异常以外的任何原因退出,则来自 __exit__() 的返回值会被忽略,并会在该类退出正常的发生位置继续执行。
函数定义是一条可执行语句。 它执行时会在当前局部命名空间中将函数名称绑定到一个函数对象(函数可执行代码的包装器)。 这个函数对象包含对当前全局命名空间的引用,作为函数被调用时所使用的全局命名空间。
函数定义并不会执行函数体;只有当函数被调用时才会执行此操作。
一个函数定义可以被一个或多个 decorator 表达式所包装。 当函数被定义时将在包含该函数定义的作用域中对装饰器表达式求值。 求值结果必须是一个可调用对象,它会以该函数对象作为唯一参数被发起调用。 其返回值将被绑定到函数名称而非函数对象。 多个装饰器会以嵌套方式被应用
⑼ java EE 自定义类中调用servlet上下文
1
解决第一句问题
可以将自定义类的方法的参数设置为servlet上下文对象ServletContext,然后在方法中就可以操作 Servlet 的 API了
然后在servlet中调用自定义类的方法,传参过去
2
解决第二句问题
将自定义类 import 到 jsp或servlet中 即可用
⑽ 笔记本电脑用键盘怎么打开任务管理器!
DEL键就是键盘上delete按键,每个键盘基本都会这个按键。如果实在找不到,可采取以下方法打开:
1、按Win+R快速打开“运行”,输入Taskmgr.exe 按“确认”即可打开任务管理器。