Mongoose学习

Mongoose是位于MongoDB与NodeJS之间的,做了很多抽象,大大简化了使用MongoDB的难度。


Schema | Model | Entity

Mongoose 里,一切都始于Schema。

Schema :

一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力

Model :

由Schema发布生成的模型,具有抽象属性和行为的数据库操作对

Entity :

由Model创建的实体,他的操作也会影响数据库

Schema、Model、Entity的关系请牢记,Schema生成Model,Model创造Entity,Model和Entity都可对数据库操作造成影响,但Model比Entity更具操作性。


Schema

schema是mongoose里会用到的一种数据模式,可以理解为表结构的定义;每个schema会映射到mongodb中的一个collection,它不具备操作数据库的能力

在根目录建models文件夹,我们定义一个user的Schema,命名为user.js

const UserSchema = new mongoose.Schema({userName: String
})
复制代码

定义一个Schema就这么简单,指定字段名和类型。

1---Schema.Type

Schema.Type是由Mongoose内定的一些数据类型,基本数据类型都在其中,它也内置了一些Mongoose特有的Schema.Type。当然,你也可以自定义Schema.Type,只有满足Schema.Type的类型才能定义在Schema内。

Schema Types内置类型如下: String, Number, Boolean | Bool, Array, Buffer, Date, ObjectId, Mixed

1.0---Buffer

Buffer 类的实例类似于整数数组,但 Buffer 的大小是固定的、且在 V8 堆外分配物理内存。 Buffer 的大小在被创建时确定,且无法调整。 Buffer 类是一个全局变量类型,用来直接处理二进制数据的。 它能够使用多种方式构建。

Buffer 和 ArrayBuffer 是 Nodejs 两种隐藏的对象,相关内容请查看 NodeJS-API

1.1---ObjectId

用Schema.Types.ObjectId 来声明一个对象ID类型。对象ID同MongoDB内置的_id 的类型,是一个24位Hash字符串。

const mongoose = require('mongoose')
const ObjectId = mongoose.Schema.Types.ObjectId
const Car = new Schema({ driver: ObjectId })
复制代码

1.2---Mixed

混合型是一种“存啥都行”的数据类型,它的灵活性来自于对可维护性的妥协。Mixed类型用Schema.Types.Mixed 或者一个字面上的空对象{}来定义。下面的定义是等价的:

const AnySchema = new Schema({any:{}})
const AnySchema = new Schema({any:Schema.Types.Mixed})
复制代码

混合类型因为没有特定约束,因此可以任意修改,一旦修改了原型,则必须调用markModified()

person.anything = {x:[3,4,{y:'change'}]}
person.markModified('anything') // 输入值,意味着这个值要改变
person.save(); // 改变值被保存
复制代码

2---Validation

数据的存储是需要验证的,不是什么数据都能往数据库里丢或者显示到客户端的,数据的验证需要记住以下规则:

  • 验证始终定义在SchemaType中
  • 验证是一个内部中间件
  • 验证是在一个Document被保存时默认启用的,除非你关闭验证
  • 验证是异步递归的,如果你的SubDoc验证失败,Document也将无法保存
  • 验证并不关心错误类型,而通过ValidationError这个对象可以访问

2.1---验证器 ####=

required 非空验证 min/max 范围验证(边值验证) enum/match 枚举验证/匹配验证 validate 自定义验证规则

以下是综合案例:

var PersonSchema = new Schema({name:{type:'String',required:true //姓名非空},age:{type:'Nunmer',min:18,       //年龄最小18max:120     //年龄最大120},city:{type:'String',enum:['北京','上海']  //只能是北京、上海人},other:{type:'String',validate:[validator,err]  //validator是一个验证函数,err是验证失败的错误信息}
});
复制代码

2.2---验证失败

如果验证失败,则会返回err信息,err是一个对象该对象属性如下

err.errors                //错误集合(对象)
err.errors.color          //错误属性(Schema的color属性)
err.errors.color.message  //错误属性信息
err.errors.path             //错误属性路径
err.errors.type             //错误类型
err.name                //错误名称
err.message                 //错误消息
复制代码

一旦验证失败,Model和Entity都将具有和err一样的errors属性

3---配置项

在使用new Schema(config)时,我们可以追加一个参数options来配置Schema的配置,例如:

const ExampleSchema = new Schema(config,options)

// or

const ExampleSchema = new Schema(config)
ExampleSchema.set(option,value)
复制代码

Options:

  • autoIndex: bool - defaults to null (which means use the connection's autoIndex option)
  • bufferCommands: bool - defaults to true
  • capped: bool - defaults to false
  • collection: string no default
  • id: bool defaults to true
  • _id: bool defaults to true
  • minimize: bool controls document#toObject behavior when called manually defaults to true
  • read: string
  • safe: bool defaults to true.
  • shardKey: bool defaults to null
  • strict: bool defaults to true
  • toJSON object no default
  • toObject object no default
  • typeKey string defaults to 'type'
  • useNestedStrict boolean defaults to false
  • validateBeforeSave bool defaults to true
  • versionKey: string defaults to "__v"
  • collation: object defaults to null (which means use no collation)

详见官方文档

3.1---safe——安全属性(默认安全)

一般可做如下配置:

new Schema({...},{safe:true})
复制代码

当然我们也可以这样

new Schema({...},{safe:{j:1,w:2,wtimeout:10000}})
复制代码

j表示做1份日志,w表示做2个副本(尚不明确),超时时间10秒

3.2---strict——严格配置(默认启用)

默认是enabled,确保Entity的值存入数据库前会被自动验证,如果实例中的域(field)在schema中不存在,那么这个域不会被插入到数据库。 如果你没有充足的理由,请不要停用,例子:

const ThingSchema = new Schema({a:String})
const ThingModel = db.model('Thing',SchemaSchema)
const thing = new ThingModel({iAmNotInTheThingSchema:true})
thing.save() // iAmNotInTheThingSchema will not be saved
复制代码

如果取消严格选项,iAmNotInTheThingSchema将会被存入数据库

该选项也可以在构造实例时使用,例如:

const ThingModel = db.model('Thing')
const thing1 = new ThingModel(doc,true)  // open
const thing2 = new ThingModel(doc,false) // close
复制代码

注意:strict也可以设置为throw,表示出现问题将会抛出错误

3.3---capped——上限设置

如果有数据库的批量操作,该属性能限制一次操作的量,例如:

new Schema({...},{capped:1024})  // can operate 1024 at most once
复制代码

当然该参数也可是JSON对象,包含size、max、autiIndexId属性

new Schema({...},{capped:{size:1024,max:100,autoIndexId:true}})
复制代码

3.4---versionKey——版本锁

版本锁是Mongoose默认配置(__v属性)的,如果你想自己定制,如下:

new Schema({...},{versionKey:'__someElse'});
复制代码

此时存入数据库的版本锁就不是__v属性,而是__someElse,相当于是给版本锁取名字。 具体怎么存入都是由Mongoose和MongoDB自己决定,当然,这个属性你也可以去除。

new Schema({...},{versionKey:false});
复制代码

除非你知道你在做什么,并且你知道这样做的后果

3.5--- autoIndex——自动索引

应用开始的时候,Mongoose对每一个索引发送一个ensureIndex的命令。索引默认(_id)被Mongoose创建。

当我们不需要设置索引的时候,就可以通过设置这个选项。

const schema = new Schema({..}, { autoIndex: false }) const Clock = mongoose.model('Clock', schema) Clock.ensureIndexes(callback)

4---Schema的扩展

4.1 实例方法

有的时候,我们创造的Schema不仅要为后面的Model和Entity提供公共的属性,还要提供公共的方法。

下面例子比快速通道的例子更加高级,可以进行高级扩展:

const schema = new Schema({name: String,type: String
})
// 检查相似数据
schema.methods.findSimilarTypes = () => {return mongoose.model('Oinstance').find({ type: 'engineer' })
}
const Oinstance = mongoose.model('Oinstance', schema)
module.exports = Oinstance
复制代码

使用如下:

const Oinstance = require('../models/06instance-method')
const m = new Oinstance
try {let res = await m.findSimilarTypes()ctx.body = res
} catch (e) {console.log('!err==', e)return next
}
复制代码

4.2 静态方法

静态方法在Model层就能使用,如下:

const schema = new Schema({name: String,type: String
})

schema.statics.findSimilarTypes = () => {
return mongoose.model(‘Ostatic’).find({ type: ‘engineer’ })
}

// 例子
const Ostatic = mongoose.model(‘Ostatic’, schema)

module.exports = Ostatic
复制代码

使用如下: try { let res = await Ostatic.findSimilarTypes() ctx.body = res } catch (e) { console.log('!err==', e) return next }

methods和statics的区别

区别就是一个给Model添加方法(statics),一个给实例添加方法(methods)

4.3 虚拟属性

Schema中如果定义了虚拟属性,那么该属性将不写入数据库,例如:

const PersonSchema = new Schema({name:{first:String,last:String}
})
const PersonModel = mongoose.model('Person',PersonSchema)
const daly = new PersonModel({name:{first:'daly',last:'yang'}
})
复制代码

如果每次想使用全名就得这样

console.log(daly.name.first + ' ' + daly.name.last);
复制代码

显然这是很麻烦的,我们可以定义虚拟属性:

PersonSchema.virtual('name.full').get(function(){return this.name.first + ' ' + this.name.last;
});
复制代码

  那么就能用daly.name.full来调用全名了,反之如果知道full,也可以反解first和last属性

PersonSchema.virtual('name.full').set(function(name){var split = name.split(' ');this.name.first = split[0];this.name.last = split[1];
});
var PersonModel = mongoose.model('Person',PersonSchema);
var krouky = new PersonModel({});
krouky.name.full = 'daly yang';
console.log(krouky.name.first);
复制代码

Model

1---什么是Model

Model模型,是经过Schema构造来的,除了Schema定义的数据库骨架以外,还具有数据库行为模型,他相当于管理数据库属性、行为的类。

实际上,Model才是操作数据库最直接的一块内容. 我们所有的CRUD就是围绕着Model展开的。

2---如何创建Model

  你必须通过Schema来创建,如下:

const TankSchema = new Schema({name:'String',size:'String' 
})
const TankModel = mongoose.model('Tank',TankSchema)
复制代码

3---操作Model

该模型就能直接拿来操作,具体查看API,例如:

const tank = {'something',size:'small'}
TankModel.create(tank)
复制代码

注意:

你可以使用Model来创建Entity,Entity实体是一个特有Model具体对象,但是他并不具备Model的方法,只能用自己的方法。

const tankEntity = new TankModel('someother','size:big');
tankEntity.save()
复制代码

实例

增加

  • save()
  • create()
  • insertOne() 插入单条数据
  • insertMany() 比create方法快,因为是多条数据一次操作

如果是Entity,使用save方法,如果是Model,使用create方法

module.exports = {async mCreateModal(ctx, next) {let result = {success: false,code: 0,resultDes: ""}let param = ctx.request.bodytry {// Modal创建let data = await Ocrud.create(param)result.success = trueresult.data = datactx.body = result} catch (e) {console.log('!err==', e)result.code = -1result.resultDes = ectx.body = resultreturn next}},async mCreateEntity(ctx, next) {let result = {success: false,code: 0,resultDes: ""}let param = ctx.request.bodyconst user = new Ocrud(param)try {// Entity创建let data = await user.save()result.success = trueresult.data = datactx.body = result} catch (e) {console.log('!err==', e)result.code = -2result.resultDes = ectx.body = resultreturn next}},async mInsertMany(ctx, next) {let result = {success: false,code: 0,resultDes: ""}let param = ctx.request.userstry {let data = await user.insertMany(param)result.success = trueresult.data = datactx.body = result} catch (e) {console.log('!err==', e)result.code = -2result.resultDes = ectx.body = resultreturn next}},
}
复制代码

更新

有三种方式来更新数据:

  1. update 该方法会匹配到所查找的内容进行更新,不会返回数据
  2. updateone 一次更新一条
  3. updateMany 一次更新多条
  4. findOneAndUpdate 该方法会根据查找去更新数据库,另外也会返回查找到的并未改变的数据
  5. findByIdAndUpdate 该方法跟上面的findOneAndUpdate方法功能一样,不过他是根据ID来查找文档并更新的

三个方法都包含四个参数,稍微说明一下几个参数的意思:

Model.update(conditions, doc, [options], [callback])
复制代码

conditions:查询条件
update:更新的数据对象,是一个包含键值对的对象
options:是一个声明操作类型的选项,这个参数在下面再详细介绍
callback:回调函数

options

safe (boolean): 默认为true。安全模式
upsert (boolean): 默认为false。如果不存在则创建新记录
multi (boolean): 默认为false。是否更新多个查询记录
runValidators: 如果值为true,执行Validation验证
setDefaultsOnInsert: 如果upsert选项为true,在新建时插入文档定义的默认值
strict (boolean): 以strict模式进行更新
overwrite (boolean): 默认为false。禁用update-only模式,允许覆盖记录
复制代码

对于options参数,在update方法中和findOneAndUpdate、findByIdAndUpdate两个方法中的可选设置是不同的;

在update方法中,options的可选设置为:

{safe:true|false, //声明是否返回错误信息,默认trueupsert:false|true, //声明如果查询不到需要更新的数据项,是否需要新插入一条记录,默认falsemulti:false|true, //声明是否可以同时更新多条记录,默认falsestrict:true|false //声明更新的数据中是否可以包含在schema定义之外的字段数据,默认true
}
复制代码

findOneAndUpdate,options可选设置项为:

new: bool - 默认为false。返回修改后的数据。
upsert: bool - 默认为false。如果不存在则创建记录。
fields: {Object|String} - 选择字段。类似.select(fields).findOneAndUpdate()。
maxTimeMS: 查询用时上限。
sort: 如果有多个查询条件,按顺序进行查询更新。
runValidators: 如果值为true,执行Validation验证。
setDefaultsOnInsert: 如果upsert选项为true,在新建时插入文档定义的默认值。
rawResult: 如果为真,将原始结果作为回调函数第三个参数。
复制代码

findByIdAndUpdate,options可选设置项为:

new: bool - 默认为false。返回修改后的数据。
upsert: bool - 默认为false。如果不存在则创建记录。
runValidators: 如果值为true,执行Validation验证。
setDefaultsOnInsert: 如果upsert选项为true,在新建时插入文档定义的默认值。
sort: 如果有多个查询条件,按顺序进行查询更新。
select: 设置返回的数据字段
rawResult: 如果为真,将原始结果作为返回
复制代码

例子:

// START
async mUpdate(ctx, next) {let result = {success: false,code: 0,resultDes: ""}let condition = ctx.request.body.conditionlet doc = ctx.request.body.docconsole.log(condition, '===condition')console.log(doc, '===doc')try {let data = await Ocrud.update(condition, doc, { multi: true })result.success = trueresult.data = datactx.body = result} catch (e) {console.log('!er==', e)result.code = -3result.resultDes = ectx.body = resultreturn next}
},
async mUpdateOne(ctx, next) {let result = {success: false,code: 0,resultDes: ""}let condition = ctx.request.body.conditionlet doc = ctx.request.body.doctry {let data = await Ocrud.updateOne(condition, doc)result.success = trueresult.data = datactx.body = result} catch (e) {console.log('!er==', e)result.code = -3result.resultDes = ectx.body = resultreturn next}
},
async mUpdateMany(ctx, next) {let result = {success: false,code: 0,resultDes: ""}let condition = ctx.request.body.conditionlet doc = ctx.request.body.doctry {let data = await Ocrud.updateMany(condition, doc, { multi: true })result.success = trueresult.data = datactx.body = result} catch (e) {console.log('!er==', e)result.code = -3result.resultDes = ectx.body = resultreturn next}
},
async mFindOneAndUpdate(ctx, next) {let result = {success: false,code: 0,resultDes: ""}let condition = ctx.request.body.conditionlet doc = ctx.request.body.doctry {let data = await Ocrud.findOneAndUpdate(condition, doc, { new: true, rawResult: true })result.success = trueresult.data = datactx.body = result} catch (e) {console.log('!er==', e)result.code = -3result.resultDes = ectx.body = resultreturn next}
},
async mFindByIdAndUpdate(ctx, next) {let result = {success: false,code: 0,resultDes: ""}let _id = ctx.request.body.idlet doc = ctx.request.body.doctry {let data = await Ocrud.findByIdAndUpdate(_id, doc)result.success = trueresult.data = datactx.body = result} catch (e) {console.log('!er==', e)result.code = -3result.resultDes = ectx.body = resultreturn next}
},
// END 
复制代码

删除

  • remove() 删除所有符合条件的文档,如果只想删除第一个符合条件的对象,可以添加设置single为true
  • delete() 删除第一个符合对象的文档,会忽视single的值
  • deleteMany() 删除所有符合条件的文档,会忽视single的值
  • findOneAndRemove()
  • findByIdAndRemove()

remove方法有两种使用方式,一种是用在模型上,另一种是用在模型实例上,例如:

User.remove({ name : /Simon/ } , function (err){if (!err){// 删除名字中包含simon的所有用户}
});

User.findOne({ email : ‘simon@theholmesoffice.com’},function (err,user){
if (!err){
user.remove( function(err){
// 删除匹配到该邮箱的第一个用户
})
}
})
复制代码

接下来看一下findOneAndRemove方法: sort: 如果有多个查询条件,按顺序进行查询更新 maxTimeMS: 查询用时上限 requires mongodb >= 2.6.0 select: 设置返回的数据字段 rawResult: 如果为真,将原始结果返回

User.findOneAndRemove({name : /Simon/},{sort : 'lastLogin', select : 'name email'},function (err, user){if (!err) {console.log(user.name + " removed");// Simon Holmes removed}
})
复制代码

另外一个findByIdAndRemove方法则是如出一辙的。 sort: 如果有多个查询条件,按顺序进行查询更新 select: 设置返回的数据字段 rawResult: 如果为真,将原始结果返回

User.findByIdAndRemove(req.body._id,function (err, user) {if(err){console.log(err)return}console.log("User deleted:", user)
})
复制代码

例子:

// START
async mDelete(ctx, next) {let result = {success: false,code: 0,resultDes: ""}let param = ctx.request.body.conditiontry {let data = await Ocrud.delete(param)result.success = trueresult.data = datactx.body = result} catch (e) {console.log('!er==', e)result.code = -3result.resultDes = ectx.body = resultreturn next}
},
async mRemove(ctx, next) {let result = {success: false,code: 0,resultDes: ""}let param = ctx.request.body.conditiontry {let data = await Ocrud.remove(param)result.success = trueresult.data = datactx.body = result} catch (e) {console.log('!er==', e)result.code = -3result.resultDes = ectx.body = resultreturn next}
},
async mDeleteMany(ctx, next) {let result = {success: false,code: 0,resultDes: ""}let param = ctx.request.body.conditiontry {let data = await Ocrud.deleteMany(param)result.success = trueresult.data = datactx.body = result} catch (e) {console.log('!er==', e)result.code = -3result.resultDes = ectx.body = resultreturn next}
},
async mFindOneAndRemove(ctx, next) {let result = {success: false,code: 0,resultDes: ""}let param = ctx.request.body.conditiontry {let data = await Ocrud.findOneAndRemove(param)result.success = trueresult.data = datactx.body = result} catch (e) {console.log('!er==', e)result.code = -3result.resultDes = ectx.body = resultreturn next}
},
async mFindByIdAndRemove(ctx, next) {let result = {success: false,code: 0,resultDes: ""}let param = ctx.request.body.idtry {let data = await Ocrud.findByIdAndRemove(param)result.success = trueresult.data = datactx.body = result} catch (e) {console.log('!er==', e)result.code = -3result.resultDes = ectx.body = resultreturn next}
},
// END 
复制代码

综合写法

  • bulkWrite() 可以一次发送insertOne, updateOne, updateMany, replaceOne, deleteOne, and/or deleteMany多种操作命令,比单条命令一次发送效率要高

Character.bulkWrite([{insertOne: {document: {name: 'Eddard Stark',title: 'Warden of the North'}}},{updateOne: {filter: { name: 'Eddard Stark' },// If you were using the MongoDB driver directly, you'd need to do// `update: { $set: { title: ... } }` but mongoose adds $set for// you.update: { title: 'Hand of the King' }}},{deleteOne: {{filter: { name: 'Eddard Stark' }}}}
]).then(handleResult)
复制代码

Query

Query构造函数被用来构建查询,不需直接实例化Query,可以使用MOdel函数像 MOdel.find()

const query = MyModel.find(); // `query` is an instance of `Query`
query.setOptions({ lean : true });
query.collection(model.collection);
query.where('age').gte(21).exec(callback);

// You can instantiate a query directly. There is no need to do
// this unless you’re an advanced user with a very good reason to.
const query = new mongoose.Query();
复制代码

链式查询

因为query的操作始终返回自身,我们可以采用更形象的链式写法

query.find({ occupation: /host/ }).where('name.last').equals('Ghost').where('age').gt(17).lt(66).where('likes').in(['vaporizing', 'talking']).limit(10).sort('-occupation').select('name occupation').exec(callback);
复制代码
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 数据库查询事务隔离级别时,报错误代码:Unknown system variable tx_isolation解决办法

    我用的数据库版本是8.0.19 cmd进入dos命令窗口 第一种 mysql -u用户名 -p密码 回车 第二种 输入: mysql -u用户名 -p 回车 然后输入密码 回车 就可以看到版本信息,一般的低版本可以用户名密码一起输入,高版本以后为了安全 需要用密文形式输入使用下面这个语句查询事务隔离级别…...

    2024/5/10 15:32:02
  2. 经典算法题1-输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字

    话不多说,代码如下: public class Text3 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int[][] arr = new int[100][100];System.out.print("输入矩阵的列数:");int line = sc.nextInt();System.out.print("输入矩阵的行数:&…...

    2024/4/24 8:53:28
  3. C语言编译器学习

    手把手教你写C语言编译器: https://cpp.ctolib.com/docs/sfile/diy-c-compiler/1.html自己动手写编译器链接器(收费视频):https://edu.csdn.net/course/detail/1418...

    2024/5/10 13:33:30
  4. 算法结构

    顺序结构 最简单的结构,从上往下执行,就像阅读文章的顺序一样,任何算法都离不开 public class order {public static void main(String[] args) {System.out.println("1");System.out.println("2");System.out.println("3");System.out.print…...

    2024/5/10 5:40:15
  5. Redis哨兵原理,我忍你很久了!

    redis主从复制的作用中有这么一句话“主从复制是高可用的基石”,那什么是高可用呢!高可用就是减少系统不能提供的时间,也就是常听到的以6个9为基准。实现高可用必不可少的就是哨兵和集群。本文主要介绍哨兵机制。本文主要围绕如下几个方面介绍哨兵哨兵介绍 哨兵配置 哨兵工作…...

    2024/4/19 12:58:13
  6. 使用linux版ssh远程登录linux系统

    ** 使用linux版ssh远程登录linux系统 ** 1、将两台主机分别修改主机名称为oracle linux 和centos linux 参考这篇文章: 修改主机名称 2、分别修改各自的hosts路由解析 [root@centoslinux oracle]# vi /etc/hosts 127.0.0.1 centoslinu localhost.localdomain localhost4 loc…...

    2024/4/24 11:23:52
  7. 02 00JavaScript编程入门

    文章目录1 JavaScript基础语法1.1 简介1.2 输出1.3 定义变量1.4 定义函数2 JavaScript事件处理2.1 基础事件2.2 鼠标事件2.3 动态绑定事件3 JavaScript与表单交互3.1 数据检验3.2 表单验证模型3.3 密码验证3.4 单选钮3.5 复选框3.6 下拉列表框3.7 文本域4 window对象5 表单验证…...

    2024/5/10 12:04:01
  8. Spark核心编程(RDD转换算子)之聚合算子

    文章目录RDD转换算子 之 聚合算子reduceByKey说明案例groupByKey说明案例aggregateByKey说明案例foldByKey说明案例combineByKey说明案例聚合算子小结有预聚合reduceByKeyaggregateByKeyfoldByKeycombineByKey无预聚合groupByKey RDD转换算子 之 聚合算子聚合算子可以说是Spark…...

    2024/5/10 9:17:44
  9. Java:简单介绍方法的覆盖

    1.方法的覆盖(重写): 就是在子类中重写了与父类中有相同名字的方法。 2、方法的覆盖原则: (1)覆盖方法的返回类型、方法名称、参数列表必须与原方法相同。 (2)覆盖方法不能比原方法访问性差(即访问权限不允许缩小) (3)覆盖方法不能比原方法抛出更多的异常。 (4)被…...

    2024/4/15 5:09:36
  10. 留言板连接数据库删除功能及时间功能

    1.时间 利用时间戳载入时间 在views目录下的ejs页面(html页面)写入在schema下的j文档模型js文件写入timestamps:true2.删除reff 在views目录下的ejs页面(html页面)写入<a href=’’ /a>在routes目录下的api.js 一级路由页面写入二级路由删除方法...

    2024/5/10 4:29:05
  11. C语言二分法函数实现过程中可能遇到的问题。

    Position BinarySearch( List L, ElementType X ) {int left = 1;//习惯上初始化为一,方便理解。前提是在数组中就从1开始储存。int right = L->Last;int mid=(left+right)/2;while (left<=right) {if(X<L->Data[mid]){right = mid-1;//此处忘记减一,因为此算法是…...

    2024/5/7 0:26:48
  12. [Errno13] Permission denied

    环境 ubuntu18.04(vmware) 问题描述 执行pip3 install tensorflow出现问题 问题分析 权限不够 解决方法 sudo pip3 install tensorflow或者 python3 -m pip install --user tensorflow...

    2024/4/24 11:23:50
  13. JAVA1.8新特性-函数式接口

    JDK1.8中引入了用于函数式编程的支持。java中的函数式接口指:有且只有一个方法的接口。函数式接口是适用于函数式编程场景的接口。而java中的函数式编程指的就是Lamda,所以函数式接口就是可以适用于Lamda使用的接口。只要确保接口中有且仅有一个抽象方法,java中的Lamda才能顺…...

    2024/5/10 5:06:16
  14. 高效解决PPA软件源安装失败的问题

    问题背景 使用apt或者apt-get命令,会遇到部分软件仅在PPA提供,而出现下载更新失败的情况 PPA软件源简介 网站部署国家 以下为nslookup的查询结果,通过地址查询可以得知该IP位于英国 > ppa.launchpad.net Server: 127.0.0.53 Address: 127.0.0.53#53Non-authoritative an…...

    2024/4/24 11:23:51
  15. 关于打开glssfish服务器域管理控制台Status:The Admin Console application is loaded问题解决办法

    因为glassfish4.1.1版本存在一个致命漏洞,创建数据库连接池有个大坑,所以我换了glassfish的旧版本4.0,但是在进入服务器的域管理控制台时却发现一直在转圈圈,等了好久也没能进入主页。 一直显示Status:The Admin Console application is loaded解决这个转圈圈其实很简单,…...

    2024/5/6 4:08:17
  16. mysql多表查询,事务,DCL

    ##多表查询: * 查询语法: select 列名列表 from 表名列表 where… * 准备sql # 创建部门表 CREATE TABLE dept( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20) ); INSERT INTO dept (NAME) VALUES (‘开发部’),(‘市场部’),(‘财务部’); # 创建员工表 CREATE TABL…...

    2024/5/9 6:51:03
  17. HQChart使用教程62-品种小数位数设置

    HQChart使用教程62-品种小数位数设置品种小数位数品种小数位置类例子特殊品种HQChart代码地址如果教程或hqchart对你有帮助, 请在git上star,教程点下赞 。谢谢~~ 品种小数位数 不同的品种, 它的最小交易单位是不一样的, hqchart内置简单的做了对不通品种设置了默认的小数位…...

    2024/4/24 11:23:45
  18. 编译原理学习笔记(二十二)~习题:声明语句的翻译

    ...

    2024/4/24 11:23:47
  19. 疯狂SpringCloud微服务架构实战 (Eureka -- 服务注册中心)

    一、Eureka介绍Eureka 提供了基于 REST 的服务,在集群中主要用于服务管理。Eureka提供了基于Java语言的客户端组件,客户端组件实现了负载均衡的功能,为业务组件的集群部署创造了条件。使用该框架,可以将业务组件注册到 Eureka 容器中,这些组件可以进行集群部署,Eureka 主…...

    2024/5/2 21:05:28
  20. js中的设计模式

    一,单例模式 使用同一个构造函数生成的实例化对象,就算属性和方法相同,生成的也都是不同的实例化对象 解决难点就是同一个构造函数生成同一个实例化对象,防止重复实例化 原理,判断这个构造函数是否使用过,,使用过就返回之前的对象,如果没有那就生成一个实例化对象 解决…...

    2024/5/3 11:37:37

最新文章

  1. 如何编写可读性高的嵌入式 C 语言代码?|2024网盘分享6.89G嵌入式-物联网 嵌入式新手C语言必学教程

    目录 面向对象的 C 基础知识 结构体 函数指针 将函数指针作为结构体的成员 面向对象语言的特性 语言层次的面向对象 C 语言的面向对象 定义接口 接口的实现 测试 测试代码 结束语 面向对象的 C 面向对象的语言更接近人的思维方式&#xff0c;而且在很大程度上降低了…...

    2024/5/10 18:08:01
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/5/9 21:23:04
  3. C++ 【原型模式】

    简单介绍 原型模式是一种创建型设计模式 | 它使你能够复制已有对象&#xff0c;客户端不需要知道要复制的对象是哪个类的实例&#xff0c;只需通过原型工厂获取该对象的副本。 以后需要更改具体的类或添加新的原型类&#xff0c;客户端代码无需改变&#xff0c;只需修改原型工…...

    2024/5/10 0:24:07
  4. 腾讯云轻量服务器流量不够用了会怎么样?

    腾讯云轻量应用服务器是限制月流量的&#xff0c;如果当月流量不够用了&#xff0c;流量超额了怎么办&#xff1f;流量超额后&#xff0c;需要另外支付流量费&#xff0c;如果你的腾讯云账号余额&#xff0c;就会自动扣除对应的流量费&#xff0c;如果余额不足&#xff0c;轻量…...

    2024/5/10 0:23:51
  5. 【外汇早评】美通胀数据走低,美元调整

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

    2024/5/10 12:36:12
  6. 【原油贵金属周评】原油多头拥挤,价格调整

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

    2024/5/9 15:10:32
  7. 【外汇周评】靓丽非农不及疲软通胀影响

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

    2024/5/4 23:54:56
  8. 【原油贵金属早评】库存继续增加,油价收跌

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

    2024/5/9 4:20:59
  9. 【外汇早评】日本央行会议纪要不改日元强势

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

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

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

    2024/5/4 23:55:05
  11. 【外汇早评】美欲与伊朗重谈协议

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

    2024/5/4 23:54:56
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

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

    2024/5/7 11:36:39
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

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

    2024/5/4 23:54:56
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

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

    2024/5/6 1:40:42
  15. 【外汇早评】美伊僵持,风险情绪继续升温

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

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

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

    2024/5/8 20:48:49
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

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

    2024/5/7 9:26:26
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

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

    2024/5/4 23:54:56
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

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

    2024/5/8 19:33:07
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

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

    2024/5/5 8:13:33
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

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

    2024/5/8 20:38:49
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

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

    2024/5/4 23:54:58
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

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

    2024/5/10 10:22:18
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

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

    2024/5/9 17:11:10
  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