me 云面试

元祖的特点:
    1.元组内的元素,不可以增加,删除,只能访问,这个是元祖的特性,比较安全。类似于字符串。但是我们可以对整个元祖进行删除。使用del内置函数
    2.当元祖内只有一个元素的时候,需要加逗号消除歧义。
实现字典的排序
    字典是无序的,想要变得有序,必须使用有序字典
        import collections
        # 通过OrderedDict类创建的字典是有序的
        dic = collections.OrderedDict()
        dic['k1'] = 'v1'
        dic['k2'] = 'v2'
        dic['k3'] = 'v3'
        print(dic)  #OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')])
git命令    

数据库操作的分组聚合
from django.db.model import Avg,Max,Min

Book.objects.all().aggregate(Avg('price'))  总平均价格

Book.objects.all().aggregate(avg_price = Avg('price'))  总平均价格,指定一个名称

Book.objects.aggregate(Avg('price'),Max('price'),Min('price'))  平均,最大,最小价格

统计每本书作者的个数
book_list = Book.objects.annotate(authorsNum = Count('authors'))

for book_obj in book_list:
    print('book_obj.title,book_obj.authorsNum')
    
统计每一个出版社的最便宜的书
book_list = book.objects.values('publish__name').annotate(MinPrice=Min('price'))
for book_obj in book_list:
    print(book_obj.price,book_obj.publish__name)

    publish.objects.annotate(min_price = Min(book__price)')
for publish_obj in publish_list:
    print('publish_obj.name,publish_obj.MinPrice')
统计每一本以py开头的书籍的作者个数:
model.book.filter(title__startswith="Py").values('authors__name').annotate(Count('authors'))

查询各个作者出书的总价格
model.book.objects.values('authors__name').annotate(sum_price = Sum('price')).value_list('')
model.author.objects.annotate(num_price = Sum('book__price')).value_list('name','book__price')




form组件

索引

    SQL索引
        1.索引的功能就是加速查找
        2.mysql中的primary key,unique,联合唯一也都是索引,这些索引除了加速查找以为,还有约束功能
        索引类型
            普通索引:index
            唯一索引:
                主键索引frimary key
                唯一索引unique 加速查找+约束
            联合索引:
                primary key(id,name) 联合主键索引
                unique(id,name) 联合唯一索引
                index(id,name)  联合普通索引
        create table book(
            id int,
            title char(16),
            price flotr,
            index ix_title(title)
            
        );
        
        create index ix_price on book(title);
        
        alter table book add index ix_auther(auther)
        
        
        索引总结
        http://www.cnblogs.com/linhaifeng/articles/7274563.html    
            #1. 一定是为搜索条件的字段创建索引,比如select * from s1 where id = 333;就需要为id加上索引

            #2. 在表中已经有大量数据的情况下,建索引会很慢,且占用硬盘空间,建完后查询速度加快
            比如create index idx on s1(id);会扫描表中所有的数据,然后以id为数据项,创建索引结构,存放于硬盘的表中。
            建完以后,再查询就会很快了。

            #3. 需要注意的是:innodb表的索引会存放于s1.ibd文件中,而myisam表的索引则会有单独的索引文件table1.MYI

            MySAM索引文件和数据文件是分离的,索引文件仅保存数据记录的地址。而在innodb中,表数据文件本身就是按照B+Tree(BTree即Balance True)组织的一个索引结构,这棵树的叶节点data域保存了完整的数据记录。这个索引的key是数据表的主键,因此innodb表数据文件本身就是主索引。
            因为inndob的数据文件要按照主键聚集,所以innodb要求表必须要有主键(Myisam可以没有),如果没有显式定义,则mysql系统会自动选择一个可以唯一标识数据记录的列作为主键,如果不存在这种列,则mysql会自动为innodb表生成一个隐含字段作为主键,这字段的长度为6个字节,类型为长整型.
        注意事项
            - 避免使用select *
            - count(1)或count(列) 代替 count(*)
            - 创建表时尽量时 char 代替 varchar
            - 表的字段顺序固定长度的字段优先
            - 组合索引代替多个单列索引(经常使用多个条件查询时)
            - 尽量使用短索引
            - 使用连接(JOIN)来代替子查询(Sub-Queries)
            - 连表时注意条件类型需一致
            - 索引散列值(重复少)不适合建索引,例:性别不适合
    Django索引
        select_related
            使用
                所有城市所属的省份
                citys = models.city.objects.select_related('province').all()
                for p in citys:
                    print(p.province)
                每个人所居住的省份
                person_list = models.Person.objects.select_related('living__province').all()
                for person in person_list:
                    print(person.name,person.living.province.name)
                    
                
            总结
                1.select_related主要针对一对一和多对一关系进行优化
                2.select_related 使用SQLjoin语句进行优化,通过减少select语句的查询次数来进行优化提交
                3.可以通过可变长参数指定需要select_related 的字段名

项目的主要流程

进程线程协程的区别
    
自定义模板语法
    

项目有多少人在做   共7个人
    后台管理页面有三人  
    前端页面 2人
    主站有2人
    运维1个

    

 

posted @ 2018-03-21 17:32  TAMAYURA  阅读(165)  评论(0编辑  收藏  举报