tfs 的读写操作代码

Git-TFS 使用指南 Git-TFS 是一个 Git 和 Microsoft Team Foundation Server (TFS) 之间的双向桥接工具,允许你使用 Git 作为 TFS 的客户端。这样可以让你的 Git 分支保持与 TFS 一致,同时保留你的更改。允许你将 TFS(TFVC)代码库克隆到 Git 进行本地管理。这个命令会把所有的 Git 提交合并成一个,并提交到 TFS。上进行同步,因此如果你要管理多个分支,建议使用。当你在 Git 里完成了一些提交后,你可以使用。,会把 TFS 上的新提交拉取到 Git。 阅读详情

链接是我写的读写打包的代码

http://pan.baidu.com/s/1o6mI4DO

1. include 头文件

/*************************************************************************
	> File Name: basetype.h
	> Author: zhanglp
	> Mail: shixi_lipeng@staff.sina.com.cn 
	> Blog: http://blog.youkuaiyun.com/zhanglpql
	> Github: https://github.com/zhanglp92
	> Created Time: 2014年07月22日 星期二 09时31分47秒
 ************************************************************************/

#ifndef _MY_BASETYPE_H_
#define _MY_BASETYPE_H_

#define  int32   int
 #define uint32  unsigned int

#endif

/*************************************************************************
	> File Name: image_reader.h
	> Author: zhanglp
	> Mail: shixi_lipeng@staff.sina.com.cn 
	> Blog: http://blog.youkuaiyun.com/zhanglpql
	> Github: https://github.com/zhanglp92
	> Created Time: 2014年07月22日 星期二 13时16分29秒
 ************************************************************************/

#ifndef _MY_IMAGE_READER_H_
#define _MY_IMAGE_READER_H_

#include "basetype.h"
#include <iostream>
#include <stdint.h>

namespace tfs {

    namespace client {

        class TfsClient;
    }
}

namespace image {

    class ImageReader {

        private:
            tfs::client::TfsClient  *tfs_client_;
            int fd_;

        public:
            ImageReader ();
            ~ImageReader ();

            bool Connect (const char*ns_ip_port) const ;
            bool Open (const char *TFS_filename);
            int64_t GetSize (void) const ;
            int64_t Read (void *buffer, const int64_t buffer_size) const ;
            void Close (void);

            /**
            * @brief : read whole file include open and close operator
            *
            * @param TFS_filename : file in tfs 
            * @param buffer : buffer
            *
            * @return : size to be read , -1 other
            */
            bool ReadWholeFile (const char *TFS_filename, std::string *buffer);

            void Disconnect (void);
    };
}

#endif

/*************************************************************************
	> File Name: image_writer.h
	> Author: zhanglp
	> Mail: shixi_lipeng@staff.sina.com.cn 
	> Blog: http://blog.youkuaiyun.com/zhanglpql
	> Github: https://github.com/zhanglp92
	> Created Time: 2014年07月21日 星期一 17时18分28秒
 ************************************************************************/

#ifndef _IMAGE_WRITER_H_
#define _IMAGE_WRITER_H_

#include "basetype.h"
#include <stdint.h>
#include <iostream>

namespace tfs {

    namespace client {
        class TfsClient;
    }
}

namespace image {

    class ImageWriter {

    private:
        tfs::client::TfsClient  *tfs_client_;


        /**
        * @brief : internal write, private 
        *
        * @param fd : file descriptor 
        * @param buffer : will be write content
        * @param length : length of buffer 
        *
        * @return : failuer -1 or size that was writen
        */
        int32 WriteInternal (const int fd, const char* buffer, uint32 length) const ;

    public:
        ImageWriter ();
        ~ImageWriter ();

        /**
        * @brief : connect to nameserver
        *
        * @param ns_ip_port : ip and port of nameserver 
        *
        * @return : success true or false
        */
        bool Connect (const char *ns_ip_port) const;

        /**
        * @brief : write content to tfs 
        *
        * @param TFS_filename : tfs filename 
        * @param ret_filename : filename generated by tfs
        * @param buffer : content to be writen to tfs 
        * @param length : content length
        *
        * @return : the content length if success, -1 otherwise
        */
        int32 Write (const char *TFS_filename, std::string *ret_filename, const char *buffer, uint32 length) const;

        int32 Write (std::string *ret_filename, const char *buffer, uint32 length) const {
            
            return Write (NULL, ret_filename, buffer, length);
        }

        int32 Write (std::string *ret_filename, const std::string &buffer) const {

            return Write (NULL, ret_filename, buffer.c_str (), buffer.length ());
        }

        int32 WriteWholeFile (const char *TFS_filename, std::string *ret_filename, const char *filename) const;

        /**
        * @brief : overwrite file new content 
        *
        * @param TFS_filename : tfs filename 
        * @param buffer : content to be writen to tfs 
        * @param length : content length
        *
        * @return : the length if success, -1 otherwise
        */
        int32 Overwrite (const std::string &TFS_filename, const char*buffer, uint32 length) const {
        
            return Write (TFS_filename.c_str (), NULL, buffer, length);
        }

        int32 Overwrite (const std::string &TFS_filename, const std::string &buffer) const {
            
            return Overwrite (TFS_filename, buffer.c_str (), buffer.length ());
        }


        /**
        * @brief : delete file from tfs 
        *
        * @param TFS_filename : TFS filename
        *
        * @return : success or fail
        */
        int32 Remove (const std::string &TFS_filename) const ; 

        void Disconnect (void);
    };
}

#endif

/*************************************************************************
	> File Name: logging.h
	> Author: zhanglp
	> Mail: shixi_lipeng@staff.sina.com.cn 
	> Blog: http://blog.youkuaiyun.com/zhanglpql
	> Github: https://github.com/zhanglp92
	> Created Time: 2014年07月21日 星期一 19时45分09秒
 ************************************************************************/

#ifndef _LOGGING_H_
#define _LOGGING_H_

#include <iostream>
#include <fstream>
#include <ctime>

// ofstream    log_out_("/usr/local/tfs/logs/mylog.log");

#define ERROR   cout
#define LOG(out)    (std::out)

#endif

src 代码


/*************************************************************************
	> File Name: image_reader.cpp
	> Author: zhanglp
	> Mail: shixi_lipeng@staff.sina.com.cn 
	> Blog: http://blog.youkuaiyun.com/zhanglpql
	> Github: https://github.com/zhanglp92
	> Created Time: 2014年07月22日 星期二 13时23分02秒
 ************************************************************************/

#include <iostream>
#include <stdint.h>
#include "image_reader.h"
#include "logging.h"
#include "/var/yr/tfs_ds/dxg/include/tfs/new_client/tfs_client_api.h"

namespace image {

    ImageReader::ImageReader () {

        tfs_client_ = tfs::client::TfsClient::Instance ();
        fd_ = -1;
    }

    ImageReader::~ImageReader () {

        Disconnect ();
    }

    bool ImageReader::Connect (const char *ns_ip_port) const {

        int ret = tfs_client_->initialize (ns_ip_port);
        if (tfs::common::TFS_SUCCESS != ret) {

            LOG(ERROR) << "tfs initialize failure: " << ret << std::endl;
            return false;
        }
        return true;
    }

    bool ImageReader::Open (const char *TFS_filename) {

        int fd = tfs_client_->open (TFS_filename, NULL, tfs::common::T_READ);
        if (0 > fd) {
            
            LOG (ERROR) << "failed to open for reading." << TFS_filename << std::endl;
            return false;
        }

        fd_ = fd;
        return true;
    }

    int64_t ImageReader::GetSize (void) const {

        int64_t ret = tfs_client_->get_file_length (fd_);
        if (0 > ret) {

            LOG (ERROR) << "failed to get file size ret=" << ret;
        }
        return ret;
    }

    int64_t ImageReader::Read (void *buffer, const int64_t buffer_size) const {

        char    *buf = reinterpret_cast<char*>(buffer);
        int64_t read = 0;

        while (buffer_size > read) {
            
            int ret = tfs_client_->read (fd_, buf + read, buffer_size - read);

            if (0 > ret) {
                
                LOG (ERROR) << "failed to read" << std::endl;
                return -1;
            }else {

                read += ret;
            }
        }
        return read;
    }

    void ImageReader::Close (void) {
        
        if (-1 != fd_) {

            tfs_client_->close (fd_);
            fd_ = -1;
        }
    }

    bool ImageReader::ReadWholeFile (const char*TFS_filename, std::string *buffer) {

        if (false == Open (TFS_filename)) {

            return false;
        }

        const int64_t max_to_read = GetSize ();
        if (0 >= max_to_read) {

            return false;
        }

        buffer->resize (max_to_read, 0); 
        int64_t read = Read (const_cast<char*>(buffer->data ()), max_to_read);

        Close ();

        if (max_to_read != read) {
            
            buffer->clear ();
            return false;
        }
        return true;
    }

    void ImageReader::Disconnect (void) {
        
        tfs_client_->destroy ();
    }
}

/*************************************************************************
	> File Name: image_writer.cpp
	> Author: zhanglp
	> Mail: shixi_lipeng@staff.sina.com.cn 
	> BLOG: http://bLOG.youkuaiyun.com/zhanglpql
	> Github: https://github.com/zhanglp92
	> Created Time: 2014年07月21日 星期一 17时53分50秒
 ************************************************************************/

#include <iostream>
#include <fstream>
#include "/var/yr/tfs_ds/dxg/include/tfs/new_client/tfs_client_api.h"
#include "image_writer.h"
#include "logging.h"

namespace image {

    ImageWriter::ImageWriter () {

        /** 创建一个tfs端口 */
        tfs_client_ = tfs::client::TfsClient::Instance ();
    }

    ImageWriter::~ImageWriter () {

        Disconnect ();
    }

    bool ImageWriter::Connect (const char *ns_ip_port) const {
        
        int ret = tfs_client_->initialize (ns_ip_port);
        if (tfs::common::TFS_SUCCESS != ret) {

            LOG(ERROR) << "tfs initialize failure: " << ret << std::endl;
            return false;
        }

        return true;
    }

    int32 ImageWriter::Write (const char*TFS_filename, std::string *ret_filename, const char*buffer, uint32 length) const {

        if (NULL == tfs_client_) {
            
            LOG(ERROR) << "Write : tfsclient initialize fial." << std::endl;
            return -1;
        }

        if (NULL != ret_filename) {
            
            ret_filename->clear ();
        }

        int fd = tfs_client_->open (TFS_filename, NULL, tfs::common::T_WRITE);
        if (0 > fd) {
            
            LOG (ERROR) << "failed to open for writing." << std::endl;
            return -1;
        }

        uint32 written = WriteInternal (fd, buffer, length); 

        if (0 > written) {
            
            tfs_client_->close (fd);
            LOG (ERROR) << "failed to write." << std::endl;
            return -1;
        }

        if (NULL != ret_filename) {

            const int file_name_len = 20;
            char file_name[file_name_len+1] = {0};
            int ret = tfs_client_->close (fd, file_name, file_name_len);

            if (ret != tfs::common::TFS_SUCCESS) {
                
                LOG (ERROR) << "fialed to close" << std::endl;
                return -1;
            }

            ret_filename->assign (file_name);
        }else {
            
            int ret = tfs_client_->close (fd);
            if (ret != tfs::common::TFS_SUCCESS) {
                
                LOG (ERROR) << "fialed to close" << std::endl;
                return -1;
            }
        }
        return written;
    }

    int32 ImageWriter::WriteWholeFile (const char *TFS_filename, std::string *ret_filename, const char *filename) const {
        
        std::ifstream fin;
        fin.open (filename, std::ios::in|std::ios::ate);

        if ( !fin ) {
            
            LOG (ERROR) << "failed to open file." << std::endl;
            return -1;
        }

        /* 读取文件中实际的字符数,-1 去掉文件结束符 */
        int64_t file_size = fin.tellg ();
        file_size -= 1;
        if (0 >= file_size) {
            
            LOG (ERROR) << "failed to tellg." << std::endl;
            fin.close ();
            return -1;
        }
        fin.seekg (std::ios::beg);

        std::string buffer (file_size+1, 0);
        if (!fin.read (const_cast<char*>(buffer.data ()), file_size)) {
            
            fin.close ();
            return -1;
        }
        fin.close ();
    //    std::cout << "buffer : " << buffer.c_str () << std::endl;

        int32 ret = Write (TFS_filename, ret_filename, buffer.c_str (), file_size);
        if (0 > ret) {
            
            LOG (ERROR) << "failed to write to tfs file." << std::endl;
            return -1;
        }
        return ret;
    }

    int32 ImageWriter::WriteInternal (const int fd, const char* buffer, uint32 length) const {
        
        int     ret = -1;
        uint32  written = 0;
        
        while (written < length) {
            
            ret = tfs_client_->write (fd, buffer + written, length-written);
        //    std::cout << "buffer : " << buffer << "size : " << length-written<< std::endl;
            if (0 > ret) {

                return ret;
            }else {
                
                written += ret;
            }
        }
        return written;
    }

    int32 ImageWriter::Remove (const std::string &TFS_filename) const {

        int64_t filesize = 0;
        int     ret = tfs_client_->unlink (filesize, TFS_filename.c_str (), NULL, tfs::common::DELETE);

        if (ret != tfs::common::TFS_SUCCESS) {
            
            LOG (ERROR) << "filed to unlink." << std::endl;
            return 0;
        }

        return ret;
    }

    void ImageWriter::Disconnect (void) {
        
        tfs_client_->destroy ();
    }
}

测试

/*************************************************************************
	> File Name: test.cpp
	> Author: zhanglp
	> Mail: shixi_lipeng@staff.sina.com.cn 
	> Blog: http://blog.youkuaiyun.com/zhanglpql
	> Github: https://github.com/zhanglp92
	> Created Time: 2014年07月22日 星期二 11时40分32秒
 ************************************************************************/

#include <iostream>
#include <string>
#include "image_writer.h"

using namespace std;
using image::ImageWriter;

const char  *ip_port = "10.224.12.61:8108";

int write_file (const ImageWriter tfs, string &ret_filename)
{
    string  buffer("hello world!");
    int     ret = tfs.Write (&ret_filename, buffer);

    if (-1 == ret) {

        cout << "failure (write): " << endl;
        return -1;
    }

    cout << "success : " << ret_filename << endl;
    return ret;
}

int main (int argc, char **argv)
{
    ImageWriter     tfs_writer;

    tfs_writer.Connect (ip_port);

    string  ret_filename;
    string  buffer;

    tfs_writer.WriteWholeFile ((char*)NULL, &ret_filename, argv[1]);
    cout << "success : " << ret_filename << endl;
    

//    write_file (tfs_writer, ret_filename);

    return 0;
}

/*************************************************************************
	> File Name: test.cpp
	> Author: zhanglp
	> Mail: shixi_lipeng@staff.sina.com.cn 
	> Blog: http://blog.youkuaiyun.com/zhanglpql
	> Github: https://github.com/zhanglp92
	> Created Time: 2014年07月22日 星期二 11时40分32秒
 ************************************************************************/

#include <iostream>
#include <string>
#include <fstream>
#include "image_reader.h"

using namespace std;
using image::ImageReader;

const char  *ip_port = "10.224.12.61:8108";

int read_file (ImageReader tfs, const char *file_name)
{
    string  buffer;
    int ret = tfs.ReadWholeFile (file_name, &buffer);

    if (0 > ret) {

        cout << "failure (read): " << endl;
        return ret;
    }

    string  out_file ("./image/");
    out_file.append (file_name);
    ofstream    ofile;
    ofile.open (out_file.c_str (), ios::out);
    ofile.write (buffer.c_str (), buffer.length ());

    ofile.close ();
    return ret;
}

int main (int argc, char **argv)
{
    ImageReader     tfs_reader;

    tfs_reader.Connect (ip_port);

    read_file (tfs_reader, argv[1]);

    return 0;
}

修改一下也可以成功传送文件


TFS与其他分布式存储系统的对比分析 TFS与其他分布式存储系统的对比分析   1 概述 TFS(Taobao File System),作为目前淘宝内部使用并开源的分布式文件系统,为淘宝提供海量小文件存储以及其他一些功能,被广泛地应用在淘宝各项应用中。其他分布式存储系统,这里主要指的是最近我通过读论文以及网络上的技术文档和分享所了解到的一些大公司所采用的存储系统,其中包括Google的GFS,BigTable(BT),Amaz 阅读详情

相关推荐

IDEA配置TFS操作手册-20190507.docx

IDEA配置TFS的操作手册,比较详细,供大家查阅,一起学习,在网上找了一堆都不是我想要的,所以自己整理吧

C# FileStream类:文件读写

在C#语言中文件读写流使用 FileStream 类来表示,FileStream 类主要用于文件的读写,不仅能读写普通的文本文件,还可以读取图像文件、声音文件等不同格式的文件。 在创建 FileStream 类的实例时还会涉及多个枚举类型的值, 包括 FileAccess、FileMode、FileShare、FileOptions 等。 FileAccess 枚举类型主要用于设置文件的访问方...

沐 白 4053

TFS使用之代码管理

如何有效地使用TFS进行代码管理。本文向您一解TFS代码管理的奥秘。

c#FileStream文件读写

FileStream对象表示在磁盘或网络路径上指向文件的流。这个类提供了在文件中读写字节的方法,但经常使用StreamReader或StreamWriter执行这些功能。这是因为FileStream类操作的是字节和字节数组,而Stream类操作的是字符数据。字符数据易于使用,但是有些操作,比如随机文件访问(访问文件中间某点的数据),就必须由FileStream对象执行,稍后对此进行介绍。还有几

未来软件 1万+

tfs-client-java

taobao的分布式文件客户端,支持分布式存储

TFS签出文件的批处理脚本

批处理脚本,可从TFS中检索已签出和已更改的文件,并将其路径保存到输出文件

tfs代码上传到server并下载到新位置

1、svn与git代码管理原理基本一致,基于文档管理,能看到文件代码,通过设置文件的只读属性来控制代码。 而tfs是基于sqlserver及lock来管理,看不见代码文件 2、tfs没有自己的用户管理,依赖windows用户 3、(1)连接到server的tfs 打开vs——团队——连接——管理连接——添加server (2)打开团队资源管理器——主页——项目和团队项目——新建团队项目—...

weixin_34204722的博客 1096

告别天价授权!手把手教你用TwinCAT 3.1搭建EtherCAT主站(Windows 10/11保姆级教程)

本文详细介绍了如何在Windows 10/11系统上使用TwinCAT 3.1免费搭建EtherCAT主站,帮助中小企业和个人开发者低成本实现工业自动化。从环境准备、许可证策略到安装配置和实战开发,提供保姆级教程,涵盖PLC编程、运动控制及硬件选型建议,助您轻松入门工业控制领域。

weixin_30664615的博客 361

什么是TFS

tfs简单讲解 tfs的架构设计: TFS(Taobao File System)是一个高可用、高性能、高可扩展的分布式文件系统,基于普通的Linux服务器构建,主要提供海量非结构化数据存储服务。TFS集群由名字服务器(namserver)和数据服务器(dataserver)组成,TFS以数据块(block)为单位存储和组织数据,block大小通常为64M(可配置),TFS会将多个小文件存储在同一...

stack_11的博客 1万+

Matlab实战:用DQN算法让机器人学会自主避障(附完整代码)

本文详细介绍了如何使用Matlab实现DQN(深度Q网络)算法,使机器人在复杂环境中学会自主避障。通过环境建模、网络架构设计、奖励函数优化及实战调试,提供了完整的代码实现和训练策略,帮助开发者快速应用于机器人路径规划项目。

t8u9v0w1x的博客 232

浅谈车载控制器产线EOL实现方式

1、控制器生产产线上电路检测设计 2、客户总装产线检测设计

u012406840的博客 2万+

TFS的读写操作

TFS的写操作流程: 只有当所有的DataServer都备份完成了 才会返回写入成功 TFS写操作流程 客户端首先向nameserver发起写请求,nameserver需要根据dataserver上的可写块,容量和负载加权平均来选择一个可写的block。并且在该block所在的多个dataserver中选择一个作为写入的master,这个选择过程也需要根据datase...

软软的博客 327

三菱PLC通信库大比拼:手把手教你用C#实现最高效的McProtocol数据读写

本文深入比较了三菱PLC通信库的性能,重点介绍了如何使用C#高效实现McProtocol数据读写。通过实测数据对比HslCommunication、McProtocol-next和自定义方案的优劣,提供优化技巧和代码示例,帮助开发者在工业自动化场景中提升通信效率。

m0n1o2p的博客 255

TFS 代码 API

获取TFS C++客户端 TFS C++ 客户端库包含一些头文件和一个libtfsclient.so的共享库文件。 可以直接通过编译源码获取。 TFS C++客户端使用说明 Tfs客户端提供了TfsClient类作为TFS文件操作的接口。类TfsClient在使用前需要初始化,初始化完成之后就可以多次打开不同的Tfs文件,对它们进行读写。Tfs客户端提供了打开/关闭、读/写、删除

学无止境,享受学习。--weixiao 1412

从传感器到执行-智能家居 Agent 的感知-决策-执行闭环

本文提出了一种面向智能家居的感知型Agent架构,通过"感知-决策-执行"的闭环系统实现智能化控制。感知模块整合多源传感器数据,决策模块基于规则或机器学习模型生成控制策略,执行模块完成设备操作。系统能够实时监测环境参数和用户状态,自动调节温度、照明等设备,提升家居舒适度。该架构可扩展为多模态感知与强化学习相结合的智能系统,为智慧家居发展提供技术基础。

一键难忘的博客 1122

减法平均优化器(SABO)算法详解:从数学原理到工程应用

减法平均优化器(SABO)是一种基于数学概念的新型元启发式优化算法,由Trojanovský和Dehghani于2023年提出。该算法通过v-减法运算和平均值计算实现搜索优化,核心创新是采用目标函数值差异符号引导搜索方向。SABO具有参数少、结构简单、收敛快等特点,在高维复杂问题中表现优异。算法通过种群平均值保持多样性,利用符号函数确保搜索方向改进,自然平衡探索与开发。MATLAB实现显示其计算复杂度为O(N²·D),与主流群体智能算法相当。SABO不依赖生物或物理隐喻,数学基础坚实,在工程优化和机器学习领

qq_42212808的博客 165

分布式blog系统 TFS总结

解决的问题        文件总量太大 一台服务器无法存放 只能放在网络集群中分节点存放 也就是通过屏蔽网络部分 形成一个“ one big CPU” 和 “one big disk” 。Client只需要向这个CPU去做read/write/mofity操作即可。但是对于业务的不同,也无法去满足满足通性,根据业务的不同设计不同的系统 效率比较高【个人见解】 TFS个人理解 ...

weixin_30295091的博客 123

【BUG已解决】ImportError: cannot import name ‘OpenAI‘ from ‘openai‘ 解决方案

的核心是版本不匹配用确认当前版本如果是 0.x 版本 →升级到 1.x升级后代码语法要同步改为团队协作项目务必在中锁定版本号,避免"我这能跑,你那不能跑"的问题对接国产模型时,只需替换base_url参数,SDK 调用方式完全一致。

一键难忘的博客 1万+

服务器正在执行此文件的一致性,TFS开源用户常见问题(FAQ)

作者:zyd_com@126.com博客:ydzhang.blog.chinaunix.net | blog.yunnotes.net微博:TFS(Taobao File System)是一个高可扩展、高可用、高性能、面向互联网服务的分布式文件系统,TFS由nameserver(NS)、dataserver(DS)、client三个部分组成,详细设计原理参考TFS适用场景TFS提供海量文件的可靠存...

weixin_33582089的博客 1118

基于STM32的嵌入式平台实现EtherCAT主站

本文将介绍如何在基于STM32的嵌入式平台上构建EtherCAT主站,并提供相应的源代码。使用SOEM库提供的API函数,我们可以实现与EtherCAT从站设备的实时通信和数据交换。在STM32的代码中,使用SOEM库提供的API函数初始化EtherCAT主站。在SOEM库中,我们可以找到EtherCAT主站的实现代码和相关的API函数。使用SOEM库提供的API函数实现EtherCAT主站的功能,包括发送和接收EtherCAT数据帧、处理从站设备的状态等。确保连接正常并且设备能够相互通信。

CodeSageX的博客 2833

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

TFS分布式文件系统应用

TFS是淘宝开源的一套高性能文件存储系统,在阿里广泛应用,除了自建文件系统,在应用上云的大趋势下,还可以使用阿里云的对象存储OSS服务:阿里云对象存储OSS首页 一、关于TFS TFS(Taobao File System)是一个高可扩展、高可用、高性能、面向互联网服务的分布式文件系统,主要针对海量的非结构化数据,它构筑在普通的Linux机器集群上,可为...

weixin_33842328的博客 445

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

TFS(Taobao File System) 简介

TFS(Taobao FileSystem)是一个高可扩展、高可用、高性能、面向互联网服务的分布式文件系统,主要针对海量的非结构化数据,它构筑在普通的Linux机器集群上,可为外部提供高可靠和高并发的存储访问。TFS为淘宝提供海量小文件存储,通常文件大小不超过1M,满足了淘宝对小文件存储的需求...

chris131416的博客 325

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

tfs文件系统笔记

上图是tfs官方给出的整体架构图。tfs是一个扁平的文件系统,类似于key-value存储系统,它没有所谓的目录层次结构,所有文件的文件名也不像传统的文件系统(如/home/test/mypicture)这样,而是由tfs文件系统的NameServer给定(这点有点像facebook的haystack系统)。tfs主要是用来处理taobao的图片文件,也就是常见的海量小文件应用。众所周知,小文件带

Byane的专栏 4056

六、淘宝技术发展(Java时代:创造技术-TFS)

在讲淘宝文件系统TFS之前,先回顾一下上面几个版本。1.0版的PHP系统运行了将近一年的时间(2003.05-2004.01);后来数据库变成 Oracle之后(2004.01-2004.05,叫1.1版本吧),不到半年就把开发语言转换为Java系统了(2004.02-2005.03,叫 2.0版本);进行分库、加入缓存、CDN之后我们叫它2.1版本(2004.10-2007.01)。这中间有些时

白骨书生的专栏 686

tfs项目学习记录

项目学习记录

qq_42301955的博客 219

淘宝技术发展6(Java时代:创造技术-TFS)

在讲淘宝文件系统TFS之前,先回顾一下上面几个版本。1.0版的PHP系统运行了将近一年的时间(2003.05-2004.01);后来数据库变成 Oracle之后(2004.01-2004.05,叫1.1版本吧),不到半年就把开发语言转换为Java系统了(2004.02-2005.03,叫 2.0版本);进行分库、加入缓存、CDN之后我们叫它2.1版本(2004.10-2007.01)。这中间有些时

其实我也有梦想 1147
上一篇: hadoop 的简单搭建部署
下一篇: cassandra 数据库的使用
lq.kr
博客等级 码龄14年 9粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值