
------【数据结构与算法】
文章平均质量分 89
Mr小林
软件工程师的成才之路。
展开
-
接口限流算法及Redis:漏桶算法&令牌桶算法
工作中对外提供的API 接口设计都要考虑限流,如果不考虑限流,会成系统的连锁反应,轻者响应缓慢,重者系统宕机,整个业务线崩溃,如何应对这种情况呢,我们可以对请求进行引流或者直接拒绝等操作,保持系统的可用性和稳定性,防止因流量暴增而导致的系统运行缓慢或宕机。在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流缓存:缓存的目的是提升系统访问速度和增大系统处理容量降级:降级是当服务器压力剧...转载 2020-03-23 20:38:00 · 5258 阅读 · 0 评论 -
Java快速排序
高快省的排序算法有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。假设我们现在对“6 1 2 7 9 3 4 5 10 8”这个10个数进行排序。首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到了,就是一个用来参照的数,待会你就知道它用来做啥的了)。为了方便,就让第一个数6作为基准数吧。接下来,需要将这个序列中所有比基准数大的数放...转载 2020-03-13 15:05:58 · 146 阅读 · 0 评论 -
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。时间复杂度都是O(1)
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。要求:使得时间复杂度都是O(1)完成如下的函数:import java.util.Stack;public class Solution { public void push(int node) { } public void pop() ...转载 2019-11-14 14:17:54 · 237 阅读 · 0 评论 -
JAVA算法:按照给定的段落统计单词出现次数(JAVA代码)
JAVA算法:按照给定的段落统计单词出现次数(JAVA代码)写一个 JAVA程序以统计一个文本文件words.txt中每个单词出现的频率。为了简单起见,你可以假设:words.txt只包括小写字母和' '。每个单词只由小写字母组成。单词间由一个或多个空格字符分隔。示例:假设 words.txt 内容如下:the day is sunny the thethe s...转载 2019-09-05 13:52:58 · 505 阅读 · 0 评论 -
java 字符串去重
对java 字符串去重处理:System.out.println(removeDuplicateLetters("abacbad"));// 字符串去重 public static String removeDuplicateLetters(String s){ if(StringUtils.isEmpty(s)){ return ...原创 2019-09-04 15:13:57 · 1133 阅读 · 0 评论 -
用两个栈实现队列
一、题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。解题思路:因队列的性质是先进先出,而栈的性质是先进后出,先进的在栈底部,后进的在栈顶。因此考虑将栈(当成一个容器)倒过来,则先进的元素在上面,后进的在下面;为避免元素倒掉,则采用另一个栈来托住存储倒出来的元素。另外往第二个栈里面到,为避免麻烦,则选择在栈2中没有元素了之后再倒把栈1的元素全...转载 2019-09-04 14:38:26 · 123 阅读 · 0 评论 -
无重复字符的最长子串
给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最...转载 2019-09-03 17:30:19 · 124 阅读 · 0 评论 -
【算法--栈】有效的括号
给定一个只包括 '(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例2:输入: "()[]{}"输出: true示例3:输入: "(]"输出: false示例4:输...原创 2019-09-03 15:16:05 · 170 阅读 · 0 评论 -
链表合并
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4/*** Definition for singly-linked list.* public class ListNode {* ...原创 2019-08-30 17:09:43 · 101 阅读 · 0 评论 -
删除单链表的给定节点(非末尾)
此删除法,只给了需要删除的那个节点!请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为5的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入: head = [4,5...原创 2019-08-19 14:20:00 · 172 阅读 · 1 评论 -
为什么java Hashmap 中的加载因子是默认为0.75
前几天在一个群里看到有人讨论hashmap中的加载因子为什么是默认0.75。HashMap源码中的加载因子static final float DEFAULT_LOAD_FACTOR = 0.75f; 当时想到的是应该是“哈希冲突”和“空间利用率”矛盾的一个折衷。跟数据结构要么查询快要么插入快一个道理,hashmap就是一个插入慢、查询快的数据结构。加载因子是表示Hs...转载 2020-04-01 09:17:17 · 1026 阅读 · 1 评论 -
HashMap扩容死循环问题
https://blog.youkuaiyun.com/Leon_cx/article/details/81911223原创 2020-03-31 23:04:42 · 201 阅读 · 0 评论 -
MySql 保证事务的原子性和持久性
文章目录1、前言2、undo日志2.1 作用2.2 举例2.3 原理3、redo日志3.1 作用3.2 举例3.3 原理1、前言为了实现事务的原子性和持久性,mysql引入了undo和redo日志(即undo log和redo log)。本篇博客来讲解下undo和redo的概念,以及mysql如何利用undo和redo进行异常宕机恢复。2、undo日志2.1 作用un...转载 2020-03-31 18:55:10 · 622 阅读 · 0 评论 -
【智能】Java 实现地名语义优化
/** * * 编程题: * 给定一个地名字典[牛圈子沟镇,沅陵县,番禺区,哈达镇,灵山镇,塘尾街道,高米店街道] ,实现一个模糊匹配算法,通过拼音和文字进行模糊匹配,使得一些包含错误的输入地址也能得到正确的输出。算法需要通过下面的测试例: * 牛圈子沟镇->牛圈子沟镇 * 有电子沟镇 ->牛圈子沟镇 * 园林县 ->沅陵县 * 藩禺期->番禺区 * 好达...原创 2020-03-19 18:59:09 · 529 阅读 · 0 评论 -
Java版本布隆过滤器
布隆过滤器 布隆过滤器主要用于判断一个元素是否在一个集合中,它可以使用一个位数组简洁的表示一个数组。它的空间效率和查询时间远远超过一般的算法,但是它存在一定的误判的概率,适用于容忍误判的场景。如果布隆过滤器判断元素存在于一个集合中,那么大概率是存在在集合中,如果它判断元素不存在一个集合中,那么一定不存在于集合中。常常被用于大数据去重。算法思想 布隆过滤器算法主要思想就是利用k...转载 2020-03-18 16:58:59 · 179 阅读 · 0 评论 -
5分钟了解红黑树二叉树
前戏红黑树,对很多童鞋来说,是既熟悉又陌生。熟悉是因为在校学习期间,准备面试时,这是重点。然后经过多年的荒废,如今已经忘记的差不多了。如果正在看文章的你,马上快要毕业,面临着找工作的压力;又或者你觉得需要将这块知识重新复习一遍;又或者只是看看,那么恭喜你,赚到了。那么我将带领大家重新认识下红黑树,用简单的语言,搞懂红黑树。在学习红黑树之前,咱们需要先来理解下二叉查找树(BST)...转载 2020-02-29 10:15:19 · 362 阅读 · 0 评论 -
Lucene的全文检索算法
1. 什么是lucene?lucene是apache组织下的一个全文检索引擎工具包, 就是一堆jar包, 放入tomcat下不可以独立运行.2. lucene的作用?优化查询速度, 在海量数据查询的时候, 可以优化查询速度 我们可以使用lucene来构建像百度, 谷歌, 必应这样的全文检索引擎系统3. 应用领域:互联网全文检索引擎: 百度, 谷歌, 必应 站内全文检索引擎: 天猫, 京东的搜索原创 2016-12-30 22:18:50 · 2783 阅读 · 2 评论 -
Linux 安装 utf8mb4格式的mysql
1. Mysql安装1. yum -yinstall zlib zlib-devel bzip2 bzip2-devel openssl openssl-devel xz-libs gccgcc-c++ pcre pcre-devel zlib libeventopenssl-clients nfs-utils rpcbind rsync ntpdate libselinux-python原创 2017-05-12 18:56:58 · 1368 阅读 · 3 评论 -
深入理解HashMap
/** *@author annegu *@date 2009-12-02 */ Hashmap是一种非常常用的、应用广泛的数据类型,最近研究到相关的内容,就正好复习一下。网上关于hashmap的文章很多,但到底是自己学习的总结,就发出来跟大家一起分享,一起讨论。 1、hashmap的数据结构 要知道hashmap是什么,首先要搞清楚它的数据结构,在java编程语言中,最基...转载 2018-06-14 14:00:24 · 211 阅读 · 0 评论 -
链表相关知识总结
这份笔记整理了整整一个星期,每一行代码都是自己默写完成,并测试运行成功,同时也回顾了一下《剑指offer》这本书中和链表有关的讲解,希望对笔试和面试有所帮助。本文包含链表的以下内容: 1、单链表的创建和遍历 2、求单链表中节点的个数 3、查找单链表中的倒数第k个结点(剑指offer,题15) 4、查找单链表中的中间结点 5、合并两个有序的单链表,合并之后的链表依然...原创 2018-10-22 17:33:19 · 217 阅读 · 0 评论 -
KMP算法优化与详解
视频地址:https://www.bilibili.com/video/av11866460?from=search&seid=17935165392348185883首先需要建立前缀表:1.KMP算法1.1 定义 Knuth-Morris-Pratt 字符串查找算法,简称为 “KMP算法”,常用于在一个文本串S内查找一个模式...原创 2019-04-03 14:29:56 · 440 阅读 · 0 评论 -
几种常见的算法排序
前言:我们常用的排序算法有插入排序(直接插入排序、希尔排序)、选择排序(简单选择排序、堆排序)、交换排序(冒泡排序、快速排序)、归并排序、基数排序。1、插入排序 (1)直接插入排序 直接插入排序(InsertionSort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止。原创 2016-09-10 00:02:35 · 864 阅读 · 1 评论