哈希

针对DBA的PostgreSQL新发现

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-05 19:47:32
导读 前段时间新的重大版本的 PostgreSQL 10 发布了! 强烈建议阅读公告、发布说明和“新功能”概述可以在这里、这里和这里。像往常一样,已经有相当多的博客覆盖了所有新的东西,但我猜每个人都有自己认为重要的角度,所以与 9.6 版一样我再次在这里列出我印象中最有趣/相关的功能。 与往常一样,升级或初始化一个新集群的用户将获得更好的性能(例如,更好的并行索引扫描、合并 join 和不相关的子查询,更快的聚合、远程服务器上更加智能的 join 和聚合),这些都开箱即用,但本文中我想讲一些不能开箱即用,实际上你需要采取一些步骤才能从中获益的内容。下面重点展示的功能是从 DBA 的角度来汇编的,很快也有一篇文章从开发者的角度讲述更改。 升级注意事项 首先有些从现有设置升级的提示 - 有一些小的事情会导致从 9.6 或更旧的版本迁移时引起问题,所以在真正的升级之前,一定要在单独的副本上测试升级,并遍历发行说明中所有可能的问题。最值得注意的缺陷是: 所有包含 “xlog” 的函数都被重命名为使用 “wal” 而不是 “xlog”。 后一个命名可能与正常的服务器日志混淆,因此这是一个“以防万一”的更改。如果使用任何第三方备份/复制/HA 工具,请检查它们是否为最新版本。 存放服务器日志(错误消息/警告等)的 pg_log 文件夹已重命名为 “log”。 确保验证你的日志解析或 grep

哈希冲突及四种解决方法

流过昼夜 提交于 2019-12-05 17:23:48
哈希冲突的产生原因 哈希是通过对数据进行再压缩,提高效率的一种解决方法。但由于通过哈希函数产生的哈希值是有限的,而数据可能比较多,导致经过哈希函数处理后仍然有不同的数据对应相同的哈希值。这时候就产生了哈希冲突。 产生哈希冲突的影响因素 装填因子(装填因子=数据总数 / 哈希表长)、哈希函数、处理冲突的方法 解决哈希冲突的四种方法 1.开放地址方法   (1)线性探测    按顺序决定哈希值时,如果某数据的哈希值已经存在,则在原来哈希值的基础上往后加一个单位,直至不发生哈希冲突。    (2)再平方探测    按顺序决定哈希值时,如果某数据的哈希值已经存在,则在原来哈希值的基础上先加1的平方个单位,若仍然存在则减1的平方个单位。随之是2的平方,3的平方等等。直至不发生哈希冲突。   (3)伪随机探测    按顺序决定哈希值时,如果某数据已经存在,通过随机函数随机生成一个数,在原来哈希值的基础上加上随机数,直至不发生哈希冲突。 2.链式地址法(HashMap的哈希冲突解决方法)   对于相同的哈希值,使用链表进行连接。使用数组存储每一个链表。   优点:   (1)拉链法处理冲突简单,且无堆积现象,即非同义词决不会发生冲突,因此平均查找长度较短;   (2)由于拉链法中各链表上的结点空间是动态申请的,故它更适合于造表前无法确定表长的情况;   (3)开放定址法为减少冲突

根父类:Object 类

混江龙づ霸主 提交于 2019-12-05 15:33:37
一、Object类   Java中规定: 如果一个类没有显式声明它的父类(即没有写extends xx),那么默认这个类的父类就是java.lang.Object。   类 Object 是类层次结构的 根类 。每个类都使用 Object 作为超类。    如何理解根父类?     (1)所有对象(包括数组)都实现这个类的方法,即Object类中声明的方法,所有引用数据类型(包括数组)中都有。     (2)所有类的对象的实例化过程,都会调用 Object 的实例初始化方法。     (3)所有的对象都可以赋值给 Object 的变量,或者说 Object 类型的变量,形参,数组可以接受任意类型的对象。 二、常用方法   1、toString() 方法 public String toString()      用于返回对象的信息,建议所有的子类都重写。如果没有重写:返回的字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。     如果直接打印一个对象,或者用对象与字符串进行拼接,默认情况下自动调用这个对象的 toString() 方法。   2、getClass() 方法 public final Class getClass()      该方法返回此 Object 的运行时类。(分为编译时类型与运行时类型)   3

STL hash function的模板特化

妖精的绣舞 提交于 2019-12-05 15:32:41
哈希函数的作用是将一个值映射为一个哈希值,从而根据这个哈希值,在哈希表中对数据进行定位。 template <class _Val, class _Key, class _HashFcn, class _ExtractKey, class _EqualKey, class _Alloc = alloc> class hashtable; STL中定义的hashtable容器包含哈希函数模板参数_HashFcn。_HashFcn既然是一个类类型,又能提供函数的功能,因此是一种仿函数(functor); 仿函数是一个类,在类中重载()运算符,从而由仿函数类对象即可实现函数功能。 在SGI-STL中的stl_hash_fun.h中定义了若干仿函数类: #ifndef __SGI_STL_HASH_FUN_H #define __SGI_STL_HASH_FUN_H #include <stddef.h> __STL_BEGIN_NAMESPACE template <class _Key> struct hash { }; inline size_t __stl_hash_string(const char* __s) { unsigned long __h = 0; for ( ; *__s; ++__s) __h = 5*__h + *__s; return size_t(__h);

redis-cluster配置

萝らか妹 提交于 2019-12-05 15:21:14
为什么要用redis-cluster 1.并发问题 redis官方生成可以达到 10万/每秒,每秒执行10万条命令假如业务需要每秒100万的命令执行呢? 2.数据量太大 一台服务器内存正常是16~256G,假如你的业务需要500G内存, 新浪微博作为世界上最大的redis存储,就超过1TB的数据,去哪买这么大的内存条?各大公司有自己的解决方案,推出各自的集群功能,核心思想都是将数据分片(sharding)存储在多个redis实例中,每一片就是一个redis实例。 各大企业集群方案: twemproxy由Twitter开源 Codis由豌豆荚开发,基于GO和C开发 redis-cluster官方3.0版本后的集群方案 解决方案如下 配置一个超级牛逼的计算机,超大内存,超强cpu,但是问题是。。。。 2.正确的应该是考虑分布式,加机器,把数据分到不同的位置,分摊集中式的压力, 一堆机器做一件事 客户端分片 redis3.0集群采用P2P模式,完全去中心化,将redis所有的key分成了16384个槽位,每个redis实例负责一部分slot,集群中的所有信息通过节点数据交换而更新。 redis实例集群主要思想是将redis数据的key进行散列,通过hash函数特定的key会映射到指定的redis节点上 数据分布原理图 数据分布理论

HASH哈希

余生颓废 提交于 2019-12-05 14:52:14
hash 译:散列、杂凑,作用:把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值,这种转换是压缩映射。 hash特性 1、不可逆。不能通过结果推算出输入,所以又被称为不可逆的算法,也可以作为加密算法存在 2、计算极快。 hash的用途 1、 来源: https://www.cnblogs.com/nanjo4373977/p/11929366.html

drds基础笔记

我是研究僧i 提交于 2019-12-05 11:38:50
帮助文档URL: https://help.aliyun.com/document_detail/29659.html?spm=a2c4g.11186623.6.539.6c5jsL drds知识总结: bug1,分库分表的时候,在表对象中查不到. bug2,分库分表无法进行数据导入,提示表结构找不到. note1,分区键起作用后,可能导致查询出结果主键冲突.主键要提前设定为全局唯一. note2,分区键键值不可修改. note3,如果是雪花生成的,都是16的整数倍,取模后都为0,落在0分库.对于历史数据,统一修改为自增,或者采用其他分区函数. 哈希算法是简单取模,要求拆分列的值的自身分布均衡才能保证哈希均衡。 note4,right_shift是先转换成2进制,然后向右移动位数进行计算,如果原来是16整数倍的数据,如右移位数不够,数据仍不均,导致right_shift处理后的数据还是分布不均匀. (Distributed Relational Database Service) 特点: 分库分表,透明读写分离,分布式事务(结合分布式事务套件 GTS),平滑扩容. 目的:单机数据库遇到的容量(200+mysql实例)和性能瓶颈,最主要是性能问题. 其他技巧: 权限,查看子库,自生成主键 分布式运维指令集 DRDS 提供独有分布式数据库运维指令集,如 SHOW SLOW、TRACE

网络协议-P2P协议

帅比萌擦擦* 提交于 2019-12-05 11:24:15
网络协议-P2P协议 HTTP协议下电影为啥会很慢? FTP协议下电影为啥那么块? FTP文件传输协议 采用两个TCP 连接来传输一个文件。 控制连接:服务器端被动连接,端口是21,由客户端发起。命令从客户端传给服务器,服务器传回的应答。 常见命令:list 获取目录、reter 取文件、store 存文件。 数据连接:当每一个文件在客户端与服务器之间传输时,就创建一个数据连接。 FTP 的两种工作模式 主动模式:主动是相对于服务端来说的。 客户端要先建立控制连接,它随机打开一个大于1024的端口N,与服务器的21端口连接,并告诉服务端,数据连接的端口是N+1。 服务端主动将自己的数据端口20,与客户端的N+1端口连接,构成数据连接。 被动模式:被动也是相对于服务端来说的。 客户端打开两个大于1024的端口,N和 N+1。客户端的N端口与服务端的21连接,发一个PASV 命令,服务端接到命令后打开一个大于1024的端口P,返回“227 entering passive mode”消息,这个消息里有服务端的数据连接端口。 客户端N端口接到服务端的消息后,将N+1端口连接服务器的端口P,构建数据连接。 FTP有个缺点就是单一服务器的带宽有限。因为它使用传统的客户端、服务器的方式。服务器集群的方式本质是一样的。也不是最好的解决办法。 P2P 是什么 P2P 就是 peer-to-peer

GO语言区块链技术---传智黑马(比特币&以太坊)

半城伤御伤魂 提交于 2019-12-05 07:44:27
判断ICO项目: 免费送币的直接Pass 白皮书用简单易懂的语言表达(模式是否清晰) 解决了什么问题,区块链是必须的吗(看产品) 发型代币有无必要,使用系统是否消耗使用代币(如果没有必要,公司的成败和投资者也许没有太大关系) 能否快速上交易所,有交易所的背书 代码是否开源,Github代码更新频率和数量 创世团队的背景(学历、工作),技术团队是否有区块链开发经验 站台的早期投资人,相关领域专家 区块链主要是数字版权和金融,其他都是伪需求,没有区块链也可以把产品做的很棒 ipfs? 比特币的起源: 中本聪,神一样存在的人物 Bitcoin白皮书:A Peer-to-Peer Electronic Cash System 去中心化,P2P分布式的数字货币系统 共识机制---POW工作量证明 运用非对称密码学 区块链作为账本 比特币特性: 硬通货:跨境交易 易携带:只需一个私钥 隐秘性:只暴露钱包地址;非法用途 无货币超发:通货紧缩 Server-Based中心化服务器: C/S、B/S架构 客户端完全信任服务器 DDOS攻击---Distributed Denial of Service分布式拒绝服务攻击 P2P(Peer-to-Peer)网络: 去中心化; 地位对等,无主从之分 用户越多速度越快 抗攻击 拜占庭将军问题(Byzantine Generals Probblem):

android apk 防止反编译技术第五篇-完整性校验(转)

回眸只為那壹抹淺笑 提交于 2019-12-04 22:20:12
一、完整性校验原理 所谓完整性校验就是我们用各种算法来计算一个文件的完整性,防止这个文件被修改。其中常用的方法就是计算一个文件的 CRC32 的值或者计算一个文件的哈希值。我们在防止 apk 被反编译的方法中也可以采用这种方法。我们知道 apk 生成的 classes.dex 主要由 java 文件生成的,它是整个 apk 的逻辑实现。所以我们可以对 classes.dex 文件进行完整性校验,来保证整个程序的逻辑不被修改。如果我们想要保证整个 apk 文件的完整性,也可以对整个 apk 文件进行完整性校验。下面我们分别来实现对 classes.dex 文件和 apk 文件的完整性校验。 二、用crc32对classes.dex文件的完整性进行校验 (1)可以打印出来我们的apk生的classes.dex文件的crc32的值,代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 public class MainActivity extendsActivity { @Override protected void onCreate