⑴ 程序開發中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 按「確認」即可打開任務管理器。