[Oracle]UNIX與Windows 2000上Oracle的差異(I)

作者:Ian Adam & David Stien, SAIC Ltd?
日期:19-Dec-2003 
出處:http://www.dbanotes.net
翻譯:Fenng

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

摘要

ORACLE Database是廣為人知的Unix硬件平臺上的領先的數據庫系統。ORACLE 用戶和管理員因此熟悉 Unix平臺 上的 ORACLE 架構以及它上面的工具和技巧,并從他們的數據庫得到最大的收益。相反,Windows上的 ORACLE 架構就不那么的被廣為了解。這篇文章從一個 DBA 的角度考察了兩個操作系統之間的關鍵的異同點。

簡介

在看了幾本令人失望的這方面的圖書之后,我們寫了這篇文章。那些書的通病是試圖做太多的事情--在細節上論述 Windows 和 ORACLE 。我們的這篇文章假定讀者熟悉 Unix 平臺上的ORACLE DBA 的工作。因此本文將分析兩個平臺 上的 ORACLE 的關鍵的差異而不是從頭教你 ORACLE 的技巧。我們不想把它作為你的一份詳盡的指導或者是手冊的 替代品,事實上本文會鼓勵你閱讀一些手冊。作為數據庫服務器平臺,它只會涉及一些 Unix 和 Windows 上相關的 優點,這就是本文的目的。

范例

這個例子使用 Linux 上的ORACLE 8i ,實例名字叫作 eighti 。Windows 2000 上面的 ORACLE 8i 的實例名字叫 作 atei 。

客戶端對 ORACLE 的訪問

當客戶端連接到 ORACLE 時,通常的來說ORACLE 服務器平臺與客戶端的應用無關。這實際上很難說清。ORACLE DBA和系統管理人員更關心操作系統平臺,他們有的時候會基于需求(如運行時間和可擴展性)選擇平臺。更通常的 情況下,他們接受(或是接手)給定的平臺并學習從中得到最大收益。

關于 WINDOWS 2000

值得一提的是 Windows 2000 是從 Windows NT 升級而來。在這兩個操作系統之間有很多的相似點, Windows 2000 也有些新的特性。微軟從 NT4.0 的升級途徑見下表。

兩個系統間有很多相似點:

NT 4.0Windows 2000
NT 4.0 WorkstationWindows 2000 Professional
NT 4.0 ServerWindows 2000 Server
NT 4.0 Enterprise EditionWindows 2000 Advanced server
UnixWindows 2000 Datacenter server

ORACLE 后臺進程

下面這句話對于用過 ORACLE 的人來說是會很熟悉的:

每一個運行著的 ORACLE 數據庫都對應一個 ORACLE 實例,當一個數據庫在數據庫服務器(不考慮機器的類型) 上啟動的時候,ORACLE 分配一塊叫做 System Global Area (SGA) 的內存區域并啟動一個或者多個ORACLE 進 程。SGA 和 ORACLE 進程合起來稱作 ORACLE 實例。
--摘自 ORACLE 8i Concepts [4 L Leverenz, 1999] 。

處理后臺進程是放在首位的,也是不同的操作系統之間最明顯的差異。

ORACLE 在 UNIX 上的后臺進程

任何連接到 UNIX 的用戶都可以很容易的察看 ORACLE 的后臺進程:

% ps -ef|grep eighti|grep -v grep oracle8 18451 1 0 16:37:18 ? 0:00 ora_pmon_eighti 
oracle8 18453 1 0 16:37:19 ? 0:00 ora_dbw0_eighti 
oracle8 18457 1 0 16:37:19 ? 0:04 ora_ckpt_eighti 
oracle8 18461 1 0 16:37:19 ? 0:00 ora_reco_eighti 
oracle8 18455 1 0 16:37:19 ? 0:02 ora_lgwr_eighti 
oracle8 18459 1 0 16:37:19 ? 0:01 ora_smon_eighti
oracle8 19168 19167 0 16:43:46 ? 0:00 oracleeighti 
(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) 

最后一行的 ORACLE 進程與一個SQL*Plus 會話相關,其他的進程都是后臺進程。在 ORACLE 中我們可以通過輸 入 SQL*Plus 會話察看這些進程:

SELECT SID, spid, osuser, s.programFROM v$process p, v$session sWHERE p.addr = s.paddr; SID SPID OSUSER PROGRAM 
------------------------------------------------------------------- 
1 18451 oracle8 oracle@saic02 (PMON) 
2 18453 oracle8 oracle@saic02 (DBW0) 
3 18455 oracle8 oracle@saic02 (LGWR) 
4 18457 oracle8 oracle@saic02 (CKPT) 
5 18459 oracle8 oracle@saic02 (SMON) 
6 18461 oracle8 oracle@saic02 (RECO) 
7 19168 oracle8 sqlplus@saic02(TNS V1-V3) 7 rows selected. 

每一個后臺進程都有一行,還有一行信息是與 SQL*Plus 會話相關的, SPID 對應相應的 UNIX 進程號。

在 WINDOWS2000 上的 ORACLE 后臺進程

回到 WINDOWS 上,從操作系統中察看后臺進程有些困難。從任務管理器中可能會看到運行著的應用(任務管理器 的察看方法:在任務欄點擊右鍵選擇 " 任務管理器 " )。在服務器上 ORACLE 可以是可用的,運行著的應用卻是不 可見的。進程表的確顯示一個進程叫做 ORACLE.EXE ,察看 alert log 顯示 ORACLE 的所有后臺進程都是啟動的:

PMON started with pid=2 
DBW0 started with pid=3 
LGWR started with pid=4 
CKPT started with pid=5 
SMON started with pid=6 
RECO started with pid=7 

要看實際的后臺進程,需要運行額外的軟件,例如,進程察看器。該軟件可以從 Windows 2000 CD 中得到(如果 是 Windows NT 的話可以從資源包中得到)。

在 Windows 2000 上, ORACLE 實例是作為一個單一的 Windows 2000 進程(ORACLE.EXE )實現的。這個 進程包括實例所需要實現的每個任務的線程。

因此一個線程對應每個 ORACLE 后臺進程。 ORACLE.EXE進程作為一個服務運行,可以從控制面板的服務中察看到 ORACLEServiceSID 。其他的服務也可以這樣控制。

這允許 ORACLE 在沒有用戶登錄服務器的時候也持續的運行。對于共享主處理器資源的所有的進程來說, ORACLE 能夠達到高速、低負荷的上下文切換。

在 Unix 下顯示 ORACLE 中的進程,我們也可以通過輸入簡單的 SQL 語句來達到。為了顯示 PID 列, SQL 語句做 了些輕微的改動。要注意 PID 匹配警告日志中報告的值。

SELECT s.SID, p.pid, p.spid signaled, s.osuser, s.programFROM v$process p, v$session sWHERE p.addr = s.paddr;SID PID THREADID OSUSER PROGRAM 
---- ------- --------- --------------- --------------------
1 2 1088 SYSTEM ORACLE.EXE 
2 3 1172 SYSTEM ORACLE.EXE 
3 4 1180 SYSTEM ORACLE.EXE 
4 5 1192 SYSTEM ORACLE.EXE 
5 6 1212 SYSTEM ORACLE.EXE 
6 7 1220 SYSTEM ORACLE.EXE 
7 8 1200 Administrator SQLPLUSW.EXE 7 rows selected. 

每一個后臺進程都有一行,還有一行信息是與 SQL*Plus會話相關。程序名字并沒有指明后臺進程的名字,和在 Unix 中一樣,這些名字可以通過和 v$bgprocess 連接得到。

SELECT s.SID SID, p.spid threadid, p.program processname, bg.NAME NAMEFROM v$process p, v$session s, v$bgprocess bgWHERE p.addr = s.paddr AND p.addr = bg.paddr AND bg.paddr <> '00';SID THREADID PROCESSNAME NAME 
---------- --------- --------------- ------------- 
1 1088 ORACLE.EXE PMON 
2 1172 ORACLE.EXE DBW0 
3 1180 ORACLE.EXE LGWR 
4 1192 ORACLE.EXE CKPT 
5 1212 ORACLE.EXE SMON 
6 1220 ORACLE.EXE RECO 6 rows selected. 

斷開會話

提交 SQL 命令 ALTER SYSTEM DISCONNECT SESSION 可以斷開會話。有的時候需要在操作系統級別斷開會話 ,在 UNIX 上,通過 kill 命令實現,前面例子中的 SQL 會話可以通過輸入 UNIX 命令斷開:

kill -9 19168 

在 Windows 2000 上可以用 orakill 斷開一個會話。 orakill 是 Windows 平臺上的 ORACLE 的一個特定命令, 默認安裝在 $ORACLE_HOME\bin 下。在命令行下輸入 orakill 可以察看它的用法。前面例子中的 SQL*Plus 會話 可以通過輸入如下的命令斷開:

orakill atei 1200 
Kill of thread id 1200 in instance atei successfully signaled. 

在 Windows 2000 中,如果一個斷開的會話標記為 "marked for kill" 但是沒被刪除, orakill 會終止它。不過要 記住Kill一個后臺進程總不是個好主意,尤其是 Windows 上,會導致進程崩潰,甚至導致數據庫不可用。

Windows 2000 注冊表

和其他的 Windows 2000 中的應用那樣, ORACLE 的大多數的設定都在注冊表中。 你應該看看注冊表中的 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE 下面都有什么。這些參數中的一部分在后面會詳細討論。和 ORACLE 服務相關的參數和其他的服務一樣存貯在同樣的位置: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 。

環境變量

在 Unix 中兩個最重要的變量是 ORACLE_HOME 和 ORACLE_SID 。一旦這些變量設定的話,應用就可以運行并聯 接到本地數據庫。 通常也把 $ORACLE_HOME/bin包含在 $PATH中以便在使用 ORACLE 工具(如: Sql*Plus ) 的時候免去輸入全路徑的麻煩。

Windows 2000 中可以打開命令行設定 ORACLE_SID 變量再聯接到本地數據庫。其他的值可以從注冊表中得到。

MULTIPLE ORACLE HOMES

Windows 2000 全面支持多個 ORACLE home 。以前在 Windows NT 上這是個主要的問題, 一直到 ORACLE 8.0.4 以后才開始支持。最初得對這一點的支持很差勁。 ORACLE Home Selector, ORACLE8i 的一個新的應用工 具,改變環境路徑,使選擇的 ORACLE home 路徑作為主的 home 。只是簡單的改變系統路徑,把 ORACLE 選擇 的 BIN 目錄放在啟動路徑中。

每一個 BIN 目錄都有一個 ORACLE.KEY 文件,指明在注冊表中 ORACLE 程序在哪里可以找 ORACLE_HOME 和其 他的環境變量。如果在服務器上面只有一個數據庫,通常在注冊表中設定 ORACLE_SID 。不過,不要設定 ORACLE_HOME ,對于 ORACLE 產品來說根本不需要,可能會導致問題。

文件系統

多 ORACLE home 的支持允許在 Windows 上面實現 Unix 的 OFA 標準。這極大的簡化了從 Unix 的過渡。 OFA 目錄樹的頂層的名字有差異,不過主要的子目錄和文件名字在兩種操作系統中都是一致的。

?UnixNT
ORACLE_BASE/oracle/app/oracleD:\Oracle
ORACLE_HOME/oracle/app/oracle/product/8.1.7D:\Oracle\Ora817
Admin directories/oracle/app/oracle/adminD:\Oracle\Admin
Database files/db01/oradata/SIDD:\Oracle\Oradata\SID
?/db02/oradata/SIDF:\Oracle\Oradata\SID
?/db03/oradata/SIDG:\Oracle\Oradata\SID

服務管理器

從 ORACLE 8i 開始,服務管理器的名字在不同的平臺上都一致了,都叫做 svrmgrl 。以前在Windows NT 上 ORACLE 的執行文件名字隨著版本變動而改變,對于那些在多平臺上工作的人來說這很令人討厭,尤其是在使用一些命令 ( imp 、 exp 等)的時候。

ORACLE 服務器版本Windows 服務器管理器可執行程序
7.3svrmgr23
8.0svrmgr30
8.1svrmgrl

要注意 server manager 正在逐步被淘汰 ( 譯者注: 9i 中徹底淘汰了 svrmgrl) ,一些額外的功能被加到了 SQL*Plus 中。

?

數據庫啟動與關閉

在 Windows2000 上數據庫可以通過啟動相關的服務打開。通過控制面板的服務選項或者是通過命令行模式,如: net start OracleServiceatei 就可以打開相關服務。這依賴于一些注冊表參數,我們在后面討論。停止相關的服務 ,例如: net stop OracleServiceatei 可以關閉一個數據庫。

在所有的平臺上, ORACLE8i 實例都可以從服務管理器(或者 SQL*Plus! )中通過 startup 命令啟動。在 Unix 中,這個命令啟動后臺進程并且打開數據庫。它還生成了一個 Unix 特定文件,叫做 $ORACLE_HOME/dbs/lk &DBNAME>,這是個MOUNT 鎖文件 [6 Metalink, 2000] 。這會阻止兩個實例 mount 在同一數據庫上,當不使用并行服務器的模式下,要使用不同的 ORACLE_SID 。原來這是個 0 長度文件,不過現在 包含文本 'DO NOT DELETE THIS FILE!' 。不要試圖通過查看這個文件來得知是否數據庫是可用的,它不是很準確 的。在 Windows 2000 中, startup 命令并不啟動 ORACLE 服務,不過,如果服務已經運行的話,這將打開數據 庫。

類似的,服務管理器 Server Manager 的 shutdown 命令在任何平臺上都會關掉數據庫,不過在Windows 2000 上它并不停掉服務。很有可能的情況就是 ORACLE 服務被啟動但是數據庫卻關掉了。

UNIX 上的數據庫的自動啟動與關閉

在 Unix 上, ORACLE 提供了 dbstart 和 dbshut 腳本以供使用。在 Linux 中 ORACLE 檢測文件 /etc/oratab 來決定哪個數據庫自動的啟動 / 關閉。在 Solaris ( 和一些其他版本的 Unix) 中,檢查 /var/opt/oracle/oratab 文 件。要注意: 8.1.6 版本的 dbstart 有個 bug, 在 8.1.7 中已經被修復,察看 [7 Metalink, 2000] 有詳細說明。

在 Linux 上,作為 root 用戶,在 /etc/rc.d/init.d 目錄中創建一個一個名為 dbora 的文件。這個文件將會檢查參數 是否是 'start' 或者 'stop' 并且適當的執行 dbstart/dbshut ;通常也從這個腳本啟動 listener 。再生成兩個符號 連接 /etc/rc.d/rc2.d/S99dbora 和 /etc/rc.d/rc0.d/K10dbora 。數據庫在運行級 2( 多用戶 ) 時通過 /etc/rc.d/rc2.d/S99dbora 啟動 , 在系統關閉到運行級 0 的時候通過 /etc/rc.d/rc0.d/K10dbora 關閉數據庫。在 Solaris 上,這個腳本的在 /etc/init.d 中而不是在 /etc/rc.d/init.d。

要注意默認的 dbshut 執行了一個正常 (normal) 的關閉操作。 在 Unix中可以通過編輯 $ORACLE_HOME/bin/dbshut 中的這一行來改變數據庫的關閉模式。

把 shutdown 修改成:shutdown immediate

如果啟動一個已經運行的實例, dbstart 還會執行一個 shutdown abort 。在 dbstart script 腳本的頂部警告說 'It should ONLY be executed as part of the system boot procedure' 。這個腳本要常被復制、修改,這樣 在其它的時候使用才能足夠安全。

WINDOWS 2000 上的數據庫自動的啟動與關閉

在以前的版本( 8i )中,當 oracle 的啟動被一個額外的服務 ORACLEStartSID 處理,服務器的啟動和關閉的時候 ORACLE 不能被自動的干凈的關掉。從 ORACLE8i 開始, stop/start 功能成為了主要的 ORACLE 服務,并通過注 冊表控制。注意當 ORADIM 用于創建或者修改實例的時候,自動的在注冊表中設定這些值。這些設置在 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMEID 鍵值下。 ID 號從 0 開始,每有一個額外的 ORACLE home 遞增。

參數描述
ORA_SID_AUTOSTART設定為 TRUE 的時候 ( 默認值 ) , ORACLEServiceSID 啟動的時候啟動數據庫。
ORA_SID_PFILE設定 INIT.ORA 參數文件的全路徑。
ORA_SHUTDOWN當設定為 TRUE 的時候,在當前任何 ORACLE home 下的任何數據庫將 shutdown 。
ORA_SID_SHUTDOWN設定為 TRUE 的時候,關閉標記 SID 值的 ORACLE8i 數據庫。

如果 SHUTDOWN 參數設定為 FALSE ,停掉 ORACLEServiceSID 將會 abort 的方式關閉實例,下次啟動的時候 要進行實例恢復。

下面的可選參數可以在注冊表中設為合適的值

參數描述
ORA_SID_SHUTDOWNTYPE指明數據庫關閉模式 A (abort ), I (immediate) , N(normal) 。
如果你不設定這個參數的話,默認的模式是 I (immediate) 。
ORA_SID_SHUTDOWN_TIMEOUT在一個 SID 停止前等待的最大時間。

操作系統認證

OS 認證在兩個平臺間是相似的,參數文件中設定 os_authent_prefix 參數,創建用戶都標記為 externally 。在 Windows2000 中創建用戶要指定大寫的域名并且用戶名要在 " " 中,否則不起作用。如果你在注冊表中把 OSAUTH_PREFIX_DOMAIN 設定成 FALSE 的話,你可以忽略掉域。客戶機和服務器的機器還需要在 sqlnet.ora 中包含 sqlnet.authentication_services=(nts) 這一行。

在 Windows 2000 中,可以允許一個域用戶登陸到一個遠程 pc 上,無需提供額外的密碼就可以連接到數據庫中。 參見 [2 Kelly III,2000] 可以得到詳細內容。

LISTENER

在 Windows 2000 上面 listener 作為一個服務實現的,所以 listener 可以通過啟動 ORACLETNSListener 服務 來啟動。兩種平臺上 listener 都可以從 lsnrctl 命令控制。在 Unix 上 lsnrctl start 啟動 listener 進程;在 Windows 2000 啟動 ORACLETNSListener 服務就可以。 如果 listener 第一次啟動的時候沒有 ORACLETNSListener 服務將創建它。如果從你的計算機中刪除 ORACLE 的話, listener 服務要手工從注冊表中 刪除。

在兩個平臺上的 listener 都可以監聽不同版本的數據庫。在 win2000 中,在 LISTENER.ORA 中不需要 ORACLE_HOME 參數 ( 在 UNIX 中要使用到的),因為每個 SID 在 SERVER 中是唯一的。 listener 可以從注冊 表中得到正確的 ORACLE_HOME 。

ORACLE8i 有個特性叫服務器注冊, pmon 自動對 listener 注冊信息。這意味著 Net8 listener 可以無需在 listener.ora 文件中設置就可以監聽一個數據庫。不過這樣做的話, Enterprise Manager 要直到啟動后才可以連 接到數據庫。所以這個例子不能用來啟動一個遠程的實例。

通常最好在 listener.ora 中設置所有的實例以避免沖突,尤其在一個有多位 DBA 的站點中,可以避免我們提到的 Enterprise Manager 問題。

加長的 SID 名字

Windows NT 上的 ORACLE 7 實例名字有著 4 個字符長的限制,這可能會產生很晦澀的實例名--慶幸的是在8i 中 SID 名字已經加長了。不過在包括命名服務的幾個場合中使用太長的實例名字也不總是很有用。在 Windows 2000 上面有個 bug ,限制了實例名字最長 15 個字符。

?Unix操作系統NT 操作系統
?數據庫名長度SID名字長度數據庫名長度SID 名字長度
Oracle78884
Oracle88884
Oracle8i864864

數據庫的創建

當你在安裝過程中的時候選擇創建 ORACLE 8i 數據庫,數據庫生成助手就會通過 ORACLE Universal Installer 自動運行。在安裝后它也可以作為一個單獨的工具手工運行。用它還可以手工的輸入 SID 代替默認的 ORCL ,默認的情況下,不在 ORACLE_HOME 下面創建數據庫,完全遵循 OFA 的意圖。

建議你運行 Database Creation Assistant ,不過在最后一頁選擇[ Save information to a batch file ] (保存信息到一個批處理文件中),再點擊[完成]按鈕。這會產生幾個腳本。從不同的平臺對比它們的內容很有趣的。在Unix 和 Windows 上的內容很相似,除了 windows 上對 oradim 的調用不同。第一次對它的調用產生了一個與ORACLE 數據庫相關聯的 ORACLE 服務:

D:\ORACLE\Ora817\bin\oradim -new -sid ATEI -intpwd man -startmode manual 
-pfile "D:\ORACLE\admin\atei\pfile\initatei.ora"

第二次對 oradim 的調用把服務更改為自動啟動:

D:\ORACLE\Ora817\bin\oradim -edit -sid atei -startmode auto 

可以用這些文件作為創建其它數據庫的模版。若你不使用上面建議的方式創建數據庫的話, Database Creation Assistant 生成的這些文件和目錄沒什么大用處。在使用這些腳本創建額外的數據庫之前,這些文件和目錄不得實現創建。特別注明一下,腳本假定一個密碼文件已經存在 , 密碼文件可以用 orapwd 命令預創建 [2 H Kelly III, 2000] 。

Database Creation Assistant 創建的目錄:
Windows 2000Unix
ORACLE_BASE = D:\oracleORACLE_BASE = /db01/app/oracle
ORACLE_BASE\oradata\atei$ORACLE_BASE/oradata/eighti
ORACLE_BASE\oradata\atei\archive$ORACLE_BASE/oradata/eighti/archive
ORACLE_BASE\admin\atei$ORACLE_BASE/admin/eighti
還有這些子文件夾:sadhoc bdump cdump create exp pfile udump


通過 Database Creation Assistant 創建 / 改動的文件:
Windows 2000Unix
ORACLE_HOME = D:\oracle\ora817ORACLE_HOME = /db01/app/oracle/product/8.1.7
ORACLE_HOME\database\PWDatei.ora$ORACLE_HOME/dbs/orapweighti.ora
ORACLE_BASE\admin\atei\pfile\initatei.ora$ORACLE_BASE/admin/eighti/pfile/initeighti.ora
ORACLE_HOME\database\initatei.ora?
包含一行?
IFILE='d:\oracle\admin\atei\pfile\initatei.ora‘
$ORACLE_HOME/dbs/initeighti.ora?
符號鏈接到:?
/db01/app/oracle/ admin/eighti/pfile/initeighti.ora
添加到 tnsnames.ora 的條目添加到 tnsnames.ora 的條目
添加到 listener.ora 的條目添加到 listener.ora 的條目
windows 沒有相關的操作添加項目到 oratab >


通過 Database Creation Assistant 創建的腳本:
Windows 2000Unix注釋
atei.bateighti調用其它腳本 , 在 Windows 上還可以調用 ORADIM
ateirun.sqleightirun.sh包含創建數據庫的語句
ateirun1.sqleightirun1.sh創建表空間 / 創建回滾段 不創建系統中的第二個回滾段
N/Aeightirun2.sh額外的腳本(如,catproc ) ,?
這些在 Windows 上從 ateirun1.sql 中運行
ateisqlplus.sqleightisqlplus.sh添加 SQL*Plus 幫助?
@c:\oracle\ora817\sqlplus\admin\help\helpbld.sql helpus.sql
ateialterTablespace.sqleightialterTablespace.sh為 SYSTEM 用戶更改默認的和臨時的表空間
ateireplicate.sql ateijava.sql?
ateiordinst.sql?
ateiiMedia.sql?
ateidrsys.sql?
ateicontext.sql?
ateispatial1.sql?
ateitimeseries.sql?
ateivirage.sql?
eightireplicate.sh eightijava.sh?
eightiordinst.sh?
eightiiMedia.sh?
eightidrsys.sh?
eighticontext.sh?
eightispatial1.sh?
eightitimeseries.sh?
eightivirage.sh
各種腳本,只有在你選擇相應的選項的時候才會生成。

遠程掛接(mount)的文件系統,如 UNIX 上的 NFS 和 Windows 2000 上 UNC ,在兩個平臺上都不支持。

轉載于:https://www.cnblogs.com/ZeroTiny/p/6122678.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/456822.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456822.shtml
英文地址,請注明出處:http://en.pswp.cn/news/456822.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

django2.x報錯No module named 'django.core.urlresolvers'

解決方法就是: from django.urls import reverse 最近從django1.9遷移到django2.0中出現一個意外的報錯&#xff1a; 這個報錯的原因在stack overflow上有很直接的解釋&#xff0c;但是百度上并沒有直接的答案。 簡單來說&#xff0c;原因就是&#xff1a;django2.0 把原來…

Underscore簡介

5. Underscore.js Underscore封裝了常用的JavaScript對象操作方法&#xff0c;用于提高開發效率。它本身與我們介紹的主題“Backbone”沒有半毛錢的關系&#xff0c;因此你可以完全不理會“Backbone”的概念來學習它&#xff0c;或將它單獨運用到任何一個頁面。&#xff08;另外…

POJ2190 HDU2714 ISBN

USACO 2003 Fall Orange 問題鏈接&#xff1a;POJ2190 HDU2714 ISBN。 問題簡述&#xff1a;參見上述鏈接。 問題分析&#xff1a; 單純的計算問題。需要注意以下幾點&#xff1a; 1.如果是末尾數&#xff0c;則輸出為‘X’&#xff1b; 2.如果能找到對應的值則輸出&#xff1b…

Django-安裝xadmin的方法及主要配置方法

歷經千辛萬苦&#xff0c;終于實現了django2.1中xadmin的使用 被論壇里各路神仙帶跑N次 準確說是幾個小時 直接colne https://github.com/Liu0330/xadmin 工作系統環境&#xff1a;win10Python3.6.xDjango2.1.xXadmin2.0&#xff08;注意2.2版本就不行&#xff01;&#xff…

大數據集群搭建之Linux的安裝(一)

1、準備工具 VMWare、centos mimal版本系統文件。 2、工具安裝 1、安裝vmware軟件 安裝軟件地址&#xff1a; VMWare&#xff1a;http://pan.baidu.com/s/1qYnySrE 密碼&#xff1a;3t3r centos mimal版本&#xff1a;http://pan.baidu.com/s/1dE5LY6H 密碼&#xff1a…

阻止事件冒泡兩種方式:event.stopPropagation();和return false;

jQuery提供了兩種方式來阻止事件冒泡。 方式一&#xff1a;event.stopPropagation(); $("#div1").mousedown(function (event) {event.stopPropagation(); }); 方式一&#xff1a;return false; $("#div1").mousedown(function (event) {return false; });…

關于電腦的基礎單詞筆記

chapter01 mouse 鼠標. keyboard 鍵盤. notepad 記事本 . sava 保存. chapter02 word 文本文檔. office 辦公軟件. copy 復制. past 粘貼. find 復制. table 表格. page 頁. picture 圖片. chapter03 sheet 工作薄. cell 單元格. number 數字. true 真. …

Python3.6+Django2.0+Xadmin2.0學生信息管理系統

一、創建模型 模型是表示我們的數據庫表或集合類&#xff0c;并且其中所述類的每個屬性是表或集合的字段&#xff0c;在 app/models.py 中定義。 1、首先&#xff0c;導入models模塊 from django.db import models 接下來創建個學生信息類&#xff0c;其中包含學生姓名、性別…

升級 pip版本

安裝第三方庫&#xff1a;pip install Pillow 出現 You are using pip version 7.1.2, however version 9.0.1 is available. You should consider upgrading via the python -m pip install --upgrade pip comm and. 解決方法1&#xff1a; 輸入“python -m pip install -U pi…

大數據集群搭建之節點的網絡配置過程(二)

緊接著上一章來設置windows的vmnet8的ip地址和虛擬機中centos的ip地址。 NAT虛擬網絡的配置圖如下圖所示&#xff1a; 1、這里根據VMware中得到的網關地址去設置vmnet8的ip地址。 網關地址查看&#xff1a; 2、得到的網關地址后去設置vmnet8&#xff0c;將網關地址設置為v…

Python3.6+Django2.0+Xadmin2.0學生信息管理系統-2

1、上傳圖片/文件等資源 有時候需要添加一些附件&#xff0c;例如&#xff0c;新生剛入學&#xff0c;大家相互之間還不熟悉&#xff0c;希望能通過照片來加深印象&#xff0c;并且方便教學管理。 首先&#xff0c;對demo/urls.py文件進行改造&#xff0c;給urlpatterns添加s…

vim自帶的練習教程(vimtutor)

聲明&#xff1a;本文源于Centos 7.2系統vim自帶的練習教程--vimtutor歡迎閱 讀《 V I M 教 程 》 - 版本 1.7 Vim 是一個具有很多命令的功能非常強大的編輯器。限于篇幅&#xff0c;在本教程當中就不詳細介紹了。本教程的設計目標是講述一些必要的基本命令&#xff0c;而掌握…

pycharm之no python interpreter configured for project的解決辦法

今天由于重裝了系統&#xff0c;所以必須得重新配置一些軟件&#xff0c;在打開pycharm運行程序時顯示“no python interpreter configured for project”提示。根據字面意思是“python沒有解釋器”。 解決辦法&#xff1a; 找到你之前下載python環境支持庫如下圖所示&#x…

Python是非常優美的語言,那到底如何個美呢?

我把Python里面非常有名的簡潔&#xff0c;高效&#xff0c;方便的代碼整理出來&#xff0c;讓我們來一睹她的風采。其實每個主題展開講都是很大的篇幅&#xff0c;今天我們先overview一下 看完之后&#xff0c;相信初學者會更快的喜歡上python. 1.列表推導 要說Python里面最…

js生成驗證碼并且驗證

<html> <head> <title>驗證碼</title> <style type"text/css"> #code { font-family:Arial; font-style:italic; font-weight:bold; border:0; letter-spacing:2px; color:blue; } </style> <script type &qu…

大數據集群搭建之hadoop、tomcat、jdk等工具的安裝(三)

目錄一、準備的資源&#xff1a;二、安裝配置過程 目錄 本章就說下各種軟件的安裝和配置。 一、準備的資源&#xff1a; 1、tomcat(如用于在網頁上查看HDFS的存儲等) 地址&#xff1a;http://pan.baidu.com/s/1miC93ny 密碼&#xff1a;52dd 2、jdk 地址&#xff1a;ht…

pycharm 快捷鍵大全

1、編輯&#xff08;Editing&#xff09; Ctrl Space 基本的代碼完成&#xff08;類、方法、屬性&#xff09; Ctrl Alt Space 快速導入任意類 Ctrl Shift Enter 語句完成 Ctrl P 參數信息&#xff08;在方法中調用參數&#xff09; Ctrl Q 快速查看文檔 F1 Web幫…

轉載 Spark性能優化指南——基礎篇

前言 在大數據計算領域&#xff0c;Spark已經成為了越來越流行、越來越受歡迎的計算平臺之一。Spark的功能涵蓋了大數據領域的離線批處理、SQL類處理、流式/實時計算、機器學習、圖計算等各種不同類型的計算操作&#xff0c;應用范圍與前景非常廣泛。在美團?大眾點評&#xff…

JavaScript 判斷變量是否為數組Array的方法

1. 不能用typeof &#xff0c;因為typeof 只能判斷基本類型&#xff0c;不能判斷引用類型 var ary [1,23,4];console.log(typeof ary); //輸出結果是Object上面的辦法并不能實時的檢測出是否是數組&#xff0c;只能判斷其類型&#xff0c;所以說typeof判斷基本類型數據還是挺好…

require.js用法簡介

一、為什么要用require.js&#xff1f; 最早的時候&#xff0c;所有Javascript代碼都寫在一個文件里面&#xff0c;只要加載這一個文件就夠了。后來&#xff0c;代碼越來越多&#xff0c;一個文件不夠了&#xff0c;必須分成多個文件&#xff0c;依次加載。下面的網頁代碼&…