键值

HashMap工作原理

房东的猫 提交于 2019-12-04 08:46:21
hashing的概念 HashMap中解决碰撞的方法 equals()和hashCode()的应用,以及它们在HashMap中的重要性 不可变对象的好处 HashMap多线程的条件竞争 重新调整HashMap的大小 “什么是HashMap?你为什么用到它?” 数组和链表组合成的链表散列结构,通过hash算法,尽量将数组中的数据分布均匀,如果hashcode相同再比较equals方法,如果equals方法返回false,那么就将数据以链表的形式存储在数组的对应位置,并将之前在该位置的数据往链表的后面移动,并记录一个next属性,来指示后移的那个数据。注意数组中保存的是entry,其中保存的是键值. HashMap可以接受null键值和值,而HashTable则不能;HashMap是非synchronized;HashMap很快;以及HashMap储存的是键值对等等 “为什么String, Interger这样的wrapper类适合作为键?” String, Interger这样的wrapper类作为HashMap的键是再适合不过了,而且String最为常用。因为String是不可变的,也是final的,而且已经重写了equals()和hashCode()方法了。其他的wrapper类也有这个特点。不可变性是必要的,因为为了要计算hashCode(),就要防止键值改变

Android添加新按键

雨燕双飞 提交于 2019-12-04 06:59:50
1、前言 在Android开发中可能会遇到添加新的按键的需求,本文将简单介绍如何在Android系统中完成一个新的按键的添加。 当系统有新的按键需要添加时,Linux内核下的键码到Android系统中键码是如何进行转换映射的? 2、内核添加设备节点 首先,我们需要在Linux内核添加新的按键值,在Linux内核中提供了按键的驱动程序gpio_keys.c,该驱动是基于设备树实现的,因此,先添加自己的设备节点,如下: gpio_keys { status = "okay"; compatible = "gpio-keys"; #address-cells = <1>; #size-cells = <0>; input-name = "test-keys"; pinctrl-names = "tlmm_gpio_key_active","tlmm_gpio_key_suspend"; pinctrl-0 = <&gpio_key_active>; pinctrl-1 = <&gpio_key_suspend>; key1@1 { label = "key1"; gpios = <&msm_gpio 96 1>; linux,code = <116>; linux,input-type = <1>; }; key2@2 { label = "key2"; gpios = <&msm

Redis中的键值过期操作

廉价感情. 提交于 2019-12-04 06:50:05
1.过期设置 Redis 中设置过期时间主要通过以下四种方式: expire key seconds:设置 key 在 n 秒后过期; pexpire key milliseconds:设置 key 在 n 毫秒后过期; expireat key timestamp:设置 key 在某个时间戳(精确到秒)之后过期; pexpireat key millisecondsTimestamp:设置 key 在某个时间戳(精确到毫秒)之后过期; 下面分别来看以上这些命令的具体实现。 1)expire:N 秒后过期 127.0.0.1:6379> set key value OK 127.0.0.1:6379> expire key 100 (integer) 1 127.0.0.1:6379> ttl key (integer) 97 其中命令 ttl 的全称是 Time To Live 表示此键值在 n 秒后过期。例如,上面的结果 97 表示 key 在 97s 后过期。 2)pexpire:N 毫秒后过期 127.0.0.1:6379> set key2 value2 OK 127.0.0.1:6379> pexpire key2 100000 (integer) 1 127.0.0.1:6379> pttl key2 (integer) 94524 其中 pexpire key2

sqlserver中聚集索引和非聚集索引

≡放荡痞女 提交于 2019-12-04 06:42:19
微软官网上的解释: 索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度。 索引包含由表或视图中的一列或多列生成的键。 这些键存储在一个结构(B 树)中,使 SQL Server 可以快速有效地查找与键值关联的行。 表或视图可以包含以下类型的索引: 聚集 聚集索引根据数据行的键值在表或视图中排序和存储这些数据行。 索引定义中包含聚集索引列。 每个表只能有一个聚集索引,因为数据行本身只能按一个顺序存储。 只有当表包含聚集索引时,表中的数据行才按排序顺序存储。 如果表具有聚集索引,则该表称为聚集表。 如果表没有聚集索引,则其数据行存储在一个称为堆的无序结构中。 非聚集 非聚集索引具有独立于数据行的结构。 非聚集索引包含非聚集索引键值,并且每个键值项都有指向包含该键值的数据行的指针。 从非聚集索引中的索引行指向数据行的指针称为行定位器。 行定位器的结构取决于数据页是存储在堆中还是聚集表中。 对于堆,行定位器是指向行的指针。 对于聚集表,行定位器是聚集索引键。 可以向非聚集索引的叶级添加非键列以跳过现有的索引键限制,并执行完整范围内的索引查询。 聚集索引和非聚集索引都可以是唯一的。 这意味着任何两行都不能有相同的索引键值。 另外,索引也可以不是唯一的,即多行可以共享同一键值。 实际上,可以把索引理解为一种特殊的目录。微软的SQL SERVER提供了两种索引:聚集索引

注册表学习和常用注册表修改

╄→гoц情女王★ 提交于 2019-12-04 04:55:12
存储数据结构 树型结构,分支结点和叶子节点均可存储数据 每个节点存储的数据为 键->List<值(名称-类型-数据)>; 名称大小写不敏感 数据类型 REG_BINARY 二进制类型,以十六制显示 DWORD/QWORD 数值类型DWORD 为 32 位,QWORD 为 64 位 REG_SZ 字符串类型 ,最大长度不能超过 255 个字符 REG_EXPAND_SZ 扩展字符串类型 ,可解释 %变量% REG_MULTI_SZ 注册表存储的是 Hive 文件,存储路径为 \Windows\System32\config 五大根键 HKEY_USERS Default 子键内容和 HKEY_CURRENT_USER 一致,其它不用管 HKEY_CURRENT_USER 保存了当前登录用户数据,个性化配置,键的内容随登录用户不同而不同 ControlPanel 控制面板设置,桌面背景,容器外观等 Software 当前环境中安装的软件设置,windows 本身内置功能 HKEY_LOCAL_MACHINE 保存的系统信息,包括硬件配置,外围设备,网络设置,所安装的软件 HARDWARE 计算机硬件相关的各项信息,驱动程序的设置 SAM SECURITY 用户组,用户,系统安全设置,权限分配 SOFTWARE 已安装的软件信息,与 HKEY_CURRENT_USER/Software

Redis 数据库配置与应用

吃可爱长大的小学妹 提交于 2019-12-04 01:51:29
REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。 Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。 本笔记主要实现Redis的运维常用功能的配置,如编译安装,设置初始密码,主从同步,数据库的备份,等功能 编译安装Redis 1.编译安装依赖. [root@localhost ~]# wget https://jaist.dl.sourceforge.net/project/tcl/Tcl/8.5.18/tcl8.5.18-src.tar.gz [root@localhost ~]# tar -xzvf tcl8.5.18-src.tar.gz [root@localhost ~]# cd tcl8.5.18/unix/ [root@localhost ~]# ./configure [root@localhost ~]# make && make install 2.编译安装Redis. [root

HBase里面的HFile存储结构

孤者浪人 提交于 2019-12-03 23:48:43
1、本文章主要写的是关于HFile里面键值对的剖析 先来看看HFile的存储格式 HFile的文件是不定长的,长度固定的只有两块,就是Traifer和File info。 Data块的是由Magic和键值对组成,Magic主要是生成一些随机数来防止数据的损坏,其他的就是键值对。 上面我们大概的讲了一下,键值对,下面这个张图描述的更清晰 键值对结构图 上面这张图里面包含的内容是: Key Length :用4个字节(32位二进制)来描述我的Key的长度,里面4个字节的二进制位算出来的结果就表示我的Key占多少个字节 Value Length:用4个字节(32位二进制)来描述我的Value有多少字节,也是4个字节的二进制位算出来的结果就表示我的Value占多少个字节 Row Length:用2个字节(16位二进制)来描述我的RowKey有多少个字节,两个字节总共是16位,里面16位二进制算出来的值就是Rowkey的长度(多少字节) Row:就是表示Rowkey Column Family Length:用一个字节(8位二进制)来描述列族的长度,包含的二进制位算出来的值就是我的列族名的长度 Column Family:列族 Column Qualifiler:列族下的列族名,用Key Length算出来的总的二进制来减去(Row Length+Row+Column Family

字典的常规操作

孤街醉人 提交于 2019-12-03 21:30:37
声明:#字典是一个可变类型:其中key不可变,value可变 格式key:value """ 1、优先掌握的 1、按照key:value映射关系取值(可存可取) 2、成员运算in,not in # 默认判断key 3、len() # 获取当前字典中键值对的个数 """ 1.#字典的三种定义方式 d1 = {'name':'egon','age':2} print(d1) # 第二种方式: dict() d1 = dict(name='sean',age=1) print(type(d1)) # 第三种方式:zip 了解 l1 = ['name','egon'] l2 = ['age',2] z1 = zip(l1,l2) print(z1) print(dict(z1)) 2. 字典的增删改取 d1 = {'name':'egon','age':2,'hopy':'ee'} #增操作d1[''weight] = 178#删操作 list 有remove del 彻底删除d1.clear() 清除字典中的数据 # d1.pop() pop('key') 指定键删除,返回值是key的value# d1.popitem() 随机删除键值对 返回值是一个元组 #取操作 d1 = {'name':'egon','age':2,'hopy':'ee'} print(d1['name'])#

基本数据类型之字典

人盡茶涼 提交于 2019-12-03 20:34:49
字典dict: 定义:通过{ }来存储数据,通过key:value来定义键值对数据,每个键值对中间用逗号分隔开,其中value可以是任意类型,而key一定要是不可变类型(数字,字符串)。 字典的三种定义方式: 1、d1 = {'name':'bob','age':18} 2、d2 = dict({'name':'bob'}) 3、#了解 zip: l1 = ['name','bob'] l2 = ['age','18'] z1 = zip(l1,l2) print(dict(z1)) 常用方法: #1.1、按照key:value映射关系取值(可存可取) user_info = {'name':'egon','age':18,'hobbies':['football','eat','sleep']} print(user_info['age']) >>>18 print(user_info['hobbies'][0]) >>>football #1.2 对于赋值操作,如果key原先不存在于字典,则会新增key:value user_info = {'name':'egon','age':18} user_info['gender'] = 'male' print(user_info) >>>{'name': 'egon', 'age': 18, 'gender': 'male'} #

基本的数据类型和内置方法02

萝らか妹 提交于 2019-12-03 20:21:17
元组 tuple 用途:存储多个类型的值(不能存可变类型) 定义方式:通过小括号存储数据,数据之间通过逗号分隔(值不能被改变) 定义容器类型的时候如果里面只有一个值,在值的后面加上一个逗号,在元组中,不加就是字符串 元组的类型总结:有序,不可变,存多个值 t1 = ('a','b','c','a') # t1 = tuple(('a','b','c')) print(t1) print(type(t1)) 打印结果: ('a', 'b', 'c', 'a') <class 'tuple'> 常用方法 1、索引取值 t1 = ('a','b','c','a') print(t1[0]) 打印结果: a 2、索引切片 t1 = ('a','b','c','a') print(t1[0:2]) 打印结果: ('a', 'b') 3、成员运算 t1 = ('a','b','c','a') print('a' in t1 ) print('a'not in t1 ) 打印结果: True False 4、len:获取当前元组中的元素个数 t1 = ('a','b','c','a') print(len(t1)) 打印结果: 4 5、count:统计当前元组中的某个元素的个数 t1 = ('a','b','c','a') print(t1.count('a')) 打印结果: 2 6、index