*args
and **kwargs
__new__
和__init__
的区别__init__
()其实全部的I/O都是轮询的方法,只不过实现的层面不一样罢了.javascript
这个问题可能有点深刻了,但相信能回答出这个问题是对I/O多路复用有很好的了解了.其中tornado使用的就是epoll的.html
基本上select有3个缺点:python
poll改善了第一个缺点mysql
epoll改了三个缺点.linux
关于epoll的: http://www.cnblogs.com/my_life/articles/3968782.htmlnginx
实时调度算法:git
缘由:github
必要条件:web
处理死锁基本方法:
推荐: http://www.ruanyifeng.com/blog/2014/11/compiler.html
Bulid过程能够分解为4个步骤:预处理(Prepressing), 编译(Compilation)、汇编(Assembly)、连接(Linking)
以C语言为例:
预编译过程主要处理那些源文件中的以“#”开始的预编译指令,主要处理规则有:
编译过程就是把预处理完的文件进行一系列的词法分析、语法分析、语义分析及优化后生成相应的汇编代码文件。这个过程是整个程序构建的核心部分。
汇编器是将汇编代码转化成机器能够执行的指令,每一条汇编语句几乎都是一条机器指令。通过编译、连接、汇编输出的文件成为目标文件(Object File)
连接的主要内容就是把各个模块之间相互引用的部分处理好,使各个模块能够正确的拼接。 连接的主要过程包块 地址和空间的分配(Address and Storage Allocation)、符号决议(Symbol Resolution)和重定位(Relocation)等步骤。
静态连接方法:静态连接的时候,载入代码就会把程序会用到的动态代码或动态代码的地址肯定下来 静态库的连接可使用静态连接,动态连接库也可使用这种方法连接导入库
动态连接方法:使用这种方式的程序并不在一开始就完成动态连接,而是直到真正调用动态库代码时,载入程序才计算(被调用的那部分)动态代码的逻辑地址,而后等到某个时候,程序又须要调用另外某块动态代码时,载入程序又去计算这部分代码的逻辑地址,因此,这种方式使程序初始化时间较短,但运行期间的性能比不上静态连接的程序
虚拟存储器是指具备请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储系统.
分页: 用户程序的地址空间被划分红若干固定大小的区域,称为“页”,相应地,内存空间分红若干个物理块,页和块的大小相等。可将用户程序的任一页放在内存的任一块中,实现了离散分配。
分段: 将用户程序地址空间分红若干个大小不等的段,每段能够定义一组相对完整的逻辑信息。存储分配时,以段为单位,段与段在内存中能够不相邻接,也实现了离散分配。
边缘触发是指每当状态变化时发生一个 io 事件,条件触发是只要知足条件就发生一个 io 事件
数据库事务(Database Transaction) ,是指做为单个逻辑工做单元执行的一系列操做,要么彻底地执行,要么彻底地不执行。
推荐: http://tech.meituan.com/mysql-index.html
汇集索引,非汇集索引,B-Tree,B+Tree,最左前缀原理
悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操做
乐观锁:假设不会发生并发冲突,只在提交操做时检查是否违反数据完整性。
MyISAM 适合于一些须要大量查询的应用,但其对于有大量写操做并非很好。甚至你只是须要update一个字段,整个表都会被锁起来,而别的进程,就算是读进程都没法操做直到读操做完成。另外,MyISAM 对于 SELECT COUNT(*) 这类的计算是超快无比的。
InnoDB 的趋势会是一个很是复杂的存储引擎,对于一些小的应用,它会比 MyISAM 还慢。他是它支持“行锁” ,因而在写操做比较多的时候,会更优秀。而且,他还支持更多的高级应用,好比:事务。
注意: 中断链接端能够是客户端,也能够是服务器端. 下面仅以客户端断开链接举例, 反之亦然.
地址解析协议(Address Resolution Protocol),其基本功能为透过目标设备的IP地址,查询目标的MAC地址,以保证通讯的顺利进行。它是IPv4网络层必不可少的协议,不过在IPv6中已再也不适用,并被邻居发现协议(NDP)所替代。
这个面试官确实问过,当时答的urllib2能够Post而urllib不能够.
GET和POST有什么区别?及为何网上的多数答案都是错的 知乎回答
get: RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1 post: RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1
Cookie | Session | |
---|---|---|
储存位置 | 客户端 | 服务器端 |
目的 | 跟踪会话,也能够保存用户偏好设置或者保存用户名密码等 | 跟踪会话 |
安全性 | 不安全 | 安全 |
session技术是要使用到cookie的,之因此出现session技术,主要是为了安全。
nginx 相对 apache 的优势:
apache 相对nginx 的优势:
状态码 | 定义 |
---|---|
1xx 报告 | 接收到请求,继续进程 |
2xx 成功 | 步骤成功接收,被理解,并被接受 |
3xx 重定向 | 为了完成请求,必须采起进一步措施 |
4xx 客户端出错 | 请求包括错的顺序或不能完成 |
5xx 服务器出错 | 服务器没法完成显然有效的请求 |
403: Forbidden 404: Not Found
HTTPS握手,对称加密,非对称加密,TLS/SSL,RSA
CSRF重点在请求,XSS重点在脚本
HTTP方法的幂等性是指一次和屡次请求某一个资源应该具备一样的反作用。(注意是反作用)
GET http://www.bank.com/account/123456
,不会改变资源的状态,不论调用一次仍是N次都没有反作用。请注意,这里强调的是一次和N次具备相同的反作用,而不是每次GET的结果相同。GET http://www.news.com/latest-news
这个HTTP请求可能会每次获得不一样的结果,但它自己并无产生任何反作用,于是是知足幂等性的。
DELETE方法用于删除资源,有反作用,但它应该知足幂等性。好比:DELETE http://www.forum.com/article/4231
,调用一次和N次对系统产生的反作用是相同的,即删掉id为4231的帖子;所以,调用者能够屡次调用或刷新页面而没必要担忧引发错误。
POST所对应的URI并不是建立的资源自己,而是资源的接收者。好比:POST http://www.forum.com/articles
的语义是在http://www.forum.com/articles
下建立一篇帖子,HTTP响应中应包含帖子的建立状态以及帖子的URI。两次相同的POST请求会在服务器端建立两份资源,它们具备不一样的URI;因此,POST方法不具有幂等性。
PUT所对应的URI是要建立或更新的资源自己。好比:PUT http://www.forum/articles/4231
的语义是建立或更新ID为4231的帖子。对同一URI进行屡次PUT的反作用和一次PUT是相同的;所以,PUT方法具备幂等性。
推荐: http://www.ruanyifeng.com/blog/2011/09/restful.html
SOAP(原为Simple Object Access Protocol的首字母缩写,即简单对象访问协议)是交换数据的一种协议规范,使用在计算机网络Web服务(web service)中,交换带结构信息。SOAP为了简化网页服务器(Web Server)从XML数据库中提取数据时,节省去格式化页面时间,以及不一样应用程序之间按照HTTP通讯协议,听从XML格式执行资料互换,使其抽象于语言实现、平台和硬件。
RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种经过网络从远程计算机程序上请求服务,而不须要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通讯程序之间携带信息数据。在OSI网络通讯模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。
总结:服务提供的两大流派.传统意义以方法调用为导向通称RPC。为了企业SOA,若干厂商联合推出webservice,制定了wsdl接口定义,传输soap.当互联网时代,臃肿SOA被简化为http+xml/json.可是简化出现各类混乱。以资源为导向,任何操做无非是对资源的增删改查,因而统一的REST出现了.
进化的顺序: RPC -> SOAP -> RESTful
CGI是通用网关接口,是链接web服务器和应用程序的接口,用户经过CGI来获取动态数据或文件等。 CGI程序是一个独立的程序,它能够用几乎全部语言来写,包括perl,c,lua,python等等。
WSGI, Web Server Gateway Interface,是Python应用程序或框架和Web服务器之间的一种接口,WSGI的其中一个目的就是让用户能够用统一的语言(Python)编写先后端。
官方说明:PEP-3333
在GFW里家常便饭的,呵呵.
中间人攻击(Man-in-the-middle attack,一般缩写为MITM)是指攻击者与通信的两端分别建立独立的联系,并交换其所收到的数据,使通信的两端认为他们正在经过一个私密的链接与对方直接对话,但事实上整个会话都被攻击者彻底控制。
所谓c10k问题,指的是服务器同时支持成千上万个客户端的问题,也就是concurrent 10 000 connection(这也是c10k这个名字的由来)。 推荐: http://www.kegel.com/c10k.html
推荐: http://www.360doc.com/content/11/0609/15/5482098_122692444.shtml
Socket=Ip address+ TCP/UDP + port
推荐: http://www.cnblogs.com/skynet/archive/2012/11/28/2792503.html
304 Not Modified
推荐: http://blog.csdn.net/elifefly/article/details/3964766
AJAX,Asynchronous JavaScript and XML(异步的 javascript 和 XML), 是与在不从新加载整个页面的状况下,与服务器交换数据并更新部分网页的技术。
红黑树与AVL的比较:
AVL是严格平衡树,所以在增长或者删除节点的时候,根据不一样状况,旋转的次数比红黑树要多;
红黑是用非严格的平衡来换取增删节点时候旋转次数的下降;
因此简单说,若是你的应用中,搜索的次数远远大于插入和删除,那么选择AVL,若是搜索,插入删除次数几乎差很少,应该选择RB。