@[TOC](文章目录)

前言

1、Promise 的意义?

在javascript的世界中,所有代码都是单线程执行的,由于这个“缺陷”,导致JavaScript的所有网络操作,浏览器事件,都必须是异步执行。Ajax可以解决这个问题,但是并不好复用。JQuery的链式调用同样可以解决,每次调用都会返回一个JQuery对象。为了更好的处理Promise 出现了,并且ECMAScript 对其进行了规范。

2、PromiseA+规范是什么?

其实 Promise 规范有很多,如 Promise/APromise/BPromise/D 以及 Promise/A 的升级版 Promise/A+ES6 (也叫ES2015)中采用了 Promise/A+ 规范。

##一、术语

1. promise 有 then 方法的对象或者函数;

2. thenable 是一个有 then 方法的对象或者是函数;

3. value promise 状态成功时的值, resolve(value),可以是任何数据类型(String Number Boolean undefined thenable promise);

4. reason promise 状态失败时的值, reject(reason);

##二、Promise Status(三种状态及其关系)

###1. pending 

        1.1 初始状态,可以改变.

        1.2 在 resolve 和 reject 之前都处于这个状态.

        1.3 通过resolve -->  fulfilled 状态.

        1.4 通过reject --> rejected 状态.

###2. fulfilled 

        2.1 最终态,不可改变.

        2.2 一个 promise 被 resolve 改变成这个状态.

        2.3 必须通过一个 value 值,成功以后的值.

###3. rejected

        3.1 最终态,不可改变;

        3.2 一个promise 被 reject 改变成这个状态;

        3.3 必须拥有一个 reason ,也就是失败的原因;

###总结:

pending --> resolve(value)  -->  fulfilled 

pending --> reject(reason)  --> rejected 

##三、Promise then 方法 及其返回值

promise 应该(promiseA+规范,规范提出了,所以用的应该)提供一个 then 方法, 用来访问最终结果, 无论 value 还是 reason.

promise.then(onFuilled,onRejected)

##四、规范

###1.参数的规范

        1.1 onFulfilled 必须是函数类型, 如果不是函数类型 ,应该被忽略(这里的忽略是指给一个默认值,并不是真正意义上的忽略);

        1.2 onRejected  必须是函数类型, 如果不是函数类型 ,应该被忽略(同上);

###2. onFulfilled 特性

        2.1 在 promise 变成 fulfilled 时, 应该调用 onFulfilled ,参数是 value;(onFulfilled 的执行时机?)

        2.2 在 promise 变成 fulfilled 之前, 不应该调用 onFulfilled;

        2.3 只能被调用一次,可以注册若干个回调函数(promise.then().then().then()....);(怎么实现只调用一次?)

###3. onRejected 特性

        3.1 在 promise 变成 rejected 时, 调用 onRejected ,参数是reason;

        3.2 在 promise 变成 rejected 之前,不应该调用 onRejected.

        3.3 只能调用一次

###4. onFulfilled 和 onRejected 应该是在微任务阶段执行

        为什么微任务阶段执行?

        一定要等前面的任务执行完,才进行调用. 微任务是在一轮宏任务执行完之后执行;

###5. then方法可以被调用多次

        5.1 promise 变成 fulfilled 之后 , 所有的 onFulfilled 回调都应该按照注册的顺序执行,也可以理解为按照 .then() 的顺序执行;

        例:

promise.then(onFulfilled , onRejected).then(onFulfilled1 => ( )).then(....)

        5.2 promise 变成 rejected 之后 , 所有的 onRejected 回调都应该按照注册的顺序执行,也可以理解为按照 .then() 的顺序执行;

###6. 返回值

        规范里定义 then 应该返回一个promise 

const promise2 = promise( onFulfilled , onRejected );

        6.1 onFulfilled 或 onRejected 执行结果 为 x(任何东西:值或者 promise),调用resolvePromise;

        6.2 onFulfilled 或 onRejected 执行过程中抛出了异常,promise2需要被 reject; 

        6.3 如果 onFulfilled 不是一个函数,promise2 应该以 promise1 的value 触发 fulfilled;

        6.4. 如果 onRejected 不是一个函数,promise2 应该以 promise1 的reason 触发 fulfilled

###7. resolvePromise

        promise2:当前第一个promise 的返回值;

        X:无论是 onFulfilled 还是 onRejected 的执行结果

        resolve、reject :变更方法        

resolvePromise(promise2, x, resolve, reject)

        7.1 如果promise2 和 x 相等 reject typeError;

        7.2 如果 x 是一个 promise 

                如果 x 是pending 状态 ,promise 必须要在pending 状态,直到 x 的状态变更。

                如果 x 是 fulfilled ,value -->  fulfilled

                如果 x 是 rejected ,reason -->  rejected

        7.3 如果 x 是一个 Object 或者 Function 

                去获取 x.then(),如果报错,reject reason 

                如果 then 是一个函数,then.call(x, resolvePromiseFn, rejectPromiseFn)

                为什么用 call 改变 this 指针,或者then的时候可能会导致 指针指向改变,所以用 call 继续执行之前的逻辑

##五、实现promise的具体步骤(大概九步);

###1. promise 应该是一个构造函数或者 class        

const promise = new promise();

新建promise-class.js,今天我们用class 来实现promise

class MPromise{constructor(){}
}

###2.定义三种状态  

const PENDING = 'pending';
const FULFILLED = 'fulfilled';
const REJECTED = 'rejected';class MPromise{constructor(){}
}

###3.初始化状态

const PENDING = 'pending';
const FULFILLED = 'fulfilled';
const REJECTED = 'rejected';class MPromise{constructor(){this.status = PENDING;this.value = null;this.reason = null;}
}

###4.实现 resolve 和 reject

        4.1 这两个方法要更改 status,从 pending 变成 fulfilled / rejected

        4.2 入参分别是 value 和 reason

const PENDING = 'pending';
const FULFILLED = 'fulfilled';
const REJECTED = 'rejected';class MPromise{constructor(){this.status = PENDING;this.value = null;this.reason = null;}resolve(value){// 最终态不可被改变,所以需要加一个判断// 只有当 status 为初始态的时候才可以改变if(this.status === PENDING){this.status = FULFILLED;this.value = value;}}reject(reason){if(this.status === PENDING){this.status = REJECTED;this.reason= reason;}}
}

###5.对于实例化 promise 时的入参处理

        5.1 入参是一个函数  

const promise = new promise((resolve,reject)=>{})

        5.2 接受 resolve 和 rejected 两个参数

        5.3 初始化 promise 就要同步执行这个函数,并且有任何报错都要通过 reject 抛出

const promise = new promise((resolve,reject)=>{axios.get('www.baidu.com')
}).then(result=>{// 这里需要注意一下,创建之处就已经执行了// 并不是调用 .then()  的时候才会执行// 同步执行的,所以可以缓存一个 promise ,需要用到的时候直接取值即可// 获取的时候 并不会再次发送请求,所以不用担心流量的偷跑 与 性能的问题})
const PENDING = 'pending';
const FULFILLED = 'fulfilled';
const REJECTED = 'rejected';class MPromise{constructor(fn){this.status = PENDING;this.value = null;this.reason = null;//需要里面调用,有报错需要立马抛出try{// 考虑严谨性,更改 this 指向为当前环境fn(this.resolve.bind(this), this.reject.bind(this));} catch(e){this.reject(e)}}resolve(value){// 最终态不可被改变,所以需要加一个判断// 只有当 status 为初始态的时候才可以改变if(this.status === PENDING){this.status = FULFILLED;this.value = value;}}reject(reason){if(this.status === PENDING){this.status = REJECTED;this.reason= reason;}}
}

 ###6.实现 then 方法

        6.1 then 接受 两个参数 onFulfilled 和 onRejected 

        6.2 检查并处理参数,如果参数不是一个 function 就忽略

        6.3 需要根据当前 promise 的状态,调用不同的函数

                如果 promise 是 fulfilled 的时候 我们需要调用 onFulfilled

                如果 promise 是 rejected 的时候 我们需要调用 onRejected

        6.4 首先拿到所有的回调,因为状态发生变化的时候,无论是成功还是失败我们都需要去执行对应的 回调;新建两个数组 ,分别存储成功和失败的回调,调用 then 的时候,如果还是pending 状态就存入数组。

        6.5 在 status 发生变化的时候,执行对应的回调。这里用 es6 的 getter setter,监听 status 的变化,在发生变化的时候来做对应的操作;

这里说一下如果是ES5没有 getter setter,那么我们可以直接在resolve 和 reject 两个方法里面去更改 status 的状态;使用getter setter 后面可以更好的维护,不用关注 status ;

const PENDING = 'pending';
const FULFILLED = 'fulfilled';
const REJECTED = 'rejected';class MPromise{//直接生命两个数组即可,这里的数组不会被修改 只会被push进来// 状态完成的 listFULFILLED_CALLBACK_LIST = [];// 状态失败的 listREJECTED_CALLBACK_LIST = [];// 存储初始化 status _status = PENDING;constructor(fn){this.status = PENDING;this.value = null;this.reason = null;//需要里面调用,有报错需要立马抛出try{// 考虑严谨性,更改 this 指向为当前环境fn(this.resolve.bind(this), this.reject.bind(this));} catch(e){this.reject(e)}}get status(){// 所有真实的 status return this._status;}set status(newStatus){this._status = newStatus;// 判断不同的状态 执行不同的逻辑switch(newStatus){case FULFILLED: {// then 方法已经判断过是不是function 所以这里不需要判断// 在 status 发生变化的时候,执行对应的回调。this.FULFILLED_CALLBACK_LIST.forEach(callback=>{callback(this.value)});break;}case REJECTED: {this.REJECTED_CALLBACK_LIST.forEach(callback=>{callback(this.reason)});break;}}}resolve(value){// 最终态不可被改变,所以需要加一个判断// 只有当 status 为初始态的时候才可以改变if(this.status === PENDING){this.value = value;this.status = FULFILLED;}}reject(reason){if(this.status === PENDING){this.reason= reason;this.status = REJECTED;}}then(onFulfilled, onRejected){const fulFilledFn = this.isFunction(onFulfilled) ? onFulfilled : (value) => valueconst rejectedFn = this.isFunction(onRejected) ? onRejected : (reason) => throw(reason)switch(this.status){case FULFILLED: {fulFilledFn(this.value);break;}case REJECTED: {rejectedFn(this.reason);break;}case PENDING: {this.FULFILLED_CALLBACK_LIST.push(fulFilledFn);this.REJECTED_CALLBACK_LIST.push(rejectedFn);break;}}}isFunction(param){return typeof param === 'function';}
}

 ###7. then 的返回值 

        7.1 如果 onFulfilled 或者 onRejected 抛出一个异常 e ,那么新的 promise 必须 reject e;

        7.2 返回值应该是一个 promise

        7.3 如果 onFulfilled 不是函数,且 promise1 成功(resolve 状态)执行,promise2 必须返回同样的状态和value;(规范里定义的)

        7.4 如果 onRejected 不是函数,且 promise1 拒绝执行,promise2 必须返回同样的状态和 reason;

        7.5 如果 onFulfilled 或者 onRejected 返回一个值 x ,运行 resolvePromise 方法。

const PENDING = 'pending';
const FULFILLED = 'fulfilled';
const REJECTED = 'rejected';class MPromise{//直接生命两个数组即可,这里的数组不会被修改 只会被push进来// 状态完成的 listFULFILLED_CALLBACK_LIST = [];// 状态失败的 listREJECTED_CALLBACK_LIST = [];// 存储初始化 status _status = PENDING;constructor(fn){this.status = PENDING;this.value = null;this.reason = null;//需要里面调用,有报错需要立马抛出try{// 考虑严谨性,更改 this 指向为当前环境fn(this.resolve.bind(this), this.reject.bind(this));} catch(e){this.reject(e)}}get status(){// 所有真实的 status return this._status;}set status(newStatus){this._status = newStatus;// 判断不同的状态 执行不同的逻辑switch(newStatus){case FULFILLED: {// then 方法已经判断过是不是function 所以这里不需要判断// 在 status 发生变化的时候,执行对应的回调。this.FULFILLED_CALLBACK_LIST.forEach(callback=>{callback(this.value)});break;}case REJECTED: {this.REJECTED_CALLBACK_LIST.forEach(callback=>{callback(this.reason)});break;}}}resolve(value){// 最终态不可被改变,所以需要加一个判断// 只有当 status 为初始态的时候才可以改变if(this.status === PENDING){this.value = value;this.status = FULFILLED;}}reject(reason){if(this.status === PENDING){this.reason= reason;this.status = REJECTED;}}then(onFulfilled, onRejected){const fulFilledFn = this.isFunction(onFulfilled) ? onFulfilled : (value) => valueconst rejectedFn = this.isFunction(onRejected) ? onRejected : (reason) => throw(reason)//如果 onFulfilled 或者 onRejected 抛出一个异常 e ,那么新的 promise 必须 reject e;const fulFilledFnWitchCatch = (resolve, reject, newPromise) => {try{// 不是一个函数 就直接resolve ,因为有返回值了,所以需要判断if(!this.isFunction(onFulfilled)){resolve(this.value)}else{const x = fulFilledFn(this.value);this.resolvePromise(newPromise, x, resolve, reject);}}catch(e) {reject(e)}}const rejectedFnWitchCatch = (resolve, reject, newPromise) => {try{if(!this.isFunction(onRejected)){reject(this.reason);}else{const x =  rejectedFn(this.reason);this.resolvePromise(newPromise, x, resolve, reject); }}catch(e) {reject(e)}}switch(this.status){// then 的返回值是一个promisecase FULFILLED: {const newPromise = new MPromise((resolve, reject) => fulFilledFnWitchCatch(resolve, reject, newPromise));return newPromise;}case REJECTED: {const newPromise = new MPromise((resolve, reject) => rejectedFnWitchCatch(resolve, reject, newPromise));return newPromise;}case PENDING: {const newPromise = new MPromise((resolve, reject) => {this.FULFILLED_CALLBACK_LIST.push(() => fulFilledFnWitchCatch(resolve, reject, newPromise));this.REJECTED_CALLBACK_LIST.push(() => rejectedFnWitchCatch(resolve, reject, newPromise));         });return newPromise;}}}// 规范里定义resolvePromise 需要接受一个 newPromise// resolvePromise 函数的意义,就是对promise 各种值的处理// 让 promise 可以返回一个结果,无论是 resolve 还是 rejectresolvePromise(newPromise, x, resolve, reject){}isFunction(param){return typeof param === 'function';}
}

###8. resolvePromise 方法的具体实现

resolvePromise 函数的意义,就是对promise 各种值的处理, 让 promise 可以返回一个结果,无论是 resolve 还是 reject

        8.1 如果 promise2 和 x 相等

        8.1 如果 x 是一个promise ,promise 必须要在 pending 状态,直到 x 的状态变更

                如果 x fulfilled ,value --->  fulfilled

                如果 x rejected ,reason ----> rejected

        8.1 如果 x 是一个 object / Function

                去获取 const then = x.then, reject reason

                then 是一个函数,then.call(x,resolvePromiseFn, rejectPromiseFn)

const PENDING = 'pending';
const FULFILLED = 'fulfilled';
const REJECTED = 'rejected';class MPromise{//直接生命两个数组即可,这里的数组不会被修改 只会被push进来// 状态完成的 listFULFILLED_CALLBACK_LIST = [];// 状态失败的 listREJECTED_CALLBACK_LIST = [];// 存储初始化 status _status = PENDING;constructor(fn){this.status = PENDING;this.value = null;this.reason = null;//需要里面调用,有报错需要立马抛出try{// 考虑严谨性,更改 this 指向为当前环境fn(this.resolve.bind(this), this.reject.bind(this));} catch(e){this.reject(e)}}get status(){// 所有真实的 status return this._status;}set status(newStatus){this._status = newStatus;// 判断不同的状态 执行不同的逻辑switch(newStatus){case FULFILLED: {// then 方法已经判断过是不是function 所以这里不需要判断// 在 status 发生变化的时候,执行对应的回调。this.FULFILLED_CALLBACK_LIST.forEach(callback=>{callback(this.value)});break;}case REJECTED: {this.REJECTED_CALLBACK_LIST.forEach(callback=>{callback(this.reason)});break;}}}resolve(value){// 最终态不可被改变,所以需要加一个判断// 只有当 status 为初始态的时候才可以改变if(this.status === PENDING){this.value = value;this.status = FULFILLED;}}reject(reason){if(this.status === PENDING){this.reason= reason;this.status = REJECTED;}}then(onFulfilled, onRejected){const fulFilledFn = this.isFunction(onFulfilled) ? onFulfilled : (value) => valueconst rejectedFn = this.isFunction(onRejected) ? onRejected : (reason) => throw(reason)//如果 onFulfilled 或者 onRejected 抛出一个异常 e ,那么新的 promise 必须 reject e;const fulFilledFnWitchCatch = (resolve, reject, newPromise) => {try{// 不是一个函数 就直接resolve ,因为有返回值了,所以需要判断if(!this.isFunction(onFulfilled)){resolve(this.value)}else{const x = fulFilledFn(this.value);this.resolvePromise(newPromise, x, resolve, reject);}}catch(e) {reject(e)}}const rejectedFnWitchCatch = (resolve, reject, newPromise) => {try{if(!this.isFunction(onRejected)){reject(this.reason);}else{const x =  rejectedFn(this.reason);this.resolvePromise(newPromise, x, resolve, reject); }}catch(e) {reject(e)}}switch(this.status){// then 的返回值是一个promisecase FULFILLED: {const newPromise = new MPromise((resolve, reject) => fulFilledFnWitchCatch(resolve, reject, newPromise));return newPromise;}case REJECTED: {const newPromise = new MPromise((resolve, reject) => rejectedFnWitchCatch(resolve, reject, newPromise));return newPromise;}case PENDING: {const newPromise = new MPromise((resolve, reject) => {this.FULFILLED_CALLBACK_LIST.push(() => fulFilledFnWitchCatch(resolve, reject, newPromise));this.REJECTED_CALLBACK_LIST.push(() => rejectedFnWitchCatch(resolve, reject, newPromise));         });return newPromise;}}}// 规范里定义resolvePromise 需要接受一个 newPromise// resolvePromise 函数的意义,就是对promise 各种值的处理// 让 promise 可以返回一个结果,无论是 resolve 还是 rejectresolvePromise(newPromise, x, resolve, reject){if(newPromise === x){// 返回一个错误信息,信息无所谓什么都可以// 为什么要 reject 一个错误信息,因为如果 newPromise 和 x 相等会相互调用,形成一个死循环return reject(new TypeError('Type Error,Please....'))}if(x instanceOf MPromise){//如果是promise 肯定有then 方法x.then(y =>{this.resolvePromise(newPromise, y, resolve, reject)}, reject);        } else if(typeof x === 'object' || this.isFunction(x)){// typeof null 也是 object,所以需要加判断if(x === null){return resolve(x)}// 按照规范的语义化写法let then = null;try{then = x.then;}catch(error){return reject(error);}if(this.isFunction(then)){// 规范中要求 then 方法 只能被调用一次// 定义一个 called 变量,标识是否被调用let called = false;try{// 为了不发生异常错误,更换then 的 this 指向 为xthen.call(x,(y) =>{if(called){return;}called = true;// 简单的递归,目的就是找到所有的 x this.resolvePromise(newPromise, y, resolve, reject);},(r) =>{if(called){return;}called = true;reject(r);})}catch(error){if(called){return;}reject(error);}}else{resolve(x);}} else {resolve(x)}}isFunction(param){return typeof param === 'function';}
}

###9. onFulfilled 和 onRejected 是在微任务中执行的

        如何实现?

        queueMicrotask(()=>{});传入一个函数,放在微任务里面调用

const PENDING = 'pending';
const FULFILLED = 'fulfilled';
const REJECTED = 'rejected';class MPromise{//直接生命两个数组即可,这里的数组不会被修改 只会被push进来// 状态完成的 listFULFILLED_CALLBACK_LIST = [];// 状态失败的 listREJECTED_CALLBACK_LIST = [];// 存储初始化 status _status = PENDING;constructor(fn){this.status = PENDING;this.value = null;this.reason = null;//需要里面调用,有报错需要立马抛出try{// 考虑严谨性,更改 this 指向为当前环境fn(this.resolve.bind(this), this.reject.bind(this));} catch(e){this.reject(e)}}get status(){// 所有真实的 status return this._status;}set status(newStatus){this._status = newStatus;// 判断不同的状态 执行不同的逻辑switch(newStatus){case FULFILLED: {// then 方法已经判断过是不是function 所以这里不需要判断// 在 status 发生变化的时候,执行对应的回调。this.FULFILLED_CALLBACK_LIST.forEach(callback=>{callback(this.value)});break;}case REJECTED: {this.REJECTED_CALLBACK_LIST.forEach(callback=>{callback(this.reason)});break;}}}resolve(value){// 最终态不可被改变,所以需要加一个判断// 只有当 status 为初始态的时候才可以改变if(this.status === PENDING){this.value = value;this.status = FULFILLED;}}reject(reason){if(this.status === PENDING){this.reason= reason;this.status = REJECTED;}}then(onFulfilled, onRejected){const fulFilledFn = this.isFunction(onFulfilled) ? onFulfilled : (value) => valueconst rejectedFn = this.isFunction(onRejected) ? onRejected : (reason) => throw(reason)//如果 onFulfilled 或者 onRejected 抛出一个异常 e ,那么新的 promise 必须 reject e;const fulFilledFnWitchCatch = (resolve, reject, newPromise) => {queueMicrotask(() => {try{// 不是一个函数 就直接resolve ,因为有返回值了,所以需要判断if(!this.isFunction(onFulfilled)){resolve(this.value)}else{const x = fulFilledFn(this.value);this.resolvePromise(newPromise, x, resolve, reject);}}catch(e) {reject(e)}});}const rejectedFnWitchCatch = (resolve, reject, newPromise) => {queueMicrotask(() => {try{if(!this.isFunction(onRejected)){reject(this.reason);}else{const x =  rejectedFn(this.reason);this.resolvePromise(newPromise, x, resolve, reject); }}catch(e) {reject(e)}});}switch(this.status){// then 的返回值是一个promisecase FULFILLED: {const newPromise = new MPromise((resolve, reject) => fulFilledFnWitchCatch(resolve, reject, newPromise));return newPromise;}case REJECTED: {const newPromise = new MPromise((resolve, reject) => rejectedFnWitchCatch(resolve, reject, newPromise));return newPromise;}case PENDING: {const newPromise = new MPromise((resolve, reject) => {this.FULFILLED_CALLBACK_LIST.push(() => fulFilledFnWitchCatch(resolve, reject, newPromise));this.REJECTED_CALLBACK_LIST.push(() => rejectedFnWitchCatch(resolve, reject, newPromise));         });return newPromise;}}}catch(onRejected){return this.then(null, onRejected)}// 规范里定义resolvePromise 需要接受一个 newPromise// resolvePromise 函数的意义,就是对promise 各种值的处理// 让 promise 可以返回一个结果,无论是 resolve 还是 rejectresolvePromise(newPromise, x, resolve, reject){if(newPromise === x){// 返回一个错误信息,信息无所谓什么都可以// 为什么要 reject 一个错误信息,因为如果 newPromise 和 x 相等会相互调用,形成一个死循环return reject(new TypeError('Type Error,Please....'))}if(x instanceOf MPromise){//如果是promise 肯定有then 方法x.then(y =>{this.resolvePromise(newPromise, y, resolve, reject)}, reject);        } else if(typeof x === 'object' || this.isFunction(x)){// typeof null 也是 object,所以需要加判断if(x === null){return resolve(x)}// 按照规范的语义化写法let then = null;try{then = x.then;}catch(error){return reject(error);}if(this.isFunction(then)){// 规范中要求 then 方法 只能被调用一次// 定义一个 called 变量,标识是否被调用let called = false;try{// 为了不发生异常错误,更换then 的 this 指向 为xthen.call(x,(y) =>{if(called){return;}called = true;// 简单的递归,目的就是找到所有的 x this.resolvePromise(newPromise, y, resolve, reject);},(r) =>{if(called){return;}called = true;reject(r);})}catch(error){if(called){return;}reject(error);}}else{resolve(x);}} else {resolve(x)}}isFunction(param){return typeof param === 'function';}
}

到这里我们 简单的 promise 已经实现了,可以简单的去测试一下

const test = new MPromise((resolve, reject) => {setTimeout(()=>{resolve(1111);},1000)
}).then(console.log)const test = new MPromise((resolve, reject) => {setTimeout(()=>{reject(1111);},1000)
}).then((value) => {console.log('完成' + value)
}).catch((reason) => {console.log('报错' + reason)
})

 

 到这里 实例方法 resolve reject 已经 加完了,静态方法后期给大家补充;

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

相关文章

  1. mysql合并查询(多张表) union 和 union all

    mysql合并查询(多张表) union 和 union all简介语法演示SQL UNION 语法SQL UNION ALL 语法实战运用注意要点简介 如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字。union(或称为联合)的作用…...

    2024/4/20 14:22:33
  2. 圆弧构型机器人轮直径校准

    关注同名微信公众号“混沌无形”,阅读更多有趣好文! 原文链接: 常见移动机器人轮直径校准(包含原文PDF百度云下载链接) 与图 4.1中的对称构型机器人有所区别的是图 4.3中的全向轮移动平台,要校准全向轮直径…...

    2024/4/15 5:13:34
  3. Guava缓存详解及使用

    缓存 缓存分为本地缓存与分布式缓存。本地缓存为了保证线程安全问题,一般使用ConcurrentMap的方式保存在内存之中,而常见的分布式缓存则有Redis,MongoDB等。 一致性:本地缓存由于数据存储于内存之中,每个实例都有自己…...

    2024/4/20 9:07:21
  4. 2021全国大学生电子设计竞赛A题

    信号失真度测量装置(A 题) 【本科组】 一 任务 设计制作信号失真度测量装置,对来自函数/任意波形发生器的周期信号(以下 简称为输入信号)进行采集分析,测得输入信号的总谐波失真 THD(以下简称…...

    2024/4/24 12:01:20
  5. 熬夜整理56个JavaScript高级的手写知识点

    前言 大家好,我是林三心,基础是进阶的前提,前面我给大家分享了本菜鸟这一年来笔记中的50个JS基础知识点和50个JS高级知识点 工作中遇到的50个JavaScript的基础知识点万字总结」熬夜总结50个JS的高级知识点 今天就给大家分享一下我笔记中的…...

    2024/4/24 7:29:34
  6. 浅谈Python flask框架浅析

    前言 Python 面向对象的高级编程语言,以其语法简单、免费开源、免编译扩展性高,同时也可以嵌入到C/C程序和丰富的第三方库,Python运用到大数据分析、人工智能、web后端等应用场景上。 Python 目前主要流行的web框架:flask、Djan…...

    2024/4/25 1:23:40
  7. Python学习笔记之洗牌顺牌

    一、系列缘由 作为一名运维工程师,也一直有一个学习开发的想法,值此之际,不知道博客的下一期目标在哪里,在这思考和犹豫的间隙想着学习和充实一下自己,学习一下python语言,python随着大数据和人工智能的兴起…...

    2024/4/25 13:01:39
  8. vec3b、vec3f和CV_8UC3、CV_32FC3的含义和掩膜抠图经验

    作者:RayChiu_Labloy 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 目录 vec3b、vec3f等的含义: CV_8UC3、CV_32FC3等的含义: 掩膜抠图过程中的坑: vec3b、v…...

    2024/4/5 6:23:38
  9. 每日一书|拳打MySQL基础,脚踢MySQL进阶

    杜甫诗云:“读书破万卷,下笔如有神”。开发者多读书、读好书,能打好基础、掌握实践、答疑解惑、拓展视野。正基于此,2021年11月1日起,CSDN、《新程序员》推出“每日一书”栏目,为你推荐精选好书&#xff0c…...

    2024/4/19 16:15:43
  10. Flowable入门系列文章45 - Web服务任务

    1、描述 Web服务任务用于同步调用外部Web服务。 2、图形表示法 Web服务任务的可视化方式与Java服务任务相同。 3、XML表示 要使用Web服务&#xff0c;我们需要导入其操作和复杂类型。这可以通过使用指向Web服务的WSDL的导入标签自动完成&#xff1a; <import importT…...

    2024/4/15 5:13:24
  11. linux FTP本地登录

    本地登录和匿名登录的区别 本地登录需要有账号和密码才能访问目录&#xff0c;相对比较安全&#xff0c;可以指定用户访问哪些目录匿名登录可以让任何人进行访问&#xff0c;比较不安全&#xff0c;可以随意更改目录内容&#xff0c;造成一些损失 进入ftp配置文件修改启动本地…...

    2024/4/20 14:51:20
  12. 周志华的西瓜书就是用来“啃”的

    前言&#xff1a;\textcolor{green}{前言&#xff1a;}前言&#xff1a; ❤️目前正在学习周志华的机器学习&#xff0c;我是根据B站的视频来学习&#xff0c;讲的比较扣书本上的知识点。但是建议还是需要看书&#xff0c;书本上的内容是比较全的&#xff0c;但是也比较难&…...

    2024/4/15 5:13:34
  13. 【每日一题025】leetcode-21

    目录题目思路相关思考代码1&#xff08;C/力扣&#xff09;代码2&#xff08;C/力扣&#xff09;题目 题目来源 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 思路 1.数据结构“归并思路”&#xff0c;将二者合并 2.递…...

    2024/4/19 18:57:43
  14. NoOps 来了,DevOps 工程师的未来在何方?

    NoOps 是否意味着 DevOps 时代的终结&#xff1f;还是说它只是 DevOps 的下一个发展阶段&#xff1f;在这篇文章中&#xff0c;我们将深入探讨这一主题。 随着云技术采用率不断上升&#xff0c;应用程序架构的抽象级别也有所提高——从传统的本地服务器迁移到了容器和无服务器…...

    2024/4/19 18:55:32
  15. Feign入门

    1、简介 Feign是一个REST客户端库&#xff0c;它通过接口驱动的方式来定义REST客户端。Spring Cloud Netflix体系中的Eureka服务注册中心客户端支持Ribbon客户端负载均衡器&#xff0c;而Feign本质上是Ribbon的包装&#xff0c;其内部是通过Ribbon来进行服务查找和负载均衡。 …...

    2024/4/19 18:05:07
  16. 多线程通信—生产者和消费者模式

    1、队列Queue&#xff1a; 从一个线程向另一个线程发送数据最安全的方式可能就是使用queue库中的队列了。创建一个被多个线程共享的Queue对象&#xff0c;这些线程通过使用put()和get()操作来向队列中添加或者删除元素。Queue对象已经包含了必要的锁&#xff0c;所以你可以通过…...

    2024/4/18 22:21:01
  17. Python入门学习笔记(2)

    今日学习数据类型和基本运算符。 1. 保留字和标识符 1.1保留字 保留字是Python已经被赋予特定意义的一些单词&#xff0c;在开发程序时&#xff0c;不可以把这些保留字作为变量、函数、类、模块和其他对象的名称来使用。Python中的保留字如下&#xff1a; 注意&#xff1a; 1…...

    2024/4/24 17:21:11
  18. Java知识梳理(基础)11-20

    如有不足&#xff0c;还望指正 上一篇&#xff1a; java知识梳理1 -10 11.static详解 静态变量--又称之为类变量&#xff0c;也就是说这个变量是属于类的&#xff0c;类所有的实例都共享变量&#xff0c;可以直接通过类名来调用。静态变量在内存中只存在一份。静态常量 …...

    2024/4/15 5:13:34
  19. iOS 推送通知-笔记

    //联系人:石虎 QQ: 1224614774 昵称:嗡嘛呢叭咪哄远程推送应用配置过程1. 创建支持远程推送功能的App ID2. 申请开发者证书,并选中刚刚创建的App ID3. 下载CER文件,并导入钥匙串管理4. 申请发布证书,并选中刚刚创建的App ID5. 下载CER文件,并导入钥匙串管理6. 检查App ID,…...

    2024/4/20 11:09:59
  20. 【3】天猫精灵开放实验平台实验— 切换意图,参数传递

    天猫精灵开放实验平台实验—— 切换意图&#xff0c;参数传递 参考链接&#xff1a;AliGenie - 技能应用平台 一、创建两个意图 接着前两次的实验&#xff0c;继续创建新的两个意图&#xff0c;实现多意图关联的语音技能。 通过学习将掌握&#xff1a; 如何将两个意图进行关联…...

    2024/4/20 19:26:08

最新文章

  1. 使用MySQL和SQL Server生成最近七周和最近七个月的日期数据

    在数据库管理和数据处理中&#xff0c;生成特定时间范围内的数据是一项常见的任务。本文将介绍如何使用MySQL和SQL Server编写代码来生成最近七周和最近七个月的日期数据。 MySQL示例&#xff1a;生成最近七周和最近七个月的日期 在MySQL中&#xff0c;我们可以通过日期函数和…...

    2024/4/26 9:33:57
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/3/20 10:50:27
  3. k8s_入门_kubelet安装

    安装 在大致了解了一些k8s的基本概念之后&#xff0c;我们实际部署一个k8s集群&#xff0c;做进一步的了解 1. 裸机安装 采用三台机器&#xff0c;一台机器为Master&#xff08;控制面板组件&#xff09;两台机器为Node&#xff08;工作节点&#xff09; 机器的准备有两种方式…...

    2024/4/23 6:23:48
  4. jetcache 2级缓存模式实现批量清除

    需求 希望能够实现清理指定对象缓存的方法&#xff0c;例如缓存了User表&#xff0c;当User表巨大时&#xff0c;通过id全量去清理不现实&#xff0c;耗费资源也巨大。因此需要能够支持清理指定本地和远程缓存的批量方法。 分析 查看jetcache生成的cache接口&#xff0c;并没…...

    2024/4/23 13:15:05
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/25 11:51:20
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/25 18:39:24
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/25 18:38:39
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/25 18:39:23
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/25 18:39:22
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/25 18:39:22
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/25 18:39:20
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/25 16:48:44
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/25 13:39:44
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/25 18:39:16
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/25 0:00:17
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/25 4:19:21
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/25 18:39:14
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/25 18:39:12
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/25 2:10:52
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/25 18:39:00
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/25 13:19:01
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/25 18:38:58
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/25 18:38:57
  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