对象存储

Java 容器

风流意气都作罢 提交于 2019-11-27 21:23:18
List:   特点:List是有序、可重复的容器。 有序: List中每个元素都有索引标记。可以根据元素的索引标记(在List中的位置)访问元素,从而精确控制这些元素。 可重复: List允许加入重复的元素。更确切地讲,List通常允许满足 e1.equals(e2) 的元素重复加入容器。 1 ArrayList :ArrayList底层是用数组实现的存储。 特点:查询效率高,增删效率低,线程不安全。我们一般使用它。查看源码:      我们可以看出ArrayList底层使用Object数组来存储元素数据。所有的方法,都围绕这个核心的Object数组来开展。   我们知道,数组长度是有限的,而ArrayList是可以存放任意数量的对象,长度不受限制,那么它是怎么实现的呢?本质上就是通过定义新的更大的数组,将旧数组中的内容拷贝到新数组,来实现扩容。 ArrayList的Object数组初始化长度为10,如果我们存储满了这个数组,需要存储第11个对象,就会定义新的长度更大的数组,并将原数组内容和新的元素一起加入到新数组中,源码如下:    2 LinkedList: 底层用双向链表实现的存储。特点:查询效率低,增删效率高,线程不安全。   双向链表也叫双链表,是链表的一种,它的每个数据节点中都有两个指针,分别指向前一个节点和后一个节点。 所以,从双向链表中的任意一个节点开始

【Scrapy框架持久化存储】

江枫思渺然 提交于 2019-11-27 19:56:49
原文: 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

【Scrapy框架持久化存储】

China☆狼群 提交于 2019-11-27 19:18:35
原文: 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

Java容器(三)

邮差的信 提交于 2019-11-27 19:03:52
一,在Java中有普通集合、同步(线程安全)集合、并发集合。 普通集合通用性能最高,但是不保证多线程的安全性和并发的可靠性。 线程安全集合仅仅是给集合加了synchronized同步锁,严重牺牲了性能,而且对并发的效率就更低了。 并发集合则通过复杂的策略不仅保证了多线程的安全由提高了并发的效率 并发集合常见有ConcurrentHashMap、ConcurrentLinkedQueue、ConcurrentLinkedDeque,并发集合位于java.util.concurrent包下,是jdk1.5之后才有的 二,ConcurrentHashMap 是线程安全的 HashMap 的实现,默认构造同样有 initialCapacity 和 loadFactor 属性, 不过还多了一个 concurrencyLevel 属性,三属性默认值分别为 16、0.75 及 16。其内部使用锁分段技术,维持这锁 Segment 的数组,在 Segment 数组中又存放着 Entity[]数组,内部 hash 算法将数据较均匀分布在不同锁中。 put 操作: 并没有在此方法上加上 synchronized,首先对 key.hashcode 进行 hash 操作,得到 key 的 hash 值。 hash操作的算法和map也不同,根据此hash值计算并获取其对应的数组中的Segment对象

Java内存管理机制

时间秒杀一切 提交于 2019-11-27 16:56:12
对于从事 C/C++ 程序开发的开发人员来说,在内存管理领域,他们既是拥有最高权力的帝皇,又是从事最基础工作的劳动人民——既拥有每一个对象的“所有权”,又担负着每一个对象生命从开始到终结的维护责任。 对于 Java 程序员来说,在虚拟机的自动内存管理机制的帮助下,不在需要为每一个 new 操作去写配对的 delete/free 代码,而且不容易出现内存泄漏和内存溢出问题,看起来由虚拟机管理内存一切都很美好。不过也正是因为 Java 程序员把内存控制权交给了 Java 虚拟机,一旦出现内存泄漏和溢出的问题,如果不了解虚拟机怎样使用内存的,那排查错误将会成为一项异常艰难的工作。 1. 什么是 JVM? JVM(Java 虚拟机)是 Java Virtual Machine 的缩写,它是一个虚构出来的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。 JVM 有自己的硬件架构,如处理器、堆栈、寄存器等,还有对应分指令系统。 假如一个程序使用的内存区域是一个货架,那 JVM 就相当于是一个淘宝店铺,它不是真实存在的货架,但它和真实货架一样可以上架和下架商品,而且上架的商品数量也是有限的。 假如货架是在深圳,那 JVM 的平台无关性就相当于是客人可以在各个地方购买你在淘宝上发布的商品,不是只有在深圳才能购买货架上的商品。 2. 什么是 Java 内存模型? Java

静态变量和实例变量的区别

天大地大妈咪最大 提交于 2019-11-27 16:47:43
静态变量用static修饰,实例变量不用。 public class Person { static String position; String name; } 静态变量是随着类的字节码的加载而被加载进内存的,所以只要程序一启动运行到该类时就会被加载进内存,不管创建了多少个对象在内存中只存储一份。而实例变量是在创建对象以后才能被分配内存空间,创建对少个对象就会存储多少份。 静态变量被存储到内存的静态区,实例变量被存储到堆中。 静态变量是和类相关的,使用类名直接调用。实例变量是和对象相关的必须通过对象名调用。 public static void main(String[] args) { Person.position = "老师"; Person p = new Person(); p.name="老王" } 来源: https://blog.51cto.com/11583017/2430453

关于的字符串的总结:

和自甴很熟 提交于 2019-11-27 16:13:14
字符串: 群: ​ 群是一种只有一个运算的,简单的线性结构,可用来建立许多其他代数系统的一种基本结构. ​ 设G是一个非空集合,a,b,c为它的任意元素.如果对G所定义的一种代数运算"."满足: 封闭性:a.b属于G 结合律:(ab)c=a(bc) 对于G中的任意元素a,b在G中存在唯一一个元素x,y,使得ax=b,ya=b,则称G对于所定义的运算构成一个群. 满足交换律是交换群 子群: ​ 设H是群<G,.>的非空子集,则H是G的子群当且仅当H满足以下条件: 对任意的a,b属于H,a.b也是属于H,a^(-1)属于H; 对任意的a,b属于H,a.b^(-1)属于H; 任何群<G,.>有两个平凡子群:G和e,e是G的幺元. 1.字符串的实现: 1.1基本实现问题和技术: ​ 字符串是字符的线性序列,可以采用线性表的各种实现技术实现,用顺序表或者链接表的形式表示.不论如何表示,实现的基础都是基于顺序存储或链接存储. ​ 考虑字符串的表示时,有两个重要的方面必须确定: 字符串内容的存储(两个极端的存储方式) 1.把一个字符串的全部内容存储在一块连续存储区里 2.把串中的每个字符单独存入一个独立存储块,并将这些块连接在一起. 弊端: 连续存储需要很大的连续空间,极长的字符串可能会带来问题,而一个字符一块存储,需要附带链接域,增大存储开销.实际中可以采用某种中间方式

flask源码剖析--请求流程

一曲冷凌霜 提交于 2019-11-27 14:53:41
  想了解这篇里面的内容,请先去了解我另外一篇博客 Flask上下文      在了解flask之前,我们需要了解两个小知识点 偏函数 import functools def func(a1,a2): print(a1) print(a2) #重新封装成一个 给前面参数加默认值 的函数 new_func = functools.partial(func, 666) new_func(777) 面向对象 对象 + 会执行__add__方法 class Foo(object): def __init__(self, num): self.num = num def __add__(self, other): data = self.num + other.num return Foo(data) obj1 = Foo(11) obj2 = Foo(22) v = obj1 + obj2 print(v.num) 拼接列表中的值 from itertools import chain v1 = [11,22,33] v2 = [44,55,66] new = chain(v1, v2) for item in new: print(item) def f1(x): return x + 1 func1_list = [f1, lambda x:x-1] def f2(x):

ArcGIS——图层与数据

江枫思渺然 提交于 2019-11-27 14:03:28
该文章翻译至ArcGIS官网教程 Layers and data ,采用了Google翻译辅助,对不恰当的名称和语句做了修改。有能力的建议直接阅读英文原版。 1. 介绍 图层是可以在 Map 对象中使用的数据集合。可以在客户端上创建图层数据,由ArcGIS Online和ArcGIS Enterprise托管,或由外部服务器托管。 2. 数据——要素的集合 图层通常用于管理和显示大量 要素 。要素是地理位置或实体的记录。每个要素都包含为几何图形(点,折线或多边形)定义的 空间坐标 和存储其他信息的 属性字段 。这些要素集可以被认为是: 结构化 :如果每个要素具有相同的几何图形和相同属性的关键字 非结构化 :如果任何要素具有不同几何图形或不同属性的关键字 注意: 有时会说要素有模式,而几何图形没有模式。 使用一组要素时,一般的经验法则是: 如果是 结构化 用于 FeatureLayer 显示数据 如果 非结构化 用于 GraphicsLayer 显示数据 3. 核心图层的类型 ArcGIS JS API具有许多可用于访问和显示图层数据的图层类。所有类都继承自 Layer 。使用哪个类取决于数据的格式和数据的存储位置。不同的图层类型显示出不同的功能。 下面是最常见的图层类的列表。 Class Data Storage Capabilities FeatureLayer

谈MongoDB的应用场景

白昼怎懂夜的黑 提交于 2019-11-27 13:20:58
转载自:http://blog.csdn.net/adparking/article/details/38727911 MongoDB的应用场景在网上搜索了下,很少介绍关于传统的信息化应用中如何使用MongoDB数据库方面的内容,比较多的还是介绍日志的采集和存储,小文件的分布式存储,类似互联网微博应用的数据存储等方面的内容。在这里思考下传统企业信息化系统中的应用可行性。 首先对于NoSQL数据库,在数据库建模上需要重点考虑,彻底放弃传统的关系型数据库建模方法,如果将传统的关系型数据库表原封不动的映射到NoSQL数据库,很多NoSQL数据库本身的优点特性反而无用武之地。其中最重要的就是转化为面对对象的思维模式,更加关注领域对象和实体信息。MongoDB数据库的集合本身就是一个可以包罗万象的层次化的文档对象,集合本身还可以包含子集合,形成一个完整意义上的对象。 如果拿一个最简单的企业客户信息管理功能来说,可以看到首先要维护有哪些企业客户,企业客户的常用联系人,每个人的联系方式,企业相关的资料文档,企业的地址信息,企业的账户信息,争取企业的拜访记录等,这里讲的就是一个最简单的企业客户域的对象信息。 按道理来说企业信息就是一个完整的对象,企业附属对象都从属于企业这个对象,企业这个信息没有了其余附属对象信息的生命周期也就结束