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

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效果页面)

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

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

相关文章

1997-2022年各省农村居民人均可支配收入数据(无缺失)

1997-2022年各省农村居民人均可支配收入数据&#xff08;无缺失&#xff09; 1、时间&#xff1a;1997-2022年 2、来源&#xff1a;国家统计局、统计年鉴 3、范围&#xff1a;31省 4、指标&#xff1a;农村居民人均可支配收入 5、缺失情况&#xff1a;无缺失 6、指标解释…

数据结构---力扣225.用队列实现栈(C

1.链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09;【点击即可跳转】 思路&#xff1a; 栈 是 后进先出 队列 是 先进先出 &#xff08;始终保持一个队列为空的思路&#xff09; 入数据&#xff1a; 往 不为空的队列 中入 出数据&#xff1a; 把不为空的队列数…

Java使用Hutool工具类轻松生成验证码

一、效果展示 二、Hutool工具类实现验证码生成 2.1 引入依赖 <!--hutool工具包--> <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.7.15</version> </dependency2.2 简单实现方…

如何实现单例模式及不同实现方法分析-设计模式

这是 一道面试常考题&#xff1a;&#xff08;经常会在面试中让手写一下&#xff09; 什么是单例模式 【问什么是单例模式时&#xff0c;不要答非所问&#xff0c;给出单例模式有两种类型之类的回答&#xff0c;要围绕单例模式的定义去展开。】 单例模式是指在内存中只会创建…

C文件操作

目录 1. 为什么要使用文件 2. 什么是文件 2.1 程序文件 2.2 数据文件 2.3 文件名 3. 二进制文件和文本文件 ​编辑4.文件的打开和关闭 4.1 流和标准流 4.1.1 流 4.1.2 标准流 4.2 文件指针 4.3 文件的打开和关闭 5. 文件的顺序读写 5.1 顺序读写函数介绍 5.1.1 …

Python pandas openpyxl excel合并单元格,设置边框,背景色

Python pandas openpyxl excel合并单元格&#xff0c;设置边框&#xff0c;背景色 1. 效果图2. 源码参考 当涉及到比较复杂的设置背景色时&#xff0c;需要根据一些结果去对另一些单元格进行设置时&#xff0c;在行列上只能设置一种颜色&#xff0c;否则会被覆盖&#xff1b; 比…

Query传递的参数需不需要加注解?加什么?为什么有的时候要加有的时候不加?

Query传递过来的参数可以加&#xff0c;也可以不加注解。如果要加&#xff0c;是在传递的参数名和后端的变量名不一致的情况下&#xff0c;要加RequestParam如果传递过来的参数名和后端的变量名一致&#xff0c;则可以不加RequestParam。 传递过来的数据如果是通过 Query 方式…

Linux ldd和ldconfig

ldconfig ldconfig 查看默认库路径和ld.so.conf包含的库路径&#xff0c;来建立运行时动态装载的库查找路径。 ldconfig命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),…

代码随想录算法训练营第五十五 | ● 583. 两个字符串的删除操作 ● 72. 编辑距离

583. 两个字符串的删除操作 https://programmercarl.com/0583.%E4%B8%A4%E4%B8%AA%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E5%88%A0%E9%99%A4%E6%93%8D%E4%BD%9C.html class Solution { public:int minDistance(string word1, string word2) {vector<vector<int>> d…

48.HTTP 规范规定,跟随重定向时必须使用 GET 方法

起因&#xff1a; 今天在练习一个Django功能时&#xff0c;把form的method设置为POST&#xff0c;但是实际提交时&#xff0c;一直是GET方法。最后&#xff0c;从下面这张图发现了端倪&#xff1a; 第一次是method是POST方法&#xff0c;被重定向时&#xff0c;变成了GET。 继…

2-1基于matlab的拉普拉斯金字塔图像融合算法

基于matlab的拉普拉斯金字塔图像融合算法&#xff0c;可以使部分图像模糊的图片清楚&#xff0c;也可以使图像增强。程序已调通&#xff0c;可直接运行。 2-1 图像融合 拉普拉斯金字塔图像融合 - 小红书 (xiaohongshu.com)

java程序在运行过程各个内部结构的作用

一&#xff1a;内部结构 一个进程对应一个jvm实例&#xff0c;一个运行时数据区&#xff0c;又包含多个线程&#xff0c;这些线程共享了方法区和堆&#xff0c;每个线程包含了程序计数器、本地方法栈和虚拟机栈接下来我们通过一个示意图介绍一下这个空间。 如图所示,当一个hell…

BC C language

题目汇总 No.1 打印有规律的字符(牛牛的字符菱形) 代码展示 #include<stdio.h> int main() {char ch0;scanf("%c",&ch);for(int i0;i<5;i){for(int j0;j<5;j){if((i0||i4)&&j2)printf("%c", ch);else if ((i 1||i3) &&…

发电机纵联差动保护的Simulink仿真

A相电压EA其电压有效值为6060V(对应额定电压为10.5kV的发电机)&#xff0c;相位设置为0。&#xff0c;EB的相位设置为-120。、EC的相位设置为120。&#xff0c;其他设置与EA相同。在图1中,是把A相和C相的电动势分成了两部分ɑ0.9,以仿真发电机内部A、C相故障的情况。 图1 发电机…

任务倒计时App

设计背景 在某一阶段可能需要给自己设置长期任务&#xff0c;比如找工作、考研等&#xff0c;需要一个单纯的任务计时工具&#xff0c;设置完任务的目标时间后&#xff0c;每次打开App时都能直接看到最新的剩余时间 设计步骤 1. 写java源码 由于需要界面显示&#xff0c;需…

R语言 | 使用最简单方法添加显著性ggpubr包

本期教程原文&#xff1a;使用最简单方法添加显著性ggsignif包 本期教程 获得本期教程代码和数据&#xff0c;在后台回复关键词&#xff1a;20240605 小杜的生信笔记&#xff0c;自2021年11月开始做的知识分享&#xff0c;主要内容是R语言绘图教程、转录组上游分析、转录组下游…

五年React手,竟被一个用Ruoyi的Java佬给秒了,这不完了么

被秒了 一个Java摸鱼手&#xff0c;随便用用若依就搞出来一个交互良好&#xff0c;功能强大的管理后台&#xff0c;这让我这个一直用React写管理后台的前端工&#xff0c;很尴尬啊&#xff0c;一下就变小丑了&#xff0c;不行我得抗一波线&#xff0c;用React好好写一个既能对…

如何愉快地实施数仓模型,对比下厨做饭

一般我们建设数仓&#xff0c;有一个链路&#xff1a; 比如这样的 数据从原始层到DWD、DWS层、然后ADS层。 嘿&#xff0c;未来的大数据专家们&#xff01;当我们开始实施数据模型时&#xff0c;不妨参考《大数据之路》这本宝藏书。 让我们一起简化流程&#xff0c;注重细节…

万界星空科技定制化MES系统,实现数字化生产

一、MES生产管理系统强调三个方面&#xff1a; 1、MES是对整个车间制造过程的优化&#xff0c;而不是单一的解决某个生产瓶颈。 2、MES必须提供实时收集生产过程中数据的功能&#xff0c;并作出相应的分析和处理。 3、MES需要与计划层和控制层进行信息交互&#xff0c;通过企业…

项目-基于LangChain的ChatPDF系统

问答系统需求文档 一、项目概述 本项目旨在开发一个能够上传 PDF 文件&#xff0c;并基于 PDF 内容进行问答互动的系统。用户可以上传 PDF 文件&#xff0c;系统将解析 PDF 内容&#xff0c;并允许用户通过对话框进行问答互动&#xff0c;获取有关 PDF 文件内容的信息。 二、…