技术栈
凌夏大叔
开个博客,当作代码备忘录吧~
展开
-
利用javaagent修改字节码实现aop
利用javaagent实现aop起因:在用seata AT模式时想在全局事务提交后触发事件,解析undo_log执行一些操作,比如异步写入es。由于seata没有提供代码切入点,那么只能在项目中建一个和框架代码相同的包,再拷贝框架中的类源码放到包下,重写其中的源码,classpath优先加载原则达到覆盖原类目的。这种做法实属不够『优雅』。那么怎么才能做到无声无息的对源码做到增强呢?想到spring aop,但是源代码是new出来的,并且不受spring工厂托管,那么这条路走不通了。又想到利用Cla原创 2020-07-07 12:55:25 · 1831 阅读 · 0 评论 -
高级JAVA开发 分布式事务部分
高级JAVA开发 分布式事务部分『分布式事务』中的相关概念2PC(Two Phase Commitment Protocol)XATCC3PC参考和摘自:分布式事务的4种模式『分布式事务』中的相关概念2PC(Two Phase Commitment Protocol)2PC是两阶段提交协议的缩写。事务管理器分两个阶段来协调资源管理器,第一阶段准备资源,也就是预留事务所需的资源,如果每个...原创 2020-07-04 18:03:51 · 2454 阅读 · 1 评论 -
高级JAVA开发 Spring部分(源码解析)
高级JAVA开发 Spring部分Spring源码解析步骤2:初始化BeanFactory,并进行XML文件读取。参考和摘自:《spring源码深度解析(第2版)》 郝佳Spring Bean的生命周期 —附详细流程图及测试代码Spring源码解析基于spring 5.0.x版本。spring-context包提供了多种context以供使用,常见的例如:AnnotationConfi...原创 2019-08-26 17:53:48 · 2357 阅读 · 0 评论 -
高级JAVA开发 JVM部分
高级JAVA开发 JVM部分运行时数据区运行时数据区程序计数器(Program Counter Register):当前线程执行的字节码的行号指示器。线程私有,此区域没有OOMError。线程正在执行Java方法:记录正在执行的虚拟机字节码指令地址线程正在执行Native方法:计数器值为空(Undefined)。Java虚拟机栈:线程私有,生命周期与线程相同。方法在执行时创建...原创 2019-05-29 15:06:37 · 927 阅读 · 0 评论 -
高级JAVA开发 技术栈知识点总结
高级JAVA开发 面试知识点总结写在前面MQRedis分布式系统 和 Dubbo写在前面“金三银四”对于今年(2019)的互联网行业行情并不适用,面试遇到种种困难的同时也意识到个人技术水平不足,下面对近期学习做个总结,方便自己以后查阅,最好能帮助到和我一样是传统行业出身想跳槽到互联网行业的同学。以下知识点大多搜罗于大牛博客和“中华石杉”老师的视频,谢谢你们的文章和经验让我快速成长,谢谢!我会...原创 2019-05-16 18:24:32 · 3584 阅读 · 1 评论 -
高级JAVA开发 分布式系统部分
高级JAVA开发 分布式系统分布式系统分布式系统接口的幂等性分布式锁Redis 普通实现基于Redis的分布式锁框架:Redisson、RedLock基于zookeeper的分布式锁分布式系统Session共享分布式事务两阶段提交/XA协议三阶段提交/TCC机制(Try、Confirm、Cancel)本地消息表分布式系统参考和摘自:中华石杉 《Java工程师面试突击第1季》分布式系统接口的...原创 2019-05-16 18:20:47 · 2543 阅读 · 0 评论 -
高级JAVA开发 Java基础部分
高级JAVA开发 Java基础部分ThreadLocal 以及内存泄漏问题ThreadLocal 以及内存泄漏问题分析如有不正确之处,请回帖或联系我:guosheng.tan@foxmail.com随便找一个应用ThreadLocal的例子:在使用时,声明一个本地ThreadLocal变量并重写initialValue()方法,就可以为每个线程提供一个本地变量存储的功能。那么,它是怎么实...原创 2019-05-20 18:01:56 · 1063 阅读 · 0 评论 -
高级JAVA开发 Dubbo部分
高级JAVA开发 分布式系统和Dubbo分布式系统 和 DubboDubbo架构&框架设计Dubbo的网络通信协议&序列化负载均衡策略集群容错Dubbo的SPI(Service Provider Interface)& Filter分布式系统 和 Dubbo参考和摘自:中华石杉 《Java工程师面试突击第1季》Dubbo 官网文档Dubbo架构&框架设计...原创 2019-05-15 16:11:48 · 532 阅读 · 0 评论 -
高级JAVA开发 Redis部分
高级JAVA开发 Redis部分Redis缓存的作用、为什么要用缓存Redis和Memcached区别Redis五种数据类型和使用场景Redis线程模型(为什么Redis是单线程的但是还可以支撑高并发)Redis过期策略、内存回收策略(内存淘汰机制)Redis的高可用架构(主从replication、哨兵、cluster集群)Redis的持久化机制(RDB、AOF)使用缓存带来的问题以及处理办法缓...原创 2019-05-15 02:20:16 · 1292 阅读 · 0 评论 -
高级JAVA开发 MQ部分
高级JAVA开发 MQ部分MQMQ的作用、为什么要用MQ常见的MQ的优缺点使用MQ带来的问题以及处理办法MQ带来的问题列举消息重复消费(幂等)问题消息丢失问题消息顺序性问题消息过期丢失、大量积压等问题如何保证MQ高可用性RabbitMQ高可用以及部署模式如何开启镜像集群模式kafka的高可用性MQ参考和摘自:中华石杉 《Java工程师面试突击第1季》ActiveMQ—知识点整理消息总线真...原创 2019-05-15 02:18:43 · 8118 阅读 · 0 评论