自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(613)
  • 资源 (4)
  • 问答 (1)
  • 收藏
  • 关注

原创 初探灰度发布系列--AB Test以及栗子

灰度-AB Test

2022-04-20 18:58:27 1464 4

原创 spring mvc controller实现原理

讲解spring mvc controller实现原理,以及如果自定义不同注解来简化写各种配置

2022-02-03 00:15:35 1786

原创 排查日志:apm在网关webflux变量丢失

文章目录前言场景排查过程结论前言在自研apm项目中,发现网关traceId会被篡改具体逻辑,有拦截器,然后在请求处理前,set tarceId,然后set到对应threadlocal里面,然后在mono返回的时候,从threadlocal拿出值,打印日志。场景a请求,traceId为123,b请求,traceId为666.在链路监控里头,会发现a的请求traceId被b覆盖了变成666排查过程threadlocal本身就会导致变量丢失打印对应的日志查看线程名称,发现都是同个线程react

2021-12-27 12:35:54 1137 1

原创 DDD 基础知识扫盲篇

文章目录前言目的概念DDD分层按照个人见解画的分层图参考博客前言这段时间学习了一波ddd,整体下来的感受,现状是业务冗余,业务代码都写在一起很混乱,在复杂业务的时候不方便管理、扩展。代码设计原则里面就有高内聚,低耦合的原则,ddd其实就是为了实现这想法的。目的ddd为了实现高内聚,低耦合的作用,减少每一层的耦合,这样不会互相影响,也方便后续扩展概念领域:领域是相对于业务领域,或者问题域,范围概念。一个领域会包含多个子域,比如说订单域,会有商品、订单等等子域限界上下文:既然有范围,那么就有边

2021-12-10 17:55:01 1885

原创 apm中间件切入点

文章目录前言怎么切入各个中间件呢第一步traceid什么时候塞入系统中RPCdubbohttp多线程、线程池情况下datasourceMQrocketmqrabbitmqredis埋点agent作用参考文章前言apm的要点,其实就是你需要在所有流程里头,把traceid塞进去,能拿到,这样的话不管你是打印日志来管理链路,还是上报日志,都行。怎么切入各个中间件呢第一步traceid什么时候塞入系统中第一种放在网关去给塞,依靠sleuth框架生成traceid第二种前端在发起请求的时候,也把tra

2021-11-23 21:59:44 1925

原创 配置中心将配置写入spring环境

文章目录前言前置知识具体实践demo关键点思路另外一种思路参考博客前言配置中心配置注入的时候有两个,一个是启动前,一个是配置变化之后进行动态配置。本篇主要总结启动前配置注入spring环境。前置知识spring配置会将配置储存到PropertySource数据结构,可以通过MapPropertySource拿到source拿到对应的配置,或者增删查配置也可以通过@Autowired private ConfigurableEnvironment environment;在运行时操作配置项

2021-11-11 10:18:17 791

原创 配置中心Component + @Value动态配置实现

文章目录前言实现方式具体步骤参考博客前言我们公司很多组件做自研的,里面有一个配置中心,然后我当时有点想法,nacos以及apoll是怎么样做动态配置的呢?实现方式对@Component + @Value 实现动态注入实现原理:会有一层缓存,然后存在对应key(@Value的值),然后还有对象实例,然后还有字段,可以进行赋值对吧。当我们收到更新数据的时候,通过key来拿到实例,然后对属性进行set,这样就实现动态配置了。具体步骤首先需要重写BeanPostProcessor,主要是在类加载过程

2021-11-04 22:30:42 3615

原创 maven插件加载依赖的类

文章目录前言思路解析maven生命周期借鉴文章前言最近在写maven插件,遇到一个问题是classload不能加载依赖的类,比如说引入jar的类。我之前怎么使用的呢?就用网上常见的mavenproject去获取路径,然后classload进行加载进去,这种其实只能加载本项目的类。那如果加载依赖的项目的类呢?思路请教了隔壁老哥,他说maven打包之后会有一棵树结构,你只要解析这棵树,就能加载出来了。这颗树哪里来呢,就是打包之后jar,解压之后就有。这里借鉴下其他博客的图解析Boot-INF

2021-11-04 22:11:58 2560

原创 agent实现apm上报

文章目录前言动手实现apm上报功能代码检验结果总结等待优化点项目链接前言最近刚刚换了工作,进了公司的架构组,有些项目蛮有意思,也是很感兴趣,也会工作之余自行学习,比如说有个自研apm项目当然在此声明一下,本篇代码属于个人学习编写,并非copy公司代码对于springcloud,有一套sleuth(主要是traceId+spanId生成)+zipkin(数据统计功能)skywalking,淘宝的鹰眼,蚂蚁金服sofatrace等等动手实现apm上报功能首先agent用的是byte-budd

2021-10-17 20:38:58 1132 1

原创 RocketMQ知识图谱总结

文章目录前言RocketMQ组成提高性能地方过期机制高可用NameSpace刷盘消息储存消息发送消息消费事务消息前言本博客是观看中通架构师丁威老师《rocketmq技术内幕》总结,以及网上一些技术博客,仅用于个人学习以及分享个人知识盲区。RocketMQ组成producer,consumer,broker,namespace提高性能地方Message Queue 是broker上分片的最小单位,也能提高消费性能过期机制commitlog不管有没有消费,72小时之后会删除高可用produ

2021-10-06 15:20:14 401

原创 redis知识图谱总结

前言面试在面很多高级岗位的时候,面试官会时不时来句redis底层数据结构,以及各种扩展,例如:得物高工技术终面:redis数据结构底层实现再如我面过很多大厂也会问我rehash,我当时???好吧,尽量完善自己的知识图谱redis数据结构本博客主要是观看《redis设计与实现》,然后进行个人的学习总结~sdssimple dynamic string它是字符串实现数据结构,特点:会保存使用字节的数量,以及未使用的字节的数量好处:不会内存溢出,比如说缓冲区,既然我已经有了这个数值,你如果

2021-09-14 00:38:16 638

原创 第一次为开源框架sofarpc做小小贡献

文章目录前言他来了前言第一个目标是csdn博客,博客专家称号目前已经达成了~第二个目标是为开源框架做一些贡献他来了解决多线程本地变量丢失问题主要是解决ThreadLocal在多线程以及线程池等环节下的本地变量传递问题开森~期待成为commiter,冲!...

2021-07-23 23:04:41 190

原创 SofaRpc源码学习篇-netty以及跟dubbo骚操作,负载均衡

文章目录前言nettyNettyHelpercom.alipay.sofa.rpc.client.AbstractCluster调用实现方式异步调用同步调用跟dubbo一样骚操作同步异步对比优雅关闭(计算器作用)负载均衡前言这是作为sofarpc学习的子篇,主要学习netty在rpc里面的使用。蚂蚁金服开源-SofaRpc源码学习篇netty很重要的三个类NettyByteBuffer(直接跳过没啥好讲),NettyChannel,NettyHelper(也直接跳过,比较简单)NettyH

2021-07-18 17:44:53 668 1

原创 蚂蚁金服开源-SofaRpc源码学习篇

文章目录官网基本流程SofaRpc学习代码入手服务端-发布过程服务端-构造执行链服务端-注册到注册中心客户端客户端-生成代理类客户端-连接初始化netty客户端-得到服务端列表客户端-创建代理类客户端-具体调用客户端-解码客户端-配置接口,方法用处官网SOFARPC基本流程https://www.sofastack.tech/projects/sofa-rpc/client-invoke-flow/最简单:一个service,一个client,一个注册中心。service注册自己到reg

2021-07-16 00:24:36 1553 2

原创 数列科技开源全链路压测平台Takin-总结

文章目录全链路压测基本思路Takin细节点全链路保存一些标识拦截器实现数据埋点上报com.pamirs.pradar.interceptor.BaseInterceptorMQ改写topic改写jdbcredis影子缓存全链路压测基本思路阿里中间件-全链路压测 总结首个生产环境全链路压测平台Takin正式开源基本就是先染色,然后分发到对应的影子表,影子缓存,然后进行上报数据统计Takin细节点全链路保存一些标识比如说标识下这些数据是测试数据,然后在全链路进行传递,这个在阿里开源全链路追踪日

2021-06-29 18:27:33 1734 1

原创 阿里中间件-全链路压测 总结

文章目录前言全链路压测文章地址具体流程要点前言这几天在面蚂蚁金服的国际支付事业部,刚好有个面试题是:全链路压测怎么设计?(ps:我当时有点闷逼的,因为我们一般就是用jmeter去进行压测,至于全链路怎么搞呢)全链路压测文章地址全链路压测体系建设方案的思考与实践具体流程大概流程: 首先要做流量染色 ->流量识别->然后agent用字节码技术->改写sql 将数据落到影子表要点1.染色然后如何在全链路进行传递?A:这个可以参考阿里开源中间件sofatrace里面spa

2021-06-22 11:49:20 740 3

原创 浅谈--延迟业务的实现方案

文章目录延迟业务实现方案定时器MQ方案redis参考博客延迟业务这是个很常见的业务场景,比如说凌晨开奖活动,用户订单20分钟没有支付会过期等等实现方案定时器比如说我们凌晨开奖的业务是使用定时器去执行的,就是定时器扫描去执行缺点:会有所延迟,比如定时器5分钟扫一次,所以对于开奖来说是有延迟的。MQ方案比如说RocketMQ方案,但是这个只能延迟一定的时间间隔,预设值的延迟时间间隔为:1s、 5s、 10s、 30s、 1m、 2m、 3m、 4m、 5m、 6m、 7m、 8m、 9

2021-03-11 14:14:10 303

原创 美团点评Leaf双buffer思想

文章目录Leaf——美团点评分布式ID生成系统优化代码思路优化Leaf——美团点评分布式ID生成系统点我,跳过去瞄一眼优化在文章中也讲到关于优化,有个双buffer的情况下面是我关于双buffer的一个设计思路,然后生成id的话使用随机,(ps:我们后台是使用雪花算法生成,这里偷下懒)代码package com.example.demo;import com.alibaba.fastjson.JSON;import org.slf4j.Logger;import org.slf4j

2021-03-06 09:43:12 617 2

原创 3月社招新鲜面经总结

文章目录网易一面网易一面主要是介绍下项目,谈到处理并发跟优化的问题个人简历讲到二级缓存,里面有一个一直困扰我的问题:就是如何刷新机器集群里面的缓存,我当时回答说根据一个变量来大家一起刷新,比如放在redis上。后面请教面试官,解惑我很久以前的疑惑:可以使用zk的广播,牛皮~(我怎么没有想到)redis基础数据结构,底层构造(槽,跳表),高可用(raft算法,哨兵模式,一致性hash)jvm相关,从一个类的初始化的过程,谈到jvm,以及如何调优(ps:面试官人很好,一直引导)回收器:CMS,

2021-02-24 23:49:51 1519 2

原创 java知识体系

文章目录思维导图思维导图#mermaid-svg-vEvMWQqfoMvpzgTa .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-vEvMWQqfoMvpzgTa .label text{fill:#333}#mermaid-svg-vEvMWQqfoMvpzgTa .node rect,#mermaid-

2020-11-29 16:42:53 813 2

原创 参照有赞TMC框架原理简单实现多级缓存

文章目录项目场景:解决方案:个人简单实现相关原理本地变量获取本地缓存的数据数据一致性问题设置缓存的值删除缓存统一获取缓存的方法重点优化所有代码项目场景:有位同事因为缓存被后台删除,导致一堆高并发请求直接怼到DB上,导致数据库cpu 100%解决方案:处理缓存击穿问题:像布隆过滤器,或者说提前设置热点key就是热点key检测,这里谈到了有赞TMC框架多级缓存以及它的热点key的发现个人简单实现相关原理本地变量像热点key储存,本地缓存以及相关参数设置设置。获取本地缓存的数据解释:

2020-09-06 02:30:03 1502

原创 基于Disruptor时间滑窗统计redis热度(简约篇)

文章目录redis热点key实现方案时间滑窗统计热度代码讲解打印结果优化点参考文章redis热点key实现方案有赞透明多级缓存解决方案(TMC)大家可以看下里面的思路:就是get的时候如果是热点key走本地缓存,如果不是走redis集群。热点key发现就是get的时候进行上报统计,以及利用时间滑窗进行统计set,expire,del会进行相应的保存起来,如果是热点key就进行监听,进行相应的处理。本地缓存跟redis缓存一致性问题,就是如果是主动删除的话最好两边都删除。如果是过期又是热点

2020-08-16 14:38:41 1305 1

原创 浅谈微商城架构中多租户在分布式环境的实践跟阿里SOFATracer异曲同工之处

[doc]前言  不管是在多语言或者多租户的场景下,我见过常见的实现方案都是前端传标识,然后后端通过ThreadLocal去接收,根据不同的类型进行相应的业务处理。之前总结过阿里SOFATracer的各类场景,可以粗略的看下。蚂蚁金服分布式链路系统SOFATracer学习笔记多租户的情景  同样是通过前端传入不同的类型的参数来控制数据库进行不同租户的操作。注意点因为是在分布式环境,所以要考虑的情况会多些。1. ThreadLocal不适用的情况  比如多线程,父子线程,分布式调用的传递

2020-06-12 14:00:17 379

原创 蚂蚁金服分布式链路系统SOFATracer学习笔记

文章目录前言SOFATracer基于 SLF4J MDC 的扩展能力OpenFegin改造为啥会调用就打印SOFATracer对各框架集成的核心实现代码feginRestTemplate跨线程透传原理线程池传值参考资料前言在之前写过一篇 关于全链路日志实现学习笔记,其中讲述了zipkin以及sleuth,通过spanId跟traceId进行全链路监控。SpanId跨越id,来标识一个请求流经不同的领域。traceId一个请求的标识。TraceId 和 SpanId 生成规则SOFATr

2020-05-08 18:01:04 1359

原创 初识TransmittableThreadLocal

文章目录前言TransmittableThreadLocalmavendemo参考博客前言TransmittableThreadLocal是阿里开源的一个类,主要目的是处理父子线程变量不能共用的情况。ThreadLocal是跟当前线程挂钩的,所以脱离当前线程它就起不了作用。ThreadLocal场景:它的应用就是比如当前用户特有的一些属性,不能跟其他线程,用户共用。Transmittab......

2020-05-04 11:06:12 34412 5

原创 分布式事务学习总结(一)

文章目录前言LCN(XA)seataTCCRocketMQ事务消息流程芋大神的流程图TransactionListenerSpringboot实现疑问阿里官网介绍自研mq分布式事务参考博客前言  为啥是总结(一)呢?知识总是在不断的学习,总结。总会跟之前大同小异,总会有所收获,也算是version吧,哈哈。  在之前大学的时候有做过类似自研mq分布式事务的。参考下面的博客MQ实现分布式事...

2020-03-29 00:51:21 350

原创 关于全链路日志实现学习笔记

文章目录学习原理的重要性前言zipkinsleuth别人公司自研全链路dubbo日志反思:我们公司框架下,如何自研异步场景如何记录到traceId学习原理的重要性  在很多工作被框架实现之后,我们会越来越少了解里面的原理。  原理这种东西,举个栗子形容一下,比如一辆汽车跑不起来了,一个经常修车的老师傅(没有拆过汽车)会跟你说,凭借我多年修车经验,可能是发动机坏了。然后给你换了发动机,结果还是......

2020-03-24 18:01:48 1205

原创 动手实现对外安全的接口(改进篇)

文章目录上一篇博客前言show you the codeget处理方法post处理方法参考博客上一篇博客动手实现对外安全的接口(写于天寒地冻的正月初九)前言感谢我一位阿里的安全大佬朱哥,在我发第一篇博客的时候进行指点。我对上一篇不足之处进行总结一下:加密过程太过简单,我上一篇博客也谈到需要改进,其中包括appSecret等等也加入到签名里面。时间戳的问题也要加入进去,防止数据篡改。...

2020-02-03 19:50:42 466

原创 J.U.C之AQS源码解读以及ReentrantLock源码解读

文章目录前言AQS重要变量unsafeReentrantLocklock方法加锁原理公平锁非公平锁公平锁跟非公平锁的代码区别参考博客前言像我大佬烟说过:面试的时候颜值可以提高分数,没有颜值的话就需要会点J.U.C。人丑就要多读书,没错说的就是我。AQS是AbstractQueuedSynchronizer缩写,作者是@author Doug Lea并发大神,致敬一哈。J.U.C很多东...

2019-10-12 18:27:25 1010

原创 apm 查询优化&请求缓慢归因分析

theme: smartblue# 前言博主本身并不是负责apm项目的,基本都是自发的行为,这是很好的一方面,打工人一定要培养自己的行业里面的独有经验,下面我聊两句。纵观《资治通鉴》,它讲中国古时代的精英,以及帝王他们的处事方式,所以它被称为帝王之书,用于管理人员、事务处理,但是如果用于个人品行去学习可能有所偏差。比如说在这些人哪个不是权贵,所以他们的权利比普通人高的,其次处理...

2023-09-07 23:50:05 158

原创 自信人生两百年

theme: cyanosis# 前言之前有段时间面阿里飞猪,(现在阿里每年都要面那么几面打磨打磨自己,icbu、lazada、飞猪)面试官跟我反馈一个问题,就是我表达的时候逻辑不太清晰,然后自信度不太够,按理来说经常写博客的人应该是很熟悉才对,就这么一个情况。我自己也有这样的感受,我大脑属于需要需要思考一会去检索知识情况,也会比较健忘,表达的话性格问题,比较少巴拉巴拉,所以建...

2023-08-28 00:24:53 150

原创 apm 请求“异常”分析

theme: cyanosis# 前言在上一篇博主写了关于apm的规划, 二谈apm规划,里面提到异常分析,我们当前apm只是做了最基本的日志查询功能,还没将价值最大化。异常分析的作用,比如说项目通宵上完线,开发下班之后第二天,一堆异常、接口很慢,用户一直在投诉,这时压力给到了运维同学、产研同学,但是它们都不知道哪个地方出现问题,所以快速定位问题是比较重要的;再如一个新手接了一...

2023-08-17 23:50:05 157

原创 二谈apm规划

theme: hydrogen# 前言1、最近换了部门感觉是命运的使然,一开始博主是在架构组搞技术,当你出去找工作的时候会偏基础架构类,或者技术类,至于业务类的会出现这么一个情况,那就是业务对口问题,搞搞业务以后也是一条出路。2、业务对口问题这是一个无解的东西,比如说你之前没有干过相应的模块,入手会比较慢,或者没有见过成熟的体系、设计,那么在以后开发中会让整个系统健壮性、稳...

2023-08-06 22:28:17 40

原创 一代枭雄曹操也需要借力,何况我们

theme: cyanosis# 前言1、人情世故如果做得好就会说是情商高,做不好会说是世故,这是冯仑老师一段话,然后怎么做不世故呢,也很难评判。借着这个聊聊人情世故,在我看来它也是做事规则的一部分,我们发展很长一段历史,从不同的立场、不同的利益分出了派别,又从血缘关系分出了宗族,这些都是为了利益最大化的一个产物。反观博主本人,典型理工男,执着技术研究,所以这块一直是弱...

2023-07-30 01:04:31 31

原创 北宋 赵普:成事法则

theme: cyanosis# 前言老规矩,唠唠嗑~1、历史才是真正值得我们去学习、去研究的我们处于21世纪,相对于比以前更加先进,经济也更加发达了,但是你也会发现信息碎片化了,然后我们每天接收各种各样的海量的数据,真正对我们成长没有一丁点的好处。我觉得原因有几个:第一还是信息碎片化,东一块西一块,你无法吃透某个领域,形成自己的知识体系;第二你接收到的信息大部分是别人...

2023-07-25 00:33:39 27

原创 apm监控得有多少细节啊

theme: cyanosishighlight: docco# 前言被掘金的运营小姐姐吐槽写了很多非技术内容,哈哈,今天正经一回梳理一下apm监控里面有多少细节,当聊起apm自研算很经典,一般公司都会去自研apm,它还是相对比较简单,但是里面蕴藏了蛮多细节,而往往这些细节决定着这个系统的性能、稳定性。接下来一起梳理一下apm都有哪些细节吧~# apm结构图容我...

2023-07-14 23:20:25 30

原创 人需借以虚名而成事

theme: cyanosis# 前言自从我看冯唐老师推荐的《资治通鉴》之后,对历史有那么一丢丢的兴趣,直到在短视频里面刷到《百家讲坛》里面几位老师的讲解片段,以及跟自己经历结合,瞬间满满的共鸣,是啊时代一直在变化,而里面的为人处事、社会规则凡此种种却从来没有太大变化,这就是我们需要去学习历史的原因。所以有了以下感慨。 <<百家讲坛>> 不愧是经...

2023-07-05 23:05:28 25

原创 格物致知,生存之道 --《道德经》

theme: cyanosis# 前言1、读书、做事需务实,我之前写过一篇文章提到机会很重要,还有一些佛学的理念,然后有些读者会惯性的往玄学带,这是我不提倡的。“一命二运三风水”,试问一下,你能改变什么,又能改变多少呢?这句话有一定的道理,但是很空,对很多人没有实质帮助的。我认为人们会常常把玄学挂在嘴边从而感觉高人一等,或者感觉说完这些会让别人觉得你十分聪明,就像我们吹牛逼的时候...

2023-06-25 00:15:12 32

原创 分布式一致性--手撸raft-demo & sofa-jraft优点

theme: cyanosis# 虾聊1、最近做了两个临时需求,贼无语,就是一个做完需求说外部对接方不接入了,一个是做完后因为其他原因砍需求,导致最后没有实现业务方想要的内容。emmm,这个之前有跟同事聊过,我认为是这样,一个项目、一个业务总得有牵头人、主导角色,要么是产品,要么是研发,关键取决于组织架构,或者哪个角色对业务逻辑、项目规划掌握更多。在这个项目里面产品充当业务方的...

2023-06-12 21:35:41 132

原创 以人为镜

theme: hydrogen灵感1、有个周末我走在家附近的江边,一般我无聊的时候就会思考点什么,不管想什么反正就是想,哈哈哈。之前我写过关于《金刚经》的缘起性空,所以想着再琢磨琢磨,后来我走了一圈回来发现不对头,因为这仿佛不是我此刻需要的东西。大家明白那感觉吗,就是你的水里的鱼,但是我一直跟你讲天上飞的快乐,这不是我现在需要的对吧,我之所以写缘起性空,是因为我刚好那段时间有种...

2023-05-24 21:30:05 17

spring boot和mybatis整合小项目

spring boot和mybatis整合小项目,仅供参考..............................................................................................

2018-01-08

基于dwr的java推送小项目

基于dwr的java推送小项目,做了部分修改,可以发送文字以及英文,网页直接访问jsp资源即可,打开多个网页查看推送的效果,部分摘自网络,仅供参考和学习

2017-10-07

基于dwr的java推送慕课小项目

基于dwr的java推送慕课小项目,修改部分代码,使得可以发送文字,英文字母,仅供参考,学习

2017-10-07

基于dwr的java推送消息慕课小项目

基于dwr的java推送消息慕课小项目,部分jar包,代码摘自网络,供参考,一起学习

2017-10-07

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除