在这里插入图片描述

1.概述

类似文章:【Flink】Flink StreamingFileSink

转载:Flink Streaming File Sink

2.背景

Flink 支持将流数据以文件形式存储到外部系统,典型使用场景是将数据写入Hive表所在 HDFS存储路径,通过Hive 做查询分析。随着Flink文件写入被业务广泛使用,暴露出很多问题,因此需要了解 Flink Streaming File sink 的实现逻辑。

3.案例

从Kafka消费JSON数据,转换为 UserInfo 实体类数据流,最终以Parquet 格式写入Hive表对应的HDFS路径。使用 Flink 1.12.1,Hadoop 2.8.0, hive 2.3.8。

-----------------------------
- hive 建表语句
-----------------------------create table userinfo(userid int,username string
) stored as parquet;-----------------------------
- java 实体类
-----------------------------
public class UserInfo {private int userId;private String userName;public int getUserId() {return userId;}public void setUserId(int userId) {this.userId = userId;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}@Overridepublic String toString() {return "UserInfo{" +"userId=" + userId +", userName='" + userName + '\'' +'}';}
}-----------------------------
- Flink 文件写入程序
-----------------------------
public class Kafka2Parquet {public static void main(String[] args) throws Exception {StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();Properties props = new Properties();props.setProperty("bootstrap.servers", "localhost:9092");props.setProperty("group.id", "test_001");env.setParallelism(1);env.enableCheckpointing(30000);env.getCheckpointConfig().setCheckpointingMode(CheckpointingMode.EXACTLY_ONCE);env.getCheckpointConfig().enableExternalizedCheckpoints(CheckpointConfig.ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION);env.setRestartStrategy(RestartStrategies.fixedDelayRestart(3,2000));env.setStateBackend(new FsStateBackend("hdfs://localhost:9000/user/todd/checkpoint"));FlinkKafkaConsumer<String> dataStream = new FlinkKafkaConsumer("mqTest02", new SimpleStringSchema(), props);dataStream.setStartFromLatest();DataStream<UserInfo> userInfoDataStream = env.addSource(dataStream).map(value -> JsonUtils.parseJson(value, UserInfo.class));// 1. 设置BulkFormat Builder  2.使用 CheckpointRollingPolicyStreamingFileSink<UserInfo> parquetSink = StreamingFileSink.forBulkFormat(new Path("hdfs://localhost:9000/user/hive/warehouse/userinfo"),  ParquetAvroWriters.forReflectRecord(UserInfo.class)).withRollingPolicy(OnCheckpointRollingPolicy.build()).build();userInfoDataStream.addSink(parquetSink);env.execute();}
}-----------------------------
- 生成的parquet 文件名称及路径
-----------------------------
inprogress 临时文件
hdfs://localhost:9000/user/hive/warehouse/userinfo/2021-08-09--19/.part-0-0.inprogress.18296793-9fde-4376-b6fc-7c47512bd108part 最终文件
hdfs://localhost:9000/user/hive/warehouse/userinfo/2021-08-09--19/part-0-0

4. 核心类

  1. BulkWriter:用于不同格式的数据文件批量写入,主要实现类ParquetBulkWriter、AvroBulkWriter、OrcBulkWriter、SequenceFileWriter代表了数据写入的压缩格式。

  2. RecoverableWriter: 具有失败恢复能力的外部文件系统写入器,主要实现类HadoopRecoverableWriter、S3RecoverableWriter、LocalRecoverableWriter,代表对不同类型文件系统的操作。

  3. BulkPartWriter:InProgressFileWriter 实现类用来向inprogress文件写数据,持有BulkWriter。

  4. OutputStreamBasedPartFileWriter:Part Writer 基类,使用 RecoverableFsDataOutputStream 写出数据。

  5. RecoverableFsDataOutputStream:文件系统输出流,能够从文件系统的指定偏移量进行数据写入。

  6. BucketAssigner:负责将数据划分到不同的Bucket,可以根据数据格式自定义Assigner。内部集成 SimpleVersionedSerializer,用来对BucketID 做序列化/反序列化操作。
    a. BucketAssigner 子类 DateTimeBucketAssigner 根据数据的ProcessTime 生成 yyyy-MM-dd–HH 格式的 Bucket 名称。同时使用 SimpleVersionedStringSerializer 对Bucket 名称序列化。

  7. Bucket:StreamingFileSink数据输出的目录,每一条处理的数据根据BucketAssigner被分配到某个Bucket。主要功能:

1. 维护一份 InProgressFile 文件,负责该文件的创建、数据写入、提交写入。
2.StreamingFileSink 执行Checkpoint时,负责构建 BucketState 进而进行该状态序列化 。
3.StreamingFileSink Checkpoint 完成后,重命名 InProgressFile 文件,4.StreamingFileSink 从savepoint 启动时,从 BucketState 恢复 InProgressFile 相关信息。
  1. BucketState: Bucket的状态信息。通过BucketState能够恢复Bucket inprogress 文件及当前写入偏移量,从而继续向该 inprogress文件中追加内容,同时能够恢复 Pending状态文件信息,从而继续执行后续重名逻辑。

  2. Buckets:负责管理 StreamingFileSink 中所有活跃状态的 Bucket。包括数据所在Bucket 分配,Active Bucket 快照状态存储。

  3. RollingPolicy:定义了buckt 生成新的in-progress文件、及将in-progress 文件变更为最终part文件的策略。 最常用的策略是CheckpointRollingPolicy,在每次Checkpoint完成时,根据in-progress文件生成part文件。

  4. StreamingFileSinkHelper:StreamingFileSink 调用 StreamingFileSinkHelper 方法完成对Buckets数据的写入及状态存储。

  5. StreamingFileSink:根据BucketsBuilder构造器创建Buckets,初始化时创建StreamingFileSinkHelper,在Sink、checkpoint 方法中调用 StreamingFileSinkHelper 接口。

5.数据写入

Flink写文件流程为,先将数据写入inprogress临时文件,在满足RollingPolicy时,将inprogress临时文件重命名为最终的part文件。
参考Flink1.12.1版本的代码,学习下 Flink 将数据写入文件的具体流程。

在这里插入图片描述
StreamingFileSink 执行 invoke() 方法处理数据,是通过调用 StreamingFileSinkHelper onElement()方法对 Buckets 进行操作。

functions.sink.filesystem.Buckets#onElementpublic Bucket<IN, BucketID> onElement(final IN value,final long currentProcessingTime,@Nullable final Long elementTimestamp,final long currentWatermark)throws Exception {// note: 获取当前数据所在的 BucketID, 即被被分桶后的子文件夹名称final BucketID bucketId = bucketAssigner.getBucketId(value, bucketerContext);// note: 从已缓存的集合中获取Bucket 或者 新建Bucket并缓存final Bucket<IN, BucketID> bucket = getOrCreateBucketForBucketId(bucketId);// note: 将数据写入具体 bucketbucket.write(value, currentProcessingTime);return bucket;
}

Buckets 处理数据时,需要根据定义的 BucketAssigner 获取数据所在的 Bucket 标识。上述案例使用了 DateTimeBucketAssigner 了解下它如何根据ProcessTime 获取 BucketID。

bucketassigners.DateTimeBucketAssigner#getBucketIdpublic String getBucketId(IN element, BucketAssigner.Context context) {if (dateTimeFormatter == null) {// note: 将Processing Time 转换为 yyyy-MM-dd--HH 格式dateTimeFormatter = DateTimeFormatter.ofPattern(formatString).withZone(zoneId);}return dateTimeFormatter.format(Instant.ofEpochMilli(context.currentProcessingTime()));
}

根据 BucketID 从Buckets 中拿到有效的Bucket。

filesystem.Buckets#getOrCreateBucketForBucketId  private Bucket<IN, BucketID> getOrCreateBucketForBucketId(final BucketID bucketId)throws IOException {Bucket<IN, BucketID> bucket = activeBuckets.get(bucketId);if (bucket == null) {// note: 构建buckt所在完整路径,例如 hdfs://localhost:9000/user/hive/warehouse/userinfo/2020-08-08--14final Path bucketPath = assembleBucketPath(bucketId);// note: 创建 Bucket 并由activeBuckets缓存bucket =bucketFactory.getNewBucket(subtaskIndex,bucketId,bucketPath,maxPartCounter,bucketWriter,rollingPolicy,fileLifeCycleListener,outputFileConfig);activeBuckets.put(bucketId, bucket);notifyBucketCreate(bucket);}return bucket;
}

初次向Bucket写入数据,需要创建part的临时文件及用来向文件写数据的InProgressFileWriter对象,同时创建BulkWriter,用来进行数据写入。

  1. 创建临时文件:根据inprocess文件生成规则,在HadoopRecoverableFsDataOutputStream初始化时创建并返回针对该文件的DataOutputStream。
  2. 创建BulkWriter:当前案例中由ParquetWriterFactory工厂类创建ParquetBulkWriter,并传递临时文件对应的DataOutputStream。
sinkfilesystem.Bucket#write 
void write(IN element, long currentTime) throws IOException {if (inProgressPart == null || rollingPolicy.shouldRollOnEvent(inProgressPart, element)) {inProgressPart = rollPartFile(currentTime);}//note: BulkPartWriter使用 BulkWriter 写入数据。inProgressPart.write(element, currentTime);
}private InProgressFileWriter<IN, BucketID> rollPartFile(final long currentTime)throws IOException {// note: 关闭part文件。closePartFile();final Path partFilePath = assembleNewPartPath();// note: 创建InProgressFileWriterreturn bucketWriter.openNewInProgressFile(bucketId, partFilePath, currentTime);
}// 创建BulkPartWriter 使用BulkWriter进行数据写入,
OutputStreamBasedBucketWriter#openNewInProgressFile
public InProgressFileWriter<IN, BucketID> openNewInProgressFile(final BucketID bucketID, final Path path, final long creationTime)throws IOException {// note: 根据的inprocess文件路径,由recoverableWriter创建。return openNew(bucketID, recoverableWriter.open(path), path, creationTime);
}
public InProgressFileWriter<IN, BucketID> openNew(final BucketID bucketId,final RecoverableFsDataOutputStream stream,final Path path,final long creationTime)throws IOException {final BulkWriter<IN> writer = writerFactory.create(stream);return new BulkPartWriter<>(bucketId, stream, writer, creationTime);}
}// 创建hdfs文件系统临时文件,针对该文件创建 RecoverableFsDataOutputStream
HadoopRecoverableWriter#open
public RecoverableFsDataOutputStream open(Path filePath) throws IOException {final org.apache.hadoop.fs.Path targetFile = HadoopFileSystem.toHadoopPath(filePath);final org.apache.hadoop.fs.Path tempFile = generateStagingTempFilePath(fs, targetFile);return new HadoopRecoverableFsDataOutputStream(fs, targetFile, tempFile);
}HadoopRecoverableFsDataOutputStream(FileSystem fs, Path targetFile, Path tempFile)throws IOException {// note: 确保hadoop 支持 truncate方法ensureTruncateInitialized();this.fs = checkNotNull(fs);this.targetFile = checkNotNull(targetFile);this.tempFile = checkNotNull(tempFile);// 创建临时文件this.out = fs.create(tempFile);
}

将数据以parquet格式写入临时文件,调用链路比较长中间涉及不少工厂类及代理类,最终调用的还是parquet框架本身的API。

filesystem.BulkPartWriter#write
public void write(IN element, long currentTime) throws IOException {writer.addElement(element);markWrite(currentTime);
}parquet.ParquetBulkWriter#addElement
public void addElement(T datum) throws IOException {// note: org.apache.parquet.hadoop.ParquetWriterparquetWriter.write(datum); 
}

6.checkpoint 过程

在生产环境中大多使用 OnCheckpointRollingPolicy 策略,即在执行Checkpoint时存储BucketState,提交已写入的数据记录已写入数据的偏移量,在CK完成后将 inprogress 文件重命名为最终 part 文件。
根据Checkpoint生命周期方法,了解执行过程。
在这里插入图片描述

  1. initializeState 创建StreamingFileSinkHelper,做一些初始化工作。如果从已有的状态快照启动,会对BucketStates进行恢复,稍后详细介绍快照恢复的逻辑,先看状态快照中存储了什么信息,及后续逻辑。
  2. snapshotState 状态快照存储。Buckets 的 snapshotState() 会保存序列化后的 BucketState 及当前子任务处理的最大part文件个数。
public void snapshotState(final long checkpointId,final ListState<byte[]> bucketStatesContainer,final ListState<Long> partCounterStateContainer)throws Exception {
// note: 清理历史状态信息
bucketStatesContainer.clear();
partCounterStateContainer.clear();// note: 将 BucketState 以二进制格式存储到 bucketStatesContainer
snapshotActiveBuckets(checkpointId, bucketStatesContainer);
// note: 存储当前任务处理的最大文件数    
partCounterStateContainer.add(maxPartCounter);
}private void snapshotActiveBuckets(final long checkpointId, final ListState<byte[]> bucketStatesContainer)throws Exception {for (Bucket<IN, BucketID> bucket : activeBuckets.values()) {//note: 每个正在使用的Bucket会生成BucketStatefinal BucketState<BucketID> bucketState = bucket.onReceptionOfCheckpoint(checkpointId);// note: 将BucketState 序列化后存储到 ListStatefinal byte[] serializedBucketState =SimpleVersionedSerialization.writeVersionAndSerialize(bucketStateSerializer, bucketState);bucketStatesContainer.add(serializedBucketState);}
}BucketState<BucketID> onReceptionOfCheckpoint(long checkpointId) throws IOException {//note: 关闭 inProgressPart, 填充BucketState 使用的属性信息prepareBucketForCheckpointing(checkpointId);//note: ck 期间有数据写入。if (inProgressPart != null) {inProgressFileRecoverable = inProgressPart.persist();inProgressFileCreationTime = inProgressPart.getCreationTime();this.inProgressFileRecoverablesPerCheckpoint.put(checkpointId, inProgressFileRecoverable);}// note: 构建出BucketStatereturn new BucketState<>(bucketId,bucketPath,inProgressFileCreationTime,inProgressFileRecoverable,pendingFileRecoverablesPerCheckpoint);
}private void prepareBucketForCheckpointing(long checkpointId) throws IOException {if (inProgressPart != null && rollingPolicy.shouldRollOnCheckpoint(inProgressPart)) {closePartFile();}//  note: closePartFile()会将生成的 pendingFileRecoverable 写入pendingFileRecoverablesForCurrentCheckpointif (!pendingFileRecoverablesForCurrentCheckpoint.isEmpty()) {pendingFileRecoverablesPerCheckpoint.put(checkpointId, pendingFileRecoverablesForCurrentCheckpoint);pendingFileRecoverablesForCurrentCheckpoint = new ArrayList<>();}
}

closePartFile() 主要处理工作包含:

  1. 使用 BulkWriter 将数据 flush 到外部文件。
  2. 基于当前 inprogressPart 创建出PendingFileRecoverable对象,其中封装了 HadoopFsRecoverable 对包含了targetFile(part文件)、tempFile(inprogress文件)、offset(数据当前写入的偏移量)属性,是最重要的状态信息。在checkpoint完成后,会将tempFile命名为targetFile。
  3. 关闭inprogressPart,填充 pendingFileRecoverablesForCurrentCheckpoint信息,代表当前CK正在处理的 inprogressPart文件。
private InProgressFileWriter.PendingFileRecoverable closePartFile() throws IOException {InProgressFileWriter.PendingFileRecoverable pendingFileRecoverable = null;if (inProgressPart != null) {//note: 和inProgressPart文件一一对应pendingFileRecoverable = inProgressPart.closeForCommit();//note: 存储到LISTpendingFileRecoverablesForCurrentCheckpoint.add(pendingFileRecoverable);inProgressPart = null;}return pendingFileRecoverable;
}filesystem.BulkPartWriter#closeForCommit
public PendingFileRecoverable closeForCommit() throws IOException {// note: BulkWriter   writer.flush();writer.finish();// note: OutputStreamBasedPartFileWriter#closeForCommitreturn super.closeForCommit();}OutputStreamBasedPartFileWriter#closeForCommit  
public PendingFileRecoverable closeForCommit() throws IOException {// note: 创建OutputStreamBasedPendingFileRecoverable封装HadoopRecoverableFsDataOutputStreamreturn new OutputStreamBasedPendingFileRecoverable(currentPartStream.closeForCommit().getRecoverable());
}HadoopRecoverableFsDataOutputStream#closeForCommit  
public Committer closeForCommit() throws IOException {final long pos = getPos();close();// note: 构建HadoopFsRecoverable,最终会调用commit方法完成文件renamereturn new HadoopFsCommitter(fs, new HadoopFsRecoverable(targetFile, tempFile, pos));
}

notifyCheckpointComplete checkpoint完成后回调该方法完成对inprogress文件的rename,如果该方法执行失败不会撤销已生成的checkpoint。

注意HadoopFsCommitter执行commit对文件进行重命名时,并不会覆盖已有的part文件,此时数据准确性没办法保障

void onSuccessfulCompletionOfCheckpoint(long checkpointId) throws IOException {Iterator<Map.Entry<Long, List<InProgressFileWriter.PendingFileRecoverable>>> it =pendingFileRecoverablesPerCheckpoint.headMap(checkpointId, true).entrySet().iterator();while (it.hasNext()) {Map.Entry<Long, List<InProgressFileWriter.PendingFileRecoverable>> entry = it.next();for (InProgressFileWriter.PendingFileRecoverable pendingFileRecoverable :entry.getValue()) {// note: 从pendingFileRecoverable 生成PendingFile 执行commit(), 对progress文件重命名。bucketWriter.recoverPendingFile(pendingFileRecoverable).commit();}it.remove();}
}OutputStreamBasedBucketWriter#recoverPendingFile
public PendingFile recoverPendingFile(final PendingFileRecoverable pendingFileRecoverable)throws IOException {final RecoverableWriter.CommitRecoverable commitRecoverable;if (pendingFileRecoverable instanceof OutputStreamBasedPendingFileRecoverable) {commitRecoverable =((OutputStreamBasedPendingFileRecoverable) pendingFileRecoverable).getCommitRecoverable();} else if (pendingFileRecoverableinstanceof OutputStreamBasedInProgressFileRecoverable) {commitRecoverable =((OutputStreamBasedInProgressFileRecoverable) pendingFileRecoverable).getResumeRecoverable();} else {throw new IllegalArgumentException("can not recover from the pendingFileRecoverable");}return new OutputStreamBasedPendingFile(// note: 最终调用HadoopFsCommitter的commit方法。recoverableWriter.recoverForCommit(commitRecoverable));
}HadoopFsCommitter#commit
public void commit() throws IOException {final Path src = recoverable.tempFile();final Path dest = recoverable.targetFile();final long expectedLength = recoverable.offset();final FileStatus srcStatus;try {srcStatus = fs.getFileStatus(src);} catch (IOException e) {throw new IOException("Cannot clean commit: Staging file does not exist.");}if (srcStatus.getLen() != expectedLength) {// something was done to this file since the committer was created.// this is not the "clean" casethrow new IOException("Cannot clean commit: File has trailing junk data.");}try {// note: 文件被重命名为最终的part文件。fs.rename(src, dest);} catch (IOException e) {throw new IOException("Committing file by rename failed: " + src + " to " + dest, e);}
}

initializeState 时状态恢复主要包含以下几个主要流程:

  1. restoreInProgressFile 恢复正在处理的inprogress文件。从 inProgressFileRecoverable 获取inprogress文件名称及已写入数据的偏移量,重新构建BulkWriter。

  2. commitRecoveredPendingFiles 提交pending状态文件。pending状态文件数据已经写入文件系统,只是还未执行最终的commit操作对文件执行重命名,则继续执行后续重命名操作。

  3. updateActiveBucketId 如果activeBuckets 包含 restoredBucket 提交该restoredBucket,否则存储到activeBuckets。

/** Constructor to restore a bucket from checkpointed state. */
private Bucket(final int subtaskIndex,final long initialPartCounter,final BucketWriter<IN, BucketID> partFileFactory,final RollingPolicy<IN, BucketID> rollingPolicy,final BucketState<BucketID> bucketState,@Nullable final FileLifeCycleListener<BucketID> fileListener,final OutputFileConfig outputFileConfig)throws IOException {this(subtaskIndex,bucketState.getBucketId(),bucketState.getBucketPath(),initialPartCounter,partFileFactory,rollingPolicy,fileListener,outputFileConfig);restoreInProgressFile(bucketState);commitRecoveredPendingFiles(bucketState);
}private void restoreInProgressFile(final BucketState<BucketID> state) throws IOException {if (!state.hasInProgressFileRecoverable()) {return;}// we try to resume the previous in-progress filefinal InProgressFileWriter.InProgressFileRecoverable inProgressFileRecoverable =state.getInProgressFileRecoverable();//  note: bucketWriter 是否具有恢复能力if (bucketWriter.getProperties().supportsResume()) {// note: 恢复inProgressPartinProgressPart =bucketWriter.resumeInProgressFileFrom(bucketId,inProgressFileRecoverable,state.getInProgressFileCreationTime());} else {// if the writer does not support resume, then we close the// in-progress part and commit it, as done in the case of pending files.bucketWriter.recoverPendingFile(inProgressFileRecoverable).commitAfterRecovery();}
}private void commitRecoveredPendingFiles(final BucketState<BucketID> state) throws IOException {// we commit pending files for checkpoints that precess the last successful one, from which// we are recoveringfor (List<InProgressFileWriter.PendingFileRecoverable> pendingFileRecoverables :state.getPendingFileRecoverablesPerCheckpoint().values()) {for (InProgressFileWriter.PendingFileRecoverable pendingFileRecoverable :pendingFileRecoverables) {bucketWriter.recoverPendingFile(pendingFileRecoverable).commitAfterRecovery();}}
}
Buckets#updateActiveBucketId
private void updateActiveBucketId(final BucketID bucketId, final Bucket<IN, BucketID> restoredBucket) throws IOException {// note: 当前流程没有 bucketLifeCycleListener,没有要处理的状态信息,直接返回。if (!restoredBucket.isActive()) {notifyBucketInactive(restoredBucket);return;}// note: 当前 activeBuckets 已经包含restoredBucket所属的Bucket,则将restoredBucket 进行提交。否则存储到activeBuckets final Bucket<IN, BucketID> bucket = activeBuckets.get(bucketId);if (bucket != null) {bucket.merge(restoredBucket);} else {activeBuckets.put(bucketId, restoredBucket);}
}void merge(final Bucket<IN, BucketID> bucket) throws IOException {InProgressFileWriter.PendingFileRecoverable pendingFileRecoverable = bucket.closePartFile();if (pendingFileRecoverable != null) {pendingFileRecoverablesForCurrentCheckpoint.add(pendingFileRecoverable);}
}

7.常见问题

7.1 part文件格式

part 文件名称生成规则: bucketPath_partPrefix_subtaskIndex_currentPartCounter_partSuffix。

  • bucketPath:bucket路径,例如:hdfs://localhost:9000/user/hive/warehouse/userinfo/2021-08-09–19。
  • partPrefix:part文件前缀,通过OutputFileConfig设置,默认为part。
  • subtaskIndex: Sink Operator并行写入时,某一子任务当前索引,从0开始。
  • currentPartCounter:子任务生成的part文件数量,从0开始。

例如:part-0-0 代表第一个task生成的第一个完整的part文件。

inprogress 临时文件名称规则:.part 文件名称.inprogress.UUID

  • inprogress: 正在写入的临时文件的标识。
  • UUID: 随机生成的UUID。

例如: hdfs://localhost:9000/user/hive/warehouse/userinfo/2021-08-09–19/.part-0-0.inprogress.18296793-9fde-4376-b6fc-7c47512bd108 代表 形成part-0-0产生的临时文件。

7.2 数据准确性保障

非checkpoint/savepoint启动,当文件系统已经存在部分part文件,从kafka起始位置重新消费数据可能会导致数据缺失或者增多,因为rename操作并不会覆盖已有的part文件(应该是个BUG,提了个jira还没回复HadoopFsCommitter, file rename failure)。

假设存在part-0-0历史文件,从起始位置消费数据会生成新的part-0-0文件,新文件存储的数据条数无法保证和历史文件一致,可能多也可能少。

notifyCheckpointComplete执行时,Flink程序被Kill,从最新状态快照启动,不会丢失数据。

假设.part-0-0.inprogress.xxxx 对应的bucket已经执行完snapshotState方法,则数据已经被flush到文件系统,在notifyCheckpointComplete阶段将完成对该inprogress文件的重命名,如果此时程序突然被kill,该inprocess文件是有数据的,只是文件没有被最终重命名。此时,从CK启动,则会先完成会 inprocess 文件的重命名。

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

相关文章

  1. anaconda 指定安装源路径

    window 11下的配置 在anaconda的环境下选定python版本&#xff0c;让其自动适配需要的tensorflow版本&#xff0c;省的到处找对应安装包。 增加源路径 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free conda config --add channels h…...

    2024/4/28 0:33:59
  2. 图像压缩问题

    给定像素序列&#xff0c;求出最优分段及所占字节数。 输出s[0],s[1],s[2].......及l[1],l[2],l[3].......的计算过程&#xff0c;并给出最终解。 例如实例1最后输出: 最优分段是&#xff1a;<10,12,15>,<255>,<1,2> 总存储位数为&#xff1a;57 给定…...

    2024/4/28 16:32:11
  3. JavaWeb专栏之(二):Idea创建JavaWeb项目

    JavaWeb专栏之&#xff08;二&#xff09;&#xff1a;Idea创建JavaWeb项目 前言&#xff1a; 关注&#xff1a;《遇见小Du说》微信公众号&#xff0c;分享更多Java知识&#xff0c;不负每一次相遇。更多内容请访问&#xff1a;www.dushunchang.top 在上一篇博客中传送门&…...

    2024/4/28 15:13:47
  4. Android 存储进化:分区存储,这些面试官常问的开发面试题你都掌握好了吗

    可移除卷&#xff08;例如 SD 卡&#xff09;在文件系统中属于外部存储空间。空间较大&#xff0c;现在的智能机基本都配有&#xff0c;但为了兼容性&#xff0c;也可在使用相关api时检查该空间是否处于可用状态。Environment.getExternalStorageState() // 是否可读写 fun i…...

    2024/4/28 1:57:06
  5. 单链表的应用--利用单链表求两个集合的交集

    利用单链表求两个集合的交集&#xff0c;利用前文写好的链表的框架&#xff0c;在链表类中补充Intersection方法。 利用单链表两个集合的交集一、问题分析二、代码分析1.链表类LinkList2.链表方法Intersection三、测试代码1.主函数2.输出结果四、源代码获取&#xff08;免积分&…...

    2024/4/28 7:00:33
  6. 三.结构体在内存的表现形式

    结构体在内存的表现形式 结构体 1.我们在之前讲过结构体struct 都知道struct 可以存放很多不同数据类型的数据 2.这必将导致一个问题出现 3.我们的结构体需要内存对齐 4.如果不对齐 会导致内存排列很错乱&#xff08;除非一些特殊需求 比如&#xff1a;我们在逆向找数据的时候…...

    2024/4/28 13:02:20
  7. JS学习笔记——正则表达式

    转自&#xff1a; https://www.runoob.com/js/js-regexp.html https://www.runoob.com/jsref/jsref-obj-regexp.html 语法 /正则表达式主体/修饰符(可选)例子&#xff1a; /Runoob/i 其中&#xff0c;runoob 是一个正则表达式主体 (用于检索)&#xff1b;i 是一个修饰符 (搜索…...

    2024/4/28 6:06:27
  8. Android _ ViewBinding 与 Kotlin 委托双剑合璧,Android大厂技术面试题汇总

    3.2 创建绑定类 有三个创建绑定类的 API&#xff1a; fun bind(view : View) : T fun inflate(inflater : LayoutInflater) : T fun inflate(inflater : LayoutInflater, parent : ViewGroup?, attachToParent : Boolean) : T 1、在 Activity 中使用 MainActivity.kt c…...

    2024/4/28 23:40:28
  9. 完全背包问题

    完全背包是在N种物品中选取若干件&#xff08;同一种物品可多次选取&#xff09;放在空间为V的背包里&#xff0c;每种物品的体积为C1&#xff0c;C2&#xff0c;…&#xff0c;Cn&#xff0c;与之相对应的价值为W1,W2&#xff0c;…&#xff0c;Wn.求解怎么装物品可使背包里物…...

    2024/4/28 5:47:20
  10. 《LeetCode之每日一题》:286.移除链表元素

    移除链表元素有关题目题解题目链接&#xff1a; 移除链表元素有关题目 给你一个链表的头节点 head 和一个整数 val &#xff0c; 请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。示例 2&#xff1a;输入&#xff1a;head [], val 1 输出&…...

    2024/4/13 18:56:53
  11. win10和ubuntu20.04直接进行文件传输

    在终端输入以下命令&#xff0c;安装以下lrzsz插件&#xff08;如下图&#xff09; 然后就可以进行文件传输啦&#xff0c;最简单的方法就是将win10的文件直接拖进ubuntu20.04中 或者复制粘贴...

    2024/4/13 18:56:48
  12. 工作效率:通过pycharm的模板代码减少重复工作

    摘要 在常见的业务开发场景下&#xff0c;经常要开发大量重复的代码&#xff0c;这里代码耗时但又必要&#xff0c;就像我们写分析报告一样&#xff0c;每次都要为固定的格式耗费精力。我们可以更加日常开发经验总结出一些常用的模板代码来帮助我们实现一秒五行的代码开发效率…...

    2024/4/13 18:56:48
  13. 计算机网络(笔记)

    目录 1、计算机网络的概念、组成、功能、分类 1.1、计算机网络的概念 1.2、计算机网络的功能 1.3、计算机网络的组成 1.4、计算机网路的分类 1、计算机网络的概念、组成、功能、分类 1.1、计算机网络的概念 计算机网络&#xff1a;是一个将分散的、具有独立功能的计算机…...

    2024/4/19 14:07:45
  14. 【一本通基础DP基础模型】摘花生

    题面 题目描述 Hello Kitty想摘点花生送给她喜欢的米老鼠。她来到一片有网格状道路的矩形花生地(如下图)&#xff0c;从西北角进去&#xff0c;东南角出来。地里每个道路的交叉点上都有种着一株花生苗&#xff0c;上面有若干颗花生&#xff0c;经过一株花生苗就能摘走该它上面…...

    2024/4/18 13:09:54
  15. 【笔记】理科教学矢量图像绘制工具实用分析

    近日分析几款矢量图绘制工具&#xff0c;优劣比较简记之&#xff0c;以供以后参考。 AxGlyph 功能丰富&#xff0c;中学阶段常见的图形基本具备&#xff0c;有“控制点”&#xff0c;基本每个形状可以精细调整&#xff0c;易用性与丰富性做到了很好的平衡。 但是 AxGlyph 收…...

    2024/4/19 23:27:46
  16. 自学_Generic遇到到的问题

    跟着C Primer自学C&#xff0c;在Centos 7 上用gcc 编译&#xff0c; 照抄书上的示例&#xff0c;编译时提示&#xff1a; implicit declaration of function _Generic 试着加 -stdc11: gcc -Wall -stdc11 mytype.c -o mytype 还是不行&#xff0c; 在CSDN上也找不到是啥…...

    2024/4/20 17:39:07
  17. CSDN中Markdown编译器的基本语法

    Markdown:是一种轻量级标记语言&#xff0c;创始人为约翰格鲁伯&#xff08;英语&#xff1a;John Gruber&#xff09;。 它允许人们使用易读易写的纯文本格式编写文档&#xff0c;然后转换成有效的XHTML&#xff08;或者HTML&#xff09;文档。这种语言吸收了很多在电子邮件中…...

    2024/4/24 18:41:45
  18. android UART串口开发7941D双拼读卡模块,Android程序员进大厂面试必备基础技能

    LogUtil.e(TAG, “串口关闭失败”); return false; } boolean isClose false; LogUtil.e(TAG, “关闭串口”); try { if (inputStream ! null) { inputStream.close(); } if (outputStream ! null) { outputStream.close(); } if (serialPort ! null) { serialPo…...

    2024/4/16 10:01:28
  19. Oracle典型的表连接类型(sort merge join(SMJ) 排序-合并连接、nested loops(NL) 嵌套循环、hash join 哈希连接)

    1、sort merge join(SMJ) 排序-合并连接 连接过程&#xff1a; 将两个表排序&#xff0c;然后再进行join ①首先生产drving table【驱动表】需要的数据&#xff0c;然后对这些数据按照连接操作关联列进行排序&#xff1b; ②然后生产probed table【被探查表】需要的数据&#x…...

    2024/4/13 18:56:48
  20. FreeNOS之Qemu(一)

    QEMU是一套由法布里斯贝拉(Fabrice Bellard)所编写的以GPL许可证分发源码的模拟处理器软件&#xff0c;在GNU/Linux平台上使用广泛。Bochs&#xff0c;PearPC等与其类似&#xff0c;但不具备其许多特性&#xff0c;比如高速度及跨平台的特性&#xff0c;通过KQEMU这个闭源的加速…...

    2024/4/20 4:14:38

最新文章

  1. 设置UIProgressView的样式

    UIProgressView是UIKit框架中的一个控件&#xff0c;用于显示任务的完成进度。你可以使用UIProgressView来展示任务的完成情况&#xff0c;例如下载文件、上传数据等。 要设置UIProgressView的样式&#xff0c;包括粗细、颜色等&#xff0c;你可以使用UIProgressView的一些属性…...

    2024/4/29 2:35:48
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/3/20 10:50:27
  3. 【鹅厂摸鱼日记(二)】(生活篇)初到深圳的人情冷暖

    &#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:重生之我在鹅厂摸鱼⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多知识   &#x1f51d;&#x1f51d; 摸鱼日记 1. 前言2. 鹅厂的人文关怀…...

    2024/4/27 9:20:02
  4. [C++/Linux] UDP编程

    一. UDP函数 UDP&#xff08;用户数据报协议&#xff0c;User Datagram Protocol&#xff09;是一种无连接的网络协议&#xff0c;用于在互联网上交换数据。它允许应用程序发送数据报给另一端的应用程序&#xff0c;但不保证数据报能成功到达&#xff0c;也就是说&#xff0c;它…...

    2024/4/29 0:09:40
  5. N5171B是德科技N5171B信号发生器

    181/2461/8938产品概述&#xff1a; N5171B EXG 射频模拟信号发生器具有最佳的 EXG&#xff0c;旨在满足您对组件参数测试和接收器校准的信号需求。其出色的硬件性能可提供更快的吞吐量、更长的正常运行时间以及极好的准确性和可重复性。 Agilent / HP N5171B EXG 射频模拟信…...

    2024/4/27 10:27:08
  6. 【外汇早评】美通胀数据走低,美元调整

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

    2024/4/28 13:52:11
  7. 【原油贵金属周评】原油多头拥挤,价格调整

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

    2024/4/28 3:28:32
  8. 【外汇周评】靓丽非农不及疲软通胀影响

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

    2024/4/29 2:29:43
  9. 【原油贵金属早评】库存继续增加,油价收跌

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

    2024/4/28 13:51:37
  10. 【外汇早评】日本央行会议纪要不改日元强势

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

    2024/4/27 17:58:04
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

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

    2024/4/27 14:22:49
  12. 【外汇早评】美欲与伊朗重谈协议

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

    2024/4/28 1:28:33
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

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

    2024/4/28 15:57:13
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

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

    2024/4/27 17:59:30
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

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

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

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

    2024/4/28 1:34:08
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

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

    2024/4/26 19:03:37
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

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

    2024/4/28 1:22:35
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

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

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

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

    2024/4/26 23:04:58
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

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

    2024/4/27 23:24:42
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

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

    2024/4/28 5:48:52
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

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

    2024/4/26 19:46:12
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

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

    2024/4/27 11:43:08
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

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

    2024/4/27 8:32:30
  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