对象存储

集合(一)

微笑、不失礼 提交于 2019-11-28 18:58:45
备注:若有不正之处,请多谅解并欢迎批评指正。转载请标明链接: https://www.cnblogs.com/pmbb/p/11421506.html 1. 集合的概念和作用 集合类存放于java.util包中。 集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(reference)。 集合类型主要有3种:set(集)、list(列表)和map(映射)。 集合接口分为:Collection和Map,list、set实现了Collection接口 集合和数组的区别 数组不是面向对象的,存在明显的缺陷,集合弥补了数组的缺点,比数组更灵活更实用,而且不同的集合框架类可适用不同场合。如下: 1:数组能存放基本数据类型和对象,而集合类存放的都是对象的引用,而非对象本身! 2:数组容易固定无法动态改变,集合类容量动态改变。 3:数组无法判断其中实际存有多少元素,length只告诉了数组的容量,而集合的size()可以确切知道元素的个数 4:集合有多种实现方式和不同适用场合,不像数组仅采用顺序表方式 5:集合以类的形式存在,具有封装、继承、多态等类的特性,通过简单的方法和属性即可实现各种复杂操作,大大提高了软件的开发效率 此图可用 Windows 系统自带画图工具查看比较清晰 Collection 和 Map ,是集合框架的根接口。

【Scrapy框架持久化存储】

回眸只為那壹抹淺笑 提交于 2019-11-28 17:47:05
原文: http://blog.gqylpy.com/gqy/363 基于终端指令的持久化存储 前提:保证爬虫文件中的 parse 方法的返回值为可迭代数据类型(通常为list/dict)。 该返回值可以通过终端指令的形式写入指定格式的文件中进行持久化存储。 执行如下命令进行持久化存储: scrapy crawl 应用名称 -o xx.文件格式 其支持的文件格式有: 'json', 'jsonlines', 'jl', 'csv', 'xml', 'marshal', 'pickle' 基于管道的持久化存储 Scrapy框架为我们提供了高效、便捷的持久化操作功能,我们直接使用即可。 在使用之前,我们先来认识下这两个文件: items.py : 数据结构模板文件,用于定义数据属性。 pipelines.py : 管道文件,接收数据(items),进行持久化操作。 ---------------------------↓ 持久化流程: 应用文件爬取到数据后,将数据封装到 items 对象中。 使用 yield 关键字将 items 对象提交给 pipelines 管道进行持久化操作。 在管道文件中的类中的 process_item 方法接收爬虫文件提交过来的 item 对象, 然后编写持久化存储的代码将 item 对象中存储的数据进行持久化存储。 注意: 在 settings.py

深入了解浏览器存储:对比Cookie、LocalStorage、sessionStorage与IndexedDB(转)

假如想象 提交于 2019-11-28 15:23:48
前言 随着移动网络的发展与演化,我们手机上现在除了有原生 App,还能跑“WebApp”——它即开即用,用完即走。一个优秀的 WebApp 甚至可以拥有和原生 App 媲美的功能和体验。WebApp 优异的性能表现,有一部分原因要归功于浏览器存储技术的提升。cookie存储数据的功能已经很难满足开发所需,逐渐被WebStorage、IndexedDB所取代,本文将介绍这几种存储方式的差异和优缺点。 想阅读更多优质文章请猛戳 GitHub博客 一、Cookie 1. Cookie的来源 Cookie 的本职工作并非本地存储,而是“维持状态”。 因为HTTP协议是无状态的,HTTP协议自身不对请求和响应之间的通信状态进行保存,通俗来说,服务器不知道用户上一次做了什么,这严重阻碍了交互式Web应用程序的实现。在典型的网上购物场景中,用户浏览了几个页面,买了一盒饼干和两瓶饮料。最后结帐时,由于HTTP的无状态性,不通过额外的手段,服务器并不知道用户到底买了什么,于是就诞生了Cookie。它就是用来绕开HTTP的无状态性的“额外手段”之一。服务器可以设置或读取Cookies中包含信息,借此维护用户跟服务器会话中的状态。 我们可以把Cookie 理解为一个存储在浏览器里的一个小小的文本文件,它附着在 HTTP 请求上,在浏览器和服务器之间“飞来飞去”。它可以携带用户信息,当服务器检查

《听说史上最全挺好用的》-java集合面试知识大全

余生长醉 提交于 2019-11-28 14:08:59
欢迎关注这一文章系列,一起学习 提升能力,涨薪可待 面试知识,工作可待 实战演练,拒绝996 也欢迎关注公 众 号【 Ccww笔记 】,原创技术文章第一时间推出 如果此文对你有帮助、喜欢的话,那就点个赞呗,点个关注呗! 一、集合基础 1.1 集合框架有哪些优点如下: 使用核心集合类降低开发成本,而非实现我们自己的集合类。 随着使用经过严格测试的集合框架类,代码质量会得到提高。 通过使用 JDK 附带的集合类,可以降低代码维护成本。 复用性和可操作性。 1.2 Java集合类框架的基本接口有哪些? Java 集合类提供了一套设计良好的支持对一组对象进行操作的接口和类。Java集合类里面最基本的接口有: Collection:代表一组对象,每一个对象都是它的子元素。 Set:不包含重复元素的 Collection。 List:有顺序的 collection,并且可以包含重复元素。 Map:可以把键(key)映射到值(value)的对象,键不能重复。 还有其它接口 Queue、Dequeue、SortedSet、SortedMap 和 ListIterator。 1.3 为什么集合类没有实现 Cloneable 和 Serializable 接口? 集合类接口指定了一组叫做元素的对象。集合类接口的每一种具体的实现类都可以选择以它自己的方式对元素进行保存和排序,可以使得集合类很灵活

Java集合详解

会有一股神秘感。 提交于 2019-11-28 13:50: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:双向链表实现,增删快,查询慢 (线程不安全) Vector:数组实现,重量级 (线程安全

【Scrapy框架持久化存储】

我的未来我决定 提交于 2019-11-28 10:32:59
原文: http://blog.gqylpy.com/gqy/363 基于终端指令的持久化存储 前提:保证爬虫文件中的 parse 方法的返回值为可迭代数据类型(通常为list/dict)。 该返回值可以通过终端指令的形式写入指定格式的文件中进行持久化存储。 执行如下命令进行持久化存储: scrapy crawl 应用名称 -o xx.文件格式 其支持的文件格式有: 'json', 'jsonlines', 'jl', 'csv', 'xml', 'marshal', 'pickle' 基于管道的持久化存储 Scrapy框架为我们提供了高效、便捷的持久化操作功能,我们直接使用即可。 在使用之前,我们先来认识下这两个文件: items.py : 数据结构模板文件,用于定义数据属性。 pipelines.py : 管道文件,接收数据(items),进行持久化操作。 ---------------------------↓ 持久化流程: 应用文件爬取到数据后,将数据封装到 items 对象中。 使用 yield 关键字将 items 对象提交给 pipelines 管道进行持久化操作。 在管道文件中的类中的 process_item 方法接收爬虫文件提交过来的 item 对象, 然后编写持久化存储的代码将 item 对象中存储的数据进行持久化存储。 注意: 在 settings.py

kubernetes基础

北城以北 提交于 2019-11-28 08:34:14
发展历史 Kubernetes是Google在2014年6月开源的一个容器集群管理系统,使用Go语言开发,Kubernetes也叫K8S。 K8S是Google内部一个叫Borg的容器集群管理系统衍生出来的,Borg已经在Google大规模生产运行十年之久。 K8S主要用于自动化部署、扩展和管理容器应用,提供了资源调度、部署管理、服务发现、扩容缩容、监控等一整套功能。 2015年7月,Kubernetes v1.0正式发布,截止到2018年1月27日最新稳定版本是v1.9.2。Kubernetes目标是让部署容器化应用简单高效。 官方网站:www.kubernetes.io 主要功能 数据卷 Pod中容器之间共享数据,可以使用数据卷。 应用程序健康检查 容器内服务可能进程堵塞无法处理请求,可以设置监控检查策略保证应用健壮性。 复制应用程序实例 控制器维护着Pod副本数量,保证一个Pod或一组同类的Pod数量始终可用。 弹性伸缩 根据设定的指标(CPU利用率)自动缩放Pod副本数。 服务发现 使用环境变量或DNS服务插件保证容器中程序发现Pod入口访问地址。 负载均衡 一组Pod副本分配一个私有的集群IP地址,负载均衡转发请求到后端容器。在集群内部其他Pod可通过这个ClusterIP访问应用。 滚动更新 更新服务不中断,一次更新一个Pod,而不是同时删除整个服务。 服务编排

C++软件开发面试题总结

落爺英雄遲暮 提交于 2019-11-28 07:34:53
  面试题有难有易,不能因为容易,我们就轻视,更不能因为难,我们就放弃。我们面对高薪就业的态度永远不变,那就是坚持、坚持、再坚持。出现问题,找原因;遇到困难,想办法。我们一直坚信只有在坚持中才能看到希望,而不是看到希望才去坚持。   人生没有如果,只有结果和后果。既然选择了,就不后悔。年轻就是资本,年轻就要吃苦,就要历练。就要学会在坚持中成长。如此感慨,至深的心得体会,绝对的经验之谈。 1、 Static有什么用途? (1)函数体内static变量的作用范围是该函数体,该变量的内存只被分配一次,因此它的值在下次调用时不变; (2)模块内的static全局变量同样只能在该模块内的函数访问和调用,不能被模块外的其他函数访问; (3)在类中的static成员变量属于整个类所有,对类的所有对象只有一份拷贝,这个函数不接受this指针,因为只能范围类的static成员函数。 2、 const (1)不管在函数声明修饰形参、还是修饰类的成员变量,表示该成员变量不能被改变,而且通常需要进行初始化,因为之后不能再改变; (2)对于指针来说,可以修饰指针所指向的变量(在*左边,即指针指向内容为常量),也可以指定指针本身为const(在*右边,指针本身是常量),或者两者同时指定为const(都是常量)。 3、 this指针 (1)this指针本质是一个函数参数,只是编译期隐藏起形式的,语法层面上的参数

redis存储对象

孤街醉人 提交于 2019-11-28 06:24:57
redis主要存储类型最常用的五种数据类型: String Hash List Set Sorted set redis存储对象序列化和反序列化 首先来了解一下为什么要实现序列化 为什么要实现序列化接口 当一个类实现了Serializable接口(该接口仅为标记接口,不包含任何方法定义),表示该类可以序列化.序列化的目的是将一个实现了Serializable接口的对象转换成一个字节序列,可以。 把该字节序列保存起来(例如:保存在一个文件里),以后可以随时将该字节序列恢复为原来的对象。甚至可以将该字节序列放到其他计算机上或者通过网络传输到其他计算机上恢复,只要该计 算机平台存在相应的类就可以正常恢复为原来的对象。 实现:要序列化一个对象,先要创建某些OutputStream对象,然后将其封装在一个ObjectOutputStream对象内,再调用writeObject()方法即可序列化一个对象;反序列化也类似。 注意:使用对象流写入到文件是不仅要保证该对象是序列化的,而且该对象的成员对象也必须是序列化的 关于Serializable接口的类中的serialVersionUID: serialVersionUID是long类型的。在Eclipse中有两种生成方式: 默认的是1L: private static final long serialVersionUID = 1L;

Set和Map

孤街浪徒 提交于 2019-11-28 06:23:29
Set接口和Map接口 回顾 1 集合概念,用来存储一组数据的容器。和数组类似, 数组是长度固定的,集合长度可以变化。 数组能存储基本类型和引用类型,集合只能存储引用类型。 2 Collection接口,父接口, add() remove() clear() contains() iterator() 3 Collection有两个子接口 List和Set Collection:特点:一部分是有序的,有一部分是无序的,还有一部分可以重复,有一部分不能重复 4 泛型:本质使用数据类型作为参数传递:好处:1提高代码的重用性 2 防止类型转换异常,保证数据的安全 4.1 定义泛型类 泛型方法 泛型接口 <>表示泛型 T是一个占位符,表示一个数据类型,只能是引用类型 public class Generic<T>{ T t; pubic void show(T t){ } public T getT(){ return t; } } public class Generic2{ public <T> void show(T t){ } } public interface Usb<T>{ } 4.2 使用 创建类对象,指定泛型的实际类型 4.3 泛型限制,<?> 表示任何类型 <? extends T> 表示泛型上限, T类型或T的子类 <? super T> 表示泛型下限