tokenpocket钱包官方网|fsfsd
百度知道 - 信息提示
百度知道 - 信息提示
百度首页
商城
注册
登录
网页
资讯
视频
图片
知道
文库
贴吧采购
地图更多
搜索答案
我要提问
百度知道>提示信息
知道宝贝找不到问题了>_
该问题可能已经失效。返回首页
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
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
Youtube
Streamline Pro
Overview
Control
Overview
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库
//spring mvn 的依赖
spring boot 集成 fsfd 依赖
//最好导Sonatype库
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