哲学原理win2003系网络安装——基于linux+pxe+dhcp+tftp+samba+ris

by admin on 2018年11月13日

一.规律简介

PXE(preboot execute
environment)工作被Client/Server的网模式,支持工作站通过网络由远端服务器下载镜像,并通过支持自网络的操作系统的启航。启动过程中,终端由DHCP服务器分配IP地址,再就此TFTP(trivial file transfer protocol)等商下充斥在被服务器(NFS,FTP,HTTP, SAMBA等)的操作系统内核和文件系统等交本机内存中并尽,由此形成终端基本软件安装,从而引导预先安装于服务器遭到之顶点操作系统。

RIS(远程安装服务,Remote Installation Services) 是windows server的可选服务,利用RIS可以于管理员很便宜地吧客户端部署操作系统。

  1 <!DOCTYPE html>
  2 <html lang="en">
  3 <head>
  4     <meta charset="UTF-8">
  5     <title>表格示例</title>
  6 </head>
  7 <body>
  8 <button class="select">全选</button>
  9 <button class="reserve">反选</button>
 10 <button class="cancel">取消</button>
 11 <table border="1">
 12     <tr>
 13         <td><input type="checkbox" class="check"></td>
 14         <td>111</td>
 15         <td>222</td>
 16         <td>333</td>
 17     </tr>
 18      <tr>
 19         <td><input type="checkbox" class="check"></td>
 20         <td>111</td>
 21         <td>222</td>
 22          <td>333</td>
 23     </tr>
 24      <tr>
 25         <td><input type="checkbox" class="check"></td>
 26         <td>111</td>
 27         <td>222</td>
 28          <td>333</td>
 29     </tr>
 30      <tr>
 31         <td><input type="checkbox" class="check"></td>
 32         <td>111</td>
 33         <td>222</td>
 34         <td>333</td>
 35     </tr>
 36 </table>
 37 <script>
 38 //    方式一:分别给每个button增加事件
 39     var ele_select = document.getElementsByClassName('select')[0];
 40     var ele_reserve = document.getElementsByClassName('reserve')[0];
 41     var ele_cancel = document.getElementsByClassName('cancel')[0];
 42     var ele_input = document.getElementsByClassName('check');
 43     //全选
 44     ele_select.onclick = function () {
 45         for (var i = 0; i < ele_input.length; i++) {
 46             //添加一个checked属性
 47             ele_input[i].checked = 'checked'
 48         }
 49     };
 50     //取消
 51     ele_cancel.onclick = function () {
 52          for (var i =0;i<ele_input.length;i++){
 53             //删除checked属性,直接设置为空就行了
 54             ele_input[i].checked = ''
 55         }
 56     };
 57     //反选
 58     ele_reserve.onclick = function () {
 59         for (var i = 0; i < ele_input.length; i++) {
 60             var ele = ele_input[i];
 61             if (ele.checked) {//如果选中了就设置checked为空
 62                 ele.checked = '';
 63             }
 64             else {//如果没有就设置checked = checked
 65                 ele.checked = 'checked';
 66             }
 67          }
 68     };
 69 
 70 
 71 
 72 
 73     //方式二:方式一的优化循环增加事件
 74 //    var ele_button = document.getElementsByTagName('button');
 75 //    var ele_input = document.getElementsByClassName('check');
 76 //    for(var i=0;i<ele_button.length;i++) {
 77 //        ele_button[i].onclick = function () {
 78 //            if (this.innerHTML == '全选') {
 79 //                for (var i = 0; i < ele_input.length; i++) {
 80 //                    //添加一个checked属性
 81 //                    ele_input[i].checked = 'checked'
 82 //                }
 83 //            }
 84 //            else if (this.innerHTML == '取消') {
 85 //                for (var i = 0; i < ele_input.length; i++) {
 86 //                    //删除checked属性,直接设置为空就行了
 87 //                    ele_input[i].checked = ''
 88 //                }
 89 //            }
 90 //            else {
 91 //                for (var i = 0; i < ele_input.length; i++) {
 92 //                    var ele = ele_input[i];
 93 //                    if (ele.checked) {//如果选中了就设置checked为空
 94 //                        ele.checked = '';
 95 //                    }
 96 //                    else {//如果没有就设置checked = checked
 97 //                        ele.checked = 'checked';
 98 //                    }
 99 //                }
100 //            }
101 //        }
102 //    }
103 
104 
105 </script>
106 </body>
107 </html>

三.安装配备过程简介

1.
配置DHCP

more /etc/dhcpd.conf

ddns-update-style interim;
ignore client-updates;
allow booting;
allow bootp;

subnet 192.168.0.0 netmask 255.255.255.0 {
        option routers                  192.168.0.1;
        option subnet-mask              255.255.255.0;
        option domain-name-servers      192.168.0.1;
        option time-offset              -18000; # Eastern Standard Time
        range dynamic-bootp 192.168.0.10 192.168.1.254;
        default-lease-time 21600;
        max-lease-time 43200;

# Group the PXE bootable hosts
# PXE-server configuration direction
        next-server 192.168.0.1;    #指向nfs服务器
        filename "/pxelinux.0";     #/tftp根目录下的启动引导文件
}

重启dhcp服务:

/etc/init.d/dhcpd restart 

2.
配置TFTP

more /etc/xinetd.d/tftp

# default: off
# description: The tftp server serves files using the trivial file transfer \
#       protocol.  The tftp protocol is often used to boot diskless \
#       workstations, download configuration files to network-aware printers, \
#       and to start the installation process for some operating systems.

service tftp
{
        socket_type            = dgram
        protocol               = udp
        wait                   = yes
        user                   = root
        server                 = /usr/sbin/in.tftpd

        #-s指定tftp根目录, -m指定一个规则文件, -vv输出tftp的log到/var/log/message 
        server_args            = -u nobody -s /tftpboot -m /tftpboot/rules -vv

        #默认yes,关闭
        disable                = no        
        per_source             = 11
        cps                    = 100 2
        flags                  = IPv4
}

重启tftp服务:

/etc/init.d/xinetd.restart

查阅tftp服务是否启动:

chkconfig –list | grep tftp 

3.
建立TFTP的rules文件

Linux下别轻重缓急写,但windows不分,为免混乱,将装有查找文件内容统一改成为小写。

more  /tftpboot/rules

ri ^[a-z]: # Remove "drive letters"
rg \\ / # Convert backslashes to slashes
rg \# @ # Convert hash marks to @ signs
rg /../ /..no../ # Convert /../ to /..no../
rg A a
rg B b
rg C c
rg D d
rg E e
rg F f
rg G g
rg H h
rg I i
rg J j
rg K k
rg L l
rg M m
rg N n
rg O o
rg P p
rg Q q
rg R r
rg S s
rg T t
rg U u
rg V v
rg W w
rg X x
rg Y y
rg Z z
r ^/(.*) \1 

4.
配置SAMBA

windows的ris安装是透过windows共享文件之不二法门展开文件传输,在linux下可以由此samba实现和windows进行文件共享,进而实现ris安装windows。

修samba配置文件:/etc/samba/smb.conf

#全局配置
[global]
       null passwords = true
       workgroup = WORKGROUP
       server string = Samba Server Version %v
       security = share
       dns proxy = no
       load printers = no
       disable spoolss = yes
       debug level = 2
       log file = /var/log/samba/%m.log
       max log size = 0

#共享配置
[wininstall]
comment = Windows 2003 Install
        path = /tftpboot
        browsable = true
        read only = no
        writeable = yes
        guest ok = yes

重启samba服务:

/etc/init.d/smb restart 

5.
安排启动需要的文本

达成传windows2003之镜像或者文件及服务器。这里以上传镜像然后挂载。

mount /root/win2003cn.iso /mnt –o loop
mkdir /tftpboot/win2k3
cd /mnt
cp –a * /tftpboot/win2k3

 

下面要解压一些iso中的公文,可以采取cabextract。

下载页:http://www.cabextract.org.uk/

可根据本下载。

wget http://www.cabextract.org.uk/cabextract-1.3-1.i386.rpm
rpm –ivh cabextract-1.3-1.i386.rpm

 

布windows ris 启动文件:

cd /tftpboot
cabextract win2k3/i386/startrom.n1_
#解压
sed -i -e 's/NTLDR/W2K3L/gi' startrom.n12
#直接替换startrom.n12文件中” NTLDR”为” W2K3L”
#W2K3L: windows 2003 Setup Loader
mv startrom.n12 /tftpboot/w2k3.0
#w2k3.0: windows 2003 pxe loader
cabextract win2k3/i386/setupldr.ex_
sed -i -e 's/winnt\.sif/wi2k3\.sif/gi' setupldr.exe
sed -i -e 's/ntdetect\.com/ntdetect\.2k3/gi' setupldr.exe
mv setupldr.exe /tftpboot/w2k3l
cp win2k3/i386/ntdetect.com /tftpboot/ntdetect.2k3
#ntdetect.2k3: windows 2003 ntdetect.com

 

安排pxe启动镜像:

cp /usr/lib/syslinux/pxelinux.0 /tftpboot
# pxelinux.0依赖于syslinux,没有安装使用yum:yum –y install syslinux*
# pxelinux.0是PXE启动引导文件

 

部署pxe启动加载文件:

pxelinux.0启动着,读取同目录先pxelinux.cfg文件夹下之配置文件为确定她应该怎么加载启动文件。

mkdir /tftpboot/pxelinux.cfg

vim /tftpboot/pxelinux.cfg/default
     default win2k3
     label win2k3
     kernel w2k3.0       #与ris启动文件匹配

 

树安装应答文件:

其一文件充分强劲,提供的参数不是指向网颇了解之人并不一定全掌握,我们只需要理解对咱来因此之参数。当然,没事的下啊得逐渐研究。J

vim /tftpboot/wi2k3.sif

[data]
AutoPartition = "0"
#关闭自动分区,2003还不能完全自动分区,这点需要手工操作。如果一定要跳过这一步,需要和后面的参数配合,并且2003提供的只有将全盘划成根盘(c:\)
floppyless = "1"
msdosinitiated = "1"
UnattendedInstall = "Yes"
OriSrc = \\192.168.0.1\wininstall\win2k3\i386
#注意samba和win安装文件路径
OriTyp = "4"
LocalSourceOnCD = "1"
DisableAdminAccountOnDomainJoin = "1"

[SetupData]
OsLoadOptions = "/fastdetect"
SetupSourceDevice = "\Device\LanmanRedirector\192.168.0.1\wininstall\win2k3"

[Unattended]
UnattendMode = "FullUnattended"
#使用unattended文件
FileSystem = "LeaveAlone"
NtUpgrade = "No"
OverwriteOemFilesOnUpgrade = "No"
DriverSigningPolicy = "Ignore"
UpdateInstalledDrivers = "Yes"
ConfirmHardware = "No"
ExtendOEMPartition = "0"
TargetPath = "\WINDOWS"
UnattendSwitch = "Yes"
WaitForReboot = "No"
CrashDumpSetting = "0"
OemSkipEula = "Yes"
OEMSkipWelcome = "1"
InstallFilesPath = "\\192.168.0.1\wininstall\win2k3\i386"
LegacyNIC = "1"
OemPreInstall = "Yes"    #加载OEM中的驱动

[UserData]
ProductKey = "M4VQK-HVTD9-42RQX-2DJP2-23KVM"
FullName = "admin"
OrgName = "SDO"
ComputerName = C1ZJ

[GuiUnattended]
AdminPassword = WD#sd7258
EncryptedAdminPassword = "No"
OEMSkipRegional = "1"
TimeZone = "220"
OemSkipWelcome = "1"

[LicenseFilePrintData]
AutoMode=PerServer
AutoUsers=5

[Identification]
JoinWorkgroup = WORKGROUP

#这里和分区有关
[RemoteInstall]
Repartition = "NO"
UseWholeDisk = "No"

[Networking]
InstallDefaultComponents = "Yes"

 

#以下的默认文件被没有,和劳务器raid卡驱动有关:

[MassStorageDrivers]
"Windows Driver for Smart Array SAS/SATA Controllers" = OEM

[OEMBootFiles]
cp011324.xml
cpqsetup.exe
generic.dll
hpcisss2.cat
hpcisss2.sys
hpcissx2.inf
install.xml
txtsetup.oem

#以下是系统安装完毕后第一次启动执行的批处理文件
[GuiRunOnce]
%systemdrive%\preinstall\runonce.cmd
  1. 令加载相关

因是服务器的装,所以需要提前加载一些教,自动装之辛苦就当这。

 

pxe安装需要加载网卡驱动(引导和文件传输是少只级次,传输文件级起经常如先管网卡驱动加载起来的)。

翻开及服务器使用的Broadcom NetXtreme II网卡,而Broadcom提供在ris下之使:

wget http://www.broadcom.com/docs/driver_download/NXII/win_2k3_RIS-5.0.0.zip
mkdir /tftpboot/nicdrive
unzip win_2k3_RIS-5.0.0.zip -d /tftpboot/nicdrive

 

令网卡,需要来一个binl server,binl读博有新的及网络接口卡相关的.inf文件,并以映像中创造建.pnf文件。

 binl server下载:http://oss.netfarm.it/guides/

wget http://oss.netfarm.it/guides/ris-linux-0.4.tar.gz
tar –zxvf ris-linux-0.4.tar.gz
cd ris-linux-0.4
./infparser.py /tftpboot/nicdrive/Server/W2K3_W2K8/RIS/
./binlsrv.py -d     #-d 后台运行,不能停止此程序
cp /tftpboot/nicdrive/Server/W2K3_W2K8/RIS/b06nd51x.sys /tftpboot/win2k3/i386

 

这边是Broadcom提供有专门的ris网卡驱动,如果没,可以将windows需要之网卡驱动(不限于网卡)的.inf文件在/tftpboot/inf文件夹下,执行:

./infparser.py /tftpboot/inf
./binlsrv.py

 

下一场是加载raid卡教(其他叫也适用,关键是能否找到相关文件)。

光盘安装windows在开经常蓝色屏幕上生一个仍F6的唤醒,提示是经过软盘加载磁盘驱动,这类让是windows系统中之驱动,可以下载好windows驱动,解压好叫在一个点名的目录,再通过对文件,一般可加载上即时类让。这好像让加载了后不要在系统受到还安装。加载这仿佛让有注意点:文件要有科学的oem数字签名(一般提供驱动之厂商还牵动数字签名),乱改动这看似公事,同时不以安排文件被写清楚去丢数字签名认证,是无克加载的。

 

下载HP的raid卡驱动(已经查型号:Smart Array E200i, 一般一个教支持多种类型的raid卡):

wget http://h30445.www3.hp.com/pub/softlib2/software1/sc-windows/p1285069816/v55115/cp011324.exe
mkdir /tftpboot/win2k3/i386/$oem$/textmode
unzip cp011324.exe -d /tftpboot/win2k3/i386/$oem$/textmode

 

在自行答文件wi2k3.sif末尾增长:

[MassStorageDrivers]
"Windows Driver for Smart Array SAS/SATA Controllers" = OEM
#”Windows Driver for Smart Array SAS/SATA Controllers”可以查看textmode文件夹下的txtsetup.oem文件,名字保持一致

[OEMBootFiles]
cp011324.xml
cpqsetup.exe
generic.dll
hpcisss2.cat
hpcisss2.sys
hpcissx2.inf
install.xml
txtsetup.oem
#textmode下的所有文件名字,一般自动安装的驱动文件.inf, .cat, .sys

#新增参数,修改[Unattended]字段
OemPreInstall = "Yes"
  1. 补丁,前期包,其他驱动的加载

完上述操作就已经好设置系统了,但是系统设置到位后需要举行有早期操作,像打补丁,打安全包,或者有让(芯片组,网卡,显卡等以点无加载到系统受到的有些教)。

这些优化的题材可以采用批处理文件解决。这些批处理文件最好是于windows下修好还上传到服务器,否则会起格式问题造成文件不可知执行。

 

第一用在$oem$目录下起cmdlines.txt文件,这个文件会在系统安装过程的登记组件时间段(即尚留13分钟左右常常)调用:

vim /tftpboot/win2k3/$oem$/cmdlines.txt

#文件的内容以" [COMMANDS]"为起头;使用引号“”来标记下面需要执行的每条命令。 注意路径问题,install.cmd的路径为cmdlines.txt的同级目录;
#这里还可以添加注册表。
[COMMANDS]
"install.cmd"

以下是此时用的install.cmd:

@ echo off
title Windows Install Prepackage, Hotfix and Drives
@ color 0a

@echo 安装WINDOWS_2003_SP2补丁, 大约需要20分钟... 2>>%HOMEDRIVE%/errlog.txt
@ cd hotfix 2>>%HOMEDRIVE%/errlog.txt
WindowsServer2003-KB914961-SP2-x86-CHS.exe /quiet /norestart
WindowsUpdateAgent30-x86.exe /quiet /norestart
WindowsServer2003-KB925902-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB930178-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB931784-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB932168-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB935839-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB935840-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB933729-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB943460-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB921503-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB938829-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB941644-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB943485-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB942830-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB942831-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB943055-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB946026-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB941693-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB944338-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB945553-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB948590-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB951748-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB950974-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB952954-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB938464-x86-CHS.exe /quiet /norestart
windowsserver2003-kb953155-x86-chs.exe /quiet /norestart
windowsserver2003-kb954211-x86-chs.exe /quiet /norestart
windowsserver2003-kb956803-x86-chs.exe /quiet /norestart
windowsserver2003-kb956841-x86-chs.exe /quiet /norestart
windowsserver2003-kb957095-x86-chs.exe /quiet /norestart
WindowsServer2003-KB958644-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB957097-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB956802-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB958687-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB958690-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB960225-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB952004-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB956572-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB960803-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB961501-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB968537-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB970238-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB958469-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB971032-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB971657-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB967723-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB953298-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB958869-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB971486-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB975467-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB969947-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB974392-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB972270-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB971468-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB975713-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB977165-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB978251-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB979683-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB980232-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB979559-x86-CHS.exe /quiet /norestart
WindowsServer2003-KB980218-x86-CHS.exe /quiet /norestart

if %errorlevel% EQU 0 (
@ echo 补丁安装成功, 继续安装prepackge... 2>>%HOMEDRIVE%/errlog.txt
@ cd ..
@ goto prepackge 2>>%HOMEDRIVE%/errlog.txt
) else (
@ echo 补丁安装失败, 继续安装prepackge... 2>>%HOMEDRIVE%/errlog.txt
@ cd ..
@ goto prepackge 2>>%HOMEDRIVE%/errlog.txt
)

:prepackge

@ echo 安装Prepackage中... 2>>%HOMEDRIVE%/errlog.txt
@ cd windows_2010628 2>>%HOMEDRIVE%/errlog.txt
install.bat /qn 2>>%HOMEDRIVE%/errlog.txt
if %errorlevel% EQU 0 (
@ echo Prepackage安装成功 2>>%HOMEDRIVE%/errlog.txt
@ cd ..
@ goto end 2>>%HOMEDRIVE%/errlog.txt
) else (
@ echo Prepackage安装失败 2>>%HOMEDRIVE%/errlog.txt
@ cd ..
@ goto end 2>>%HOMEDRIVE%/errlog.txt
)

:end

批处理公事中的hotfix(出要的补丁时得以下载放到这,但别忘了改批处理公事),windows_20100628(安全部门制作的安康保解压所得)文件夹和install.cmd位于同级目录,这里就是于/tftpboot/win2k3/$oem$/下。

内部以组件注册时不克尽的底命令或者程序(包括发生相而未切合施行之次第),可以由此当机动对文件wi2k3.sif中添加[GuiRunOnce]字段,在首先次等登录系统不时实行下本来好有缺失日会不辱使命的操作。

于/tftpboot/win2k3/$oem$/下成立文件夹$1,这个文件夹下之持有文件(夹)会在安过程遭到复制到兄根目录,即C盘。

mkdir /tftpboot/win2k3/$oem$/$1
cd mkdir /tftpboot/win2k3/$oem$/$1
mkdir preinstall

于windows平台编辑一个批处理公事runonce.cmd,上传到preinstall文件夹下:

@ echo off
title Windows GuiRunOnce Install Drives
@ color 0a

echo starting drive
echo.
@ cd\
@ cd preinstall
@ cd hp
call bp000588.cmd

echo.
echo starting pcanywhere
@ cd\
@ cd preinstall
@ cd pcanywhere_10.5.1cn
start /wait SymantecpcAnywhere.msi 

echo.
shutdown -r -t 0
exit

此处自己拿HP的所有驱动放到hp文件夹下(因为自耶分不清楚哪些需要,哪些不需,就惟有所有达标污染了,L),pcanywhere安装文件放到pcanywhere_10.5.1cn文件夹下。所有这些文件夹统一置于preinstall文件夹下(有得还得多,修改runonce.cmd即可)

最后当机动回复文件wi2k3.sif中添加:

#注意路径
[GuiRunOnce]
%systemdrive%\preinstall\runonce.cmd 

8.
进阶

上面只是提到32吗系统,对于64各系统,我们得以/tftpboot下树立win2k3_64文件夹,将iso下的文书拷到这文件夹下。

cabextract win2k3_64/i386/startrom.n1_
#解压
sed -i -e 's/NTLDR/W2K3L_64/gi' startrom.n12
#直接替换startrom.n12文件中" NTLDR"为" W2K3L_64"
#W2K3L_64: windows 2003 64bit Setup Loader
mv startrom.n12 /tftpboot/w2k3_64.0
# w2k3_64.0: windows 2003 bit pxe loader
cabextract win2k3_64/i386/setupldr.ex_
sed -i -e 's/winnt\.sif/wi2k3_64\.sif/gi' setupldr.exe
sed -i -e 's/ntdetect\.com/ntdetect\.2k3_64/gi' setupldr.exe
mv setupldr.exe /tftpboot/w2k3l_64
cp win2k3_64/i386/ntdetect.com /tftpboot/ntdetect.2k3_64
# ntdetect.2k3_64: windows 2003 bit ntdetect.com

samba服务器需要树立对64各类系统的共享目录,如[win64install];同时起机关对文件/tftpboot/wi2k3_64.sif 。这两者中的门路问题要一定要是小心一一对应。

pxe加载/tftpboot/pxelinux.cfg/default文件,需要出体系挑选时,可以改文件:

vim /tftpboot/pxelinux.cfg/default

default win2k3
timeout 30
label win2k3
kernel w2k3.0
label win2k3_64
kernel w2k3_64.0

实质上不管是32个还是64员系统,启动文件还是同一的,这些都得绝不修改,只是客户端起服务器下载文件之门道一定要区分32各项和64各项。

启动顺序:pxelinux.0—>
default—> pxe loader(w2k3.0,
startrom.n12)—>setup loader(w2k3l, setupldr.exe)
—> ntdetect.com(ntdetect.2k3) and
winnt.sif(wi2k3.sif)

9.
小结

关于让加载的题目,如果我们参照一尊都作好windows2003系的服务器的硬件让(重要的凡芯片组,网卡,显卡等)可以见见这些使主要由.sys, .dll, .inf(驱动信息文件), .cat(驱动签名文件)等公事组成。如果能募集至这些文件放到系统安装文件里,就不用事后打驱动那么麻烦。但这个过程时我还从未摸清,这点还是发很特别之精益求精空间的。

采用就套系统设置windows2003系统,加上打补丁(大概超过20分钟)的工夫,前后在40分钟左右。我看罢安全部门制作的安全包,系统专业达成线后应当是足以活动打补丁的。如果产生或吧,可以管打补丁这个环节去丢。这样用这套系统装置一玉windows2003系统大概是20分钟,批量装置更会反映功能。

第二种:for (var i in li ){}

初稿刊载于:2010-09-16

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>模拟placeholder属性的功能</title>
 6 </head>
 7 <body>
 8 <input type="text" placeholder="username" id="submit">
 9 <input type="text" value="username" id="submit1">
10 <script>
11 //    var ele = document.getElementById('submit1');
12     var ele = document.getElementById('submit1');
13     ele.onfocus = function () {
14         //先获取焦点,点击输入框就获取到焦点,光标一上去就把值设成空
15         this.value=""
16     };
17     ele.onblur = function () {
18 //        当光标不点击那个输入框的时候就失去焦点了
19         //当失去焦点的时候,判断当前的那个值是不是为空,是否含有空格
20 //        如果为空或者有空格,用trim()去掉空格。然后赋值为username
21         if (this.value.trim()==""){
22             this.value='username'
23         }
24     }
25 </script>
26 </body>
27 </html>

转载至cu于:2012-07-21

二、获取value属性值

二.环境说明

server
os:

CentOS 5.4 i386

server
soft:

dhcp, tftp, samba, ris-linux

足使用yum安装:

yum –y install dhcp*
yum –y install tftp*
yum –y install samba*

server
ip:

eth1: 192.168.0.1

client:

HP 360G5

windows 2003 sp2 cn enterprise

哲学原理 1哲学原理 2

老三、表格示例(全选,反选,取消)

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <body>
 8 <script>
 9     var arr = [11,22,33,44,55];
10     var obj = {'username':'zzz','agr':20};  //js中的这个类似字典的不叫字典,而是一个对象
11     for (var i in obj){
12         console.log(i);  //拿到的是键
13         console.log(obj[i]) //值
14     }
15     for (var j in arr){
16         console.log(j); //拿到索引
17         console.log(arr[j])  //拿到值
18     }
19 </script>
20 </body>
21 </html>

哲学原理 3哲学原理 4

哲学原理 5哲学原理 6

seach示例

结果分析

本身深信大家自然会发生意外的结果,接下我们就盖无比复杂的例3来分析任何过程。

当一个函数创建后,它的意图域链会让创造是函数的作用域中唯独看的数额对象填充。在函数bar创建时,它的打算域链中见面填入一个大局对象,该全局对象涵盖了颇具全局变量,如下图所示:

哲学原理 7

解析及函数调用时,即bar(5),会扭转一个active
object的目标,该目标涵盖了函数的有所有变量、命名参数、参数集合以及this,然后是目标会被推入作用域链的前端,当运行期上下文被销毁,活动目标为随着销毁。新的意域链如下图所示:

哲学原理 8

经过解析:

哲学原理 9

function bar(age) {

        console.log(age);
        var age = 99;
        var sex="male";
        console.log(age);
        function age(){
            alert(123);
        } ;
        console.log(age);
        return 100;
}

result=bar(5);

一 词法分析过程(涉及参数,局部变量声明,函数声明表达式):
    1-1 、分析参数,有一个参数,形成一个 AO.age=undefine;
    1-2 、接收参数 AO.age=5;
    1-3 、分析变量声明,有一个 var age, 发现 AO 上面有一个 AO.age ,则不做任何处理
    1-4 、分析变量声明,有一个 var sex,形成一个 AO.sex=undefine;
    1-5 、分析函数声明,有一个 function age(){} 声明, 则把原有的 age 覆盖成 AO.age=function(){};
二 执行过程:
    2-1 、执行第一个 console.log(age) 时,当前的 AO.age 是一个函数,所以输出的一个函数
    2-2 、这句 var age=99; 是对不 AO.age 的属性赋值, AO.age=99 ,所以在第二个输出的age是 99;
    2-3 、同理第三个输出的是 99, 因为中间没有改变 age 值的语句了。

          注意:执行阶段:
                        function age(){
                            alert(123)
                        } ;

            不进行任何操作,将执行语句复制给age这部操作是在词法分析时,即运行前完成的。

 

首先种:是产生原则的那种,例如    for(var i = 0;i<ele.length;i++){}

1. 大局作用域(Global Scope)

当代码中任何地方还能够访问到的对象拥有全局作用域,一般的话一下几乎栽情况有全局作用域:

(1)最外层函数和当尽外层函数外面定义之变量拥有全局作用域

哲学原理 10

var name="yuan";

    function foo(){
        var age=23;
        function inner(){
            console.log(age);
        }

        inner();
    }

    console.log(name);    // yuan
    //console.log(age);   // Uncaught ReferenceError: age is not defined
    foo();                // 23
    inner();              // Uncaught ReferenceError: inner is not defined

哲学原理 11

(2)所有末定义直接赋值的变量自动声明也具备全局作用域,例如:

哲学原理 12

    var name="yuan";

    function foo(){
        age=23;

        var sex="male"
    }
    foo();
    console.log(age);   //  23
    console.log(sex);   // sex is not defined

哲学原理 13

变量blog拥有全局作用域,而sex在函数外部无法访问到。

(3)所有window对象的性质拥有全局作用域

诚如情形下,window对象的放属性都尚且有全局作用域,例如window.alert()、window.location、window.top等等。

哲学原理 14哲学原理 15

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>作用链域</title>
 6 </head>
 7 <body>
 8 <script>
 9     var s = 12;
10     function f() {
11         console.log(s); //undefined
12         var s=12;
13         console.log(s);//12
14     }
15     f();
16 </script>
17 </body>
18 </html>

for循环遍历有个别栽

哲学原理 16哲学原理 17

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>获取value值</title>
 6 </head>
 7 <body>
 8 <input type="text" id="c1">
 9 <select name="pro" id="s1">
10         <option value="1">河北省</option>
11         <option value="2">河南省</option>
12         <option value="3">北京省</option>
13 </select>
14 <button>show</button>
15 <script>
16      var ele_button=document.getElementsByTagName("button")[0];
17 
18     ele_button.onclick=function () {
19         var ele_input=document.getElementById("c1");
20         var ele_select=document.getElementById("s1");
21         console.log(ele_select.value)
22     };
23 </script>
24 </body>
25 </html>
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         .back{
 8             background-color: white;
 9             height: 2000px;
10         }
11 
12         .shade{
13             position: fixed;
14             top: 0;
15             bottom: 0;
16             left:0;
17             right: 0;
18             background-color: grey;
19             opacity: 0.4;
20         }
21 
22         .hide{
23             display: none;
24         }
25 
26         .models{
27             position: fixed;
28             top: 50%;
29             left: 50%;
30             margin-left: -100px;
31             margin-top: -100px;
32             height: 200px;
33             width: 200px;
34             background-color: wheat;
35 
36         }
37     </style>
38 </head>
39 <body>
40 <div class="back">
41     <input class="c" type="button" value="click">
42 </div>
43 
44 <div class="shade hide handles"></div>
45 
46 <div class="models hide handles">
47     <input class="c" type="button" value="cancel">
48 </div>
49 
50 
51 <script>
52 
53 
54     var eles=document.getElementsByClassName("c");
55     var handles=document.getElementsByClassName("handles");
56     for(var i=0;i<eles.length;i++){
57         eles[i].onclick=function(){
58 
59             if(this.value=="click"){
60 
61                 for(var j=0;j<handles.length;j++){
62 
63                     handles[j].classList.remove("hide");
64 
65                  }
66 
67             }
68             else {
69                 for(var j=0;j<handles.length;j++){
70 
71                     handles[j].classList.add("hide");
72                 }
73 
74             }
75         }
76     }
77 
78 </script>
79 
80 </body>
81 </html>

季、模态对话框

2. 局部作用域(Local Scope)

和全局作用域相反,局部作用域一般就以固定的代码有外可看到,最广大的比如说函数内部,所有在有的地方吗会见见到有人拿这种作用域成为函数作用域.

如示例1中之age与inner都只生一对作用域。(js中if、for没有好之作用域)

View Code

报表示例

图域链(Scope Chain)

在JavaScript中,函数也是目标,实际上,JavaScript里一切都是对象。函数对象与其他对象同,拥有足以透过代码访问的性质和平等文山会海单供JavaScript引擎访问的内部属性。其中一个内属性是[[Scope]],由ECMA-262业内第三版定义,该内部属性包含了函数被创造的作用域中目标的成团,这个集被称之为函数的用意域链,它控制了什么数据能吃函数访问。

哲学原理 18哲学原理 19

  1 <!DOCTYPE html>
  2 <html lang="en">
  3 <head>
  4   <meta charset="UTF-8">
  5   <title>tab</title>
  6   <style>
  7     *{margin:0; padding:0; list-style:none;}
  8     body{
  9         font-family: "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei", "\9ED1\4F53", Arial, sans-serif;
 10     }
 11     h3{
 12         text-align: center;
 13         color:darkcyan;
 14         margin-top: 30px;
 15         letter-spacing: 5px;
 16     }
 17     .box{
 18       width: 1000px;
 19       margin:50px auto 0px;
 20     }
 21     #title{
 22       line-height: 40px;
 23       background-color: rgb(247,247,247);
 24       font-size: 16px;
 25       font-weight: bold;
 26       color: rgb(102,102,102);
 27     }
 28     #title span{
 29       float: left;
 30       width: 166px;
 31       text-align: center;
 32     }
 33     #title span:hover{
 34       /*color: black;*/
 35       cursor: pointer;
 36     }
 37     #content{
 38       margin-top: 20px;
 39     }
 40     #content li{
 41       width: 1050px;
 42       display: none;
 43       background-color: rgb(247,247,247);
 44     }
 45     #content li div{
 46       width: 156px;
 47       margin-right: 14px;
 48       float: left;
 49       text-align: center;
 50     }
 51     #content li div a{
 52       font-size: 14px;
 53       color: black;
 54       line-height: 14px;
 55     /*  float: left;*/
 56     display: inline-block;
 57       margin-top: 10px;
 58     }
 59     #content li a:hover{
 60       color: #B70606;
 61     }
 62     #content li div span{
 63         font-size: 16px;
 64         line-height: 16px;
 65         /*float: left;*/
 66         display: block;
 67         color: rgb(102,102,102);
 68         margin-top: 10px;
 69       }
 70     #content img{
 71       float: left;
 72       width: 155px;
 73       height: 250px;
 74     }
 75     #title .select{
 76       background-color: #2459a2;
 77       color: white;
 78         border-radius: 10%;
 79     }
 80     #content .show{
 81       display: block;
 82     }
 83 
 84     .show span{
 85         color: red!important;
 86         font-size: 30px;
 87     }
 88   </style>
 89 </head>
 90 
 91 <body>
 92     <h3 id="wel">京东商城欢迎您</h3>
 93     <!--  direction="right up down left" -->
 94 <!--  behavior:滚动方式(包括3个值:scroll、slide、alternate) -->
 95 <!--  说明:scroll:循环滚动,默认效果;slide:只滚动一次就停止;alternate:来回交替进行滚动。 -->
 96 <!--  scrollamount="5" 滚动速度 -->
 97 
 98 <marquee behavior="scroll" direction="right">欢迎您苑昊先生</marquee>
 99     <script>
100 
101     function test(){
102 
103         var mywel = document.getElementById("wel");
104         var content = mywel.innerText;
105 
106         var f_content = content.charAt(0);
107         var l_content = content.substring(1,content.length);
108 
109         var new_content = l_content + f_content;
110         mywel.innerText = new_content;
111 
112     }
113 
114     // setInterval("test();", 500);
115 </script>
116     <div class="box">
117       <p id="title">
118         家用电器
119         家具
120         汽车
121         食品
122         女鞋
123         医疗保健
124       </p>
125 
126       <ul id="content">
127         <li class="show">
128 
129           <div><img src="https://img10.360buyimg.com/n1/s450x450_jfs/t4786/325/2470647304/119102/9e1a4ed5/59005841Nd786a8df.jpg" alt="冰箱"><a href="#">容声(Ronshen)冰箱</a>价格:5600</div>
130           <div><img src="https://img12.360buyimg.com/n1/s450x450_jfs/t3037/347/1290968859/201366/7c1028a0/57c00194N9d0a54c6.jpg" alt="洗衣机"><a href="#">海尔洗衣机</a>价格:5400</div>
131           <div><img src="https://img11.360buyimg.com/n1/jfs/t3289/128/2393835119/236360/af1d283b/57e0f300N53dde603.jpg" alt="电饭煲"><a href="#">福库(CUCKOO)电饭煲</a>价格:3999</div>
132           <div><img src="https://img13.360buyimg.com/n1/jfs/t3235/137/2361713777/152258/a6908440/57e098c2N44a90a5d.jpg" alt="智能电视"><a href="#">三星智能电视</a>价格:8999</div>
133           <div><img src="https://img10.360buyimg.com/n1/jfs/t2053/101/1391591157/215066/572e131b/5696ee9bN2376492d.jpg" alt="净水器"><a href="#">净水器</a>价格:1300</div>
134           <div><img src="https://img14.360buyimg.com/n1/jfs/t3175/78/2357430273/262835/9a8e7f65/57e0a3e9Nbda39dd2.jpg" alt="空气净化器"><a href="#">空气净化器</a>价格:5300</div>
135         </li>
136 
137         <li>
138 
139           <div><img src="https://img12.360buyimg.com/n1/jfs/t1948/172/2877517581/556924/682eb107/56f63dc8Naddf77e5.jpg" alt="沙发"><a href="#">沙发</a>价格:2900</div>
140           <div><img src="https://img12.360buyimg.com/n1/jfs/t1948/172/2877517581/556924/682eb107/56f63dc8Naddf77e5.jpg" alt="沙发"><a href="#">沙发</a>价格:2900</div>
141           <div><img src="https://img12.360buyimg.com/n1/jfs/t1948/172/2877517581/556924/682eb107/56f63dc8Naddf77e5.jpg" alt="沙发"><a href="#">沙发</a>价格:2900</div>
142           <div><img src="https://img12.360buyimg.com/n1/jfs/t1948/172/2877517581/556924/682eb107/56f63dc8Naddf77e5.jpg" alt="沙发"><a href="#">沙发</a>价格:2900</div>
143           <div><img src="https://img12.360buyimg.com/n1/jfs/t1948/172/2877517581/556924/682eb107/56f63dc8Naddf77e5.jpg" alt="沙发"><a href="#">沙发</a>价格:2900</div>
144           <div><img src="https://img12.360buyimg.com/n1/jfs/t1948/172/2877517581/556924/682eb107/56f63dc8Naddf77e5.jpg" alt="沙发"><a href="#">沙发</a>价格:2900</div>
145 
146         </li>
147         <li>
148           <div><img src="http://img11.360buyimg.com/n1/jfs/t4969/76/45396935/144539/347153d4/58d9cff4N36872ad6.jpg" alt="长安汽车"><a href="#">长安汽车</a>价格:12900</div>
149           <div><img src="http://img11.360buyimg.com/n1/jfs/t4969/76/45396935/144539/347153d4/58d9cff4N36872ad6.jpg" alt="长安汽车"><a href="#">长安汽车</a>价格:12900</div>
150           <div><img src="http://img11.360buyimg.com/n1/jfs/t4969/76/45396935/144539/347153d4/58d9cff4N36872ad6.jpg" alt="长安汽车"><a href="#">长安汽车</a>价格:12900</div>
151           <div><img src="http://img11.360buyimg.com/n1/jfs/t4969/76/45396935/144539/347153d4/58d9cff4N36872ad6.jpg" alt="长安汽车"><a href="#">长安汽车</a>价格:12900</div>
152           <div><img src="http://img11.360buyimg.com/n1/jfs/t4969/76/45396935/144539/347153d4/58d9cff4N36872ad6.jpg" alt="长安汽车"><a href="#">长安汽车</a>价格:12900</div>
153           <div><img src="http://img11.360buyimg.com/n1/jfs/t4969/76/45396935/144539/347153d4/58d9cff4N36872ad6.jpg" alt="长安汽车"><a href="#">长安汽车</a>价格:12900</div>
154         </li>
155         <li>
156 
157           <div><img src="https://img14.360buyimg.com/n1/jfs/t4414/110/2582917360/207971/b7e129ad/58f0ee1fN94425de1.jpg" alt="嘉兴粽子"><a href="#">嘉兴粽子</a>价格:1</div>
158           <div><img src="https://img14.360buyimg.com/n1/jfs/t4414/110/2582917360/207971/b7e129ad/58f0ee1fN94425de1.jpg" alt="嘉兴粽子"><a href="#">嘉兴粽子</a>价格:1</div>
159           <div><img src="https://img14.360buyimg.com/n1/jfs/t4414/110/2582917360/207971/b7e129ad/58f0ee1fN94425de1.jpg" alt="嘉兴粽子"><a href="#">嘉兴粽子</a>价格:1</div>
160           <div><img src="https://img14.360buyimg.com/n1/jfs/t4414/110/2582917360/207971/b7e129ad/58f0ee1fN94425de1.jpg" alt="嘉兴粽子"><a href="#">嘉兴粽子</a>价格:1</div>
161           <div><img src="https://img14.360buyimg.com/n1/jfs/t4414/110/2582917360/207971/b7e129ad/58f0ee1fN94425de1.jpg" alt="嘉兴粽子"><a href="#">嘉兴粽子</a>价格:1</div>
162           <div><img src="https://img14.360buyimg.com/n1/jfs/t4414/110/2582917360/207971/b7e129ad/58f0ee1fN94425de1.jpg" alt="嘉兴粽子"><a href="#">嘉兴粽子</a>价格:1</div>
163 
164         </li>
165         <li>
166 
167           <div><img src="https://img14.360buyimg.com/n1/jfs/t3079/298/5759209435/92674/14818594/587f1c33N53e5d2a9.jpg" alt="星期六"><a href="#">星期六</a>价格:439</div>
168           <div><img src="https://img14.360buyimg.com/n1/jfs/t3079/298/5759209435/92674/14818594/587f1c33N53e5d2a9.jpg" alt="星期六"><a href="#">星期六</a>价格:439</div>
169           <div><img src="https://img14.360buyimg.com/n1/jfs/t3079/298/5759209435/92674/14818594/587f1c33N53e5d2a9.jpg" alt="星期六"><a href="#">星期六</a>价格:439</div>
170           <div><img src="https://img14.360buyimg.com/n1/jfs/t3079/298/5759209435/92674/14818594/587f1c33N53e5d2a9.jpg" alt="星期六"><a href="#">星期六</a>价格:439</div>
171           <div><img src="https://img14.360buyimg.com/n1/jfs/t3079/298/5759209435/92674/14818594/587f1c33N53e5d2a9.jpg" alt="星期六"><a href="#">星期六</a>价格:439</div>
172           <div><img src="https://img14.360buyimg.com/n1/jfs/t3079/298/5759209435/92674/14818594/587f1c33N53e5d2a9.jpg" alt="星期六"><a href="#">星期六</a>价格:439</div>
173 
174         </li>
175         <li>
176 
177           <div><img src="https://img12.360buyimg.com/n1/jfs/t5755/127/1139389729/356866/99d4e869/5923e410Nb2983f70.jpg" alt="汇仁 肾宝片"><a href="#">汇仁 肾宝片</a>价格:322</div>
178           <div><img src="https://img12.360buyimg.com/n1/jfs/t5755/127/1139389729/356866/99d4e869/5923e410Nb2983f70.jpg" alt="汇仁 肾宝片"><a href="#">汇仁 肾宝片</a>价格:322</div>
179           <div><img src="https://img12.360buyimg.com/n1/jfs/t5755/127/1139389729/356866/99d4e869/5923e410Nb2983f70.jpg" alt="汇仁 肾宝片"><a href="#">汇仁 肾宝片</a>价格:322</div>
180           <div><img src="https://img12.360buyimg.com/n1/jfs/t5755/127/1139389729/356866/99d4e869/5923e410Nb2983f70.jpg" alt="汇仁 肾宝片"><a href="#">汇仁 肾宝片</a>价格:322</div>
181           <div><img src="https://img12.360buyimg.com/n1/jfs/t5755/127/1139389729/356866/99d4e869/5923e410Nb2983f70.jpg" alt="汇仁 肾宝片"><a href="#">汇仁 肾宝片</a>价格:322</div>
182           <div><img src="https://img12.360buyimg.com/n1/jfs/t5755/127/1139389729/356866/99d4e869/5923e410Nb2983f70.jpg" alt="汇仁 肾宝片"><a href="#">汇仁 肾宝片</a>价格:322</div>
183 
184         </li>
185 
186 
187       </ul>
188     </div>
189 
190     <script>
191       var title=document.getElementById('title');
192       var content=document.getElementById('content');
193       var category=title.getElementsByTagName('span');
194       var item=content.getElementsByTagName('li');
195 
196       for (var i = 0; i < category.length; i++) {
197 
198           category[i].index=i;
199 
200           category[i].onclick=function(){
201 
202             for (var j = 0; j < category.length; j++) {
203               category[j].className='';
204               item[j].className='';
205             }
206             this.className='select';
207             item[this.index].className='show';
208           }
209 
210 
211       }
212 
213     </script>
214 </body>
215 </html>

tab切换

测试for循环

当今咱们来说一下测试一下次之种植(数组和obj的)

一样、JS中for循环遍历测试

五、搜索框

js的作用域

作用域是JavaScript最着重之定义有,想使效仿好JavaScript就需掌握JavaScript作用域和作用域链的工作规律。

任何程序设计语言都发生作用域的定义,简单的游说,作用域就是变量和函数的而看范围,即作用域控制正在变量和函数的可见性和生命周期。在JavaScript中,变量的用意域有全局作用域和有些作用域两种植。

作用域

哲学原理 20哲学原理 21

模态对话框

作用域链

季、作用链域

六、tab切换

演示演示

please have a try:

哲学原理 22

//-----**********************例1*********************************

var s=12;
    function f(){
        console.log(s);
         var s=12;          // if s=12
        console.log(s)
    }
    f();

//-----**********************例2*********************************

var s=10;
function foo(){
  console.log(s);
  var s=5;
  console.log(s);
  function s(){console.log("ok")}// 函数的定于或声明是在词法分析时完成的,执行时已不再有任何操作

  console.log(s);
}

foo();

//-----***********************例3********************************

function bar(age) {

        console.log(age);
        var age = 99;
        var sex= 'male';
        console.log(age);
        function age() {
            alert(123)
        };
        console.log(age);
        return 100;
}

result=bar(5);

//-----********************************************************

哲学原理 23

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图