[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.mzph.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;依次加载。下面的网页代码&…