选择排序(Selectionsort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,...
基数排序(英语:Radixsort)是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。基数排序的...
堆排序(英语:Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子节点的键值或索引总是小于(或者大于)它的父节点。
快速排序(英语:Quicksort),又称划分交换排序(partition-exchangesort),简称快排,一种排序算法,最早由东尼·霍尔提出,用作按顺序放置数组元素的系统方法。
归并排序(英语:Mergesort,或mergesort),是创建在归并操作上的一种有效的排序算法,。1945年由约翰·冯·诺伊曼首次提出。该算法是采用分治法(DivideandConquer)的一个非常典型的应用,且各层分治递...
插入排序(英语:InsertionSort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序,因而在从后向前扫描...
鸡尾酒排序,也叫双向冒泡排序(BidirectionalBubbleSort)等。这是冒泡排序的一种变体。不同之处在于,冒泡排序是从低到高比较序列里的每个元素,而鸡尾酒排序从两个方向(低到高、高到低)来回排序,效率更高。
桶排序(Bucketsort)或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶里。每个桶再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。
数组是编程语言提供的一种数据类型,即用一组连续的内存空间来存放数据,可以通过一个首地址,和一个数组下标,直接访问这组内存空间中的任意位置。搜索哈希表是数据结构这门学科中的概念,是以数组为存储方式,实现的一种可以快速查找数据的数据结构。...
事务的特征:ACID原子性Atomicity一组DML语句要么全部成功要么全部失败一致性Consistency事务必须由一个状态到另一个状态隔离性Isolation多个事务之间能够根据事务的隔离级别表现不同持久性Durabili...
CSRF:https://baike.baidu.com/item/CSRF/2735433防范方式:CSRFTOKEN,即提交表单时同时提交一段由服务端渲染表单时生成的token,通过校验token来防范csrf攻击XSS:h...
CGI是通用网关接口,是连接web服务器和应用程序的接口,用户通过CGI来获取动态数据或文件等。CGI程序是一个独立的程序,它可以用几乎所有语言来写,包括perl,c,lua,python等等。WSGI,WebServerGa...
注意:中断连接端可以是客户端,也可以是服务器端.下面仅以客户端断开连接举例,反之亦然.客户端发送一个数据分段,其中的FIN标记设置为1.客户端进入FIN-WAIT状态.该状态下客户端只接收数据,不再发送数据.服务...
客户端通过向服务器端发送一个SYN来创建一个主动打开,作为三次握手的一部分。客户端把这段连接的序号设定为随机数A。服务器端应当为一个合法的SYN回送一个SYN/ACK。ACK的确认码应为A+1,SYN/ACK包本身又有一个随机...
Tornado的核心是ioloop和iostream这两个模块,前者提供了一个高效的I/O事件循环,后者则封装了一个无阻塞的socket。通过向ioloop中添加网络I/O事件,利用无阻塞的socket...
ORM全称是Object/RelationMapping,即对象/关系数据库映射。可以讲ORM理解成一种规范,它概述了这类框架的基本特征,完成面相对象的编程语言到关系数据库的映射。ORM可以当成是应用程序和数据的桥梁。基本映射方...
一个客户端运行了新的命令,添加了新的数据。redis检查内存使用情况,如果大于maxmemory的限制,则根据设定好的策略进行回收。一个新的命令被执行等等,所以我们不断地穿越内存限制的边界,通过不断达到边界然后不断回收回到边界以下。如...
WSGI:web服务器网关接口,是一套协议。用于接收用户请求并将请求进行初次封装,然后将请求交给web框架。实现wsgi协议的模块:wsgiref,本质上就是编写一socket服务端,用于接收用户请求(django)werkzeug,...
线程是并发,进程是并行;进程之间互相独立,是系统分配资源的最小单位,同一个线程中的所有线程共享资源。
孤儿进程:父进程退出,子进程还在运行的这些子进程都是孤儿进程,孤儿进程将被init进程(进程号为1)所收养,并由init进程对他们完成状态收集工作。僵尸进程:进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wa...
每个对象都对应于一个可称为’互斥锁‘的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象。同一进程中的多线程之间是共享系统资源的,多个线程同时对一个对象进行操作,一个线程操作尚未结束,另一线程已经对其进行操作,导致最终结果出现...
若干子线程在系统资源竞争时,都在等待对方对某部分资源解除占用状态,结果是谁也不愿先解锁,互相干等着,程序无法执行下去,这就是死锁。GIL锁全局解释器锁作用:限制多线程同时执行,保证同一时间只有一个线程执行,所以cython里的多线...
线程是非独立的,同一个进程里线程是数据共享的,当各个线程访问数据资源时会出现竞争状态即:数据几乎同步会被多个线程占用,造成数据混乱,即所谓的线程不安全那么怎么解决多线程竞争问题?---锁锁的好处:确保了某段关键代码(共享数据资源)只...
X=(iforiinrange(10))X是generator类型
在函数内部再定义一个函数,并且这个函数用到了外边函数的变量,那么将这个函数以及用到的一些变量称之为闭包。
在编写代码时只写框架思路,具体实现还未编写就可以用pass进行占位,是程序不报错,不会进行任何操作。
散列函数(英语:Hashfunction)又称散列算法、哈希函数,是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱混合,重新创建一个叫做散列值(...
内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,导致在释放该段内存之前就失去了对该段内存的控制,从而造成了内存的浪费。有__del__()函数...