hash

Hash签名 (数字摘要算法)

ぐ巨炮叔叔 提交于 2020-01-29 21:11:55
一、什么是Hash签名? Hash签名是最主要的数字签名方法,也称之为数字摘要法(Digital Digest)或数字指纹法(Digital Finger Print)。数字摘要就是采用单项Hash函数将需要加密的明文“摘要”成一串固定长度(128位)的密文这一串密文又称为数字指纹,它有固定的长度,而且不同的明文摘要成密文,其结果总是不同的,而同样的明文其摘要必定一致。 二、数字签名和验证的文件传输过程如下: (1) 被发送文件用MD5编码加密产生128bit的数字摘要。 (2) 发送方用自己的私用 密钥 对摘要再加密,这就形成了数字签名。 (3) 将原文和加密的摘要同时传给对方。 (4) 对方用发送方的公共密钥对摘要解密,同时对收到的文件用MD5编码加密产生又一摘要。 (5) 将解密后的摘要和收到的文件在接收方重新加密产生的摘要相互对比。如两者一致,则说明传送过程中信息没有被破坏或篡改过。否则不然。 三、常见Hash算法 : MD2 MD4 MD5 HAVAL SHA 来源: https://www.cnblogs.com/naray/p/4191543.html

在 Vue 中手动实现一个 vue-router

纵饮孤独 提交于 2020-01-29 09:41:09
在 Vue 中手动实现一个 vue-router 单页面应用 router 路由实现原理 1. hash 1.1 hash 实现路由的原理 1.2 hash 实现路由的核心步骤 1.3 hash 实现路由的完整代码 2. history 2.1 history 实现路由的原理 1.2 history 实现路由的核心步骤 1.3 history 实现路由的完整代码 本文要点: 了解单页面应用 router 路由的原理。 通过实战手动实现一个 vue-router 加深单页面路由的理解。 单页面应用 router 路由实现原理 单页面应用可通过 hash 和 history 两种方式实现路由。实现路由要思考两个问题。第一、如何获取当前路径;第二、如何监听当前路径变化。 1. hash hash 的方式即浏览器地址栏中含有 # 标志,该标志后面的部分即为 hash 值。示例: http://localhost:8080/#/index 1.1 hash 实现路由的原理 地址栏中 # 后面的值即为 hash 值。该 hash 值通常为路径 path,可通过 location.hash 获取当前路径。 监听当前路径变化的方法为 onhashchange 。 1.2 hash 实现路由的核心步骤 通过 hash 方式在 Vue 中实现一个简易路由,核心步骤如下: 获取路由参数 options;

dict.c设计思想

試著忘記壹切 提交于 2020-01-29 08:24:52
双hash_table设计 typedef struct dict { dictType * type ; void * privdata ; dictht ht [ 2 ] ; long rehashidx ; int iterators ; } dict ; 作者在dict数据类型中引入了两个hash_table,其作用是为了动态变化hash_table的大小。 按照常规操作,如果我们想要将一个hash_table的大小进行动态变化,我们需要进行两个步骤 1:改变数组大小 2:将old_hash_table内全部元素进行rehash,重新链接至new_hash_table上。 如果我们在瞬时间内完成从old_hash_table到new_hash_table的转化的话,意味着我们必须对old_hash_table的元素全部遍历一遍,这种操作显然是很费时间的,容易导致CPU在一段时间内处于一个很繁忙的状态(这里没有引入线程什么的,所以这个操作在dict内存储很多数据时,很可能致使Redis无法及时相应其他请求,而致使服务质量下降)。 因此这里引入了一个 rehash 状态,表示当前字典正在进行 rehash ,即将old_hash_table数据迁移至new_hash_table的状态。通过阅读源代码,我们会发现这样一个函数 static void _dictRehashStep

转载-教你如何迅速秒杀掉:99%的海量数据处理面试题

为君一笑 提交于 2020-01-29 08:03:39
原文链接:https://blog.csdn.net/v_july_v/article/details/7382693 作者:July 出处:结构之法算法之道 blog 本文经过大量细致的优化后,收录于我的新书《 编程之法:面试和算法心得 》第六章中,新书目前已上架 京东 / 当当 前言 一般而言,标题含有“秒杀”,“99%”,“史上最全/最强”等词汇的往往都脱不了哗众取宠之嫌,但进一步来讲,如果读者读罢此文,却无任何收获,那么,我也甘愿背负这样的罪名 :-),同时,此文可以看做是对这篇文章: 十道海量数据处理面试题与十个方法大总结 的一般抽象性总结。 毕竟受文章和理论之限,本文将摒弃绝大部分的细节,只谈方法/模式论,且注重用最通俗最直白的语言阐述相关问题。最后,有一点必须强调的是,全文行文是基于面试题的分析基础之上的,具体实践过程中,还是得具体情况具体分析,且各个场景下需要考虑的细节也远比本文所描述的任何一种解决方法复杂得多。 OK,若有任何问题,欢迎随时不吝赐教。谢谢。 何谓海量数据处理? 所谓海量数据处理,无非就是基于海量数据上的存储、处理、操作。何谓海量,就是数据量太大,所以导致要么是无法在较短时间内迅速解决,要么是数据太大,导致无法一次性装入内存。 那解决办法呢?针对时间,我们可以采用巧妙的算法搭配合适的数据结构,如 Bloom filter/Hash/bit-map/堆

How to shorten a 64-bit hash value down to a 48-bit value?

这一生的挚爱 提交于 2020-01-29 03:15:07
问题 I already have a 64 bit hash function in a library (C coding), but I only need 48 bits. I need to trim down the 64 bit hash value to a 48 bit value, yet it has to be in a safe manner in order to minimize collision. The hash function is a very good 64 bit hash function. It has been tested with SMHasher (the "DieHarder" hash testing) and proved better than Murmur2. According to my colleagues, the algorithm implemented in the lib for 64-bit hashing is xxHash, tested with SMHasher and got a Q

vue-router原理

筅森魡賤 提交于 2020-01-27 07:01:05
文章目录 用hash、history实现单页面 hash history vue-router 三种模式 hash和history的区别 vue-router的实现 其他问题 1、什么是单页应用,原理? 2、单页面和多页面的区别? 3、Vue-router有哪些钩子?使用场景? 4、完整的路由导航解析流程 5、vue-router的三种跳转方式 用hash、history实现单页面 hash hash原理:hash router 有一个明显的标志是url 中带有#, 我们可以通过onhashchange监听url中的hash来进行路由跳转 # 后面的 fragment 发生改变时,页面不会重新请求,其他参数发生变化,都会引起页面的重新请求 Onhashchange事件触发条件: 这是一个HTML 5新增的事件,当#值发生变化时,就会触发这个事件。IE8+、Firefox 3.6+、Chrome 5+、Safari 4.0+支持该事件。 直接更改浏览器地址,在最后面增加或改变#path; 通过改变location.href或locaion.hash的值 通过触发点击带锚点的连接 浏览器前进后退可能导致hash的变化,前提是两个网页地址中的hash值不同(会留下一个历史记录) 它的使用方法有三种: window.onhashchange = func; <body

高性能编程——不安全的容器类HashMap

守給你的承諾、 提交于 2020-01-27 00:20:05
文章目录 HashMap 带注释的源码 1.7 初始长度和扩容 1.8 红黑树 HashMap 带注释的源码 1.7 /* * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * * */ package java . util ; import java . io . * ; /** * Hash table based implementation of the <tt>Map</tt> interface. This * implementation provides all of the optional map operations, and permits * <tt>null</tt> values and the <tt>null</tt> key. (The <tt>HashMap</tt> * class is roughly equivalent to <tt>Hashtable</tt>, except that it is *

https原理

亡梦爱人 提交于 2020-01-26 04:40:02
一、 什么是HTTPS 在说HTTPS之前先说说什么是HTTP,HTTP就是我们平时浏览网页时候使用的一种协议。HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全。为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。SSL目前的版本是3.0,被IETF(Internet Engineering Task Force)定义在RFC 6101中,之后IETF对SSL 3.0进行了升级,于是出现了TLS(Transport Layer Security) 1.0,定义在RFC 2246。实际上我们现在的HTTPS都是用的TLS协议,但是由于SSL出现的时间比较早,并且依旧被现在浏览器所支持,因此SSL依然是HTTPS的代名词,但无论是TLS还是SSL都是上个世纪的事情,SSL最后一个版本是3.0,今后TLS将会继承SSL优良血统继续为我们进行加密服务。目前TLS的版本是1.2,定义在RFC 5246中,暂时还没有被广泛的使用。 二、 Https的工作原理 HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。TLS/SSL协议不仅仅是一套加密传输的协议

字符串匹配(上)

一曲冷凌霜 提交于 2020-01-26 02:59:00
BF算法 Brute Force,暴力匹配算法/朴素匹配算法 相关概念 主串(长度n) 模式串 (长度m) 子串 思想:主串中,从0 - n-m,依次匹配 最坏时间复杂度:O(n*m) 常用原因 模式串和主串不会太长,不匹配时可跳到下一位重新开始比较,效率比O(n*m)高很多 思想简单,符合KISS设计原则 BF算法实现 String . prototype . indexOf = function ( pattern ) { let str = this let index = - 1 for ( let i = 0 ; i < str . length - pattern . length + 1 ; i ++ ) { let j = 0 //子串与模式串比较 for ( ; j < pattern . length ; j ++ ) { if ( str [ i + j ] == pattern [ j ] ) { continue } else { break } } if ( j == pattern . length ) { index = i break } } return index } var str = 'asdfghjklqwerty' str . indexOf ( 'sd' ) RK算法 Rabin-Karp 思想:用Hash算法,优化子串对比 原理

HashMap,TreeMap,LinkedHashMap学习

被刻印的时光 ゝ 提交于 2020-01-26 01:04:07
Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。 Hashmap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用 Collections的synchronizedMap方法使HashMap具有同步的能力,或者使用ConcurrentHashMap。 Hashtable与 HashMap类似,它继承自Dictionary类,不同的是:它不允许记录的键或者值为空;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了 Hashtable在写入时会比较慢。 LinkedHashMap保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.也可以在构造时用带参数,按照应用次数排序。在遍历的时候会比HashMap慢,不过有种情况例外,当HashMap容量很大,实际数据较少时,遍历起来可能会比LinkedHashMap慢,因为LinkedHashMap的遍历速度只和实际数据有关,和容量无关