OpenStack 创建自定义的QCOW2格式镜像

一、安装KVM虚拟机

1.1 虚拟机安装虚拟化软件包

注意:虚拟机指的是CentOS7.8

#挂载光盘
[root@cloudcs ~]# mount /dev/cdrom /mnt
mount: /dev/sr0 is write-protected, mounting read-only
[root@cloudcs ~]# ls /mnt/
CentOS_BuildTag  EULA  images    LiveOS    repodata              RPM-GPG-KEY-CentOS-Testing-7
EFI              GPL   isolinux  Packages  RPM-GPG-KEY-CentOS-7  TRANS.TBL

#配置本地YUM源
[root@cloudcs ~]# mkdir /tmp/repo
[root@cloudcs ~]# mv /etc/yum.repos.d/*.repo /tmp/repo/
[root@cloudcs ~]# vim /etc/yum.repos.d/local.repo
[root@cloudcs ~]# cat /etc/yum.repos.d/local.repo
[local_repo]
name = local
baseurl = file:///mnt/
gpgcheck = 0

#安装虚拟化软件包及虚拟机镜像管理工具
[root@cloudcs ~]# yum groupinstall -y "Virtualization*"
[root@cloudcs ~]# yum install -y libguestfs-tools-c.x86_64

1.2 创建KVM虚拟机

注意:虚拟机通过命令ifconfig可看到一张虚拟网卡vritbr0,该虚拟网卡为kvm虚拟机default默认的NAT网络类型网卡(192.168.122.1)

#创建目录上传ISO镜像
[root@cloudcs ~]# mkdir -p /soft/disk

#将CentOS7.4上传到 /soft 目录下
[root@cloudcs ~]# ls /soft/
CentOS-7-x86_64-DVD-1708.iso  disk

#创建kvm虚拟机使用的磁盘文件
[root@cloudcs ~]# qemu-img create -f qcow2 /soft/disk/centos7.qcow2 15G
Formatting '/soft/disk/centos7.qcow2', fmt=qcow2 size=16106127360 encryption=off cluster_size=65536 lazy_refcounts=off

#创建kvm虚拟机
virt-install \
--name centos \
--disk path=/soft/disk/centos7.qcow2 \
--vcpus 1 \
--memory 2048 \
--location /soft/CentOS-7-x86_64-DVD-1708.iso \
--network network=default

1.3 安装KVM虚拟机

1.3.1 语言选择

OpenStack 创建自定义的QCOW2格式镜像

1.3.2 自动分区

OpenStack 创建自定义的QCOW2格式镜像

1.3.3 网络及主机名

注意:当开启网络后,必须可以通过 DHCP 自动获取到 IP 地址,如下图

OpenStack 创建自定义的QCOW2格式镜像

1.3.4 配置 ROOT 密码

默认采用最小化 minimal 安装

OpenStack 创建自定义的QCOW2格式镜像

1.3.5 重启并测试网络

重启kvm虚拟机,并以root身份登录,测试kvm虚拟机 能否连通外网

OpenStack 创建自定义的QCOW2格式镜像

二、配置 KVM 虚拟机

2.1 修改KVM虚拟机网络配置文件

注意:修改的是kvm虚拟机,不是虚拟机,概念分不清?参考第一部分 约定

修改 kvm 虚机网卡配置文件,使其只包括以下 4 行内容
[root@local ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
[root@local ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0

TYPE=Ethernet
BOOTPROTO=dhcp
DEVICE=eth0
ONBOOT=yes

2.2 安装 cloud-init 软件包

根据 1.3.5 小节测试,kvm 虚机可正常连通外网,此时直接在线安装软件包即可。目的是为了可以获取到客户自定义元数据信息,如主机名及root密码等。

[root@local ~]# yum install -y cloud-utils-growpart cloud-init

#输出

Loaded plugins: fastestmirror
base                                                     | 3.6 kB     00:00
extras                                                   | 2.9 kB     00:00
updates                                                  | 2.9 kB     00:00
(1/4): extras/7/x86_64/primary_db                          | 247 kB   00:00
(2/4): base/7/x86_64/group_gz                              | 153 kB   00:00
(3/4): updates/7/x86_64/primary_db                         |  16 MB   00:31
(4/4): base/7/x86_64/primary_db                            | 6.1 MB   00:36
Determining fastest mirrors
 * base: mirrors.cn99.com
 * extras: mirrors.ustc.edu.cn
 * updates: mirrors.ustc.edu.cn
Resolving Dependencies
--> Running transaction check
--> Running transaction check
--> Processing Dependency: python-jsonpointer for package: python-jsonpatch-1.2-4.el7.noarch
--> Processing Dependency: python-urllib3 >= 1.10.2-1 for package: python-requests-2.6.0-10.el7.noarch
--> Processing Dependency: python-chardet >= 2.2.1-1 for package: python-requests-2.6.0-10.el7.noarch
--> Running transaction check
--> Processing Dependency: libsemanage = 2.5-14.el7 for package: libsemanage-python-2.5-14.el7.x86_64
--> Processing Dependency: python-ipaddress for package: python-backports-ssl_match_hostname-3.5.0.1-1.el7.noarch
--> Processing Dependency: python-backports for package: python-backports-ssl_match_hostname-3.5.0.1-1.el7.noarch
--> Processing Dependency: audit-libs(x86-64) = 2.7.6-3.el7 for package: audit-2.7.6-3.el7.x86_64
--> Processing Dependency: libselinux(x86-64) = 2.5-11.el7 for package: libselinux-python-2.5-11.el7.x86_64
Total                                              2.0 MB/s | 8.2 MB  00:04
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Importing GPG key 0xF4A80EB5:
 Userid     : "CentOS-7 Key (CentOS 7 Official Signing Key) "
 Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
 Package    : centos-release-7-4.1708.el7.centos.x86_64 (@anaconda)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Updating   : libsepol-2.5-10.el7.x86_64                                  1/43
  Updating   : libselinux-2.5-15.el7.x86_64                                2/43
  Updating   : audit-libs-2.8.5-4.el7.x86_64                               3/43
  Updating   : libsemanage-2.5-14.el7.x86_64                               4/43
  Updating   : libselinux-python-2.5-15.el7.x86_64                         5/43
  Installing : python-ipaddress-1.0.16-2.el7.noarch                        6/43
  Installing : python-six-1.9.0-2.el7.noarch                               7/43
  Installing : libsemanage-python-2.5-14.el7.x86_64                        8/43
  Installing : audit-libs-python-2.8.5-4.el7.x86_64                        9/43
  Installing : net-tools-2.0-0.25.20131004git.el7.x86_64                  10/43
  Updating   : libselinux-utils-2.5-15.el7.x86_64                         11/43
  Updating   : policycoreutils-2.5-34.el7.x86_64                          12/43
  Installing : setools-libs-3.3.8-4.el7.x86_64                            13/43
  Installing : libcgroup-0.41-21.el7.x86_64                               14/43
  Installing : python-prettytable-0.7.2-3.el7.noarch                      15/43
  Installing : libyaml-0.1.4-11.el7_0.x86_64                              16/43
  Installing : PyYAML-3.10-11.el7.x86_64                                  17/43
  Installing : python-chardet-2.2.1-3.el7.noarch                          18/43
  Installing : python-jsonpointer-1.9-2.el7.noarch                        19/43
  Installing : python-jsonpatch-1.2-4.el7.noarch                          20/43
  Installing : python-backports-1.0-8.el7.x86_64                          21/43
  Installing : python-backports-ssl_match_hostname-3.5.0.1-1.el7.noarch   22/43
  Installing : python-setuptools-0.9.8-7.el7.noarch                       23/43
  Installing : python-urllib3-1.10.2-7.el7.noarch                         24/43
  Installing : python-requests-2.6.0-10.el7.noarch                        25/43
  Installing : python-babel-0.9.6-8.el7.noarch                            26/43
  Installing : python-markupsafe-0.11-10.el7.x86_64                       27/43
  Installing : python-jinja2-2.7.2-4.el7.noarch                           28/43
  Installing : python-IPy-0.75-6.el7.noarch                               29/43
  Installing : checkpolicy-2.5-8.el7.x86_64                               30/43
  Installing : policycoreutils-python-2.5-34.el7.x86_64                   31/43
  Installing : pyserial-2.6-6.el7.noarch                                  32/43
  Installing : cloud-init-19.4-7.el7.centos.6.x86_64                      33/43
  Updating   : audit-2.8.5-4.el7.x86_64                                   34/43
  Installing : cloud-utils-growpart-0.29-5.el7.noarch                     35/43
  Cleanup    : policycoreutils-2.5-17.1.el7.x86_64                        36/43
  Cleanup    : libsemanage-2.5-8.el7.x86_64                               37/43
  Cleanup    : libselinux-utils-2.5-11.el7.x86_64                         38/43
  Cleanup    : audit-2.7.6-3.el7.x86_64                                   39/43
  Cleanup    : libselinux-python-2.5-11.el7.x86_64                        40/43
  Cleanup    : libselinux-2.5-11.el7.x86_64                               41/43
  Cleanup    : libsepol-2.5-6.el7.x86_64                                  42/43
  Cleanup    : audit-libs-2.7.6-3.el7.x86_64                              43/43
  Verifying  : python-backports-ssl_match_hostname-3.5.0.1-1.el7.noarch    1/43
  Verifying  : libselinux-2.5-15.el7.x86_64                                2/43
  Verifying  : libselinux-python-2.5-15.el7.x86_64                         3/43
  Verifying  : python-setuptools-0.9.8-7.el7.noarch                        4/43
  Verifying  : pyserial-2.6-6.el7.noarch                                   5/43
  Verifying  : python-urllib3-1.10.2-7.el7.noarch                          6/43
  Verifying  : audit-libs-2.8.5-4.el7.x86_64                               7/43
  Verifying  : checkpolicy-2.5-8.el7.x86_64                                8/43
  Verifying  : policycoreutils-2.5-34.el7.x86_64                           9/43
  Verifying  : libsepol-2.5-10.el7.x86_64                                 10/43
  Verifying  : net-tools-2.0-0.25.20131004git.el7.x86_64                  11/43
  Verifying  : python-IPy-0.75-6.el7.noarch                               12/43
  Verifying  : python-jinja2-2.7.2-4.el7.noarch                           13/43
  Verifying  : libselinux-utils-2.5-15.el7.x86_64                         14/43
  Verifying  : policycoreutils-python-2.5-34.el7.x86_64                   15/43
  Verifying  : python-six-1.9.0-2.el7.noarch                              16/43
  Verifying  : setools-libs-3.3.8-4.el7.x86_64                            17/43
  Verifying  : python-markupsafe-0.11-10.el7.x86_64                       18/43
  Verifying  : audit-2.8.5-4.el7.x86_64                                   19/43
  Verifying  : python-babel-0.9.6-8.el7.noarch                            20/43
  Verifying  : libsemanage-python-2.5-14.el7.x86_64                       21/43
  Verifying  : libsemanage-2.5-14.el7.x86_64                              22/43
  Verifying  : python-backports-1.0-8.el7.x86_64                          23/43
  Verifying  : cloud-init-19.4-7.el7.centos.6.x86_64                      24/43
  Verifying  : python-jsonpointer-1.9-2.el7.noarch                        25/43
  Verifying  : python-jsonpatch-1.2-4.el7.noarch                          26/43
  Verifying  : audit-libs-python-2.8.5-4.el7.x86_64                       27/43
  Verifying  : python-chardet-2.2.1-3.el7.noarch                          28/43
  Verifying  : libyaml-0.1.4-11.el7_0.x86_64                              29/43
  Verifying  : python-prettytable-0.7.2-3.el7.noarch                      30/43
  Verifying  : python-requests-2.6.0-10.el7.noarch                        31/43
  Verifying  : python-ipaddress-1.0.16-2.el7.noarch                       32/43
  Verifying  : PyYAML-3.10-11.el7.x86_64                                  33/43
  Verifying  : cloud-utils-growpart-0.29-5.el7.noarch                     34/43
  Verifying  : libcgroup-0.41-21.el7.x86_64                               35/43
  Verifying  : libselinux-utils-2.5-11.el7.x86_64                         36/43
  Verifying  : libselinux-2.5-11.el7.x86_64                               37/43
  Verifying  : libsemanage-2.5-8.el7.x86_64                               38/43
  Verifying  : audit-2.7.6-3.el7.x86_64                                   39/43
  Verifying  : policycoreutils-2.5-17.1.el7.x86_64                        40/43
  Verifying  : libsepol-2.5-6.el7.x86_64                                  41/43
  Verifying  : audit-libs-2.7.6-3.el7.x86_64                              42/43
  Verifying  : libselinux-python-2.5-11.el7.x86_64                        43/43

Installed:
  cloud-init.x86_64 0:19.4-7.el7.centos.6
  cloud-utils-growpart.noarch 0:0.29-5.el7

Dependency Installed:
  PyYAML.x86_64 0:3.10-11.el7
  audit-libs-python.x86_64 0:2.8.5-4.el7
  checkpolicy.x86_64 0:2.5-8.el7
  libcgroup.x86_64 0:0.41-21.el7
  libsemanage-python.x86_64 0:2.5-14.el7
  libyaml.x86_64 0:0.1.4-11.el7_0
  net-tools.x86_64 0:2.0-0.25.20131004git.el7
  policycoreutils-python.x86_64 0:2.5-34.el7
  pyserial.noarch 0:2.6-6.el7
  python-IPy.noarch 0:0.75-6.el7
  python-babel.noarch 0:0.9.6-8.el7
  python-backports.x86_64 0:1.0-8.el7
  python-backports-ssl_match_hostname.noarch 0:3.5.0.1-1.el7
  python-chardet.noarch 0:2.2.1-3.el7
  python-ipaddress.noarch 0:1.0.16-2.el7
  python-jinja2.noarch 0:2.7.2-4.el7
  python-jsonpatch.noarch 0:1.2-4.el7
  python-jsonpointer.noarch 0:1.9-2.el7
  python-markupsafe.x86_64 0:0.11-10.el7
  python-prettytable.noarch 0:0.7.2-3.el7
  python-requests.noarch 0:2.6.0-10.el7
  python-setuptools.noarch 0:0.9.8-7.el7
  python-six.noarch 0:1.9.0-2.el7
  python-urllib3.noarch 0:1.10.2-7.el7
  setools-libs.x86_64 0:3.3.8-4.el7

Dependency Updated:
  audit.x86_64 0:2.8.5-4.el7             audit-libs.x86_64 0:2.8.5-4.el7
  libselinux.x86_64 0:2.5-15.el7         libselinux-python.x86_64 0:2.5-15.el7
  libselinux-utils.x86_64 0:2.5-15.el7   libsemanage.x86_64 0:2.5-14.el7
  libsepol.x86_64 0:2.5-10.el7           policycoreutils.x86_64 0:2.5-34.el7

Complete!

2.3 编辑 cloud.cfg 文件

编辑 /etc/cloud/cloud.cfg 配置文件,在 cloud_init_modules 下添加以下内容

#添加内容
 - resolv-conf

#最终配置文件效果
[root@local ~]# vi /etc/cloud/cloud.cfg
[root@local ~]# cat /etc/cloud/cloud.cfg
users:
 - default

disable_root: 1
ssh_pwauth:   0

mount_default_fields: [~, ~, 'auto', 'defaults,nofail,x-systemd.requires=cloud-init.service', '0', '2']
resize_rootfs_tmp: /dev
ssh_deletekeys:   1
ssh_genkeytypes:  ~
syslog_fix_perms: ~
disable_vmware_customization: false

cloud_init_modules:
 - disk_setup
 - migrator
 - bootcmd
 - write-files
 - growpart
 - resizefs
 - set_hostname
 - update_hostname
 - update_etc_hosts
 - rsyslog
 - users-groups
 - ssh
 - resolv-conf

cloud_config_modules:
 - mounts
 - locale
 - set-passwords
 - rh_subscription
 - yum-add-repo
 - package-update-upgrade-install
 - timezone
 - puppet
 - chef
 - salt-minion
 - mcollective
 - disable-ec2-metadata
 - runcmd

cloud_final_modules:
 - rightscale_userdata
 - scripts-per-once
 - scripts-per-boot
 - scripts-per-instance
 - scripts-user
 - ssh-authkey-fingerprints
 - keys-to-console
 - phone-home
 - final-message
 - power-state-change

system_info:
  default_user:
    name: centos
    lock_passwd: true
    gecos: Cloud User
    groups: [adm, systemd-journal]
    sudo: ["ALL=(ALL) NOPASSWD:ALL"]
    shell: /bin/bash
  distro: rhel
  paths:
    cloud_dir: /var/lib/cloud
    templates_dir: /etc/cloud/templates
  ssh_svcname: sshd

vim:syntax=yaml

2.4 编辑 network 文件

编辑 /etc/sysconfig/network 配置文件,使其包含以下内容,避免访问 EC2 元数据服务时出现问题。

#添加内容
NOZEROCONF=yes

#最终配置文件效果
[root@local ~]# vi /etc/sysconfig/network
[root@local ~]# cat /etc/sysconfig/network
#Created by anaconda
NOZEROCONF=yes

2.5 编辑 grub 文件

编辑 /etc/default/grub 配置文件,使其包含以下引导选项内容,为了确保控制台的信息出现在 dashboard 的日志标签页中,以及 nova console-log 日志的输出内容中。

#添加内容
GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8"

#最终配置文件效果
[root@local ~]# vi /etc/default/grub
[root@local ~]# cat /etc/default/grub

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8"
GRUB_DISABLE_RECOVERY="true"

#执行命令使参数生效
[root@local ~]# grub2-mkconfig -o /boot/grub2/grub.cfg

Generating grub configuration file ...

Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-c515a8f65bf14e138d99b2c451179327
Found initrd image: /boot/initramfs-0-rescue-c515a8f65bf14e138d99b2c451179327.img
done

2.6 关闭 KVM 虚拟机

[root@local ~]# init 0

三、创建 QCOW2 镜像

注意:以下步骤在虚拟机中操作,不是kvm虚拟机,概念分不清?参考第一部分 约定

3.1 重置并清理镜像

[root@cloudcs ~]# virsh list --all
 Id    Name                           State
vda        /soft/disk/centos7.qcow2
hda        -

#创建并清理压缩镜像
[root@cloudcs ~]# virt-sparsify --compress /soft/disk/centos7.qcow2 /tmp/centos-cloud.qcow2

#输出
[   0.0] Create overlay file in /tmp to protect source disk
[   0.1] Examine source disk
 100% ⟦▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒⟧ 00:00
[  13.6] Fill free space in /dev/centos/root with zero
 100% ⟦▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒⟧ 00:00
[  31.5] Clearing Linux swap on /dev/centos/swap
[  33.3] Fill free space in /dev/sda1 with zero
[  40.9] Copy to destination and make sparse
[ 101.4] Sparsify operation completed with no errors.

virt-sparsify: Before deleting the old disk, carefully check that the
target disk boots and works correctly.

四、测试镜像启动

4.1 注册镜像

将镜像 centos-cloud.qcow2 注册到 OpenStack 平台,以下为图形化注册演示,命令行注册请参考博文 G020-OP-INS-RHEL-02 RedHat OpenStack 发放云主机(命令行)

OpenStack 创建自定义的QCOW2格式镜像
OpenStack 创建自定义的QCOW2格式镜像

4.2 创建云主机类型(规格)

OpenStack 创建自定义的QCOW2格式镜像

OpenStack 创建自定义的QCOW2格式镜像

4.3 发放云主机测试

注意:网络及路由请参考 G020 创建,务必保证路由及网关存在,否则无法获取到客户自定义主机名

OpenStack 创建自定义的QCOW2格式镜像
OpenStack 创建自定义的QCOW2格式镜像
OpenStack 创建自定义的QCOW2格式镜像
OpenStack 创建自定义的QCOW2格式镜像
观察启动流程及尝试登录,测试镜像正确无误
OpenStack 创建自定义的QCOW2格式镜像

OpenStack 创建自定义的QCOW2格式镜像

OpenStack 创建自定义的QCOW2格式镜像

Original: https://www.cnblogs.com/kongshuo/p/16648489.html
Author: kongshuo
Title: OpenStack 创建自定义的QCOW2格式镜像

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/585492/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 四、vi/vim编辑器

    vi/vim 模式命令模式编辑模式末行模式home键 行首end键 行尾命令模式切换到编辑模式a 当前字符后输入A 当前行行尾输入i 当前字符前输入I 当前行行首输入o 当前行下一…

    Linux 2023年6月7日
    0112
  • 我对二进制的理解

    理解进制的重要方法是类比我们熟知的十进制 10进制 一个正常的人类,拥有10根手指,每根手指代表1个信息,那么两双手掌便可表达10个信息。1, 2, 3, …, 10。…

    Linux 2023年6月7日
    061
  • JAVA设计模式-单例模式

    JAVA设计模式-单例模式 单例模式 类只能有一个实例,在内存中会创建并且只创建一次对象。所有其他类或者其他需要调用的地方都是用这一个对象,可以防止频繁创建对象,内存占用高。特点:…

    Linux 2023年6月6日
    0102
  • centos7安装zabbix-agent客户端

    1.官方下载zabbix-agent安装包链接:wget https://cdn.zabbix.com/zabbix/binaries/stable/5.4/5.4.6/zabbi…

    Linux 2023年6月13日
    0126
  • Hadoop Shell命令

    http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_shell.html Original: https://www.cnblogs.com/…

    Linux 2023年5月28日
    099
  • 误删除系列二:恢复已经删除文件

    背景:基于对恢复的好奇心,所以写一系列相关的博客,在linux没有回收站这一说法,通过rm -rf file的操作,如何恢复 以下的讨论分为两种情况: 删除后进程还能找到情况 删除…

    Linux 2023年6月7日
    077
  • 使用bt面板中Python项目管理部署Django项目找不到static采坑记

    工作需要,准备在用django做一个小项目,本地测试没有问题,但是使用bt的工具”python项目管理器”部署到服务器上,找不到static文件 于是尝试解…

    Linux 2023年6月14日
    0117
  • K8S 从私有仓库拉取镜像

    通常来讲,我们在通过公共镜像仓库拉取docker镜像的时候,不需要任何的认证操作,但我们在构建了企业的私有镜像以后,就不得不在拉取镜像之前通过用户名密码来完成认证。 在docker…

    Linux 2023年6月6日
    097
  • c++的左值(lvalue),右值(rvalue),移动语义(move),完美转发(forward)

    c++的左值(lvalue),右值(rvalue),移动语义(move),完美转发(forward) c++的左值,右值 精辟总结 当一个对象被用作右值的时候,使用的是对象的值(内…

    Linux 2023年6月14日
    0125
  • python 练习题:接收一个或多个数并计算乘积

    以下函数允许计算两个数的乘积,请稍加改造,变成可接收一个或多个数并计算乘积 def product(x, y): return x * y python;gutter:true; …

    Linux 2023年6月8日
    098
  • Pytorch Tensor 维度的扩充和压缩

    维度扩展 x.unsqueeze(n) 在 n 号位置添加 一个维度 例子: import torch x = torch.rand(3,2) x1 = x.unsqueeze(0…

    Linux 2023年6月7日
    094
  • PHP str_repeat()

    str_repeat str_repeat() 函数把字符串重复指定的次数。 示例: function strRepeat() { echo str_repeat("*&…

    Linux 2023年6月7日
    0185
  • 常用命令记录

    npm仓库查看和修改 npm config set registry https://registry.npm.taobao.org #设置使用淘宝提供的npm仓库 npm con…

    Linux 2023年5月27日
    084
  • 网络设备配置–8、利用ospf配置动态路由

    一、前言 同系列前几篇:网络设备配置–1、配置交换机enable、console、telnet密码网络设备配置–2、通过交换机划分vlan网络设备配置&#8…

    Linux 2023年6月8日
    0113
  • Docker最常用的镜像命令和容器命令

    一、镜像相关命令 官方文档:https://docs.docker.com/referenc 1.1查看镜像 [root@localhost ~]# docker images R…

    Linux 2023年5月27日
    0105
  • Java8新特性终极指南

    欢迎来到Java学习之Java8新特性终极指南 目录 系列文章目录 @ 目录 系列文章目录 Java语言新特性 Lambda表达式 函数式接口 方法引用 接口的默认方法 重复注解 …

    Linux 2023年6月13日
    0114
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球