线程池拒绝策略及应用场景

文章转自这里

1 前言

谈到java的线程池最熟悉的莫过于ExecutorService接口了,jdk1.5新增的java.util.concurrent包下的这个api,大大的简化了多线程代码的开发。而不论你用FixedThreadPool还是CachedThreadPool其背后实现都是ThreadPoolExecutor。

ThreadPoolExecutor是一个典型的缓存池化设计的产物,因为池子有大小,当池子体积不够承载时,就涉及到拒绝策略。JDK中已经预设了4种线程池拒绝策略,下面结合场景详细聊聊这些策略的使用场景,以及我们还能扩展哪些拒绝策略。

阅读更多...

Redis单线程模型

我们常说Redis是单线程的,所有操作都是按照顺序线性执行,但是由于读写操作等待用户输入或输出都是阻塞的,因此IO操作在一般情况下不能直接返回,这会导致:某一文件的IO阻塞会使得整个进程无法对其他客户提供服务。因此Redis在新版本中引入了多路复用功能。

阅读更多...

短链设计方案总结

为什么用短链

所谓“短链”,就是短的链接。短链设计,就是设计一种方案,将原本很长的一串链接转换成一个非常短的链接。当用户访问这个短连接时,会自动跳转到真实链接对应的网页。

那么使用短链有什么好处呢?

  1. 链接变短,有时候我们要限制内容长度,使用长链接的话会占用过多字数,导致可编辑文字变少。

    • 比如,微博平台,限定只能发140个字,如果使用长链接,可能直接占用了50个字,那相当于只能编写90个字
    • 再比如,短信发文有长度限制,如果使用长链接,一条短信可能要拆分成好几条,不仅体验极差,还要花更多的钱
  2. 二维码,我们经常需要将连接转成二维码的形式分享给他人,如果使用长链的话,生成的二维码十分密集难以识别,短链就不存在这个问题。

  3. 无法识别,链接太长,有些平台无法自动识别为超链接,只能识别其中一部分。

阅读更多...

接口幂等性是个啥

什么是接口幂等?

“幂等”是数学和计算机学中一个概念,常见于抽象代数中。

在数学里,幂等的定义主要有两种:

  • 元素幂等:在某二元运算下,元素自己和自己运算,结果等于自己,那么该元素是幂等元素。比如乘法运算下,幂等实数有两个0和1。
  • 运算幂等:对于某一元运算,对于任意元素的运算结果再次进行运算,两次运算结果一样,即f(f(X))=f(X)f(f(X)) = f(X)

那什么是接口幂等呢?第一次听到这个概念的时候,还感觉挺懵的。其实这里套用的是前面提到的第二种定义“运算幂等”。

所谓“接口幂等”,是指 以相同的请求调用这个接口一次和调用这个接口多次,对系统产生的影响是相同的。如果一个接口满足这个特性,那么我们就说这个接口是一个幂等接口。

阅读更多...

差分算法总结

说到差分算法,就不得不提一个经典的公交车上下车问题:

  • 题目描述:给定二维数组,表示公交车每个站点上下车人数
  • 问:公交车从起点到终点,车上最多有多少人?或者假如公交车最大载人量为k,问能否将所有人拉到目的地?

类似的问题还有很多,比如拼车问题、会议室问题、日程安排问题等等。

本文首先简单介绍下什么是差分算法,然后给个差分算法的解题模板。最后总结一下leetcode中标准差分应用题,方便大家练习。

阅读更多...

RabbitMQ概述

消息队列基础

什么是消息队列

消息指的是两个应用间传递的数据。数据的类型有很多种形式,可能只包含文本字符串,也可能包含嵌入对象。

“消息队列(Message Queue)”是在消息的传输过程中保存消息的容器。在消息队列中,通常有生产者和消费者两个角色。生产者只负责发送数据到消息队列,谁从消息队列中取出数据处理,他不管。消费者只负责从消息队列中取出数据处理,他不管这是谁发送的数据。

阅读更多...
  • Copyrights © 2021-2022 Yin Peng
  • 引擎: Hexo   |  主题:修改自 Ayer
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信