常用的Linux命令
Linux命令 - Linux安全网 - Linux操作系统_Linux 命令_Linux教程_Linux黑客 (linuxso.com)
1. cat [-AbeEnstTuv] [--help] [--version] fileName //将档案串连接后传到基本输出
2. cp //linux 复制文件命令,即可以复制文档,也可以复制整个文件夹
3. less [Option] filename
说明:less 的作用与 more 十分相似,都可以用来浏览文字档案的内容,不同的是 less 允许使用者往回卷动以浏览已经看过的部份,同时因为 less 并未在一开始就读入整个档案,因此在遇上大型档案的开启时,会比一般的文书编辑器(如 vi)来的快速 用 less 命令显示文件时,若需要在文件中往前移动,按b键;要移动到用文件的 百分比表示的某位置,则指定一个0到100之间的数,并按p即可。譬如:50p
4. wc //wc命令的功能为统计指定文件中的字节数、字数、行数, 并将统计结果显示输出。
语法:wc [选项] 文件…
说明:该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所有指定文件的总统计数。字是由空格字符区分开的最大字符串。
该命令各选项含义如下:
- c 统计字节数。
- l 统计行数。
- w 统计字数。
5. Split //按指定的行数截断文件
格式: split [-n] file [name]
参数说明:
-n: 指定截断的每一文件的长度,不指定缺省为1000行
file: 要截断的文件
name: 截断后产生的文件的文件名的开头字母,不指定,缺省为x,即截断后产生的文件的文件名为xaa,xab....直到xzz
6. uniq [-cdu][-f<栏位>][-w<字符位置>][--help][--version][输入文件][输出文件]
功能:检查及删除文本文件中重复出现的行列
-c或--count 在每列旁边显示该行重复出现的次数。
-d或--repeated 仅显示重复出现的行列。
-u或--unique 仅显示出一次的行列。
例如:
(1). cat a.txt b.txt | sort | uniq > result.csv //求两个的并集,如果有重复的行,只保留一行
(2). cat a.txt b.txt | sort | uniq -d > result.csv //求两个文件的交集,即两个文件都有的行
(3). cat a.txt b.txt | sort | uniq -u > result.csv //求两个文件的差集,即只有一个文件中有的行
(4). cat a.txt b.txt > result.csv //合并两个文件,如果a.txt有m行,b.txt有n行, result.csv有m+n行
(5). paste a.txt b.txt > result.csv //一个文件的内容在左边,另一个文件内容在右边
(6). 单个文件去重
sort file | uniq > result // 将重复的行变为一行
sort file | uniq -u > result //将重复行全部去掉
sort file | uniq -d > result //保留重复行,只保留一行
怎么查看被占用的端口号
Linux查看端口占用情况可以使用lsof和netstat
1. lsof (list of files)是一个列出当前系统打开文件的工具
lsof 查看端口占用语法格式:
lsof -i :端口号 (lsof -i 需要root用户的权限来执行)
更多lsof命令如下:
lsof -i:8080 //查看8080端口占用
lsof abc.txt //显示开启文件abc.txt的进程
lsof -c abc //显示abc进程现在打开的文件
lsof -g gid //显示归属gid的进程情况
lsof +d /usr/local/ //显示目录下被进程开启的文件
lsof +D /usr/local/ //同上,但是会搜索目录下的目录,时间较长
lsof -i -U //显示所有打开的端口和UNIX domain文件
2. netstat
netstat -tunlp 显示tcp, udp的端口和进程等相关情况
netstat查看端口占用语法格式:
netstat -tunlp | grep 端口号
-t: (tcp)仅显示tcp相关选项
-u: (udp)仅显示udp相关选项
-n: 拒绝显示别名,能显示数字的全部转化为数字
-l: 仅列出在Listen(监听)的服务状态
-p: 显示建立相关链接的程序名
更多命令
监控状态为LISTEN表示已经被占用
3. kill
在查到端口占用的进程后,如果要杀掉对应的进程可以使用kill命名
kill -9 PID
用Linux命令查找字符串是否在文件中存在
1. grep “被查找的字符串” 文件名
2. grep -i "被查找的字符串" 文件名 //不区分大小写
3. grep -e "正则表达式" 文件名 //匹配与正则表达式匹配的行
4. grep -c "被查找的字符串" 文件名 //查找匹配的行数
5. grep -v "被查找的字符串" 文件名 //查 找不匹配字符串的行数
6. cat 文件名 / grep "被查找的字符串" //从文件内容查找被匹配的行
MySQL中datetime和timestamp的区别
区别
(1). 占用空间
(2). 表示范围
timestamp即“时间戳”,它是当前时间到Unix元年(1970年1月1日0时0分0秒)的秒数,对于某些时间的计算,假如我是 1994-1-20 06:06:06 出生,现在的时间是 2016-10-1 20:04:50 ,那么要计算我活了多少秒钟用 datetime 还需要函数进行转换,但是 timestamp 直接相减就行。
(3). 时区
timestamp只占4个字节,而且是以utc的格式存储,它会自动检索当前时区并进行转换。
datetime以8个字节存储,不会进行时区的检索。
也就是说,对于timestamp来说,如果储存时的时区和检索的时区是不一样的,那么拿出来的数据也是不一样的。对于datetime来说,存什么拿到的就是什么。
还有一个区别就是,如果存进去的是null,timestamp会自动储存当前时间,而datetime会储存null。
如果存进去的是无效的时间格式的话,两者会存储为0000-00-00 00:00:00
Mysql服务器的三种时区设置
1. 系统时区:保存在系统变量system_time_zone
2. 服务器时区:保存在全局系统变量global.time_zone
3. 每个客户端连接的时区:保存在会话变量session.time_zone
in_array(), isset(), array_key_exists
1. in_array(值, 数组); 是用来判断数组中是否包含某一个值,它会返回一个布尔型。
2. array_key_exists(键, 数组); 是用来判断数组中是否包含某一个键,它会返回一个布尔型。只要键值存在,即使值为null,也返回true.
3. isset(数组['键']); 是用来判断是否包含某个一个键,会返回一个布尔型。这里注意由于键和值是成对出现的,所以一般情况下,如果值为null, 返回false.
PHP中in_array()和isset()哪个效率更高一些 ----- isset()
网络的七层协议
编程题
1. 反转链表
2. 两个栈实现一个队列
3. 现有一个存储字符的数组,要求实现一个算法,判断该数组内字符的正序和反序是否一致,其中空格视作无效字符需要过滤
要求:算法的时间复杂度最低,不得借助编程呢个语言本身的函数库
4. 一个数组,查找元素的数量大于长度一半的元素,复杂度为O(n)
数据库表设计
做一个书架的业务:书的属性有书名、作者、内容、标签等。不同作者可能有相同的书名,同一作者不会有相同的书名,作者和书名要求唯一。标签一般不会太多,最多10个。
业务需求:按照书名搜书,按照作者搜书,按照标签搜书
数据库要怎么设计
确保多个进程同时写入同一个文件成功
1. fopen: 打开文件或url
参数1:文件地址或url
参数2:mode参数指定了所要求的该流的访问类型
'r' //只读方式打开,将文件指针指向文件头
'r+' //读写方式打开,将文件指针指向文件头
'w' //写入方式打开,将文件指针指向文件头,并将文件大小截为零。如果不存在则创建。
'w+' //读写方式打开,将文件指针指向文件头,并将文件大小写为零,如果文件不存在则创建。
'a' //写入方式打开,将文件指针指向文件末尾。如果文件不存在则创建。
'a+' //读写方式打开,将文件指针指向文件末尾。如果文件不存在则创建。
2. fwrite: 写入文件
参数1:文件名文件系统指针
参数2:要写入的内容,string类型
返回值:写入成功返回写入的字符数,失败返回false
3. flock: 轻便的咨询文件锁定
参数1:文件系统指针,是典型的由fopen()创建的资源
参数2:模式
LOCK_SH: 取得共享锁定(读取的程序)
LOCK_EX: 取得独占锁定(写入的程序)
LOCK_UN: 释放锁定(无论共享或独占)
返回值:成功时返回true, 或者在失败时返回false
4. fclose(): 关闭一个打开的文件指针
PHP 代码 ,确保多个进程同时写入同一个文件成功 - WilliamHu - 博客园 (cnblogs.com)
看不明白......
文本字符串的每个单词首字母变成大写,首字符大写, 全部变为大写,全部变为小写
$str = "my name is huanhuan";
echo ucwords($str); //My Name Is Huanhuan
echo strtoupper($str); //MY NAME IS HUANHUAN
echo strtolower($str); //my name is huanhuan
echo ucfirst($str); //My name is huanhuan