1、简述打开一个网页的整个请求过程;
全流程可拆分为4个主要步骤:
将域名解析为IP地址
与目标主机建立TCP连接 (三次握手)
发送与接受数据
浏览器拿到数据,渲染页面。
2、简述三次握手和四次挥手;
1.三次握手(Three-way Handshake)其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。
进行三次握手的主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的可靠性,数据传递做准备。
用日常生活场景来比喻三次握手 (three-way handshake)
客户端->服务器: "我要和你通信"
服务器->客户端: "好的, 现在可以吗?"
客户端->服务器: "没问题, 开始吧"
————————————————————分割线————————————————————
2.四次挥手:
与目标主机断开TCP连接 (四次挥手)
用日常生活场景来比喻四次挥手
客户端->服务器: "我不聊了"
服务器->客户端: "我也不聊了"
服务器->客户端: "拜拜"
客户端->服务器: "拜拜"
3、简单说一下get和post请求的区别;
- 数据安全差别:get请求参数直接写在url里,post请求参数不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中,数据更为安全;
- 缓存机制不同:GET方法具有缓存机制。如果浏览器请求的资源已经在本地缓存中存在,浏览器将使用缓存而不是向服务器发送请求。这可以提高Web应用程序的性能。但是,如果应用程序的数据频繁变化,使用GET方法可能会导致浏览器缓存过期,从而影响性能。 POST方法没有缓存机制。每次使用POST方法发送请求时,浏览器都会向Web服务器发送请求,Web服务器也会重新处理请求。因此,POST方法的性能相对于GET方法较低。
- get请求有url长度限制,请求发送的数据有限,post请求发送的数据更大;
- post请求能发送更多的数据类型,get请求只能发送ASCII字符;
- 传参方式不同(get请求参数通过url传递,post请求放在request body中传递)
- get请求产生一个TCP数据包;post请求产生两个TCP数据包
- 幂等性不同,在计算机科学中,幂等性是指对同一操作执行多次所产生的影响是相同的。在HTTP协议中,GET方法是幂等的,也就是说对同一URL执行多次GET请求,服务器的响应是相同的。因为GET方法只用于获取资源,不对服务器端的资源做任何改变。 而POST方法不是幂等的,也就是说对同一URL执行多次POST请求,服务器的响应可能会不同。因为POST方法会对服务器端的资源进行改变,如果多次执行相同的POST请求,可能会导致服务器的状态发生变化。
4、简述一下数据库索引和事务;
事务
一、概念
事务是逻辑上的一组数据库操作,要么都执行,要么都不执行。
二、事务的特性
① 原子性:事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用;例如转账的这两个关键操作(将张三的余额减少200元,将李四的余额增加200元)要么全部完成,要么全部失败。
② 一致性: 确保从一个正确的状态转换到另外一个正确的状态,这就是一致性。例如转账业务中,将张三的余额减少200元,中间发生断电情况,李四的余额没有增加200元,这个就是不正确的状态,违反一致性。又比如表更新事务,一部分数据更新了,但一部分数据没有更新,这也是违反一致性的;
③ 隔离性:并发访问数据库时,一个用户的事务不被其他事务所干扰,各并发事务之间数据库是独立的;
④ 持久性:一个事务被提交之后,对数据库中数据的改变是持久的,即使数据库发生故障也不应该对其有任何影响。
————————————————
版权声明:本文为CSDN博主「厄尔尼诺的夏天」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_53077601/article/details/126852569
索引
索引的创建会占用一定的物理空间,索引值是存放在磁盘空间中的,
但是为了减少IO访问次数,提高程序的效率,在访问数据的时候他会先从磁盘空间中预读一定长度的索引数据放在缓存中。
一、概念:
在MySQL中,索引(index)也叫做键(key)
数据库的索引就是为了提高数据的查询速率的方法。数据库的索引类似于书籍的目录。在书籍中,目录允许用户不必翻阅整本书就能迅速找到所需要的信息。在数据库中同理,索引也允许数据库程序迅速的找到表中的数据,而不必扫描整个数据库。
二、对应操作
查看索引:
show index from 表名;
创建索引:
create index 索引名 on 表名(列名);
create index 索引名 on 表名(列名1,列名2...);
示例:
5、简述一下SQL语句左连接/右连接的写法和区别;
一、概念
首先还是介绍一下这三个的定义
1.Left join:即左连接,是以左表为基础,根据ON后给出的两表的条件将两表连接起来。结果会将左表所有的查询信息列出,而右表只列出ON后条件与左表满足的部分。左连接全称为左外连接,是外连接的一种。
2.Right join:即右连接,是以右表为基础,根据ON后给出的两表的条件将两表连接起来。结果会将右表所有的查询信息列出,而左表只列出ON后条件与右表满足的部分。右连接全称为右外连接,是外连接的一种。
3.Inner join:即内连接,同时将两表作为参考对象,根据ON后给出的两表的条件将两表连接起来。结果则是两表同时满足ON后的条件的部分才会列出。
二 、举例
表table_a
表table_b
------------------------------------------------------分割线-----------------------------------------------------------------
Left join:左连接
select *from table_a left join table_b on table_a.id=table_b.id;
结果:
Right join:右连接
SQL语句:
select * from table_a right join table_b on table_a.id=table_b.id;
结果:
Inner join:内连接
SQL语句:
select * from table_a inner join table_b on table_a.id=table_b.id;
结果:
------【进阶拓展】-------
6、简单谈谈python的垃圾回收机制;
得益于Python的自动垃圾回收机制,在Python中创建对象时无须手动释放。这对开发者非常友好,让开发者无须关注低层内存管理。但如果对其垃圾回收机制不了解,很多时候写出的Python代码会非常低效。
参考链接:
https://www.cnblogs.com/chf333/p/17109924.html