使用分页作为核心机制来实现虚拟内存,可能会带来较高的性能开销。因为要使用分页,就要将内存地址空间切分成大量固定大小的单元(页),并且需要记录这些单元的地址映射信息。因为这些映射信息一般存储在物理内存中,所以在转换虚拟地址时,分页逻辑上需要一次额外的内存访问。每次指令获取、显式加载或保存,都要额外读一次内存以得到转换信息,这慢得无法接受。因此我们面临如下问题:

关键问题:如何加速地址转换 

如何才能加速虚拟地址转换,尽量避免额外的内存访问?需要什么样的硬件支持?操作系统该如何支持?

想让某些东西更快,操作系统通常需要一些帮助。帮助常常来自操作系统的老朋友:硬件。我们要增加所谓的(由于历史原因[CP78])地址转换旁路缓冲存储器(translation-lookaside buffer,TLB[CG68,C95]),它就是频繁发生的虚拟到物理地址转换的硬件缓存(cache)。因此,更好的名称应该是地址转换缓存(address-translation cache)。对每次内存访问,硬件先检查TLB,看看其中是否有期望的转换映射,如果有,就完成转换(很快),不用访问页表(其中有全部的转换映射)。TLB带来了巨大的性能提升,实际上,因此它使得虚拟内存成为可能[C95]。

19.1 TLB的基本算法

图19.1展示了一个大体框架,说明硬件如何处理虚拟地址转换,假定使用简单的线性页表(linear page table,即页表是一个数组)和硬件管理的TLB(hardware-managed TLB,即硬件承担许多页表访问的责任,下面会有更多解释)。

1    VPN = (VirtualAddress & VPN_MASK) >> SHIFT
2    (Success, TlbEntry) = TLB_Lookup(VPN)
3    if (Success == True)    // TLB Hit
4        if (CanAccess(TlbEntry.ProtectBits) == True)
5            Offset   = VirtualAddress & OFFSET_MASK
6            PhysAddr = (TlbEntry.PFN << SHIFT) | Offset
7            AccessMemory(PhysAddr)
8        else
9            RaiseException(PROTECTION_FAULT)
10   else    // TLB Miss
11       PTEAddr = PTBR + (VPN * sizeof(PTE))
12       PTE = AccessMemory(PTEAddr)
13       if (PTE.Valid == False)
14           RaiseException(SEGMENTATION_FAULT)
15       else if (CanAccess(PTE.ProtectBits) == False)
16           RaiseException(PROTECTION_FAULT)
17       else
18           TLB_Insert(VPN, PTE.PFN, PTE.ProtectBits)
19           RetryInstruction()

图19.1 TLB控制流算法

硬件算法的大体流程如下:首先从虚拟地址中提取页号(VPN)(见图19.1第1行),然后检查TLB是否有该VPN的转换映射(第2行)。如果有,我们有了TLB命中(TLB hit),这意味着TLB有该页的转换映射。成功!接下来我们就可以从相关的TLB项中取出页帧号(PFN),与原来虚拟地址中的偏移量组合形成期望的物理地址(PA),并访问内存(第5~7行),假定保护检查没有失败(第4行)。

如果CPU没有在TLB中找到转换映射(TLB未命中),我们有一些工作要做。在本例中,硬件访问页表来寻找转换映射(第11~12行),并用该转换映射更新TLB(第18行),假设该虚拟地址有效,而且我们有相关的访问权限(第13、15行)。上述系列操作开销较大,主要是因为访问页表需要额外的内存引用(第12行)。最后,当TLB更新成功后,系统会重新尝试该指令,这时TLB中有了这个转换映射,内存引用得到很快处理。

TLB和其他缓存相似,前提是在一般情况下,转换映射会在缓存中(即命中)。如果是这样,只增加了很少的开销,因为TLB处理器核心附近,设计的访问速度很快。如果TLB未命中,就会带来很大的分页开销。必须访问页表来查找转换映射,导致一次额外的内存引用(或者更多,如果页表更复杂)。如果这经常发生,程序的运行就会显著变慢。相对于大多数CPU指令,内存访问开销很大,TLB未命中导致更多内存访问。因此,我们希望尽可能避免TLB未命中。

19.2 示例:访问数组

为了弄清楚TLB的操作,我们来看一个简单虚拟地址追踪,看看TLB如何提高它的性能。在本例中,假设有一个由10个4字节整型数组成的数组,起始虚地址是100。进一步假定,有一个8位的小虚地址空间,页大小为16B。我们可以把虚地址划分为4位的VPN(有16个虚拟内存页)和4位的偏移量(每个页中有16个字节)。

 

图19.2 示例:小地址空间中的一个数组

图19.2展示了该数组的布局,在系统的16个16字节的页上。如你所见,数组的第一项(a[0])开始于(VPN=06,offset=04),只有3个4字节整型数存放在该页。数组在下一页(VPN=07)继续,其中有接下来4项(a[3] … a[6])。10个元素的数组的最后3项(a[7] … a[9])位于地址空间的下一页(VPN=08)。

现在考虑一个简单的循环,访问数组中的每个元素,类似下面的C程序:

int sum = 0;
for (i = 0; i < 10; i++) { sum += a[i];
}

简单起见,我们假装循环产生的内存访问只是针对数组(忽略变量isum,以及指令本身)。当访问第一个数组元素(a[0])时,CPU会看到载入虚存地址100。硬件从中提取VPN(VPN=06),然后用它来检查TLB,寻找有效的转换映射。假设这里是程序第一次访问该数组,结果是TLB未命中。

接下来访问a[1],这里有好消息:TLB命中!因为数组的第二个元素在第一个元素之后,它们在同一页。因为我们之前访问数组的第一个元素时,已经访问了这一页,所以TLB中缓存了该页的转换映射。因此成功命中。访问a[2]同样成功(再次命中),因为它和a[0]、a[1]位于同一页。

遗憾的是,当程序访问a[3]时,会导致TLB未命中。但同样,接下来几项(a[4] … a[6])都会命中TLB,因为它们位于内存中的同一页。

最后,访问a[7]会导致最后一次TLB未命中。系统会再次查找页表,弄清楚这个虚拟页在物理内存中的位置,并相应地更新TLB。最后两次访问(a[8]、a[9])受益于这次TLB更新,当硬件在TLB中查找它们的转换映射时,两次都命中。

我们来总结一下这10次数组访问操作中TLB的行为表现:未命中、命中、命中、未命中、命中、命中、命中、未命中、命中、命中。命中的次数除以总的访问次数,得到TLB命中率(hit rate)为70%。尽管这不是很高(实际上,我们希望命中率接近100%),但也不是零,是零我们就要奇怪了。即使这是程序首次访问该数组,但得益于空间局部性(spatial locality),TLB还是提高了性能。数组的元素被紧密存放在几页中(即它们在空间中紧密相邻),因此只有对页中第一个元素的访问才会导致TLB未命中。

也要注意页大小对本例结果的影响。如果页大小变大一倍(32字节,而不是16),数组访问遇到的未命中更少。典型页的大小一般为4KB,这种情况下,密集的、基于数组的访问会实现极好的TLB性能,每页的访问只会遇到一次未命中。

关于TLB性能还有最后一点:如果在这次循环后不久,该程序再次访问该数组,我们会看到更好的结果,假设TLB足够大,能缓存所需的转换映射:命中、命中、命中、命中、命中、命中、命中、命中、命中、命中。在这种情况下,由于时间局部性(temporal locality),即在短时间内对内存项再次引用,所以TLB的命中率会很高。类似其他缓存,TLB的成功依赖于空间和时间局部性。如果某个程序表现出这样的局部性(许多程序是这样),TLB的命中率可能很高。

提示:尽可能利用缓存 

缓存是计算机系统中最基本的性能改进技术之一,一次又一次地用于让“常见的情况更快”[HP06]。硬件缓存背后的思想是利用指令和数据引用的局部性(locality)。通常有两种局部性:时间局部性(temporal locality)和空间局部性(spatial locality)。时间局部性是指,最近访问过的指令或数据项可能很快会再次访问。想想循环中的循环变量或指令,它们被多次反复访问。空间局部性是指,当程序访问内存地址x时,可能很快会访问邻近x的内存。想想遍历某种数组,访问一个接一个的元素。当然,这些性质取决于程序的特点,并不是绝对的定律,而更像是一种经验法则。

硬件缓存,无论是指令、数据还是地址转换(如TLB),都利用了局部性,在小而快的芯片内存储器中保存一份内存副本。处理器可以先检查缓存中是否存在就近的副本,而不是必须访问(缓慢的)内存来满足请求。如果存在,处理器就可以很快地访问它(例如在几个CPU时钟内),避免花很多时间来访问内存(好多纳秒)。

你可能会疑惑:既然像TLB这样的缓存这么好,为什么不做更大的缓存,装下所有的数据?可惜的是,这里我们遇到了更基本的定律,就像物理定律那样。如果想要快速地缓存,它就必须小,因为光速和其他物理限制会起作用。大的缓存注定慢,因此无法实现目的。所以,我们只能用小而快的缓存。剩下的问题就是如何利用好缓存来提升性能。

19.3 谁来处理TLB未命中

有一个问题我们必须回答:谁来处理TLB未命中?可能有两个答案:硬件或软件(操作系统)。以前的硬件有复杂的指令集(有时称为复杂指令集计算机,Complex-Instruction Set Computer,CISC),造硬件的人不太相信那些搞操作系统的人。因此,硬件全权处理TLB未命中。为了做到这一点,硬件必须知道页表在内存中的确切位置(通过页表基址寄存器,page-table base register,在图19.1的第11行使用),以及页表的确切格式。发生未命中时,硬件会“遍历”页表,找到正确的页表项,取出想要的转换映射,用它更新TLB,并重试该指令。这种“旧”体系结构有硬件管理的TLB,一个例子是x86架构,它采用固定的多级页表(multi-level page table,详见第20章),当前页表由CR3寄存器指出[I09]。

更现代的体系结构(例如,MIPS R10k[H93]、Sun公司的SPARC v9[WG00],都是精简指令集计算机,Reduced-Instruction Set Computer,RISC),有所谓的软件管理TLB(software- managed TLB)。发生TLB未命中时,硬件系统会抛出一个异常(见图19.3第11行),这会暂停当前的指令流,将特权级提升至内核模式,跳转至陷阱处理程序(trap handler)。接下来你可能已经猜到了,这个陷阱处理程序是操作系统的一段代码,用于处理TLB未命中。这段代码在运行时,会查找页表中的转换映射,然后用特别的“特权”指令更新TLB,并从陷阱返回。此时,硬件会重试该指令(导致TLB命中)。

1    VPN = (VirtualAddress & VPN_MASK) >> SHIFT
2    (Success, TlbEntry) = TLB_Lookup(VPN)
3    if (Success == True)    // TLB Hit
4        if (CanAccess(TlbEntry.ProtectBits) == True)
5            Offset    = VirtualAddress & OFFSET_MASK
6            PhysAddr = (TlbEntry.PFN << SHIFT) | Offset
7            Register = AccessMemory(PhysAddr)
8        else
9            RaiseException(PROTECTION_FAULT)
10   else                    // TLB Miss
11       RaiseException(TLB_MISS)

图19.3 TLB控制流算法(操作系统处理)

接下来讨论几个重要的细节。首先,这里的从陷阱返回指令稍稍不同于之前提到的服务于系统调用的从陷阱返回。在后一种情况下,从陷阱返回应该继续执行陷入操作系统之后那条指令,就像从函数调用返回后,会继续执行此次调用之后的语句。在前一种情况下,在从TLB未命中的陷阱返回后,硬件必须从导致陷阱的指令继续执行。这次重试因此导致该指令再次执行,但这次会命中TLB。因此,根据陷阱或异常的原因,系统在陷入内核时必须保存不同的程序计数器,以便将来能够正确地继续执行。

第二,在运行TLB未命中处理代码时,操作系统需要格外小心避免引起TLB未命中的无限递归。有很多解决方案,例如,可以把TLB未命中陷阱处理程序直接放到物理内存中 [它们没有映射过(unmapped),不用经过地址转换]。或者在TLB中保留一些项,记录永久有效的地址转换,并将其中一些永久地址转换槽块留给处理代码本身,这些被监听的(wired)地址转换总是会命中TLB。

软件管理的方法,主要优势是灵活性:操作系统可以用任意数据结构来实现页表,不需要改变硬件。另一个优势是简单性。从TLB控制流中可以看出(见图19.3的第11行,对比图19.1的第11~19行),硬件不需要对未命中做太多工作,它抛出异常,操作系统的未命中处理程序会负责剩下的工作。

补充:RISC与CISC 

在20世纪80年代,计算机体系结构领域曾发生过一场激烈的讨论。一方是CISC阵营,即复杂指令集计算(Complex Instruction Set Computing),另一方是RISC,即精简指令集计算(Reduced Instruction Set Computing)[PS81]。RISC 阵营以Berkeley的David Patterson 和 Stanford 的 John Hennessy为代表(他们写了一些非常著名的书[HP06]),尽管后来John Cocke 凭借他在RISC上的早期工作 [CM00]获得了图灵奖。

CISC 指令集倾向于拥有许多指令,每条指令比较强大。例如,你可能看到一个字符串拷贝,它接受两个指针和一个长度,将一些字节从源拷贝到目标。CISC背后的思想是,指令应该是高级原语,这让汇编语言本身更易于使用,代码更紧凑。

RISC 指令集恰恰相反。RISC 背后的关键观点是,指令集实际上是编译器的最终目标,所有编译器实际上需要少量简单的原语,可以用于生成高性能的代码。因此,RISC倡导者们主张,尽可能从硬件中拿掉不必要的东西(尤其是微代码),让剩下的东西简单、统一、快速。

早期的 RISC 芯片产生了巨大的影响,因为它们明显更快[BC91]。人们写了很多论文,一些相关的公司相继成立(例如 MIPS 和 Sun 公司)。但随着时间的推移,像 Intel 这样的CISC 芯片制造商采纳了许多 RISC 芯片的优点,例如添加了早期流水线阶段,将复杂的指令转换为一些微指令,于是它们可以像RISC的方式运行。这些创新,加上每个芯片中晶体管数量的增长,让CISC保持了竞争力。争论最后平息了,现在两种类型的处理器都可以跑得很快。

19.4 TLB的内容

我们来详细看一下硬件TLB中的内容。典型的TLB有32项、64项或128项,并且是全相联的(fully associative)。基本上,这就意味着一条地址映射可能存在TLB中的任意位置,硬件会并行地查找TLB,找到期望的转换映射。一条TLB项内容可能像下面这样:

  VPN | PFN | 其他位

注意,VPN和PFN同时存在于TLB中,因为一条地址映射可能出现在任意位置(用硬件的术语,TLB被称为全相联的(fully-associative)缓存)。硬件并行地查找这些项,看看是否有匹配。

补充:TLB的有效位!=页表的有效位 

常见的错误是混淆TLB的有效位和页表的有效位。在页表中,如果一个页表项(PTE)被标记为无效,就意味着该页并没有被进程申请使用,正常运行的程序不应该访问该地址。当程序试图访问这样的页时,就会陷入操作系统,操作系统会杀掉该进程。

TLB的有效位不同,只是指出TLB项是不是有效的地址映射。例如,系统启动时,所有的TLB项通常被初始化为无效状态,因为还没有地址转换映射被缓存在这里。一旦启用虚拟内存,当程序开始运行,访问自己的虚拟地址,TLB就会慢慢地被填满,因此有效的项很快会充满TLB。

TLB有效位在系统上下文切换时起到了很重要的作用,后面我们会进一步讨论。通过将所有TLB项设置为无效,系统可以确保将要运行的进程不会错误地使用前一个进程的虚拟到物理地址转换映射。

更有趣的是“其他位”。例如,TLB通常有一个有效(valid)位,用来标识该项是不是有效地转换映射。通常还有一些保护(protection)位,用来标识该页是否有访问权限。例如,代码页被标识为可读和可执行,而堆的页被标识为可读和可写。还有其他一些位,包括地址空间标识符(address-space identifier)、脏位(dirty bit)等。下面会介绍更多信息。

19.5 上下文切换时对TLB的处理

有了TLB,在进程间切换时(因此有地址空间切换),会面临一些新问题。具体来说,TLB中包含的虚拟到物理的地址映射只对当前进程有效,对其他进程是没有意义的。所以在发生进程切换时,硬件或操作系统(或二者)必须注意确保即将运行的进程不要误读了之前进程的地址映射。

为了更好地理解这种情况,我们来看一个例子。当一个进程(P1)正在运行时,假设TLB缓存了对它有效的地址映射,即来自P1的页表。对这个例子,假设P1的10号虚拟页映射到了100号物理帧。

在这个例子中,假设还有一个进程(P2),操作系统不久后决定进行一次上下文切换,运行P2。这里假定P2的10号虚拟页映射到170号物理帧。如果这两个进程的地址映射都在TLB中,TLB的内容如表19.1所示。

 

在上面的TLB中,很明显有一个问题:VPN 10被转换成了 PFN 100(P1)和PFN 170(P2),但硬件分不清哪个项属于哪个进程。所以我们还需要做一些工作,让TLB正确而高效地支持跨多进程的虚拟化。因此,关键问题是:

关键问题:进程切换时如何管理TLB的内容 

如果发生进程间上下文切换,上一个进程在TLB中的地址映射对于即将运行的进程是无意义的。硬件或操作系统应该做些什么来解决这个问题呢?

这个问题有一些可能的解决方案。一种方法是在上下文切换时,简单地清空(flush)TLB,这样在新进程运行前TLB就变成了空的。如果是软件管理TLB的系统,可以在发生上下文切换时,通过一条显式(特权)指令来完成。如果是硬件管理TLB,则可以在页表基址寄存器内容发生变化时清空TLB(注意,在上下文切换时,操作系统必须改变页表基址寄存器(PTBR)的值)。不论哪种情况,清空操作都是把全部有效位(valid)置为0,本质上清空了TLB。

上下文切换的时候清空TLB,这是一个可行的解决方案,进程不会再读到错误的地址映射。但是,有一定开销:每次进程运行,当它访问数据和代码页时,都会触发TLB未命中。如果操作系统频繁地切换进程,这种开销会很高。

为了减少这种开销,一些系统增加了硬件支持,实现跨上下文切换的TLB共享。比如有的系统在TLB中添加了一个地址空间标识符(Address Space Identifier,ASID)。可以把ASID看作是进程标识符(Process Identifier,PID),但通常比PID位数少(PID一般32位,ASID一般是8位)。

如果仍以上面的TLB为例,加上 ASID,很清楚不同进程可以共享TLB了:只要ASID字段来区分原来无法区分的地址映射。表19.2展示了添加ASID字段后的TLB。

表19.2 添加ASID字段后的TLB

 

因此,有了地址空间标识符,TLB可以同时缓存不同进程的地址空间映射,没有任何冲突。当然,硬件也需要知道当前是哪个进程正在运行,以便进行地址转换,因此操作系统在上下文切换时,必须将某个特权寄存器设置为当前进程的ASID。

补充一下,你可能想到了另一种情况,TLB中某两项非常相似。在表19.3中,属于两个不同进程的两项,将两个不同的VPN指向了相同的物理页。

 

如果两个进程共享同一物理页(例如代码段的页),就可能出现这种情况。在上面的例子中,进程P1和进程P2共享101号物理页,但是P1将自己的10号虚拟页映射到该物理页,而P2将自己的50号虚拟页映射到该物理页。共享代码页(以二进制或共享库的方式)是有用的,因为它减少了物理页的使用,从而减少了内存开销。

19.6 TLB替换策略

TLB和其他缓存一样,还有一个问题要考虑,即缓存替换(cache replacement)。具体来说,向TLB中插入新项时,会替换(replace)一个旧项,这样问题就来了:应该替换那一个?

关键问题:如何设计TLB替换策略 

在向TLB添加新项时,应该替换哪个旧项?目标当然是减小TLB未命中率(或提高命中率),从而改进性能。

在讨论页换出到磁盘的问题时,我们将详细研究这样的策略。这里我们先简单指出几个典型的策略。一种常见的策略是替换最近最少使用(least-recently-used,LRU)的项。LRU尝试利用内存引用流中的局部性,假定最近没有用过的项,可能是好的换出候选项。另一种典型策略就是随机(random)策略,即随机选择一项换出去。这种策略很简单,并且可以避免一种极端情况。例如,一个程序循环访问n+1个页,但TLB大小只能存放n个页。这时之前看似“合理”的LRU策略就会表现得不可理喻,因为每次访问内存都会触发TLB未命中,而随机策略在这种情况下就好很多。

19.7 实际系统的TLB表项

最后,我们简单看一下真实的TLB。这个例子来自MIPS R4000[H93],它是一种现代的系统,采用软件管理TLB。图19.4展示了稍微简化的MIPS TLB项。

 

图19.4 MIPS的TLB项

MIPS R4000支持32位的地址空间,页大小为4KB。所以在典型的虚拟地址中,预期会看到20位的VPN和12位的偏移量。但是,你可以在TLB中看到,只有19位的VPN。事实上,用户地址只占地址空间的一半(剩下的留给内核),所以只需要19位的 VPN。VPN转换成最大24位的物理帧号(PFN),因此可以支持最多有64GB物理内存(224个4KB内存页)的系统。

MIPS TLB还有一些有趣的标识位。比如全局位(Global,G),用来指示这个页是不是所有进程全局共享的。因此,如果全局位置为1,就会忽略ASID。我们也看到了8位的ASID,操作系统用它来区分进程空间(像上面介绍的一样)。这里有一个问题:如果正在运行的进程数超过256(28)个怎么办?最后,我们看到3个一致性位(Coherence,C),决定硬件如何缓存该页(其中一位超出了本书的范围);脏位(dirty),表示该页是否被写入新数据(后面会介绍用法);有效位(valid),告诉硬件该项的地址映射是否有效。还有没在图19.4中展示的页掩码(page mask)字段,用来支持不同的页大小。后面会介绍,为什么更大的页可能有用。最后,64位中有一些未使用(图19.4中灰色部分)。

MIPS的TLB通常有32项或64项,大多数提供给用户进程使用,也有一小部分留给操作系统使用。操作系统可以设置一个被监听的寄存器,告诉硬件需要为自己预留多少TLB槽。这些保留的转换映射,被操作系统用于关键时候它要使用的代码和数据,在这些时候,TLB未命中可能会导致问题(例如,在TLB未命中处理程序中)。

由于MIPS的TLB是软件管理的,所以系统需要提供一些更新TLB的指令。MIPS提供了4个这样的指令:TLBP,用来查找指定的转换映射是否在TLB中;TLBR,用来将TLB中的内容读取到指定寄存器中;TLBWI,用来替换指定的TLB项;TLBWR,用来随机替换一个TLB项。操作系统可以用这些指令管理TLB的内容。当然这些指令是特权指令,这很关键。如果用户程序可以任意修改TLB的内容,你可以想象一下会发生什么可怕的事情。

提示:RAM不总是RAM(Culler定律) 

随机存取存储器(Random-Access Memory,RAM)暗示你访问RAM的任意部分都一样快。虽然一般这样想RAM没错,但因为TLB这样的硬件/操作系统功能,访问某些内存页的开销较大,尤其是没有被TLB缓存的页。因此,最好记住这个实现的窍门:RAM不总是RAM。有时候随机访问地址空间,尤其是TLB没有缓存的页,可能导致严重的性能损失。因为我的一位导师David Culler过去常常指出TLB是许多性能问题的源头,所以我们以他来命名这个定律:Culler 定律(Culler’s Law)。

本文摘自《操作系统导论》

本书围绕虚拟化、并发和持久性这三个主要概念展开,介绍了所有现代系统的主要组件(包括调度、虚拟内存管理、磁盘和I/O子系统、文件系统)。全书共50章,分为3个部分,分别讲述虚拟化、并发和持久性的相关内容。作者以对话形式引入所介绍的主题概念,行文诙谐幽默却又鞭辟入里,力求帮助读者理解操作系统中虚拟化、并发和持久性的原理。 
本书内容全面,并给出了真实可运行的代码(而非伪代码),还提供了相应的练习,很适合高等院校相关专业的教师开展教学和高校学生进行自学。 


本书具有以下特色: 
● 主题突出,紧紧围绕操作系统的三大主题元素——虚拟化、并发和持久性。 
● 以对话的方式引入背景,提出问题,进而阐释原理,启发动手实践。 
● 包含众多“补充”和“提示”,拓展读者知识面,增加趣味性。 
● 使用真实代码而不是伪代码,让读者更加深入透彻地了解操作系统。 
● 提供作业、模拟和项目等众多学习方式,鼓励读者动手实践。 
● 为教师提供教学辅助资源。

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

相关文章

  1. 2020年金九银十大厂高频Java面试题合集(含答案),让你得面试不再是如履薄冰

    java互联网架构 2020-04-18 20:08:04或许这份面试题还不足以囊括所有 Java 问题,但有了它,我相信你一定不会“败”的很惨,因为有了它,足以应对目前市面上绝大部分的 Java 面试了,因为这篇文章不论是从深度还是广度上来讲,都已经囊括了非常多的知识点了。凡事预则立,不预…...

    2024/4/27 11:28:52
  2. <一日一学之创建实时更新yum源>

    需要环境 : 1.一台linux服务器(通外网) 2.rsync 命令 yum -y install rsync 3.nginx 清华源: https://mirrors.tuna.tsinghua.edu.cn/epel/7/x86_64/ 本地路径: /var/www/html/centos nginx配置文件 server { listen 80; server_name localhost; location / { a…...

    2024/4/23 9:27:56
  3. Mysql8.+压缩包安装以及注意事项

    一、Mysql下载压缩包下载:https://dev.mysql.com/downloads/mysql/MSI下载:https://dev.mysql.com/downloads/windows/installer/8.0.html个人推荐压缩安装,Msi安装如果出现错误,容易安装失败。二、Mysql安装2.1、将文件解压到合适的目录下,个人比较喜欢放在D盘,文件夹路…...

    2024/4/27 7:22:24
  4. Android程序员现状:没有架构师的命,却得了架构师的病!

    Android开发的现状貌似已经是一个老生常谈的问题了。但今天不想写Android开发的现状,什么Android前景如何、Android凉凉之类被别人写烂了的话题。 今天我们来聊聊我们自己,我们Android程序员的现状。 各位朋友也都是从标题看起点进来的。确实,标题很扎心,也很真实。架构师是…...

    2024/4/13 14:25:59
  5. 仅靠七个步骤,4面通过拿offer,终“跳进”字节跳动

    前言5年前,BAT冲到了风口浪尖,美国上市的阿里成为中国体量最大的互联网公司,腾讯借助微信成为移动互联网的霸主,外企开始撤离中国,国企的光环也慢慢褪去。到了近年,应届毕业生心中最炙手可热的公司换成了TMD及各路独角兽公司,这些公司代表着科技最前沿,能够许诺高薪和美…...

    2024/4/13 11:44:28
  6. 扫盲:Java 后端开发常用的 10 种第三方服务

    严格意义上说,所有软件的第三方服务都可以自己开发,不过从零到一是需要时间和金钱成本的。就像我们研发芯片,投入了巨大的成本,但仍然没有取得理想的成绩,有些事情并不是一朝一夕,投机取巧就能完成的。请肆无忌惮地点赞吧,微信搜索【沉默王二】关注这个在九朝古都洛阳苟…...

    2024/4/23 21:40:34
  7. LiteOS间歇计算技术:IOT终端真正感受“电量自由”

    摘要:LiteOS间歇计算为什么能使物联网终端实现长续航?物联网设备、场景复杂多样,小到智能穿戴的耳机,大到大型基建设备,更有我们陌生而又熟悉场景,例如深海探测、森林监控、野生动物跟踪等等能量采集场景。能量采集场景都在户外,甚至可以说是无人区域,当设备放置(部署…...

    2024/4/13 15:41:50
  8. redis分布式锁案例

    1.缓存在高并发和安全压力下的一些问题缓存击穿:是某一个热点key在高并发访问的情况下,突然失效,导致大量的并发打进mysql数据库的情况缓存穿透: 是利用redis和mysql的机制(redis缓存一旦不存在,就访问mysql),直接绕过缓存访问mysql,而制造的db请求压力一般在代码中防止该…...

    2024/5/4 0:44:39
  9. Tomcat启动乱码问题

    解决tomcat启动乱码问题 tomcat/conf/logging.properties 下修改 java.util.logging.ConsoleHandler.encoding = GBK 默认应该是UTF-8,把UTF-8改成GBK就可以了 乱码问题解决...

    2024/4/24 20:50:36
  10. 刘作虎会是OPPO、一加和realme们的领路人吗?

    关于刘作虎回归OPPO的传闻终于落定。 OPPO官方日前正式对“刘作虎回归OPPO”传闻进行回应,称:刘作虎确已回归,新职务是欧加控股的高级副总裁,全面负责欧加旗下产品规划与体验。与此同时,刘作虎作为一加创始人和CEO的身份,并不改变。 01 欧加控股高级副总裁刘作虎 在任职欧…...

    2024/4/22 5:18:56
  11. 娜帕蒂卡:后疫情时代“直播带货”助力家纺新零售经济持续发展

    对于整个行业来说,2020年注定是不平凡的一年,百年变局深化,新冠疫情蔓延,世界经济发展承受着前所未有的压力。受疫情的影响,今年整个大家居、家纺行业展会都有延期,实属不易。“同其他行业一样,在过去的半年时间里,我国家纺行业受疫情的影响,内外销都有较大幅度下降,…...

    2024/4/20 20:28:12
  12. 搭档之家:58同城天价通厕所 4800一次!!!网友:骗你不商量 怕你不上当

    搭档之家:58同城天价通厕所 4800一次!!!网友:骗你不商量 怕你不上当以下信息由搭档之家收集整理自网络 近日,王女士(化名)向南都“记者帮”反映,其在58同城 “到家精选”选购上门疏通马桶服务,公司工作人员在电话介绍只需80-100元即可,但师傅上门后未经王女士同意便…...

    2024/4/21 14:20:06
  13. Bitcoin SV首届中文开发者大会成功举办,展现区块链技术新面貌,促进生态持续繁荣

    活动时间:2020年8月29日-8月30日 活动主办方:比特币协会、nChain 活动合作方:CSDN2020年8月29日至30日,Bitcoin SV首届中文开发者大会成功举办。本次大会共有十位来自中国的区块链技术社区的领军人物会进行精彩的演讲及教学演示,旨在教育有兴趣在Bitcoin SV(BSV)区块链上…...

    2024/4/20 19:58:15
  14. anyRTC 4.0 以心铸造,以梦相承

    五年磨一剑,今天它来了! 随着疫情得到控制,经济的复苏,互联网的发展也到了众人瞩目的成熟期。 anyRTC正式迎来全新4.0版本,完成了它命中注定的蜕变! [ 懒人目录 ] 品牌升级 RTC SDK升级 RTM 实时消息开放体验 官网客户端升级 01 **品牌升级**Brand Upgrade 直击灵魂的体感…...

    2024/5/4 1:25:48
  15. org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML 错误问题

    今天看视频敲代码传智播客黑马JavaEE49期全套视频教程13-Mybatis第二天的动态代理 (包扫描)遇到问题。因为我是用maven和idea敲的 ,所以报错了org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource…...

    2024/4/27 19:38:21
  16. Qt程序退出QThread: Destroyed while thread is still running问题

    Qt程序退出QThread: Destroyed while thread is still running问题解决方法: 在主线程中使用new Qthread在堆上创建,即可解决。...

    2024/4/28 12:06:25
  17. 【gitlab-runner】gitlab-runner安装注册到https的gitlab

    gitlab是一个代码托管工具,开源。gitrunner是一个持续集成工具(CI CD),只要gitlab代码有提交,gitlab-runner就会自动部署。很方便。gitlab-runner安装过程记录centos7 安装下载安装包sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazo…...

    2024/4/26 0:26:19
  18. php 计算二维数组中相同项(key)的和

    $ar = array(0=> array(d => 4,),1=> array(d => 3,echo array_sum(array_map(create_function($val, return $val["d"];), $ar)); ?>```...

    2024/4/25 6:43:47
  19. 用哲学指导编码

    作为一个程序员,应该学哲学、讲哲学、用哲学。...

    2024/4/24 18:30:41
  20. pytest—在terminal中运行pytest报错:E ModuleNotFoundError: No module named

    我的是Windows,linux的和Windows的解决办法有些不一样,但也是大同小异,需要改一下环境变量 这是我的文件目录 TestCase是执行测试用例的在terminal中运行pytest报错如果是pycharm的错误或者是导入的错误,不可能一个能运行成功一个运行错误。所以我猜是pycharm的IDE的运行机…...

    2024/4/13 0:07:10

最新文章

  1. Android应用程序构成

    binder Android应用程序是由Activity、 Service、 Broadcast Receiver和 Content Provider四种类型的组件构成的&#xff0c; 它们有可能运行在同一个进程中&#xff0c; 也有可能运行在不同的进程中。 此外&#xff0c; 各种系统组件也运行在独立的进程中&#xff0c; 例如&a…...

    2024/5/4 2:56:17
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/3/20 10:50:27
  3. 随行付优化外卡收单,助力支付便利化

    解决老年人和境外游客在支付过程中遇到的问题和障碍&#xff0c;正逐渐成为整个支付行业的焦点关注词汇。 在有关提高支付服务便利度的意见发布后&#xff0c;有关收单行业的好消息不断涌现&#xff1a;中国银联于3月15日宣布投入30亿元用于升级基础设施&#xff0c;促进支付便…...

    2024/4/30 7:55:30
  4. audio_video_img图片音视频异步可视化加载

    最近在做即时消息&#xff0c;消息类型除了文字还有音频、视频、图片展示&#xff0c;如果消息很多&#xff0c;在切换聊天框时&#xff0c;会有明显卡顿&#xff0c;后续做了懒加载&#xff0c;方案是只加载用户能看到的资源&#xff0c;看不到的先不加载&#xff1b; LazyAud…...

    2024/5/2 22:59:28
  5. promise.all方式使用

    romise.all( ).then( ) 处理多个异步任务&#xff0c;且所有的异步任务都得到结果时的情况。 比如&#xff1a;用户点击按钮&#xff0c;会弹出一个弹出对话框&#xff0c;对话框中有两部分数据呈现&#xff0c;这两部分数据分别是不同的后端接口获取的数据。 弹框弹出后的初…...

    2024/5/2 21:09:45
  6. 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/3 11:50:27
  7. 【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/2 16:04:58
  8. 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/2 23:55:17
  9. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

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

    2024/5/3 16:00:51
  10. VB.net WebBrowser网页元素抓取分析方法

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

    2024/5/3 11:10:49
  11. 【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/3 21:22:01
  12. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

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

    2024/5/3 23:17:01
  13. 【ES6.0】- 扩展运算符(...)

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

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

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

    2024/5/3 13:26:06
  15. Go语言常用命令详解(二)

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

    2024/5/3 1:55:15
  16. 用欧拉路径判断图同构推出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/4 2:14:16
  17. 【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/3 16:23:03
  18. 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/3 1:55:09
  19. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

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

    2024/5/2 8:37:00
  20. --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/3 14:57:24
  21. 基于深度学习的恶意软件检测

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

    2024/5/2 9:47:25
  22. JS原型对象prototype

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

    2024/5/4 2:00:16
  23. C++中只能有一个实例的单例类

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

    2024/5/3 22:03:11
  24. python django 小程序图书借阅源码

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

    2024/5/3 7:43:42
  25. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

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

    2024/5/3 1:54:59
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

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

    2022/11/19 21:17:18
  27. 错误使用 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
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

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

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

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

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

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

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

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

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

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

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

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

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,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
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    2022/11/19 21:16:58
  45. 如何在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