這個題就是面向對象設計和設計模式的開始。 你可能比較熟悉的模式叫作: MVC。說是 Model View Controller,而在 Django 中由於 Template 來處理視圖展示,因此稱爲: MTV。 接下里會問到的就是分層的概念,有句話叫:「沒有什麼問題是不能經過增長一層解決的,若是有,那就再加一層。」固然還會有設計模式的一些原則等着你,好比開-閉原則、單一職責原則等。python
ORM:Object Relational Mapping(對象關係映射),它作的事就是幫咱們封裝一下對數據庫的操做,避免咱們來寫不太好維護的 SQL 代碼。程序員
說到性能損耗,能夠接着聊的是 Django 中的 raw sql,也就是說 Model.objects.raw 這個方法的使用,它的做用、原理、性能提高等。還能夠繼續聊另一個老生常談的問題:N+1 的問題。面試
這涉及到 Django 如何處理數據庫鏈接細節的問題。默認狀況下對於每個請求 Django 都會創建一個新的數據庫鏈接。這意味着當請求量過大時就會出現數據庫(MySQL)的 Too many connection 的問題,對於這個問題,在其餘的語言框架中有鏈接池這樣的東西來減小數據庫的鏈接數,來提高鏈接的使用效率。而在 Django中,爲了處理這一問題,增長了一個配置:sql
CONN_MAX_AGE
,在 settings 的 DATABASES 配置中。配置了該選項後,Django 會跟數據庫保持連接(時長取決於 CONN_MAX_AGE 設定的值 ),再也不會針對每一個請求都建立新的鏈接了。數據庫
可是須要注意的是,這跟數據庫鏈接池的概念還不太同樣。設計模式
從原理上來講:在同一線程內,對RLock進行屢次acquire()操做,程序不會阻塞。 資源老是有限的,程序運行若是對同一個對象進行操做,則有可能形成資源的爭用,甚至致使死鎖 也可能致使讀寫混亂數組
列表是序列,能夠理解爲數據結構中的數組,字典能夠理解爲數據結構中的hashmap
,python中list對象的存儲結構採用的是線性表,所以其查詢複雜度爲O(n)
。 而dict對象的存儲結構採用的是散列表(hash表),其在最優狀況下查詢複雜度爲O(1)。 dict的佔用內存稍比list大,會在1.5倍左右。數據結構
更多內容,歡迎關注 dwz.cn/r4lCXEuLapp