1. 程式人生 > >計算機常用指令

計算機常用指令

常用指令記錄

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下來在window上操作,將程式除錯好再拖入伺服器執行

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`

 

計算機常識:

編碼:

在計算機記憶體中,統一使用Unicode編碼,當需要儲存到硬碟或者需要傳輸的時候,就轉換為UTF-8編碼。

用記事本編輯的時候,從檔案讀取的UTF-8字元被轉換為Unicode字元到記憶體裡,編輯完成後,儲存的時候再把Unicode轉換為UTF-8儲存到檔案。

 

ip地址是數字組成的,不方便記憶,所以有了域名,通過域名地址就能找到ip地址

http://zhidao.baidu.com 這是域名,一個ip上可以有多個域名

http://168.103.123.465 這是IP

 

linux:

SSH是安全外殼協議,為 Secure Shell 的縮寫,為遠端登入會話和其他網路服務提供安全性的協議。Xshell軟體支援ssh協議,允許你遠端訪問。

git bash是Windows下的命令列工具,方便在windows下使用git命令的模擬終端;git shell是安裝了git的shell,bash是shell的一種。