![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法数据结构
文章平均质量分 52
叫我峰兄
星光不问赶路人,干就完了!
展开
-
解决Hash冲突四种方法
Hash算法只是一个定义,并没有规定具体的实现 简述 把任意长度的输入,通过Hash算法变换成固定长度的输出,这个输出就是Hash值。哈希值的空间远小于输入的空间,所以可能会发生“哈希碰撞”,即两个不同的输入,产生了同一个输出。Hash算法常用于消息摘要的场景 MD5、SHA都属于Hash算法的实现。 简单使用 凡是涉及到分布式的系统,就会有负载均衡和数据分布的问题。为了让连接(或者数据)能够分布得更均匀,很多时候会使用到Hash算法 Hash取模 (hash(request) % n) 假设我们现在有3转载 2021-06-09 22:27:13 · 2373 阅读 · 0 评论 -
海量数据排序
今天要给100亿个数字排序,100亿个 int 型数字放在文件里面大概有 37.2GB,非常大,内存一次装不下了。那么肯定是要拆分成小的文件一个一个来处理,最终在合并成一个排好序的大文件。 实现思路 1.把这个37GB的大文件,用哈希分成1000个小文件,每个小文件平均38MB左右(理想情况),把100亿个数字对1000取模,模出来的结果在0到999之间,每个结果对应一个文件,所以我这里取的哈希函数是 h = x % 1000,哈希函数取得"好",能使冲突减小,结果分布均匀。 2.拆分完了之后,得到一些几十原创 2021-06-01 14:54:32 · 176 阅读 · 0 评论 -
设计模式
单例模式 class Singleton{ //私有属性,用于保存实例 private static $instance; //构造函数私有化,防止外部创建实例 private function __construct() { } //公有属性 用于测试 public $a; //公有方法 用于获取实例 public static function getInstance(){ .原创 2021-04-25 18:01:48 · 58 阅读 · 0 评论 -
排序算法
1. 冒泡排序 冒泡排序是一种非常容易遵循的算法。你需要遍历数组中的每个元素,以查看它是否更大,如果需要,则需要交换它们。你应该多次执行此任务,最终将不需要任何交换操作,也就是完成了排序。 package main import "fmt" func main() { var n = []int{1, 39, 2, 9, 7, 54, 11} var isDone = false for !isDone { isDone = true var i =原创 2021-04-20 17:00:48 · 66 阅读 · 0 评论