• 欢迎访问 winrains 的个人网站!
  • 本网站主要从互联网整理和收集了与Java、网络安全、Linux等技术相关的文章,供学习和研究使用。如有侵权,请留言告知,谢谢!

常用数据结构(二)

常用数据结构(二)
紧接着上一篇文章常用数据结构(一),我们继续来探讨以下数据结构:HashTable、并查集、树状数组、后缀数组。 1、HashTable 1.1、什么是HashTable HashTable,哈希表,是一种数据结构,可以通过使用称为hash的技术提供从键到值的映射。 key:其中key必须是唯一的,key必须是可以hash; value:value可以重复,……继续阅读 »

winrains 5个月前 (05-19) 55浏览 1个赞

常用数据结构(一)

常用数据结构(一)
本文我们来介绍一下编程中常见的一些数据结构。 为什么要学习数据结构? 随着业务场景越来越复杂,系统并发量越来也高,要处理的数据越来越多,特别是大型互联网的高并发、高性能、高可用系统,对技术要求越来越高,我们引入各种中间件,这些中间件底层涉及到的各种数据结构和算法,是其核心技术之一。如: ElasticSearch中用于压缩倒排索引内存存储空间的FST,用于……继续阅读 »

winrains 5个月前 (05-19) 49浏览 1个赞

记一个 Base64 有关的 Bug

记一个 Base64 有关的 Bug
本文原计划写两部分内容,第一是记录最近遇到的与 Base64 有关的 Bug,第二是 Base64 编码的原理详解。结果写了一半发现,诶?不复杂的一个事儿怎么也要讲这么长?不利于阅读和理解啊(其实是今天有点懒想去休闲娱乐会儿),所以 Base64 编码的原理详解的部分将在下一篇带来,敬请关注。 0x01 遇到的现象 A 向 B 提供了一个接口,约定接口参……继续阅读 »

winrains 7个月前 (03-21) 65浏览 2个赞

简明的 Base64 原理解析

简明的 Base64 原理解析
书接上回,在 记一个 Base64 有关的 Bug 一文里,我们说到了 Base64 的编解码器有不同实现,交叉使用它们可能引发的问题等等。 这一回,我们来对 Base64 这一常用编解码技术的原理一探究竟。 1. Base64 是什么 Base64 是一种基于 64 个可打印字符来表示二进制数据的表示方法。由于 2^6=64,所以每 6 个比特为一个单……继续阅读 »

winrains 7个月前 (03-21) 33浏览 2个赞

什么是Hash一致性算法

什么是Hash一致性算法
1. 一致性Hash算法简介 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应用。 一致性hash算法提出了在动态变化的Cache环境中,……继续阅读 »

winrains 8个月前 (03-07) 53浏览 1个赞

加解密算法最详解

加解密算法最详解
数据签名、加密是前后端开发经常需要使用到的技术,应用场景包括不限于用户登入、数据交易、信息通讯等,不同的应用场景也会需要使用到不同的签名加密算法,或者需要搭配不一样的 签名加密算法来达到业务目标。常用的加密算法有: 对称加密算法; 非对称加密算法; 哈希算法,加盐哈希算法(单向加密); 数字签名。 使用加密签名算法,可以达到下面的安全目标: 保密性:……继续阅读 »

winrains 8个月前 (03-07) 31浏览 1个赞

七大排序算法介绍

七大排序算法介绍
交换排序 冒泡排序 对应代码 void sort() { // 修剪枝叶的优化方法 // 基于原理: // 每一趟完整的循环就对完成一个最大值或者最小值的放置 // 那每一趟都可以删去枝叶,也就是最大值或者最小值的位置 // i的大小也同样可以确定已经完成排序的数值的个数 for (int i……继续阅读 »

winrains 8个月前 (02-29) 43浏览 1个赞

为什么 MD5 不能用于存储密码

为什么 MD5 不能用于存储密码
为什么这么设计(Why’s THE Design)是一系列关于计算机领域中程序设计决策的文章,我们在这个系列的每一篇文章中都会提出一个具体的问题并从不同的角度讨论这种设计的优缺点、对具体实现造成的影响。如果你有想要了解的问题,可以在文章下面留言。 很多软件工程师都认为 MD5 是一种加密算法,然而这种观点其实是大错特错并且十分危险的,作为一个 1992 年第……继续阅读 »

winrains 9个月前 (02-07) 57浏览 2个赞

压缩算法介绍

压缩算法介绍
认识压缩算法 我们想必都有过压缩和 解压缩文件的经历,当文件太大时,我们会使用文件压缩来降低文件的占用空间。比如微信上传文件的限制是100 MB,我这里有个文件夹无法上传,但是我解压完成后的文件一定会小于 100 MB,那么我的文件就可以上传了。 此外,我们把相机拍完的照片保存到计算机上的时候,也会使用压缩算法进行文件压缩,文件压缩的格式一般是JPEG。……继续阅读 »

winrains 11个月前 (12-14) 48浏览 1个赞

二叉查找树的解读和实现

二叉查找树的解读和实现
二叉查找树是将一组无序的数据构建成一颗有序数据的树,其设计思想与二分法类似。很好的提高了海量数据查找效率,使得由从头遍历到尾的方式转为二分查找的方式,时间复杂度从O(n)降低为O(log(n))。 概念 结点:树上的每个元素。 根结点:没有父结点的结点。 父结点:结点的上一级结点。 子结点:结点的下一级结点。 叶子结点:没有子结点的结点。 兄弟结点:拥有……继续阅读 »

winrains 11个月前 (11-26) 43浏览 1个赞