键值

YAML配置文件

一曲冷凌霜 提交于 2019-12-23 10:55:18
  最近,研究jeeweb这个框架,发现新版本中的配置文件都是用的.yml为后缀的文件,打开一看,和以前的xml和properties语法有很大区别,因此仔细研究一下。 简介:   YAML是(YAML Ain't Markup Language)(发音 /ˈjæməl/ )不是一种标记语言”的外语缩写,在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言)。这种语言以数据做为中心,它使用空白符号缩排和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种设定档、倾印除错内容、文件大纲(例如:许多电子邮件标题格式和YAML非常接近)。尽管它比较适合用来表达阶层式(hierarchical model)的数据结构,不过也有精致的语法可以表示关联性(relational model)的资料。 示例: 语法:   使用空格 Space 缩进表示分层,不同层次之间的缩进可以使用不同的空格数目,但是同层元素一定左对齐,即前面空格数目相同(不能使用 Tab,各个系统 Tab对应的 Space 数目可能不同,导致层次混乱)   ‘#’表示注释,只能单行注释,从#开始处到行尾   破折号后面跟一个空格(a dash and space)表示列表   用冒号和空格表示键值对 key: value   简单数据(scalars

Redis快速入门:初识Redis

╄→гoц情女王★ 提交于 2019-12-23 02:14:49
【IT168 专稿】在之前的文章中介绍了 《Redis快速入门:选择Key-Value Store》, 今天给大家介绍Redis的入门知识。Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。   1、数据类型   作为Key-value型数据库,Redis也提供了键(Key)和键值(Value)的映射关系。但是,除了常规的数值或字符串,Redis的键值还可以是以下形式之一:   ●Lists (列表)   ●Sets (集合)   ●Sorted sets (有序集合)   ●Hashes (哈希表)   键值的数据类型决定了该键值支持的操作。Redis支持诸如列表、集合或有序集合的交集、并集、查集等高级原子操作;同时,如果键值的类型是普通数字,Redis则提供自增等原子操作。   2、持久化   通常,Redis将数据存储于内存中,或被配置为使用虚拟内存。通过两种方式可以实现数据持久化:使用截图的方式,将内存中的数据不断写入磁盘;或使用类似MySQL的日志方式,记录每次更新的日志。前者性能较高,但是可能会引起一定程度的数据丢失;后者相反。   3、主从同步   Redis支持将数据同步到多台从库上,这种特性对提高读取性能非常有益

Python学习_5_元组_字典

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-23 01:59:12
# tuple元祖# 元组被称为只读列表,即数据可以被查询,但不能被修改,所以,列表的切片操作同样适用于元组。# 元组写在小括号(())里,元素之间用逗号隔开。# 虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。# 构造包含 0 个或 1 个元素的元组比较特殊,所以有一些额外的语法规则:tup1 = () # 空元组tup2 = (20,) # 一个元素,需要在元素后添加逗号#作用:#对于一些数据我们不想被修改,可以使用元组;#另外,元组的意义还在于,元组可以在映射(和集合的成员)中当作键使用——而列表则不行;元组作为很多内建函数和方法的返回值存在。print(tup2)a = tuple()print(a)print(tup1)b = [1, 2, 3, 4]print(b[1:2])c = (1, 2, 3, 4)print(c[1:2])d = "j", "l"print(d[0:1]) # 字典# 字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。# python对key进行哈希函数运算,根据计算的结果决定value的存储地址.# 所以字典具有两个特点:# 1.是无序存储的# 2.key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。# 字典(dictionary

关系型和非关系型数据库的区别?

佐手、 提交于 2019-12-22 21:29:01
当前主流的关系型 数据库 有 Oracle 、DB2、Microsoft SQL Server、Microsoft Access、 MySQL 等。 非关系型数据库有 NoSql、Cloudant。 nosql和关系型数据库比较? 优点: 1)成本:nosql数据库简单易部署,基本都是开源软件,不需要像使用oracle那样花费大量成本购买使用,相比关系型数据库价格便宜。 2)查询速度:nosql数据库将数据存储于缓存之中,关系型数据库将数据存储在硬盘中,自然查询速度远不及nosql数据库。 3)存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,所以可以存储基础类型以及对象或者是集合等各种格式,而数据库则只支持基础类型。 4)扩展性:关系型数据库有类似join这样的多表查询机制的限制导致扩展很艰难。 缺点: 1)维护的工具和资料有限,因为nosql是属于新的技术,不能和关系型数据库10几年的技术同日而语。 2)不提供对sql的支持,如果不支持sql这样的工业标准,将产生一定用户的学习和使用成本。 3)不提供关系型数据库对事物的处理。 非关系型数据库的优势:1. 性能NOSQL是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL层的解析,所以性能非常高。2. 可扩展性同样也是因为基于键值对,数据之间没有耦合性,所以非常容易水平扩展

关于按键、矩阵键盘的相关知识

a 夏天 提交于 2019-12-22 06:31:28
1 普通按键 第一种接线方法(带电源) 当不触碰按键时,单片机的I/O口通过电阻接至正电源,此时线路无电流通过,I/O口为高电平。 当触碰按键时,正电源通过电阻接至地,此时有电流通过,电压全部压在电阻上,电阻下端电压为0,即I/O口为低电平。 1 if(!K) 2 { 3 delay(50); 4 if(!K) 5 { 6 run(); 7 } 8 } 第二种接线方法(无电源) 当不触碰按键时,单片机的I/O口悬空,但不为0(也有可能不为1),即非低电平状态。 当触碰按键时,单片机的I/O口与地接通,此时I/O口为低电平。 1 if(!K) 2 { 3 delay(50); 4 if(!K) 5 { 6 run(); 7 } 8 } 2 矩阵键盘 第一种接线方法(带电源) 先进行键盘列扫描,如P2循环输出{0xef,0xdf,0xbf,0x7f},利用(P2 & 0x0f)判断有无按键压下,然后确定键值。 1 char key_scan[]={0xef,0xdf,0xbf,0x7f}; 2 char key_buf[]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77}; 3 char getKey() 4 { 5 char i=0,j=0; 6 for(i=0;i<4

代码大全第18章

依然范特西╮ 提交于 2019-12-21 05:08:14
表驱动法 表,应该是比一些逻辑语法更高阶的东西吧,除了理论研究那些东西之外,使用代码操作数据库就是整个互联网工业的一个最大的核心内容。但是我没参与过这种商业项目的开发,更多的是实验室内的仿真模拟,所以一开始对于操作数据库的东西还是很陌生的,个人而言,先入为主的东西是根深蒂固的,很难从一些零零碎碎的知识点中打破常规的概念,所以要想成为一个合格的程序员,转变这种学生阶段的编程思维到现在项目级的编程思维是一个非常重点的环节。 各种语法各种结构都有一些特定的使用场景,没有那种通用的方法。所以找到适合使用表的场景,然后合理的构建表是非常重要的,总结下来:如何构建表结构?表里该存什么样的数据?两大问题。 直接访问表。 这部分内容最大的意义在于说明了“键值Key”的重要性,在很多可以直接访问数组的问题中,假如数组的维度不统一,无法构建统一的表,我们就需要键值来区分是哪一组数据。如果不使用表驱动的方法,仅靠逻辑语法来实现,我们就会需要把每种情况都罗列起来,这简直是一种非常愚蠢的做法。 键值,我们在一般问题中都可以找到这么一个关键的数据来做为键值,比如姓名,学号,messageID等等,但在找不到这种固定数据的情况下,我们需要自己来创建表键值。 确认键值或者创建自己的键值都是可以行得通的,但是最好的办法还是自己创建键值,这样可以增强我们系统的灵活性,方便我们修改。 索引访问表。 索引表就是键值的进阶

2019/12/18-MongoDB

喜夏-厌秋 提交于 2019-12-20 04:02:39
NoSQL not only sql 1.KV/键值存储数据库 使用到一个哈希表,表中由一个特定的键和一个指针指向特定数据 优点:简单、易部署 缺点:对部分值查询或更新时效率低下 如:Redis、OracleBDB、Tokyo Cabinet/Tyrant、Voldemort 2.列存储数据库 应对分布式存储的海量数据,键存在,但指向了多个列 如:HBase、Riak、Cassandra 3.文档型数据库 类似于键值存储,可看作键值数据库的升级版,允许之间嵌套键值,查询效率更高(多值查询,单值查询依然是键值数据库查询最高) 如:MongoDB、SequoiaDB(国内)、CouchDB 4.图形数据库 使用灵活的图形(Graph)模型,能够扩展到多个服务器上(易扩展) 如:InfoGird、Neo4J、Infinite Graph MongoDB MongoDB是一个基于分布式文件存储的数据库管理系统(DBMS),由C++编写,旨在为web应用提供可扩展的高性能数据存储解决方案 MongoDB一般不用于缓存,是非关系型数据库中功能最丰富、最像关系数据库的,支持的数据结构类似于json的bson(落地以字节存储)格式 最大的特定是支持的查询语句非常强大,类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引 json不能描述双向关联数据

B树索引

自闭症网瘾萝莉.ら 提交于 2019-12-18 03:30:55
B-Tree索引是最常见的索引结构,默认创建的索引就是B-Tree索引。 一、B树索引的结构 B-树索引是基于二叉树结构的。B-树索引结构有3个基本组成部分:根节点、分支节点和叶子节点。其中根节点位于索引结构的最顶端,而叶子节点位于索引结构的最底端,中间为分子节点。 叶子节点(Leaf node): 包含条目直接指向表里的数据行。 分支节点(Branch node): 包含的条目指向索引里其他的分支节点或者是叶子节点。 根节点(Branch node): 一个B树索引只有一个根节点,它实际就是位于树的最顶端的分支节点。 可以用下图一来描述B树索引的结构。其中,B表示分支节点,而L表示叶子节点。 1.1关于分支节点块(包括根节点块) 1、 其所包含的索引条目都是按照顺序排列的(缺省是升序排列,也可以在创建索引时指定为降序排列)。 2、 每个索引条目(也可以叫做每条记录)都具有两个字段。第一个字段表示当前该分支节点块下面所链接的索引块中所包含的最小键值;第二个字段为四个字节,表示所链接的索引块的地址,该地址指向下面一个索引块。 3、 在一个分支节点块中所能容纳的记录行数由数据块大小以及索引键值的长度决定。比如从上图一可以看到,对于根节点块来说,包含三条记录,分别为(0 B1)、(500 B2)、(1000 B3),它们指向三个分支节点块。其中的0

算法打基础——HashⅡ: 全域哈希与完美哈希

狂风中的少年 提交于 2019-12-18 03:29:53
这一节涉及数学超级多,各种数论知识,各种不明觉厉! 看了几遍,才勉强看懂一些,所以这 篇稍微简单的介绍着两种hash table, 免得瞎说说错了。 这一讲的主要知识点是: 1. 全域哈希及构造 2. 完美哈希 1. 全域哈希及构造 介绍全域哈希之前,要先讨论一下普通哈希的一个缺点。 举个charles举得那个例子:如果你 和一个竞争对手同时为一家公司做compiler的symbol table, 公司要求你们代码共享 (o(╯□╰)o),你们做好后公司评判的标准就是 你俩互相提供一些测试样例,谁的效率高就买 谁的。 然后, 普通哈希的缺点 就出来了:对任意的hash函数h,总存在一组keys,使得 , 对某个槽i。即我总可以找到一组键值,让他们都映射到同一个槽里面,这样效率 就跟离链表差不多了 解决的思想就是:独立于键值, 随机 的选择hash 函数。这就跟快排中为避免最差情况时随机化 版本差不多。但是选取hash function的全局域是不能乱定的,否则也打不到理想的性能。 下面就给出全域哈希的定义: 设U是key的全局域, 设\(\mathcal{H}\) 是哈希函数的有限集合,每一个都是将U映射到 {0,1,..,m-1},即table的槽内。 如果对所有不等的\(x,y\in U\),有 换句话说,就是对于任意的不相等key的x和y, 从哈希函数集中选择一个哈希函数

Memcached常用指令

你。 提交于 2019-12-16 23:17:53
博文大纲: 一、存储常用的指令 1.set指令 2.add指令 3.replace指令 4.append指令 5.prepend指令 6.cas指令 二、常用的查找指令 1.get指令 2.gets指令 3.delete指令 4.incr指令 5.decr指令 6.stats指令 7.stats items指令 8.stats slabs指令 9.stats sizes指令 10.flush_all指令 一、存储常用的指令 常用的存储数据的指令有: set 命令是保存一个叫做 key 的数据到服务器上; add 命令是添加一个数据到服务器,但是服务器必须保证这个 key 是不存在的,能够保证数据不会被覆盖; replace 命令是替换一个已经存在的数据,如果数据不存在,就是类似 set 功能; 上述指令的语法格式都是一样的,只是指令不一样而已,语法如下: <命令> <键> <标记> <有效期> <数据长度> 各个参数含义如下: <命令>:就是add、set、replace等指令; <键> - key:就是保存在服务器上唯一的一个标识符,不可以与其他的key冲突,否则会覆盖掉原来的数据(使用set命令的话),这个key是为了能够准确的存取一个数据项目; <标记> - flag:标记的是一个16位的无符号整型数据,用来设置服务器跟客户端一些交互的操作; <有效期>