网络协议四

news2024/11/18 13:58:05

一、云中网络

物理机的劣势:

1)一旦需要扩容 CPU、内存、硬盘,都需要去机房手动弄,非常麻烦
2)采购的机器往往动不动几百 G 的内存,而每个应用往往可能只需要 4 核 8G
3)一台机器,一旦一个用户不用了,给另外一个用户,那就需要重装操作系统

虚拟机的网路

  1. 网络共享和互通
    在数据中心里面,采取的也是类似的技术,只不过都是 Linux,在每台机器上都创建网桥 br0,虚拟机的网卡都连到 br0 上,物理网卡也连到 br0 上,所有的 br0 都通过物理网卡出来连接到物理交换机上。
    在这里插入图片描述

在这种方式下,不但解决了同一台机器的互通问题,也解决了跨物理机的互通问题,因为都在一个二层网络里面,彼此用相同的网段访问就可以了。但是当规模很大的时候,会存在问题。
你还记得吗?在一个二层网络里面,最大的问题是广播。一个数据中心的物理机已经很多了,广播已经非常严重,需要通过 VLAN 进行划分。如果使用了虚拟机,假设一台物理机里面创建 10 台虚拟机,全部在一个二层网络里面,那广播就会很严重,所以除非是你的桌面虚拟机或者数据中心规模非常小,才可以使用这种相对简单的方式。

  1. NAT
    在这里插入图片描述

虚拟机是你的电脑,路由器和 DHCP Server 相当于家用路由器或者寝室长的电脑,物理网卡相当于你们宿舍的外网网口,用于访问互联网。所有电脑都通过内网网口连接到一个网桥 br0 上,虚拟机要想访问互联网,需要通过 br0 连到路由器上,然后通过路由器将请求 NAT 成为物理网络的地址,转发到物理网络。

如果是你自己登录到物理机上做个简单配置,你可以简化一下。例如将虚拟机所在网络的网关的地址直接配置到 br0 上,不用 DHCP Server,手动配置每台虚拟机的 IP 地址,通过命令 iptables -t nat -A POSTROUTING -o ethX -j MASQUERADE,直接在物理网卡 ethX 上进行 NAT,所有从这个网卡出去的包都 NAT 成这个网卡的地址。通过设置 net.ipv4.ip_forward = 1,开启物理机的转发功能,直接做路由器,而不用单独的路由器,这样虚拟机就能直接上网了。
在这里插入图片描述

  1. 隔离问题
    如果一台机器上的两个虚拟机不属于同一个用户,怎么办呢?好在 brctl 创建的网桥也是支持 VLAN 功能的,可以设置两个虚拟机的 tag,这样在这个虚拟网桥上,两个虚拟机是不互通的。

但是如何跨物理机互通,并且实现 VLAN 的隔离呢?由于 brctl 创建的网桥上面的 tag 是没办法在网桥之外的范围内起作用的,于是我们需要寻找其他的方式。

有一个命令vconfig,可以基于物理网卡 eth0 创建带 VLAN 的虚拟网卡,所有从这个虚拟网卡出去的包,都带这个 VLAN,如果这样,跨物理机的互通和隔离就可以通过这个网卡来实现。

首先为每个用户分配不同的 VLAN,例如有一个用户 VLAN 10,一个用户 VLAN 20。在一台物理机上,基于物理网卡,为每个用户用 vconfig 创建一个带 VLAN 的网卡。不同的用户使用不同的虚拟网桥,带 VLAN 的虚拟网卡也连接到虚拟网桥上。

这样是否能保证两个用户的隔离性呢?不同的用户由于网桥不通,不能相互通信,一旦出了网桥,由于 VLAN 不同,也不会将包转发到另一个网桥上。另外,出了物理机,也是带着 VLAN ID 的。只要物理交换机也是支持 VLAN 的,到达另一台物理机的时候,VLAN ID 依然在,它只会将包转发给相同 VLAN 的网卡和网桥,所以跨物理机,不同的 VLAN 也不会相互通信。

在这里插入图片描述
在这里插入图片描述

二、软件定义网络(SDN)

可以这样比喻,云计算就像大家一起住公寓,要共享小区里面的基础设施,其中网络就相当于小区里面的电梯、楼道、路、大门等,大家都走,往往会常出现问题,尤其在上班高峰期,出门的人太多,对小区的物业管理就带来了挑战。
物业可以派自己的物业管理人员,到每个单元的楼梯那里,将电梯的上下行速度调快一点,可以派人将隔离健身区、景色区的栅栏门暂时打开,让大家可以横穿小区,直接上地铁,还可以派人将多个小区出入口,改成出口多、入口少等等。等过了十点半,上班高峰过去,再派人都改回来。
如果物业管理人员有一套智能的控制系统,在物业监控室里就能看到小区里每个单元、每个电梯的人流情况,然后在监控室里面,只要通过远程控制的方式,拨弄一个手柄,电梯的速度就调整了,栅栏门就打开了,某个入口就改出口了。
这就是软件定义网络(SDN)
在这里插入图片描述

OpenFlow 和 OpenvSwitch(SDN的实现方式)

OpenFlow 是 SDN 控制器和网络设备之间互通的南向接口协议,OpenvSwitch 用于创建软件的虚拟交换机。OpenvSwitch 是支持 OpenFlow 协议的,当然也有一些硬件交换机也支持 OpenFlow 协议。它们都可以被统一的 SDN 控制器管理,从而实现物理机和虚拟机的网络连通。
在这里插入图片描述
对于 OpenvSwitch 来讲,网络包到了我手里,就是一个 Buffer,我想怎么改怎么改,想发到哪个端口就发送到哪个端口。

下面我们实验一下通过 OpenvSwitch 实现 VLAN 的功能

在 OpenvSwitch 中端口 port 分两种。
在网络中,VLAN(虚拟局域网)用于将一个物理网络划分为多个逻辑网络,提供更好的管理、隔离和安全性。Open vSwitch(OVS)是一种用于管理和控制虚拟网络交换机的软件,可以实现VLAN功能。理解access port和trunk port的工作原理对于配置和管理VLAN至关重要。下面是对它们的通俗解释和举例说明:

Access Port

定义

  • Access port配置一个特定的VLAN tag。
  • 从这个端口进来的网络包会被打上这个VLAN tag。
  • 如果一个网络包本身带有的VLAN ID等于配置的tag,则会从这个port发出。
  • 从access port发出的包不带VLAN ID。

举例
假设你有一个Open vSwitch的端口port1,它被配置为VLAN 10的access port。

  • 从port1进入的包

    1. 一个无VLAN标签的包进入port1。
    2. OVS会给这个包打上VLAN 10的标签。
    3. 这个包现在是一个VLAN 10的包。
  • 从port1发出的包

    1. 一个带有VLAN 10标签的包从port1发出。
    2. OVS会移除VLAN标签,使其变为一个无标签的包。
    3. 这个包现在没有VLAN标签,发送到下一个目的地。

Trunk Port

定义

  • Trunk port不配置固定的VLAN tag,而是配置允许通过的VLAN ID(trunks)。
  • 如果trunks为空,表示所有VLAN的包都可以通过,不限制。
  • 如果trunks不为空,则只有配置的VLAN ID的包可以通过。
  • Trunk port的包会保留其原有的VLAN ID。

举例
假设你有一个Open vSwitch的端口port2,它被配置为trunk port,允许VLAN 10和VLAN 20通过。

  • 从port2进入的包

    1. 一个带有VLAN 10标签的包进入port2。

    2. OVS检查这个包的VLAN ID,发现它在允许通过的范围内(VLAN 10和20)。

    3. 这个包继续保持其VLAN 10标签,传输到网络中的其他位置。

    4. 一个带有VLAN 30标签的包进入port2。

    5. OVS检查这个包的VLAN ID,发现它不在允许通过的范围内(VLAN 10和20)。

    6. 这个包被丢弃,不会通过port2。

  • 从port2发出的包

    1. 一个带有VLAN 10标签的包从port2发出。
    2. OVS保持其VLAN 10标签,直接发送。
    3. 这个包到达另一个trunk port或其他设备时,仍然带有VLAN 10标签。

综合示例

假设我们有一个简单的网络,包含两个端口port1和port2,配置如下:

  • port1:配置为VLAN 10的access port
  • port2:配置为允许VLAN 10和VLAN 20的trunk port
  1. 接入设备A通过port1发送数据

    • 设备A发送一个没有VLAN标签的数据包到port1。
    • OVS给这个包打上VLAN 10标签,并发送到网络中。
  2. 来自网络的VLAN 10包经过port2传输

    • 一个带有VLAN 10标签的数据包进入port2。
    • OVS检查包的VLAN标签,发现允许通过。
    • 包保持VLAN 10标签,继续传输到下一设备或端口。
  3. 来自网络的VLAN 30包经过port2传输

    • 一个带有VLAN 30标签的数据包进入port2。
    • OVS检查包的VLAN标签,发现不允许通过。
    • 包被丢弃,不会传输。

通过上述例子,可以看到access port主要用于将单个设备连接到特定的VLAN,而trunk port则用于在不同的VLAN之间传输数据,确保VLAN隔离和管理。

实验二:用 OpenvSwitch 模拟网卡绑定,连接交换机

为了高可用,可以使用网卡绑定,连接到交换机,OpenvSwitch 也可以模拟这一点。

三、云中网络安全

对于公有云上的虚拟机,我的建议是仅仅开放需要的端口,而将其他的端口一概关闭。这个时候,你只要通过安全措施守护好这个唯一的入口就可以了。采用的方式常常是用ACL(Access Control List,访问控制列表)来控制 IP 和端口。

设置好了这些规则,只有指定的 IP 段能够访问指定的开放接口,就算有个有漏洞的后台进程在那里,也会被屏蔽,黑客进不来。在云平台上,这些规则的集合常称为安全组。

当一个网络包进入机器

在这里插入图片描述
有了这个 Netfilter 框架就太好了,你可以在 IP 转发的过程中,随时干预这个过程,只要你能实现这些 hook 函数。

一个著名的实现,就是内核模块 ip_tables。它在这五个节点上埋下函数,从而可以根据规则进行包的处理。按功能可分为四大类:连接跟踪(conntrack)、数据包的过滤(filter)、网络地址转换(nat)和数据包的修改(mangle)。其中连接跟踪是基础功能,被其他功能所依赖。其他三个可以实现包的过滤、修改和网络地址转换。

在用户态,还有一个你肯定知道的客户端程序 iptables,用命令行来干预内核的规则。内核的功能对应 iptables 的命令行来讲,就是表和链的概念。
在这里插入图片描述
在这里插入图片描述

iptables的作用

当使用iptables时,通常会针对不同的需求和场景设置不同的规则。以下是一些针对上述提到的iptables功能的例子:

  1. 防火墙功能

    • 允许特定IP地址的访问:

      iptables -A INPUT -s 192.168.1.100 -j ACCEPT
      
    • 阻止特定IP地址的访问:

      iptables -A INPUT -s 10.0.0.5 -j DROP
      
    • 允许某个端口的访问,拒绝其他所有访问:

      iptables -A INPUT -p tcp --dport 22 -j ACCEPT
      iptables -A INPUT -j DROP
      
  2. 网络地址转换(NAT)

    • 将内部IP地址转换为外部IP地址:

      iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
      
    • 设置端口转发规则,将外部访问的某个端口转发到内部主机:

      iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.10:80
      
  3. 端口转发(Port Forwarding)

    • 将外部访问的某个端口转发到内部主机的特定端口:
      iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.10:80
      
  4. 流量控制和限制

    • 限制某个IP地址的流量速率:

      iptables -A INPUT -s 192.168.2.50 -m limit --limit 100/minute --limit-burst 200 -j ACCEPT
      
    • 限制某个端口的总流量:

      iptables -A INPUT -p tcp --dport 443 -m quota --quota 1000M -j ACCEPT
      
  5. 包过滤和监控

    • 监控特定端口的进出流量:

      iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix "SSH Traffic: "
      
    • 设置一个计数器来统计特定流量的包数量:

      iptables -A INPUT -s 192.168.1.100 -p tcp --dport 80 -j ACCEPT
      iptables -A INPUT -s 192.168.1.100 -p tcp --dport 80 -j ACCEPT
      iptables -nvL
      

这些例子展示了如何使用iptables来实现防火墙、NAT、端口转发、流量控制和监控等功能。通过这些例子,可以更好地理解iptables的实际应用场景。

安全组

这些规则都可以在虚拟机里,自己安装 iptables 自己配置。但是如果虚拟机数目非常多,都要配置,对于用户来讲就太麻烦了,能不能让云平台把这部分工作做掉呢?

当然可以了。在云平台上,一般允许一个或者多个虚拟机属于某个安全组,而属于不同安全组的虚拟机之间的访问以及外网访问虚拟机,都需要通过安全组进行过滤。

我们会创建一系列的网站,都是前端在 Tomcat 里面,对外开放 8080 端口。数据库使用 MySQL,开放 3306 端口。
为了方便运维,我们创建两个安全组,将 Tomcat 所在的虚拟机放在安全组 A 里面。在安全组 A 里面,允许任意 IP 地址 0.0.0.0/0 访问 8080 端口,但是对于 ssh 的 22 端口,仅仅允许管理员网段 203.0.113.0/24 访问。
我们将 MySQL 所在的虚拟机在安全组 B 里面。在安全组 B 里面,仅仅允许来自安全组 A 的机器访问 3306 端口,但是对于 ssh 的 22 端口,同样允许管理员网段 203.0.113.0/24 访问。
这些安全组规则都可以自动下发到每个在安全组里面的虚拟机上,从而控制一大批虚拟机的安全策略。

所有从外网网口出去的,都转换成为这个 IP 地址。那又一个问题来了,都变成一个公网 IP 了,当 163 网站返回结果的时候,给谁呢,再 nat 成为哪个私网的 IP 呢?

这就是 Netfilter 的连接跟踪(conntrack)功能了。对于 TCP 协议来讲,肯定是上来先建立一个连接,可以用“源 / 目的 IP+ 源 / 目的端口”唯一标识一条连接,这个连接会放在 conntrack 表里面。当时是这台机器去请求 163 网站的,虽然源地址已经 Snat 成公网 IP 地址了,但是 conntrack 表里面还是有这个连接的记录的。当 163 网站返回数据的时候,会找到记录,从而找到正确的私网 IP 地址。

这是虚拟机做客户端的情况,如果虚拟机做服务器呢?也就是说,如果虚拟机里面部署的就是 163 网站呢?
这个时候就需要给这个网站配置固定的物理网的 IP 地址和公网 IP 地址了。这时候就需要显示的配置 Snat 规则和 Dnat 规则了。
当外部访问进来的时候,外网网口会通过 Dnat 规则将公网 IP 地址转换为私网 IP 地址,到达虚拟机,虚拟机里面是 163 网站,返回结果,外网网口会通过 Snat 规则,将私网 IP 地址转换为那个分配给它的固定的公网 IP 地址。

四、 云中的网络QoS 这一节细节没有研究

本来合租共享 WIFI,一个人狂下小电影,从而你网都上不去,是不是很懊恼?

在云平台上,也有这种现象,好在有一种流量控制的技术,可以实现QoS(Quality of Service),从而保障大多数用户的服务质量。

QoS的关键指标

带宽(Bandwidth):指网络能够提供的最大数据传输速率。
延迟(Latency):指数据包从源端到达目的端所需的时间。
抖动(Jitter):指数据包到达目的端的时间间隔的变动。
丢包率(Packet Loss):指数据包在传输过程中丢失的比例。

云中的流量控制主要通过队列进行的,队列分为两大类:无类别队列规则和基于类别的队列规则。
在云中网络 Openvswitch 中,主要使用的是分层令牌桶规则(HTB),将总的带宽在一棵树上按照配置的比例进行分配,并且在一个分支不用的时候,可以借给另外的分支,从而增强带宽利用率。

五、云中网络的隔离GRE、VXLAN 【没仔细看】

好的,让我尝试用一个简单的比喻来解释GRE和VXLAN这两种网络Overlay技术。

想象一下,你有一家大型公司,公司里有多个部门,比如销售部、市场部和研发部。每个部门都有自己的办公区域,员工们在各自的办公区域内可以互相交流。但是,有时候销售部的员工需要和市场部的员工交流,或者研发部的员工需要和市场部的员工交流。由于他们不在同一个办公区域,直接交流就不太方便。

这时候,你可以想象成每个部门是一个独立的网络(VLAN),但是由于物理空间(网络设备和端口数量)的限制,不能无限制地划分更多的独立网络。这时就需要一种方法来让不同部门的员工能够方便地交流,这就是Overlay网络技术发挥作用的地方。

GRE(Generic Routing Encapsulation Protocol)

GRE可以被看作是一种“点对点”的快递服务。就像你从一个部门给另一个部门发送一个包裹,你需要把这个包裹交给快递公司,快递公司会在包裹外面加一个外包装(封装),写上收件人和发件人的地址,然后通过他们的运输网络送到目的地。在这个例子中:

  • 包裹 = 原始数据包
  • 外包装 = GRE封装
  • 快递公司 = 隧道(Tunnel)
  • 运输网络 = 底层物理网络

GRE隧道的两端(Tunnel Endpoints)就像两个快递公司的分拣中心,负责把包裹加上外包装发送出去,或者接收包裹后去掉外包装,把原始的包裹交给正确的收件人。

VXLAN(Virtual Extensible Local Area Network)

VXLAN则可以被看作是一种更高级的快递服务,它支持“组播”的快递方式。这就像是你有一个包裹需要同时发送给多个部门的联系人。在VXLAN中:

  • 包裹 = 原始数据包
  • 外包装 = VXLAN封装
  • 快递公司 = 隧道(Tunnel)
  • 运输网络 = 底层物理网络

VXLAN的特点是可以在一个包裹上写多个收件人的地址,然后通过快递公司的网络(这里可以想象成支持组播的网络),一次性地将包裹的副本发送给所有指定的收件人。这样,即使这些收件人不在同一个物理位置,他们也能同时收到包裹。

在实际的网络环境中,GRE和VXLAN都是用来在不同网络之间创建逻辑上的连接,使得原本不能直接通信的设备能够互相通信,就像不同部门的员工能够互相交流一样。VXLAN相比于GRE,提供了更好的扩展性,可以支持更多的终端设备,并且更适合大规模的云计算环境。

六、容器网络

cgroup,也即明明整台机器有很多的 CPU、内存,而一个应用只能用其中的一部分。

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

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

相关文章

pnpm : 无法加载文件 C:\Users\xxxxx\AppData\Roaming\npm\pnpm.ps1,因为在此系统上禁止运行脚本。

vscode中执行pnpm install的时候,直接报了上面的错误。 解决: 然后输入:set-ExecutionPolicy RemoteSigned,按回车,然后根据提示,我们选A。 然后回车。 这样我们再次回到vscode中的我们就会发现可以了。 …

数字化浪潮下的制造业:WMS仓储系统功能与优势深度解析-亿发

近年来,国内经济增速放缓,中美贸易摩擦加剧,以及制造业产业迁移等因素,使得制造业面临着产能过剩和激烈竞争的局面。制造企业的仓库中常常堆积着大量原材料和积压的成品、半成品,这些库存占用了企业的大量流动资金&…

重点关注!2024年影响因子即将发布!

本周投稿推荐 SSCI • 中科院2区,6.0-7.0(录用友好) EI • 各领域沾边均可(2天录用) CNKI • 7天录用-检索(急录友好) SCI&EI • 4区生物医学类,0.5-1.0(录用…

STM32 MDK Keil5软件调试功能使用(无需连接硬件)

MDK Keil5 在线仿真STM32(无需连接硬件) 首先点击工具栏的魔术棒配置一下:(记得选择自己的STM32芯片类型) 开启调试 使用逻辑分析仪查看IO输出 会打开这个界面,点击左边的setup按钮 会打开这个窗口&am…

洗地机是智商税吗?家用洗地机哪个牌子好?2024年多功能洗地机推荐

洗地机是智商税吗?肯定不是!!!洗地机因为其功能集成了扫地、吸尘、拖地、烘干和消毒的功能,仅需一步操作即可完成所有清洁任务,大大的提升了人们的清洁效率,节省了人们清洁的时间和精力。那么&a…

Ant Design的创意之旅:设计师眼中的界面艺术

你知道什么是蚂蚁Ant Design?事实上,绝大多数人都不知道甚至没有听说过蚂蚁Ant Design,本文将围绕蚂蚁Ant Design是什么为大家深入分析,方便大家对蚂蚁Antt Design有清晰的认识。 1. 蚂蚁Ant Design是什么 蚂蚁Ant Design可以简…

PS系统教程14

铅笔以及颜色替换工具 铅笔工具 模式、不透明度和画笔工具都是一样的 自动抹除 一般默认状态下,画笔颜色与前景色保持一致。 涂满之后如果在图画其他颜色,这时候选择自动抹除,把背景色自动填充到画笔颜色 新建图层用前景色涂满整个画布…

5.2 模块之间的交互和通信方式方法总结

事件驱动通信: 事件驱动通信是一种通信模式,它基于事件的发生和相应来进行通信。在事件驱动通信中,各个组件之间通过发送事件来进行通信,而不是直接调用对方的方法。 事件驱动通信的基本原理是,当一个组件发生某个特…

DevExpress Data Grid

WinForms数据网格是一个由DirectX渲染引擎提供支持的高性能UI组件。数据网格(GridControl)提供了一个灵活的基于视图的体系结构,包括许多数据整形和UI自定义功能。数据网格可以显示和编辑来自任何大小和复杂度的任何数据源的数据。 数据绑定…

【Linux系统】线程与线程控制

本篇博客整理了Linux下线程的概念、线程控制的相关接口,旨在让读者初步认识线程,并为下一篇多线程作铺垫。 目录 一、线程是什么 1.线程是进程的执行流 2.线程的执行、调度、切换 3.页表分级与线程资源分配 4.线程的优缺点 二、线程控制 1.创建…

数据库管理-第201期 优先级事务-01(20240611)

数据库管理201期 2024-06-11 数据库管理-第201期 优先级事务-01(20240611)1 概念2 使用优先级事务2.1 配置会话优先级2.2 配置系统级别等待目标 2.3 确认自动回滚2.4 配置优先级事务模式2.5 使用优先级事务模式确定系统级等待目标 总结 数据库管理-第201…

北斗高精准定位:电动自行车行业的新引擎

近年来,随着科技的发展与智能化进程的加快,电动自行车行业也迎来了新的变革。毫无疑问,北斗高精度定位技术逐渐成为这一行业的关键突破。本文将详细探讨北斗高精度定位技术在电动自行车行业中的多样应用以及其带来的诸多优势。北斗系统的背景…

解决方案:昇腾aarch64服务器安装CUDA+GCC+CMake,编译安装Pytorch,华为昇腾HPC服务器深度学习环境安装全流程

目录 一、安装CUDA和cudnn1.1、下载CUDA驱动1.2、安装CUDA驱动1.3、配置环境变量1.4、安装cudnn1.5、安装magma-cuda 二、安装gcc编译器三、安装CMake四、安装NCCL五、编译安装Pytorch5.1、前提准备5.2、下载pytorch源码5.3、配置环境变量5.4、Pytorch编译安装5.5、测试Pytorch…

你想考取名牌大学吗?那就按我说的学与做

你想考取名牌大学吗?那就按我说的学与做 我讲的这一秘笈,是自己学生时代就读时的实践体会。 本人并不比别人聪慧,当年也正是凭借这一学习技巧,而获得各科均衡且良好成绩考取大学的。在上世纪八十年代,有多少人能考取…

比起本地渲染,渲染100网渲平台有哪些优势?渲染100邀请码1a12

渲染100是知名的网渲平台,比起本地渲染,它有以下几个优势。 1、价格低 渲染100价格便宜,15分钟2毛60分钟8毛的价格非常适合小图,一张图平均2.1元左右,非常的低了,选择渲染100可以节省成本。2、速度快 渲染…

STM32移植Easylogger输出

简介 EasyLogger 是一款超轻量级 、高性能的 C 日志库,非常适合对资源敏感的软件项目,例如:IoT 产品、可穿戴设备、智能家居等等。相比 log4c、zlog 这些知名的 C 日志库,EasyLogger 的功能更加简单,提供给用户的接口…

20240611在飞凌OK3588-C核心板的Linux系统下打通UART0和UART3

20240611在飞凌OK3588-C核心板的Linux系统下打通UART0和UART3 2024/6/11 7:45 Z:\OK3588_Linux_fs\kernel\arch\arm64\boot\dts\rockchip\OK3588-C-common.dtsi &pinctrl { m2 { net_m2_rst_gpio: net_m2_rst_gpio { rockchip,pins <1 RK_PC6 RK_…

轻松掌握两种方法,教你jpg图片怎么改大小kb

在数字时代&#xff0c;我们经常需要在网络上传、分享或存储图片&#xff0c;而其中一项常见的挑战就是将图片的文件大小调整到符合特定要求。对于JPEG格式的图片&#xff0c;改变其大小&#xff08;以KB为单位&#xff09;是一种常见的需求&#xff0c;特别是在网络上传限制或…

国产Sora真的来了!免费体验!实测快手可灵Kling文生视频大模型(附申请方法)

文章首发于公众号&#xff1a;X小鹿AI副业 大家好&#xff0c;我是程序员X小鹿&#xff0c;前互联网大厂程序员&#xff0c;自由职业2年&#xff0c;也一名 AIGC 爱好者&#xff0c;持续分享更多前沿的「AI 工具」和「AI副业玩法」&#xff0c;欢迎一起交流~ 自从年初&#xff…

基于STM32开发的智能鱼缸控制系统

目录 引言环境准备智能鱼缸控制系统基础代码实现&#xff1a;实现智能鱼缸控制系统 4.1 水温传感器数据读取4.2 水泵与加热器控制4.3 水位传感器数据读取4.4 用户界面与数据可视化应用场景&#xff1a;水族箱管理与优化问题解决方案与优化收尾与总结 1. 引言 智能鱼缸控制系…