![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面向问题编程
文章平均质量分 74
Armour__r
晚泊孤舟古祠下,满川风雨看潮生
展开
-
可以实时修改参数的线程池--动态线程池实现探索
基于配置中心的动态线程池实现,可以使线程池参数实时生效,不需要重新部署原创 2022-07-18 09:15:00 · 715 阅读 · 1 评论 -
guava cache缓存组件在并发场景下的问题
前言去年面蚂蚁的时候,二面提到自己项目里使用了guava cache来缓存一些高频读的配置文件,被问到了它的实现以及并发场景下可能存在什么问题,因为没有深入了解过,所以没回答上来。现在想来除了技术上的问题之外,也反映了当时我个人的思考不够的问题:1 在对基础组件原理完全不了解的情况下就盲目使用,是否会因此带来一些隐藏的坑;2 为什么没有抽时间去对用到的技术栈做一下简单的了解和调研,做出这样的技术选型的背景和理由根本讲不出来。常常说要积累技术的广度和深度,就是应该要在这些地方多思考才行。想起之前一个组原创 2022-01-25 09:30:00 · 2115 阅读 · 1 评论 -
【并发问题】线程池死锁阻塞
苦练基本功问题表现周五开开心心下班,结果收到了问题,说是某个接口报了504的异常,一开始以为是网络或者服务器的问题,后来排查才发现是自己埋的一个坑,快乐的周末直接报销。排查过程首先关注一下504代表的问题。造成504的原因主要有两种,nginx建立连接超时(proxy_connect_timeout)和nginx等待服务器返回超时(proxy_read_timeout)常见的原因可能是流量在增加,但是后端容量不足,导致大量504出现。但是在这里很明显不是资源问题,应该是nginx等待服务器.原创 2021-12-09 17:50:43 · 1153 阅读 · 1 评论 -
lombok 父类和子类builder不兼容的问题
遇到的问题在写代码时,有时因为需要定义一些重复的参数,为了复用之前传参的DTO,会对原有的类进行继承,从而达到避免重复代码的效果。但是,当父类中使用了lombok的@Builder注解,子类也需要@builder注解时,就会出现异常排查和解决由于实际的代码存在敏感信息,这里分别定义两个类Parent和Child来进行场景的模拟@Data@Builderclass Parent { private String parentProperty1; private String p原创 2021-11-17 15:37:20 · 7324 阅读 · 1 评论 -
Mybatis中association标签嵌套时数据映射问题
出现问题在mybatis里查询使用association标签时,发现内层对象的查询结果一直为null先放结论association在嵌套使用时,columnPrefix会进行合并排查路径手动执行sql,发现执行结果没有问题,数据能够正常查询到,排除sql执行异常由于是嵌套的内层数据为空,排查association标签的使用。场景还原有ABC三张表进行关联查询,返回的结果对象是一个多层嵌套的对象。尝试进行拆分,发现当只有一层嵌套时,association能够正常工作,内层数据是存在的,只有在原创 2021-09-27 15:36:46 · 1423 阅读 · 0 评论 -
基于Redis的频次控制能力实现
引言公司业务上目前存在许多发送给用户的消息,例如PUSH,短信等,我们将其统称为触达行为。假如不对其加以约束,过多的触达消息不但不能带来流量和销售上的转化,反而会降低用户体验。如何管理各种服务对用户的触达,统一对触达的频次进行有效控制成为了亟待解决的一件事。本文将介绍频次控制实现方式。背景频次控制的场景,在我所接触到的类型中主要分为两类:一类是速率限制(rate limiting),主要是对服务请求速率进行限制,可能是限定某个接口,限定某个应用,或者是限制对某个资源的访问,目的是防止由大量不合理原创 2021-07-28 18:01:41 · 2306 阅读 · 0 评论 -
使用arthas排查tomcat异常
背景前不久上线了一个新服务,是和操作redis相关的业务,正常来说请求的平均响应时间应该小于5ms,99分位线正常也应该在10ms以内。但是上线后通过监控发现存在个别周期性响应时间超过100ms的请求,通过监控平台发现请求在Tomcat Servlet Process阶段时出现了超过100ms的Gap,怀疑是某些东西影响了tomcat导致的,所以想通过arthas追踪发现出现问题的请求。Arthasarthas是阿里开源的一个线上诊断工具,能够通过一些方法追踪线上调用,用于诊断一些不方便排查的线上问题原创 2020-11-17 00:00:45 · 5102 阅读 · 0 评论 -
权限控制2.0--重构,解耦页面与字段
在曲折中前进前情提要在上一篇文章里,通过切面加反射,根据一棵模块-页面-字段三层的权限树实现对返回字段权限的控制。实际上线运行一段时间之后还是发现了一些问题。1.权限树膨胀随着页面增加,每个页面都有大量字段,权限树会持续膨胀,而字段大多是相同的,只是分布在不同的模块和页面中,每次新建角色或者上线新模块时勾选权限的过程比较复杂,大多是重复劳动,而且也容易出现人为失误。目前已知确实出现了权限的问题,因为线上权限管控的原因,开发人员没有权限配置线上权限,把相关数据交给产品去配置之后,开发和测试人员都.原创 2020-07-29 20:36:56 · 277 阅读 · 0 评论 -
面向问题编程-spring aop类内部调用失效
旧欢新梦里,不觉行路难翻以前的博客,上一次提到aop还是两年前的大学时期初学切面时写的,当时遇到的那个问题在今天看来毫无疑问只能用愚蠢来形容。不过,至少证明了这两年来在技术上还是成长了不少。这一篇,我想还是按照两年前那一篇的写法来完成。最近在公司写一个新项目,里面需要对返回值进行权限管控,剔除掉其中不满足权限要求的数据。作为一个各接口都需要的横向功能,自然会想到使用aop来完成,通常想到的...原创 2020-04-01 11:42:15 · 253 阅读 · 0 评论 -
面向问题编程-切面+反射实现字段级别权限控制
素衣莫起风尘叹,犹及清明可到家。出现需求:根据权限树的配置,对返回的数据进行控制,要求要限制到具体的指标,一般形式为字段或者结构体。现状:1.约定返回是按照固定字段形式,受控制控制不展示数据的字段确定为返回null。2.权限通过一颗权限树获取,树的叶子节点key唯一。key的命名规则为module+method+metric。没有权限的节点value字段为false。解决...原创 2020-04-01 19:15:43 · 826 阅读 · 0 评论