对象存储

NoSql简介以及Redis基本使用

≡放荡痞女 提交于 2020-03-06 18:55:11
参考了其他博主的博文加上自己实践所写,不足之处尽请谅解,我的另一篇博文会有redis的安装以及对应的资源~ 1、什么是NoSql NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,是一种 基于内存的数据库 ,并且提供一定的持久化功能; NoSQL:非关系型的数据库 。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题,包括超大规模数据的存储。 非关系型的数据库 :它的存储方式与我们的传统的数据库(二元关系来进行存储)不同; 2、主流使用的四大类非关系型数据库 2.1 键值(Key-Value)存储数据库(一个键对应一个值) 这一类数据库主要会使用到一个 哈希表 ,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署;举例如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB 在使用范围:redis—做缓存的时候; 2.2 列存储数据库(一个键对应多个值)

OAuth2介绍与使用

余生长醉 提交于 2020-03-06 00:24:42
1.什么是OAuth2 OAuth(开放授权)是一个开放标准,允许用户授权第三方移动应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容,OAuth2.0是OAuth协议的延续版本,但不向后兼容OAuth 1.0即完全废止了OAuth1.0。 2.应用场景 第三方应用授权登录:在APP或者网页接入一些第三方应用时,时长会需要用户登录另一个合作平台,比如QQ,微博,微信的授权登录。 原生app授权:app登录请求后台接口,为了安全认证,所有请求都带token信息,如果登录验证、请求后台数据。 前后端分离单页面应用(spa):前后端分离框架,前端请求后台数据,需要进行oauth2安全认证,比如使用vue、react后者h5开发的app。 3.名词定义 (1) Third-party application:第三方应用程序,本文中又称"客户端"(client),比如打开知乎,使用第三方登录,选择qq登录,这时候知乎就是客户端。 (2)HTTP service:HTTP服务提供商,本文中简称"服务提供商",即上例的qq。 (3)Resource Owner:资源所有者,本文中又称"用户"(user),即登录用户。 (4)User Agent:用户代理,本文中就是指浏览器。 (5)Authorization server:认证服务器

collection 框架

喜夏-厌秋 提交于 2020-03-04 11:31:04
集合框架(Collection Framework)泛指java.util包的若干个类和接口.如Collection,List,ArrayList,LinkedList,Vector(自动增长数组),HashSet,HashMap等. 集合框架中的类主要封装的是典型的数据结构,如动态数组,链表,堆栈,集合,哈希表等. 集合框架类似编程中经常用到的工具类,使得编码这专注于业务层的实现,不需要从底层实现相关细节—“数据结构的封装”和”典型算法的实现”. 1. Collection框架中实现比较要实现什么接口? Comparable/comparator 2. ArrayList和Vector的区别? 这两个类都实现了List接口,List接口继承了Collection接口,他们都是有序集合.即存储在这两个集合中的元素的位置都是由顺序的,相当于一种动态的数组,我们以后可以按位置索引号来取出某个元素,并且其中的数据是允许重复的.这是HashSet之类的集合的最大不同处,HashSet之类的集合不可以按索引号去检索其中的元素.也不允许有重复的元素.本题目本与hashset没有任何关系,但为了说清楚ArrayList和Vector的功能,我们使用对比方式,有利于说明问题. 接着才说ArrayList与Vector的区别,主要包括两个方面: (1)同步性 Vector是线程安全的

HDFS 小文件的解决思路

笑着哭i 提交于 2020-03-02 18:03:01
我们知道,HDFS 被设计成存储大规模的数据集,我们可以在 HDFS 上存储 TB 甚至 PB 级别的海量数据。而这些数据的元数据(比如文件由哪些块组成、这些块分别存储在哪些节点上)全部都是由 NameNode 节点维护,为了达到高效的访问,NameNode 在启动的时候会将这些元数据全部加载到内存中。而 HDFS 中的每一个文件、目录以及文件块,在 NameNode 内存都会有记录,每一条信息大约占用150字节的内存空间。由此可见,HDFS 上存在大量的小文件( 这里说的小文件是指文件大小要比一个 HDFS 块大小(在 Hadoop1.x 的时候默认块大小64M,可以通过 dfs.blocksize 来设置;但是到了 Hadoop 2.x 的时候默认块大小为128MB了,可以通过 dfs.block.size 设置) 小得多的文件。 ) 至少会产生以下几个负面影响: 大量小文件的存在势必占用大量的 NameNode 内存,从而影响 HDFS 的横向扩展能力。 另一方面,如果我们使用 MapReduce 任务来处理这些小文件,因为每个 Map 会处理一个 HDFS 块;这会导致程序启动大量的 Map 来处理这些小文件,虽然这些小文件总的大小并非很大,却占用了集群的大量资源! 以上两个负面影响都不是我们想看见的。那么这么多的小文件一般在什么情况下产生?我在这里归纳为以下几种情况:

AAF协会规范

谁说我不能喝 提交于 2020-03-02 12:36:36
译者注: 翻译者说明 由于要操作AAF文件,虽然了解的AAF的操作方式,但是由于不理解商业软件如何读取AAF文件,则无法创造出达芬奇、Nuke等软件可以打开的AAF格式的文件内容。迫于对AAF内部对象理解问题。随即开展翻译。需要确定MasterMob与其他对象的关系。 原文pdf地址 Advanced Authoring Format (AAF) Object Specification v1.1 1 范围 本文档对高级创作格式(AAF)的视听素材和相关的元数据交汇,使用class模型定义符合创作范围的数据结构。把这些数据结构映射到文件(或者其他持久性存储中)是由其他AAF规范协会定义。 2 规范引用文件 本文通过参考下列规范文件所包含的规则构成本文档内容。对于时间引用,随后的修正,或者修改 在任何出版物都不适用。然而,根据本文文件的协议各方鼓励应用以下最新的标准文档。没有标注日期的参考文献,则适用于最后编辑的标准文档。 ISO/IEC 11578-1 – 1998, 信息技术开放系统互连远程过程调用 (RPC)附件一、通用唯一标识符 SMPTE RP224, SMPTE标签登记 IETF RFC 1738 – 统一资源定位器(URL) IETF RFC 2396 – 统一资源标识符(URI) ITU-R Recommendation BS.1196 (1995) (annex 2

SpringBoot 结合 Spring Cache 操作 Redis 实现数据缓存

此生再无相见时 提交于 2020-03-02 10:59:09
系统环境: Redis 版本:5.0.7 SpringBoot 版本:2.2.2.RELEASE 参考地址: Redus 官方网址:https://redis.io/ 博文示例项目 Github 地址:https://github.com/my-dlq/blog-example/tree/master/springboot/springboot-redis-cache-example 一、缓存概念知识 1、是什么缓存 我们日常生活中,经常会接触听到缓存这个词,例如,浏览器清空缓存,处理器缓存大小,磁盘缓存等等。经过分类,可以将缓存分为: 硬件缓存: 一般指的是机器上的 CPU、硬盘等等组件的缓存区间,一般是利用的内存作为一块中转区域,都通过内存交互信息,减少系统负载,提供传输效率。 客户端缓存: 一般指的是某些应用,例如浏览器、手机App、视频缓冲等等,都是在加载一次数据后将数据临时存储到本地,当再次访问时候先检查本地缓存中是否存在,存在就不必去远程重新拉取,而是直接读取缓存数据,这样来减少远端服务器压力和加快载入速度。 服务端缓存: 一般指远端服务器上,考虑到客户端请求量多,某些数据请求量大,这些热点数据经常要到数据库中读取数据,给数据库造成压力,还有就是 IO、网络等原因有一定延迟,响应客户端较慢。所以,在一些不考虑实时性的数据中,经常将这些数据存在内存中(内存速度非常快)

Openstack swift对象存储

风格不统一 提交于 2020-03-02 03:26:03
OpenStack Object Storage(Swift)是OpenStack开源云计算项目的子项目之一。Swift使用普通的服务器来构建冗余的、可扩展的分布式对象存储集群,存储容量可达PB级。Swift的是用Python开发。 Swift提供的服务与AWS S3基本相同: 作为IaaS的存储服务 与OpenStack Compute对接,为其存储镜像 文档存储 存储需要长期保存的数据,例如log 存储网站的图片,缩略图等 Swift使用RESTful API对外提供服务,目前 1.4.6版本所提供的功能: Account(存储账户)的GET、HEAD Container(存储容器,与S3的bucket相同)的GET、PUT、HEAD、DELETE Object(存储对象)的GET、PUT、HEAD、DELETE、DELETE Account、Container、Object的元数据支持 大文件(无上限,单个无文件最大5G,大于5G的文件在客户端切分上传,并上传manifest文件)、 访问控制、权限控制 临时对象存储(过期对象自动删除) 存储请求速率限制 临时链接(让任何用户访问对象,不需要使用Token) 表单提交(直接从HTML表单上传文件到Swift存储,依赖与临时链接) swift的构架一般如下:可扩展性和伸缩性是我们的主要目标 swift服务依赖于以下技术

多线程进阶——JUC并发编程之Synchronized底层实现概论🔥

 ̄綄美尐妖づ 提交于 2020-03-02 01:07:17
1、Synchronized简介 Java中提供了两种实现同步的基础语义: synchronized 方法和 synchronized 块 ,下面我们来操作一番: public class SyncTest { public void syncBlock(){ synchronized (this){ System.out.println("sync block balabala...."); } } public synchronized void syncMethod(){ System.out.println("sync method hahaha...."); } public static void main(String[] args) { } } 将SyncTest.java 编译为SyncTest,.class文件,我们使用 javap -v SyncTest.class 查看class文件对应的JVM字节码信息。这里我使用的是JVM版本是JDK1.8。 { ... public void syncBlock(); descriptor: ()V flags: ACC_PUBLIC Code: stack=2, locals=3, args_size=1 0: aload_0 1: dup 2: astore_1 3: monitorenter 4:

# IT明星不是梦 # Ceph持久化存储为k8s应用提供存储方案(1)

笑着哭i 提交于 2020-03-01 23:04:27
目录:1)Ceph介绍 2)部署Ceph集群 采用版本【2020最新nautilus (stable)14.2.7】 为什么使用Ceph? ceph其实早在2004年的时候写的第一行代码,它是到2012年才有的第一个开发版本,到2014年的时候ceph才慢慢有公司在生产上应用了,那时候一般有的版本也不是很稳定,也是进行一些二次的研发,包装成一些自己的东西,不过现在ceph的版本已经很稳定了,已经适合在生产用了,目前用的比较多的,社区影响比较好的是这个luminous版本,这个版本也是比较稳定,也是比较流行,目前也是用的比较多。 另外就是ceph和其他存储有些不一样的地方,它可扩展,有很好的性能,有稳定存储的计算模块,在没用ceph之前用的一般都是一些传统的存储或者就是商业的存储,像商业的成本一般比较高,需要一些设备或者存储到云端,另外就是拿服务器做挂载共享,这种一个是不利于横向扩展,它很难保证数据的稳定性,数据的访问速率,因为用挂载模式的话,它挂载的模式访问是比较差的,所以基于这种原因来采用ceph,目前像腾讯、乐视、新浪、国外的公司雅虎也都是用的ceph,像国内用的比较成功的x-sky这个用的也比较多,所以这个ceph已经很稳定了,目前市面的ceph人员也比较缺少。 GlusterFS和ceph的区别 分布式存储的话无疑就是横向扩展,任何一个节点挂了的话,可以不整体影响一个运行

java 常见面试题

倖福魔咒の 提交于 2020-03-01 12:44:31
基本问题 基本数据类型和对象的区别 (1) 基本数据类型的存储原理:所有的简单数据类型不存在“引用”的概念,基本数据类型都是直接存储在内存中的栈上的,数据本身的值就是存储在栈空间里面,Java语言里面八种数据类型是这种存储模型; (2) 引用类型的存储原理:引用类型继承于Object类(也是引用类型)都是按照Java里面存储对象的内存模型来进行数据存储的,使用Java堆和栈来进行这种类型的数据存储,简单地讲,“引用”(存储对象在内存堆上的地址)是存储在有序的栈上的,而对象本身的值存储在堆上的; 不论是基本数据类型还是引用类型,他们都会先在栈中分配一块内存,对于基本类型来说,这块区域包含的是基本类型的内容;而对于引用类型来说,这块区域包含的是指向真正内容的指针,真正的内容被手动的分配在堆上。 JAVA中的数据类型及其各自的特点。 分为基本类型和引用类型,基本类型有八个,数值型的有byte(1字节),short(2字节),int(4字节),long,float,double,布尔类型的bool和字符类型的char。引用类型有类,接口,数组。 JAVA面向对象的特征? 封装、继承、多态、抽象 封装:通过类来体现,将实体封装成类,其中包含属性和方法 继承:类与类之间可以继承特点,使得代码重用 多态:通过传递给父类对象引用不同的子类从而表现出不同的行为 抽象: 将一类实体的共同特性抽象出来