对象存储

JVM内存模型和面试题解析

我怕爱的太早我们不能终老 提交于 2019-12-21 04:10:55
一、JVM运行时区域      其中,      线程私有的:程序计数器,虚拟机栈,本地方法栈      线程共享的:堆,方法区,直接内存 1 程序计数器   程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等功能都需要依赖这个计数器来完。   java虚拟机的多线程是通过线程轮流切换并分配CPU的时间片的方式实现的,因此在任何时刻一个处理器(如果是多核处理器,则只是一个核)都只会处理一个线程,为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,各线程之间计数器互不影响,独立存储,因此这类内存区域为“线程私有”的内存。   从上面的介绍中我们知道程序计数器主要有两个作用: 字节码解释器通过改变程序计数器来依次读取指令,从而实现代码的流程控制,如:顺序执行、选择、循环、异常处理。 在多线程的情况下,程序计数器用于记录当前线程执行的位置,从而当线程被切换回来的时候能够知道该线程上次运行到哪儿了。   注意: 程序计数器是唯不会出现 OutOfMemoryError 的内存区域,它的生命周期随着线程的创建而创建,随着线程的结束而死亡。 2 Java 虚拟机栈   Java虚拟机栈也是线程私有的,它的生命周期和线程相同,描述的是

史上最全Java集合面试题

╄→尐↘猪︶ㄣ 提交于 2019-12-20 22:37:30
1、你所知道的集合类都有哪些?主要方法? 最常用的集合类是 List 和 Map。 List 的具体实现包括 ArrayList 和 Vector,它们是可变 大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。 List 适用于按数值索 引访问元素的情形。 Map 提供了一个更通用的元素存储方法。 Map 集合类用于存储元素对(称作"键"和"值"), 其中每个键映射到一个值。 ArrayList/Vector List Collection HashSet/TreeSet Set HashTable Treemap/HashMap 我记的不是方法名,而是思想,我知道它们都有增删改查的方法,但这些方法的具体名称, 我记得不是很清楚,对于 set,大概的方法是 add,remove, contains;对于 map,大概的方 法就是 put,remove,contains 等,因为,我只要在 eclispe 下按点操作符,很自然的这些方 法就出来了。我记住的一些思想就是 List 类会有 get(int index)这样的方法,因为它可以按 顺序取元素,而 set 类中没有 get(int index)这样的方法。List 和 set 都可以迭代出所有元素, 迭代时先要得到一个 iterator 对象,所以,set 和 list 类都有一个 iterator 方法,用于返回那

IOS设计模式-备忘录模式

不打扰是莪最后的温柔 提交于 2019-12-20 18:29:31
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1、如何存储记录 在存储记录时,第一步我们需要用一把钥匙去打开一把锁。第二步,当我们打开锁之后就会有黑盒子,我们一开始还不知道里面有什么,所以是黑盒子。 1、存储记录的必要性 生活中,比如去超市购物有时候就需要在入口储物柜存放自己的包裹 2、记录的唯一标示 储物柜对应一把钥匙和号码标示。 3、存储记录与取出记录 =============================================================================================== 根据上面的思维导图:备忘录模式有:1.有key值(唯一标示符) 2.获取与key对应的存储物品 3.可以存储多样性的对象。 备忘录模式的UML图: 2、备忘录模式的基本原理 Originator起因;起源;创作者;发起人,对象:能够生成备忘录中心的状态值 Memento纪念品,记录,备忘录中心,能够将对象生成的备忘录中的状态值进行存储或者取出值 Caretaker看门人,备忘录中心存在黑箱子里的物品   设计存储中心,比如超市里的储物柜   指定存储接口,   实现存储机制, 备忘录模式(Memento Pattern)又叫做快照模式(Snapshot Pattern)或Token模式,是GoF的23种设计模式之一

Java内存结构

风格不统一 提交于 2019-12-20 11:48:27
转载: 原文链接: https://blog.csdn.net/qq906627950/article/details/81324825 运行时数据区 JVM所管理的内存包括以下几个运行时数据区域,如图所示 方法区和堆为线程共享区,虚拟机栈、本地方法栈及程序计数器为线程独占区。 程序计数器 程序计数器是一块较小的空间,它可以看作是当前线程所执行的字节码的行号指示器。 如果线程执行的是java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址(可以理解为上图所示的行号),如果正在执行的是native方法,这个计数器的值为undefined。 JVM的多线程是通过线程轮流切换并分配CPU执行时间片的方式来实现的,任何一个时刻,一个CPU都只会执行一条线程中的指令。为了保证线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,各线程间的程序计数器独立存储,互不影响。 此区域是唯一一个在java虚拟机规范中没有规定任何OutOfMemoryError情况的区域,因为程序计数器是由虚拟机内部维护的,不需要开发者进行操作。 虚拟机栈 每个线程有一个私有的栈,随着线程的创建而创建,生命周期与线程相同。 虚拟机栈里面存着的是一种叫“栈帧”的东西,每个方法会创建一个栈帧,栈帧中存放了局部变量表、操作数栈、动态链接、方法出口等信息。

JVM探索之——内存管理(二)

核能气质少年 提交于 2019-12-20 10:26:27
上篇文章 我们介绍了JVM所管理的内存结构也就是运行时数据区(Run-Time Data Areas),现在我们将介绍JVM的内存分配与回收 静态内存分配与动态内存分配 JVM的内存分配主要分为两种:静态内存分配与动态内存分配与之对应的是基本类型内存分配与对象内存分配; 1、静态内存分配 静态内存分配在编译时已确定好内存空间,程序载入时JVM把一次内存分配给它,此后不会再发生变化。这些内容包括:方法中的局部变量(基本数据类型)、类变量(基本数据类型)、对象的引用;对于方法中的局部变量是存储在Java栈的局部变量表中,方法执行结束栈帧出栈,局部变量也会跟着收回内存空间;而类变量是存储在方法区中的,这里的内存回收时间是不确定的。 2、动态内存分配 Java里给对象分配内存是动态分配的,编译的时候并不能确定对象的存储空间大小,只是创建对象时才能进行内存空间分配,而内存空间的回收是在对象不再被引用时才能回收。对象是存储在堆中,只有当GC触发时才清理回收那些没有被引用的对象的内存空间; 如下面代码段; public class Test { byte[] bytes=new byte[1024*1024*5]; long a=1000; public static void main(String[] args){ long b=2; byte[] base=new byte[1024

杉岩数据:对象存储是企业海量非结构化数据存储的最佳选择

此生再无相见时 提交于 2019-12-18 18:16:53
海量数据的爆炸式增长,使存储技术近五年的发展速度远超过去n年的发展历程。C端用户一个明显的感觉就是:U盘存储容量从过去物以稀为贵的几十M迅速发展到今天几十G、甚至TB级,家用电脑硬盘容量更是TB级标配。 那么,企业级又迎来了怎样的变化? IDC数据显示,到2020年,企业数据总体将达到44ZB,其中80%的数据将会是非结构化数据(图片、视频、归档以及企业级备份等各种数据)。显然,海量数据的产生正在促使企业级存储从需求到产品形态都发生了改变。 “相对于NAS、SAN这种传统企业级存储解决方案,对象存储确实处于一个蓝海市场,它的竞争不那么激烈,而需求的潜力却非常巨大。”一位企业级存储市场人士表示。 存储作为企业数据留存的核心介质,数据的爆发式增长首当其冲会给存储带来巨大的挑战。说到对象存储,对大多数传统企业IT管理者而言依旧是个新名词。 它专为解决非结构化数据而来 众所周知,当前传统企业在存储方面惯常采用三类方式:一是DAS直连存储,类似小柜子一样,通过一根不长的线接到客户端,这类存储容量很有限,使用场景也非常少;二是NAS(网络接入存储),它是以NFS协议,将存储暴露给客户端挂载使用;三是SAN(存储区域网络),它暴露的是块存储,将所谓的硬盘暴露给客户端。 “所有传统企业存储都有一个共同的特征——就是只能垂直扩展。比如一个EMC的存储柜容量不够,只能另买一个存储柜,它在管理

Android中JSON数据的全方位解析

不问归期 提交于 2019-12-18 09:55:40
Android基础——JSON数据的全方位解析 本篇文章包括以下内容: JSON是什么 JSONObject的解析和存储 JSONObject的解析和存储(抽象) JSONArray的解析和存储 模拟周边加油站JSON数据实战 JSON是什么 JSON:JavaScript对象表示法(JavaScript Object Notation) JSON是存储和交换文本信息的语法 JSON是轻量级的文本数据交换格式 JSON独立于语言和平台 JSON具有自我描述性,更易理解 类似XML,比XML更小、更快、更易解析 没有结束标签 更短 读写的速度更快 使用数组 不使用保留字 JSON语法是JavaScript对象表示法语法的子集 数据在名称/值对中 数据由逗号分割 花括号保存对象 方括号保存数据 JSON值可以是 数字(整数或浮点数) 字符串(在双引号中) 逻辑值(true或false) 数组(在方括号中) 对象(在花括号中) null JSONObject的解析和存储 JSONObject数据是用key-value来存储的,中间使用冒号隔开,外层的花括号表示一个对象 { " username ": "Hensen" , " qq ": "510402535" } 1 2 3 4 首先创建一个存储数据的Bean类 public class User { private String

C#引用类型和值类型的区别

情到浓时终转凉″ 提交于 2019-12-18 09:03:20
我们都知道, c# 的两大数据类型分别为值类型和引用类型。很多人或许闭着眼睛都能说出值类型包括简单类型、结构体类型和枚举类型,引用类型包括自定义类、数组、接口、委托等,但是当被问及到二者之间的联系和区别,什么时候用 struct 什么时候用 class 时,就常常混淆不清了。为此,了解值类型和引用类型的本质差异就变的很有必要了。 值类型直接存储其值,变量本身就包含了其实例数据,而引用类型保存的只是实例数据的内存引用。因此,一个值类型变量就永远不会影响到其他的值类型变量,而两个引用类型变量则很有可能指向同一地址,从而发生相互影响。 从内存分配上来看,值类型通常分配在线程的堆栈上,作用域结束时,所占空间自行释放,效率高,无需进行地址转换,而引用类型通常分配在托管堆上,由 GC 来控制其回收,需要进行地址转换,效率降低,这也正是 c# 需要定义两种数据类型的原因之一。 值类型均隐式派生自 System.ValueType ,而 System.ValueType 又直接派生于 System.Object, 每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值,注意所有的值类型都是密封( sealed )的,所以无法派生出新的值类型。而且 System.ValueType 本身是一个类类型,而不是值类型,因为它重写了 object 的 Equals() 方法

20.2合集

人走茶凉 提交于 2019-12-18 06:24:24
要点提示: Collection接口为线性表、向量、栈、队列,优先队列以及集合定义了共同的操作。   java合集框架支持以下两种类型的容器:     一种是为了存储一个元素 合集,简称为合集(collection);     另一种是为了存储键值对,称为映射表(map)   映射表是一个用于使用一个键(key)快速搜索一个元素的高效数据结构。 Set用于存储一组不重复的元素 List用于存储一个有序元素合集 Stack用于存储采用后进先出方式处理的对象 Queue用于存储采用先进先出方式处理的对象 Priority Queue用于存储按照优先级顺序处理的对象。 来源: https://www.cnblogs.com/cglib/p/11993865.html

容器化之后如何节省云端成本?(二十六)

爷,独闯天下 提交于 2019-12-17 21:28:37
前言 Kubernetes的教程一直在编写,目前已经初步完成了以下内容: 1)基础理论 2)使用Minikube部署本地Kubernetes集群 3)使用Kubeadm创建集群 接下来还会逐步完善本教程,比如Helm、ELK、Windows Server容器等等。 目录 Kubernetes主体架构 1.1.主要核心组件 1.1.1. Master组件 1.1.2. 节点(Node)组件 1.1.3. 插件 1.2. 基本概念 1.2.1. 容器组(Pod) 1.2.2. 服务(Service) 1.2.3. 卷(Volume) 1.2.4. 标签(Labels)和标签选择器(Label Selector) 1.2.5. 复制控制器(Replication Controller,RC) 1.2.6. 副本集控制器(Replica Set,RS) 1.2.7. 部署控制器(Deployment) 1.2.8. StatefulSet 1.2.9. 后台支撑服务集(DaemonSet) 1.2.10. 一次性任务(Job) Kubernetes主体架构 k8s的整体架构如下图所示: C:\Users\Lys_Desktop\Documents\Tencent Files\512982554\FileRecv\思维导图1.png 1.1主要核心组件 1.1.1Master组件