CTC 技术介绍概述——啃论文系列

news2025/7/20 13:17:04

CTC 技术介绍概述——啃论文系列

文章目录

  • CTC 技术介绍概述——啃论文系列
    • 自我介绍
    • 摘要
    • 前言
      • 知识导图
    • 1. 定义
    • 2. 诞生背景
      • 2.1 频谱紧张
        • 例子,wifi的5GHz
      • 2.2 通信干扰——CTI
      • 2.3 管理困难
      • 2.4 异构通信
        • 传统实现——网关桥接
      • 2.5 CTC——异构直接通信
    • 3. 包级CTC
      • 3.1 基于RSSI
      • 3.2 基于CSI
        • ZigFi
    • 4. 物理级CTC
      • 4.1 接收透明
        • WEBee
      • 4.2 发送透明
        • XBee
      • 4.3 不透明
        • TwinBee
    • 5. 各种类型的CTC比较
      • 5.1 性能比较
      • 5.2 复杂度比较
    • 6. 未来展望
      • 6.1 研究现状
      • 6.2 未来展望
    • 7. 参考文献

自我介绍

大家好,我是物联黄同学,来自深圳技术大学。

我在OpenHarmony成长计划啃论文俱乐部,通过啃论文收获技术成长!

在我们俱乐部中不止有来自全国各大高校的优秀大学生,还有来自国内外一线企业、一线研发技术专家进行指导。

之前还发布过一篇啃论文技术文章,是关于代码编程提示框架相关的综述文献学习笔记,详见:自动化编程提示框架——啃论文笔记

摘要

本文主要是对CTC跨技术通信技术进行一个概述。在阅读参考文献得到的相关知识点基础上,结合自己的理解,主要内容有CTC的定义、诞生背景、包级以及物理级CTC、各种CTC技术对比,还有关于CTC的一些现状陈述和对其未来前景的展望。

比较重点的内容是两大类CTC的实现机制

本文从参考文献中筛选出了许多具有代表性的例子,结合所属的CTC技术可以更好理解。

前言

本人之所以接触到CTC这项技术是因为之前因为通信课的课堂展示,在查阅ACM文献时,无意间发现,初看综述文献被其技术亮点所惊艳。

到现在为了去更好的了解CTC技术,自己也查阅了许多文献,不只是这篇文章的参考文献,还有很多综述和非综述的学术文献,比较可惜的是虽然有许多技术文献可以查阅,但是到具体的实习时,这一块的开源案例比较少,这也是本人觉得比较可惜的地方。即使在后来找到了一些开源案例,发现在具体复现时难度也是比较大。我本人相对学术的研究,更喜欢从事学术的实践。

下图是我本人关于CTC技术介绍,也就是本文梳理的知识导图。

知识导图

在这里插入图片描述

1. 定义

  1. 全称 Cross Technology Communication,直译过来就是 跨技术通信。
  2. 旨在建立在遵循不同通信技术(诸如蓝牙,ZigBee,WIFI,移动通信)的异构设备之间的直接通信。
  3. 本质上做的是“翻译器”的工作。

2. 诞生背景

在看了关于CTC的不少论文,大致可以总结出这些背景原因:频谱紧张,通信干扰,管理困难,异构通信。

2.1 频谱紧张

很好理解,就是随着设备数量的不断增加,很容易出现在某个区域的某个时间节点上,某个频段的有大量的设备,无论是异构还是同构,只要在无线信道上传输信息,那就会使用到频谱资源,而多种通信技术共同使用,其实会使得频谱变得不够用,资源紧张。

例子,wifi的5GHz

一个很好的例子就是,我们都知道现在WIFI 已经支持了两个频段,2.4GHz和5GHz,但是在之前的802.11.n及之前的版本其实是不支持5GHz频段,当然802.11.ac 以及 最新的 802.11.ax 都是支持同时覆盖两大频段的。

而之所以从只支持2.4G到支持5G,个人认为主要原因是在原有的2.4G频段中,除了WIFI,还有系那个蓝牙,ZigBee等其他通信技术使用,这带来的问题就是这个频段信道拥挤,给WiFi的信道受限,传输质量,速率受到影响。

2.2 通信干扰——CTI

这里的干扰主要是来自异构设备,当然同构设备其实也会产生干扰。CTI就是跨技术干扰(Crooss Technology Interfere)。

干扰的原因,其实就是传输信息产生碰撞。对于同构设备,我们知道,可以采用CSMA做防碰撞处理,但是像异构设备其实就很难用CSMA去做碰撞检测。

为什么?因为,CSMA的原理其实就是双方发一个信号然后根据信号的回应情况来确定是否发生了碰撞。但是异构设备,就比如我们最熟悉的蓝牙和WIFI设备,很明显WIFI设备的功率要更强,可以覆盖的范围相对更广,这种范围的不对等,就造成在发生碰撞时,蓝牙设备可以感知到WIFI设备的传输信息,而WIFI却不行,因为蓝牙设备发送的数据还没到wifi设备,可能就衰退到无法被检测到的情况。

2.3 管理困难

这个也是当下物联网场景会遇到的问题,就是在一个环境下有很多包括同构,异构的设备同时通信,那么显然需要一个好的方式去管理调度这些信道的使用。

如果是同构设备,还是比较好管理的。像我们熟知的移动通信中的FDMA、CDMA、OFDMA等宽带,信道资源分配调度方式,可以实现多设备的通信。

但是对于异构设备,显然要实现还是比较麻烦的。

2.4 异构通信

个人认为这是CTC提出的最直接,最针对性解决的背景原因。

传统实现——网关桥接

传统实现异构通信,其实就是使用网关,包括现在的很多智能家居系统不同的异构设备其实都是采用这种类似的实现方式。通过类似网关的设备,进行一个无线技术的转换,也可以理解为协议的转换。

网关传输的过程如图所示(画的有点丑)

在这里插入图片描述

从图片可以看出来其实就是做了两次同构通信了。这其实带来了很多问题:

  1. 使用了多的硬件,或者软件,需要至少多一次的解码和编码,以及信号调制,带来通信开销较大。
  2. 差错检验,网关不一定具备检验传输差错的能力,那么很有可能会造成传输差错而无法被有效检验到。
  3. 部署相对要更加复杂。

2.5 CTC——异构直接通信

CTC的提出其实就很好解决了上述的问题。

  1. 频谱资源以及管理上,如果CTC能够实现,其实就可以在信道内的传输数据进行统一化管理,管理成本降低的同时,频谱资源也就不会过于紧张。
  2. 克服CTI,通过CTC建立侧信道等方式可以有效解决CTI问题。
  3. 直接通信,降低异构通信的成本,有效优化设备部署。

CTC可以分为两类,包级CTC和物理级CTC,前者是通过建立侧信道作为信息传输载体,后者是通过相对来说更加复杂的加解码实现传输。

3. 包级CTC

其实就是利用包传输,在CTC早期,很多研究是是在发送端进行特殊的编码,将数据包的一些特征(能量、大小等)进行特别化,而接收方就是通过所接收到信号强度指示RSSI(received signal strength indication),RSSI采样其实在很多现有的无线通信协议(诸如蓝牙、WIFI等)物理层即MAC层中在接收端都采用这种信息采样方式。

除了基于RSSI,包级CTC还有另外一种主流的实现方式,基于信道状态特征CSI(channel state information)。这一类方法适合用于WIFI作为接收端的场景,WIFI通过分析相应子载波CSI值,从而感知到像蓝牙,ZigBee等异构设备的传输。这些异构设备通过影响频段信道中正在WIFI传输的CSI值,构建侧信道实现异构设备对WIFI传输信息。在近年中关于包级CTC各项研究中,这种方式随WIFI设备在广泛应用而发展。

3.1 基于RSSI

在基于RSSI的包级CTC中,发送方和接收方都通过在信道中产生和感知某种RSSI序列通信。如下图所示,作为接收方可以识别到有两个包,还能计算出包的大小和间隔,同时我们可以注意到从这张采样图可以看到数据包的RSSI值和环境噪声间有一个明显的能量差Energy Gap,这个能量差就可以作为一个建立CTC通信侧信道的基础。

在这里插入图片描述

基于RSSI的包级CTC在对数据包的编码调制上有多种实现,比较有代表性的有:能量、大小、时间以及数据包的内容。

  1. 能量:其实就是发送的数据包的能量级别来进行传输数据信息。当然这里有一个前提,WIFI设备和ZigBee设备的信道必须重叠

    1. 下图就是WIFi发送UDP包,ZigBee进行RSSI采样,发现一些单位区间的强度明显增大,这里根据能量明显强于某个级别就解码为1,否则就是0。在这里插入图片描述

    2. 只有0和1其实相当于二进制,但是我需要通信,WIFI就需要发送数据包,利用这种数据包发送来改变ZigBee采样到的RSSI能量只能单纯变为1或0,其实很浪费的,所以就提出了WiZig,这个好处就是把能量等级划分了多级,这样子就可以在一个分组数据包的采样RSSI中读取更多信息了。在这里插入图片描述

  2. 大小,接收端可以根据采样到的数据包和正常通信时的数据包比较大小,通过这样来解码为对应信息。

  3. 时间:(讲道理,我也没读懂)大致上就在正常通信时存在一定的时间区间,这个区间大小相对来说比较固定,可以在这个区间内进行通信,如果给传输数据附上时间戳之类的信息,其实接收端就可以识别出是否是CTC信号。

  4. 内容:注意这里的内容并不是数据包传输信息的内容,而是载荷的信息,这部分载荷在传输前会有一定的调制,接收端会检测RSSI信息特征和预先存储的特征集中的匹配后,对CTC信号解码得到通信信息。

3.2 基于CSI

CSI值包括了子载波级信道变化引起的相位变化和能量的衰减。通常被WIFI设备用来测量报文从发送端到接收端的过程中的信道变化。而异构设备在传输频段和传输时间上是可以重叠的,即信道重叠,这样子,异构设备就可以通过发送数据包等方式来影响同频率的WIFI子载波的CSI,实现和WIFI的通信。

这种方式的能够实现的核心之处在于——蓝牙,ZigBee的数据包足够长,WIFI子载波的带宽要比蓝牙,ZigBee的信道窄很多,这样子异构设备既可以连续命中多个WIFI数据包。对于WIFI接收端,可以连续接收多个数据包,如下图所示wifi接收端在一段时间内的CSI矩阵,其中蓝色的部分就是和明显的和其他相邻的子载波在CSI值有着明显的区别。在这里插入图片描述

ZigFi

这个是个人认为比较有意思的设计,前面提到的基于CSI的朴素方式,其实就是异构设备发送产生数据发送,从而影响wifi子载波的信道CSI值,利用这些CSI差异来进行和wifi的通信。但是这样的方式存在一定的问题——可能会影响到原来的wifi通信。显然,我们并不希望出现这个问题。而ZigFi就是避免出现这个问题的设计,其基本思想是将ZigBee数据包对接在WiFi数据包上,且不破坏正在进行的WiFi传输。需要满足以下几个条件:

  1. 选择的子信道需要使ZigBee和WiFi在频域重叠。
  2. ZigBee报文长度必须足够大,使报文在时域上和WiFi报文重叠。
  3. ZigBee的功率需要适当,这样可以使得CSI序列更加独特。

满足上诉条件时,WiFi接收端就可以在正常WiFi通信时检查CSI值,利用ZigBee报文的存在与否对CTC信号进行解码实现基于CSI构建侧信道达到CTC通信的目的。

4. 物理级CTC

前面提到的包级CTC,他们的工作原理基本上都对现有的信道发送一定的数据,对信道或者接收端接收信息产生一定的影响,但是接收端并非直接读取这些数据,本质上那些数据其实是无效的,包级CTC是利用这些数据产生的影响,接收端通过解读这些影响,比如RSSI的能量,数据包的大小,CSI值等通过这些数值的差异来解码出CTC的内容。

但是显然这些CTC工作的效率是非常有限的,因为本身这些通信的吞吐量就相当有限。

  1. 无线数据包本身的持续时间是很短的,基本上都在毫秒范围内,要在这么短的间隔使用CTC通信,嵌入影响符号,其实是很低效的。
  2. 不能够充分利用带宽。比如从WiFi到ZigBee的过程,ZigBee的带宽在2MHz,而WiFi的带宽则为20MHz,如果采用RSSI,那么对于WIFI而言,剩余带宽内的信号就被浪费。

正是基于上述问题,物理级的CTC由此出现了。

在此表达一下个人观点,并不是说这个CTC名字叫物理级CTC,就一定采用了物理硬件实现的方式,个人认为物理级CTC其实是用极少的硬件或者不用硬件实现的可以高效传输,充分利用带宽等资源的CTC。相比于包级CTC,个人认为物理级CTC更专注于传输数据本身。

物理级CTC根据在通信过程中对发送方、接收方是否透明划分为三类,即:接收方透明CTC、发送方透明CTC、不透明CTC。

这个透明与否,个人认为是对于机器是否需要进行额外的调制或者解调制步骤对数据信号进行操作。

4.1 接收透明

接收透明,其实就是对于接收方对于接收到的数据不用任何修改,就可以直接解调信号,解调的协议遵从接收机设备本身。

基本原理主要是通过对发送机的有效载荷操纵来模拟接收机的可接收信号。

而根据接收方的不同,这一类的CTC又可以分为基于时域波形和基于相移序列两类。前者的主要代表有WeBeePMC,后者的则有 WIDEBlueBee

以下只介绍WEBee,其他的如果感兴趣可以从=参考文献中了解。

WEBee

值得一提的是WEBee是最早出现在学术研究中的物理级CTC设计。

WEBee实现的是操控WiFi发射机模拟ZigBee的时域波形,从而达到从WiFi到ZigBee的高速率CTC。

下图就是WEBee的体系结构,WiFi设备选择WiFi帧来模拟ZigBee报文,对于ZigBee在接收到数据时,会将WiFi的头、尾两部分视为噪声忽略,有效部分即为ZigBee数据包,可以被ZigBee成功解码。

在这里插入图片描述

而整个仿真过程则如下图所示,主要包括三部分:

  1. 正交调幅仿真QAM,也就是我们常说的星座图仿真。
  2. 信道编码仿真。
  3. 后QAM仿真。

在这里插入图片描述

其中,QAM仿真是WEBee的核心。如下图所示,整个过程反向进行,将所需的ZigBee时域信号送入到FFT(快速傅里叶变换),选择QAM星座点。因为理想的ZigBee时域信号的频率分量可能与WiFi的QAM点不完全匹配,导致QAM量化误差。针对这些问题,WEBee采用了更加宽松地设置最大汉明距离来容忍QAM模拟错误。

在这里插入图片描述

4.2 发送透明

和接收透明CTC不同,发送透明CTC是利用充分利用接收机的能力,无序对发射机进行任何修改,即可实现从低端发射机到高端接收器的通信。

发送透明CTC这里提到了三种设计,分别为XBeeLEGO-FiXFi。前两种是接收机干茶发射机信号的模式,实现交叉解码,而第三种则是利用WiFi接收端强大的计算能力,对发射机信号重构。

这里主要介绍XBee和交叉解码。

XBee

XBee 是一个从ZigBee到BLE的物理级CTC,主要采用了交叉解码的方法,通过观察在蓝牙接收器的信号,位模式来解释ZigBee帧。

交叉解码有以下的两个点:

  1. ZigBee接收器和蓝牙接收器都利用相移来解码信号。
  2. 对蓝牙接收端的相移量化,所以只使用相移的信号。

在这里插入图片描述

由于蓝牙的采样率是ZigBee的采样率的一半,所以采样左偏还是右偏决定了最终的解码效果。

4.3 不透明

不透明CTC就是对发送端和接收端都修改,这一类的部分设计像 TwinBeeLongBee等是为了增强CTC的 鲁棒性,其他的如果 ChironPIC 等实现不同无线协议之间的并行通信。

TwinBee

这是一种增强CTC鲁棒性的非透明的CTC设计。它是为了恢复 WEBee 不完全信号仿真引起误差,设计了一种特殊的芯片组合编码方法来恢复易错芯片中的错误。

芯片组合编码的基本思想是利用ZigBee芯片序列的循环移位特性将易出错的芯片移走。如下图所示。

在这里插入图片描述

5. 各种类型的CTC比较

从下面的图表中,可以从吞吐量、可靠性、并发性、硬件修改和复杂性开销方面比较各种CTC技术。

在这里插入图片描述

5.1 性能比较

  1. 包级CTC传输速率远低于物理级CTC。
  2. 包级CTC相对物理级CTC要更可靠,具有更强的抗干扰和抗噪声能力。

5.2 复杂度比较

  1. 包级CTC的复杂度和成本相对较低。基于RSSI分类解调算法简单,一般为线性,即 O ( n ) O(n) O(n),而CSI的则取决于分类算法,像SVM分类、CNN分类,是具有不同的复杂度和成本的。

  2. 物理级CTC的复杂度要高于包级,所以我们比较物理级之间的

    1. 接收透明,发射机需要操纵数据包负载,仿真过程是调制过程的逆向,其中FFT是最耗时的运算。
    2. 发射透明,接收机可能需要为了适应不同的发射信号来更新解调算法。
    3. 不透明,由于是双方都需要更改,且为了提高仿真报文的接收无线电,扩展通信距离,支持并发性更高的CTC链路,这种CTC采用更复杂的操作,比如带宽转换,网段拼接等操作。

6. 未来展望

6.1 研究现状

在谈未来之前,先写下目前CTC的研究现状。

  1. 学术研究近20年,相关的论文数个人了解到的有50+。
  2. 中文文献较少,像我参考阅读的文献绝大多数是在ACM、IEEE两个数据库阅读到的,像国内的CNKI关于这一块的文献还是很少的。
  3. 目前几乎都是学术研究,即论文,相关的开源实例,比如代码,仿真文件较少,个人认为学生对于这一块的理论学习尚可,但是如果要付诸实践难度较大。
  4. 目前在工业上还没有实现的案例,说明这种技术还只是处于理论研究阶段。

6.2 未来展望

  1. 个人认为CTC如果最终可以在工业中实现,很有可能引起在通信、网络等领域的技术变革。
  2. 用直接通信来代替网关,无论是成本还是管理难度上都要更小,更低。
  3. 未来可能会在跨介质传输中起到一定的影响。

7. 参考文献

Yuan He. Cross-Technology Communication for the Internet of Things: A Survey[EB/OL]. 2022[2022-11-8]

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

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

相关文章

个人设计web前端大作业 基于html5制作美食菜谱网页设计作业代码

🎀 精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

基于PHP+MySQL长途客用汽车票订票系统的设计与实现

随着时代的变迁汽车已经成为了人们日常生活中不可或缺的一部分,虽然很多人已经拥有了私家车,但是很多时候因为离家较远等原因,很多时候人们还是会通过客用汽车来进行一些出行,但是通常情况下客用车票都需要到客用站进行购买,这极其的不便利。 为了能够让用户足不出户就可以进行…

拿稳这24道JVM面试题,要价30k都有底气

1.什么是JVM? JVM 的全称是 「Java Virtual Machine」,也就是我们耳熟能详的 Java 虚拟机。它能识别 .class后缀的文件,并且能够解析它的指令,最终调用操作系统上的函数,完成我们想要的操作。 C开发出来的程序,编译…

SpringBoot SpringBoot 开发实用篇 4 数据层解决方案 4.10 MongoDB 基础操作

SpringBoot 【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】 SpringBoot 开发实用篇 文章目录SpringBootSpringBoot 开发实用篇4 数据层解决方案4.10 MongoDB 基础操作4.10.1 MongoDB 基础操作4.10…

(3)paddle---近视眼睛分类的例子

1主要参考 (0)本教程和以下教程不够详细,还是推荐下面这个大佬的blog看一下 计算机视觉——眼疾图片识别(数据集iChallenge-PM)_「已注销」的博客-CSDN博客 (1)blibli视频 252-06_预测病理性…

Vite2 + Vue3 + TypeScript + Pinia 搭建一套企业级的开发脚手架

Vue2 与 Vue3 的区别 Vue3由于完全由TS进行重写,在应用中对类型判断的定义和使用有很强的表现。同一对象的多个键返回值必须通过定义对应的接口(interface)来进行类型定义。要不然在 ESLint 时都会报错。Vue2 与 Vue3 最大的区别: Vue2 使用…

jquery把页面<table>里的内容导出为后缀名为.xlsx的excel

1、问题描述 之前是用Blob把页面的<table>导出成.xls的Excel文件&#xff1a;Blob把html导出为excel文件_金斗潼关的博客-CSDN博客 不过由于微软的Excel对.xls扩展名的文件支持不是很好&#xff0c;打开会报一个警告 所以用户反馈说是不想弹出这个警告&#xff0c;要求…

【深度学习入门 2022 最新版】第一课 深度学习简介

【深度学习入门 2022 最新版】第一课 深度学习简介概述深度学习 vs 机器学习机器学习是什么深度学习是什么机器学习和深度学习的区别神经网络机器学习实现二分类神经网络实现二分类TensorFlowPyTorch神经网络的原理张量张量最小值 (补充)张量最大值 (补充)前向传播损失计算反向…

手撕AVL树

目录 一、概念 二、 结点的定义 2.1 键值对pair 2.2 定义细节 三、 AVL树的插入操作 3.1 平衡因子调整规则 3.2 旋转规则 3.2.1 新节点插入较高左子树的左侧 — 左左:右单旋 3.2.2 新节点插入较高右子树的右侧 — 右右:左单旋 3.2.3 新节点插入较高左子树的右侧 — …

论文管理系统(准备工作)

目录 一、项目需求响应图 二、准备工作 2.1创建一个Spring Initializr项目 2.2后端架构 2.2.1 controller层 2.2.2 entity层 2.2.3 interceptors层 2.2.4 mapper层 2.2.5 serivice层 2.2.6 main运行 2.2.7 mappers文件 2.3配置 application.yml文件 2.4加入依赖 一、项…

Postman如何携带token——Bearer Token和Headers

目录一、使用场景二、设置Bearer Token1.设置你的环境变量2.项目集合设置认证方式及环境变量3.登录接口的脚本三、通过脚本设置Headers1.登录请求设置环境变量2.设置集合的发送请求脚本一、使用场景 现在许多项目都使用jwt来实现用户登录和数据权限&#xff0c;校验过用户的用…

C++ Builder XE关于AdvStringGrid对EXCEL母表快速分表,并批量插入sheet子表简单操作

如何快速将ECXEL母表快速批量生成多个子表分表&#xff0c;并且在表中插入sheet子表的简单操作&#xff1a; //AdvStringGrid2->SaveToXLS(filename,false);//生成新EXCEL表格 //AdvStringGrid2->SaveToXLSSheet(filename,Fname);//插入sheet子表 //-----------------…

一篇五分生信临床模型预测文章代码复现——Figure 4-6 临床模型构建(五)

之前讲过临床模型预测的专栏,但那只是基础版本,下面我们以自噬相关基因为例子,模仿一篇五分文章,将图和代码复现出来,学会本专栏课程,可以具备发一篇五分左右文章的水平: 本专栏目录如下: Figure 1:差异表达基因及预后基因筛选(图片仅供参考) Figure 2. 生存分析,…

XSS-labs靶场实战(五)——第12-14关

今天继续给大家介绍渗透测试相关知识&#xff0c;本文主要内容是XSS-labs靶场实战第12-14关。 免责声明&#xff1a; 本文所介绍的内容仅做学习交流使用&#xff0c;严禁利用文中技术进行非法行为&#xff0c;否则造成一切严重后果自负&#xff01; 再次强调&#xff1a;严禁对…

认识和使用容器

目录 前言 一、容器化背后的发展历史和概念 1.容器的抽象 容器的比喻 2.计算机领域的容器 容器是一种标准化的软件单元 二、容器和微服务架构 1.容器的作用 快速搭建开发环境 将运行环境和配置放在代码中并部署 使用docker-compose来模拟生产环境 使用docker镜像进…

在JVM 中进程与线程关系、介绍线程:程序计数器、本地方法栈、虚拟机栈

首先,我们要了解进程和线程的基本概念 进程 process 一个在内存中运行的应用程序。每个进程都有自己独立的一块内存空间,一个进程可以有多个线程,比如在Windows系统中,一个运行的*.exe应用程序就是一个进程。 线程 thread 进程中的一个执行任务(控制单元),负责当前进…

vue-element-admin依赖报错npm ERR! code 128 npm ERR! An unknown git error occurred

解决vue-element-admin安装报错 npm ERR code 128 npm ERR An unknown git error occurred npm 报错截图&#xff1a; 参考地址 先试一下&#xff1a;控制台输入&#xff1a; git config --global http.sslverify “false” git config --global url.“https://”.insteadOf …

几行代码实现用Python输出表情包

近几日在搞邮件自动发送&#xff0c;发现python原来可以发小表情&#xff01;而且操作很容易&#xff0c;但是发现现在的博文介绍的不是很全面&#xff08;或者我没搜出来……&#xff09;&#xff0c;因此在此补充一二。 1. python输出的表情样子 图里的表情包当然才是冰山一角…

【案例 5-3】 模拟用户登录

【案例介绍】 1.任务描述 在使用一些 APP 时&#xff0c;通常都需要填写用户名和密码。用户名和密码输入都正确才会登录成功&#xff0c;否则会提示用户名或密码错误。 本例要求编写一个程序&#xff0c;模拟用户登录。程序要求如下&#xff1a; &#xff08;1&#xff09; 用…

隐式转换这个概念你听说过没?

世界上最遥远的距离不是生与死&#xff0c;而是你亲手制造的BUG就在你眼前&#xff0c;你却怎么都找不到她。 目录 1、隐式转换是什么意思 1.1整型截断 1.2整形提升 2、char的取值范围 2.1有符号char取值范围 2.2无符号char取值范围 前言&#xff1a; 大家好&#xff0c;…