网络数据库后端相关面试题(其三)
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效果页面)
相关文章:
网络数据库后端相关面试题(其三)
18, 传输控制协议tcp和用户数据报协议udp有哪些区别 第一,tcp是面向字节流的,基本的传输单位是tcp报文段;而udp是面向报文的,基本传输单位是用户数据报。 第二, tcp注重安全可靠性,连接双方在…...
Hadoop之HDFS分布式文件系统
HDFS简介 Hadoop Distributed File System (HDFS): HDFS 是 Hadoop 的分布式文件系统,它设计用于存储大量数据,并提供 高吞吐率的数据访问,通过将数据分块存储在多个节点上,实现数据的冗余存储和容错。 HDFS重要概念 HDFS 通过统一的命名空间目录树来定位文件; 另外,它…...
插入删除单链表指定结点-偷天换日法
王道说下面的代码有BUG,比如当删除的结点p在最后一个元素时,p->nextNULL; So *q NULL; q->data就是错误的,我认为加个判断就行 加个判断即可 /*看着是删除q了,从结果上看就是把p删除了 偷天换日法*/ bool DeleteNode(LNod…...
MybatisPlus代码生成器使用案例
针对数据库中的实体类表,自动生成相关的pojo类,mapper,service等 1. Get-Started 基于mybatisplus,idea下载mybatisplus插件 sql文件 /*!40101 SET OLD_CHARACTER_SET_CLIENTCHARACTER_SET_CLIENT */; /*!40101 SET NAMES utf8 …...
数学公式编辑器(前端预研)
数学公式输入wangeditor: vue2使用wangeditor实现数学公式和富文本编辑器 mathjax文档:MathJax: 让前端支持数学公式 mathjax识别数学公式vue中使用mathjax识别latex数学公式 数学公式编辑器:(少) https://github.com…...
架构设计-如何安全地传输密码
java web 项目中经常会遇到登录或注册的场景,如果查看浏览器的 network 网络请求时,用户的密码以明文方式传输,会造成很多安全隐患,这就涉及到密码如何安全传输的问题。 数据加密的重要性不言而喻,通用的加密技术有 哈希散列、对称加密、非对称加密。 哈希散列 哈希散列是…...
【库】nprogress 顶部进度条
yarn add nprogress router文件 前置路由添加启动 后置路由添加关闭 router.beforeEach((to, from, next) > { NProgress.start() next() }) router.afterEach(() > { NProgress.done() }) App.vue 文件 引入样式 <script setup> import "nprogress/npro…...
15、架构-可靠通讯之服务安全
概述 我们已经了解了与具体架构形式无关的业界主流安全概念和技术标准(如TLS、JWT、OAuth 2等概念),在上一章节探讨了与微服务运作特点相适应的零信任安全模型。在本节中,我们将从实践和编码的角度出发,介绍在微服务时…...
web刷题记录(5)
[羊城杯 2020]easycon 进来以后就是一个默认测试页面, 在这种默认界面里,我觉得一般不会有什么注入点之类的,所以这里先选择用御剑扫扫目录看看有没有什么存在关键信息的页面 扫了一半发现,很多都是和index.php文件有关࿰…...
Redis高并发高可用
1. 复制机制 在分布式系统中,为了解决单点问题,通常会将数据复制多个副本部署到其他机器,以满足故障恢复和负载均衡等需求。Redis提供了复制功能,实现了相同数据的多个Redis副本。复制功能是高可用Redis的基础,后面的…...
【前端取不到cookie的的原因】http-only
某条cookie有http-only属性时,下面两种方法都取不到,还是改需求吧,别取了 1、 npm install js-cookie --save import Cookies from js-cookie let cookieValue Cookies.get(name)2、document.cookie...
推荐 2 个 火火火火 的开源项目
推荐两个开源项目,一个能让你的小爱音响更聪明。另外一个可以让你简单的下载互联网网站上的视频、文件、富文本内容。 01 MiGPT: 让你的小爱音响更聪明 让你的小爱音箱更聪明,提高智能家居的互动性和个性化体验的开源利器! MiGPT 将 ChatGPT …...
从0到100:找搭子小程序开发笔记(一)
背景调查 “找搭子”小程序:能够解决人们在社交、休闲和约会方面的需求,提供方便快捷的方式来找到合适的伴侣或活动伙伴。许多人在社交场合中感到焦虑或不安,因此他们更倾向于使用在线平台来认识新的朋友或搭子。有些人可能生活在一个较小或…...
迷宫最短路径求解--c++
【代码】 #include<iostream> #include<queue> #include<stack> using namespace std; #define ROW 8 #define COL 8 //测试迷宫数据 int maze[ROW][COL] {{0,0,0,1,0,0,0,0},{0,1,0,1,0,1,0,1},{0,1,0,0,0,1,0,1},{0,1,0,1,1,1,0,1},{0,1,0,1,1,0,0,0},{0…...
SpringFramework总结
一.SpringFramework介绍 (一)Spring 广义上的 Spring 泛指以 Spring Framework 为基础的 Spring 技术栈。 Spring 已经不再是一个单纯的应用框架,而是逐渐发展成为一个由多个不同子项目(模块)组成的成熟技术,例如 Spring Frame…...
品牌与产品:消费者决策的经济逻辑与品牌宣传的战略意义
在当今日益全球化的经济环境中,品牌与产品之间的关系对于企业的成功与否起着至关重要的作用。然而,在消费者做出购买决策时,他们到底是在选择产品本身,还是在选择附着在产品之上的品牌价值?同样,当客户选择…...
MFC四种方法编写多线程
本文以四个demo为例,对MFC的多线程进行学习。学习的过程中写了四个demo,将其做成笔记,发布在csdn上面。 mfc多线程demo1 volatile BOOL m_bRun; CEdit* edit; void ThreadFunc(){CTime time;CString strTime;m_bRun true;while(m_bRun){ti…...
VPN简介
一、VPN 概念定义 VPN,即虚拟专用网络(Virtual Private Network),依靠ISP(Internet Service Provider)和NSP(Network Service Provider)在公共网络中建立的虚拟专用通信网络&#x…...
【C/C++】用C语言写一个数据仓库,存储和修改数据
这个代码实现了一个简单的数据仓库,其中数据被存储在一个3x3的二维数组中。用户可以通过控制台界面与这个数据仓库进行交互,可以选择查看数据或者修改数据。 基础版源码: #include <stdio.h>#define HOUSESIZE 3 int arr[HOUSESIZE][…...
YOLO v5与YOLO v8框图比较
1. 介绍 YOLO (You Only Look Once) 是一个用于目标检测的卷积神经网络模型,以其高精度、高速度和易用性著称。YOLO v5 是目前最流行的 YOLO 版本之一,而 YOLO v8 是 YOLO 的最新版本。 2. 原理详解 YOLO 系列模型的基本原理是将目标检测任务转化为图…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...
Caliper 负载(Workload)详细解析
Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...
车载诊断架构 --- ZEVonUDS(J1979-3)简介第一篇
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…...
