Windows系统封装学习
[TOC]
0x00 基础知识
0. Windows安装类型
Windows 安装程序可以执行全新安装和升级安装。但是,无法执行计算机到计算机的迁移。因此,你必须使用 Windows Easy Transfer、用户状态迁移工具 (USMT) 或其他迁移工具将数据从以前的安装移动到新的操作系统。
- Custom installations. Windows 安装程序可以执行自定义安装(也称为全新安装),该安装将保存你先前的 Windows 安装,但不会迁移你的设置。执行全新安装后,先前的 Windows 安装将不会启动。
- Upgrade installations. Windows 安装程序可以执行在升级操作系统时保留你的设置和首选项的安装。
1. Windows审核模式
什么是审核模式? 答:在审计模式下,你可以在将计算机交付给客户或捕获映像以便在你的组织中重用之前对 Windows 映像进行更改。 例如:审核模式可以为 Windows 映像添加自定义,可以添加更多设备驱动程序、安装应用程序,以及测试安装的有效性。
什么是OOBE? 答:OOBE(Out-of-box experience),就是在安装完Windows后就会进行的一个步骤,在这个步骤,您需要对Windows进行一些基本设置,Windows 启动时,它将从全新体验 (OOBE) 模式或审核模式下启动,允许最终用户输入帐户信息、选择语言、接受 Microsoft 服务条款并设置网络
简单的说就是在系统进入审核模式后可以进行使用内置用户安装软件,然后从OOBE进行全新体验然后就像第一次安装的时候需要进行安装配置系统;在使用应答文件时,Windows 会在 auditSystem 和 auditUser 配置阶段处理设置。
在审计模式下你可以执行以下操作:
- 跳过 OOBE。你可以尽快访问桌面。不必配置默认设置,如用户帐户、位置和时区。
- 安装应用程序、添加设备驱动程序并运行脚本。你可以连接到网络并访问其他安装文件和脚本。还可以安装其他语言包和设备驱动程序。有关详细信息,请参阅在审核模式下联机添加驱动程序。
- 测试 Windows 安装的有效性。在将系统部署到最终用户之前,你可以对系统执行测试,而无需创建用户帐户。然后你可以准备该系统,以便下次以 OOBE 启动。
- 将更多自定义项添加到参考映像,此操作将减少必须管理的映像数量。例如,你可以创建一个单独的参考映像,其中包含要应用到所有 Windows 映像的基本自定义项。然后你可以启动参考映像到审计模式并进行计算机特定的附加更改。这些更改可以是用户请求的应用程序,也可以是特定的设备驱动程序。
2. 启动进入审核模式
如何进行审核模式?
- 在%systemroot%system32sysprep目录中运行sysprep程序
- 初次安装系统时候在 OOBE 屏幕上按 CTRL+SHIFT+F3(注意是同时按下)
能够使用3种不同的方法运行Sysprep?
- 从命令行
- 从用户界面
- 从应答文件
通过新安装系统自动启动到审核模式,计算机会自动启动到审核模式,并且系统准备 (Sysprep) 工具将会出现。
#保留硬件配置
- 将本机的安装映像部署到其他计算机上,必须运行 sysprep /generalize 选项
#添加设备驱动程序
即插即用设备包括调制解调器、声卡、网络适配器和视频卡
WeiyiGeek.审核模式
操作流程:
#一般化映像
1)OOBE模式:使用 Microsoft-Windows-Deployment | Generalize 设置。将 Mode 设置为 OOBE 或 Audit,并将 ForceShutdownNow 设置为 true
或者
2)审核模式:将 Microsoft-Windows-Deployment | Reseal 设置添加到 oobeSystem 配置阶段。将 Mode 设置为 Audit
$Sysprep /generalize /shutdown /oobe
3)关闭计算机之后,使用映像捕捉工具捕捉映像。你可以使用部署映像服务和管理 (DISM) 工具中的 Dism /capture-image 命令实现此目的。
#一般化映像之前手动输入审计模式
在 OOBE 屏幕按 Ctrl+Shift+F3,Windows 将计算机重新启动到审核模式
$Sysprep /generalize /shutdown /oobe
#一般化虚拟硬盘
Sysprep /generalize /oobe /mode:vm #Sysprep /generalize /oobe /mode:vm
WeiyiGeek.进入审核模式
注意事项:
- 启动到审计模式时,你可以使用内置管理员帐户登录系统。
- 登录到系统之后,在 auditUser 配置阶段会立即禁用内置管理员帐户,下次重新启动计算机时,内置管理员帐户将保持禁用状态。
- 采用 CTRL+SHIFT+F3 键盘快捷方式不会绕过 OOBE 过程的所有片段,例如在 oobeSystem 配置阶段中运行脚本和应用应答文件设置。
- 在审核模式下,将不会显示 oobeSystem 配置阶段的应答文件中的设置。
入坑体验 报错解决方式:
- 激活administrator 并删除系统内建立的帐号及配置文件。以管理员方式去行运行sysprep;
Q:问题1Sysprep无法验证你的windows 安装
#详细提示:
SySprep 无法验证你的windows 安装。请查看%Windir%System32SysprepPanthersetupact.log 中的日志文件以了解详细信息。在解决该问题后,请使用Sysprep再次验证你的安装。
#从日志中注意到此条错误信息:
2019-03-12 10:01:12, Error SYSPRP Package 903DB504.QQ_5.6.1150.0_x86__a99ra4d2cbcxa was installed for a user, but not provisioned for all users. This package will not function properly in the sysprep image.
#建议您按照以下方法删除此package:
1. 运行Import-Module Appx PowerShell cmdlet。
2. 运行Import-Module Dism。
3. 运行Get-AppxPackage -AllUser | Where PublisherId -eq 8wekyb3d8bbwe | Format-List -Property PackageFullName,PackageUserInformation.
#注意
a. 在最后一个cmdlet的输出中,检查程序包显示为已安装的用户。从参考计算机中删除这些用户帐户,或使用这些用户帐户登录到计算机。然后,在步骤4中运行cmdlet以删除Appx包。
b. 此命令列出Microsoft发布并由该引用计算机的任何用户安装的所有软件包。由于要对计算机进行sysprep,我们假设这些用户配置文件不再需要该程序包。
c. 如果您有手动配置的应用程序属于其他发布者:Get-AppxPackage -AllUser | Format-List -Property PackageFullName,PackageUserInformation
4. 运行:Remove-AppxPackage -Package <packagefullname>。
5. 通过运行以下cmdlet 删除配置:Remove-AppxProvisionedPackage -Online -PackageName <packagefullname>
参考来源: https://technet.microsoft.com/zh-cn/library/dn938334(v=vs.85).aspx https://technet.microsoft.com/zh-cn/library/dn898469(v=vs.85).aspx
0x01 Windows系统映像与优化
工具1:Dism++ Dism++,也许是最强的实用工具全球第一款基于 CBS 的 Dism GUI 实现,但是并不依赖Dism,直接基于更底层的CBS(Component Based Servicing Reference)。 功能:
- 更新清理:提供了开放的清理以及优化功能,用户可以自定义Dism++规则,来打造专属系统工具。
- CompactOS
- WIM/VHD映像:支持的映像格式有WIM、SWM、ESD、UUP ESD以及ISO,需要注意的是Dism++不支持VHD、VHDX、FFU以及SFU
- Windows Update
- 系统恢复/系统备份(将当前系统备份为WIM、ESD,无需进入PE)
- 真正绿色 下载地址:https://www.chuyu.me/zh-Hans/ 注意事项:
- 运行平台仅限x86、amd64以及arm64处理器,IA64以及ARM体系仅支持离线模式
- 在没有WOW64支持的环境中(比如纯64 PE),将导致Dism++无法离线处理32位系统。
- 如果运行平台为Windows Vista或者Windows 2008时某些功能将无法使用,比如CompactOS、WIMBoot。 参考文档:https://www.chuyu.me/zh-Hans/Document.html?file=Quickstart.md
关键功能:
- 系统备份:选中当前系统,点击恢复功能-系统备份-然后输入WIM文件路径,最后点击确定即可。
WeiyiGeek.备份
- 系统恢复:Dism++为了降低恢复系统的难度,程序支持热还原模式,点击恢复功能 - 系统还原 - 选择WIM文件路径后,点击确定即可:
WeiyiGeek.恢复
- 使用Dism++安装系统: 启用RE模式(什么是RE其实就是PE),另外Vista以后的系统都自带RE,所以我们平常的工作完全可以使用RE来解决,无需使用PE;菜单点击 恢复功能 - 在RE中运行,在RE模式中,Dism++可以格式化系统盘。如果需要全新安装系统,又不想使用PE,可以使用此模式。
- 在菜单中,点击文件 - 释放映像,将ISO中的系统安装到 D盘,同时对D盘进行格式化,点击目标映像右侧的下拉框,可以切换系统,确认无误后点击确定即可。
WeiyiGeek.系统安装
- 从ESD(包括加密ESD以及UUP ESD)安装系统:
- 从Windows 8以后,微软会定期从Windows Update推送ESD。而ESD中就包含了安装系统所必需的文件。我们可以直接使用ESD进行系统安装。哪怕这个ESD是加密的或者UUP分段ESD。
- 释放UUP ESD时,可以选择UUP文件夹中的ActionList.xml(推荐),也可以直接选择顶级ESD(比如Professional_zh-cn.esd)
- Compact技术安装压缩系统:Compact是Windows 10新引入的压缩启动技术。一般减少1/3的空间占用,同时几乎不影响到IO性能。
- 跟ISO释放稍微不同的是,目标映像需要选择操作系统,如上图所示目标映像,千万别傻傻的选择Windows Setup。
WeiyiGeek.ESD
- 系统离线升级打补丁:Dism++重建了Windows Update,直接从WSUS服务器中导出补丁数据库,全自动获取最新更新,自动剔除过期老补丁,在通过CBS判断系统是否需要此更新 操作流程:- 解压ISO:获得install.wim - 文件 - 挂载映像-挂载install.wim - 扫描并安装更新:点击打开会话,然后点击更新管理,在点击扫描,扫描完成后程序会列出所有可以安装的更新
WeiyiGeek.挂载映像 首先打开会话需要进行系统扫描:
WeiyiGeek.更新扫描
操作成功后,你可以点击文件选择保存映像,并选择覆盖保存。完成后点击卸载映像。 之后我们需要优化wim文件体积,由于保存映像会引入垃圾数据,增大文件体积。要得到最优体积,请点击 文件 - 打开映像文件。将处理的映像导出到D:TempSourcesinstall2.wim。
总结:
- dism++比dism好用,并且有界面化可以进行操作(方便初学者),里面的工具插件也非常的丰富(很适合在封装系统的时候使用)
0x02 封装环境准备
系统镜像:http://msdn.itellyou.cn/ 在线激活:http://www.yishimei.cn/network/319.html DiskGenius v4.7.2:http://www.yishimei.cn/software/628.html 环境准备:
- 虚拟机 Vmware Workstation
- 系统镜像:Windows 10 企业版本(enterprise_version)
- DiskGenius分区工具:DiskGenius v4.7.2
- win10系统封装工具 EasySysprep
- win10系统专用万能驱动
- win10系统常用运行库 :https://www.itsk.com/forum.php?mod=viewthread&tid=396895
- 您需要的预安装的软件、工具
(1)万能驱动 v7.19.508.6 正式版介绍 描述:万能驱动7在PE下可以一次性将适合目标系统的驱动全部导入,这就意味着我们有了可以在PE下解决所有驱动问题的新渠道,这同样意味着除了日常驱动问题(显/声/网/主板),特殊驱动如:磁盘控制器驱动(IAR驱动)、USB3驱动、NVME固态硬盘(SSD)的问题也会被一并解决。所以你只要有了万能驱动7,就不再需要SkyIAR、不再需要USB3/NVME驱动注入工具,万能驱动7只需一键就能帮您解决所有的问题!
特点:
- 万能驱动7可在PE环境下直接向目标系统安装驱动,这种驱动安装方式在1~6代中均无是一个全新的功能(优启通),“PE下安装驱动”实质上是将根据系统和硬件环境所筛选好的驱动导入了系统驱动库。
- 减少系统限制 , 预先集成驱动 [如磁盘控制器驱动(IAR驱动)和NVMe驱动],更方便外置于U盘,而无需集成到系统。
- 万能驱动7优化了硬件检测与驱动安装效率,在万能驱动6二次扫描的基础上增加三次扫描,以应对多级设备问题,从而解决某些蓝牙设备、读卡器等无法被安装驱动的情况。
- 内置小工具:驱动备份与恢复工具
(1)/DrvBackup[=附加参数1[,附加参数2[,附加参数N]]; #驱动备份
(2)/DrvRecover[=附加参数1[,附加参数2[,附加参数N]]。 #驱动恢复
(3)/DelayStartup[=附加参数1[,附加参数2[,附加参数N]] #在PE系统下,设置万能驱动7在下一次进入目标系统桌面时被自动运行;
(4)/DelDrvOffline[=附加参数1[,附加参数2[,附加参数N]] #在PE系统下,直接清理目标系统中的即插即用驱动
1、参数
(1)a,自动执行;
(2)re,运行结束后不退出,继续执行万能驱动7;
(3)rb,执行结束后重新启动计算机;
(4)d["路径"],指定备份/恢复驱动的路径。
(4)t[时间],指定延迟时间(秒);
(5)r,选中“执行后重启”选项;
(6)c,选中“删除已解压驱动”选项
2、举例:
(1)/DrvBackup=a,自动备份驱动到默认目录;
(2)/DrvBackup=a,d"C:DrvBak",自动备份驱动到 C:DrvBak 目录;
(3)/DrvRecover=a,自动从默认目录恢复驱动;
(4)/DrvRecover=a,d"C:DrvBak",rb,自动从 C:DrvBak 目录恢复驱动,完毕后重启计算机。
(1)/DelayStartup=a,自动执行,使用默认的延迟时间和选项;
(2)/DelayStartup=a,rb,t120,自动设置进桌面延迟120秒后启动万能驱动7,并重启;
(3)/DelayStartup=t180,r,c,设置延迟时间值为180秒,选中“执行后重启”和“删除已解压驱动”选项。
3、多个小工具可以同时使用吗?
根据参数的先后顺序可以同时启用多个小工具,并连续自动化调用,如: ` /DelDrvOffline=a,re /DelayStartup=a,rb,t120,r,c `
即:
(1)自动清理目标系统驱动程序;
(2)进桌面时延迟120秒运行万能驱动7,万能驱动7运行参数附带删除已解压驱动和自动重启;
(3)执行完延迟设置后重启PE。
注意先使用的小工具一定要设置 re 参数,否则执行完就自动退出了,不会执行第二个小工具。
推荐:
- 建议使用10PE,10PE有助于万能驱动7发现USB3设备和NVME设备。
- EasyDrv7_Win10.x64_7.19.508.6.iso : https://www.itsk.com/thread-397528-1-1.html
- 万能驱动7的精简方法 : https://www.itsk.com/thread-383356-1-1.html
0x03 win10系统封装Ghost
需求:利用虚拟机Vmware Workstation安装win10母盘系统
1. 系统母版安装
步骤流程: Step1. 使用虚拟机安装Windows10这里不再过多的描述百度即可
#关键点
I/O控制器类型保持默认的“LSI logic SAS”就可以,继续“下一步”
虚拟磁盘类型我们选择“SATA”,接着“下一步”
磁盘大小我们设置不小于60G
Step2 . 使用DiskGenius分区工具对刚才创建的虚拟机进行分区,打开DiskGenius分区工具 点击左上方的“硬盘”-“打开虚拟硬盘文件”,找到我们虚拟机存放的位置,然后选择.vmdk的文件,然后点击“打开”
WeiyiGeek.选择虚拟磁盘
选中图中虚拟机磁盘,然后点击上面的“快速分区”:
WeiyiGeek.磁盘分区
Step3. 分区完毕后,就可以着手安装系统了 点击左侧的“CD/DVD(SATA)”光驱,在弹出的窗口中,点击“使用ISO镜像文件”,然后通过“浏览”找到事先准备好的win10企业版镜像,然后点击“确定”。
- 虚拟机主界面:点击图中大绿色三角后面的小三角符号,在下拉框中选择“打开电源时进入固件”
- BIOS-Main : 将设置 Legacy Diskette A:disabled
- Advanced : 定位到“I/O Device Configuration, 四项“Serail port A”、“Serail port B”、“Parallet port”、“Floppy disk controller”全部设置为“Disabled”
- Boot: 将光驱“CD-ROM Drive”调至最上面(第一启动项)
- 在OOBE界面需要选择:这里直接点击“自定义:仅安装Windows(高级)”(关键点),冰箱选择分区
- 建议安装好系统后:拍摄快照就相当于备份了系统,可以随时回到拍照时的状态,方便反悔。
- 建议虚拟机里安装VMware tools工具
2. 系统封装前配置
Step1. 以Administrator管理员身份进行系统封装 因为Administrator具有较高管理权限,方便我们更改系统文件或执行命令操作等,这样调整的用意是封装后win10系统再部署安装直接就是Administrator管理员用户了;
Step2. 删除我们安装过程中建立的用户 说明一点win10创意者更新版本以后,默认内置了一个DefultAccount用户,并且不容易删除,我们不用理会就好。
Step3. win10虚拟机与物理机文件交互 描述:设置VM的文件共享功能,点击左侧的“共享文件夹”,然后在右边勾选“总是已启用”,勾选“在windows客户机中映射为网络驱动器”,接着点击“添加”按钮
Step4. 系统封装前的优化与清理 联机激活系统,因为许多系统设置需要在激活后才能调整,注意:此处激活后,安装封装好的系统时仍然需要激活。
#将“我的电脑”、“网络”、“控制面板”等调出至桌面
- 个性化点击左侧的“主题”,在右侧下拉找到“桌面图标设置”点击打开
#启用“用于内置管理员账户的管理员批准模式”
- 可以使Administrator管理员账户打开系统内置的应用,比如应用商店、Edge浏览器等。
- 右键点击开始菜单,点击“运行”,输入secpol.msc回车后打开本地安全策略 -> 安全选项 -> 启用“用于内置管理员账户的管理员批准模式”
#更新系统补丁至最新
- 右键点击开始菜单,点击“设置”,打开后找到“更新和安全”,然后就可以检查windows更新了,将所有补丁下载并安装完毕,记得重启机器。
#关闭系统的“隐私”和“定位”服务
- 右键开始菜单,点击“设置”,选择“隐私”,打开后,将“常规”里的选项都关闭。
- 然后在左侧切换至“位置”,将“定位服务”关闭。
#禁用“IE保护模式”和“SmartScreen筛选”
- 切换至“安全”选项卡,将“启用保护模式”前面的勾去掉,然后点击“应用”。
- 下拉,找到“使用Windows Defender SmartScreen”,勾选“禁用”,然后点击下面的“确定”按钮 。
#win10服务项优化
> 输入 services.msc 回车后打开服务
- 依次找到HomeGroupListener(家庭组)、Program Compatibility Assistant Service、Superfetch、Windows Search等服务并且禁用
#通过windows设置开启/关闭win10系统唤醒睡眠模式时需要登录
win10开始菜单,选择“设置”并打开 - 单击打开“帐户”,在左侧选择“登录选项”,然后再右侧即可看到“登录选项”,默认是“从睡眠中唤醒电脑时”需要登录
用于开启win10系统唤醒睡眠模式时需要登录:
powercfg /SETDCVALUEINDEX SCHEME_CURRENT SUB_NONE CONSOLELOCK 1
powercfg /SETACVALUEINDEX SCHEME_CURRENT SUB_NONE CONSOLELOCK 1
用于关闭win10系统唤醒睡眠模式时需要登录:
powercfg /SETDCVALUEINDEX SCHEME_CURRENT SUB_NONE CONSOLELOCK 0
powercfg /SETACVALUEINDEX SCHEME_CURRENT SUB_NONE CONSOLELOCK 0
WeiyiGeek.IE保护模式
3. 软件部署安装与系统封装的完全阶段
Step1. 系统网卡驱动,接下来将VMware tools工具卸载掉,重启下虚拟机,切记,卸载前请确保封装必须的工具已拷贝至虚拟机D盘。 注意:为了网卡的兼容性,开始前我们先把虚拟机里的网络适配器删除掉。
Step2. 系统封装前的软件部署安装 关于软件的安装部署可以是预装/也可以是预封装
- 预装: 是直接将软件安装好,然后封装
- 预封装:是将软件安装包部署好,在系统安装部署过程中或过程后进行安装
Step3. 使用EasySysprep_4.5进行系统封装的第一阶段
WeiyiGeek.EasySysprep
这个界面可以改下“用户”和“组织”,然后点击“下一步”, 保持默认的“使用当前用户登录”,然后“下一步”,或者选择OOBE手动创建用户(审计系统) 然后在“封装完成后”处选择“关闭计算机”,然后点击“完成”,点击“确定”; 等待EasySysprep_4.5配置完成即可。
WeiyiGeek.封装
Step4. 使用EasySysprep_4.5进行系统封装的第二阶段 封装的第二个阶段需要在PE环境下完成,所以我们需要将虚拟机启动为PE使用的是老毛桃的PE ISO镜像,我们通过光驱进行加载即可。
WeiyiGeek.PE
我们通过键盘上的“↑”“↓”选择“运行老毛桃Win8PEx64增强版”,然后回车,即可进入PE系统,进入PE系统后我们再次打开EasySysprep_4.5 进行相应的配置:这里的信息可以自己YY,那个OEM图片直接勾选掉就可以了,没什么用处,直接“下一步”,然后在系统优化中进行选择;
WeiyiGeek.OEM
这一步最主要是设置部署中驱动的安装,我们可以先在C盘下建立一个tools的文件夹,然后将win10万能驱动放进去,然后在上图中选择万能驱动的运行程序就可以了。
WeiyiGeek.驱动
这一步用于添加部署任务,添加的任务可以是:系统部署前、系统部署中、系统部署后、第一次登陆、首次进入桌面等
- 比如我们要在部署后安装软件,就可以在“运行”的“程序”处选择我们要安装的软件,然后在“添加”后面选择“系统部署后”,再点击“添加”按钮即可。
- 关于“删除”,比如我们的安装包和万能驱动在部署安装好系统后就不需要了,我们需要将其删除,那么我们就在“目录”处选择要删除的文件夹,比如tools,然后选择“添加”后面的“首次进入桌面”,再点击“添加”即可。
- 我们在“设置完成后”处选择“退出本程序”,然后点击“完成”。
Step5. 接下来我们将封装好的系统进行ghost备份,打开PE系统里的老毛桃一键装机,如下图:
WeiyiGeek.
备份完成后,点击“是”重启计算机就可以看到我们制作的封装系统在安装部署时的效果了。
0x04 最新版Easy Sysprep封装
描述:在上面环境所需的工具我已经下载下来了,以IT天空出品的ES5封装工具来介绍系统封装;
流程步骤如下: Step1.进入要封装的系统打开ES5(注意运行在非系统盘上),进入第一阶段 进行设置采用sysprep进行封装,重启后生成配置文件,ES5第二阶段操作需要在PE下完成
WeiyiGeek.ES5初次封装
Step2.官方指定PE环境优启通,进入第二阶段配置:
WeiyiGeek.优启通封装
Step3.保存封装的wim镜像,等待其他还原镜像; 注意:原来的系统将被新的wim镜像系统所替代;
- TP-LINK 远程代码执行漏洞 CVE-2017-13772 趣谈
- 执行计划中的COLLECTION ITERATOR PICKLER FETCH导致的性能问题 (r5笔记第49天)
- dataguard switchover的自动化脚本实现 (r5笔记第48天)
- 曲折的dump导入及问题分析(r5笔记第47天)
- 对一道if-else相关的程序题的简单分析(r5笔记第45天)
- 持续近7个小时的索引扫描的查询优化分析 (r5笔记第44天)
- 04.Java对象和类
- 关于Oracle数据恢复的两个临界点(r5笔记第42天)
- 关于提问的一些建议(r5笔记第41天)
- shell中echo的显示格式 (r5笔记第58天)
- springboot 入门教程(5) 基于ssm框架的crud操作(前端部分-附源码)
- springboot入门(4)_web开发
- springboot入门教程(2)_Thymeleaf集成
- VList data structures in C#
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 医学图像分割模型U-Net介绍和Kaggle的Top1解决方案源码解析
- 机器学习中的音频特征:理解Mel频谱图
- 兄弟,如何淡定地渡过七夕?
- Spring 源码第 9 篇,深入分析 FactoryBean
- PowerBI 动态数据格式 高级版 以及重要通知
- 气哭老板的顶级密钥存放方案,又做了一件蠢事
- 构建没有数据集的辣辣椒分类器,准确性达到96%
- 由 Redis 分布式锁造成的重大事故
- 10分钟搞定 Java 并发队列好吗?好的
- MySQL 案例:关于程序端的连接池与数据库的连接数
- spark和kafka jar包冲突NoSuchMethodError: net.jpountz.lz4.LZ4BlockInputStream
- 聊聊claudb的scripting command
- PHP怎么获取视频总时长的函数方法
- 构建Docker私有仓库
- Dockerfile使用