深入了解OpenStack:创建定制化QCOW2格式镜像的完全指南
OpenStack 创建自定义的QCOW2格式镜像
前言
建议虚机网络配置为 NAT 或 桥接,因为未来 KVM虚机 需要借助 虚机 的外网能力进行联网安装软件包
虚机在启动前,必须在 VMware Workstation 上为其开启虚拟化引擎 虚拟化 Intel VT-x/EPT 或 AMD-V
安装kvm
虚拟机安装虚拟化软件包
# 挂载光盘
[root@localhost ~]# mount /dev/cdrom /mnt
mount: /dev/sr0 is write-protected, mounting read-only
[root@localhost ~]# ls /mnt/
CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7
EFI images Packages RPM-GPG-KEY-CentOS-Testing-7
EULA isolinux repodata TRANS.TBL# 配置本地YUM源
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
CentOS-Base.repo CentOS-fasttrack.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-Media.repo CentOS-x86_64-kernel.repo
CentOS-Debuginfo.repo CentOS-Sources.repo
[root@localhost yum.repos.d]# mkdir bak
[root@localhost yum.repos.d]# mv *.repo bak/
[root@localhost yum.repos.d]# ls
bak
[root@localhost yum.repos.d]# vim source.repo
[root@localhost yum.repos.d]# cat source.repo
[source]
name = source
baseurl = file:///mnt/
gpgcheck = 0
[root@localhost yum.repos.d]# yum clean all
[root@localhost yum.repos.d]# yum repolist all# 安装虚拟化软件包及虚拟机镜像管理工具
[root@localhost ~]# yum grouplist
Loaded plugins: fastestmirror, langpacks
There is no installed groups file.
Maybe run: yum groups mark convert (see man yum)
Loading mirror speeds from cached hostfile
source | 3.6 kB 00:00:00
(1/2): source/group_gz | 153 kB 00:00:00
(2/2): source/primary_db | 3.3 MB 00:00:00
Available Environment Groups:Minimal InstallCompute NodeInfrastructure ServerFile and Print ServerBasic Web ServerVirtualization HostServer with GUIGNOME DesktopKDE Plasma WorkspacesDevelopment and Creative Workstation
Available Groups:Compatibility LibrariesConsole Internet ToolsDevelopment ToolsGraphical Administration ToolsLegacy UNIX CompatibilityScientific SupportSecurity ToolsSmart Card SupportSystem Administration ToolsSystem Management
Done
[root@localhost ~]# yum groupinstall -y "Virtualization*"
[root@localhost ~]# yum install -y libguestfs-tools-c.x86_64
创建kvm虚拟机
# 创建目录上传ISO镜像
[root@localhost ~]# mkdir /iso
[root@localhost ~]# cd /iso/
# 将 CentOS7镜像 上传到 /iso 目录下
[root@localhost iso]# ls
CentOS-7-x86_64-DVD-2009.iso# 创建 kvm虚拟机 使用的磁盘文件
[root@localhost iso]# qemu-img create -f qcow2 /iso/centos7.qcow2 15G
Formatting '/iso/centos7.qcow2', fmt=qcow2 size=16106127360 encryption=off cluster_size=65536 lazy_refcounts=off # 创建 kvm 虚拟机
[root@localhost ~]# virt-install \
--name centos7 \
--disk path=/iso/centos7.qcow2 \
--vcpus 1 \
--memory 2048 \
--location /iso/CentOS-7-x86_64-DVD-2009.iso \
--network network=default
安装kvm虚拟机
语言选择
自动分区
网络及主机名
注意:当开启网络后,必须可以通过 DHCP 自动获取到 IP 地址,如下图
配置ROOT密码
默认采用最小化 minimal 安装
重启并测试网络
重启 kvm 创建的虚拟机,并以 root 身份登录,测试 kvm 虚机 能否连通外网
配置KVM虚拟机
修改KVM虚拟机网络配置文件
注意:是
kvm
创建的虚拟机
# 修改 kvm 虚拟机网卡配置文件,使其只包括以下 4 行内容
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens3
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens3
TYPE="Ethernet"
BOOTPROTO="dhcp"
DEVICE="ens3"
ONBOOT="yes"
安装 cloud-int 软件包
根据 上边 测试,kvm 虚机可正常连通外网,此时直接在线安装软件包即可。目的是为了可以获取到客户自定义元数据信息,如主机名及root密码等。
[root@localhost ~]# yum install -y cloud-utils-growpart cloud-init
Loaded plugins: fastestmirror
Determining fastest mirrors* base: mirrors.bfsu.edu.cn* extras: mirrors.jlu.edu.cn* updates: mirrors.jlu.edu.cn
base | 3.6 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/4): base/7/x86_64/group_gz | 153 kB 00:00:00
(2/4): extras/7/x86_64/primary_db | 250 kB 00:00:00
(3/4): base/7/x86_64/primary_db | 6.1 MB 00:00:00
(4/4): updates/7/x86_64/primary_db | 22 MB 00:00:01
.................................................
Complete!
编辑 cloud.cfg 文件
编辑
/etc/cloud/cloud.cfg
配置文件,在cloud_init_modules
下添加以下内容
#添加内容
- resolv-conf# 最终配置文件效果
[root@localhost ~]# vi /etc/cloud/cloud.cfg
[root@localhost ~]# cat /etc/cloud/cloud.cfg
users:- defaultdisable_root: 1
ssh_pwauth: 0mount_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: falsecloud_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- runcmdcloud_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-changesystem_info:default_user:name: centoslock_passwd: truegecos: Cloud Usergroups: [adm, systemd-journal]sudo: ["ALL=(ALL) NOPASSWD:ALL"]shell: /bin/bashdistro: rhelpaths:cloud_dir: /var/lib/cloudtemplates_dir: /etc/cloud/templatesssh_svcname: sshd# vim:syntax=yaml
编辑network文件
编辑
/etc/sysconfig/network
配置文件,使其包含以下内容,避免访问 EC2 元数据服务时出现问题。
#添加内容
NOZEROCONF=yes# 最终配置文件效果
[root@localhost ~]# vi /etc/sysconfig/network
[root@localhost ~]# cat /etc/sysconfig/network
# Created by anaconda
NOZEROCONF=yes# 执行命令使参数生效
[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-1160.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-1160.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-ccaf1e6485aa46c3868726e2bb360253
Found initrd image: /boot/initramfs-0-rescue-ccaf1e6485aa46c3868726e2bb360253.img
done
编辑 grub文件
编辑
/etc/default/grub
配置文件,使其包含以下引导选项内容,为了确保控制台的信息出现在 dashboard 的日志标签页中,以及 nova console-log 日志的输出内容中。
#添加内容
GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8"# 最终配置文件效果
[root@localhost ~]# vi /etc/default/grub
[root@localhost ~]# 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="crashkernel=auto 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"
关闭KVM虚拟机
[root@localhost ~]# init 0
创建QCOW2镜像
注意:以下步骤在 虚拟机 中操作,不是 kvm 虚拟机
重置并清理镜像
[root@localhost ~]# virsh list --allId Name State
----------------------------------------------------- centos7 shut off[root@localhost ~]# virt-sysprep -d centos7
[ 0.0] Examining the guest ...
[ 8.8] Performing "abrt-data" ...
[ 8.8] Performing "backup-files" ...
[ 9.5] Performing "bash-history" ...
[ 9.6] Performing "blkid-tab" ...
[ 9.6] Performing "crash-data" ...
[ 9.6] Performing "cron-spool" ...
[ 9.6] Performing "dhcp-client-state" ...
[ 9.6] Performing "dhcp-server-state" ...
[ 9.6] Performing "dovecot-data" ...
[ 9.6] Performing "logfiles" ...
[ 9.6] Performing "machine-id" ...
[ 9.7] Performing "mail-spool" ...
[ 9.7] Performing "net-hostname" ...
[ 9.7] Performing "net-hwaddr" ...
[ 9.7] Performing "pacct-log" ...
[ 9.7] Performing "package-manager-cache" ...
[ 9.7] Performing "pam-data" ...
[ 9.7] Performing "passwd-backups" ...
[ 9.7] Performing "puppet-data-log" ...
[ 9.7] Performing "rh-subscription-manager" ...
[ 9.7] Performing "rhn-systemid" ...
[ 9.7] Performing "rpm-db" ...
[ 9.7] Performing "samba-db-log" ...
[ 9.7] Performing "script" ...
[ 9.7] Performing "smolt-uuid" ...
[ 9.8] Performing "ssh-hostkeys" ...
[ 9.8] Performing "ssh-userdir" ...
[ 9.8] Performing "sssd-db-log" ...
[ 9.8] Performing "tmp-files" ...
[ 9.8] Performing "udev-persistent-net" ...
[ 9.8] Performing "utmp" ...
[ 9.8] Performing "yum-uuid" ...
[ 9.8] Performing "customize" ...
[ 9.8] Setting a random seed
[ 9.8] Setting the machine ID in /etc/machine-id
[ 9.8] Performing "lvm-uuids" ...
创建并压缩镜像
# 查找 centos 实例对应的磁盘文件
[root@localhost ~]# virsh domblklist centos7
Target Source
------------------------------------------------
hda /iso/centos7.qcow2
hdb -# 创建并清理压缩镜像
[root@localhost ~]# virt-sparsify --compress /iso/centos7.qcow2 /tmp/centos7-cloud.qcow2
[ 0.0] Create overlay file in /tmp to protect source disk
[ 0.1] Examine source disk
[ 1.8] Fill free space in /dev/centos/root with zero100% ⟦▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒⟧ 00:00
[ 14.7] Clearing Linux swap on /dev/centos/swap
[ 15.6] Fill free space in /dev/sda1 with zero
[ 17.1] Copy to destination and make sparse
[ 73.5] Sparsify operation completed with no errors.
virt-sparsify: Before deleting the old disk, carefully check that the
target disk boots and works correctly.
测试镜像启动
注册镜像
将镜像 centos-cloud.qcow2 注册到 OpenStack 平台
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FkX5NFX4-1693186720941)(./assets/image-20230819223145255.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xsHpmi7t-1693186720941)(./assets/image-20230819223211819.png)]
创建云主机类型(规格)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PCuQXjMm-1693186720941)(./assets/image-20230819223259314.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UC9OIFyD-1693186720941)(./assets/image-20230819223322384.png)]
开启添加ROOT密码
开启添加 ROOT 密码后,可通过命令行或 WebUI 界面进行 root 密码自定义
控制节点
在
/etc/openstack-dashboard/local_settings
文件中,把can_set_password
参数的值设为 True
[root@controller ~]# vim /etc/openstack-dashboard/local_settings
...
'can_set_password': True
...
在
/etc/nova/nova.conf
文件中,把 inject_password 参数的值设为 True
[root@controller ~]# vim /etc/nova/nova.conf
...
'can_set_password': True
...
重启服务
[root@controller ~]# systemctl restart openstack-nova-compute.service
[root@controller ~]# systemctl restart httpd.service
计算节点
在计算节点上的
/etc/nova/nova.conf
文件中,把 inject_password 参数的值设为 True
[root@computer ~]# vim /etc/nova/nova.conf
...
inject_password=true
...
重启服务
[root@computer ~]# systemctl restart openstack-nova-compute.service
发放云主机测试
注意:网络及路由需存在,务必保证路由及网关存在,否则无法获取到客户自定义主机名
观察启动流程及尝试登录,测试镜像正确无误
相关文章:
深入了解OpenStack:创建定制化QCOW2格式镜像的完全指南
OpenStack 创建自定义的QCOW2格式镜像 前言 建议虚机网络配置为 NAT 或 桥接,因为未来 KVM虚机 需要借助 虚机 的外网能力进行联网安装软件包 虚机在启动前,必须在 VMware Workstation 上为其开启虚拟化引擎 虚拟化 Intel VT-x/EPT 或 AMD-V 安装kvm …...
【Java 中级】一文精通 Spring MVC - 数据格式化器(六)
👉博主介绍: 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主 ⛪️ 个人社区&#x…...
Linux内核学习(十二)—— 页高速缓存和页回写(基于Linux 2.6内核)
目录 一、缓存手段 二、Linux 页高速缓存 三、flusher 线程 Linux 内核实现了一个被叫做页高速缓存(page cache)的磁盘缓存,它主要用来减少对磁盘的 I/O 操作。它是通过把磁盘中的数据缓存到内存中,把对磁盘的访问变为对物理内…...
大数据-玩转数据-Flink窗口函数
一、Flink窗口函数 前面指定了窗口的分配器, 接着我们需要来指定如何计算, 这事由window function来负责. 一旦窗口关闭, window function 去计算处理窗口中的每个元素. window function 可以是ReduceFunction,AggregateFunction,or ProcessWindowFunction中的任意一种. Reduc…...
Docker网络-探索容器网络如何相互通信
当今世界,企业热衷于容器化,这需要强大的网络技能来正确配置容器架构,因此引入了 Docker Networking 的概念。Docker 是一种容器化平台,允许您在独立、轻量级的容器中运行应用程序和服务。Docker 提供了一套强大的网络功能&#x…...
ESP32-CAM模块Arduino环境搭建测试
ESP32-CAM模块Arduino环境搭建测试 一.ESP32OV2640摄像头模块CameraWebServer视频查看 二.测试ESP32-CAM(后续称cam模块)代码是否上传执行成功测试 const int led0 12; const int led1 13;void setup() {// put your setup code here, to run once:pinMode(led0, OUTPUT);pin…...
webassembly001 webassembly简述
WebAssembly 官方地址:https://webassembly.org/相关历史 https://en.wikipedia.org/wiki/WebAssembly https://brendaneich.com/2015/06/from-asm-js-to-webassembly/WebAssembly(缩写为Wasm)是一种基于堆栈的虚拟机的二进制指令格式。Wasm 被设计为编…...
vue 使用C-Lodop打印小票
先从官网下载js文件 https://www.lodop.net/LodopDemo.html 打开安装程序,一直下一步既可,我这边已经安装过就不演示了。 // 引入 import { getLodop } from /utils/CLodopfuncs.js;// 使用 let LODOP getLodop()let Count LODOP.GET_PRINTER_COUNT…...
【C++进阶(二)】STL大法--vector的深度剖析以及模拟实现
💓博主CSDN主页:杭电码农-NEO💓 ⏩专栏分类:C从入门到精通⏪ 🚚代码仓库:NEO的学习日记🚚 🌹关注我🫵带你学习C 🔝🔝 vector 1. 前言2. 熟悉vector的接口函数2.1 vec…...
1. import pandas as pd 导入库
【目录】 文章目录 1. import pandas as pd 导入库1. pandas库的概念2. 导入pandas库2.1 常规导入2.2 别名导入 3. 别名的作用4. 课堂练习 【正文】 1. import pandas as pd 导入库 【学习时间】 10分钟 1. pandas库的概念 pandas:熊猫panda的复数, …...
DMK5框选变量之后不显示其他位置的此变量高亮
使用软件MDK5.3.8版本 如下在2的位置选择之后,其他同样的变量没有高亮,因为1的原因折叠了; 展开折叠之后就可以了...
0061__Appium
Appium Documentation - Appium Documentation APP自动化测试(3)-Appium Inspector介绍_六天测试工程师的博客-CSDN博客 https://github.com/appium/appium-inspector https://github.com/appium/appium-desktop https://github.com/appium/appium...
【DEVOPS】需求跟踪管理全面落地
0. 目录 1. 现状/背景2. 需求管理存在的问题3. 改进思路/措施4. 所谓"禅道尚未普及/铺开"5. 最后6. 相关 1. 现状/背景 近期又被领导问到"如何对项目过程中的需求进行量化和跟踪管理"。这真是一个狗皮膏药似的问题,反反复复地,隔一…...
算法修炼Day57|647. 回文子串 ● 516.最长回文子序列
LeetCode:647. 回文子串 647. 回文子串 - 力扣(LeetCode) 1.思路 暴力思路见对应代码… 动规解法:画图推导动规公式,当前状态由左侧和左下角推出,所以首层应该采用倒序的方式,内部采用正序的方式。 2.…...
呈现数据的精妙之道:选择合适的可视化方法
在当今数据时代,数据可视化已成为理解和传达信息的重要手段。然而,选择适合的数据可视化方法对于有效地呈现数据至关重要。不同的数据和目标需要不同的可视化方法,下面我们将探讨如何选择最佳的数据可视化方法来呈现数据。 1. 理解数据类型&a…...
数据结构(Java实现)-java对象的比较
元素的比较 基本类型的比较 在Java中,基本类型的对象可以直接比较大小。 对象比较的问题 Java中引用类型的变量不能直接按照 > 或者 < 方式进行比较 默认情况下调用的就是equal方法,但是该方法的比较规则是:没有比较引用变量引用对象的…...
Wolfram Mathematica 13 for Mac 数学计算工具
Wolfram Mathematica for Mac是一款功能强大、划时代的科学计算软件。它结合了数字和符号计算引擎、图形系统、编程语言、文本系统以及与其他应用程序的高级连接,在许多功能方面处于世界领先地位,截至2009年,它是使用最广泛的数学软件之一。人…...
系统架构设计高级技能 · Web架构
现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。 Now everything is for the future of dream weaving wings, let the dream fly in reality. 点击进入系列文章目录 系统架构设计高级技能 Web架构 一、Web架构介绍1.1 Web架构涉及技术1.2 单台服务…...
再写CentOS7升级OpenSSL-1.0.1U
本文在CentOS7.4以及TencentOS 2.4上测试通过。 原系统自带OpenSSL 1.0.2k-fips。 编译安装方法跟之前的没啥区别。 从官网下载1.0.1u版https://www.openssl.org/source/ 使用tar解包 tar xfz openssl-1.0.1u.tar.gz 依次执行如下: cd openssl-1.0.1u ./con…...
HBase--技术文档--基本概念--《快速扫盲》
官网 Apache HBase – Apache HBase™ Home 阿里云hbase 云数据库HBase_大数据存储_订单风控_数据库-阿里云 云数据库 HBase-阿里云帮助中心 基本概念 HBase是一种分布式、可扩展、支持海量数据存储的NoSQL数据库。它基于Hadoop,采用列式存储方式,可…...
如何利用SFTP协议远程实现更安全的文件传输 ——【内网穿透】
🎬 鸽芷咕:个人主页 🔥 个人专栏: 《高效编程技巧》《cpolar》 ⛺️生活的理想,就是为了理想的生活! 文章目录 1. 安装openSSH1.1 安装SSH1.2 启动ssh 2. 安装cpolar2.1 配置termux服务 3. 远程SFTP连接配置3.1 查看生成的随机公…...
深度学习8:详解生成对抗网络原理
目录 大纲 生成随机变量 可以伪随机生成均匀随机变量 随机变量表示为操作或过程的结果 逆变换方法 生成模型 我们试图生成非常复杂的随机变量…… …所以让我们使用神经网络的变换方法作为函数! 生成匹配网络 培养生成模型 比较基于样本的两个概率分布 …...
sql入门-多表查询
案例涉及表 ----------------------------------建表语句之前翻看之前博客文章 多表查询 -- 学生表 create table studen ( id int primary key auto_increment comment id, name varchar(50) comment 姓名, no varchar(10) comment 学号 ) comment 学生表; insert…...
软考A计划-网络工程师-必考知识点-上
点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 👉关于作者 专注于Android/Unity和各种游…...
kafka复习:(17)seekToBeginning的用法
从分区的开始进行消费,因为kafka会定期清理历史数据,所以分区开始的位移不一定为0。seekToBeginning只是从目前保留的数据中最小的offset进行消费 package com.cisdi.dsp.modules.metaAnalysis.rest.kafka2023;import org.apache.kafka.clients.consume…...
C# textBox1.Text=““与textBox1.Clear()的区别
一、区别 textbox.Text "" 和 textbox.Clear() 都可以用于清空文本框的内容,但它们之间有一些细微的区别。 textbox.Text "": 这种方式会将文本框的 Text 属性直接设置为空字符串。这样会立即清除文本框的内容,并将文本框显示为空…...
CnetSDK .NET OCR SDK Crack
CnetSDK .NET OCR SDK Crack CnetSDK.NET OCR库SDK是一款高度准确的.NET OCR扫描仪软件,用于使用手写、文本和其他符号等图像进行字符识别。它是一款.NET OCR库软件,使用Tesseract OCR引擎技术,可将字符识别准确率提高99%。通过将此.NET OCR扫…...
Python最新面试题汇总及答案
一、基础部分 1、什么是Python?为什么它会如此流行?Python是一种解释的、高级的、通用的编程语言。Python的设计理念是通过使用必要的空格与空行,增强代码的可读性。它之所以受欢迎,就是因为它具有简单易用的语法 2、为什么Pytho…...
设计模式(单例模式,工厂模式),线程池
目录 什么是设计模式? 单例模式 饿汉模式 懒汉模式 工厂模式 线程池 线程池种类 ThreadPoolExcutor的构造方法: 手动实现一个线程池 什么是设计模式? 计算机行业程序员水平层次不齐,为了让所有人都能够写出规范的代码,于是就有了设计模式,针对一些典型的场景,给出一…...
在mybatis中的mapper.xml中如何使用parameterType实现方法单个传参,对象传参,多参数传参.
在MyBatis的mapper.xml文件中,可以使用parameterType属性来指定方法的参数类型。parameterType属性用于指定传递给映射方法的参数类型,这将影响到MyBatis在映射方法执行时如何处理参数。 以下是三种不同情况下如何在mapper.xml中使用parameterType实现方…...
广州最新今天的消息/seo的名词解释
黑客技术点击右侧关注,了解黑客的世界!推荐↓↓↓ 长按关注?【16个技术公众号】都在这里!涵盖:程序员大咖、源码共读、程序员共读、数据结构与算法、黑客技术和网络安全、大数据科技、编程前端、Java、Python、Web编程开发、Andr…...
网站改版设计要多久/百度搜索关键词技巧
留学监理服务网东北大学计算机工程(本硕连读) - Computer Engineering基本信息东 北 大 学 - Northeastern 工程学院 - 电子与计算机工程所属学校 所在院系University 系计算机工程(本硕连读) -专业名称 学历层次 本科Computer Engineering工程与技术 计算机与信息科学授予学位…...
哪个网站可以做1040/排名优化公司口碑哪家好
转载于:https://blog.51cto.com/williamliuwen/1686493...
wordpress怎么加统计代码/seo综合查询是什么意思
EDUSOHO踩坑笔记之二十四:缓存Redis Reids 即可当做数据库使用,也可当做缓存使用。启用 Redis 服务,需安装PHPRedis 扩展。框架集成了 Redis 服务,可通过以下方式启用: $biz->register(new Biz\Frameowrk\Provider…...
网站开发技术文档/站长工具seo综合查询可以访问
2019独角兽企业重金招聘Python工程师标准>>> 昨天在win7下尝试了三种方法安装linux,只有最笨的一种成功了……简单说一下吧 第一种:使用EasyBCD安装 1、将硬盘分出一个小于32G的空间,并将其格式化为FAT32格式(要格式化…...
龙岩做网站开发价格/挖掘关键词工具
最近在学习在windows平台用flask框架提供Restful API服务,需要使得flask的windows应用能够开机自动运行,并且后台运行,所以通过service来实现。 首先尝试的是在自己派生的serivice类的中直接调用 create_app(debugTrue).run(host0.0.0.0, po…...