
算法与数据结构
文章平均质量分 97
快乐崇拜234
学习笔记
展开
-
java最长重复子串
例如:例如字符串 s =“abcdeabc”输出:abcpublic class Test { public static void main(String[] args) { System.out.println(maxString("ckabcabck")); System.out.println(maxString("abdcdyedhjhyed")); System.out.println(maxString("abcdeabc"));原创 2020-11-29 19:19:01 · 1257 阅读 · 0 评论 -
java 最长不重复子串,最长无重复字符子串
问题描述:输入:abdca 返回:abdc方法一:使用双指针(滑动窗口)来实现。该方法需要配合map保存已经出现过的字符。public static int maxLength(String nums, int begin, int end, int maxStr){ if (null == nums || nums.length() == 0) return 0; if (end>=nums.length()) return maxStr; Ma原创 2020-11-29 16:38:29 · 1396 阅读 · 0 评论 -
LRU算法在MySQL/hbase/Caffeine 中的优化
在上一篇文章中介绍了LRU的原理及实现,但是实际企业级应用中不会直接使用如此简单的LRU算法。本文看看各个优秀的中间件是如何优化LRU算法的。mysql对LRU的优化大家思考一个问题,在我前面讲到的算法实现中,每次访问的数据都会立刻移动到链表的尾端,这样是否是稳定可靠的?答案显然是否定的。实际的应用场景是比较复杂的,大家考虑这样一个场景,你的系统运行了一段时间,缓存都根据LRU算法正常运行,此时,有一个大的查询,数据量比较大,新查询出来的数据根据LRU算法会插入到队尾,此时缓存的数据超出了容量限制,将队原创 2020-11-27 17:11:40 · 1259 阅读 · 1 评论 -
手撸一致性hash算法(java实现)
一、一致性Hash(Consistent Hashing)原理剖析引入一致性哈希算法是分布式系统中常用的算法。一致性哈希算法解决了普通余数Hash算法伸缩性差的问题,可以保证在上线、下线服务器的情况下尽量有多的请求命中原来路由到的服务器。在业务开发中,我们常把数据持久化到数据库中。如果需要读取这些数据,除了直接从数据库中读取外,为了减轻数据库的访问压力以及提高访问速度,我们更多地引入缓存来对数据进行存取。读取数据的过程一般为:图1:加入缓存的数据读取过程对于分布式缓存,不同机器上存储不同对象的数转载 2020-11-24 16:57:02 · 1223 阅读 · 0 评论 -
手撸LRU算法(java实现)
使用javaAPIjava 的LinkedHashMap可以实现LRU算法,LinkedHashMap 本身内部有一个触发条件则自动执行的方法:删除最老元素(最近最少使用的元素)。我们只需要通过参数控制数据排序逻辑和数据删除规则就行了。LinkedHashMap源码中有这么一个注释:<p>The {@link #removeEldestEntry(Map.Entry)} method may be overridden to * impose a policy for removing原创 2020-11-24 16:15:36 · 1323 阅读 · 0 评论 -
计算权重随机数
import lombok.AllArgsConstructor;import lombok.Builder;import lombok.Data;import lombok.NoArgsConstructor;/*** * java 权重随机数生成。 * 如抽奖,每个奖项获奖概率不同。 * * 假如 A 30%;B 20% ; C 50% 概率中奖 * * 方法一: 30...原创 2019-12-16 18:44:43 · 634 阅读 · 0 评论 -
protocol buffer 3 (Protobuf3) ( java 版本 ) 使用入门
文章目录概述windows安装使用Protobuf3编写第一个protobuf程序概述proto3 是 google protocol buffer 的新版本。Protobuf3 应用相当广泛,而且性能优秀,是序列化和网络传输及存储的优秀选择。官方测试数据:本文只是讲述其简单搭建使用,具体语法请参见官方文档或者其中文翻译Protocol Buffer 3 学习笔记Protobu...原创 2019-07-21 14:20:20 · 6097 阅读 · 0 评论 -
二叉搜索树中查找比指定值大的最小值;二叉搜索树中查找比指定值小的最大值
题目要求:1、二叉搜索树中查找比指定值大的最小值;2、二叉搜索树中查找比指定值小的最大值说明:本文二叉搜索树中不包含重复值@Data class Node{ private Node left; private Node right; private int data; public Node(int data)...原创 2019-04-27 15:49:48 · 3673 阅读 · 1 评论 -
Java list 三级排序
java 排序list排序list多字段排序原创 2017-07-05 11:35:17 · 2233 阅读 · 2 评论 -
java选择算法、java查找算法汇总
线性查找顺序查找适合于存储结构为顺序存储或链接存储的线性表public static int query(int[] arrays, int target){ for(int i = 0 ;i < arrays.length ; i ++){ if(arrays[i] == target)return i; } return -1;//没找到}线性查找是性能原创 2017-02-07 13:44:09 · 3027 阅读 · 0 评论 -
java排序算法汇总
java排序算法直接插入排序、希尔排序、简单选择排序、java实现堆排序堆排序java实现冒泡排序快速排序归并排序技术排序原创 2017-02-07 12:18:59 · 1987 阅读 · 0 评论 -
java操作二叉树:构建二叉树;前序、中序、后续、层次遍历
java操作二叉树;java遍历二叉树java前序中序后续遍历二叉树java计算二叉树深度java层次遍历二叉树原创 2017-02-10 17:40:11 · 2894 阅读 · 0 评论