hash

HashSet中值的唯一性

偶尔善良 提交于 2020-02-06 05:26:45
1.我们新建这样一个Student类 package com.example.ownlearn; public class Student { int num; String name; Student(int num,String name){ this.num = num; this.name = name; } } 2.我们知道Set中的值是不可重复的,现在我们做这样一个测试,我们新建两个Student对象,它们的num和name的值完全相同。我们将它们分别插入到Set中,然后将结果打印。 package com.example.ownlearn; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import java.util.HashSet; import java.util.Iterator; @SpringBootApplication public class OwnlearnApplication { public static void main(String[] args) { SpringApplication.run(OwnlearnApplication.class

Get all the Key values as a combined string when a range of keys are defined using ruby

自作多情 提交于 2020-02-06 03:35:50
问题 I have the following code class MyClass def my_method(first,last) #this should take 2 numbers as arguments and should return the keys value(s) as a combined string end private def lines_of_code { 1 => "This is first", 2 => "This is second", 3 => "This is third", 4 => "This is fourth", 5 => "This is fifth" } end m = MyClass.new m.my_method(2,4) # This is secondThis is thirdThis is fourth" I should pass a range to my_method that inturn should return me the combined value string. Sorry if this

Vue前端路由(Vue-router)

梦想的初衷 提交于 2020-02-06 00:59:50
1.路由的概念 路由的本质就是一种对应关系,比如说我们在url地址中输入我们要访问的url地址之后,浏览器要去请求这个url地址对应的资源。 那么url地址和真实的资源之间就有一种对应的关系,就是路由。 路由分为前端路由和后端路由 1).后端路由是由服务器端进行实现,并完成资源的分发 2).前端路由是依靠hash值(锚链接)的变化进行实现 后端路由性能相对前端路由来说较低,所以,我们接下来主要学习的是前端路由 前端路由的基本概念:根据不同的事件来显示不同的页面内容,即事件与事件处理函数之间的对应关系 前端路由主要做的事情就是监听事件并分发执行事件处理函数 2.前端路由的初体验 前端路由是基于hash值的变化进行实现的(比如点击页面中的菜单或者按钮改变URL的hash值,根据hash值的变化来控制组件的切换) 核心实现依靠一个事件,即监听hash值变化的事件 window.onhashchange = function(){ //location.hash可以获取到最新的hash值 location.hash } 前端路由实现tab栏切换: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial

python基础一 day15 内置函数

两盒软妹~` 提交于 2020-02-05 19:39:25
'\r' 回车,回到当前行的行首,而不会换到下一行,如果接着输出的话,本行以前的内容会被逐一覆盖; '\n' 换行,换到当前位置的下一行,而不会回到行首; # print()# input()# len()# type()# open()# tuple()# list()# int()# bool()# set()# dir()# id()# str()# print(locals()) #返回本地作用域中的所有名字# print(globals()) #返回全局作用域中的所有名字# global 变量# nonlocal 变量#迭代器.__next__()# next(迭代器)# 迭代器 = iter(可迭代的)# 迭代器 = 可迭代的.__iter__()# range(10)# range(1,11)# print('__next__' in dir(range(1,11,2)))# dir 查看一个变量拥有的方法# print(dir([]))# print(dir(1))# help# help(str)# 变量# print(callable(print))# a = 1# print(callable(a))# print(callable(globals))# def func():pass# print(callable(func))import time# t

Leetcode刷题java之3. 无重复字符的最长子串

一曲冷凌霜 提交于 2020-02-05 03:48:13
执行结果: 通过 显示详情 执行用时 :13 ms, 在所有 Java 提交中击败了49.96% 的用户 内存消耗 :37.5 MB, 在所有 Java 提交中击败了36.47%的用户 题目: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 示例 3: 输入: "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 思路: 用hashset做一个没有重复字符的滑动窗口 代码: class Solution { public int lengthOfLongestSubstring(String s) { //用hash做一个没有重复字符的滑动窗 int

Mysql 索引

好久不见. 提交于 2020-02-05 02:07:38
一. 存储引擎 1. 什么是存储引擎? 与其他数据库例如Oracle 和SQL Server等数据库中只有一种存储引擎不同的是,MySQL有一个被称为“Pluggable Storage Engine Architecture”(可替换存储引擎架构)的特性,也就意味着MySQL数据库提供了多种存储引擎。用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的存储引擎。MySQL数据库在实际的工作中其实分为了语句分析层和存储引擎层,其中语句分析层就主要负责与客户端完成连接并且事先分析出SQL语句的内容和功能,而存储引擎层则主要负责接收来自语句分析层的分析结果,完成相应的数据输入输出和文件操作。简而言之,就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)。 2. 存储引擎种类 存储引擎 说明 MyISAM 高速引擎,拥有较高的插入,查询速度,但不支持事务 InnoDB 5.5版本后MySQL的默认数据库,支持事务和行级锁定,比MyISAM处理速度稍慢 ISAM MyISAM的前身,MySQL5.0以后不再默认安装 MRG_MyISAM(MERGE) 将多个表联合成一个表使用,在超大规模数据存储时很有用 Memory 内存存储引擎

Java HashMap的原理、扩容机制、以及性能思考

江枫思渺然 提交于 2020-02-05 01:56:32
Java HashMap 说明 此文档所介绍的HashMap是基于JDK1.8之后的。此文受到网上很多其他Java生态爱好者文章的影响,写此文的目的是 系统的由浅入深 介绍下HashMap。在此感谢优秀文章作者的启发,由于自身实力有限,若有纰漏之处还请评论指导。 原理(参考[1][3]) HashMap类似于HashTable,本质都是存储的键值对,也就是 key 、 value , key 用作存储 初始索引 ,通过对其进行一系列运算把 value 映射存储到底层数据结构中。其存储的数据结构(JDK 1.8之后)如下: 数据结构 如上图所示,每个数组是有存储的是一个链表或者红黑树(视情况而定) * 数组 * 链表 * 红黑树 存储过程 graph LR;   key-->|进行Hash运算|key的hash值;   key的hash值-->|和hashMap的长度length-1进行&运算|数组下标index;   数组下标index-->|根据index存储该Entry也就是key, value|该index的数组; * 对key进行hash运算,得到key的hash值。 * 把key的hash值和hashMap的长度length进行&运算,得到index,index即为数据的索引地址,例如0,1,2,3。 * 把value存到 扩容(参考[2]) 性能(参考[4])

Redis的五种数据类型---String, Hash, List, Set, Zset

会有一股神秘感。 提交于 2020-02-04 23:39:56
前言 Redis有五种数据类型: String, Hash, List, Set, Zset,下面对对这几种类型作详细的介绍 一. String (相当于Java中的字符串) 1.1简介: string 是redis最基本的类型,一个key对应一个value string类型是二进制安全的,意思是redis的string可以包含任何数据。比如jpg图片或者序列化对象。 string 类型是Redis最基本的数据类型,一个键最大能存储512MB 二进制安全是指,在传输数据时,保证二进制数据的信息安全,也就是不被篡改,破译等。如果被攻击,能够及时检测出来。 二进制安全特点: <1>编码,解码发生在客户端完成,执行效率高 <2>不需要频繁的编解码,不会出现乱码 1.2 String命令: (命令不用区分大小写) 赋值语法: [1] Redis set 命令常用于设置key的值,如果key已存储值,set 就是写旧值,且无视类型 set key_name value [2] 只有在key不存在时设置key的值。 Setnx(SET if Not exists) 命令在指定的key不存在时,为key设置指定的值 setnx key value //(面试问题) 解决分布锁的方案之一 [3] 同时设置一个或多个key-value对 mset key value [key value....]

Redis源码剖析 字典 结构 ( dict.h/dict.c)

≯℡__Kan透↙ 提交于 2020-02-04 20:09:29
字典又称为符号表、关联数组 、或者映射。是一种用于保存键值对(key-value)的抽象结构数组。 例如:Redis中所有key到value的映射,就是通过字典结构维护,还有hash类型的键值。 1、Redis中字典的实现 Redis的字典是由哈希表实现的,一个哈希表有多个节点,每个节点保存一个键值对。 1.1哈希表(dict.c/dict.h) typedef struct dictht{ dictEntry** table;//存放一个数组的地址,数组中存放哈希节点dictEntry的地址 unsingned long size;//哈希表table的大小,出始大小为4 unsingned long sizemask;//用于将hash值映射到table位置的索引,大小为(size-1) unsingned long used;//记录哈希表已有节点(键值对)的数量 }dictht; 1.2哈希表节点 typedef struct dictEntry{ void *key; //key union{ void* val; uint64_t u64; int64_t s64; double d; }v; //val struct dictEntry *next; //指向下一个节点,用来解决 哈希冲突 }dictEntry; 1.3字典 typedef struct dict{

【Redis源代码剖析】 - Redis内置数据结构之字典dict

雨燕双飞 提交于 2020-02-04 20:07:13
原创作品,转载请标明: http://blog.csdn.net/Xiejingfa/article/details/51018337 今天我们来讲讲Redis中的哈希表。 哈希表在C++中相应的是map数据结构。但在Redis中称作dict(字典)。Redis仅仅是用了几个简单的结构体和几种常见的哈希算法就实现了一个简单的相似高级语言中的map结构。以下我们来详细分析一下dict的实现。 在学习数据结构的时候。我们接触过一种称作“散列表”的结构,能够依据关键字而直接訪问记录。 说的详细一点就是通过把key值映射到表中的一个位置来訪问。从而加快查找速度。 Redis中的dict数据结构和我们之前学过的“散列表”大同小异。总结例如以下: 1、dict的结构 Redis定义了dictEntry、dictType、dictht和dict四个结构体来实现散列表的功能。它们详细定义例如以下: (1)dictEntry结构体 /* 保存键值(key - value)对的结构体,相似于STL的pair。*/ typedef struct dictEntry { // 关键字key定义 void *key; // 值value定义,仅仅能存放一个被选中的成员 union { void *val; uint64_t u64; int64_t s64; double d; } v; //