计算机常用指令记录
Python 常用操作:
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- # 画图的字体问题
- from pylab import mpl
- mpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定默认字体
- mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
- # 显示所有行列
- pd.set_option("display.max_columns",None)
- pd.set_option("display.max_rows",None)
- # 输出所有变量
- from IPython.core.interactiveshell import InteractiveShell
- InteractiveShell.ast_node_interactivity = "all"
- # 画图 x 轴标签倾斜
- import pylab as pl
- pl.xticks(rotation=45)
- # 确定字符串都是数字字符
- data1['t'] = data1['atx'].str.isdigit()
- data1 = data1[data1['t'] == True]
- # 连接 postgres 数据库, 读取数据
- conn = psycopg2.connect(database="", user="", password="", host="", port="")
- cur = conn.cursor()
- cur.execute("SELECT title FROM \"fd_content_interaction\";")
- rows = cur.fetchone() //fetchone,fetchall,fetchmany(num=None) # 即取数据量大小
- print(rows)
- conn.commit()
- cur.close()
- conn.close() # 关闭数据库的原因是, 数据库同时链接人数是有限的; 数据库数据用 python 读取下来, jasonarray 等格式转换过来就是 tuple 里的 dict 等格式
- # 过滤空字符, 0 和 None
- a = list(filter(None, list1)) # 空字符和 None 都是布尔值为 0 的
- # 实现时间序
- pd.date_range('20100101',periods=1000)
- # 打开文件
- with open("/tmp/foo.txt") as file:
- data = file.read()
- # 对多个 row 进行操作, 返回到一个 row 中作为值
- def my_test(a, b):
- return a + b
- df['value'] = df.apply(lambda row: my_test(row['c1'], row['c2']), axis=1)
hive 常用操作:
hive
hive> show tables; --- 显示表;
hive> show databases; --- 显示数据库, 数据库里面有多个表;
hive> use brain; --- 使用数据库用 use; 然后再使用 show tables; 查看里面的数据表
hive> show tables;
hive> set hive.cli.print.header=true; --- 显示表的 headers, 即 column 名;
hive> select * from ttc_show where ttc_show.date_col = 20180601 and ttc_show.app_id = 'ABCDEFG' and ttc_show.alg = '["related"]' limit 20;
常用 sql:
- SELECT name,country FROM websites;
- SELECT DISTINCT country FROM Websites; // 选取 country 中去掉重复项的变量
- SELECT * FROM Websites WHERE country='CN'; // 注意单双引号, from 后的地址用双引号, where 后的等号用单个等号, 文本内容用单引号, 数字内容不用引号
- Select * from emp where sal> 2000 or comm> 500; // 或者用 and
- Select * from emp where comm is null;
- Select * from emp where sal between 1500 and 3000; // 数值型, 字符型都有 between, 字符型基于首字母排序
- Select * from emp where sal in (5000,3000,1500);
- SELECT * FROM Websites WHERE alexa> 15 AND (country='CN' OR country='USA');
- SELECT * FROM Websites ORDER BY alexa; // 按某一列排序, 可以按多列排序, 多列时先按第一指定列排序, 再按第二等等
- INSERT INTO Websites (name, url, alexa, country) VALUES ('百度','https://www.baidu.com/','4','CN'); //id 列不用输入任何字段, 他是自动更新的
- UPDATE Websites SET alexa='5000', country='USA' WHERE name='菜鸟教程'; // 更新覆盖数据, 执行没有 WHERE 子句的 UPDATE 要慎重, 再慎重!!!! 没有 where 会将所有行的这一列修改
- DELETE FROM Websites WHERE name='百度' AND country='CN';
- SELECT * FROM Websites WHERE name LIKE 'G%'; // 选取以 G 为开头的模糊查询
- SELECT * FROM Websites WHERE name LIKE '%k'; // 选取以 k 为尾的模糊查询
- SELECT * FROM Websites WHERE name LIKE '%oo%'; // 选取含有 oo 字符的
- SELECT * FROM Websites WHERE name NOT LIKE '%oo%'; // 选取不含有 oo 字符的
select * from username where 用户名 like '段_%' -- 会查出来段煜 段鑫
- '%a' // 以 a 结尾的数'a%' // 以 a 开头的数据 '%a%' // 含有 a 的数 '_a_' // 三位且中间字母是 a 的
- '_a' // 两位且结尾字母是 a 的'a_' // 两位且开头字母是 a 的
- SELECT * FROM Websites WHERE name REGEXP '^[GFs]'; // 选取 name 以 "G","F" 或 "s" 开始的所有网站
- SELECT * FROM Websites WHERE name REGEXP '^[A-H]'; // 选取 name 以 A 到 H 字母开头的网站
- SELECT * FROM Websites WHERE name IN ('Google','菜鸟教程'); // 选取 name 为 "Google" 或 "菜鸟教程" 的所有网站
- SELECT * FROM Websites WHERE alexa NOT BETWEEN 1 AND 20;
- SELECT column_name(s)
- FROM table1 INNER JOIN table2 ON table1.column_name=table2.column_name; // 选取两个文件中在某一列相匹配的项
LEFT JOIN 和 RIGHT JOIN 存在的意义就是 select 的时候可能会有左 (右) 边存在而另一边不存在的特定列, 此时将 LEFT(RIGHT)的列留下, 另一边没有匹配内容的赋值为 null 即可
注意: 搜索时, String 只能用单引号, 文件名用双引号或不用
常用 Linux 指令:
使用 man 命令来查看各命令的使用文档
u 取消操作
cat 获取文件内容
cat 合并文件
$ cat file1.txt file2.txt> file.txt 可以读入任意多个文件
使用>>将文本流将文件添加到另外一个文件的末尾
$ cat file1.txt>> file2.txt
grep 按条件查找搜索, 加 | 与文件隔开
dd 删除
d5d 删除 5 行
cp dir dir 复制文件到新的文件夹
cp -r dir dir 复制文件夹下所有文件到新的目录
mv dir dir 移动文件, 并命名为 file2
hadoop -put dir1 dir2 语句是将 dir1 上数据 put 上 dir2(hdfs)
查看 hadoop 上文件, 文件内容:
- hadoop fs -ls /dir/file
- hadoop fs -cat /dir/file | head -10 (file 为压缩文件需要解压缩, 否则为乱码)
从 hdfs 上下载文件到本地:-get
Linux 中 ` `,$,$( ) ,${ } 区别:
$( )中放的是命令, 相当于 ` `, 例如 todaydate=$(date +%Y%m%d)意思是执行 date 命令, 返回执行结果给变量 todaydate, 也可以写为 todaydate=`date +%Y%m%d`;
${ }中放的是变量, 例如 echo ${PATH}取 PATH 变量的值并打印, 也可以不加括号比如 $PATH.
put 操作时, 指定的文件路径不存在, 不会自动创建路径, 需要创建路径 mkdir; 指定路径后, 应该是会写入一个文件, 而这个文件是不用事先新建的(比如事先新建一个目标. txt 文档)
解压文件: tar -cxvf ${date}.tar.gz 文件解压后放当前文件夹, 名字和 tar 文件名字一样
压缩文件: tar -zcvf finalData.tar.gz finalData/
hadoop fs -getmerge 操作只能先放到本地文件夹, 然后 put 上 hdfs
查看正在运行的程序: ps -ef | grep ks_collect_data
firedata 30458 88548 0 09:42 pts/10 00:00:00 sh ks_collect_data.sh 20180813 20180826
kill 这个任务:$ kill -9 30458
kill 在集群上的任务 : hadoop job -kill job_1524660075674
将本服务器文件传到另一个服务器: scp 211.100.28.190:/dir/file /dir 然后需要再输入密码
循环对多个文件夹进行操作:
- for file in /home/hustyangju
- do
- done
ctrl+c 停止运行程序, ctrl+z, 任务维持挂起并没有结束, 可以使用 fg/bg 操作继续前台或后台的任务, fg 命令重新启动前台被中断的任务, bg 命令把被中断的任务放在后台执行.
从远程服务器下载文件到本地: sz /dir/file 或者切盘到这个文件夹 sz file 即可
记录日志:/dir/test.sh> /dir/test.log 2>&1 &
nohup java -jar demo2.jar>test.out 2>&1 当账户退出或终端关闭时, 程序仍然运行
较大文件, 若在远程服务器上交互操作比较麻烦, 可以 tail -n 10000 file>file_sample 然后 sz 这个 sample 下来在 Windows 上操作, 将程序调试好再拖入服务器运行
wc : 统计指定文件中的字节数, 字数, 行数, 并将结果显示输出.-c 统计字节数;-l 统计行数;-w 统计字数;-m 统计字符数.
组合使用时输出结果的列的顺序和数目不受选项的顺序和数目的影响. 输出结果顺序: 行数 字数 字节数 文件名
tail -f click 查看是否在写入数据
crontab -l 查看正在运行的定期执行程序; crontab -e 相当于 VIM, 然后编辑即可
du -h filename/ 查看 filename 文件大小, ll -h 查看文件夹下所有文件的详细信息
表示时间: date=`date -d "+1 day $startdate" +%Y%m%d`
Git 常用指令:
- Git init
- Git add
- Git commit -m "readme"
- Git status
- Git diff
- Git log
- Git log --pretty=oneline
- Git reflog # 之前的所有命令
- Git checkout -- file # 放弃工作区或暂存区的最近一次修改或添加, 删除操作
- Git reset HEAD file # 撤回暂存区的 file
- Git reset --hard HEAD^
- Git reset --hard HEAD~100 # 版本回退
- rm test.txt
- Git rm test.txt
- Git commit -m "remove test.txt" # 删除文件
- rm test.txt
- Git checkout -- test.txt # 若误删, 撤回本地的删除操作
远程仓库:
SSH-keygen -t rsa -C "youremail@example.com" # 建立本地与远程的链接, 找到创建的 sshkey, 添加到 GitHub 的 SSH 列表中
往远程库添加:
Create a new repo --》 写名字 learngit --》 Create repository
- Git remote add origin Git@GitHub.com:YZP17121579/learngit.Git # 当前目录与远程库关联
- Git push -u origin master # 本地库同步到远程库
从远程库下载:
- Git clone Git@GitHub.com:YZP17121579.NET-slimming.Git # 需要在 GitHub 中有本地的 SSH 链接, 无需在本地 Git init, 直接将 远程库中文件下载到本地, 文件夹中会有. Git 文件, 本地会直接得到一个和远程库同步的文件
- Git branch # 查看分支
- Git branch <name> # 创建分支
- Git checkout <name> # 切换分支
- Git checkout -b <name> # 创建 + 切换分支
- Git merge <name> # 合并某分支到当前分支
- Git branch -d <name> # 删除分支
- Git remote -v # 查看远程库信息
- Git remote rm origin # 删除已关联的远程库
- Git remote add gitee Git@gitee.com:liaoxuefeng/learngit.Git
- Git remote add GitHub Git@GitHub.com:michaelliao/learngit.Git # 加上名字关联不同库
- Git push GitHub master
- Git push gitee master # 推送同步到不同库
计算机常识:
编码:
在计算机内存中, 统一使用 Unicode 编码, 当需要保存到硬盘或者需要传输的时候, 就转换为 UTF-8 编码.
用记事本编辑的时候, 从文件读取的 UTF-8 字符被转换为 Unicode 字符到内存里, 编辑完成后, 保存的时候再把 Unicode 转换为 UTF-8 保存到文件.
ip 地址是数字组成的, 不方便记忆, 所以有了域名, 通过域名地址就能找到 ip 地址
http://zhidao.baidu.com 这是域名, 一个 ip 上可以有多个域名
http://168.103.123.465 这是 IP
SSH 是安全外壳协议, 为 Secure Shell 的缩写, 为远程登录会话和其他网络服务提供安全性的协议. Xshell 软件支持 SSH 协议, 允许你远程访问.
Git bash 是 Windows 下的命令行工具, 方便在 Windows 下使用 Git 命令的模拟终端; Git shell 是安装了 Git 的 shell,bash 是 shell 的一种.
来源: http://www.bubuko.com/infodetail-2836055.html