catia保存成stp文件时部件丢失_超详细的分布式文件系统FastDFS磁盘恢复介绍

概述

今天主要介绍一下fastdfs磁盘恢复的过程,大家一起来看看吧~

44a3579cd57c36a15d2020a0328e22f9.png

一、磁盘恢复概述

顾名思义,磁盘恢复也就是一台服务器的某个磁盘坏掉,换了一个新的硬盘,然后将旧磁盘本应该有的数据拷贝到新硬盘的过程。FastDFS原生支持该过程,可以自动检测,并完成。

FastDFS推荐的方式是一个磁盘挂载成一个Store-Path,换了一个新的磁盘后,该Store_path目录下的数据丢失了,但是这部分数据在同组的其他Storage都有,因此只要从对应的Storage上拷贝到目录下的数据即可。

910d315d19f736aae5dfeea8f769981a.png

FastDFS-Storaged程序在启动时会检查每个Store_path目录下的子目录个数,默认情况下,每个Store_path下面会创建两级256个子目录。当非首次启动时,发现某个Store_path下没有任何目录,则会进入磁盘恢复过程。


二、磁盘恢复过程

磁盘恢复过程包括三个步骤:RecoveryStart、RecoveryStore、RecoveryFinish;这三个步骤之中的RecoveryStore可以多次执行,因此在恢复过程中记录了中间状态,因此即使在磁盘恢复过程中宕机或停止,下次再次启动时还是可以从上次的状态继续恢复数据。而RecoveryStart与RecoveryFinish都是只执行一次。

磁盘恢复过程的两个状态文件: .recovery.mark;.binlog.recovery

这两个状态文件保存与StorePath目录下,用于记录恢复过程的状态。

.recovery.mark文件包括三个字段:

  • saved_storage_status= ##表示状态
  • binlog_offset= ##表示恢复的binlog偏移量
  • fetch_binlog_done= ##表示是否已经下载binlog

.binlog.recovery文件,记录的是需要恢复的文件binlog,内容类似下面这样的记录:

1910858030 C M00/00/00/CmQPRlPa8y6AbW3ZAAADWjN_G5k15.conf

1、磁盘恢复开始RecoveryStart

在Storaged启动时,会依次检查每一个StorePath,首次启动时会为每个StorePath创建两级256个子目录(默认256,可配置),因此当非首次启动时,检测到StorePath下不存在这两级的256个子目录,那么程序就会认为该StorePath数据丢失,开始进行这个StorePath的磁盘恢复。

该过程在storage_disk_recovery_start函数之中。

RecoveryStart执行如下操作:

1)创建状态文件 .recovery.mark;.binlog.recovery,并初始化。

2)连接Tracker,查询该Storage的最大状态值(该值用于在磁盘恢复完成后,恢复到之前的状态),查询所在组的Storage列表,从中获取一个状态为Active的Storage,若获取不到Active的Storage则睡眠5秒后再次尝试;获取到的该Storage我们称为源Storage。

3)向Tracker报告,将自己状态设置成RECOVERY。

4)向源Storage发送FETCH_ONE_PATH_BINLOG命令,参数为group_name、store_path_index;源Storage收到该命令后从头遍历整个binlog,过滤出符合下列条件的binlog返回来:binlog文件的目录为指定的store_path;该binlog的操作类型为Create方式;该binlog对应的文件在文件系统中还存在;

5)将从源Storage返回的binlog写入到.binlog.recovery文件之中,若完成收到源Storage的整个回复,则设置.recovery.mark文件中的fetch_binlog_done标志为1;表示已经完成binlog文件的获取,设置saved_storage_status为第二步中查询到的最大状态值。

6)检查若采用合并存储,则需要将该binlog进行分割(由于合并存储存在缺陷,这里就不在详细叙述)。

2、磁盘恢复下载文件

这个步骤也就是真实地从一个源Storage上下载文件。详见storage_disk_recovery_store函数。如下:

1)检查是否存在.recovery.mark, .binlog.recovery文件,若任何一个不存在则返回。

2)向RecoveryStart一样,向Tracker请求,查找该组内的一个状态为Active的Storage作为源Storage。

3)打开.recovery.mark 文件,读取binlog_offset值,打开.binlog.recovery文件,定位到binlog_offset这个位置,也就是从上次最后保存的状态开始继续下载文件。

4)依次读取.binlog.recovery文件的后面记录,对于每一条记录都从源Storage中去下载对应文件

5)每下载1000个文件,将状态值binlog_offset写入到.recovery.mark 文件之中

6)当所有的binlog对应文件都下载完成后,向所有Tracker报告恢复之前的最高状态(该状态在恢复开始时从Trakcer中查询得到,见1.2的描述)。

3、磁盘恢复结束

该步骤清理开始时创建的临时文件 .recovery.mark, .binlog.recovery


三、注意

1、磁盘恢复是在Storaged程序的初始化过程中,此时进程还没有变成后台进程,因此若知道要进入磁盘恢复,最好使用nohup方式来启动。因此如果数据量大,该过程可能要持续很久,进程一致处于控制台。

2、恢复过程中需要下载对应的binlog与文件,可能到A机器下载binlog,而到B机器下载文件。所有的文件只会在选择好的原Storage上下载,因此压力会集中到一台的Storage上。

3、下载文件的过程中是以单线程,同步的方式进行的,因此不能最大化磁盘IO或者网络性能。


觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~

1064fc3a6ec2de4a7ad0df2ec19f27fe.gif
CATIA特征识别避坑指南:为什么你的STP转参数化总失败?这5个设置必须检查 本文详细解析了CATIA特征识别过程中常见的STP转参数化失败问题,并提供了五个关键设置检查点。从圆角识别顺序到坐标系匹配,再到曲面精度和薄壁件处理,帮助工程师有效提升特征识别成功率。特别针对无参格式转换有参模型的技术难点,给出了实用解决方案和优化参数建议。 阅读详情

相关推荐

机器学习西瓜书期末复习(2022HENU)

期末复习之机器学习 文章目录期末复习之机器学习第一章 绪论 第一章 绪论 机器学习的定义 机器学习致力于研究如何通过计算的手段,利用经验来改善系统自身的性能。 根据训练数据是否拥有标记信息,将学习任务分为监督学习和无监督学习。 监督学习 :分类和回归 线性回归、对数几率回归、决策树、支持向量机、贝叶斯分类器、神经网络 无监督学习:聚类 聚类算法: 原型聚类:(k均值,学习向量量化,高斯混合聚类);密度聚类(DBSVAN);层次聚类(AGNES)。降维。话题分析。图分

qq_46561559的博客 1万+

CATIA转的STP打开什么都没有_Catia与Stp格式转换技巧

STP作为一种常用的3D通用格式,经常会被用于数据的交换。CATIA软件提供了将产品转为STP格式的方法。1)CATIA产品转STP格式的技巧:保留产品颜色很多人在将产品转换成STP格式时,常常苦恼于产品颜色的丢失。于是,大家一定会问CATIA有没有什么方法可以在转STP的时候保留颜色?其实,只需要简单的设置一下,就可以实现。具体为:工具-->选项-->常规-->兼容性--&gt...

weixin_39553776的博客 2万+

融合ZILN损失与深度学习的LTV预测:从概率分布到精准营销决策

本文探讨了融合ZILN损失与深度学习的LTV预测方法,通过深度概率模型精准预测用户生命周期价值(LTV),优化营销决策。文章详细解析了ZILN损失函数的优势、模型架构设计要点及工程化落地实践,帮助企业在预算分配、用户分层等场景实现数据驱动的精准营销。

weixin_29093169的博客 304

catia保存成stp文件时部件丢失_如何有效地减小SolidWorks文件大小?

我们将减少SolidWorks 文件大小的方法归纳为如下八种:1)"修改属性"法:该方法适用于SolidWorks 的零件文件、装配文件和工程图文件。通过试验我们发现:SolidWorks 文件的图像品质影响文件大小:图像品质越高,文件越大。因此,我们在保存文件时,可以将模型文件的图像品质设置成最小。选择菜单"工具"\"选项",在 "文件属性"标签中,单击"图像品质"。将"上色品质"和"...

weixin_30737899的博客 5233

物理小白也能懂的PINN指南:用Python给神经网络注入‘物理常识‘

本文为物理小白提供了一份通俗易懂的PINN入门指南。通过生活化类比和Python实战,详细讲解了如何将物理定律作为约束注入神经网络,使其具备“物理常识”,从而在数据稀缺时也能做出符合规律的预测。文章以热传导方程为例,手把手教你从零构建物理信息神经网络。

open4的博客 342

TSP、MTSP问题遗传算法详细解读及python实现

写在前面 遗传算法是一种求解NPC问题的启发式算法,属于仿生进化算法族的一员。仿生进化算法是受生物行为启发而发明的智能优化算法,往往是人们发现某种生物的个体虽然行为较为简单,但生物集群通过某种原理却能表现出智能行为。于是不同的人研究不同的生物行为原理,受到启发而发明出新的仿生进化算法。比如免疫优化算法,蚁群算法,模拟退火算法等,这些算法以后也会简单介绍。 本文的主题是遗传算法,该算法也是受到生物行为启发。物竞天择,适者生存,优胜劣汰,是该优化算法的核心思想。笔者在业务中需要用到遗传算法求解TSP问题,但是网

weixin_47675950的博客 9292

.metadata是什么项目文件_Hadoop学习之路(2)hdfs分布式文件系统详解

1.Hadoop架构Hadoop由三个模块组成:分布式存储HDFS、分布式计算MapReduce、资源调度引擎Yarn2.HDFS体系架构2.1、NameNodeNameNode负责文件元数据信息的操作以及处理客户端的请求;管理HDFS文件系统的命名空间NameSpace;维护文件系统树(FileSystem)以及文件树中所有的文件和文件夹的元数据信息(matedata);维护文件到块的对应关系和...

weixin_39797324的博客 942

行人检测模型在海思平台上的部署:从 PyTorch 到 NNIE 深度优化与实践

摘要 本文详细介绍行人检测模型从PyTorch到海思NNIE平台的部署流程。首先分析了行人检测面临的挑战(尺度变化、遮挡、姿态多样性等)及边缘部署的优势(实时性、隐私保护等)。重点阐述了模型转换过程:PyTorch→ONNX→Caffe→NNIE-WK,其中PyTorch转ONNX需注意评估模式设置、虚拟输入匹配、操作集版本选择等关键点。文章旨在帮助开发者在海思3516D芯片上实现高效的行人检测,克服部署过程中的常见问题,最终实现边缘设备的实时目标检测能力。

FJN110的博客 212

catia保存成stp文件时部件丢失_遇到文件参考问题了?用这个办法试试

SOLIDWORKS文件通常都具有将零件约束到装配体,或者将零件和装配体约束到工程图的参考引用。这种数据间的关联关系在数据生成的时候就已建立,通常我们都会将所有的设计数据保存到特定的路径及文件夹中。但如果将其中部分零件或该模型所参考的文件路径改变后,再次打开时,你是否总会遇到总装弹出如下提示:同时在设计树中是否会发现改变路径的文件会丢失了,如下图:如果要解决这些问题,我们通常都需要手动定位源文件位...

weixin_42361622的博客 4444

Python实战日志_P4_图书馆Web API服务

目标:使用Flask将图书馆系统升级为RESTful API服务,掌握Web开发基础难度:⭐⭐⭐⭐☆预计学习时间:75分钟前置要求:已完成第3篇《个人图书馆管理系统》

qq_39436086的博客 80

手把手教你学Simulink--基于Simulink的风力发电系统用双馈电机控制仿真建模

特点高效节能:在广泛的风速范围内保持高效的能量转换。独立控制有功和无功功率:通过控制转子电流实现对有功和无功功率的独立调节。较低的成本:相比直接驱动或全功率变流器方案,成本较低。挑战控制复杂度较高:需要复杂的控制算法来实现有功和无功功率的解耦控制。对电网波动敏感:需要良好的稳定性控制策略以应对电网电压波动。利用Simscape Electrical中的模块构建DFIG的物理模型,配置参数如电阻、电感、极对数等。matlab深色版本% 添加DFIG电机模块。

MHD0815的博客 342

CATIA转的STP打开什么都没有_CATIA教程之常见去参方法

Catia去除参数常用于以下几种情形:1)模型比较大,通过邮件发送不方便,去除模型参数可以减小模型数据大小。2)有时候需要将模型给别人使用,不希望对方知道你的建模过程或者更改你的模型,为了保密或者保护自己,将模型参数去掉。3)一个比较复杂的模型,相互之间的参数有关联,关联关系复杂,易出现死循环。当需要更改模型时,可能会因为参数的关联而造成更改麻烦,将这些参数去掉之后可以顺利更改设计。但去掉参数的同...

weixin_40006963的博客 1万+

【推荐100个unity插件】基于关节物理控制的自行车、电动车、摩托车模拟解决方案——Simple Bicycle Physics

摘要 "简易自行车物理"是Unity的自行车模拟资源包,支持Animation Rigging,实现基于关节物理的自行车控制。兼容所有平台和渲染管线,包含预制体、材质、脚本等资源。核心脚本Bicycle Controller管理自行车物理属性,支持自定义角色设置和移动端控制。安装后,用户可快速配置骑行场景,调整转向、速度、重心等参数,并支持地面贴合、兔跳等功能。适用于开发各类自行车模拟游戏和应用。 (字数:149)

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1353

FastDFS之合并存储缺陷导致数据丢失或错误

本文描述了FastDFS的合并存储功能存在的一个设计缺陷导致数据错误

hfty290的专栏 4127

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

catia保存成stp文件时部件丢失_汽车零部件项目包装设计

包装设计动力总成零件分类动力总成、底盘类件包装电装、内外饰包装KD项目包装规划CKD: Complete Knock Down全散件组装;是指进口或引进汽车时,以完全拆散的状态进入,之后再把全部零部件组装成整车。SKD: Semi Knock Down半散件组装,是指从国外进口汽车总成,如发动机、驾驶室、底盘等,然后在本国内装配而成的整车。KD包装设计输入条件1)完整的总成BOM一份...

weixin_33899835的博客 1659

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

02-高可用Kubernetes集群(测试环境)-搭建步骤

搭建步骤1. 自签SSL证书2. 部署Etcd集群3. Node节点安装docker CE4. Flannel容器集群网络部署5. 部署master组件6.部署node组件7.部署一个测试示例8.部署Web UI(Dashboard)9.多master集群-部署master02组件10.多master集-Nginx+keepalived(LB) 1. 自签SSL证书 2. 部署Etcd集群 3. ...

HJ的技术博客 254

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

揭秘!containerd 镜像文件丢失问题,竟是镜像生成惹得祸

导语 作者李志宇,腾讯云后台开发工程师,日常负责集群节点和运行时相关的工作,熟悉 containerd、docker、runc 等运行时组件。近期在为某位客户提供技术支持过程中,遇到了 containerd 镜像丢失文件问题,经过一系列分析、推断、复现、排查,最终成功找到根因并给出解决方案。现将整个详细处理过程整理成文分享出来,希望能够为大家提供一个有价值的问题处理思路以及帮助大家更好地理解相关原理。 containerd 镜像丢失文件问题说明 近期有客户反映某些容器镜像出现了文件丢失的奇怪现象,经过模拟复

吉小白的博客 3215

Fastdfs分布式文件系统原理浅析

Fastdfs分布式文件系统原理、同步机制

willingtolove的博客 890

sps忘记保存文档怎么恢复_office2010文档忘记保存丢失如何恢复

今天上海非凡教育办公自动化培训老师教同学们一个office2010文档忘记保存丢失如何恢复的技巧,希望对同学们有所帮助!忘记保存如何恢复文档?Office2010与之前的版本不同,它的功能要比之前的版本强大。就算我们在编辑文档或表格或幻灯片时没有点击保存按钮,我们的文件依然会被备份下来。进入「文件」-「选项」-「保存」,确保「保存自动恢复信息时间间隔」和「如果我没保存就关闭,请保留上次自动保留的版...

weixin_39638086的博客 519
上一篇: e: 无法定位软件包 python-pip_关于Sony镜头不同系列定位的最全面分析
下一篇: txtv28pw河南某中学_有一种寒冷叫不穿秋裤!河南一中学班主任让学生列队挨个检查秋裤...
阮晶
博客等级 码龄6年 18粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值