对象存储

Cookie和Session

久未见 提交于 2019-12-27 01:10:20
目录 序 第一章:Cookie 1.1-Cookie概述 1.2-Java操作Cookie 1.3-Cookie的原理 1.4-Cookie的特点 1.5-Cookie的应用场景 1.6-Cookie的缺点 1.7-案例 第二章:Session 2.1-Session概述 2.2-Java操作Session 2.3-Session原理 2.4-Session何时销毁 2.5-Session的特点 2.6-Session和Cookie的区别 2.7-Session的应用场景 2.8-Session的缺点 2.9-案例 序 ​ 众所周知,Http协议是无状态的,也就意味着,针对浏览器与服务器之间的请求和响应(也叫会话),当两者之间的会话结束时,服务器端并不会记忆客户端(浏览器)曾经访问过。 ​ 但是,在实际应用程序开发中,有些业务需要浏览器和服务器之间能够保持会话。比如常见的登录业务,在同一个浏览器下,当用户第一次登录成功并进入首页时,下次再使用同一个浏览器访问首页时,则不需要再登录。而要实现下次访问不再登录时,需要让服务端能够识别曾经访问过它的浏览器,这就需要会话跟踪技术来实现。分别是 cookie 和 session 。 第一章:Cookie 1.1-Cookie概述 Cookie,有时也用其复数形式 Cookies 。类型为“ 小型文本文件 ”,是某些网站为了辨别用户身份,进行

Java基础之集合框架

元气小坏坏 提交于 2019-12-26 09:49:15
java集合架构支持3种类型的集合:规则集(Set),线性表(List),和图(Map),分别定义在Set,List,Map中。 Set实例存储一组互不相同的元素(集合),List实例存储一组顺序排列的元素(表),Map存储一组 对象---关键值的映射 集合中存储的是Java对象的引用,是一个引用的集合,这个引用指向相应的对象空间 ,而不是集合本身存储的对象 集合中不可以存储基本数据类型值,基本数据类型也可以装入集合,但其内部是先自动装箱成包装类对象,再存入集合 总的架构如下,非常重要,包含继承关系,实现的分类,一目了然:集合分为Map 接口和Collection接口 ,这两个接口是Java集合框架的根接口 Collection接口:         Set接口:不可重复 没有索引             HashSet具体类 : 使用哈希算法去重复, 效率高, 但元素无序             LinkedHashSet具体类 : HashSet的子类, 原理相同, 除了去重复之外还能保留存储顺序             TreeSet具体类 :使用二叉树算法排序, 可以指定一个顺序, 对象存入之后会按照指定的顺序排列        List接口: 可重复, 有存储顺序(有索引),存和取有序             ArrayList具体类 :数组实现, 增删慢, 查找快

java知识系列之集合理论篇

杀马特。学长 韩版系。学妹 提交于 2019-12-26 04:55:56
本文主要综合介绍java集合中比较重要的一些概念和实现。如下图 基础部分 Collection List :接口实例存储的是 有序的 , 可以重复 的元素。 ArrayList - 底层使用数组 - 读取速度快,增删速度慢 - 不是线程安全的,只能在单线程环境下,多线程环境下可以考虑用collections.synchronizedList(List l)函数返回一个线程安全的ArrayList类,也可以使用concurrent并发CopyOnWriteArrayList类。 - 当容量不够时,当前容量*1.5+1 LinkedList 底层使用双向链表数据结构 读取速度慢,增删快 线程不安全 implements List, Deque。实现List接口,能对它进行队列操作,即可以根据索引来随机访问集合中的元素。同时它还实现Deque接口,即能将LinkedList当作双端队列使用。自然也可以被当作"栈来使用" Vector 底层使用数组 读取速度快,增删慢 线程安全,效率低 容量不够时,默认扩展一倍 Stack Stack是Vector提供的一个子类,用于模拟"栈"这种数据结构(LIFO后进先出 小结 java提供的List就是一个"线性表接口",ArrayList(基于数组的线性表)、LinkedList(基于链的线性表)是线性表的两种典型实现 Queue代表了队列

Java_集合面试题

亡梦爱人 提交于 2019-12-25 06:07:07
Java_集合面试题 0.链表,队列和栈的区别? 链表是一种存储结构,指得是存储时候除了要存储数据元素之外,还要用数据元素一起的另外空间存储数据元素的关系。 队列和栈都是线性表,属于逻辑结构范畴,都是访问点受到限制,并且限制在线性表端点的线性表。 栈被限定为在线性表中的同一个(唯一一个的)端点插入删除 队列被限定为在线性表的一端插入,另外一个端点删除 栈和队列也可以用链表来实现,分别称为链栈和链队列 1. ArrayList ArrayList是基于数组实现的,最大长度不会超过数组的长度2147483647(最大值是int的最大值是,2的31次方减去1 ).如果业务中可能存在超过这个长度的数据,使用LinkedArrayList 3.HashMap Java中的HashMap是以键值对(key-value)的形式存储元素的。HashMap需要一个hash函数,它使用hashCode()和equals()方法来向集合/从集合添加和检索元素。当调用put()方法的时候,HashMap会计算key的hash值,然后把键值对存储在集合中合适的索引上。如果key已经存在了,value会被更新成新值。 HashMap的一些重要的特性是它的容量(capacity),负载因子(load factor)和扩容极限(threshold resizing)。 4.HashMap和HashTable的区别

new一个对象的时候发生了什么?

末鹿安然 提交于 2019-12-24 10:54:51
一、引言 如你所知,Java是一门面向对象的编程语言。我们平常在写代码的时候也是在不停的操作各种对象,那么当你在写出User user = new User();这样一行代码的时候,JVM都做了些什么呢? 二、了解对象 1、内存布局 在Hotspot虚拟机中一个对象的内存布局分为三个部分:对象头、实例数据、对齐填充。 对象头又有两部分的信息,第一部分是用于存储对象自身的运行数据(HashCode、GC分代年龄、锁状态标志等)。另一部分是类型指针,指向它的类元数据,虚拟机通过这个指针确定这个对象是哪个类的实例(如果使用句柄池方式则不会有)。如果是数组还会有一个记录数组长度的如下表所示: Mark Word是一个非固定的数据结构以便在极小的空间内存储尽量多的信息,它会根据对象的状态复用自己的存储空间。各状态下的存储内容如下表所示: 实例数据部分是真正存储的有效信息,就是在代码中定义的各种类型的字段内容。无论是父类继承下来的,还是在子类中的。 对齐填充不是必须存在的,仅仅起着占位符的作用,因为HotSpot虚拟机要求对象的起始地址必须是8字节的整数倍。 2、对象的访问 Java程序中我们操作一个对象是通过指向这个对象的引用。我们都知道对象存在堆中,这个引用存在虚拟机栈中。那么引用通过什么方式去定位堆中对象的位置呢? 直接指针法(HotSpot实现):引用中直接存储的就是堆中对象的地址

第七章:集合类

北慕城南 提交于 2019-12-24 05:24:53
7.1集合概述 类可以存储任意类型的对象,并且长度可变,统称为集合。这些类都位于java.util包中。 集合按照其存储结构可以分为两大类,即单列集合Collection和双列集合Map,这两种集合的特点具体如下。 Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是list和set。其中,list的特点是元素有序、元素可重复。set的特点是元素无序并且不可重复。list接口的主要实现类有ArrayList和LinkedList,set接口的主要实现类有HashSet和TreeSet。 Map:双列集合类的根接口,用于存储具有键(Key)、值(Value)映射关系的元素,每个元素都包含一对键值,在使用Map集合时可以通过指定的Key找到对应的value,例如根据一个学生的学号就可以找到对应的学生。Map接口的主要实现类有HashMap和TreeMap。 7.2 Collection接口 Collection是所有单列集合的父接口。 Collection接口的方法 Boolean add(Object o):向集合中添加一个元素 Boolean addAll(Collection c):将指定Collection中的所有元素添加到该集合中 Void clear():删除该集合中的所有元素 Boolean remove(Object

Web前端知识体系

倖福魔咒の 提交于 2019-12-24 04:03:20
看到一篇不错的文章,拿来收藏和分享。 原文:http://mp.weixin.qq.com/s/UFTfdE7LYhHquWEzwZKLCQ Web前端技术由 html、css和 javascript 三大部分构成,是一个庞大而复杂的技术体系,其复杂程度不低于任何一门后端语言。而我们在学习它的时候往往是先从某一个点切入,然后不断地接触和学习新的知识点,因此对于初学者很难理清楚整个体系的脉络结构。本文将对Web前端知识体系进行简单的梳理,对应的每个知识点点到为止,不作详细介绍。目的是帮助大家审查自己的知识结构是否完善,如有遗漏或不正确的地方,希望共勉。 一、JAVASCRIPT 篇 0、基础语法 Javascript 基础语法包括:变量声明、数据类型、函数、控制语句、内置对象等。 在ES5 中,变量声明有两种方式,分别是 var 和 function ,var 用于声明普通的变量,接收任意类型,function用于声明函数。另外,ES6 新增了 let、const、import 和 class 等四个命令,分别用以声明 普通变量、静态变量、模块 和 类 。 JS数据类型共有六种,分别是 String、Number、Boolean、Null、Undefined 和 Object 等, 另外,ES6新增了 Symbol 类型。其中,Object 是引用类型,其他的都是原始类型

杉岩数据对象存储替换IBM FileNet,突破性能瓶颈

半腔热情 提交于 2019-12-24 00:05:45
近年来随着非结构化数据的爆发性增长,由于IBM FileNet系统架构问题出现了明显性能瓶颈,杉岩海量对象存储系统(SandStone MOS)采用全分布式架构,针对海量文件场景提供可线性扩展的持续快速访问性能,同时提供全方位的海量数据保护支持和数据生命周期管理功能,能够完美替代IBM FileNet。 非结构化数据的爆炸式增长,使有价值的信息散落在各个“孤岛”。这些非结构化信息包括办公文档、视频影像与音频、HTML网页、电子邮件、文本、报表等等,这些信息通常被放在企业的数据库、文件系统、网站以及门户等等IT系统中。 企业运营中所使用的数据,80%以上是非结构的,它的增长率甚至是结构化数据的两倍。这些数据来自于每天拥有两千亿往来的电子邮件,再加上影像、办公文档、音视频文件等等,可见是海量数据。若能够有效利用海量数据,我们便可提早发现问题,提升对客户的服务,降低作业成本,能够发掘新的收益机会。杉岩数据谈到,“我们做了一个医疗界客户的POC(为观点提供证据),我们用SandStone MOS分析五千个病人的记录,其中一个项目是找病人抽烟的习惯判断他得心脏病的风险性。从有结构式的数据中,有35%的记录中找到了抽烟指标;在文本数据中从81%的数据找到抽烟指标,并且准确度高了很多。所以若只对来源数据进行分析也许会错过一些很重要的洞察。” “企业内容分析的数据对象正在发生变化

Python变量

╄→гoц情女王★ 提交于 2019-12-23 19:07:57
1.变量的定义 变量就是一个存储数据的 内存空间对象 。定义一个变量,即向内存申请一个带地址的访问空间对象, 用来存储数据,通过变量名找到( 指向) 这个值。例如定义一个变量a,a = 1 2.变量的命名规则 1.变量名只能包括 字母 、 数字 和 下划线 。变量名 不能以数字开头 。 2.变量名 不能包括空格 ,可以使用下划线来分隔多个单词。 3.不能使用python保留的 关键字 及 内置函数名 作变量名,例如,用print作变量名是不允许的。 4.变量名要尽量 简短及具描述性 ,尽量做到短小精悍,见名知义。 5.python中变量名是 区分大小写 的,例如,Name和name是两个不同的变量名。 查看python的关键字: 3.变量的赋值 在python当中定义一个变量很简单,由于 python是一种动态类型语言,定义一个变量 不需要声明变量类型 ,直接给变量赋值就相当于定义一个变量了, 变量类型取决于值的类型 。注意,如果只写一个变量,没有赋值,那么python认为这个变量没有定义。 例如, >>>name = "Tom" 表示定义一个变量名为name的变量,变量值为"Tom",变量类型为字符串。 同时定义多个变量,变量名与值用逗号隔开,一一对应。 互相交换两个变量的值(变量1,变量2 = 变量2,变量1) 值本身就有类型,不需要声明变量名类型,查看类型用内置函数 type

几百万数据放入内存不会把系统撑爆吗?

妖精的绣舞 提交于 2019-12-23 18:34:25
在公司有一个需求是要核对一批数据,之前的做法是直接用SQL各种复杂操作给怼出来的,不仅时间慢,而且后期也不好维护,就算原作者来了过一个月估计也忘了SQL什么意思了,于是有一次我就想着问一下之前做这个需求的人为什么不将这些数据查出来后在内存里面做筛选呢?直接说了你不怕把内存给撑爆吗?此核算服务器是单独的服务器,配置是四核八G的,配置堆的大小是4G。本着怀疑的精神,就想要弄清楚几百万条数据真的放入内存的话会占用多少内存呢? 计算机的存储单位 计算机的存储单位常用的有bit、Byte、KB、MB、GB、TB后面还有但是我们基本上用不上就不说了,我们经常将bit称之为比特或者位、将Byte简称为B或者字节,将KB简称为K,将MB称之为M或者兆,将GB简称为G。那么他们的换算单位是怎样的呢? 换算关系 首先我们得知道在计算机中所有数据都是由0 1来组成的,那么存储0 1这些二进制数据是由什么存放呢?就是由bit存放的,一个bit存放一位二进制数字。所以bit是计算机最小的单位。 大部分计算机目前都是使用8位的块,就是我们上面称之为的字节Byte,来作为计算机容量的基本单位。所以我们一般称一个字符或者一个数字都是称之为占用了多少字节。 了解了上面关于位和字节的关系后,我们可以看一下其他的单位换算关系 11B(Byte 字节) = 8bit(位) 21KB = 1024B 31MB =