上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 68 下一页
摘要: 字符串(String)、 数字(Digit)、 列表(List)、 元组(Tuple)、 集合(Sets)、 字典(Dictionary)。 阅读全文
posted @ 2020-09-13 12:12 anobscureretreat 阅读(409) 评论(0) 推荐(0) 编辑
摘要: 昨天面试的时候提到了这个问题,但是由于面试时有点紧张,加上之前没做过这个,没写出来,今天补出来。 code a=[ {"id":1,"menu_name":"菜单1","pid":0}, {"id":2,"menu_name":"菜单1-1","pid":1}, {"id":3,"menu_name 阅读全文
posted @ 2020-09-05 23:15 anobscureretreat 阅读(363) 评论(0) 推荐(0) 编辑
摘要: 一.抽象类: 规定了一系列的方法,并规定了必须由继承类实现的方法。由于有抽象方法的存在,所以抽 象类不能实例化。可以将抽象类理解为毛坯房,门窗,墙面的样式由你自己来定,所以抽象类与作为基 类的普通类的区别在于约束性更强 二.接口类:与抽象类很相似,表现在接口中定义的方法,必须由引用类实现,但他与抽象 阅读全文
posted @ 2020-09-01 00:11 anobscureretreat 阅读(346) 评论(0) 推荐(0) 编辑
摘要: 内存管理机制: 引用计数、垃圾回收、内存池 引用计数:引用计数是一种非常高效的内存管理手段,当一个Python对象被引用时其引用计数增加1,当其不再被一个变量引用时则计数减1,当引用计数等于0时对象被删除。 弱引用不会增加引用计数 垃圾回收: 1.引用计数 引用计数也是一种垃圾收集机制,而且也是一种 阅读全文
posted @ 2020-09-01 00:10 anobscureretreat 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存。内存泄漏并非指内存在物理上的消 失,而是应用程序分配某段内存后,由于设计错误,导致在释放该段内存之前就失去了对该段内存的控 制,从而造成了内存的浪费。 有 函数的对象间的循环引用是导致内存泄露的主凶。不使用一个对象时使用: del obje 阅读全文
posted @ 2020-09-01 00:08 anobscureretreat 阅读(920) 评论(0) 推荐(0) 编辑
摘要: 1.函数设计要尽量短小 2.函数声明要做到合理、简单、易于使用 3.函数参数设计应该考虑向下兼容 4.一个函数只做一件事情,尽量保证函数语句粒度的一致性 阅读全文
posted @ 2020-09-01 00:07 anobscureretreat 阅读(539) 评论(0) 推荐(0) 编辑
摘要: Python的参数传递有:位置参数、默认参数、可变参数、关键字参数。 函数的传值到底是值传递还是引用传递、要分情况: 不可变参数用值传递:像整数和字符串这样的不可变对象,是通过拷贝进行传递的,因为你无论如何都 不可能在原处改变不可变对象。 可变参数是引用传递:比如像列表,字典这样的对象是通过引用传递 阅读全文
posted @ 2020-09-01 00:06 anobscureretreat 阅读(341) 评论(0) 推荐(0) 编辑
摘要: lambda 函数是一个可以接收任意多个参数(包括可选参数)并且返回单个表达式值的函数 1.lambda函数比较轻便,即用即仍,很适合需要完成一项功能,但是此功能只在此一处使用,连名字 都很随意的情况下 2.匿名函数,一般用来给filter,map这样的函数式编程服务 3.作为回调函数,传递给某些应 阅读全文
posted @ 2020-09-01 00:04 anobscureretreat 阅读(384) 评论(0) 推荐(0) 编辑
摘要: 设计模式是经过总结,优化的,对我们经常会碰到的一些编程问题的可重用解决方案。 一个设计模式并 不像一个类或一个库那样能够直接作用于我们的代码,反之,设计模式更为高级,它是一种必须在特定 情形下实现的一种方法模板。 常见的是工厂模式和单例模式 。 阅读全文
posted @ 2020-09-01 00:01 anobscureretreat 阅读(311) 评论(0) 推荐(0) 编辑
摘要: 单例模式应用的场景一般发现在以下条件下: 资源共享的情况下,避免由于资源操作时导致的性能或损耗等,如日志文件,应用配置。 控制资源的情况下,方便资源之间的互相通信。如线程池等, 1.网站的计数器 2,应用配置 3.多线程池 4. 数据库配置 数据库连接池 5.应用程序的日志应用 阅读全文
posted @ 2020-08-31 23:58 anobscureretreat 阅读(1383) 评论(0) 推荐(0) 编辑
摘要: 在函数内部再定义一个函数,并且这个函数用到了外边函数的变量,那么将这个函数以及用到的一些变 量称之为闭包。 阅读全文
posted @ 2020-08-31 23:55 anobscureretreat 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 装饰器本质上是一个callable object,它可以在让其他函数在不需要做任何代码的变动的前提下增加额 外的功能。装饰器的返回值也是一个函数的对象,它经常用于有切面需求的场景。比如:插入日志,性 能测试,事务处理,缓存。权限的校验等场景,有了装饰器就可以抽离出大量的与函数功能本身无关的 雷同代码 阅读全文
posted @ 2020-08-31 23:54 anobscureretreat 阅读(446) 评论(0) 推荐(1) 编辑
摘要: 迭代器是遵循迭代协议的对象。用户可以使用 iter() 以从任何序列得到迭代器(如 list, tuple, dictionary, set 等)。另一个方法则是创建一个另一种形式的迭代器 —— generator 。要获取下一个元 素,则使用成员函数 next()(Python 2)或函数 nex 阅读全文
posted @ 2020-08-31 23:52 anobscureretreat 阅读(185) 评论(0) 推荐(0) 编辑
摘要: yield就是保存当前程序执行状态。你用for循环的时候,每次取一个元素的时候就会计算一次。用yield 的函数叫generator,和iterator一样,它的好处是不用一次计算所有元素,而是用一次算一次,可以节 省很多空间,generator每次计算需要上一次计算结果,所以用yield,否则一r 阅读全文
posted @ 2020-08-31 23:50 anobscureretreat 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 不可变对象,该对象所指向的内存中的值不能被改变。当改变某个变量时候,由于其所指的值不能被改 变,相当于把原来的值复制一份后再改变,这会开辟一个新的地址,变量再指向这个新的地址。 可变对象,该对象所指向的内存中的值可以被改变。变量(准确的说是引用)改变后,实际上其所指的 值直接发生改变,并没有发生复制 阅读全文
posted @ 2020-08-31 23:48 anobscureretreat 阅读(121) 评论(0) 推荐(0) 编辑
摘要: code s1='_aai0efe00' res=re.findall('^[a-zA-Z_]?[a-zA-Z0-9_]{1,}\d$',s1) print(res) 阅读全文
posted @ 2020-08-31 23:42 anobscureretreat 阅读(728) 评论(0) 推荐(0) 编辑
摘要: import re pattern = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]') pattern.sub('',text) 阅读全文
posted @ 2020-08-31 23:41 anobscureretreat 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 这个问题被问的概念相当之大, 进程:一个运行的程序(代码)就是一个进程,没有运行的代码叫程序,进程是系统资源分配的最小单 位,进程拥有自己独立的内存空间,所有进程间数据不共享,开销大。 线程: cpu调度执行的最小单位,也叫执行路径,不能独立存在,依赖进程存在,一个进程至少有一个线 程,叫主线程,而 阅读全文
posted @ 2020-08-31 23:35 anobscureretreat 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 线程是非独立的,同一个进程里线程是数据共享的,当各个线程访问数据资源时会出现竞争状态即:数 据几乎同步会被多个线程占用,造成数据混乱,即所谓的线程不安全 那么怎么解决多线程竞争问题? 锁 锁的好处: 确保了某段关键代码(共享数据资源)只能由一个线程从头到尾完整地执行能解决多线程资 源竞争下的原子操作 阅读全文
posted @ 2020-08-31 23:30 anobscureretreat 阅读(360) 评论(0) 推荐(0) 编辑
摘要: 锁(Lock)是python提供的对线程控制的对象。有互斥锁,可重入锁,死锁。 阅读全文
posted @ 2020-08-31 23:27 anobscureretreat 阅读(361) 评论(0) 推荐(0) 编辑
摘要: 若干子线程在系统资源竞争时,都在等待对方对某部分资源解除占用状态,结果是谁也不愿先解锁,互 相干等着,程序无法执行下去,这就是死锁。 GIL锁 全局解释器锁 作用: 限制多线程同时执行,保证同一时间只有一个线程执行,所以cython里的多线程其实是伪多线 程! 所以python里常常使用协程技术来代 阅读全文
posted @ 2020-08-31 23:20 anobscureretreat 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 怎么避免重读? 创建一个已访问数据列表,用于存储已经访问过的数据,并加上互斥锁,在多线程访问数据的时候先查 看数据是否在已访问的列表中,若已存在就直接跳过。 阅读全文
posted @ 2020-08-31 23:19 anobscureretreat 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 每个对象都对应于一个可称为’互斥锁‘的标记,这个标记用来保证在任一时刻,只能有一个线程访问该 对象。 同一进程中的多线程之间是共享系统资源的,多个线程同时对一个对象进行操作,一个线程操作尚未结 束,另一线程已经对其进行操作,导致最终结果出现错误,此时需要对被操作对象添加互斥锁,保证每 个线程对该对象 阅读全文
posted @ 2020-08-31 23:18 anobscureretreat 阅读(283) 评论(0) 推荐(0) 编辑
摘要: 同步: 多个任务之间有先后顺序执行,一个执行完下个才能执行。 异步: 多个任务之间没有先后顺序,可以同时执行,有时候一个任务可能要在必要的时候获取另一个同 时执行的任务的结果,这个就叫回调! 阻塞: 如果卡住了调用者,调用者不能继续往下执行,就是说调用者阻塞了。 非阻塞: 如果不会卡住,可以继续执行 阅读全文
posted @ 2020-08-31 23:13 anobscureretreat 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 孤儿进程: 父进程退出,子进程还在运行的这些子进程都是孤儿进程,孤儿进程将被init 进程(进程号 为1)所收养,并由init 进程对他们完成状态收集工作。 僵尸进程: 进程使用fork 创建子进程,如果子进程退出,而父进程并没有调用wait 获waitpid 获取子进 程的状态信息,那么子进程的进 阅读全文
posted @ 2020-08-31 23:11 anobscureretreat 阅读(363) 评论(0) 推荐(0) 编辑
摘要: 多进程适合在CPU密集操作(cpu操作指令比较多,如位多的的浮点运算)。 多线程适合在IO密性型操作(读写数据操作比多的的,比如爬虫) 阅读全文
posted @ 2020-08-31 23:08 anobscureretreat 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 并行: 同一时刻多个任务同时在运行 并发:不会在同一时刻同时运行,存在交替执行的情况。 实现并行的库有: multiprocessing 实现并发的库有: threading 程序需要执行较多的读写、请求和回复任务的需要大量的IO操作,IO密集型操作使用并发更好。 CPU运算量大的程序,使用并行会更 阅读全文
posted @ 2020-08-31 23:06 anobscureretreat 阅读(860) 评论(0) 推荐(0) 编辑
摘要: IO密集型: 系统运行,大部分的状况是CPU在等 I/O(硬盘/内存)的读/写 CPU密集型: 大部分时间用来做计算,逻辑判断等CPU动作的程序称之CPU密集型。 阅读全文
posted @ 2020-08-31 23:05 anobscureretreat 阅读(1457) 评论(0) 推荐(0) 编辑
摘要: 一个客户端运行了新的命令,添加了新的数据。 redis检查内存使用情况,如果大于maxmemory的限制,则根据设定好的策略进行回收。 一个新的命令被执行等等,所以我们不断地穿越内存限制的边界,通过不断达到边界然后不断回收回到 边界以下。 如果一个命令的结果导致大量内存被使用(例如很大的集合的交集保 阅读全文
posted @ 2020-08-31 23:03 anobscureretreat 阅读(660) 评论(0) 推荐(0) 编辑
摘要: 数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询,更新数据库表中数据。 索引的实现通常使用B树以其变种B+树。 在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。 为表 阅读全文
posted @ 2020-08-31 23:01 anobscureretreat 阅读(209) 评论(0) 推荐(0) 编辑
摘要: drop直接删掉表,truncate删除表中数据,再插入时自增长id又从1开始,delete删除表中数据,可以加where字句。 1.delete 语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志 中保存以便进行回滚操作。truncate table则一次性地从表中 阅读全文
posted @ 2020-08-31 22:58 anobscureretreat 阅读(141) 评论(0) 推荐(0) 编辑
摘要: Python自带:urllib,urllib2 第三方:requests 框架: Scrapy urllib 和urllib2模块都做与请求URL相关的操作,但他们提供不同的功能。 urllib2: urllib2.urlopen可以接受一个Request对象或者url,(在接受Request对象时 阅读全文
posted @ 2020-08-31 22:52 anobscureretreat 阅读(330) 评论(0) 推荐(0) 编辑
摘要: requests, urllib,urllib2, httplib2 阅读全文
posted @ 2020-08-31 22:51 anobscureretreat 阅读(518) 评论(0) 推荐(0) 编辑
摘要: Session采用的是在服务器端保持状态的方案,而Cookie采用的是在客户端保持状态的方案。但是禁用 Cookie就不能得到Session。 因为Session是用Session ID来确定当前对话所对应的服务器Session,而 Session ID是通过Cookie来传递的,禁用Cookie相 阅读全文
posted @ 2020-08-31 22:50 anobscureretreat 阅读(462) 评论(0) 推荐(0) 编辑
摘要: Django REST framework是一个强大而灵活的Web API工具。使用RESTframework的理由有: Web browsable API对开发者有极大的好处 包括OAuth1a和OAuth2的认证策略 。 支持ORM和非ORM数据资源的序列化 全程自定义开发--如果不想使用更加强 阅读全文
posted @ 2020-08-31 22:49 anobscureretreat 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 1.Django中耗时的任务用一个进程或者线程来执行,比如发邮件,使用celery. 2.部署django项目的时候,配置文件中设置了进程和协程的相关配置。 阅读全文
posted @ 2020-08-31 22:47 anobscureretreat 阅读(416) 评论(0) 推荐(0) 编辑
摘要: django:主要是用来搞快速开发的,他的亮点就是快速开发,节约成本,,如果要实现高并发的话,就要 对django进行二次开发,比如把整个笨重的框架给拆掉自己写socket实现http的通信,底层用纯c,c++写 提升效率,ORM框架给干掉,自己编写封装与数据库交互的框架,ORM虽然面向对象来操作数 阅读全文
posted @ 2020-08-31 22:44 anobscureretreat 阅读(667) 评论(0) 推荐(0) 编辑
摘要: uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的 作用是与uWSGI服务器进行交换。WSGI是一种Web服务器网关接口。它是一个Web服务器(如nginx, uWSGI等服务器)与web应用(如用Flask框架写的程序)通信 阅读全文
posted @ 2020-08-31 22:41 anobscureretreat 阅读(157) 评论(0) 推荐(1) 编辑
摘要: 1.GET是从服务器上获取数据,POST是向服务器传送数据 2.在客户端,GET方式在通过URL提交数据,数据在URL中可以看到,POST方式,数据放置在HTML ——HEADER内提交 3.对于GET方式,服务器端用Request.QueryString获取变量的值,对于POST方式,服务器端用 阅读全文
posted @ 2020-08-31 22:37 anobscureretreat 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 在进行数据库的设计时,所遵循的一些规范,只要按照设计规范进行设计,就能设计出没有数据冗余和 数据维护异常的数据库结构。 数据库的设计的规范有很多,通常来说我们在设是数据库时只要达到其中一些规范就可以了,这些规范 又称之为数据库的三范式,一共有三条,也存在着其他范式,我们只要做到满足前三个范式的要求, 阅读全文
posted @ 2020-08-31 22:33 anobscureretreat 阅读(275) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 68 下一页