key

collections模块整理

前提是你 提交于 2020-04-04 02:06:17
collections是Python内建的一个集合模块,提供了许多有用的集合类。 namedtuple 我们知道 tuple 可以表示不变集合,例如,一个点的二维坐标就可以表示成: >>> p = (1, 2) 但是,看到 (1, 2) ,很难看出这个 tuple 是用来表示一个坐标的。 定义一个class又小题大做了,这时, namedtuple 就派上了用场: >>> from collections import namedtuple >>> Point = namedtuple('Point', ['x', 'y']) >>> p = Point(1, 2) >>> p.x 1 >>> p.y 2 namedtuple 是一个函数,它用来创建一个自定义的 tuple 对象,并且规定了 tuple 元素的个数,并可以用属性而不是索引来引用 tuple 的某个元素。 这样一来,我们用 namedtuple 可以很方便地定义一种数据类型,它具备tuple的不变性,又可以根据属性来引用,使用十分方便。 可以验证创建的 Point 对象是 tuple 的一种子类: >>> isinstance(p, Point) True >>> isinstance(p, tuple) True 类似的,如果要用坐标和半径表示一个圆,也可以用 namedtuple 定义: # namedtuple

java.util.Map

五迷三道 提交于 2020-04-03 10:20:09
map时key/value形式存储信息的,键可以为对象null public static void main(String[] args) { Map<String, String> map = new HashMap<String, String>(); map.put("hello", "world"); map.put(null, "HelloWorld"); System.out.println(map); System.out.println(map.get(null)); System.out.println("-----"); for (String key : map.keySet()) { System.out.println(key+":"+map.get(key)); } } 结果输出: 在http的响应中状态栏的key 就是 对象null 来源: https://www.cnblogs.com/TheoryDance/p/5118849.html

RedidsTemplate

家住魔仙堡 提交于 2020-04-02 18:34:31
@Component public class RedisService { @Autowired private RedisTemplate<String, String> redisTemplate; /** * 默认过期时长,单位:秒 */ public static final long DEFAULT_EXPIRE = 60 * 60 * 24; /** * 不设置过期时长 */ public static final long NOT_EXPIRE = -1; public boolean existsKey(String key) { return redisTemplate.hasKey(key); } /** * 重名名key,如果newKey已经存在,则newKey的原值被覆盖 * * @param oldKey * @param newKey */ public void renameKey(String oldKey, String newKey) { redisTemplate.rename(oldKey, newKey); } /** * newKey不存在时才重命名 * * @param oldKey * @param newKey * @return 修改成功返回true */ public boolean renameKeyNotExist

redis笔记

蹲街弑〆低调 提交于 2020-03-31 14:17:33
set age 23 ex 10 : ex 持续时间 10秒 ttl age : 表示查看age的剩余时间 setnx : 已存在key则不插入,无则插入 例子:setnx name cys mset:批量插入,例子:mset name cys age 23 sex boy birthday 198904120018 mget :查询 例子:mget birthday 结果 198904120018 incr num :创建一个值为1,key为num的数据,每执行一次就加1 decr num2: 创建一个值为-1,key为num2的数据,每执行一次就减1 incrby num3 3: 创建一个值为3,key为num3的数据,每执行一次就加3 decrby num4 4: 创建一个值为-4,key为num4的数据,每执行一次就减4 incrbyfloat score 1.1 : 创建一个值为1.1,key为score的数据,每执行一次就减1.1 append:后面追加拼接 例子,set string cys,然后append string nameis ,结果是cysnameis 哈希 hmset:例子 hmset user name cys age 31 存入键名为user,name=cys age=31 hmget: hmset user name ,结果 cys =======

查询set、dict、dict.keys()的速度对比

混江龙づ霸主 提交于 2020-03-31 03:20:37
查找效率:set>dict>list 单次查询中: list set dict O(n) set做了去重, 本质应该一颗红黑树 (猜测,STL就是红黑树), 复杂度 O(logn); dict类似对key进行了hash,然后再对hash生成一个红黑树进行查找, 其查找复杂其实是O(logn),并不是所谓的O(1)。 O(1)只是理想的实现, 实际上很多hash的实现是进行了离散化的。 dict比set多了一步hash的 过程,so 它比set慢,不过差别不大。 那么为什么dict.keys()查询速度比另外dict,set慢很多呢?这就要对比list、dict、set三种的数据结构了。 [1]dict.keys()实际上是list(keys),是dict的所有key组成的list。查找一个元素是否在list中是以list的下标为索引遍历list. [2]而查询是否在dict中,是将key以hash值的形式直接找到key对应的索引,根据索引可直接访问value。对量大的dict查询,自然是后者快很多。 [3]而set和dict的存储原理基本是一样的,唯一不同的是,set没有value,只有key。对查询key是否在dict或sset内,效果基本上是一样的。 由此,可以得出,如果存储的数据会被反复查询,且量大,那么, 尽量不要用list,尽量用dict,如果元素不重复,用set更好。

10.map

耗尽温柔 提交于 2020-03-30 10:12:53
map Go语言中提供的映射关系容器为 map ,其内部使用 散列表(hash) 实现 。 map是一种无序的基于 key-value 的数据结构,Go语言中的map是引用类型,必须初始化才能使用。 map定义 Go语言中 map 的定义语法如下: map[KeyType]ValueType 其中, KeyType:表示键的类型。 ValueType:表示键对应的值的类型。 map类型的变量默认初始值为nil,需要使用make()函数来分配内存。语法为: make(map[KeyType]ValueType, [cap]) 其中cap表示map的容量,该参数虽然不是必须的,但是我们应该在初始化map的时候就为其指定一个合适的容量。 map基本使用 map中的数据都是成对出现的,map的基本使用示例代码如下: func main() { scoreMap := make(map[string]int, 8) scoreMap["张三"] = 90 scoreMap["小明"] = 100 fmt.Println(scoreMap) fmt.Println(scoreMap["小明"]) fmt.Printf("type of a:%T\n", scoreMap) } 输出: map[小明:100 张三:90] 100 type of a:map[string]int

collections模块(收藏)

若如初见. 提交于 2020-03-30 07:54:30
collections是Python内建的一个集合模块,提供了许多有用的集合类。 1. namedtuple 我们知道 tuple 可以表示不变集合,例如,一个点的二维坐标就可以表示成: >>> p = (1, 2) 但是,看到 (1, 2) ,很难看出这个 tuple 是用来表示一个坐标的。 定义一个class又小题大做了,这时, namedtuple 就派上了用场: >>> from collections import namedtuple >>> Point = namedtuple('Point', ['x', 'y']) >>> p = Point(1, 2) >>> p.x 1 >>> p.y 2 namedtuple 是一个函数,它用来创建一个自定义的 tuple 对象,并且规定了 tuple 元素的个数,并可以用属性而不是索引来引用 tuple 的某个元素。 这样一来,我们用 namedtuple 可以很方便地定义一种数据类型,它具备tuple的不变性,又可以根据属性来引用,使用十分方便。 可以验证创建的 Point 对象是 tuple 的一种子类: >>> isinstance(p, Point) True >>> isinstance(p, tuple) True 类似的,如果要用坐标和半径表示一个圆,也可以用 namedtuple 定义: #

redis 基本命令

╄→гoц情女王★ 提交于 2020-03-29 02:19:04
一、key pattern 查询相应的key   (1)redis允许模糊查询key  有3个通配符 *、?、[]   (2)randomkey:返回随机key     (3)type key:返回key存储的类型   (4)exists key:判断某个key是否存在   (5)del key:删除key   (6)rename key newkey:改名   (7)renamenx key newkey:如果newkey不存在则修改成功   (8)move key 1:将key移动到1数据库   (9)ttl key:查询key的生命周期(秒)   (10)expire key 整数值:设置key的生命周期以秒为单位   (11)pexpire key 整数值:设置key的生命周期以毫秒为单位   (12)pttl key:查询key 的生命周期(毫秒)   (13)perisist key:把指定key设置为永久有效 二、字符串类型的操作   (1)set key value [ex 秒数] [px 毫秒数] [nx/xx]         如果ex和px同时写,则以后面的有效期为准       nx:如果key不存在则建立       xx:如果key存在则修改其值   (2)get key:取值   (3)mset key1 value1 key2 value2

2.ASP.NET HttpRuntime.Cache缓存类使用总结

我的未来我决定 提交于 2020-03-28 23:27:36
   1.高性能文件缓存key-value存储—Redis    2.ASP.NET HttpRuntime.Cache缓存类使用总结   备注:三篇博文结合阅读,简单理解并且使用,如果想深入学习,请多参考文章中给出的博文地址。 1.前言    a.Memcached是一个高性能的分布式缓存系统,用于Web应用减轻数据库负载,它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高网站的访问速度。   b.Memcached是一个给予存储键/值对的HashMap,底层使用C语言完成,但是客户端可以使用任何语言来编写(Java,.NET,PHP).   c.Memcached中的数据都是存储在memcached内置的内存存储空间中,由于数据仅存在于内存中,因此当某个服务器停止运行或者出现问题之后,所有存放在服务器上的键/值对都会丢失。   d.下面这幅图可以说明Memcached的工作过程,当首次访问系统的时候,系统从数据库中取得数据保存到Memcached中,在第二次访问的时候则直接从Memcached中读取出来需要的值信息。        e.Memcached的特征      Memcached作为高速运行的分布式缓存服务器,具有以下的特点:      e.1:协议简单(客户端通信并不是使用复杂的XML格式,而是使用简单的基于文本行的协议)     e.2

RedisTemplate Redis 操作

自闭症网瘾萝莉.ら 提交于 2020-03-28 13:38:14
stringRedisTemplate.opsForValue().set( "test", "100", 60* 10,TimeUnit.SECONDS); //向redis里存入数据和设置缓存时间 stringRedisTemplate.boundValueOps( "test").increment(- 1); //val做-1操作 stringRedisTemplate.opsForValue().get( "test") //根据key获取缓存中的val stringRedisTemplate.boundValueOps( "test").increment( 1); //val +1 stringRedisTemplate.getExpire( "test") //根据key获取过期时间 stringRedisTemplate.getExpire( "test",TimeUnit.SECONDS) //根据key获取过期时间并换算成指定单位 stringRedisTemplate.delete( "test"); //根据key删除缓存 stringRedisTemplate.hasKey( "546545"); //检查key是否存在,返回boolean值 stringRedisTemplate.opsForSet().add( "red_123", "1", "2"