架构染色_社区达人页

个人头像照片
架构染色
公众号【架构染色】,专注后端,欢迎交流
暂无精选文章
暂无更多信息

2023年04月

  • 04.15 19:55:47
    发表了文章 2023-04-15 19:55:47

    把脉分布式事务的模型、协议和方案

    在当前的技术发展阶段,不同的业务场景对一致性、可靠性、易用性、性能等要求不同,应用架构可以根据实际场景的需求,灵活选择合适的分布式事务解决方案。行业中把分布式事务解决方案分为刚性事务方案和柔性事务方案这两大类。 就刚性事务这个范畴,DTP已经成为事实上的事务模型组件的行为标准,解决了不少分布式事务的问题。但随着技术以及业务场景的演进发展,其缺点和局限性也越来越明显,伴随着 BASE 理论的提出,诸多柔性事务方案(如可靠消息、最大努力通知、AT、TCC、Saga)诞生,满足了各类业务场景的差异化需求。
  • 04.15 19:53:00
    发表了文章 2023-04-15 19:53:00

    Seata 高性能 RPC 通信的实现- 巧用 reactor 模式

    reactor 模式是一种事件驱动的应用层 I/O 处理模式,基于分而治之和事件驱动的思想,致力于构建一个高性能的可伸缩的 I/O 处理模式
  • 04.15 19:48:59
    发表了文章 2023-04-15 19:48:59

    Seata 高性能RPC通信的实现基石-Netty篇

    Netty是一个异步的、基于事件驱动的网络应用框架,用以快速开发高性能、高可靠性的网络 IO 程序。

2023年02月

  • 02.13 22:08:07
    发表了文章 2023-02-13 22:08:07

    用 Seata 搞定分布式事务的规范化建设-赋能产研|提质增效

    从技术架构管理的角度看,一套规范的、通用的、可靠的分布式事务解决方案,帮助开发者在分布式环境下,既保证业务数据的一致性,又不需要投入太多的资源用于业务数据一致性的开发维护,还能加快迭代速度保障项目交付。

2023年01月

  • 01.06 16:22:19
    发表了文章 2023-01-06 16:22:19

    [翻译]Mybatis useGeneratedKeys参数的使用和自增主键的获取方式

    对于支持自动生成记录主键的数据库,如 MySQL 和 SQL Server,将 useGeneratedKeys 参数的值设置为 true,就可以在记录insert成功后获得数据库自动生成的主键 ID
  • 01.05 22:27:32
    发表了文章 2023-01-05 22:27:32

    NIO-内存映射文件-理论篇

    内存映射文件是一种允许程序直接从内存访问的特殊文件。通过将整个文件或者文件的一部分映射到内存中、操作系统负责获取页面请求和写入文件,应用程序就只需要处理内存数据,这样可以实现非常快速的 IO 操作。
  • 01.05 22:26:23
    发表了文章 2023-01-05 22:26:23

    遵循Happens-Before规则来保证可见性|而非掌握所有底层

    基于JSR -133内存模型提出了happens-before的概念,通过这个概念来阐述操作之间的内存可见性。要保证可见性,就是遵守 Happens-Before 规则,合理的使用java提供的工具。
  • 01.05 22:13:48
    发表了文章 2023-01-05 22:13:48

    SkyWalking 拓扑功能的性能优化

    1. 增加查询的并行度,减少串行耗时。 2. 规避无效查询的触发,避免带来额外消耗。 3. 提升分片检索的命中,缩小检索分片数
  • 01.05 22:12:39
    发表了文章 2023-01-05 22:12:39

    Java版管程:Synchronized

    同步机制中有经典的管程方案,管程其实就是对共享变量以及其操作的封装: 1. 将共享资源封装起来,对外提供操作这些共享资源的方法。 2. 线程只能通过调用管程中的方法来间接地访问管程中的共享资源
  • 01.05 22:11:42
    发表了文章 2023-01-05 22:11:42

    避免重排序之使用 Volatile 关键字

    volatile 关键字本身就包含了禁止指令重排序的语义,仅保证赋值过程的原子性,保障变量的可见性,但不具备排它性
  • 01.05 22:10:52
    发表了文章 2023-01-05 22:10:52

    JMM应对内存系重排序

    CPU提供内存屏障指令,来解决内存系重排序。读屏障清空本地的invalidate queue保证之前的所有load都已经生效;写屏障清空本地的store buffer,使得之前的所有store操作生效
  • 01.05 22:08:45
    发表了文章 2023-01-05 22:08:45

    原来规避重排序是为了保障可见性

    导致可见性的原因有很多,如: 1. 为了提升性能而实施的编译期重排序。 2. 数据在寄存器中。 3. cpu缓存的更改未同步到主内存中 或 内存中的更改未同步到cpu缓存(运行期重排序)。
  • 01.05 22:06:07
    发表了文章 2023-01-05 22:06:07

    logback之 AsyncAppender 的原理、源码及避坑建议

    AsyncAppender 接收日志,放入其内部的一个阻塞队列,专开一个线程从阻塞队列中取数据(每次一个)丢给链路下游的Appender 如 FileAppender,如此可把日志写盘 变成 日志写内存,减少写日志的 RT。
  • 01.05 22:04:42
    发表了文章 2023-01-05 22:04:42

    logback之 FileAppender 的原理及避坑建议

    buffer 机制 通俗来说就是化零为整,把少量多次变成多量少次;具体来说就是进行流量整形,把突发的大数量较小规模的 I/O 整理成平稳的小数量较大规模的 I/O,以减少响应次数
  • 01.05 22:03:00
    发表了文章 2023-01-05 22:03:00

    【alibaba/jvm-sandbox#07】事件监听的关键实现

    代码中的 new 一个 Listener,sandbox 内部就创建并注册一个与之对应的事件处理器。Spy 的静态方法中将方法事件交给了事件处理器经过一些内部处理,最终回调 listener 的方法。
  • 01.05 22:01:59
    发表了文章 2023-01-05 22:01:59

    【alibaba/jvm-sandbox#06】事件监听的关键设计

    介绍jvm-sandbox中事件机制的设计,通过用事件Id与事件之间的映射关系进行解耦,通过Spy类的静态方法携带事件Id进行核心事件逻辑的埋点注入
  • 01.05 22:00:33
    发表了文章 2023-01-05 22:00:33

    【alibaba/jvm-sandbox#05】沙箱事件详解

    alibaba/jvm-sandbox设计了完善且复杂的沙箱事件,用于实现事件探测和流程控制机制。但不建议对于同一个类、同一个方法多次增强
  • 01.05 21:59:42
    发表了文章 2023-01-05 21:59:42

    【alibaba/jvm-sandbox#04】通过EventWatchBuilder修改字节码

    jvm-sandbox给使用者提供EventWatchBuilder对代码插桩进行了封装;把底层复杂的字节码操控隐藏起来,让使用者仅关注操控什么类、什么方法、方法中的什么逻辑。
  • 01.05 21:58:49
    发表了文章 2023-01-05 21:58:49

    【alibaba/jvm-sandbox#03】JavaAgent 修改字节码的机制

    开发者一般采用建立一个 Agent 的方式来使用 JVMTI,使用 JVMTI 一个基本的方式就是设置回调函数,在回调函数体内,可以 获取各种各样的VM级信息,甚至控制VM行为,如类加载时修改类
  • 01.05 21:57:49
    发表了文章 2023-01-05 21:57:49

    【alibaba/jvm-sandbox#02】通过无侵入AOP实现行为注入和流控

    任何一个 Java 方法的调用都可以分解为`BEFORE`、`RETURN`和`THROWS`三个环节,由此在三个环节上引申出对应环节的事件探测和流程控制机制。
  • 01.05 21:55:33
    发表了文章 2023-01-05 21:55:33

    【alibaba/jvm-sandbox#01】debug源码的技巧

    alibaba/jvm-sandbox是 一种JVM的非侵入式运行期 AOP 解决方案。沙箱容器提供 1. 动态增强类你所指定的类,获取你想要的参数和行信息甚至改变方法执行 2. 动态可插拔容器框架
  • 01.05 21:54:31
    发表了文章 2023-01-05 21:54:31

    ThreadLocal 使用手册

    Java 中的`ThreadLocal`类允许程序员创建只能由创建它们的线程访问的变量。这对于创建线程安全代码很有用,因为它确保每个线程都有自己的变量副本并且不会干扰其他线程。
  • 01.05 21:44:20
    发表了文章 2023-01-05 21:44:20

    Seata-AT模式数据源代理-JDBC中的关键知识点

    Seata 对业务无侵入是通过数据源代理实现的,数据源代理的实现涉及到 DataSource、Connection 以及 Statement,这几个关键知识属于 JDBC 的范畴
  • 01.05 21:36:54
    发表了文章 2023-01-05 21:36:54

    【翻译】结构化日志的价值 - 更好地理解系统

    一种比较可行的克服这些困难的方案是以一种一致的、明确的和机器可读的格式来记录系统中最有价值的信息。这种方法称为结构化日志记录。在配套工具的支持下,这些追踪数据有助于更深入地了解你的系统的运行活动,使你能够理解组件之间的相互作用。
  • 01.05 16:04:14
    发表了文章 2023-01-05 16:04:14

    Seata-AT模式+TDDL:排查 构建Insert操作的afterImage时执行SELECT LAST_INSERT_ID()报错

    构建 afterImage的时候,prepareStatement是复用了Insert操作的prepareStatement,而prepareStatement逻辑中,会在执行 sql 的时候会把参数设置一遍;由于未清空参数,只把 sql 变成了 SELECT LAST_INSERT_ID() ,给没有占位符的 sql 指定参数,就引发了错误

2022年12月

  • 发表了文章 2023-04-15

    把脉分布式事务的模型、协议和方案

  • 发表了文章 2023-04-15

    Seata 高性能 RPC 通信的实现- 巧用 reactor 模式

  • 发表了文章 2023-04-15

    Seata 高性能RPC通信的实现基石-Netty篇

  • 发表了文章 2023-02-13

    用 Seata 搞定分布式事务的规范化建设-赋能产研|提质增效

  • 发表了文章 2023-01-06

    [翻译]Mybatis useGeneratedKeys参数的使用和自增主键的获取方式

  • 发表了文章 2023-01-05

    NIO-内存映射文件-理论篇

  • 发表了文章 2023-01-05

    遵循Happens-Before规则来保证可见性|而非掌握所有底层

  • 发表了文章 2023-01-05

    SkyWalking 拓扑功能的性能优化

  • 发表了文章 2023-01-05

    Java版管程:Synchronized

  • 发表了文章 2023-01-05

    避免重排序之使用 Volatile 关键字

  • 发表了文章 2023-01-05

    JMM应对内存系重排序

  • 发表了文章 2023-01-05

    原来规避重排序是为了保障可见性

  • 发表了文章 2023-01-05

    logback之 AsyncAppender 的原理、源码及避坑建议

  • 发表了文章 2023-01-05

    logback之 FileAppender 的原理及避坑建议

  • 发表了文章 2023-01-05

    【alibaba/jvm-sandbox#07】事件监听的关键实现

  • 发表了文章 2023-01-05

    【alibaba/jvm-sandbox#06】事件监听的关键设计

  • 发表了文章 2023-01-05

    【alibaba/jvm-sandbox#05】沙箱事件详解

  • 发表了文章 2023-01-05

    【alibaba/jvm-sandbox#04】通过EventWatchBuilder修改字节码

  • 发表了文章 2023-01-05

    【alibaba/jvm-sandbox#03】JavaAgent 修改字节码的机制

  • 发表了文章 2023-01-05

    【alibaba/jvm-sandbox#02】通过无侵入AOP实现行为注入和流控

正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息
正在加载, 请稍后...
暂无更多信息