高级对弈程序如Crafty(使用C语言编写)使用了特殊的数据结构
原文地址:http://www.onjava.com/pub/a/onjava/2005/02/02/bitsets.html
中文地址:http://www.matrix.org.cn/resource/article/43/43978_Java_Bitfields_Bitboards.html
关键词: Java Bitfields Bitboards
快速小测试:如何重写下面的语句?要求不使用条件判断语句交换两个常量的值。
if (x == a) x= b;
else x= a;
答案:
x= a ^ b ^ x;
//此处变量x等于a或者等于b
字符^是逻辑异或XOR运算符。上面代码为什么能工作呢?使用XOR运算符,一个变量执行2次异或运算与另一个变量,总是返回变量自身。
虽然Java位操作的魔术不是很普及,但是深入研究此技术有助于改善程序性能。在作者的机器配置下进行基准测试,重写版本需5.2秒,使用逻辑判断的版本需5.6秒。(测试代码参见资源部分)。减少使用判断语句通常可以提高在现代多管道处理器上的程序性能。
对于Java程序员来说,特别有益的是一些用来处理所谓bitsets位集的技巧。 Java语言中的原始类型int和long也可被视为32位或64位的位集合。可以组合这些简单的结构来表示大型数据结构,比如数组。另外,还有一些特定的运算(bit-parallel 并行位运算),可以有效的将多个不同的运算压缩为一个运算。使用以bit为单位的细粒度数据,而不是以integer整数为运算单位,我们会发现——对于integer整数来说有时进行的仅仅一步运算,如果使用bit位作为运算单位实际上可能进行了许多操作。可以认为Java语言中的位并行运算是软件多通路技术的一种应用。
高级对弈程序如Crafty(使用C语言编写)使用了特殊的数据结构——bitboard位图棋盘来表示棋子的位置,这样比使用数组的速度快很多。与C程序员相比,Java程序员更不应该使用数组。与C语言中数组的高效实现相比,Java语言中的数组实现(虽然提供了边界检查以及GC机制等额外功能)效率低下。为比较使用整数方案以及使用数组方案的性能,在作者机器(Windows XP, AMD Athlon, 热部署Java虚拟机?)上进行的简单测试显示使用数组方案的运行时间是使用整数方案的160%,并且此处未考虑无用单元回收(garbage collection)对性能的影响。在某些情况下,可以使用整数位集替代数组。
下面会探讨一下从汇编语言时代就存在的古董技巧,同时特别关注这些技巧在位集上的应用。Java作为可移植语言本身对位运算提供了良好的支持。进一步,Java Tiger版本的API中又添加了一些用于位处理的方法。
典型Java环境下的位优化
Java程序运行在机器和操作系统之上,但是与机器和操作系统中充斥的位运算不同,Java程序基本上不包含大量的位运算。虽然现代CPU提供了特殊的位操作指令,不过在Java语言中无法执行这些特殊指令。JVM仅提供了有符号移位、无符号移位、位异或(bitewise XOR)、位或(bitwise OR)、位并(bitwise AND)以及位否(bitwise NOT)等位运算。有意思的是,并不仅仅是Java没有提供额外的位运算,很多汇编程序员编写操作CPU的程序时,也会发现缺少同样的位运算指令。两类程序员在位运算上的境遇其实一样。汇编程序员不得不通过软件模拟来实现这些指令,同时尽可能的保证效率。 Tiger版本的Java中许多方法也是通过使用纯java代码来模拟实现这些指令的。
进行性能微调操作的C程序员可能会审查实际产生的汇编代码、参考目标CPU的优化器手册、统计代码执行的指令周期数目等方式来改善程序性能。与之相对,在Java程序里进行这样的底层优化的一个实际问题是无法确定优化的效果。Sun公司的Java虚拟机规范(JVM spec)未给出某特定操作执行的相对速度。可以将自己认为执行速度快的代码一部分再一部分的在Java虚拟机中执行,结果只能令人震惊——速度没有提高甚至优化部分可能降低原来程序性能。 Java虚拟机可能会搅乱破坏你做出的优化,也可能在内部对一般的代码优化。 在任何情况下,通过JVM实现优化, 即使编译过后的程序提供这样的支持,相应得优化也需要进行基准测试。
标准的查看字节码的工具是JDK中包含的javap命令。Eclipse的使用者也可以利用由Andrei Loskutov开发的字节码查看插件。 Sun的网站上提供了JVM设计和指令集合的参考书的在线版本。注意,每个Java虚拟机内包含两种类型的内存. 一种是栈(stack),用来存储局部原始类型变量和表达式;另一种是堆(heap),用来存储对象和数组。堆内存储的对象会被无用单元回收机制处理,而栈具有固定大小的内存块。虽然大多数程序仅仅使用了栈空间的很小部分,JVM规范声明用户可以认为栈至少有64k大小。请注意JVM可以被认为是一个32位或者64位的机器,所以字节byte以及位数少的原始类型的运算不大可能比整数int的运算更快。
2的补数
Java语言中,所有的整数原始类型都是有符号数字,使用2的补数形式表示。要操作这些原始类型,我们需要理解一些相关理论。
2的补数分成两种:非负补数和负补数。补数的最高位,也是符号位,在一般系统上在最左边。非负补数的此位是0。可以简单的从左到右读取这些普通的非负补数,将他们转换到任意进制的整数。如果符号位设置为1,此数就是负数,除去符号位的右边位集合与符号位一起表示此负数。
有两种方法来考察负的补数。 首先,可以从可能的最小负数数起直到-1,比如,8位字节,从最小的10000000(-128)开始,然后是10000001(-127),一直到11111111(-1)。另外一种考虑负的补数的方式有些古怪,当存在符号位时,用前面都是1后面跟着个0来代替前面都是0后面跟着个1的方式。然而,你最后需要从结果中减去1。 比如11111111时符号位后面跟着7个1,(视为10000000)表示负零(-0),然后添加(也可以认为是减去)1,得到-1,同样11111110(视为10000001,加上1是10000010)是-2,11111101(视为10000010,是-2,然后减去1)是-3,以此类推。
感觉上有些怪,我们可以混合位运算符号和数学运算符号来进行多种操作。比如将x变换为-x,可以表示为对x按位求反,然后加1,即(~x)+1,具体运算过程见下表。
布尔标记和标准布尔位集
如下的位标记模式(bit flag pattern)是很普通的技术常识,在图形用户界面GUI程序的公用API中得到了广泛应用。呵呵,我们可能正在为资源有限设备如蜂窝电话或者PDA编写一个Java GUI程序。对GUI中每个构件如按钮(button)和下拉列表(drop-down list)都拥有一些Boolean选择项标记。使用位标记,可以将许多选择项安排到一个变量中。
//The constants to use with our GUI widgets: GUI构件使用的选择项常量
final int visible = 1 << 0; // 1 可见?
final int enabled = 1 << 1; // 2 使能?
final int focusable = 1 << 2; // 4 focus?
final int borderOn = 1 << 3; // 8 有边界?
final int moveable = 1 << 4; // 16 可移动?
final int editable = 1 << 5; // 32 可编辑?
final int borderStyleA = 1 << 6; // 64 有样式A边界?
final int borderStyleB = 1 << 7; //128有样式B边界?
final int borderStyleC = 1 << 8; //256有样式C边界?
final int borderStyleD = 1 << 9; //512有样式D边界?
//etc.
myButton.setOptions( 1+2+4 );
//set a single widget.
int myDefault= 1+2+4; //A list of options.
int myExtras = 32+128; //Another list.
myButtonA.setOptions( myDefault );
myButtonB.setOptions( myDefault | myExtras );
在程序中可以将许多Boolean选择项的位标记组合成一个参数,在一次符值操作中全部传递,这基本上不需要什么时间。API可能会声明,每个组件在某时仅能使用边界样式A、边界样式B、边界样式C、或者边界样式D中的一种,那么可以通过使用掩码(mask)来获取对应的4位,然后检查这4位中至多有一个1。下面代码中的小技巧稍后会解释。
int illegalOptionCombo= //不合法的组合框选项
2+ 64+ 128+ 512; // 10 11000010
int borderOptionMask= //边界选项掩码
64+ 128+ 256+ 512; // 11 11000000
int temp= illegalOptionCombo & //获取4个边界选项的所有的1位
borderOptionMask // 10 11000000
int rightmostBit= //获得temp的最右边的1
temp & ( -temp ); // 00 01000000
如果变量temp与rightMostBit不相等,那么表明temp必然含有多个1位。因为如果rightMostBit为0那么temp也应该是0,否则temp仅有一个1位。
if (temp != rightmostBit)
throw new IllegalArgumentException();
上面的示例是个玩具程序。现实中,AWT和Swing使用了位标记模式,但是使用方式的不连贯。java.awt.geom.AffineTransform类中使用了很多,java.awt.Font 和java.awt.InputEvent也使用了。
通用的位运算以及JDK 1.5的方法
为了更好的应用位运算,需要掌握所谓的标准技巧,也就是那些可以应用的位运算方法。J2SE 5.0 Tiger版本内增加了一些新的位运算API。如果你使用的是老版本,只要剪切粘贴那些方法实现到你的代码中。最近由Henry S. Warren,Jr编写的书籍Hacker's Delight内包含了很多关于位运算算法的资料。
下表展示了一些运算,这些运算可以通过一行代码或者通过一次调用API方法实现
欲了解上面API方法的运行时间,可以阅读JDK中相应的源码。一些方法可能更难以理解一些。所有方法都在Hacker's Delight一书中进行了解释。这些API方法基本上都是一行代码或者很少几行代码实现的,比下面给出的的highestOneBit(int)方法代码。
public static int highestOneBit(int i)
{
i |= (i >> 1);
i |= (i >> 2);
i |= (i >> 4);
i |= (i >> 8);
i |= (i >> 16);
return i - (i >>> 1);
}
高级秘笈,同志们!(棋盘的位图棋盘模式)
下面部分,就像烈酒伏特加和变幻莫测的镜子一样,其中的位运算变得很复杂。
在冷战发展到顶点的时期,国际象棋是计算机科学的一个研究热点。原苏联和美国各自独立的提出了新的象棋数据结构——位图棋盘。美国团队——Slate和Atkin,基于Chess 4.x软件出版了《人类和机器的国际象棋技能》一书,其中有一章讨论了位图棋盘算法,这可能是最早的关于位图棋盘算法的印刷品。 原苏联团队,包括Donskoy以及其他人员,开发了使用位图棋盘算法的程序Kaissa。这两个软件在世界范围都具有胜利性的竞争力。
在讨论位图棋盘算法前,我们先来看看使用Java语言(或其他许多语言)表示棋盘的标准方法。
//棋盘上64个格子所有可能状态的整数枚举
final int EMPTY = 0;
final int WHITE_PAWN = 1;
final int WHITE_KNIGHT = 2;
final int WHITE_BISHOP = 3;
final int WHITE_ROOK = 4;
final int WHITE_QUEEN = 5;
final int WHITE_KING = 6;
final int BLACK_PAWN = 7;
final int BLACK_KNIGHT = 8;
final int BLACK_BISHOP = 9;
final int BLACK_ROOK = 10;
final int BLACK_QUEEN = 11;
final int BLACK_KING = 12;
//使用含有64个元素的整数数组表示64个格子
int[] board= new int[64];
使用数组方法很直观,相反,位图棋盘算法的数据结构是使用12个64位的位集表示,每个表示一种类型的棋子(每方6种棋子,共12种)。 如下图,视觉上看上去好像是一个堆在另一个的上面。
//为棋盘声明12个64位整数
long WP, WN, WB, WR, WQ, WK, BP, BN, BB, BR, BQ, BK;
图1. 位图棋盘数据结构
空的位图棋盘在那里?由于EMPTY位图棋盘可以通过其他12计算出来,因此声明它会产生冗余数据。为计算空位图棋盘,将12个位图棋盘相加后求反即可。
long NOT_EMPTY=
WP | WN | WB | WR | WQ | WK |
BP | BN | BB | BR | BQ | BK ;
long EMPTY = ~NOT_EMPTY;
象棋程序运行时需要生成很多合理的走棋步骤,从中挑选最佳的。这需要完成一些计算,以确定棋盘上被攻击的棋格,避免棋子在这些棋格上被攻击,这样王棋子被将的棋格以及被将死的棋格能够确定下来。每个棋子具有不同的攻击方式。考察处理这些不同攻击方式的代码,可以看到位图棋盘算法的一些优缺点。使用位图棋盘方案可以很优雅的解决一些程序任务,但在另外一些方面却不是这样。
首先看王棋子,很简单的,王只攻击相邻棋格内的棋子。根据王在棋盘上的棋格的不同位置,被攻击的有3个到8个棋格。王可能位于棋盘中间格上、边上、或者角上,所有情况都需要代码处理。
程序在运行时计算王的可能的64种攻击方式,首先从基本的方式考虑,具有8种攻击方式,然后推出特殊的情形下的攻击方式。首先,在中间的棋格上生成掩码,比如在第10个即B2(从A1开始,A2,A3,到A8,然后B1,B2,…B8,依次类推)。图2 显示了几个表示掩码的long数值。
图2 确定王的攻击方式
long KING_ON_B2=
1L | 1L << 1 | 1L << 2 |
1L << 7 | 1L << 9 |
1L << 15 | 1L << 16 | 1L << 17;
//王在B2时,被攻击的格子。(Matrix注:2,3行好像不对,第2行应该是1L << 8 | 1L << 10 |,第3行也一样)
从图上可以看出,我们可能想将被攻击的棋格在棋盘上左右或者上下移动,不过向左和向右移动时要注意边界的影响。
SHIFTED_LEFT= KING_ON_B2 >>> 1; //左移一格
悠忽!我们将王从B2移动到了B1(见图2).象棋中一个垂直列称为纵线,将被攻击的棋格左移一列时,从图中可以看出最右边的纵线H上的棋格并未被攻击,相应的数字应该置0。代码如下
final long FILE_H=
1L | (1L<<8) | (1L<<16) | (1L<<24) |
(1L<<32) | (1L<<40) | (1L<<48) | (1L<<56);
//王左移到A2时,被攻击的棋格
KING_ON_A2= (KING_ON_B2 >>> 1) & ~FILE_H;
相应的,向右移的计算方式如下:
KING_ON_B3= (KING_ON_B2 >>> 1) & ~FILE_A;
向上和向下移动的版本如下:
KING_ON_B1= MASK_KING_ON_B2 << 8;
KING_ON_B3= MASK_KING_ON_B2 >>> 8;
实际上,我们可以避免使用硬编码的方式来获取王攻击棋格的64种可能情况,同时,也希望避免使用数组,因此,此处我们就不构建王攻击棋格的64个元素数组了。 一种替代方案是使用64路的switch语句——代码看起来不漂亮,不过可以很好的完成工作。
下面来看看“兵”,与每方仅有一个王不同,棋盘上总共有8个兵。可以参照上面计算计算王的攻击棋格的方法很容易的计算出所有8个兵的攻击棋格。注意,兵只能攻击对角线上相邻的棋格。如果向上或者向下移动兵,相应数值要移动8位,如果是左右移动,相应数值要移动1位。因此在对角线上数值要移动7(8-1)位或者9(8+1)位
PAWN_ATTACKS=
((WP << 7) & ~RANK_A) & ((WP <<9) & ~RANK_H)
图 3. 白方兵的攻击棋格
无论棋盘上有个兵,无论兵在棋盘那个的位置上,上面代码都有效。Robert Hyatt,Crafty程序的作者,称上面的算法为位并行运算(bit-parallel operation),它同时计算出了多个棋子的信息。位并行表达式功能强大,在你自己的程序中应该作为关键技术应用。进而,如果使用了很多位并行运算,那么这些运算可能是进行位运算优化的良好的候选。
作为对比,考虑如何使用数组来表达兵的攻击方式
for (int i=0; i<56; i++)
{
if (board[i]= WHITE_PAWN)
{
if ((i+1) % 8 != 0) pawnAttacks[i+9]= true;
if ((i+1) % 8 != 1) pawnAttacks[i+7]= true;
}
}
上面代码中,几乎对整个棋盘进行循环,速度不快。可以重新编写代码,标记各个兵的位置,对每个兵的位置循环确定攻击位置,而不需要对棋格进行循环。不过,这样使用位集方法,程序中还是会有更多的字节需要运行。
棋子马的计算方式与王和兵相近。同上面处理王的情形相同,可以使用一个预先计算出来的表来确定马的攻击棋格。由于每方具有多于一个马,因此计算马的攻击棋格的运算在技术上也是位并行运算。不过,现实中每方不大可能拥有多于两个的马,所以没有什么实践意义(选手可以选择提升兵为马,就拥有了多于两个马。实际上不大可能。译注:此处请参考国际象棋规则)。
棋子象、军(车)、后都可以在棋盘上移动多步。虽然它们各自的可能攻击棋格都是一样的,但实际的攻击取决于在各自的攻击路线上的棋子。为确定合理的移动方式,必须单独处理攻击路线上的每个棋格。这是最坏的情况,也没有可能的位并行算法可以使用,这样不得不同数组方式一样处理每个棋格。另外,使用位图棋盘访问一个个棋格同使用数组访问棋格相比更笨拙(例如,易出错)。
使用位图棋盘的优势就是可以使用掩码处理许多常见的象棋程序中的任务。拿棋子象来说, 想确定有多少个对手的兵在象的可能多步攻击范围(图4中,棋盘上的颜色)内。图4 演示了这个攻击掩码问题。
图4 . 有多少个兵在红色方格上
位图棋盘模式的优势和不足
国际象棋规则相当复杂,这也意味着用位图棋盘方法来处理这些规则时有优势也有不足。使用位图棋盘处理某些规则很快,处理另外一些时就比较慢。上面已经给出了使用位图棋盘方法的低效代码片断,位图棋盘算法并不是魔法粉,什么都可以高效实现。可以想象一种与国际象棋非常相近的游戏(可能有不同的棋子), 应用位集运算会导致相反的效果或者根本不需要这样复杂。使用位集运算进行优化必须经过审慎的考虑。
一般来说,位运算具有如下的优势和不足:
优势:
· 占用内存少
· 具有高效的拷贝、设值、比较运算等
· 位并行运算的可能
不足:
· 难于调试
· 访问单独位的复杂性,易出错
· 难于扩展
· 不符合面向对象的风格
· 不能处理所有的任务;需要大量的工作
位图棋盘模式的概括
为概括上面的象棋例子,可以将棋盘的水平和纵向的位置想象为两个独立的变量或者属性,这需要8x8一共64位来表示。另外,需要12层——每个棋子用一层表示。位图棋盘方案的扩展方式有两种:1)使用更多的位来扩展棋盘,添加更多的棋格 2)使用更多的层来增加棋子。实际对弈每方有64位的最大限制。但是假设我们拥有一个128位的JVM, 里面的具有128位的doublelong类型,有了这128位,棋盘上就有了足够的空间来在同一层中摆放黑白双方的16个兵(8*8*2=128)。如此可以减少需要的层数量,并且可能简化一些难以理解的运算,但是却会增加处理单独一方兵的运算的复杂度并降低其速度。所有的Java位运算都会操作基本类型的所有位。数据在自己所在层内仅使用本身的各位进行位运算或者函数调用时,效率会高一些。使用位并行运算处理层内的所有位的速度比处理其中一些位的速度要快。对于增加的64位,我们可以获得一些巧妙的使用方法,但是我们不希望将12个棋子也混合进来。
如果在同一层内使用多于2个变量,也可以同时改变一层的所有变量。考虑图5中表示的3D tic-tac-toe(译注:google)游戏,3个轴向的每个轴向的上面可能有3变量,一共有3*3*3一共27个可能值。这样对局的每方需要使用一个32位的位集合。
图 5. 3D tic-tac-toe 游戏的位模型
进一步,串联多个64位集合可以用于实现Conway生命游戏(Conway’s Game of Life, 见图6),一个在大的栅格上进行的模拟游戏。 游戏中新单元的生死由相邻单元的数量确定,游戏在一代代的单元繁衍中进行。当一个死去单元的周围具有3个生存单元时会复活。 一个单元的相邻单元中没有生存的或者仅有一个生存的,这个单元就死亡了(由于寂寞)。具有多于三个相邻生存单元的单元也会死亡(由于人口拥挤)。相邻单元的出生(复活)、生活,死亡,会对当前单元的状态造成很多改变。图6中显示了一个生命构造图,它会不断繁衍,生存下去,从而通过栅格。使用下面描述的算法我们可以生成模拟生存过程的下一步:
1. 首先,与象棋游戏相似,除主栅格外另外声明8个栅格层,每层表示某单元格的八个相邻单元格中的一个。通过移位运算计算相邻单元格的生存数量(某些移位数据必须从相邻的位中获得)。
2. 已经有了八个层次,需要计算每个单元格的运算和,声明9个额外的位集合来表示这些结果。比如,位集合变量SUM_IS_0到SUM_IS_8。这里可以使用递归算法,先计算2层的,然后计算3层、4层......直道第8层。
3. 获得相邻单元格生存数量后,可以容易的应用游戏规则产生单元格的下一代。
统计各层表示的相邻单元格生存数量
//S0表示“和为0”,其余类似
//L1 表示“第一层”,其余类似
//Look at just the first two layers: 层1和层2
S0= ~(L1 | L2);
S1= L1 ^ L2;
S2= L1 & L2;
//Now look at the third layer:第3层
S3 = L3 & S2;
S2 = (S2 & ~L3) | (S1 & L3);
S1 = (S1 & ~L3) | (S0 & L3);
S0 = S0 & ~L3;
//The fourth layer.第4层
S4 = S3 & L4;
S3 = (S3 & ~L4) | (S2 & L4);
S2 = (S2 & ~L4) | (S1 & L4);
S1 = (S1 & ~L4) | (S0 & L4);
S0 = S0 & ~L4;
//Repeat this pattern up to the 8th layer.重复此模式直到第8层
计算8层的全部代码有42行,如果需要也可以增加些。不过这42行代码有些优点,其中没有使用逻辑判断——逻辑判断会降低处理器的速度, 代码明了简单,可以通过即时(JIT)或者热部署(Hotspot)Java编译器的编译。最重要的是,对于全部64个单元格所需要的数值,是通过并行计算获得的。
图 6. 生命游戏的模型
与非游戏应用相比,位运算在游戏等应用中更容易得到应用。其原因是游戏应用如象棋的数据模型中位与位之间具有丰富的关系。象棋的数据模型具有12层64位的位集,合计共764位。768位中的每位基本上都同其余各位有一定形式的关联。在商业应用中,信息通常不具有这样紧密的关系。
结论
思想开放的程序员,可能在任何问题领域中应用位运算。然而,在特定情形下应用位运算合适与否取决于开发者的判断。老实说,可能根本就不需要使用这些技巧。不过,上面提到的方法在特定Java应用可能正是优化程序所需要的。如果不是这样,也可以使用这些方法以非常hacking的方式解决一些问题,同时迷惑你的朋友们!
享受位运算的快乐吧!
资源
·onjava.com:onjava.com
·Matrix-Java开发者社区:http://www.matrix.org.cn/
·本文的代码
·Hacker's Delight 一书的链接
·Eclipse的字节码查看插件
Glen Pepicelli 是一位软件专家.他和他的狗生活在纽约州北部地区.
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 修改过的PHP购物车类
在使用Smarty调用购物车的时候,发现不能加入成功显示,研究了一天后,终于弄明白了。下面是修改后的购物车类<?/** * Cart * * 购物车类 * * @author doodoo<pWtitle@yahoo.com.cn> * @package Cart * @category Cart * @license PHP License * @acce…...
2024/4/19 16:35:48 - java实验3
实验名称 Java面向对象编程 一、实验目的: 1. 理解 Java 语言是如何体现面向对象编程基本思想的;2. 掌握类的声明以及对象的创建;3. 了解类的成员变量和成员方法的特性以及类的构造方法的使用。二、实验要求:1. 编写一个长方体类,通过类中的一个成员方法来初始化…...
2024/4/26 11:23:15 - 获取transform的各种函数如:translate(0px,0px)
使用正则即可匹配,代码如下:var transformStr="translate(-1972px, 0px)translateZ(0px)"; var matchStr=transformStr.match(/\.*translateZ\((.*?)\\)/);因为被转义了,我写不出来正确的正则,要把后面一段正则替换一下"\\)"替换成“\)”。...
2024/4/11 12:16:43 - php 购物车的例子
php 购物车的例子网上搜到的,简单容易理解。cookie存购物车ID,db存购物车数据。 //购物车session的产生代码 1 if(! $session && ! $scid) { 2 /* 3 session用来区别每一个购物车,相当于每个车的身份证号; 4 scid只用来标识一个购物车id号,可以看做是每个车…...
2024/4/21 4:39:03 - 24点游戏的编程算法(C语言实现)
#include <stdio.h> #include <string.h> #include <math.h>#define LING 1E-6 #define CONT 4 #define VOLUE 24float number[CONT]; char expression[CONT][20] ; bool m_judge = false; //判断是否有解。 int count = 0;void Find(int n) {i…...
2024/4/18 11:22:38 - 《Java语言与程序设计实验指导与习题解答》——“如何靠代码写完你的第一本书”攻略
背景:苦逼大二上学期必修了Java,结果濒临退休的59岁恶魔boss冷酷无情,喝了点假酒下手没轻没重,java实验报告直接给了我们一本书,就是这本《java语言与程序设计实验指导与习题解答》,要求是把1-17章的基础训练到编程题全写了(不写习题解析的题)(别的java老师一般就布置…...
2024/4/18 14:10:33 - C/C++中使用的正则表达式库
正则表达式 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。 正则引擎主要可以分为两大类:一种是DFA,一种是NFA。主流的正则引擎又分为3类:1…...
2024/4/18 15:52:46 - 跳动动画出现闪屏问题解决始末
最近做了一个模仿WP home页的跳动动画,熟悉的同学应该知道在ios中用CAKeyframeAnimation就能简单实现。在实现跳动动画的过程中,我使用了两个连续动画来完成。第一次让view向上滚动一段距离之后,接着使用关键帧动画,按绘制的路径移动,刚开始并没有发现异常状况,后来在测试…...
2024/4/17 9:56:46 - 正则表达式匹配大括号里面的内容
正则表达式匹配大括号里面的内容最近接触到正则的一个匹配的问题,由于之前对正则知识点的遗忘,导致有点手忙脚乱的故写个来记录一下针对对大括号里面的内容进行一个匹配(基础的介绍这里就不多说了,直接去看官网[http://www.runoob.com/regexp/regexp-syntax.html])方法一:…...
2024/5/6 5:24:24 - Java实验——使用Java 开发环境eclipse 和JDK 工具对 java 程序进行编辑、编译和运行
1、系统中Java.exe 和Javac.exe 的位置。 Java.exe : D:\Java\jdk\bin、D:\Java\jdk\jre\bin和D:\Java\jre\bin Javac.exe:D:\Java\jdk\bin 2、JRE 与JDK 的区别。 jdk是java的开发工具集,是提供给开发者的;jre是java程序的运行环境,是提供给使用者的。所写的java程序在经…...
2024/4/23 14:54:49 - 火箭 上下抖一抖的是怎么做出来的
可以设置一个帧动画 @keyframes slideFromBottom {0% {transform: translateY(300%)}88% {transform: translateY(300%)}95% {transform: translateY(0)}97% {transform: translateY(20%)}100% {transform: translateY(0)} } 之后在设置完成动画的类上加入animation .screen-2_…...
2024/4/20 16:38:01 - [share]PHP购物车类的源码
<?php//调用实例require_once cart.class.php;session_start();if(!isset($_SESSION[cart])) {$_SESSION[cart] = new Cart;}$cart =& $_SESSION[cart];if( ($_SERVER[REQUEST_METHOD]=="POST")&&($_POST[action]==add) ){$p = $_POST[p];$items = $…...
2024/3/31 19:57:41 - C语言推箱子游戏,随机生成地图
思路:一、地图初始化 - 使用奇数行和列相同的二维数组存储地图,初始化全部为墙 - 使用一个1-2的随机数确定挖坑方向,1向左,2向右 - 定义步进,随机数范围: 2至(列数-1) - 利用步进和方向挖坑,先从顶部挖到中间一行,再从底部挖到中间,然后将中间的墙全部连起来,得…...
2024/4/18 14:39:01 - [正则表达式]-基础语法五 反向引用与断言
本文是关于正则表达式基础语法的最后一篇文章,关于正则表达式比较特殊的特性,譬如:递归等高级特性依据不同开发环境与编程语言而异。所以笔者不在赘述这些特殊化的性质。最后将介绍记录正则表达式中的另一语法基础:反向引用与断言。还记得元字符 \ 有一个作用吗?那就是反向…...
2024/5/5 17:58:39 - 回顾大学--大一JAVA实验--总结
后面还有几个实验,我没记得做过,貌似我们没做. 总的来说这些实验都是很简单的一些实验,感觉不是像学习java,主要是学习各种编程语言通用的部分和学习如何用编程语言解决一些问题.实验一 Eclipse及Java入门 6 实验内容 6 实验步骤 7 1 利用Eclipse开发环境写自己的第一个Java程序…...
2024/4/17 21:42:32 - 关于HTML(十二)--------css设置图片上下居中
position: fixed;top:50%; transform:translateY(-50%);-ms-transform:translateY(-50%); /* IE 9 */-moz-transform:translateY(-50%); /* Firefox */-webkit-transform:translateY(-50%); /* Safari 和 Chrome */-o-transform:translateY(-50%); /* Opera */ 转载于:https…...
2024/5/6 4:12:06 - Java实验五——多线程实验
一、实验目的 1、练习多线程类的两种实现方法,理解多线程程序的生命周期。 二、实验内容 编写一多线程程序,实现如下功能: (1)一个线程进行阶乘和的运算(1!+2!+3!……+30!), 每次阶乘计算时间随机间隔0.5-1秒; (2)另一个线程每隔1秒时间读取上个线程的运算结果和…...
2024/5/5 20:19:47 - PHP购物车模块功能分析(函数讲解,附下载地址)
一,购物车概述购物车是为消费者在网上购物中提供一个临时存储商品的地方。其主要功能包括:添加商品、删除商品、更改商品数量、商品金额小计、商品金额总计和清空购物车;还包括生成订单、订单打印、订单预览、提交订单和取消购物等。购物车的操作流程:首先,登录到网站中浏…...
2024/5/3 10:12:57 - 数据结构实验报告—学生成绩管理系统(Java实现)
数据结构实验报告————学生成绩管理系统(Java实现)[具体下载链接]https://download.csdn.net/download/mmzian/10897535 部分代码展示 Test类import java.util.Scanner;public class Test {private static final String Score = null;public static void main(String[] ar…...
2024/4/17 9:58:04 - CSS之鼠标移上去,向上浮动一点,移出还原
.por_img{-webkit-transition: all 0.25s ease-in-out;-moz-transition: all 0.25s ease-in-out;transition: all 0.25s ease-in-out;} .por .por_1:hover .por_img{ /*这里改变的是图片(por_img)*/-webkit-transform: translateY(-5px);-moz-transform: translateY(-5px);-…...
2024/5/3 2:57:23
最新文章
- 【Linux系统化学习】网络套接字(编写简单的TCP服务端和客户端)
目录 TCP服务端 创建套接字 解决绑定失败问题 填充网络信息 绑定 设置监听状态 接受请求 收取和反馈消息 完整的服务端封装代码 TCP客户端 创建套接字 填充网络信息 发起连接 发送和收取消息 客户端完整代码 一些补充 TCP服务端 初始化服务端 创建套接字 和U…...
2024/5/6 8:40:51 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - ASTM C1186-22 纤维水泥平板
以无石棉类无机矿物纤维、有机合成纤维或纤维素纤维,单独或混合作为增强材料,以普通硅酸盐水泥或水泥中添加硅质、钙质材料代替部分水泥为胶凝材料,经制浆、成型、蒸汽或高压蒸汽养护制成的板材,俗称水泥压力板。 ASTM C1186-22纤…...
2024/5/5 8:29:28 - 图解深度神经网络的架构
图解深度神经网络的架构 基线模型 AlexNet 是突破性的架构,它使卷积网络(CNN)成为处理大型图像分类任务的主要机器学习算法。介绍 AlexNet 的论文呈现了一张很好的图,但是好像还缺点什么…… AlexNet 架构图示(图源&…...
2024/5/5 8:28:33 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/4 23:54:56 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/4 23:54:56 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/5/4 23:54:56 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/4 23:55:17 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/5/4 23:54:56 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/5/4 23:55:05 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/5/4 23:54:56 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/5/4 23:55:16 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/5/4 23:54:56 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/6 1:40:42 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/5/4 23:54:56 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/5/4 23:55:17 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/5/4 23:55:06 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/5/4 23:54:56 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/4 23:55:06 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/5 8:13:33 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/5/4 23:55:16 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/5/4 23:54:58 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/4 23:55:01 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/5/4 23:54:56 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) 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 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在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