tokenpocket钱包官方网|fsfsd

作者: tokenpocket钱包官方网
2024-03-07 18:48:40

百度知道 - 信息提示

百度知道 - 信息提示

百度首页

商城

注册

登录

网页

资讯

视频

图片

知道

文库

贴吧采购

地图更多

搜索答案

我要提问

百度知道>提示信息

知道宝贝找不到问题了>_

该问题可能已经失效。返回首页

15秒以后自动返回

帮助

 | 意见反馈

 | 投诉举报

京ICP证030173号-1   京网文【2023】1034-029号     ©2024Baidu  使用百度前必读 | 知道协议 

FSSD解读-CSDN博客

>

FSSD解读-CSDN博客

FSSD解读

最新推荐文章于 2023-06-30 19:57:53 发布

爆米花好美啊

最新推荐文章于 2023-06-30 19:57:53 发布

阅读量1.8w

收藏

53

点赞数

8

分类专栏:

深度学习

论文学习笔记

detection

文章标签:

FSSD

ssd

detection

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/u013010889/article/details/78926852

版权

深度学习

同时被 3 个专栏收录

72 篇文章

8 订阅

订阅专栏

论文学习笔记

52 篇文章

2 订阅

订阅专栏

detection

22 篇文章

3 订阅

订阅专栏

本文是SSD的改进版,算是SSD+FPN思想的结合,FSSD: Feature Fusion Single Shot Multibox Detector

Motivation

我在上一篇SSD解读中也介绍了SSD的缺点,SSD虽然是从不同level的feature进行预测,ConvNets提取的特征随着level的增加语义越来越强,但是SSD却把它们当成一样的level,之前在上面去预测,不能充分地利用局部的细节特征和全局的语义特征。然而之前也说过定位和识别是矛盾,我们需要把细节特征(定位)和全局语义(识别)结合起来,所以本文就想着把浅层的细节特征和高层的语义特征结合起来(FPN也是这样的,但本文不和FPN完全一样,下面会介绍)

Approach

Feature Fusion

这张图在FPN里面也有一张类似的, 1. (a) image pyramid 2. (b) rcnn系列,只在最后一层feature预测 3. (c) FPN,语义信息一层传递回去,而且有很多相加的计算 4. (d) SSD,在各个level的feature上直接预测,每个level之间没联系 5. (e) 本文的做法,把各个level的feature concat,然后从fusion feature上生成feature pyramid

Architecture

base model和SSD基本一致,只是在把Conv6_2的步长从2调到了1,这样conv7_2和Conv6_2一样也是10*10,因为论文中说他们认为小于10的feature 能够合并的信息量太少了(他们本来也merge了conv3 3,但是后面实验证明没什么用就去掉了)把Conv4_3 FC7 Conv7_2这三层用1x1降维到256(和fpn一样),然后FC7 Conv7_2双线性插值到和Conv4_3一样大小的38x38,然后cat起来(是否加bn后面也有对比)成fusion feature,论文中也试了加起来效果会差点如何从fusion feature生成feature pyramid也有多种方案

In (a), we only detect objects on the feature maps after the fusion feature map. In (b), the fusion feature map takes part in the object detection. 我猜测论文这句写反了

(a)是把fusion feature也用与预测了,(b)是不用fusion feature,(c)是把b中的简单的conv和relu换成了一个bottleneck效果更差了

Experiments

看到bn的作用,以及conv3_3并没有什么用,cat比sum好一些,但是我感觉实验不是十分完备,第2行和第3行只有conv3_3这个变量,没有它反而提高了,但是第5行初始化模型不一样加了Conv3_3也是最高,很蛋疼。而且最后一行的相加,是不是还得有一个没Conv3的cat,还有从vgg初始化开始。作者这是给自己挖一个坑,需要组合很多变量一一测试结果。

特别注意: GPU不同,刚开始我还以为它加了计算怎么速度还快了

这里是用1080 Ti测试SSD和FSSD,然后反推到FSSD在Titan X的速度

Qualitative

第1列SSD会重复检测一个物体的多个part,第2列SSD会把多个物体合并成一个物体。第3-6列SSD漏了很多小物体,而FSSD都能减少这3类错误。

参考: lzx1413/PytorchSSD amdegroot/ssd.pytorch

优惠劵

爆米花好美啊

关注

关注

8

点赞

53

收藏

觉得还不错?

一键收藏

知道了

5

评论

FSSD解读

本文是SSD的改进版,算是SSD+FPN思想的结合。

复制链接

扫一扫

专栏目录

ssd_pytorch:带有Pytorch的SSD,FSSD,RFB等

05-13

从带代码进行一些自定义更改

ssds.pytorch

适用于pytorch,python3的Single Shot MultiBox Detector及其变种的存储库。

当前,它包含以下功能:

多种SSD变体:ssd,rfb,fssd,ssd-lite,rfb-lite,fssd-lite

多基础网络:VGG,Mobilenet V1 / V2

免费图片大小

使用可视化:训练损失,评估损失/ mAP,例如弓箭手箱。

此存储库取决于 , , , 和。 谢谢你的工作。

目录

安装

安装pytorch

通过pip install -r ./requirements.txt安装要求pip install -r ./requirements.txt

用法

训练,测试和演示一些特定模型。 请使用模型配置文件运行文件夹中的相关文件,例如:

python train.py --cfg

IEEE2019论文:使用基于特征融合和缩放的具有空间上下文分析的单镜头检测器在无人机图像中检测小物体

weixin_42390283的博客

09-29

1500

摘要:

无人机(UAV)图像中的目标由于拍摄高度较高通常都很小,我们虽然在目标检测方面已经做了很多工作,但是如何准确、快速地检测出小目标仍然是一个有待解决的挑战。本文针对无人机图像中的小目标检测问题,提出了一种基于特征融合和缩放的单镜头检测器(FS-SSD)。FS-SSD是基于FSSD的一种改进,FSSD是一种原始的单镜头多盒探测器(SSD)。本文中我们在反卷积模块中增加了一个额外的缩放分支,通过平均池化操作形成一个特征金字塔。我们还对原有的特征融合分支进行了调整,以更好地适应小目标检测任务。然后我们利用

5 条评论

您还未登录,请先

登录

后发表或查看评论

SSD系列算法原理讲解----(4)FSSD、RSSD算法(笔记)

奔跑的小仙女

05-30

6519

FSSD设计原则

借鉴了FPN的思想,重构了一组pyramid feature map,使得算法的精度有了明显的提升,速度也没有太降

把网络中某些feature调整为同一size再contact,得到一个像素层,以此层为base layer来生成pyramid feature map

Feature Fusion Module

在FSSD中主要包括了上采样层(黄色区域),就是讲feature ...

fssd-html

02-11

HTML基础知识

关于此仓库:

适用于我的学生HTML Essentials代码示例和练习以及注释-全栈软件开发人员计划

参考文献:

代码研究所| 全栈软件开发文凭-HTML基础

Mozilla开发人员网络(MDN)-开发人员的网络技术-HTML

W3学校

请参阅我的课程资料和pdf文件以获取更多详细信息和说明。

注意:您可以使用以下两种方法之一在新选项卡中打开任何链接:

按住Windows中的CTRL键或Mac中的COMMAND键,然后单击它

右键单击链接,然后从上下文菜单中选择在新选项卡或新窗口中打开链接

最新CVPR论文推荐-最新九篇目标检测相关论文—混合区域嵌入、FSSD、尺度不敏感、图像篡改检测、对抗实例、条件生成模型

07-04

【论文推荐】最新九篇目标检测相关论文—混合区域嵌入、FSSD、尺度不敏感、图像篡改检测、对抗实例、条件生成模型 - 云+社区 - 腾讯云

【目标检测】FSSD论文理解

qq_36926037的博客

12-21

6403

摘要

  SSD (Single Shot Multibox Detector):

  是目前最好的目标检测算法之一,它具有精度高、速度快的优点。然而SSD的特征金字塔检测方法难以融合不同尺度的特征。

  FSSD:

  本文提出特征融合SSD(Feature Fusion Single Shot multi - box Detector, FSSD),这是一种改进的特征融合算法,采用了一种新型的、轻量级的特征融合模块,可以在速度稍有下降的情况下显著提高SSD的性能。特征融合模块,将不同层的不同尺度的特征拼

译:Convolutional Two-Stream Network Fusion for Video Action Recognition

MemoryHeroLi的博客

09-26

1694

用于视频动作识别的卷积双流网络融合

**摘要:**近年来,卷积神经网络对视频中人类行为识别的应用提出了不同的解决方案,用于整合外观(spatial)和运动(temporal)信息。为了更好地利用时空信息,我们研究了许多在空间和时间上融合卷积网络层的方法。我们得出以下结论: (i)不是在softmax层进行融合,而是在一个卷积层上融合空间和时间网络,即不会损失性能,而且在参数上有大量的节省;(ii)...

多模态学习中四种常用的跨模态特征融合方法定义与PyTorch实现

m0_47623548的博客

06-30

1481

本文共介绍四种方法,分别是SumFusion、ConcatFusion、FiLM以及GatedFusion。

SSD系列(SSD、DSSD、FSSD 、RefineDet)

munan2017

08-26

5341

SSD:SingleShotMultiBoxDetector

简介

one-stage、基于回归的目标检测,74.3mAP、59FPS (on VOC2007 test)

网络结构

SSD 300中输入图像的大小是300x300,特征提取部分使用了VGG16的卷积层,并将VGG16的两个全连接层转换成了普通的...

FSSD: Feature Fusion Single Shot Multibox Detector 论文笔记

Dlyldxwl的博客

02-14

1万+

论文:FSSD: Feature Fusion Single Shot Multibox Detector

caffe实现:链接 该篇论文出自北航,看起来比较容易懂,因此笔记会写的简单一点。Introduction言归正传,本文是以SSD为基底进行“改造”的一篇文章。SSD是从网络的不同层中抽取不同scale的feature直接做predict,所以没有充分融合不同scale的feature。后

CSS分配:CSS分配,FSSD

02-25

CSS分配

二次作业

FSSD计划,加拿大商学院

JS-Assignment:带有CBC的FSSD 2021的JS分配

04-12

以用户为中心的前端开发

JS分配-2021 FSSD 1月-8月批处理

这项作业将展示您使用HTML表单元素,CSS和一些JavaScript主要主题的技能

目录

关于该项目

该作业将演示您使用HTML表单元素,CSS以及一些JavaScript主要主题的技巧,这些主题包括:

用局部和全局范围定义不同的变量

使用某些JavaScript内置(本机)功能

创建自定义功能

解析DOM

表格处理和验证

循环和条件语句

调试方法

事件处理程序和事件侦听器

公式和数学对象一个简单的网站,只有两页,仅用于使用HTML表单元素处理用户输入并创建自定义函数来模仿/模仿MS Excel常用函数。

建于

本部分应列出您用来构建项目的所有主要框架。 将所有附件/插件留在“致谢”部分。 这里有一些例子。

CSS3

HTML5

JS功能

入门

该项目具有以下文件结构。

index.html

exc

飞兆半导体推出存储器开关FSSD06和FSSD07

11-10

飞兆半导体公司(Fairchild Semiconductor)为手机、数码相机和便携应用设计人员提供两款存储器开关产品FSSD06和 FSSD07,扩展了普通处理器至安全数字(SD)、安全数字I/O (SDIO) 和多媒体卡 (MMC)等外设的通信功能。        FSSD06允许一个处理器与两个外设进行读/写操作,FSSD07则可让两个处理器与一个外设进行读/写操作。它们的架构包含了单一高压卡或双压卡中不可或缺的双向数据和命令转移功能,而且时钟路径是一个单向缓冲器。      这些存储器开关具有宽泛的工作电压范围(1.65V至3.6V),并采用紧凑型(3.5 x 4.5mm) 24脚M

OpenCV、Skimage、PIL图像处理的细节差异

热门推荐

Sundrops的专栏

01-11

4万+

上一篇博客中介绍了caffe实现多label输入,其中有一些图片处理的操作(训练验证数据),当时我选择了PIL库,但是在测试中用了caffe官网demo的代码,它使用了caffe提供的一些python接口,而它调用的是skimage这个库,所以有些许差异,可能会带来精度上的一些影响。这篇博客先介绍一下这些库的差异,下篇博客介绍测试时可能出现的小错误

PIL(RGB)

首先介绍PIL...

faster rcnn源码解析

Sundrops的专栏

11-20

3万+

之前一直是使用faster rcnn对其中的代码并不是很了解,这次刚好复现mask rcnn就仔细阅读了faster rcnn,主要参考代码是pytorch-faster-rcnn ,部分参考和借用了以下博客的图片

[1] CNN目标检测(一):Faster RCNN详解

姊妹篇mask rcnn解析

整体框架

首先图片进行放缩到W*H,然后送入vgg16(去掉...

光流介绍以及FlowNet学习笔记

Sundrops的专栏

05-04

3万+

FlowNet: Learning Optical Flow with Convolutional Networks

pdf与相关代码: https://lmb.informatik.uni-freiburg.de/resources/binaries/

光流(Optical Flow)介绍

1. 光流原理

光流分为稀疏光流和稠密光流,稀疏光流就是只计算图片中特定点的光...

FPN解读

Sundrops的专栏

11-29

2万+

前两篇博客中都说到了FPN这个神器,今天就花了点时间看了下这篇论文,喜欢这个很赞很干净的结构。

CapsuleNet解读

Sundrops的专栏

12-05

2万+

最近hinton很早就提出了一个结构名为capsule,旨在解决cnn的固有缺点,本文是第一篇实现hinton capsule结构的论文Dynamic Routing Between Capsules,本文很大程度上翻译自“Understanding Dynamic Routing between Capsules (Capsule Networks)” 代码来自: XifengGuo Cap

dssd pytorch

最新发布

09-29

类似的方法还有FSSD,它也是将深浅层信息融合的方法,属于SSD FPN的结合版。 所以,DSSD(Deep Single Shot Multibox Detector)是在SSD基础上改进的一种目标检测算法,旨在提高小物体检测的性能。它通过结合深层和...

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

爆米花好美啊

CSDN认证博客专家

CSDN认证企业博客

码龄10年

暂无认证

107

原创

1万+

周排名

118万+

总排名

69万+

访问

等级

6522

积分

474

粉丝

450

获赞

393

评论

1340

收藏

私信

关注

热门文章

scipy csr_matrix和csc_matrix函数详解

50059

OpenCV、Skimage、PIL图像处理的细节差异

43635

faster rcnn源码解析

39783

光流介绍以及FlowNet学习笔记

36128

FPN解读

27139

分类专栏

Misc

2篇

Linux

1篇

Knowledge Distillation

12篇

NLP

1篇

OCR

2篇

Android学习笔记

1篇

深度学习

72篇

python

7篇

论文学习笔记

52篇

PS

1篇

Caffe

6篇

git

1篇

docker

1篇

detection

22篇

CapsuleNet

2篇

算法

2篇

RNN

1篇

TH库源码学习

4篇

Video

2篇

optical flow

4篇

caption

GAN

1篇

随笔

1篇

Relation

3篇

模式识别基础

1篇

强化学习

7篇

深度学习基础

2篇

LeetCode

6篇

模型加速

2篇

C++

4篇

tvm

1篇

交互式分割

1篇

最新评论

捕捉SIGKILL信号(kill -9)

wzhoo:

对遇到的类似问题处理很有启发,感谢

Pycharm无法识别__init__里import的包,ctrl时无法跳转

theBT:

很有用,救我狗命!!!

A star算法

爆米花好美啊:

已修改

A star算法

爆米花好美啊:

已修改

A star算法

爆米花好美啊:

嗯嗯 写反了

最新文章

Pytorch is_leaf

BatchNorm的相关细节

np.random.shuffle np.random.permutation的速度差异

2021年3篇

2020年3篇

2019年39篇

2018年35篇

2017年27篇

2016年4篇

2015年1篇

目录

目录

分类专栏

Misc

2篇

Linux

1篇

Knowledge Distillation

12篇

NLP

1篇

OCR

2篇

Android学习笔记

1篇

深度学习

72篇

python

7篇

论文学习笔记

52篇

PS

1篇

Caffe

6篇

git

1篇

docker

1篇

detection

22篇

CapsuleNet

2篇

算法

2篇

RNN

1篇

TH库源码学习

4篇

Video

2篇

optical flow

4篇

caption

GAN

1篇

随笔

1篇

Relation

3篇

模式识别基础

1篇

强化学习

7篇

深度学习基础

2篇

LeetCode

6篇

模型加速

2篇

C++

4篇

tvm

1篇

交互式分割

1篇

目录

评论 5

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

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

余额充值

fsfsd-CSDN博客

>

fsfsd-CSDN博客

fsfsd

最新推荐文章于 2022-07-25 16:29:47 发布

启佑潇潇

最新推荐文章于 2022-07-25 16:29:47 发布

阅读量654

收藏

点赞数

分类专栏:

vue

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/xiaoyi2412/article/details/97268395

版权

vue

专栏收录该内容

2 篇文章

0 订阅

订阅专栏

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190731103228835.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW95aTI0MTI=,size_16,color_FFFFFF,t_70

优惠劵

启佑潇潇

关注

关注

0

点赞

0

收藏

觉得还不错?

一键收藏

知道了

0

评论

fsfsd

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190731103228835.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW95aTI0MTI=,size_16,color_FFFFFF...

复制链接

扫一扫

专栏目录

fsdfsfsfsfsfsfsd

11-25

fsdfsfsfsfsfsfsdfsdfsfsfsfsfsfsdfsdfsfsfsfsfsfsd

截取 java 字符串中 从某个字符(比如小数点“ . ”)第二次出现的位置到结尾之间的字符

热门推荐

大千世界的博客

08-09

1万+

转自 : https://zhidao.baidu.com/question/274850061.html    第二个回答者aqi314819950 

 

public class TestCode {

public static void main(String[] args) {

String str ="232ljsfsf.sdfl23.ljsdfsdfsdfss.23423.sdfs...

参与评论

您还未登录,请先

登录

后发表或查看评论

Redis集群只读问题

double_happiness的博客

07-25

793

redis问题记录

Arch-01-02-互联网产品设计常用文档类型 BRD、MRD、PRD、FSD

cnmqw的专栏

08-18

759

BRD

  Business Requirements Document,商业需求文档。这是产品声明周期中最早的问的文档,再早就应该是脑中的构思了,其内容涉及市场分析,销售策略,盈利预测等,通常是和老大们过的ppt,所以也就比较短小精炼,没有产品细节。

  商业需求文档重点放在定义项目的商业需求。BRD要能说出客户碰到的一个或多个商业问题,并且通过公司的产品能够解决这些问题。接着建议一个方...

11 文件

qq_45693271的博客

05-22

499

文件文件的打开与关闭读数据with的使用

文件的打开与关闭

语法格式:open(’ 路径 ', ’ 打开模式 ') 此命令为创建或打开指定的文件存在即打开,不存在即创建

以下代码可能会因为编码格式的不同而出现乱码

#以默认的编码gbk为中文编码,在使用时最好指定一个编码类型

#打开文件

b=open('./test.text','w',encoding='utf-8')

#w模式每执行一次都会创建一个新文件而覆盖掉之前的文件

#读/写操作

b.write('圣诞节公布的健康的高考')

b.write('

sdfasfdafsfsd

04-05

想剪裁一寸照片,用于社保照片,要求白色背景、正式身份照

FSSD解读

Sundrops的专栏

12-28

1万+

本文是SSD的改进版,算是SSD+FPN思想的结合。

nginx重写与重定向区别_nginx 匹配(重定向)

weixin_39608988的博客

12-22

173

文件供参考(有点乱)log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"''"$upstream_addr" "$upstream_r...

利用python对字符串处理,取中间的字符

编程之路

03-20

1万+

比如 str = "(sdadsafsfsdfdgfdghfhfghgjg)"取出括号里面的内容:str.strip()[1:-1]

dsfsfsfsdf

cpongo881

07-30

173

fsdfsdffsdfsdffsdfsdffsdfsdffsdfsdffsdfsdffsdfsdffsdfsdffsdfsdffsdfsdffsdfsdffsdfsdffsdfsdffsdfsdffsdfsdffsdfsdffsdfsdffsdfsdffsdfsdffsdfsdffsdfsdffsdfsdffsdfsdffsdfsdffsdfsdffsdfsdffsdfsdffsdfsdffsdf...

fsd代码移植+Fssim安装

weixin_56735612的博客

05-24

939

本人能力不强,以下仅是个人记录。如有侵权,请及时联系删除。

最近在学习相关方程式无人车大赛的项目,由于北理工的无私伟大,下面将对其github开源项目进行移植。疯狂点赞北理工车队!!!!

1、创建工作空间

首先需要创建工作空间,进行编译配置。之前看到通过catkin_init_workspace 进行初始化,还有使用catkin init 的 不知道有什么区别,有了解的大佬可以推荐篇文章给我,感谢。

$ mkdir -p ~/catkin_ws/src # 创建了第二层级的文件夹src,这是放R

Gradle将本地项目打成jar上传到maven仓库

Concsdn的博客

11-02

2076

uploadArchives{

repositories{

mavenDeployer{

repository(url: "http://1.1.1.1:1111/nexus/content/repositories/snapshots/"){

authentication(username:'fsfsd',password:'fsdfs')

}

pom.version = 1.0

...

在Mac安装最新gdb的详细教程,含可能遇到的所有坑(网上最新教程)

偕臧

03-10

1万+

文章目录笔记本系统环境:查看是否安装 gdb:命令 brew 安装 gdb:创建系统证书:修改证书:对证书授权:验证 gdb 证书创建,关闭 SIP 成功:期间可能会遇到的奇怪的问题?遇到证书创建失败?遇到 `Unable to find Mach task port for process-id 2358: (os/kern) failure (0x5).`:遇到 `[New Thread 0x...

java获取微信小程序用户信息

代码改变世界

05-08

5352

第一步:获取openid、session_key等信息。

/**

* 获取微信小程序的用户openid和session_key/unionid

* 返回格式:{"session_key":"ZXxmVGt78993dkNCPmQOA==","openid":"o5TI441P58849p4E-fBrH_HgVvGo","unionid":"oD08m1s24646ZIDJ_AQ9ADUf...

Java毕设-基于springboot+Vue的流浪动物管理系统2(附源码,数据库,教程).zip

03-06

Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。

包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。

该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。

项目都经过严格调试,确保可以运行!

1. 技术组成

前端:html、javascript、Vue

后台框架:SpringBoot

开发环境:idea

数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑)

数据库工具:navicat

部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven

2. 部署

如果部署有疑问的话,可以找我咨询

后台路径地址:localhost:8080/项目名称/admin/dist/index.html

前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)

Swift 基础库. A collection of Swift extensions and utilities.zip

最新发布

03-06

Swift 基础库. A collection of Swift extensions and utilities.zip

剪映使用教程s240306.pptx

03-06

剪映使用教程s240306.pptx

OFO共享单车(Swift版).zip

03-06

OFO共享单车(Swift版).zip

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

启佑潇潇

CSDN认证博客专家

CSDN认证企业博客

码龄13年

暂无认证

8

原创

46万+

周排名

187万+

总排名

3706

访问

等级

128

积分

1

粉丝

0

获赞

0

评论

4

收藏

私信

关注

热门文章

fsfsd

654

RecyclerView/HorizontalScrollView滑动指示器

651

支持分页的tablayout切换,viewpager+fragment双层嵌套

566

Android自定义安全软键盘,jni方式MD5存储加密,ui支持可扩展,使用方便简单安全,防录制,去除内容回显等。

563

底部弹出动画菜单BottomPopUpAnimation

474

分类专栏

dialog

1篇

imagecompress

safeKeyboard

1篇

video

tablayout

1篇

vue

2篇

您愿意向朋友推荐“博客详情页”吗?

强烈不推荐

不推荐

一般般

推荐

强烈推荐

提交

最新文章

底部弹出动画菜单BottomPopUpAnimation

RecyclerView/HorizontalScrollView滑动指示器

Vue-demo 新闻中心

2019年8篇

目录

目录

分类专栏

dialog

1篇

imagecompress

safeKeyboard

1篇

video

tablayout

1篇

vue

2篇

目录

评论

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

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

余额充值

11 文件_fsfsd-CSDN博客

>

11 文件_fsfsd-CSDN博客

11 文件

最新推荐文章于 2024-03-05 10:15:42 发布

qq_45693271

最新推荐文章于 2024-03-05 10:15:42 发布

阅读量498

收藏

点赞数

文章标签:

python

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/qq_45693271/article/details/116426483

版权

Python

专栏收录该内容

11 篇文章

1 订阅

订阅专栏

文件

文件的打开与关闭读数据读取文件内的数据读取内存中的数据StringIOBytesIO

with的使用

文件备份小文件备份大文件备份

文件定位telltruncateseek

导入方式importfrom ... import

os模块操作文件模块的制作

文件的打开与关闭

语法格式:open(’ 路径 ', ’ 打开模式 ') 此命令为创建或打开指定的文件存在即打开,不存在即创建 以下代码可能会因为编码格式的不同而出现乱码

#以默认的编码gbk为中文编码,在使用时最好指定一个编码类型

#打开文件

b=open('./test.text','w',encoding='utf-8')

#w模式每执行一次都会创建一个新文件而覆盖掉之前的文件

#读/写操作

b.write('圣诞节公布的健康的高考')

b.write('vbdvdfkbn')

b.close()

#以二进制的形式写数据(字节)

b=open('./test1.text','wb')

b.write('吧是单据福建大V比较的VB降低而'.encode('utf-8'))

b.close()

b=open('./test.text','a')#追加

b.write('吧是单据福建大V比较的VB降低而\r\n')

b.write('很丰富哈萨克')

b.close()

b=open('./test.text','ab')#以二进制追加

b.write('吧是单据福建大V比较的VB降低而\r\n'.encode('utf-8'))

b.write('很丰富哈萨克'.encode('utf-8'))

b.close()

读数据

读取文件内的数据

b=open('test.text','r')

print(b.read(20))#读取20个数据其中'\n','\r'分别为1个数据,不填数据则默认的为读取全部

print(b.read())#会从之前所读的位置往后读

print(b.readline(5))#表示读取该行,括号中的数字表示读取该行的前几个数据,其它性质与open一样

print(b.readlines())#读取所有行,括号中的数字表示读取第几行

b.close()

b=open('test.text','rb')#以二进制形式读取

data = b.read(20)

print(data.decode('gbk'))#解码

b.close()

读取内存中的数据

StringIO

只可以对字符串进行操作

from io import StringIO

f = StringIO()

f.write("hcdhfk")

f.write(" ")

f.write("jjfd")

print('-------------------StringIO-------------------')

print(f.getvalue())

BytesIO

只可以对二进制数进行操作

from io import BytesIO

r = BytesIO()

r.write('东方今典'.encode('utf-8'))

print('-------------------BytesIO-------------------')

print(r.getvalue())

with的使用

可以自动释放关联的对象

with open('./test.text','a') as d:

# print(d.read())

d.write('vjdbjdvjdbvb')

文件备份

小文件备份

def copyFile():

#接收用户输入的文件名

old_file=input('输入文件名:')

file_list=old_file.split('.')#分割文件名及其后缀

#构造新的文件名.加上备份的后缀

new_file=file_list[0] + '_01.' + file_list[1]

old_f=open(old_file,'r')#打开需要备份的文件

new_f=open(new_file,'w')#以写的模式去打开新文件,不存在则创建

content = old_f.read()#将文件内容读取出来

new_f.write(content)#将读取的内容写入到备份文件中

old_f.close()

new_f.close()

pass

copyFile()

大文件备份

def copybigFile():

#接收用户输入的文件名

old_file=input('输入文件名:')

file_list=old_file.split('.')#分割文件名及其后缀

#构造新的文件名.加上备份的后缀

new_file=file_list[0] + '_01.' + file_list[1]

try:

#监视处理逻辑

with open(old_file,'r') as old_f,open(new_file,'w') as new_f:

while True:

content = old_f.read(1024)

new_f.write(content)

if len(content) <1024:

break

except Exception as m:

print(m)

pass

copybigFile()

文件定位

tell

#文件定位

with open("test.text","r") as d:

print(d.read(3))

print(d.tell())#汉字占两个字节但当编码格式为“utf-8”时汉字占一个字节

truncate

with open("test.text","r") as d:

print(d.read())

print("截取之后")

with open("test.text","r+") as f:

print(f.truncate(10))

print(f.read())

seek

seek(a,b)移动光标位置,a表示偏移的方向正数向前偏移,负数向后偏移,b表示偏移的起始位置 0表示文件开头 1表示当前位置 2表示文件末尾

with open("test.text","rb") as d:#r表示以字符形式读取,rb表示以字节形式读取

d.seek(2,0)

data = d.read(2)

print(data.decode("gbk"))

d.seek(-6,2)

data = d.read(2)

print(data.decode("gbk"))#\r\n各占一个字节

d.seek(-2,1)

data = d.read(1)

print(data.decode("gbk"))

#'当我们采取使用字符形式读取时,则只可以用以文件开头来计算相对位置,而另外两种则不被允许

导入方式

import

import time

print(time.ctime())

from … import

from time import ctime,time

print(ctime())

os模块操作文件

import os

import shutil

#重命名

os.rename('./gjrg','gjrg.text') #('路径+旧名字','新名字')

#删除文件

m = 'C:\\Users\\86183\\Documents\\Tencent Files\\3208236566\\FileRecv\\20210313_142332.mp4'#需要转义

m = r'C:\Users\86183\Documents\Tencent Files\3208236566\FileRecv\ghgg.doc'

os.remove(m)#('路径+名字')不会进入回收站,但可以通过选择撤销删除

print(os.path.split('C:/Users/86183/Desktop/python/test/1.py')) #分割为路径和文件名

print(os.path.splitext('C:/Users/86183/Desktop/python/test/1.py'))#分割为路径和扩展名

#mkdir创建一级目录

os.mkdir(r'C:\Users\86183\Desktop\b')

os.mkdir('C:\\Users\\86183\\Desktop\\b\\m')#文件夹下创建文件夹需要分步进行(先创建外面的再创建里面的)

#删除文件夹(只能删除空目录)

os.rmdir(r'C:\Users\86183\Desktop\b')##文件夹下删除文件夹需要分步进行(先删除里面的再创建外面的)

makedirs允许创建多级目录

os.makedirs('C:\\Users\\86183\\Desktop\\b\\m')

os.makedirs('C:/Users/86183/Desktop/b/m')

#删除非空目录

shutil.rmtree('C:/Users/86183/Desktop/a')

#获取当前文件路径

print(os.getcwd())

print(os.path.abspath('.'))

#路径的拼接

print(os.path)

print(os.path.join(os.getcwd(),'venv'))

#python中获取的目录列表(一级目录)

m = os.listdir('C:/Users/86183/Desktop')

for b in m:

print(b)

#或者

with os.scandir('C:/Users/86183/Desktop') as m:

for n in m:

# print(n)#两者不一样

print(n.name)

# 判断文件类型

m = 'C:/Users/86183/Desktop'

for n in os.listdir(m):

if os.path.isfile(os.path.join(m,n)):

print(n)

print("----------------------")

for n in os.listdir(m):

if os.path.isdir(os.path.join(m,n)):

print(n)

#列出当前目录下的所有目录

print([x for x in os.listdir('.') if os.path.isdir(x)])

#列出当前目录下的所有.py文件

print([x for x in os.listdir('.') if os.path.isfile(x) and os.path.splitext(x)[1] == '.py'])

#遍历路径下的所有文件

def ff(m):

for n in os.listdir(m):

d = os.path.join(m,n)#表示该路径下各个一级目录的路径

if os.path.isdir(d):

ff(d)

else:

print(d)

pass

c = 'C:/Users/86183/Desktop'

ff(c)

模块的制作

在python中一个.py文件就是一个模块 不同的模块可以定义相同的变量名,但每个模块变量名的作用域只作用于本模块中 模块分类: 内置模块 自定义模块 第三方模块

import fsfsd#为之前写好的.py文件

c = fsfsd.add(5,9)

g = fsfsd.d(5,9)

k = fsfsd.d(9,5)

print(c) #其实整个过程就相当于在当前文件中去调用之前写好的文件

print(g)

print(k)

from fsfsd import add

c = add(5,9)

from fsfsd import *

# 使用此种方法进行导入时只可以导入__all__魔术变量中有的变量

c = add(5,9)

g = d(5,9)

k = d(9,5)

print(c)

print(g)

print(k)

import os

#

info_message = """zhangyang 100000

weo 80000

link 50000

flyDemo 30000

""" #将信息一行一行输出

#序列字典

xulie_dict = {}

#工资字典

gongzi_dict = {}

#本地创建的文件名

file_name = "info.txt"

#创建文件的路径

Path = os.getcwd()

os.chdir(Path)

# 创建文件函数

def flush_info_txt(file_name, info=info_message):

with open(file_name, "wt", encoding="utf8") as f:

f.write(info + "\n")

#追加新用户信息使用函数

def add_info_txt(file_name, info=None):

with open(file_name, "a+", encoding="utf8") as f:

f.writelines(info)#将添加的信息像之前一样一行一行的添加

#读取用户和工资信息函数

def read_file_txt(file_name):

with open(file_name) as f:

f = f.read()

return f

#将读取出来的姓名和工资形成字典对应

def info_user():

with open(file_name,encoding='utf8') as f:

# file = f.read().strip().split()#strip函数用于去除字符串首尾的内容,但对中间的不做处理 split拆分字符串m并构成字典

file = f.read().split()

keys = [x for x in range(len(file)) if x % 2 == 0]

value = [x for x in range(len(file)) if x % 2 == 1]

for x, y in zip(keys,value):

gongzi_dict[file[x]] = file[y]

return gongzi_dict

#检测初始文件是否存在。不存在就创建,存在就忽略

def check_file():

if not os.path.exists(file_name):

flush_info_txt(file_name)

else:

pass

check_file()

#检测输入是否合理

def check_error(shuru):

if len(shuru) == 0:

print("您输入的为空,请检查输入!")

elif str(shuru).isdigit() == False :

print("输入了错误的字符,请输入数字")

else:

return True

#检测输入的用户名是否在字典的keys中

def check_user(shuru):

if shuru not in gongzi_dict.keys():

pass

elif len(shuru) == 0 or int(len(shuru)) > 6:

print("用户姓名输入错误!不符合姓名的格式.超过6个字段.")

else:

print("您输入的用户出现冲突,用户姓名必须唯一,请核对该用户的信息")

choice_exit = True

def check_choice(choice):

if (len(choice) != 0) and (int(choice) in list_num):

for i, q in enumerate(list_choice):

xulie_dict[i+1] = q

for key, value in xulie_dict.items():

if int(choice) == 4:

print("......程序正在退出..........")

exit(2)

elif int(choice) == key:

input_user_name = input("您选择的是:({}),请输入想要{}的员工姓名:".format(key, value[0:2]))

dict_name = info_user()

if input_user_name in dict_name.keys():

if key == 1:

print("{}的工资是:{}\n******************************".format(input_user_name,dict_name[input_user_name]))

break

elif key == 2:

dict_name = info_user()

old_gongzi = dict_name[input_user_name]

# print(old_gongzi)

update_gongzi = input("请输入修改后的工资金额:")

check_error(update_gongzi)

dict_name[input_user_name] = update_gongzi

update_gongzi = dict_name[input_user_name]

str_info = read_file_txt(file_name)

str_info = str_info.replace(old_gongzi, update_gongzi)

# print(str_info)

flush_info_txt(file_name, info=str_info)

print("修改成功!")

else:

pass

elif key ==3:

new_gongzi = input("请输入他的工资: ")

check_user(input_user_name)

new_user_info = str(input_user_name) + " " + new_gongzi

add_info_txt(file_name, new_user_info)

print("新用户增加成功")

else:

print("您输入的用户名不存在,请检查后重新输入!")

break

else:

print("您输入了错误的数字,请检查重新输入是否在{}范围内".format(list_num))

while choice_exit:

list_choice = ["查询员工工资", "修改员工工资", "增加新员工记录", "退出"]

for i, q in enumerate(list_choice):

print(str(i+1) + "." + str(q))

list_num = [x+1 for x in range(len(list_choice))]

input_number = input(">>>>请输入您要进行的操作: ")

if str(input_number).isdigit():

check_choice(input_number)

else:

check_error(input_number)

continue

优惠劵

qq_45693271

关注

关注

0

点赞

0

收藏

觉得还不错?

一键收藏

知道了

0

评论

11 文件

文件文件的打开与关闭读数据with的使用文件的打开与关闭语法格式:open(’ 路径 ', ’ 打开模式 ') 此命令为创建或打开指定的文件存在即打开,不存在即创建以下代码可能会因为编码格式的不同而出现乱码#以默认的编码gbk为中文编码,在使用时最好指定一个编码类型#打开文件b=open('./test.text','w',encoding='utf-8')#w模式每执行一次都会创建一个新文件而覆盖掉之前的文件#读/写操作b.write('圣诞节公布的健康的高考')b.write('

复制链接

扫一扫

专栏目录

sdfasfdafsfsd

04-05

想剪裁一寸照片,用于社保照片,要求白色背景、正式身份照

fsfsd

xiaoyi2412的博客

07-25

654

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190731103228835.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW95aTI0MTI=,size_16,color_FFFFFF...

参与评论

您还未登录,请先

登录

后发表或查看评论

截取 java 字符串中 从某个字符(比如小数点“ . ”)第二次出现的位置到结尾之间的字符

热门推荐

大千世界的博客

08-09

1万+

转自 : https://zhidao.baidu.com/question/274850061.html    第二个回答者aqi314819950 

 

public class TestCode {

public static void main(String[] args) {

String str ="232ljsfsf.sdfl23.ljsdfsdfsdfss.23423.sdfs...

FSSD解读

Sundrops的专栏

12-28

1万+

本文是SSD的改进版,算是SSD+FPN思想的结合。

nginx重写与重定向区别_nginx 匹配(重定向)

weixin_39608988的博客

12-22

173

文件供参考(有点乱)log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"''"$upstream_addr" "$upstream_r...

Gradle将本地项目打成jar上传到maven仓库

Concsdn的博客

11-02

2076

uploadArchives{

repositories{

mavenDeployer{

repository(url: "http://1.1.1.1:1111/nexus/content/repositories/snapshots/"){

authentication(username:'fsfsd',password:'fsdfs')

}

pom.version = 1.0

...

利用python对字符串处理,取中间的字符

编程之路

03-20

1万+

比如 str = "(sdadsafsfsdfdgfdghfhfghgjg)"取出括号里面的内容:str.strip()[1:-1]

11.文件操作

阿路

06-28

113

1.相关类处理

QFile、QTextStream、QFileInfo

QFile:文件基本操作

QTextStream:文本流–会自动处理编码转换,解决一些乱码问题

QFileInfo:操作文件信息

2.QFile:

2.1 继承关系

QObject–QIODevice–QFileDevice–QFile

QIODevice:QT对输入输出设备抽象,提供了操作设备的一系列接口。

接口:

QFil...

Windows PC版微信内置浏览器调试

KOOK007的博客

07-01

1万+

因为微信的限制,一些网页只能用微信内置的浏览器打开,这就导致有时候一些生产环境的问题,不方便排查。下面将介绍如何通过老版本的PC端微信,打开微信内置浏览器调试。

批量修改html路径,如何批量修改文件后缀名(包含该路径下的所有文件夹)

weixin_31690531的博客

06-03

452

批量修改文件名,真是的一件很简单,但是非常繁琐的事情。捧着一颗懒人的心,不想重复劳动,所以上网找了一些批量修改后缀名的资料,为了防止忘记,暂且收录起来。1、批量修改某个文件夹目录下的所有文件的后缀名方法非常简单,在该目录下,新建一个文本,此时文件后缀名是.txt。编辑该文本,文本内容为:ren *.ans *.out此处的意思是将所有的.ans为后缀的文件名修改成.out。编写好后,将这个文本的后...

Python 批量修改指定文件夹下的所有(指定后缀)文件

weixin_43499182的博客

01-02

1314

#Python 批量修改指定文件夹下的所有(指定后缀)文件

import os;

if __name__=='__main__':

os.chdir('C:/Users/86183/Desktop/Android_week6');#指定文件夹路径

cnt = 1; # 初始序号

# os.listdir(path) 方法用于返回指定的文件夹(path)包含的文件或文件夹的...

11.常见文件类型的图标介绍 - IntelliJ IDEA 使用教程

x380481791的专栏

05-04

844

常见文件类型的图标介绍

Java 类相关图标介绍

官网地址:http://www.jetbrains.com/idea/webhelp/file-types-recognized-by-intellij-idea.html对于各个图标,上图的介绍得非常清楚,我这边只做一个类型文件的补充。

JavaScript 两种图标介绍如上图所示,对于压缩过的 JavaScri

python基础—— 文件

m0_51364612的博客

11-29

1230

文件概述

相信大家对文件并不陌生,它可以存储文字、图片、音乐、视频等,如图所示。总之,文件是数据的集合,可以有不同的类型。

按数据的组织形式,文件大致可以分为如下两类。

1. 文本文件

文本文件是一种由若干字符构成的文件,可以用文本编辑器进行阅读或编辑。以txt、py、html等为后缀的文件都是文本文件。

2. 二进制文件

二进制文件一般是指不能用文本编辑器阅读或编辑的文件。以mp3、mp4、png等为后缀的文件都是二进制文件,如果想要打开或修改这些文件,必须通过特定软件进行,比如用Photoshop软件

C++11文件目录操作简介

陈祥的Blog

03-05

1万+

文件目录操作有很多方式,有许多Windows API可用,不过用起来不是那么方便。今天说一下C++11提供的文件目录操作的标准库。

头文件与命名空间:

头文件只需要#include <filesystem>

因为还没有正式进入C++11标准,目前还在TR2里面

命名空间在std::tr2::sys

路径类path:

路径使用的是path类,可以直接用字符串...

11文件

a_small_python的博客

02-10

143

1.文件的打开open()open有很多参数,除第一个参数file外,其他参数都有默认值参数 ①file  传入文件名(如果不加路径,Python会在当前文件夹下寻找)②mode='r'  文件的打开模式'r' 以只读方式打开文件(默认)'w' 以写入的方式打开文件,会覆盖已存在的文件'x' 如果文件已存在,使用此模式打开将引发异常'a' 以写入模式打开,如果文件已存在,则在末尾追加写入'b' 以...

Scrapy与分布式开发(3):Scrapy核心组件与运行机制

最新发布

九月镇领将的博客

03-05

917

Scrapy是一个为了爬取网站数据、提取结构性数据而编写的应用框架。它使用Python语言编写,并基于异步网络框架Twisted来实现高性能的爬虫。Scrapy最初是为了页面抓取(更确切地说是网络抓取)而设计的,但它也可以用于获取API返回的数据或通用的网络爬虫。

【python课程作业】python学生成绩管理系统

疯狂屌丝程序员

03-05

601

平台采用B/S结构,后端采用主流的Python语言进行开发,前端采用主流的Vue.js进行开发。给舍友做的课程作业。功能包括:成绩管理、学生管理、课程管理、班级管理、用户管理、日志管理、系统信息模块。

win11文件关联修改

12-10

Win11文件关联修改是指在Windows 11操作系统中更改特定文件类型与默认打开程序之间的关联。通过修改文件关联,可以自定义某个文件类型在打开时使用的默认程序。 要修改文件关联,可以按照以下步骤进行操作: 1. ...

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

qq_45693271

CSDN认证博客专家

CSDN认证企业博客

码龄4年

暂无认证

48

原创

11万+

周排名

174万+

总排名

1万+

访问

等级

448

积分

2

粉丝

5

获赞

2

评论

39

收藏

私信

关注

热门文章

3 cookie、防盗链

2034

hdu 2629 Identity Card

1623

2从html中提取相关数据

1252

通过四个控制点绘制三次贝赛尔曲线

1194

OpenGL彩色茶壶

695

分类专栏

爬虫

5篇

AcWing

4篇

HDU

17篇

最新评论

通过四个控制点绘制三次贝赛尔曲线

qq_51438856:

对应的数据可以发一下吗,谢谢

hdu 1215 七夕节

不吃西红柿丶:

笔落惊风雨,诗成泣鬼神!

您愿意向朋友推荐“博客详情页”吗?

强烈不推荐

不推荐

一般般

推荐

强烈推荐

提交

最新文章

4多线程,多进程,线程池

5 selenium,下拉列表(select),验证码

3 cookie、防盗链

2021年42篇

2020年6篇

目录

目录

分类专栏

爬虫

5篇

AcWing

4篇

HDU

17篇

目录

评论

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

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

余额充值

Free CAD Designs, Files & 3D Models | The GrabCAD Community Library

Free CAD Designs, Files & 3D Models | The GrabCAD Community Library

Please enable JavaScript to use GrabCAD

Learn about the GrabCAD Platform

Get to know GrabCAD as an open software platform for Additive Manufacturing

Visit our new homepage

Control

Shop

Streamline Pro

Partner Program

Print

Community

Log in

Library

Challenges

Groups

Questions

Tutorials

Engineers

Blog

Log in

Sign In or Create Account

Forgot password

×

Sign In

or

Create Account

Send Email

Back to Login Form

The email with your password reset link has been sent.

If you don't receive the email within an hour (and you've checked your Spam folder), email us as confirmation@grabcad.com.

Back to Login Form

© 2024 Stratasys Inc.

ABOUT US

Company

Jobs

RESOURCES

Blog

Resource Center

Help Center

SOCIAL

Facebook

Youtube

Instagram

Linkedin

Twitter

Streamline Pro

Overview

Control

Overview

Print

Overview

GrabCAD Print for FDM

Advanced PolyJet

Digital Anatomy

SAF Technology

Origin One

Shop

Overview

Features

Compare

Teachers & Lab Managers

IT & Security

Engineering Managers

Pricing

PARTNERS

Software Partners

GrabCAD SDKs

COMMUNITY

Library

Challenges

Groups

Questions

Tutorials

Engineers

Contact Us

Website Terms of Use

Software Terms of Use

Privacy policy

Trademarks

Your Data on GrabCAD

The Computer-Aided Design ("CAD") files and all associated content posted to this website are created, uploaded, managed and owned by third-party users. Each CAD and any associated text, image or data is in no way sponsored by or affiliated with any company, organization or real-world item, product, or good it may purport to portray.

FDFS....一、FastDFS介绍-CSDN博客

>

FDFS....一、FastDFS介绍-CSDN博客

FDFS....一、FastDFS介绍

最新推荐文章于 2023-08-11 13:55:52 发布

dixialaoshu4

最新推荐文章于 2023-08-11 13:55:52 发布

阅读量3.1w

收藏

48

点赞数

6

分类专栏:

FastDFS

FastDFS

专栏收录该内容

6 篇文章

2 订阅

订阅专栏

FastDFS开源地址:https://github.com/happyfish100

参考:分布式文件系统FastDFS设计原理 

参考:FastDFS分布式文件系统

个人封装的FastDFS Java API:https://github.com/bojiangzhou/lyyzoo-fastdfs-java

转载地址: https://www.cnblogs.com/chiangchou/p/fastdfs.html#_label4_2

1、简介

FastDFS 是一个开源的高性能分布式文件系统(DFS)。 它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡。主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务。

FastDFS 系统有三个角色:跟踪服务器(Tracker Server)、存储服务器(Storage Server)和客户端(Client)。

  Tracker Server:跟踪服务器,主要做调度工作,起到均衡的作用;负责管理所有的 storage server和 group,每个 storage 在启动后会连接 Tracker,告知自己所属 group 等信息,并保持周期性心跳。    

Tracker是FastDFS的协调者,负责管理所有的storage server和group,每个storage在启动后会连接Tracker,告知自己所属的group等信息,并保持周期性的心跳,tracker根据storage的心跳信息,建立group==>[storage server list]的映射表。

Tracker需要管理的元信息很少,会全部存储在内存中;另外tracker上的元信息都是由storage汇报的信息生成的,本身不需要持久化任何数据,这样使得tracker非常容易扩展,直接增加tracker机器即可扩展为tracker cluster来服务,cluster里每个tracker之间是完全对等的,所有的tracker都接受stroage的心跳信息,生成元数据信息来提供读写服务。

  Storage Server:存储服务器,主要提供容量和备份服务;以 group 为单位,每个 group 内可以有多台 storage server,数据互为备份。

Storage server(后简称storage)以组(卷,group或volume)为单位组织,一个group内包含多台storage机器,数据互为备份,存储空间以group内容量最小的storage为准,所以建议group内的多个storage尽量配置相同,以免造成存储空间的浪费。

以group为单位组织存储能方便的进行应用隔离、负载均衡、副本数定制(group内storage server数量即为该group的副本数),比如将不同应用数据存到不同的group就能隔离应用数据,同时还可根据应用的访问特性来将应用分配到不同的group来做负载均衡;缺点是group的容量受单机存储容量的限制,同时当group内有机器坏掉时,数据恢复只能依赖group内地其他机器,使得恢复时间会很长。

group内每个storage的存储依赖于本地文件系统,storage可配置多个数据存储目录,比如有10块磁盘,分别挂载在/data/disk1-/data/disk10,则可将这10个目录都配置为storage的数据存储目录。

storage接受到写文件请求时,会根据配置好的规则(后面会介绍),选择其中一个存储目录来存储文件。为了避免单个目录下的文件数太多,在storage第一次启动时,会在每个数据存储目录里创建2级子目录,每级256个,总共65536个文件,新写的文件会以hash的方式被路由到其中某个子目录下,然后将文件数据直接作为一个本地文件存储到该目录中。

  Client客户端:上传下载数据的服务器,也就是我们自己的项目所部署在的服务器。

 

2、FastDFS的存储策略

为了支持大容量,存储节点(服务器)采用了分卷(或分组)的组织方式。存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储系统中的文件容量。一个卷可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台存储服务器起到了冗余备份和负载均衡的作用。

在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后,系统自动将新增服务器切换到线上提供服务。当存储空间不足或即将耗尽时,可以动态添加卷。只需要增加一台或多台服务器,并将它们配置为一个新的卷,这样就扩大了存储系统的容量。

3、FastDFS的上传过程

FastDFS向使用者提供基本文件访问接口,比如upload、download、append、delete等,以客户端库的方式提供给用户使用。

Storage Server会定期的向Tracker Server发送自己的存储信息。当Tracker Server Cluster中的Tracker Server不止一个时,各个Tracker之间的关系是对等的,所以客户端上传时可以选择任意一个Tracker。

当Tracker收到客户端上传文件的请求时,会为该文件分配一个可以存储文件的group,当选定了group后就要决定给客户端分配group中的哪一个storage server。当分配好storage server后,客户端向storage发送写文件请求,storage将会为文件分配一个数据存储目录。然后为文件分配一个fileid,最后根据以上的信息生成文件名存储文件。

 

选择tracker server

当集群中不止一个tracker server时,由于tracker之间是完全对等的关系,客户端在upload文件时可以任意选择一个trakcer。

选择存储的group

当tracker接收到upload file的请求时,会为该文件分配一个可以存储该文件的group,支持如下选择group的规则: 1. Round robin,所有的group间轮询 2. Specified group,指定某一个确定的group 3. Load balance,剩余存储空间多多group优先

选择storage server

当选定group后,tracker会在group内选择一个storage server给客户端,支持如下选择storage的规则: 1. Round robin,在group内的所有storage间轮询 2. First server ordered by ip,按ip排序 3. First server ordered by priority,按优先级排序(优先级在storage上配置)

选择storage path

当分配好storage server后,客户端将向storage发送写文件请求,storage将会为文件分配一个数据存储目录,支持如下规则: 1. Round robin,多个存储目录间轮询 2. 剩余存储空间最多的优先

生成Fileid

选定存储目录之后,storage会为文件生一个Fileid,由storage server ip、文件创建时间、文件大小、文件crc32和一个随机数拼接而成,然后将这个二进制串进行base64编码,转换为可打印的字符串。

选择两级目录

当选定存储目录之后,storage会为文件分配一个fileid,每个存储目录下有两级256*256的子目录,storage会按文件fileid进行两次hash(猜测),路由到其中一个子目录,然后将文件以fileid为文件名存储到该子目录下。

生成文件名

当文件存储到某个子目录后,即认为该文件存储成功,接下来会为该文件生成一个文件名,文件名由group、存储目录、两级子目录、fileid、文件后缀名(由客户端指定,主要用于区分文件类型)拼接而成。

文件同步

4、FastDFS的文件同步

写文件时,客户端将文件写至group内一个storage server即认为写文件成功,storage server写完文件后,会由后台线程将文件同步至同group内其他的storage server。

每个storage写文件后,同时会写一份binlog,binlog里不包含文件数据,只包含文件名等元信息,这份binlog用于后台同步,storage会记录向group内其他storage同步的进度,以便重启后能接上次的进度继续同步;进度以时间戳的方式进行记录,所以最好能保证集群内所有server的时钟保持同步。

storage的同步进度会作为元数据的一部分汇报到tracker上,tracke在选择读storage的时候会以同步进度作为参考。

比如一个group内有A、B、C三个storage server,A向C同步到进度为T1 (T1以前写的文件都已经同步到B上了),B向C同步到时间戳为T2(T2 > T1),tracker接收到这些同步进度信息时,就会进行整理,将最小的那个做为C的同步时间戳,本例中T1即为C的同步时间戳为T1(即所有T1以前写的数据都已经同步到C上了);同理,根据上述规则,tracker会为A、B生成一个同步时间戳。

5、FastDFS的文件下载

客户端uploadfile成功后,会拿到一个storage生成的文件名,接下来客户端根据这个文件名即可访问到该文件。

跟upload file一样,在downloadfile时客户端可以选择任意tracker server。tracker发送download请求给某个tracker,必须带上文件名信息,tracke从文件名中解析出文件的group、大小、创建时间等信息,然后为该请求选择一个storage用来服务读请求。

tracker发送download请求给某个tracker,必须带上文件名信息,tracke从文件名中解析出文件的group、大小、创建时间等信息,然后为该请求选择一个storage用来服务读请求。由于group内的文件同步时在后台异步进行的,所以有可能出现在读到时候,文件还没有同步到某些storage server上,为了尽量避免访问到这样的storage,tracker按照如下规则选择group内可读的storage。

1. 该文件上传到的源头storage - 源头storage只要存活着,肯定包含这个文件,源头的地址被编码在文件名中。 2. 文件创建时间戳==storage被同步到的时间戳 且(当前时间-文件创建时间戳) > 文件同步最大时间(如5分钟) - 文件创建后,认为经过最大同步时间后,肯定已经同步到其他storage了。 3. 文件创建时间戳 < storage被同步到的时间戳。 - 同步时间戳之前的文件确定已经同步了 4. (当前时间-文件创建时间戳) > 同步延迟阀值(如一天)。 - 经过同步延迟阈值时间,认为文件肯定已经同步了。

6.小文件合并存储

将小文件合并存储主要解决如下几个问题:

1. 本地文件系统inode数量有限,从而存储的小文件数量也就受到限制。 2. 多级目录+目录里很多文件,导致访问文件的开销很大(可能导致很多次IO) 3. 按小文件存储,备份与恢复的效率低

FastDFS在V3.0版本里引入小文件合并存储的机制,可将多个小文件存储到一个大的文件(trunk file),为了支持这个机制,FastDFS生成的文件fileid需要额外增加16个字节

1. trunk file id 2. 文件在trunk file内部的offset 3. 文件占用的存储空间大小 (字节对齐及删除空间复用,文件占用存储空间>=文件大小)

每个trunk file由一个id唯一标识,trunk file由group内的trunk server负责创建(trunk server是tracker选出来的),并同步到group内其他的storage,文件存储合并存储到trunk file后,根据其offset就能从trunk file读取到文件。

文件在trunk file内的offset编码到文件名,决定了其在trunk file内的位置是不能更改的,也就不能通过compact的方式回收trunk file内删除文件的空间。但当trunk file内有文件删除时,其删除的空间是可以被复用的,比如一个100KB的文件被删除,接下来存储一个99KB的文件就可以直接复用这片删除的存储空间。

HTTP访问支持

FastDFS的tracker和storage都内置了http协议的支持,客户端可以通过http协议来下载文件,tracker在接收到请求时,通过http的redirect机制将请求重定向至文件所在的storage上;除了内置的http协议外,FastDFS还提供了通过apache或nginx扩展模块下载文件的支持。

其他特性

FastDFS提供了设置/获取文件扩展属性的接口(setmeta/getmeta),扩展属性以key-value对的方式存储在storage上的同名文件(拥有特殊的前缀或后缀),比如/group/M00/00/01/some_file为原始文件,则该文件的扩展属性存储在/group/M00/00/01/.some_file.meta文件(真实情况不一定是这样,但机制类似),这样根据文件名就能定位到存储扩展属性的文件。

以上两个接口作者不建议使用,额外的meta文件会进一步“放大”海量小文件存储问题,同时由于meta非常小,其存储空间利用率也不高,比如100bytes的meta文件也需要占用4K(block_size)的存储空间。

FastDFS还提供appender file的支持,通过upload_appender_file接口存储,appender file允许在创建后,对该文件进行append操作。实际上,appender file与普通文件的存储方式是相同的,不同的是,appender file不能被合并存储到trunk file。

问题讨论

从FastDFS的整个设计看,基本上都已简单为原则。比如以机器为单位备份数据,简化了tracker的管理工作;storage直接借助本地文件系统原样存储文件,简化了storage的管理工作;文件写单份到storage即为成功、然后后台同步,简化了写文件流程。但简单的方案能解决的问题通常也有限,FastDFS目前尚存在如下问题(欢迎探讨)。

数据安全性

写一份即成功:从源storage写完文件至同步到组内其他storage的时间窗口内,一旦源storage出现故障,就可能导致用户数据丢失,而数据的丢失对存储系统来说通常是不可接受的。缺乏自动化恢复机制:当storage的某块磁盘故障时,只能换存磁盘,然后手动恢复数据;由于按机器备份,似乎也不可能有自动化恢复机制,除非有预先准备好的热备磁盘,缺乏自动化恢复机制会增加系统运维工作。数据恢复效率低:恢复数据时,只能从group内其他的storage读取,同时由于小文件的访问效率本身较低,按文件恢复的效率也会很低,低的恢复效率也就意味着数据处于不安全状态的时间更长。缺乏多机房容灾支持:目前要做多机房容灾,只能额外做工具来将数据同步到备份的集群,无自动化机制。

存储空间利用率

单机存储的文件数受限于inode数量每个文件对应一个storage本地文件系统的文件,平均每个文件会存在block_size/2的存储空间浪费。文件合并存储能有效解决上述两个问题,但由于合并存储没有空间回收机制,删除文件的空间不保证一定能复用,也存在空间浪费的问题

负载均衡

group机制本身可用来做负载均衡,但这只是一种静态的负载均衡机制,需要预先知道应用的访问特性;同时group机制也导致不可能在group之间迁移数据来做动态负载均衡。

优惠劵

dixialaoshu4

关注

关注

6

点赞

48

收藏

觉得还不错?

一键收藏

知道了

1

评论

FDFS....一、FastDFS介绍

FastDFS开源地址:https://github.com/happyfish100参考:分布式文件系统FastDFS设计原理 参考:FastDFS分布式文件系统个人封装的FastDFS Java API:https://github.com/bojiangzhou/lyyzoo-fastdfs-java转载地址: https://www.cnblogs.com/chiangch...

复制链接

扫一扫

专栏目录

nginx+fdfs.txt

06-16

nginx+fdfs 快速搭建

Fdfs 轻量级分布式文件系统

qixiang_chen的博客

01-20

2115

FastDFS是一款开源的轻量级分布式文件系统纯C实现,支持Linux、FreeBSD等UNIX系统类google FS,不是通用的文件系统,只能通过专有API访问,目前提供了C、Java和PHP API为互联网应用量身定做,解决大容量文件存储问题,追求高性能和高扩展性FastDFS可以看做是基于文件的key value pair存储系统,称作分布式文件存储服务更为合适。

FastDFS服务端有两...

1 条评论

您还未登录,请先

登录

后发表或查看评论

FastDFS基础

weixin_44806420的博客

06-03

218

FastDFS分布式文件存储系统

(1)背景:①早期的网站,将静态文件(图片等)直接存放在项目文件夹内,优点(简单方便快捷),缺点(耦合度高,静态文件访问占用资源多);

②后来将静态文件分离存储在一个单独的文件服务器上,优点(解耦,降低网站服务器压力,便于扩容、备份、负载均衡等),缺点(垂直扩展性、容灾差,单机性能瓶颈);

③分布式文件存储系统,分为三部分,文件存储系统(保存文件)、文件容灾系统(...

Centos7快速部署FDFS分布式文件管理系统

weixin_47750895的博客

04-21

539

一、什么是FDFS

FastDFS(简称FDFS)是一个开源的高性能分布式文件系统。它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

FastDFS 系统有三个角色:跟踪服务器(Tracker Server)、存储服务器(St.

fastDFS的安装和配置

qq_64011418的博客

08-11

451

本文介绍fastDFS安装的全过程,包含文件安装、配置,出现的各种错误以及解决办法,无需动脑,各种bug,跟着本文砍瓜切菜,一键安装成功

分布式文件系统FastDFS设计原理

05-21

1077

转自: http://blog.yunnotes.net/index.php/fastdfs_design/

FastDFS是一个开源的轻量级分布式文件系统,由跟踪服务器(tracker server)、存储服务器(storage server)和客户端(client)三个部分组成,主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB < file_size

FastDFS原理及维护

Dream12306的博客

04-09

895

FastDFS

fdfs是一个开源分布式存储解决方案,整个集群节点分为storage和tracker

storage真正的存储文件的节点,集群中可以有很多个storage节点,每个节点都是平级的,互为备份。

tracker负责协调和管理整个集群,集群中可以有多个tracker,它们都是平级的,为了提高系统的稳定性和吞吐量,建议部署多个tracker。

集群关系

多个(M)tracker对应多...

FastDFS入门学习之集群搭建

Richardlygo的博客

12-12

710

一、FastDFS 简介

FastDFS是由国人余庆所开发,其项目地址:

https://github.com/happyfish100

FastDFS是一个轻量级的开源分布式文件系统,主要解决了大容量的文件存储和高并发访问的问题,文件存取时实现了负载均衡。

FastDFS是一款类Google FS的开源分布式文件系统,它用纯C语言实现,支持Linux、...

文件服务器的安装

逆水寒的博客

11-18

291

安装libfastcommon

获取libfastcommon安装包:

wget https://github.com/happyfish100/libfastcommon/archive/V1.0.38.tar.gz

解压安装包:tar -zxvf V1.0.38.tar.gz

进入目录:cd libfastcommon-1.0.38

执行编译:./make.sh

安装:./make.sh in...

分布式文件系统FastDFS

企业实战系列集 ●●● https://ximenjianxue.blog.csdn.net

09-08

2573

概述

FastDFS是一个开源的轻量级分布式文件系统,是我国一款开源的分布式文件系统 由阿里巴巴开发,其真题架构由跟踪服务器(tracker server)、存储服务器(storage server)和客户端(client)三个部分组成,主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务。

特点:

1>Fast......

fdfs:FastDFS Node.js客户端

05-16

Nodejs Client for FastDFS 是分布式文件存储系统。这个项目是FastDFS的... host: 'tracker.fastdfs.com', port: 22122 } ], // 默认超时时间10s timeout: 10000, // 默认后缀 // 当获取不到文件后缀时使用

nginx+FastDFS.zip

12-14

nginx+FastDFS.zip

FastDfs搭建文档.docx

11-07

Linux系统上安装FastDfs文档,已经过多方和使用,请有需要的朋友们尽快下载

SXT-FastDFS.pdf

11-19

FastDFS 为互联网量身定制, 充分考虑了冗余备份、 负载均衡、 线性扩容等机制, 并注 重高可用、 高性能等指标, 使用 FastDFS 很容易搭建一套高性能的文件服务器集群提供文件 ...此文档教你由繁入简搭建fdfs系统

邵鹏元23354133.pdf

03-06

邵鹏元23354133.pdf

Swift 5.0中实现的设计模式.zip

最新发布

03-06

Swift 5.0中实现的设计模式.zip

人工智能-项目实践-信息管理系统-亿级别域名whois信息统计管理系统

03-06

亿级别域名whois信息统计管理系统

该系统主要用来统计分析域名WHOIS信息,后台使用Python的Tornado框架,前台使用Bootstrap/Ajax/JQuery/Highchars等框架来搭建。 通过使用MVC框架,使程序能够更清晰明了,同时方便编写代码.

前端使用以下内容

dataTables

font-awesome

layers

bootstrap

highcharts

highmaps

基于Spring Boot在线远程考试系统的设计与实现(毕业论文)

03-06

Java基于springboot的在线远程考试系统设计与实现

本次开发的在线远程考试系统实现了字典管理、试卷表管理、试题表管理、考试记录表管理、答题详情表管理、错题表管理、公告管理、用户管理、老师管理、管理员管理等功能。系统用到了关系型数据库中王者MySql作为系统的数据库,有效的对数据进行安全的存储,有效的备份,对数据可靠性方面得到了保证。

(基于Springboot的Java毕业设计)在线课程管理系统(源码+演示视频+说明文档).rar

03-06

(基于Springboot的Java毕业设计)在线课程管理系统(源码+演示视频+说明文档).rar

【项目技术】

开发语言:Java

框架:springboot

架构:B/S

数据库:mysql

【实现功能】

本在线课程管理系统有管理员,教师,学生。管理员功能有个人中心,学生管理,教师管理,在线课程管理,课件信息管理,知识要点管理,教学计划管理,考试大纲管理,科目类型管理,班级分类管理,通知公告管理,在线交流,系统管理等。教师可以发布课程课件资料,知识要点以及教学计划等信息,学生可以查看教师发布的信息,还可以进行留言交流。

fastdfs 一个group内实现按照不同的项目,指定路径存储.

06-01

./fdfs_upload_file /etc/fdfs/client.conf group1 /path/to/file ``` 这样就可以实现按照不同的项目指定路径存储了。需要注意的是,为了避免不同的项目之间出现文件名冲突,可以在文件名前面添加项目名称作为前缀...

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

dixialaoshu4

CSDN认证博客专家

CSDN认证企业博客

码龄12年

暂无认证

3

原创

22万+

周排名

42万+

总排名

9万+

访问

等级

702

积分

169

粉丝

29

获赞

7

评论

98

收藏

私信

关注

热门文章

FDFS....一、FastDFS介绍

31849

IDEA上面安装vue插件

23111

FDFS....六、权限控制

10162

win10下虚拟机VMware安装PhoenixOS(凤凰OS)

9351

Redis.....CentOS7下redis设置密码、开放远程访问权限

4037

分类专栏

异常信息

FastDFS

6篇

IDEA设置

1篇

redis

2篇

rabbitMQ

mysql5.7

1篇

linux防火墙

1篇

nodejs

1篇

jdk

1篇

vue部署centos

1篇

linux命令

1篇

javaweb

13篇

开发工具

1篇

k8s

4篇

istio

1篇

kubernetes

1篇

linux环境

最新评论

FDFS....六、权限控制

无名野修:

ProtoCommon这玩意哪里来的getFilename这玩意干啥呢 写博客好好写,还是程序员

win10下虚拟机VMware安装PhoenixOS(凤凰OS)

笔尖雨:

这个教程就很实用啊,官网上的教程有点坑爹,

win10下虚拟机VMware安装PhoenixOS(凤凰OS)

张学徒:

非常感谢您的教程

win10下虚拟机VMware安装PhoenixOS(凤凰OS)

云帆Plan:

分辨率怎么改啊

FDFS....一、FastDFS介绍

贝多芬也爱敲代码:

博主总结的很详细,谢谢分享

您愿意向朋友推荐“博客详情页”吗?

强烈不推荐

不推荐

一般般

推荐

强烈推荐

提交

最新文章

helm简介、安装、配置、使用指南

kunernets使用helm安装tiller踩坑

Ubuntu19.04部署kubernetes-master⎈

2019年4篇

2018年31篇

目录

目录

分类专栏

异常信息

FastDFS

6篇

IDEA设置

1篇

redis

2篇

rabbitMQ

mysql5.7

1篇

linux防火墙

1篇

nodejs

1篇

jdk

1篇

vue部署centos

1篇

linux命令

1篇

javaweb

13篇

开发工具

1篇

k8s

4篇

istio

1篇

kubernetes

1篇

linux环境

目录

评论 1

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

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

余额充值

FSFD入门 - 启-CSDN博客

>

FSFD入门 - 启-CSDN博客

FSFD入门 - 启

最新推荐文章于 2024-02-29 15:42:57 发布

jununfly

最新推荐文章于 2024-02-29 15:42:57 发布

阅读量3.7k

收藏

3

点赞数

分类专栏:

FSFD入门

文章标签:

磁盘

filter

任务

io

windows

解密

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/jununfly/article/details/4044972

版权

FSFD入门

专栏收录该内容

1 篇文章

1 订阅

订阅专栏

其实文件系统过滤驱动不难。

假如你是新手,我可以先告诉你这句体会。然后是转折——难在业务结合。

 

在这个系列中我不准备长篇大论一些虽然有限但确实已经很详尽的资料中阐述过的基础知识。最权威的资料:1、NTFSI; 2、WDK; 3、fastfat源码。

第3其实就在2中,特意提出来是为了强调源码的重要性,osr上某位MVP说过这么一句话:you should considered it as the document。而且经历过一段学习之后你就会知道,FSFD开发中能有份无误或者说思路正确的源码做参考是件多么幸福的事情。

 

写这个系列是因为我自己走过那段痛苦的探索过程(虽然现在仍然在探索)。不过我的驱动开发经验也十分有限,希望本系列能帮到你。

 

以我自己的体会来讲,刚刚进入FSFD开发的空间的人最头疼的就是FSFD是什么?我凭什么相信你FSFD就能实现透明地过滤和控制IO操作尤其是透明加解密?当初我甚至因为自己的驱动能打印出一条期望中信息或者令系统挂起而小小地激动了把。

 

既然叫FSFD,那么文件系统(FS)就脱不了干系。OS执行体中和FSFD直接关联的内核模式组件有:I/O管理器(I/O M)、虚拟内存管理器(VMM)、缓存管理器(CM)。别看都是mm,都强得顶不住!其他组件也有点联系,不过关系没那么铁。I/O M负责I/O,只要有I/O就跟她有关(用户模式下和内核模式下I/O相关的行动尽在她的掌握),I/O M的主要任务简言之就是把用户模式的IO操作转换为内核模式下的IO操作,并通过几种方式把操作传给各个要对该操作进行处理的部分,然后把处理结果返回给上层应用;出于效率的设计目的,只要你敢在Windows 为NT上动动,就得跟VMM和CM打交道了,都得人家罩着。

为啥我还没说FS那?这里就轮到他了。举个例子,假如你要读磁盘上的某个文件,那你得先打开这个文件createFile()或者openFile(),其实也就是对系统服务API NtCreateFile()或者NtOpenFile()的调用,I/O M会把这个调用转换成majorfunction code为IRP_MJ_CREATE的IRP(I/O请求包),发给FS打开文件,接下来I/O M会作为发起者根据上层服务发出各种IRP来通知FS要做什么事情,然后FS会根据IRP分别跟VMM、CM、磁盘(暂时先简作磁盘)等组件交互,把你交付的任务一一做处理并把结果返回给你。看出来了没?I/O M虽强,但没有兵权,更像是个传令官;其他组件功能相对单一而强大,就像是将军和粮官等,都需要FS指挥和协调。所以,你可以认为文件I/O操作中挂帅掌印的是FS。

而你要写的FSFD,假如是upper filter那就是截获传令官给FS的命令,让他照你说的自己再做判断,由于FS很固执(处理逻辑都是既定的),相当于照你说的来了^.^而FS想返回给上层服务的结果也会在操作完成之后,在某一时刻(此时I/O M还没有检查这个结果)交到你手上,这时候你就可以为所欲为了,如把失败改成功把成功改失败,虽然不能完全把握后果,但理论上你的确可以这么做;假如是lower filter那就是截获FS给将军和粮官等系统其余组件及磁盘的“命令”,这个权力也不小=.=|||。是不是觉得FSFD生就奸臣相了?呵呵,其实NTFSI中有句话说的是正理,你在做的FSFD是FS的增值软件,即要扩展FS的价值。

这篇先到这,时间有点晚了,有空再补全。

优惠劵

jununfly

关注

关注

0

点赞

3

收藏

觉得还不错?

一键收藏

知道了

2

评论

FSFD入门 - 启

其实文件系统过滤驱动不难。假如你是新手,我可以先告诉你这句体会。然后是转折——难在业务结合。 在这个系列中我不准备长篇大论一些虽然有限但确实已经很详尽的资料中阐述过的基础知识。最权威的资料:1、NTFSI; 2、WDK; 3、fastfat源码。第3其实就在2中,特意提出来是为了强调源码的重要性,osr上某位MVP说过这么一句话:you should considered it a

复制链接

扫一扫

专栏目录

FSFD(一个比较价值的File system Filter Driver)

07-24

FSFD(一个比较价值的File system Filter Driver)

驱动开发例程-驱动入门详解

04-27

目录

热身阶段 3

问1:什么是过滤驱动?(2009-4-15) 3

问2:什么是IRP?(2009-4-15) 4

问3:驱动栈,设备栈?(2009-4-15) 7

问4:文件系统过滤驱动(FSFD)为什么能过滤文件系统(FSD)?(2009-4-16) 9

问5:怎么用好DDK(或WDK,现在起本书只说WDK)?(2009-4-16) 12

Legacy驱动阶段 13

问6:DriverEntry和DriverUnload是干嘛的?(2009-04-20) 13

问7:SfCreate(2009-04-20) 13

问8:SfDisplayCreateFileName(2009-04-23) 15

问9:fastio系列例程(2009-04-28) 16

问10:总结sfilter(2009-04-28) 26

问11:fspyKern.h、fspydef.h和filespy.h(2009-04-28) 27

问12:fspyHash.c(2009-04-28) 28

问13:上下文(2009-04-30) 35

问14:fspyCtx.c(2009-04-28) 40

问15:FspyLib.c(2009-04-28) 50

问16:总结filespy(2009-04-30) 65

问17:legacy驱动透明加解密设计开发示例(2009-04-30) 65

概要设计 65

定位机制设计 67

跟踪机制设计 67

加解密模块设计 68

其他设计 69

问18:总结legacy驱动(2009-05-04) 70

Mini驱动阶段 71

问19:passThrough(2009-05-04) 71

问20:ctx(2009-05-04) 72

问21:scanner(2009-05-05) 76

问22:swapBuffers(2009-05-05) 78

问23:总结mini驱动(2009-05-05) 79

问24:fastfat(2009-05-05) 79

后记 80

2 条评论

您还未登录,请先

登录

后发表或查看评论

Two-Way Amplify-Forward Relaying Using Frequency-Domain Oversampling on Frequency-Selective Fading Channels

02-09

Frequency-domain oversampling (FDO) is studied for two-way amplified-and-forward relaying (TWAR) on the frequency-selective fading channel. In the FDO-based scheme, a zero postfix (ZP) is inserted in the transmitted data block, and a fractionally spaced frequency-domain (FSFD) minimum mean-square-error (MMSE) estimate is performed on the received data block. Compared with the conventional MMSE receiver using a cyclic prefix (CP) without FDO, the FSFD -MMSE receiver can extract the frequency dive

MyMusicPlayer1

music

music

02-14

music zhuang lld

dfhier

【打印机】斑马打印机指令简介

bfz_50的博客

09-06

2万+

斑马打印机指令简介

0、打印方法

打印机使用RS232通信,直接通过串口将指令发送字符串即可。

1、Hello World!

指令:

^XA

^JMA^LL200^PW680^MD10^PR2^PON^LRN^LH0,0

^FO10,30

^A0N,72,72

^FD Hello World!^FS

^XZ

实现效果:

说明:

打印机的指令用“^”作为开头,任何打印指...

分布式文件系统 (fsfd)

weixin_43729192的博客

12-05

685

在linux系统上安装 fastdfs

docker 官网

点击进入下载

docker images 查看 是否有容器

需要关闭 新形防火墙 或者 设置防火墙

find / -name selinux 可查看

看到 /etc/sysconfig/selinux

设置防火墙 请自行学习

编辑

vi /etc/sysconfig/selinux

SELINUX= 改 disabled

在启动容器...

文件系统Minifilter驱动(一)

听风

03-02

1万+

文件系统Minifilter驱动  声明:本系列文章源于WDK,所有权利归原作者所有,翻译的目的只为交流和学习。除了商用你可以随意地使用这篇译文。但请不要删除声明。                                                     ——by jununfly  说明: 所有preoperation及postoperation

Anaconda 换源更改镜像,删源

热门推荐

ChihkAnchor的博客

05-12

3万+

换国内源

windows

1 添加清华源:命令行中直接输入以下命令

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/clo...

[转载]关于文件系统和磁盘驱动的一点学习心得

wowbell的专栏

03-08

2272


原文地址:http://hi.baidu.com/weolar/blog/item/34a8ff19be316572dbb4bd4f.html
 
今天看到sudami同学问起这些东西,好久没搞了,很生疏,所以重新学习了一下,有点小小心得:
在我的理解中,设备对象(drevobj)相当于驱动对象(drvobj)创建的子对象,用来形成设备链,从而接受、处理数据的。设备对象挂到设备

链中,接受到了被设备管理器派遣的IRP时(某本书上好像说,没有真正所谓的设备管理器,只

ZPL指令转换

11-02

1709

public partial class ZplPrintControl

{

public string ZPL_Start()

{

StringBuilder builder = new StringBuilder();

builder.AppendLine("^XA"); //指令块的开始

builder.AppendLine("^MMC,Y");

builder....

greenplum常用命令

10-12

3)字符串截取:substring('fsfd' from 2 for 3)、substr('fsfd',2,3) 4)字符串两头去字符:trim(' fsf')、trim(both 'x' from 'xfdsx') 5)大小写转换:upper()、lower() 6)替换字符串:replae('fsfsfsf',fs'...

安装fastDFS

qq_27361945的博客

07-14

377

比较复杂,按官网说明,需要先安装两个依赖包,在编译安装fastdfs。

文件系统Minifilter驱动(六)

听风

03-02

4511

二、Minifilter驱动的加载顺序和AltitudesMicrosoft Windows XP, Windows 2000 SP4 with Update Rollup 1, 和较新的OS专门为在系统启动时加载的FSFD和minifilter驱动提供了一套加载顺序组. Legacy FSFD可以只绑定到一个现有FSD 栈的顶部,但不可以绑定到某个栈的中间.其结果是,驱动的启动类型和加载

linux7下安装部署FastDFS(文件管理系统)详细教程+报错填坑

测试入坑之路

03-30

170

1.fastDFS介绍

fastDFS 是以C语言开发的一项开源轻量级分布式文件系统,他对文件进行管理,主要功能有:文件存储,文件同步,文件访问(文件上传/下载),特别适合以文件为载体的在线服务,如图片网站,视频网站等

2.下载

3.安装

wget https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz

参考:

https://www.cnblogs.com/qiaolizhi/p/12461901.html

...

二维数组一样如何拼接图片字段

ahjxhy2010的博客

02-29

454

/循环判断key一样重新组合数据。数组key 做判断拼接。

Java毕设-基于springboot+Vue的流浪动物管理系统2(附源码,数据库,教程).zip

03-06

Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。

包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。

该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。

项目都经过严格调试,确保可以运行!

1. 技术组成

前端:html、javascript、Vue

后台框架:SpringBoot

开发环境:idea

数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑)

数据库工具:navicat

部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven

2. 部署

如果部署有疑问的话,可以找我咨询

后台路径地址:localhost:8080/项目名称/admin/dist/index.html

前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)

Swift 基础库. A collection of Swift extensions and utilities.zip

最新发布

03-06

Swift 基础库. A collection of Swift extensions and utilities.zip

剪映使用教程s240306.pptx

03-06

剪映使用教程s240306.pptx

OFO共享单车(Swift版).zip

03-06

OFO共享单车(Swift版).zip

快速、简洁、解决大文件内存溢出的java处理Excel工具.zip

03-06

Java语音项目的资源包括原生的JSAPI、开源库如CMU Sphinx和FreeTTS,商业化的服务如Google Cloud Speech-to-Text API,以及其他框架和工具。通过利用这些资源,您可以开发出功能强大的语音应用程序。Java语音项目的资源包括原生的JSAPI、开源库如CMU Sphinx和FreeTTS,商业化的服务如Google Cloud Speech-to-Text API,以及其他框架和工具。通过利用这些资源,您可以开发出功能强大的语音应用程序。

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

jununfly

CSDN认证博客专家

CSDN认证企业博客

码龄16年

暂无认证

2

原创

30万+

周排名

88万+

总排名

7万+

访问

等级

929

积分

39

粉丝

3

获赞

17

评论

49

收藏

私信

关注

热门文章

文件系统Minifilter驱动(一)

11114

文件系统Minifilter驱动(二)

10684

文件系统Minifilter驱动(三)

9778

文件系统Minifilter驱动(五)

5985

文件系统Minifilter驱动(八)

5913

分类专栏

FSFD入门

1篇

工作日志

文件系统驱动翻译

10篇

闲话

1篇

最新评论

文件系统Minifilter驱动(五)

andy当我遇上你:

感谢楼主分享,很好的文章!

文件系统Minifilter驱动(七)

shaojwa:

一个小问题:

”每一个minifilter驱动都必须从它的DriverEntry例程中调用FltStartFiltering来通过filter管理器“ 应该是”通知filter管理器“

原文是: FltStartFiltering notifies the Filter Manager that the minifilter driver is ready to begin attaching to volumes and filtering I/O requests.

文件系统Minifilter驱动(一)

lenovo_E520

回复

fly4free:

wdk帮助文档上有呀!多看看帮助文档!

文件系统Minifilter驱动(一)

隐身:

楼主可不可以把图片传上来呀?????

急需急需。谢谢楼主的。这么好的文章。。V5啊。。

文件系统Minifilter驱动(二)

大光呢:

好像不错,没看到社么。

您愿意向朋友推荐“博客详情页”吗?

强烈不推荐

不推荐

一般般

推荐

强烈推荐

提交

最新文章

PB基础

Cookie的困扰

That's Just the Way It Is - How NT Describes I/O Requests

2009年14篇

目录

目录

分类专栏

FSFD入门

1篇

工作日志

文件系统驱动翻译

10篇

闲话

1篇

目录

评论 2

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

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

余额充值

分布式文件系统 (fsfd)-CSDN博客

>

分布式文件系统 (fsfd)-CSDN博客

分布式文件系统 (fsfd)

最新推荐文章于 2022-01-13 16:10:04 发布

CherishTheMemoryOf

最新推荐文章于 2022-01-13 16:10:04 发布

阅读量684

收藏

1

点赞数

分类专栏:

个人

个人

专栏收录该内容

10 篇文章

0 订阅

订阅专栏

在linux系统上安装 fastdfs docker 官网 点击进入下载 docker images 查看 是否有容器

需要关闭 新形防火墙 或者 设置防火墙 find / -name selinux 可查看 看到 /etc/sysconfig/selinux 设置防火墙 请自行学习

编辑 vi /etc/sysconfig/selinux SELINUX= 改 disabled

在启动容器 docker run --net host --name tracker 自定义名字 -itd 镜像名:版本 不加版本默认最新版 默认的端口: 22122

需要重启linux 系统 reboot 命令

docker run -tid --name storage -v ~/storage_data:/fastdfs/storage/data -v

~/store_path:/fastdfs/store_path --net=host -e TRACKER_SERVER:你的linux地址:22122 season/fastdfs storage

然后进入 tracker 的容器 找到 fsfd_conf 目录

fdfs_monitor 意思是监控 查看storage.conf目录 fdfs_monitor storage.conf count:0 server_count:1 看到的参数是这样

退出 进入 storage 容器 进入tracker 同样的目录 看到 storage.conf文件修改他的ip 地址

//拷贝出来

docker cp storage:/fsfd_conf /storage.conf ~/

修改完在拷回去

docker cp ~/storage.conf storage:/fsfd_conf /storage.conf

然后进入tracker 容器查看 storage.conf 看到了 修改的 ip 地址 和group name =group1 就是修改成功了

然后启动

docker run -ti --name fdfs_sh --net=host season/fastdfs sh

需要 修改他的storage.conf 文件的ip 地址

他支持的命令

fdfs_appender_test

fdfs_appender_test1

fdfs_append_file

fdfs_crc32

fdfs_delete_file

fdfs_download_file

fdfs_file_info

fdfs_monitor 监控

fdfs_storaged

fdfs_test

fdfs_test1

fdfs_trackerd

fdfs_upload_appender

fdfs_upload_file 上传

可以上传一个文件 进入 fdfs_conf 目录 上传 fdfs_upload_file storage.conf 文件名

然后在linux ~目录找到 store-path 目录 data 00 00目录下就是你上传的文件

spring boot 集成 fastdfs-client 在gtishub 官网搜索fastdfs-client jar包地址

需要 jar包 pom 文件

//导入Sonatype库

sfz

sfz

https://oss.sonatype.org/content/repositories/releases/

//spring mvn 的依赖

org.springframework.boot

spring-boot-starter-web

spring boot 集成 fsfd 依赖

//最好导Sonatype库

com.luhuiguo

fastdfs-spring-boot-starter

0.2.0

main 方法

@SpringBootApplication

public class FsfdMain {

public static void main(String[] args) {

SpringApplication.run(FsfdMain.class);

}

}

html 上传 下载

下载

application.yml文件

server:

port: 8889

fdfs:

connect-timeout: 10000

so-timeout: 3000

tracker-list:

- 192.168.241.131:22122

spring:

application:

name: 自己的名字

datasource:

url: jdbc:mysql://localhost/你的数据库

username: root

password:密码

driver-class-name: com.mysql.jdbc.Driver

http:

multipart:

//最大多少m

max-file-size: 10487540

下载类

@RestController

public class DsdfConfig {

@Autowired

protected FastFileStorageClient storageClient;

@Autowired

JdbcTemplate jdbcTemplate;

/**

*

* @param myFile 从浏览器提交过来

* @return

* @throws IOException

*/

@PostMapping("/fupload")

public String upload(@RequestParam("myFile") MultipartFile myFile) throws IOException {

//获取文件原来的名字

String extName= FilenameUtils.getExtension(myFile.getOriginalFilename());

//获取连接

StorePath sp=storageClient.uploadFile("group1",myFile.getInputStream(),myFile.getSize(),extName);

//sql语句

String sql="insert into fliegroud(filename,gruoname,filepath) values(?,?,?)";

//插入到数据库

jdbcTemplate.update(sql,myFile.getOriginalFilename(),sp.getGroup(),sp.getPath());

//返回文件的名字

return sp.getFullPath();

}

@GetMapping("/fdownload/{id}")

public void download(@PathVariable String id, HttpServletResponse response) throws IOException {

//获取数据库里面id=1的数据

List list =jdbcTemplate.query("select *from fliegroud where id="+id,new ColumnMapRowMapper());

//拿到list 里面下标为0的数据

Map map =(Map)list.get(0);

//把名字改为utf-8

String fileName= URLEncoder.encode(map.get("filename").toString(),"UTF-8");

//把名字改为string

String groupName=map.get("gruoname").toString();

//把名字改为string

String fileiPath=map.get("filepath").toString();

//告诉浏览器 下载的文件名

response.setHeader("Content-Disposition","attachment; filename="+fileName+"");

//将文件的内容输出到浏览器中

byte[] bt= storageClient.downloadFile(groupName,fileiPath);

response.getOutputStream().write(bt);

}

优惠劵

CherishTheMemoryOf

关注

关注

0

点赞

1

收藏

觉得还不错?

一键收藏

知道了

0

评论

分布式文件系统 (fsfd)

在linux系统上安装 fastdfsdocker 官网点击进入下载docker images 查看 是否有容器需要关闭 新形防火墙 或者 设置防火墙find / -name selinux 可查看看到 /etc/sysconfig/selinux设置防火墙 请自行学习编辑vi /etc/sysconfig/selinuxSELINUX= 改 disabled在启动容器...

复制链接

扫一扫

专栏目录

fdfs-monitor:fdfs监视器

06-30

fdfs监视器

fdfs监视器

FastDFS:05---fastdfs集群搭建

董哥的黑板报

07-06

868

一、集群模式

由于本人机器环境有限,因此本人在一台云服务器上进行本地集群搭建

本次集群环境为:

1台client端

1台tracker服务端

3台storage服务端,分为两组

二、tracker端搭建

第一步:在家目录下创建一个fastdfs/目录,用来存储fastdfs相关的文件。然后在fastdfs目录内创建一个tracker/目录用来存放tracker服务端相关的内容

mkdir ~/fastdfs

mkdir ~/fastdfs/tracker

ls ~/fastdf

参与评论

您还未登录,请先

登录

后发表或查看评论

FSFD入门 - 启

听风

04-02

3721

其实文件系统过滤驱动不难。假如你是新手,我可以先告诉你这句体会。然后是转折——难在业务结合。 在这个系列中我不准备长篇大论一些虽然有限但确实已经很详尽的资料中阐述过的基础知识。最权威的资料:1、NTFSI; 2、WDK; 3、fastfat源码。第3其实就在2中,特意提出来是为了强调源码的重要性,osr上某位MVP说过这么一句话:you should considered it a

文件系统Minifilter驱动(一)

热门推荐

听风

03-02

1万+

文件系统Minifilter驱动  声明:本系列文章源于WDK,所有权利归原作者所有,翻译的目的只为交流和学习。除了商用你可以随意地使用这篇译文。但请不要删除声明。                                                     ——by jununfly  说明: 所有preoperation及postoperation

FastDFS学习笔记

IT小浣熊的博客

01-01

5138

FastDFS入门浅学

文章目录FastDFS入门浅学一、FastDFS引言本地存储与分布式文件系统FastDFS概述FastDFS架构FastDFS环境搭建(虚拟机)1. 创建虚拟机克隆机2. 配置虚拟机3. 下载安装gcc4. 下载安装FastDFS5. 下载安装FastDFS依赖6. 解压缩依赖tar包7. 解压缩FastDFS的tar包8. 进入libfastcommon-1.0.369....

FastDFS文件服务器——安装教程及命令,亲测使用

蜀山小师叔

06-28

3531

搭建单机模式的Fastdfs文件服务器链接(成功搭建)http://blog.csdn.net/u010098331/article/details/51646921参考的博客FastDFS分布式文件系统(一)https://www.jianshu.com/p/c7133383a4e7FastDFS集群部署http://www.cnblogs.com/cnmenglang/p/6731209.ht...

FastDFS集群环境搭建(五)FastDFS监控器fdfs_monitor

爱清清的专栏

08-02

3712

文章目录FastDFS七种状态增加Storage节点删除Storage节点增加tracker节点

FastDFS七种状态

标识

含义

INIT

初始化,尚未得到同步已有数据的源服务器

WAIT_SYNC

等待同步,已得到同步已有数据的源服务器

SYNCING

同步中

DELETED

已删除,该服务器从本组中摘除

OFFLINE

离线

ONLINE

在线,尚不能...

docker-fastdfs

m0_45987292的博客

01-13

1357

111

fastdfs原理及过程

shimmerkaiye的博客

08-08

411

1.介绍

FastDFS是一个开源的轻量级分布式文件系统,由跟踪服务器(tracker server)、存储服务器(Storage server)、客户端(client)三部分组成,主要解决海量数据存储问题,特别适合中小文件(4kb~500mb)为载体的在线服务。

1.1Storage server

Storage server(后简称storage)以组(卷,group或volume)为单...

FSFD(一个比较价值的File system Filter Driver)

07-24

FSFD(一个比较价值的File system Filter Driver)

httpfs:OCaml中的REST分布式文件系统,C#中的客户端

05-18

HTTPFS

HTTPFS提供了一个REST接口,该接口公开了分布式文件系统,就好像它是一台服务器一样。

服务器在启动时必须没有冲突。

然后,系统将保证文件仅存在于单个服务器上。

启动服务器:

./httpfs [-p PORT] [[list of remote servers] | [-d REMOTE_SERVER]]

争论

-p覆盖默认端口(2020)

-d服务器将联系单个远程服务器,并询问其已知服务器列表,而不是所有服务器的列表。 然后它将加入集群。

加入和离开集群

可以使用-d命令行开关将服务器添加到群集中。

服务器可以通过向其发送DISCONNECT HTTP请求来离开集群。

在发现模式下启动时,服务器将尝试加入集群。 如果由于并非所有主机都接受它而导致加入失败,则它将尝试干净地断开连接,以免使群集处于不一致的状态。

API参考

得到

读。

在文件上:返回

MyMusicPlayer1

music

music

02-14

music zhuang lld dfhier

驱动开发例程-驱动入门详解

04-27

问4:文件系统过滤驱动(FSFD)为什么能过滤文件系统(FSD)?(2009-4-16) 9 问5:怎么用好DDK(或WDK,现在起本书只说WDK)?(2009-4-16) 12 Legacy驱动阶段 13 问6:DriverEntry和DriverUnload是干嘛的?(2009-04-20) 13...

greenplum常用命令

10-12

3)字符串截取:substring('fsfd' from 2 for 3)、substr('fsfd',2,3) 4)字符串两头去字符:trim(' fsf')、trim(both 'x' from 'xfdsx') 5)大小写转换:upper()、lower() 6)替换字符串:replae('fsfsfsf',fs'...

Two-Way Amplify-Forward Relaying Using Frequency-Domain Oversampling on Frequency-Selective Fading Channels

02-09

In the FDO-based scheme, a zero postfix (ZP) is inserted in the transmitted data block, and a fractionally spaced frequency-domain (FSFD) minimum mean-square-error (MMSE) estimate is performed on the...

Java毕设-基于springboot+Vue的流浪动物管理系统2(附源码,数据库,教程).zip

03-06

Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。

包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。

该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。

项目都经过严格调试,确保可以运行!

1. 技术组成

前端:html、javascript、Vue

后台框架:SpringBoot

开发环境:idea

数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑)

数据库工具:navicat

部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven

2. 部署

如果部署有疑问的话,可以找我咨询

后台路径地址:localhost:8080/项目名称/admin/dist/index.html

前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)

Swift 基础库. A collection of Swift extensions and utilities.zip

最新发布

03-06

Swift 基础库. A collection of Swift extensions and utilities.zip

剪映使用教程s240306.pptx

03-06

剪映使用教程s240306.pptx

OFO共享单车(Swift版).zip

03-06

OFO共享单车(Swift版).zip

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

CherishTheMemoryOf

CSDN认证博客专家

CSDN认证企业博客

码龄5年

暂无认证

0

原创

152万+

周排名

89万+

总排名

3279

访问

等级

43

积分

6

粉丝

1

获赞

4

评论

3

收藏

私信

关注

热门文章

springboot 集成templates

892

分布式文件系统 (fsfd)

684

负载均衡 (java zuul)

571

spring boo 集成 easyui

283

sorl 查询 跟 mybatisboot集成sorl

166

分类专栏

个人

10篇

最新评论

springboot整合 mybatis plus

r2d:

数据库呢?????????

**springboot整合mybatis

r2d:

牛逼!!

spring boo 集成 easyui

小人物大梦想:

编程是15%的科学加上25%的创造力还有剩下的60%,让这创造力符合科学。诚信互关,来自一个奋斗的老菜鸟

网络配置中心

wujianqinjian:

赞,总结的不错呦,学习一下!

您愿意向朋友推荐“博客详情页”吗?

强烈不推荐

不推荐

一般般

推荐

强烈推荐

提交

最新文章

spring boo 集成 easyui

springboot 集成templates

spring data 集成 solr

2018年11篇

目录

目录

分类专栏

个人

10篇

目录

评论

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

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

余额充值

Attention Required! | Cloudflare

Attention Required! | Cloudflare

Please enable cookies.

Sorry, you have been blocked

You are unable to access allacronyms.com

Why have I been blocked?

This website is using a security service to protect itself from online attacks. The action you just performed triggered the security solution. There are several actions that could trigger this block including submitting a certain word or phrase, a SQL command or malformed data.

What can I do to resolve this?

You can email the site owner to let them know you were blocked. Please include what you were doing when this page came up and the Cloudflare Ray ID found at the bottom of this page.

Cloudflare Ray ID: 860a03991f4304dc

Your IP:

Click to reveal

49.157.13.121

Performance & security by Cloudflare

Homepage of FSFS - the Fast Secure File System

Homepage of FSFS - the Fast Secure File System

FSFS - the Fast Secure File System

fast / fæst, fɑst /, adjective:

moving or able to move, operate, function, or take effect quickly;

quick; swift; rapid: a fast horse; a fast pain reliever; a fast

thinker.

resistant: acid-fast.

closed and made secure, as a door, gate, or shutter.

such as to hold securely: to lay fast hold on a thing.

secure / sɪˈkyʊr /, adjective:

safe from penetration or interception by unauthorized persons:

secure radio communications between army units.

affording safety, as a place: he needed a secure

hideout.

in safe custody or keeping: here in the vault the necklace was

secure.

free from care; without anxiety: emotionally secure.

This is the homepage of FSFS - the Fast Secure File System project.

FSFS is a user space client-server distributed file system that exports

encrypted files and directories securely over the network; most of the

cryptography is left to the clients, letting users store and retrieve data in a

secure, scalable and transparent way. FSFS is written in C, with help from FUSE

and OpenSSL; both client and server work on GNU/Linux systems on x86 and PPC

architectures, the server also works on Mac OS X 10.3 and above and will be

ported to other systems.

The problem

Ideas behind FSFS

License

Latest news

Downloads

Latest code through CVS

Stable releases

Requirements

Technicalities

Documentation

Getting started

Known issues and limitations

Links and acknowledgements

How you can help

Disclaimer

The problem

File systems are easily the most evident component of an operating system, from

the point of view of users. Through file systems it is possible to organize

data in a wide variety of ways, and access resources through a common

interface. Users can nowadays not only store and retrieve documents, but also

find information on running processes and system settings (through

ProcFS), access and manipulate e-mail (for example with

GmailFS), or perform several other operations.

In several circumstances and scenarios it is desirable to protect stored files

and directories from manipulation by unknown or malicious users: financial or

health-related data, confidential documents, or any kind of personal or

sensitive data may need to be stored securely, in such a way that it can not be

examined or modified freely by third parties. Most file systems do not take

action in this sense, and external cryptographic utilities are sometimes

employed to secure data before storage. While this can be a perfectly secure

solution, it is not transparent for users.

Distributed file systems propose efficient ways of accessing data remotely as

if it resided on the local machine; when it comes to dealing with securely

stored data as in the examples above, care must be taken to preserve

confidentiality and integrity also during network transfer. Not all distributed

file systems accomplish this task, weakening the overall security of the

system, or do so inefficiently, making it inconvenient for users.

Ideas behind FSFS

FSFS is a secure, distributed file system in users space, written in C with

much help from the FUSE and

OpenSSL libraries. It lets users store and

retrieve data securely and transparently, knowing that it is protected both on

permanent storage devices and while in transit over the network. It is also

concerned with scalability, therefore separates data cryptography from the

server, leaving it to the clients; this approach is similar to the one used in

CFS, and opposite to those taken on by other secure file system solutions (like

the popular NFS on top of IPsec).

FSFS is written as a pair of user space daemons that act as client and server.

Because of this, it needs no kernel support (unlike NFS over IPsec), save the

FUSE loadable kernel module on clients, included in Linux since 2.6.14; servers

don't use FUSE and depend only on user space OpenSSL libraries.

Servers make use of an existing file system (of virtually any kind) and export

a number of directories (currently one, initially empty directory) to clients

over the network through two separate channels: a TLS connection set up with

OpenSSL, and a clear channel. Requests from the clients to the servers are

sent via the TLS socket, thus they are encrypted and authenticated

according to TLS v1 specifications by the channel itself, and decrypted on

receipt, as they are usually very short and the relevant cryptography does

not constitute a great overhead; simple server replies undergo the same

process. Cryptography in this case happens at both ends of the transmission.

In a distributed file system, large amounts of data may be transferred between

clients and servers, thus encrypting and decrypting everything may become too

cumbersome for both parties, and as more clients are added to the system the

server may severely lose performance; moreover, sensitive file data should be

stored encrypted anyway, so the cryptography could be moved to the clients, in

such a way that each encrypts data before a write operation sends it

over the network to the server, and decrypts it after a read retrieves

it. This way servers only deal with TLS details and can concentrate on serving

client requests by doing the relevant I/O on the underlying,

"physical" file system. As the data is already encrypted, it does not

need to go through the TLS channel and incur the corresponding overhead, but

can be sent via the clear channel, provided the messages are authenticated.

License

FSFS is developed and copyrighted 2005-2007 by

Nicola Cocchiaro;

all source code is licensed under the

GNU General Public License

version 2, with the additional exception that linking OpenSSL is allowed.

An excerpt of the GPL license follows:

This program is free software; you can redistribute it and/or

modify it under the terms of the GNU General Public License

as published by the Free Software Foundation; either version 2

of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,

but WITHOUT ANY WARRANTY; without even the implied warranty of

MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

GNU General Public License for more details.

You should have received a copy of the GNU General Public License

along with this program; if not, write to the Free Software

Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,

MA 02110-1301, USA.

Latest news

To receive release announcements, project news and other information,

subscribe to one of the RSS feeds in the

RSS feeds page.

August 11, 2007: Release 0.1.1 has been published, and it

contains bug fixes related to socket creation that would cause problems on

some systems and to server configuration creation when using the Python utilities.

It is not necessary to upgrade to this release if you're not experiencing problems

or are not using the Python utilities. Additionally, it is now possible to subscribe

to one of the RSS feeds on the

RSS feeds page

to receive news and release announcements.

July 28, 2007: The URL for the web-based CVS

below was outdated and has been fixed.

January 17, 2007: A new release of FSFS is out! Due to the

quantity and quality of the changes introduced in it, it was decided to take

the release number to 0.1.0, skipping a public release 0.0.3. Mac OS X support,

improved Debian packages, a new login protocol and a different configuration

files location are some of its features. Check out the release notes

and changelog for more information, and don't forget to read the README

file.

November 2, 2006: On the one year anniversary of the

registration of FSFS on SourceForge we'd like to announce some of the

features of the next release. FSFS 0.0.3 will sport Mac OS X support for

the server (it has been in CVS for a while now), a somewhat revised

client-server protocol, bug fixes and more. Some modifications will make

0.0.3 incompatible with previous releases, so we're trying to include as many

of them as possible in the same release even if that means delaying it a bit.

You'll find it here as usual!

October 18, 2006: It is now possible to donate to the project

through SourceForge and help the development. Thank you all for your continued

support.

Find old news in the old news page.

Downloads

Project downloads, news and statistics can be found at the

SourceForge project page.

Latest code through CVS

You can retrieve the current code snapshot through anonymous CVS (code in CVS

is usually more recent and may contain bug fixes, but it can not be guaranteed

to be working at all times) using the following commands:

cvs -d:pserver:anonymous@fsfs.cvs.sourceforge.net:/cvsroot/fsfs login

cvs -z3 -d:pserver:anonymous@fsfs.cvs.sourceforge.net:/cvsroot/fsfs co -P fsfs

Alternatively you can

browse the web CVS

repository; this is also useful to find out module names, in case you don't

know them. More information about accessing CVS repositories may be found in

the SourceForge document

"CVS (Version Control for Source Code)".

Updates from within the module's directory do not need the -d parameter.

Stable releases

You can download a stable release

from SourceForge, in either source code or pre-built binary package

form. The latest release of the FSFS server, client and utilities is 0.1.1; check out the

latest release notes and changelog. You can also look at the

md5sum file to make sure the package you're

downloading is genuine and uncorrupted.

Debian users can also add these lines to their /etc/apt/sources.list

file and download the software through their usual package manager:

deb http://cocchiar.web.cs.unibo.it/debian/ unstable main

deb-src http://cocchiar.web.cs.unibo.it/debian/ unstable main

Requirements

In order to successfully use FSFS, you will need to have certain software

installed in your system:

OpenSSL version 0.9.8 or above;

FUSE version 2.5.3 or above (only for FSFS clients);

Python version 2.3 or above (only for configuration scripts).

Refer to the respective websites for downloadable packages and installation

instructions. Debian binary packakges contain appropriate dependencies for

Debian systems.

Technicalities

FSFS uses OpenSSL for all cryptography. Servers need a private 2048-bit (or

above) RSA key and identify themselves to clients using public certificates in

PEM format; users per default have to identify themselves to servers with

similar certificates, but it is not necessary when servers are configured in a

way to skip certificate checking (although it's recommended to go with the

default setting). The default is to use the OpenSSL AES256-SHA

ciphersuite for TLS communication, but client settings can change it at

run-time; servers default to the HIGH family of cipersuites (which

contains AES-256 and others). Private keys and certificates are only

used for TLS connections, so they can be changed at any time, provided the

server can verify the correspondence in each pair.

Certificates for each user are produced adding the username to use on the

server to the Subject Name; you may refer to the fsfsc-configure

script to produce suitable certificate requests. Such username is used during

authentication checks and by the server to assume the relevant access

privileges to act on the file system on behalf of the user.

File data are encrypted using the AES-256 block cipher in CBC

and OFB mode, with 256-bit keys that can be produced using the

included fsfsc-configure script (but can be any 256-bit string in

theory); file names are stored encrypted with AES-256 in OFB

mode. These algorithms may be changed at compile time, but it is then necessary

to re-encrypt data in the file system; currently the only way to do so is read

all the encrypted data using the old algorithm and copy it to a non-encrypted

directory, then rewrite it after switching to the new algorithm. The same goes

for users who want to change their symmetric encryption keys.

File data sent through the clear channel are encrypted by the clients before

they're sent, and will be stored exactly as they are by the server; the

messages themselves are not encrypted but are authenticated using

HMAC with SHA-256 as hash function. Session keys are used as

input to HMAC, one per direction of transmission, and are computed by

the server at the start of each session and sent to the client through the TLS

channel.

If a symmetric encryption key is lost there is no way to decrypt

encrypted data!

Documentation

The source code tarballs and binary packages include a README file with

instructions on how to set up FSFS and the relevant

Certification Authority material if necessary. More documentation,

tutorials, and a better web site ;) are coming soon.

Getting started

The fsfsc-configure script can be used on clients to create proper

(simple) configuration files for each user interactively, and to generate RSA

private keys, certificate requests (that must be signed by a CA) and symmetric

encryption keys. The fsfsd-CA script can be used to set up a sample

FSFS CA (although any existing CA can in principle be used), sign certificate

requests and produce server key/certificate pairs. An example

fsfs-openssl.cnf CA configuration file is provided, that is per

default installed in /etc/fsfs and helps produce certificates in a way

understood by FSFS (PEM format with a specific Subject Name).

All that must be done to start working is launch a server process

(fsfsd) on the machine that is going to export data and a client

process (fsfsc) on the machine that is going to access that data (may

be the same the server runs on), passing them the desired parameters. The

client will then mount the exported directory (initially empty, will be

populated by the client itself) on the mount point that is passed to it and

every access to the file system under that mount point will be directed through

FUSE and FSFS. Access permissions are checked in the usual UNIX way, with the

additional feature of making interpretation of the exported data virtually

impossible without the appropriate encryption key.

Known issues and limitations

FSFS is still in its early stages of development; while the basic functionality

is there and it can be used successfully, many features are missing

and several improvements can be introduced. A number of them are currently

under development, here is a short list of items in random order (more can be

found in the TODO file):

File and directory names are cached, but there is no data cache

yet. This has a big and negative impact on performance;

therefore FSFS is currently not very Fast (only in the first meaning

above), but it still stays Secure and pretty scalable. A future release

(under development) will have a data cache system that will improve

performance (and will merge with the concept of operating on files in

blocks of a fixed number of bytes).

Concurrent operations from the same user are supported (eg. writing

different large files using two different shells), but are executed in

an interleaved fashion rather than concurrently. This is another

performance issue that will be fixed. Concurrent operations performed

by different users are executed concurrently already.

The current FUSE API used is that of version 2.5.3. FUSE 2.6.0 is

already out and FSFS includes some of its benefits, but is not fully

2.6.0 compliant yet.

A FSFS client currently mounts a single directory tree exported by

a single server. There is, for the moment, no way for a single client

process to mount directories from several servers at once, or for a

single server to export more than one directory.

Links and acknowledgements

Here are some links to similar or generally useful products that have been used during the development of FSFS or have helped its birth with ideas:

FUSE - File System in USErspace:

this is the library that currently makes system call capture possible

in FSFS. With it, FSFS clients can mount a remote FSFS file system

locally and act on it. Several other file systems for a large variety

of purposes have been built with FUSE.

OpenSSL: provides library

support for the TLS channel and all cryptography and random number

generation in FSFS.

EncFS: a secure file

system built with FUSE, it is designed as a local file system rather

than a distributed one. Many implementation details in FSFS were

inspired by EncFS, so thanks go to its author, Valient Gough.

CFS: a distributed,

secure file system that makes use of NFS for network transfer of data.

It dates back to 1992 so it's by now quite old, particularly when it

comes to cryptography, but it shares several ideas that were thought

independently by the FSFS developers.

Many thanks go also to the following people, in no particular order:

Alessio Caprari for helping with this website;

How you can help

There is a lot you can do to help the FSFS project. Proper credit will be

given in the software documentation, the changelogs and/or this website.

Remember FSFS is released under the GNU General Public License and thus any

modifications to the code must be released under the same license.

First and foremost, you can try out the software and send (constructive)

comments. Mind the known issues and limitations above!

Please be clear and concise in your statements, but feel free to write what you

like or dislike, what works and what doesn't, and what's convenient or

cumbersome. Improving user experience is an important part of the development

of FSFS (again, let the comments be constructive).

If you feel you can improve the main code or the helper scripts, fix bugs,

add features or just clean up things, please go ahead and give it a shot.

Patches are always welcome and contributions from the community are at the

heart of the GNU GPL spirit. Please use something like diff -up to

generate patches as it makes it easier both to understand what they do and

where they belong, and to apply them.

If you're good at writing documentation, you're welcome to contribute to what

will eventually be a sort of user manual containing tutorials and explanations

on how FSFS works and how to set it up (to be published on this website and

included with the software distribution). Documentation sent should be released

under the GNU Free Documentation License (including no invariant parts, please)

or a compatible Creative Commons License, and may be edited for consistency and

clarity purposes.

If you feel you can improve this website or create a more attractive CSS, if

you want to donate money to the project, send gifts or thank-you notes, or

contribute in any other way... please don't hesitate to write. Any kind help is

always appreciated.

Last but not least... donate to FSFS

through SourceForge! Donations to the project help purchasing whatever

equipment, software or documentation is needed to further the development or

port the software to other systems. They also help pay bills and make developers

feel like their work is appreciated, which is always a big aid :) Thank you

very much for any help you might provide with donations.

Disclaimer

As the GPL license states, FSFS can not be guaranteed to work safely; stable

versions are released periodically after being tested, but, as with all

software, it obviously can't be assured they will work on all systems or

configurations without problems. Therefore it is strongly

advised to backup all important data that FSFS acts on. Under

no circumstances will the FSFS developers assume any responsibility for any

kind of damage, including but not limited to loss of data, security breaches,

damage to hardware or software or to any business relying on FSFS. See the full

GPL license text for the

exact details.

Feel free to contact the FSFS author for questions or contributions:

Last updated: August 11, 2007