picture

大家好我是leon,较多关注于Openstack,Ovirt,Ceph,K8S,Docker,GLusterFs,Ansile,Saltstack,Python,希望和大家分享和探讨。

阅读本文需要对KVM有些了解,有问题可下方留言。

一、KVM简介

1、基于内核的虚拟机 Kernel-based Virtual Machine(KVM)是一种内建于 Linux® 中的开源虚拟化技术。具体而言,KVM 可帮助您将 Linux 转变为虚拟机监控程序,使主机计算机能够运行多个隔离的虚拟环境,即虚拟客户机或虚拟机(VM)。2、KVM 是 Linux 的一部分。Linux 2.6.20 或更新版本包括 KVM。KVM 于 2006 年首次公布,并在一年后合并到主流 Linux 内核版本中。由于 KVM 属于现有的 Linux 代码,因此它能立即享受每一项新的 Linux 功能、修复和发展,无需进行额外工程。

二、KVM安装

注:不同发行版本,参考相应命令以及参数yum -y install libvirt-daemon libvirt-client qemu-kvm libvirt-daemon-driver-qemu    # Install  [virt-install virt-manager virt-v2v virt-p2v ]    # Libvirt-daemon  libvirt守护进程    # Libvirt-client  libvirt 用户端软件提供客户端管理命令    # qemu-kvm  提供底层仿真支持    # 最后一个是 libvirt连接qemu的驱动,当然不仅仅只是包含qemu的驱动,还有其他的 systemctl start libvirt &&  systemctl enable libvirt

三、虚拟机管理常用命令

virsh list [--all]列出虚机[所有]virsh net-list [--all]  列出正在使用的网络virsh start [shutdown |reboot  ]虚机开机关机重启virsh destory强制硬关闭虚机virsh define [undefine]根据xml文件定义虚机删除虚机virsh console连接虚机console常用的virsh管理命令列出所有的虚拟机}# virsh list --all显示虚拟机信息]# virsh dominfo CentOS-V6.5.23-server01列出ID为6的虚拟机名]# virsh domname 6显示虚拟机内存和cpu的使用情况]# yum install virt-top -y]# virt-top显示虚拟机分区信息]# yum install libguestfs-tools -y]# virt-df $hostname关闭虚拟机]# virsh shutdown CentOS-V6.5.23-server01 强制关闭虚拟机]# virsh destroy CentOS-V6.5.23-server01 启动虚拟机]# virsh start CentOS-V6.5.23-server01 设置虚拟机随系统自启]# virsh autostart CentOS-V6.5.23-server01 关闭虚拟机随系统自启]# virsh autostart --disable CentOS-V6.5.23-server01 删除虚拟机]# virsh undefine CentOS-V6.5.23-server01 通过控制窗口登录虚拟机]# virsh console CentOS-V6.5.23-server01 挂起$hostname虚拟机]# virsh suspend CentOS-V6.5.23-server01 恢复挂起的虚拟机]# virsh resume CentOS-V6.5.23-server01 查看网卡配置信息]# virsh domiflist CentOS-V6.5.23-server01 Interface  Type       Source     Model       MAC-------------------------------------------------------vnet0      network    default    rtl8139     52:54:00:90:0a:7a查看该虚拟机的磁盘位置]# virsh domblklist  CentOS-V6.5.23-server01 Target     Source------------------------------------------------hda        /data/raw/disk01.rawhdc        -查看KVM虚拟机当前配置]# virsh dumpxml CentOS-V6.5.23-server01 --config, --live, --current--config使用--config时,只会修改对应虚拟机的XML配置。这个配置直到虚拟机下一次启动时才会生效。注意,使用virsh reboot domain并不会让新的设置生效!--live当使--live时,客户机(就是虚拟机)必须是活动状态,配置会立即生效。可以看到,如果使--live时,客户机没有启动,系统会报错的。而且,这时并没有将配置写到虚拟机的XML配置中,即,在虚拟机下一次启动时,这个配置就没了。如果hypervisor支持的话,可以同时使用--config 和 --live。--current使用 --current时,会根据当前客户机的状态来生效。这个说的有点隐晦,实际上就是说,当客户机处于关闭状态时,它等价--config;当客户机处于运行状态时,它等价于--live。

四、网卡硬盘内存CPU存储池

# 管理虚拟机网卡virsh attach-interface 添加网卡:]# virsh domiflist CentOS-V6.5.23-server01 Interface  Type       Source     Model       MAC-------------------------------------------------------vnet0      network    default    rtl8139     52:54:00:90:0a:7a]# virsh attach-interface CentOS-V6.5.23-server01 --type network --source default --model rtl8139  --live --configInterface attached successfully]# virsh domiflist  CentOS-V6.5.23-server01                                                       Interface  Type       Source     Model       MAC-------------------------------------------------------vnet0      network    default    rtl8139     52:54:00:90:0a:7avnet1      network    default    rtl8139     52:54:00:ae:84:d0virsh detach-interface 删除网卡:]# virsh detach-interface CentOS-V6.5.23-server01 --type  network --mac  52:54:00:00:34:55  --live --configInterface detached successfully]# virsh domiflist CentOS-V6.5.23-server01                                                  Interface  Type       Source     Model       MAC-------------------------------------------------------vnet0      network    default    rtl8139     52:54:00:90:0a:7a# 管理虚拟机硬盘新建raw格式虚拟盘]# qemu-img create -f raw /data/raw/disk02.raw 5G Formatting '/data/raw/disk02.raw', fmt=raw size=5368709120 ]# qemu-img  info /data/raw/disk02.raw  image: /data/raw/disk02.rawfile format: rawvirtual size: 5.0G (5368709120 bytes)disk size: 0挂载到虚拟机]# virsh attach-disk centosv6.5.23_01 [--source] /data/raw/disk02.raw sdb --subdriver=raw --live --configDisk attached successfully查看块设备]# virsh  domblklist centosv6.5.23_01 Target     Source------------------------------------------------hda        /data/raw/disk01.rawhdc        -sdb        /data/raw/disk02.raw从虚拟机卸载虚拟盘]# virsh detach-disk centosv6.5.23_01 [--target] sdc --live --config# 管理虚拟机内存virsh setmem 命令帮助:]# virsh setmem --help  NAME    setmem - change memory allocation  SYNOPSIS    setmem  [--config] [--live] [--current]  DESCRIPTION    Change the current memory allocation in the guest domain.  OPTIONS    [--domain]   domain name, id or uuid    [--size]   new memory size, as scaled integer (default KiB)    --config         affect next boot    --live           affect running domain    --current        affect current domain# 实验一下,调小一台虚拟机的内存:]# virsh  dominfo centos_server01 Id:             6Name:           centos_server01UUID:           9953497f-930f-fa61-a0dc-174f1872294eOS Type:        hvmState:          runningCPU(s):         2CPU time:       6.7sMax memory:     1048576 KiBUsed memory:    1048576 KiBPersistent:     yesAutostart:      disableManaged save:   noSecurity model: apparmorSecurity DOI:   0Security label: libvirt-9953497f-930f-fa61-a0dc-174f1872294e (enforcing)[root@ubuntu ~]# virsh  setmem centos_server01 --size 524288  --live --config         [root@ubuntu ~]# virsh  dominfo centos_server01                               Id:             6Name:           centos_server01UUID:           9953497f-930f-fa61-a0dc-174f1872294eOS Type:        hvmState:          runningCPU(s):         2CPU time:       26.9sMax memory:     1048576 KiBUsed memory:    524288 KiBPersistent:     yesAutostart:      disableManaged save:   noSecurity model: apparmorSecurity DOI:   0Security label: libvirt-9953497f-930f-fa61-a0dc-174f1872294e (enforcing)设置最大内存限制virsh setmaxmem 命令帮助:]# virsh setmaxmem --help  NAME    setmaxmem - change maximum memory limit  SYNOPSIS    setmaxmem  [--config] [--live] [--current]  DESCRIPTION    Change the maximum memory allocation limit in the guest domain.  OPTIONS    [--domain]   domain name, id or uuid    [--size]   new maximum memory size, as scaled integer (default KiB)    --config         affect next boot    --live           affect running domain    --current        affect current domain需要关闭虚拟机再配置]# virsh setmaxmem centos_server01 1572864 --config error: Unable to change MaxMemorySizeerror: Requested operation is not valid: cannot resize the maximum memory on an active domain]# virsh  shutdown centos_server01 Domain centos_server01 is being shutdown]# virsh setmaxmem centos_server01 1572864 --config]# virsh dominfo centos_server01Id:             -Name:           centos_server01UUID:           9953497f-930f-fa61-a0dc-174f1872294eOS Type:        hvmState:          shut offCPU(s):         2Max memory:     1572864 KiBUsed memory:    524288 KiBPersistent:     yesAutostart:      disableManaged save:   noSecurity model: apparmorSecurity DOI:   0#然后现在给他加大到1G]# virsh  setmem centos_server01 --size 1048576 --live --config ]# virsh dominfo centos_server01Id:             5Name:           centos_server01UUID:           9953497f-930f-fa61-a0dc-174f1872294eOS Type:        hvmState:          runningCPU(s):         2CPU time:       30.5sMax memory:     1572864 KiBUsed memory:    1048576 KiBPersistent:     yesAutostart:      disableManaged save:   noSecurity model: apparmorSecurity DOI:   0Security label: libvirt-9953497f-930f-fa61-a0dc-174f1872294e (enforcing)# 管理虚拟机CPU查看虚拟机CPU数量配置]# virsh vcpucount centos_server01maximum      config         2maximum      live           2current      config         2current      live           2配置虚拟机最大CPU个数限制]# virsh setvcpus centos_server01 --maximum 4 --config]# virsh vcpucount centos_server01maximum      config         4maximum      live           2current      config         2current      live           2配置最大CPU个数限制需要重启后才能生效ps: --maximum must be used with --config only配置虚拟机CPU个数]# virsh  setvcpus centos_server01 --count 4 --config[root@ubuntu8 ~]# virsh vcpucount  centos_server01maximum      config         4maximum      live           2current      config         4current      live           2虚拟机CPU在maximum live的限制内,可以通过--live参数直接生效CPU可以在限制内热添加,但无法热减少,只能使用--config配置好后,等下次重启生效:]# virsh setvcpus centos_server01 --count 2  --live error: internal error: cannot change vcpu count of this domain

五、模板机制作以及克隆

# 虚拟机内部操作# 1.禁用Selinux    setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config# 2.卸载防火墙以及NetworkManager    systemctl stop firewalld NetworkManager    systemctl disable firewalld NetworkManager    systemctl mask firewalld NetworkManager    systemctl start serial-getty@ttyS0.service    systemctl enable serial-getty@ttyS0.service# 3.修改网卡    cat << EOF >>/etc/sysconfig/network-scripts/ifcfs-eth0    DEVICE="eth0"    ONBOOT="yes"    TYPE="Ethernet"    BOOTPROTO="static"    IPADDR="192.168.100.2"    NETMASK="255.255.255.0"    GATEWAY="192.168.100.1"    EOF# 4.禁用空路由 使机器只能有一个网关    echo 'NOZEROCONF="yes"' > /etc/sysconfig/network# 5.添加console 可以直接使用 virsh console host    vi /etc/default/grub    GRUB_SERIAL_COMMAND="serial --unit=1 --speed=115200"    GRUB_CMDLINE_LINUX="biosdevname=0 net.ifnames=0 console=tty0 console=ttyS0,115200"    grub2-mkconfig -o /boot/grub2/grub.cfg# 6.修改挂载    sed -i 'UUID/c/dev/vda1/ defaults 0 0' /etc/fstab     echo 'GRUB_DISABLE_LINUX_UUID="true"' >> /etc/default/grub    echo 'GRUB_ENABLE_LINUX_LABEL="true"' >> /etc/default/grub     grub2-mkconfig -o /boot/grub2/grub.cfg# 7.安装分区扩容软件    yum install -y cloud-utils-growpart    echo 'LANG=en_US.UTF-8    growpart /dev/vda 1    xfs_growfs /    sed -i '/LANG=en_US.UTF-8/d' /etc/rc.d/rc.local    sed -i '/^growpart /dev/vda 1$/d' /etc/rc.d/rc.local    sed -i '/xfs_growfs //d' /etc/rc.d/rc.local    ' > /etc/rc.d/rc.local    chmod +x /etc/rc.d/rc.local# 8.安装常用软件    yum install -y net-tools vim lrzsz tree screen lsof tcp wget tcpdump nc mtr nmap openssl-devel ntpdate glances bash-completion psmisc# 9.配置文件名描述符    echo "* soft nofile 65535" >> /etc/security/limits.conf    echo "* hard nofile 65535" >> /etc/security/limits.conf    echo "* soft nproc 65535" >> /etc/security/limits.conf    echo "* hard nproc 65535" >> /etc/security/limits.conf# 10.历史命令    echo 'export HISTTIMEFORMAT=" %F %T `whoami` "' >> /etc/profilesource /etc/profile# 11.内核参数优化    cat << EOF >> /etc/sysctl.conf    # 表示套接字由本端要求关闭,这个参数决定了它保持在FIN-wAIT-2状态的时间,默认值是60秒,建议调整为2,该参数对应系统路径为:/proc/sys/net/ipv4/tcp_fin_timeout 60    net.ipv4.tcp_fin_timeout = 2    # 表示开启TCP链接中TIME_WAIT sockets的快速回收,该参数对应系统路径为:/proc/sys/net/ipv4/tcp_tw_recycle,默认为0 表示关闭,不建议开>启,因为nat网络问题    net.ipv4.tcp_tw_reuse = 1    # reuse和recycle这俩个参数是为防止生产环境下web,squid等业务服务器time_wait网络状态数量过多设置的    net.ipv4.tcp_tw_recycle = 0    #表示开启SYN Cookies功能,当出现SYN等待队列溢出时,启用Cookies来处理,可防范少量SYN攻击,该参数对应系统路径为:/proc/sys/net/ipv4/tcp_syscookies,默认为1,表示开启    net.ipv4.tcp_syncookies = 1    # 关闭ipv6    net.ipv6.conf.all.disable_ipv6 = 1    net.ipv6.conf.default.disable_ipv6 = 1    # 避免放大攻击    net.ipv4.icmp_echo_ignore_broadcasts = 1    #允许系统打开的端口范围,不建议从1024开始,因为某些端口会存在10000以内。一般情况下已够用。    net.ipv4.ip_local_port_range = 10000 65000    EOF# 清理模板机# 清理模板机    history -c    ssh-copy-id 虚拟机IP    virsh shutdown 虚拟机名    virt-sysprep -d 虚拟机名    virsh undefine 虚拟机名# 定制化清理    virt-sysprep --list-operations    virt-sysprep -a /data/kvm/template/tpl.qcow2  --hostname localhost --root-password password:testpwd    # 克隆脚本作者是我徒弟# 仅供大家参考    # 可修改区域TEMPLATEDIR=/vhost/template/IMGDIR=/vhost/images/XMLDIR=/vhost/xml/NETDIR=/vhost/network/# 后端盘 && 网络function imgCreate(){  while true  do    read -e -p '请输入克隆主机名:'  VMNAME    [[ ${VMNAME} = 'q' || ${VMNAME} = 'quit' || ${VMNAME} = 'exit' ]] && exit 0    if [[ ${VMNAME} =~ ^[a-z] ]];then      [[ -f ${IMGDIR}${VMNAME}.qcow2  ]] && echo "${VMNAME} 已存在,请重试" && continue      eval "qemu-img create -f qcow2 -b ${TEMPLATEDIR}template.qcow2 ${IMGDIR}${VMNAME}.qcow2" &> /dev/null    fi    break  done    } # XML修改function xmlModify(){  eval "cp ${TEMPLATEDIR}template.xml  ${XMLDIR}${VMNAME}.xml"  $(sed -i "s/centos7/${VMNAME}/g"  ${XMLDIR}${VMNAME}.xml)  $(sed -i "#source#s###" template.xml)  virsh define ${XMLDIR}${VMNAME}.xml &> /dev/null}# 配置IPfunction ipConfigure(){  read -e -p '请输入克隆IP地址:'  VMNET  [[ ${VMNET} = 'q' || ${VMNET} = 'quit' || ${VMNET} = 'exit' ]] && exit 0  $(cat ${TEMPLATEDIR}template.eth0 > ${NETDIR}ifcfg-eth0)  $(sed -i "s/IPADDR=/IPADDR=${VMNET}/g" ${NETDIR}ifcfg-eth0)  eval "virt-copy-in -d ${VMNAME} ${NETDIR}ifcfg-eth0 /etc/sysconfig/network-scripts/"  eval "virsh start ${VMNAME}" &> /dev/null  HOSTS="${VMNET}  ${VMNAME}"  eval " echo ${HOSTS}  >> /etc/hosts"}# 返回function msgReturn(){  eval "clear"  echo -e "033[36m      /********************************************************   033[0m"  echo -e "033[31m                虚拟机名字: ${VMNAME}  033[0m"  echo -e "033[31m                虚拟机地址: ${VMNET}  033[0m"  echo -e "033[31m                虚拟机密码: 1  033[0m"  echo -e "033[31m                虚拟机配置: 2C4G  033[0m"  echo -e "033[31m                虚拟机连接: ssh ${VMNET}  033[0m"  echo -e "033[36m       ********************************************************/   033[0m"  sleep 5  eval "clear"}# 主模块function main(){    imgCreate  xmlModify  ipConfigure  msgReturn  }trap main EXIT

Libvirt 调优

一、CPU缓存区域# 对于物理 CPU,同一个 core 的 threads 共享 L2 Cache,同一个 socket 的 cores 共享 L3 cache,所以虚拟机的 vcpu 应当尽可能在同一个 core 和 同一个 socket 中,增加 cache 的命中率,从而提高性能。IBM 测试过,合理绑定 vcpu 能给 JVM 来的 16% 的性能提升[2]。# 实现策略:虚拟机 vcpu 尽可能限定在一个 core 或者一个 socket 中。例如:当 vcpu 为 2 时,2 个 vcpu 应限定在同一个 core 中,当 vcpu 大于 2 小于 12 时,应限定在同一个 socket 中4       # cpuset 限定 vcpu二、NUMA调整# 2 个 vcpu 分别绑定到不同 numa 节点的非超线程核上和分配到一对相邻的超线程核上的性能相差有 30%~40%(通过 SPEC CPU2006 工具测试)。可见,同一个虚拟机的 vcpu 需限定在同一个 NUMA 节点,并且分配该 NUMA 节点下的内存给虚拟机,保证虚拟机尽可能访问 local memory 而非 remote memory。三、磁盘IO调整# kvm 支持多种虚拟机多种 IO Cache 方式:writeback, none, writethrough 等。性能上:writeback > none > writethrough,安全上 writeback < none < writethrough。For the best storage performance on guest operating systems that use raw disk volumes or partitions, completely avoid the page cache on the host[2].# writeback mode在mail server这种小文件 高io的服务器上,其性能是很差的,none模式大部分情况要比writethrough性能稍好一点,所以选择none。  # cache 可为 writeback, none, writethrough,directsync,unsafe 等  ...# 半虚拟化io设备,针对cpu和内存,kvm全是全虚拟化设备,而针对磁盘和网络,则出现了半虚拟化io设备,目的是标准化guest和host之间数据交换接口,减少交互流程和内存拷贝,提升vm io效率,可以在libvirt xml中设置,disk中加入# 异步读写,分别包括Native aio: kernel AIO 和 threaded aio: user space AIO emulated by posix thread workers,内核方式要比用户态的方式性能稍好一点,所以一般情况都选择native# deadline:per-device IO queue,较好实时性,较好aggregate throughput,不够公平,当某些vm有大量io操作,占用了大量io资源时,其它后加入的vm很有可能抢占不到io资源。echo cfq > /sys/block/sdb/queue/scheduler四、关闭内存共享# 1.禁止某个 Guest 与其它 Guest 共享内存,XML 文件可配置为# 2. 禁止所有 Guest 直接共享内存,Host 配置为echo 0 > /sys/kernel/mm/ksm/pages_sharedecho 0 > /sys/kernel/mm/ksm/pages_sharing五、打开透明大页# 1) 允许某个 Guest 开启透明大页Guest XML Format echo 25000 > /pro c/sys/vm/nr_hugepagesmount -t hugetlbfs hugetlbfs /dev/hugepagesservice libvirtd restart# 2) 允许 Host 中所有 Guest 开启透明大页echo always > /sys/kernel/mm/transparent_hugepage/enabledecho never > /sys/kernel/mm/transparent_hugepage/defragecho 0 > /sys/kernel/mm/transparent_hugepage/khugepaged/defrag

kvm虚拟机_关于虚拟机管理KVM,基本操作都在这里,懒人必备,拿去收藏相关推荐

  1. 安卓okhttp上传jason和图片_推荐3款人工智能图片处理app,懒人必备,方便好用

    人工智能这几年发展迅速,所以各行各业都多多少少被它赋能了,一般通过科技软件来处理:今天就给大家介绍几款人工智能图片处理的软件,功能各有不同,回复1013获取下载链接. 马卡龙玩图 安卓|iOS 这是一 ...

  2. virsh 关机_使用virsh管理KVM虚拟机

    使用QEMU/KVM虚拟化平台启动虚拟机,通常需要手动输入一行很长的命令,里面可能有几十个参数,要想启动多个虚拟机,以及监视多个虚拟机运行状态会非常困难,这时候就需要virsh这样一个虚拟机的管理工具 ...

  3. pd17虚拟机+懒人必备win系统直装包使用教程

    PD17虚拟机怎么利用PD启动器激活?Mac电脑安装双系统必备Parallels Desktop 17虚拟机,pd17支持M1,支持macOS12.0,今天教大家如何利用PD启动器来实现PD17无限试 ...

  4. 网页一键生成app软件_施工方案不会写?4个工程人必备的自动生成软件,一键生成超便利!...

    对于工程人来说,施工方案和技术交底的编制是基本功,但对于新人来说,编制和整理起来还是有一定难度的. 今天整理了工程人必备的自动生成软件,可以自动生成技术交底.施工方案.施工横道图和施工图等,安装快速, ...

  5. 光子虚拟机_光速虚拟机app下载-光速虚拟机安卓版 v1.1.1 - 安下载

    光速虚拟机app是一款非常实用的安卓虚拟手机工具,这款光速虚拟机安卓版有着强大的功能,可以完全让用户体验两个手机的快感,而且还能够全面保证用户信息的隐私安全,让你享受更好的虚拟机服务体验:该软件不需要 ...

  6. 安卓虚拟机_安卓虚拟机(*New*)v1.1.31去广告/去推荐/Mod/精简/VIP版

    软件简介: VMOS(虚拟大师)是一款以Virtual Machine(简称VM,即虚拟机)技术为主的APP(安卓应用)软件.通过VM技术,把开源的安卓系统(支持任意版本),无需root权限,以普通应 ...

  7. 全屏 虚拟机_不用虚拟机直接在线用的 Linux,统统都在这里!

    玩过 Linux 的同学,几乎都用过虚拟机!然而,你们肯定不晓得?不用装虚拟机,也有体验 Linux 的办法.下面一起来看看吧,到底如何不用虚拟机,照样能玩 Linux. 其实方法很简单,你只需要拥有 ...

  8. mysql2008安装虚拟机_在虚拟机xp系统中安装SQL Server2008的方法

    许多用户会使用虚拟机安装xp系统来使用,而有时候不想在主机中安装一些软件,那么在虚拟机中安装就是最好的选择,比如有用户想要在虚拟机xp系统中安装SQL Server2008,但是却不知道要怎么操作,现 ...

  9. esxi显卡给2个虚拟机_使用虚拟机ESXI,显卡直通VM,使一台实体机虚拟成HTPC、WEB服务器、NAS服务器等经验 - 小众知识...

    什么是ESXI?其实是VMWARE的企业版,ESXI自己就是一套操作系统,不用装WINDOW,也不用装LINUX,效率能达到实体机的95%以上.可以把一台虚拟成几台PC,各自发挥自己的用途. 利用ES ...

  10. 安卓虚拟机_安卓虚拟机雷电模拟器

    点击上方蓝字关注我们! 各位小狐,大家晚上好啊! 前不久,收到了一个小狐的私信,问我们有没有PC端的Android虚拟机可以使用,我们这边找了一些比较受欢迎的,查找了一些资源,目前安装简单,效果经过小 ...

最新文章

  1. 20165330 结对编程项目-四则运算 第一周
  2. 为什么我们不愿意读论文,原来都是作者害的
  3. JavaWeb总结(六)
  4. 教你开发省电的 iOS app(WWDC17 观后)
  5. java readline 实现_基于自定义BufferedReader中的read和readLine方法
  6. [知识图谱实战篇] 四.HTML+D3+CSS绘制关系图谱
  7. 编程语言的发展趋势及未来方向(1):历史回顾及趋势概述
  8. Java EE6装饰器:在注入时装饰类
  9. Tkinter图片按钮
  10. Java基础语法学习11——流程控制(循环)
  11. And seeing the whole machine market
  12. java http 面试题_Java面试高级篇—说说TCP,UDP和socket,Http之间联系和区别面试题12期...
  13. Python基础学习--基于尚硅谷python教学视频
  14. 技能Get·手动更新HP笔记本BIOS过程记录
  15. oracle数据库常用操作语句大全,Oracle 数据库常用操作语句大全
  16. 智能优化算法的常用改进方法
  17. 思科模拟器Cisco Packet Tracer菜单栏——参数选择
  18. php 后台实现订单支付成功后语音提示
  19. 大专什么专业学c语言,大专专业计算机网络技术学不学编程
  20. 不用光盘,教你一招让win10系统恢复出厂设置

热门文章

  1. IMP 导入数据报错 OCI-21500 OCI-22275
  2. joomla2.5 常用组件
  3. ORACLE11G 字符集更改(这里更改为AL32UTF8)
  4. PHP中PDO方法fetch参数问题
  5. 智能优化算法应用:基于GWO优化的指数熵图像多阈值分割 - 附代码
  6. 基于AE+C#的栅格IDW插值的实现
  7. ENVI入门系列教程---二、图像分析---14.基本光谱分析
  8. day2--numpy
  9. 地图相关知识和地图打印色彩差异解决办法
  10. Vite Vue项目加载Cesium模块