面试题--01

GC机制

GC机制又称垃圾回收机制,是Python解释器自带一种机,专门用来回收不可用的变量值所占用的内存空间

有三个核心,分别是引用计数、标记清除和分代回收

        引用计数:一个变量值如果有一个变量名指向,那么在它身上就计数1,引用计数为0的数据都为垃圾数据,我们也会把引用计数为0的数据清除点;

        标记清除:当我们的内存空间即将要沾满的时候,这个时候会暂停所有程序的执行,开始扫描内存空间中得数据,把垃圾数据进行打标签,然后统一进行垃圾数据的清除。

        分代回收扫描是否回收,多次都未回收将不再扫描,提高效率,即对垃圾数据的监管频率逐渐下降。

数据库三大范式

数据库的三大范式是关系型数据库的表设计规范

在设计表时,要遵循这三大范式,有第一范式1NF,第二范式2NF和第三范式3NF

        第一范式(1NF)是指数据库表每列的值具有原子性,不可再分割, 每个字段的值都只能是单一值, 比如hobby字段 [抽烟 烫头]

        第二范式(2NF)是在第一范式(1NF)的基础上建立起来得,主键以外的列必须完全依赖于主键;比如学生id和课程id联合主键,非主键列【分数】完全依赖于主键【学生id和课程id】,学生id和课程id两个值才能决定score的值

        第三范式(3NF)是在第二范式的基础上建立起来的,指非主键列之间不能传递依赖,可以比喻成一对多的表,比如上海表里有个个区,而通过区表又可以有个个路

mysql有哪些索引类型

索引是存储引擎用于快速找到记录的一种数据结构,这也是索引最基本的功能

一共有七种索引类型,首先是主键索引、普通索引、唯一索引、全文索引、前缀索引、组合索引和空间索引

        主键索引又叫聚簇索引,mysql是一定会有主键索引,如果按主键搜索,速度是最快的;普通索引通过变化大字段查询,会提高速度,如果字段变化小(性别,年龄),不要建立普通索引;唯一索引通常使用 UNIQUE 关键字,不是为了提高访问速度,而是为了避免数据出现重复;组合索引又称联合索引,多个字段一起查询以提高速度;全文索引主要用来查找文本中的关键字。

事务的特性和隔离级别

事务有四大特性,原子性、隔离性、一致性和持久性

        原子性是事务包含的所有数据库操作要么全部成功,要不全部失败回滚

        隔离性是指事务之间相互隔离,不受影响

        一致性是指事务执行前后的状态要一致,可理解为数据一致性

        持久性是指事务完成之后对数据的修改是永恒的

隔离级别有四种:读未提交、读已提交、可重复读取和串行化

        读未提交是指一个事物读到了另一个事务未提交的数据,存在脏读,不可重复读,幻读的问题;

        读已提交是指设置了这个级别一个事物读不到另一个事务未提交的数据,解决了脏读,但是存在不可重复读和幻读;

        可重复读取是指事务开启即在开始读取数据时,不再允许修改操作,这样就可以在同一个事务内两次读到的数据是一样的,解决了脏读,不可重复读问题,存在幻读问题;

        串行化是指事务只能一个接着一个地执行,但不能并发执行,解决了脏读,不可重复读和幻读问题,牺牲了效率

脏读、不可重复读和幻读

事务隔离级别不同,而并发开启事务操作数据,就会出现不同的问题

        脏读指的是读当前事务到了其他事务未提交的数据,未提交意味着这些数据是不存在的

        不可重复读指的是在一个事务内,最开始读到的数据和事务结束前的任意时刻读到的同一批数据出现不一致的情况,导致的原因是事务 A多次读取同一数据,但事务B在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果不一致;

        幻读是指select 某记录是否存在,不存在,准备插入此记录,但执行 insert 时发现此记录已存在,无法插入

qps、tps、并发量、pv和uv

QPS:指每秒查询率,一台服务器每秒能够响应的查询次数,每秒的响应请求数;

TPS:每秒处理的事务数,包括一条消息入和一条消息出,加上一次用户数据库访问;

并发量:指系统同时处理的请求或事务数,可以直接理解为:系统同时处理的请求数量;

PV:指页面访问量,即页面浏览量或点击量,用户每次刷新即被计算一次

                可以统计服务一天的访问日志得到

UV:指独立访客,统计1天内访问某站点的用户数

DAU:指日活跃用户数量,常用于反映网站、app、网游的运营情况;

MAU:指月活跃用户数量

接口幂等性问题

无论调用多少次,产生的效果是一样的,比如用户多次点击按钮 只执行了一次

解决方案有:

        1、通过token机制,下单接口的前一个接口,只要一访问,后端生成一个随机字符串,存到redis中,把随机字符串返回给前端,然后调用业务接口请求时,把随机字符串携带过去,一般放在请求头部,务器判断随机字符串是否存在redis中,存在表示第一次请求,然后redis删除随机字符串,继续执行业务,如果判断随机字符串不存在redis中,就表示是重复操作,直接返回重复标记给client,这样就保证了业务代码,不被重复执行

        2、使用唯一主键

        3、使用唯一id

        4、前端设置按钮只能点击一次

        5、悲观锁和乐观锁

乐观锁和悲观锁

        乐观锁:假设最好的情况,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,乐观锁其实不是锁,是数据库的字段,每操作一次就+1 这样后续的操作就对不上,适用于写比较少的情况下(多读场景)

        悲观锁才是真的锁住了,只能有一个拿一把钥匙,是比较悲观的锁,总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁

三次握手四次挥手

        三次握手是指建立一个 TCP 连接时,需要客户端和服务器总共发送3个包,客户端发送一个包给服务端,服务端表示收到并再发送一个包给客户端,客户端然后发送应答表示收到

        四次挥手则是客户端发送包到服务端,服务端给客户端发送一条请求表示收到包了,然后服务端又再次给客户端发送关闭包,表示考虑好了,最后客户端表示收到;

        由于四次挥手是因为如果服务器接收到客户端并且发送关闭的请求后,回容易造成数据的丢失,因此中间的这一段时间,等待服务器把剩余的数据发送完是很有必要的

django中实现事务

        1、全局开启事务,在setting中设置,可以局部禁用;

        2、Django提供了一个atomic装饰器,它可以轻松地将一个视图函数或方法包裹在事务中。这个装饰器确保在其内部的代码块中执行的数据库操作要么全部成功,要么全部失败            3、还可以使用atomic上下文管理器来定义事务块或objects.atomic方法

鸭子类型

鸭子类型是python语言面向对象中的一个概念,面向对象有三大特性:继承、封装和多态

        当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。”

        鸭子类型在程序设计中强调的是行为而不是类型,只关心对象是否具备预期的方法或属性,如果对象的行为符合预期,那么就可以将其当作特定类型的对象来使用。有助于增强代码的灵活性和可维护性。

浏览器输入地址,看到页面信息,经历的过程

        1、输入网址:你在浏览器的地址栏中输入你想要访问的网址。

        2、浏览器解析URL:浏览器首先会解析你输入的URL,检查其是否合法。

        3、查找缓存:浏览器会检查其自身的缓存以查看是否之前已经访问过该网页,如果缓存中有该网页的内容,那么浏览器会直接显示缓存的内容,而不会再去服务器上请求数据。

        4、如果缓存中没有找到相应的内容,浏览器会进行域名系统解析,以获取该网址对应的IP地址

        5、与服务器建立TCP连接。这个过程需要进行TCP三次握手,以确保连接的可靠性。

        6、TCP连接建立成功后,浏览器会向服务器发送HTTP请求,请求获取网页的内容。

        7、服务器收到请求后,会处理该请求,并将网页的内容作为HTTP响应返回给浏览器。

        8、浏览器收到服务器的响应后,会解析响应的内容,并将网页的内容显示出来。这包括解析HTML、CSS、JavaScript等,以及下载和显示嵌入在HTML中的资源

        9、关闭TCP连接:当网页内容全部加载完成后,浏览器会关闭与服务器的TCP连接。

今日思维导图:

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

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

相关文章

DMA 链表模式(LLI)深度解析

在进行一次 DMA 读或者写的时候,可以配置多个链表,从而当一个链表的数据传输完成时,会跳到下一个链表的起始地址,并继续传输数据,直到链表的下一个地址为 0。如果 DMA 使能了完成中断,则当 DMA 发送或者接收…

c++ ponder库实现机制的理解

Ponder是一个用于C的反射库,它允许在运行时查询和操作类型信息。反射通常是动态语言的特性,但Ponder通过提供一套API,使得在静态类型语言C中也能实现类似的功能。这对于需要动态处理对象,如序列化/反序列化、脚本绑定等场景非常有…

微信小程序--注册时获取微信头像

参考官方文档&#xff1a;点击跳转 具体实现&#xff1a; wxml&#xff1a; <button class"avatarBtn" open-type"chooseAvatar" chooseavatar"onChooseAvatar"><image class"avatar" :src"avatarUrl"></…

【语音识别】- 几个主流模型 2024年2月整理

文章目录 1. Wav2Vec 2.02. Whisper3. WeNet4. Paraformer5. Flan-T51. Wav2Vec 2.0 由Facebook AI Research(FAIR)于2020年提出的在语音方向里具有一定影响力的预训练模型。 论文地址:https://arxiv.org/pdf/2006.11477.pdf 项目地址:https://github.com/pytorch/fairse…

程序计数器介绍

程序计数器是计算机处理器中的寄存器&#xff0c;它包含当前正在执行的指令的地址(位置)。当每个指令被获取&#xff0c;程序计数器的存储地址加一。在每个指令被获取之后&#xff0c;程序计数器指向顺序中的下一个指令。当计算机重启或复位时&#xff0c;程序计数器通常恢复到…

java微服务技术选型,Java学习的三个终极问题及学习路线规划

前言 在网络技术中基于浏览器的B/S结构无论在PC端还是手机端都充当着至关重要的角色。 PC端自不必说&#xff0c;手机中很多应用虽然是以APP的形式存在&#xff0c;但它采用的还是B/S结构。如今日头条、微信的朋友圈等&#xff0c;这些应用在内部封装了浏览器&#xff0c;后端…

【项目实战】高并发内存池(仿tcmalloc)

【项目实战】高并发内存池&#xff08;仿tcmalloc&#xff09; 作者&#xff1a;爱写代码的刚子 时间&#xff1a;2024.2.12 前言&#xff1a; 当前项目是实现一个高并发的内存池&#xff0c;它的原型是google的一个开源项目tcmalloc&#xff0c;tcmalloc全称 Thread-Caching M…

MySQL 8.0 架构 之 DDL日志(元数据日志)(DDL log)

文章目录 MySQL 8.0 架构 之 DDL日志&#xff08;元数据日志&#xff09;&#xff08;DDL log&#xff09;MySQLDDL日志&#xff08;元数据日志&#xff09;&#xff08;DDL log&#xff09;参考 【声明】文章仅供学习交流&#xff0c;观点代表个人&#xff0c;与任何公司无关。…

【JavaScript】将数组中的数字按照从小到大排序(sort)

如果在 sort()方法中带参&#xff0c;我们就可以自定义排序规则。具体做法如下&#xff1a; 我们可以在 sort()的参数中添加一个回调函数&#xff0c;来指定排序规则。回调函数中需要定义两个形参&#xff0c;JS将会分别使用数组中的元素作为实参去调用回调函数。 JS根据回调…

宠物的异味,用空气净化器可以解决吗?宠物空气净化器品牌推荐

养猫的人都了解&#xff0c;一个养猫家庭的环境卫生和气味问题与主人的关系密切相关。主人的勤劳程度和对卫生的重视程度直接影响着家中的气味。尽管主人通常会经常更换猫砂&#xff0c;但有时候仍然会存在一些难闻的气味。事实上&#xff0c;忙碌的猫主人可能会因为没有足够的…

MySQL Strict Mode is not set for database connection ‘default‘

在使用 DJango 框架执行迁移文件的命令时&#xff0c;可以看到出现如下警告&#xff1a; (ll_env) D:\workspace\workspace-mengll\learning-log>python manage.py migrate System check identified some issues: WARNINGS: ?: (mysql.W002) MySQL Strict Mode is not set …

TS常见问题

文章目录 1. 什么是 TypeScript&#xff1f;它与 JavaScript 有什么区别&#xff1f;2. TS 泛型、接口、泛型工具record、Pick、Omit3. TS unknow和any的区别&#xff0c;如何告诉编译器unknow一定是某个类型&#xff1f;4. 元组与常规数组的区别5. 什么是泛型,有什么作用&…

解决移除数字问题的两种方法:暴力法和使用栈

题目 给你一个以字符串表示的非负整数 num 和一个整数 k &#xff0c;移除这个数中的 k 位数字&#xff0c;使得剩下的数字最小。请你以字符串形式返回这个最小的数字 示例 1 &#xff1a; 输入&#xff1a;num "1432219", k 3 输出&#xff1a;"1219"…

【yolov8自带脚本划分数据集】yolov8自己数据集训练

1. 命令 ultralytics.data.utils.autosplit(pathDATASETS_DIR / coco8/images, weights(0.9, 0.1, 0.0), annotated_onlyFalse)from ultralytics.data.utils import autosplitautosplit( path"path/to/images",weights(0.9, 0.1, 0.0), # (train, validation, test)…

分组交换网的性能指标

一、概述 在理想情况下&#xff0c;我们希望因特网能够在任意两个端系统之间随心所欲地移动数据而没有任何数据的丢失。然而&#xff0c;这是一个极高的目标&#xff0c;实践中难以达到。与之相反&#xff0c;计算机网络必定要限制在端到端之间的吞吐量&#xff08;每秒能够传送…

利用Python爬取高德地图全国地铁站点信息

利用Python中的requests库进行地铁站点信息的获取,同时将数据保存在本机excel中 # 首先引入所需要的包 import requests from bs4 import BeautifulSoup import pandas as pd import json# 发送 GET 请求获取网页内容 url http://map.amap.com/subway/index.html response r…

腾讯云服务器99元一年是真的吗?又降价,现在只要61元

腾讯云服务器99元一年是真的吗&#xff1f;又降价&#xff0c;现在只要61元。腾讯云服务器多少钱一年&#xff1f;61元一年起&#xff0c;2核2G3M配置&#xff0c;腾讯云2核4G5M轻量应用服务器165元一年、756元3年&#xff0c;4核16G12M服务器32元1个月、312元一年&#xff0c;…

LiveGBS流媒体平台GB/T28181功能-集中录像存储前端设备录像回看解决方案设备录像|云端录像|实时录像说明

LiveGBS集中录像存储前端设备录像回看解决方案设备录像|云端录像|实时录像说明 1、平台概述2、视频录像2.1、设备录像2.1.1、存储位置2.1.1.1、下级硬件设备2.1.1.2、下级国标平台 2.1.2、页面操作2.1.2.1、国标设备2.1.2.1.1、查看通道2.1.2.1.1.1、设备录像 2.1.2.1.2、配置中…

分布式事务(SeataClient)

问题场景 元数据 库存 100订单记录为空下单操作 @AutowiredRestTemplate restTemplate;/*** 下单** @return*/@Transactional // 开启事务 异常后触发数据库回滚操作@Overridepublic Order create(Order order) {// 插入订单orderMapper.insert(order);// 扣减库存 MultiValu…

基于python的爬虫原理和管理系统实现(代码下载)

Python实现爬虫的原理如下&#xff1a; 发送请求&#xff1a;使用Python中的库&#xff0c;如Requests或urllib&#xff0c;向目标网站发送HTTP请求&#xff0c;获取网页的内容。 解析网页&#xff1a;使用Python中的库&#xff0c;如BeautifulSoup或lxml&#xff0c;对获取的…