基础篇009.1 STM32驱动RC522 RFID模块之一:基础知识

news2024/11/19 0:25:08

目录

1. RFID概述

1.1 RFID工作原理

1.2 RFID分类

1.3 RFID模块

1.4 RFID卡片

1.5 IC卡和ID卡介绍

1.6 IC卡和ID的区分

2. Mifare卡结构原理

2.1 Mifare卡概述

2.2 Mifare非接触式 IC 卡性能简介(M1)

2.2.1 Mifare S50与Mifare S70

2.2.2 S50存储结构

2.2.3 M1射频卡工作原理

2.2.4 M1射频卡与读写器的通讯

2.3 MRF522简介

2.4 NFC读写辅助APP介绍—NFC Writer


1. RFID概述

射频识别「Radio Frequency IDentification,简称RFID」技术,又称为无线射频识别,是一种通信技术,可通过无线电讯号识别特定目标并读写相关数据,而无需识别系统与特定目标之间建立机械或光学接触。目前,RFID已经广泛的应用于交通、零售、服装、食品、物流、智能制造、保全、医疗、娱乐、个人资讯等多个领域。

1.1 RFID工作原理

RFID技术的基本工作原理并不复杂:标签进入阅读器后,接收阅读器发出的射频信号,凭借感应电流所获得的能量发送出存储在芯片中的产品信息(Passive Tag,无源标签或被动标签),或者由标签主动发送某一频率的信号(Active Tag,有源标签或主动标签),阅读器读取信息并解码后,送至中央信息系统进行有关数据处理。

一套完整的RFID系统, 是由阅读器与电子标签也就是所谓的应答器及应用软件系统三个部分所组成,其工作原理是阅读器(Reader)发射一特定频率的无线电波能量,用以驱动电路将内部的数据送出,此时Reader便依序接收解读数据, 送给应用程序做相应的处理。

以RFID 卡片阅读器及电子标签之间的通讯及能量感应方式来看大致上可以分成:感应耦合及后向散射耦合两种。一般低频的RFID大都采用第一种方式,而较高频大多采用第二种方式.

1.2 RFID分类

射频识别技术依据其标签的供电方式可分为三类,即无源RFID,有源RFID,与半有源RFID。

(1)、无源RFID

在三类RFID产品中,无源RFID出现时间最早,最成熟,其应用也最为广泛。在无源RFID中,电子标签通过接受射频识别阅读器传输来的微波信号,以及通过电磁感应线圈获取能量来对自身短暂供电,从而完成此次信息交换。因为省去了供电系统,所以无源RFID产品的体积可以达到厘米量级甚至更小,而且自身结构简单,成本低,故障率低,使用寿命较长。但作为代价,无源RFID的有效识别距离通常较短,一般用于近距离的接触式识别。无源RFID主要工作在较低频段125KHz、13.56MKHz等,其典型应用包括:公交卡、二代身份证、食堂餐卡等。

(2)、有源RFID

有源RFID兴起的时间不长,但已在各个领域,尤其是在高速公路电子不停车收费系统中发挥着不可或缺的作用。有源RFID通过外接电源供电,主动向射频识别阅读器发送信号。其体积相对较大。但也因此拥有了较长的传输距离与较高的传输速度。一个典型的有源RFID标签能在百米之外与射频识别阅读器建立联系,读取率可达1,700read/sec。有源RFID主要工作在900MHz、2.45GHz、5.8GHz等较高频段,且具有可以同时识别多个标签的功能。有源RFID的远距性、高效性,使得它在一些需要高性能、大范围的射频识别应用场合里必不可少。

(3)、半有源RFID

无源RFID自身不供电,但有效识别距离太短。有源RFID识别距离足够长,但需外接电源,体积较大。而半有源RFID就是为这一矛盾而妥协的产物。半有源RFID又叫做低频激活触发技术。在通常情况下,半有源RFID产品处于休眠状态,仅对标签中保持数据的部分进行供电,因此耗电量较小,可维持较长时间。当标签进入射频识别阅读器识别范围后,阅读器先现以125KHz低频信号在小范围内精确激活标签使之进入工作状态,再通过2.4GHz微波与其进行信息传递。也即是说,先利用低频信号精确定位,再利用高频信号快速传输数据。其通常应用场景为:在一个高频信号所能所覆盖的大范围中,在不同位置安置多个低频阅读器用于激活半有源RFID产品。这样既完成了定位,又实现了信息的采集与传递。

不同频率的标签有不同的特点,例如,低频标签比超高频标签便宜,节省能量,穿透废金属物体力强,工作频率不受无线电频率管制约束,最适合用于含水成分较高的物体,例如水果等;超高频作用范围广,传送数据速度快,但是比较耗能,穿透力较弱,作业区域不能有太多干扰,适用于监测港口、仓储等物流领域的物品;而高频标签属中短距识别,读写速度也居中,产品价格也相对便宜,比如应用在电子票证一卡通上。

1.3 RFID模块

RFID 技术利用无线射频方式在阅读器和射频卡之间进行非接触双向数据传输,以达到目标识别和数据交换的目的。

标签(Tag,即射频卡),耦合元件及芯片组成,标签含有内置天线,用于和射频天线间进行通信。

阅读器:读取(在读写卡中还可以写入)标签信息的设备。

天线:在标签和读取器间传递射频信号。

1.4 RFID卡片

不同的国家对于相同波段,使用的频率也不尽相同。欧洲使用的超高频是868MHz,美国则是915MHz。日本目前不允许将超高频用到射频技术中。

目前在实际应用中,比较常用的是13.56MHz、860MHz~960MHz、2.45GHz等频段。近距离RFID系统主要使用125KHz、13.56MHz等LF和HF频段,技术最为成熟;远距离RFID系统主要使用433MHz、860MHz~960MHz等UHF频段,以及2.45GHz、5.8GHz等微波频段,目前还多在测试当中,没有大规模应用。

我国在LF和HF频段RFID标签芯片设计方面的技术比较成熟,HF频段方面的设计技术接近国际先进水平,已经自主开发出符合ISO14443Type A、TypeB和ISO15693标准的RFID芯片,并成功地应用于交通一卡通和第二代身份证等项目中。

1.5 IC卡和ID卡介绍

IC卡全称集成电路卡(Integrated Circuit Card),又称智能卡(Smart Card)。可读写,容量大,有加密功能,数据记录可靠,使用更方便,如一卡通系统,消费系统等,目前主要有PHILIPS的Mifare系列卡。

ID卡全称身份识别卡(Identification Card),是一种不可写入的感应卡,含固定的编号,主要有台湾SYRIS的EM格式,美国HID,TI,MOTOROLA等各类ID卡。

简言之,IC卡是可加密的存储卡、ID卡是只读的低频卡。

1.6 IC卡和ID的区分

(1)本质区别:id卡是只读的,ic卡是可读可写的;

(2)外观区别:两种卡在外观上没有靠谱的区分方法;下面给出一种不太准确的方法:

从外观上来进行区分ID卡和IC卡:

  

对于白卡在较暗的环境中,用电筒照射卡片背面,可以看到:一般圆圈线圈的为ID卡,矩形线圈的为IC卡。

对于钥匙扣卡,一般ID钥匙扣卡表面会刻10位内码号,而IC钥匙扣一般表面是空白的。

  

(3)用途区别:id卡用来标明身份,里面的信息不能改变;ic卡用作动态记录信息,是需要根据需要来修改卡内的信息的。

2. Mifare卡结构原理

2.1 Mifare卡概述

NXP 半导体(由PHILIPS创建)是世界上最早研制非接触式IC卡芯片的公司之一,曾拥有国际市场上同类产品的六成以上的份额,对非接触式IC卡在全世界的推广使用起着不可替代的引导和推动作用。其代表性产品有:内含1K/4K字节EEPROM的逻辑加密卡芯片Mifare Standard、384位/64字节EEPROM 的缩减型逻辑加密卡芯片Mifare Light和MifareUltraLight、4K字节EEPROM的CPU 卡Mifare DESFire,以及双界面卡芯片Mifare PLUS、Mifare PRO系列、Mifare Prox系列和Smart MX系列。

以下主要介绍在全球影响最大、应用最广泛的Mifare Standard中的Mifare 1 S50卡芯片。为了便于描述,以下称为Mfiare 1卡。

Mifare 1 卡主要特性:

符号国际标准ISO/IEC14443 Type A;

工作频率13.56MHz;

数据传输率106kbps;

高度安全性:数据流加密传输,3次相互认证的双向验证机制;

世界唯一的32位(4字节)卡号;

一次典型完整处理时间 < 0.1S;

卡内1K字节EEPROM划分为16 个扇区,每区4块,每块16字节,各个扇区可以独立采取多种形式的密钥保护,实现一卡多用和一卡通。

2.2 Mifare非接触式 IC 卡性能简介(M1)

2.2.1 Mifare S50与Mifare S70

Mifare S50和Mifare S70又常被称为Mifare Standard、Mifare Classic、MF1,是遵守ISO14443A标准的卡片中应用最为广泛、影响力最大的的一员。而Mifare S70的容量是S50的4倍,S50的容量是1K字节,S70的容量为4K字节。读写器对卡片的操作时序和操作命令,二者完全一致。

Mifare S50和Mifare S70的每张卡片都有一个4字节的全球唯一序列号,卡上数据保存期为10年,可改写10万次,读无限次。一般的应用中,不用考虑卡片是否会被读坏写坏的问题,当然暴力硬损坏除外。

Mifare S50和Mifare S70的区别主要有两个方面。一是读写器对卡片发出请求命令,二者应答返回的卡类型(ATQA)字节不同。Mifare S50的卡类型(ATQA)是0004H,Mifare S70的卡类型(ATQA)是0002H。另一个区别就是二者的容量和内存结构不同。

Mifare S50把1K字节的容量分为16个扇区(Sector0-Sector15),每个扇区包括4个数据块(Block0-Block3,我们也将16个扇区的64个块按绝对地址编号为0~63),每个数据块包含16个字节(Byte0-Byte15),64*16=1024。

2.2.2 S50存储结构

上图是某S50卡的读卡数据中的部分扇区,下面对各扇区数据进行分析:

(1)、 M1 卡分为 16 个扇区,包括1个公共区和15个数据区。每个扇区由 4 块(块 0、块 1、块 2、块 3)组成,将 16 个扇区的 64 个块按绝对地址编号为 0~63,存贮结构如下图所示:

(2)、 第 0 扇区的块 0(即绝对地址 0 块),它用于存放厂商代码,已经固化,不可更改。

(3)、 每个扇区的块 0、块 1、块 2 为数据块,可用于存贮数据。

数据块可作两种应用:

★ 用作一般的数据保存,可以进行读、 写操作。

★ 用作数据值,可以进行初始化值、加值、减值、读值操作。

(4)、 每个扇区的块 3 为控制块,包括了密码 A、存取控制、密码 B。具体结构如下:

(5)、 每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取

控制。存取控制为 4 个字节,共 32 位,扇区中的每个块(包括数据块和控制块)的存取条件是由密码和存取控制共同决定的,在存取控制中每个块都有相应的三个控制位,定义如下:

三个控制位以正和反两种形式存在于存取控制字节中,决定了该块的访问权限(如进行减值操作必须验证 KEY A,进行加值操作必须验证 KEY B,等等)。三个控制位在存取控制字节中的位置,以块 0 为例:

存取控制(4 字节,其中字节 9 为备用字节)结构如下所示:

(6)、 数据块(块 0、块 1、块 2)的存取控制如下:

控制位(X=0..2

访 问 条 件 (对数据块 012

C1X

C2X

C3X

Read

Write

Increment

Decrement, transfer, Restore

0

0

0

KeyA|B

KeyA|B

KeyA|B

KeyA|B

0

1

0

KeyA|B

Never

Never

Never

1

0

0

KeyA|B

KeyB

Never

Never

1

1

0

KeyA|B

KeyB

KeyB

KeyA|B

0

0

1

KeyA|B

Never

Never

KeyA|B

0

1

1

KeyB

KeyB

Never

Never

1

0

1

KeyB

Never

Never

Never

1

1

1

Never

Never

Never

Never

(KeyA|B 表示密码 A 或密码 B, Never 表示任何条件下不能实现)

例如:当块 0 的存取控制位 C10 C20 C30=1 0 0 时,验证密码 A 或密码 B 正确后可读;验证密码 B 正确后可写;不能进行加值、减值操作。

(7)、 控制块块 3 的存取控制与数据块(块 0、 1、 2)不同,它的存取控制如下:

密码 A

存取控制

密码 B

C13

C23

C33

Read

Write

Read

Write

Read

Write

0

0

0

Never

KeyA|B

KeyA|B

Never

KeyA|B

KeyA|B

0

1

0

Never

Never

KeyA|B

Never

KeyA|B

Never

1

0

0

Never

KeyB

KeyA|B

Never

Never

KeyB

1

1

0

Never

Never

KeyA|B

Never

Never

Never

0

0

1

Never

KeyA|B

KeyA|B

KeyA|B

KeyA|B

KeyA|B

0

1

1

Never

KeyB

KeyA|B

KeyB

Never

KeyB

1

0

1

Never

Never

KeyA|B

KeyB

Never

Never

1

1

1

Never

Never

KeyA|B

Never

Never

Never

例如:当块 3 的存取控制位 C13 C23 C33=1 0 0 时,表示:

密码 A:不可读,验证 KEYA 或 KEYB 正确后,可写(更改)。存取控制:验证 KEYA 或 KEYB 正确后,可读、可写。

密码 B:验证 KEYA 或 KEYB 正确后,可读、可写。

2.2.3 M1射频卡工作原理

卡片的电气部分只由一个天线和 ASIC 组成。

天线:卡片的天线是只有几组绕线的线圈,很适于封装到 IS0 卡片中。

ASIC:卡片的 ASIC 由一个高速(106KB 波特率)的 RF 接口,一个控制单元和一个8K 位 EEPROM 组成。

工作原理:读写器向 M1 卡发一组固定频率的电磁波,卡片内有一个 LC 串联谐振电路,其频率与读写器发射的频率相同,在电磁波的激励下, LC 谐振电路产生共振,从而使电容内有了电荷,在这个电容的另一端,接有一个单向导通的电子泵,将电容内的电荷送到另一个电容内储存,当所积累的电荷达到 2V 时,此电容可做为电源为其它电路提供工作电压,将卡内数据发射出去或接取读写器的数据。

2.2.4 M1射频卡与读写器的通讯

复位应答(Answer to request)

M1 射频卡的通讯协议和通讯波特率是定义好的,当有卡片进入读写器的操作范围时,读写器以特定的协议与它通讯,从而确定该卡是否为 M1 射频卡,即验证卡片的卡型。

防冲突机制 (Anticollision Loop)

当有多张卡进入读写器操作范围时,防冲突机制会从其中选择一张进行操作,未选中的则处于空闲模式等待下一次选卡,该过程会返回被选卡的序列号。

选择卡片(Select Tag)

选择被选中的卡的序列号,并同时返回卡的容量代码。

三次互相确认(3 Pass Authentication)

选定要处理的卡片之后,读写器就确定要访问的扇区号,并对该扇区密码进行密码校验,在三次相互认证之后就可以通过加密流进行通讯。(在选择另一扇区时,则必须进行另一扇区密码校验。)

对数据块的操作

读 (Read):读一个块;写 (Write):写一个块;

加(Increment):对数值块进行加值;减(Decrement):对数值块进行减值;

存储(Restore):将块中的内容存到数据寄存器中;

传输(Transfer):将数据寄存器中的内容写入块中;中止(Halt):将卡置于暂停工作状态;

2.3 MRF522简介

MFRC522 是高度集成的非接触式( 13.56MHz)读写卡芯片。此发送模块利用调制和解调的原理,并将它们完全集成到各种非接触式通信方法和协议中(13.56MHz)。

MFRC522 发送模块支持的工作模式:ISO 14443A / MIFARE®。

MFRC522 的内部发送器部分可驱动读写器天线与 ISO 14443A/MIFARE®卡和应答机的通信,无需其它的电路。接收器部分提供一个功能强大和高效的解调和译码电路,用来处理兼容 ISO 14443A/MIFARE®的卡和应答机的信号。数字电路部分处理完整的 ISO 14443A 帧和错误检测(奇偶&CRC)。 MFRC522 支持 MIFARE® Classic(如, MIFARE®标准)器件。 MFRC522 支持 MIFARE®更高速的非接触式通信,双向数据传输速率高达424kbit/s。

可实现各种不同主机接口的功能:SPI 接口; 串行 UART(类似 RS232,电压电平取决于提供的管脚电压);I2C 接口。

2.4 NFC读写辅助APP介绍—NFC Writer

在进行NFC开发或学习中,可以借助一款APP工具,可以在带有NFC功能的安卓手机上。

NFC Writer是一款实用NFC读、写卡工具,它支持读取、写入、格式化未加密和部分加密MIFARE Classic系列NFC标签或卡片,如一般的门禁卡,电梯卡、停车卡等等。

主要功能:                         

1. 读取NFC卡片信息

2. 复制已有NFC卡片信息

3. 格式化NFC卡片

4. 管理读入的NFC卡片

5. 加密卡片可以添加已知密钥破解

6. 自带字典可暴力破解部分加密NFC卡片

注意:没弄清原理前,只有类型为CUID类型的卡片才能写入,写入和格式化操作请严格按照帮助说明来,姿势不对有可能对卡片造成不可逆损伤。

拿一个IC卡,放置手机NFC读卡区域,在该APP中即可查看到卡片信息,如:

下图为某S50卡的扇区数据,改卡未加密:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/569422.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

蓝牙spp协议

一.定义 Serial Port Profile,串口通讯协议&#xff0c;是完成蓝牙设备之间创建串口进行数据传输的一种协议。 串口通讯协议(SPP)定义了使用蓝牙进行RS232&#xff08;或类似&#xff09;串行电缆仿真的设备应使用的协议和过程。 此协议涵盖的方案通过虚拟串行端口抽象&#…

自己编写小程序背日语50音图

自己编写小程序来背日语50音图 这是个啥直接上代码测试效果图 这是个啥 简而言之呢就是最近心血来潮打算自学日语&#xff0c;学日语自然就要先从50音图开始&#xff0c;就是下面这个&#xff1a; 可以看出来50音图横向是按照a i u e o这5个元音顺序&#xff0c;纵向按照a ka…

企业门户网站有用吗?如何解决搭建难题?

随着智能化时代的逐渐成熟&#xff0c;信息产业如火朝天&#xff0c;越来越多的人对门户网站开始感兴趣&#xff0c;不少企业家也开始对门户网站的开发与建设跃跃欲试。门户网站&#xff0c;也就是一个应用框架&#xff0c;把各类应用系统、互联网资源、数据资源集合到一个信息…

80.确定和规划项目(步骤1和2)

你的第一个现实世界的项目 ● 你的第一份“工作”&#xff01;、 ● 你受雇为一家名为Omnifood的虚构公司设计并建立一个网站。 ● Omnifood是一家使用人工智能来创建和提供定制健康膳食计划的初创公司。 ● 他们为我们提供了网站的所有内容&#xff08;content.md&#xff09…

Redis 的 Rdb 或 Aof 持久化详解

文章结构 Redis 的持久化方案Rdb&#xff08;Redis Database) 方式设置持久化快照的条件持久化文件的存储目录Rdb 的优点Rdb 的缺点 Aof&#xff08;Append Only File&#xff09; 方式aop 的优点aop 的缺点 Redis 的持久化方案 Rdb&#xff08;Redis Database) 方式 Redis 默…

循环队列(C++)

循环队列是一种特殊的队列实现&#xff0c;在顺序队列的基础上进行了优化。通常&#xff0c;循环队列使用固定长度的数组来表示队列元素&#xff0c;头和尾指针挂钩形成循环的维度感知队列长度&#xff0c;并提高队列操作效率&#xff0c;因为这种结构需要的内存量比链表数据结…

论文翻译:DeepFilterNet

目录 摘要1. 引言2. DeepfilterNet2.1. 信号模型2.2. Deep Filtering2.3. 框架概述2.4. DNN模型2.5. 数据处理2.6. 损失函数 3. 实验3.1. 训练步骤3.2. 结果 4. 结论5. 参考文献 论文题目&#xff1a;DeepFilterNet: A Low Complexity Speech Enhancement Framework for Full-B…

MQTT与传统的HTTP协议对比,优势在哪里呢?

HTTP是应用最为广泛和流行的协议。但是MQTT在过去的几年里迅速取得了进展。在讨论物联网开发的时候&#xff0c;开发者必须在这两者之间作出选择。 MQTT集中于数据&#xff0c;而HTTP集中于文档。HTTP是一个用于客户端-服务器计算的请求-响应协议&#xff0c;它并非总是为移动设…

位图和布隆过滤器

目录 位图 布隆过滤器 位图 假设有1000 万个范围在1~ 1亿的整数。如何快速查找某个整数是否出现在这1000万个整数中? 当然&#xff0c;这个问题仍然可以使用哈希表来解决。不过&#xff0c;针对这个“特殊”问题&#xff0c;我们可以使用一种比较“特殊”的哈希表&#xff…

阿里云手动创建Nginx-Ingress

阿里云相关文档 1、在ACK管理控制台点击如下 应用市场–>筛选(以ack-ingress-nginx-v1为例)–>点击安装–>一键部署–>自己定义集群、命名空间以及ingress名称 1.20以下集群选中ack-ingress-nginx。 1.20及以上集群选中ack-ingress-nginx-v1。 应用市场 筛选…

Linux学习笔记 --- Linux基础命令Part2

2.9 查找命令(which、find&#xff09; 目标&#xff1a;1. 掌握使用which命令查找命令的程序文件 2. 掌握使用find命令查找指定文件 which命令 我们在前面学习的Linux命令&#xff0c;其实它们的本体就是一个个的二进制可执行程序。 和Windows系统中的.exe文件&#x…

六级备考24天|CET-6|翻译技巧3|翻译2020年6月真题红楼梦|逻辑问题|理解背诵|20:50~22:30

目录 一、逻辑重建 例句1 例句2 例句3 二、定语和状语 定语的翻译原则 什么是状语&#xff1f; 状语位置 状语的基本形式 三、主动和被动 四、无主句 五、并列和连动 连动 六、作题步骤 七、红楼梦 PRACTICE ANSWER​ 时态问题 一、逻辑重建 试比较&#xff1a; 1. 下雨了…

c++中文路径中文文件读写

踩了坑&#xff0c;两个地方需要注意&#xff0c;否则就会乱码或无法找到文件 &#xff08;1&#xff09;采用utf-8格式&#xff0c;对cpp文件进行编码&#xff0c;用utf-8的方式对内容尽心高度写&#xff0c;方法是std::setlocale(LC_ALL, ".UTF-8"); &#xff08…

dvwa靶场通关(二)

第二关&#xff1a;Command Injection&#xff08;命令注入&#xff09; 什么是命令注入&#xff1a; 命令注入就是在需要输入数据的地方输入了恶意代码&#xff0c;而且系统并没有对其进行过滤或者其他处理导致恶意代码也被执行&#xff0c;最终导致数据泄露或者正常数据被破…

软件测试基础知识整理(八)- 软件缺陷

目录 一、软件缺陷 1.1 缺陷定义 1.2 缺陷判定标准 1.3 软件缺陷产生的原因 1.4 软件缺陷产生的根源 1.5 软件缺陷信息 1.5.1 缺陷状态 1.5.2 缺陷严重程度 1.5.3 缺陷优先级 1.6 缺陷报告模板 1.7 缺陷报告注意事项 1.8 缺陷跟踪流程 1.9 缺陷数据分析关注的问题 …

chatgpt赋能python:Pythonsearchsorted:用于搜索排序数组的快速工具

Python searchsorted&#xff1a;用于搜索排序数组的快速工具 在Python编程中&#xff0c;有时需要在有序数组中快速查找值的位置。Python searchsorted工具提供了一种快速而高效的方法&#xff0c;可用于在已排序的数组中搜索值的位置。在本文中&#xff0c;将深入探讨Python…

实验二:熟悉常用的HDFS操作

实验环境: (1)操作系统:Linux(建议 Ubuntu 16.04 或 Ubuntu 18.04)。 (2)Hadoop 版本:3.1.3。 (3)JDK 版本:1.8。 (4)Java IDE: Eclipse。 实验内容与完成情况: (1)编程实现以下功能,并利用Hadoop提供的Shell命令完成相同任务。 ①向HDFS中上传任意文本文件,如果指定的文…

简介KettlePack

目录 &#x1f3c6;1、本机环境&#xff1a; &#x1f3c6;2、虚拟机环境&#xff1a; &#x1f3c6;3、安装MySQL &#x1f3c6;4、安装kettlePack ⭐️4.1、Windows版安装 ⭐️4.2、Linux安装 ⭐️4.3、docker安装 简介&#xff1a; 今日工作中的ETL脚本使用了从晶的…

【通义千问】什么是通义千问,如何免费获得内测和使用方法。

什么是通义千问&#xff0c;如何免费获得内测和使用方法。 什么是通义千问怎么获得内测资格申请方法有两种第一种直接点击申请体验第二种直接点击使用邀请码 通义千问邀请码怎么获得参与社区活动邀请好友关注通义千问微信公众号参加通义千问线上课程向通义千问官方提问 通义千问…

【C++】4.jsoncpp库:jsoncpp库安装与使用入门

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍jsoncpp的使用。 学其所用&#xff0c;用其所学。——梁启超 欢迎来到我的博客&#xff0c;一起学习知识&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c;下次更新不迷路&am…