DBA运维小技巧之存储篇-Oracle服务器根目录满了怎么处理(2)迁移至新存储空间

news2024/9/20 10:53:52

1 前情提要

话说上次DBA小倩通过删除home lv,把空间扩给了/分区,问题暂时得到了解决。

没过几天,领导找到小倩下达任务,客户说数据库在本地磁盘空间太小了又快要满了,由于之前用的服务器本地磁盘,性能也比较差,现在不想扩展服务器本地硬盘了。正好这台服务器有HBA卡,客户从别的高端存储上划了个2TB的LUN过来,映射给这台数据库服务器,想让DBA小倩来做一下数据迁移,当然停机时间己经客户己经安排好了,就差小倩上线了。

2 准备工作

正式停机之前还有一些准备工作要作,比如先把存储空间挂载到服务器上(后做也可以,用不了多久)。

检查一下当前磁盘空间情况,根目录满上要用光了。

[root@dbserver ~]# df -Th
Filesystem              Type      Size  Used Avail Use% Mounted on
devtmpfs                devtmpfs  1.9G     0  1.9G   0% /dev
tmpfs                   tmpfs     1.9G  259M  1.6G  14% /dev/shm
tmpfs                   tmpfs     1.9G   12M  1.9G   1% /run
tmpfs                   tmpfs     1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/mapper/centos-root xfs       496G  493G  2.8G 100% /
/dev/sda1               xfs      1014M  151M  864M  15% /boot
tmpfs                   tmpfs     378M     0  378M   0% /run/user/0

再看一下磁盘情况,目前只是识别到了一块磁盘

[root@dbserver ~]# lsblk
NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda               8:0    0   500G  0 disk 
├─sda1            8:1    0     1G  0 part /boot
└─sda2            8:2    0   499G  0 part 
  ├─centos-root 253:0    0 495.1G  0 lvm  /
  └─centos-swap 253:1    0   3.9G  0 lvm  [SWAP]
sr0              11:0    1   4.4G  0 rom  

下面说一下怎么识别磁盘,正常这个操作是需要客户的系统管理员来操作(非必要DBA不要操作)。我这里用虚拟机给大家演示,就直接简化操作了(实际生产环境有可能还需要配置ISCSI、多路径,比较复杂,一般有专人处理,这个放在后面单独一章简单给大家做个知识补充

我这里用虚拟机模拟,那么操作就是这样,扫描之后发现2T磁盘

[root@dbserver scsi_host]# lsscsi
[0:0:0:0]    disk    VMware,  VMware Virtual S 1.0   /dev/sda 
[2:0:0:0]    cd/dvd  NECVMWar VMware IDE CDR10 1.00  /dev/sr0 
[root@dbserver scsi_host]# echo "- - -" >/sys/class/scsi_host/host0/scan 
[root@dbserver scsi_host]# 
[root@dbserver scsi_host]# lsblk
NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda               8:0    0   500G  0 disk 
├─sda1            8:1    0     1G  0 part /boot
└─sda2            8:2    0   499G  0 part 
  ├─centos-root 253:0    0 495.1G  0 lvm  /
  └─centos-swap 253:1    0   3.9G  0 lvm  [SWAP]
sdb               8:16   0     2T  0 disk 
sr0              11:0    1   4.4G  0 rom  

下面对2T磁盘进行分区,并标记为LVM格式(划分区再标记这是标准做法,这样避免以后被别人当成空盘,直接给用了。当然也可以直接pvcreate /dev/sdb,但是这样就没有标记了。)

[root@dbserver ~]# parted -s /dev/sdb mklabel gpt
[root@dbserver ~]# parted -s /dev/sdb mkpart primary 2048s 100%
[root@dbserver ~]# parted -s /dev/sdb toggle 1 lvm

[root@dbserver ~]# fdisk -l /dev/sdb
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.

Disk /dev/sdb: 2199.0 GB, 2199023255552 bytes, 4294967296 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: gpt
Disk identifier: 96DE5EB7-29A5-42AA-9651-03995AF95DEC

#         Start          End    Size  Type            Name
 1         2048   4294965247      2T  Linux LVM       primary

下一步就是创建lvm,创建挂载点,挂载到操作系统上。

[root@dbserver ~]# pvcreate /dev/sdb1 
  Physical volume "/dev/sdb1" successfully created.
[root@dbserver ~]# vgcreate oradatavg /dev/sdb1 
  Volume group "oradatavg" successfully created
[root@dbserver ~]# lvcreate -l 100%FREE -n oralv oradatavg
  Logical volume "oralv" created.
[root@dbserver ~]# lvs
  LV    VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root  centos    -wi-ao---- 495.12g                                                    
  swap  centos    -wi-ao----  <3.88g                                                    
  oralv oradatavg -wi-a-----  <2.00t                                                    
[root@dbserver ~]# vgs
  VG        #PV #LV #SN Attr   VSize    VFree
  centos      1   2   0 wz--n- <499.00g    0 
  oradatavg   1   1   0 wz--n-   <2.00t    0 
[root@dbserver ~]# mkfs.xfs /dev/mapper/oradatavg-oralv 
meta-data=/dev/mapper/oradatavg-oralv isize=512    agcount=4, agsize=134217472 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=536869888, imaxpct=5
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=262143, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

3 开始迁移

开始停机,先让客户结束业务办理,把应用系统都关了,然后建议是先把LOCAL=NO进程全KILL,不然生产库一般很难正常shutdown immediate。操作步骤:先杀进程、关监听、关库、关EM

ps -ef |grep LOCAL=NO|grep -v grep|cut -c 9-15|xargs kill -9
[oracle@dbserver ~]$ lsnrctl stop

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 11-SEP-2024 23:07:17

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
The command completed successfully
[oracle@dbserver ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Wed Sep 11 23:07:00 2024

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

[oracle@dbserver ~]$ emctl stop dbconsole
OC4J Configuration issue. /u01/app/oracle/product/11.2.0/dbhome_1/oc4j/j2ee/OC4J_DBConsole_dbserver_oracle not found.

操作步骤是这样:

1、先重命名/u01目录为/u01.old

2、创建新的/u01目录,然后挂载/dev/mapper/oradatavg-oralv到/u01

3、给/u01目录赋予oracle:oinstall权限

4、使用rsync迁移/u01.old目录里的文件到/u01目录下(这里写成脚本用nohup运行,防止终端断开),这里注意rsync源目录后面要带/,就是比如这样/u01.old/

5、启动数据库恢复业务

[root@dbserver ~]#cd /
[root@dbserver /]#mv /u01 /u01.old
[root@dbserver /]# mkdir -p /u01
[root@dbserver /]# echo "/dev/mapper/oradatavg-oralv /u01 xfs defaults 0 0" >> /etc/fstab 
[root@dbserver /]# mount -a
[root@dbserver /]# df -h
Filesystem                   Size  Used Avail Use% Mounted on
devtmpfs                     1.9G     0  1.9G   0% /dev
tmpfs                        1.9G     0  1.9G   0% /dev/shm
tmpfs                        1.9G   12M  1.9G   1% /run
tmpfs                        1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/mapper/centos-root      496G  493G  2.8G 100% /
/dev/sda1                   1014M  151M  864M  15% /boot
tmpfs                        378M     0  378M   0% /run/user/0
/dev/mapper/oradatavg-oralv  2.0T   33M  2.0T   1% /u01
[root@dbserver /]# chown  oracle:oinstall /u01
[root@dbserver /]# echo "/usr/bin/rsync -av /u01.old/ /u01" >rsync.sh
[root@dbserver /]# chmod +x rsync.sh 
[root@dbserver /]# nohup ./rsync.sh &
#如果需要查看同步情况,最后显示完成
[root@dbserver /]# tail -f nohup.out 
app/oracle/product/11.2.0/dbhome_1/xdk/mesg/
app/oracle/product/11.2.0/dbhome_1/xdk/mesg/lpxus.msb
app/oracle/product/11.2.0/dbhome_1/xdk/mesg/lpxus.msg
app/oracle/product/11.2.0/dbhome_1/xdk/mesg/lpxzhs.msb
app/oracle/product/11.2.0/dbhome_1/xdk/mesg/lsxus.msb
app/oracle/product/11.2.0/dbhome_1/xdk/mesg/lsxus.msg
app/oracle/product/11.2.0/dbhome_1/xdk/mesg/lsxzhs.msb

sent 6,049,894,594 bytes  received 709,411 bytes  145,797,686.87 bytes/sec
total size is 6,046,010,967  speedup is 1.00

最后启动数据库,成功运行后,确认无错误,就可以把/u01.old目录删除释放空间了。

[oracle@dbserver ~]$ lsnrctl start

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 11-SEP-2024 23:29:57

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

Starting /u01/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.2.0.4.0 - Production
System parameter file is /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Log messages written to /u01/app/oracle/diag/tnslsnr/dbserver/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=dbserver)(PORT=1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date                11-SEP-2024 23:29:57
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/dbserver/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=dbserver)(PORT=1521)))
The listener supports no services
The command completed successfully
[oracle@dbserver ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Wed Sep 11 23:30:03 2024

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup;
ORACLE instance started.

Total System Global Area 1586708480 bytes
Fixed Size		    2253624 bytes
Variable Size		  989859016 bytes
Database Buffers	  587202560 bytes
Redo Buffers		    7393280 bytes
Database mounted.
Database opened.
SQL> exit

4 扩展知识

1、如果生产服务器用的是hba卡的话一般都2块卡,需要重新扫描一下hba卡就可以发现新硬盘了,我给大家看一下我这有一个生产环境样例是这样:主机有2块HBA卡为host1、host2。host0是本地的硬盘控制器。

[root@rac1]# cd /sys/class/fc_host/
[root@rac1 fc_host]# ls -l
total 0
lrwxrwxrwx 1 root root 0 Aug  6 03:02 host1 -> ../../devices/pci0000:00/0000:00:03.0/0000:04:00.0/host1/fc_host/host1
lrwxrwxrwx 1 root root 0 Aug  6 03:02 host2 -> ../../devices/pci0000:40/0000:40:02.2/0000:47:00.0/host2/fc_host/host2
[root@rac1 fc_host]# cd /sys/class/scsi_host/
[root@rac1 scsi_host]# ls -l
total 0
lrwxrwxrwx 1 root root 0 Aug  6 03:02 host0 -> ../../devices/pci0000:00/0000:00:02.0/0000:02:00.0/host0/scsi_host/host0
lrwxrwxrwx 1 root root 0 Aug  6 03:02 host1 -> ../../devices/pci0000:00/0000:00:03.0/0000:04:00.0/host1/scsi_host/host1
lrwxrwxrwx 1 root root 0 Aug  6 03:02 host2 -> ../../devices/pci0000:40/0000:40:02.2/0000:47:00.0/host2/scsi_host/host2
[root@rac1 scsi_host]# lsscsi
[0:0:0:0]    disk    HP       LOGICAL VOLUME   4.04  /dev/sda 
[0:3:0:0]    storage HP       P830i            4.04  -       
[1:0:0:0]    disk    3PARdata VV               3315  /dev/sdb 
[1:0:0:1]    disk    3PARdata VV               3315  /dev/sdc 
[1:0:0:2]    disk    3PARdata VV               3315  /dev/sdd 
[1:0:0:3]    disk    3PARdata VV               3315  /dev/sde 
[1:0:0:4]    disk    3PARdata VV               3315  /dev/sdf 
[1:0:0:254]  enclosu 3PARdata SES              3315  -       
[1:0:1:0]    disk    3PARdata VV               3315  /dev/sdg 
[1:0:1:1]    disk    3PARdata VV               3315  /dev/sdh 
[1:0:1:3]    disk    3PARdata VV               3315  /dev/sdi 
[1:0:1:4]    disk    3PARdata VV               3315  /dev/sdj 
[1:0:1:5]    disk    3PARdata VV               3315  /dev/sdk 
[1:0:1:254]  enclosu 3PARdata SES              3315  -       
[2:0:0:0]    disk    3PARdata VV               3315  /dev/sdl 
[2:0:0:1]    disk    3PARdata VV               3315  /dev/sdm 
[2:0:0:3]    disk    3PARdata VV               3315  /dev/sdn 
[2:0:0:4]    disk    3PARdata VV               3315  /dev/sdo 
[2:0:0:5]    disk    3PARdata VV               3315  /dev/sdp 
[2:0:0:254]  enclosu 3PARdata SES              3315  -       
[root@rac1 scsi_host]# 

那么需要进行的操作就是扫描两块HBA卡。

echo "- - -" >/sys/class/scsi_host/host1/scan
echo "- - -" >/sys/class/scsi_host/host2/scan

2、如果是用万兆ISCSI连接的存储,那么就需要配置ISCSI,主机需要安装iscsi-initiator。生产一般会接2个网卡做为冗余,假设主机这边对接ISCSI存储的IP是192.168.1.2,存储侧是192.168.1.101、192.168.1.102

iscsiadm -m discovery -t st -p 192.168.1.101
iscsiadm -m node -p 192.168.1.101 -l
iscsiadm -m discovery -t st -p 192.168.1.102
iscsiadm -m node -p 192.168.1.102 -l
systemctl enable iscsi.service
iscsiadm -m node -o update -n node.startup -v automatic

3、上面无论是FC-HBA或是ISCSI连接完存储后,剩下需要做的就是配置多路径multipath或者直接安装存储厂商的多路径软件(如果客户现场没有多个存储要同时用的话,推荐使用存储厂商的多路径软件,这样几乎不用啥配置),此处略长,大家要有兴趣我回头再写一篇。

5 未完待续

解决了这个问题,又来了一个棘手的活, 这回客户也是数据库装在根目录,然后根目录总满了,目前是一直手动清日志保证业务能用。但不一样的是,这次客户用的是虚拟机系统,而且虚拟机没用LVM装的系统,客户系统又不能停机,看看下期DBA小倩如何处理。
在这里插入图片描述

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

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

相关文章

如何利用Samba跨平台分享Ubuntu文件夹

1.安装Samba 终端输入sudo apt install samba 2.配置Samba 终端输入sudo vim /etc/samba/smb.conf 打开配置文件 滑动文件到最底下 输入以下内容 [Share] # 要共享的文件夹路径 path /home/xxx/sambashare read only no browsable yes编辑完成后按一下Esc按键后输入:wq回…

CRE6255MS (5V2.1A电源芯片方案)

CRE6255MS产品是一款内置高压 MOS 功率开关管12W原边控制的开关电源芯片。CRE6255MS较少的外围元器件、较低的系统成本设计出高性能的交直流转换开关电源。CRE6255MS 提供了极为全面和性能优异的智能化保护功能&#xff0c;包括逐周期过流保护、软启动、芯片过温保护、输出过压…

用SpringBoot进行通义千问接口调用同步方法和异步流式多轮回复方法

同步效果就不展示了,这里展示更常用的异步,多轮异步流式效果展示如下: 第一轮回答,此时没有会话id,需要雪花算法生成插入数据库 第二轮问题以及结果内容组合 1、同步版本环境准备以及代码 需要开通阿里大模型服务,如果没有开通服务,单独的去生成 key 是无效的。 阿里…

春秋云境之CVE-2022-30887

一.靶场环境 1.下载靶场环境 根据题目提示&#xff0c;此靶场存在文件上传漏洞。 2.启动靶场环境 我们可以看到是一个登录页面&#xff0c;我们尝试进行登录 二.登录页面 1.尝试进行登录 我们发现用户名必须是邮箱&#xff0c;那么弱口令肯定不行&#xff0c;我们可以看到…

Redis的缓存穿透、缓存雪崩、缓存击穿怎么解决

Redis在实际使用中是会遇到很多问题的&#xff0c;例如今天说到的缓存穿透、缓存雪崩、缓存击穿。 缓存穿透&#xff1a; 缓存穿透是指客户端请求的数据在redis缓存和数据中都不存在&#xff0c;这样缓存永远都不会生效&#xff0c;这些请求都会打到数据库当中&#xff0c;对…

对中文进行文本分类的常用方法

一&#xff1a;关键词分类和基于规则的分类 关键词分类和基于规则的分类是两种常见的文本分类方法&#xff0c;它们可以应用于中文文本的分类。下面我将详细介绍这两种方法&#xff1a; 关键词分类 原理&#xff1a;这种方法通过识别文本中出现的特定关键词或短语来确定文本的…

数据清洗-缺失值填充-随机森林填充

目录 一、安装所需的python包二、采用随机森林算法进行缺失值填充2.1可直接运行代码2.2以某个缺失值数据进行实战代码运行过程截屏&#xff1a;填充后的数据截屏&#xff1a; 三、随机森林算法 (Random Forest) 介绍3.1随机森林的定义3.2随机森林的基本思想3.3随机森林的工作原…

国产动画《缉妖录之启程篇》定档国庆,吴承恩化身热血男主

9月15日&#xff0c;国产原创动画《缉妖录之启程篇》正式定档。动画由是船长影视制作&#xff0c;阿杰、谷江山等配音&#xff0c;于腾讯视频、极光TV播出&#xff0c;10月3日上午10:00点起更新两集&#xff0c;10月4日起&#xff0c;会员每日10:00更新一集&#xff0c;非会员每…

杨敏博士:基于法律大模型的智能法律系统

9月26日&#xff0c;杨敏博士受邀参加人工智能助力法治化营商环境发展论坛暨得理法律大模型发布会并发表了“基于法律大模型的智能法律系统”主题演讲。杨博士是香港大学计算机博士&#xff0c;担任中科院深圳先进院高性能数据挖掘实验室主任&#xff0c;是深圳市海外高层次人才…

一起对话式学习-机器学习02——机器学习方法三要素

【一】核方法 首先补充一下核方法&#xff0c;这应是机器学习分类中的内容。 什么是核方法呢&#xff1f;听起来很高级&#xff0c;但理解很简单&#xff1a; 官方定义&#xff1a;核方法是使用核函数表示和学习非线性模型的一种机器学习方法&#xff0c;可以用于监督学习和非监…

教你开发一套外卖霸王餐小程序系统

大家好&#xff0c;我是鲸天科技千千&#xff0c;大家都知道我是做小程序开发的&#xff0c;平时会给大家分享一些互联网相关的创业项目&#xff0c;感兴趣的可以跟我关注一下。 首先就是要搭建一个自己的霸王餐系统小程序&#xff0c;我们自己的工作就是把这个小程序推广宣传…

828华为云征文|华为云Flexus X实例Nginx性能加速评测及对比

目录 前言 一、Flexus云服务器X介绍 1.1 Flexus云服务器X实例简介 1.2 Flexus云服务器X实例特点 1.3 Flexus云服务器X实例使用场景 二、Flexus云服务器X购买 2.1 Flexus X实例购买 2.2 重置密码 2.3 登录服务器 2.4 启动Nginx 三、华为云Flexus X实例加速Nginx测评 3.1 安装测试…

书生大模型实战营学习[2]Python task

学习目标&#xff1a;Python学习 Python实现wordcount Vscode连接InternStudio debug笔记 学习内容&#xff1a; 任务1&#xff1a;请实现一个wordcount函数&#xff0c;统计英文字符串中每个单词出现的次数。返回一个字典&#xff0c;key为单词&#xff0c;value为对应单词出…

Linux-进程优先级

&#x1f308;个人主页&#xff1a;Yui_ &#x1f308;Linux专栏&#xff1a;Linux &#x1f308;C语言笔记专栏&#xff1a;C语言笔记 &#x1f308;数据结构专栏&#xff1a;数据结构 &#x1f308;C专栏&#xff1a;C 文章目录 1. 为什么要有优先级的概念2.进程优先级的基本…

进程间关系和守护进程

序言 当我们使用指令 ps 查看进程的相关信息时&#xff0c;在以前我们只是关注该进程的 PID(该进程的标识符) &#xff0c; PPID(其父进程的标识符) 以及 STAT(该进程的状态)。  那 PGID 和 SID 又是什么&#xff1f;有什么作用呢&#xff1f; 1. 进程组 1.1 什么是进程组&am…

最强神器Typora 2024(亲测有效)| Markdown 工具推荐

听俺讲一下 大家好&#xff0c;我是程序员-杨胡广&#xff0c;今天想给大家分享一个在编写文档时的神器——Typora。相信不少小伙伴都在寻找一款既简洁又强大的 Markdown 编辑工具&#xff0c;而 Typora 无疑是最值得推荐的选择。 当我在大学时偶然发现了它&#xff0c;直到今…

【Python 数据分析学习】Matplotlib 的基础和应用

题目 1 Matplotlib 主要特性2 Matplotlib 基础知识2.1 导入模块2.2 图形构成2.2.1 图形&#xff08;Figure&#xff09;2.2.2 轴 &#xff08;Axes&#xff09;2.2.3 轴线&#xff08;axis&#xff09; 2.5 中文设置2.5.1 借助rcParams修改字体实现设置2.5.2 增加一个fontprope…

计算机视觉 对比学习 串烧二

文章目录 文章列表三、CPC3.1 文章摘要3.2 实验结果3.3 文章图示图 1: 对比预测编码&#xff08;CPC&#xff09;的概览图 2: 语音&#xff08;演讲&#xff09;表示的t-SNE可视化图 3: 预测未来潜在表示的准确率图 4: 图像的对比预测编码&#xff08;CPC&#xff09;的可视化图…

【Qt】Qt C++ Widget中嵌入qml

1. 效果 2. 方法 使用QQuickWidget方式 QQuickWidget *view new QQuickWidget;view->setSource(QUrl::fromLocalFile("myqmlfile.qml"));view->show();除了QQuickWidget方式还可以使用QQuickView方式&#xff0c;请自行查阅资料 3. 代码 3.1 工程目录 3.2 …

初始爬虫7

针对数据提取的项目实战&#xff1a; 补充初始爬虫6的一个知识点&#xff1a; etree.tostring能够自动补全html缺失的标签&#xff0c;显示原始的HTML结构 # -*- coding: utf-8 -*- from lxml import etreetext <div> <ul> <li class"item-1">…