Linux概念:Linux是一个以Intel系列CPU(CYRIX,AMD的CPU也可以)为硬件平台,完全免费的UNIX兼容系统,完全适用于个人的PC。它本身就是一个完整的32位的多用户多任务操作系统,因此不需要先安装DOS或其他的操作系统(MS Windows, OS2, MINIX…)就可以进行直接的安装。
Linux版本:其发行版本有Ubuntu、Centos、redhat、debian、opensuse等等;其中ubuntu注重界面,Centos注重服务器。其内核版本可以通过uname -a来查看。
Linux发展史:Linux的最早起源是在1991年10月5日由一位芬兰的大学生Linux Torvalds (Torvalds@kruuna.helsinki.fi)写了Linux核心程序的0.02版开始的,但其后的发展却几乎都是由互联网上的Linux社团(Linux Community)互通交流而完成的。Linux不属于任何一家公司或个人,任何人都可以免费取得甚至修改它的源代码(source code)。Linux上的大部分软件都是由GNU倡导发展起来的,所以软件通常都会在附着GNU Public License(GPL)的情况下被自由传播。GPL是一种可以使你免费获得自由软件的许可证,因此Linux使用者的使用活动基本不受限制(只要你不将它用于商业目的),而不必像使用微软产品是那样,需要为购满许可证付出高价还要受到系统安装数量的限制。(GPL协议: 其中一种:“你可以使用开源代码,同时你写出来代码,也必须开源”😉)
Linux优势:1.真正的支持多任务,多用户;2.支持多种文件系统(FAT32, NTFS…);3.开源, 支持重新编译,裁剪;4.运行稳定,功能强大, 性能优异
Linux的文件系统和Windows的文件系统有很大的不同,linux只有一个文件树,整个文件系统是以一个树根"/"为起点的,所有的文件和外部设备都以文件的形式挂结在这个文件树上,包括硬盘,软盘,光驱,调制解调器等。Linux系统没有磁盘的概念,只有目录,这和以"驱动器盘符为基础的Windows系统是大不相同的。
Linux目录如下:
/bin和/sbin :使用和维护UNIX和Linux系统的大部分基本程序都包含在/bin和/sbin里,这两个目录的名气之所以包含bin,是因为可执行的程序都是二进制文件。/bin目录通常用来存放用户最常用的基本程序,如:login、Shells、文件操作实用程序、系统实用程序、压缩工具。/bin目录通常存放基本的系统和系统维护程序,如:fsck、fdisk、mkfs、shutdown、lilo、init。存放在这两个目录中的程序的主要区别是:/sbin中的程序只能由root(管理员)来执行。
/ect :这个目录一般用来存放程序所需的整个文件系统的配置文件,其中的一些重要文件如下:passwd、shadow、fstab、hosts、motd、profile、shells、services、lilo.conf。
/lost+found :这个目录专门是用来存放那些在系统非正常死机后重新启动系统时,不知道该往哪里恢复的“流浪”文件的。
/boot :这个目录下面存放着和系统启用有关系的各种文件,包括系统的引导程序和系统核心部分。
/root :这是系统管理员(root)的主目录。
/home :系统中所有用户的主目录都存放在/home中,它包含实际用户(人)的主目录和其他用户的主目录。Linux同UNIX的不同之处是,Linux的root用户的主目录通常在/root或/home/root,而UNIX通常是在/。
/mnt :默认挂载的目录,按照约定,像CD-ROM,软盘,Zip盘这样的可以动的介质都应该安装在/mnt目录下,/mnt目录通常包含一些子目录,每个子目录是某种特定设备类型的一个安装点。例如:/cdrom/floppy/zip/win …。如过我们要使用这些特定设备,我们需要用mount命令从/dev目录中将外部设备挂接过来。
/tmp和/var :这两个目录用来存放临时文件和经常变动的文件;
/dev :这个目录里存放着各种外部设备的镜像文件,鼠标,键盘,终端。
/usr :按照约定,这个目录用来存放与系统的用户直接相关的程序或文件,这里面有每一个系统用户的主目录,就是相对于他们的小型"/"。
/proc :这个目录下面的内容是当前在系统中运行的进程的虚拟镜像,我们在这里可以看到由当前运行的进程号组成的一些目录,还有一个记录当前内存内容的kernel文件。
/tmp :临时目录
/lib :存放库文件,其中静态库.a,共享库.so。
/root :root超级管理员的主目录,root 拥有linux下的所有权限
首先介绍一个名词"控制台(console)",它就是我们通常见到的使用字符操作界面的人机接口,例如dos。我们说控制台命令,就是指通过字符界面输入的可以操作系统的命令,例如dos命令就是控制台命令。我们现在要了解的是基于Linux操作系统的基本控制台命令。
ls命令 :列举出目录下的文件和目录信息(list)。ls最常用的参数有三个:-a -l -F。ls -a除了显示一般文件名外,连隐藏文件也会显示出来。ls -l这个命令可以使用长格式显示文件内容,如果需要察看更详细的文件资料,就要用到ls -l这个指令。ls -F使用这个参数表示在文件的后面多添加表示文件类型的符号,例如*表示可执行,/表示目录,@表示连结文件,这都是因为使用了-F这个参数。但是现在基本上所有的Linux发行版本的ls都已经内建了-F参数,也就是说,不用输入这个参数,我们也能看到各种分辨符号。
cd命令 : 改变目录(change dir)
mkdir,rmdir命令 :mkdir命令用来建立新的目录,rmdir用来删除以建立的目录.
cp命令 :拷贝文件或目录,具体用法是cp -r 源文件(source) 目的文件(target),参数r是指连同元文件中的子目录一同拷贝,如果a目录中有其他的子目录或文件,递归拷贝命令 。
rm命令 : 这个命令是用来删除文件的,rm命令常用的参数有三个:-i, -r, -f。具体用法为:rm -i 文件名,系统会询问是否删除;rm -r 目录名这个操作可以连同这个目录下面的子目录都删除,功能上和rmdir相似。rm -f 文件名(目录名)这个操作可以进行强制删除。
mv命令 :这个命令的功能是移动目录或文件,引申的功能是给目录或文件重命名。当使用该命令来移动目录时,他会连同该目录下面的子目录也一同移走。另外因为linux下面没有rename的命令,所以如果你想给一个文件或目录重命名时可以用以下方法:mv 原文件(目录)名 新的文件(目录)名 。
du,df命令 :du命令可以显示目前的目录所占的磁盘空间,df命令可以显示目前磁盘剩余的磁盘空间。如果du命令不加任何参数,那么返回的是整个磁盘的使用情况,如果后面加了目录的话,就是这个目录在磁盘上的使用情况。
cat命令:这个命令是linux中非常重要的一个命令,它的功能是显示或连结一般的ascii文本文件。cat是concatenate的简写,它的用法如下:cat text 显示text这个文件;cat file1 file2 依顺序显示file1,file2的内容;cat file1 file2>file3 把file1,file2的内容结合起来,再"重定向(>)"到file3文件中。 ">“是一个非常有趣的符号,是往右重定向的意思,就是把左边的结果当成是输入,然后输入到file3这个文件中。这里要注意一点是file3是在重定向以前还未存在的文件,如果file3是已经存在的文件,那么它本身的内容被覆盖,而变成file1+file2的内容。如果〉左边没有文件的名称,而右边有文件名,例如:cat >file1 ,结果是会"空出一行空白行”,等待你输入文字,输入完毕后再按[Ctrl]+[c]或[Ctrl]+[d],就会结束编辑,并产生file1这个文件,而file1的内容就是你刚刚输入的内容。另外,如果你使用如下的指令: cat file1>>file2,这将变成将file1的文件内容"附加"到file2的文件后面,而file2的内容依然存在,这种重定向符>>比>常用,可以多多利用。
more,less命令 :这是两个显式一般文本文件的指令。如果一个文本文件太长了超过一个屏幕的画面,用cat来看实在是不理想,就可以试试more和less两个指令。more指令可以使超过一页的文件临时停留在屏幕,等你按任何的一个键以后,才继续显式。而less除了有more的功能以外,还可以用方向键往上或往下的滚动文件,所以当我们想随意浏览,阅读文章时,less是个非常好的选择。
clear命令 :这个命令是用来清除屏幕的,它不需要任何参数,就可以使用它清除屏幕上的信息。
pwd命令 :这个命令的作用是显示用户当前的工作路径。
ln命令:功能是为某一个文件在另外一个位置建立一个链接,这个命令最常用的参数是-s,具体用法是:ln -s 源文件 目标文件。当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。
man命令 : 如果你的英文足够好,那完全可以不靠任何人就精通linux,只要你会用man。Man实际上就是察看指令用法的help,学习任何一种UNIX类的操作系统最重要的就是学会使用man这个辅助命令。man是manual(手册)的缩写字,它的说明非常的详细,但是因为它都是英文,看起来非常的头痛。建议大家需要的时候再去看man
logout命令 :这是退出系统的命令,要强调的一点是,linux是多用户多进程的操作系统,因此如果你不用了,退出系统就可以了,关闭系统你就不用操心了,那是系统管理员的事情。但有一点切记,即便你是单机使用linux,logout以后也不能直接关机,因为这不是关机的命令。
mount命令 :装载的命令是mount,格式如下:mount -t 文件系统类型 设备名 装载目录 文件系统类型就是分区格式。
date命令 :时间。
最后说一个小技巧,命令参数不全:按1/2次tab。
系统管理基本上可以分为两种,一种是root(系统管理员)对linux的系统管理部分,root本身的职责就是负责整个linux系统的运行稳定,增加系统安全性,校验使用者的身份,新增使用者或删除恶意的使用者,并明确每一个在机器上的使用者权限等等。另一种就是每一个使用者(包括root)对自己文件的权限管理。因为linux是多用户多任务系统,每一个使用者都有可能将其工作的内容或是一些机密性的文件放在Linux工作站上,所以对每个文件或是目录的归属和使用权,都要有非常明确的规定。下面我就按管理员和一般用户分类来介绍基本的系统管理命令。
管理员使用的系统管理指令
adduser命令 :新增使用者账号的命令,如果你想新增一个叫做jack的用户,那么需在控制台下输入:adduser jack,这样就增加了一个名字为jazk的用户,要注意这里对大小写是敏感的。你还应当为用户设置口令或者是吩咐用户在第一次登录系统的时候为自己设置口令。
passwd命令 : 这个命令可以修改特定用户的口令,使用格式是:passwd 用户名。这时,系统会提示你输入新密码,你输入第一遍后,还要输入第二遍进行确认。输入两遍相同的密码之后,系统就接受了新的密码。如果这个命令是一般用户来使用的话,那就只能改变它自己的密码。
find,whereis,locate命令 :这三个命令都是用来查找文件的,使用格式分别是:find 路径名称 -name 文件名 参数;whereis 文件名;locate 文件名。一般来说,find命令功能最为强大,但是对硬件的损耗也是最大的,当你使用find去查找你个文件时,你会发现硬盘等在不停的闪动,这就意味着你的硬盘可能会比别人的少用个三四年。当你使用whereis或locate去查找文件时,你会发现硬盘却是安安静静的,这是因为这两个命令是从系统的数据库中查找文件,而不是去拼命的读硬盘。所以,如果平常你只是想找一些笑文件的话,使用whereis或locate就可以了,如果你是要进行系统管理的工作,那么使用find再加上一些参数就可以满足你的要求了。
su命令 :这个命令可以让普通用户变成具有管理员权限的超级用户(superuser),只要它知道知道管理员的密码就可以。多用户多任务系统的强调的重点之一就是系统的安全性,所以应避免直接使用root身份登录系统去做一些日常性的操作,因为时间一久root密码就有可能被知道而危害到系统安全。所以平常应避免用root身份登录,即使要管理系统,也请尽量使用su指令来临时管理系统,然后记住定期的更换root密码。加入你现在是以一个普通用户的身份登录系统,现在你输入:su,系统会要求你输入管理员的口令,当你输入正确的密码后,就可以获得全部的管理员权限,这是你就是超级用户(superuser)。但你执行完各种管理操作以后,只要输入logout就可以退回到原先的那个普通用户的状态。用法:1.su 切换到超级用户;2. su dy 切换到dy用户,但主目录保持不变;3.su -dy 切换到dy用户,同时切换到dy的主目录。
shutdown,halt命令 :这两个命令是用来关闭linux操作系统的。作为一个普通用户是不能够随便关闭系统的,因为虽然你用完了机器,可是这时候可能还有其它的用户正在使用系统。因此,关闭系统或者是重新启动系统的操作只有管理员才有权执行。另外linux系统在执行的时候会用部分的内存作缓存区,如果内存上的数据还没有写入硬盘,就把电源拔掉,内存就会丢失数据,如果这些数据是和系统本身有关的,那么会对系统造成极大的伤害。一般,我们建议在关机之前执行三次同步指令sync,可以用分号";“来把指令合并在一起执行,如:# sync;sync;sync 。使用shutdown关闭系统的时候有以下几种格式:shutdown (系统内置2分钟关机,并传送一些消息给正在使用的user) ;shutdown -h now (下完这个指令,系统立刻关机) ;shutdown -r now (下完这个指令,系统立刻重新启动,相当于reboot);shutdown -h 20:25 (系统会在今天的20:25关机) ;shutdown -h +10 (系统会在十分钟后关机) 。如果在关机之前,要传送信息给正在机器上的使用者,可以加”-q"的参数,则会输出系统内置的shutdown信息给使用者,通知他们离线。 至于halt命令,只要你输入halt,系统就会开始进入关闭过程,其效果和shutdown -h now是完全一样的,我每次关机的时候都是用halt。
reboot命令 :这个命令是用来重新启动系统的。当你输入reboot后,你就会看到系统正在将一个一个的服务都关闭掉,然后再关闭文件系统和硬件,接着机器开始重新自检,重新引导,再次进入linux系统。
普通用户使用的系统管理指令
chown命令 : 这个命令的作用是改变文件的所有者。 注意,但是当你改变了文件的所有者以后,该文件虽然在你的Home目录下,可是你已经无任何修改或删除该文件的权限了。
chmod命令 : 这个命令用来改变目录或文件的属性。chmod的用法比较多,chmod [-cfvR] [- -help] [--version] mode file ....。其中-c : 若该文件权限确实已经更改,才显示其更改动作;-f : 若该文件权限无法被更改也不要显示错误讯息;-v : 显示权限变更的详细资料;-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更);–help : 显示辅助说明;–version : 显示版本;mode : 权限设定字串,格式如下 :[ugoa...][[+-=][rwxX]...][,...].u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
顺便说一下Linux的文件调用权限,文件所有者(Owner)、用户组(Group)、其他用户(Other Users)。

ps命令 :ps 是用来显示目前你的 process 或系统 processes 的状况。以下列出比较常用的参数:-a 列出包括其他 users 的 process 状况;-u 显示 user - oriented 的 process 状况 ;x 显示包括没有 terminal 控制的 process 状况 ;-w 使用较宽的显示模式来显示 process 状况 。
kill命令 :kill 指令的用途是送一个 signal 给某一个 process 。因为大部份送的都是用来杀掉 process 的 SIGKILL 或 SIGHUP ,因此称为 kill 。kill 的用法
为:kill [ -SIGNAL ] pid …;kill –l。SIGNAL 为一个 singal 的数字,从 0 到 31 ,其中 9 是 SIGKILL ,也就是一般用来杀掉一些无法正常 terminate 的信号。你也可以用 kill -l 来查看可代替 signal 号码的数目字。
Linux世界里最常用的几种工具软件,包括:vi, tar, gzip, rpm。
vi是Linux(UNIX)世界最强大的文本编辑工具,它的一些基本使用方法如下:
vi的三种状态:
vi的基本操作:
Command mode下功能键简介:
Last line mode下指令简介:
(注意:使用前请先按ESC键确定在Command mode下,按’:'或‘/’或‘?’三键即可进入Last line mode)
进入Insert mode:set nu(可用:set all列出所有的选择项)。
寻找字串:寻找字串 /word(由首至尾寻找)?word(由尾至首寻找)。
tar,gzip的使用方法如下:
压缩一组文件为tar.gz后缀: #tar cvf backup.tar /ect。 #gzip -q backup.tar或tar cvfz backup.tar.gz /etc。
释放一个后缀为tar.gz的文件:#gunzip backup.tar.gz。 #tar xvf backup.tar或 #tar xvfz backup.tar.gz。
用一个命令完成压缩:#tar cvf -/etc/ |gzip -qc > backup.tar.gz。
用一个命令完成释放:# gunzip -c backup.tar.gz | tar xvf -。
如何解开tar.Z的文件? #tar xvfz backup.tar.Z 或 #uncompress backup.tar.Z 。 #tar xvf backup.tar。
如何解开.tgz的文件?#gunzip backup.tgz。
如何压缩和解压缩.bz2的包?#bzip2 /etc/smb.conf,这将压缩文件smb.conf成smb.conf.bz2。#bunzip2 /etc/smb.conf.bz2这将在当前目录下还原smb.conf.bz2为smb.conf。
RPM是世界著名的Red Hat公司推出的一种软件包安装工具,全称为Redhat Package Manager。RPM的出现提供了一种全新的软件包安装方法,在方便性上甚至超过了微软的Windows。下面我就介绍一下RPM的基本使用方法。
安装一个包:# rpm -ivh < rpm package name>
升级一个包:# rpm -Uvh < rpm package name>
移走一个包:# rpm -e < rpm package name>
安装参数:–force 即使覆盖属于其它包的文件也强迫安装 。–nodeps 如果该RPM包的安装依赖其它包,即使其它包没装,也强迫安装。
查询一个包是否被安装:# rpm -q < rpm package name>
得到被安装的包的信息:# rpm -qi < rpm package name>
列出该包中有哪些文件:# rpm -ql < rpm package name>
列出服务器上的一个文件属于哪一个RPM包:#rpm -qf 文件名称
可综合好几个参数一起用:# rpm -qil < rpm package name>
列出所有被安装的rpm package: # rpm -qa < rpm package name>
电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。 准备工作: 1、U盘一个(尽量使用8G以上的U盘)。 2、一台正常联网可使用的电脑。 3、ghost或ISO系统镜像文件(Win10系统下载_Win10专业版_windows10正式版下载-系统之家)。 4、在本页面下载U盘启动盘制作工具:系统之家U盘启动工具。 U盘启动盘制作步骤: 注意:制作期间,U盘会被格式化,因此U盘中的重要文件请注
在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList()Obt
1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,
Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功
需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc
ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear
因为我现在正在做一些时间测量,我想知道是否可以在不使用Benchmark类或命令行实用程序time的情况下测量用户时间或系统时间。使用Time类只显示挂钟时间,而不显示系统和用户时间,但是我正在寻找具有相同灵active的解决方案,例如time=TimeUtility.now#somecodeuser,system,real=TimeUtility.now-time原因是我有点不喜欢Benchmark,因为它不能只返回数字(编辑:我错了-它可以。请参阅下面的答案。)。当然,我可以解析输出,但感觉不对。*NIX系统的time实用程序也应该可以解决我的问题,但我想知道是否已经在Ruby中实
在Ruby中,以毫秒为单位获取自纪元(1970)以来的当前系统时间的正确方法是什么?我试过了Time.now.to_i,好像不是我想要的结果。我需要结果显示毫秒并且使用long类型,而不是float或double。 最佳答案 (Time.now.to_f*1000).to_iTime.now.to_f显示包含十进制数字的时间。要获得毫秒数,只需将时间乘以1000。 关于ruby-以毫秒为单位获取当前系统时间,我们在StackOverflow上找到一个类似的问题:
关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭8年前。Improvethisquestion我们有以下(以及更多)系统,我们将数据从一个应用推送/拉取到另一个:托管CRM(InsideSales.com)Asterisk电话系统(内部)横幅广告系统(openx,我们托管)潜在客户生成系统(自行开发)电子商务商店(spree,我们托管)工作板(本土)一些工作网站抓取+入站工作提要电子邮件传送系统(如Mailchimp,自主开发)事件管理系统(如eventbrite,自主开发)仪表板系统(大量图表和
我正在尝试找出一种方法来显示来自不在RAILS_ROOT下(在RedHat或Ubuntu环境中)的已安装文件系统的图像。我不想使用符号链接(symboliclink),因为这个应用程序实际上是通过Tomcat部署的,而当我关闭Tomcat时,Tomcat会尝试跟随符号链接(symboliclink)并删除挂载中的所有图像。由于这些文件的数量和大小,将图像放在public/images下也不是一种选择。我查看了send_file,但它只会显示一张图片。我需要在一个格式良好的页面中显示6个请求的图像。由于膨胀,我宁愿不使用Base64编码,但我不知道如何将图像数据与呈现的页面一起传递下去。