标签:算法

JAVA

从头到尾解析Hash表算法,百度Top K算法详解

herman 1年前 (2023-02-19) 1968浏览

从头到尾解析Hash 表算法 本文分为三部分内容,第一部分为一道百度面试题Top K算法的详解;第二部分为关于Hash表算法的详细阐述;第三部分为打造一个最快的Hash表算法。 第一部分:Top K 算法详解 问题描述 百度...

JAVA

5 种限流算法,7 种限流方式

herman 2年前 (2022-07-30) 2227浏览

前言 最近几年,随着微服务的流行,服务和服务之间的依赖越来越强,调用关系越来越复杂,服务和服务之间的「稳定性」越来越重要。在遇到突发的请求量激增,恶意的用户访问,亦或请求频率过高给下游服务带来较大压力时,我们常常需要通过缓存、限流、熔断降级、...

业余杂谈

Java版协同过滤算法终极实现与解释!

herman 2年前 (2022-02-17) 2163浏览

之前有一个智能音乐推荐系统,用到了协同过滤算法!今天通过 demo 代码,大致的给大家解释一下原理和Java实现。下面直接贴代码: /** * 此方法使用协同过滤算法,大概意思就是从数据库拿到所有的用户收藏和当前的用户收藏作为比对,找出和...

JAVA

Java中的记忆(Memoization)算法

herman 4年前 (2020-04-19) 3000浏览

Memoization 被很多人翻译成记忆,是根据字面意思来翻译的。今天我就来说一说记忆化算法。 它其实是一种很巧妙的思想或设计,被称为算法,我想主要是因为它经常会和一些算法进行搭配使用吧。 Memoization 应该有很大的使用场景...

业余杂谈

Go 语言实现 LFU 算法

herman 4年前 (2020-04-10) 3189浏览

LFU(Least Frequently Used ,最近最少使用算法)也是一种常见的缓存算法。 顾名思义,LFU算法的思想是:如果一个数据在最近一段时间很少被访问到,那么可以认为在将来它被访问的可能性也很小。因此,当空间满时,最小频率访问的...

业余杂谈

漫画算法:骚操作系列(灯泡开关的经典面试题)

herman 4年前 (2020-02-29) 3074浏览

今天为大家分享一道关于“电灯泡”的题目。 话不多说,直接看题。 初始时有 n 个灯泡关闭。第 1 轮,你打开所有的灯泡。第 2 轮,每两个灯泡关闭一次。第 3 轮,每三个灯泡切换一次开关(如果关闭则开启,如果开启则关闭)。第 i 轮,每...

业余杂谈

什么是数组?

herman 4年前 (2020-02-17) 1782浏览

今天要介绍的主角就是-数组,数组也是数据呈线性排列的一种数据结构。与前一节中的链表不同,在数组中,访问数据十分简单,而添加和删除数据比较耗工夫。这和什么是数据结构那篇文章中讲到的姓名按拼音顺序排列的电话簿类似。 数组 数组结构 如...

业余杂谈

什么是链表?

herman 4年前 (2020-02-17) 1732浏览

在了解完什么是数据结构之后,让我们一起来探索下数据结构中常见的一种—链表。 链表 链表是数据结构之一,其中的数据呈线性排列。在链表中,数据的添加和删除都较为方便,就是访问比较耗费时间。 指针 如上图所示就是链表的概念图,Bl...

业余杂谈

什么是数据结构?

herman 4年前 (2020-02-17) 5377浏览

本篇文章主要来介绍什么是数据结构。 首先让我们来看一张图片: 数据结构 数据存储于计算机的内存中。内存如上图所示,形似排成 1 列的箱子,1 个箱子里存储 1 个数据。 数据存储于内存时,决定了数据顺序和位置关系的便是数据结...

业余杂谈

简单百行Java代码解世界最难九宫格

herman 4年前 (2020-02-04) 2000浏览

世界最难九宫格到底有多难?据说,很多数学家都搞不定!真的是这样吗?今天我们一起来使用 Java 搞定它。 芬兰数学家因卡拉花费 3 个月设计出了世界上迄今难度最大的数独游戏,而且它只有一个答案。因卡拉说只有思考能力最快、头脑最聪明的人才能破解...

SQL

图解B+树的插入过程

herman 5年前 (2019-07-10) 4733浏览

B+ 树在现代数据库中很常见,如果我们了解它,在工作中可能对性能优化会有更好的帮助! 最近我一直在思考 B+ 树的高度是由什么决定的。知道我了解了 B+ 树的插入过程,才有一种恍然大悟的感觉! 网上的一些资料杂乱无章,不同的数据库可能还...

JAVA

头条的算法面试题:简洁版的最优分单法

herman 5年前 (2019-07-03) 3635浏览

今天中午,发了一个微博,13 分钟,1.4 万的阅读。 宏颜获水 昨天,有网友给我抛出了一道算法题,说是一道头条的面试题。 听说,头条的算法是很牛的。我不一定会,所以,发到了群里。没想到大家的热情超出我的预期,很多人给出了思路,还...

JAVA

面试题:JDK6为啥默认排序是归并排序呢?

herman 5年前 (2019-06-14) 2782浏览

这是因为 Java 做为一个平台型语言,对于稳定性要求较高!归并有一个快排没有的优点,就是归并排序是稳定的。 因为合并排序比较稳定,比快排稳定,快排有可能时间复杂度达到 O(n ^ 2),但是合并排序就相对趋于 O(nlogn),但是合并排序...