python高级:
1、模块和包
2、深浅拷贝
3、回顾面向对象
4、列表生成器
5、迭代器
6、装饰器
7、函数高级
8、正则表达式
9、内存分析
10、垃圾回收机制
11、元类
12、多线程和多进程和协程
13、网络编程(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判断是两个变量的内存地址
深浅拷贝
在编程中,我们经常会遇到对象的复制
1、赋值
赋值仅仅是对地址进行复制,这样多个变量指向同一块内存
2、浅拷贝
1、对象自身的copy方法可以完成浅拷贝
2、import copy copy.copy(destObj)
3、深拷贝
import copy
copy.deepcopy(destObj)
面向对象的回顾:
1、面向对象的理解
2、面向对象的特征:
封装:
继承:
多态:父类引用指向子类实例
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、两者有什么区别?
redis:
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。 [1]
Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。
redis的官网地址,非常好记,是redis.io。(特意查了一下,域名后缀io属于国家域名,是british Indian Ocean territory,即英属印度洋领地)
目前,Vmware在资助着redis项目的开发和维护。
Memcache:
memcache是一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发,但目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的、需要频繁访问数据库的网站访问速度提升效果十分显著。这是一套开放源代码软件,以BSD license授权发布。
区别:
1、Redis中,并不是所有的数据都一直存储在内存中的,这是和Memcache相比一个最大的区别。
2、Redis在很多方面具备数据库的特征,或者说就是一个数据库系统,而Memcache只是简单的K/V缓存。
3、他们的扩展都需要做集群;实现方式:master-slave、Hash。
4、在100k以上的数据中,Memcache性能要高于Redis。
5、如果要说内存使用效率,使用简单的key-value存储的话,Memcached的内存利用率更高,而如果Redis采用hash结构来做key-value存储,由于其组合式的压缩,其内存利用率会高于Memcache。当然,这和你的应用场景和数据特性有关。
6、如果你对数据持久化和数据同步有所要求,那么推荐你选择Redis,因为这两个特性Memcache都不具备。即使你只是希望在升级或者重启系统后缓存数据不会丢失,选择Redis也是明智的。
7、Redis和Memcache在写入性能上面差别不大,读取性能上面尤其是批量读取性能上面Memcache更强
redis有哪些持久化方案?
1、快照形式(rdb):定期吧你内存中当前时刻的数据保存到磁盘。Redis默认支持的持久化方案。
2、aof形式(append only file):把所有对redis数据库操作的命令,增删改操作的命令。保存到文件中。数据库恢复时把所有的命令执行一遍即可(不包括查询)。
dump.rdb可能会丢失数据,xxxx.aof相比较rdb而言,数据保存更加完整。
在redis.conf配置文件中配置。
Aof的配置(默认不开启):