python高級:
1琳要、模塊和包
2、深淺拷貝
3秤茅、回顧面向?qū)ο?br>
4稚补、列表生成器
5、迭代器
6框喳、裝飾器
7课幕、函數(shù)高級
8、正則表達式
9五垮、內(nèi)存分析
10乍惊、垃圾回收機制
11、元類
12放仗、多線程和多進程和協(xié)程
13润绎、網(wǎng)絡編程(socket編程)
模塊和包:
1、什么是包(package)?
用來分門別類存放模塊代碼的文件夾莉撇,包含了一個或一些.py的文件夾.[一般存在一個init.py文件]
2呢蛤、什么是模塊(module)?
編寫python代碼的.py文件稼钩。
import package
import package.moduleName
import package.moduleName.className or funcName
from package import moudleName
from package.moudleName import funcName or class
import xxx.xxx.xxx as alias
相對導包
絕對導包
is和==
==判斷是兩個變量的值
is判斷是兩個變量的內(nèi)存地址
深淺拷貝
在編程中顾稀,我們經(jīng)常會遇到對象的復制
1、賦值
賦值僅僅是對地址進行復制坝撑,這樣多個變量指向同一塊內(nèi)存
2静秆、淺拷貝
1、對象自身的copy方法可以完成淺拷貝
2巡李、import copy copy.copy(destObj)
3抚笔、深拷貝
import copy
copy.deepcopy(destObj)
面向?qū)ο蟮幕仡櫍?br>
1、面向?qū)ο蟮睦斫?br>
2侨拦、面向?qū)ο蟮奶卣鳎?br>
封裝:
繼承:
多態(tài):父類引用指向子類實例
class Person{
}
class Son extends Person{
}
Son s1 = new Son(); # s1 = Son()
Person p1 = new Son(); # p1 = Son()
try:
xxx
xxx
xxx
except BaseException as e:
xxxx
重寫(覆蓋)override 重載overload
def add(a, b) {
return a + b;
}
def add(a, b) {
return a + b;
}
add(3,5,8)
面試題:
1殊橙、什么是redis、什么是Memcache狱从、兩者有什么區(qū)別膨蛮?
redis:
redis是一個key-value存儲系統(tǒng)。和Memcached類似季研,它支持存儲的value類型相對更多敞葛,包括string(字符串)、list(鏈表)与涡、set(集合)惹谐、zset(sorted set --有序集合)和hash(哈希類型)。這些數(shù)據(jù)類型都支持push/pop驼卖、add/remove及取交集并集和差集及更豐富的操作氨肌,而且這些操作都是原子性的。在此基礎(chǔ)上酌畜,redis支持各種不同方式的排序怎囚。與memcached一樣,為了保證效率桥胞,數(shù)據(jù)都是緩存在內(nèi)存中恳守。區(qū)別的是redis會周期性的把更新的數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎(chǔ)上實現(xiàn)了master-slave(主從)同步埠戳。
Redis 是一個高性能的key-value數(shù)據(jù)庫井誉。 redis的出現(xiàn)蕉扮,很大程度補償了memcached這類key/value存儲的不足整胃,在部 分場合可以對關(guān)系數(shù)據(jù)庫起到很好的補充作用。它提供了Java喳钟,C/C++屁使,C#在岂,PHP,JavaScript蛮寂,Perl蔽午,Object-C,Python酬蹋,Ruby及老,Erlang等客戶端,使用很方便范抓。 [1]
Redis支持主從同步骄恶。數(shù)據(jù)可以從主服務器向任意數(shù)量的從服務器上同步,從服務器可以是關(guān)聯(lián)其他從服務器的主服務器匕垫。這使得Redis可執(zhí)行單層樹復制僧鲁。存盤可以有意無意的對數(shù)據(jù)進行寫操作。由于完全實現(xiàn)了發(fā)布/訂閱機制象泵,使得從數(shù)據(jù)庫在任何地方同步樹時寞秃,可訂閱一個頻道并接收主服務器完整的消息發(fā)布記錄。同步對讀取操作的可擴展性和數(shù)據(jù)冗余很有幫助偶惠。
redis的官網(wǎng)地址春寿,非常好記,是redis.io洲鸠。(特意查了一下堂淡,域名后綴io屬于國家域名,是british Indian Ocean territory扒腕,即英屬印度洋領(lǐng)地)
目前绢淀,Vmware在資助著redis項目的開發(fā)和維護。
Memcache:
memcache是一套分布式的高速緩存系統(tǒng)瘾腰,由LiveJournal的Brad Fitzpatrick開發(fā)皆的,但目前被許多網(wǎng)站使用以提升網(wǎng)站的訪問速度,尤其對于一些大型的蹋盆、需要頻繁訪問數(shù)據(jù)庫的網(wǎng)站訪問速度提升效果十分顯著费薄。這是一套開放源代碼軟件,以BSD license授權(quán)發(fā)布栖雾。
區(qū)別:
1楞抡、Redis中,并不是所有的數(shù)據(jù)都一直存儲在內(nèi)存中的析藕,這是和Memcache相比一個最大的區(qū)別召廷。
2、Redis在很多方面具備數(shù)據(jù)庫的特征,或者說就是一個數(shù)據(jù)庫系統(tǒng)竞慢,而Memcache只是簡單的K/V緩存先紫。
3、他們的擴展都需要做集群筹煮;實現(xiàn)方式:master-slave遮精、Hash。
4败潦、在100k以上的數(shù)據(jù)中本冲,Memcache性能要高于Redis。
5劫扒、如果要說內(nèi)存使用效率眼俊,使用簡單的key-value存儲的話,Memcached的內(nèi)存利用率更高粟关,而如果Redis采用hash結(jié)構(gòu)來做key-value存儲疮胖,由于其組合式的壓縮,其內(nèi)存利用率會高于Memcache闷板。當然澎灸,這和你的應用場景和數(shù)據(jù)特性有關(guān)。
6遮晚、如果你對數(shù)據(jù)持久化和數(shù)據(jù)同步有所要求性昭,那么推薦你選擇Redis,因為這兩個特性Memcache都不具備县遣。即使你只是希望在升級或者重啟系統(tǒng)后緩存數(shù)據(jù)不會丟失糜颠,選擇Redis也是明智的。
7萧求、Redis和Memcache在寫入性能上面差別不大其兴,讀取性能上面尤其是批量讀取性能上面Memcache更強
redis有哪些持久化方案?
1夸政、快照形式(rdb):定期吧你內(nèi)存中當前時刻的數(shù)據(jù)保存到磁盤元旬。Redis默認支持的持久化方案。
2守问、aof形式(append only file):把所有對redis數(shù)據(jù)庫操作的命令匀归,增刪改操作的命令。保存到文件中耗帕。數(shù)據(jù)庫恢復時把所有的命令執(zhí)行一遍即可(不包括查詢)穆端。
dump.rdb可能會丟失數(shù)據(jù),xxxx.aof相比較rdb而言仿便,數(shù)據(jù)保存更加完整体啰。
在redis.conf配置文件中配置字柠。
Aof的配置(默認不開啟):