java基础
文章平均质量分 70
大白先生_
一个平凡的程序猿
展开
-
Java的SPI机制简述
前言 在翻看一些框架代码的时候,能看到一些框架处理时对于类的实例化并没有直接new一个对象,而是采用了SPI机制,为了便于看源码,也为了以后对自己写代码进行优化,因此需要学习一下 SPI SPI全称Service Provider Interface,翻译过来是服务提供接口。它是jdk内置的一种服务发现机制,它可以让服务定义与实现分离、解耦,能够提高程序的扩展性 Java SPI 实际上是“基于接口的编程+策略模式+配置文件”组合实现的动态加载机制,提供了通过interface寻找imp原创 2020-09-06 00:38:48 · 188 阅读 · 0 评论 -
Kryo序列化简述
前言 在之前的文章中,有针对JDK序列化方式的描述以及代码示例 由于其序列化后的数据较大,且序列化的性能不高,于是市面上出现了很多既可以缩小序列化后数据大小并且又能提高序列化性能的序列化框架,例如Google出品的Potobuf以及Kryo等 序列化框架性能 以下两张图是引用网上关于几款序列化框架的性能及大小测试的对比图 时间占用对比图: 空间占用对比图: 由此可见,JDK原生的序列化方式耗时最长,并且占用空间最大。在对比之下,各方面表现较好的是Google的Potobuf,Potobuf需要通过静原创 2020-09-04 19:22:54 · 271 阅读 · 0 评论 -
JAVA序列化方式简述
序列化 JAVA程序运行过程中,我们可以在JVM堆内存区域中创建可复用的JAVA对象,程序运行过程中可以反复使用。 但是在一些场景下:写入磁盘文件或在网络上进行数据传输等,存储或传输的是二进制数据,估因此无法保留数据在JVM中对象的形态,因此序列化和反序列化就是解决此类问题的 序列化:将对象信息转化为二进制数据流的过程称为序列化 反序列化:将二进制数据流恢复成对象的过程,称为反序列化 java序列化机制 java原生的序列化方式有两种 (1)使用Serializable接口 (2)使用Externali原创 2020-08-29 21:10:52 · 117 阅读 · 0 评论 -
设计模式之代理模式简述
代理模式 代理模式的定义为:为某一个对象提供一个代理对象,由代理对象代替该对象方法的调用 代理类本身不实现服务,而是通过调用被代理类中的方法来提供服务 抽象模式由三种角色组成,分别为抽象角色、代理角色、真实角色 抽象角色:通过接口或抽象类声明真实角色实现的业务方法 代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作 真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用 静态代理 定义一个接口,作为抽象角色 public inter原创 2020-08-29 14:01:23 · 98 阅读 · 0 评论 -
java中“==”和euqals的区别
java中的“==”: 基本数据类型之间用==比的是值 引用数据类型之间用==比较的是内存存放的地址 java中的equals方法: 它是一个可以重写可以重写的方法,如果不重写equals方法,那它和“==”号作用相同,比较的是对象存放的地址。重写后,可以比较对象的值。 举个例子: 用String来作为例子,当定义了两个字符串之后,原创 2017-03-20 17:46:57 · 757 阅读 · 0 评论 -
java自定义注解
元注解: 在日常編程中,我們遇到的註解有@Override、@SuppressWarnings等等,@Override表示重寫父類的方法,@SuppressWarnings表示忽略警告信息。 元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。Java5.0定义的元注解:原创 2017-03-21 11:23:50 · 152 阅读 · 0 评论 -
java中的枚举类型
枚举是一种类型,用于定义变量,以限制变量的赋值;赋值时通过“枚举名.值”取得枚举中的值 枚举类更加直观,类型安全。使用常量会有以下几个缺陷: 1. 类型不安全。若一个方法中要求传入季节这个参数,用常量的话,形参就是int类型,开发者传入任意的int类型值就行,但是如果是枚举类型的话,就只能传入枚举类中包含 的对象。 2. 没有命名空间。开发者要在命名的时候以原创 2017-03-21 12:10:40 · 192 阅读 · 0 评论