哈希函数

概念

什么是哈希函数?

定义其实很简单,哈希函数其实就是一种映射关系,它可以把任意长度的数据映射为固定长度的数据,输出一般称为摘要(digest) ,就比如常见的 md5 算法,可以将输入映射成 128 bits

$$\{0, 1\}^* \overset{map}{\longrightarrow} \{0,1\}^n$$

同时,也正因为说,哈希函数将任意长度的输入映射成固定长度的输出,因为输入空间远大于输出空间,所以必然会存在冲突,比如下面的这种情景。不过,在实际使用的时候,必须要求哈希函数具备一定的安全性。

阅读更多

如何搭建个人博客?

前言

每一个技术同学都希望能够拥有一份自己的博客,有时候在上面写写东西,不需要太多,不需要炫彩夺目,简简单单就好,如果自己的文章能够帮助到他人那就更加欢喜不得了。

第一次看到 CSDN 上的写的一篇文章如此受大家的喜欢,甚是喜悦,后来又陆陆续续写了很多文章,不论是写代码时遇到的 bug 解决思路,还是刚学习某门语言时碰到的问题,亦或是学的某些算法等等。

收到 GitHub 上许多同学的点赞之后,也越来越喜欢开源自己写的 Project,同时 GitHub 上有着许许多多的有些仓库值得我们去学习。

CSDN掘金 上写了这么些文章,但总是觉点欠缺点什么,前不久看到其他同学的博客,于是想着搭建自己的一份博客,一来可以方便内容的聚集,二来也算是满足自己的一个小小的愿望,谁不想要有自己的博客呢😄

阅读更多

Git 基本使用

概念

当我们看到 Git 的时候,涌现上来的第一个想法就是 Git 是什么,我们为什么要使用 Git

首先解决一下第一个问题,Git 是什么?

Git 官网上有一段说明: Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. 翻译一下就是说:Git 是一个免费的开源分布式版本控制系统,旨在快速且高效地处理从小型到大型的所有项目。

阅读更多

动手写一个 HTTP 正向代理

概念

首先我们来了解一下 HTTP 代理的相关概念,通常来说,有两类 HTTP 代理,一类是正向代理,一类是反向代理,虽都是代理,但仍有区别。

我们平时使用的 VPN 就是正向代理,我们指定一个服务器,然后通过正向代理去连接这个服务器获取资源

阅读更多

八大排序算法及其代码实现

选择排序

原理

每次选择数组中的最小元素,排在第一个位置

算法步骤

1
2
3
4
5
6
7
8
[38,65,97,76,13,27,49]
13 [65 97 76 38 27 49]
13 27 [97 76 38 65 49]
13 27 38 [76 97 65 49]
13 27 38 49 [97 65 76]
13 27 38 49 65 [97 76]
13 27 38 49 65 76 [97]
13 27 38 49 65 76 97
阅读更多