·算法实现·
文章平均质量分 53
菠萝科技
"Java并没有衰落.而是刚刚开始"
展开
-
巧用map的computeIfAbsent统计次数
1 //map中的key对应的value值为null,则该key对应value值为new AtomicInteger()且自增加1,key已经存在,value值直接自增1Map<String,AtomicInteger> map=Maps.newHashMap() list.forEach( str-> map.computeIfAbsent(str, k -> new AtomicInteger()).incrementAndGet());2 如果不用...原创 2021-07-27 22:08:52 · 571 阅读 · 0 评论 -
Lucene几种数据结构
FST,倒排链,BKD-Tree,DocValues。原创 2021-06-04 21:58:15 · 477 阅读 · 2 评论 -
flink和sentinel中计算当前时间所属的时间窗口算法
flink中:org.apache.flink.streaming.api.windowing.windows.TimeWindowpublic static long getWindowStartWithOffset(long timestamp, long offset, long windowSize) { return timestamp - (timestamp - offset + windowSize) % windowSize; }sentinel.原创 2021-05-04 16:58:14 · 280 阅读 · 0 评论 -
7-10倍写入性能提升:剖析WiredTiger数据页无锁科技
导语:计算机硬件在飞速发展,数据规模在急速膨胀,但是数据库仍然使用是十年以前的架构体系,WiredTiger 尝试打破这一切,充分利用多核与大内存时代来重新设计数据库引擎,达到 7 - 10 倍写入性能提升。本文由袁荣喜向「高可用架构」投稿,通过分析 WiredTiger 源代码,剖析其卓越性能的背后实现。袁荣喜,学霸君工程师,2015年加入学霸君,负责学霸君的网络实时传输和分布式系统的架构设计和实现,专注于基础技术领域,在网络传输、数据库内核、分布式系统和并发编程方面有一定了解。...转载 2020-09-20 09:41:03 · 308 阅读 · 0 评论 -
Caffeine Cache-高性能Java本地缓存之王(基于LRU算法的优化策略)
前面刚说到Guava Cache,他的优点是封装了get,put操作;提供线程安全的缓存操作;提供过期策略;提供回收策略;缓存监控。当缓存的数据超过最大值时,使用LRU算法替换。这一篇我们将要谈到一个新的本地缓存框架:Caffeine Cache。它也是站在巨人的肩膀上-Guava Cache,借着他的思想优化了算法发展而来。本篇博文主要介绍Caffine Cache 的使用方式,以及Caffine Cache在SpringBoot中的使用。1. Caffine Cache 在算法上的优点-W-Ti转载 2020-08-22 12:00:57 · 2961 阅读 · 1 评论 -
算法堆栈目录
目录1.1 判断括号是否成对出现,且以都是左右成对(不能是"} {" ,这是右左成对)。1.1 判断括号是否成对出现,且以都是左右成对(不能是"} {" ,这是右左成对)。package com.demo.thinking;import java.util.HashMap;import java.util.Stack;public class Parentheses { public static Boolean isMatch(String str)..原创 2020-07-19 17:04:43 · 288 阅读 · 0 评论 -
归并排序java代码实现
aapackage com.demo.thinking;import java.util.ArrayList;import java.util.Arrays;import java.util.List;public class MergeSort { public static void main(String[] args) { List<Integer> integers = Arrays.asList(2, 3, 5, 8, 4, 11, 1, 7原创 2020-07-16 23:46:42 · 309 阅读 · 0 评论 -
算法:链表翻转相关目录
递归和非递归代码如下:package org.example;class Node<T> { T val; Node next; public Node(T val) { this.val = val; } public Node(T val, Node next) { this.val = val; this.next = next; }}public class ReverseLi原创 2020-06-13 11:08:10 · 390 阅读 · 0 评论 -
elasticsearch的深分页(deep-paging)问题原因及解决
1 deep-paging问题引入有90个数字分布到三个分片上,每个分片上有30个数字。shard1上:1 、2、 3 、4 、5 、6 、7 、8、 9 、10 、11 、12 、13 、14、 15、 16、 17 、18、19 、20、 21、22、23、 24 、25 、26 、27、 28、 29 、30、shard2上:31 、32 、33 、34 、35 、36 、...原创 2020-04-25 22:13:49 · 631 阅读 · 0 评论 -
数据结构:Skip List--跳表
本文为转载,原文作者:fanrui原文链接:简书https://www.jianshu.com/p/9d8296562806跳表是一种神奇的数据结构,因为几乎所有版本的大学本科教材上都没有跳表这种数据结构,而且神书《算法导论》、《算法第四版》这两本书中也没有介绍跳表。但是跳表插入、删除、查找元素的时间复杂度跟红黑树都是一样量级的,时间复杂度都是O(logn),而且跳表有一个特性是红黑...原创 2019-12-25 22:06:11 · 618 阅读 · 1 评论 -
用信鸽来解释 HTTPS
转载自:https://www.oschina.net/translate/https-explained-with-carrier-pigeons 英文原文:HTTPS explained with carrier pigeons密码学是一门难以理解的学科,因为它充满了数学定理。但是除非你要实际开发出一套加密算法系统,否则你是没必要强制理解那些深奥的数学定理的。如果你阅读...翻译 2019-04-03 22:01:17 · 327 阅读 · 0 评论 -
网上关于「阿里P7程序员、资深架构师不知 jvm、红黑树」一事的争议
原文链接:https://www.zhihu.com/question/2976473301---------------默认排序winter发言仅代表个人观点157 人赞同了该回答需要知道,所谓面试题,没有任何价值,面试是一个不对等的过程,如果是毫无章法的随机“出题”,那么两个人互相面试不过将会是常态。 正常的面试官不会拿“xx问题会不会”来评价候选人。...原创 2018-12-01 21:17:15 · 1759 阅读 · 2 评论 -
今天属于--港片最后的辉煌--无间道
点击自动播放@无间道原创 2018-10-21 10:51:58 · 267 阅读 · 0 评论 -
java实现:汉诺塔核心代码大白话详解
最近XXX原因,比较久没写博客了,正好这会有点空就想写点东西。本来想写图相关算法,但是图相关东西比较多也比较复杂,一时也很难全面的写出来,即使写出来,也太零星反而更增加了读者的困惑。忽然想起来前两天有网友私信,说基础的递归如斐波那契算法能写出来,但是遇到稍微复杂点的就乱了,他看到小甲鱼教的汉诺塔算法懂原理了,但是看代码时还是感觉似懂非懂,理解的不是特别清晰。这个问题不大,几分钟就可以写好,正好适合...原创 2018-09-23 16:55:45 · 2160 阅读 · 0 评论 -
字符串匹配的KMP算法
原文链接:http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html作者: 阮一峰日期: 2013年5月 1日字符串匹配是计算机的基本任务之一。举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCD...原创 2018-09-16 20:21:20 · 215 阅读 · 0 评论 -
递归获得树形菜单树的两种方式,代码递归和mybatis自查询递归
草稿:1 代码递归1.1 代码优化:代码递归时根据父菜单id去数据库查询子目录,这点可以优化。首先把所有查出所有菜单项list<menu> lists;原来的根据父菜单id去数据库中查询子目录改为遍历lists根据父id查询子目录。1.2 场景优化:把递归菜单树结果放到缓存中,用户进入页面时直接展示。2 mybatis自查询...原创 2018-05-12 09:01:05 · 5836 阅读 · 1 评论 -
java多线程:结合多线程交替打印10次abc实例,对wait/notify使用的彻底理解
接上篇:http://blog.csdn.net/wabiaozia/article/details/79429585有个朋友看点击打开链接 里的三个线程“A线程打印10次A,B线程打印10次B,C线程打印10次C,要求线程同时运行,交替打印10次ABC。” 这个问题的代码,有点不太理解,让我给看下。不理解的原因也很简单,就是对wait和notify理解不深,遇到复杂点的场景会迷糊。对于并发相...原创 2018-03-13 00:32:05 · 3868 阅读 · 1 评论 -
今天属于李志-梵高先生
梵高先生--李志原创 2016-04-14 11:34:02 · 1333 阅读 · 0 评论 -
今天属于伍佰--突然间的自我
原创 2016-05-20 14:03:24 · 680 阅读 · 0 评论 -
二叉树的实现
敬请期待原创 2016-11-05 08:02:58 · 307 阅读 · 0 评论 -
1997盏亮着的电灯,3的倍数的灯的拉一下;再将5的倍数的灯拉一下,最后有多少亮的灯
1997盏亮着的电灯,各有一个拉线开关控制,按顺序编号为1,2,3,…,150.将编号为,3的倍数的灯的拉线各拉一下;再将编号为5的倍数的灯的拉线各拉一下,拉完后亮着的灯数为______盏.敬请期待,后面会公布答案代码答案:http://download.csdn.net/detail/wabiaozia/9674979package demo;import java.util.ArrayLi...原创 2016-11-05 08:06:26 · 1283 阅读 · 1 评论 -
权利的游戏-三眼乌鸦喝水算法Aesop's Fables
三眼乌鸦十分口渴,他用自己的预知未来的能力在临死前飞到了一个巫师家,巫师说凛冬将至,我不会给你水,我只会给你11空瓶子,你可以拿空瓶子去换水,每三个空瓶子可以在狐狸哪里换到一瓶水,乌鸦必须喝到五瓶水才能活下来,最后他会活下来吗?假设巫师给的不是11个空瓶子,而是给了11瓶水,问乌鸦最后总共会喝到多少瓶水?转载标明链接:http://blog.csdn.net/wabiaozia/a原创 2017-08-12 11:00:42 · 729 阅读 · 0 评论 -
权利的游戏-三眼乌鸦喝水算法Aesop's Fables
三眼乌鸦十分口渴,他用自己的预知未来的能力在临死前飞到了一个巫师家,巫师说凛冬将至,我不会给你水,我只会给你11空瓶子,你可以拿空瓶子去换水,每三个空瓶子可以在狐狸哪里换到一瓶水,乌鸦必须喝到五瓶水才能活下来,最后他会活下来吗?假设巫师给的不是四个空瓶子,而是给了四瓶水,问乌鸦最后总共会喝到多少瓶水?package aaa;public class aesop_Fables {原创 2017-08-12 09:01:25 · 1126 阅读 · 0 评论 -
斐波切纳 数列 java
package aaa;import java.util.Date;public class Fibo{// 方式1 public static void fiBoCzene(Long a,Long b,Integer i){ if (i>3) { i--; Long c = null; c=a; a=b; b=c+b; fiBoCzen原创 2017-08-12 13:32:12 · 1300 阅读 · 2 评论 -
汉诺塔
原创 2017-08-12 14:35:33 · 424 阅读 · 1 评论 -
java随机数
草稿 1 真随机数 准随机数 伪随机数2 产生随机数的方式3 假设方法menod()产生的是随机数,那么a*method()+method()是随机数吗?https://www.zhihu.com/question/242979234 java中的随机数是用的问题2的哪种方式...原创 2017-12-20 16:53:53 · 572 阅读 · 7 评论 -
数据结构与算法:三步学会红黑树--图文详解
推荐看书:java数据结构和算法考虑到有些童鞋看”java数据结构与算法”时,难以理解红黑树这一节,我对这一节的核心"插入一个新节点"章节,进行大白话的解释和思路流程的再梳理。为了使得插入节点后的树是红黑二叉树,要怎么变色旋转插入?可以归纳为三种情况,并且这三种情况要按序执行:1 在下行途中的颜色变换: 即遇到两个子节点为红色的父节点时,执行变色,如图1-1中原创 2016-11-18 14:39:26 · 1057 阅读 · 2 评论 -
数据结构与算法:三步学会红黑树之java代码实现
接上篇:http://blog.csdn.net/wabiaozia/article/details/53216228上篇谈到了如何构建一棵红黑树,以及构建过程中的变色与旋转。虽然学会了如何构建红黑树,但是如何用java代码实现,如何将人手动的旋转方式转换为代码描述还是需要一些功夫的。我们可以参照TreeMap的代码。如果不想看可以:1 修正函数可以参考https://www.cn原创 2018-01-04 20:29:01 · 425 阅读 · 0 评论 -
子线程运行10次后,主线程运行100次,子主交叉运行。如此循环50次。
很多同学写这个代码时容易写迷糊。其实只要经过下面几个步骤的分析,你会发现这个问题很简单。1 理清循环50次和子线程运行10次,主线程运行100次,不要交叉在一起循环50次可以看作是调用方操作,调用方可以选择操作50次,也可以选择操作100次。子线程和主线程可以看作被调用方接口,调用方只要调用我了,我就执行xxx次(子线程运行10次,主线程运行100次)。2 注意一点: 子线程运行第一个十次完...原创 2018-03-12 22:48:47 · 638 阅读 · 0 评论 -
java算法:翻转二叉树
节点的的数据结构: public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } }1 java递归实现:public class Solution { public TreeNode invertTree(Tree...原创 2018-02-24 19:08:51 · 1028 阅读 · 1 评论 -
今天属于老鹰乐队--加州旅馆
California原创 2016-04-29 13:11:11 · 514 阅读 · 0 评论