1配置hostname
[root@oracledb ~]#hostnamectl set-hostname oracledb
[root@oracledb ~]#echo " 10100110 oracledb" >>/etc/hosts
2关闭selinux和防火墙
[root@oracledb ~]#sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
[root@oracledb ~]#setenforce 0
[root@oracledb ~]#systemctl stop firewalld
[root@oracledb ~]#systemctl disable firewalld
[root@oracledb ~]#systemctl status firewalld
3下载Oracle软件包 且上传到服务器上,进行解压缩
建议使用winSCP工具进行上传到服务器的/opt目录下
[root@oracledb ~]# ls -lh /opt/
-rw-r--r-- 1 root root 12G Mar 30 16:12 linuxx64_11gR2_database_1of2zip
-rw-r--r-- 1 root root 11G Mar 30 16:11 linuxx64_11gR2_database_2of2zip
4安装oracle环境所需要的依赖包-配置YUM源
安装依赖包之前,一定要设置好服务器上的安装源,原因是:可以在没有互联网的时候安装服务所需依赖包;常用的安装源有两种方式:
(1) 配置本地yum源
新建配置文件vi /etc/yumreposd/localsourcerepo输入如下内容:
[localsource]
name=localsource
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0
(2) 生成本地yum 缓存
注意:从Oracle 11g 11202版本开始,在Linux x86_64上安装时,只需要安装64位的软件包,但是,对于11202之前的任何Oracle database 11g,下表中列出的32位和64位的安装包都必须安装
5安装oracle环境所需要的依赖包-安装依赖包
(1)安装依赖包
[root@oracledb ~]# yum -y install binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel zlib zlib-devel pcre-devel unzip
(2)安装完成后,检查依赖是否全部安装成功
[root@oracledb ~]# rpm -q binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel zlib zlib-devel pcre-devel unzip | grep "not installed"
(3)创建所需的用户组和用户
如果要安装Oracle数据库,通常需要以下本地 *** 作系统用户组和用户:
Oracle inventory组(通常为 oinstall)
OSDBA组 (通常为 dba)
OSOPER组 (通常为 oper)
Oracle软件所有者(通常为 oracle)
创建用户组和用户:
[root@oracledb ~]# groupadd oinstall
[root@oracledb ~]# groupadd dba
[root@oracledb ~]# groupadd oper
[root@oracledb ~]# useradd -g oinstall -G dba oracle
(4)修改oracle用户密码:建议密码配置为字符+数字+特殊字符
[root@oracledb ~]# passwd oracle
6配置内核参数和资源限制
(1)编辑配置文件vi /etc/sysctlconf添加如下参数:
vmmax_map_count = 655360
fsaio-max-nr = 1048576
fsfile-max = 6815744
kernelshmall = 2097152
kernelshmmax = 2147483648 ###最小值: 536870912
kernelshmmni = 4096
kernelsem = 250 32000 100 128
netipv4ip_local_port_range = 9000 65500
netcorermem_default = 262144
netcorermem_max = 4194304
netcorewmem_default = 262144
netcorewmem_max = 1048576
注意:如果系统中某个参数高于上面的参数的值 ,保留较大的值,上面的数值只是官方要求的最小值,可以根据系统调整数值,以优化系统性能
(2)使内核参数生效
[root@oracledb ~]# sysctl -p
7创建oracle安装目录
如下目录,根据自己的实际情况可做修改:
[root@oracledb ~]# mkdir -p /data/app/oracle/product/1120
[root@oracledb ~]# cd /data/app/oracle/
[root@oracledb oracle]# mkdir oradata inventory fast_recovery_area
[root@oracledb ~]# chown -R oracle:oinstall /data/app/oracle
[root@oracledb ~]# chmod -R 775 /data/app/oracle
8配置oracle用户环境变量
编辑配置文件vi /home/oracle/bash_profile添加如下内容:
export ORACLE_BASE=/data/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/1120
export ORACLE_SID=orcl
export PATH=$PATH:$ORACLE_HOME/bin
9 解压下载好的两个Oracle数据库文件
[root@oracledb ~]# cd /opt
[root@oracledb ~]# unzip linuxx64_11gR2_database_1of2zip -d /data
[root@oracledb ~]# unzip linuxx64_11gR2_database_2of2zip -d /data
10 编辑静默安装响应文件
(1)切换到oracle用户执行
[root@oracledb ~]# su - oracle
(2)切换到响应文件的目录下
[oracle@oracledb ~]$ cp -R /data/database/response/
[oracle@oracledb ~]$ cd response/
[oracle@oracledb response]$ ls
dbcarsp db_installrsp netcarsp
11修改配置文件:vi /home/oracle/response/db_installrsp,修改以下变量的值
oracleinstalloption=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/data/app/oracle/inventory
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOME=/data/app/oracle/product/1120
ORACLE_BASE=/data/app/oracle
oracleinstalldbInstallEdition=EE
oracleinstalldbDBA_GROUP=dba
oracleinstalldbOPER_GROUP=dba
DECLINE_SECURITY_UPDATES=true
12 开始静默安装Oracle 11g
(1)开始安装oracle数据库
[oracle@oracledb ~]$ cd /data/database
[oracle@oracledb ~]$ /runInstaller -silent -responseFile /home/oracle/response/db_installrsp -ignorePrereq
注意:安装期间可以使用tail命令查看oracle的安装日志,且日志文件名称是根
据自己的实际执行时间确定的,安装日志文件会在安装时提示,需要等待3分钟左右,注意不要停止运行;安装完成后有如下提示,如果有类似如下提示,说明安装完成。
The following configuration scripts need to be executed as the "root" user
#!/bin/sh
#Root scripts to run
/data/app/oraInventory/orainstRootsh
/data/app/oracle/product/1120/db_1/rootsh
To execute the configuration scripts:
1 Open a terminal window
2 Log in as "root"
3 Run the scripts
4 Return to this window and hit "Enter" key to continue
Successfully Setup Software
13使用 root用户执行脚本
(1)切换到root用户执行
[root@oracledb ~]# su - root
(2)执行两个用户脚本
[root@oracledb ~]# sh /data/app/oracle/inventory/orainstRootsh
[root@oracledb ~]# sh /data/app/oracle/product/1120/rootsh
14配置监听程序
(1)切换到oracle用户执行(建议退出重进oracle用户)
[root@oracledb ~]# su - oracle
(2)配置监听,查看输出结果
[oracle@oracledb ~]$ netca /silent /responsefile /home/oracle/response/netcarsp
(3)查看监听服务状态,若没启动需要启动
[oracle@oracledb ~]$ lsnrctl status
[oracle@oracledb ~]$ lsnrctl start
查看结果:
Parsing command line arguments:
Parameter "silent" = true
Parameter "responsefile" = /data/etc/netcarsp
Done parsing command line arguments
Oracle Net Services Configuration:
Profile configuration complete
Oracle Net Listener Startup:
Running Listener Control:
/data/app/oracle/product/1120/bin/lsnrctl start LISTENER
Listener Control complete
Listener started successfully
Listener configuration complete
Oracle Net Services configuration successful The exit code is 0
(4)查看监听端口
[oracle@oracledb ~]$ netstat -tnpl | grep 1521
15静默创建数据库
GDBNAME = "orcl"
SID = "orcl"
SYSPASSWORD = "oracle"
SYSTEMPASSWORD = "oracle"
SYSMANPASSWORD = "oracle"
DBSNMPPASSWORD = "oracle"
DATAFILEDESTINATION =/data/app/oracle/oradata
RECOVERYAREADESTINATION=/data/app/oracle/fast_recovery_area
CHARACTERSET = "ZHS16GBK"
TOTALMEMORY = " 6552 "
##其中TOTALMEMORY = " 6552 " 为6552 MB,物理内存8G80%
(2)切换到oracle用户执行
[root@oracledb ~]# su - oracle
(3)执行静默建库
[oracle@oracledb ~]$ dbca -silent -responseFile /home/oracle/response/dbcarsp
执行过程如下:
Copying database files
1% complete
3% complete
11% complete
18% complete
26% complete
37% complete
Creating and starting Oracle instance
40% complete
45% complete
50% complete
55% complete
56% complete
60% complete
62% complete
Completing Database Creation
66% complete
70% complete
73% complete
85% complete
96% complete
100% complete
Look at the log file "/data/app/oracle/cfgtoollogs/dbca/orcl/orcllog" for further details
(4)查看进程
[oracle@oracledb ~]$ ps -ef | grep ora_ | grep -v grep
(5)再次查看监听状态进行确认
[oracle@oracledb ~]$ lsnrctl status
结果显示:
The command completed successfully
16至此数据库就安装成功了,下面我们登录下数据库
(1)切换到oracle用户执行
[root@oracledb ~]# su - oracle
(2)登录数据库
[oracle@oracledb ~]$ sqlplus / as sysdba
(3)查询实例状态
SQL>select status from v$instance;
(4)查看数据库版本
SQL> select from v$version;
(5)激活scott用户
SQL>alter user scott account unlock;
SQL>alter user scott identified by tiger;
SQL>select username,account_status from dba_users;
17设置Oracle开机启动
(1)修改配置文件vi /data/app/oracle/product/1120/bin/dbstart 修改如下内容:
将脚本中的ORACLE_HOME_LISTNER=$1,修改为ORACLE_HOME_LISTNER=$ORACLE_HOME
(2)修改配置文件vi /data/app/oracle/product/1120/bin/dbshut 修改如下内容:
将脚本中的ORACLE_HOME_LISTNER=$1,修改为ORACLE_HOME_LISTNER=$ORACLE_HOME
(3)修改配置文件 vi /etc/oratab修改如下内容,
orcl:/data/app/oracle/product/1120:Y
(4)新建文件:vi /etc/rcd/initd/oracle 注意:建议全部复制脚本内容
#! /bin/bash
# oracle: Start/Stop Oracle Database 11g R2
# chkconfig: 345 90 10
# description: The Oracle Database is an Object-Relational Database Management System
# processname: oracle
/etc/rcd/initd/functions
LOCKFILE=/var/lock/subsys/oracle
ORACLE_HOME=/data/app/oracle/product/1120
ORACLE_USER=oracle
case "$1" in
start)
if [ -f $LOCKFILE ]; then
echo $0 already running
exit 1
fi
echo -n #34;Starting Oracle Database:"
su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl start"
su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
su - $ORACLE_USER -c "$ORACLE_HOME/bin/emctl start dbconsole"
touch $LOCKFILE
;;
stop)
if [ ! -f $LOCKFILE ]; then
echo $0 already stopping
exit 1
fi
echo -n #34;Stopping Oracle Database:"
su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl stop"
su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbshut"
su - $ORACLE_USER -c "$ORACLE_HOME/bin/emctl stop dbconsole"
rm -f $LOCKFILE
;;
restart)
$0 stop
$0 start
;;
status)
if [ -f $LOCKFILE ]; then
echo $0 started
else
echo $0 stopped
fi
;;
)
echo "Usage: $0 [start|stop|status]"
exit 1
esac
exit 0
(5)给 /etc/initd/oracle添加执行权限
[root@oracledb ~]# chmod +x /etc/initd/oracle
(6)开机启动oracle
[root@oracledb ~]# chkconfig oracle on
(7)给启动文件加权限
[root@oracledb ~]# cd /data/app/oracle/product/1120/bin/
[root@oracledb bin]# chmod 6751 oracle
[root@oracledb bin]# cd /var/tmp
[root@oracledb tmp]# chown -R oracle:oinstall oracle
(8)重启测试
[root@oracledb ~]# reboot
(9)切换到oracle用户登录状态下
[root@oracledb ~]# su - oracle
[oracle@oracledb ~]$ sqlplus / as sysdba
(10)解除锁定
SQL> alter user SYSTEM account unlock;
(11)这时候就可以用Navicat连接了
SQL> conn;
用户名:SYSTEM
密码:oracle
如果不能正确连接,改下密码试试
alter user system identified by 新密码
[root@oracledb ~]# mkdir -p /data/szzt
[root@oracledb ~]# cd /data/
[root@oracledb data]# chown oracle:oinstall -R szzt
[root@oracledb data]# ll
total 0
drwxr-xr-x 3 root root 20 Apr 8 21:14 app
drwxr-xr-x 8 root root 128 Aug 21 2009 database
drwxr-xr-x 2 oracle oinstall 6 Apr 14 16:17 szzt
[root@oracledb ~]# su - oracle
[oracle@oracledb ~]$ sqlplus / as sysdba
SQL> conn cshi
Enter password: 登录失败
Connected
SQL> create temporary tablespace DB_DATA_TMP tempfile'/data/szzt/DB_DATA_TMPdbf' size 500m autoextend on next 100m maxsize 10240m extent management local;
显示结果:
Tablespace created
SQL> create tablespace DB_DATA logging datafile'/data/szzt/DB_DATAdbf' size 2048m autoextend on next 100m maxsize 10240m extent management local;
显示结果:
Tablespace created
SQL> create user ceshi identified by ceshi default tablespace DB_DATA temporary tablespace DB_DATA_TMP;
显示结果:
User created
SQL> grant dba to ceshi;
显示结果:
Grant succeeded
SQL> conn ceshi ###用户名和密码一样,此时登录成功
[oracle@oracledb ~]$ cd /data/app/oracle/product/1120/bin/
注意:数据库导出 *** 作是在 源服务器 上进行
[oracle@oracledb bin]$ exp 用户名/密码@ IP地址 /orcl file =/data/szzt/ceshidmp owner='用户名'
Export terminated successfully without warnings
注意:数据库导入 *** 作是在 目标服务器 上进行
[oracle@oracledb bin]$ imp ceshi/ceshi@ 10100110 /orcl file=/data/szzt/ceshidmp fromuser=ceshi touser=ceshi
显示结果:可以看到导入的表过程(10100110是自己的目标数据库服务器)
Import terminated successfully without warnings
(1)、数据导入完毕后,我们可以使用DBeaver对数据库进行远程管理
(2)、测试连接,没问题后完成新建
(3)、连接上来后,我们就可以使用工具来进行管理数据库
这个问题相当专业了,之前我去周立功那边了解过的。
按照以下步骤进行安装:
1) 安装32位的兼容库和libncurses5-dev库
在安装交叉编译工具之前需要先安装32位的兼容库和libncurses5-dev库,安装32兼容库需要从ubuntu的源库中下载,所以需要在Linux主机系统联网的条件下,通过终端使用如下命令安装:
vmuser@Linux-host ~$sudo apt-get install ia32-libs
若Linux主机系统没有安装32位兼容库,在使用交叉编译工具的时候可能会出现错误:
-bash: /arm-fsl-linux-gnueabi-gcc: 没有那个文件或目录
在终端中使用如下命令则可以安装libncurses5-dev库。
vmuser@Linux-host ~$sudo apt-get install libncurses5-dev
如果没有安装此库,在使用make menucofig时出现如下所示的错误:
Unableto find the ncurses libraries or the
required headerfiles
'makemenuconfig' requires the ncurses libraries
Installncurses (ncurses-devel) and try again
make[1]: [scripts/kconfig/dochecklxdialog] 错误 1
make: [menuconfig] 错误 2
2) 安装交叉编译工具链
将交叉编译工具“gcc-444-glibc-2111-multilib-10_EasyARM-iMX283tarbz2”文件通过U盘的方式拷贝到Linux主机的“/tmp”目录下,然后执行如下命令进行解压安装交叉编译工具链:
vmuser@Linux-host ~$ cd /tmp
vmuser@Linux-host ~$ sudo tar -jxvfgcc-444-glibc-2111-multilib-10_EasyARM-iMX283tarbz2 -C /opt/
vmuser@Linux-host /tmp$ # 输入vmuser用户的密码“vmuser”
执行完解压命令后,交叉编译工具链将被安装到“/opt/gcc-444-glibc-2111-multilib-10”目录下。交叉编译器的具体目录是“/opt/gcc-444-glibc-2111-multilib-10/arm-fsl-linux-gnueabi/bin”,为了方便使用,还需将该路径添加到PATH环境变量中,其方法为:修改“/etc/profile”文件,具体 *** 作方法如下:
在终端中输入如下指令
vmuser@Linux-host ~$ sudo vi /etc/profile # 若提示输入密码,则输入“vmuser”
用vi编辑器打开“/etc/profile”文件后,在文件末尾增加如下一行内容:
export PATH=$PATH:/opt/gcc-444-glibc-2111-multilib-10/arm-fsl-linux-gnueabi/bin
文件修改并保存后,再在终端中输入如下指令,更新环境变量,使设置生效。
vmuser@Linux-host ~$source /etc/profile
在终端输入arm-fsl-linux-gnueabi-并按TAB键,如果能够看到很多arm-fsl-linux-gnueabi-前缀的命令,则基本可以确定交叉编译器安装正确,如下图所示。
在 SSH 下远程使用 IDE 编译和调试步骤如下:本地机安装运行xming,运行putty,设置putty的Enable X11 forwarding
跳板机上解压一个eclipse cdt,目录无所谓,哪有权限哪方便就丢哪,这解压到/opt目录,修改自己主目录下的profile文件,添加eclipse的执行文件目录到PATH环境中
putty用ssh登录到跳板机,直接输入命令eclipse &运行
至于eclipse的remote gdb就直接贴网上的了
linux下用eclipse和gdbserver远程调试嵌入式linux上(目标机)的程序_BBKK_新浪博客
默认的xming显示出来的界面可能字体会比较小,修改启动参数,在后面加-dip 100
有时会需要开多个session,或者还得用putty连开发板,这样用putty会开很多个窗口出来,推荐一个mtputty,可以把putty当作标签显示,切换方便很多,看起来也舒服很多
再继续就是本地和跳板之间的文件共享传输了,在跳板机上配置samba服务器,本地直接映射网络硬盘,访问跳板机跟访问本地硬盘一样方便,如果开机够快而且服务器从不关机的,还可以勾选登陆时重连
从开发平台到服务器的向上适化
适化概述
所谓适化就是将桌面应用转化为Client/Server应用
适化是一个很复杂的主题 这里不详细讲述 本节将介绍适化Delphi 应用程序中最重要的方面
适化的主要方面有
● 将数据库从桌面平台到服务器的适化
● 将应用程序转化为Client/Server的适化
适化还需要实现从桌面环境到Client/Server环境的转化
桌面数据库和SQL服务器数据库在许多方面有不同之处 例如
● 桌面数据库用于同一时刻单用户的访问 而服务器用于多用户访问
● 桌面数据库是面向记录的 而服务器是面向集合的
● 桌面数据库将每个表存储在独立的文件中 而服务器将所有的表存储在数据库中Client/Server应用必须解决更新的问题 最复杂的是联接 网络和事务控制
适化数据库
适化数据库包含下列步骤
● 在桌面数据库结构的基础上 定义服务器上的元数据
● 将数据从桌面转化到服务器中
● 解决下列问题
● 数据类型差异
● 数据安全性和完整性
● 事务控制
● 数据访问权
● 数据合法性
● 锁定
Delphi提供了两种方法适化一个数据库
● 使用Database Desktop工具 选择菜单Tools/Utilities/Copy to命令将数据库表从桌面方式拷贝到SQL格式
● 建立应用TBatchMove部件的应用程序
这两种方法都可以将表结构和数据从桌面数据源转化到服务器上 依靠这些数据库 可能需要改变结果表 例如 可能想进行不同数据类型的映射
也可以将下列特征加入数据库
● 完整性约束
● 索引
● 检测约束
● 存储过程和触发器
● 其它服务器特征
如果用SQL脚本和服务器数据定义工具定义元数据会更有效 然后用前面介绍的两种方法转移数据 因为如果是手工定义数据库表 Database Desktop和TBatchMove 部件将只拷贝数据
适化应用程序
在理论上 设计用来访问局部数据的Delphi应用程序做很少的修改就可以访问远程服务器上的数据 如果在服务器上定义适合的数据源 你就能将应用程序指向访问它 这只需简单地改变应用程序中TTable或TQuery部件的DatabaseName属性
实际上 在访问局部和过程数据源之间有许多重要的不同之处 Client/Server应用程序必须解决大量的在桌面应用中所没有的问题
任何Delphi应用程序都能用TTable或TQuery部件访问数据 桌面应用程序通常都是使用TTable部件 当适化到SQL服务器上时 用TQuery会更有效 如果应用程序要检索大量记录 则TQuery部件要略胜一筹
如果应用程序使用统计或数学函数 那么在服务器上通过存储过程执行这些函数会更有效 因为存储过程执行更快 使用存储过程还可以减少网络负载 特别是大量行数据的函数
例如 计算大量记录的标准差
● 如果该函数在客户端执行 所有的值从服务器上检索出来并送到客户端 导致网络拥塞
● 如果该函数在服务器端执行 则应用程序只需要服务器上的答案
Delphi客户/服务器应用实例分析
本节中采用的实例是Delphi 数据库的例子CSDEMO CSDEMO是Delphi客户/服务器编程的示例程序 它采用的数据库服务器是Local InterBase Server
CSDEMO较好地示范了BDE环境的配置 InterBASE Server高级功能应用 SQL服务器联接 触发器应用 存储过程编程和事务控制技术等 具有较高的参考价值 本节讲述下列内容
● 数据库环境介绍
● TDatabase的应用
● 不同数据库表的切换
● 触发器编程
● 存储过程编程
● 事务控制应用
数据库环境介绍
本例中采用的数据库服务器是Local InterBase Server Local InterBase是InterBase Server的单用户版 位 兼容ANSI SQL Local InterBase支持客户/服务器应用在单机上的开发和测试 并且可以很容易地适化到InterBase Server上 因此 开发客户/服务器应用采用Local InterBase作为原型开发环境是很方便的
IBLOCAL的BDE参数
本例中的SQL数据库是IBLOCAL 它是由BDE配置工具(BDECFG EXE)设置参数值 它的各项参数值列于下表
表 IBLOCAL的各项参数值
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
参 数 名 参 数 值
────────────────────────────────────
TYPE INTRBASE
PATH
SERVER NAME C:\INTRBASE\EXAMPLES\EMPLOYEE GDB
USER NAME SYSDBA
OPEN MODE READ/WRITE
SCHEMA CACHE SIZE
LANGDRIVER
SQLQRYMODE
SQLPASSTHRU MODE SHARED AUTOMIT
SCHEMA CHCHE TIME
MAX ROWS
BATCH COUNT
ENABLE SCHEMA CACHE FALSE
SCHEMA CACHE DIR
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
数据库结构介绍
IBLOCAL数据库的结构都是由InterBase服务器工具交互式SQL工具(ISQL)定义的
用ISQL定义数据库 首先要用Create Database命令建立数据库 建立的新数据库一般是以GDB为扩展名 建立好后 就可以用SQL语言定义数据库表 例如建立EMPLOYEE表的SQL语句如下
定义域名数据类型
CREATE DOMAIN FIRSTNAME AS VARCHAR( )
CREATE DOMAIN LASTNAME AS VARCHAR( )
CREATE DOMAIN COUNTRYNAME AS VARCHAR( )
CREATE DOMAIN EMPNO AS SMALLINT;
CREATE DOMAIN DEPTNO AS CHAR( )
CHECK (VALUE = OR (VALUE > AND VALUE <= ) OR VALUE IS NULL)
CREATE DOMAIN JOBCODE AS VARCHAR( )
CHECK (VALUE > )
CREATE DOMAIN JOBGRADE AS SMALLINT
CHECK (VALUE BEEEN AND )
CREATE DOMAIN SALARY AS NUMERIC( )
DEFAULT
CHECK (VALUE > )
建立EMPLOYEE表
lishixinzhi/Article/program/Delphi/201311/25125
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)