目录
- Python基础篇
- 1:为什么学习Python
- 2:通过什么途径学习Python
- 3:谈谈对Python和其他语言的区别
- Python的优势:
- 4:简述解释型和编译型编程语言
- 5:Python的解释器种类以及相关特点?
- 6:位和字节的关系
- 7:b、B、KB、MB、GB的关系
- 8:PE8规范
- 9:通过代码实现如下转换(进制之间转换)
- 10:请编写一个函数实现将IP地址转换成一个整数
- 11、python递归的最大层数?998
- 12:求结果(and or or)
- 运算符
- 13 :ascii、unicode、utf-8、gbk 区别
- 14:字节码和机器码的区别
- 15:三元运算写法和应用场景?
- 16:Python3和Python2的区别?
- 17:用一行代码实现数值交换
- 18:Python3和Python2中int和long区别
- 19:xrange和range的区别
- 20:文件操作时:xreadlines和readlines的区别?
- 21: 列列举布尔值为False的常见值?
- 22. 字符串、列表、元组、字典每个常用的5个方法?
- 23、 lambda表达式格式以及应用场景?
- 24. pass的作用
- 25. *arg和kwarg作用
- 26. is和==的区别
- 27:谈谈Python的深浅拷贝?以及实现方法和应用场景。
- 28. Python垃圾回收机制?
- 29. Python的可变类型和不可变类型?
- 30、求结果
- 31、求结果
- 32、列举常见的内置函数
- abs()
- map
- filter
- map与filter总结
- isinstance ype
- zip 拉链函数
- 33. filter、map、reduce的作用?
- 内置函数:map、reduce、filter的用法和区别
- 34、 一行代码实现9*9乘法表
- 35. 如何安装第三方模块?以及用过哪些第三方模块?
- 36、 常用模块都有那些?
- 37. re的match和search区别?
- 38. 什么是正则的贪婪匹配?
- 39. 求结果:
- 40. 求结果:
- 41、def func(a,b=[]) 这种写法有什什么坑?
- 42、如何实现 “1,2,3” 变成 [‘1’,’2’,’3’]
- 43. 如何实现[‘1’,’2’,’3’]变成[1,2,3]
- 44. a = [1,2,3] 和 b = [(1),(2),(3) ] 以及 b = [(1,),(2,),(3,) ] 的区别?
- 45. 如何用一行代码生成[1,4,9,16,25,36,49,64,81,100]
- 46. 一行代码实现删除列表中重复的值
- 47. 如何在函数中设置一个全局变量
- 48. logging模块的作用?以及应用场景?
- 49. 请用代码简答实现stack
- 50. 常用字符串格式化哪几种?
- 51. 简述 生成器、迭代器、可迭代对象 以及应用场景?
- 迭代器
- 生成器
- 可迭代对象
- 装饰器
- 52. 用Python实现一个二分查找的函数。
- 53. 谈谈你对闭包的理解?
- 54. os和sys模块的作用?
- 55. 如何生成一个随机数?
- 56. 如何使用python删除一个文件?
- 57. 谈谈你对面向对象的理解
- 58. Python面向对象中的继承有什么特点
- 59. 面向对象深度优先和广度优先是什么?
- 60. 面向对象中super的作用?
- 61. 是否使用过functools中的函数?其作用是什么?
- 62. 列举面向对象中带双下划线的特殊方法,如:new、init
- 63. 如何判断是函数还是方法?
- 64. 静态方法和类方法区别?
- 65. 列举面向对象中的特殊成员以及应用场景
- 66. 1、2、3、4、5 能组成多少个互不相同且无重复的三位数
- 67. 什么是反射?以及应⽤用场景?
- 68. metaclass作用?以及应用场景?
- 69. 用尽量多的方法实现单例模式。
- 70. 装饰器器的写法以及应用场景。
- 71. 异常处理写法以及如何主动跑出异常(应用场景)
- 72、什么是面向对象的mro
- 73. isinstance作用以及应用场景?
- 74. 写代码并实现
- 75. json序列化时,可以处理的数据类型有哪些?如何定制支持datetime类型?
- 76. json序列化时,默认遇到中文会转换成unicode,如果想要保留中文怎么办?
- 77. 什么是断言?应用场景?
- 78. 有用过with statement吗?它的好处是什么?
- 79. 使用代码实现查看列举目录下的所有文件。
- 80. 简述 yield和yield from关键字
- 第二部分 网络编程和并发
- 81. 简述 OSI 七层协议。
- 82. 什么是C/S和B/S架构?
- 83. 简述 三次握手、四次挥手的流程。
- 84. TCP和UDP的区别?
- 85. 为何基于tcp协议的通信比基于udp协议的通信更可靠?
- 86. 什么是socket?简述基于tcp协议的套接字通信流程。
- 87. 什么是粘包? socket 中造成粘包的原因是什什么? 哪些情况会发生粘包现象?
- 88. IO多路复的作用?
- 89.select、poll、epoll 模型的区别?(属于多路复用IO的模型)
- 90. 什么是防火墙以及作用?
- 91. 简述 进程、线程、协程的区别 以及应用场景?
- 92. GIL锁是什么?
- 93. Python中如何使用线程池和进程池?
- 94. threading.local的作用?
- 95. 进程之间如何进行通信?
- 96. 什么是并发和并行?
- 97. 进程锁和线程锁的作用?
- 98. 解释什么是异步非阻塞?
- 99. 路由器和交换机的区别
- 100.什么是域名解析?
- 101.如何修改本地hosts件?
- 102.生产者消费者模型应用场景及优势?
- 103.什么是cdn?
- 104.LVS是什么及作用?
- 105.Nginx是什么及作用?
- 106.keepalived是什么及作用?
- 107.haproxy是什么以及作用?
- 数据库和缓存(46题)
- 113.列举常见的关系型数据库和非关系型都有那些?
- 114.MySQL常见数据库引擎及比较?
- 115.简述数据库三大范式?
- 116、什么是事务?MySQL如何支持事务?
- 117.简述数据库设计中一对多和多对多的应用场景?
- 118.如何基于数据库实现商城商品计数器?
- 119.常见SQL(必备)
- 120.简述触发器、函数、视图、存储过程?
- 121.MySQL索引种类
- 122.索引在什么情况下遵循最左前缀的规则?
- 123.主键和外键的区别?
- 124.MySQL常见的函数?
- 125.列举 创建索引但是无法命中索引的8种情况。
- 126.如何开启慢日志查询?
- 127.数据库导入导出命令(结构+数据)?
- 128.数据库优化方案?
- 129.char和varchar的区别?
- 130.简述MySQL的执行计划?
- 131.在对name做了唯一索引前提下,简述以下区别:
- 132.1000w条数据,使用limit offset 分页时,为什么越往后翻越慢?如何解决?
- 133.什么是索引合并?
- 134.什么是覆盖索引?
- 135.简述数据库读写分离?
- 136.简述数据库分库分表?(水平、垂直)
- 137.redis和memcached比较?
- 138.redis中数据库默认是多少个db 及作用?
- 139.python操作redis的模块?
- 140.如果redis中的某个列表中的数据量非常大,如果实现循环显示每一个值?
- 141.redis如何实现主从复制?以及数据同步机制?
- 142.redis中的sentinel的作用?
- 143.如何实现redis集群?
- 144.redis中默认有多少个哈希槽?
- 145.简述redis的有哪几种持久化策略及比较?
- 146.列举redis支持的过期策略。
- 147.MySQL 里有 2000w 数据,redis 中只存 20w 的数据,如何保证 redis 中都是热点数据?
- 148.写代码,基于redis的列表实现 先进先出、后进先出队列、优先级队列。
- 149.如何基于redis实现消息队列?
- 150.如何基于redis实现发布和订阅?以及发布订阅和消息队列的区别?
- 151.什么是codis及作用?
- 152.什么是twemproxy及作用?
- 153.写代码实现redis事务操作。
- 154.redis中的watch的命令的作用?
- 155.基于redis如何实现商城商品数量计数器?
- 156.简述redis分布式锁和redlock的实现机制。
- 157.什么是一致性哈希?Python中是否有相应模块?
- 158.如何高效的找到redis中所有以aaa开头的key?
- 第四部分 前端、框架和其他(155题)
- 1.谈谈你对http协议的认识。
- 2.谈谈你对websocket协议的认识。
- 3.什么是magic string ?
- 4.如何创建响应式布局?
- 5.你曾经使用过哪些前端框架?
- 6.什么是ajax请求?并使用jQuery和XMLHttpRequest对象实现一个ajax请求。
- 7.如何在前端实现轮训?
- 8.如何在前端实现长轮训?
- 9.vuex的作用?
- 10.vue中的路由的拦截器的作用?
- 11.axios的作用?
- 12.列举vue的常见指令。
- 13.简述jsonp及实现原理?
- 14.什么是cors ?
- 15.列举Http请求中常见的请求方式?
- 16.列举Http请求中的状态码?
- 17.列举Http请求中常见的请求头?
- 18.看图写结果(js):
- 看图写结果(js):
- 看图写结果:(js)
- 看图写结果:(js)
- 看图写结果:(js)
- 看图写结果:(js)
- 19.django、flask、tornado框架的比较?
- 20.什么是wsgi?
- 21.django请求的生命周期?
- 22.列举django的内置组件?
- 23.列举django中间件的5个方法?以及django中间件的应用场景?
- 24.简述什么是FBV和CBV?
- 25.FBV与CBV的区别
- 26.django的request对象是在什么时候创建的?
- 27.如何给CBV的程序添加装饰器?
- 28.列举django orm 中所有的方法(QuerySet对象的所有方法)
- 29.only和defer的区别?
- 30.select_related和prefetch_related的区别?
- 31.filter和exclude的区别?
- 32.列举django orm中三种能写sql语句的方法。
- 33.django orm 中如何设置读写分离?
- 34.F和Q的作用?
- 35.values和values_list的区别?
- 36.如何使用django orm批量创建数据?
- 37.django的Form和ModeForm的作用?
- 38.django的Form组件中,如果字段中包含choices参数,请使用两种方式实现数据源实时更新。
- 39.django的Model中的ForeignKey字段中的on_delete参数有什么作用?
- 40.django中csrf的实现机制?
- 41.django如何实现websocket?
- 42.基于django使用ajax发送post请求时,都可以使用哪种方法携带csrf token?
- 43.django中如何实现orm表中添加数据时创建一条日志记录。
- 44.django缓存如何设置?
- 45.django的缓存能使用redis吗?如果可以的话,如何配置?
- 46.django路由系统中name的作用?
- 47.django的模板中filter和simple_tag的区别?
- 48.django-debug-toolbar的作用?
- 49.django中如何实现单元测试?
- 50.解释orm中 db first 和 code first的含义?
- 51.django中如何根据数据库表生成model中的类?
- 52.使用orm和原生sql的优缺点?
- 53.简述MVC和MTV
- 54.django的contenttype组件的作用?
- 55.谈谈你对restfull 规范的认识?
- 56.接口的幂等性是什么意思?
- 57.什么是RPC?
- 58.Http和Https的区别?
- 59.为什么要使用django rest framework框架?
- 60.django rest framework框架中都有那些组件?
- 61.django rest framework框架中的视图都可以继承哪些类
- 62.简述 django rest framework框架的认证流程。
- 63.django rest framework如何实现的用户访问频率控制?
- 64.Flask框架的优势?
- 65.Flask框架依赖组件
- 66.Flask蓝图的作用
- 67.列举使用的Flask第三方组件?
- 68.简述Flask上下文管理流程?
- 69.Flask中的g的作用?
- Flask中上下文管理主要涉及到了那些相关的类?并描述类主要作用?
- 为什么要Flask把Local对象中的的值stack 维护成一个列表?
- Flask中多app应用是怎么完成?
- 在Flask中实现WebSocket需要什么组件?
- wtforms组件的作用?
- Flask框架默认session处理机制?
- 解释Flask框架中的Local对象和threading.local对象的区别?
- Flask中 blinker 是什么?
- SQLAlchemy中的 session和scoped_session 的区别?
- SQLAlchemy如何执行原生SQL?
- ORM的实现原理?
- DBUtils模块的作用?
- SQLAchemy中如何为表设置引擎和字符编码?
- SQLAchemy中如何设置联合唯一索引?
- 简述Tornado框架的特点。
- 简述Tornado框架中Future对象的作用?
- Tornado框架中如何编写WebSocket程序?
- Tornado中静态文件是如何处理的? 如:
- Tornado操作MySQL使用的模块?
- Tornado操作redis使用的模块?
- 简述Tornado框架的适用场景?
- git常见命令作用:
- 简述以下git中stash命令作用以及相关其他命令。
- git 中 merge 和 rebase命令 的区别。
- 公司如何基于git做的协同开发?
- 如何基于git实现代码review?
- git如何实现v1.0 、v2.0 等版本的管理?
- 什么是gitlab
- github和gitlab的区别?
- 如何为github上牛逼的开源项目贡献代码?
- git中 .gitignore文件的作用
- 什么是敏捷开发?
- 简述 jenkins 工具的作用?
- 公司如何实现代码发布?
- 简述 RabbitMQ、Kafka、ZeroMQ的区别?
- RabbitMQ如何在消费者获取任务后未处理完前就挂掉时,保证数据不丢失?
- RabbitMQ如何对消息做持久化?
- RabbitMQ如何控制消息被消费的顺序?
- 以下RabbitMQ的exchange type分别代表什么意思?如:fanout、direct、topic。
- 简述 celery 是什么以及应用场景?
- 简述celery运行机制。
- celery如何实现定时任务?
- 简述 celery多任务结构目录
- celery中装饰器 @app.task 和 @shared_task的区别?
- 简述 requests模块的作用及基本使用?
- 简述 beautifulsoup模块的作用及基本使用?
- 简述 seleninu模块的作用及基本使用?
- scrapy框架中各组件的工作流程?
- 在scrapy框架中如何设置代理(两种方法)?
- scrapy框架中如何实现大文件的下载?
- scrapy中如何实现限速?
- scrapy中如何实现暂停爬虫?
- scrapy中如何进行自定制命令?
- scrapy中如何实现的记录爬虫的深度?
- scrapy中的pipelines工作原理?
- scrapy的pipelines如何丢弃一个item对象?
- 简述scrapy中爬虫中间件和下载中间件的作用?1
- scrapy-redis组件的作用?
- scrapy-redis组件中如何实现的任务的去重?
- scrapy-redis的调度器如何实现任务的深度优先和广度优先?….
- 简述 vitualenv 及应用场景?
- 简述 pipreqs 及应用场景?
- 在Python中使用过什么代码检查工具?
- 简述 saltstack、ansible、fabric、puppet工具的作用?
- B Tree和B+ Tree的区别?
- 请列举常见排序并通过代码实现任意三种。
- 请列举常见查找并通过代码实现任意三种。
- 请列举你熟悉的设计模式?
- 有没有刷过leetcode?
- 列举熟悉的的Linux命令。
- 公司线上服务器是什么系统?
- 解释 PV、UV 的含义?
- 解释 QPS的含义?
- uwsgi和wsgi的区别?
- supervisor的作用?
- 什么是反向代理?
- 简述SSH的整个过程。
- 有问题都去那些找解决方案?
- 是否有关注什么技术类的公众号?
- 最近在研究什么新技术?
- 是否了解过领域驱动模型?
- 二进制与十进制之间的转换
- 整数部分
正文
(1)与java相比:在很多方面,Python比Java要简单,比如java中所有变量必须声明才能使用,而Python不需要声明,用少量的代码构建出很多功能;(高效的高级数据结构)
(2)与php相比:python标准包直接提供了工具,并且相对于PHP代码更易于维护;
(3)Python与c相比:
Python 和 C Python这门语言是由C开发而来
1、Python 易于学习;
2、用少量的代码构建出很多功能;(高效的高级数据结构)
3、Python 拥有最成熟的程序包资源库之一;
4、Python完全支持面向对象;
5、Python 是跨平台且开源的。
6、动态类型:
是官方版本的解释器:CPython。是使用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。
IPython
b —>位(bit)
B —>字节 一个字节等于8位
1B = 8 bit
1kb = 1024 B
1 MB = 1024 KB
1 GB = 1024 MB
- 各种右括号前不要加空格。
- 逗号、冒号、分号前不要加空格。
- 函数的左括号前不要加空格。如Func(1)
- 序列的左括号前不要加空格。如list[2]
- 操作符左右各加一个空格,不要为了对齐增加空格
- 函数默认参数使用的赋值符左右省略空格
- 不要将多句语句写在同一行,尽管使用‘;’允许
- if/for/while语句中,即使执行语句只有一句,也必须另起一行
————————————————
1. 求结果:2 & 5
2. 求结果:2 ^ 5
机器码,学名机器语言指令,有时也被称为原生码,是电脑的CPU可直接解读的数据。
字节码是一种中间状态(中间码)的二进制代码(文件)。需要直译器转译后才能成为机器码。
———–
在python3里,只有一种整数类型int,大多数情况下,和python2中的长整型类似。
都在循环时使用,xrange内存性能更好,xrange用法与range完全相同,range一个生成list对象,xrange是生成器
要生成很大的数字序列的时候,用xrange会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间。
在python2中:
range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列
xrange用法与range完全相同,所不同的是生成的不是一个数组,而是一个生成器。

由上面的示例可以知道:要生成很大的数字序列的时候,用xrange会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间,这两个基本上都是在循环的时候用。
在 Python 3 中,range() 是像 xrange() 那样实现,xrange()被抛弃。
readlines 返回一个列表
xreadlines 返回一个生成器
pass是空语句,是为了保持程序结构的完整性。pass 不做任何事情,一般用做占位语句。
浅拷贝只是增加了一个指针指向一个存在的地址,
一层的情况:
多层的情况:
引用计数
标记清除
分代回收
可变数据类型:列表、字典、可变集合
不可变数据类型:数字、字符串、元组、不可变集合


















reduce


map:根据函数对指定序列做映射


filter:过滤函数 新的内容少于等于原内容的时候。才能使用filter


reduce:对于序列内所有元素进行累计操作




用过的第三方模块:requests,pymysql,DbUtils,SQLAlchemy等
re模块,os模块,json模块,time模块,
爬虫里面的requests/beautifulsoup4(bs4)
re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
re.search 扫描整个字符串并返回第一个成功的匹配。
匹配一个字符串没有节制,能匹配多少就去匹配多少,知道没有匹配的为止
a. [ i % 2 for i in range(10) ]
b. ( i % 2 for i in range(10) )


a. 1 or 2
b. 1 and 2
c. 1 < (2==2)
d. 1 < 2 == 2






补充:


python中的global语句是被用来声明全局变量的。




- Stack() 创建一个新的空栈
- push(item) 添加一个新的元素item到栈顶
- pop() 弹出栈顶元素
- peek() 返回栈顶元素
- is_empty() 判断栈是否为空
- size() 返回栈的元素个数


1.占位符%
%d 表示那个位置是整数;%f 表示浮点数;%s 表示字符串。
2.format
含有iter和next方法 (包含next方法的可迭代对象就是迭代器)
:包括含有yield这个关键字,生成器也是迭代器,调动next把函数变成迭代器。

- redis获取值
conn = Redis(…)
def hscan_iter(self, name, match=None, count=None):
”“”
Make an iterator using the HSCAN command so that the client doesn’t
need to remember the cursor position.
match allows for filtering the keys by pattern
count allows for hint the minimum number of returns
”“”
cursor = ‘0’
while cursor != 0:
# 去redis中获取数据:12
# cursor,下一次取的位置
# data:本地获取的12条数数据
cursor, data = self.hscan(name, cursor=cursor,match=match, count=count)
for item in data.items():
yield item
data = [
{‘k1’:1,‘name’:‘alex’},
{‘k1’:2,‘name’:‘老男孩’},
{‘k1’:3,‘name’:‘小男孩’},
]
new_data = []
for item in data:
item[‘email’] = “”
new_data.append(item)
return render(request,‘xx.html’,{‘data’:new_data})

一个类内部实现iter方法且返回一个迭代器。




二分查找算法:简单的说,就是将一个列表先排序好,比如按照从小到大的顺序排列好,当给定一个数据,比如3,查找3在列表中的位置时,可以先找到列表中间的数li[middle]和3进行比较,当它比3小时,那么3一定是在列表的右边,反之,则3在列表的左边,比如它比3小,则下次就可以只比较[middle+1, end]的数,继续使用二分法,将它一分为二,直到找到3这个数返回或者列表全部遍历完成(3不在列表中)




说明:
bar在foo函数的代码块中定义。我们称bar是foo的内部函数。
在bar的局部作用域中可以直接访问foo局部作用域中定义的m、n变量。
简单的说,这种内部函数可以使用外部函数变量的行为,就叫闭包。
闭包的意义与应用




三大特性以及解释?
面对对象是一种编程思想,以类的眼光来来看待事物的一种方式。将有共同的属性和方法的事物封装到同一个类下面。
继承:将多个类的共同属性和方法封装到一个父类下面,然后在用这些类来继承这个类的属性和方法
封装:将有共同的属性和方法封装到同一个类下面
- 第一层面:创建类和对象会分别创建二者的名称空间,我们只能用类名.或者obj.的方式去访问里面的名字,这本身就是一种封装
- 第二层面:类中把某些属性和方法隐藏起来(或者说定义成私有的),只在类的内部使用、外部无法访问,或者留下少量接口(函数)供外部访问。
多态:Python天生是支持多态的。指的是基类的同一个方法在不同的派生类中有着不同的功能


补充继承的应用(面试题)




用于修复装饰器


- new:生成实例
- init:生成实例的属性
- call:实例对象加( )会执行def call:… 方法里边的内容。
del:析构方法,当对象在内存中被释放时,自动触发执行。如当 del obj 或者应用程序运行完毕时,执行该方法里边的内容。
enter和exit:出现with语句,对象的enter被触发,有返回值则赋值给as声明的变量;with中代码块执行完毕时执行exit里边的内容。
module:表示当前操作的对象在那个模块 obj.module
class :表示当前操作的对象的类是什么 obj.class
doc:类的描述信息,该描述信息无法被继承
str:改变对象的字符串显示 print函数 —>obj.str()
repr:改变对象的字符串显示 交互式解释器 —>obj.repr()
format:自定制格式化字符串
slots:一个类变量 用来限制实例可以添加的属性的数量和类型
setitem,getitem,delitem:


get():调用一个属性时,触发
set():为一个属性赋值时,触发
delete():采用del删除属性时,触发
setattr,delattr,getattr__ :
看他的调用者是谁,如果是类,就需要传入一个参数self的值,这时他就是一个函数,
如果调用者是对象,就不需要给self传入参数值,这时他就是一个方法
print(isinstance(obj.func, FunctionType)) # False
print(isinstance(obj.func, MethodType)) # True


尽管 classmethod 和 staticmethod 非常相似,但在用法上依然有一些明显的区别。classmethod 必须有一个指向类对象的引用作为第一个参数,而 staticmethod 可以没有任何参数。
举个栗子:




60个
题意理解:组成后的数值不相同,且组合的三个位数之间数字不重复。
使用python内置的排列组合函数(不放回抽样排列)
product 笛卡尔积 (有放回抽样排列)
permutations 排列 (不放回抽样排列)
combinations 组合,没有重复 (不放回抽样组合)
combinations_with_replacement 组合,有重复 (有放回抽样组合)
metaclass用来指定类是由谁创建的。
类的metaclass 默认是type。我们也可以指定类的metaclass值。在python3中:





含义:装饰器本质就是函数,为其他函数添加附加功能
原则:
不修改被修饰函数的代码
不修改被修饰函数的调用方式
应用场景:
无参装饰器在用户登录 认证中常见
有参装饰器在flask的路由系统中见到过





mro就是方法解析顺序
isinstance(对象,类) 判断这个对象是不是这个类或者这个类的子类的实例化


应用场景:rest framework 认证的流程
scrapy-redis
Given an array of integers, return indices of the two numbers such that they add up to a
specific target.You may assume that each input would have exactly one solution, and you may
not use the same element twice.
Example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1]


回到顶部

物理层:主要是基于电器特性发送高低电压(电信号),高电压对应数字1,低电压对应数字0
数据链路层:定义了电信号的分组方式
网路层:引入一套新的地址用来区分不同的广播域/子网,这套地址即网络地址
传输层:建立端口到端口的通信
会话层:建立客户端与服务端连接
c/s架构,就是client(客户端)与server(服务端)即:客户端与服务端的架构。
b/s架构,就是brosver(浏览器端)与sever(服务端)即:浏览器端与服务端架构
优点:统一了所有应用程序的入口、方便、轻量级








socketserver,多个客户端连接,单线程下实现并发效果,就叫多路复用。
与多进程和多线程技术相比,I/O多路复用技术的最大优势是系统开销小,系统不必创建进程/线程,也不必维护这些进程/线程,从而大大减小了系统的开销。







GIL本质就是一把互斥锁,既然是互斥锁,所有互斥锁的本质都一样,都是将并发运行变成串行,以此来控制同一时间内共享数据只能被一个任务所修改,进而保证数据安全。
GIL保护的是解释器级的数据,保护用户自己的数据则需要自己加锁处理


实现线程局部变量的传递。
ThreadLocal 最常用的地方:
为每个线程绑定一个资源(数据库连接,HTTP请求,用户身份信息等),这样一个线程的所有调用到的处理函数都可以非常方便地访问这些资源。










108.什么是负载均衡?
109.什么是rpc及应用场景?
110.简述 asynio模块的作用和应用场景。
111.简述 gevent模块的作用和应用场景。
112.twisted框架的使用和应用
回到顶部













联合索引



char 和 varchar 的区别(char可变, varchar不可变 )

当type为all时,是为全表索引

然而 name 字段添加唯一索引了,加不加limit 1,意义都不大;





















16384
























回到顶部












基于jQueryAjax - Demo

















李杰

武沛奇

老男孩

undefined

武沛奇

Alex

Tornado
# 是一个轻量级的Web框架,异步非阻塞+内置WebSocket功能。
‘目标’:通过一个线程处理N个并发请求(处理IO)。
‘内部组件
内部自己实现socket
路由系统
视图
#csrf













执行流程



































给信号注册函数







路由系统中name的作用:反向解析
url(r’^home’, views.home, name=‘home’)
在模板中使用:{ % url ‘home’ %}
在视图中使用:reverse(“home”)


1、模板继承:{ % extends ‘layouts.html’ %}
2、自定义方法
‘filter’:只能传递两个参数,可以在if、for语句中使用
‘simple_tag’:可以无线传参,不能在if for中使用
‘inclusion_tags’:可以使用模板和后端数据
3、防xss攻击: ’|safe’、‘mark_safe’





























@ before_request有返回值,blinker没有返回值
# 10个信号
request_started = _signals.signal(‘request-started’) #请求到来前执行
request_finished = _signals.signal(‘request-finished’) #请求结束后执行
before_render_template = _signals.signal(‘before-render-template’)#模板渲染前执行
template_rendered = _signals.signal(‘template-rendered’)#模板渲染后执行
got_request_exception = _signals.signal(‘got-request-exception’) #请求执行出现异常时执行
request_tearing_down = _signals.signal(‘request-tearing-down’)#请求执行完毕后自动执行(无论成功与否)
appcontext_tearing_down = _signals.signal(‘appcontext-tearing-down’)# 请求上下文执行完毕后自动执行(无论成功与否)
appcontext_pushed = _signals.signal(‘appcontext-pushed’) #请求app上下文push时执行
appcontext_popped = _signals.signal(‘appcontext-popped’) #请求上下文pop时执行
message_flashed = _signals.signal(‘message-flashed’)#调用flask在其中添加数据时,自动触发



以下SQLAlchemy的字段是否正确?如果不正确请更正:




























通过raise DropItem()方法
a. 内部进行配置,连接Redis
b.去重规则通过redis的集合完成,集合的Key为:
key = defaults.DUPEFILTER_KEY % {‘timestamp’: int(time.time())}
默认配置:
DUPEFILTER_KEY = ‘dupefilter:%(timestamp)s’
c.去重规则中将url转换成唯一标示,然后在redis中检查是否已经在集合中存在
from scrapy.utils import request
from scrapy.http import Request
req = Request(url=‘http://www.cnblogs.com/wupeiqi.html’)
result = request.request_fingerprint(req)
print(result) # 8ea4fdccc12e5b6b92510cc53675c
回到顶部
回到顶部
方法:按权相加法,即将二进制每位上的数乘以权,然后相加之和即是十进制数。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/192384.html