Electron 安全检查清单

0x00背景

  如果你可以建一个网站,你就可以建一个桌面应用程序。 Electron 是一个使用 JavaScript, HTML 和 CSS 等 Web 技术创建原生程序的框架,它负责比较难搞的部分,你只需把精力放在你的应用的核心上即可。

  简单来说,Electron 基于 Chromium 和 Node.js, 让你可以使用 HTML, CSS 和 JavaScript 构建应用。把一个浏览器的标签视图去掉,并且只限定访问特定的网页。

0x01 安全性,原生能力和你的责任

Web开发人员通常享有浏览器强大的网络安全特性,而自己的代码风险相对较小。 Our websites are granted limited powers in a sandbox, and we trust that our users enjoy a browser built by a large team of engineers that is able to quickly respond to newly discovered security threats.

当使用 Electron 时,很重要的一点是要理解 Electron 不是一个 Web 浏览器。 它允许您使用熟悉的 Web 技术构建功能丰富的桌面应用程序,但是您的代码具有更强大的功能。 JavaScript 可以访问文件系统,用户 shell 等。 这允许您构建更高质量的本机应用程序,但是内在的安全风险会随着授予您的代码的额外权力而增加。

考虑到这一点,请注意,展示任意来自不受信任源的内容都将会带来严重的安全风险,而这种风险Electron也没打算处理。 事实上,最流行的 Electron 应用程序(Atom,Slack,Visual Studio Code 等) 主要显示本地内容(即使有远程内容也是无 Node 的、受信任的、安全的内容) - 如果您的应用程序要运行在线的源代码,那么您需要确保源代码不是恶意的。

报告安全问题

有关如何正确上报 Electron 漏洞的信息,参阅 SECURITY.md

Chromium 安全问题和升级

Electron和Chromium同步更新。 有关更多信息,请参见《 Electron Release Cadence》博客文章。

安全是所有人的共同责任

重要的是要记住,Electron应用程序的安全性是框架基础(Chromium,Node.js),Electron本身,所有NPM依赖项和代码的整体安全性的结果。因此,你有责任遵循下列安全守则:

  1. 使用最新版的 Electron 框架搭建你的程序。你最终发行的产品中会包含 Electron、Chromium 共享库和 Node.js 的组件。 这些组件存在的安全问题也可能影响你的程序安全性。 你可以通过更新Electron到最新版本来确保像是nodeIntegration绕过攻击一类的严重漏洞已经被修复因而不会影响到你的程序。 请参阅“使用当前版本的Electron”以获取更多信息。
  2. 评估你的依赖项目NPM提供了五百万可重用的软件包,而你应当承担起选择可信任的第三方库。 如果你使用了受已知漏洞的过时的库,或是依赖于维护的很糟糕的代码,你的程序安全就可能面临威胁。
  3. 遵循安全编码实践你的代码是你的程序安全的第一道防线。 一般的网络漏洞,例如跨站脚本攻击(Cross-Site Scripting, XSS),对Electron将造成更大的影响,因此非常建议你遵循安全软件开发最佳实践并进行安全性测试。

隔离不信任的内容

每当你从不被信任的来源(如一个远程服务器)获取代码并在本地执行,其中就存在安全性问题。 例如在默认的 BrowserWindow中显示一个远程网站. 如果攻击者以某种方式设法改变所述内容 (通过直接攻击源或者通过在应用和实际目的地之间进行攻击) ,他们将能够在用户的机器上执行本地代码。

⚠️无论如何,在启用Node.js集成的情况下,你都不该加载并执行远程代码。 相反,只使用本地文件(和您的应用打包在一起)来执行Node.js代码 如果你想要显示远程内容,请使用 <webview> Tag或者 BrowserView,并确保禁用 nodeIntegration 并启用 contextIsolation

Electron 安全警告

从Electron 2.0版本开始,开发者将会在开发者控制台看到打印的警告和建议。 这些警告仅在可执行文件名为 Electron 时才会为开发者显示。

你可以通过在process.env 或 window对象上配置ELECTRON_ENABLE_SECURITY_WARNINGS 或ELECTRON_DISABLE_SECURITY_WARNINGS来强制开启或关闭这些警告。

0x02 清单:安全建议

为加强程序安全性,你至少应当遵循下列规则:

  1. 只加载安全的内容
  2. 禁止在所有渲染器中使用Node.js集成显示远程内容
  3. 做所有显示远程内容的渲染器中启用上下文隔离。
  4. 在所有加载远程内容的会话中使用 ses.setPermissionRequestHandler().
  5. 不要禁用 webSecurity
  6. 定义一个Content-Security-Policy并设置限制规则(如:script-src 'self')
  7. 不要设置 allowRunningInsecureContent 为 true.
  8. 不要开启实验性功能
  9. 不要使用enableBlinkFeatures
  10. <webview>:不要使用 allowpopups 
  11. <webview>:验证选项与参数
  12. 禁用或限制网页跳转
  13. 禁用或限制新窗口创建
  14. 不要对不可信的内容使用 openExternal
  15. 禁用 remote 模块
  16. 限制 remote 模块
  17. 使用当前版本的 Electron

如果你想要自动检测错误的配置或是不安全的模式,可以使用electronegativity 关于在使用Electron进行应用程序开发中的潜在薄弱点或者bug,您可以参考开发者与审核人员指南

1) 仅加载安全内容

任何不属于你的应用的资源都应该使用像HTTPS这样的安全协议来加载。 换言之, 不要使用不安全的协议 (如 HTTP)。 同理,我们建议使用WSS,避免使用WS,建议使用FTPS ,避免使用FTP,等等诸如此类的协议。

为什么?

HTTPS 有三个主要好处:

1) 它对远程服务器进行身份验证, 确保您的应用程序连接到正确的主机而不是模仿器。 2) 确保数据完整性, 断言数据在应用程序和主机之间传输时未被修改。 3) 它对用户和目标主机之间的通信进行加密, 从而更难窃听应用程序和主机之间发送的信息。

怎么做?

// 不推荐

browserWindow.loadURL ('http://example.com')// 推荐

browserWindow.loadURL ('https://example.com')

 

<!-- Bad --><script crossorigin src="http://example.com/react.js"></script><link rel="stylesheet" href="http://example.com/style.css">

<!-- Good --><script crossorigin src="https://example.com/react.js"></script><link rel="stylesheet" href="https://example.com/style.css">

2) 不要为远程内容启用 Node.js 集成

This recommendation is the default behavior in Electron since 5.0.0.

加载远程内容时,不论使用的是哪一种渲染器(BrowserWindowBrowserView 或者 <webview>),最重要的就是绝对不要启用 Node.js 集成。 其目的是限制您授予远程内容的权限, 从而使攻击者在您的网站上执行 JavaScript 时更难伤害您的用户。

在此之后,你可以为指定的主机授予附加权限。 举例来说,如果你正在打开一个指向 https://example.com/ 的 BrowserWindow,那么你可以给他刚刚好足够的权限,但是绝对不要超出这个范围。

为什么?

如果攻击者跳过渲染进程并在用户电脑上执行恶意代码,那么这种跨站脚本(XSS) 攻击的危害是非常大的。 跨站脚本攻击很常见,通常情况下,威力仅限于执行代码的网站。 禁用Node.js集成有助于防止XSS攻击升级为“远程代码执行” (RCE) 攻击。

怎么做?

// 不推荐const mainWindow = new BrowserWindow({

  webPreferences: {

    nodeIntegration: true,

    nodeIntegrationInWorker: true

  }

})

 

mainWindow.loadURL('https://example.com')

 

// 推荐const mainWindow = new BrowserWindow({

  webPreferences: {

    preload: path.join(app.getAppPath(), 'preload.js')

  }

})

 

mainWindow.loadURL('https://example.com')

 

<!-- Bad --><webview nodeIntegration src="page.html"></webview>

<!-- Good --><webview src="page.html"></webview>

 

当禁用Node.js集成时,你依然可以暴露API给你的站点以使用Node.js的模块功能或特性。 预加载脚本依然可以使用require等Node.js特性, 以使开发者可以暴露自定义API给远程加载内容。

在下面的预加载脚本例子中,后加载的网站内容可以使用window.readConfig()方法,但不能使用Node.js特性。

const { readFileSync } = require('fs')

window.readConfig = function () {

  const data = readFileSync('./config.json')

  return data

}

 

3) 为远程内容开启上下文隔离

上下文隔离是Electron的一个特性,它允许开发者在预加载脚本里运行代码,里面包含Electron API和专用的JavaScript上下文。 实际上,这意味全局对象如 Array.prototype.push 或 JSON.parse等无法被渲染进程里的运行脚本修改。

Electron使用了和Chromium相同的Content Scripts技术来开启这个行为。

即使您使用选项 nodeIntegration: false 进行强制隔离并防止其使用Node原语,contextIsolation 也必须被启用。

Why & How?

For more information on what contextIsolation is and how to enable it please see our dedicated Context Isolation document.

4) 处理来自远程内容的会话许可请求

当你使用Chromes时,也许见过这种许可请求:每当网站尝试使用某个特性时,就会弹出让用户手动确认(如网站通知)

此API基于Chromium permissions API,并已实现对应的许可类型。

为什么?

默认情况下,Electron将自动批准所有的许可请求,除非开发者手动配置一个自定义处理函数。 尽管默认如此,有安全意识的开发者可能希望默认反着来。

怎么做?

const { session } = require('electron')

 

session

  .fromPartition('some-partition')

  .setPermissionRequestHandler((webContents, permission, callback) => {

    const url = webContents.getURL()

 

    if (permission === 'notifications') {

      // 通过许可请求

      callback(true)

    }

 

    // Verify URL

    if (!url.startsWith('https://example.com/')) {

      // 拒绝许可请求

      return callback(false)

    }

  })

5) 不要禁用WebSecurity

Electron的默认值就是建议值。

在渲染进程(BrowserWindowBrowserView 和 <webview>)中禁用 webSecurity 将导致至关重要的安全性功能被关闭。

不要在生产环境中禁用webSecurity。

为什么?

禁用 webSecurity 将会禁止同源策略并且将 allowRunningInsecureContent 属性置 true。 换句话说,这将使得来自其他站点的非安全代码被执行。

怎么做?

// 不推荐const mainWindow = new BrowserWindow({

  webPreferences: {

    webSecurity: false

  }

})

// 推荐const mainWindow = new BrowserWindow()

<!-- Bad --><webview disablewebsecurity src="page.html"></webview>

<!-- Good --><webview src="page.html"></webview>

6) 定义一个内容安全策略

内容安全策略(CSP) 是应对跨站脚本攻击和数据注入攻击的又一层保护措施。 我们建议任何载入到Electron的站点都要开启。

为什么?

CSP允许Electron通过服务端内容对指定页面的资源加载进行约束与控制。 如果你定义https://example.com这个源,所属这个源的脚本都允许被加载,反之https://evil.attacker.com不会被允许加载运行。 对于提升你的应用安全性,设置CSP是个很方便的办法。

下面的CSP设置使得Electron只能执行自身站点和来自apis.example.com的脚本。

// 不推荐

Content-Security-Policy: '*'

// 推荐

Content-Security-Policy: script-src 'self' https://apis.example.comEN

CSP HTTP头

Electron 会处理 Content-Security-Policy HTTP 标头,它可以在 webRequest.onHeadersReceived 中进行设置:

const { session } = require('electron')

 

session.defaultSession.webRequest.onHeadersReceived((details, callback) => {

  callback({

    responseHeaders: {

      ...details.responseHeaders,

      'Content-Security-Policy': ['default-src \'none\'']

    }

  })

})

CSP元标签

CSP的首选传递机制是HTTP报头,但是在使用file://协议加载资源时,不可能使用此方法。 It can be useful in some cases, such as using the file:// protocol, to set a policy on a page directly in the markup using a <meta> tag:

<meta http-equiv="Content-Security-Policy" content="default-src 'none'">

7) 不要设置allowRunningInsecureContenttrue

Electron的默认值就是建议值。

默认情况下,Electron不允许网站在HTTPS中加载或执行非安全源(HTTP) 中的脚本代码、CSS或插件。 将allowRunningInsecureContent属性设为true将禁用这种保护。

当网站的初始内容通过HTTPS加载并尝试在子请求中加载HTTP的资源时,这被称为"混合内容"。

为什么?

通过HTTPS加载会将该资源进行加密传输,以保证其真实性和完整性。 参看只显示安全内容这节以获得更多信息。

怎么做?

// 不推荐const mainWindow = new BrowserWindow({

  webPreferences: {

    allowRunningInsecureContent: true

  }

})

// 推荐const mainWindow = new BrowserWindow({})

8) 不要开启实验室特性

Electron的默认值就是建议值。

Electron 的熟练用户可以通过  experimentalFeatures 属性来启用 Chromium 实验性功能。

为什么?

尽管存在合理的使用场景,但是除非你知道你自己在干什么,否则你不应该开启这个属性。

怎么做?

// 不推荐const mainWindow = new BrowserWindow({

  webPreferences: {

    experimentalFeatures: true

  }

})

// 推荐const mainWindow = new BrowserWindow({})

9) 不要使用enableBlinkFeatures

Electron的默认值就是建议值。

Blink是Chromium里的渲染引擎名称。 就像experimentalFeatures一样,enableBlinkFeatures属性将使开发者启用被默认禁用的特性。

为什么?

通常来说,某个特性默认不被开启肯定有其合理的原因。 针对特定特性的合理使用场景是存在的。 作为开发者,你应该非常明白你为何要开启它,有什么后果,以及对你应用安全性的影响。 在任何情况下都不应该推测性的开启特性。

怎么做?

// 不推荐const mainWindow = new BrowserWindow({

  webPreferences: {

    enableBlinkFeatures: 'ExecCommandInJavaScript'

  }

})

// 推荐const mainWindow = new BrowserWindow()EN

10) 不要使用allowpopups

Electron的默认值就是建议值。

如果您正在使用 <webview> ,您可能需要页面和脚本加载进您的 <webview> 标签以打开新窗口。 开启allowpopups属性将使得BrowserWindows可以通过window.open()方法创建。 否则, <webview> 标签内不允许创建新窗口。

为什么?

如果你不需要弹窗,最好使用默认值以关闭新BrowserWindows的创建。 以下是最低的权限要求原则:若非必要,不要再网站中创建新窗口。

怎么做?

<!-- Bad --><webview allowpopups src="page.html"></webview>

<!-- Good --><webview src="page.html"></webview>EN

11) 创建WebView前确认其选项

通过渲染进程创建的WebView是不开启Node.js集成的,且也不能由自身开启。 但是,WebView可以通过其webPreferences属性创建一个独立的渲染进程。

It is a good idea to control the creation of new <webview> tags from the main process and to verify that their webPreferences do not disable security features.

为什么?

Since <webview> live in the DOM, they can be created by a script running on your website even if Node.js integration is otherwise disabled.

Electron 可以让开发者关闭各种控制渲染进程的安全特性。 通常情况下,开发者并不需要关闭他们中的任何一种 - 因此你不应该允许创建不同配置的<webview>标签

怎么做?

在 <webview>标签生效前,Electron将产生一个will-attach-webview事件到webContents中。 利用这个事件来阻止可能含有不安全选项的 webViews 创建。

app.on('web-contents-created', (event, contents) => {

  contents.on('will-attach-webview', (event, webPreferences, params) => {

    // Strip away preload scripts if unused or verify their location is legitimate

    delete webPreferences.preload

    delete webPreferences.preloadURL

 

    // Disable Node.js integration

    webPreferences.nodeIntegration = false

 

    // Verify URL being loaded

    if (!params.src.startsWith('https://example.com/')) {

      event.preventDefault()

    }

  })

})

Again, this list merely minimizes the risk, it does not remove it. If your goal is to display a website, a browser will be a more secure option.

12) 禁用或限制导航

如果您的应用程序不需要导航或仅需要导航到已知页面,则最好将导航完全限制在该已知范围内,而不允许任何其他类型的导航。

 

为什么?

导航是一种常见的攻击手段。 如果攻击者可以说服您的应用程序离开当前页面,则可能会迫使您的应用程序打开Internet上的网站。 即使您将WebContents配置为更安全(例如禁用了nodeIntegration或启用了contextIsolation),让您的应用程序打开随机网站也会使开发应用程序的工作变得更加容易。

常见的攻击模式是,攻击者诱使您的应用程序用户与该应用程序进行交互,以使其导航至攻击者的页面之一。 通常通过链接,插件或其他用户生成的内容来完成此操作。

怎么做?

如果您的应用程序不需要导航,则可以在will-navigate处理程序中调用event.preventDefault()。 如果您知道您的应用可能会导航到哪些页面,请检查事件处理程序中的URL,仅在导航与您期望的URL匹配时才进行导航。

我们建议您对URL使用Node的解析器。 有时可能会愚弄简单的字符串比较-startsWith('https://example.com')测试会让https://example.com.attacker.com通过。

const URL = require('url').URL

 

app.on('web-contents-created', (event, contents) => {

  contents.on('will-navigate', (event, navigationUrl) => {

    const parsedUrl = new URL(navigationUrl)

 

    if (parsedUrl.origin !== 'https://example.com') {

      event.preventDefault()

    }

  })

})

13) 禁用或限制新窗口的创建

如果您拥有一组已知的窗口,则最好限制在应用程序中创建其他窗口。

为什么?

就像导航一样,创建新的webContents是常见的攻击手段。 攻击者试图说服您的应用以比以往更多的特权来创建新的窗口,框架或其他渲染器进程。 或打开了以前无法打开的页面。

如果除了您需要创建的窗口之外,您还不需要创建其他窗口,则禁用创建可以免费为您提供额外的安全性。 对于打开一个``浏览器窗口''并且无需在运行时打开任意数量的其他窗口的应用程序来说通常是这种情况。

怎么做?

webContents将在创建新窗口之前发出new-window事件。 除其他参数外,还将传递该事件,请求打开窗口的URL和用于创建该事件的选项。 我们建议您使用事件检查窗口的创建,将其限制为仅您需要的。

 

const { shell } = require('electron')

 

app.on('web-contents-created', (event, contents) => {

  contents.on('new-window', async (event, navigationUrl) => {

    // In this example, we'll ask the operating system

    // to open this event's url in the default browser.

    event.preventDefault()

 

    await shell.openExternal(navigationUrl)

  })

})

14) 不要使用带有不受信任内容的“ openExternal”

Shell的openExternal允许使用桌面的本机实用程序打开给定的协议URI。 例如,在macOS上,此功能类似于openterminal命令实用程序,并将基于URI和文件类型关联打开特定的应用程序。

为什么?

可能会滥用openExternal来损害用户的主机。 当openExternal与不受信任的内容一起使用时,可以利用它来执行任意命令。

怎么做?

//  Badconst { shell } = require('electron')

shell.openExternal(USER_CONTROLLED_DATA_HERE)

//  Goodconst { shell } = require('electron')

shell.openExternal('https://example.com/index.html')

15) 禁用“远程”模块

远程模块为渲染器进程提供了一种访问通常仅在主进程中可用的API的方式。 使用它,渲染器可以调用主流程对象的方法,而无需显式发送进程间消息。 如果您的桌面应用程序不运行不受信任的内容,这可能是使渲染器进程访问并使用仅对主进程可用的模块(例如与GUI相关的模块(对话框,菜单等))的有用方法。

但是,如果您的应用程序可以运行不受信任的内容,并且即使您相应地对沙盒渲染器进程进行了处理,则远程模块也可以使恶意代码更容易逃脱沙盒并通过主进程的更高特权来访问系统资源。 因此,在这种情况下应禁用它。

为什么?

远程使用内部IPC通道与主进程进行通信。 ``原型污染''攻击可以授予恶意代码访问内部IPC通道的权限,然后可以通过模仿远程IPC消息并访问以更高特权运行的主要流程模块来逃脱沙箱。

此外,预加载脚本可能会将模块意外泄漏到沙盒渲染器。 远程泄漏可将恶意代码与大量主要流程模块结合在一起,以执行攻击。

禁用远程模块会消除这些攻击媒介。 启用上下文隔离还可以阻止“原型污染”攻击的成功。

怎么做?

// Bad if the renderer can run untrusted contentconst mainWindow = new BrowserWindow({})

// Goodconst mainWindow = new BrowserWindow({

  webPreferences: {

    enableRemoteModule: false

  }

})

<!-- Bad if the renderer can run untrusted content  --><webview src="page.html"></webview>

<!-- Good --><webview enableremotemodule="false" src="page.html"></webview>

16) 过滤“远程”模块

如果无法禁用远程模块,则应过滤可通过应用程序不需要的远程访问的全局,节点和电子模块(所谓的内置模块)。 可以通过完全阻止某些模块并将其替换为仅暴露应用程序所需功能的代理来完成。

为什么?

由于主进程具有系统访问特权,因此,在受损的渲染器进程中运行的恶意代码手中,由主进程模块提供的功能可能很危险。 通过将可访问模块的数量限制为应用程序所需的最少数量并过滤掉其他模块,可以减少恶意代码可用于攻击系统的工具集。

请注意,最安全的选择是完全禁用远程模块。 如果选择过滤访问而不是完全禁用模块,则必须非常小心以确保通过允许通过过滤器的模块无法进行特权升级。

怎么做?

const readOnlyFsProxy = require(/* ... */) // exposes only file read functionality

const allowedModules = new Set(['crypto'])const proxiedModules = new Map(['fs', readOnlyFsProxy])const allowedElectronModules = new Set(['shell'])const allowedGlobals = new Set()

 

app.on('remote-require', (event, webContents, moduleName) => {

  if (proxiedModules.has(moduleName)) {

    event.returnValue = proxiedModules.get(moduleName)

  }

  if (!allowedModules.has(moduleName)) {

    event.preventDefault()

  }

})

 

app.on('remote-get-builtin', (event, webContents, moduleName) => {

  if (!allowedElectronModules.has(moduleName)) {

    event.preventDefault()

  }

})

 

app.on('remote-get-global', (event, webContents, globalName) => {

  if (!allowedGlobals.has(globalName)) {

    event.preventDefault()

  }

})

 

app.on('remote-get-current-window', (event, webContents) => {

  event.preventDefault()

})

 

app.on('remote-get-current-web-contents', (event, webContents) => {

  event.preventDefault()

})

17) 使用当前版本的 Electron

您应该争取始终使用最新版本的Electron。 每当发布新的主要版本时,您都应尝试尽快更新您的应用。

为什么?

与使用较新版本的那些组件的应用程序相比,使用较早版本的Electron,Chromium和Node.js构建的应用程序更容易成为目标。 一般而言,较旧版本的Chromium和Node.js的安全性问题和漏洞利用更为广泛。

Chromium和Node.js都是数以千计的优秀开发人员构建的令人印象深刻的工程壮举。 鉴于它们的受欢迎程度,它们的安全性由同样熟练的安全研究人员进行了仔细的测试和分析。 这些研究人员中有许多负责任地披露了漏洞,这通常意味着研究人员将在发布问题之前给Chromium和Node.js一些时间来修复问题。 如果您的应用程序运行的是最新版本的Electron(因此是Chromium和Node.js),而该版本的潜在安全问题并未广为人知,则您的应用程序将更加安全。

 

0x03 参考文章

https://myslide.cn/slides/14368

https://www.jianshu.com/p/97179e311cea

 

 

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. Esri和AfroChampions建立合作关系以在非洲推广地理信息系统

    泛非公益组织和Esri携手鼓励整个非洲大陆使用地理空间技术 加州雷德兰兹--(美国商业资讯)--全球位置情报领导者Esri今日宣布与泛非洲非营利组织AfroChampions联合建立一项计划&#xff0c;以推动旨在促进公私合作的政策&#xff0c;进而促进非洲经济转型。该计划的目标是通过对…...

    2024/4/3 23:26:58
  2. 史上最详细的23中设计模式解析,一个不落,理论搭配简单案例,更好理解哦

    目录 一、软件设计模式的产生背景 二、软件设计模式的概念与意义 1. 软件设计模式的概念 2. 学习设计模式的意义 三、23 种设计模式的分类和功能 1. 根据目的来分 2. 根据作用范围来分 3. 23种设计模式的功能 四、 设计模式的七大原则 1.开闭原则 2.里氏替换原则 3.依…...

    2024/4/29 23:30:15
  3. 十一计划家庭篇

    10月1号-10月6号 出门游玩 1、北京周边 1&#xff09;农场采摘/农家乐类 白各庄农场采摘园 昌平 奥肯尼克农场 大兴 2&#xff09;儿童乐园类 宋庆龄世界儿童体验馆 3&#xff09;公园类 奥林匹克公园 喇叭沟原始森林公园 紫竹院公园 4&#xff09;有山有…...

    2024/5/9 4:21:28
  4. 如何理解 热穿透现象

    举个简单的例子&#xff0c;假设是一个极端简单的场景&#xff0c;系统里只有两种人&#xff0c;一种人叫南方人&#xff0c;一种人叫北方人。然后只有两条广告&#xff0c;一个A一个B。 南方人 对 广告A的ctr是10%&#xff0c;完全不点击B&#xff0c;并且有一百万条这样的样…...

    2024/5/9 12:06:17
  5. 深信服技术支持(数通、物联网方向)技术面问题总结

    自我介绍 TCP三次握手 TCP为什么三次握手 和他相对的不可靠传输是什么&#xff0c;两者的区别 交换机的冗余技术 链路冗余 NAT的分类 常见端口 ospf协议包 ARP&#xff0c;RARP 对无线协议有什么了解吗 场景模拟 配置DHCP的步骤 linux查找文件命令&#xff0c;搜索用户为xxx的文…...

    2024/5/9 12:14:10
  6. 3Dmax怎么学习?

    3Dmax怎么学习&#xff1f;怎么学习3Dmax&#xff1f; 最先&#xff0c;做为新手&#xff0c;应当有信心学精这一软件&#xff0c;并搞好了资金投入很多時间和活力去学习的提前准备&#xff0c;它是最重要的。 要想学好实际操作3Dmax就务必要熟练地应用电脑上&#xff0c;电脑…...

    2024/4/28 3:04:55
  7. 学习笔记(27):零基础掌握 Python 入门到实战-class定义对象,self指向自身(三)

    立即学习:https://edu.csdn.net/course/play/26676/339580?utm_sourceblogtoedu 1、对比方法和函数 2、理解类方法的特点 3、理解静态方法的特点 名称的命名、代码块的编写方式一样 &#xff08;实例&#xff09;方法不能够单独调用&#xff0c;必须通过实例、类调用。特…...

    2024/5/9 12:33:42
  8. Drools使用细节

    Drools使用细节一、根据数据库存储的内容录入规则二、语法细节一、根据数据库存储的内容录入规则 先注入kieSystem Autowiredprivate KieFileSystem kieFileSystem;// 获取kie服务 KieServices kieServices KieServices.Factory.get(); // 获取规则 List<Rule> listRu…...

    2024/5/9 13:19:06
  9. android开发项目分层

    ...

    2024/5/9 15:09:15
  10. 服务器集群负载均衡(F5,LVS,DNS,CDN)区别以及选型

    服务器集群负载均衡(F5,LVS,DNS,CDN)区别以及选型 下面是“黑夜路人”的《大型网站架构优化&#xff08;PHP&#xff09;与相关开源软件使用建议》 F5全称: F5-BIG-IP-GTM 全球流量管理器. 是一家叫F5 Networks的公司开发的四~七层交换机,软硬件捆绑. 据说最初用BSD系统,现…...

    2024/5/2 4:08:44
  11. CDH6.2.0安装(三)

    CDH6.2.0安装&#xff08;三&#xff09; Step10: 上传安装文件 Step11: 检查文件是否正确 确保cloudera-manager.repo文件放入/etc/yum.repos.d/目录确保parcel目录下文件完整 Step12: 安装jdk&CM 验证repo文件是否起效 yum list | grep cloudera #如果列出的不是待安…...

    2024/5/9 11:38:14
  12. Mac 系统安装RVM、Ruby、HomeBrew

    1.安装rvm rvm是多版本ruby环境的管理和切换工具&#xff1a; 官网&#xff1a; https://rvm.io/1.1 curl -sSL https://get.rvm.io | bash -s stable // 之后按回车键 1.2 载入RVM环境 $ source ~/.rvm/scripts/rvm$ echo "ruby_urlhttps://cache.ruby-china.com/pub/…...

    2024/5/4 21:00:10
  13. PDF打开后却不能编辑要怎么办?

    你是不是也经常会遇到PDF文档虽然正常打开了&#xff0c;但是却无法进行编辑&#xff0c;这是怎么回事呢&#xff1f;遇到这种情况要怎么办呢&#xff1f; 首先我们来分析一下PDF不能编辑的原因&#xff0c;排除PDF文档自身损坏的原因&#xff0c;一般分为两种原因&#xff0c…...

    2024/4/29 10:55:02
  14. asm编译报错 fatal: unable to open include file

    asm 编译报错&#xff1a; fatal: unable to open include file 发现是nasm版本低于2.14&#xff0c;更新nasm解决了问题。 //nasm 版本更新 curl -O -L http://www.nasm.us/pub/nasm/releasebuilds/2.15.05/nasm-2.15.05.tar.bz2 tar xjvf nasm-2.15.05.tar.bz2 cd nasm-2.1…...

    2024/4/30 15:23:11
  15. Shell传递参数

    Shell 传递参数 我们可以在执行Shell脚本时&#xff0c;向脚本传递参数&#xff0c;脚本内获取参数的个数为&#xff1a;$n。n代表一个数字&#xff0c;1为执行脚本的第一个参数&#xff0c;2为第二个参数 依次类推 举例 以下实例我们向脚本传递三个参数&#xff0c;分别输出…...

    2024/4/15 23:24:20
  16. B+树的python实现

    B树的python实现 本代码来自极客学院网站死里逃生2018年发表的blog关于 Btree (附 python 模拟代码)。该代码实现了B树的插入、删除、范围查找&#xff0c;功能完善&#xff0c;但也存在诸多问题。本文在原代码基础上对其错误进行了修正&#xff0c;更便于需要者使用。 主要贡…...

    2024/4/24 16:51:41
  17. 康佳应急广播 EmergRadioBZ(KBTA100-C)项目

    目录测试信息创建广播适配器&#xff0c;资源调度器分别指什么&#xff1f;播放媒体、通道指什么&#xff1f;广播的输入内容输出通道、调频、IP具体指什么&#xff1f;适配器&#xff0c;资源调度器演练播发类型广播内容参数设置资源编码设置的具体规范要求周期、回传参数用来…...

    2024/5/9 4:22:29
  18. C采用多线程和多进程实现BIO网络连接

    文章目录基础版多进程版本多线程版本基础版 封装的socket.h warp_socket.h #ifndef _WRAP__ #define _WRAP__#include <sys/socket.h>int check(int ret, char *str);int my_socket(int domain, int type, int protocol);int default_my_socket_ipv4_tcp();struct sock…...

    2024/5/8 5:43:57
  19. SpringBoot整个MyBatis拦截器输入真实SQL语句

    Maven依赖 <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-start…...

    2024/4/28 20:54:12
  20. 2021年造价工程师考试建设工程计价科目学习视频课件资料

    【摘要】建筑工程设计计算书分享给大家&#xff0c;希望能给2021年造价工程师备考的考生还来帮助。  2021年造价师考试资料获取网盘账号“考试满分518”为好友&#xff0c;群主会拉入资料群获取资料   1、吊装天窗侧板时起重机的选择 对于天窗侧板以安装高跨屋面板的计算结…...

    2024/4/25 23:50:26

最新文章

  1. DRF 目录总结+思维导图

    【0】思维导图链接 链接: https://gitmind.cn/app/docs/mcd0bc41 密码: 4350 【一】DRF 基础知识 DRF 基础知识-CSDN博客 【二】CBV 源码解析 Django CBV源码分析-CSDN博客 【三】APIView源码解析 DRF APIView源码分析-CSDN博客 【四】request源码分析 DRF APIView源码分…...

    2024/5/9 16:43:11
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/7 10:36:02
  3. 第十三届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组 题解

    VP比赛链接 : 数据加载中... - 蓝桥云课 1 . 九进制 转 十进制 直接模拟就好了 #include <iostream> using namespace std; int main() {// 请在此输入您的代码int x 22*92*81*9;cout << x << endl ;return 0; } 2 . 顺子日期 枚举出每个情况即可 : …...

    2024/5/6 13:50:47
  4. 整理的微信小程序日历(单选/多选/筛选)

    一、日历横向多选&#xff0c;支持单日、双日、三日、工作日等选择 效果图 wxml文件 <view class"calendar"><view class"section"><view class"title flex-box"><button bindtap"past">上一页</button&…...

    2024/5/9 11:27:28
  5. 416. 分割等和子集问题(动态规划)

    题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义&#xff1a;dp[i][j]表示当背包容量为j&#xff0c;用前i个物品是否正好可以将背包填满&#xff…...

    2024/5/8 19:32:33
  6. 【Java】ExcelWriter自适应宽度工具类(支持中文)

    工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...

    2024/5/9 7:40:42
  7. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

    LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon&#xff0c;直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件&#xff0c;我们讨论Spring负载均衡以Spring Cloud2020之后版本为主&#xff0c;学习Spring Cloud LoadBalance&#xff0c;暂不讨论Ribbon…...

    2024/5/9 2:44:26
  8. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

    一、背景需求分析 在工业产业园、化工园或生产制造园区中&#xff0c;周界防范意义重大&#xff0c;对园区的安全起到重要的作用。常规的安防方式是采用人员巡查&#xff0c;人力投入成本大而且效率低。周界一旦被破坏或入侵&#xff0c;会影响园区人员和资产安全&#xff0c;…...

    2024/5/8 20:33:13
  9. VB.net WebBrowser网页元素抓取分析方法

    在用WebBrowser编程实现网页操作自动化时&#xff0c;常要分析网页Html&#xff0c;例如网页在加载数据时&#xff0c;常会显示“系统处理中&#xff0c;请稍候..”&#xff0c;我们需要在数据加载完成后才能继续下一步操作&#xff0c;如何抓取这个信息的网页html元素变化&…...

    2024/5/9 3:15:57
  10. 【Objective-C】Objective-C汇总

    方法定义 参考&#xff1a;https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

    2024/5/9 5:40:03
  11. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    &#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格…...

    2024/5/9 7:40:40
  12. 【ES6.0】- 扩展运算符(...)

    【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数&#xff0…...

    2024/5/8 20:58:56
  13. 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?

    文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕&#xff0c;各大品牌纷纷晒出优异的成绩单&#xff0c;摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称&#xff0c;在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁&#xff0c;多个平台数据都表现出极度异常…...

    2024/5/9 1:35:21
  14. Go语言常用命令详解(二)

    文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令&#xff0c;这些命令可以帮助您在Go开发中进行编译、测试、运行和…...

    2024/5/9 4:12:16
  15. 用欧拉路径判断图同构推出reverse合法性:1116T4

    http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b&#xff0c;我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边&#xff0c; b b b 同理&#xff0c;则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

    2024/5/9 7:40:35
  16. 【NGINX--1】基础知识

    1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息&#xff0c;并安装一些有助于配置官方 NGINX 软件包仓库的软件包&#xff1a; apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

    2024/5/8 18:06:50
  17. Hive默认分割符、存储格式与数据压缩

    目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限&#xff08;ROW FORMAT&#xff09;配置标准HQL为&#xff1a; ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

    2024/5/9 7:40:34
  18. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

    文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中&#xff0c;传感器和控制器产生大量周…...

    2024/5/9 1:42:21
  19. --max-old-space-size=8192报错

    vue项目运行时&#xff0c;如果经常运行慢&#xff0c;崩溃停止服务&#xff0c;报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中&#xff0c;通过JavaScript使用内存时只能使用部分内存&#xff08;64位系统&…...

    2024/5/9 5:02:59
  20. 基于深度学习的恶意软件检测

    恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞&#xff0c;例如可以被劫持的合法软件&#xff08;例如浏览器或 Web 应用程序插件&#xff09;中的错误。 恶意软件渗透可能会造成灾难性的后果&#xff0c;包括数据被盗、勒索或网…...

    2024/5/9 4:31:45
  21. JS原型对象prototype

    让我简单的为大家介绍一下原型对象prototype吧&#xff01; 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定&#xff0c;每一个构造函数都有一个 prototype 属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象…...

    2024/5/8 12:44:41
  22. C++中只能有一个实例的单例类

    C中只能有一个实例的单例类 前面讨论的 President 类很不错&#xff0c;但存在一个缺陷&#xff1a;无法禁止通过实例化多个对象来创建多名总统&#xff1a; President One, Two, Three; 由于复制构造函数是私有的&#xff0c;其中每个对象都是不可复制的&#xff0c;但您的目…...

    2024/5/8 9:51:44
  23. python django 小程序图书借阅源码

    开发工具&#xff1a; PyCharm&#xff0c;mysql5.7&#xff0c;微信开发者工具 技术说明&#xff1a; python django html 小程序 功能介绍&#xff1a; 用户端&#xff1a; 登录注册&#xff08;含授权登录&#xff09; 首页显示搜索图书&#xff0c;轮播图&#xff0…...

    2024/5/9 6:36:49
  24. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

    C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

    2024/5/9 4:33:29
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57