spi

高级开发必须理解的Java中SPI机制

霸气de小男生 提交于 2021-01-17 02:57:50
本文通过探析JDK提供的,在开源项目中比较常用的Java SPI机制,希望给大家在实际开发实践、学习开源项目提供参考。 1 SPI是什么 SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用框架扩展和替换组件。 整体机制图如下: Java SPI 实际上是“ 基于接口的编程+策略模式+配置文件 ”组合实现的动态加载机制。 系统设计的各个抽象,往往有很多不同的实现方案,在面向的对象的设计里,一般推荐模块之间基于接口编程,模块之间不对实现类进行硬编码。一旦代码里涉及具体的实现类,就违反了可拔插的原则,如果需要替换一种实现,就需要修改代码。为了实现在模块装配的时候能不在程序里动态指明,这就需要一种服务发现机制。 Java SPI就是提供这样的一个机制:为某个接口寻找服务实现的机制。有点类似IOC的思想,就是将装配的控制权移到程序之外,在模块化设计中这个机制尤其重要。所以SPI的核心思想就是 解耦 。 2 使用场景 概括地说,适用于: 调用者根据实际使用需要,启用、扩展、或者替换框架的实现策略 比较常见的例子: 数据库驱动加载接口实现类的加载 JDBC加载不同类型数据库的驱动 日志门面接口实现类加载 SLF4J加载不同提供商的日志实现类 Spring Spring中大量使用了SPI,比如:对servlet3

PMP基本概念

痴心易碎 提交于 2021-01-15 13:30:15
商业文件:商业论证和效益管理计划,可以找到关于项目目标以及项目对业务目标的贡献的相关信息 商业论证:经批准的商业论证或类似文件是最常用语指定项目章程的商业文件 效益成本分析:是项目启动时考虑项目是否值得做的分析方法 效益管理计划: 项目效益管理计划描述了项目实现效益的方式和时间,以及应制定的效益衡量机制。项目效益指为发起组织和项目预期受益方创造价值的行动、行为、产品、服务或成果的结果。项目生命周期早期应确定目标效益,并据此制定效益管理计划。它描述了效益的关键要素,可能包括(但不限于)记录以下内容: 目标效益(例如预计通过项目实施可以创造的有形价值和无形价值;财务价值体现为净现值); 战略一致性(例如项目效益与组织业务战略的一致程度); 实现效益的时限(例如阶段效益、短期效益、长期效益和持续效益); 效益责任人(例如在计划确定的整个时限内负责监督、记录和报告已实现效益的负责人); 测量指标(例如用于显示已实现效益的直接测量值和间接测量值); 假设(例如预计存在或显而易见的因素); 风险(例如实现效益的风险)。 制定效益管理计划需要使用商业论证和需求评估中的数据和信息,例如,成本效益分析数据。 在成本效益分析中已经把成本估算与项目拟实现的效益进行了比较。效益管理计划和项目管理计划描述了项目创造的商业价值如何能够成为组织持续运营的一部分,包括使用的测量指标

ESP8266_NONOS_SDK--UART实验

眉间皱痕 提交于 2021-01-13 13:18:33
图文手把手教程--ESP8266 SDK开发环境搭建及HelloWorld显示(使用安信可AiThinkerIDE_V1.5.2编程) https://blog.csdn.net/felix_tao/article/details/106364860 1.复份一份0_SDK_Template,并重命名为1_UART。 2.导入工程: 1)打开软件->File->Import->C/C++->Existing Code as MakeFile Project。 2)选择工程所在路径,例如:D:\ESP8266_NONOS_SDK\1_UART,去掉C++打勾,编译工具选择Cross GCC。 3.修改属性: 1)选中工程->Project->Properties->C/C++ Build->Build command中输入命令: make COMPILE=gcc BOOT=none APP=0 SPI_SPEED=40 SPI_MODE=DIO SPI_SIZE_MAP=6 2)Build directory:${workspace_loc:/1_UART}/,工程所在路径是对的,不用修改。 4.编译工程:程序如果有修改先按保存->清除项目->编译项目。 5.编译成功标志:eagle.flash.bin--->0x00000,eagle.irom0text.bin---

Dubbo 版 Swagger 来啦!Dubbo-Api-Docs 发布

余生颓废 提交于 2021-01-12 23:02:12
作者 | 柯然(邪影) 背景 Swagger 是一个规范和完整的前端框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。Swagger 规范也逐渐发展成为了 OpenAPI 规范。 Springfox 是一个集成了 Swagger,基于 Sring MVC/Spring Webflux 实现的一个 Swagger 描述文件生成框架,通过使用它定义的一些描述接口的注解自动生成 Swagger 的描述文件,使 Swagger 能够展示并调用接口。 相信很多人都听说和使用过 Swagger 和 Springfox,这里就不再赘述了。 Dubbo-Admin 中有接口测试功能,但是缺少接口描述的文档,所以该测试功能比较适合接口开发人员用于测试接口。而其他人想要使用该功能就必须先通过接口开发者编写的文档或者其他方式,了解清楚接口信息才能使用该功能测试接口。 Dubbo 这边有没有集合文档展示和测试功能,可以不用写文档就能把接口直接给调用方,类似 Swagger/Springfox 的工具呢? 之前做过一些调研,找到一些类似的工具: 有些是基于 Springfox 做的,直接一个文本域放 JSON,与目前 Admin 中的测试功能大同小异。 有些是直接基于 Swagger 的 Java 版 OpenApI 规范生成工具做的,能把一些基础数据类型的简单参数作为表单项展示。

Dubbo 版 Swagger 来啦!Dubbo-Api-Docs 发布

被刻印的时光 ゝ 提交于 2021-01-12 19:56:13
作者 | 柯然(邪影) Dubbo-Api-Docs 背景 Swagger 是一个规范和完整的前端框架,用于生成,描述,调用和可视化 RESTful 风格的 Web 服务. Swagger 规范也逐渐发展成为了 OpenAPI 规范. Springfox 是一个集成了Swagger,基于 Sring MVC/Spring Webflux 实现的一个 Swagger 描述文件生成框架,通过使用它定义的 一些描述接口的注解自动生成Swagger的描述文件, 使 Swagger 能够展示并调用接口. 相信很多人都听说和使用过Swagger和Springfox, 这里就不再赘述了. Dubbo-Admin中有接口测试功能,但是缺少接口描述的文档,所以该测试功能比较适合接口开发人员用于测试接口.而其他人想要使用该功能就必须 先通过接口开发者编写的文档或者其他方式了解清楚接口信息才能使用该功能测试接口. Dubbo这边有没有集合文档展示和测试功能,能不用写文档就能把接口直接给调用方,类似Swagger/Springfox的工具呢? 之前做过一些调研,找到一些类似的工具: 有些是基于Springfox做的,直接一个文本域放JSON, 与目前Admin中的测试功能大同小异 有些是直接基于Swagger的Java版OpenApi规范生成工具做的,能把一些基础数据类型的简单参数作为表单项展示

wireshark抓包工具的使用及分析

扶醉桌前 提交于 2021-01-12 08:05:06
前段时间看到群里在讨论Wireshark抓包工具,想写一篇使用笔记但一直没来得及写,本篇就通过实例来分享wireshark抓包工具的使用。 Wireshark简介 Wireshark 是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。 Wireshark下载、安装 下载链接: https://www.wireshark.org/#download 官网下载速度较慢,在本公众号聊天界面回复关键字: Wireshark ,获取网盘链接,若链接失效可联系我获取。 安装与一般的PC机软件安装方式一样,按默认方式安装即可。 Wireshark的使用 我们就借助往期文章: C语言、嵌入式应用:TCP通信实例分析 的TCP通信的demo来做演示。 实验框图如: 在本公众号聊天界面回复关键字: Wireshark ,获取本次试验代码及工具: 其中tcp_client为RT-Thread Studio工程,使用RT-Thread Studio工具导入之后,修改WiFi信息与你电脑连接的WiFi一致: 编译下载到小熊派开发板即可。 启动Wireshark抓包工具,选择无线网卡: 输入过滤信息 ip.src == xxx.xxx.xxx.xxx or ip.dst == xxx.xxx.xxx.xxx ,比如我这边是 ip.src == 192.168

基于STM32实现TMC5160步进电机简单转动

时光总嘲笑我的痴心妄想 提交于 2021-01-11 15:02:26
TMC5160三种模式 TMC5160有三种模式 模式一:SD_MODE=0,SPI_MODE=1。在该模式下,用户通过SPI接口来设置TMC5160的寄存器配置参数。再设置工作模式:速度模式和位置模式 模式二:SD_MODE=1,SPI_MODE=1。在该模式下,用户通过SPI接口来设TMC5160的寄存器。TMC5160的功能和DRV8825类似,外界通过脉冲和方向引脚来控制步进电机运动 模式三:SD_MODE=1,SPI_MODE=0。在该模式下,SPI接口失能,TMC5160的工作状态由CFG引脚配置。TMC5160可以完全独立工作,不需要接CPU。 为实现电机的简单转动,下面将一下如何实现模式三 程序设计 该模式下不需要通过SPI通讯,配置相关GPIO引脚和发送频率一定的正弦波即可。TMC5160的GPIO和STM32的引脚对应如下表: ①最重要的一点是一定要将SD_MODE接地,SPI_MODE拉高(PB1=1,PB=0),否则无法进入模式三,上述的引脚也无法实现相应功能。其它引脚的参数可以参考TMC5160数据手册根据自己的需求进行设置。初始化程序如下: void TMC5160_Init3 ( void ) //模式三独立模式 { GPIO_InitTypeDef GPIO_Initure ; __HAL_RCC_GPIOB_CLK_ENABLE ( ) ; /

SpringBoot启动流程分析(四):IoC容器的初始化过程

允我心安 提交于 2021-01-10 14:53:16
SpringBoot系列文章简介 SpringBoot源码阅读辅助篇:    Spring IoC容器与应用上下文的设计与实现 SpringBoot启动流程源码分析: SpringBoot启动流程分析(一):SpringApplication类初始化过程 SpringBoot启动流程分析(二):SpringApplication的run方法 SpringBoot启动流程分析(三):SpringApplication的run方法之prepareContext()方法 SpringBoot启动流程分析(四):IoC容器的初始化过程 SpringBoot启动流程分析(五):SpringBoot自动装配原理实现 SpringBoot启动流程分析(六):IoC容器依赖注入 笔者注释版Spring Framework与SpringBoot源码git传送门:请不要吝啬小星星 spring-framework-5.0.8.RELEASE SpringBoot-2.0.4.RELEASE 第五步:刷新应用上下文 一、前言   在前面的博客中谈到IoC容器的初始化过程,主要分下面三步: 1 BeanDefinition的Resource定位 2 BeanDefinition的载入 3 向IoC容器注册BeanDefinition   在上一篇文章介绍了prepareContext()方法

龙讯LONTIUM LT8711EH-C. DP1.2转HDMI2.04K60HZ带HDCP 国产芯片

柔情痞子 提交于 2021-01-10 10:53:01
1.描述 该LT8711EH-C是一个高性能的类型-C/DP1.2HDMI2.0转换器,旨在连接一个USB类型C源或DP1.2源到一个HDMI-2.0水槽。 该LT8711EH - C集成了一个符合DP1.2接收机,和一个HDMI2.0兼容发射机。此外,CC通信包括两个CC控制器,以实现DPAlt模式和电源交付功能,一个为上游的C型端口和下游端口。 该设备是能够自动操作,这是由一个集成的微处理器,使用嵌入式SPI闪存固件存储启用。系统控制也可以通过使用一个专用的配置I2C从接口。 2.特点 USB类型-C ·DP1.2接收器 HDMI2.0发射机 杂项 3.应用 停靠站 加密狗 来源: oschina 链接: https://my.oschina.net/u/4404311/blog/4888737

龙讯LONTIUM LT8712EXC Type-C/DP2.0转HDMI2.0&VGA+Audio+pd2.0国产

风流意气都作罢 提交于 2021-01-10 10:45:53
1.描述 该LT8712EXC是一个高性能的类型-C/DP1.2HDMI2.0/VGA转换器,旨在连接一个USB类型C源或DP1.2源到一个VGA水槽和一个HDMI2.0水槽同时。 该LT8712EXC集成了一个DP1.2兼容接收器(MST能力),一个高速三通道视频DAC和HDMI2.0兼容发射器。此外,CC通信包括两个CC控制器,以实现DPAlt模式和电源交付功能,一个为上游的C型端口和下游端口。片上USB3.0开关是一种高速双向无源开关,提供灵活的开关适应连接器翻转。这个开关还处理2-ch数据/2-CH视频和所有4-ch视频之间的muxing。 两个数字音频输出接口是可用的,I2S和SPDIF。都支持8-chLPCM或压缩音频在最大192kHz采样率。 该设备是能够自动操作,这是由一个集成的微处理器,使用嵌入式SPI闪存固件存储启用。系统控制也可以通过使用一个专用的配置I2C从接口。 2.特点 USB类型-C ·DP1.2接收器 HDMI2.0发射机 三通道视频DAC 数字音频输出 杂项 3.应用程序 停靠站 ·视频枢纽 加密狗 来源: oschina 链接: https://my.oschina.net/u/4290163/blog/4888720