2021年4月15日
摘要:这几天发现一些项目(没有引入redis包的),因为redis的健康检查失败。初步怀疑是项目引入了redis,但在build.gradle中没有相关的jar引入,因为是自定义的jar中间接引入了。需要查看依赖关系。 1、用gradle命令查看依赖关系: 2、用idea查看依赖关系: 看下面输出的依赖关 阅读全文
posted @ 2021-04-15 16:52 duanxz 阅读(9) 评论(0) 推荐(0) 编辑
  2021年4月14日
摘要:缓存 本次主要讨论缓存。缓存在日常开发中举足轻重,如果你的应用对某类数据有着较高的读取频次,并且改动较小时那就非常适合利用缓存来提高性能。 缓存之所以可以提高性能是因为它的读取效率很高,就像是 CPU 的 L1、L2、L3 缓存一样,级别越高相应的读取速度也会越快。 但也不是什么好处都占,读取速度快 阅读全文
posted @ 2021-04-14 20:53 duanxz 阅读(5) 评论(0) 推荐(0) 编辑
摘要:限流是保护高并发系统的三把利器之一,另外两个是缓存和降级。 限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务或进行流量整形。 常用的限流方式和场景有: A、限制总并发数(比如数据库连接池、线程池)B、限制瞬时并发数(如nginx的l 阅读全文
posted @ 2021-04-14 19:25 duanxz 阅读(13) 评论(0) 推荐(0) 编辑
  2021年4月5日
摘要:要点解说 假设现在有一大批需要进行计算的任务,为了提高整批任务的执行效率,你可能会使用线程池,向线程池中不断submit异步计算任务,同时你需要保留与每个任务关联的Future,最后遍历这些Future,通过调用Future接口实现类的get方法获取整批计算任务的各个结果。 虽然使用了线程池提高了整 阅读全文
posted @ 2021-04-05 13:19 duanxz 阅读(10) 评论(0) 推荐(0) 编辑
摘要:《Thread之四:java线程返回结果的方法》 《Runnable、Callable、Future和FutureTask之一:获取线程的返回值》 《CompletionService之一:获得线程(线程池的)处理结果》 使用线程池的时候,经常会有需要获得线程处理结果的时候。此时我们通常有两种做法: 阅读全文
posted @ 2021-04-05 11:08 duanxz 阅读(12) 评论(0) 推荐(0) 编辑
  2021年4月2日
摘要:一、tomcat原理 二、tomcat线程池介绍 三、tomcat线程池工作原理 四、tomcat线程池跟jdk线程池的主要区别 一、tomcat原理 功能组件结构 Tomcat 的核心功能有两个,分别是负责接收和反馈外部请求的连接器 Connector,和负责处理请求的容器 Container。其 阅读全文
posted @ 2021-04-02 09:11 duanxz 阅读(24) 评论(0) 推荐(0) 编辑
摘要:是 阅读全文
posted @ 2021-04-02 09:08 duanxz 阅读(10) 评论(0) 推荐(0) 编辑
  2021年4月1日
摘要:一、线程池工作原理(新任务进入时线程池的执行策略)二、创建线程池的方式三、合理配置线程池四、ThreadPoolExecutor的函数说明 一、线程池工作原理(新任务进入时线程池的执行策略) 线程池的触发时机如下图: 当一个任务通过execute(Runnable)方法欲添加到线程池时: 1、如果此 阅读全文
posted @ 2021-04-01 15:29 duanxz 阅读(26) 评论(0) 推荐(0) 编辑
摘要:背景 部分业务校验规范或疏忽场景,传入bad request 导致接口熔断,影响接口正常流量 处理 重写Feign error decoder逻辑 import com.netflix.hystrix.exception.HystrixBadRequestException; import feig 阅读全文
posted @ 2021-04-01 11:25 duanxz 阅读(7) 评论(0) 推荐(0) 编辑
  2021年3月30日
摘要:一、Hystrix的Feign熔断的粒度 Feign可以直接去集成Hystrix熔断,那么默认的熔断粒度是多大呢?或者说,当serviceA调用serviceB#method1(param)时,如果出现超时导致熔断后,serviceA还能不能调用serviceB#method2(param)呢? 我 阅读全文
posted @ 2021-03-30 17:33 duanxz 阅读(62) 评论(0) 推荐(0) 编辑
  2021年3月15日
摘要:通常在编写业务代码时,会通过下面2种方式来编写各种业务场景。 "返回异常码”:在业务代码中return错误码 “抛出异常+捕获转为返回异常码”:有种观点认为,业务失败异常流程应该基于Exception控制,在这样的项目里就会看到大量的基于业务定义的Exception类,比如UserNotFoundE 阅读全文
posted @ 2021-03-15 10:19 duanxz 阅读(56) 评论(0) 推荐(1) 编辑
  2021年1月14日
摘要:《consul之:常用API接口》 《springCloud+consul优雅停机》 《Consul之:服务健康监测》 之前的方案:先调用待更新的模块的shutdown的Endpoint,这是springboot的功能实现,consul上可见服务确实下线了,再kill掉进程。但是还会有一些请求被转发 阅读全文
posted @ 2021-01-14 16:34 duanxz 阅读(294) 评论(0) 推荐(0) 编辑
  2020年12月18日
该文被密码保护。 阅读全文
posted @ 2020-12-18 15:34 duanxz 阅读(6) 评论(0) 推荐(0) 编辑
  2020年12月7日
摘要:销售点终端(POS):即Point of Sales。它是指摆放在商户收银台,可受理银行卡的设备。 POSProxy:POS前置系统 硬件安全模块(英语:hardware security module,缩写HSM)是一种用于保护和管理强认证系统所使用的密钥,并同时提供相关密码学操作的计算机硬件设备 阅读全文
posted @ 2020-12-07 10:37 duanxz 阅读(194) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2020-12-07 10:21 duanxz 阅读(7) 评论(0) 推荐(0) 编辑
  2020年12月1日
摘要:微服务和传统的单块应用相比,在测试策略上,会有一些不太一样的地方。简单来说,在微服务架构中,测试的层次变得更多,而且对环境的搭建要求更高。比如对单块应用,在一个机器上就可以setup出所有的依赖,但是在微服务场景下,由于依赖的服务往往很多,要搭建一个完整的环境非常困难,这对团队的DevOps的能力也 阅读全文
posted @ 2020-12-01 14:43 duanxz 阅读(225) 评论(0) 推荐(1) 编辑
  2020年10月29日
摘要:Hazelcast是什么 “分布式”、“集群服务”、“网格式内存数据”、“分布式缓存“、“弹性可伸缩服务”——这些牛逼闪闪的名词拿到哪都是ITer装逼的不二之选。在Javaer的世界,有这样一个开源项目,只需要引入一个jar包、只需简单的配置和编码即可实现以上高端技能,他就是 Hazelcast。 阅读全文
posted @ 2020-10-29 09:16 duanxz 阅读(274) 评论(0) 推荐(0) 编辑
  2020年10月28日
摘要:概览 缓存是一个有着更快的查询速度的存储技术,这里的更快是指比起从初始的数据源查询(比如数据库,以下都称作数据库)而言。我们经常会把频繁请求的或是耗时计算的数据缓存起来,在程序收到请求这些数据的时候可以直接从缓存中查询数据返回给客户端来提高系统的吞吐量,现在我们来看看有哪些缓存模式可以考虑。 Cac 阅读全文
posted @ 2020-10-28 19:51 duanxz 阅读(191) 评论(0) 推荐(0) 编辑
  2020年9月24日
摘要:1-简介 审计日记就是记录用户的操作记录 基于AOP动态代理 实现自定义审计日志注解, 并支持Spel表达式解析 2-实现 2-1 日志存储实体类 @Data @Builder @ToString public class AuditingLog { private String userId; / 阅读全文
posted @ 2020-09-24 18:06 duanxz 阅读(726) 评论(0) 推荐(0) 编辑
  2020年9月23日
摘要:最近依旧在学习阅读Spring Boot的源代码,在此过程中涉及到很多在日常项目中比较少见的功能特性,对此深入研究一下,也挺有意思,这也是阅读源码的魅力之一。这里写成文章,分享给大家。 自动配置中的ObjectProvider 在阅读Spring Boot自动配置源码中关于redis的配置时,看到这 阅读全文
posted @ 2020-09-23 11:08 duanxz 阅读(329) 评论(0) 推荐(0) 编辑
  2020年7月22日
摘要:Lombok就用到插入式注解处理器,Lombok通过注解的方式,在编译时自动为属性生成构造器、getter/setter、equals、hashcode、toString等方法。 插入式注解处理器是JSR-269中定义的API,该API可以在编译期对代码中的特定注解进行处理,从而影响到前端编译器的工 阅读全文
posted @ 2020-07-22 14:08 duanxz 阅读(459) 评论(0) 推荐(0) 编辑
  2020年4月25日
摘要:一、elasticsearch版本与jdk版本对应关系 参考位置 2020年3月27日更新 二、Transport Client和Rest Client对比 所有Elasticsearch操作都是使用Client对象执行的。Client 定义的所有API都是异步执行的。(要么使用事件监听器回调或者使 阅读全文
posted @ 2020-04-25 23:01 duanxz 阅读(2228) 评论(0) 推荐(1) 编辑
  2020年4月14日
摘要:一、读写分离相关的理论 1.1、ReadPreference读偏好 1.2脏数据 1.3复制集的缺点 1.4读隔离 Read Concern 1.5写确认 Write Concern 二、springboot中实现读写分离 2.1 MongoDB连接池指定读模式 2.2、在代码层面动态切换 一、读写 阅读全文
posted @ 2020-04-14 11:57 duanxz 阅读(2563) 评论(0) 推荐(1) 编辑
  2020年4月10日
摘要:一、思考的背景 从16年开始,互联网用户增长趋缓,同比仅增长。一方面,不论是线上还是线下,新用户的获取成本都很高。另一方面,用户时间增长也在趋缓。在用户花费时间趋向饱和情况下,不同的产品之间同样存在竞争关系。 在这个背景下,随着用户量增长,运营人员面临新的挑战,有以下核心诉求: 一般运营活动中,怎么 阅读全文
posted @ 2020-04-10 09:55 duanxz 阅读(843) 评论(0) 推荐(1) 编辑
  2020年4月1日
摘要:一、数据集类型 现实世界中,所有的数据都是以流式的形态产生的,不管是哪里产生的数据,在产生的过程中都是一条条地生成,最后经过了存储和转换处理,形成了各种类型的数据集。如下图所示,根据现实的数据产生方式和数据产生是否含有边界(具有起始点和终止点)角度,将数据分为两种类型的数据集,一种是有界数据集,另外 阅读全文
posted @ 2020-04-01 10:48 duanxz 阅读(4085) 评论(0) 推荐(0) 编辑