什么是Java注解
注解是java5的新特性。注解可以看做一种注释或者元数据(MetaData),可以把它插入到我们的java代码中,用来描述我们的java类,从而影响java类的行为。
Java注解的目的
使用Java注解一般来说主要有三种目的
- 构建时指示: RetentionPolicy.SOURCE
- 编译期指示: RetentionPolicy.CLASS
- 运行时指示: RetentionPolicy.RUNTIME
注解是java5的新特性。注解可以看做一种注释或者元数据(MetaData),可以把它插入到我们的java代码中,用来描述我们的java类,从而影响java类的行为。
使用Java注解一般来说主要有三种目的
1、什么是序列化与反序列化?
序列化:指把堆内存中的 Java 对象数据,通过某种方式把对象存储到磁盘文件中或者传递给其他网络节点(在网络上传输)。这个过程称为序列化。通俗来说就是将数据结构或对象转换成二进制串的过程
反序列化:把磁盘文件中的对象数据或者把网络节点上的对象数据,恢复成Java对象模型的过程。也就是将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程
现在N多RPC框架应该选用的都是Netty,基于多种原因吧:
1)它很容易上手,它封装了网络传输底层的实现,但也有Spring的开闭原则,可以根据用户的参数配置去定制属于自己的网络传输模型
2)它优化了线程模型,且基于事件驱动,基于NIO,提高IO效率
3)内存优化,直接内存的使用/池化的技术
4)第四点,我也是认为很重要的一点,也是我们写这个RPC框架的核心点,就是有很多参考,基于Netty的成熟的生产级别的代码可以参考(本RPC框架的网络模块netty应用是融合Jupiter和RocketMQ的),说白了,有点抄袭,但也是做了部分的修改
仿照 Spring 的 IOC,因此代码命名和设计基本是仿照 spring 的。
将分为几步来编写简易 IOC,首先设计组件,再设计接口,然后关注实现。
我们还记得 Spring 中最重要的有哪些组件吗?BeanFactory
容器,BeanDefinition
Bean 的基本数据结构,当然还需要加载 Bean 的资源加载器
。大概最后最重要的就是这几个组件。容器用来存放初始化好的 Bean,BeanDefinition 就是 Bean 的基本数据结构,比如 Bean 的名称,Bean 的属性 PropertyValue
,Bean 的方法,是否延迟加载,依赖关系等。资源加载器就简单了,就是一个读取 XML 配置文件的类,读取每个标签并解析。
本来只是想写一写,学一学的,不过觉得还是应该跟大家一起分享一下一个完整的在我知识体系中相对健全的RPC框架
写这个RPC的时候,我是写过一个的RPC的,其实不能称之为写,算抄吧,看过别人写的RPC,也无脑的抄了一遍别人的代码,抄完之后,问了冯大神,感觉收获很多,比每天看书看帖收获多得多