Linux中用rpm管理软件

本章主要介绍使用rpm对软件包进行管理

  • 使用rpm查询软件的信息
  • 使用rpm安装及卸载软件
  • 使用rpm对软件进行更新
  • 使用rpm对软件进行验证

rpm 全称是redhat package manager,后来改成rpm package manager,这是根据源 码包编译出来的包。先从光盘中拷贝一个包,并看它是如何命名的

先挂载光盘,然后拷贝vsftpd这个包

[root@redhat8 ~]# mount /dev/cdrom /mnt/
mount: /mnt: WARNING: device write-protected, mounted read-only.
[root@redhat8 ~]# cp /mnt/AppStream/Packages/vsftpd-3.0.3-34.el8.x86_64.rpm .
[root@redhat8 ~]# ll vsftpd-3.0.3-34.el8.x86_64.rpm 
-r--r--r-- 1 root root 185184 12月 11 10:19 vsftpd-3.0.3-34.el8.x86_64.rpm
[root@redhat8 ~]#

这里字段的含义如下:

(1)vsftpd:包的名称

(2)3.0.3:版本,即version

(3)33.el8:小版本号,即release,其中el8指的是此包适用于RHEL8系统

(4)x86_64:指的是架构,到底是32位还是64位的包,x86_64表示是64位的。rpm的安 装命令是“rpm -ivh 安装包”。安装rpm

[root@redhat8 ~]# rpm -ivh vsftpd-3.0.3-34.el8.x86_64.rpm 
警告:vsftpd-3.0.3-34.el8.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID fd431d51: NOKEY
Verifying...                          ################################# [100%]
准备中...                          ################################# [100%]
正在升级/安装...1:vsftpd-3.0.3-34.el8              ################################# [100%]
[root@redhat8 ~]#

这样把vsftpd-3.0.3-33.el8.x86_64.rpm 安装好了。如果是第一次接触 Linux 会感觉到奇怪,怎么不像 Windows一样让我们通过浏览来指定路径,那么这个包安装到哪里了呢?

相信大家在Windows中都安装过 Chrome浏览器,基本上是秒安装,也没有指定路径,因为这个安装包中已经定义好安装路径了。同理,rpm 安装时也已经指定了安装路径,把这个rpm打开,先拷贝到/opt目录中

[root@redhat8 ~]# cp vsftpd-3.0.3-34.el8.x86_64.rpm /opt/
[root@redhat8 ~]# cd /opt/
[root@redhat8 opt]# ls
vsftpd-3.0.3-34.el8.x86_64.rpm
[root@redhat8 opt]# 

解压此包

[root@redhat8 opt]# rpm2cpio vsftpd-3.0.3-34.el8.x86_64.rpm | cpio -id
714 块
[root@redhat8 opt]# ls
etc  usr  var  vsftpd-3.0.3-34.el8.x86_64.rpm
[root@redhat8 opt]#

可以看到,生成了3个目录

[root@redhat8 opt]# tree
.
├── etc
│   ├── logrotate.d
│   │   └── vsftpd
│   ├── pam.d
│   │   └── vsftpd
│   └── vsftpd
│       ├── ftpusers
│       ├── user_list
│       ├── vsftpd.conf
│       └── vsftpd_conf_migrate.sh
├── usr
│   ├── lib
│   │   └── systemd
│   │       ├── system
│   │       │   ├── vsftpd.service
│   │       │   ├── vsftpd@.service
│   │       │   └── vsftpd.target
│   │       └── system-generators
│   │           └── vsftpd-generator
...输出信息...
├── var
│   └── ftp
│       └── pub
└── vsftpd-3.0.3-34.el8.x86_64.rpm27 directories, 48 files
[root@redhat8 opt]#

可以看到,当我们安装rpm包时,它就会把包中的内容按照这个结构拷贝到系统,所以安 装的路径都是安排好了的

1.1 rpm查询

如果要查询已经安装过的软件包的信息, rpm的第一个选项需要使用-q,表示查询的意思。查询系统安装的所有软件包用 rpm-qa命令

[root@redhat8 ~]# rpm -qa

查询系统是否安装了某个软件包用“rpm -qa 包名”命令。例如,要查询是否安装了 vsftpd

[root@redhat8 ~]# rpm -qa vsftpd
vsftpd-3.0.3-34.el8.x86_64
[root@redhat8 ~]#

但是这种用法,在写包名时多一个或少一个字符都查询不出来

[root@redhat8 ~]# rpm -qa vsftp
[root@redhat8 ~]#

所以,更建议使用管道和grep进行过滤

[root@redhat8 ~]# rpm -qa | grep vsf
vsftpd-3.0.3-34.el8.x86_64
[root@redhat8 ~]#

查询安装某软件包之后所生成的文件用“rpm -ql 包名”命令,这里q后面是字母1。例 如,要查询vsftpd所生成的文件

[root@redhat8 ~]# rpm -ql vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd
/etc/vsftpd/ftpusers
......

这样就可以看到 vsftpd安装到哪里了

查看软件包生成的配置文件用“rpm -qc包名”命令

[root@redhat8 ~]# rpm -qc vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf
[root@redhat8 ~]#

查看包的信息用“rpm-qi包名”

[root@redhat8 ~]# rpm -qi vsftpd
Name        : vsftpd
Version     : 3.0.3
Release     : 34.el8
Architecture: x86_64
Install Date: 2023年12月11日 星期一 10时43分50秒
Group       : System Environment/Daemons
Size        : 355692
License     : GPLv2 with exceptions
Signature   : RSA/SHA256, 2021年04月21日 星期三 20时42分12秒, Key ID 199e2f91fd431d51
Source RPM  : vsftpd-3.0.3-34.el8.src.rpm
Build Date  : 2021年04月20日 星期二 22时28分24秒
Build Host  : x86-vm-15.build.eng.bos.redhat.com
Relocations : (not relocatable)
Packager    : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
Vendor      : Red Hat, Inc.
URL         : https://security.appspot.com/vsftpd.html
Summary     : Very Secure Ftp Daemon
Description :
vsftpd is a Very Secure FTP daemon. It was written completely from
scratch.
[root@redhat8 ~]#

当我们安装软件包时会产生许多文件,反过来想查询某个文件是由哪个软件包安装出来的用rpm -qf /path/file命令

[root@redhat8 ~]# rpm -qf /etc/vsftpd/vsftpd.conf 
vsftpd-3.0.3-34.el8.x86_64
[root@redhat8 ~]#

可以看到,/etc/vsfipd/vsfipd.conf是由 vsftpd这个包产生的

[root@redhat8 ~]# rpm -qf /etc/passwd
setup-2.12.2-6.el8.noarch
[root@redhat8 ~]#

可以看到,/etc/passwd是由setup这个包生成的

以上这些都是针对已经安装了的软件包进行查询,如果要查询安装包,则需要加上p选项

[root@redhat8 ~]# rpm -qcp vsftpd-3.0.3-34.el8.x86_64.rpm 
警告:vsftpd-3.0.3-34.el8.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID fd431d51: NOKEY
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf
[root@redhat8 ~]#

当然,在RHEL8/CentOS8中不加p选项也可以,之前的系统是不行的

1.2 rpm安装及卸载

前面已经介绍了用“rpm -ivh 安装包”命令安装软件,且 vsftpd已经安装完成

卸载软件包的命令是“rpm -e 软件包”,现在要把vsftpd卸载掉

[root@redhat8 ~]# rpm -e vsftpd
[root@redhat8 ~]# rpm -qa | grep vsftpd
[root@redhat8 ~]#

可以看到,现在vsftpd已经不存在了,再次把这个包安装上去

[root@redhat8 ~]# rpm -ivh vsftpd-3.0.3-34.el8.x86_64.rpm 
警告:vsftpd-3.0.3-34.el8.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID fd431d51: NOKEY
Verifying...                          ################################# [100%]
准备中...                          ################################# [100%]
正在升级/安装...1:vsftpd-3.0.3-34.el8              ################################# [100%]
[root@redhat8 ~]#

有时需要强制安装软件,例如,某个包已经安装过了,现在想重新安装

[root@redhat8 ~]# rpm -ivh vsftpd-3.0.3-34.el8.x86_64.rpm 
警告:vsftpd-3.0.3-34.el8.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID fd431d51: NOKEY
Verifying...                          ################################# [100%]
准备中...                          ################################# [100%]软件包 vsftpd-3.0.3-34.el8.x86_64 已经安装
[root@redhat8 ~]# 

这里提示包已经安装过了,无法再次安装。此时加上--force选项强制安装即可

一般情况下,用于某个文件丢失了,想通过强制重新安装来找回此文件

[root@redhat8 ~]# rm -rf /etc/vsftpd/vsftpd.conf 
[root@redhat8 ~]# ls /etc/vsftpd/
ftpusers  user_list  vsftpd_conf_migrate.sh
[root@redhat8 ~]#

这里把/etc/vsftpd/vsftpd.conf删除,然后开始强制安装

[root@redhat8 ~]# rpm -ivh vsftpd-3.0.3-34.el8.x86_64.rpm --force
警告:vsftpd-3.0.3-34.el8.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID fd431d51: NOKEY
Verifying...                          ################################# [100%]
准备中...                          ################################# [100%]
正在升级/安装...1:vsftpd-3.0.3-34.el8              ################################# [100%]
[root@redhat8 ~]# 

然后再次查看文件

[root@redhat8 ~]# ls /etc/vsftpd/
ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh
[root@redhat8 ~]#

这里又重新生成了被删除的文件,其他文件原来即使做了修改也不会被覆盖替换

1.3 软件包的更新

所谓更新,就是卸载旧版本的软件包,然后安装新版本的软件包。假设原来系统已经安装了1.0版本的软件包,现在要安装2.0版本的软件包,如果两个版本的包安装路径不一样,则可以共存;如果两个版本的包安装路径一样,则会产生冲突

先卸载已经安装了的vsftpd

[root@redhat8 ~]# rpm -e vsftpd
[root@redhat8 ~]#

 然后从RHEL8.0的系统上烤贝一个版本稍低的 vsftpd的安装包

[root@redhat8 ~]# ls -l vsftpd*
-rw-r--r-- 1 root root 183844 12月 11 11:15 vsftpd-3.0.3-28.el8.x86_64.rpm
-r--r--r-- 1 root root 185184 12月 11 10:19 vsftpd-3.0.3-34.el8.x86_64.rpm
[root@redhat8 ~]#

上面ls后面的选项是数字1,不是字母l,这里一个版本稍低,一个版本稍高。先把低版本的包安装上去

[root@redhat8 ~]# rpm -ivh vsftpd-3.0.3-28.el8.x86_64.rpm 
警告:vsftpd-3.0.3-28.el8.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID fd431d51: NOKEY
Verifying...                          ################################# [100%]
准备中...                          ################################# [100%]
正在升级/安装...1:vsftpd-3.0.3-28.el8              ################################# [100%]
[root@redhat8 ~]# 

这里已经安装了一个3.0.3-28的包,然后安装一个更高版本的3.0.3-33包

[root@redhat8 ~]# rpm -ivh vsftpd-3.0.3-34.el8.x86_64.rpm 
警告:vsftpd-3.0.3-34.el8.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID fd431d51: NOKEY
Verifying...                          ################################# [100%]
准备中...                          ################################# [100%]file /etc/vsftpd/vsftpd.conf from install of vsftpd-3.0.3-34.el8.x86_64 conflicts with file from package vsftpd-3.0.3-28.el8.x86_64file /usr/lib/systemd/system/vsftpd.service from install of vsftpd-3.0.3-34.el8.x86_64 conflicts with file from package vsftpd-3.0.3-28.el8.x86_64file /usr/lib/systemd/system/vsftpd.target from install of vsftpd-3.0.3-34.el8.x86_64 conflicts with file from package vsftpd-3.0.3-28.el8.x86_64file /usr/lib/systemd/system/vsftpd@.service from install of vsftpd-3.0.3-34.el8.x86_64 conflicts with file from package vsftpd-3.0.3-28.el8.x86_64file /usr/sbin/vsftpd from install of vsftpd-3.0.3-34.el8.x86_64 conflicts with file from package vsftpd-3.0.3-28.el8.x86_64file /usr/share/man/man5/vsftpd.conf.5.gz from install of vsftpd-3.0.3-34.el8.x86_64 conflicts with file from package vsftpd-3.0.3-28.el8.x86_64
[root@redhat8 ~]#

因为安装路径一样,所以这里提醒产生了冲突导致没有安装成功。如果用更新的方法来安装是可以的,更新的用法是“rpm -Uvh安装包”

[root@redhat8 ~]# rpm -Uvh vsftpd-3.0.3-34.el8.x86_64.rpm 
警告:vsftpd-3.0.3-34.el8.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID fd431d51: NOKEY
Verifying...                          ################################# [100%]
准备中...                          ################################# [100%]
正在升级/安装...1:vsftpd-3.0.3-34.el8              ################################# [ 50%]
正在清理/删除...2:vsftpd-3.0.3-28.el8              ################################# [100%]
[root@redhat8 ~]#

可以看到,现在已经更新成功

[root@redhat8 ~]# rpm -qa | grep vsftpd
vsftpd-3.0.3-34.el8.x86_64
[root@redhat8 ~]#

可以看到,这里安装的是3.0.3-34版本的包

对于内核来说,不同版本的安装路径是不一样的,所以可以同时安装多个版本的不会产生冲突。因此,更新内核时建议使用rpm -ivh命令而不是rpm -Uvh命令。因为rpm -Uvh命 令会卸载旧版本的内核,如果新版本的内核有问题就无法正常进入系统了。如果使用rpm -ivh 命令,包括旧版本的内核同时存在,先用新版本的内核引导系统,如果没问题再卸载旧版本 的内核也不迟,如果有问题还可以使用旧版本的内核引导系统

1.4 rpm验证

当我们安装了一个软件包之后会产生许多文件,要是想判断这些文件是否被修改过,可以用rpm -V(大写字母V)命令,例如,我们刚刚安装了vsftpd,并没有修改任何配置文件

[root@redhat8 ~]# rpm -V vsftpd
[root@redhat8 ~]#

没有任何输出,说明此vsftpd所生成的文件没有被修改,现在用vim编辑器修改一下/etc/vsfipd/vsftpd.conf,随便增添删减一些内容(最好是修改注释后面的内容,否则影响vsftpd启动),然后再次判断

[root@redhat8 ~]# rpm -V vsftpd
S.5....T.  c /etc/vsftpd/vsftpd.conf
[root@redhat8 ~]#

再次检查可以看到/etc/vsftpd/vsftpd.conf被修改过

S指的是大小

5指的是md5值

T指的是时间

c指的是此文件是vsftpd 的配置文件

这样就可以看到哪些文件被修改过了。只修改时间

[root@redhat8 ~]# touch /etc/vsftpd/ftpusers 
[root@redhat8 ~]# rpm -V vsftpd
.......T.  c /etc/vsftpd/ftpusers
S.5....T.  c /etc/vsftpd/vsftpd.conf
[root@redhat8 ~]# 

可以看到,/etc/vsftpd/ftpusers的时间发生了改变

红帽发行的每一个数据包都对它做了数据签名,以证明这个包是红帽官方的。需要在本机用红帽的公钥来进行验证。首先验证机器上是否安装了红帽的公钥

[root@redhat8 ~]# rpm -qa | grep pubkey
[root@redhat8 ~]#

没有任何输出,说明没有导人红帽的公钥。使用如下命令导入公钥

[root@redhat8 ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release 
[root@redhat8 ~]#

或者导入存储在光盘中的公钥

[root@redhat8 vv]# rpm --import /mnt/RPM-GPG-KEY-redhat-release 
[root@redhat8 vv]# 

再次检查公钥的信息

[root@redhat8 vv]# rpm -qa | grep pubkey
gpg-pubkey-fd431d51-4ae0493b
gpg-pubkey-d4082792-5b32db75
[root@redhat8 vv]# 

可以看到,已经成功导入了。下面验证如下两个vsftpd包

[root@redhat8 ~]# rpm -K vsftpd-3.0.3-34.el8.x86_64.rpm 
vsftpd-3.0.3-34.el8.x86_64.rpm: digests signatures 确定
[root@redhat8 ~]#

这个包是一开始从光盘中拷贝过来的,可以看到验证通过

[root@redhat8 ~]# rpm -K vsftpd-3.0.3-28.el8.x86_64.rpm 
vsftpd-3.0.3-28.el8.x86_64.rpm: digests signatures 确定
[root@redhat8 ~]#

这个包也是从光盘中拷贝过来的,只是其他版本的光盘,所以可以看到也是验证通过的

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

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

相关文章

strict-origin-when-cross-origin

严格限制同源策略 &#xff08;1&#xff09;允许服务器的同源IP地址访问 &#xff08;2&#xff09;允许Referer --- 后端服务器要配置

linux sed命令删除一行/多行_sed删除第一行/linux删除文件某一行

sed系列文章 linux常用命令(9)&#xff1a;sed命令(编辑/替换/删除文本)linux sed命令删除一行/多行_sed删除第一行/linux删除文件某一行 文章目录 sed系列文章一、sed删除某一行内容/删除最后一行二、sed删除多行三、扩展3.1、-i命令 本文主要讲解如何删除txt文件中的某一行内…

vite+ts——user.ts——ts接口定义+axios请求的写法

import axios from axios; import qs from query-string; import {UserState} from /store/modules/user/types;export interface LoginData{username:string;password:string;grant_type?:string;scope?:string;client_id?:string;client_secret?:string;response_type?:…

企业使用APP自动化测试工具的重要因素

随着移动应用市场的蓬勃发展&#xff0c;企业对高质量、高效率的软件交付提出了更高的要求。在这个背景下&#xff0c;APP自动化测试工具成为了企业不可或缺的一部分。以下是企业采用APP自动化测试工具的关键因素&#xff1a; 1. 快速且可重复的测试执行 自动化测试工具能够快速…

Docker入门概念

文章目录 容器&#xff08;container&#xff1a;容器/集装箱&#xff09;技术虚拟机解决了哪些部署问题docker解决了哪些部署问题docker是如何做到容器间运行时环境隔离的docker基本概念docker基本使用 容器&#xff08;container&#xff1a;容器/集装箱&#xff09;技术 容…

奥威亚视频云平台VideoCover.aspx 接口任意文件上传漏洞复现 [附POC]

文章目录 奥威亚视频云平台VideoCover.aspx 接口任意文件上传漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现0x06 修复建议奥威亚视频云平台VideoCover.aspx 接口任意文件上传漏洞复现 [附POC] 0x01 前言 免责…

做数据分析为何要学统计学(5)——什么问题适合使用卡方检验?

卡方检验作为一种非常著名的非参数检验方法&#xff08;不受总体分布因素的限制&#xff09;&#xff0c;在工程试验、临床试验、社会调查等领域被广泛应用。但是也正是因为使用的便捷性&#xff0c;造成时常被误用。本文参阅相关的文献&#xff0c;对卡方检验的适用性进行粗浅…

原来使用代码也可以画时序图,用这个Mermaid就行,真香

本文首发于我的个人掘金博客&#xff0c;看到很多人都比较喜欢这篇文章&#xff0c;分享给大家。 个人博客主页&#xff1a;https://www.aijavapro.cn 个人掘金主页&#xff1a;juejin.cn/user/2359988032644541/posts 个人知识星球: 觉醒的新世界程序员 一、背景 在软件开发和…

spring数据校验

我是南城余&#xff01;阿里云开发者平台专家博士证书获得者&#xff01; 欢迎关注我的博客&#xff01;一同成长&#xff01; 一名从事运维开发的worker&#xff0c;记录分享学习。 专注于AI&#xff0c;运维开发&#xff0c;windows Linux 系统领域的分享&#xff01; 本…

数据库(一)| 数据库概述、基本概念、关系型数据库特点、超键候选码等

文章目录 1 数据库的一些基础概念1.1 数据库和数据库管理系统1.2 关系模式和关系实例1.3 数据库模式和数据库实例 2 数据库组织形式2.1 数据采用文件的缺点2.2 使用数据库管理系统的 优点 3 关系型数据库特点4 三个层次的数据抽象Data Abstraction5 超键、候选码、主码、外码 1…

php之jwt使用

PHP JWT&#xff08;JSON Web Token&#xff09;是一种用于身份验证和授权的开放标准。JWT是一个包含有关用户或实体身份信息的安全令牌&#xff0c;它由三部分组成&#xff1a;头部&#xff08;Header&#xff09;、载荷&#xff08;Payload&#xff09;和签名&#xff08;Sig…

计算机网络编程

网络编程 Java 是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java 虚拟机&#xff0c; Java 仍是企业和开发人员的首选开发平台。 课程内容的介绍 1. 计算机网络基础 2. So…

数据结构基础介绍

一.起源及重要性 1968 年&#xff0c;美国的高德纳 Donakl E . Kn uth 教授在其所写的《 计算机程序艺术》第一卷《基本算法 》 中&#xff0c;较系统地阐述了数据的逻辑结构和存储结构及其操作&#xff0c; 开创了数据结构的课程体系 &#xff0c;数据结构作为一门独立的…

B029-JDBC增强

目录 PreparedStatement 查询1.sql注入2.Statement分析 (面试题)3.PreparedStatement (面试题) 登录功能的完善事务链接池概念实现DBCP连接池实现第一种配置方式第二种配置方式 返回主键BaseDao的抽取 PreparedStatement 查询 1.sql注入 就是在sql的字符串拼接的时候&#xf…

基于单片机的定时插座在智能家居中的应用

近年来&#xff0c;随着科学技术的发展迅速&#xff0c;人们对智能化的要求越来越高。越来越多的智能化产品进入千家万户&#xff0c;如电脑电视、扫地机器人、智能空气净化器等。这些家居电器和电子产品大都需要连接电源&#xff0c;为满足多种用电器的正常使用&#xff0c;延…

DevEco Studio 生成HPK文件

DevEco Studio 生成HPK文件 一、安装环境 操作系统: Windows 10 专业版 IDE:DevEco Studio 3.1 SDK:HarmonyOS 3.1 二、生成HPK文件 生成的HPK文件存放在entry文件夹下。下图是未生成HPK的样式。 生成HPK&#xff1a;菜单Build->Build Hap(s)/APP(s)->Build Hap(s)…

启动jar包命令

一、Windows环境 找到jar包的位置&#xff1b; 按shift键&#xff0c;点击鼠标右键&#xff0c;选中在此处打开PowerShell窗口&#xff1b; 此时进入命令行工具 输入java -jar .\java_web-0.0.1-SNAPSHOT.jar&#xff08;注意空格&#xff09;。 二、Linux环境 2.1 方式一 …

039.Python面向对象_三大特性综合案例2

我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448; 入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448; 虚 拟 环 境 搭 建 &#xff1a;&#x1f449;&…

一、微前端目标、前端架构的前生今世、微前端架构优势和劣势、软件设计原则与分层

1、目标 2、前端架构的前世今生 ① 初始&#xff1a;无架构&#xff0c;前端代码内嵌到后端应用中 ② 后端 MVC 架构&#xff1a;将视图层、数据层、控制层做分离 缺点&#xff1a;重度依赖开发环境&#xff0c;代码混淆严重&#xff08;在调试时&#xff0c;需要启动后端所有…

小型洗衣机哪个牌子质量好?迷你洗衣机排名前十名

随着内衣洗衣机的流行&#xff0c;很多小伙伴在纠结该不该入手一款内衣洗衣机&#xff0c;专门来洗一些贴身衣物&#xff0c;答案是非常有必要的&#xff0c;因为我们现在市面上的大型洗衣机只能做清洁&#xff0c;无法对我们的贴身衣物进行一个高强度的清洁&#xff0c;而小小…