摘要:双栈实现getMin功能的问题 左程云的《程序员代码面试指南》,第一个题是“设计一个有getMin功能”的栈,思路如下: 用到了双栈: 一个栈(stackData)用来保存当前栈中的元素,其功能和正常的栈没有区别; 另外一个栈(stackMin)用来保存每一步的最小值; 2种方案思路就是下面这幅图所 阅读全文
posted @ 2020-07-02 23:44 寻觅beyond 阅读(5) 评论(0) 推荐(0) 编辑
摘要:LUR算法介绍 LRU(Least Recently Used),最近最少使用算法,从名字上可能不太好理解,我是这样记的:LRU算法,淘汰最近一段时间内,最久没有使用过的数据。 详细的介绍可以参考百度百科:https://baike.baidu.com/item/LRU 实现LUR的原理 本文使用H 阅读全文
posted @ 2020-07-01 14:17 寻觅beyond 阅读(14) 评论(0) 推荐(0) 编辑
摘要:线程池隔离 一个服务有多个接口,在提供服务时,使用了线程池,多个接口共用这一个线程池,如下图所示: 那么当某个接口处理效率缓慢,当对该接口的请求量上升时,由于该接口处理效率慢,对于该接口的请求就会占用公用的连接池,并且如果长时间没有释放连接,就会造成其他接口没有线程池来处理请求,于是就会出现因为一个 阅读全文
posted @ 2020-06-29 13:17 寻觅beyond 阅读(12) 评论(0) 推荐(0) 编辑
摘要:目录 一.基于权重的随机负载均衡策略 二.基于轮询的负载均衡策略 三.基于权重的轮询负载均衡策略 四.基于最少活跃数的轮询负载均衡策略 五.基于一致性hash的负载均衡策略 一.基于权重的随机负载均衡策略 有3台机器,每台机器都有各自的权重,如下如所示: 现在假设用户发起1次调用,请求被Server 阅读全文
posted @ 2020-06-29 09:59 寻觅beyond 阅读(13) 评论(0) 推荐(0) 编辑
摘要:平常开发过程中,如果涉及到RPC调用,对于服务调用方和服务提供方,都是可以设置接口超时时间的。以调用方为例,调用方需要调用远程的一个接口,为了保证服务的质量,一般会设置调用接口的超时时间,比如将调用接口的超时时间设置为1秒,当调用远程接口后,经过1秒还未拿到结果,那么就认为是超时了,调用方就不会继续 阅读全文
posted @ 2020-06-28 18:18 寻觅beyond 阅读(367) 评论(2) 推荐(1) 编辑
摘要:一.xml方式配置bean 二.Aware接口 2.1 BeanNameAware 2.2 BeanFactoryAware 2.3 ApplicationContextAware 2.4 Aware各接口的执行顺序 2.4 Aware接口总结 三.BeanPostProcessor接口 四.Ini 阅读全文
posted @ 2020-06-27 16:09 寻觅beyond 阅读(106) 评论(0) 推荐(1) 编辑
摘要:目录 一.ConcurrentHashMap的模型图 二.源码分析-类定义 2.1 极简ConcurrentHashMap定义 2.2 Segment内部类 2.3 HashEntry内部类 2.4 ConcurrentHashMap的重要常量 三.常用接口源码分析 3.1 ConcurrentHa 阅读全文
posted @ 2020-06-19 10:16 寻觅beyond 阅读(97) 评论(0) 推荐(1) 编辑
摘要:一.ReentrantLock介绍 1.1介绍 ReentrantLock,可重入锁,首先是一个锁,独占锁,可重入(也就是当前线程获取锁后,还可以再次获取该锁); 1.2API介绍 ReentrantLock有多个接口,这也是相对于synchronized的一个优势吧,可以灵活地对锁进行控制,而不用 阅读全文
posted @ 2020-06-17 21:25 寻觅beyond 阅读(14) 评论(0) 推荐(0) 编辑
摘要:一.线程状态流转图 Java的线程可以有多种状态,在Thread.State类中定义了6个常量来表示线程的状态,分别是NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED,下面是比较详细的一幅状态流转图: 二.示例代码 2.1 sleep 先看下 阅读全文
posted @ 2020-06-16 23:27 寻觅beyond 阅读(20) 评论(0) 推荐(0) 编辑
摘要:目录 一.介绍 二.问题提出 2.1内存原理图 2.2几个问题 三.回答问题 3.1为什么会出现内存泄漏 3.2若Entry使用弱引用 3.3弱引用配合自动回收 四.总结 一.介绍 之前使用ThreadLocal的时候,就听过ThreadLocal怎么怎么的可能会出现内存泄漏,具体原因也没去深究,就 阅读全文
posted @ 2020-06-15 11:17 寻觅beyond 阅读(247) 评论(0) 推荐(0) 编辑
摘要:目录 一.ThreadLocal介绍 1.1 ThreadLocal的功能 1.2 ThreadLocal使用示例 二.源码分析-ThreadLocal 2.1 ThreadLocal的类层级关系 2.2 ThreadLocal的属性字段 2.3 创建ThreadLocal对象 2.4 Thread 阅读全文
posted @ 2020-06-14 22:27 寻觅beyond 阅读(127) 评论(0) 推荐(0) 编辑
摘要:目录 一.ThreadLocal介绍 二.使用场景1——数据库事务问题 2.1 问题背景 2.2 方案1-修改接口传参 2.3 方案2-使用ThreadLocal 三.使用场景2——日志追踪问题 四.其他使用场景 一.ThreadLocal介绍 我们知道,变量从作用域范围进行分类,可以分为“全局变量 阅读全文
posted @ 2020-06-12 23:19 寻觅beyond 阅读(208) 评论(0) 推荐(1) 编辑
摘要:前言 最近在看JDK源码,发现好多地方都用到了AtomicInteger原子类,所以打算将AtmoicInteger的源码过一遍。 本文将分为两部分,一部分是简单介绍AtmoicInteger的用法,第二部分是AtomicInteger的源码,我在源码中做了比较详细的注释。 简单使用AtomicIn 阅读全文
posted @ 2020-06-11 20:18 寻觅beyond 阅读(27) 评论(0) 推荐(0) 编辑
摘要:目录 1.HashMap存储结构图 2.存储的value是Node类型 3.hash计算以及确定下标 4.重要的常量 5.put操作 6.get操作 7.remove操作 8.链表转红黑树 9.resize扩容 10.resize时红黑树拆分 11.快速失败 12.HashMap为什么是非线程安全的 阅读全文
posted @ 2020-06-11 09:20 寻觅beyond 阅读(29) 评论(0) 推荐(0) 编辑
摘要:一.问题背景 如果做过参加过面试或者做过一些面试题,应该知道特别经典的top K问题,比如“找出无序数组中的最大或者最小K个数”: 这种题可以排序后再输出最大或者最小的几个。但是不论是使用快排还是归并排序,毫无疑问,空间和时间复杂度的开销都是不满足面试官的要求的;而使用“堆”这种数据结构就比较好的解 阅读全文
posted @ 2020-06-10 15:53 寻觅beyond 阅读(46) 评论(0) 推荐(0) 编辑
顶部