spi

dubbo的SPI应用与原理

核能气质少年 提交于 2020-03-03 14:56:44
dubbo SPI(Service Provider Interface) 本质是 将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类 。这样可以在运行时,动态为接口替换实现类。 在Java中SPI是被用来设计给服务提供商做插件使用的。基于策略模式 来实现动态加载的机制 。我们在程序只定义一个接口,具体的实现交个不同的服务提供者;在程序启动的时候,读取配置文件,由配置确定要调用哪一个实现; 通过 SPI 机制为我们的程序提供拓展功能,在dubbo中,基于 SPI,我们可以很容易的对 Dubbo 进行拓展。例如dubbo当中的protocol,LoadBalance等都是通过SPI机制扩展。 想要学习 Dubbo 的源码,SPI 机制务必弄懂。接下来,我们了解下JAVA SPI与dubbo SPI的用法,再分析DUBBO SPI的源码,本文的dubbo源码是基于2.7.5版本。 JAVA 原生SPI 示例 先简单介绍JAVA SPI的应用。首先,我们定义一个Car接口 public interface Car { String getBrand () ; } 定义该接口的两个实现类。 public class BM implements Car { public String getBrand () { System.out.println( "BM car"

W5500EVB UDP模式的測试与理解

断了今生、忘了曾经 提交于 2020-03-02 18:07:34
之前的博文中已经介绍过W5500EVB 在TCP模式下的两种(Server及Client)传输数据的实现过程,那么传输控制协议中,UDP也是很经常使用的。这样的无连接的协议在很多其它场合为用户提供了便捷。比方发电子邮件,QQ聊天发收消息等…好,那今天就学习一下。UDP模式在W5500EVB上的简单实现。 一 实验硬件及其连接 二 UDP实验相关知识 W5500是一款全硬件TCP/IP嵌入式以太网控制器,为嵌入式系统提供了更加简易的互联网连接方案。W5500集成了TCP/IP协议栈,10/100M以太网数据链路层(MAC)及物理层(PHY),用户无需特别关注TCP 和 UDP的实现过程。仅仅需最好对应配置和查询工作就可以。以下主要解说TCP和UDP差别。供參考 1 基于连接与无连接 TCP—传输控制协议提供的是面向连接、可靠的字节流服务。当客户和server彼此交换数据前。必须先在两方之间建立一个TCP连接,之后才干数据传输。TCP提供超时重发。丢弃反复数据,检验数据,流量控制等功能,保证数据能从一端传到还有一端。 每一个数据包的传输过程是:先建立链路、传输数据、然后清除链路。数据包不包括目的地址。受端和发端不但顺序一致,并且内容同样。它的可靠性高。 UDP—用户数据报协议是面向无连接的。每一个数据包都有完整的源、目的地址及分组编号,各自在网络中独立传输,传输中无论其顺序

基于STM32F10x系列的SPI笔记

落爺英雄遲暮 提交于 2020-03-02 15:02:13
SPI 定义:SPI是串行外设接口(Serial peripheral interface)的缩写,SPI是一种高速的,同步的,全双工通信协议。它只占用四个引脚,分别是MISO、MOSI、NSS、SCLK。 1、SPI的单机通信连接方式: 这个官方数据手册上的图可能看的比较晦涩不太容易懂,于是我自己总结如下: 2.SPI的多机通信方式: SPI的四种模式: CPOL:时钟极性 当CPOL为0时,SCLK时钟空闲状态为低电平 当CPOL为1时,SCLK时钟空闲状态为高电平 CPHA:时钟相位 当CPHA为0时,数据在SCLK的第一边沿开始采集,在第二边沿开始数据采样输出 当CPHA为1时,数据在SCLK的第二边沿开始采集,在下一个边沿开始数据采样输出 SPI一般采用第三种模式CPOL=0,CPHA=1。 SPI的缺点:SPI数据传输没有流控制,也没有应答机制(不知道什么时候数据传输完毕)。 硬件SPI的GPIO引脚配置:NSS/CS(片选)设置为输出模式,其它三个引脚设置为复用功能模式。 软件SPI的GPIO引脚配置:MISO引脚设置为输入模式,其它三个引脚设置为输出模式。 RC522的SPI配置参数: void SPI_Configuration ( SPI_TypeDef * SPIx ) { SPI_InitTypeDef SPI_InitStruct ; SPI_RCC

为什么它有典型FaaS能力,却是非典型FaaS架构?

空扰寡人 提交于 2020-02-28 20:01:35
阿里妹导读:FaaS—Function as a service,函数即服务。它是2014年由于亚马逊的AWS Lambda的兴起,而被大家广泛认知。FaaS能力是NBF中的一项非常重要的能力,NBF是一个非典型的FaaS架构,但是具备了典型的FaaS能力。文章将详细介绍NBF的FaaS容器架构、服务发布、服务路由和强大的Serverless能力以及NBF-FaaS在阿里大促期间的实践心得。 1.NBF NBF (New-Retail Business Framework) 是供应链中台基础技术团队研发的新零售服务开放框架,提供了标准化业务定义、快捷服务开发和生态开放的能力,旨在为生态伙伴提供一整套完整的新零售PaaS和SaaS的解决方案。 2.FaaS 2.1定义 FaaS是Serverless的一种典型形式,由 Serverless平台提供负载均衡、高可用、自动扩缩容、服务治理等最佳实践,将这些最佳实践对 Developer 透明化,进一步缩短 Developer 从想法到产品的时间,降低开发成本,同时保障 Developer 开发的服务的可靠性。通过事件驱动的方式,开发者的Function通过Event有效触发,比如 HTTP 请求、消息事件等。 2.2典型架构 Event Sources Function 事件驱动的集合; Function Instances

yapi 调研

♀尐吖头ヾ 提交于 2020-02-28 04:22:49
20200207 项目调研可以写一下俩工程的实现原理,最后采用哪个工程进行改造,采用的实现方案是什么 20200206 https://segmentfault.com/a/1190000021008147 早前..... 大家好,关于接口文档工具,结合前天群里的讨论,简单做了些调研,我觉得可以参考目前咱们工作实际,从短期和长期两个方向考虑,短期来讲解决当前使用中的痛点,长期来讲看看能否封装一个产品话的工具。大家有什么问题可以提出来,比如下面的是我结合群聊做的一个demo springfox-swagger 的代码侵入问题 yapi接口录入麻烦问题 可以考虑结合 https://github.com/zxcvbnmzsedr/apidoc 二次开发 0.1.0版本 这两天我写一个Demo,做一个maven插件,结合上述代码库,将javadoc 通过yapi的 openapi的方式自动导入ypai pom配置 导入效果: 只需要相关注释,不用写注解侵入性小 对于没有注释的可兼容优化类型和方法名代替 是否需要私有化部署yapi 建议使用公司现有工具,不重复造轮子 如果现有工具不能满足需求,或者咱们提出的问题沟通支持缓慢,再考虑私有化部署 0.2.0版本 Spring spi机制,伴随Spring容器启动,自动上传api,业务侧不感知 org.springframework.boot

Java中的SPI扩展机制(有demo)

一个人想着一个人 提交于 2020-02-27 17:26:14
参考连接: https://www.jianshu.com/p/3a3edbcd8f24 一、什么是SPI SPI ,全称为 Service Provider Interface,是一种服务发现机制。它通过在ClassPath路径下的META-INF/services文件夹查找文件,自动加载文件里所定义的类。 二、设计的目的 肯定是为了扩展性,在不想修改源码的情况下,去替换系统原有的实现,代价最小也最灵活。 三、案例demo 先看看目录接结构 spi-api模块:定义扩展接口 spi-client模块:扩展的模块 spi-test模块:测试模块 github地址: https://github.com/XiaoBinNumberOne/java-spi-demo 四、源码分析 首先看看ServiceLoader.java类结构 ServiceLoader.load,load方法创建了一些属性,重要的是实例化了内部类,LazyIterator。最后返回ServiceLoader的实例。 public final class ServiceLoader<S> implements Iterable<S> private ServiceLoader(Class<S> svc, ClassLoader cl) { //要加载的接口 service = Objects

创龙TI TMS320C6748定点/浮点DSP C674xSD卡接口、拓展IO信号

こ雲淡風輕ζ 提交于 2020-02-27 15:36:05
TL138/1808/6748- EVM是 广州创龙基于SOM-TL138/1808/6748核心板开发的一款开发板。由于SOM-TL138/1808/6748核心板管脚兼容,所以此三个核心板共用同一个底板。 开发板采用核心板+底板的设计方式,尺寸为18cm*13cm,它主要帮助开发者快速评估 核心板 的性能。 核心板采用高密度6层板沉金无铅设计工艺,尺寸为55mm*33mm , 板载3路转换率很高的DC-DC核心电压转换电源芯片,实现了系统的低功耗指标,精密、原装进口的B2B连接器引出全部接口资源,以便开发者进行快捷的二次开发使用。 TL138/1808/6748- EVM开发板 底板 是一个四层无铅沉金电路板,为了方便用户学习开发参考使用,上面引出了常见的各种接口。 SD卡 接口 开发板 带有2路SDIO接口,其中MMC / SD1被复用做LCD接口,另外一路MMC / SD0用作SD卡接口,板上接口为CON6,该接口可以支持SDHC,也就是高速大容量SD卡。 拓展IO信号 J2 是EMIF A 接口,通过EMIF A 可实现 开发板 与不同类型 存储设备 的连接, 例如并口AD模块、多串口模块, 其引脚定义如下 : J3 提供了GPIO、SPI、I2C、uPP、UART等拓展信号,方便客户实现功能模块拓展,比如外接CMOS摄像头、FPGA高速数据采集板卡等模块

斐讯K3更换内存贴片

江枫思渺然 提交于 2020-02-27 15:12:49
内存贴片: S34ML01G200TFI00 SPI芯片: 华邦W25Q128FVSG 芯片 W25Q128FVSG W25Q128FVSSIG FLASH 16M内存 相关链接 小小菜鸟硬改K3换闪存芯片,一波三折,最终喜剧收场 K3完全改造(SPI双启,换nand,刷梅林,改散热),感恩纪念帖 K3 改造之路 - 不死 SPI NAND 双启 tftp 刷机 K3改闪存双启动详细教程(已补图,不知为啥这么乱) 来源: oschina 链接: https://my.oschina.net/dingdayu/blog/3168510

springboot中SPI机制

不想你离开。 提交于 2020-02-26 22:15:26
https://www.jianshu.com/p/0d196ad23915 https://blog.csdn.net/qq_39662660/article/details/88781296 代码: https://github.com/linkedkeeper/spi-imp 为什么要自定义 SPI ? 在实际应用中,无论是 Java SPI 或是 Spring SPI,都无法服务与工程已有 Spring 容器进行整合。 举个栗子:订单 OrderService 的 Implement 是通过 SPI 方式创建的,可如果 OrderService 实现类中调用了 Spring 容器管理的商品 WareService,则会出现 null 异常,因为 OrderService 实现类的生命周期并没有交给 Spring 容器管理。 基于此,我们可以自己实现一套逻辑,主要包括两点: 1、加载 META-INF 目录下的 spi 接口文件 2、将实例化的 Bean 注册到 Spring 的容器中 来源: oschina 链接: https://my.oschina.net/u/3847203/blog/3163580

接口文档工具进度报告

三世轮回 提交于 2020-02-26 14:05:29
首周进度(2020.02.03-2020.02.07) 接口 文档 工具调研: 主要考虑文档的易用性、可读性、扩展性、是否支持私有化部署、以及部署是否方便快捷、是否收费等因素 决定采用基于Yapi私有部署(公司已部署)进行功能扩展 yapi对于权限、项目管理、接口运行、数据mock、自动化测试、数据导入导出、二次开发(和胡挺沟通过,也能支持)都有很好的支持 公司已有部署、私有化部署胡挺做过,比较熟悉,node.js开发的 能做到在线实时团队共享 结合群内痛点讨论,一期需求整理如下: 接口文档展示依托Yapi平台在线实时展示 业务侧以简单方便的形式实现api接口实时更新到Yapi平台 代码已经跑通,bug需要修复,细节改进 1、返回值对象没有成功写入 2、参数没有注释的情况下写入接口路径 3、参数备注,只需要输入格式即可 @param uri uri备注 4、熟悉代码逻辑 5、如果接口已经上传,无法自动覆盖 6、参数是否必须 7、接口状态:“未完成”、“已完成” 计划下周发布1.0.0版本,大家在使用中发现问题,提出改进意见 近期准备拉一个会,讨论后续优化方向 包括yapi一些高级的应用,需要代码实现自动化的,我这边可以继续调研开发 本身这个工具我进小米前也没用过 方案一(0.1.0-SNAPSHOT): 工具以maven插件形式承载,执行插件自动上传api到yapi平台 pom配置