s3

21.Java基础_String

风格不统一 提交于 2019-12-06 03:22:00
String类构造方法 1 package pack1; 2 //推荐使用直接赋值的方式得到字符串 3 public class test { 4 public static void main(String[] args) { 5 //public String(): 创建一个空白字符串对象,不含有任何内容 6 String s1=new String(); 7 System.out.println("s1:"+s1); //"s1: " 8 9 //public String(char[] chs):根据字符数组的内容,来创建字符串内容 10 char[] chs={'a','b','c'}; 11 String s2=new String(chs); 12 System.out.println("s2: "+s2); //"s2: abc" 13 14 //public String(byte[] bys): 根据字节数组的内容,来创建对象 15 byte[] bys={97,98,99}; 16 String s3=new String(bys); 17 System.out.println("s3: "+s3); // "s3: abc" 18 19 //public s="abc"; 直接赋值方式创建字符串对象,内容就是abc 20 String s4="abc";

cephfs分布式系统

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-05 23:53:15
cephfs分布式系统 CephFS:分布式文件系统 l 什么是 CephFS : 分布式文件系统 (Distributed File System) 是指文件系统管理的物理存储资源不一定直接连接在本地节点上 , 而是通过计算机网络与节点相连 CephFS 使用 Ceph 集群提供与 POSIX 兼容的文件系统 允许 Linux 直接将 Ceph 存储 mount 到本地 l 元数据服务器 什么是元数据 元数据 (Metadata) : 任何文件系统中的数据分为数据和元数据。 数据是指普通文件中的实际数据 而元数据指用来描述一个文件的特征的系统数据 比如 : 访问权限、文件拥有者以及文件数据块的分布信息 (inode...) 等 所以 CephFS 必须有 MDSs 节点 ceph对象存储 什么是对象存储 对象存储: 也就是键值存储 , 通其接口指令 , 也就是简单的 GET 、 PUT 、 DEL 和其他扩展 , 向存储服务上传下载数据 对象存储中所有数据都被认为是一个对象 , 所以 , 任何数据都可以存入对象存储服务器 , 如图片、视频、音频等 RGW 全称是 Rados Gateway RGW 是 Ceph 对象存储网关 , 用于向客户端应用呈现存储界面 , 提供 RESTful API 访问接口 ceph实战 :创建 KVM 虚拟机,虚拟的硬盘使用 ceph 存储 1. 在

使用Nginx代理S3时,需要禁用URL解码。

天涯浪子 提交于 2019-12-05 21:21:35
问题来源 使用Nginx代理S3时,无法创建新文件(读取和删除正常)。 用fuse挂载s3 使用 s3fs (V1.79) 挂载 s3fs ceph-s3 /mnt/ceph -o sigv2 -o use_path_request_style -o passwd_file=/etc/passwd-s3fs -o url=http://s3.biliops.com 无法新建文件 错误日志 /var/log/radosgw/radosgw-node-6.log http-403: 7fe690eba7c0 0 ceph version 9.2.0 (bb2ecea240f3a1d525bcb35670cb07bd1f0ca299), process radosgw, pid 2332333 7fe690eba7c0 0 framework: civetweb 7fe690eba7c0 0 framework conf key: port, val: 2333 7fe690eba7c0 0 starting handler: civetweb 7fe60adfb700 1 civetweb: 0x7fe5f80008c0: 192.168.168.168 - - [14/Jan/2016:23:22:33 +0800] "HEAD /ceph-s3/name HTTP/1.0" 404

String题目呀

空扰寡人 提交于 2019-12-05 19:51:38
3、浅谈一下String, StringBuffer,StringBuilder的区别?(面试题) 6、下面的代码将创建几个字符串对象? String s1 = new String("Hello"); String s2 = new String("Hello"); String s=hello; String s1=new String(s); String s2=new String(s); 3个字符串对象 7、在java中,String s=new String("xyz");创建了几个对象?(B) A 1个 B 1个或2个 C 2个 D 以上都不对 你不知道前面有没有生成一个 xzy 如果生成就是 1个对象 没有生成就是 2个对象 8、下面的代码输出什么? String s1 = new String("abc"); String s2 = new String("abc"); System.out.println(s1 == s2); System.out.println(s1.equals(s2)); False 指向地址,new相当于开辟了一个新的空间 True 看结果 9、下面的代码输入什么? String s1 = "abc"; String s2 = new String("abc"); s2.intern(); System.out.println(s1 =

RGW S3 User解析

不想你离开。 提交于 2019-12-05 00:10:50
一、RGW S3 User使用的类关系图。 cls_user_header和cls_user_bucket_entry从用户角度看到用户所拥有的buckets信息,这两个对象(其中cls_user_bucket_entry以数组的形式出现)需要保存在ceph集群中。通常在创建/删除/更新用户buckets时都需要这两个类对象。 RGwUserBuckets类是RGW User看到的buckets相关信息,实际上RGWBucketEnt和cls_user_bucket_entry类基本一致。 上图表示的是bucket的类关系图,其中rgw_bucket_dir_header和rgw_bucket_dir_entry这两个对象(rgw_bucket_dir_entry以数组的形式出现)保存到ceph集群中。在读写buckets时需要用到上述类。 上图描述了RGW User类的主要类及其关系图。其中核心类是RGWUser,该类表示一个RGW用户。上述类中RGWUID和RGWUserInfo类需要保存到Ceph集群。 二、RGW User主要函数处理流程。 1、同步指定用户所有buckets的使用信息 rgw_user_sync_all_stats() |__rgw_read_user_buckets() 读取指定用户所有buckets信息并保存到RGWUserBuckets对象中 |_

RGW S3 GC解析

筅森魡賤 提交于 2019-12-05 00:10:27
RGW S3 GC类的主要功能是提供垃圾收集器的功能。用于异步删除对象。 一、RGW S3 GC核心类关系图 二、RGW S3 GC核心数据类关系图 三、RGW S3 GC主要处理函数解析。 1、RGWGC初始化操作。 RGWGC::initialize() |__设置cct和store类对象 |__从配置文件中得到gc最大对象个数,即:rgw_gc_max_objs |__根据gc最大对象个数生成obj_names数组且初始化该数组的内容为gc.0-rgw_gc_max_objs 2、RGWGC终止操作。 RGWGC::finalize() |__删除obj_names数组 3、添加chain。 RGWGC::add_chain() |__cls_rgw_gc_set_entry() |__rgw_cls_gc_set_entry() |__gc_update_entry() |__gc_omap_get() |__cls_cxx_map_get_val() 以名字为key,得到Ceph集群中已经保存的cls_rgw_gc_obj_info信息(CEPH_OSD_OP_OMAPGETVALSBYKEYS) |__get_time_key() 得到time key |__gc_omap_remove() |__cls_cxx_map_remove_key() 删除指定time

在存储世界中成为“云原生”的真正含义

允我心安 提交于 2019-12-04 06:31:00
“云原生”(Cloud Native)一词在 2019 年被技术界广泛使用,但是却没有关于这个词一个特别明确的定义。主要的困惑在于,“云原生”与您的应用程序部署到的环境几乎没有关系,该术语同样适用于私有云和公共云。该术语更多的是指应用程序和体系结构的特征。 在 Cloud Native Computing Foundation (CNCF 云原生计算基金会) 对该术语的最新定义中我们可以找到一些相关信息: 云原生技术使组织能够在现代、动态环境(例如公共云,私有云和混合云)中构建和运行可扩展应用程序。容器、服务网格、微服务、不变的基础结构和声明性API 就是这种方法的例证。 这些技术使松散耦合的系统具有弹性,可管理性和可监控。结合强大的自动化功能,它们使工程师能够以最小的工作量频繁且可预测地进行重大的更改。 那么,存储是云原生意味着什么呢?简而言之,它必须以与云原生生态系统中其他所有事物相同的动态,API 驱动的方式运行。有两个相关的指标可以确定一个存储系统是否云原生,它们是: 是否专为 Kubernetes 打造 是否兼容亚马逊的 S3 API 下面我们将更详细地解读这些指标。 云原生存储是对象存储 现代应用程序体系结构基于对象存储,默认情况下,S3 是云的 API 语言。因为对象存储是唯一一种旨在处理云本机应用程序生成的数据量的存储

RGW S3 ACL解析

走远了吗. 提交于 2019-12-03 22:21:02
RGW ACL主要类关系图如下图所示: RGW ACL处理类关系图如下图所示: RGW ACL主要处理流程详细说明如下。 一、PUT ACL。 RGWPutACL::execute() |__从HTTP请求数据流中解析出RGWAccessControlPolicy_S3对象 |__RGWAccessControlPolicy_S3::rebuild() |__rgw_get_user_info_by_uid() 得到指定的用户信息 |__创建ACLOwner对象且设置ACLOwner的id和name |__遍历grant_map列表生成新的ACLGrant对象 |__将新生成的ACLGrant对象插入到RGWAccessControlList::grant_map中 |__根据bucket和object信息生成rgw_obj对象 |__对于设置对象的ACL则将对象的ACL信息写入到对象属性的RGW_ATTR_ACL中,对于设置bucket的ACL则将ACL信息写入到Bucket的metadata中 二、GET ACL。 RGWGetACLs::execute() |__判断所需是bucket ACL还是object ACL |__生成RGWAccessControlPolicy_S3对象 |__RGWAccessControlPolicy_S3::to_xml()

RGW S3 Authorize解析

时光怂恿深爱的人放手 提交于 2019-12-03 22:20:53
截止到目前为止,RGW S3的认证部分支持AWS v4认证、AWS v2认证以及匿名用户认证。这三种认证的总入口位于rgw_process.cc::process_request()函数,该函数中处理认证部分的代码如下: rgw_process.cc::process_request() |__RGW_Auth_S3::authorize() |__根据HTTP请求参数决定认证方式(AWS v4/AWS v2/匿名认证) 下面分别描述这三种认证方式: 1、AWS v2认证方式。 AWS v2认证由RGW_Auth_S3::authorize_v2()函数处理。使用AWS v2方式认证,用户首现根据用户的secret key对认证头部数据进行签名操作,与此同时将认证头部数据、签名数据、用户的access key信息加入到HTTP请求数据流中。RGW收到HTTP请求数据流后提取出上述信息,之后通过用户的access key获取到用户信息(user info)。之后使用用户信息中的secret key对HTTP请求数据流中的认证头部数据进行签名操作,最后判断由RGW计算出来的签名值是否与HTTP请求数据流中的签名值一致来实现用户的认证。 AWS v2函数处理流程如下: RGW_Auth_S3::authorize() |__通过HTTP请求数据流得到用户的access key

RGW S3 CORS解析

隐身守侯 提交于 2019-12-03 22:20:29
一、RGW S3 CORS核心类关系图。 二、RGW S3 CORS处理类关系图。 三、RGW S3 CORS操作解析。 1、PUT CORS操作。 RGWPutCORS::execute() |__RGWPutCORS_ObjStore_S3::get_params() |__从HTTP请求数据流中找到CORSConfiguration域并转换成RGWCORSConfiguration_S3对象 |__RGWCORSConfiguration_S3::encode() 序列化RGWCORSConfiguration_S3对象 |__对于设置对象的CORS则 |__RGWRados::get_bucket_instance_obj() 得到待设置CORS属性的object信息 |__RGWRados::set_attrs() 设置CORS属性到object的属性列表中且以RGW_ATTR_CORS作为索引 |__对于设置bucket的CORS则 |__rgw_bucket_set_attrs() 设置CORS属性到bucket的属性列表中且以RGW_ATTR_CORS作为索引 2、GET CORS操作。 RGWGetCORS::execute() |__RGWOp::read_bucket_cors() |__获取指定bucket的RGW_ATTR_CORS属性值 |_