diff --git a/version1/.idea/compiler.xml b/version1/.idea/compiler.xml
new file mode 100644
index 0000000..5593f45
--- /dev/null
+++ b/version1/.idea/compiler.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version1/.idea/encodings.xml b/version1/.idea/encodings.xml
new file mode 100644
index 0000000..aa00ffa
--- /dev/null
+++ b/version1/.idea/encodings.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version1/.idea/jarRepositories.xml b/version1/.idea/jarRepositories.xml
new file mode 100644
index 0000000..abb532a
--- /dev/null
+++ b/version1/.idea/jarRepositories.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version1/.idea/misc.xml b/version1/.idea/misc.xml
new file mode 100644
index 0000000..5372e92
--- /dev/null
+++ b/version1/.idea/misc.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version1/.idea/vcs.xml b/version1/.idea/vcs.xml
new file mode 100644
index 0000000..6c0b863
--- /dev/null
+++ b/version1/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version1/.idea/workspace.xml b/version1/.idea/workspace.xml
new file mode 100644
index 0000000..60ff3f6
--- /dev/null
+++ b/version1/.idea/workspace.xml
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1736761843999
+
+
+ 1736761843999
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version4/.idea/.gitignore b/version4/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/version4/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/version4/.idea/compiler.xml b/version4/.idea/compiler.xml
new file mode 100644
index 0000000..a49db56
--- /dev/null
+++ b/version4/.idea/compiler.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version4/.idea/encodings.xml b/version4/.idea/encodings.xml
new file mode 100644
index 0000000..aa00ffa
--- /dev/null
+++ b/version4/.idea/encodings.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version4/.idea/jarRepositories.xml b/version4/.idea/jarRepositories.xml
new file mode 100644
index 0000000..abb532a
--- /dev/null
+++ b/version4/.idea/jarRepositories.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version4/.idea/misc.xml b/version4/.idea/misc.xml
new file mode 100644
index 0000000..5372e92
--- /dev/null
+++ b/version4/.idea/misc.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version4/.idea/vcs.xml b/version4/.idea/vcs.xml
new file mode 100644
index 0000000..6c0b863
--- /dev/null
+++ b/version4/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version5/.idea/jarRepositories.xml b/version5/.idea/jarRepositories.xml
index 5a2f139..c176f1e 100644
--- a/version5/.idea/jarRepositories.xml
+++ b/version5/.idea/jarRepositories.xml
@@ -16,5 +16,10 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/version5/.idea/vcs.xml b/version5/.idea/vcs.xml
index d843f34..6c0b863 100644
--- a/version5/.idea/vcs.xml
+++ b/version5/.idea/vcs.xml
@@ -1,4 +1,6 @@
-
+
+
+
\ No newline at end of file
diff --git a/version5/krpc-api/target/classes/com/kama/annotation/Retryable.class b/version5/krpc-api/target/classes/com/kama/annotation/Retryable.class
new file mode 100644
index 0000000..a80d836
Binary files /dev/null and b/version5/krpc-api/target/classes/com/kama/annotation/Retryable.class differ
diff --git a/version5/krpc-common/target/classes/common/serializer/myserializer/Serializer.class b/version5/krpc-common/target/classes/common/serializer/myserializer/Serializer.class
index 4285b7e..17d8172 100644
Binary files a/version5/krpc-common/target/classes/common/serializer/myserializer/Serializer.class and b/version5/krpc-common/target/classes/common/serializer/myserializer/Serializer.class differ
diff --git a/version5/krpc-consumer/target/classes/com/kama/consumer/ConsumerTest.class b/version5/krpc-consumer/target/classes/com/kama/consumer/ConsumerTest.class
index 03a4c00..f82f391 100644
Binary files a/version5/krpc-consumer/target/classes/com/kama/consumer/ConsumerTest.class and b/version5/krpc-consumer/target/classes/com/kama/consumer/ConsumerTest.class differ
diff --git a/version5/krpc-core/target/classes/com/kama/client/rpcclient/RpcClient.class b/version5/krpc-core/target/classes/com/kama/client/rpcclient/RpcClient.class
index b6f7885..8119d4d 100644
Binary files a/version5/krpc-core/target/classes/com/kama/client/rpcclient/RpcClient.class and b/version5/krpc-core/target/classes/com/kama/client/rpcclient/RpcClient.class differ
diff --git a/version5/krpc-provider/target/classes/META-INF/application.properties b/version5/krpc-provider/target/classes/META-INF/application.properties
deleted file mode 100644
index e69de29..0000000
diff --git a/version6/.idea/.gitignore b/version6/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/version6/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/version6/.idea/compiler.xml b/version6/.idea/compiler.xml
new file mode 100644
index 0000000..607ac60
--- /dev/null
+++ b/version6/.idea/compiler.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version6/.idea/encodings.xml b/version6/.idea/encodings.xml
new file mode 100644
index 0000000..356f661
--- /dev/null
+++ b/version6/.idea/encodings.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version6/.idea/jarRepositories.xml b/version6/.idea/jarRepositories.xml
new file mode 100644
index 0000000..abb532a
--- /dev/null
+++ b/version6/.idea/jarRepositories.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version6/.idea/misc.xml b/version6/.idea/misc.xml
new file mode 100644
index 0000000..a8651d6
--- /dev/null
+++ b/version6/.idea/misc.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version6/.idea/vcs.xml b/version6/.idea/vcs.xml
new file mode 100644
index 0000000..6c0b863
--- /dev/null
+++ b/version6/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version6/krpc-api/pom.xml b/version6/krpc-api/pom.xml
new file mode 100644
index 0000000..f090045
--- /dev/null
+++ b/version6/krpc-api/pom.xml
@@ -0,0 +1,20 @@
+
+
+
+ version6
+ com.kama
+ 1.0-SNAPSHOT
+
+ 4.0.0
+
+ krpc-api
+
+
+ 17
+ 17
+ UTF-8
+
+
+
\ No newline at end of file
diff --git a/version6/krpc-api/src/main/java/com/kama/annotation/Retryable.java b/version6/krpc-api/src/main/java/com/kama/annotation/Retryable.java
new file mode 100644
index 0000000..1b6a6c4
--- /dev/null
+++ b/version6/krpc-api/src/main/java/com/kama/annotation/Retryable.java
@@ -0,0 +1,13 @@
+package com.kama.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+public @interface Retryable {
+
+}
+
diff --git a/version6/krpc-api/src/main/java/com/kama/pojo/User.java b/version6/krpc-api/src/main/java/com/kama/pojo/User.java
new file mode 100644
index 0000000..3713995
--- /dev/null
+++ b/version6/krpc-api/src/main/java/com/kama/pojo/User.java
@@ -0,0 +1,26 @@
+package com.kama.pojo;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @ClassName User
+ * @Description User对象
+ * @Author Tong
+ * @LastChangeDate 2024-12-05 0:53
+ * @Version v5.0
+ */
+@Builder
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class User implements Serializable {
+ // 客户端和服务端共有的
+ private Integer id;
+ private String userName;
+ private Boolean gender;
+}
diff --git a/version6/krpc-api/src/main/java/com/kama/service/UserService.java b/version6/krpc-api/src/main/java/com/kama/service/UserService.java
new file mode 100644
index 0000000..d79510c
--- /dev/null
+++ b/version6/krpc-api/src/main/java/com/kama/service/UserService.java
@@ -0,0 +1,24 @@
+package com.kama.service;
+
+
+import com.kama.annotation.Retryable;
+import com.kama.pojo.User;
+
+/**
+ * @InterfaceName UserService
+ * @Description 接口
+ * @Author Tong
+ * @LastChangeDate 2024-12-05 0:52
+ * @Version v1.0
+ */
+
+public interface UserService {
+
+ // 查询
+ @Retryable
+ User getUserByUserId(Integer id);
+
+ // 新增
+ @Retryable
+ Integer insertUserId(User user);
+}
diff --git a/version6/krpc-api/target/classes/com/kama/annotation/Retryable.class b/version6/krpc-api/target/classes/com/kama/annotation/Retryable.class
new file mode 100644
index 0000000..a80d836
Binary files /dev/null and b/version6/krpc-api/target/classes/com/kama/annotation/Retryable.class differ
diff --git a/version6/krpc-api/target/classes/com/kama/pojo/User$UserBuilder.class b/version6/krpc-api/target/classes/com/kama/pojo/User$UserBuilder.class
new file mode 100644
index 0000000..261a629
Binary files /dev/null and b/version6/krpc-api/target/classes/com/kama/pojo/User$UserBuilder.class differ
diff --git a/version6/krpc-api/target/classes/com/kama/pojo/User.class b/version6/krpc-api/target/classes/com/kama/pojo/User.class
new file mode 100644
index 0000000..1dc838d
Binary files /dev/null and b/version6/krpc-api/target/classes/com/kama/pojo/User.class differ
diff --git a/version6/krpc-api/target/classes/com/kama/service/UserService.class b/version6/krpc-api/target/classes/com/kama/service/UserService.class
new file mode 100644
index 0000000..eaee35f
Binary files /dev/null and b/version6/krpc-api/target/classes/com/kama/service/UserService.class differ
diff --git a/version6/krpc-common/pom.xml b/version6/krpc-common/pom.xml
new file mode 100644
index 0000000..af7c665
--- /dev/null
+++ b/version6/krpc-common/pom.xml
@@ -0,0 +1,32 @@
+
+
+
+ version6
+ com.kama
+ 1.0-SNAPSHOT
+
+ 4.0.0
+
+ krpc-common
+
+
+ com.kama
+ krpc-api
+ 1.0-SNAPSHOT
+
+
+ cn.hutool
+ hutool-all
+ 5.8.10
+ compile
+
+
+
+ 17
+ 17
+ UTF-8
+
+
+
\ No newline at end of file
diff --git a/version6/krpc-common/src/main/java/common/exception/SerializeException.java b/version6/krpc-common/src/main/java/common/exception/SerializeException.java
new file mode 100644
index 0000000..33a75a5
--- /dev/null
+++ b/version6/krpc-common/src/main/java/common/exception/SerializeException.java
@@ -0,0 +1,17 @@
+package common.exception;
+
+/**
+ * @ClassName SerializeException
+ * @Description ToDo
+ * @Author Tong
+ * @LastChangeDate 2024-12-02 19:18
+ * @Version v1.0
+ */
+public class SerializeException extends RuntimeException{
+ public SerializeException(String message) {
+ super(message);
+ }
+ public SerializeException(String message, Throwable cause) {
+ super(message, cause);
+ }
+}
diff --git a/version6/krpc-common/src/main/java/common/message/MessageType.java b/version6/krpc-common/src/main/java/common/message/MessageType.java
new file mode 100644
index 0000000..51f44c0
--- /dev/null
+++ b/version6/krpc-common/src/main/java/common/message/MessageType.java
@@ -0,0 +1,13 @@
+package common.message;
+
+import lombok.AllArgsConstructor;
+
+@AllArgsConstructor
+public enum MessageType {
+ REQUEST(0), RESPONSE(1);
+ private int code;
+
+ public int getCode() {
+ return code;
+ }
+}
diff --git a/version6/krpc-common/src/main/java/common/message/RpcRequest.java b/version6/krpc-common/src/main/java/common/message/RpcRequest.java
new file mode 100644
index 0000000..b44a931
--- /dev/null
+++ b/version6/krpc-common/src/main/java/common/message/RpcRequest.java
@@ -0,0 +1,31 @@
+package common.message;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @ClassName RpcRequest
+ * @Description 定义请求消息格式
+ * @Author Tong
+ * @LastChangeDate 2024-11-29 10:12
+ * @Version v5.0
+ */
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+public class RpcRequest implements Serializable {
+ //接口名、方法名、参数列表参数类型
+ private String interfaceName;
+
+ private String methodName;
+
+ private Object[] params;
+
+ private Class>[] paramsType;
+}
diff --git a/version6/krpc-common/src/main/java/common/message/RpcResponse.java b/version6/krpc-common/src/main/java/common/message/RpcResponse.java
new file mode 100644
index 0000000..3d0fc81
--- /dev/null
+++ b/version6/krpc-common/src/main/java/common/message/RpcResponse.java
@@ -0,0 +1,37 @@
+package common.message;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @ClassName RpcResponse
+ * @Description 定义响应消息格式
+ * @Author Tong
+ * @LastChangeDate 2024-11-29 10:14
+ * @Version v5.0
+ */
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+public class RpcResponse implements Serializable {
+ //状态信息
+ private int code;
+ private String message;
+ //更新:加入传输数据的类型,以便在自定义序列化器中解析
+ private Class> dataType;
+ //具体数据
+ private Object data;
+
+ public static RpcResponse sussess(Object data) {
+ return RpcResponse.builder().code(200).dataType(data.getClass()).data(data).build();
+ }
+
+ public static RpcResponse fail(String msg) {
+ return RpcResponse.builder().code(500).message(msg).build();
+ }
+}
diff --git a/version6/krpc-common/src/main/java/common/serializer/mycoder/MyDecoder.java b/version6/krpc-common/src/main/java/common/serializer/mycoder/MyDecoder.java
new file mode 100644
index 0000000..16c2d26
--- /dev/null
+++ b/version6/krpc-common/src/main/java/common/serializer/mycoder/MyDecoder.java
@@ -0,0 +1,58 @@
+package common.serializer.mycoder;
+
+
+import common.exception.SerializeException;
+import common.message.MessageType;
+import common.serializer.myserializer.Serializer;
+import io.netty.buffer.ByteBuf;
+import io.netty.channel.ChannelHandlerContext;
+import io.netty.handler.codec.ByteToMessageDecoder;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @ClassName MyDecoder
+ * @Description 解码器
+ * @Author Tong
+ * @LastChangeDate 2024-11-29 10:32
+ * @Version v5.0
+ */
+@Slf4j
+public class MyDecoder extends ByteToMessageDecoder {
+ @Override
+ protected void decode(ChannelHandlerContext channelHandlerContext, ByteBuf in, List