固定思路详解

Springboot

Springboot的依赖为什么可以不写版本号

在父版本进入之后在进入父版本所依赖的父版本之后,发现里面写好了我们以后可能依赖的依赖的版本号,已经固定写好了,这里管理者所有依赖的版本,导入依赖之后不写版本就用这里的版本,有个版本号仲裁中心。

Springboot是怎么扫包的?

在SpringApplication.run方法中传入了启动类的字节文件,还有参数,这里通过反射获得了启动类的注解@SpringBootApplication,而这个注解里面自动的功能,比如包扫描和自动装载。

而里面有个@EnableAutoConfiguration 就实现了自动包扫描,会获得包名然后,开始扫描。所以启动类必须覆盖所有与业务相关的类:启动类所在的包必须是业务类所在包的同包或者父包。如果没有覆盖,业务类就不会自动装配到IoC容器中。

Springboot如何配置呢?

有一些默认的配置已经写好了都放在了所依赖的父项目中的仲裁中心里面,而springboot是在@SpringBootConfiguration里面有个@Import(AutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {
给容器中导入一些组件的选择器

这些自动配置类给我们当前项目的场景提供了一些组件和配置,有了自动配置就免除类手动编写配置文件,注入等等功能

什么是跨域

当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域

实现RMI程序步骤

1、创建一个远程接口,继承java.rmi.Remote接口

2、实现远程接口,并继承UnicastRemoteObject

3、创建服务器程序,同时使用createRegistry方法注册远程接口对象

4、创建客户端程序,通过Naming类的lookup方法来远程调用接口中的方法

序列化和反序列化

(1)Java序列化就是指把Java对象转换为字节序列的过程

    Java反序列化就是指把字节序列恢复为Java对象的过程。

(2)序列化最重要的作用:在传递和保存对象时.保证对象的完整性和可传递性。对象转换为有序字节流,以便在网络上传输或者保存在本地文件中。

   反序列化的最重要的作用:根据字节流中保存的对象状态及描述信息,通过反序列化重建对象。

序列化优点:

①将对象转为字节流存储到硬盘上,当JVM停机的话,字节流还会在硬盘上默默等待,等待下一次JVM的启动,把序列化的对象,通过反序列化为原来的对象,并且序列化的二进制序列能够减少存储空间(永久性保存对象)。

②序列化成字节流形式的对象可以进行网络传输(二进制形式),方便了网络传输。

③通过序列化可以在进程间传递对象。

序列化和反序列化代码示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class SerializableTest {
public static void main(String[] args) throws IOException, ClassNotFoundException {
//序列化
FileOutputStream fos = new FileOutputStream("object.out");
ObjectOutputStream oos = new ObjectOutputStream(fos);
Student student1 = new Student("lihao", "wjwlh", "21");
oos.writeObject(student1);
oos.flush();
oos.close();
//反序列化
FileInputStream fis = new FileInputStream("object.out");
ObjectInputStream ois = new ObjectInputStream(fis);
Student student2 = (Student) ois.readObject();
System.out.println(student2.getUserName()+ " " +
student2.getPassword() + " " + student2.getYear());
}

}