計算機由硬件和軟件構成
計算機硬件的五大部件:運算器、控制器、存儲器、輸入設備、輸出設備
計算機軟件:系統軟件(操作系統、編譯程序)和應用軟件
操作系統會負責管理和操作硬件,并提供簡單的人機交互的接口
Ken Thompson / Dennis Ritchie ---> Unix (1970s)
Xerox(施樂) ---> GUI / 鼠標 / 以太網
1980s --- IBM PC
Unix ---> BSD ---> AIX (IBM)
Unix ---> System V ---> Solaris (SUN)
Uinx ---> System III ---> HP-UX (HP)
Unix ---> BSD ---> FreeBSD ---> Macintosh (Apple) ---> macOS ---> iOS / watchOS / tvOS
Unix ---> Minix (Andrew Tanenbaum) ---> Linux (Linus Torvalds) ---> Android (Google)
Linux發型版本
- Redhat
- Ubuntu --- 個人
- CentOS --- 服務器 --- 遠程訪問
- Fedora
- SUSE
- Debian
個人操作系統 - Windows / macOS
服務器操作系統 - 商用Unix / Linux / Windows Server
多用戶多任務操作系統
要求:基本使用 / 安裝和配置服務 / 部署項目
命令 [命令的參數][命令作用的對象]
ls -laR .pip
cat /proc/cpuinfo
cat -n /proc/cpuinfo
command not found - 命令沒有找到(敲了無效的命令)
Linux常用命令:
- w / who / whoami / last - 查看登錄用戶情況
- adduser / passwd - 創建用戶修改密碼
- date / cal - 查看日期日歷
- write / wall / mesg - 發送消息
- clear - 清除屏幕
- logout / exit - 退出登錄
- man / info / --help - 查看幫助
- history - 歷史命令 - !命名編號 - 再次執行歷史命令
- reboot - 重啟系統 - init 6
- shutdown - 關機 - init 0
Linux文件操作相關命令:
- pwd - print working directory - 打印工作目錄
- cd - change directory - 改變目錄 - 相對路徑和絕對路徑
- ls - list directory contents - 列出目錄下的內容
-l - 長格式查看
-a - 查看所有文件 - 在Linux系統中以點開頭的文件和文件夾是隱藏的
-R - 遞歸式的查看 - 遇到文件夾要遞歸的列出文件夾下的內容 - cat - concatenate - 連接多個文件(查看文件的內容)
- touch - 創建空文件或者修改已有文件的最后訪問時間
- mkdir - make directory - 創建文件夾
-p - 如果需要就創建父文件夾 - rm - remove - 刪除
-f - 強制刪除
-r - 遞歸刪除 - 刪文件夾需要指定該參數 - rmdir - remove empty directory - 刪除空文件夾
- wget - 通過網絡獲取文件
- 例如:wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tar.xz
- 例如:wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz
- gzip / gunzip - 文件壓縮/解壓縮(gz/tgz)
- 例如:gunzip Python-3.7.3.tgz
xz - 文件壓縮/解壓縮(xz)
-z - 壓縮
-d - 解壓縮
- 例如:xz -d Python-3.7.3.xztar - archive - 文件歸檔/解歸檔
-xvf - 解歸檔(將一個文件拆成多個文件)
- 例如:tar -xvf Python-3.7.3.tar
-cvf - 創建歸檔文件(將多個文件合并成一個文件)wc - word count - 查看文件行數、單詞數、字符數
-l - 查看行數
-w - 查看單詞數
-c - 查看字符數sort - 文件排序
-r - 降序(默認是從小到大 - 升序)uniq - unique - 文件去重(相鄰相同的內容會被過濾掉)
head / tail - 查看文件的開頭/結尾部分
-
more / less - 分頁查看文件
- 例子:cat -n taobao.html | more
diff - different - 比較文件的差別
cp - copy - 拷貝文件
mv - move - 移動文件(同一個路徑下移動相當于是重命名操作)
Ctrl+D - 結束輸入
Ctrl+C - 中斷一個正在執行的命令
Ctrl+W - 刪除命令中的一塊
Ctrl+A - 光標到行首
Ctrl+E - 光標到行尾
-
| - 管道 - 將多個進程連接起來(把前一個命令的輸出作為下一個命令的輸入)
/ >輸出重定向
/> >追加輸出重定向
2> - 錯誤輸出重定向
2>> - 錯誤追加輸出重定向
27.給文件添加執行權限
chmod u+x,g+x,o+x 文件名
u - user - 當前用戶
g - group - 同組用戶
o - other - 其他用戶
28.在長格式查看時可以看到文件的權限字符
ls -l 文件名
r - read - 讀權限
w - write - 寫權限
x - execute - 執行權限
29.查找命令:
grep - 搜索字符串(支持正則表達式)
find - 搜索文件
name - 根據名字搜索 - find / -name "*.html"
size - 根據大小搜索 - -10M / +10M
type - 根據類型搜索 - d / f / l / s
atime - 最后訪問時間
mtime - 最后修改時間 - find . -mtime 0
ctime - 創建時間
30.網絡相關命令:
ssh - 安全遠程連接 - 例如:ssh root@39.104.170.48
scp - 安全文件拷貝 - 例如:scp -r /root/code root@39.104.170.48:/root/code2
sftp - 安全文件傳輸(file transfer protocol) - 例如:sftp root@39.104.170.48
put - 上傳
get - 下載
bye - 退出
help - 查看幫助
ping - 檢查網絡可達性 - ICMP - Internet Control Management Protocol - 網絡層
ttl - time to live
PING TO DEATH - DDoS - Distributed Deny of Service - 分布式拒絕服務攻擊
ifconfig / ip
127.0.0.1 - 回環地址 - localhost
netstat
netstat -nap | grep 進程或者端口
p - process - 查看進程信息(進程編號和進程名字)
kill 進程號
31.啟動停止重啟服務:
service nginx start
systemctl start nginx
systemctl stop nginx
systemctl restart nginx
systemctl status nginx
systemctl enable nginx
systemctl disable nginx
32.進程操作相關命令:
命令 & - 把命令放到后臺運行
Ctrl+z - 把前臺命令停下來放到后臺
ps - processes - 例如:ps -ef | grep redis
kill - 結束進程
jobs - 查看后臺運行或停止的進程
fg - foreground - 將后臺命令置于前臺
bg - background - 讓命令在后臺運行
top - 相當于是Windows下的任務管理器 - 可以查看進程占用CPU、內存等資源的情況
Linux系統下的軟件安裝:
redhat package manager
yellowdog updater modified
- 包管理工具 - yum / rpm / apt
- yum search nginx - 從默認的倉庫搜索有沒有指定的軟件
- yum install -y nginx - 安裝軟件
- yum remove -y nginx - 卸載軟件
- yum info nginx - 查看軟件相關信息
- yum list installed - 查看已經安裝的軟件
- yum update nginx - 更新軟件
- 源代碼構建安裝 - gcc / make
源代碼構建安裝Python3.7:
- 下載
wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tar.xz - 解壓縮和解歸檔
xz -d Python-3.7.3.tar.xz
tar -xvf Python-3.7.3.tar - 補充依賴庫
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel - 進入Python源代碼目錄安裝前準備工作
cd Python-3.7.3
./configure --prefix=/usr/local/python37 --enable-optimizations - 構建和安裝
make && make install - 注冊PATH環境變量
cd ~
vim .bash_profile
PATH=...:/usr/local/python37/bin - 激活環境變量
source .bash_profile - 測試安裝是否成功
python3 --version
Vim的使用
- 啟動vim
- vim 文件名
- vim的三種模式:
- 命令模式 -
- 按鍵代表命令 ---i或者a---> 編輯模式
- :或者/> 末行模式
~ G - 光標移到文件末尾 / 500G - 光標移到第500行 / gg - 光標移到行首 / hjkl - 左下右上(前面可以加數字)
~ Ctrl+y / Ctrl+e - 移動一行
~ Ctrl+f / Ctrl+b - 翻一頁
~ 0 - 光標到行首 /- 從光標所在的位置刪除到行尾
~ yy - 復制光標所在行 / 10yy - 從光標所在行開始復制10行
~ p - 粘貼 / 5p - 粘貼5遍
~ u - 撤銷 / ctrl+r - 恢復
- 編輯模式 - 鍵入內容 ---Esc---> 命令模式
- 末行模式 - 搜索/配置/執行系統命令 ---Enter---> 命令模式
~ set nu - 顯示行號 - set nonu
~ syntax on - 顯示高亮語法 - syntax off
~ set ts=4 - 修改制表鍵的空格數
~ set expandtab - 將制表鍵處理為空格
~ set autoindent - 啟用自動縮進代碼
~ set ruler - 顯示光標所在的位置 - set noruler - 映射快捷鍵:
~ map <F2> gg99999dd
~ inoremap _main if name == 'main': - 多文件操作:
~ :ls - 查看所有打開的文件
~ :b 數字 - 指定顯示哪個文件
~ :vs - 垂直拆分窗口
~ :sp - 水平拆分窗口
~ Ctrl+w兩次 - 切換窗口
~ :qa - 退出所有窗口
~ vim -d 文件1 文件2 - 打開多文件進行版本比較
面向對象編程:
- 定義類(數據抽象(找名詞) - 屬性、行為抽象(找動詞) - 方法)
- 創建對象(構造器語法)
- 給對象發消息(調用對象的方法)
- 面向對象的三大支柱:封裝、繼承、多態
類和類之間的關系:
~ 繼承(is-a)
~ 關聯(has-a)- 聚合/合成
~ 依賴(use-a)
創建鏈接
~ 硬鏈接(給磁盤文件增加了新的引用,只要引用數不為0文件就不會消失)
~ 軟鏈接(相當于Windows系統下的快捷方式)
- ln -s /usr/local/python37/bin/python3 /usr/bin/python3
進程操作相關命令:
~ 命令 & - 把命令放到后臺運行
~ Ctrl+z - 把前臺命令停下來放到后臺
~ ps - processes - 例如:ps -ef | grep redis
~ kill - 結束進程
~ jobs - 查看后臺運行或停止的進程
~ fg - foreground - 將后臺命令置于前臺
~ bg - background - 讓命令在后臺運行
~ top - 相當于是Windows下的任務管理器 - 可以查看進程占用CPU、內存等資源的情況
安裝和使用Git:
1990s - CVS / VSS - 鎖定模式
2000 - Subversion(SVN)- 合并模式
必須有版本控制的中央服務器才能使用版本控制 - 中央集權型的版本控制系統
分布式版本控制系統 - 2005 - Git
Git / Mercury
~ git --version
~ git init - 將文件夾初始化為Git倉庫
~ git add <file> - 將工作區的指定文件放入暫存區
~ git status - 查看工作區和暫存區的狀態
~ git commit -m '提交的原因' - 將暫存區的內容添加到倉庫
~ git log - 查看提交日志(歷史提交記錄)
~ git checkout -- <file> - 將暫存區的文件恢復到工作區
~ git reset --hard HEAD^ - 回到上一個版本
~ git reset --hard <ID> - 回到指定的版本
~ git reflog - 查看歷史和未來版本
國內的代碼托管平臺:碼云gitee / coding
https://gitee.com
https://coding.net
~ git clone <url> - 克隆代碼
~ git push - 將本地代碼推到服務器(將工作成果同步到服務器)
~ git pull - 將服務器更新同步到本地