网络数据库后端相关面试题(其三)

18, 传输控制协议tcp和用户数据报协议udp有哪些区别

第一,tcp是面向字节流的,基本的传输单位是tcp报文段;而udp是面向报文的,基本传输单位是用户数据报。

第二, tcp注重安全可靠性,连接双方在进行通信前,需要经过三次握手建立连接。udp是无连接的,使用最大努力交付,即不保证可靠交付。

第三,udp不需要连接等待,所以数据传输快,而tcp传输效率相对较低。

第四, tcp首部开销是20个字节;udp开销是8个字节,这也是减少网络传输开销的一方面。

第五, tcp有拥堵控制和流量控制,而udp没有拥堵控制和流量控制

第六, tcp支持点对点通信,提供全双工通信,不提供广播或多播服务;udp支持一对一,一对多,多对一,多对多的通信模式

19,从输入url到页面加载发生了什么

总体来说分为以下几个过程:

DNS解析

TCP连接

发送HTTP请求

服务器处理请求并返回HTTP报文

浏览器解析渲染画面

连接结束

20,HTTP中的请求方法和用途主要有哪些

get方法:一般用于查询

post方法:一般用于添加数据

put方法:一般用于修改全部数据

pacth方法:一般用于修改部分数据

delete方法:一般用于删除数据

21, get请求与post请求的差别

第一,get是从服务器上获取数据,post是向服务器传送数据

第二, get请求时通过URL直接请求数据,数据信息可以在URL中直接看到,比如浏览器访问;

而post请求时放在请求体中的,用户无法看到

第三, get传送的数据量小,有限制,不能大于2KB;主要是因为它受约于URL长度的限制。

post传送的数据量较大,一般被默认不受限制

22,Django的工作原理

1,用户通过浏览器请求一个页面的url

2, 请求到达Request Middlewares(中间件), 中间件对request做一些预处理或者直接response请求

3, URLconf通过urls.py文件和请求的URL找到相应的View(视图)

4,View Middlewares被访问,它同样可以对request做一些处理或者直接返回response

5,调用View中的函数

6, View中的方法可以选择 性的通过Models访问底层数据

7, 所有的Models_to_DB的交互都是通过manager完成的

8, 如果需要,View可以使用一个特殊的Context(上下文处理器)

9, Context被传给Template(存放前段文件)用来生成页面

23, 怎么理解MVC和MTV的区别

著名的MVC 模式:所谓MVC就是把web应用分为模型(M),控制器(C),视图(V)三层;他们之间以一种插件似的,松耦合的方式连接在一起。

模型负责业务对象与数据库的对象(ORM),视图负责与用户的交互(页面),控制器(C)接受用户的输入调用模型和视图完成用户的请求。

Django的MTV模式本质上就是与MVC模式没有什么差别,也是各个组件之间为了保持松耦合关系,只是定义上有些许不同。Django的MTV分别代表:

Model(模型):负责业务对象与数据库的对象(ORM)

Template(模板):负责如何把页面展示给用户

View(视图):负责业务逻辑,并在适当的时候调用Model和Template

此外,Django还有一个url分发器,它的作用是将一个个URL页面请求分发给不同的view处理,view再调用响应的Model和Template

24, 什么是缓存穿透?如何避免?

缓存穿透

一般的缓存程序,都是按照key去缓存查询,如果不存在对应的value,就应该去后端系统查找(比如DB)。一些恶意的请求会故意查询不存在的key,请求量很大,就会对后端系统造成很大的压力。这就叫缓存穿透。

如何避免?

1,对查询结果为空也进行缓存,缓存时间设置短一点,或者该key对应的数据insert了之后清理缓存

2,对一定不存在的key进行缓存

25, 什么是缓存雪崩?如何避免?

缓存雪崩

当缓存服务器重启或者大量缓存集中在某一时间段失效,这样在失效的时候,会给后端系统带来压力。导致系统崩溃。

如何避免?

1:在缓存失效后,通过加锁或者队列来控制读数据库写缓存的线程数量。比如对某个key只允许一个线程查询数据和写缓存,其他线程等待。

2:做二级缓存,A1为原始缓存,A2为拷贝缓存,A1失效时,可以访问A2,A1缓存失效时间设置为短期,A2设置为长期。

3:不同的key ,设置不同的过期时间,让缓存失效的时间尽量均匀。

26, Django中间件

中间件是一个用来处理django的请求和响应和框架级别的钩子。它是一个轻量,低级别的插件系统,用于在全局范围内改变django的输入输出。每个中间件组件都负责做一些特别的功能。

中间件类中定义了几个方法,django框架会在请求的特定时间去执行这些方法。

process_request: 进入请求路由前

process_view:进入视图函数请

process_exception: 视图函数产生异常

process_template_response: render到模板前

process_respomse: 响应到浏览器前

27,CSRF 攻击的原理和防范措施

csrf跨站点请求伪造(Cross--Site Request Forgery), 跟XSS攻击一样,存在巨大的危害性,可以这样来理解:攻击者盗用我们的身份,以我们的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以我们的名义发送邮件,发送消息,盗取我们的账号,添加系统管理员,甚至购买商品,虚拟货币转账等。

攻击原理:

i. 用户C访问正常网站A时进行登录,浏览器保存A的cookie

ii. 用户C再访问攻击网站B,网站B上有一个隐藏的链接或者图片标签会自动请求网站A的URL网站,例如表单提交,传指定参数

iii.而网站A在接受到请求之后可判断当前用户是登录状态,所以根据用户的权限做具体的操作逻辑,造成网站攻击成功。

防范措施:

i. 在请求头里添加一个随机值作为参数

ii.在响应的cookie里面设置该随机值

iii.那么用户C再正常提交表单的时候会默认带上表单中的随机值,浏览器会自动带上cookie里面随机值,那么服务器下次接受到请求之后就可以取出两个值进行校验

iv.而对于网站B来说网站B在提交表单的时候不知道该随机值是什么,所以就形成不了攻击也可以用来设置避免表单的重复提交。

28,跨域产生的原因以及解决方案

浏览器的同源策略是浏览器上为了安全性考虑实施的非常重要的安全策略

何为同源:url由协议,域名,端口和路径组成,如果两个URL的协议,域名端口相同,则表示同源

在浏览器中<script>, <img>, <iframe>, <link>等标签都可以加载跨域资源,而不受同源限制,但浏览器会限制脚本中发起的跨域请求。比如,使用XMLHttpRequest对象和Fetch发起HTTP请求就必须遵循同源策略。

不允许跨域访问并非是浏览器限制了发起跨站请求,而是跨站请求可以正常发起,但是返回结果被浏览器拦截了。

常见的跨域解决方案:Script跨域, JSON跨域, CORS(跨域资源共享), Nginx代理

29, django模型常用属性

AutoField:

映射到数据库中是int类型,可以有自动增长的特性。一般不需要使用这个类型,如果不指定主键,那么模型会自动生成一个叫做ID的自动增长的主键,如果想要指定一个其他名字的并且具有自动增长的主键,使用Autofield 也是可以的。

BooleanField:

在模型层面接受的是TRUE/False。在数据库层面是tinyint类型。如果没有指定默认值,默认值是None。

CharField:

在数据库层面是varchar。在python层面就是普通的字符串。这个类型在使用的时候必须要指定最大长度,也即必须传递max_length这个关键字参数进去。

EmailFied:

类似CharField 。 在数据库底层也是一个varchar类型。最大长度是254个字符。如果没有指定max_length, 默认使用254个字符为最大长度。并不会限制字符串一定要满足邮箱格式。

FloatField:

浮点类型。映射到数据库就是数据库中的float类型。

IntegerField:

整形, 值的区间是 -2^31——2^31-1

TextField:

大量文本类型。映射到数据库中是longtext 类型

FileField:

用来存储上传的文件

30, django常见的响应方式

HTTPresponse:可以返回一段简单的字符串,也可以返回一个流数据

render: 通过转发的方式跳转到一个django模板页面redirect:通过 重定向的方式跳转到一个路由中

FileResponse:实现文件的下载,可以自动设置头信息

JsonResponse: 返回一个json格式的数据,一般配合异步请求使用

HTTP404:快速返回一个404 错误页面(如果没有配置,返回一个django自带的404效果页面)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux网络 - HTTP协议

文章目录 前言一、HTTP协议1.urlurl特殊字符 requestrespond 总结 前言 上一章内容我们讲了在应用层制定了我们自己自定义的协议、序列化和反序列化。 协议的制定相对来讲还是比较麻烦的&#xff0c;不过既然应用层的协议制定是必要的&#xff0c;那么肯定已经有许多计算机大佬…

内存分配器性能优化

背景 在之前我们提到采用自定义的内存分配器来解决防止频繁 make 导致的 gc 问题。gc 问题本质上是 CPU 消耗&#xff0c;而内存分配器本身如果产生了大量的 CPU 消耗那就得不偿失。经过测试初代内存分配器实现过于简单&#xff0c;产生了很多 CPU 消耗&#xff0c;因此必须优…

果汁机锂电池充电,5V升压12.7V 升压恒压芯片SL1571B

在现代化的日常生活中&#xff0c;果汁机已经逐渐成为了许多家庭厨房的必备电器。随着科技的不断进步&#xff0c;果汁机的性能也在不断提升&#xff0c;其中锂电池的应用更是为果汁机带来了前所未有的便利。而5V升压12.7V升压恒压芯片SL1571B&#xff0c;作为果汁机锂电池充电…

skywalking9.4 链路追踪

下载&#xff0c;很慢很慢很慢&#xff01;&#xff01;&#xff01;&#xff01; jdk 使用jdk17 skywalking-apm 9.4 java-agent 9.0 idea 本地开发配置 第1行配置按实际来&#xff1b; 第2行自定义&#xff0c;一般和微服务名称相同&#xff1b; 第3行ip写安装的机器ip,端…

QQ音乐绿钻API接口:解锁更多音乐可能性

在我们日常生活中&#xff0c;音乐是不可或缺的一部分。无论是在上班途中&#xff0c;还是在健身房锻炼时&#xff0c;我们都可以通过听音乐来放松自己。然而&#xff0c;在现如今的音乐市场中&#xff0c;有时候我们会觉得收听的歌曲有限&#xff0c;想要尝试更多不同的音乐类…

量产导入 | DFT和ATE概述

什么是DFT DFT(Design for Test),即可测性设计。 一切为了芯片流片后测试所加入的逻辑设计,都叫DFT。 DFT只是为了测试芯片制造过程中有没有缺陷,而不是用来验证芯片功能的,芯片功能的完善应该应该是在芯片开发过程用先进验证方法学去做的。 芯片制造过程相当复杂,工艺缺陷…

降价潮背后:大模型落地门槛真的降了吗?

“比起价格门槛&#xff0c;AI大模型的应用门槛&#xff0c;更难跨越。” 大模型争相降价下&#xff0c;AI应用的门槛真的降低了吗&#xff1f; 答案还真不一定。因为除了价格门槛&#xff0c;AI大模型还有应用门槛。甚至&#xff0c;后者比前者更具挑战性。 B端业务场景向来…

3D感知视觉表示与模型分析:深入探究视觉基础模型的三维意识

在深度学习与大规模预训练的推动下&#xff0c;视觉基础模型展现出了令人印象深刻的泛化能力。这些模型不仅能够对任意图像进行分类、分割和生成&#xff0c;而且它们的中间表示对于其他视觉任务&#xff0c;如检测和分割&#xff0c;同样具有强大的零样本能力。然而&#xff0…

Java集合的组内平均值怎么计算

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; 在Java中&#xff0c;经常需要对集合进行各种操作&#xff0c;其中之一就是计算集合的组内平均值。本文将介绍如何使用Java集合来计算组内平均值&#xff0c;并提供一些示例代码和实用技巧。 1. 使用Java 8 Stream A…

MMdeploy在cuda+tensorrt下的配置和编译

MMdeploy在cudatensorrt下的配置和编译 Python安装配置MMdeploy配置openmmlab系列从工程安装mmdeploy MMdeploy_runtime以及demo编译安装量化编译runtime和demo Python安装配置MMdeploy 配置openmmlab系列 pip install -U openmim如果mim命令遭遇故障&#xff0c;或者安装失败…

龙迅LT9211D MIPIDSI/CSI桥接到2 PORT LVDS,支持 3840x2160 30Hz分辨率

龙迅LT9211D描述&#xff1a; LT9211D是一款高性能的MIPI DSI/CSI-2到双端口LVDS转换器。LT9211D反序列化输入的MIPI视频数据&#xff0c;解码数据包&#xff0c;并将格式化的视频数据流转换为AP和移动显示面板或摄像机之间的LVDS发射机输出。LT9211D支持最大12.5 dB输入均衡和…

boost asio异步服务器(3)增加发送队列实现全双工通信

增加发送节点 构造发送节点&#xff0c;管理发送数据。发送节点的类如下。 这个发送节点用于保证发送和接收数据的有效性。 增加发送队列 前边实现的是一个简单的echo服务器&#xff0c;也就是服务器将收到的内容发送给对应的客户端。但是在实际的服务器设计中&#xff0c;服务…

《精通ChatGPT:从入门到大师的Prompt指南》第7章:创意写作

第7章&#xff1a;创意写作 7.1 角色设定 角色设定是创意写作中最关键的环节之一。成功的角色设定能够让读者对故事产生共鸣&#xff0c;使故事更加生动有趣。角色不仅仅是情节发展的载体&#xff0c;更是读者情感的投射对象。因此&#xff0c;深入了解如何设定一个生动而有深…

讯方技术与华为终端签署鸿蒙合作协议,将为企业助培百万鸿蒙人才

1月18日&#xff0c;鸿蒙生态千帆启航仪式在深圳举行&#xff0c;华为宣布HarmonyOS NEXT鸿蒙星河版开发者预览面向开发者开放申请&#xff0c;这意味着鸿蒙生态进入第二阶段&#xff0c;将加速千行百业的应用鸿蒙化。讯方技术总裁刘国锋、副总经理刘铭皓应邀出席启航仪式&…

Tessy学习系列(四):组件测试——官方例程interior_light

一、新建工程 &#xff08;1&#xff09;新建工程 注意&#xff1a;路径不能包含空格与中文 &#xff08;2&#xff09;新建测试集 &#xff08;3&#xff09;新建组件测试模块 &#xff08;4&#xff09;设置测试模块为组件测试模块 二、导入源码 &#xff08;1&#xff09…

【ARM Cache 及 MMU 系列文章 6.4 -- Cache miss 统计详细介绍】

请阅读【ARM Cache 及 MMU/MPU 系列文章专栏导读】 及【嵌入式开发学习必备专栏】 文章目录 ARM Cache Miss 统计Cache 多层架构简介Cache 未命中的类型Cache 未命中统计Cache miss 统计代码实现Cache Miss 统计意义ARM Cache Miss 统计 在ARMv8/v9架构中,缓存未命中(Cache …

【wiki知识库】06.文档管理接口的实现--SpringBoot后端部分

目录 一、&#x1f525;今日目标 二、&#x1f388;SpringBoot部分类的添加 1.调用MybatisGenerator 2.添加DocSaveParam 3.添加DocQueryVo 三、&#x1f686;后端新增接口 3.1添加DocController 3.1.1 /all/{ebokId} 3.1.2 /doc/save 3.1.3 /doc/delete/{idStr} …

“盒装”床垫在美国全面爆发,沃尔玛电商正革新传统床上用品行业

​​“盒装”床垫在美国市场的全面普及以及沃尔玛电商对传统床上用品行业的创新&#xff0c;正引领着家居市场的变革潮流。这两个趋势不仅改变了消费者的购物方式&#xff0c;也为整个行业带来了新的发展机遇。 盒装床垫的兴起为消费者带来便捷灵活的购物体验。采用先进压缩技术…

网络流常用示意图及基本概念

【网络流简介】 ● 网络流基本概念网络&#xff1a;网络是一个有向有权图&#xff0c;包含一个源点和一个汇点&#xff0c;没有反平行边。网络流&#xff1a;是定义在网络边集上的一个非负函数&#xff0c;表示边上的流量。网络最大流&#xff1a;在满足容量约束和流量守恒的前…

机器学习-支持向量机

目录 一支持向量机 1.支持向量机SVM 2构建svm目标函数 3.拉格朗日乘法&#xff0c;kkt条件 拉格朗日乘法&#xff1a; kkt条件 对偶问题 4.最小化SVM目标函数 kkt条件&#xff1a; 对偶转换&#xff1a; 5软间隔及优化 优化svm目标函数 构造拉格朗日函数 对偶转换关系…