2021年4月25日
posted @ 2021-04-25 22:29
duanxz
阅读(7)
推荐(0)
posted @ 2021-04-25 22:24
duanxz
阅读(11)
推荐(0)
posted @ 2021-04-25 22:23
duanxz
阅读(11)
推荐(0)
摘要:
一、从最简单的开始:List 队列(LPUSH+BRPOP实现) 首先,我们先从最简单的场景开始讲起。 如果你的业务需求足够简单,想把 Redis 当作队列来使用,肯定最先想到的就是使用 List 这个数据类型。 因为 List 底层的实现就是一个「链表」,在头部和尾部操作元素,时间复杂度都是 O(
阅读全文
posted @ 2021-04-25 20:06
duanxz
阅读(3464)
推荐(2)
摘要:
说清楚几个问题:1.bitmap的原理、用法。2.bitmap的优势、限制。3.bitmap空间、时间粗略计算方式。4.bitmap的使用场景。5.使用bitmap过程中可能会遇到的坑。6.bitmap进阶用法(思考)。 一、bitmap的原理、用法 8bit = 1b = 0.001kb bitm
阅读全文
posted @ 2021-04-25 16:53
duanxz
阅读(8309)
推荐(1)
摘要:
还没有安装Redis的同学,可以参考我先前的文章安装,传送门《玩转Redis-Redis安装、后台启动、卸载》。Redis 4.0开始以插件形式提供布隆过滤器。 # docker方式安装 > docker pull redislabs/rebloom # 拉取镜像> docker run -p637
阅读全文
posted @ 2021-04-25 14:58
duanxz
阅读(1117)
推荐(0)
摘要:
前面讲到bloomfilter的原理及guava实现的bloomfilter的用法,现在看看redis如何实现: 一、bitmaps 我们知道计算机是以二进制位作为底层存储的基础单位,一个字节等于8位。 比如“big”字符串是由三个字符组成的,这三个字符对应的ASCII码分为是98、105、103,
阅读全文
posted @ 2021-04-25 09:29
duanxz
阅读(2706)
推荐(1)
摘要:
Guava中的布隆过滤器 示例: import com.google.common.base.Charsets; import com.google.common.hash.BloomFilter; import com.google.common.hash.Funnels; public clas
阅读全文
posted @ 2021-04-25 09:17
duanxz
阅读(1720)
推荐(0)
2021年4月15日
摘要:
这几天发现一些项目(没有引入redis包的),因为redis的健康检查失败。初步怀疑是项目引入了redis,但在build.gradle中没有相关的jar引入,因为是自定义的jar中间接引入了。需要查看依赖关系。 1、用gradle命令查看依赖关系: 2、用idea查看依赖关系: 看下面输出的依赖关
阅读全文
posted @ 2021-04-15 16:52
duanxz
阅读(4640)
推荐(0)
2021年4月14日
摘要:
缓存 本次主要讨论缓存。缓存在日常开发中举足轻重,如果你的应用对某类数据有着较高的读取频次,并且改动较小时那就非常适合利用缓存来提高性能。 缓存之所以可以提高性能是因为它的读取效率很高,就像是 CPU 的 L1、L2、L3 缓存一样,级别越高相应的读取速度也会越快。 但也不是什么好处都占,读取速度快
阅读全文
posted @ 2021-04-14 20:53
duanxz
阅读(1890)
推荐(0)
摘要:
限流是保护高并发系统的三把利器之一,另外两个是缓存和降级。 限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务或进行流量整形。 常用的限流方式和场景有: A、限制总并发数(比如数据库连接池、线程池)B、限制瞬时并发数(如nginx的l
阅读全文
posted @ 2021-04-14 19:25
duanxz
阅读(1759)
推荐(0)
2021年4月5日
摘要:
要点解说 假设现在有一大批需要进行计算的任务,为了提高整批任务的执行效率,你可能会使用线程池,向线程池中不断submit异步计算任务,同时你需要保留与每个任务关联的Future,最后遍历这些Future,通过调用Future接口实现类的get方法获取整批计算任务的各个结果。 虽然使用了线程池提高了整
阅读全文
posted @ 2021-04-05 13:19
duanxz
阅读(285)
推荐(0)
摘要:
《Thread之四:java线程返回结果的方法》 《Runnable、Callable、Future和FutureTask之一:获取线程的返回值》 《CompletionService之一:获得线程(线程池的)处理结果》 使用线程池的时候,经常会有需要获得线程处理结果的时候。此时我们通常有两种做法:
阅读全文
posted @ 2021-04-05 11:08
duanxz
阅读(517)
推荐(0)
2021年4月2日
摘要:
一、tomcat原理 二、tomcat线程池介绍 三、tomcat线程池工作原理 四、tomcat线程池跟jdk线程池的主要区别 一、tomcat原理 功能组件结构 Tomcat 的核心功能有两个,分别是负责接收和反馈外部请求的连接器 Connector,和负责处理请求的容器 Container。其
阅读全文
posted @ 2021-04-02 09:11
duanxz
阅读(4191)
推荐(0)
posted @ 2021-04-02 09:08
duanxz
阅读(202)
推荐(0)
2021年4月1日
摘要:
一、线程池工作原理(新任务进入时线程池的执行策略)二、创建线程池的方式三、合理配置线程池四、ThreadPoolExecutor的函数说明 一、线程池工作原理(新任务进入时线程池的执行策略) 线程池的触发时机如下图: 当一个任务通过execute(Runnable)方法欲添加到线程池时: 1、如果此
阅读全文
posted @ 2021-04-01 15:29
duanxz
阅读(375)
推荐(0)
摘要:
背景 部分业务校验规范或疏忽场景,传入bad request 导致接口熔断,影响接口正常流量 处理 重写Feign error decoder逻辑 import com.netflix.hystrix.exception.HystrixBadRequestException; import feig
阅读全文
posted @ 2021-04-01 11:25
duanxz
阅读(515)
推荐(0)
2021年3月30日
摘要:
一、Hystrix的Feign熔断的粒度 Feign可以直接去集成Hystrix熔断,那么默认的熔断粒度是多大呢?或者说,当serviceA调用serviceB#method1(param)时,如果出现超时导致熔断后,serviceA还能不能调用serviceB#method2(param)呢? 我
阅读全文
posted @ 2021-03-30 17:33
duanxz
阅读(1654)
推荐(0)
2021年3月15日
摘要:
通常在编写业务代码时,会通过下面2种方式来编写各种业务场景。 "返回异常码”:在业务代码中return错误码 “抛出异常+捕获转为返回异常码”:有种观点认为,业务失败异常流程应该基于Exception控制,在这样的项目里就会看到大量的基于业务定义的Exception类,比如UserNotFoundE
阅读全文
posted @ 2021-03-15 10:19
duanxz
阅读(760)
推荐(2)
2021年1月14日
摘要:
《consul之:常用API接口》 《springCloud+consul优雅停机》 《Consul之:服务健康监测》 之前的方案:先调用待更新的模块的shutdown的Endpoint,这是springboot的功能实现,consul上可见服务确实下线了,再kill掉进程。但是还会有一些请求被转发
阅读全文
posted @ 2021-01-14 16:34
duanxz
阅读(2234)
推荐(0)
2020年12月18日
posted @ 2020-12-18 15:34
duanxz
阅读(6)
推荐(0)
2020年12月7日
摘要:
销售点终端(POS):即Point of Sales。它是指摆放在商户收银台,可受理银行卡的设备。 POSProxy:POS前置系统 硬件安全模块(英语:hardware security module,缩写HSM)是一种用于保护和管理强认证系统所使用的密钥,并同时提供相关密码学操作的计算机硬件设备
阅读全文
posted @ 2020-12-07 10:37
duanxz
阅读(4318)
推荐(1)
posted @ 2020-12-07 10:21
duanxz
阅读(7)
推荐(0)
2020年12月1日
摘要:
微服务和传统的单块应用相比,在测试策略上,会有一些不太一样的地方。简单来说,在微服务架构中,测试的层次变得更多,而且对环境的搭建要求更高。比如对单块应用,在一个机器上就可以setup出所有的依赖,但是在微服务场景下,由于依赖的服务往往很多,要搭建一个完整的环境非常困难,这对团队的DevOps的能力也
阅读全文
posted @ 2020-12-01 14:43
duanxz
阅读(1334)
推荐(2)
2020年10月29日
摘要:
Hazelcast是什么 “分布式”、“集群服务”、“网格式内存数据”、“分布式缓存“、“弹性可伸缩服务”——这些牛逼闪闪的名词拿到哪都是ITer装逼的不二之选。在Javaer的世界,有这样一个开源项目,只需要引入一个jar包、只需简单的配置和编码即可实现以上高端技能,他就是 Hazelcast。
阅读全文
posted @ 2020-10-29 09:16
duanxz
阅读(1401)
推荐(0)