hello, 小夥伴們你們好, 今天來跟你們分享一下工做中遇到的坑以及本身在工做中的一些本身的認知和理解,但願能給你們帶來一點收穫和啓發。python
1.Redis默認的16個數據庫以及做用:redis
首先須要注意的是redis的認識, 首先Redis是一個字典結構的存儲服務器, 實際上Redis實例提供了多個用來存儲數據的字典, 客戶端能夠指定將數據庫存放在哪一個字典中。這和在MySQL中再建立多個數據庫相似, 能夠將其中的每一個字典都理解成一個獨立的數據庫。這個數據庫是基於單機纔有的, 若是是集羣就沒有了數據庫的概念。數據庫
每一個數據庫對外都是一個從0開始的遞增數字命名, Redis默認支持16個數據庫(能夠經過配置文件支持更多,無上限)即修改配置文件中的database 後面的數字 所及能夠將其每一個字典都理解成一個獨立的數據庫。客戶端鏈接後默認選0號數據庫, 可使用SELECT選擇更換數據庫django
redis> SELECT 1 OK redis [1] > GET foo (nil)
與關係型數據庫創建的數據庫的區別是:1.不支持自定義數據庫的名字,都是以編號命名的,使用者必須本身記住哪一個數據庫存儲了哪些數據, 還有Redis只能設置一個密碼, 即客戶端要麼能夠訪問所有數據, 要麼一個也訪問不了。總的看來, 這些個數據庫更像一個命名空間,不適宜存儲不一樣應用的程序的數據。由於FLUSHALL命令能夠清空一個Redis實例中全部數據庫中的數據。好比可使用0號數據庫存儲某個應用測試環境的數據, 1號存儲生產環境的數據,不適宜用1號存儲A應用的數據而2號存儲B用用的數據, 不一樣應用應該使用不一樣的Redis存儲實例存儲數據,Redis實例不會佔用太多的內存, 因此能夠建立多個,沒必要擔憂多個實力會佔用不少內存。json
查詢資料, 進行多個redis實例目前的理解是將其進行分區即存儲不一樣應用的數據,估計也是不太對,還望看到的能指正一下。ubuntu
2.CPU和GPU的區別: CPU(中央處理器)主要是用來處理各類不一樣的數據庫類型同時又要邏輯判斷又會引入大量的分支跳轉和中斷的處理,這樣就使得CPU不僅是用來進行計算,而GPU(圖形處理器),面對的則是類型高度統一相互無依賴的大規模數據和不須要被打斷的純淨的計算環境 。服務器
3.關於實際生產環境, 大多仍是python2的環境, ubuntu自帶python2.7和3.5, 可是仍是使用python2.7, 關於在python2.7環境下建立django項目的坑, python2.7爲何建立不了django項目?緣由多是1.路徑出現中文,2.使用的django版本太高, 必須是1.11如下才能建立成功, 通常就是這兩個問題, 再有的就是本身手殘,點錯東西了,python2.7
4.python2.7總使用requests.post 傳輸過來的字符信息到都是unicode, 想要轉變成utf8的,只要在後面添加.encode("utf8")便可。函數
關於jsonresponse返回值第一層不能支持中文的解決方案:post
只是限於python2.7,能夠在相應的方法下修改一下默認編碼便可
import sys reload(sys) sys.setdefaultencoding('utf8')
因爲python3中區分了unicode str 和 byte array 而且默認編碼再也不是ascii碼,因此不會存在該問題
jsonresponse中的這個參數 json_dumps_params={"ensure_ascii": False} 做用是在返回給用戶數據時,在用戶那邊支持顯示中文,可是若是使用eval函數將其轉化成dict,中文就不會顯示了,可是若是單獨取值,仍是會顯示中文。
# 所以返回數據能夠用兩種寫法 # 第一種 這一種比較保險,在哪裏也能夠顯示中文 data = json.dumps(data, ensure_ascii=False) return Response(data) # 第二種 ret = update_s(request.data["username"], request.data["pwd"]) data = {"status": "100", "res": ret, "message": "操做成功"} return JsonResponse(data, json_dumps_params={"ensure_ascii": False})