12 2019 档案
摘要:状态模式 状态模式 模拟电梯控制器 状态模式的定义如下:当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类。 状态模式的优点和应用 状态模式的缺点
阅读全文
摘要:备忘录模式 备忘录模式 备忘录模式定义如下:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原来保存的状态。在备忘录模式中,如果要保存的状态多,可以创造一个备忘录管理者角色来管理备忘录。 备忘录模式的应用场景
阅读全文
摘要:解释器模式 解释器模式 解释器模式定义如下:给定一种语言,定义它的文法表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。典型的解释器模式中会有终结符和非终结符之说,语法也根据两种终结符,决定语句最终含义。上例中,非终结符就是空格,终结符就是整个句尾。 解释器模式的优点和应用 解释器模式的
阅读全文
摘要:观察者模式 观察者模式 观察者模式也叫发布 订阅模式,其定义如下:定义对象间一种一对多的依赖关系,使得当该对象状态改变时,所有依赖于它的对象都会得到通知,并被自动更新。 观察者模式的通知方式可以通过直接调用等同步方式实现(如函数调用,HTTP接口调用等),也可以通过消息队列异步调用(同步调用指被观察
阅读全文
摘要:访问者模式 访问者模式 访问者模式的定义如下:封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义于作用于这些元素的新操作。 访问者模式的优点和应用 访问者的缺点
阅读全文
摘要:迭代器模式 迭代器与生成器 在python中,迭代器并不用举太多的例子,因为python中的迭代器应用实在太多了(不管是python还是其它很多的编程语言中,实际上迭代器都已经纳入到了常用的库或者包中)。而且在当前,也几乎没有人专门去开发一个迭代器,而是直接去使用list、string、set、di
阅读全文
摘要:模版模式 模版模式 模板模式定义如下:定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定的步骤。子类实现的具体方法叫作基本方法,实现对基本方法高度的框架方法,叫作模板方法。 模板模式的优点和应用 模板模式的缺点
阅读全文
摘要:中介者模式 中介者模式 中介者模式的定义为:用一个中介对象封装一系列的对象交互。中介者使各对象不需要显式地互相作用,从而使其耦合松散,并可以独立地改变它们之间的交互。 中介者模式的优点和应用场景 中介者模式的缺点
阅读全文
摘要:命令模式 命令模式 命令模式的定义为:将一个请求封装成一个对象,从而可以使用不同的请求将客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。命令模式中通常涉及三类对象的抽象:Receiver,Command,Invoker 只有一个Invoker的命令模式也可以抽象成一个类似的“
阅读全文
摘要:责任链模式 责任链模式 责任链模式的定义如下:使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。 责任链模式的优点和应用场景 责任链模式的缺点
阅读全文
摘要:策略模式 策略模式 策略模式定义如下:定义一组算法,将每个算法都封装起来,并使他们之间可互换。以上述例子为例,customer类扮演的角色(Context)直接依赖抽象策略的接口,在具体策略实现类中即可定义个性化的策略方式,且可以方便替换。 策略模式的优点和应用场景 策略模式的缺点
阅读全文
摘要:代理模式 代理模式 代理模式定义如下:为某对象提供一个代理,以控制对此对象的访问和控制。代理模式在使用过程中,应尽量对抽象主题类进行代理,而尽量不要对加过修饰和方法的子类代理。如上例中,如果有一个xServer继承了Server,并新加了方法xMethod,xServer的代理应以Server为主题
阅读全文
摘要:享元模式 享元模式 享元模式定义如下:使用共享对象支持大量细粒度对象。大量细粒度的对象的支持共享,可能会涉及这些对象的两类信息:内部状态信息和外部状态信息。内部状态信息就是可共享出来的信息,它们存储在享元对象内部,不会随着特定环境的改变而改变;外部状态信息就不可共享的信息了。享元模式中只包含内部状态
阅读全文
摘要:门面模式 门面模式 门面模式也叫外观模式,定义如下:要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。门面模式注重“统一的对象”,也就是提供一个访问子系统的接口。门面模式与之前说过的模板模式有类似的地方,都是对一些需要重复方法的封装。但
阅读全文
摘要:组合模式 组合模式 组合模式也叫作部分 整体模式,其定义如下:将对象组合成树形结构以表示“部分”和“整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。 组合模式的优点和使用场景 组合模式的缺点
阅读全文
摘要:装饰器模式 对装饰器的理解 ,并写出一个计时器记录方法执行性能的装饰器? 装饰器本质上是一个 Python 函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外 功能,装饰器的返回值也是一个函数对象。 装饰器模式的优点和应用场景 优点: 1、装饰器模式是继承方式的一个替代方案,可以轻量级的扩
阅读全文
摘要:桥接模式 桥接模式 桥梁模式又叫桥接模式,定义如下:将抽象与实现解耦(注意此处的抽象和实现,并非抽象类和实现类的那种关系,而是一种角色的关系,这里需要好好区分一下),可以使其独立变化。在形如上例中,Pen只负责画,但没有形状,它终究是不知道要画什么的,所以我们把它叫做抽象化角色;而Shape是具体的
阅读全文
摘要:适配器模式 适配器模式 适配器模式定义如下:将一个类的接口变换成客户端期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。适配器模式和装饰模式有一定的相似性,都起包装的作用,但二者本质上又是不同的,装饰模式的结果,是给一个对象增加了一些额外的职责,而适配器模式,则是将另一
阅读全文
摘要:原型模式 原型模式 原型模式定义如下:用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。 需要注意一点的是,进行clone操作后,新对象的构造函数没有被二次执行,新对象的内容是从内存里直接拷贝的。 原型模式的优点和使用场景 原型模式的缺点
阅读全文
摘要:建造者模式 建造者模式 建造者模式的定义如下:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 建造者模式的作用,就是将“构建”和“表示”分离,以达到解耦的作用。在上面订单的构建过程中,如果将order直接通过参数定义好(其构建与表示没有分离),同时在多处进行订单生
阅读全文
摘要:工厂类相关模式 工厂模式、简单工厂模式、抽象工厂模式 工厂模式的定义如下:定义一个用于创建对象的接口,让子类决定实例化哪个类。工厂方法使一个类的实例化延迟到其子类。其通用类图如下。其产品类定义产品的公共属性和接口,工厂类定义产品实例化的“方式”。 工厂模式的优点和应用 工厂模式的不足 1、工厂模式相
阅读全文
摘要:单例模式 请手写一个单例 单例模式的优点和应用? 单例模式的缺点
阅读全文
摘要:TCP是面向连接的通讯协议,通过三次握手建立连接,通讯完成时四次挥手 简述浏览器通过WSGI请求动态资源的过程? 描述用浏览器访问www.baidu.com的过程 Post和Get请求的区别? GET请求: POST请求: 效率:GET比POST效率高。 cookie 和session 的区别? H
阅读全文
摘要:什么是线程安全,什么是互斥锁? 说说下面几个概念:同步,异步,阻塞,非阻塞? 什么是僵尸进程和孤儿进程?怎么避免僵尸进程? Python中的进程与线程的使用场景? 线程是并发还是并行,进程是并发还是并行? 并行(parallel)和并发(concurrency)? 使用udp发送/接收数据步骤: 1
阅读全文
摘要:什么是反向代理和反向代理? 创建进程: 给子进程指定函数传递参数Demo: 进程之间的通信 Queue 在初始化Queue()对象时,(例如q=Queue(),若在括号中没有指定最大可接受的消息数量,或数 量为负值时,那么就代表可接受的消息数量没有上限 直到内存的尽头) 进程间通信Demo: 读数据
阅读全文
摘要:简述线程死锁是如何造成的?如何避免? asynio是什么? gevent模块是什么? 什么是twisted框架? 什么是LVS? 什么是Nginx? 什么是keepalived? 什么是haproxy? 什么是负载均衡? 什么是rpc及应用场景?
阅读全文
摘要:业务服务器192.168.1.2访问192.168.1.3数据接口, 无法正常返回数据, 请根据以上信息写出排查思路。 请实现一个简单的socket编程。 谈一下对于多线程编程的理解, 对于CPU密集型怎样使用多线程, 说说线程池, 线程锁的用法, 有没有用过multiprocessing或conc
阅读全文
摘要:什么是域名解析? 如何修改本地hosts文件? 生产者消费者模型应用场景? 什么是cdn? 程序从FlagA执行到FlagB的时间大致为多少秒 有A.txt和B.txt两个文件, 使用多进程和进程池的方式分别读取这两个文件 以下那些是常见的TCPFlags?(多选) 下面关于网络七层和四层的述,
阅读全文
摘要:什么是防火墙以及作用? select、poll、epoll模型的区别? 简述进程、线程、协程的区别以及应用场景? 什么是GIL锁? Python中如何使用线程池和进程池? threading.local的作用? 进程之间如何进行通信? 什么是并发和并行? 同步和异步,阻塞和非阻塞的区别? 路由器和交
阅读全文
摘要:python的底层网络交互模块有哪些? 简述OSI七层协议。 什么是C/S和B/S架构? 简述TCP三次握手、四次挥手的流程。 三次握手过程: 四次挥手过程: 什么是arp协议? TCP和UDP的区别?为何基于tcp协议的通信比基于udp协议的通信更可靠? 什么是局域网和广域网? 什么是socket
阅读全文
摘要:有用过with statement(语句)吗?它的好处是什么? 下列数据结构中,哪一种是不可迭代的 实现一个Singleton单例类,要求遵循基本语言编程规范(用尽量多的方 式)。 请口述with的用法,如果自己的类需要支持with语句,应该如何书写? python 中如何判断一个对象是否可调用?
阅读全文
摘要:简述面向对象的三大特性。 什么是鸭子模型? super 的作用? mro 是什么? 什么是 c3 算法? 列举面向对象中带双下划线的特殊方法。 双下划线和单下划线的区别? 实例变量和类变量的区别? 静态方法和类方法区别? isinstance 和 type 的作用?
阅读全文
摘要:Python函数调用的时候参数的传递方式是值传递还是引用传递? 不可变参数用值传递: 不可变对象 对缺省参数的理解 ? 缺省参数指在调用函数的时候没有传入参数的情况下,调用默认的参数,在调用函数的同时赋值时, 所传入的参数会替代默认参数。 args 是不定长参数,他可以表示输入参数是不确定的,可以是
阅读全文
摘要:下列函数的输出结果 可变参数定义 args, kwargs的区别是什么?并且写出下边代码的输入内容 请写出log实现(主要功能时打印函数名) Python 如何定义一个函数 选择代码运行结果 选择输出结果 下面程序的输出结果是 以下代码输出是什么,请给出答案并解释 写函数 谈谈你对闭包的理解? 闭包
阅读全文
摘要:求打印结果 请给出下面代码片段的输出 map(str,[1,2,3,4,5,6,7,8,9]) 输出是什么? 请简述标准库中functools.wraps的作用 请给出下面代码片段的输出 下面的函数,哪些会输出1,2,3三个数字 以下函数需要在其中引用一个全局变量k,请填写语句 请把以下函数转化为p
阅读全文
摘要:请实现一个装饰器,通过一次调用使函数重复执行5次。 python 一行 print 出 1~100 偶数的列表, (列表推导式, filter 均可) 解释生成器与函数的不同,并实现和简单使用generator 请写出打印结果: 简述yield和yieldfrom关键字。 以下代码输出结果为: 请给
阅读全文
摘要:Python 递归的最大层数? 列表推导式和生成器表达式 [i % 2 for i in range(10)] 和 (i % 2 for i inrange(10)) 输出结果分别是什么? 列举常见的内置函数? filter、map、reduce 的作用? 一行代码实现 9 9 乘法表 什么是闭包?
阅读全文
摘要:把 aaabbcccd 这种形式的字符串压缩成 a3b2c3d1 这种形式。 Python 一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出 1000 以内的所有完数。 给你一个字符串,比如‘abc’,请打印出该字符串的所有排列组合: 以‘abc’为例,输出的结果应
阅读全文
摘要:获取 Python 解释器版本的方法是 Python 中, 哪个语句能直接显示的释放内存资源 lambda表达式格式以及应用场景? arg和 kwarg作用 args用来接收溢出的位置参数,将接收的参数组织成元祖 kwargs用来接收溢出的关键字参数,将接受的参数组织成字典 求结果 一行代码实现9
阅读全文
摘要:写一个列表生成式,产生一个公差为11的等差数列 给定两个列表,怎么找出他们相同的元素和不同的元素? 请写出一段Python代码实现删除一个list里面的重复元素? 比较容易记忆的是用内置的set: 如果想要保持他们原来的排序: 用list类的sort方法: 也可以这样写: 也可以用遍历: 下面这段代
阅读全文
摘要:"01 web应用" "02 Django源码分析之启动wsgi发生的事" "03 Django简介" "04 Djang简单使用" "05 urls 视图层" "06 views 视图层" "07 前端模板层" "08 models模型层" "09 models环境配置和表查询" "10 模型层聚
阅读全文
摘要:importlib模块 可以将字符串进行拆分 重点掌握 模块简介 Python提供了importlib包作为标准库的一部分。目的就是提供Python中import语句的实现(以及__import__函数)。另外,importlib允许程序员创建他们自定义的对象,可用于引入过程(也称为importer
阅读全文
摘要:"django在服务器上如何配置" "官网https://www.django.cn/article/show 4.html"
阅读全文
摘要:装饰器修复技术,让其更加完美,如果不加这个的话,函数内部会打印装饰器内的注释,加上之后,打印的是被装饰的函数. 装饰器 修饰装饰器 导入
阅读全文
摘要:根据django中间件配置,创建自己项目的中间件,实现功能的可插拔式设计 参考 django 中间件 参考 django restframework 创建中间件的思想 开始的比较low的版本 模拟中间件 创建一个notify文件夹 文件夹内容 外面写好配置文件 运行文件 补充importlib模块
阅读全文
摘要:Auth模块是什么 使用auth模块 必须用全套 不是自己写一部分 用别人一部分 Auth模块是Django自带的用户认证模块: 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统。此时我们需要实现包括用户注册、用户登录、用户认证、注销、修改密码等功能,这还真是个麻烦的事情呢。 Djan
阅读全文
摘要:正规的网站的操作 1. 正规网站在返回给用户含有post请求的页面 都附带了一个随机的字符串 2. 然后下一次用户在提交post请求的时候 会先校验该随机字符串是否存在并判断是否一致 3. 详情参考解决钓鱼网站的策略 跨站请求伪造(csrf) 钓鱼网站 就类似于你搭建了一个跟银行一模一样的web页面
阅读全文
摘要:Cookie和Session 为什么会有cookie和session? 由于http协议是无状态的 无法记住用户是谁,cookie主要是在浏览器上记录客户的状态,session主要是用来在服务端记录客户的状态。 cookie Cookie的由来 大家都知道HTTP协议是无状态的。 无状态的意思是每次
阅读全文
摘要:为什么学习中间件? 在前面的博客中已经学会了给视图函数加装饰器来判断是用户是否登录,把没有登录的用户请求跳转到登录页面。我们通过给几个特定视图函数加装饰器实现了这个需求。但是以后添加的视图函数可能也需要加上装饰器,这样是不是稍微有点繁琐。 下面即将通过一些特点的方式实现控制全局的效果,减少自己写的代
阅读全文
摘要:Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来。 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入,输入的长度和格式等正不正确。如果用户输入的内容有错误就需要在页面上相应的位置显示对应的错误信息
阅读全文
摘要:自定义分页器 自定义分页器的使用,建立一个用来存储外来的组件(utils), 建一个py文件将代码直接拷贝过去 后端 前端 {% for book_obj in page_queryset %} {{ book_obj.title }} {% endfor %} {{ page_obj.page_h
阅读全文
摘要:ORM简介 查询数据层次图解:如果操作mysql,ORM是在pymysq之上又进行了一层封装 MVC或者MTV框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的工作量,不需要面对
阅读全文
摘要:choice参数 主要是一种对应关系,存储到数据库中,而且用choice的时候,所有的情况都能够列举出来 前端获取 后端获取 可以这样使用 MTV与MVC模型 django号称是MTV框架,其实他还是MVC框架 MTV: M:models T: templates V: view
阅读全文
摘要:QuerySet对象 可切片 使用Python 的切片语法来限制 记录的数目 。它等同于SQL 的 和 子句。 不支持负的索引(例如 )。通常, 的切片返回一个新的 —— 它不会执行查询。 可迭代 惰性查询 是惰性执行的 —— 创建 不会带来任何数据库的访问。你可以将过滤器保持一整天,直到 需要求值
阅读全文
摘要:聚合查询与分组查询 聚合 ( args, kwargs) 是`QuerySet` 的一个终止子句,意思是说,它返回一个包含一些键值对的字典。键的名称是聚合值的标识符,值是计算出来的聚合值。键的名称是按照字段和聚合函数的名称自动生成出来的。如果你想要为聚合值指定一个名称,可以向聚合子句提供它。用到的内
阅读全文
摘要:一般操作 在进行一般操作时先配置一下参数,使得我们可以直接在Django页面中运行我们的测试脚本 在Python脚本中调用Django环境 模型转为mysql数据库中的表settings配置 需要在settings中配置: 注意1: NAME即数据库的名字,在mysql连接前该数据库必须已经创建,而
阅读全文
摘要:ORM简介 查询数据层次图解:如果操作mysql,ORM是在pymysq之上又进行了一层封装 MVC或者MTV框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的工作量,不需要面对
阅读全文
摘要:Django的View(视图) 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应。 响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片。 无论视图本身包含什么逻辑,都要返回响应。代码写在哪里也无所谓,只要它
阅读全文
摘要:urls.py 路由层 路由与视图函数对应关系 路由层 URL配置(URLconf)就像Django 所支撑网站的目录。它的本质是URL与要为该URL调用的视图函数之间的映射表。 你就是以这种方式告诉Django,对于这个URL调用这段代码,对于那个URL调用那段代码。 URLconf配置 基本格式
阅读全文
摘要:用户访问内容 用户能够访问的所有的资源,都是程序猿提前暴露的,如果没有暴露,用户是不能进行访问的。 diango重启的问题 当我们更改django中的代码的时候,django内部会检测到我们更改,所以会重启。django是可以自动重启的 但是有时候反应速度比较慢,也有可能在你代码没写完的时候
阅读全文
摘要:在我们的认知中python被称作调包侠,你知道这个嘛,就是因为在python中基本所有的事情都可以调用第三方写好的模块。 软件开发架构 首先说一下软件开发架构: c/s 客户端 服务端 b/s 浏览器端 服务端 ps:b/s本质上也是c/s http协议 http是超文本传输协议 1. http有四
阅读全文
摘要:前言 好多人对技术的理解都停留在懂得使用即可,因而只会用而不会灵活用,俗话说好奇害死猫,不然我也不会在凌晨1.48的时候决定写这篇博客,好吧不啰嗦了 继续上一篇文章,后我有个问题(上文:"一篇文章理解web框架本质&手撸一个web框架https://www.cnblogs.com/xiaoy
阅读全文
摘要:Web应用的组成 接下来我们学习的目的是为了开发一个Web应用程序,而Web应用程序是基于B/S架构的,其中B指的是浏览器,负责向S端发送请求信息,而S端会根据接收到的请求信息返回相应的数据给浏览器,需要强调的一点是:S端由server和application两大部分构成,如图所示: 上图:Web应
阅读全文
摘要:通过元类创建一个Python类 最开始学pytohn的时候我们这样定义类 当熟悉了元类的概念之后我们还可以这样创建 当有父类的时候 等价于 当需要初始化值得时候 此时等价于 当需要绑定某个函数的时候 等价于 注:上面不带双引号的ClassName都是类。
阅读全文