spi

人人都是 API 设计者:我对 RESTful API、GraphQL、RPC API 的思考

旧街凉风 提交于 2021-02-20 01:09:36
点击上方 IT牧场 ,选择 置顶或者星标 技术干货每日送达! >>>技术讨论群<<< 梁桂钊 | 作者 有一段时间没怎么写文章了,今天提笔写一篇自己对 API 设计的思考。首先,为什么写这个话题呢?其一,我阅读了《阿里研究员谷朴:API 设计最佳实践的思考》一文后受益良多,前两天并转载了这篇文章也引发了广大读者的兴趣,我觉得我应该把我自己的思考整理成文与大家一起分享与碰撞。其二,我觉得我针对这个话题,可以半个小时之内搞定,争取在 1 点前关灯睡觉,哈哈。 现在,我们来一起探讨 API 的设计之道。我会抛出几个观点,欢迎探讨。 一、定义好的规范,已经成功了一大半 通常情况下,规范就是大家约定俗成的标准,如果大家都遵守这套标准,那么自然沟通成本大大降低。例如,大家都希望从阿里的规范上面学习,在自己的业务中也定义几个领域模型:VO、BO、DO、DTO。其中,DO(Data Object)与数据库表结构一一对应,通过 DAO 层向上传输数据源对象。而 DTO(Data Transfer Object)是远程调用对象,它是 RPC 服务提供的领域模型。对于 BO(Business Object),它是业务逻辑层封装业务逻辑的对象,一般情况下,它是聚合了多个数据源的复合对象。那么,VO(View Object) 通常是请求处理层传输的对象,它通过 Spring 框架的转换后,往往是一个

人人都是 API 设计者:我对 RESTful API、GraphQL、RPC API 的思考

烂漫一生 提交于 2021-02-19 03:35:02
有一段时间没怎么写文章了,今天提笔写一篇自己对 API 设计的思考。首先,为什么写这个话题呢?其一,我阅读了《阿里研究员谷朴:API 设计最佳实践的思考》一文后受益良多,前两天并转载了这篇文章也引发了广大读者的兴趣,我觉得我应该把我自己的思考整理成文与大家一起分享与碰撞。其二,我觉得我针对这个话题,可以半个小时之内搞定,争取在 1 点前关灯睡觉,哈哈。 现在,我们来一起探讨 API 的设计之道。我会抛出几个观点,欢迎探讨。 一、定义好的规范,已经成功了一大半 通常情况下,规范就是大家约定俗成的标准,如果大家都遵守这套标准,那么自然沟通成本大大降低。例如,大家都希望从阿里的规范上面学习,在自己的业务中也定义几个领域模型:VO、BO、DO、DTO。其中,DO(Data Object)与数据库表结构一一对应,通过 DAO 层向上传输数据源对象。而 DTO(Data Transfer Object)是远程调用对象,它是 RPC 服务提供的领域模型。对于 BO(Business Object),它是业务逻辑层封装业务逻辑的对象,一般情况下,它是聚合了多个数据源的复合对象。那么,VO(View Object) 通常是请求处理层传输的对象,它通过 Spring 框架的转换后,往往是一个 JSON 对象。 事实上,阿里这种复杂的业务中如果不划分清楚 DO、BO、DTO、VO 的领域模型

Dubbo源码学习之-Adaptive自适应扩展

北城以北 提交于 2021-02-16 17:47:19
前言 最近三周基本处于9-10-6与9-10-7之间,忙碌的节奏机会丢失了自己。除了之前干施工的那段经历,只看参加软件开发以来,前段时间是最繁忙的了。忙的原因,不是要完成的工作量大,而是各种环境问题,各种沟通协调问题。从这个项目,我是体会到了人一多,花在沟通协调上的成本真的会不成比例的放大,制度好,再加上协调好,会极大的提高整体工作效率。怪不得当年华为跟IBM学完工作组织管理制度之后能爆发出如此强劲的战斗力。从另一个角度,也能发觉出为什么大公司招人都比较注重员工的个人实力与团队协作能力,因为如果是多人协作的工作,一旦有人跟不上会极大的拖延整体进度,而且相对而言技术能力强的人更容易沟通交流达成共识,工作协作成本会比能力弱的人低很多。大道千条,我选其一,多提升个人能力才是王道。 闲话少叙,下面继续Dubbo源码的学习。上一节说的是Dubbo用SPI机制来进行Bean的管理与引用,类似于Spring中BeanFactory对bean的管理。SPI实现了类似于 "在容器中管理Bean"的功能,那么问题来了,如果我想在程序运行时调用SPI中管理的类的方法,再通过运行时的参数来确定调用哪个实现类,这么矛盾的场景应该怎么实现?这时就要靠Dubbo的自适应扩展机制了。 正文 实现的思路其实不难,我们先一起来分析一下。首先程序运行时直接调用的SPI管理类中的方法不是通过SPI加载的类

超低功耗研发-STM32L151C8T6芯片(一)时钟系统概述

ぃ、小莉子 提交于 2021-02-15 12:17:57
前言: 由于之前对STM32Fxx系列相对熟悉,所以涉及到超低功耗设备时,自然就选用STM32家族的STM32Lxx系列产品。 STM32L151C8T6 功能特点: (1)Flash:64k (2)RAM:10k (3)EEPROM:4k (4)USART:3 (5)SPI:2。 了解一个CPU,时钟也是非常重要的,如下图所示: 从图中可知:共有5 种时钟源,分别为 HSE:外部8M晶振)、 HSI: 内部高速晶振16MHz LSI:内部低速晶振37khz LSE: 外部低速晶振 32.768khz MSI: 内部多速度段晶振,65.536khz、131.072khz、262.144khz、524.288khz、1.048MHz、2.097MHz、4.194MHz,默认 2.097MHz 一、MSI 介绍 MSI的使用机会比较多,分别为:reset后、stop模式下的wake-up、 待机模式。 MSI RC振荡器,具有超低功耗的优势(没有外部器件),用于低功耗模式时钟源,它被用于在超低功耗模式下的唤醒时钟。 如果HSE时钟源有故障,MSI也是作为备用时钟源。 二、HSE 介绍 HSE 就是外部时钟源,一般使用8M或12M,这个也是CPU在进入应用程序后,主要使用的时钟,CPU上电后,运行的第一个函数SystemInit就是针对HSE的配置,当然,如果HSE有故障

最让你印象深刻的模拟电路是什么电路?这个电路巧妙在哪儿?

元气小坏坏 提交于 2021-02-15 10:56:41
@匿名用户 对我而言,绝对是Paul R. Gray经典的bootstrap,没有之一,简直让人拍案叫绝。 电路用在各种ADC之前的Sample电路,可以让ADC实现rail to rail的input,sample电路的工作电压超过Vdd,极大的减少了了setting time,而且几乎没有reliability的问题。 电路里没有任何一个器件是可以被减少或者改变位置的。此电路直接使得ADC的发展往前跃进了一大步,现在已经几乎成为除ΔΣ之外各种ADC的标配,成为历史上最经典的模拟电路之一。当然,电路原理一眼看去也不是很好理解。 工作波形看着都让人舒服: @TANG XKEPHY 个人非常喜欢那些实现起来非常简单,性能却相当好的电路。 1.switch cap 的CMFB 仅仅4个电容加6个开关就实现了CMFB,非常简洁,且几乎不会影响OPAM本身像output swing,gain之类的spec,非常高效。 2. Data Weighted Averaging 基本思想是快速遍历DAC中的每一个电流元从而减少电流元mismatch对ADC信噪比的影响,仅仅通过几个简单的数电模块就实现对电流元mismatch的first order noise shaping,非常巧妙。 @原子弹lll 本科那会儿对我影响最深的就是万能的H桥电路,驱动电机正反转,妥妥的好用而且实惠

用CubeMX开发HAL学习记录(一)

痴心易碎 提交于 2021-02-14 15:31:43
用CubeMX开发HAL学习记录(一) 前言 一、CubeMX基本特点 1、集成MCU Finder功能,便于用户进行芯片选型 2、图形化方式配置时钟、片内外设,自动生成初始化代码 3、具有强大的适应性 4、提高开发效率 二、CubeMX下载 1.CubeMX软件下载 2.安装环境 3.注意事项 4.固件包导入 三、CubeMX生成文件介绍 1.MCU固件包 2.界面介绍 3.常规配置 总结 前言 笔者还是一名大二学生,目前正在学习CubeMX的开发,自己想通过写博客来加深自己的学习印象,如有不妥请指正。 一、CubeMX基本特点 1、集成MCU Finder功能,便于用户进行芯片选型 STM的芯片种类众多引脚封装也不尽相同,用户可以更具自己需要的内核,引脚封装类型和开发型号选择自己所需要的那一款MCU。 2、图形化方式配置时钟、片内外设,自动生成初始化代码 STM的时钟树都十分庞大且复杂,不同的外设对应着不同的时钟源,因此对照技术手册一面面的寻找总线,和时钟倍频设置是十分复杂的,而CubeMX可以直接越过这些基础操作,只对逻辑层进行编辑,极大的节省了时间成本。但不需要配置寄存器或库函数不代表你不需要去了解时钟树,学习STM的人必须先经过时钟树的洗礼(本文建议结合CubeMX的时钟树和B站正点原子的时钟树对比学习) B站原子哥时钟树:https://www.bilibili.com

FPGA上电后IO默认状态

旧时模样 提交于 2021-02-14 12:57:33
问题来源: fpga配置时的管脚状态 关于这个问题,好像网络上面有很多人问,但是eetop这个话题不多。大多数的回答是:配置的时候所有的管脚默认是Z态。这个说法到底对不对呢? 下面我谈谈自己使用的几款新品的情况。项目背景:开关信号发射机。初始状态要求IO信号都是低电平,来自控制DSP的发射控制信号触发IO开关信号的产生。上电的时候不能有高电平,否则引起发射机状态不稳,会产生问题。 (1)VirtexII1000 设作IO的信号在上电配置的过程中用示波器测量时高电平,大约在90ms左右,和配置时间基本一致。在管脚配置栏设置 pull-down后,这个现象消失。未使用管脚没有这个现象。未使用管脚的处理是float。 (2)virtex5-xc5vsx50t 设作IO的信号在上电配置的过程中发现有和配置时间基本一致的一段大约在0.2V左右的凸起。基本可以认为是没有信号。管脚配置没有做特殊设置。 (3)EP3C25的fpga,在配置的时候,能够发现编程应用的IO脚和未使用的管脚都有大约300ms左右的(EPCS16)高电平。和配置时间完全一致。使用外接的下拉电阻6k左右下拉到1V左右,使用1k下拉到0.2V左右。 谈谈我的理解:无论altera还是xilinx的fpga,IO脚的基本结构都差不多,输出都是推拉mos管,能够实现三态、可编程的上下拉电阻等等。在默认配置下

ignite入门

拈花ヽ惹草 提交于 2021-02-13 09:16:35
基本概念 1.1.Ignite是什么 Ignite是: 一个以内存为中心的分布式数据库、缓存和处理平台,可以在PB级数据中,以内存级的速度进行事务性、分析性以及流式负载的处理。 1.1.1.固化内存 可以按需将持久化打开或者关闭。如果持久化关闭,那么Ignite就可以作为一个分布式的内存数据库或者内存数据网格。 1.1.2.Ignite持久化 Ignite的原生持久化是一个分布式的、支持ACID以及兼容SQL的磁盘存储。 1.1.3.ACID兼容 存储在Ignite中的数据,在内存和磁盘上是同时支持ACID的,使Ignite成为一个强一致的系统,Ignite可以在整个网络的多台服务器上保持事务。 1.1.4.完整的SQL支持 Ignite提供了完整的SQL、DDL和DML的支持,可以使用纯SQL而不用写代码与Ignite进行交互,这意味着只使用SQL就可以创建表和索引,以及插入、更新和查询数据。有这个完整的SQL支持,Ignite就可以作为一种分布式SQL数据库。 1.2 特性 1.2.1 Advanced Clustering 通过心跳服务自动发现。从而: (1)加节点无需重启(支持CacheRebalanceMode); (2)获取度量指标(如CPU负载、使用内存等); (3)自修复(自动重连,慢客户端会被自动踢出); (4)容错性

关于SX1278、SX1276、SX1262的简单详解资料

末鹿安然 提交于 2021-02-13 07:57:32
通常的物联网解决方案和设备一直都非常昂贵,或在实施中不切合实际。理想的无线连接技术应该是低成本、高可靠性的,可进行长距离传输,且拥有超长的电池续航时间。像zigbee、Bluetooth和Wi-Fi这样的短距离技术不能满足这些要求,蜂窝移动网络虽然支持更长的距离,但电池续航时间太短。 为了克服这些挑战,LoRa器件和无线射频技术(LoRa技术)及LoRaWAN开放协议成为了智能供应链和物流行业的理想解决方案。LoRa技术具有远距离(在空旷的野外远达30英里)和低功耗(长达超过10年的电池续航时间)等特性,这些功能可实时跟踪、监控流动的资产。此外,LoRa技术和LoRaWAN开放协议拥有一个非常强大可靠的生态系统,包括支持LoRa的传感器、网关、网络服务器、网络及服务提供商。 sx1276和sx1278的区别: 2013年SEMTECH首次推出带扩频技术的Sub-GHz产品芯片,由于其相对传统FSK与GFSK在传输距离和抗干扰能力方面的优势而倍受市场关注,目前,SEMTECH的扩频芯片SX1276/7/8覆盖了几乎整个Sub-1GHz的4个频段:433/470/868/915M。 其中,SX1278与SX1276性能几乎没有差别,SX1278主要针对于433M与470M网段的地区,包括中国,东南亚,南美与东欧地区。SX1276则主要覆盖欧洲与北美等使用的868M和915M频段

Jlink使用技巧之烧写SPI Flash存储芯片

こ雲淡風輕ζ 提交于 2021-02-12 04:29:24
前言 大多数玩单片机的人都知道Jlink可以烧写Hex文件,作为ARM仿真调试器,但是知道能烧写SPI Flash的人应该不多,本篇文章将介绍如何使用JLink来烧写或者读取SPI Flash存储器,JLink软件包含的工具中,有一个是JFlashSPI工具,这就是一个烧写和读取SPI存储器的工具了。 准备 要烧写程序或读取程序的的Flash芯片:SPI协议的Flash都可以,如W25Q128。 JFlashSPI软件工具:在Jlink系列软件的安装目录下 JLink V9仿真器 要烧写的文件:如GBK字库文件,UNIGBK.BIN 硬件连接 Jlink内部集成了SPI协议,部分接口是作为SPI复用功能的,具体硬件连接,如下图所示: 对于20P的标准JTAG接口 |引脚编号|名称|输入输出|和SPI Flash的连接| |----|-----|-----| |5|DI |输入|连接SPI Flash的MOSI引脚| |7|nCS |输出|连接SPI Flash的CS引脚| |9|CLK |输出|连接SPI Flash的CLK引脚| |13|DO |输出|连接SPI Flash的MISO引脚| 对于10P的JTAG接口 |引脚编号|名称|输入输出|和SPI Flash的连接| |----|-----|-----| |2|nCS |输出|连接SPI Flash的CS引脚| |4|CLK