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

    即完成了实现类的注入。

  • 相关阅读:
    poj 3041 Asteroids (最大匹配最小顶点覆盖——匈牙利模板题)
    poj 2060 Taxi Cab Scheme (最小路径覆盖)
    poj 2728 Desert King (最小比例生成树)
    poj 2449 Remmarguts' Date(第K短路问题 Dijkstra+A*)
    poj 3463 Sightseeing( 最短路与次短路)
    研究生flag
    插入排序和堆排序
    根据二叉树的中序遍历和层次遍历还原二叉树
    关于AVL实现的代码记录
    回文数猜想(与6174问题很像)
  • 原文地址:https://www.cnblogs.com/DennyZhao/p/9292725.html
Copyright © 2011-2022 走看看