spi

Java SPI机制和使用示例

折月煮酒 提交于 2020-11-29 15:46:39
JAVA SPI 简介 SPI 是 Java 提供的一种服务加载方式,全名为 Service Provider Interface。根据 Java 的 SPI 规范,我们可以定义一个服务接口,具体的实现由对应的实现者去提供,即服务提供者。然后在使用的时候再根据 SPI 的规范去获取对应的服务提供者的服务实现。通过 SPI 服务加载机制进行服务的注册和发现,可以有效的避免在代码中将服务提供者写死。从而可以基于接口编程,实现模块间的解耦。 SPI 机制的约定 1 在 META-INF/services/ 目录中创建以接口全限定名命名的文件,该文件内容为API具体实现类的全限定名 2 使用 ServiceLoader 类动态加载 META-INF 中的实现类 3 如 SPI 的实现类为 Jar 则需要放在主程序 ClassPath 中 4 API 具体实现类必须有一个不带参数的构造方法 SPI 应用场景举例 JDBC jdbc4.0以前, 开发人员还需要基于Class.forName("xxx")的方式来装载驱动,jdbc4也基于spi的机制来发现驱动提供商了,可以通过METAINF/services/java.sql.Driver文件里指定实现类的方式来暴露驱动提供者. COMMON-LOGGING apache最早提供的日志的门面接口。只有接口,没有实现。具体方案由各提供商实现,

轻应用介绍

淺唱寂寞╮ 提交于 2020-11-28 13:53:00
简介 轻应用 :可运行在 轻量级 嵌入式设备上的 JavaScript应用 (左图) 轻应用框架 :封装了JavaScript引擎和API接口,用于支持轻应用开发的 软件框架 (右图) 特点 轻巧 :基于事件驱动的JavaScript轻应用短小精悍,免编译、免烧录 快速 :结合阿里云物联网平台,一键完成应用代码热更新 简单 :JavaScript API 简洁易懂,大幅降低IoT嵌入式设备应用开发门槛 兼容 :轻松移植JavaScript生态软件包,与各类云端业务浑然一体 运行原理 丰富的组件支持 基础组件 文件系统 FS 系统信息 SYS 键值对存储 KV 电源管理 LPM 硬件I/O UART/GPIO/I2C/SPI 模数/数模转换 ADC/DAC 脉宽调制 PWM 定时器 TIMER 实时时钟 RTC 看门狗 WDG 网络协议 UDP/TCP/HTTP/MQTT 高级组件 物联网平台 连接组件 支付组件 语音组件 传感器服务组件 定位服务组件 外设驱动库 编码电机/步进电机/伺服电机/继电器 麦克风/语音录放模块/扬声器 PS2摇杆/电容触摸/按键 TFT彩屏/数码管/三色灯 加速度计/陀螺仪/电子罗盘/气压计/磁力计 温湿度/颜色/光照强度 更多 文件结构 一个最精简的轻应用包由最少两个文件组成,必须放在项目文件夹的根目录 app/ ├── app.js # 业务逻辑入口

jvm(1)类的加载(三)(线程上下文加载器)

我怕爱的太早我们不能终老 提交于 2020-11-26 08:03:32
简介: 类加载器从 JDK 1.0 就出现了,最初是为了满足 Java Applet 的需要而开发出来的。 Java Applet 需要从远程下载 Java 类文件到浏览器中并执行。 现在类加载器在 Web 容器和 OSGi 中得到了广泛的使用。 1, java.lang.ClassLoader 类介绍 1 ,java.lang.ClassLoader类的基本职责就是根据一个指定的类的名称,找到或者生成其对应的字节代码,然后从这些字节代码中定义出一个 Java 类,即 java.lang.Class类的一个实例。 2,除此之外,ClassLoader 还负责加载 Java 应用所需的资源, 如图像文件和配置文件等。 主要方法: getParent() 返回该类加载器的父类加载器。 loadClass(String name) 加载名称为 name的类,返回的结果是 java.lang.Class类的实例。 findClass(String name) 查找名称为 name的类,返回的结果是 java.lang.Class类的实例。 findLoadedClass(String name) 查找名称为 name的已经被加载过的类,返回的结果是 java.lang.Class类的实例。 defineClass(String name, byte [] b, int off, int

初识小熊派——小熊派硬件分析

六月ゝ 毕业季﹏ 提交于 2020-11-24 14:26:40
在对开发板进行开发之前,首先需要对开发板的电路实现原理有个系统的了解,并掌握基础的硬件知识,以下将为大家分析小熊派IoT开发板的主要硬件实现原理。 首先,了解一下小熊派IoT开发板的系统框架。 小熊派IoT开发板电路连接关系如下:系统由USB 5V供电,经过DCDC降压至3.3V给系统大 部分器件供电,为系统主要电源;板载ST-Link与MCU采用SWD接口;8M Flash采用四线QSPI与MCU连接;SD卡采用三线SDMMC协议与MCU交互;E53扩展接口支持SPI、I2C、UART、ADC、DAC等协议;开发板自带1.44寸 LCD,属于 SPI 4-line 接口;通信模块扩展接口可接UART和SPI协议通信的通信模组;LED 灯、按键连接至 MCU 的 GPIO。 01 USB接口 开发板有一个USB接口,为USB ST-Link接口,作用为软件下载/调试/系统供电输入口, USB ST-Link 接口除了给系统提供电源之外,还是开发板的下载接口,与 STM32F103 的 USB 接口相连接,用 USB 数据线连接至 PC 之后会映射出一个 COM 口设备,用来进行开发板和 PC 端之间的交互,打印开发板的调试信息、下载 MCU 程序、调试通信模组。 STM32F103 与 MCU 之间是通过 SWD 接口相连接,其原理图如下 所示。 02 按键 开发板带有二个功能按键

微机原理实验——并行IO接口

坚强是说给别人听的谎言 提交于 2020-11-24 12:48:33
文章目录 前言 **实验任务** **实验目的** **实验环境** **设计方案** (1) **程序控制方式实现任务1:** (2) **并行IO接口中断控制方式实现任务2:** **实现过程** 1 **硬件平台搭建:** 2. **程序控制方式实现任务1:** 3. **并行IO接口中断控制方式实现任务2:** **实验结果** **程序控制方式实现任务1:** **并行IO接口中断控制方式实现任务2:** **方式比较** **实验总结** 前言 课程名称:模拟电路与数字系统(三)实验 实验项目名称:并行IO接口设计 实验任务 基于嵌入式MicroBlaze微处理器设计一个同时支持多种并行IO设备工作的嵌入式MIMO系统,采用FPGA开发板Nexys4。该系统的基本输入输出设备有:16个独立LED灯,16个独立开关、5个独立按键,8个七段数码管,外设接口电路如图1所示: · 要求所有外设都通过GPIO连接到MicroBlaze微处理器构成的计算机系统的同一总线上。分别通过程序控制方式和并行IO接口中断方式实现不同的功能: 程序控制方式实现: 嵌入式计算机系统将独立按键以及独立开关作为输入设备,LED 灯作为输出设备,实现以下功能: (1) 按下BTNC 按键时,计算机读入一组16 位独立开关状态作为第一个输入的二进制数据,并即时显示输入的二进制数到16 位LED 灯上。

【DIY数字仪表】STM32F429移植TouchGFX到RT-Thread系统(1)

自古美人都是妖i 提交于 2020-11-23 09:06:22
点击“蓝字”关注我们吧 实验平台: 硬件: 野火挑战者STM32F429 V1开发版,5寸屏 软件: 最新版本的STM32CubeF4固件库,TouchGFXDesigner v4.13和 STM32CubeMX v5.6.1,开发环境MDK v5.29 实验前准备工作: 1.准备一套STM32F429开发版,和下载工具 2.下载 TouchGFXDesigner v4.13 压缩包下载完后,解压如下: Projects目录下有STM32H7B3I-DK的工程,可以用来参考。touchGFX Designer的PC端安装包在Utilities目录下,找到后并安装。 3.下载 STM32CubeMX v5.6.1 安装完STM32CubeMX v5.6.1版本后,还需要安装X_CUBE_TOUCHGFX软件包,安装路径如下: 4.下载 MDK v5.27以上版本 效果演示: 代码下载: 代码持续更新中:github代码下载地址https://gitee.com/Aladdin-Wang/hellotouchGFX.git 觉得有用的话,欢迎给个小星星 移植RT-Thread的BSP模板: 1.学习RT-Thread系统(学过的可以跳过此步骤) 通读RT-Thread系统官方学习文档,https://www.rt-thread.org/document/site/ 快速了解RT

深入理解h2和r2dbc-h2

我是研究僧i 提交于 2020-11-22 09:49:33
文章目录 简介 H2数据库简介 r2dbc-h2 r2dbc-h2的Maven依赖 建立连接 参数绑定 批处理 事务和Savepoint 简介 本文将会介绍R2DBC的H2实现r2dbc-h2的使用方法和要注意的事项。一起来看看吧。 H2数据库简介 什么是H2数据库呢? H2是一个Java SQL database,它是一个开源的数据库,运行起来非常快。 H2流行的原因是它既可以当做一个独立的服务器,也可以以一个嵌套的服务运行,并且支持纯内存形式运行。 H2的jar包非常小,只有2M大小,所以非常适合做嵌套式数据库。 如果作为嵌入式数据库,则需要将h2*.jar添加到classpath中。 下面是一个简单的建立H2连接的代码: import java . sql . * ; public class Test { public static void main ( String [ ] a ) throws Exception { Connection conn = DriverManager . getConnection ( "jdbc:h2:~/test" , "sa" , "" ) ; // add application code here conn . close ( ) ; } } 如果给定地址的数据库并不存在, 同时H2还提供了一个简单的管理界面

低功耗板子测试功耗的方法

一世执手 提交于 2020-11-21 10:14:59
只测试了待机模式,待机模式实现系统的最低功耗。 原理图如下,一开始全部焊接了,其中S2用来进入待机,S1用来唤醒 测试程序为: #include "stm32f10x.h" #include "system_stm32f10x.h"v oid Sys_Standby( void) { RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); //使能PWR外设时钟 PWR_WakeUpPinCmd(ENABLE); //使能唤醒管脚功能 PWR_EnterSTANDBYMode(); //进入待机(standby)模式 } //系统进入待机模式 void Sys_Enter_Standby( void) { RCC_APB2PeriphResetCmd( 0X01FC,DISABLE); //复位所有IO口,屏蔽这条语句也没有看到什么影响 Sys_Standby(); } void IO_Init( void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; //PB6上拉输入,对应按键S2 GPIO

响应式关系数据库处理R2DBC

南楼画角 提交于 2020-11-21 02:27:40
简介 之前我们提到过,对于底层的数据源来说,MongoDB, Redis, 和 Cassandra 可以直接以reactive的方式支持Spring Data。而其他很多关系型数据库比如Postgres, Microsoft SQL Server, MySQL, H2 和 Google Spanner 则可以通过使用R2DBC 来实现对reactive的支持。 今天我们就来具体讲解一下R2DBC的使用。 R2DBC介绍 之前我们介绍了Reactor还有基于其之上的Spring WebFlux框架。包括vert.x,rxjava等等reactive技术。我们实际上在应用层已经有很多优秀的响应式处理框架。 但是有一个问题就是所有的框架都需要获取底层的数据,而基本上关系型数据库的底层读写都还是同步的。 为了解决这个问题,出现了两个标准,一个是oracle提出的 ADBC (Asynchronous Database Access API),另一个就是Pivotal提出的R2DBC (Reactive Relational Database Connectivity)。 R2DBC是基于Reactive Streams标准来设计的。通过使用R2DBC,你可以使用reactive API来操作数据。 同时R2DBC只是一个开放的标准,而各个具体的数据库连接实现,需要实现这个标准。

响应式关系数据库处理R2DBC

泄露秘密 提交于 2020-11-20 12:26:35
文章目录 简介 R2DBC介绍 项目依赖 创建ConnectionFactory 创建Entity Bean 初始化数据库 获取所有的用户 Prepare Statement 事务处理 WebFlux使用 执行效果 简介 之前我们提到过,对于底层的数据源来说,MongoDB, Redis, 和 Cassandra 可以直接以reactive的方式支持Spring Data。而其他很多关系型数据库比如Postgres, Microsoft SQL Server, MySQL, H2 和 Google Spanner 则可以通过使用R2DBC 来实现对reactive的支持。 今天我们就来具体讲解一下R2DBC的使用。 R2DBC介绍 之前我们介绍了Reactor还有基于其之上的Spring WebFlux框架。包括vert.x,rxjava等等reactive技术。我们实际上在应用层已经有很多优秀的响应式处理框架。 但是有一个问题就是所有的框架都需要获取底层的数据,而基本上关系型数据库的底层读写都还是同步的。 为了解决这个问题,出现了两个标准,一个是oracle提出的 ADBC (Asynchronous Database Access API),另一个就是Pivotal提出的R2DBC (Reactive Relational Database Connectivity)。