键值

Java基本功:容器Map

百般思念 提交于 2019-11-28 15:08:37
原文引用 大专栏 https://www.dazhuanlan.com/2019/08/26/5d63503004632/ 目录 Map:一个键值(key)对应一个对象(value)的容器接口,并且没有排序 Map的三种遍历 Entry对象(键值对对象):在获得entrySet()返回的Set对象必须声明Entry类型,value> HashMap:哈希算法 ,同样需要实现HashCode()和equals()方法 TreeMap:和TreeSet类似,红黑树结构,同样进行排序(次序由存入TreeMap的类的compare()或compareTo()方法决定,也就是说装入TreeMap的类必须实现HashCode(),equals(),compare()三个方法),同时TreeMap还有一个subMap()用来返回子树。 Map:一个键值(key)对应一个对象(value)的容器接口,并且没有排序 Map的三种遍历 123456789101112131415161718192021222324252627 //遍历方式:由于Map没有提供iterator()函数,而是用keySet(),values()和entrySet()三个方法取代//方法一Collection<String> c=m.values();for(Iterator<String> it=c.iterator()

Redis入门-第二章 Redis的概述

对着背影说爱祢 提交于 2019-11-28 08:33:43
第二章 Redis的概述 用c语言开发的,开源的高性能的键值对的数据库,通过提供多种键值数据类型来适应不同场景下的存储需求。 支持的键值数据类型: 1.字符串类型 2.列表类型 3.有序集合类型 4.散列类型 5.集合类型 Resdis应用场景: 1.缓存:数据的查询、新闻或商品内容,把这些数据放入缓存 2.聊天室在线好友列表 3.任务队列:秒杀、抢购 4网站访问统计 5.数据过期处理(精确到毫秒) 6.应用排行榜 7.分布式集群架构中的session分离 来源: https://blog.csdn.net/sinat_27680127/article/details/100045262

Java中HashMap的实现原理

主宰稳场 提交于 2019-11-28 08:30:56
1、 什么是HashMap? 概念: map就是用于存储键值对(<key,value>)的集合类,也可以说是一组键值对的映射(数学概念) 有两个字段(或者说属性),keyset(键的集合)和values(值的集合),每一条记录都是一个entry(一个键值对)。 特点: 1、没有重复的key (一方面,key用set保存,所以key必须是唯一,无序的;另一方面,map的取值基本上是通过key来获取value,如果有两个相同的key,计算机将不知道到底获取哪个对应值;这时候有可能会问,那为什么我编程时候可以用put()方法传入两个key值相同的键值对?那是因为源码中,传入key值相同的键值对,将作为覆盖处理) 2.每个 key 只能对应一个 value, 多个 key 可以对应一个 value 3.key,value 都可以是任何引用类型(包括 null)的数据 关于哈希: 1、把任意长度的输入,通过一种函数(hashCode() 方法),变换成固定长度的输出,该输出就是哈希值(hashCode),这种函数就叫做哈希函数,而计算哈希值的过程就叫做哈希。 2、将key通过哈希算法计算出哈希值,把哈希值作为数组下标,把该下标对应的位置作为键值对的存储位置,通过该方法建立的数组就叫做哈希表,而这个存储位置就叫做桶(bucket)。 3、数组是通过整数下标直接访问元素

【Django】Session

淺唱寂寞╮ 提交于 2019-11-28 08:11:48
目录 介绍 Django中操作Session 原文: http://blog.gqylpy.com/gqy/266 @ 介绍 Cookie虽然在一定程度上解决了"保持状态"的需求,但是由于Cookie本身最大支持4096字节,以及Cookie本身保存在客户端,可能被拦截或窃取,因此就需要有一种新的东西,它能支持更多的字节,并且它保存在服务器,有较高的安全性。这就是Session. 问题来了,基于HTTP协议的无状态特征,服务器根本就不知道访问者是"谁",因此上述的Cookie就起到了桥接的作用. 我们可以给每个客户端的Cookie分配一个唯一的id,这样用户在访问时,通过Cookie,服务器就知道来的人是"谁"了。然后我们再根据不同的Cookie的id,在服务器上保存一段时间的私密资料,如"账号密码"等等. 总结而言:Cookie弥补了HTTP无状态的不足,让服务器知道来的人是"谁",但是Cookie以文本的形式保存在本地,自身安全性较差。所以我们就通过Cookie识别不同的用户,对应的Session里保存私密的信息以及超过4096的文本. 上述所说的Cookie与Session,是共通性的"东西",不限于语言和框架. Django中操作Session 获取、设置、删除Session中的数据: def test(request): """设置键值对""" request

Redis特点分析及性能优化

瘦欲@ 提交于 2019-11-28 07:29:00
一.Key   》Redis key值是二进制安全的,这意味着可以可以使用任何二进制序列作为key值。空字符串也是有效的key值。   》key取值原则     1.键值不需要太长,消耗内存,且在数据中查找这类键值计算成本较高     2.键值不宜过短,可读性较差,不宜数据分类和扩展   》过期     1.Redis中可以给key设置一个有效时间【秒或毫秒】,当达到这个时长后,这些键值将会被自动删除   》有效     1.查看剩余有效时间【TTL key/PTTL key】【TTL time to live】       >key存在但没有设置TTL,返回-1       >key存在,还在有效期内,返回剩余的秒或毫秒值       >key曾经存在,但已失效,返回-2【2.8版本之前返回-1】   》查找【KEYS pattern】     1.pattern取值       >*任意长度字符       >?任意一个字符       >[]字符集合,表示可以是集合中的任意一个   》key类型【TYPE key】   》key是否存在【EXISTS key】   》key重命名【RENAME key newkey/RENAMENX key newkey】   》key删除【DEL key】 二.value   》字符串是一种最基本的Redis值类型

redis无格式操作

若如初见. 提交于 2019-11-28 07:15:29
Redis使用手册 一、NoSql简介 NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”, 泛指非关系型的数据库 Nosql这个技术门类,早期就有人提出,发展至2009年趋势越发高涨。 二、为什么会出现Nosql这个技术门类 随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题。如图片,音频,视频的存储,传统的关系型数据库只能存储结构化数据,对于非结构化的数据支持不够完善,nosql这个技术门类的出现,更好的解决了这些问题,它 告诉了世界不仅仅是sql。 三、NoSQL数据库的四大分类 非关系型数据库 键值(Key-Value)存储数据库 key value 这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。 Key/value模型对于IT系统来说的优势在于简单、易部署。 但是如果DBA只对部分值进行查询或更新的时候,Key/value就显得效率低下了。 举例如:Tokyo Cabinet/Tyrant, Redis (SSDB), Voldemort, Oracle BDB. 列存储数据库 这部分数据库通常是用来应对分布式存储的海量数据。 键仍然存在,但是它们的特点是指向了多个列

python-dict使用

为君一笑 提交于 2019-11-28 05:52:59
1 # 创建一个字典 2 phone_book ={'Tom': 182342332, "Jerry": 12323232, 'Kim': 1212} 3 # 访问字典的值 4 print("Tom's phone Number is " + str(phone_book['Tom'])) 5 print("Jerry's phone Number is " + str(phone_book['Jerry'])) 6 # python 中的单引号字符串与双引号的字符串的区别 7 # python中的字符串表示既可以用单引号,也可以用双引号,只是用单引号时需要注意一点,如: 8 str1 = 'hello,my husband\'' # 字符串最后一个字符如果也是单引号,则需加一个转义字符\ 做区分。 9 print(str1) 10 # 获取字典中的元素个数 11 print("phone_book length is " + str(len(phone_book))) 12 # 获取键值对应的value 13 print("Tom Num is :"+str(phone_book.get('Tom'))) 14 # 返回字典中的所有键值 15 phone_bookKeys = phone_book.keys() 16 # 返回字典中的所有的值 17 phone

Redis 4.0鲜为人知的功能将加速您的应用程序

荒凉一梦 提交于 2019-11-28 00:53:32
来源:Redislabs 作者:Kyle Davis 翻译:Kevin (公众号:中间件小哥) Redis 4.0给Redis生态带来了一个惊人的功能:Modules(模块)。Modules是Redis的一大转变,它是Redis内部自定义数据类型和全速计算的开放环境。但是,尽管对该版本的大多数关注都集中在Modules上,但 新版本还引入了一个非常重要的命令,它就是游戏规则的改变者:UNLINK。 您可以使用redis-cli连接redis-server执行info命令,去查看当前redis版本中是否可以使用UNLINK命令。info响应将告诉您有关服务器的所有信息。在第一部分(#Server)中,返回结果有一行值为redis_version。如果该值大于4.0,则可以使用UNLINK命令。并非所有Redis提供商都保持最新版本,因此最好在更改代码之前检查redis版本。 让我们回顾一下Redis的关键架构功能之一:“单线程”。Redis在大多数情况下是一个单线程应用程序。它一次只做一件事,这样可以把这些事做的更快。多线程有点复杂,并且引入了锁和其他可能降低应用程序速度的问题。尽管Redis(最高4.0版)通过多线程方式执行了少量操作,但它通常在启动另一个命令之前先要完成一个命令。 相比于快速读写,您可能会觉得使用DEL命令去删除一个键值不需要考虑太多,但是在很多情况下

C# 操作配置文件App.Config

与世无争的帅哥 提交于 2019-11-27 23:04:12
在C#出现以前,应用程序通常都是采用ini或xml作为配置文件,但C#出现后,大部分程序员还是选择用可操作性强的.config应用程序配置文件的。所以,为了操作方便,通常需要写一个通用类。网上有很多这样的通用类,但我觉得我写的这个通用辅助类对于我来说很方便,看各人喜好喽。 using System; using System.Linq; using System.Collections.Generic; using System.Text; using System.Configuration; namespace Schwann.CommLibrary { public class ConfigHelper { /// <summary> /// 根据键值获取配置文件 /// </summary> /// <param name="key"> 键值 </param> /// <returns></returns> public static string GetConfig( string key) { string val = string .Empty; if (ConfigurationManager.AppSettings.AllKeys.Contains(key)) val = ConfigurationManager.AppSettings[key]; return

mysql之索引的数据结构

不羁岁月 提交于 2019-11-27 15:38:53
目录 一、树 二、B+树 2.1 B+树性质 三、聚集索引和辅助索引 3.1 聚集索引 3.2 辅助索引 3.3 聚集索引和非聚集索引的区别 四、再看B+树 4.1 B+树的插入操作 4.2 B+树的删除操作 一、树 树状图是一种 数据结构 ,它是由n(n>=1)个有限结点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。 它具有以下的特点:每个结点有零个或多个子结点;没有父结点的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结点可以分为多个不相交的子树 根结点:A 父节点:A是B,C的父节点 叶子节点:D,E是叶子节点 树的深度/树的高度:高度为3 二、B+树 前面讲了索引的基本原理,数据库的复杂性,又讲了操作系统的相关知识,目的就是让大家了解,任何一种数据结构都不是凭空产生的,一定会有它的背景和使用场景,我们现在总结一下,我们需要这种数据结构能够做些什么,其实很简单,那就是:每次查找数据时把磁盘IO次数控制在一个很小的数量级,最好是常数数量级。那么我们就想到如果一个高度可控的多路搜索树是否能满足需求呢?就这样,b+树应运而生(B+树是通过二叉查找树,再由平衡二叉树,B树演化而来)。 2.1 B+树性质 索引字段要尽量的小: 通过上面的分析,我们知道IO次数取决于b+数的高度h,假设当前数据表的数据为N