Base64编码在电子邮件中很常见,FoxMail、Outlook等邮件用户代理发邮件时进行SMTP验证,就是输入base64编码格式的用户名和密码进行验证的,而邮件的主体内容和附件都很普遍的使用base64编码进行传输。
这是测试文件file,内容就只有一行字符串”snailwarrior”。
[root@pps~]snailwarrior12
第一种,给文件file进行base64编码,并打印到标准输出,如下
[root@pps~]c25haWx3YXJyaW9yCg==12
也可以这样:
[root@pps~]c25haWx3YXJyaW9yCg==12
第二种,从标准输入读取文件内容,base64编码并打印到标准输出
[root@pps~]snailwarriorc25haWx3YXJyaW9yCg==123
我是输入snailwarrior,回车,然后按Ctrl+D结束文件输入的。
【注意】如果我不输入回车,连续输入两次Ctrl+D,看看效果如何,如下,
[root@pps~]snailwarriorc25haWx3YXJyaW9y12
可以看出,编码出来的字符串是:c25haWx3YXJyaW9y
我的神!两种方式编码出来的结果不一样啊!继续往下测试。
第三种,对字符串”snailwarrior”编码,并打印到标准输出,如下
[root@pps~]c25haWx3YXJyaW9yCg==12
这个结果跟前面”cat file”和输入snailwarrior按回车再按Ctrl+D的情况是一样的。为什么不按回车直按两次Ctrl+D的结果不一样呢?我们再来看看下面这个例子:
[root@pps~]c25haWx3YXJyaW9y12
你是不是惊讶的发现“缘由”了呢?
echo -n 选项没有输出字符串结尾的’\n’换行字符,因此字符串”snailwarrior”精确的base64编码是”c25haWx3YXJyaW9y”,可以用PHP函数来检验哦。文件方式等进行的”snailwarrior”字符串编码都带入了对’\n’的编码,因此,不小心就会发生莫名的编码错误哦。
base64的Java代码如下,
String=;byte[]enbytes=Base64.encodeBase64(pwd.getBytes());log.info(,newString(enbytes));byte[]debytes=Base64.decodeBase64(newString());log.info(,newString(debytes));1234567
需要通过maven依相应的jar文件,如下,
commons-codeccommons-codec
LINUX操作系统的启动过程
一、启动内核 首先介绍启动内核部分。 电脑启动时,BIOS装载MBR,然后从当前活动分区启动,LILO获得引 导过程的控制权后,会显示LILO提示符。 此时如果用户不进行任何操作,LILO将在等待制定 时间后自动引导默认的操作系统,而如果在此期间按下TAB键,则可以看到一个可引导的操作 系统列表,选择相应的操作系统名称就能进入相应的操作系统。 当用户选择启动LINUX操作系统时,LILO就会根据事先设置好的信息从ROOT文件系统所在的分 区读取LINUX映象,然后装入内核映象并将控制权交给LINUX内核。 LINUX内核获得控制权后, 以如下步骤继续引导系统: 1. LINUX内核一般是压缩保存的,因此,它首先要进行自身的解压缩。 内核映象前面的一些 代码完成解压缩。 2. 如果系统中安装有可支持特殊文本模式的、且LINUX可识别的SVGA卡,LINUX会提示用户 选择适当的文本显示模式。 但如果在内核的编译过程中预先设置了文本模式,则不会提示选 择显示模式。 该显示模式可通过LILO或RDEV工具程序设置。 3. 内核接下来检测其他的硬件设备,例如硬盘、软盘和网卡等,并对相应的设备驱动程序 进行配置。 这时,显示器上出现内核运行输出的一些硬件信息。 4. 接下来,内核装载ROOT文件系统。 ROOT文件系统的位置可在编译内核时指定,也可通过 LILO或RDEV指定。 文件系统的类型可自动检测。 如果由于某些原因装载失败,则内核启动 失败,最终会终止系统。 二、执行init程序 其次介绍init程序,利用init程序可以方便地定制启动其间装入哪些程序。 init的任务是 启动新进程和退出时重新启动其它进程。 例如,在大多数linux系统中,启动时最初装入 六个虚拟的控制台进程,退出控制台窗口时,进程死亡,然后init启动新的虚拟登录控制台, 因而总是提供六个虚拟登陆控控制台进程。 控制init程序操作的规则存放在文件/etc/inittab中。 Red Hat Linux缺省的inittab文 件如下: # #inittab This file describes how the INIT process should set up the system in a certain #run-level. # # #Default runlevels used by RHS are: #0-hALT(Do NOT set initdefault to this) #1-Single user mode #2-Multiuser,WITHout NFS(the same as 3,if you do not have networking) #3-Full multiuser mode #4-unused #5-X11 #6-reboot(Do NOT set initdefault to this) # id:3:initdefault: #system initialization si::sysinit:/etc/rc.d/ 10:0:wait:/etc/rc.d/rc 0 11:1:wait:/etc/rc.d/rc 1 12:2:wait:/etc/rc.d/rc 2 13:3:wait:/etc/rc.d/rc 3 14:4:wait:/etc/rc.d/rc 4 15:5:wait:/etc/rc.d/rc 5 16:6:wait:/etc/rc.d/rc 6 #Things to run in every runlevel ud:once:/sbin/update #Trap CTRL-ALT-delete ca::ctrlaltdel:/sbin/shutdown -t3 -r now #When our UPS tells us power has failed,assume we have a few minutes of power a #shutdown for 2 minutes from now. #This does,of course,assume you have powered installed and your UPS connected and working #correctly. pf::powerfail:/sbin/shutdown -f -h +2 Power Restored;Shutdown Cancelled #Run gettys in standard runlevels 1:respawn:/sbin/minggetty tty1 2:2345:respawn:/sbin/minggetty tty2 3:2345:respawn:/sbin/minggetty tty3 4:2345:respawn:/sbin/minggetty tty4 5:2345:respawn:/sbin/minggetty tty5 6:2345:respawn:/sbin/minggetty tty6 #Run xdm in runlevel 5 x:5:respawn:/usr/bin/X11/xdm -nodaemon Linux有个运行级系统,运行级是表示系统当前状态和init应运行哪个进程并保持在这种 系统状态中运行的数字。 在inittab文件中,第一个项目指定启动时装入的缺省运行级。 上例中是个多用户控制台方式,运行级为3。 然后,inittab文件中每个项目指定第二个 字段的项目用哪种运行级(每个字段用冒号分开)。 因此,对运行级3,下列行是相关的: 13:3:wait:/etc/rc.d/rc 3 1:respawn:/sbin/minggetty tty1 2:2345:respawn:/sbin/minggetty tty2 3:2345:respawn:/sbin/minggetty tty3 4:2345:respawn:/sbin/minggetty tty4 5:2345:respawn:/sbin/minggetty tty5 6:2345:respawn:/sbin/minggetty tty6 最后六行建立Linux提供的六个虚拟控制台。 第一行运行启动脚本/etc/rc.d/ rc 3; 这将运行目录/etc/ rc.d/rc3.d中包含的所有脚本,这些脚本表示系统初始化时要启动的程序。 一般来说, 这些脚本不需要编辑或改变,是系统缺省的。
linux是什么
什么是 Linux ?什么是操作系统?要了解 Linux 之前,就不能不知道什么是操作系统 ( Operation System, OS ),所以,首先我们来简单的说一说什么是操作系统吧!先来想一想,当我们使用计算机时,屏幕上面显示的咚咚是由哪里来的?嗯!是由显示卡与屏幕显像的;那么你现在可以藉由网络看到这篇文章,则是藉由 Internet 、网络卡、网络线以及所有相关的电子器材与网络器材所完成的一项任务!如果你要看 VCD 呢?那么就需要光驱、光盘、声卡的发声等等的支持。 这么说来的话,所以在『工作』的东西都是『硬件』的工作呀!对了!就是这些计算机硬件在工作的。 那么硬件怎么工作呢?那就是藉由『操作系统』来达成的啰!这个操作系统就是在沟通你这个使用者跟硬件之间的讯息传递啦!也就是说,没有操作系统,那么你的计算机硬件就只是一堆废铁,什么工作都不能做的!其实 Linux 就是一个操作系统,这个操作系统里头含有最主要的 kernel 以及 kernel 提供的工具啦!他提供了一个完整的操作系统当中最底层的硬件控制与资源管理的完整架构,这个架构是沿袭 Unix 良好的传统来的,所以相当的稳定而功能强大!此外,由于这个优良的架构可以在目前的个人计算机 ( X86 系统 ) 上面跑,所以很多的软件开发者将他们的工作心血移转到这个架构上面,那就是很多的应用软件啦!虽然 Linux 仅是其核心与核心提供的工具,不过,由于核心、核心工具与这些软件开发者提供的软件的整合,使得 Linux 成为一个更完整的、功能强大的操作系统啰!从 Unix 到 Linux 这一段历史为什么大家常常会说, Linux 是很稳定的一套操作系统呢?这是因为, Linux 他有个老前辈,那就是 Unix 家族啰!有这个前辈的提携,让 Linux 这个小老弟很快的就成为一套稳定而优良的操作系统啦!所以,底下我们来谈一谈 Unix 到 Linux 的这一段历史吧! 早在 Linux 出现之前的二十年 ( 大约在 1970 年代 ), 就有一个相当稳定而成熟的操作系统存在了!那就是 Linux 的老大哥『 Unix 』是也!怎么这么说呢?!他们这两个家伙有什么关系呀?这里就给他说一说啰!众所皆知的, Linux 的核心是由 Linus Torvalds 在 1991 年的时候给他开发出来的,并且丢到网络上提供大家下载,后来大家觉得这个小东西 ( Linux Kernel ) 相当的小而精巧,所以慢慢的就有相当多的朋友投入这个小东西的研究领域里面去了!但是为什么这的小东西这么棒呢?!然而又为什么大家都可以免费的下载这个东西呢?!嗯!等鸟哥慢慢的唬xx....喔不!听我慢慢的道来! 一个没有完成的梦想: Bell, MIT 与 GE 的『 Multics 』系统早期的计算机并不像现在的个人计算机一般,他可不是一般人碰的到的玩意儿,除非是军事或者是高科技用途才有可能接触到这类的 Computer !而如前面所言,有计算机硬件还需要操作系统的配合才能够发挥计算机的效能,不过,在那个年代,由于计算机算是『奢侈品』,喔~应该说是『贵重物品』,所以,可能一间学校就只有一部大型主机当然,那个年代所谓的大型主机仍然无法提供适度的运算能力的。 不过,既然只有一部大型主机,然而有许许多多的教师、学生要想要来使用,怎么办呢?为了解决这个问题,在 1960 年代初期,麻省理工学院 ( MIT ) 发展了所谓的『兼容分时系统 ( Compatible Time-Sharing System, CTSS )』,就字面上的意义来看,他主要让大型主机可以提供多个终端机联机进入主机使用主机的资源, ( 附带一提,当时的终端机 ( Terminal ) 本身并没有软件或者可供使用的资源,这些终端机要能使用,一定必需要联机登入主机之后,才能够使用主机的资源来工作!) 当时可以让约 30 位使用者联机使用主机。 而为了让这个分时系统更加的强大,所以,在 1965 年前后由贝尔研究室 ( Bell )、 麻省理工学院 ( MIT ) 及奇异电器公司 ( GE ) 开始来共同开发一个名为 Multics 的大型计画,目标是想让大型主机可以联机 300 位以上的使用者。 不过,在奋斗了四年之后,该计画仍然宣告不治...喔!是失败啦!(注: Multics 有复杂、多数的意思。 ) 一个小型档案系统的产生:1969 年 Ken Thompson 的小型 file server system在复杂的 Multics 系统的计画失败后,贝尔研究室当然就退出该计画。 就在这个计画解散之后,曾经参与 Muitics 的贝尔研究室的成员 Ken Thompson 由于自己工作上的需求,需要一套档案存取的小型操作系统,便在 1969 年的时候以 DEC 公司 ( Digital Equipment Corporation ) 的计算机 PDP-7 为硬件基准,设计了一个适合自己工作环境的小型档案系统,其中也含有他自行开发的一些小工具。 那个系统就是最早期的 Unix 的源头!当初 Ken 设计这个档案系统时,主要是为了自己的存取方便所设计的简单 OS ,因此将原有的 Multics 系统大幅度的简化,不过,在当时还并没有 Unix 这个名词的出现! Unix 的正式诞生:1973 年 Ritchie 等人以 C 语言写出第一个正式 Unix 核心由于 Thompson 写的那个操作系统实在太好用了,所以在 Bell 研究室内部广为流传,并且数度经过改版。 到了 1973 年, Bell 研究室的 Dennis Ritchie 等人为了让这个系统的执行效能更佳化,所以使用编译效能更好的 C 语言将原有的 1969 年的那个系统之核心大幅度的改写过,并且确定该操作系统名称为 Unix,呵呵!那就是最早的 Unix 操作系统啰!不过,由于这个操作系统是由这一群工程师所开发完成的,而且使用者也大多是这方面的工程师,因此造成了后来 Unix 系统接口较难被一般使用者接受的情况 @_@ (注: 相对于 Multics ,Unix 具有单一的意思!) 重要的 Unix 分支: 1977 年 BSD 的诞生在 Unix 早期的发展中,有一件相当重要的事情,那就是 BSD 的诞生!由于 C 语言是一种高级语言,他可以被应用在不同的硬件架构上面,而 Unix 本身就是 C 语言写成的!在 Unix 发表之后, 柏克莱大学 ( Berkeley ) 的教授对于这个操作系统相当的有兴趣,在经过取得 Unix 的原始码,并且几经修改之后,终于在 1977 年发表了第一代的 Berkeley Software Distribution ( BSD ) 。 这个 BSD 是 Unix 的一个分支,他的发展对于 Unix 有相当大的影响,例如后来的 Sun 公司就是使用 BSD 发展的核心进行 .
Linux如何给硬盘分区?
一、查看当前的磁盘分区
使用root用户登录到Linux系统。
Linux如何添加磁盘分区
右键点击计算机桌面空白处,点击“Open Teminal”,打开命令终端。
Linux如何添加磁盘分区
输入 fdisk -l 命令,查看当前系统的磁盘分区。
Linux如何添加磁盘分区
二、为虚拟机添加硬盘
打开VMware管理客户端,右键点击要添加硬盘的虚拟机,点击“编辑设置”,编辑虚拟机的设置。
Linux如何添加磁盘分区
在虚拟机属性界面,点击“添加”—“硬盘”,添加一个新的硬盘。
Linux如何添加磁盘分区
等待虚拟机配置完成。
Linux如何添加磁盘分区
三、磁盘分区与格式化
返回到Linux系统的命令终端,再次输入 fdisk -l 命令,就可以看到新添加的硬盘了。 在本例中,看到的是 /dev/sdb 这个硬盘。
Linux如何添加磁盘分区
输入 fdisk /dev/sdb 开始对新添加的硬盘进行分区操作。
Linux如何添加磁盘分区
输入 n 按回车键,然后再输入 p ,按回车键。 n 表示新建一个分区,p 表示是主分区。 输入 m 可以查看所有的命令说明。
Linux如何添加磁盘分区
Linux如何添加磁盘分区

输入Partition number(即:分区号),按回车键。 如果在 /dev/sdb 上没有建立过其他分区,则输入 1 ,如果建立过其他分区,则按顺序编号即可。 输入 First cylinder (即:分区的起始柱面),保持默认值即可,按回车键,输入Last cylinder (即:分区的结束柱面)或空间大小。
Linux如何添加磁盘分区
等待分区创建完成,输入 w 保存磁盘分区,并退出磁盘分区命令。
Linux如何添加磁盘分区
再次输入 fdisk -l 命令,就可以看到创建好的磁盘分区了,在本例中磁盘分区是/dev/sdb1 。
Linux如何添加磁盘分区
输入 3 /dev/sdb1 命令,将用ext3文件系统格式对该磁盘分区进行格式化。
Linux如何添加磁盘分区
等待格式化操作完成,磁盘分区就添加好了,并被格式化为 ext3 了。
发表评论