对象存储

内存分配(全)

无人久伴 提交于 2019-11-29 17:24:58
malloc与free是C/C++的 标准库函数 ,new/delete是C++的 关键字 。它们都可用于申请动态内存和释放内存。 使用动态内存很明显的好处就是:不需要预先分配存储空间且分配的空间可以根据程序的需要扩大或缩小,这样可以有效的使用内存空间。 对于非内部数据类型的对象而言,光用malloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象的消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。 1、malloc和free #include < malloc.h > #include <alloc.h> #include < stdlib.h > 三者其中一个就行。 void *malloc(size_t size);//返回指向内存块首地址的指针,指针类型是void*,所以后续需要转换 void free(void *pointer); 使用示例: int *p=(int *)malloc(100); //指向整型的指针p指向一个大小为100字节的内存的地址, int *p=(int *)malloc(25*sizeof(int)); //指向整型的指针p指向一个25个int整型空间的地址 /*如果分配失败了,会返回一个空指针

Collection,泛型,Map

孤者浪人 提交于 2019-11-29 16:53:11
1.Collection集合 集合和数组的区别? 数组的长度是固定的, 集合的长度是可变的 数组中存储的数据都是同一类型的数据。集合存储的是对象,而且对象的类型可以不一致 集合框架 单列集合 java.util.Collection Collection:单列集合的跟接口,用于存储一系列的规则的元素 两个子接口: java.util.List: List中元素是有序,元素可重复 实现类:java.util.ArrayList, java.util.LinkedList Java.util.Set: Set中元素无序,不重复 实现类:java.util.HashSet, java.util.TreeSet Collection集合的常用功能 Collection是所有单列集合的父接口,因此定义了一些通过方法 public boolean add(E, e) :添加元素到集合中 public void clear() :清空集合中所有的元素 public boolean remove(E, e) :删除指定的元素 public boolean contains(E, e) :判断当前集合是否存在给定的元素 public boolean isEmpty() :判断当前集合是否为空 public int size() :返回集合中元素的个数 public Object[] toArray(

Java Stream & Method Reference

我们两清 提交于 2019-11-29 15:03:27
目录 Java Stream & Method Reference 1. Stream流 1.1 概述 1.2 流式思想的概述 1.3 获取流 1.4 常用方法 1.5 练习:集合元素处理(传统方式) 1.6 练习:集合元素处理(Stream流方式) 2. 方法引用 2.1 基本介绍 2.2 通过对象名引用【成员方法】 2.3 通过类名称引用【静态方法】 2.4 通过super引用父类的普通成员方法 2.5 通过this引用本类的普通成员方法 2.6 类的构造器(构造方法)引用 2.7 数组的构造器引用 Java Stream & Method Reference 1. Stream流 1.1 概述 传统集合的多步遍历代码 /* 传统的方式遍历集合,过滤集合,打印输出满足条件的集合 */ import java.util.ArrayList; public class Demo01LIst { public static void main(String[] args) { // 创建list集合,存储姓名 ArrayList<String> list = new ArrayList<>(); list.add("张无忌"); list.add("赵敏"); list.add("周芷若"); list.add("张强"); list.add("张三丰"); ArrayList

JS - 变量和类型

拜拜、爱过 提交于 2019-11-29 14:55:07
导读 变量和类型是学习 JavaScript 最先接触到的东西,先看下面几个问题: JavaScript 中的变量在内存中的具体存储形式是什么? 0.1+0.2 为什么不等于 0.3 ?发生小数计算错误的具体原因是什么? Symbol 的特点,以及实际应用场景是什么? [] == ![] 、 [undefined] == false 为什么等于 true ?代码中何时会发生隐式类型转换?转换的规则是什么? 如何精确的判断变量的类型? 如果你还不能很好的解答上面的问题,那说明你还没有完全掌握这部分的知识 一、Javascript数据类型 ECMAScript标准 规定了 7 种数据类型,其把这 7 种数据类型又分为两种:原始类型和对象类型。 原始类型 Null :只包含一个值: null Undefined :只包含一个值: undefined Boolean :包含两个值: true 和 false Number :整数或浮点数,还有一些特殊值( -Infinity 、 +Infinity 、 NaN ) String :一串表示文本值的字符序列 Symbol :一种实例是唯一且不可改变的数据类型 (在 es10 中加入了第七种原始类型 BigInt ,现已被最新 Chrome 支持) 对象类型 Object :除了常用的 Object , Array 、 Function

客户端的数据存储

爷,独闯天下 提交于 2019-11-29 14:41:06
客户端的数据存储 引言 随着Web应用程序的出现,也产生了对于能够直接在客户端存储用户信息的要求。想法很合乎逻辑,属于某个特定用户的信息应该存在该用户的机器上。无论登录信息,偏好设定或其他数据,Web应用提供者在找各种方式将数据存在客户端上。 我们来用一张表总结将数据存储在客户端上的各种方式的优缺点 方式 优点 缺点 cookie (1)能用于和服务器端通信;(2)当cookie快要过期时,可以重新设置cookie中的expires而不是删除。 (1)同源限制,(2)它会随着http头信息一起发送,增加了网络流量(文档传输的负载);(3)它只能储存少量的数据;(4)它只能储存字符串;(5)有潜在的安全问题。 sessionStorage (1)针对会话的小段数据的存储,也就是该数据只保持到浏览器关闭。(2)存储在其中的数据可以跨越页面刷新而存在。 同源策略限制:若想在不同页面之间对同一个sessionStorage进行操作,这些页面必须在同一协议、同一主机名和同一端口下 localStorage 如果不使用removeItem()或者delete删除,或者用户未清除浏览器缓存,数据将会一直保存在磁盘上,因此很适合在客户端存储文档或者长期保存用户偏好设置 (1)同源限制,(2)localStorage本质上是对字符串的读取,它是同步操作,如果存储内容多的话会消耗内存空间

java集合框架详解

这一生的挚爱 提交于 2019-11-29 12:44:09
一、概述 Java集合类主要由两个根接口Collection和Map派生出来的,Collection派生出了三个子接口:List、Set、Queue(Java5新增的队列),因此Java集合大致也可分成List、Set、Queue、Map四种接口体系,(注意:Map不是Collection的子接口)。 数据与集合的区别 数组长度不可变化而且无法保存具有映射关系的数据;集合类用于保存数量不确定的数据,以及保存具有映射关系的数据。 数组元素既可以是基本类型的值,也可以是对象;集合只能保存对象。 二、Collection UML图 其中List代表了有序可重复集合,可直接根据元素的索引来访问;Set代表无序不可重复集合,只能根据元素本身来访问;Queue是队列集合;Map代表的是存储key-value对的集合,可根据元素的key来访问value。   上图中淡绿色背景覆盖的是集合体系中常用的实现类,分别是ArrayList、LinkedList、ArrayQueue、HashSet、TreeSet、HashMap、TreeMap等实现类。 collection的API Collection 接口将对象组织到一起。数组不能调整大小,并且只能组织相同类型的对象,而Collections允许添加任何类型的对象,并且不强迫你指定初始大小。 需要注意的重要的一点是, Collection 扩展了

Openstack架构知识总结

青春壹個敷衍的年華 提交于 2019-11-29 12:04:01
OpenStack既是一个社区,也是一个项目和一个开源软件,提供开放源码软件,建立公共和私有云,它提供了一个部署云的操作平台或工具集,其宗旨在于:帮助组织运行为虚拟计算或存储服务的云,为公有云、私有云,也为大云、小云提供可扩展的、灵活的云计算。 OpenStackd开源项目由社区维护,包括OpenStack计算(代号为Nova),OpenStack对象存储(代号为Swift),并OpenStack镜像服务(代号Glance)的集合。 OpenStack提供了一个操作平台,或工具包,用于编排云。 下面列出Openstack的详细构架图 Openstack的网络拓扑结构图 整个OpenStack是由控制节点,计算节点,网络节点,存储节点四大部分组成。(这四个节点也可以安装在一台机器上,单机部署) 其中: 控制节点负责对其余节点的控制,包含虚拟机建立,迁移,网络分配,存储分配等等 计算节点负责虚拟机运行 网络节点负责对外网络与内网络之间的通信 存储节点负责对虚拟机的额外存储管理等等 控制节点架构: 控制节点包括以下服务 管理支持服务 基础管理服务 扩展管理服务 1)管理支持服务包含MySQL与Qpid两个服务 MySQL:数据库作为基础/扩展服务产生的数据存放的地方 Qpid:消息代理(也称消息中间件)为其他各种服务之间提供了统一的消息通信服务 2)基础管理服务包含Keystone

深入解析hashcode,hashMap源码

故事扮演 提交于 2019-11-29 09:59:45
hashCode 的常规协定是: 1.在 Java 应用程序执行期间,在同一对象上多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是对象上 equals 比较中所用的信息没有被修改。从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需保持一致。 2. 如果根据 equals(Object) 方法,两个对象是相等的,那么在两个对象中的每个对象上调用 hashCode 方法都必须生成相同的整数结果。 3、以下情况不 是必需的:如果根据 equals(java.lang.Object) 方法,两个对象不相等,那么在两个对象中的任一对象上调用 hashCode 方法必定会生成不同的整数结果。但是,程序员应该知道,为不相等的对象生成不同整数结果可以提高哈希表的性能。 4、实际上,由 Object 类定义的 hashCode 方法确实会针对不同的对象返回不同的整数。(这一般是通过将该对象的内部地址转换成一个整数来实现的,但是 JavaTM 编程语言不需要这种实现技巧。) 5、当equals方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。 以上这段官方文档的定义,我们可以抽出成以下几个关键点: 1、hashCode的存在主要是用于查找的快捷性,如Hashtable,HashMap等

Java包装类存在的必要

喜欢而已 提交于 2019-11-29 09:43:17
为什么存在这两种类型呢? Java语言中,new一个对象存储在堆里,我们通过栈中的引用来使用这些对象;但是对于经常用到的一系列类型如int,如果我们用new将其存储在堆里就不是很有效——特别是简单的小的变量。所以就出现了基本类型,同C++一样,Java采用了相似的做法,对于这些类型不是用new关键字来创建,而是直接将变量的值存储在栈中,因此更加高效。 有了基本类型为什么还要有包装类型呢? Java是一个面向对象的编程语言,基本类型并不具有对象的性质,为了让基本类型也具有对象的特征,就出现了包装类型(如我们在使用集合类型Collection时就一定要使用包装类型而非基本类型),它相当于将基本类型“包装起来”,使得它具有了对象的性质,并且为其添加了属性和方法,丰富了基本类型的操作。 另外,当需要往ArrayList,HashMap中放东西时,像int,double这种基本类型是放不进去的,因为容器都是装object的,这是就需要这些基本类型的包装器类了。 转载来自: https://blog.csdn.net/jinknow/article/details/80246695 来源: https://blog.csdn.net/HootingC/article/details/100767622

java集合框架详解

纵然是瞬间 提交于 2019-11-29 09:40:37
一、数组和集合的比较 数组不是面向对象的,存在明显的缺陷,集合弥补了数组的缺点,比数组更灵活更实用,而且不同的集合框架类可适用不同场合。如下: 1 :数组能存放基本数据类型和对象,而集合类存放的都是对象的引用,而非对象本身! 2 :数组容易固定无法动态改变,集合类容量动态改变。 3 :数组无法判断其中实际存有多少元素, length 只告诉了数组的容量,而集合的 size() 可以确切知道元素的个数 4 :集合有多种实现方式和不同适用场合,不像数组仅采用顺序表方式 5 :集合以类的形式存在,具有封装、继承、多态等类的特性,通过简单的方法和属性即可实现各种复杂操作,大大提高了软件的开发效率 二、 Java 集合 此图可用 Windows 系统自带画图工具查看比较清晰 Collection 和 Map ,是集合框架的根接口。 Collection 的子接口: Set: 接口 --- 实现类: HashSet 、 LinkedHashSet Set 的子接口 SortedSet 接口 --- 实现类: TreeSet List: 接口 --- 实现类: LinkedList,Vector,ArrayList List 集合 有序列表,允许存放重复的元素; 实现类: ArrayList :数组实现,查询快,增删慢,轻量级; ( 线程不安全 ) LinkedList :双向链表实现,增删快