网络数据库后端框架相关面试题(其四)

31, 在视图函数中,常见的装饰器有哪些?

django.views.decorators.csrf_exempt: 绕过csrf保护

django.views.decorators.http.require_GET: 限定请求方式为get请求

django.views.decorators.http.require_POST: 限定请求方式为post请求

django.views.decorators.http.require_http_methods: 设置限定的请求方式

django.views.decorators.cache.cache: 设置请求

django.util.decorators.method_decorator: 在CBV中类函数中使用装饰器

django.db.transaction.atomic: 保证视图函数事务完整性

32,wsgi和uwsgi的区别

wsgi全名(Python Web service Getway interface)是为python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口。也可以认为WSGI是一种通信协议。

uWSGI 是一个服务器,它实现了WSGI协议, uWSGI,HTTP等协议。nginx中HttpUwsgiModule 的作用是与uWSGI服务器进行交换。

33,QuerySet 两大特性

惰性执行

创建查询集不会访问数据库,直接调用数据时,才会访问数据库,调用数据的情况包括迭代,序列化与if 合用

缓存

使用同一个查询集,第一次使用时会发生数据库查询,然后Django 会把结果缓存下来,再次使用这个查询集时会使用缓存的数据,减少数据库的查询次数。

34, 简述什么是FBV和CBV

FBV(function base views)就是在视图中使用函数处理请求。

CBV(class base views ) 就是在视图里使用类处理请求

python 是一个面向对象的编程语言,如果只用函数来开发,有很多面向对象的优点就错失了(继承,封装,多态)。所以Django在后来加入Class-Based-View.可以让我们用类写View。这样做的优点主要有以下两种:

1,提高代码的复用性,可以使用面向对象的技术,比如Mixin(多继承)

2,可以使用不同的函数针对不同的HTTP 方法处理,而不是通过很多if判断,提高代码课可读性f

35, selected_related 与 prefetch_related有什么区别

在django中,所有的Queryset 都是惰性的,意思是当创建一个查询集的时候,并没有跟数据库发生任何交互。因此我们可以对查询集进行级联的filter等操作,只有在访问Queryset的内容的时候,django才会真正进行数据库的访问。而多频率,复杂的数据库查询往往是性能问题最大的根源。

不过我们实际开发中,往往需要访问到外键对象的其他属性。如果按照默认的查询方式去遍历取值,那么会造成多次的数据库查询,效率可想而知。

在查询对象集合的时候,把指定的外键对象也一并完整查询加载,避免后续的重复查询

1,select_related 适用于外键和多对一的关系查询

2, prefetch_reated适用于一对多或者多对多的查询

36, session 与 cookie的区别

存储位置:session在服务器中,cookie是在客户端

存储数据大小: session无限制, cookie不同浏览器都会有不同的限制, 大概几KB

安全性:session更安全, cookie在本地容易泄露, 一般需要加密

性能:数据如果全部存在session会造成服务器性能下降,可以选择部分数据使用cookie存到客户端

37, 对django的认识

1, django是走大而全的方向, 它最出名的是其全自动化的管理后台:只需要使用起ORM, 做简单的对象定义,它就能自动生成数据库结构,以及全功能的管理后台。

2, django内置的ORM跟框架内的其他模板耦合程度高。

应用程序必须使用django内置的ORM,否则就不能享受到框架内提供的种种基于其ORM的便利:

理论上可以切换掉其ORM模块,但这就相当于要把装修完毕的房子拆除重新装修,倒不如一开始就去毛坯房做全新的装修。

3,django的卖点就是超高的开发效率,其性能扩展有限;采用django的项目,在流量达到一定规模后,都需要对其进行重构,才能满足性能要求。

4, django适用的是中小型的网站,或者作为大型网站快速实现产品雏形的工具。

5, django模板的设计哲学就是彻底的将代码,样式分离;django从根本上杜绝在模板中进行编码,处理数据的可能。

38, django, flask, tornado的对比

1,django走的是大而全的方向,开发效率高。它的MTV框架,自带ORM,admin后台管理,自带的sqlite数据库和开发测试用的服务器给开发者提高了超高的开发效率。

2, Flask是轻量级的框架,自由,灵活,可扩展性很强,核心基于Werkzeug WSGI 工具和jinja2模板引擎。

3, Tornado走的是少而精的方向,性能优越。它最出名的是异步非阻塞的设计方式

Tornado的两大核心模块:

iostraem:对非阻塞式的socket进行简单的封装

ioloop:对I/O多路复用的封装,它实现了一个单例

39, QuerySet对象的常用方法

all():查询所有结果

filter(**kwargs): 它包含了所给筛选条件相匹配的对象。获取不到返回None

get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个。获取不到会报错。

如果符合筛选条件的对象超过一个或者没有都会抛出错误。

exclude(**kwargs): 它包含了与所给筛选条件不匹配的对象。

order_by(*field): 对查询结果排序

reverse():对查询结果反向排序

count():返回数据库中匹配查询的对象数量

first():返回第一条记录

exists():如果QuerySet包含数据,就返回True,否则返回False

values(*field): 返回一个ValueQuerySet ——一个特使的QuerySet,运行后得到的并不是一系列model的实例化对象,而是一个可迭代的字典序列

values_list(*field):它与values()非常相似,它返回的是一个元组序列,value返回的是一个字典序列

disrinct():从返回结果中剔除重复记录

40, filter和exclude的区别

取到的值都是QuerySet对象,filter选择满足条件的,exclude排除满足条件的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/27626.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

xgo 原理探索

Go 单测 mock 方案 Mock 方法原理依赖优点缺点接口 Mock为依赖项定义接口,并提供接口的 Mock 实现。需要定义接口和 Mock 实现。灵活,遵循 Go 的类型系统;易于替换实现。需要更多的样板代码来定义接口和 Mock 实现。Monkey Patching&#xf…

NOSQL -- ES

第三个我们比较常用的NOSQL类型的数据库 --- ES 介绍: ES的全称(Elasticsearch) ES是一个分布式全文搜索的引擎 也就是我们平常在购物, 搜索东西的时候常用的, 就是一个ES的类型, 分布式全文搜索引擎 查询原理: 1>分词: 在查询之前, 其会将一些数据拆分开, 按照词进行拆分…

day54 动态规划 part10 300.最长递增子序列 674. 最长连续递增序列 718. 最长重复子数组

300.最长递增子序列 动规五部曲 1.dp[i]的定义 dp[i]表示i之前包括i的以nums[i]结尾的最长递增子序列的长度 2.状态转移方程 位置i的最长升序子序列等于j从0到i-1各个位置的最长升序子序列 1 的最大值。 所以:if (nums[i] > nums[j]) dp[i] max(dp[i], dp…

使用C语言,写一个类似Linux中执行cat命令的类似功能

一、详细的代码案例 #include <stdio.h> #include <stdlib.h> #include <string.h>// 函数声明 void cat_file(const char *filename);int main(int argc, char *argv[]) {if (argc < 2) {fprintf(stderr, "Usage: %s filename1 [filename2 ...]\n&…

样本学习:当AI遇上“少见多怪”

东汉名臣牟融在其著作《牟子》写道&#xff1a;“少所见&#xff0c;多所怪&#xff0c;睹橐驼&#xff0c;谓马肿背。”意思是见闻少的人遇到不常见的事物就觉得奇怪&#xff0c;见到骆驼也以为是背肿了的马。因此&#xff0c;后人总用“少见多怪”来嘲笑见识浅陋的人。然而&a…

七个备受欢迎的IntelliJ IDEA实用插件

有了Lombok插件&#xff0c;IntelliJ就能完全理解Lombok注解&#xff0c;使它们能如预期般工作&#xff0c;防止出现错误&#xff0c;并改善IDE的自动完成功能。 作为IntelliJ IDEA的常用用户&#xff0c;会非常喜欢使用它&#xff0c;但我们必须承认&#xff0c;有时这个IDE&…

3.多层感知机

目录 1.感知机训练感知机XOR问题&#xff08;Minsky&Papert 1969&#xff09; AI的第一个寒冬总结 2.多层感知机(MLP)学习XOR单隐藏层&#xff08;全连接层&#xff09;激活函数&#xff1a;Sigmoid激活函数&#xff1a;Tanh激活函数&#xff1a;ReLu 最常用的 因为计算速度…

Mybatis面试系列六

1、Mybatis 动态sql有什么用&#xff1f;执行原理&#xff1f;有哪些动态sql&#xff1f; Mybatis 动态 sql 可以在 Xml 映射文件内&#xff0c;以标签的形式编写动态 sql&#xff0c;执行原理 是根据表达式的值完成逻辑判断并动态拼接sql的功能。 Mybatis 提供了 9种动态 sql标…

textarea 中的内容在word中显示换行不起作用

js文本换行在word显示 在JavaScript中&#xff0c;处理文本换行以确保它在Word中正确显示&#xff0c;通常需要将文本中的换行符转换为Word可识别的格式。在HTML中&#xff0c;换行通常是通过<br>标签来实现的&#xff0c;而在Word中&#xff0c;换行通常由段落标签<…

openGauss学习笔记-300 openGauss AI特性-AI4DB数据库自治运维-DBMind的AI子功能-SQL Rewriter SQL语句改写

文章目录 openGauss学习笔记-300 openGauss AI特性-AI4DB数据库自治运维-DBMind的AI子功能-SQL Rewriter SQL语句改写300.1 概述300.2 使用指导300.2.1 前提条件300.2.2 使用方法示例300.3 获取帮助300.4 命令参考300.5 常见问题处理openGauss学习笔记-300 openGauss AI特性-AI…

微服务之负载均衡器

1、负载均衡介绍 负载均衡就是将负载(工作任务&#xff0c;访问请求)进行分摊到多个操作单元(服务器&#xff0c;组件)上 进行执行。 根据负载均衡发生位置的不同&#xff0c; 一般分为服务端负载均衡和客户端负载均衡。 服务端负载均衡指的是发生在服务提供者一方&#xff…

学习了解JS的classlist

在JavaScript中&#xff0c;classList 是一个在DOM元素上用于操作元素类名的属性。它提供了一个比传统 className 属性更强大且更易于使用的方式来添加、移除和切换类名。 classList 不是一个函数&#xff0c;而是一个对象&#xff0c;它包含了几个方法&#xff0c;允许你以列…

Visual Studio 使用第三方库管理工具 vcpkg

一、介绍 Windows下开发C/C程序&#xff0c;少不了用开源的第三方库。比如线性代数和矩阵分析的库eigen&#xff0c;或者图像处理的OpenCV库。虽然这些库都是开源的&#xff0c;但是由于要编译debug和release版本的&#xff0c;32位以及64位的&#xff0c;如果像FFmpeg…

2022年5月起RabbitMQ社区停止了对CentOS7的支持

前言 CentOS 7 的 RabbitMQ RPM 软件包将于 2022 年 5 月停止使用&#xff0c;因为 CentOS 发行系列提供了过时版本的 OpenSSL 和 Linux 内核。 建议 CentOS 7 用户迁移到使用较新发行版的新集群 从 2022 年 5 月 1 日起&#xff0c;RabbitMQ 将停止对 CentOS 7 的支持。展望…

基于springboot实现校园组团平台系统项目【项目源码】计算机毕业设计

基于springboot实现校园组团平台系统的设计演示 SSM框架介绍 本课题程序开发使用到的框架技术&#xff0c;英文名称缩写是SSM&#xff0c;在JavaWeb开发中使用的流行框架有SSH、SSM、SpringMVC等&#xff0c;作为一个课题程序采用SSH框架也可以&#xff0c;SSM框架也可以&…

FullCalendar日历组件集成实战(14)

背景 有一些应用系统或应用功能&#xff0c;如日程管理、任务管理需要使用到日历组件。虽然Element Plus也提供了日历组件&#xff0c;但功能比较简单&#xff0c;用来做数据展现勉强可用。但如果需要进行复杂的数据展示&#xff0c;以及互动操作如通过点击添加事件&#xff0…

每日一题——Python实现PAT乙级1028 人口普查 Keyboard(举一反三+思想解读+逐步优化)六千字好文

一个认为一切根源都是“自己不够强”的INTJ 个人主页&#xff1a;用哲学编程-CSDN博客专栏&#xff1a;每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 题目链接​编辑我的写法 专业点评 时间复杂度分析 空间复杂度分析 总结 我要更强…

解析Java中1000个常用类:Process类,你学会了吗?

在Java编程中,Process类是一个非常有用的工具,它允许开发者从应用程序内部启动和管理本地操作系统进程。 本文将详细探讨Java中Process类的用法,包括它的基本概念、常见操作、实际应用场景以及一些高级技巧。 一、Process类的基本概念 1.1 什么是Process类 在Java中,Pr…

Python基础教程(十八):MySQL - mysql-connector 驱动

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…

碳化硅陶瓷膜良好的性能

碳化硅陶瓷膜是一种高性能的陶瓷材料&#xff0c;以其独特的物理和化学特性&#xff0c;在众多领域展现出了广泛的应用前景。以下是对碳化硅陶瓷膜的详细介绍&#xff1a; 一、基本特性 高强度与高温稳定性&#xff1a;碳化硅陶瓷膜是一种非晶态陶瓷材料&#xff0c;具有极高的…