多线程是否成倍增加效率
如果是CPU密集型的,每个线程执行一下,相当于单线程再跑,io切换浪费时间
如果是IO密集型的,比如发送一个请求,等待服务器返回的时候,再次发送下一条url请求,这样在时间上复用了,效率也就提高了
如果想利用cpu好python的,可以采用多进程,concurrent.futures中的ProcessPoolExecutor,ThreadPollExecutor
mutiprocessing和gevent
logging 怎么配置,有什么作用
debug
info
warning
error
critical
多线程在项目中哪里用到了
数据库:
1、修改一张表的一列数据如何修改
update table_name set 字段名=新的字段名(值)
alert table table_name rename 新表名
alert table table_name add 字段名 数据类型 [约束条件]
修改字段有modify和change两种方法
alert table 表名 modify 字段名 字段类型 【完整约束条件】
alert table 表名 change 旧字段名 新字段名 新数据类型 【完整约束条件】
开启事务:begin rollback commit
ajax 如何局部刷新,如何跨域
ajax 是一个javascript + xml 异步执行
Highchart应用在前端还是后端
nginx,uwsgi
解析器有哪些,默认的
全局使用
in settings.py #直接copy REST_FRAMEWORK到配置文件就行 REST_FRAMEWORK = { 'DEFAULT_PARSER_CLASSES':[ 'rest_framework.parsers.JSONParser' #使用的解析器 'rest_framework.parsers.FormParser' 'rest_framework.parsers.MultiPartParser' ] }
multipart/form-data:当上传图片的时候用的到 === MultiPartParser JSONParser === application/json FormParser === application/x-www-form-urlencoded FileUploadParser === 针对上传文件
业务:
权限是调用的python内置的包吗
权限:怎么做的限制,你做了哪些(按照有哪些表,哪些字段,实现了哪些功能)
权限怎么给经营主任划分的,为什么要分组(权限)
权限设计了多久
你的业务参与了多少(都是你做的吗)
权限怎么实现的(说一下代码)
药品配送审核系统,心脑管家:
你做了哪些功能,用了多长时间
所有的业务你参与了多少
有没有做过地图方面的
用那些软件上线的
复习CRM系统--stack
请介绍下怎么开发的系统:
第一步:url的设计,为每个model设计相对应的url(增删改查)
django的url可以设计二级路由转发和一级路由
crm系统设计,url设计方面,需要考虑一级转发和二级转发,现在我们使用的是一级转发:
设计的时候模仿Admin开发一个注册model的类(StarkSite),这个类内部有一个字典类型的属性,把所有的注册的类存储起来,然后为每个存储的类生成一个相对应的url,每个类都会有增删改查对应的四条url,同时用用户也可以自定义url(在StarkSite下面定义一个函数用来确定用户增加自己的url).每条url都有自己的对应的视图函数。每条url都有一个反向解析
需要注意:用户使用StarkSite注册自己的类的时候,类的一些基本配置默认继承一个类(ModelConfig类)-定制了默认基本的配置,如显示字段控制,多级过滤,定制按钮和默认显示什么样的按钮
路由需要注意的知识点 :
获取model的名称:self.model._meta.model_name
获取App名称:self.model._meta.app_label
第二步:
ChangeList用户可以自定义前端显示定制的字段名称,比如,可定义跟进记录。定义前端显示字段,定制了一个类来进行统一处理,在前端显示字段。
每一条数据,默认编辑字段和删除字段,checkbox字段,编辑字段和删除字段,需要根据用户权限或者用户自定义进行判断
表格头部显示字段的要求:
但是ModelConfig有默认的显示字段,需要有专门的函数处理相应的字段,这个处理函数的目的主要是构建前端显示的字段:如选择框,是否显示编辑、删除按钮。编辑按钮是在用户没有自定义的情况下并且,用户有编辑权限,才把ModelConfig默认编辑按钮添加上,删除按钮用户必须有删除权限
form 组建choice类型有:choicefilet 、multipleChoiceFiled
form前端自动生成:使用form.as_p
modelform需要进行进行更新的时候,需要指定instance=obj,不指定相当于创建
表格主体显示内容要求:
表格主体上的按钮(编辑,删除)咨询医生等按钮需要,根据model获取字段名称,进行字段类型判断,字段类型是否是多对多和一对多进行判断。
添加视图函数:需要判断是GET请求还是POST请求,如果是post请求,需要保存数据且判断是否是pop弹窗
需要注意的是:创建一个函数,隶属于ModelConfig,根据用户当前的model,创建Modelform对象(get_model_form)。这样在实例化的时候,动态的根据用户所在的表结构进行添加数据,判断用户可以自定义Modelform,没有定义使用默认的
编辑视图函数:和添加视图一样,根据用户当前的model,创建Modelform对象(get_model_form)。这样在实例化的时候,动态的根据用户所在的表结构进行添加数据,判断用户可以自定义Modelform,没有定义使用默认的。
用户可以预定义编辑字段,代码实现,get_list_display 进行判断用户是否是,是否设置编辑字段,没有设置 list_display_link=【】,则使用默认的,出现编辑按钮。
如果用户配置了ist_display_link=【】,前端进行body显示字段的时候就需要对出现在ist_display_link=【】中的字段进行设置编辑url
总结:添加视图函数和编辑视图函数都是在一个get_model_form方法上,来判断用户是否自定义了modelform,有就使用用户自定义的,没有就使用默认的
如何给字段添加编辑url?:
在ModelStark类中进行
用户可以预定义编辑字段,代码实现,get_list_display 进行判断用户是否是,是否设置编辑字段,没有设置 list_display_link=【】,则使用默认的,出现编辑按钮。
如果用户配置了ist_display_link=【】,前端进行body显示字段的时候就需要对出现在ist_display_link=【】中的字段进行设置编辑url
删除视图函数:
分页
自定义分页需要获取前端的request.GET----类型QuryDict类型。QuryDict需要设置_mutable=Tur才能修改数据类型
需要记录当前页,数据库中的总条数,每夜显示的条数,当前数字前面和后面的数据。复制当前的请求,显示最多的页码,把分页做成插件,生成特顶的html页码在前端显示就可以
分页时保留前段的条件:
需要传给组建一个params,分页把该请求条件加到每个按键的后面
批处理
前端批量处理函数,需要自定义一个函数,和编辑函数一样,前端循环的时候,批量处理的select有一个name值,
标签渲染
前端标签渲染,定义一个类,然后通过该类,进行渲染标签,需要判断该类是什么类型的。获取该类下面的所有标签
pop页面需要openner函数
需要在index页面定义一个函数,然后再新建一个pop页面,定义的openner函数需要和index页面的函数一致
如何防范dos攻击
如何使用微信推送消息
快排
杭州芸品绿
mysql的查询短链接 长链接
怎么用django中间件应对高并发
如何进行查找死锁的线程
快排
蒂联
filter
map
zip
reduce
django的懶加载
__get__
getattr
__getattribute__
总结:不管属性存在与否,都执行__getattribute__,getattr,访问的属性有get,然会get函数的返回值
io 多路复用
restful 请求方法 header
python2 python3
python2 xrange 是生成器,range是列表
python3 range是迭代对象
yeild
def count_down(n): while n>=0: newn = yield n if newn: n = newn else: n -= 1 cd = count_down(5) for i in cd: print(i) if i == 5: cd.send(3) 5210 #解释器打印出现53210
高并发,循环引用,装饰器(类)