zoukankan      html  css  js  c++  java
  • SPI

    SPI有两个不同的扩展名。

    第一种 :SPI(Serial Peripheral interface)串行外围设备接口(总线)。

    SPI优点

    支持全双工通信
    通信简单
    数据传输速率块

    缺点
    没有指定的流控制,没有应答机制确认是否接收到数据,所以跟IIC总线协议比较在数据 
    可靠性上有一定的缺陷。

    特点
    1):高速、同步、全双工、非差分、总线式
    2):主从机通信模式

    第二种 SPI(Service Provider Interface)服务提供接口。

    简单来讲,即通过注册接口的实现类调用对应的类。mysql-connector驱动包就是使用SPI机制。

    比如有个接口AI,然后有三个实现类A1,A2,A3.我们在META-INF文件夹下建立一个Service,然后在下面建立一个与接口同名的文件AI,在

    此文件中写入A2,A3的类路径地址。这样在开始调用时,通过ServiceLoader从Service下获取接口对应的需要载入的类路径,然后通过反射机制获取对应加载的类,

    如果不想用A2,A3,想用A1了直接修改文件即可,实现快速插拔。

    /**
     * Spi(service procedure interface)
     * @author DennyZhao
     *
     */
    public class SpiTest {
    
        public static void main(String[] args) {
            ServiceLoader<Animals> serviceLoader =  ServiceLoader.load(Animals.class);
            Iterator<Animals> iterator = serviceLoader.iterator();
            while(iterator.hasNext()) {
                Animals animals = iterator.next();
                System.out.println(animals.getAnimalName());
            }
        }
    }

    接口和实现类以及Service结构,由于ServiceLoader默认使用接口的路径和类名查找文件,因此确保文件名和接口路径一致:

    在文件中填写:

    com.test.animal.impl.Sheep
    com.test.animal.impl.Tiger

    即完成了实现类的注入。

  • 相关阅读:
    非常奇怪的VS2005无法调试的问题
    自已写的“动易PowerEasy2006暴库工具”
    用VBA去除Excel工作表保护密码
    mapgis同arcmap之间的数据转换, 投影变换,误差校正,坐标,基础资料,教程的相关信息的汇集
    HDU You Are the One (dp)
    HDU4291 A Short problem
    Mondriaan's Dream(poj2411)
    HDU 4277 USACO ORZ
    求欧拉回路的路径(usaco3.3Riding the Fences)
    poj2923 (状态压缩01背包)
  • 原文地址:https://www.cnblogs.com/DennyZhao/p/9292725.html
Copyright © 2011-2022 走看看