摘要:简介:RocketMQ 作为一款基于磁盘存储的中间件,具有无限积压能力,并提供高吞吐、低延迟的服务能力,其最核心的部分必然是它优雅的存储设计。 RocketMQ 作为一款基于磁盘存储的中间件,具有无限积压能力,并提供高吞吐、低延迟的服务能力,其最核心的部分必然是它优雅的存储设计。 存储概述 Rock
阅读全文
lotus贵有恒何必三更眠五更起 最无益只怕一日曝十日寒 |
|
12 2022 档案
摘要:简介:RocketMQ 作为一款基于磁盘存储的中间件,具有无限积压能力,并提供高吞吐、低延迟的服务能力,其最核心的部分必然是它优雅的存储设计。 RocketMQ 作为一款基于磁盘存储的中间件,具有无限积压能力,并提供高吞吐、低延迟的服务能力,其最核心的部分必然是它优雅的存储设计。 存储概述 Rock
阅读全文
摘要:一、基本概念 字符串匹配是计算机科学领域中最古老、研究最广泛的问题之一,层出不穷的前辈们也总结了非常多经典的优秀算法,例如 BF 算法、RK 算法、BM 算法、KMP 算法,今天我介绍的主角是 BM 算法。 字符串匹配可以简单概括为前缀匹配,后缀匹配,子串匹配,下面的讲解我都以最常见的子串匹配为例。
阅读全文
摘要:BF算法,即暴力(Brute Force)算法,是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,依次比较下去,直到得出最后的匹配结果。BF算法是一种蛮力算
阅读全文
摘要:/** * rk字符串匹配算法,主要引入了hash的概念, * 利用子串的hash值依次对比主串相应长度的子串hash值 * 并对hash值相同的子串进行匹配对比 */ public class RKSearch { /** * rk算法入口 * @param t 主字符串 * @param p 子
阅读全文
摘要:文章目录一、前言二、类加载器三、双亲委派机制 1、什么是双亲委派 2、为什么要双亲委派? 四、破坏双亲委派 1、直接自定义类加载器加载 2、跳过AppClassLoader和ExtClassLoader 3、自定义类加载器加载扩展类 4、Tomcat中破坏双亲委派的场景 5、一个比较完整的自定义类加
阅读全文
摘要:为什么需要AtomicInteger原子操作类? 对于Java中的运算操作,例如自增或自减,若没有进行额外的同步操作,在多线程环境下就是线程不安全的。num++解析为num=num+1, 明显,这个操作不具备原子性,多线程并发共享这个变量时必然会出现问题。 测试代码如下: public class
阅读全文
摘要:一. 性能对比 阿里开发手册推荐jdk8使用LongAdder替代AtomicLong 示例代码 题目:热点商品点赞计算器,点赞数加加统计,不要求实时精确。50个线程,每个线程100W次,统计总点赞数 比较synchronized、AtomicInteger、AtomicLong、LongAdder
阅读全文
摘要:1. 概述 AtomicLong通过循环CAS实现原子操作,缺点是当高并发下竞争比较激烈的时候,会出现大量的CAS失败,导致循环CAS次数大大增加,这种自旋是要消耗时间cpu时间片的,会占用大量cpu的时间,降低效率。 那这个问题如何解决呢? JUC给我们提供了一个类,LongAdder, 它的作用
阅读全文
摘要:一、原子累加器我们都知道,原子整型可以在线程安全的前提下做到累加功能,而今天介绍的LongAdder具有更好的性能 我们先来看原子累加器和原子整型做累加的对比使用: private static <T> void demo(Supplier<T> supplier, Consumer<T> acti
阅读全文
摘要:面试官:今天我们来聊聊CAS吧?你对CAS了解多少? 候选者:好,CAS的全称为compare and swap,比较并交换 候选者:虽然翻译过来是「比较并交换」,但它是一个原子性的操作,对应到CPU指令为cmpxchg 面试官:好家伙,CPU指令你都知道? 候选者:这没什么,都是背的。 面试官:…
阅读全文
摘要:目录 CAS简介 CAS思路 CAS使用场景 CAS问题 总结 CAS简介 CAS的英文全称是Compare-And-Swap,意思就是比较并交换,他是原子类的底层原理,同时也是乐观锁的原理,CAS的特点是避免使用互斥锁,当多个线程同时更新同一个变量时,只有一个线程可以更新成功,其他的线程都会更新失
阅读全文
摘要:UncaughtExceptionHandler在 Thread API 中提供了 UncaughtExceptionHandler ,它能检测出某个线程由于未捕获的异常而终结的情况,能有效地防止线程泄漏问题当一个线程由于未捕获异常而退出时, JVM 会把这个事件报告给应用程序提供的 Uncaugh
阅读全文
摘要:https://zhuanlan.zhihu.com/p/431240843 1 递归算法 1.1 算法策略 1.2 适用场景 1.3 使用递归算法求解的一些经典问题 DOM树为例 2 分治算法 2.1 算法策略 2.2 适用场景 2.3 使用分治法求解的一些经典问题二分查找 3 贪心算法 3.1
阅读全文
摘要:贪心算法的产生背景是什么?它主要解决的是哪一类的问题?这些问题可以总结成一个固定的什么样的模型? 产生背景没了解过,但是我以前学建模的时候是这样理解的: 贪心算法是一种思路,而非固定的操作方法;贪心算法叫短视算法更贴切,因为它只考虑当前最佳的解决方法。至于它能解决哪类问题,我认为使用它并不一定能“解
阅读全文
摘要:每次做选择的时候都做出当下最好的选择,而不考虑将来的后果。并且期望最终得到的结果是全局最优的。 ——贪心算法 - Greedy Algorithm 什么时候该使用贪心算法 针对一组数据,定义了限制值。现在需要我们从中选出几个数据,在满足限制值的情况下,使期望值最大。 这个不难理解,比如知乎上这个很火
阅读全文
摘要:前言 在上一篇文章动态规划的文章中,我们先由 Fibonacci 例子引入到了动态规划中,然后借助兑换零钱的例子,分析了动态规划最主要的三个性质,即: 重叠子问题 最优子结构 状态转移方程 但是动态规划远不止这么简单。 今天这篇文章,让我们深入动态规划,一窥动态规划的本质。 我们既然要彻底搞清楚动态
阅读全文
摘要:前言 我们刷leetcode的时候,经常会遇到动态规划类型题目。动态规划问题非常非常经典,也很有技巧性,一般大厂都非常喜欢问。今天跟大家一起来学习动态规划的套路,文章如果有不正确的地方,欢迎大家指出哈,感谢感谢~ 什么是动态规划? 动态规划的核心思想 一个例子走进动态规划 动态规划的解题套路 lee
阅读全文
摘要:一、动态规划三板斧 状态转移公式 循环 或 递归 性能优化 二、WHY 1、状态转移公式 动态规划与分治不一样,分治的问题是相互独立的,而动态规划的各个状态是有关联关系的。比如背包问题,你选择了 i 物品之后,背包的剩余容量要发生变化吧,对装别的物品就有影响了。 状态转移公式就是刻画这种关联的,一旦
阅读全文
摘要:链接:https://www.zhihu.com/question/23995189/answer/1094101149 对于动态规划,春招秋招时好多题都会用到动态规划,一气之下,再 leetcode 连续刷了几十道题 之后,豁然开朗 ,感觉动态规划也不是很难,今天,我就来跟大家讲一讲,我是怎么做动
阅读全文
摘要:链接:https://www.zhihu.com/question/23995189/answer/613096905来源:知乎 0. intro 很有意思的问题。以往见过许多教材,对动态规划(DP)的引入属于“奉天承运,皇帝诏曰”式:不给出一点引入,见面即拿出一大堆公式吓人;学生则死啃书本,然后突
阅读全文
摘要:我们之前说了二叉树基础及二叉的几种遍历方式及练习题 本文大纲 前序遍历 前序遍历的顺序是, 对于树中的某节点,先遍历该节点,然后再遍历其左子树,最后遍历其右子树. 我们先来通过下面这个动画复习一下二叉树的前序遍历。 迭代 我们试想一下,之前我们借助队列帮我们实现二叉树的层序遍历, 那么可不可以,也借
阅读全文
摘要:学算法的时候,递归确实是最绕的,这个东西怎么说呢,思路比较反自然思维.... 为啥说它反思维呢:自己调自己,而因为你在调用自己的时候只用了一个Fn-1,但事实上这个Fn-1代表了超级多个Fn-2Fn-3......,这是最让人思维感到难受的地方,但是用久了发现:真香 你只需要明白一个思想,就是面对一
阅读全文
摘要:作者:老刘链接:https://www.zhihu.com/question/31412436/answer/724915708 一. 引子 大师 L. Peter Deutsch 说过:To Iterate is Human, to Recurse, Divine.中文译为:人理解迭代,神理解递归
阅读全文
摘要:很多同学为什么学习递归 一看就会,一写就废! 这次我们要好好谈一谈递归,为什么很多同学看递归算法都是“一看就会,一写就废”。 主要是对递归不成体系,没有方法论,每次写递归算法 ,都是靠玄学来写代码,代码能不能编过都靠运气。 本篇将介绍前后中序的递归写法,一些同学可能会感觉很简单,其实不然,我们要通过
阅读全文
摘要:前言 递归是算法中一种非常重要的思想,应用也很广,小到阶乘,再在工作中用到的比如统计文件夹大小,大到 Google 的 PageRank 算法都能看到,也是面试官很喜欢的考点 最近看了不少递归的文章,收获不小,不过我发现大部分网上的讲递归的文章都不太全面,主要的问题在于解题后大部分都没有给出相应的时
阅读全文
摘要:不是每个程序员天生对递归理解深刻,刚入大一时候,当别人写出第一个求最大公约数的递归函数时,对其多么的惊叹,竟然可以不用循环,竟然代码可以这么简洁,确实递归在大多数情况下实现时候代码很短,大部分人也知道递归,也能基本看懂递归,可是却经常不知道怎么写,或者写出来的递归经常死循环,写算法往往也是学的是套路
阅读全文
摘要:i++和++i单独存在时,产生的效果都是一样的,都是i的值+1 int i=3; i++; //i=3+1=4 System.out.println(i); //输出i的值为4 ++i; //i=4+1=5 System.out.println(i); //输出i的值为5 i++和++i参与运算时产
阅读全文
摘要:本文主要分两部分: 手动实现数组拷贝功能 使用并分析System类中的数组拷贝方法 1.手动实现数组拷贝功能 首先来看看我们的需求:有两个已知数组如上图,从src数组中拷贝3,4,5,6元素到dest数组中,需求这么简单?还么完呢铁子,将元素拷到dest数组中下标从5开始的地方(也就是3拷贝到des
阅读全文
摘要:单例模式特点:① 单例类只能有一个实例② 私有构造方法,不允许通过其他类创建单例类的实例③ 提供静态get方法返回单实例 饿汉式:类加载的时候就创建实例懒汉式:类加载时不创建实例,第一次调用get方法时才创建实例 饿汉式优点:简单,调用时速度快,无需考虑创建实例时线程安全问题饿汉式缺点:占用内存,可
阅读全文
摘要:题目描述: 标签:树 深度优先搜索 递归 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 代码: 思路分析:思路其实同二叉树的最大深度。 1、递归结束的条件是,当根节点为null时,返回0。 2、求
阅读全文
摘要:单例模式(来自菜鸟教程) 单例模式(Singleton Pattern)是Java中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接
阅读全文
摘要:目录 一、什么是单例模式? 二、单例模式的应用场景 三、两种典型的方式实现单例模式 1.饿汉模式 2.懒汉模式 3.理解懒汉模式和饿汉模式 四、单例模式和线程的关系 1.饿汉模式是否线程安全? 2.懒汉模式线程安全吗?为什么? 2.1 如何改进懒汉模式?让代码变得线程安全呢? ———————————
阅读全文
摘要:文章目录1、内存空间有限,当缓存满的时候,如何淘汰缓存?2、实现LRU demo 使用Java容器LinkedHashMap 哈希表(HashMap)+双向链表 1、内存空间有限,当缓存满的时候,如何淘汰缓存?FIFO(First In First Out)先进先出LFU(Least Frequen
阅读全文
摘要:1.基于内存的key-value数据库2.基于c语言编写的,可以支持多种语言的api //set每秒11万次,取get 81000次3.支持数据持久化4.value可以是string,hash, list, set, sorted set 使用场景1. 去最新n个数据的操作2. 排行榜,取top n
阅读全文
摘要:通过了解 CH 的几大特性了解千亿级企业 ClickHouse 实时处理引擎架构设计、核心技术设计、运行机理全流程。 1 初始 ClickHouse 1.1 什么是 ClickHouse 1.2 ClickHouse 的优缺点 1.3 谁在用 ClickHouse 3 数据引擎 3.1 库引擎 3.
阅读全文
摘要:(1)select==>时间复杂度O(n) 它仅仅知道了,有I/O事件发生了,却并不知道是哪那几个流(可能有一个,多个,甚至全部),我们只能无差别轮询所有流,找出能读出数据,或者写入数据的流,对他们进行操作。所以select具有O(n)的无差别轮询复杂度,同时处理的流越多,无差别轮询时间就越长。 (
阅读全文
摘要:文章目录一 基本概念1、什么是 Netty?2、Netty 的优势?3、Netty 有什么特点?4、Netty 有哪些应用场景?5、Netty 的高性能体现在?6、相比原生 NIO 的优势?7、Netty 和 Tomcat 的区别?8、BIO. NIO. AIO 分别是什么?9、Select、Pol
阅读全文
摘要:目录 1. Netty 是什么2. 为什么要使用Netty?3. Netty有什么优点4. netty高性能主要依赖了哪些特性5. 为什么BIO比NIO性能差?简单讲讲区别6. 简单说下 BIO、NIO 和 AIO区别7. 说说NIO的主要组成8. 说说对于Netty的零拷贝理解9. 说说Netty
阅读全文
摘要:简介: 本文主要讲述Netty框架的一些特性以及重要组件,希望看完之后能对Netty框架有一个比较直观的感受,希望能帮助读者快速入门Netty,减少一些弯路。 思维导图 前言 本文主要讲述Netty框架的一些特性以及重要组件,希望看完之后能对Netty框架有一个比较直观的感受,希望能帮助读者快速入门
阅读全文
摘要:这会是Netty系列的第一篇,我想先聊聊 “为什么要学习Netty”。 绕不开的编程框架 Java进阶之梯 面试“绝招” 一个小小的心结 1.绕不开的框架 说到Netty,相信所有做Java后端开发的同学都应该听说过。这是一个再经典不过、且仍然被广泛使用的网络编程框架。就我接触过并看过源码的开源项目
阅读全文
摘要:Netty是基于Java NIO client-server的网络应用框架,使用Netty可以快速开发网络应用,例如服务器和客户端协议。Netty提供了一种新的方式来开发网络应用程序,这种新的方式使它很容易使用和具有很强的扩展性。Netty的内部实现是很复杂的,但是Netty提供了简单易用的API从
阅读全文
摘要:Netty 总算总结完了,小编 也是长舒了一口气。有太多读者私信我让我总结 Netty 了,因为经常会在面试中碰到 Netty 相关的问题。 全文采用大家喜欢的与面试官对话的形式展开。 如果大家觉得 小编 总结的不错的话,不妨转发分享鼓励一下! 推荐大家看看这个Netty教程:全网最权威的Netty
阅读全文
|