键值

linux消息队列操作

安稳与你 提交于 2019-12-16 18:26:02
对消息队列的操作无非有以下三种类型: 1、 打开或创建消息队列 消息队列的内核持续性要求每一个消息队列都在系统范围内相应唯一的键值,所以,要获得一个消息队列的描写叙述字,仅仅需提供该消息队列的键值就可以; 注:消息队列描写叙述字是由在系统范围内唯一的键值生成的,而键值能够看作相应系统内的一条路经。 2、 读写操作 消息读写操作很easy,对开发者来说,每一个消息都相似例如以下的 数据 结构: struct msgbuf{ long mtype; char mtext[1]; }; mtype成员代表消息类型,从消息队列中读取消息的一个重要根据就是消息的类型;mtext是消息内容,当然长度不一定为1。因此,对于发送消息来说,首先预置一个msgbuf缓冲区并写入消息类型和内容,调用对应的发送函数就可以;对读取消息来说,首先分配这样一个msgbuf缓冲区,然后把消息读入该缓冲区就可以。 3、 获得或设置消息队列属性: 消息队列的信息基本上都保存在消息队列头中,因此,能够分配一个相似于消息队列头的结构(struct msqid_ds,见 附录 2 ),来返回消息队列的属性;相同能够设置该 数据 结构。 消息队列API 1、文件名称到键值 #include <sys/types.h> #include <sys/ipc.h> key_t ftok (char*pathname, char

字典与集合(Dictionary与Collection)

巧了我就是萌 提交于 2019-12-16 14:41:40
Dictionary对象将替换Collection对象,并提供附加的语言从而 使增加和删除记录的速度比以前提高三倍 虽然Visual Basic 6.0只有很少的新特点,但是具有某些功能强 大的新的对象模型,其中之一就是Dictionary对象。 Dictionary对象是无处不在的Visual Basic Collection对象的新 版本。它的介绍存在于VBScript 2.0,并通过Visual Basic 6.0 对Scripting Runtime Library的支持涉入Visual Basic的全部内 容。刚开始,Dictionary对象仅仅包含在VBScript中,并作为 Perl相关内容的等价体对Web组请求进行答复。 与Collection对象相似,你能够通过Dictionary存储任何类型的 数据或字典对象,这些数据和对象通常被看作字典的组成部分, 每一部分都被赋予字符串型键值。虽然我不认为Microsoft意图使 你完全摆脱收集和替换上述数据和对象的烦恼,但是实际上,在 先前的Visual Basic 6.0文档中,对Dcitionary对象确实很少提 及,因此我认为这是Visual Basic 6.0的一个最新的重要特点。 Dictionary对象与Collection对象的比较 从Visual Basic 4.0开始

HashMap,HashSet,HashTable的区别

这一生的挚爱 提交于 2019-12-16 03:33:49
什么是HashMap HashMap实现了Map接口,Map接口对键值对进行映射。Map中不允许重复的键。Map接口有两个基本的实现,HashMap和TreeMap。TreeMap保存了对象的排列次序,而HashMap则不能。HashMap允许键和值为null。HashMap是非synchronized的,但collection框架提供方法能保证HashMap synchronized,这样多个线程同时访问HashMap时,能保证只有一个线程更改Map。 public Object put(Object Key,Object value)方法用来将元素添加到map中。 什么是HashSet HashSet实现了Set接口,它不允许集合中有重复的值,当我们提到HashSet时,第一件事情就是在将对象存储在HashSet之前,要先确保对象重写equals()和hashCode()方法,这样才能比较对象的值是否相等,以确保set中没有储存相等的对象。如果我们没有重写这两个方法,将会使用这个方法的默认实现。 public boolean add(Object o)方法用来在Set中添加元素,当元素值重复时则会立即返回false,如果成功添加的话会返回true。 什么是Hashtable 哈希表(Hashtable)又称为“散置”,Hashtable是会根据索引键的哈希程序代码组织成的索引键

Redis常用命令大全

久未见 提交于 2019-12-15 05:28:41
doc 环境下使用命令: keys 命令 ? 匹配一个字符 * 匹配任意个(包括0个)字符 [] 匹配括号间的任一个字符,可以使用 "-" 符号表示一个范围,如 a[b-d] 可以匹配 "ab","ac","ad" \x 匹配字符x,用于转义符号,如果要匹配 "?" 就需要使用 \? 判断一个键值是否存在 exists key 如果存在,返回整数类型 1 ,否则返回 0 删除键 del key [key.....] 可以删除一个或多个键,返回值是删除的键的个数 注意:不支持通配符删除 获得键值的数据类型 type key 返回值可能是 string(字符串类型) hash(散列类型) list(列表类型) set(集合类型) zset(有序集合类型) 赋值与取值 set key value 赋值 get key 取值 递增数字 incr key 当存储的字符串是整数形式时,redis提供了一个使用的命令 incr 作用是让当前的键值递增,并返回递增后的值 incr num 当要操作的键不存在时会默认键值为 0 ,所以第一次递增后的结果是 1 ,当键值不是整数时 redis会提示错误 增加指定的整数 incrby key increment incrby 命令与 incr 命令基本一样,只不过前者可以通过 increment 参数指定一次增加的数值如: incrby num 2

11、UC IPC进程间通信

自作多情 提交于 2019-12-15 00:59:04
耦合性 代码的耦合性越低越好 内聚性 内聚性越强越好 一、IPC进程间通讯 system v IPC 使用命令ipcs可以查看system v IPC的对象 第一步:获取一个键值(唯一的值) 如果获取一个键值? 使用ftok(3)获取一个键值 # include <sys/types.h> # include <sys/ipc.h> key_t ftok ( const char * pathname , int proj_id ) ; 功能:转换pathname和proj_id为一个key值 参数: pathname:指定文件的名字 proj_id:一个整数,这个整数的低 8 位不能为 0 返回值: - 1 错误 errno被设置 成功 key值被返回 举例验证,使用ftok(3)获取一个键值 代码参见 ftok.c 如果文件名字和数字完全一样,多次运行进程产生的key值,完全一样。 第二步:通过键值获取一块内存,将这块内存id返回 第三步:通过内存的id操作这块内存 包含以下三个方面: 1、消息队列 通过键值获取一块内存,将这块内存id返回。 需要使用到msgget(2)获取内核内存的id # include <sys/types.h> # include <sys/ipc.h> # include <sys/msg.h> int msgget ( key_t key ,

深入剖析HashMap应用原理

霸气de小男生 提交于 2019-12-14 22:08:21
Hashing(散列法或哈希法)的概念 散列法(Hashing)是一种将字符组成的字符串转换为固定长度(一般是更短长度)的数值或索引值的方法,称为散列法,也叫哈希法。由于通过更短的哈希值比用原始值进行数据库搜索更快,这种方法一般用来在数据库中建立索引并进行搜索,同时还用在各种解密算法中。 HashMap概念和底层结构 HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。HashMap储存的是键值对,HashMap很快。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。 数组:存储区间连续,占用内存严重,寻址容易,插入删除困难; 链表:存储区间离散,占用内存比较宽松,寻址困难,插入删除容易; Hashmap综合应用了这两种数据结构,实现了寻址容易,插入删除也容易。 hashMap的结构示意图如下: HashMap的基本存储原理以及存储内容的组成 基本原理:先声明一个下标范围比较大的数组来存储元素。另外设计一个哈希函数(也叫做散列函数)来获得每一个元素的Key(关键字)的函数值(即数组下标,hash值)相对应,数组存储的元素是一个Entry类,这个类有三个数据域,key、value(键值对),next(指向下一个Entry)。 例如,

数组的函数总结

醉酒当歌 提交于 2019-12-12 11:02:03
一.数组的基本概念 数组定义:PHP 中的数组实际上是一个有序映射。映射是一种把 values 关联到 keys 的类型。此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种实现),字典,集合,栈,队列以及更多可能性。由于数组元素的值也可以是另一个数组,树形结构和多维数组也是允许的。 数组类型: 索引数组 - 带有数字 ID 键的数组 关联数组 - 带有指定的键的数组,每个键关联一个值 多维数组 - 包含一个或多个数组的数组 二.数组的常用函数 1.统计数组下标函数 count()函数,sizeof()函数 语法:count(array,mode),sizeof(array,mode);array表示数组,必须的;mode表示是否需要递归的计算数组中元素个数,不是必需的,默认是0。 2. each()函数 each( array ), 返回当前元素的键名和键值,并将内部指针向前移动。 返回的数组中包括的四个元素:键名为 0,1,key 和 value。单元 0 和 key 包含有数组单元的键名,1 和 value 包含有数据。 如果内部指针越过了数组范围,本函数将返回 FALSE。 3. list() 函数 list( var1 , var2 ...),函数用于在一次操作中给一组变量赋值。该函数只用于数字索引的数组,且假定数字索引从 0 开始。

2019-12-11

痴心易碎 提交于 2019-12-11 20:41:54
TCP三次握手和四次挥手 为什么握手要三次,挥手要四次 详解 虚拟地址和物理地址 解决哈希冲突的方法及其优缺点 详解 集合有哪些接口,哪些实现类 Java集合类里最基本的接口有: Collection:单列集合的根接口 List:元素有序 可重复 ArrayList:类似一个长度可变的数组 。适合查询,不适合增删 LinkedList:底层是双向循环链表。适合增删,不适合查询。 Set:元素无序,不可重复 HashSet:根据对象的哈希值确定元素在集合中的位置 TreeSet: 以二叉树的方式存储元素,实现了对集合中的元素排序 Map:双列集合的根接口,用于存储具有键(key)、值(value)映射关系的元素。 HashMap:用于存储键值映射关系,不能出现重复的键key TreeMap:用来存储键值映射关系,不能出现重复的键key,所有的键按照二叉树的方式排列 总共有两大接口:Collection 和Map ,一个元素集合,一个是键值对集合; 其中List和Set接口继承了Collection接口,一个是有序元素集合,一个是无序元素集合; 而ArrayList和 LinkedList 实现了List接口,HashSet实现了Set接口,这几个都比较常用; HashMap 和HashTable实现了Map接口,并且HashTable是线程安全的,但是HashMap性能更好 来源:

MapReduce的详细运行阶段

南楼画角 提交于 2019-12-11 20:16:49
①②③④ map task读文件,通过TextInputFormat读文本切片,一次读一行,返回(key,value); ⑤ 上一步获取的(key,value)键值对经过map方法逻辑处理成新的(key,value)键值对,通过context.write输出到OutputCollectior收集器 shuffle阶段 ⑥ OutputCollectior把手机的(key,value)键值对写入到环形缓冲区中,环形缓冲区默认大小为100M,当写到80%时就会触发spill溢写 ⑦ 在溢写之前会对数据进行分区和排序,会对环形缓冲区里面的每个(key,value)键值对hash一个partition值,相同partition值为同一分区,并按照key排序(快排) ⑧ 将环形缓冲区排序后的内存数据不断溢写都本地磁盘,如果map阶段处理的数据较大,可能会溢写多个文件 (80M 一个块默认128M 正常溢写两个文件 但逻辑块可能大于128M 造成溢写超过两个) ⑨ 多个溢写的文件被merge合并成大文件(归并排序),此时map task最终结果文件是分区且区内有序 ⑩ reduce task根据自己的分区号,去各个map task节点拷贝相同partition的数据到reduce task本地磁盘工作目录 ①① reduce task 会把同一分区的来自不同map task的结果文件

二叉查找树、平衡二叉树(AVLTree)、平衡多路查找树(B-Tree),B+树

一世执手 提交于 2019-12-10 12:15:30
B+树索引是B+树在 数据库 中的一种实现,是最常见也是数据库中使用最为频繁的一种索引。 B+树中的B代表平衡(balance),而不是二叉(binary),因为B+树是从最早的平衡二叉树演化而来的。 在讲B+树之前必须先了解 二叉查找树 、 平衡二叉树(AVLTree) 和 平衡多路查找树(B-Tree) ,B+树即由这些树逐步优化而来。 二叉查找树 二叉树具有以下性质:左子树的键值小于根的键值,右子树的键值大于根的键值。 如下图所示就是一棵二叉查找树, 对该二叉树的节点进行查找发现深度为1的节点的查找次数为1,深度为2的查找次数为2, 深度为n的节点的查找次数为n, 因此其平均查找次数为 (1+2+2+3+3+3) / 6 = 2.3次 二叉查找树可以任意地构造,同样是2,3,5,6,7,8这六个数字,也可以按照下图的方式来构造: 但是这棵二叉树的查询效率就低了。因此 若想二叉树的查询效率尽可能高,需要这棵二叉树是平衡的,从而引出 新的定义——平衡二叉树,或称AVL树 。 平衡二叉树(AVL Tree)----(基于【二插树】改善,查询效率提高) 平衡二叉树(AVL树)在符合二叉查找树的条件下, 还满足任何节点的两个子树的高度最大差为1 。 下面的两张图片: 左边是AVL树,它的任何节点的两个子树的高度差<=1; 右边的不是AVL树,其根节点的左子树高度为3,而右子树高度为1;