Windows Update 的工作原理是啥?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows Update 的工作原理是啥?相关的知识,希望对你有一定的参考价值。
我们知道,当关闭电源后,RAM的数据将丢失,因此,计算机不是用RA来保持计算机的基本工作指令,而是使用另外的方法将操作系统文件加载到RAM中,再由操作系统接管对机器的控制。这是引导过程中的一个主要部分。总的说来,引导过程有下面几个步骤:① 加电––––打开电源开关,给主板和内部风扇供电。② 启动引导程序––––CPU开始执行存储在ROM Bios中的指令。③ 开机自检––––计算机对系统的主要部件进行诊断测试。④ 加载操作系统––––计算机将操作系统文件从磁盘读到RAM中。⑤ 检查配置文件,定制操作系统的运行环境––––读取配置文件,根据用户的设置对操作系统进行定制。⑥ 准备读取命令和数据––––计算机等待用户输入命令和数据。(一) 加电引导过程的第一步就是通电。电扇开始运转,电源指示灯应该变亮,否则说明系统电源供应有问题,或是主板等部件和机箱发生短路。(二) 启动引导程序CPU是从内存地址FFFF0H处开始执行指令的,从前面的介绍可知,这个地址实际上在系统BIOS的地址范围内,无论是哪家公司的 BIOS,放在这里的只是一条跳转指令,跳到系统BIOS中真正的启动代码处。(三) 开机自检系统BIOS的启动代码首先要做的事情就是进行POST(Power-On Self Test,加电后自检),POST的主要任务是检测系统中一些关键设备是否存在和能否正常工作,例如内存和显卡等设备。由于POST是最早进行的检测过程,此时显卡还没有初始化,如果系统BIOS在进行POST的过程中发现了一些致命错误,例如没有找到内存或者内存有问题(此时只会检查640K常规内存),那么系统BIOS就会直接控制喇叭发声来报告错误。正常情况下,POST过程进行得非常快。POST结束之后,系统BIOS将查找显卡的BIOS并调用它的初始化代码,由显卡BIOS来初始化显卡,此时多数显卡都会在屏幕上显示出一些初始化信息,介绍生产厂商、图形芯片类型等内容。系统BIOS接着会查找其他设备的BIOS程序,找到之后同样要调用这些BIOS内部的初始化代码来初始化相关的设备。查找完所有其他设备的BIOS之后,系统BIOS将显示出它自己的启动画面,其中包括系统BIOS的类型、序列号和版本号等内容。然后检测和显示CPU的类型和工作频率,然后开始测试所有的RAM,并同时在屏幕上显示内存测试的进度。内存测试通过之后,系统BIOS将开始检测系统中安装的一些标准硬件设备,包括硬盘、CD-ROM、串口、并口、软驱等设备,另外绝大多数较新版本的系统BIOS在这一过程中还要自动检测和设置内存的定时参数、硬盘参数和访问模式等。标准设备检测完毕后,系统BIOS内部支持即插即用的代码将开始检测和配置系统中安装的即插即用设备,每找到一个设备之后,系统BIOS都会在屏幕上显示出设备的名称和型号等信息,同时为该设备分配中断、DMA通道和I/O端口等资源。经过上面几步,所有硬件都已经检测配置完毕,多数系统BIOS会重新清屏并在屏幕上方显示出一个表格,其中概略地列出了系统中安装的各种标准硬件设备,以及它们使用的资源和一些相关工作参数。接下来系统BIOS将根据CMOS配置更新ESCD(Extended System Configuration Data,扩展系统配置数据),ESCD是系统BIOS用来与操作系统交换硬件配置信息的一种手段。通常ESCD数据只在系统硬件配置发生改变后才会更新,所以不是每次启动机器时我们都能够看到“Update ESCD… Success”这样的信息。(四) 加载操作系统在POST成功之后,系统BIOS的启动代码将进行它的最后一项工作,即根据用户指定的启动顺序从软盘、硬盘或光驱启动,定位并加载操作系统文件。首先计算机查找两个操作系统文件:Io.sys和Msdos.sys。如果这两个文件不存在,引导过程会显示如下信息:“Non-system disk or disk error”或者“Invalid system disk”。提示:如果设定的启动顺序是先软盘后硬盘,出现上述提示时要检查一下软驱中是否放的是系统盘(包含上述系统文件)。如果不是系统盘,可将软盘取出,在按任意键后,计算机将从下一个驱动器(硬盘)查找系统文件。然后,微处理器将试图加载另外一个操作系统文件Command.com。如果加载失败(Command.com文件不存在或版本不对),会出现故障信息:“Bad or missing command interpreter”,而且你发出的所有命令计算机都无法执行,因为Command.com是专门用来解释这些命令的。(五) 检查配置文件并定制操作系统的运行环境在引导过程初期,计算机通过检查CMOS中的信息对硬件作初始化等工作。但具体到不同的操作系统中,计算机还需要更多的配置信息来正确使用所有的设备并创建个性化的运行环境。我们以DOS和Windows两种常用的PC操作系统为例,在DOS中我们常通过创建并编辑Autoexec.bat文件实现开机后自动执行某些命令,比如设置硬盘缓冲区大小、自动启动汉字环境等;在另一个文件Config.sys中可以加载鼠标、光驱、声卡等设备的DOS驱动程序等,使在DOS中可以使用这些设备。在Windows中对运行环境进行配置的方法更多,比如修改注册表,编辑System.ini、Win.ini等系统配置文件,或将希望启动完Windows后立即执行的内容放入Windows的启动(Startup)组中。(六) 准备接收命令和数据当计算机准备好接收命令时就结束了引导过程。通常在引导结束后,计算机会显示操作系统的屏幕或提示符。如果你使用的是Windows,那么就会看到Windows的桌面;如果使用的是DOS,就会看到操作系统提示符(如C:\>;A:\>等)。上面介绍的整个过程便是计算机在打开电源开关(或按Reset键)进行冷启动时所要完成的引导工作。 参考技术A 是微软公司的升级和更新网站.当然很重要。任何一个系统面世以后,不可能十全十美,况且病毒和木马也是不断更新,曾出不穷,update
和他们的关系就好比矛和盾,因此针对新病毒和木马就要时常进行更新以抵御他们的侵袭。安有杀毒软件和防火墙
是不够的。安微软公司要求有三:1,防火墙开启,2,不断更新的杀毒软件,3
开启自动更新,安该公司每月公布的更新和升级项,即使更新和升级你的系统,使之永远保持最新状态。可安下操作:
点击"工具=widows
update",系统即可自动扫描你的计算机为你选择适合你系统升级和更新的项目.一切全自动.如提示无法打开升级,你可先检查:开始-控制面版-管理工具-服务,找到:security
center,automayic
update“项,把他们的状态和启用类型设为:已启用和自动,返回”控制面版-安全中心,看里面的三项是否都处于“启用”状态?入未,点击使其启用。单击工具-点击widows
update-进入“update.microsoft"网页后,安提示操作即可。
如升级成功,建议你自动更新设为自动.开始-控制面板-安全中心-自动更新,设为"自动",到时会在任务栏右下方出现图标提醒你的.
下载时千万别下载序号为887742,他是微软验证的工具,一旦下载,再升级,就先验证,你的版本通不过,则无法生机了。如验证失败,你可:工具-管理加载项-把名为:windowa
genuine
advatage项禁用即可。
使用 JavaScript 延迟加载图像的工作原理是啥?
【中文标题】使用 JavaScript 延迟加载图像的工作原理是啥?【英文标题】:How lazy loading images using JavaScript works?使用 JavaScript 延迟加载图像的工作原理是什么? 【发布时间】:2012-03-12 13:10:14 【问题描述】:我很好奇延迟加载图像,即滚动到它们时将加载的图像的工作原理。
有什么提示吗?
【问题讨论】:
这能回答你的问题吗? How do you make images load only when they are in the viewport? 【参考方案1】:这是使用插件的方法:http://www.webresourcesdepot.com/lazy-loading-of-images-resources-you-need/ 这是 jquery 插件:http://www.appelsiini.net/projects/lazyload
基本上你在src
属性中放置一个虚拟图像并为实际图像添加另一个属性,JS 检测页面的滚动位置,并在你足够接近图像时加载图像数据。它通过将src
替换为实际图像的源来实现。
这里有另一种解释:http://engineering.slideshare.net/2011/03/faster-page-loads-with-image-lazy-loading/
【讨论】:
【参考方案2】:2020+ 解决方案:
有一种延迟加载图像的本机方法已经在某些浏览器中工作。虽然标准化仍在进行中,但您今天已经可以使用它!只需将loading
属性添加到您的图像标签并将其设置为“惰性”:
<img
src="picture.jpg"
loading="lazy"
>
就是这样。只要当前视口足够近,兼容的浏览器就会延迟加载该图像。
此处提供更多信息:
Native lazy-loading for the web Request to be added in the HTML specification Current browser support如果您需要旧版浏览器的解决方案,您应该查看 MDN 上的 Lazy loading。
【讨论】:
这样的延迟加载有什么缺点吗?如果不是,不是每张图片都应该使用loading
属性吗?
***.com/questions/61314750/…
此解决方案目前不支持在 chrome 中打印,请参阅此bugreport。打印页面时,尚未加载的图像将在打印输出中丢失。【参考方案3】:
以及如何轻松做到这一点的示例。
<img src="/images/lazy.jpg" data-real-src="/images/company-1.jpg">
“lazy.jpg”可以用于所有图像,这将导致实际上只加载一张图像(这是一个 1x1 像素的小重量图像)。所以,考虑一下我有一个要访问的 250 家商店的列表,每个商店都有一个公司徽标。可能看起来像这样:
<img src="/images/lazy.jpg" data-real-src="/images/company-1.jpg">
<img src="/images/lazy.jpg" data-real-src="/images/company-2.jpg">
<img src="/images/lazy.jpg" data-real-src="/images/company-3.jpg">
...
然后魔法来了! 把它放在你的 javascript 文件中:
$('img[src="/images/lazy.jpg"]').each(function(index, el)
$(el).attr('src', $(el).data('real-src'));
);
wacka-wacka,所有的lazy.jpg 图像都将被它们的“真实”图像替换。让您的 html 页面加载更快的目的(因为这 250 家公司在lazy.jpg 中都有相同的“徽标”:)...但是 JS 会在 DOM 完成加载后处理这一切。
这当然是一个 jQuery 解决方案。也可以用纯js来完成。
【讨论】:
【参考方案4】:可以使用justlazy,它独立于jQuery等依赖,非常轻量级:
您需要的唯一电话是:
var placeholders = document.querySelectorAll(".load-if-visible");
for (var i = 0; i < placeholders.length; ++i)
Justlazy.registerLazyLoad(placeholders[i]);
占位符必须是以下结构:
<span data-src="url/to/image" data-
data-title="some title" class="load-if-visible">
</span>
出于 SEO 原因,您可以使用任何其他占位符(例如占位符图片)。
此外,还有一个如何使用它的指南以及一些关于延迟加载图像的一般信息。
【讨论】:
【参考方案5】:使用将侦听器附加到滚动事件或使用 setInterval 的传统方式延迟加载图像的性能非常低,因为每次调用 getBoundingClientRect() 都会强制浏览器 re-layout 整个页面,并且会给您的页面带来相当大的卡顿网站。
使用 Lozad.js(只有 569 字节,没有依赖关系),它使用 InteractionObserver 来高效地延迟加载图像。
【讨论】:
【参考方案6】:浏览器级别的原生延迟加载终于可用了。
<img src="image.png" loading="lazy" >
<img loading=lazy>
受到大多数流行的 Chromium 驱动的浏览器(Chrome、Edge、Opera)、Firefox 的支持,WebKit (Safari) 的实施正在进行中。 Can I use 有关于跨浏览器支持的详细信息。不支持加载属性的浏览器会直接忽略它而不会产生副作用。
Improved data-savings and distance-from-viewport thresholds
【讨论】:
【参考方案7】:2021 - 保持简单...
这里有很多 插件 建议,根据您的用例,这些建议可能对您很有价值。
如果您懒得在下面编写这个简短的 sn-p 代码,或者您需要已经构建的回调,那么您可以使用我构建的这个插件,它基于这个确切的答案,缩小后只有 0.5kb。我的插件 Simply Lazy 甚至可以在 IE 上使用,如果您只需添加一个 polyfill。
最后,如果您只需要延迟加载一些图像,那么它很简单:
<img data-src="your-image-path-here" class="lazyload" />
还有:
let observer = new IntersectionObserver((entries, observer) =>
entries.forEach(function (entry)
if (entry.intersectionRatio > 0 || entry.isIntersecting)
const image = entry.target;
observer.unobserve(image);
if (image.hasAttribute('src'))
// Image has been loaded already
return;
// Image has not been loaded so load it
const sourceUrl = image.getAttribute('data-src');
image.setAttribute('src', sourceUrl);
image.onload = () =>
// Do stuff
// Removing the observer
observer.unobserve(image);
);
);
document.querySelectorAll('.lazyload').forEach((el) =>
observer.observe(el);
);
使用Intersection Observer API 让这一切变得非常简单。您也可以在shadowRoot
中使用它,它在那里也可以正常工作。
我还发现这个article 有助于了解这里发生了什么。
【讨论】:
【参考方案8】:有很多方法可以实现延迟加载。这个过程就是你加载你需要的东西。您可以延迟加载软件场景中的任何内容。在网站上,大多数在加载图像时都会使用它,这是因为大多数网站几乎只是图像。我的意思是网站的艺术作品加上他们可以在您的服务器上拥有数千张图片的真实人物图片。当您尝试同时加载所有这些文件时,这通常会导致速度变慢。在某些时候,它开始减慢这个过程。因此,延迟加载通常适用于大型网站。就像我说的那样,您可以通过多种方式做到这一点。已经给出了一种方法。已经加载了 img 标签,但 src 部分指向一个虚拟文件,它的大小很小。不要使用图形或图片的图像......使用像灰色块这样的东西......或者什么都不能使用。然后当滚动部分靠近图像附近的滚动点时。它将运行一个函数,它将用真实的图像链接替换 src。另一种方法是使用 ajax 和关闭时的滚动点将追加...加载实际的 html 代码和 src 中的图像。这是我实际使用的。我编写了一个 PHP 文件来延迟加载图像、数据、文本。
此方法的重点是在需要时从网站下载文件。加载图像时,它实际上是从您的服务器下载的。因此,当您开始处理较大的图像文件和太多的图像文件时,下载过程和实际加载时间可能会增加。
【讨论】:
以上是关于Windows Update 的工作原理是啥?的主要内容,如果未能解决你的问题,请参考以下文章