【Linux相识相知】计算机的组成、linux发行版和哲学思想、基础命令和目录结构(FHS)
从今天开始,Frank将开始在博客上记录自己学习linux的点点滴滴,F初来乍到,还望各位大佬多多指教。本次博客的主要内容如下:
- 计算机基础:简要的描述了计算机的组成及其功能;
- linux初识:介绍了linux主流的发行版,说明了不同的发行版之间的区别和linux的哲学思想,列出了linux发行版的基础目录名称命名法则及功能规定;
- 基础命令:详细介绍一些基础的命令,并就如何在linux系统上获取命令的帮助做出了解释。
一、计算机的组成及其功能
计算机主要是由5个部分组成
控制器(Control):正确的分布的完成每一条指令规定的功能。
运算器(Datapath):对数据进行算术运算和逻辑运算。
存储器(Memory):存储器的功能是存储程序、数据和各种信号、命令等信息,并在需要的时候提供这些信息
输入(input system):输入设备,常见的输入设备有键盘、鼠标、摄像头等。
输出(output system):输出设备,常用的输出设备有显示器、打印机等。
我们所说的中央处理器CPU(Central Processing Unit)就是由控制器和运算器组成的。所有的东西,包括处理器、显卡、存储器、声卡、内存等都是通过主板来组合到一起的。
如果把计算机比如成一个人:
CPU=大脑;
内存=脑袋中正在思考的数据区块,主要是给大脑提供信息;
硬盘=脑袋中的记忆区块,主要是存放记忆的地方,用的时候取出来,不用的时候放回去;
主板=神经系统,协调各个部件;
I/O设备=人体与外接沟通的,比如手,脚,皮肤、眼睛;
电源power=心脏,这就不多说了,没有电源,整个系统就无法运作
知识遗拾:
为什么32位机器最多只能支持4G的内存?
32位,其实指的是CPU的寻址能力,2^32 = 1024*1024*1024*4 B = 1024*1024*4KB = 1024*4MB = 4GB,所以64位的系统的性能比32高很多
CPU的指令周期单位HZ?
CPU 的指令周期常使用 MHz 或者是 GHz 之类的单位,这个 Hz 其实就是秒分之一。而在网络传输方面,由于网络使用的是 bit 为单位,因此网络常使用的单位为 Mbps 是 Mbits per second,亦即是每秒多少 Mbit。举例来说,大家常听到的 20M/5M 光纤传输速度,如果转成文件容量的 byte 时,其实理论最大传输值为:每秒 2.5Mbyte/ 秒 625Kbyte 的下载/上传速度。
二、linux的来历
1991年,芬兰大学生Linus Torvalds(下图就是这位牛逼的人物了)萌发了开发一个自由的UNIX操作系统的想法,当年,Linux就诞生了,为了不让这个羽毛未丰的操作系统矢折,Linus将自已的作品Linux通过Internet发布。后来linux加入了GNU组织,并遵循了GPL,
从此一大批黑客和编程人员加入到其开发中来,使Linux得到了飞速的发展(Linux也被称为GNU/Linux),其实linux本身只是一个内核,而GNU提供的则是一些开源的软件,比如x-window、gcc等。
Linus Torvalds
知识遗拾:
开源协定GPL:一个软件一旦遵循了GPL,那么使用者可以自由的执行,复制,再发行,学习、修改自由软件。由于第一个版本的GPL太过于严苛,后来出现较为宽松的GPLV2和GPLV3。除了GPL开源协定还有LGPL,BSD和Apache等。
三、linux的发行版
发行版为许多不同的目的而制作,包括对不同计算机结构的支持。实时应用等,现已经存在的发行版本就有几百种,但是其中比较常用的发行版也就几种。
1.Red Hat
红帽也许是世界使用的最多的发行版本了,普遍使用在服务器上,你可以免费的在其官网上获取最新的版本,但是版本如果存在bug或者不稳定,包含一些一些封闭的源代码软件,如果需要红帽提供技术支持,那就需要买人家的服务了,目前最新的版本为7.X。
2.Centos
Centos是基于Red Hat linux的企业级发行版本,但是它没有那些封闭的源代码软件,全部是开源的,现在国内很多大的电商在其服务器上运行的就是Cenntos,目前最新的版本为7.x(因为是红帽一家的)。
3.Debian
Debian是一个非常稳定的版本,但是安装过程是及其复杂的,你需要将源码根据自己的硬件编译成二进制文件来安装,这也是其稳定的原因,但是这样带来的坏处就是,一般的用户安装起来就非常头疼了。在Debian6中,linux的内核是完全开源的,所有的闭源软件都被隔离成了单独的软件包,放在Debian的软件源"Non-Free"部分,所以用户可以自行选项全开源的系统还是存在一起闭源的软件,目前最新版本为9.x。
4.Ubuntu
Ubuntu是基于debian发行版和unity桌面环境的,是一个以桌面应用为主的linux操作系统,目前最新版本为17.x。
5.SUSE
SUSE是德国非常著名的Linux发行版,后被Novell公司收购,SUSE Linux一向以华丽的用户界面著称;
6.Gentoo
Gentoo是Linux世界最年轻的发行版本,正因为年轻,所以能吸取在她之前的所有发行版本的优点。Gentoo最初由Daniel Robbins(FreeBSD的开发者之一)创建,首个稳定版本发布于2002年。由于开发者对FreeBSD的熟识,所以Gentoo拥有媲美FreeBSD的广受美誉的ports系统 ——Portage包管理系统。
知识遗拾:
发行的版本号和linux内核的版本是不一样的概念的
linux内核最新版为:4.11.8
4:表示主版本号
11:表示开发中的版本,如果为偶数的则是稳定版本
8:修订版本号,表示修改次数
可以通过官网下载查询:https://www.kernel.org/
其实所有的发行版的内核可以说都是版本不同或者相同的linux内核,然后将各种各样图形化界面,软件然后与内核组在一起就成个各种不同的版本。
两种用户界面:
1.GUI:图形化界面
GNome
KDE
2.CLI:命令行界面
bash
zsh
sh ....
终端设备
物理终端:控制台,console,/dev/console
虚拟终端:Ctrl+Alt+F[1-6],为tty,/dev/tty[1-6]
图形终端:
centos6:
Ctrl+Alt+F7
cnetos7:
在哪个虚拟终端启动就位于哪一个虚拟终端
串行终端:tyys,/dev/ttys#
伪终端:pts,/dev/pts#
使用tty查看终端设备
[root@localhost ~]# tty
/dev/pts/
四、linux的哲学思想
1.一切皆文件
在linux系统中,所有的资源都是以文件形式表现出来的,包括设备文件,普通文件,目录,套接字,反正你能看得到都是文件;
2.由众多功能单一的程序组成
在linux中,一个小程序就是拿来完成一个简单的任务的,如果想要完成很复杂的任务,那么就需要把小程序组合起来,一起完成。
3.尽量避免和用户交互
shell支持很多种编程语言,比如python,可以使用脚本来实现自动化得任务
4.使用文本保存配置信息
易于读取配置信息,可以使用文本编辑器就可以修改配置信息
五、linux命令的使用格式
linux命令的语法通用格式为:
#COMMAND OPTIONS ARGUMENTS
COMMAND
当发起一条命令的时候,系统请求内核将某个二进制程序运行为一个进程,命名本身是一个可执行的程序文件,二进制格式文件,有可能会调用共享库文件,并非所有的命令都有一个在某目录与之对应的可执行程序,在Linux中可执行文件为ELF类型,比如在windows上试exe或者msi:
多数系统程序文件都存放在:/bin, /sbin, /usr/bin, /usr/sbin,/usr/local/bin, /usr/local/sbin
普通命令:/bin, /usr/bin, /usr/local/bin
管理命令:/sbin, /usr/sbin, /usr/local/sbin
共享库:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64
32bits的库:/lib, /usr/lib, /usr/local/lib
64bits的库:/lib64, /usr/lib64, /usr/local/lib64
命令类型:
内置命令:由shell程序自带的命令
外部命令:独立的可执行程序文件,文件名即命令名
shell程序是独特的程序,复制解析用户提供的命令,她是从环境变量PATH中获取路径来查找可执行的文件的。
可以使用type COMMAND来获取命令是内置的还是外置:
内置:
[root@localhost ~]# type cd
cd is a shell builtin
外置:
[root@localhost ~]# type cat
cat is /usr/bin/cat
OPTIONS
选项,指定命令的运行特性,选项有两中表现形式:
短选项:例如-c,-d,-r,有些命令是没有-的,多个短选项,多数情况下是可以合并的
长选项:例如--help,不能合并
AGUMENTS
命令的作用对象,即命令对什么生效,有些命令的对象可以用多个,使用空格分开
六、基础命令
ifconfig
显示IP地址,MAC地址,收发包和丢包数目和错误包的个数
[root@localhost ~]# ifconfig
ens33: flags=<UP,BROADCAST,RUNNING,MULTICAST> mtu
inet 192.168.5.135 netmask 255.255.255.0 broadcast 192.168.5.255
inet6 fe80::7d5:374d:e0e2:37ce prefixlen scopeid 0x20<link>
ether :0c::3c::c0 txqueuelen (Ethernet)
RX packets bytes (113.7 KiB)
RX errors dropped overruns frame
TX packets bytes (74.6 KiB)
TX errors dropped overruns carrier collisions
lo: flags=<UP,LOOPBACK,RUNNING> mtu
inet 127.0.0.1 netmask 255.0.0.0
inet6 :: prefixlen scopeid 0x10<host>
loop txqueuelen (Local Loopback)
RX packets bytes (6.1 KiB)
RX errors dropped overruns frame
TX packets bytes (6.1 KiB)
TX errors dropped overruns carrier collisions
[root@localhost ~]# echo "hello linux"
hello linux
强引用,单引号:
[root@localhost ~]# echo '$PATH'
$PATH
弱引用,双引号:
[root@localhost ~]# echo "$PATH"
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
tty
显示当前终端的文件名
[root@localhost ~]# tty
/dev/pts/
startx
开启图形化界面
[root@localhost ~]# startx
export
export [-fn] [name[=value] ...] or export -p
Options:
-f refer to shell functions 代表[变量名称]中为函数名称
-n remove the export property from each NAME 删除环境变量,实际上没有删除,只是不会输出到后续指令的执行环境
-p display a list of all exported variables and functions 显示所有的环境变量
一个变量创建时,它不会自动地为在它之后创建的shell进程所知。而命令export可以向后面的shell传递变量的值。当一个shell脚本调用并执行时,它不会自动得到原为脚本(调用者)里定义的变量的访问权,除非这些变量已经被显式地设置为可用。export命令可以用于传递一个或多个变量的值到任何后继脚本。 ----《UNIX教程》
[root@localhost ~]# name="Frank"
[root@localhost ~]# echo $name
Frank
[root@localhost ~]# bash
[root@localhost ~]# echo $name
[root@localhost ~]# exit
exit
[root@localhost ~]# export name
[root@localhost ~]# echo $name
Frank
[root@localhost ~]# bash
[root@localhost ~]# echo $name
Frank
pwd
显示当前目录,当用户登录的时候,一般起始目录为其家目录,/home/username
[root@localhost ~]# pwd
/root
history
显示执行命令的历史信息,用户在登录系统时,会读取历史文件记录下的命令:~/.bash_history
[root@localhost ~]# history
history
pwd
cd /root
ls
history
-c:清除历史信息
-n:显示最近的n行
-a:将命令历史信息写到history_file文件中,默认会写到~/.bash_history下
-r:读取histor_file的内容到当前的history
-w:将目前的history内容写到history_file中
-d:删除指定行的命令历史
!编号:再次执行某一行的命令
!!:执行上一条命令
shutdown
关机命令
-c:将shutdown的命令取消,取消关机
-H:停止设备
-P:关闭电源
-r:重启设备
-h:将系统关机
-k:只送出信息,但是不关机
--no-wall:关机但是不送出任何信息
指定系统在22点关机
[root@localhost ~]# shutdown -r :
Shutdown scheduled for Sat -- :: EDT, use 'shutdown -c' to cancel.
指定5分钟后关机,同时给出告警信息
[root@localhost ~]# shutdown + "System will shutdown after 5 minutes"
Shutdown scheduled for Sat -- :: EDT, use 'shutdown -c' to cancel.
[root@localhost ~]#
[root@localhost ~]# date
Sat Jul :: EDT
%% a literal %
%a locale's abbreviated weekday name (e.g., Sun)
%A locale's full weekday name (e.g., Sunday)
%b locale's abbreviated month name (e.g., Jan)
%B locale's full month name (e.g., January)
%c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)
%C century; like %Y, except omit last two digits (e.g., )
%d day of month (e.g., )
%D date; same as %m/%d/%y
%e day of month, space padded; same as %_d
%F full date; same as %Y-%m-%d
%g last two digits of year of ISO week number (see %G)
%G year of ISO week number (see %V); normally useful only with %V
%h same as %b
%H hour (..)
%I hour (..)
%j day of year (..)
%k hour, space padded ( ..); same as %_H
%l hour, space padded ( ..); same as %_I
%m month (..)
%M minute (..)
%n a newline
%N nanoseconds (..)
%p locale's equivalent of either AM or PM; blank if not known
%P like %p, but lower case
%r locale's 12-hour clock time (e.g., 11:11:04 PM)
%R -hour hour and minute; same as %H:%M
%s seconds since -- :: UTC
%S second (..)
%t a tab
%T time; same as %H:%M:%S
%u day of week (..); is Monday
%U week number of year, with Sunday as first day of week (..)
%V ISO week number, with Monday as first day of week (..)
%w day of week (..); is Sunday
%W week number of year, with Monday as first day of week (..)
%x locale's date representation (e.g., 12/31/99)
%X locale's time representation (e.g., 23:13:48)
%y last two digits of year (..)
%Y year
%z +hhmm numeric time zone (e.g., -)
%:z +hh:mm numeric time zone (e.g., -:)
%::z +hh:mm:ss numeric time zone (e.g., -::)
%:::z numeric time zone with : to necessary precision (e.g., -, +:)
%Z alphabetic time zone abbreviation (e.g., EDT)
[root@localhost ~]# date +%F
--
将时间设置为2016年7月1日晚上21点17分30秒
[root@localhost ~]# date 070121172016.30
Fri Jul :: EDT
hwclock,clock
[root@localhost ~]# date
Fri Jul :: EDT
[root@localhost ~]# clock
Sat Jul :: AM EDT -1.059659 seconds
[root@localhost ~]# hwclock -s
[root@localhost ~]# date
Sat Jul :: EDT
alias
获取和定义命令的别名
获取命令的别名:
[root@localhost dev]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
定义别名:
[root@localhost dev]# alias cls="clear"
~]#alias NAME='COMMAND'
注意:仅对当前的shell进程有效
撤销别名:
~]#unalias NAME
[root@localhost dev]# unalias cls
which
查看命令的全路径
[root@localhost dev]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
[root@localhost dev]# which cd
/usr/bin/cd
使用--skip-alias:忽略别名
[root@localhost dev]# which --skip-alias ls
/usr/bin/ls
whereis
locate the binary, source, and manual page files for a command
查看命令的二进制,源文件和操作手册文件
[root@localhost dev]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls..gz /usr/share/man/man1p/ls.1p.gz
-b:仅搜索二进制程序路径
-m:仅搜索使用手册文件
[root@localhost dev]# whereis -b ls
ls: /usr/bin/ls
[root@localhost dev]# whereis -m ls
ls: /usr/share/man/man1/ls..gz /usr/share/man/man1p/ls.1p.gz
who
查看谁登陆系统了
[root@localhost dev]# who
root tty1 -- :
root pts/ -- : (192.168.5.1)
root pts/ -- : (192.168.5.1)
[root@localhost dev]# who -b
system boot -- :
[root@localhost dev]# who -r
run-level -- :
w
[root@localhost dev]# w
:: up :, users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 Sat01 :22m .08s .08s -bash
root pts/ 192.168.5.1 : .00s .25s .04s w
root pts/ 192.168.5.1 : : .04s .04s -bash
七、命令帮助
help COMMAND
一般内部命令可以使用help加命令可以获取命令帮助
COMMAND --help
外部命令可以使用长选项--help来获取帮助
info COMMAND
获取命令的在线文档
使用MAN来获取帮助
MAN的章节可以分为以下几个部分:
Executable programs or shell commands 用户命令
System calls (functions provided by the kernel) 系统调用
Library calls (functions within program libraries) 库调用
Special files (usually found in /dev) 设备
File formats and conventions eg /etc/passwd 文件格式
Games 游戏帮助
Miscellaneous (including macro packages and conventions), e.g. man(), groff() 杂项
System administration commands (usually only for root) 系统命令
Kernel routines [Non standard] kernel内部命令
可以使用whatis查看命令章节
[root@localhost ~]# whatis ls
ls () - list directory contents
MAN下的一些参数
NAME:功能性说明
SYNOPSIS:语法格式
DESCRIPTION:描述信息
OPTION:选项
EXAMPLES:使用示例
AUTHOR:作者
BUGS:报告程序bug的方式
SEE ALSO:参考
SYNOPSIS下的符号解释:
[ ]:可选内容
<>:必须提供的内容
a|b|c:多选1
...:同类内容可以出现多次
MAN下的操作和查询
同时很多程序都自带帮助文档,我们也可以到官网站点去查看官方文档或者使用搜索引擎去查找。
八、基础目录的命令法则和功用规定
linux文件命名法则:
1.文件名严格区分大小写
2.文件可以使用除/以外任意字符
3.文件名长度不能超过255字符
4.以.开头的文件为隐藏文件
在各种版本的linux发行版中,文件系统必要遵循FHS(Filesystem Hierarchy Standard,文件系统结构标准),它定义了一个发行版所必须有的文件目录和可选的文件目录
可参考:
http://www.pathname.com/fhs/
下图为linux的文件系统的结构,让我们来具体看一下每一个的功能
/:根目录
/bin:所有用户的可用的基本命令程序文件
/sbin:供系统管理使用的程序文件
/etc:系统程序的配置文件
/dev:存储特殊文件或者设备文件
设备有两种类型:字符设备(线性设备)、块设备(随机设备)
/var:存储常发生变化的数据的目录,cache、lib、log、opt、run、spool等
/tmp:为那些会产生临时文件的程序提供的用于存储临时文件的目录;可供所用户执行写入操作;有特殊权限
/usr:全局共享的只读数据路径
bin, sbin
lib, lib64
include:C程序头文件;
share:命令手册页和自带文档等架构特有的文件的存储位置
local:另一个层级目录;local hierarchy,让系统管理员安装本地应用程序
X11R6:X-Window程序的安装位置
src:程序源码文件的存储位置
/home:普通的家目录的集中位置;一般每个普通用户的家目录默认为此目录下与用户名同名的子目录
/boot:引导加载器必须用到的各静态文件
/lib:为系统启动或根文件系统上的应用程序(/bin, /sbin等)提供共享库,以及为内核提供内核模块
/opt:附加应用程序的安装位置;可选路径
/mnt:其它文件系统的临时挂载点
/media:便携式设备挂载点,cdrom, floppy等
/srv:当前主机为服务提供的数据
/lib64:64位系统特有的存放64位共享库的路径
/proc:基于内存的虚拟文件系统,用于为内核及进程存储其相关信息;它们多为内核参数,例如net.ipv4.ip_forward, 虚拟为net/ipv4/ip_forward, 存储于/proc/sys/, 因此其完整路径为/proc/sys/net/ipv4/ip_forward;
/sys:sysfs虚拟文件系统提供了一种比proc更为理想的访问内核数据的途径;其主要作用在于为管理Linux设备提供一种统一模型的的接口;
linux文件类型
-:常规文件
d:目录文件
b:block device,块设备文件,支持以“block”为单位进行随机的访问
c:character device,字符设备文件,支持以"character"为单位的线性访问
设备文件有两行标识(用八位二进制表示0-255):
major number:主设备号,用于标识设备类型,进入确定要加载的驱动程序
minor number:次设备号,用于标识同一类型中的不同的设备
l:symbolic link,符号链接文件
p:pipe,命名管道
s:socket,套接文件
知识遗拾:
linux文件系统的层级结构是一个倒置树状结构,“/”根为起点
绝对路径:从根开始表示出的路径
相对路径:从当前位置开始表示出的路径
程序的编译方式:
静态编译:利用静态函数库编译成的文件比较大,因为程序所需要的库都被整合到代码里面里面了,所以静态编译的优点就在于不需要其他库的支持,也能很好的拿到其他的运行环境中运行。但是这样带来的缺点就是当你的程序需要的库被改变的时候,你的程序就要被重新编译了;
动态链接:使用动态链接的方式的程序一般较小一点,因为所需要的库没有被整合到代码里面,程序执行,在需要调用相关库的时候,程序会到当前的运行环境下去寻找对应的库文件,才能被继续编译执行,所以当你程序被拿到其他的运行环境下,务必要能保证库的支持。
【Linux相识相知】计算机的组成、linux发行版和哲学思想、基础命令和目录结构(FHS)的更多相关文章
- Linux课程---4、Linux目录结构及常用命令(目录结构)
Linux课程---4.Linux目录结构及常用命令(目录结构) 一.总结 一句话总结: 家目录:./root:root用户的家目录 能执行的程序:./bin:所有用户都能执行的程序:./sbin:只 ...
- 【linux相识相知】网络属性配置
当我们拥有一个崭新的计算机的时候,第一步恐怕都是迫不及待的下载各种软件,看视频,听音乐等,这里的关键的一点是要有网络.现在的个人计算机大部分都是windows操作系统的,接入网络网络很简单,插上网线也 ...
- 【Linux相识相知】rpm包管理
我们日常在使用Windows的时候,如果要安装某个软件,最简单的方法就是在程序包的官网直接下载软件包到本地,一般是以.exe或者.msi格式的文件,然后一直下一步下一步就能安装成功了,但是在使用lin ...
- 【linux相识相知】磁盘分区及文件系统管理详解
磁盘,提供持久的数据存储,它不像我们的内存,如果突然断电了,在内存中的数据一般都会被丢掉了,内存中的数据在保存的时候,会被写到硬盘里面,磁盘也是一种I/O设备. 我们都知道磁盘分区完成之后,还要进行格 ...
- 【Linux相识相知】任务计划和周期性任务
在我们的生活中,有的工作是例行的,例如每年一次加薪.每年给女朋友过一次生日.每天上班都要打卡等,有的工作是临时发生的,例如明天朋友要来访,你需要准备午餐等等. 像很多例行的工作,你一旦忙起来就很容易忘 ...
- 【Linux相识相知】yum的配置使用和程序包的编译安装
在上一篇博客中,写到了如何使用rpm命令来安装.卸载软件等,但是大家都知道,各个软件包之间可能存在依赖关系,如果安装某个软件需要额外的依赖其他若干的包,那么我们就需要将其他额外的包一个一个的安装上去, ...
- Linux 标准目录结构 FHS
因为利用 Linux 来开发产品或 distribution 的团队实在太多了,如果每个人都用自己的想法来配置文件放置的目录,那么将可能造成很多管理上的困扰.所以,后来就有了 Filesystem H ...
- Linux下使用tree命令查看目录结构
Linux下的文件虽然是层次型组织结构的,但是我们平时登录到主机上的时候都是使用的各种shell并没有图形界面,看上去很不直观,Linux下有个小命令叫做tree,可以以目录树的形式显示文件结构,类似 ...
- linux 命令——23 目录结构
对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面 ...
随机推荐
- 类1(this指针/const成员函数/类作用域/外部成员函数/返回this对象的函数)
假设我们要设计一个包含以下操作的 Sales_data 类: 1.一个 isbn 成员函数,用于返回对象的 book_no 成员变量 2.一个 combine 成员函数,用于将一个 Sales_dat ...
- [Swift]八大排序算法(七):归并排序
排序分为内部排序和外部排序. 内部排序:是指待排序列完全存放在内存中所进行的排序过程,适合不太大的元素序列. 外部排序:指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存 ...
- MD5和SHA-1
MD5和SHA-1都是我们耳熟能详的术语了,很多人可能知道他们跟加密有关系,但是他们是怎么做到加密的,他们各自的特点又是什么.我来简单的讲一讲. MD5和SHA-1都被称作哈希(Hash)函数,用过J ...
- vmware vSphere虚拟网络之标准交换机(二)
一.标准交换机的特点: 1)只能用于物理主机 2)其他主机不能共享同一个虚拟交换机 3)不具备任何灵活性 4)每台ESXi主机都要配置一遍 二.网络图: 三.创建标准交换机: 登录web vCente ...
- hexo博客的相关配置
获得更多资料欢迎进入我的网站或者 csdn或者博客园 前面两节讲解了hexo博客的搭建以及jacman主题的配置,这节主要讲解博客的一些相关配置.比如404页面,图床,自定义页面,个人网站绑定(重要的 ...
- P3705 [SDOI2017]新生舞会 01分数规划+费用流
$ \color{#0066ff}{ 题目描述 }$ 学校组织了一次新生舞会,Cathy作为经验丰富的老学姐,负责为同学们安排舞伴. 有\(n\)个男生和\(n\)个女生参加舞会买一个男生和一个女生一 ...
- 加快npm包安装的方法
一直以来都感觉使用npm安装包的速度特别的慢,但是由于npm上面的包比较齐全,所以一直在忍受这种安装依赖包的折磨. 不过这种折磨,到今天为止应该是可以结束了,在知乎看到一个这样的说法: 用npmins ...
- JS中Math函数的常用方法
Math 是数学函数,但又属于对象数据类型 typeof Math => ‘object’ console.dir(Math) 查看Math的所有函数方法. 1,Math.abs() 获取绝对值 ...
- Optimizing and caching browser bundles...
扎心了,老铁!!! 他妈的,弄了几天都是卡在这里!!上网查了一下.说是我的内存不够,好吧.我慢慢等,然而让我等了好几天都没什么反应..两天了,一直卡在这里.今天在虚拟机也是发狠了. 我直接把虚拟机的内 ...
- php Apache No input file
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] 变为 RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]