WeeklyRevie_redis/git/Django_20191230-20200104


一、在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 基礎

clipboard.png

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)生響應 (渲染頁面)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容