大数据之Linux
1 Linux的入门
1.1 概述
- Linux内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上出于个人爱好而编写的。
- Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。Linux能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位的硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
- 目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS等。
1.2 Linux和Windows的区别
2 VM和Linux的安装
- 略。
3 Linux文件和目录结构
3.1 Linux文件
- Linux系统中一切皆为文件。
3.2 Linux目录结构
4 VI/VIM编辑器
4.1 概述
- vi是Unix操作系统和类Unix操作系统中最通用的文本编辑器。
- vim编辑器是从vi上发展出来的一个性能更加强大的文本编辑器。可以主动的以字体颜色辨别语法的正确性,方便程序设计。vim和vi编辑器完全兼容。
4.2 vim的模式
4.2.1 一般模式(普通模式)
- 以vim打开一个文件就直接进入了一般模式了,这个模式是默认的模式。在这个模式中,你可以使用“上下左右”按键来移动光标,你可以使用“删除光标”或“删除整行”来处理文件呢日用,也可以使用“复制”、“粘贴”来处理你的文件数据。
- 常用的语法:
- 示例:移动
- 示例:复制、粘贴、取消
- 示例:删除、撤销
4.2.2 编辑模式
- 在一般模式中可以进行删除、复制、粘贴等动作,但是却无法编辑文件内容,要等到你按下"i"、“a”、“o”等任何一个字母才会进入编辑模式。
- 注意:通常在Linux中,按上述的键的时候,在画面的左下方会出现INSERT等字样,此时才可以进行编辑。
- 如果要从编辑模式回到一般模式,按ESC键即可退出编辑模式。
- 进入编辑模式:
- 退出编辑模式:按ESC键即可。
- 示例:
4.2.3 命令模式
- 在一般模式当中,输入":"、"/"、"?"3个中的一个按钮,就可以进入命令模式。
- 在这个模式中,你可以搜索关键字,读取、存盘、离开vim、显示行号等。
- 基本语法:
- 示例:
5 用户管理
5.1 基本介绍
- Linux是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须先向系统管理员申请一个账号,然后以这个账号进入这个系统。
- 在Linux中分为用户(u)、所属组(g)和其他人(o)的概念。
- 在Linux中用户必须至少属于一个所属组,默认情况下,创建用户的时候,如果不给用户指定所属组以及家目录,系统会给用户创建同名的所属组和家目录。
5.2 添加用户
- 语法:添加用户
useradd 用户名
- 示例:
- 语法:添加用户并指定所属组
useradd -g 所属组名 用户名
- 示例:
- 语法:创建用户指定家目录,注意不需要先创建家目录,只需要指定家目录路径即可
useradd -d 家目录路径 用户名
- 示例:
5.3 删除用户
- 语法:删除用户,但是不删除用户的家目录
userdel 用户名
- 示例:
- 语法:删除用户的同时删除用户的家目录
userdel -r 用户名
- 示例:
5.4 设置用户密码
- 注意:用户首先要先存在,才能设置用户密码。
- 语法:
passwd 用户名
- 示例:
5.5 查看用户信息
- 语法:如果没有用户,会返回无此用户
id 用户名
- 示例:
5.6 切换用户
- 语法:切换用户,获取用户的执行权限,但是不能获取环境变量
su 用户名
- 语法:切换用户,获取用户的执行权限,并获取环境变量
su - 用户名
- 注意:
- 高权限用户切换到低权限用户的时候不需要密码(登录的时候,谁的权限大,谁就是高权限用户),反之需要。
- 如果要切换回去,输入exit命令即可。
- 示例:
5.7 查看登录用户信息
- 语法:
who am i
whoami
- 示例:
5.8 修改用户所属组
- 语法:已经存在用户组,然后创建用户的时候指定用户组
useradd -g 用户组 用户
- 语法:用户已经创建完毕,但是想将用户的所属组改变
usermod -g 用户组 用户
- 示例:
5.9 创建用户组
- 语法:
groupadd 用户组名
- 示例:
5.10 删除用户组
- 语法:
groupdel 用户组名
- 示例:
5.11 修改用户组名
- 语法:
groupmod -n 新用户组名 旧用户组名
- 示例:
5.12 用户、用户组的相关文件
- /etc/passwd:用户的配置文件,记录用户的各种信息。
- /etc/shadow:密码的配置文件。
- /etc/group:用户组的配置文件。
6 运行级别
6.1 概述
- 运行级别就是操作系统当前正在运行的功能呢级别。
- Linux有7个运行级别,分别从0-6表示。
- 0表示关机。
- 1表示单用户模式,可以用来更改root的密码。
- 2表示多用户无网络模式。
- 3表示多用户有网络模式。
- 4系统保留未使用。
- 5图形界面。
- 6重启。
- 说明:在CentOS7之前,运行级别是通过/etc/inittab文件来管理的。
6.2 应用示例
- 语法:查看当前系统的运行级别
runlevel
- 示例:
- 语法:更改系统的运行级别
init 运行级别[-]
- 示例:
7 Linux常用命令
7.1 帮助命令
- 语法:获取帮助信息
man [命令或配置文件]
- 示例:
- 语法:获取shell内置命令的帮助信息
help 命令
- 示例:
7.2 文件目录相关命令
- 语法:显示当前目录的绝对路径
pwd
- 示例:
- 语法:列出目录的内容
ls [选项] 目录或文件 选项:
-a :显示全部的文件,包括隐藏文件
-l:以列表的形式显示
-h:显示文件大小,以k、m、g单位显示
- 示例:
- 语法:切换目录
cd [选项] 目录 选项:
.:切换到当前目录
..:切换到上一级目录
~:切换家目录 cd ~或cd
- 示例:
- 语法:创建目录
mkdir [选项] 要创建的目录路径 选项:
-pv:创建子目录的同时创建父目录
- 示例:
- 语法:删除文件或目录
rm [选项] 文件或目录 选项:
-r:递归删除
-f:强制删除
- 示例:
- 语法:创建空文件
touch 文件名
- 示例:
- 语法:复制、拷贝
cp [选项] 源地址 目的地址 选项:
-r:递归复制整个文件夹
-f:强制复制
- 示例:
- 语法:移动、重命名
mv 源地址 目的地址 注意:如果在同一个文件夹下,就是重命名,否则,就是移动
- 示例:
- 语法:查看文件内容
cat [选项] 文件内容 选项:
-n:显示行号
- 示例:
- 语法:分屏显示文件内容,more命令是一次性将文件内容都加载进内存
more 文件名 注意:
空白键(space):表示向下翻一页
Enter:向下翻一行
q:离开more,不再显示文件内容
b:向上翻一页
- 示例:
- 语法:分屏显示文件内容,less命令是根据需要加载内容,对于显示大型文件效率很高
less 文件名 注意:
空白键(space):表示向下翻一页
Enter:向下翻一行
q:离开less,不再显示文件内容
b:向上翻一页
- 示例:
- 语法:输出重定向
> 表示会覆盖原有内容 >> 表示直接在末尾追加内容
- 示例:
- 语法:输出内容到控制台
echo 输出内容 注意:
输出内容可以是字符串、数字等,也可以是环境变量如$PATH
- 示例:
- 语法:显示文件开头部分内容
head [选项] 文件 选项:
-n :查看文件头5行内容 注意:默认情况下显示前10行内容
- 示例:
- 语法:显示文件尾部部分内容
tail [选项] 文件 选项:
-n :显示文件后5行内容
-f:实时跟踪该文件的所有更新 注意:默认情况下显示尾部10行的内容
- 示例:
- 语法:软链接,类似于Windows系统中的快捷方式
ln -s 文件或目录 软链接名
- 示例:
- 语法:查看历史执行的命令
history [数字] 选项:
:显示最近使用过的10个历史命令 注意:如果不写数字,默认显示所有历史执行过的命令,可以通过!命令编号来执行历史执行的命令
- 示例:
7.3 时间日期相关命令
- 语法: 显示当前时间
date [选项] [+format] 选项:
-s 日期时间:设置系统的日期时间 format:
+Y:年
+m:月
+d:日
+H: 小时(24小时制)
+M:分
+S:秒
- 示例:
- 语法:查看日历
cal [选项] 选项:
:显示2019年的日历 注意:默认情况下,是当月的日历
- 示例:
7.4 压缩、解压相关命令
- 语法:gzip、gunzip
gzip 文件
gunzip 文件.gz 注意:
gzip命令只能压缩文件,不能压缩目录,且文件名是*.gz,压缩之后,原文件不保留
- 示例:
- 语法:zip、unzip
zip [选项] xxx.zip 要压缩的内容(可以是文件或目录,如果是目录,选项是-r)
unzip [选项] xxx.zip (如果需要指定要压缩的目的地址,选项是-d)
- 示例:
- 语法:tar
tar -zcvf xxx.tar.gz 要压缩的文件或目录 :表示压缩文件或目录
tar -zxvf xxx.tar.gz [-C 要解压的路径] :表示解压文件
- 示例:
7.5 搜索查找相关命令
- 语法:find,在指定的目录下查找
find [搜索范围] [选项] 选项:
-name xx:按照指定的名字查找匹配的文件
-user xxx:按照属于指定用户名查找匹配的文件
-size 大小:按照文件大小查找匹配的文件 +20M,-20M,20M
- 示例:
- 语法:locate,全局查找
locate 文件名 注意:
执行此命令之前,需要先执行updatedb命令
- 示例:
- 语法:grep,在文本中查找,一般和“|”一起使用
grep [选项] 要搜索的文本内容 文本 选项:
-n:显示行号
-i:忽略大小写
- 示例:
8 组管理和权限管理
8.1 Linux组的基本介绍
- 在Linux中的每个用户都必须属于一个组,不能独立于组外存在。
- 在Linux中的每个文件,都有所有者、所属组和其他人的概念。
- 一般而言,在创建用户的时候,系统默认会给当前用户创建一个同名的用户组以及在/home目录下创建一个同名的文件夹。
- 当然我们可以使用命令去修改系统的默认机制,比如使用useradd -g 组名 用户名,这样在创建用户的同时,就修改了用户所属组。或者创建了用户,使用usermod -g 组名 用户名,去修改用户的所属组,等等。
- 上述的原理我可以用下面的例子来描述:
- 张三丰,大家都知道。一出生,可能家境不好,那么可以归属于穷逼(用户组)的人群中,但是之后去少林(用户组)出家,此时的张三丰就是少林寺僧人,之后,因为某些原因,离开少林寺,创立武当派(用户组),那么此时的张三丰就是武当掌门人。
8.2 文件/目录的所有者
- 一般来说,谁创建了文件或目录,谁就自然成为该文件或目录的所有者。
- 示例:查看文件的所有者
8.3 修改文件/目录的所有者
- 语法:
chown 用户名 文件名/目录名
注意:如果需要同时修改子目录的所有者,增加-R参数即可。
- 示例:
8.4 修改文件/目录的所属组
- 语法:
chgrp 组名 文件名/目录名 注意:如果需要同时修改子目录的所属组,增加-R参数即可。
- 示例:
8.5 修改文件所有者和所属组
- 语法:修改文件/目录所有者的同时修改文件/目录的所属组
chown 用户名:组名 文件/目录
注意:如果需要同时修改子目录的所有者和所属组,增加-R参数即可。
- 示例:
8.6 权限的基本介绍
- 权限在Linux中一般针对的是文件或目录,毕竟在Linux中,一切且为文件。
- 示例:
8.7 rwx权限详解
- rwx到文件:
- r:代表可读,查看。
- w:代表可写,但是不代表可以删除,删除的前提是其上级目录是w权限,方可删除该文件。
- x:代表可执行,文件可以被执行。
- rwx到目录:
- r:代表可读,查看。
- w:代表可写,可以在目录内创建、删除、重命名目录。
- x:代表可执行,表示可以进入该目录。
8.8 修改权限
- 语法:
chmod [选项] [{ugoa}{+-=}{rwx}] 文件或目录 选项:
-R :表示递归 注意:u表示所有者,g表示所属组,o表示其他人,a表示所有人。
- 示例:
- 语法:
chmod [mode=] 文件或目录 注意:
r=4,w=2,x=1
- 示例:
9 磁盘管理
9.1 Linux分区基本介绍
- 对Linux来说无论几个分区,分给哪一个目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构,Linux中的每个分区都是用来组成整个文件系统的一部分。
- Linux采用了一种叫做“挂载”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。
9.2 Linux中的硬盘基本介绍
- Linux中的硬盘分为IDE和SCSI硬盘,目前尚基本上都是SCSI硬盘。
- 对于IDE硬盘来说,驱动器的标识是"hdx~",其中"hd"表明分区所在设备的类型(即IDE硬盘),"x"为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),"~"代表分区,前四个分区用数字1~数字4标识,它们是主分区或扩展分区,从5开始是逻辑分区。例如hda3就表示第一个IDE硬盘上的第三个主分区或扩展分区。
- 对于SCSI硬盘则标识为"sdx~",SCSI硬盘是用"sd"来表示分区所在设备的类型,其余和IDE硬盘的表示方法一样。
9.3 查看系统整体磁盘情况
- 语法:
df -h
- 示例:
9.4 查看指定目录的磁盘占用情况
- 语法:
du -h 目录
- 示例:
10 网络配置
10.1 基本介绍
- 本人中使用的是VMware虚拟机,在装VMware虚拟机的时候,Vmware会默认给用户装上VMnet1和Vmnet8两块网卡,其中Vmnet8网卡主要用于NAT模式(网络地址转换模式)。
- 我们知道如果在局域网中一台计算器要和另一台计算机进行通信,需要这两台计算机在同一个网段内,其计算公式是IP和子网掩码求AND计算,即与计算,通常情况下,子网掩码是255.255.255.0,如果你的ip是192.168.136.100,那么你的网段就是192.168.136.x,那么另一台计算机的ip地址是192.168.136.x[除去网关、100、1~254之间任意选一个。
10.2 将IP地址改为固定IP地址
- 本人的网关是192.168.136.2。
- VMnet8的ip地址是192.168.136.1。
- 我们只要配置的ip地址在192.168.136.x[3~254之间]即可。
- 在Linux修改ip地址需要到/etc/sysconfig/network-script/ifcfg-etho中修改。
- ifcfg-eth0文件说明如下:
DEVICE=eth0 #接口名(设备,网卡)
HWADDR=:0C:2x:6x:0x:xx #MAC地址
TYPE=Ethernet #网络类型(通常是Ethemet)
UUID=926a57ba-92c6--bacb-f27e5e6a9f44 #随机id
#系统启动的时候网络接口是否有效(yes/no)
ONBOOT=yes
# IP的配置方法[none|static|bootp|dhcp](引导时不使用协议|静态分配IP|BOOTP协议|DHCP协议)
BOOTPROTO=static
#IP地址
IPADDR=192.168.189.130
#网关
GATEWAY=192.168.189.2
#域名解析器
DNS1=192.168.189.2
# 子网掩码
NETMASK=255.255.255.0
- 示例:
10.3 修改主机名
- 语法:显示主机名
echo $HOSTNAME
- 示例:
- 步骤:
- ①需要编辑/etc/sysconfig/network文件进行修改。
- ②需要到/etc/hosts文件中配置,方可生效。
- ③重启设备。
- 示例:
11 任务调度
11.1 基本介绍
- 是指在某个时间执行的特定的命令或程序。
11.2 分类
- 系统工作:有些重要的工作必须周而复始的执行,如病毒扫描等。
- 个别用户工作:个别用户希望执行某些程序,如对MySQL数据库的备份等。
11.3 相关命令
- 语法:
crontab [选项] 选项:
-e:编辑crontab定时任务
-l:查看crontab任务
-r:删除当前用户所有的crontab任务
- 示例:
12 进程管理
12.1 基本介绍
- 在Linux中,每个执行的程序都称为一个进程。每一个进程都分配一个ID号。
- 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。
- 每个进程都可能以两种方式存在的:
- 前台进程:就是用户在目前屏幕上可以进行操作的进程。
- 后台进程:由于在屏幕上无法看到过程,通常以后台方式执行的。
- 一般系统的服务都是以后台进程的方式存在,而且会常驻在系统中。直到关机才结束。
12.1 显示系统执行的进程
- 语法:
ps -aux 注意:
-a:显示当前终端的所有进程信息
-u:以用户的格式下你是进程信息
-x:显示后台进程进行的参数
- 示例:
12.2 显示子父进程的关系
- 语法:
ps -ef
- 示例:
12.3 终止进程
- 语法:根据pid终止进程
kill - pid
- 示例:
- 语法:根据进程名终止进程
killall 进程名称
- 示例:
13 服务管理
13.1 基本介绍
- 服务本质上就是进程,但是是运行在后台的,通常会监听某个端口,等待其他程序的请求,比如MySQL一般是3306号端口,而sshd一般是22号端口。因为我们也可以称之为守护进程,是Linux中非常重要的部分。
13.2 服务管理的命令
- 语法:
service 服务名 start|stop|restart|reload|status 注意:
CentOS7之后,使用sytemctl代替service命令 如果希望设置某个服务自启动还是关闭永久生效,需要使用chkconfig命令。
- 示例:
- 语法:可以给每个服务的各个运行级别设置自启动/关闭。
查看服务
chkconfig --list|grep xxx
指定某个服务在各个运行级别开启或关闭
chkconfig --level 服务名 on/off
- 示例:
14 动态监控进程
14.1 基本介绍
- top命令和ps命令很类似,它们都是用来显示正在执行的进程。top和ps最大的不同之处,在于top在执行一段时间可以更新正在执行的进程(默认每3秒执行一次)。
14.2 动态监控进程的命令
- 语法:
top
- 示例:
15 监控网络状态
15.1 基本介绍
- netstat命令可以用来查看系统网络情况。
15.2 监控网络状态命令
- 语法:
netstat -anp | grep -i xxx 注意:
-an:按一定顺序排列输出
-p:显示那个进程在调用
- 示例:
16 RPM和YUM
16.1 RPM的基本介绍
- RPM是一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生产具有.rpm扩展名的文件。RPM是RedHat Package Manager的缩写,类似于Windows系统中的setup.exe。
16.2 RPM的相关命令
- 语法:查看已安装的rpm列表
rpm -qa | grep -i xxx
- 示例:
- 语法:卸载rpm包
rpm -e rpm包名 --nodeps
- 语法:安装rpm包
rpm -ivh rpm包名
16.3 YUM基本介绍
- yum是一个shell软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM并且安装,可以自动处理依赖性管理,并一次性安装所有依赖的软件包。
- 如果rpm类似于java项目中手动导入jar包,那么yum就相当于Java中的Maven或Gradle工具了。
16.4 YUM的相关命令
- 语法:查询yum服务器上是否有需要安装的软件
yum list | grep xxx
- 示例:
- 语法:安装rpm包
yum -y install rpm包
- 语法:删除执行的rpm包
yum remove rpm包
- 语法:清除yum缓存
yum clean all
- 语法:更新缓存
yum makecache
16.5 修改网络YUM源
- 去http://mirrors.163.com/.help/centos.html下载对应的CentOS的YUM源的文件。
- 查看文件保存的位置
- 把下载的文件移动到/etc/yum.repos.d目录下
- 进入到/etc/yum.repos.d目录,用CentOS6-Base-163.repo替换CentOS-Base.repo
- 清除缓存
yum clean all
- 更新缓存
yum makecache
- 测试:
yum list | grep -i firefox
大数据之Linux的更多相关文章
- 一起来学大数据——走进Linux之门,学习大数据的重中之重
昨天我们看了有关大数据Hadoop的一些知识点,但是要在学习大数据之前,我们还是要为大数据的环境做一些的部署. 那么,今天我们就来讲讲开启我们大数据之路的Linux,跟上我们的脚步yo~ Linux介 ...
- 大数据之Linux基础
回顾这一个多月以来闭关学大数据的一些相关重要知识,就当复习,顺便以备以后查看 Linux学习第一步自然是安装Linux. 关于Linux 首先介绍下Linux,Linux系统很多程序员开发者其实都耳熟 ...
- 大数据开发-linux后台运行,关闭,查看后台任务
在日常开发过程中,除了例行调度的任务和直接在开发环境下比如Scripts,开发,很多情况下是shell下直接搞起(小公司一般是这样),看一下常见的linux后台运行和关闭的命令,这里做一个总结,主要包 ...
- 大数据开发-linux下常见问题详解
1.user ss is currently user by process 3234 问题原因:root --> ss --> root 栈递归一样 解决方式:exit 退出当前到ss再 ...
- 【大数据】Linux下安装Hadoop(2.7.1)详解及WordCount运行
一.引言 在完成了Storm的环境配置之后,想着鼓捣一下Hadoop的安装,网上面的教程好多,但是没有一个特别切合的,所以在安装的过程中还是遇到了很多的麻烦,并且最后不断的查阅资料,终于解决了问题,感 ...
- 【大数据】Linux下Storm(0.9版本以上)的环境配置和小Demo
一.引言: 在storm发布到0.9.x以后,配置storm将会变得简单很多,也就是只需要配置zookeeper和storm即可,而不再需要配置zeromq和jzmq,由于网上面的storm配置绝大部 ...
- 大数据之Linux网卡配置
当你安装好一台Linux之后,第一步自然是配置网卡,让你的Linux上网. 配置网卡大多数有两种模式,一种是桥接,一种是NAT 首先讲一下桥接网卡的上网原理,他是等同于在你现有的网络环境上直接现加一台 ...
- 大数据之Linux进阶指令
1.文件内容操作相关命令 cut 根据条件 从命令结果中 提取 对应内容 -c 按字符选取内容 例子:head -2 1.txt | cut -c 5 截取前两行的第五个字符 -d '分隔符' ...
- 大数据中Linux集群搭建与配置
因测试需要,一共安装4台linux系统,在windows上用vm搭建. 对应4个IP为192.168.1.60.61.62.63,这里记录其中一台的搭建过程,其余的可以直接复制虚拟机,并修改相关配置即 ...
随机推荐
- 细说Linux下的虚拟主机那些事儿
细说Linux下的虚拟主机那些事儿 我们知道Linux操作系统是目前在服务器上应用广泛的操作系统.在Linux操作系统下的虚拟主机是不是就是我们常说的Linux虚拟主机呢?其实从专业方面说并不是,它是 ...
- Android 消息传递机制
线程间消息传递机制 1.消息怎么发送的? 我们都知道当调用Handler发送消息的时候,不管是调用 sendMessage,sendEmptyMessage,sendMessageDelayed还是其 ...
- 手机连接电脑,使用adb命令
手机连接电脑使用adb命令,主要是有2种方式,其中最常见的就是第一种,用usb连线使用 1:adb usb - restarts the adbd daemon listening on USB ad ...
- CTF—攻防练习之HTTP—SQl注入(get)
攻击机:192.168.32.152 靶机 :192.168.32.157 扫描靶机扫端口: 开放了ssh和80看下ssh版本有没有漏洞,searchsplot下,没有发现 dirb扫描下目录,有个a ...
- 【神经网络与深度学习】Caffe源码中各种依赖库的作用及简单使用
1. Boost库:它是一个可移植.跨平台,提供源代码的C++库,作为标准库的后备. 在Caffe中用到的Boost头文件包括: (1).shared_ptr.hpp:智能指针,使用它可以不 ...
- 【VS开发】【图像处理】基于灰度世界、完美反射、动态阈值等图像自动白平衡算法的原理、实现及效果
基于灰度世界.完美反射.动态阈值等图像自动白平衡算法的原理.实现及效果 白平衡是电视摄像领域一个非常重要的概念,通过它可以解决色彩还原和色调处理的一系列问题.白平衡是随着电子影像再现色彩真实 ...
- jqueryweui关于switch css与js结合
.invoice_wrapper{ .comm_con{ .weui-switch-cp{ .weui-switch-cp__box{ height:0.4rem; margin:0.25rem 0; ...
- queue的常见用法
queue的使用 queue是什么? queue是一种先入先出的容器 queue的定义 引入 # include <iostream> # include <queue> us ...
- 公共子序列_NOI导刊2011提高(03)题
题面 这道题有点坑人啊~ 首先,它需要取模,模数是100000000:(窝在这里死了好久好久,看了别人的代码才发现这一点) 然后我发现题解中没有序列自动机的方法,于是就来一发 首先,虽然序列自动机在定 ...
- 洛谷 P2467 地精部落 题解
题面 好难啊好难啊好难啊~(以后再玩魔兽的时候绝对绝对虐死他) 做完后总结了一下思路; 首先推一下以下三条性质: 1.若两个 i 与 i+1 不相邻,那么我们直接交换这两个数字就可以组成一个新的数列 ...