oracle 裸设备使用方法,Linux上如何使用裸设备
1.创建pv
pvcreate -M2 –metadatasize 100M /dev/sda
pvcreate -M2 –metadatasize 100M /dev/sdb1
pvcreate -M2 –metadatasize 100M /dev/sdb2
pvcreate -M2 –metadatasize 100M /dev/sdc
物理卷可以是整个硬盘(lun),也可以是硬盘上的一个分区
2.创建vg
vgcreate vg_db /dev/sda /dev/sdb1 /dev/sdb2 /dev/sdc
-s128m
3.创建lv
lvcreate -L2048m -i4 -I64k vg_db -n lv_2g_001
lvcreate -L2048m -i4 -I64k vg_db -n lv_2g_002
4.绑定
raw /dev/raw/raw1 /dev/mapper/vg_db-lv_2g_001
raw /dev/raw/raw2 /dev/mapper/vg_db-lv_2g_002
使用raw命令绑定的裸设备在重启后会失效。所以需要修改/etc/sysconfig/rawdevices配置文件,在文件中加入如下内容(每个裸设备一行):
/dev/raw/raw1 /dev/mapper/vg_db-lv_2g_001
/dev/raw/raw2 /dev/mapper/vg_db-lv_2g_002
执行 /etc/init.d/rawdevices restart 使配置文件中的裸设备生效
执行 /sbin/chkconfig rawdevices on 保证机器启动的时候裸设备能够加载
5.授权
chown -R oracle.dba /dev/mapper
修改配置文件/etc/udev/permissions.d/50-udev.permissions
注释掉raw/*:root:disk:0660
添加新行raw/*:oracle:dba:0660
6.链接(可选)
ln -s /dev/raw/raw1 /oradata/ningoo/system01.dbf
ln -s /dev/raw/raw2 /oradata/ningoo/undo01.dbf
******************************************************************************************
1、裸设备定义:
一块没有分区的硬盘,称为原始设备(RAW DEVICE)
或者是一个分区,但是没有用EXT3,OCFS等文件系统格式化,称为原始分区(RAW PARTITION)
以上两者都是裸设备
2、裸设备的绑定
有文件系统的分区是采用mount的方式挂载到某一个挂载点的(目录)
而裸设备不能mount,只能绑定到/dev/raw/下的某一个设备名
比如/dev/raw/raw1
3、裸设备的绑定方法
有两种方法,这里介绍一种,另一种可以google搜索到
修改/etc/sysconfig/rawdevices,添加以下内容,
这里sdd1和sdd2是原始分区名或者原始设备(硬盘)名,
raw1和raw2是/dev目录下的原始设备名,编号从raw1到raw255,也就是最多可以绑定255个裸设备
/dev/raw/raw1 /dev/sdd1
/dev/raw/raw2 /dev/sdd2
然后修改裸设备的属主和访问权限
chown oracle:dba /dev/raw/raw1
chown oracle:dba /dev/raw/raw2
chmod 660 /dev/raw/raw1
chmod 660 /dev/raw/raw2
由于/dev下的文件都是动态建立的,所以在OS重启后,属主仍会变成root:disk,要解决这个问题,可以把上面的命令写入到/etc/rc.local文件中:
最后使得裸设备生效,并且在机器启动的时候就自动加载
执行 /etc/init.d/rawdevices restart 使裸设备生效
执行 /sbin/chkconfig rawdevices on 保证机器启动的时候裸设备能够加载,这一步很重要
4、裸设备的读写
不能用cp等命令操作,写入内容用dd命令,可以参阅相关资料
5、清空裸设备
相当于格式化啦bs是快的大小,block size
count是快的数量,这两者相乘大于裸设备的容量即可
dd if=/dev/zero of=/dev/raw/raw1 bs=8192 count=12800
dd if=/dev/zero of=/dev/raw/raw2 bs=8192 count=12800
-------
另外
rhel4使用udev来管理设备
手动修改/dev/raw/raw1 不能永久生效
要想使得权限持久生效
需要修改文件/etc/udev/permissions.d/50-udev.permissions 的第113行
raw/*:root:disk:0660
改成
raw/*:oracle:dba:0660
重启机器
如果/dev/下没有 /raw/ 目录,可以自己手工建立
**********************************************************************************************
什么是裸设备及其用途
所谓裸设备(raw
device)就是一种没有经过格式化的分区,也叫原始分区,是一种不需要通过文件系统来访问的特殊字符设备。在Linux下,通过块设备“绑定”到特殊字符设备得到裸设备。因为读写裸设备不需要像访问块设备那样经过内核的块缓冲,所有的I/O读写都是直接在进程的内存空间到物理的寻址空间进行。
此外,由于避免了文件系统处理的开销,所以使用裸设备对于读写频繁的应用(如Oracle、DB2等数据库系统)来说,可以很好地提升应用的性能。然而,随着计算能力的提高,当应用存取数据的I/O瓶颈出现在存储设备的控制器或驱动器上时,通过裸设备的数据访问性能反而不比文件系统的高,同时文件系统的数据组织能力也更强。
裸设备的创建
创建裸设备方式相对创建软RAID、LVM来说就比较简单了,只需用“raw”命令把裸设备与真实的物理磁盘或分区做一个映射即可。例如,在“/dev/raw/raw1”与“/dev/sdb”之间做一个映射,如下:
# raw /dev/raw/raw1 /dev/sdb
/dev/raw/raw1: bound to major 8, minor 16
但是以上这种方式创建的裸设备,在系统重启后将不再生效,若要永久生效需要将裸设备的映射关系写到“/etc/sysconfig/rawdevices”文件中,如下:
# vi /etc/sysconfig/rawdevices
/dev/raw/raw1 /dev/sdb
/dev/raw/raw2 /dev/sdc
/dev/raw/raw3 /dev/sdd
同时还需要启动“rawdevices”这个服务,这时所绑定的裸设备才生效,如下:
# /etc/init.d/rawdevices restart
Assigning devices:
/dev/raw/raw1 –> /dev/sdb
/dev/raw/raw1: bound to major 8, minor 16
/dev/raw/raw2 –> /dev/sdc
/dev/raw/raw2: bound to major 8, minor 32
/dev/raw/raw3 –> /dev/sdd
/dev/raw/raw3: bound to major 8, minor 48
done
使用“chkconfig”可以设置该服务在开机时自动启动,即系统启动时自动映射对应关系,对于已创建好的裸设备,可以通过如下命令来查看裸设备的映射信息:
# raw -q /dev/raw/raw1
/dev/raw/raw1: bound to major 8, minor 16
“-q”指定存在的裸设备名称,而“major 8”和“minor
16”分别时真实设备的主设备号与从设备号,如果需要查看所有的裸设备信息,那么可使用“raw -qa”,如下:
# raw -qa
/dev/raw/raw1: bound to major 8, minor 16
/dev/raw/raw2: bound to major 8, minor 32
/dev/raw/raw3: bound to major 8, minor 48
*****************************************************************************************************
1、什么是Linux裸设备?字符设备?块设备?
裸设备:也叫裸分区(原始分区),是一种没有经过格式化,不被Unix/Linux通过文件系统来读取的特殊字符设备。裸设备可以绑定一个分区,也可以绑定一个磁盘。
字符设备:对字符设备的读写不需要通过OS的buffer。它不可被文件系统mount。
块设备:对块设备的读写需要通过OS的buffer,它可以被mount到文件系统中。
2、一个系统可以有多少个裸设备?
这个与linux的版本相关,在旧版本中,最多只可以有256个裸设备,Linux 4下做多可以绑定8192个裸设备。
但是在linux下,最多只能有255个分区,所以,如果用裸设备绑定分区,最多只能绑定255个裸设备。
如果是用lvm,则没有这个限制。
3、Linux下单个磁盘最多可以有多少个分区?
15个。3个主分区 + 1个扩展分区 + 11个逻辑分区。
建议的分区方法是:先分3个主分区,第四个分区为扩展分区,然后在扩展分区中再分成11个逻辑分区。
注意,裸设备不要绑定在扩展分区上。
4、linux下是否需要绑定裸设备?unix呢?
linux下如果需要使用裸设备,则需要手工进行绑定。
unix下则不用。
因为Unix中每一个块设备都会有一个对应的字符设备用于非缓存(unbuffered)I/O,这就是他对应的裸设备了。
而Linux中rawio的则实现了一套非绑定(unbound)的裸设备/dev/rawN或者/dev/raw/rawN和一个控制设备/dev/rawct用来把他们绑定到块设备上。所以当需要使用一个裸设备的时候,就需要把他和一个真实存在的块设备对应起来,这一个步骤实际上就是完成了Unix里的自动对应一个非缓存字符设备。
5、linux如何绑定裸设备?
两种方式:
1)命令绑定
raw /dev/raw/raw[n] /dev/xxx
其中n的范围是0-8191。raw目录不存在可以创建。
执行这个命令,就会在/dev/raw下生成一个对应的raw[n]文件
用命令方式绑定裸设备在系统重启后会失效。
2)修改文件
修改/etc/sysconfig/rawdevices文件如下,以开机时自动加载裸设备,如:
/dev/raw/raw1 /dev/sdb1
这种方式是通过启动服务的方式来绑定裸设备。
也可以把这个命令写在/etc/rc.local上,使每次启动都执行这些命令。
6、如何把裸设备作为oracle数据文件?有什么需要注意的?
1)绑定裸设备
参考上文
2)改变裸设备属主
两种方法:
. 把命令卸载/etc/rc.local上
chown oracle:oinstall /dev/raw/raw1
. 修改/etc/udev/permissions.d/50-udev.permissions文件
将/etc/udev/permissions.d/50-udev.permissions的113行
从
raw/*:root:disk:0660
修改为
raw/*:oracle:oinstall:0660
这个的意思是修改裸设备的默认属主为oracle:oinstall,默认的mode是0660。
如果是用lvm,也需要把逻辑卷绑定到裸设备上,过程和绑定到普通分区类似。
7、使用裸设备作为oracle数据文件有什么需要注意的?
使用裸设备作为oracle的数据文件必须注意以下几点:
1)一个裸设备只能放置一个数据文件
2)数据文件的大小不能超过裸设备的大小
如果是日志文件,则裸设备最大可用大小=裸设备对应分区大小 - 1 * 512 (保留一个redo lock)
如果是数据文件,则裸设备最大可用大小=裸设备对应分区大小 - 2 * db_block_size(保留两个block)
为了简单起见,对所有的文件设置称比裸设备小1M即可。
3)数据文件最好不要设置称自动扩展,如果设置称自动扩展,一定要把maxsize设置设置为比裸设备小
8、是否可以直接用逻辑卷作为oracle数据文件?
linux下oracle不能直接把逻辑卷作为裸设备,也要进行绑定。unix下就不需要。
9、如何知道当前绑定了什么裸设备?
raw -qa命令列出当前绑定的所有裸设备。
10、如何知道某个裸设备的大小
比较笨的办法是,找出看裸设备对应的是那个实际的块设备,然后用fdisk -l
/dev/[h,s]dXN看那个块设备的大小就好了。
比较简单的办法是用blockdev命令来计算,如:
#blockdev --getsize /dev/raw/raw1
11718750
11718750表示有多少OS BLIOCK。
一般一个OS BLOCK大小是512字节,所以11718750*512/1024/1024/1024 =
5722(m)就是裸设备的大小。
==============================================================================================
oracle使用裸设备
1.建立逻辑卷:
到root用户下执行 #lvcreate -L 100M -n vg30 vg0
2.绑定逻辑卷到裸设备: 在root用户下 #raw /dev/raw/raw1
/dev/vg01/oradta_life
3.给oracle用户赋裸设备的读写权限: #chown oracle:oinstall /dev/raw/raw1
4.建立连接以方便应用裸设备: 到oracle用户下建立连接 $ ln -s /dev/raw/raw1
/home/oracle/oradata/raw_test
5.用裸设备建立表空间: SQL> create tablespace raw_test datafile
'/home/oracle/oradata/raw_test' size 50m;
================================================================================================
裸设备概述
裸设备:也叫裸分区(原始分区),是一种没有经过格式化,不被Unix/Linux通过文件系统来读取的特殊字符设备。裸设备可以绑定一个分区,也可以绑定一个磁盘。
字符设备:对字符设备的读写不需要通过OS的buffer。它不可被文件系统mount。
块设备:对块设备的读写需要通过OS的buffer,它可以被mount到文件系统中。
这个与linux的版本相关,在旧版本中,最多只可以有256个裸设备,Linux
4下做多可以绑定81Array2个裸设备。但是在linux下,最多只能有255个分区,所以,如果用裸设备绑定分区,最多只能绑定255个裸设备。如果是用lvm,则没有这个限制。
Linux下单个磁盘最多可以有15个分区。3个主分区 + 1个扩展分区 +
11个逻辑分区。
建议的分区方法是:先分3个主分区,第四个分区为扩展分区,然后在扩展分区中再分成11个逻辑分区。注意,裸设备不要绑定在扩展分区上。linux下如果需要使用裸设备,则需要手工进行绑定,unix下则不用。
因为Unix中每一个块设备都会有一个对应的字符设备用于非缓存(unbuffered)I/O,这就是他对应的裸设备了。而Linux中rawio的则
实现了一套非绑定(unbound)的裸设备/dev/rawN或者/dev/raw/rawN和一个控制设备/dev/rawct用来把他们绑定到块设
备上。所以当需要使用一个裸设备的时候,就需要把他和一个真实存在的块设备对应起来,这一个步骤实际上就是完成了Unix里的自动对应一个非缓存字符设备。
major和minor device number
在unix/linux系统中,一切都是文件。所有硬盘、软盘、键盘等设备都用文件来代表,对应
着/dev下面的文件。对于应用程序来说,可以像对待普通文件一样打开,关闭、读写这些设备文件。但是这种文件名,比如/dev/sda、/dev
/raw/raw1都是用户空间名称,OS Kernel根本不知道这个名称指的是什么。在内核空间是通过major、minor
device number 来区分设备的。
major device number可以看作是设备驱动程序,被同一设备驱动程序管理的设备有相同的major device
number.这个数字实际是Kernel中device driver table
的索引,这个表保存着不同设备驱动程序。而minor device
number用来代表被访问的具体设备。也就是说Kernel根据major device number
找到设备驱动程序,然后再从minor device number 获得设备位置等属性。所有这些major device number
是已经预先分配好的。详细信息可以从http://www.lanana.org/docs/device-list/devices-2.6+.txt查看。比如裸设备是162,scsi块设备是8/etc/udev/rules.d/60-raw.rules
Redhat平台对raw设备的配置在redhat 5之后有了变化。在redhat
5之前,直接配置/etc/sysconfig/rawdevices件,通过/etc/init.d/rawdevices来管理raw设备的启动和关
闭。在Redhat 5之后,原来的raw设备接口已经取消了,redhat 5中通过udev规则进行配置。
要配置,需要编辑/etc/udev/rules.d/60-raw.rules这个文件。
cat /etc/udev/rules.d/60-raw.rules
# Enter raw device bindings here.
#
# An example would be:
# ACTION=="add", KERNEL=="sda", RUN+="/bin/raw /dev/raw/raw1
%N"
# to bind /dev/raw/raw1 to /dev/sda, or
# ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="1", RUN+="/bin/raw
/dev/raw/raw2 %M %m"
# to bind /dev/raw/raw2 to the device with major 8, minor
1.
其中ACTION=="add", KERNEL="",
RUN+="raw /dev/raw/rawX %N"
配置设备名称,用你需要绑定的设备名称替换 (如:/dev/sda1),X为裸设备号
主/次号码:ACTION=="add",
ENV{MAJOR}="A", ENV{MINOR}="B", RUN+="raw /dev/raw/rawX %M
%m""A" 和 "B"
是设备的主/次号码,X是系统使用的raw设备号码。
个人对redhat管理raw的过程理解为:在redhat
5中,是通过udev来管理raw设备的,而udev是通过MAJOR和MINOR来识别raw设备。故需要将设备号和裸设备号进行绑定,而主设备号和次设备号可以自行指定或者由系统自动分配。根据red
hat的官方文档中关于raw.rule的示例中说KERNEL==..或ENV{MAJOR}...只需要任意配置一个就可以,但有些网友经过试验,验证必须二者同时配置才可以。
配置/etc/udev/rules.d/60-raw.rules文件
查看磁盘分区情况
# fdisk -l /dev/sdb
Disk /dev/sdb: 4880 MB, 4880072704 bytes
255 heads, 63 sectors/track, 593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 25 200781 83 Linux
/dev/sdb2 26 50 200812+ 83 Linux
配置/etc/udev/rules.d/60-raw.rules文件# grep -v ^#
/etc/udev/rules.d/60-raw.rules
ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1
%N"
ACTION=="add", KERNEL=="sdb2", RUN+="/bin/raw /dev/raw/raw2
%N"
ACTION=="add", ENV{MAJOR}=="3", ENV{MINOR}=="2", RUN+="/bin/raw
/dev/raw/raw1 %M %m"
ACTION=="add", ENV{MAJOR}=="7", ENV{MINOR}=="2", RUN+="/bin/raw
/dev/raw/raw2 %M %m"
启动raw设备
# start_udev
Starting udev: [ OK ]
查看配置情况# raw
-qa
/dev/raw/raw1: bound to major 8, minor 17
/dev/raw/raw2: bound to major 8, minor 18
这里笔者不清楚为什么主设备号和复设备号并不和我在/etc/udev/rules.d/60-raw.rules指定的一样,望了解的读者告知,系统内核信息如下# uname
-a
Linux rac1 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:54 EDT 2009 i686
i686 i386 GNU/Linux
# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.4
(Tikanga)
可以通过如下方式指定主设备号和复设备号# raw
/dev/raw/raw1 1 1
/dev/raw/raw1: bound to major 1, minor 1
raw
/dev/raw/raw[n] /dev/xxx
其中n的范围是0-8191。raw目录不存在的话会被自动创建。执行这个命令,就会在/dev/raw下生成一个对应的raw[n]文件用命令方式绑定裸设备在系统重启后会失效。
删除裸设备# raw /dev/raw/raw2 0 0
/dev/raw/raw2: bound to major 0, minor
0
# raw -qa
/dev/raw/raw1: bound to major 1, minor 1
以上设置必须同时修改/etc/udev/rules.d/60-raw.rules才能保证重启后生效,否则重启后系统会重新读取/etc/udev/rules.d/60-raw.rules
如需设置raw设备的用户和权限信息,可在/etc/udev/rules.d/60-raw.rules文件里添加如下信息:
ACTION=="add", KERNEL=="raw1",
OWNER="dave", GROUP="tianlesoftware", MODE="660"
如果有多个raw设备,可以写成:
ACTION=="add",
KERNEL=="raw[1-4]", OWNER="dave", GROUP="tianlesoftware",
MODE="660"#chown oracle:oinstall /dev/raw/raw[1-4]
#chmod 775 /dev/raw/raw[1-4]注意:在内核2.6.9-89.5AXS2之前使用/etc/sysconfig/rawdevices和/etc/udev/permissions.d/50-udev.permissions进行raw设备的配置和权限管理。在内核
2.6.18-128.7AXS3以后则使用了本文介绍的/etc/udev/rules.d/60-raw.rules进行raw设备的管理
确定裸设备的大小比较笨的办法是,找出看裸设备对应的是那个实际的块设备,然后用fdisk -l
/dev/[h,s]dXN看那个块设备的大小就好了。比较简单的办法是用blockdev命令来计算,如:#blockdev
--getsize /dev/raw/raw1
11718750
11718750表示有多少OS BLIOCK。
一般一个OS BLOCK大小是512字节,所以11718750*512/1024/1024= 5722(m)
就是裸设备的大小。
使用裸设备作为oracle的数据文件的注意事项
1、一个裸设备只能放置一个数据文件
2、数据文件的大小不能超过裸设备的大小
如果是日志文件,则裸设备最大可用大小=裸设备对应分区大小 - 1 * 512 (保留一个redo lock)
如果是数据文件,则裸设备最大可用大小=裸设备对应分区大小 - 2 * db_block_size(保留两个block)
为了简单起见,对所有的文件设置称比裸设备小1M即可。
3、数据文件最好不要设置称自动扩展,如果设置称自动扩展,一定要把maxsize设置设置为比裸设备小
4、linux下oracle不能直接把逻辑卷作为裸设备,也要进行绑定。unix下就不需要。
oracle 裸设备使用方法,Linux上如何使用裸设备相关推荐
- linux上使用tun/tap设备模拟一个虚拟网卡,并将该虚拟网卡连接到新创建的网桥上
目录 linux上使用tun/tap设备模拟一个虚拟网卡,并将该虚拟网卡连接到新创建的网桥上 一.tun/tap设备简介 二.在linux上使用tun/tap设备模拟一个虚拟网卡 三. 创建网桥连接到 ...
- oracle EBS查进程,UNIX/LINUX 上针对Oracle EBS 11i的运行的所有进程状态的查询方法:
..........[@more@]UNIX/LINUX 上针对Oracle EBS 11i的运行的所有进程状态的查询方法: 查看Oracle db进程 ps –ef|grep ora_ 查看Net8 ...
- linux 裸设备使用,Linux上如何使用裸设备
本文不涉及基础概念,只是简单列一下Redhat上创建lvm裸设备的步骤,以供查阅.各个命令的参数可以通过man获得. 1.创建pv pvcreate -M2 --metadatasize 100M / ...
- linux下使用 sb设备的方法,Linux虚拟文件系统概述(2)get_sb
二.注册和加载文件系统 注册和注销一个文件系统时,使用下面的API: #include extern int register_filesystem(struct file_system_type * ...
- Unix/Linux操作系统分析实验四 设备驱动: Linux系统下的字符设备驱动程序编程
Unix/Linux操作系统分析实验一 进程控制与进程互斥 Unix/Linux操作系统分析实验二 内存分配与回收:Linux系统下利用链表实现动态内存分配 Unix/Linux操作系统分析实验三 文 ...
- linux 设备树 otg,linux下充电IC OTG设备供电控制
linux下充电IC OTG设备供电控制 备注:下面提到的充电IC 用charger表示 1. OTG VBUS 5V供电 接入OTG设备,比如U盘,具体是怎么通过charger驱动来给U盘供 ...
- oracle 安装oui 15038,SuSE Linux上的Oracle11g-x64-ent安装有许多检查错误
我搜了很多资料,但没找到答案.请给点小费,谢谢!! Oracle11g-x64-ent 11.1.0.6.0版, SUSE Linux Enterprise Server 10 SP2(x86 U 6 ...
- oracle 安装oui 15038,SUSE Linux上的Oracle11g-x64-ent安装有很多检查错误
我搜索了很多材料,但是得到了答案.请给出一些提示,谢谢! Oracle11g-x64-ent 11.1.0.6.0, SUSE Linux Enterprise Server 10 SP2(x86_6 ...
- 裸板烧写linux内核,嵌入式 hi3518c裸板uboot烧写、kernel烧写、fs烧写小结
1.在uboot中我可以添加自己的命令,添加的方法是找到一个uboot的命令,然后模仿着去增加属于自己的命令代码以及实现函数就可以 2.记住在使用printf进行调试的时候,在遇到指针或者字符串的时候 ...
- linux安装数据库乱码,Linux上Oracle安装前汉字乱码和安装后创建数据库乱码的解决方法...
相信每一位在Linux上安装过Oracle的朋友都受过汉字"口口"形乱码的困扰,在论坛上搜索了一下,没有找到完整的解决方案,大都是建议将Linux改成英文环境,有部分回复提到过更改 ...
最新文章
- RabbitMQ 七战 Kafka,差异立现!
- sysenter Hook
- 公众号滑动图代码_脱离模板!教你自己动手制作公众号封面图
- PMCAFF问答龙虎榜,大神云集,等你挑战
- boost::multiprecision模块mpfr相关的测试程序
- 【网络知识点】防火墙主备冗余技术
- 《大数据,小时代,向移动互联网迁徙-2012上半年移动互联网数据分享》_DCCI
- 人工智能-机器学习之Selenium(chrome驱动,火狐驱动)
- Linux定时任务:crontab安装与检查
- ACM学习历程—HihoCoder1309任务分配(排序 贪心)
- ThinkPHP的RBAC(基于角色权限控制)详解
- jenkins-启动和关闭服务
- 调试ST电机库5.20遇到的问题
- 计算机操作系统(第四版)课后习题答案西电版
- Python学习002—python的安装以及pip
- 几款笔记软件的优缺点
- ubuntu搭建PHP网站完整实例教程
- 王者荣耀最低战力查询-王者战区修改
- 黑马程序员都到兄弟连兄弟会报名去了
- 微信小程序-实现上下、左右布局
热门文章
- UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte xx in position xx: invalid continuation byte
- 结对项目—地铁出行路线规划
- docker容器获取宿主机IP
- STL之字符串类模板 string(一)、C++ string类库简介
- intel 服务器芯片型号怎么看,Intel CPU编号详解
- 博客美化——页面白天黑夜切换
- 斗魔之残龙纹 第一章
- cmd下迅速打开控制面板、计算机管理、设备管理器
- 数据结构课程设计——电话号码查询系统(C语言)
- Android Studio更新后导入项目报错问题解决(Minimum supported Gradle version is ×.×.×. Current version is ×.×.× )