集合运算

分布式缓存 — MongoDB

笑着哭i 提交于 2020-03-14 07:39:22
--- 数据库管理系统 数据库管理系统主要分为俩大类:RDBMS、NOSQL。在个人电脑、大型计算机和主机上应用最广泛的数据库管理系统是关系型DBMS。NoSQL是对不同于传统的关系数据库的数据库管理系统的统称。 两者最重要的不同点是NoSQL不使用SQL作为查询语言。其数据存储可以不需要固定的表格模式,也经常会避免使用SQL的JOIN操作,一般有水平可扩展性的特征。 常见的数据库管理系统,及其排名情况如下: NoSQL数据库四大家族 NoSQL中的四大家族主要是:列存储、键值、图像存储、文档存储,其类型产品主要有以下这些。 存储类型 NoSQL 键值存储 最终一致性键值存储 Cassandra、Dynamo、Riak、Hibari、Virtuoso、Voldemort 内存键值存储 Memcached、Redis、Oracle Coherence、NCache、Hazelcast、Tuple space、Velocity 持久化键值存储 BigTable、LevelDB、Tokyo Cabinet、Tarantool、TreapDB、Tuple space 文档存储 MongoDB、CouchDB、SimpleDB、 Terrastore 、 BaseX 、Clusterpoint 、 Riak、No2DB 图存储 FlockDB、DEX、Neo4J、AllegroGraph

代码块.深浅copy is与==的区别

会有一股神秘感。 提交于 2020-03-13 12:38:49
具体内容 is == 以及id的用法 1. == 比较的是两边的值是否相等 2. is 判断的内存地址是否相同 3. id 相同,值一定相同 4. 值 相同,id不一定相同 代码块 1. 我们所有的代码都需要依赖于代码块执行. 2. 一个文件就是一个代码块. 3. 交互式命令下一行就是一个代码块. 两个机制 1. 同一代码块下有个一个机制. + 机制内容 pass + 目的(优点):节约内存,提升性能. + 适用的对象:int,bool,str + 具体细则:所有的数字,bool,几乎所有的字符串 2. 不同代码块下,遵循另一个机制(小数据池) + 机制内容 pass + 目的(优点):节约内存,提升性能 + 适用的对象:int,bool,str + 具体细则:-5~256的数字,bool,满足规则的字符串 总结: 1. 面试题考 2. 回答的时候一定要分清楚:同一代码块下使用一个缓存机制,不同的代码块下使用另一个缓存机制(小数据池) 3. 小数据池:数字的范围-5~256 4. 缓存机制的优点:提升性能,节约内存. python基础数据类型:集合set(了解) 容器型的数据类型,它要求里面的元素的是不可变的元素但是它本身是可变的数据类型.集合是无序.{} 集合的作用 列表的去重 关系测试: 交集,并集,差级.... 空集合 set() {} 是空字典不是空集合 集合的增,删,查

十、集合与其内置方法

假装没事ソ 提交于 2020-03-12 19:52:40
一、集合类型 1.作用:也是用来存多个值,但是集合主要用于:去重、关系运算 2.定义:在{}内用逗号分隔开多个元素,多个元素满足以下三个条件 1.集合元素必须为不可变类型 2.集合内元素无序 3.集合内元素没有重复 s={1,2,3,4} #本质 s=set({1,2,3,4}) s={} #默认为空字典 定义空集合 s=set() 3.类型转换 s=set([1,2,3,4]) #转换列表 print(s) #打印结果为 {1, 2, 3, 4} s=set((5,6,7,8]) #转换元组 print(s) #打印结果为 {5, 6, 7,8} s=set({'name':'malin'}) #转换字典 print(s) #打印结果为 {'name'} s=set('malin') #转换字符串 print(s) #打印结果为 {'m','a','l','i','n'} 关系运算 4、内置方法 friends1={'egon','malin','a','b'} #定义两个集合一个用户一的朋友们 friends2={'egon','malin','c','d'} #一个用户二的朋友们 4.1取交集:两者共同的好友(有用 $ 或 .intersection()两种方式) print(friends1 & friends2) #第一种方式 print(friends1

集合 字符编码

て烟熏妆下的殇ゞ 提交于 2020-03-12 13:45:08
一.集合 一)作用:集合 list tuple dict一样都可以存放多个值,但实际和主要用于:去重 关系运算 二)定义:在{}内用逗号分隔开多个元素,集合具备以下三个特点: 1:每个元素必须是不可变类型 2:集合内没有重复的元素 3:集合内元素无序 1 s = {1,2,3,4} # 本质 s = set({1,2,3,4}) # 注意1:列表类型是索引对应值,字典是key对应值,均可以取得单个指定的值,而集合类型既没有索引也没有key与值对应,所以无法取得单个的值,而且对于集合来说,主要用于去重与关系元素,根本没有取出单个指定值这种需求。 # 注意2:{}既可以用于定义dict,也可以用于定义集合,但是字典内的元素必须是key:value的格式,现在我们想定义一个空字典和空集合,该如何准确去定义两者? d = {} # 默认是空字典 s = set() # 这才是定义空集合 三)类型转换: 但凡能被for循环的遍历的数据类型(强调:遍历出的每一个值都必须为不可变类型)都可以传给set()转换成集合类型 1 >>> s = set([1,2,3,4]) 2 >>> s1 = set((1,2,3,4)) 3 >>> s2 = set({'name':'jason',}) 4 >>> s3 = set('egon') 5 >>> s,s1,s2,s3 6 {1, 2, 3, 4}

20200311——java面试集合 深入HashMap 二

扶醉桌前 提交于 2020-03-12 03:53:43
ArrayList、Vector、LinkedList的存储性能和特性 ArrayList 和Vector都是使用数组方式存储数据 ,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector中的方法由于添加了synchronized修饰,因此Vector是线程安全的容器,但性能上较ArrayList差,因此已经是Java中的遗留容器。 LinkedList使用 双向链表 实现存储(将内存中零散的内存单元通过附加的引用关联起来,形成一个可以按序号索引的线性结构,这种链式存储方式与数组的连续存储方式相比,内存的利用率更高), 按序号索引数据需要进行前向或后向遍历 ,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。 TreeMap的底层实现 TreeMap 的实现就是红黑树数据结构,也就说是一棵自平衡的排序二叉树,这样就可以保证当需要快速检索指定节点。 红黑树的插入、删除、遍历时间复杂度都为O(lgN),所以性能上低于哈希表。但是哈希表无法提供键值对的有序输出,红黑树因为是排序插入的,可以按照键的值的大小有序输出。红黑树性质: 性质1:每个节点要么是红色,要么是黑色。 性质2:根节点永远是黑色的。 性质3:所有的叶节点都是空节点(即 null),并且是黑色的。 性质4

编译原理——正规式转DFA算法概述

让人想犯罪 __ 提交于 2020-03-11 19:05:21
一、概念概述 给定一个单词,判断该单词是否满足我们给定的单词描述规则,需要用到编译原理中词法分析的相关知识,其中涉及到的两个很重要的概念就是正规式(Regular Expression)和有穷自动机(Finite Automata)。正规式是描述单词规则的工具,首先要明确的一点是所有单词组成的是一个无穷的集合,而正规式正是描述这种无穷集合的一个工具;有穷自动机则是识别正规式的一个有效的工具,它分为确定的有穷自动机(Deterministic Finite Automata,DFA)和不确定的有穷自动机(Nondeterministic Finite Automata,NFA)。对于任意的一个单词,将其输入正规式的初始状态,自动机每次读入一个字母,根据单词的字母进行自动机中状态的转换,若其能够准确的到达自动机的终止状态,就说明该单词能够被自动机识别,也就满足了正规式所定义的规则。而DFA与NFA之间的差异就是对于某一个状态S,输入一个字符a,DFA能够到达的下一个状态有且仅有一个,即为确定的概念,而NFA所能到达的状态个数大于或等于一个,即不确定的概念。因为NFA为不确定的,我们无法准确的判断下一个状态是哪一个,因此识别一个正规式的最好的方式是DFA。那么,如何为一个正规式构造DFA就成了主要矛盾,解决了这个问题,词法分析器就已经构造完成。从正规式到DFA需要通过两个过程来完成:  

Python笔记-集合,拷贝

家住魔仙堡 提交于 2020-03-09 21:58:19
对于列表,元组,集合的异同,有如下解释 #list ----> 允许重复的集合,修改# tuple ----> 允许重复的集合,不修改# set ----> 不允许重复的集合下面是示例代码: 1 s1 = set() 2 s2 = {1,2,3,4} 3 s3 = set([11,22,33,44]) 4 s4 = {3,4,5,6,89} 5 print type(s2) #<type 'set'> 6 s1.add(44) 7 print s1 #set([44]) 8 s1.clear() 9 print s1 #set([]) 10 print s2.difference(s4) #set([1, 2]) (s1中存在,s2中不存在的) 11 12 print s2 #set([1, 2, 3, 4]) 13 diff = s2.difference_update(s4) 14 print s2 # s1中存在,s2中不存在的,更新s1, set([1, 2]) 15 print diff 16 17 s3.discard(44) 18 print s3 19 s3.discard(55) #要移除的元素不存在时,不报错 20 print s3 21 s3.remove(66) #要移除的元素不存在时,报错 22 23 s5 = {77,88,99} 24 s6 = {88

MongoDB初识

不羁的心 提交于 2020-03-09 12:32:05
什么是MongoDB MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。 在高负载的情况下,添加更多的节点,可以保证服务器性能。 MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。 主要特点 MongoDB的提供了一个面向文档存储,操作起来比较简单和容易。 你可以在MongoDB记录中设置任何属性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road")来实现更快的排序。 你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。 如果负载的增加(需要更多的存储空间和更强的处理能力) ,它可以分布在计算机网络中的其他节点上这就是所谓的分片。 Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。 MongoDb 使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段 。 Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作。 Map和Reduce。Map函数调用emit(key,value)遍历集合中所有的记录

redis语法与命令

给你一囗甜甜゛ 提交于 2020-03-08 19:04:36
一、简述 Redis支持的键值类型有:String字符类型、map散列类型、list列表类型、set集合类型、sortedset有序集合类型。接下来对这些键值类型在使用上进行总结,并介绍下Keys命令,虽然语法简单,但由于数量过多,还需要我们多多实践。 二、String字符类型 1、赋值 语法:SET key value 127.0.0.1:6379> set test 123 OK 2、取值 语法:GET key 127.0.0.1:6379> get test "123“ 3、取值并赋值 语法:GETSET key value 127.0.0.1:6379> getset s2 222 "111" 127.0.0.1:6379> get s2 "222" 4、设置/获取多个键值 语法: MSET key value [key value …] MGET key [key …] 127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3 OK 127.0.0.1:6379> get k1 "v1" 127.0.0.1:6379> mget k1 k3 1) "v1" 2) "v3" 5、删除 语法:DEL key 127.0.0.1:6379> del test (integer) 1 6、数值增减 a. 递增数字 当存储的字符串是整数时

Springboot中使用Redis

巧了我就是萌 提交于 2020-03-08 15:05:04
一、Springboot配置Redis pom.xml文件需要的依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <!--<version>2.1.4.RELEASE</version>--> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> </dependency> 注意 : 1. 是spring-boot-starter-data-reds; 2. 因为Springboot 2.0 中redis客户端使用了Lettue, 其依赖于commons, 所以加入以上(似乎Jedis依然可以使用.) redis服务 : 下载redis的Windows版本, 官网是Linux版本, Windows版由微软在github上维护, 可前往下载, 压缩包解压之后, 点击redis-server.exe开启本地redis服务, 端口号6379. 可使用redisclient客户端查看数据库 二、application.properties配置 ##