2024年3月6日
简介 Netty 是一个高性能的 NIO 客户端服务器框架,它用于快速开发可维护的高性能协议服务器和客户端程序,例如协议服务器、文件服务器、代理服务器等。Netty 在设计上强调了可扩展性、可复用性和高性能,是一个非常优秀的网络应用程序开发框架。 下面,我们将介绍 Netty 的一些高级特性和高可靠性设计。 高级特性……
阅读全文
2024年3月6日
本博文用于重点分析 Netty 的逻辑架构及关键的架构质量属性,希望有助于大家从 Netty 的架构设计中汲取营养,设计出高性能、高可靠 性和可扩展的程序。 Netty 的三层架构设计 Netty 采用了典型的三层网络架构进行设计和开发,其逻辑架构图如下所示。 通信调度层 Reactor 它由一系列辅助类完成,包括 Reactor 线程 NioEventLoop 及其父类,NioSock……
阅读全文
2024年3月6日
GenericTokenParser Author: HuiFer 源码阅读工程: SourceHot-Mybatis 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 /** * Copyright 2009-2019 the original author or authors. * <p> * Licensed under the……
阅读全文
2024年3月6日
sqlCommand Author: HuiFer Description: 该文介绍 mybatis sqlCommand 类的源码 源码阅读工程: SourceHot-Mybatis org.apache.ibatis.binding.MapperMethod.SqlCommand 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 /** * 核心内容: sql id , Sql 类型 */ public static class SqlCommand { /** * sql id */ private final String name; /** * sql 类型……
阅读全文
2024年3月6日
ParamNameResolver 源码解析 Author: HuiFer Description: 该文介绍 mybatis @Param 注解和ParamNameResolver 源码阅读工程: SourceHot-Mybatis 源码 org.apache.ibatis.reflection.ParamNameResolver 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95……
阅读全文
2024年3月6日
Mybatis ObjectWrapper Author: HuiFer 源码阅读工程: SourceHot-Mybatis 源码位于: org.apache.ibatis.reflection.wrapper.ObjectWrapper‘ 类图: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69……
阅读全文
2024年3月6日
MethodSignature Author: HuiFer Description: 该文介绍 mybatis MethodSignature 类 源码阅读工程: SourceHot-Mybatis org.apache.ibatis.binding.MapperMethod.MethodSignature 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120……
阅读全文
2024年3月6日
Mybatis MetaObject Author: HuiFer 源码阅读工程: SourceHot-Mybatis 源码位于:org.apache.ibatis.reflection.MetaObject 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84……
阅读全文
2024年3月6日
MapperMethod Author: HuiFer Description: 该文介绍 mybatis MapperMethod 源码 源码地址: org.apache.ibatis.binding.MapperMethod,核心方法是execute 源码阅读工程: SourceHot-Mybatis 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 /** * CRUD 不同的执行……
阅读全文
2024年3月6日
Mybatis DyanmicSqlSourcce Author: HuiFer 源码阅读工程: SourceHot-Mybatis org.apache.ibatis.scripting.xmltags.DynamicSqlSource org.apache.ibatis.scripting.xmltags.DynamicContext.DynamicContext 1 2 3 4 5 6 7 8 9 <select id="list" resultType="com.huifer.mybatis.entity.HsSell"> select * from hs_sell <trim prefix="WHERE" prefixOverrides="AND |OR"> <if test="ID != null"> and ID = #{ID,jdbcType=INTEGER} </if> </trim> </select> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 public class MixedSqlNode implements SqlNode { private final List<SqlNode> contents; public MixedSqlNode(List<SqlNode> contents) { this.contents = contents; } @Override public boolean apply(DynamicContext context) { // 调用 salNode 对象本身的 apply 方法解析 sql contents.forEach(node -> node.apply(context)); return true; } } 根据 mapper.xml 文件中的代码流程 需要走 org.apache.ibatis.scripting.xmltags.StaticTextSqlNode#apply org.apache.ibatis.scripting.xmltags.TrimSqlNode#apply org.apache.ibatis.scripting.xmltags.IfSqlNode#apply 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18……
阅读全文