键值

学习C# 哈希表(HashTable)用法

不羁的心 提交于 2020-01-16 01:06:38
学习C# 哈希表(HashTable)用法 1. 哈希表(HashTable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似keyvalue的键值对,其中key通常可用来快速查找,同时key是区分大小写;value用于存储对应于key的值。Hashtable中keyvalue键值对均为object类型,所以Hashtable可以支持任何类型的keyvalue键值对. 2. 哈希表使用情景 (1) 某些数据会被高频率查询 (2) 数据量大 (3)查询字段包含字符串类型 (4)数据类型不唯一 3. 哈希表的使用方法 哈希表需要使用的namespace: using System.Collections; using System.Collections.Generic; 哈希表的基本操作: //添加一个keyvalue键值对: HashtableObject.Add(key,value); //移除某个keyvalue键值对: HashtableObject.Remove(key); //移除所有元素: HashtableObject.Clear(); // 判断是否包含特定键key: HashtableObject.Contains(key); 示例代码: using System;

Spark键值对Pair RDD操作

泄露秘密 提交于 2020-01-15 08:05:42
1、键值对pair RDD产生的背景 pair RDD提供了一些新的操作接口,比如统计每个产品的评论,将数据中键相同的分为一组,将两个不同的RDD进行分组合并等。我们通常从一个RDD中提取某些字段如事件时间、用户ID,并使用这些字段作为pair RDD操作中的键。 2、创建pair RDD (1)读取键值对格式数据时直接返回其键值对数据组成的pair RDD。 (2)使用map()函数将普通的RDD转为pair RDD。 3、pair RDD的转化操作 (1)mapValues() 对pair RDD中的每个值应用一个函数而不改变键,功能类似于map{case (x,y):(x,func(y))} (2)reduceByKey() 与reduce相似,接收一个函数,为数据集中每个键进行并行的归约操作,每个归约操作会将键相同的值合并起来。返回一个由各键和对应键归约出来的结果值组成的新RDD。 例如:在Scala中使用reduceBykey()和mapValues()计算每个键对应的平均值 rdd.mapValues(x =>(x,1)).reduceByKey((x,y)=>(x._1 + y._1,x._2 + y._2)) (注:此处x=>(x,1)是为了构造pair RDD,reduceByKey(x,y)中的x,y指的是键相同的两个值) (3)combineByKey()

STL之map容器和multimap容器

时光总嘲笑我的痴心妄想 提交于 2020-01-15 05:18:20
摘要:本文主要介绍了map容器和multimap容器的相关内容。 1、基本概念 1.1 Map的特性 所有元素都会根据元素的键值自动排序。Map所有的元素都是pair,同时拥有实值和键值,pair的第一元素被视为键值,第二元素被视为实值,map不允许两个元素有相同的键值。 1.1 map容器的键值无法修改 map的键值关系到map元素的排列规则,任意改变map键值将会严重破坏map组织。如果想要修改元素的实值,那么是可以的。 Map和list拥有相同的某些性质,当对它的容器元素进行新增操作或者删除操作时,操作之前的所有迭代器,在操作完成之后依然有效,当然被删除的那个元素的迭代器必然是个例外。 1.2 Multimap容器 Multimap和map的操作类似,唯一区别multimap键值可重复。 Map和multimap都是以红黑树为底层实现机制。 2、常用的API API 意义 构造函数 map<T1, T2> mapTT map默认构造函数 map(const map &mp) 拷贝构造函数 赋值操作 map& operator=(const map &mp) 重载等号操作符 swap(mp) 交换两个集合容器 大小操作 size() 返回容器中元素的数目 empty() 判断容器是否为空 插入数据元素操作 map.insert(...); //往容器插入元素,返回pair

两个数码管显示16位数

梦想与她 提交于 2020-01-15 04:15:01
背景 此篇文章是4x4矩阵键盘的衍生品。 4x4的矩阵键盘一共16个按键,每个按键对应相应的键值,分别为0~15。每按一个键,对应的键值并联到4个LED灯上,以二进制的形式表示(比如键值5,二进制为 'b0101 ,对应的LED灯亮灭情况为:亮灭亮灭),同时也并联到数码管上,通过数码管显示出目前对应的键值。 然而,一个数码管足够显示0~F(即0到15)这16个键值,如果想完完全全转换成十进制来显示,即键值10显示为 10 而非 a ,键值11显示为 11 而非 b ,那该如何操作呢? 以上即为不安分守己的瞎折腾背景。 开始 之前,写过一篇 关于小梅哥74HC595驱动设计的思考 ,该驱动可充分利用两片级联的74HC595芯片,将16位串行数据转换为16位并行数据。实际应用中,由于开发板上有8个数码管;每个数码管又有8个段,正好16位数据。驱动将16位并行数据 data[15:0] 输入,输出串行的16位数据 ds ,并利用两片级联芯片将16位数据 ds 再次转为并行数据输出,以此驱动数码管,并显示相应数据。选择对应的数码管(以 sel[7:0] 信号表示),数码管上对应需要显示的段(以 seg[7:0] 信号表示)。 目前74HC595驱动已经写好,只等数码管的位选和段选数据输入。产生16位数据的verilog文件以梅哥的hex8.v文件为参考,并作些许修改

[redis] Redis数据淘汰策略

时光毁灭记忆、已成空白 提交于 2020-01-15 00:47:52
前言: 今天来介绍一下redis的6中淘汰策略。总是记不全,在此做个记录方便以后的查找。 淘汰策略的原因 Mysql里有2000W数据,Redis中只存20W数据,如何保证redis中的数据都是热点数据。 Redis是当前最常用的开源内存数据库,性能很高,并且Redis支持数据的持久化,众多数据结构存储,master-slave模式数据备份。但是长期将Redis作为缓存应用,会遇到内存空间存储瓶颈,当Redis性能急剧下降。所以此时需要淘汰无用数据释放空间,存储新数据就变得尤为重要了。 在redis生产环境中,采用配置参数maxmemory的方式来限制内存大小。当实际存储内存超出maxmemory参数值时,就可以使用Redis内存淘汰策略,来决定淘汰哪些。 6种淘汰策略 volatile-lru 从设置过期时间的数据集中挑选出最近最少使用的数据淘汰。没有设置过期时间的key不会被淘汰,这样就可以在增加内存空间的同时保证需要持久化的数据不会丢失。 volatile-ttl 除了淘汰机制采用LRU,策略上基本上与volatile-lru相似,从设置过期时间的数据集中挑选出要过期的数据淘汰,ttl值越大越有先被淘汰。 volatile-random 从已设置过期时间的数据集中任意选择数据淘汰。当内存达到限制无法写入非过期时间的数据集时,可以通过淘汰策略在主键空间中随机移除某个key。

Redis五种常用数据类型

走远了吗. 提交于 2020-01-15 00:46:35
string 字符串常用操作 1.存入字符串键值对 SET key value 2.批量存储字符串键值对 MSET key value [key value ...] 3.获取一个字符串键值 GET key 4.批量获取字符串键值 MGET key [key ...] 5.删除一个键 DEL key [key ...] 6.设置一个键的过期时间(秒) EXPIRE key seconds 原子加减 1.将key中存储的数字值加一 INCR key 2.将key中存储的数字值减一 DECR key 3.将key所存储的值加上increment INCRBY key increment 4.将key所存储的值减去decrement DECRBY key decrement 单值缓存 SET key value GET key 对象缓存 1.SET user:1 value(json格式数据) 2.MSET user:1:name test user:1:balance 10086 MGET user:1:name user:1:balance 分布式锁 SETNX product:10001 true //返回1代表获取锁成功 SETNX product:10001 true //返回0代表获取锁失败 ....执行业务操作 DEL product:10001 //执行完业务释放锁

Centos中Redis的下载编译与安装(超详细)

孤人 提交于 2020-01-14 09:28:08
场景 NoSQL,泛指非关系型的数据库,NoSQL即Not-Only SQL,它可以作为关系型数据库的良好补充。随着互联网web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速 Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型如下: 字符串类型 散列类型 列表类型 集合类型 有序集合类型 搭建好Centos环境,这里使用的是Vmware搭建测试环境。 然后使用XShell连接,如果在连接时遇到 CentOs中怎样打开默认网卡并查看ip: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103955347 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书、教程推送与免费下载。 实现 Redis下载 从官网下载,[Redis官网点击下载]( http://download.redis.io/releases/ ) 选择相应版本并点击下载安装tar包 安装C插件 在安装Redis之前需要安装C和C++的插件 yum install gcc-c++ 出现如下提示

redis 的简单使用

一笑奈何 提交于 2020-01-13 13:51:09
文章目录 Redis 与 各个数据库之间的区别 Redis 数据结构简介 string(字符串) 尝试一下 list(列表) 尝试一下 set(集合) 尝试一下 hash(散列(无序)) 尝试一下 zset(有序集合) 尝试一下 Redis 与 各个数据库之间的区别 名称 类型 数据存储选项 查询类型 附加功能 redis 使用内存存储(in-memory)的非关系型数据库 字符串、列表、集合、散列表、有序集合 每种数据类型都有自己的专属命令,另外还有批量操作(bulk operation)和不完全(partial)的事务支持 发布与订阅,主从复制(master/slave replication),持久化,脚本(存储过程,stored procedure) memcached 使用内存存储的键值缓存 键值之间的映射 创建命令、读取命令、更新命令、删除命令以及其他几个命令 为提升性能而设的多线程服务器 MySQL 关系型数据库 每个数据库可以包含多个表,每个表可以包含多个行;可以处理多个表的视图(view);支持空间(spatial)和第三方扩展 select、insert、update、delete、函数、存储过程 支持ACID性质(需要使用InnoDB),主从复制和自主复制(master/master replication) PostgreSQL 非关系型数据库

php 小知识

人盡茶涼 提交于 2020-01-12 06:18:52
一 运算符 1 当一个变量的值为true即布尔类型时,如果使用==号来做判断的话,那么true=='abc'是为真,最好是使用全等号来做判断 test code function aa($bb) {   if ($bb=1) {     return ture;   }else{     return 'cc';   } } $cc = aa(1); if ($cc=='cc') {   echo 'ok'; } 这里使用 == 就会输出ok,如果 if ($cc === 'cc'){   echo 'ok'; } 这里使用 === 全等号,就不会输出ok 所以,我们在使用函数返回数据的时候最好是不要返回不同类型的值 2 标识符 2.1 lt ,< 2.2 le , <= 2.3 gt , > 2.4 ge , >= 2.5 eq , == 2.6 ne , != 二 数组 1 当对一个数组使用变量做键值赋值时,如果此变量是非0开头的数字型字符串,那么赋值后的数组的键值会为数字,这时使用array_multisort或sort排序就会更改键值: $key = '2002'; $arr [$key] = 'test'; 结果: array(2002=>'test'); case 来源: https://www.cnblogs.com/phpor/archive/2012/08/02

了解MapReduce运行机制

房东的猫 提交于 2020-01-12 06:10:48
MapReduce初识 Hadoop与MapReduce的关系 Hadoop提供了一个稳定的共享存储和分析系统,存储由HDFS实现,分析由MapReduce实现。 对MapReduce的理解 MapReduce的工作过程分为两个阶段:map阶段和reduce阶段,每个阶段都有键值对作为输入和输出。 MapReduce作业是客户端执行的单位,包括输入数据、MapReduce·程序和配置信息,Hadoop通过把作业分为若干小任务来工作,其中包括map任务和reduce任务。 有两种类型的节点控制着作业的执行过程:jobtracker和多个taskreacker。jobtracker通过调度任务在tasktracker上运行,来协调所有运行在系统上的作业。TaskTracker运行任务的同时把进度报告传送到jobtracker,jobtracker记录着每项任务整体进展情况。如果一个任务失败,jobtracker可以重新调度任务到另一个tasktracker。Hadoop把输入的数据划分成等长的小数据发送到MapReduce,称为输入分片,Hadoop为每个分片创建一个map任务,由他来运行用自定义的map函数来分析每个分片中的记录。 最佳分片的大小与HDFS块大小相同 它是最大的可保证存储在单个节点上的数据量,如果分片跨块,就会存在网络传输,与使用本地数据运行map任务相比