哈希

理解分布式系统常用的负载均衡算法

拈花ヽ惹草 提交于 2019-11-27 22:48:15
分布式系统常用的负载均衡算法 最近在做的系统上使用ES比较多,出于对ES的学习,在了解了ES的负载均衡算法之后,也相应的了解了其它的负载均衡算法,在这里做一个分享。 1:轮询法: 轮询很容易实现,将请求按顺序轮流分配到后台服务器上,均衡的对待每一台服务器,而不关心服务器实际的连接数和当前的系统负载。使用轮询策略的目的是,希望做到请求转移的绝对均衡,但付出的性能代价也是相当大的。为了保证pos变量的并发互斥,引入了重量级悲观锁synchronized,将会导致该轮询代码的并发吞吐量明显下降。 2:随机法: 通过系统随机函数,根据后台服务器列表的大小值来随机选取其中一台进行访问。由概率统计理论得知,随着调用量的增大,其实际效果越来越仅仅与平均分配流量到后台的每一台服务器,也就是轮询法的效果。 3:随机轮询法: 随机轮询,就是将随机法和轮询法结合起来,在轮询节点时,随机选择一个节点作为开始位置的index,此后每次选择下一个节点来处理请求,即(index+1)%size。 这种方式只是在选择第一个节点使用了随机方法,其他与轮询法无异,缺点和轮询一样。 4:源地址哈希法: 源地址哈希的思想是根据服务消费者请求客户端的IP地址,通过哈希函数计算得到一个哈希值,将此哈希值和服务器列表的大小进行取模运算,得到的结果便是要访问的服务器地址的序号。采用源地址哈希法进行负载均衡,相同的ip客户端

区块链技术:架构及进展

狂风中的少年 提交于 2019-11-27 21:49:15
title: 区块链技术:架构及进展 总结归纳 1 引言 传统数据库 传统的关系型数据库管理系统、NoSQL数据库管理系统 单一机构进行管理和维护 单一机构对所有数据拥有绝对的控制权 其他机构无法完整了解数据更新过程 无法信任数据库中的数据 在多个机构协作模式下,中心化的数据库管理系统始终存在信任问题 区块链 是一种去中心化、不可篡改、可追溯、多方共同维护的分布式数据库 能够将传统单方维护的仅涉及自己业务的多个孤立数据库整合在一起,分布式存储在多方共同维护地多节点上,任何一方都无法完全控制这些数据 只按照严格地规则和共识进行更新,从而实现了 可信的多方间的信息共享和监督 避免繁琐的人工对账 提高业务处理效率 降低交易成本 解决数据可信问题所使用的技术 P2P技术 非对称加密 共识机制 块链结构 通过应用区块链技术,无需借助任何第三方可信机构,互不了解、互不信任的多方可实现可信、对等的价值传输 比特币 BitCoin 时间:2008年 作者:中本聪(Satoshi Nakamoto) 区块链源自于比特币的底层技术 可以在没有任何权威中介机构统筹的情况下,互不信任的人可以直接用比特币进行支付。 以太坊 Etherenum 时间:2013年12月 作者:Buterin 可基于内置的以太币(Ether)实现数字货币交易 提供图灵完备的编程语言以编写智能合约(smart contract)

Java集合-哈希

空扰寡人 提交于 2019-11-27 21:07:37
为什么要重写hashcode()和equals()以及他们之间的区别与关系; Object的hashcode()是怎么计算的? 若hashcode方法永远返回1或者一个常量会产生什么结果? HashSet方法里面的hashcode存在哪,如果重写equals不重写hashcode会怎么样? 怎么解决Hash冲突;(开放地址法、链地址法、再哈希法、建立公共溢出区等) 谈谈HashMap,哈希表解决hash冲突的方法; 来源: https://www.cnblogs.com/zwhu1216/p/11376781.html

一致性哈希简介

扶醉桌前 提交于 2019-11-27 19:45:14
1.一致性哈希 什么是一致性哈希,和一般的分布式哈希表 (DHT)有什么区别?一般的 DHT使用以下公式进行数据定位: position = Hash(对象名 ) % N( N是节点个数)。 很明显,如果我们在集群中增减一个节点,都必须要重新计算对象的位置,导致大量的数据迁移的发生。文中的对象表示文件 ( 分布式文件系统 ) 或者数据块 (p2p) 。 2.一致性哈希的改进 3.一致性哈希的实现 参考 来源: https://www.cnblogs.com/dennis-wong/p/11374737.html

nodejs---crypto模块MD5签名

夙愿已清 提交于 2019-11-27 15:10:34
1.MD5是一种常用的哈希算法,用于给任意数据一个“签名”。这个签名通常用一个十六进制的字符串表示: /*md5签名*/ /*引入crypto模块*/ const crypto = require('crypto'); /*suffix加大密码被枚举破解的难度*/ const suffix = 'gfgd2312hgf$#@$@fghghdas更gfgdfgfdg了444' let obj = crypto.createHash('md5'); obj.update('123'); let str = obj.digest('hex'); console.log(str); //202cb962ac59075b964b07152d234b70 2.代码解析 crypto.createHash(algorithm) 创建并返回一个哈希对象,使用指定的算法来生成哈希摘要。 hash.update(data[, input_encoding]) 根据 data 来更新哈希内容,编码方式根据 input_encoding 来定,有 'utf8', 'ascii' 或 'binary'。如果没有传入值,默认编码方式是'utf8'。如果 data 是 Buffer, input_encoding 将会被忽略。 hash.digest([encoding]) 计算传入的数据的哈希摘要

集合的笼统介绍之set(无序)

最后都变了- 提交于 2019-11-27 12:04:46
collection下的另一个集合接口set 它的hashset集合特点:①无序②无下标③不可存储重复 如何判断存储元素是重复HashSet集合,采用哈希表结构存储数据,保证元素唯一性的方式依赖于:hashCode()与equals()方法。 set最重要的一点就是哈希表,也就是hashset的存储数据结构(哈希表) 除此之外,它的创建对象,常用方法,遍历和collection几乎一致,一个案例表明一下。但我们需要注意,它是没有下标的, 所以做不到list集合那样怎么存怎么取,唯一能够判断的也就是哈希值了。 public static void main(String[] args) { //创建hashset对象。string类型的继承set接口的hashset集合,进行存储 Set<String> set=new HashSet<String>(); //给hastset添加自定义对象 set.add("abc"); set.add("bcd"); set.add("abc"); //遍历 for(String s:set){ System.out.println(s); } } 这里应证了,set集合不能存储重复元素,顺序随心情而定。 它默认的长度是16,哈希值是0.75,也就是说,当一次new16个长度集合,我们在存储到12时就需要再创建一个新的。

mysql摘要

穿精又带淫゛_ 提交于 2019-11-27 11:27:01
2011-04-15 (1)mysqld关闭命令:mysqladmin -u root shutdown。注意:windows命令以enter结束不是';',mysql命令行才是 (2)mysql终端接入,修改mysql.user表内容,添加授权用户。insert into mysql.user(Host,User,Password,ssl_cipher,x509_issuer,x509_subject) values("localhost","pppadmin",password("passwd"),'','',''); (3)mysql通过设置mysql.user表的host内容,限定用户的IP端。如:'%',表示:任意IP段的主机都可访问;'192.168.104.%',表示:104网段下的主机才能访问。 (4)mysql 1044访问数据库权限错误。可以通过设置权限命令来控制: mysql>GRANT ALL PRIVILEGES ON *.* TO root[用户名]@'%'[网段] identified by '123456'[密码]; flush privileges; (5)取消权限:revoke all on *.* from root@'192.168.104.%'; flush privileges; (6)缓冲池(innodb_buffer_pool

[收藏]Memcached 集群架构方面的问题

纵饮孤独 提交于 2019-11-27 11:21:20
这里收集了经常被问到的关于memcached的问题 memcached是怎么工作的? memcached最大的优势是什么? memcached和MySQL的query cache相比,有什么优缺点? memcached和服务器的local cache(比如PHP的APC、mmap文件等)相比,有什么优缺点? memcached的cache机制是怎样的? memcached如何实现冗余机制? memcached如何处理容错的? 如何将memcached中item批量导入导出? 但是我确实需要把memcached中的item都dump出来,确实需要把数据load到memcached中,怎么办? memcached是如何做身份验证的? 如何使用memcached的多线程是什么?如何使用它们? memcached能接受的key的最大长度是多少?(250bytes) memcached对item的过期时间有什么限制?(为什么有30天的限制?) memcached最大能存储多大的单个item?(1M byte) 为什么单个item的大小被限制在1M byte之内? 为了让memcached更有效地使用服务器的内存,可以在各个服务器上配置大小不等的缓存空间吗? 什么是binary协议?它值得关注吗? memcached是如何分配内存的?为什么不用malloc/free!?究竟为什么使用slab呢

JavaScript加密库Crypto-JS的使用

走远了吗. 提交于 2019-11-27 05:58:03
先来图片一张,看看效果(一个采用Crypto-JS实现的 工具 展示): CryptoJS (crypto.js) 为 JavaScript 提供了各种各样的加密算法。目前已支持的算法包括: MD5 SHA-1 SHA-256 AES Rabbit MARC4 HMAC HMAC-MD5 HMAC-SHA1 HMAC-SHA256 PBKDF2 散列/哈希 CryptoJS是一个纯javascript写的加密类库( 下载 ),我们使用它只需要加入相关的引用即可: 散列/哈希示例1: <script type="text/javascript" src="http://www.osctools.net/js/CryptoJS/components/core-min.js"></script> <script type="text/javascript" src="http://www.osctools.net/js/CryptoJS/rollups/md5.js"></script> <script type="text/javascript"> alert("你好,欢迎来到开源中国在线工具,这是一个MD5测试 MD5:"+CryptoJS.MD5("你好,欢迎来到开源中国在线工具,这是一个MD5测试")); </script> 点此编辑代码并查看执行效果

AcWing 回文子串的最大长度

Deadly 提交于 2019-11-27 04:10:42
AcWing 回文子串的最大长度 Description 如果一个字符串正着读和倒着读是一样的,则称它是回文的。 给定一个长度为N的字符串S,求他的最长回文子串的长度是多少。 Input 输入将包含最多30个测试用例,每个测试用例占一行,以最多1000000个小写字符的形式给出。 输入以一个以字符串“END”(不包括引号)开头的行表示输入终止。 Output 对于输入中的每个测试用例,输出测试用例编号和最大回文子串的长度(参考样例格式)。 每个输出占一行。 Sample Input abcbabcbabcba abacacbaaaab END Sample Output Case 1: 13 Case 2: 6 题解: 字符串哈希。 “正着读反着读都一样“… …那正着推一遍哈希值,逆着推一遍哈希值,然后直接比较哈希值是否相等就行了。 复杂度大概是O(n ^ 2),如果用尺取的思想可以降到O(n),但是我蒻没想到尺取思想。所以写了二分。 我们知道回文串有奇数回文串和偶数回文串。那么我们对这两种类型的回文串分别做二分,过程中取最大长度就好了。复杂度为O(nlogn) 顺带一提,马拉车算法可以O(n)解决此题。 #include <iostream> #include <cstdio> #include <string> #define N 1000005 #define int