一、在Linux系統(tǒng)中安裝軟件的方式:
1、利用包管理工具安裝
1.1 yum命令(適用于 CentOS)
例: 對于nginx軟件包的使用
~ 查找軟件包
yum search nginx
~ 安裝軟件包
yum install nginx
~ 卸載軟件
yum erase nginx / yum remove nginx
~ 列出軟件包信息
yum info nginx
~ 列出所有已安裝的軟件包
yum list installed
1.2 rpm命令(適用于 Redhat)
1.安裝
~ rpm -i 包名
例:
rpm -i example.rpm 安裝 example.rpm 包;
rpm -iv example.rpm 安裝 example.rpm 包并在安裝過程中顯示正在安裝的文件信息;
rpm -ivh example.rpm 安裝 example.rpm 包并在安裝過程中顯示正在安裝的文件信息及安裝進度;
2、查看安裝完成的軟件
~ rpm -qa -- 列出所有被安裝的rpm package
-a選項是查詢所有已經(jīng)安裝的軟件包。
-q是查詢一個包是否安裝
(顯示區(qū)別:已經(jīng)安裝的rpm包不會顯示后綴.rpm ,而未安裝的包則顯示后綴.rpm)
例:
[root@ysk]# rpm -qa | grep jdk
java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.i686
java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.i686
3、卸載軟件
~ rpm -e 包名
4、升級軟件
~ rpm -Uvh rpm包名 -- 升級軟件
(如果已安裝老版本,則升級;如果沒安裝,則直接安裝)
2、源代碼構(gòu)建安裝
例:安裝Git官方最新版
1. 下載Git
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.24.1.tar.xz
2. 解壓縮和解歸檔
xz -d git-2.24.1.tar.xz
tar -xf git-2.24.1.tar
3. 配置安裝目錄到/usr/local
./configure --prefix=/usr/local
4. 進入安裝包目錄
cd git-2.24.1
5. 拿到解壓后的源碼以后我們需要編譯源碼了,不過在此之前需要安裝編譯所需要的依賴
yum install -y curl libcurl-devel
6. 執(zhí)行安裝
make && make install
二、Linux中對redis操作的常用命令
(redisdoc.com -- Redis命令參考網(wǎng)站)
1、安裝redis(源代碼構(gòu)件安裝)
1. 下載Redis官方源代碼
wget http://download.redis.io/releases/redis-5.0.7.tar.gz
2. 解壓縮和解歸檔
gunzip redis-5.0.7.tar.gz
tar -xf redis-5.0.7.tar
3. 構(gòu)建和安裝
cd redis-5.0.7
make && make install
4. 啟動Redis服務
redis-server --requirepass 口令 >> redis.log &
5. Redis客戶端工具
redis-cli
2、與redis相關(guān)及在linux中常用的命令
2.1 常用命令
~ 查詢網(wǎng)絡端口
netstat -ntlp
~ 查看所有鍵值對
keys *
~ 查看數(shù)據(jù)庫大?。ㄦI值對數(shù)量)
dbsize
~ 只顯示某一進程的某一列
1、只顯示redis-server進程的第二列
ps -ef | grep 'redis-server'|grep -v 'grep'|awk '{print $2}'
2、只顯示redis-server進程最后一列
ps -ef | grep 'redis-server'|grep -v 'grep'|awk '{print $NF}'
~ 把列變成行批量殺掉進程
ps -ef | grep 'redis-server'|grep -v 'grep'|awk '{print $2}'| xargs kill
-- ps -ef:顯示所有進程
-- grep: 查找
-- grep -v grep: 查找不包含grep的進程
-- awk ‘{print $2}’ : 提取第二列
-- xargs:一般是和管道一起使用,給命令傳遞參數(shù)的一個過濾器,
也是組合多個命令的一個工具
~ 根據(jù)名字殺掉進程
pkill 'redis-server'
~ 根據(jù)名字殺掉進程
killall 'redis-server'
命令 & ---> 將命令放到后臺運行
jobs ---> 查看后臺運行的命令
fg %編號 ---> 將后臺命令放到前臺運行
Ctrl+z ---> 將前臺命令暫停并放到后臺
bg %編號 ---> 將暫停的命令在后臺運行
> set username luohao ex 120 ---> 添加鍵值對
> get username ---> 通過鍵查找值
> ttl username ---> 查看鍵過期時間
> expire username 300 ---> 設置鍵過期時間
> keys * ---> 查看所有鍵
> dbsize ---> 查看數(shù)據(jù)庫大?。ㄦI值對數(shù)量)
> select 0~15 ---> 選擇數(shù)據(jù)庫 (默認開了16個數(shù)據(jù)庫)
> flushdb ---> 清空當前數(shù)據(jù)庫
> flushall ---> 清空所有數(shù)據(jù)庫的數(shù)據(jù)
2.2 redis相關(guān)命令
~ 需要密碼的啟動redis并放到后臺運行
redis-server --requirepass 123456 >> redis.log &
~ 把redis服務啟動在某一個ip上(適用于多網(wǎng)卡場景)
redis-server --requirepass 123456 --bind ip地址
~ 命令行遠程連接redis服務
redis-cli
~ 完成登錄驗證
auth 密碼
~ 命令行遠程連接redis服務指定主機指定端口并附帶密碼
redis-cli -h host -p port -a password
-- host:遠程redis服務器host
-- port:遠程redis服務端口
-- password:遠程redis服務密碼
~ 退出redis(cli場景中)
-- shutdown save 保存并關(guān)閉
-- save 保存數(shù)據(jù)
-- bgsave 后臺保存數(shù)據(jù)
-- quit 退出命令行
三、redis 核心數(shù)據(jù)類型
1. 字符串
set key value ---> 添加鍵值對
get key ---> 通過鍵查看值
strlen key ---> 獲取字符串長度
append key value2 ---> 給字符串追加內(nèi)容
mset key1 value1 key2 value2 ---> 添加多組鍵值對
mget key1 key2 ---> 查看多個鍵對應的值
incr key ---> 值加1
incrby key value ---> 值加上value
decr key ---> 值減1
decrby key value ---> 值減去value
getrange key start end ---> 獲取字符串指定范圍的子串
setrange key offset value ---> 修改字符串指定位置的內(nèi)容
2. 哈希(表) - hash
hset key field value ---> 添加hash類型鍵值對
hmset key field1 value1 field2 value2 ---> 添加多組hash類型鍵值對
hget key field ---> 獲取hash類型字段對應的值
hmget key field1 field2 ---> 獲取hash類型多個字段對應的值
hgetall key ---> 獲取hash類型所有的字段和對應的值
hkeys key ---> 獲取hash類型所有的字段
hvals key ---> 獲取hash類型所有字段的值
hexists key field ---> 判斷hash類型某個字段是否存在
3. 列表 - list
lpush key value1 value2 value3 ---> 在左邊添加元素
rpush key value1 value2 value3 ---> 在右邊添加元素
lpop key ---> 從左邊移除一個元素
rpop key ---> 從右邊移除一個元素
lrange key start end ---> 查看列表指定范圍的元素
llen key ---> 查看列表元素個數(shù)
lindex key index ---> 查看列表指定位置元素
lrem key count value ---> 刪除列表中指定元素
4. 集合 - set
sadd key value1 value2 value3 ---> 添加元素
srem key value ---> 刪除元素
spop ---> 獲取隨機元素
scard key ---> 查看元素個數(shù)
smembers key ---> 查看所有元素
sismember key value ---> 查看集合中有沒有指定元素
sinter key1 key2 ---> 交集
sunion key1 key2 ---> 并集
sdiff key1 key2 ---> 差集
5. 有序集合 - zset
zadd key score1 mem1 score2 mem2 ---> 添加元素
zrem key mem ---> 刪除元素
zrange key start end ---> 按score的升序查看元素
zrevrange key start end ---> 按score的降序查看元素
zscore key mem ---> 查看元素對應的score
zincrby key value mem ---> 修改元素的score值
四、駱老師補充講解(linux,python3,mysql,django)
1、在Linux系統(tǒng)中啟停服務
~ 啟動:systemctl start nginx
service nginx start
~ 停止:systemctl stop nginx
service nginx stop
~ 重啟:systemctl restart nginx
~ 查看狀態(tài):systemctl status nginx
~ 開機自啟:systemctl enable nginx
~ 禁用自啟:systemctl disable nginx
2、一些常識
2.1 網(wǎng)絡應用的模式:
~ C/S Client/Server - 客戶端/服務器模式
~ B/S Browser/Server - 瀏覽器/服務器模式
~ P2P peer-to-peer - 對等模式
2.2 URL/URI - 統(tǒng)一資源定位符/統(tǒng)一資源標識符
~URL:uniform resource locator
https://www.baidu.com:443/index.html
~URI:uniform resource indentifier
https://www.baidu.com:443/img/bd_logo1.png
2.3 DNS - 域名服務器(將服務器的域名轉(zhuǎn)換成對應的IP地址)
2.4 反向代理 - 代理用戶瀏覽器向服務器發(fā)起請求
~ 保護真正的服務器免于直接被攻擊
~ 配置負載均衡,將流量分攤到多臺服務器上
2.5 Web服務器 - 處理靜態(tài)資源 - Nginx / Apache
2.6 應用服務器 - uWSGI / Gunicorn
2.7 其他服務器
~ 緩存服務器 - Redis
~ 數(shù)據(jù)庫服務器 - MySQL
~ 郵件服務器 - Sendmail
~ 文件服務器 - NFS / FastDFS
~ 消息隊列服務器 - RabbitMQ / Kafka
2.8. HTTP - 超文本傳輸協(xié)議
~ HTTP請求報文
請求行 - GET /path/resource HTTP/1.1
請求頭 - 鍵值對
消息體 - 發(fā)給服務器的數(shù)據(jù)
~ HTTP響應報文
響應行 - HTTP/1.1 200 OK
響應頭 - 鍵值對
消息體 - 服務器返回的數(shù)據(jù)
2.9 一些Python解釋器
CPython - C語言實現(xiàn)的Python解釋器
Jython - Java實現(xiàn)的Python解釋器
IronPython - C#實現(xiàn)的Python解釋器
PyPy - Python實現(xiàn)的Python解釋器 - JIT
Anaconda - 不僅有Python解釋器還有諸多三方庫
2.10 其它
配置PATH環(huán)境變量保證在命令行模式下
Python解釋器和相關(guān)工具在任何路徑都能運行
Web應用 - 基于瀏覽器來使用的應用程序
手機App - 應用中呈現(xiàn)的數(shù)據(jù)和內(nèi)容是通過服務端的程序動態(tài)生成的
用程序動態(tài)生成頁面內(nèi)容
用Python編寫服務器端的程序,為Web和手機應用生成動態(tài)內(nèi)容
開發(fā)效率高 + 生態(tài)圈非常繁榮
對本地代碼實施版本控制并同步到版本控制服務器
1. git init ---> 將普通文件夾變成版本倉庫
2. git add命令
git add ---> 是將工作區(qū)內(nèi)容添加到暫存區(qū)
git add -A ---> 提交所有變化
git add -u ---> 提交被修改(modified)和被刪除(deleted)文件,不包括新文件(new)
git add . ---> 提交新文件(new)和被修改(modified)文件,不包括被刪除(deleted)文件
3. git commit -m '...' ---> 將暫存區(qū)內(nèi)容添加到版本庫
4. git status / git log
5. git remote add origin <url> ---> 綁定遠端倉庫
6. git push -u origin master ---> 將本地代碼推到服務器
4、一些補充知識點
4.1 linux:
history -c - 清楚歷史命令
i歷史記錄編號 - 再次執(zhí)行命令
alias '命令簡化名=原本命令' - 命令別名
unalisa 命令簡化名 - 取消命令別名
echo $PATH - 顯示當前PATH環(huán)境變量
4.2 安裝Python3
1. 安裝依賴項
yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
2. 下載Python3源代碼
wget https://www.python.org/ftp/python/3.7.6/Python-3.7.6.tar.xz
3. 解壓縮和解歸檔
xz -d Python-3.7.6.tar.xz
tar -xvf Python-3.7.6.tar
4. 執(zhí)行安裝前的配置
cd Python-3.7.6
./configure --prefix=/usr/local/python37 --enable-optimizations
-- prefix:將要安裝的應用安裝到指定目錄
-- enable-optimizations:是優(yōu)化選項,加上這個 flag 編譯后,性能有 10% 左右的優(yōu)化
5. 構(gòu)建和安裝
make && make install
(這一步可以讓進程放在后臺運行: nohup make >> ~/install.log &)
6. 注冊環(huán)境變量
- 打開配置文件:vim ~/.bash_profile
- 添加如下內(nèi)容:
PATH=$PATH:/usr/local/python37/bin
export PATH
4.3 配置程序軟連接:
例子:
配置pip的軟鏈接:
ln -s /usr/local/python37/bin/pip /usr/bin/pip3
驗證
pip3 --version
配置python的軟鏈接:
ln -s /usr/local/python37/bin/python3 /usr/bin/python3
4.4 執(zhí)行py文件前置條件:
1.給文件添加執(zhí)行權(quán)限
2.在文件內(nèi)容第一排添加:
#!/usr/bin/python3 (軟連接)
--便于可以用 ./文件名 的方式運行py文件
4.5 刪除命令行中的主機名:
vim /etc/bashrc
第41行: 刪除 @\h
保存并退出登錄
4.6 安裝Nginx:
yum install -y nginx
systemctl start nginx
systemctl stop nginx
4.7 安裝MySQL:
1. 清除掉所有跟mariadb相關(guān)的東西
yum list installed | grep mariadb | awk '{print $1}' | xargs yum erase -y
2. 清理之前的數(shù)據(jù)和日志文件(如果存在)
rm -rf /var/lib/mysql
rm -f /var/log/mysqld.log
3. 下載MySQL官方提供的RPM包并解歸檔
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar
tar -xf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar
4. 使用rpm包管理工具安裝MySQL
rpm -ivh mysql-community-common-...rpm
rpm -ivh mysql-community-libs-...rpm
rpm -ivh mysql-community-client-...rpm
rpm -ivh mysql-community-server-...rpm
5. 啟動服務查看隨機密碼
systemctl start mysqld
cat /var/log/mysqld.log | grep password
6. 用客戶端工具連接MySQL
mysql -u root -p
7. 修改root用戶口令
set global validate_password_policy=0;
set global validate_password_length=6;
alter user 'root'@'localhost' identified by '123456';
五、git 基礎

1、git基礎命令
1.1 創(chuàng)建和關(guān)聯(lián)
- 在本機創(chuàng)建git倉庫先創(chuàng)建一個空的文件夾,從shell通過cd指令進入到新建的空的文件夾中,然后執(zhí)行g(shù)it init指令將該文件夾變成git倉庫,創(chuàng)建成功后會多出一個.git隱藏文件夾,但不要對它進行操作
注意:git倉庫中不能再創(chuàng)建其他git倉庫
1、git add命令
git add ---> 是將工作區(qū)內(nèi)容添加到暫存區(qū)
git add -A ---> 提交所有變化
git add -u ---> 提交被修改(modified)和被刪除(deleted)文件,不包括新文件(new)
git add . ---> 提交新文件(new)和被修改(modified)文件,不包括被刪除(deleted)文件
2、git status ---> 查看git狀態(tài)
3、git commit -m '描述' ---> 將緩存區(qū)全部提交git本地倉庫
4、git log ---> 查看提交日志
5、git reset --hard HEAD ---> 讓工作目錄和倉庫內(nèi)容一致(如果沒有保存到本地-commit)可以恢復緩存中的數(shù)據(jù)
6、git reset --hard 版本號 ---> 回到指定版本
7、git reset --hard HEAD^ ---> 有幾個^回退幾個版本
8、git checkout 文件名 ---> 從緩存區(qū)恢復工作中的內(nèi)容(回到上次提交的狀態(tài))
9、git clone <url> ---> 將服務器上的項目(倉庫)克隆到本地(https地址需要密碼,ssh地址)不要在git倉庫里創(chuàng)建!克隆下來直接是git倉庫!回到普通文件夾再克??!
git clone --depth=1 地址 ---> 克隆不要之前的版本
10、git remote add origin 地址 ---> 關(guān)聯(lián)遠程倉庫(只需關(guān)聯(lián)一次)
11、git push -u origin master ---> 提交(-u在第一次提交的時候才用)
12、git push ---> 將本地倉庫提交到遠程master分支上
13、git push origin 分支名 ---> 提交到遠程對應的分支上,不存在會自動創(chuàng)建
14、git pull ---> 將遠程倉庫內(nèi)容更新到本地倉庫和工作區(qū)
1.2 分支管理
- 創(chuàng)建倉庫會默認給我們創(chuàng)建一個master分之,這個分之一般作為提交和發(fā)布分之;開發(fā)一般會自己創(chuàng)建一個develop分之,用來開發(fā)和測試;多人協(xié)作的時候還可能根據(jù)不同的人或者(不同的功能)創(chuàng)建不同的分之,用來獨立開發(fā)
1、git branch [-a] ---> 查看分之
2、git branch 分之名 ---> 創(chuàng)建分之
3、git checkout 分支名 ---> 切換分之
4、git checkout -b 分之名 ---> 切換并創(chuàng)建新的分之
5、git diff 分之1 分之2 ---> 查看兩個分之之間的差異
6、git merge 分之名 ---> 讓當前分之和指定分之進行合并
注意: 切換分之、push、pull,這些操作前要保證工作區(qū)是clean
2、在本機創(chuàng)建git倉庫
- 先創(chuàng)建一個空的文件夾,從shell通過cd指令進入到新建的空的文件夾aaa中;
- 然后執(zhí)行g(shù)it init指令將文件夾aaa變成git倉庫;
- 創(chuàng)建成功后aaa文件夾會多出一個.git的隱藏文件夾,不能刪除
- 注意:git倉庫中不能在創(chuàng)建其他的git倉庫
- 將文件從工作區(qū)添加到緩存區(qū)
git add \b.txt
- 將文件從緩存區(qū)添加到本地倉庫
git commit -m 'add b.txt'
- 查看當前版本
git log
- 將本地倉庫的內(nèi)容放回工作區(qū)并且可以選擇版本
git reset -hard 版本號
- 將緩存區(qū)的內(nèi)容放回工作區(qū)
git checkout 文件名
- 將本地倉庫的內(nèi)容 提交到關(guān)聯(lián)的遠程倉庫
git push -u origin 分支名
3、復用別人倉庫
1. 搭建git連接
- 初始化文件夾
git init
- 關(guān)聯(lián)地址
git remote add origin 網(wǎng)址
(若需取消倉庫連接: git remote remove origin)
- 查看遠程連接
git remote -v
- 拷貝內(nèi)容
git fetch origin
- 轉(zhuǎn)換到主分支
git checkout master
2. 更新內(nèi)容
git pull
六、Django初識
0、引言
高內(nèi)聚低耦合:
在軟件設計中通常用耦合度和內(nèi)聚度作為衡量模塊獨立程度的標準。劃分模塊的一個準則是高內(nèi)聚低耦合。從模塊粒度來看,高內(nèi)聚:盡可能類的每個成員方法只完成一件事(最大限度的聚合); 低耦合:減少類內(nèi)部,一個成員方法調(diào)用另一個成員方法。從類角度來看, 高內(nèi)聚低耦合:減少類內(nèi)部,對其他類的調(diào)用;從功能塊來看 高內(nèi)聚低耦合:減少模塊之間的交互復雜度(接口數(shù)量,參數(shù)數(shù)據(jù))即橫向:類與類之間、模塊與模塊之間;縱向:層次之間;盡可能,內(nèi)容內(nèi)聚,數(shù)據(jù)耦合
項目架構(gòu)模式:mvc架構(gòu)模式
數(shù)據(jù)和數(shù)據(jù)的顯示要分離(數(shù)據(jù)和顯示解耦合)
同一個模型可以渲染成不同的視圖,同一個視圖可以加載不同的模型
model -- 模型 -- 數(shù)據(jù)
view -- 視圖
controller -- 控制器 -- 數(shù)據(jù)的顯示
Django中的MTV架構(gòu)
Model -- 數(shù)據(jù)
Temlplate -- 模板
View -- 控制器
Django ORM框架 (對象關(guān)系映射框架)
- 解決對象模型到關(guān)系模型雙向轉(zhuǎn)換問題
Django框架本身扮演了一部分控制器的角色
控制器 views.py \
- 接受用戶的請求,驗證用戶的請求
- 操作模型
- 產(chǎn)生響應 (渲染頁面)