08 2021 档案

http中的post请求发生了两次(多了一次options请求)的原因
摘要:http中的post请求发生了两次(多了一次options请求)的原因 两次请求一般:第一条为options请求,第二条请求才是我们预想中的请求。为什么先发起了一条options请求: options请求 options请求的官方定义:OPTIONS方法是用于请求获得由Request-URI标识的资 阅读全文
posted @ 2021-08-23 20:23 超人不会灰啊 阅读(1679) 评论(0) 推荐(0) 编辑
16、缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存击穿、缓存降级全 搞定!
摘要:缓存雪崩 缓存雪崩指的是缓存同一时间大面积的失效,所以,后面的请求都会落到数据库上,造成数据库短时间 内承受大量请求而崩掉。 解决办法 事前:尽量保证整个 Redis 集群的高可用性,发现机器宕机尽快补上,选择合适的内存淘汰策略。 事中:本地ehcache缓存 + hystrix限流&降级,避免My 阅读全文
posted @ 2021-08-16 20:40 超人不会灰啊 阅读(112) 评论(0) 推荐(0) 编辑
24、常见的数据优化方案你了解吗?
摘要:一、缓存双淘汰法 1. 先淘汰缓存 2. 再写数据库 3. 往消息总线esb发送一个淘汰消息,发送立即返回。写请求的处理时间几乎没有增加,这个方法淘汰 了缓存两次。因此被称为“缓存双淘汰法“,而在消息总线下游,有一个异步淘汰缓存的消费者,在拿 到淘汰消息在1s后淘汰缓存,这样,即使在一秒内有脏数据入 阅读全文
posted @ 2021-08-16 17:05 超人不会灰啊 阅读(453) 评论(0) 推荐(0) 编辑
23、数据为什么会出现不一致的情况?
摘要:这样的问题主要是在并发读写访问的时候,缓存和数据相互交叉执行。 一、单库情况下 同一时刻发生了并发读写请求,例如为A(写) B (读)2个请求 1. A请求发送一个写操作到服务端,第一步会淘汰cache,然后因为各种原因卡主了,不在执行后面业务 (例:大量的业务操作、调用其他服务处理消耗了1s)。 阅读全文
posted @ 2021-08-16 16:58 超人不会灰啊 阅读(363) 评论(0) 推荐(0) 编辑
22、如何保证缓存与数据库双写时的数据一致性
摘要:首先说一句,你只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数 据一致性的问题,那么你如 何解决一致性问题? 一般来说,就是如果你的系统不是严格要求缓存+数据库必须一致性的话,缓存可以稍微的跟数据库偶 尔有不一致的 情况,最好不要做这个方案,最好将读请求和写请求串行化,串 阅读全文
posted @ 2021-08-16 16:45 超人不会灰啊 阅读(83) 评论(0) 推荐(0) 编辑
21、如何解决Redis的并发竞争Key问题
摘要:所谓 Redis 的并发竞争 Key 的问题也就是多个系统同时对一个 key 进行操作,但是最后执行的顺序和我 们期望的顺序不同,这样也就导致了结果的不同! 推荐一种方案:分布式锁(zookeeper 和 Redis 都可以实现分布式锁)。(如果不存在 Redis 的并发竞争 Key 问 题,不要使 阅读全文
posted @ 2021-08-16 16:37 超人不会灰啊 阅读(218) 评论(0) 推荐(0) 编辑
20、是否使用Redis集群,集群的原理是什么
摘要:Redis Sentinel(哨兵)着眼于高可用,在master宕机时会自动将slave提升为master,继续提供服务。 Sentinel(哨兵)可以监听集群中的服务器,并在主服务器进入下线状态时,自动从服务器中选举出新的主服务器。 Redis Cluster(集群)着眼于扩展性,在单个Redis 阅读全文
posted @ 2021-08-16 16:32 超人不会灰啊 阅读(92) 评论(0) 推荐(0) 编辑
19、AOF重写了解吗?可以简单说说吗?
摘要:AOF重写可以产生一个新的AOF文件,这个新的AOF文件和原有的AOF文件所保存的数据库状态一样, 但体积更小。 AOF重写是一个有歧义的名字,该功能是通过读取数据库中的键值对来实现的,程序无须对现有AOF文 件进行任伺读 入、分析或者写入操作。 在执行 BGREWRITEAOF 命令时,Redis 阅读全文
posted @ 2021-08-16 16:28 超人不会灰啊 阅读(142) 评论(0) 推荐(0) 编辑
18、Redis持久化机制可以说一说吗?
摘要:Redis是一个支持持久化的内存数据库,通过持久化机制把内存中的数据同步到硬盘文件来保证数据持久化。当Redis重启后通过把硬盘文件重新加载到内存,就能达到恢复数据的目的。 很多时候我们需要持久化数据也就是将内存中的数据写入到硬盘里面,大部分原因是为了之后重用数据 (比如重启机 器、机器故障之后回复 阅读全文
posted @ 2021-08-16 16:25 超人不会灰啊 阅读(52) 评论(0) 推荐(0) 编辑
14、定期和惰性一定能保证删除数据吗?如果不能,Redis会有什么应对 措施?
摘要:并不能保证一定删除,Redsi有一个Redis 内存淘汰机制来确保数据一定会被删除。 首先介一下定期删除和惰性删除的工作流程: 1、定期删除,Redis默认每个100ms检查,是否有过期的key,有过期key则删除。需要说明的是,Redis不 是每个100ms将所有的key检查一次,而是随机抽取进行 阅读全文
posted @ 2021-08-16 15:53 超人不会灰啊 阅读(218) 评论(0) 推荐(0) 编辑
15、Redis对于大量的请求,是怎样处理的?
摘要:1、Redis是一个单线程程序,也就说同一时刻它只能处理一个客户端请求; 2、Redis是通过IO多路复用(select,epoll,kqueue,依据不同的平台,采取不同的实现)来处理多个客 户端请求。 阅读全文
posted @ 2021-08-16 15:53 超人不会灰啊 阅读(341) 评论(0) 推荐(0) 编辑
13、Redis设置过期时间的两种方案是什么?
摘要:Redis中有个设置时间过期的功能,即对存储在 Redis 数据库中的值可以设置一个过期时间。 作为一个缓存数据库, 这是非常实用的,比如一些 token 或者登录信息,尤其是短信验证码都是有时间 限制的,按照传统的数据库处理方式,一般都是自己判断过期,这样无疑会严重影响项目性能。 我们 set k 阅读全文
posted @ 2021-08-16 15:38 超人不会灰啊 阅读(970) 评论(0) 推荐(0) 编辑
12、了解Redis的线程模型吗?可以大致说说吗?
摘要:如果你打开看过 Redis 的源码就会发现Redis 内部使用文件事件处理器 file event handler,这个文件事件 处理器是单线程的,所以 Redis 才叫做单线程的模型。它采用 IO 多路复用机制同时监听多个 socket,根 据 socket 上的事件来选择对应的事件处理器进行处理 阅读全文
posted @ 2021-08-16 15:33 超人不会灰啊 阅读(66) 评论(0) 推荐(0) 编辑
11、单线程的Redis为什么这么快?
摘要:主要是有三个原因: 1、Redis的全部操作都是纯内存的操作; 2、Redis采用单线程,有效避免了频繁的 上下文切换; 3,采用了非阻塞I/O多路复用机制。 阅读全文
posted @ 2021-08-16 15:18 超人不会灰啊 阅读(40) 评论(0) 推荐(0) 编辑
9、缓存中常说的热点数据和冷数据是什么?
摘要:其实就是名字上的意思,热数据就是访问次数较多的数据,冷数据就是访问很少或者从不访问的数据。 需要注意的是只有热点数据,缓存才有价值对于冷数据而言,大部分数据可能还没有再次访问到就已经被挤出内存,不仅占用内存,而且价值不大。 数据更新前至少读取两次,缓存才有意义。这个是最基本的策略,如果缓存还没有起作 阅读全文
posted @ 2021-08-16 15:15 超人不会灰啊 阅读(1163) 评论(0) 推荐(1) 编辑
10、Redis 为什么是单线程的而不采用多线程方案?
摘要:这主要是基于一种客观原因来考虑的。因为Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis的瓶 颈最有可能是机器内存的大小或者网络带宽。既然单线程容易实现,而且CPU不会成为瓶颈,那就顺理 成章地采用单线程的方案了(毕竟采用多线程会有很多麻烦!) 阅读全文
posted @ 2021-08-16 15:15 超人不会灰啊 阅读(98) 评论(0) 推荐(0) 编辑
8、Redis比Memcached的优势在哪里?
摘要:1、Memcached所有的值均是简单字符串,Redis作为其替代者,支持更为丰富的数据类型 2、Redis 的速度比 Memcached 快很多 3、Redis可以做到持久化数据 阅读全文
posted @ 2021-08-16 15:13 超人不会灰啊 阅读(49) 评论(0) 推荐(0) 编辑
7、Memcached与Redis的区别都有哪些?
摘要:1、存储方式 Memecache把数据全部存在内存之中,断电后会挂掉,没有持久化功能,数据不能超过内存大小。 Redis有部份存在硬盘上,这样能保证数据的持久性。 2、数据支持类型 Memcache对数据类型支持相对简单,只有String这一种类型 Redis有复杂的数据类型。Redis不仅仅支持简 阅读全文
posted @ 2021-08-16 15:12 超人不会灰啊 阅读(69) 评论(0) 推荐(0) 编辑
6、使用Redis的好处有哪些?
摘要:1 、 访 问 速 度 快 , 因 为 数 据 存 在 内 存 中 , 类 似 于 Java 中 的 HashMap 或 者 C++ 中 的 哈 希 表 ( 如 unordered_map/unordered_set),这两者的优势就是查找和操作的时间复杂度都是O(1) 2、数据类型丰富,支持Str 阅读全文
posted @ 2021-08-16 15:05 超人不会灰啊 阅读(1134) 评论(0) 推荐(0) 编辑
5、C++中的Map也是一种缓存型数据结构,为什么不用Map,而选择 Redis做缓存?
摘要:严格意义上来说缓存分为本地缓存和分布式缓存。 那以 C++ 语言为例,我们可以使用 STL 下自带的容器 map 来实现缓存,但只能实现本地缓存,它最主 要的特点是轻量以及快速,但是其生命周期随着程序的销毁而结束,并且在多实例的情况下,每个实例 都需要各自保存一份缓存,缓存不具有一致性。 使用 Re 阅读全文
posted @ 2021-08-16 14:55 超人不会灰啊 阅读(347) 评论(0) 推荐(0) 编辑
4、有MySQL不就够用了吗?为什么要用Redis这种新的数据库?
摘要:主要是因为 Redis 具备高性能和高并发两种特性。 高性能:假如用户第一次访问数据库中的某些数据。这个过程会比较慢,因为是从硬盘上读取的。将 该用户访问的数据存在缓存中,这样下一次再访问这些数据的时候就可以直接从缓存中获取了。操作 缓存就是直接操作内存,所以速度相当快。如果数据库中的对应数据改变的 阅读全文
posted @ 2021-08-16 14:54 超人不会灰啊 阅读(385) 评论(0) 推荐(0) 编辑
3、Redis常见数据结构以及使用场景分别是什么?
摘要:String String数据结构是简单的key-value类型,value其实不仅可以是String,也可以是数字。 常规key-value缓存 应用; 常规计数:微博数,粉丝数等。 Hash Hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储 阅读全文
posted @ 2021-08-16 14:49 超人不会灰啊 阅读(82) 评论(0) 推荐(0) 编辑
2、Redis的五种数据结构整理
摘要:简单动态字符串(Simple Dynamic String,SDS) Redis没有直接使用C语言传统的字符串,而是自己构建了一种名为简单动态字符串(Simple dynamic string,SDS)的抽象类型,并将SDS用作Redis的默认字符串表示。 其实SDS等同于C语言中的char * , 阅读全文
posted @ 2021-08-16 14:23 超人不会灰啊 阅读(62) 评论(0) 推荐(0) 编辑
1、听说过Redis吗?它是什么?
摘要:Redis是一个数据库,不过与传统数据库不同的是Redis的数据库是存在内存中,所以读写速度非常快, 因此 Redis被广泛应用于缓存方向。 除此之外,Redis也经常用来做分布式锁,Redis提供了多种数据类型来支持不同的业务场景。除此之 外,Redis 支持事务持久化、LUA脚本、LRU驱动事件 阅读全文
posted @ 2021-08-16 14:02 超人不会灰啊 阅读(61) 评论(0) 推荐(0) 编辑
55、数据库高并发是我们经常会遇到的,你有什么好的解决方案吗?
摘要:在web服务框架中加入缓存。在服务器与数据库层之间加入缓存层,将高频访问的数据存入缓存中, 减少数据库的读取负担。 增加数据库索引,进而提高查询速度。(不过索引太多会导致速度变慢,并且数据库的写入会导致索 引的更新,也会导致速度变慢) 主从读写分离,让主服务器负责写,从服务器负责读。 将数据库进行拆 阅读全文
posted @ 2021-08-16 14:00 超人不会灰啊 阅读(66) 评论(0) 推荐(0) 编辑
54、数据库如何保证持久性?
摘要:主要是利用Innodb的redo log。重写日志, 正如之前说的,MySQL是先把磁盘上的数据加载到内存中, 在内存中对数据进行修改,再写回到磁盘上。如果此时突然宕机,内存中的数据就会丢失。 怎么解决这 个问题? 简单啊,事务提交前直接把数据写入磁盘就行啊。 这么做有什么问题? 1.只修改一个页面 阅读全文
posted @ 2021-08-16 13:59 超人不会灰啊 阅读(355) 评论(0) 推荐(0) 编辑
53、数据库如何保证原子性?
摘要:主要是利用 Innodb 的undo log。 undo log名为回滚日志,是实现原子性的关键,当事务回滚时能够撤销 所有已经成功执行的 SQL语句,他需要记录你要回滚的相应日志信息。 例如 当你delete一条数据的时候,就需要记录这条数据的信息,回滚的时候,insert这条旧数据 当你upda 阅读全文
posted @ 2021-08-16 13:48 超人不会灰啊 阅读(390) 评论(0) 推荐(0) 编辑
52、数据库如何保证一致性?
摘要:分为两个层面来说。 从数据库层面,数据库通过原子性、隔离性、持久性来保证一致性。也就是说ACID四大特性之中, C(一致性)是目的,A(原子性)、I(隔离性)、D(持久性)是手段,是为了保证一致性,数据库提供的手 段。数据库必须要实现AID三大特性,才有可能实现一致性。例如,原子性无法保证,显然一致 阅读全文
posted @ 2021-08-16 13:47 超人不会灰啊 阅读(1124) 评论(0) 推荐(0) 编辑
51、关系型数据库的四大特性在得不到保障的情况下会怎样?
摘要:ACID,原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability) 我们以从A账户转账50元到B账户为例进行说明一下ACID这四大特性。 原子性 原子性是指一个事务是一个不可分割的工作单位,其中的操作要么都做,要么都不做。即要么转账 阅读全文
posted @ 2021-08-16 13:46 超人不会灰啊 阅读(150) 评论(0) 推荐(0) 编辑
50、既然Hash比B+树更快,为什么MySQL用B+树来存储索引呢?
摘要:MySQL中存储索引用到的数据结构是B+树,B+树的查询时间跟树的高度有关,是log(n),如果用hash存储,那么查询时间是O(1)。 采用Hash来存储确实要更快,但是采用B+树来存储索引的原因主要有以下两点: 一、从内存角度上说,数据库中的索引一般是在磁盘上,数据量大的情况可能无法一次性装入内 阅读全文
posted @ 2021-08-16 13:38 超人不会灰啊 阅读(190) 评论(0) 推荐(0) 编辑
49、为什么MySQL索引适用用B+树而不用hash表和B树?
摘要:利用Hash需要把数据全部加载到内存中,如果数据量大,是一件很消耗内存的事,而采用B+树,是 基于按照节点分段加载,由此减少内存消耗。 和业务场景有段,对于唯一查找(查找一个值),Hash确实更快,但数据库中经常查询多条数据,这 时候由于B+数据的有序性,与叶子节点又有链表相连,他的查询效率会比Ha 阅读全文
posted @ 2021-08-16 13:34 超人不会灰啊 阅读(209) 评论(0) 推荐(0) 编辑
48、为什么MySQL索引要使用B+树,而不是B树或者红黑树?
摘要:我们在MySQL中的数据一般是放在磁盘中的,读取数据的时候肯定会有访问磁盘的操作,磁盘中有两个 机械运动的部分,分别是盘片旋转和磁臂移动。盘片旋转就是我们市面上所提到的多少转每分钟,而磁 盘移动则是在盘片旋转到指定位置以后,移动磁臂后开始进行数据的读写。那么这就存在一个定位到磁 盘中的块的过程,而定 阅读全文
posted @ 2021-08-16 13:31 超人不会灰啊 阅读(165) 评论(0) 推荐(0) 编辑
47、数据库优化中有一个比较常用的手段就是把数据表进行拆分,关于拆 分数据表你了解哪些?
摘要:拆分其实又分垂直拆分和水平拆分 案例: 简单购物系统暂设涉及如下表: 1.产品表(数据量10w,稳定) 2.订单表(数据量200w,且有增长趋势) 3.用户表 (数据量100w,且有增长趋势) 以 MySQL 为例讲述下水平拆分和垂直拆分,MySQL能容忍的数量级在百万静态数据可以到千万 垂直拆分 阅读全文
posted @ 2021-08-16 13:05 超人不会灰啊 阅读(93) 评论(0) 推荐(0) 编辑
46、你知道哪些数据库结构优化的手段?
摘要:范式优化: 比如消除冗余(节省空间。。) 反范式优化:比如适当加冗余等(减少join) 限定数据的范围: 务必禁止不带任何限制数据范围条件的查询语句。比如:我们当用户在查询订单 历史的时候,我们可以控制在一个月的范围内。 读/写分离: 经典的数据库拆分方案,主库负责写,从库负责读; 拆分表:分区将数 阅读全文
posted @ 2021-08-16 00:19 超人不会灰啊 阅读(72) 评论(0) 推荐(0) 编辑
45、SQL语法中内连接、自连接、外连接(左、右、全)、交叉连接的区 别分别是什么?
摘要:内连接:只有两个元素表相匹配的才能在结果集中显示。 外连接: 左外连接: 左边为驱动表,驱动表的数据全部显示,匹配表的不匹配的不会显示。 右外连接:右边为驱动表,驱动表的数据全部显示,匹配表的不匹配的不会显示。 全外连接:连接的表中不匹配的数据全部会显示出来。 交叉连接: 笛卡尔效应,显示的结果是链 阅读全文
posted @ 2021-08-16 00:16 超人不会灰啊 阅读(193) 评论(0) 推荐(0) 编辑
44、说一下数据库表锁和行锁吧
摘要:表锁 不会出现死锁,发生锁冲突几率高,并发低。 MyISAM在执行查询语句(select)前,会自动给涉及的所有表加读锁,在执行增删改操作前,会自动给涉及的表加写锁。 MySQL的表级锁有两种模式:表共享读锁和表独占写锁。 读锁会阻塞写,写锁会阻塞读和写 对MyISAM表的读操作,不会阻塞其它进程对 阅读全文
posted @ 2021-08-16 00:12 超人不会灰啊 阅读(182) 评论(0) 推荐(0) 编辑
43、增加B+树的路数可以降低树的高度,那么无限增加树的路数是不是可 以有最优的查找效率?
摘要:不可以。因为这样会形成一个有序数组,文件系统和数据库的索引都是存在硬盘上的,并且如果数据量 大的话,不一定能一次性加载到内存中。有序数组没法一次性加载进内存,这时候B+树的多路存储威力 就出来了,可以每次加载B+树的一个结点,然后一步步往下找, 阅读全文
posted @ 2021-08-15 21:58 超人不会灰啊 阅读(178) 评论(0) 推荐(0) 编辑
40、既然索引有那么多优点,为什么不对表总的每一列创建一个索引呢?
摘要:当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速 度。 索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立 簇索引,那么需要的空间就会更大。 创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加 阅读全文
posted @ 2021-08-15 21:56 超人不会灰啊 阅读(84) 评论(0) 推荐(0) 编辑
41、索引如何提高查询速度的
摘要:将无序的数据变成相对有序的数据(就像查有目的一样) 阅读全文
posted @ 2021-08-15 21:56 超人不会灰啊 阅读(90) 评论(0) 推荐(0) 编辑
39、MySQL中有哪些索引?有什么特点?
摘要: 阅读全文
posted @ 2021-08-15 21:54 超人不会灰啊 阅读(40) 评论(0) 推荐(0) 编辑
38、MySQL 索引使用的注意事项
摘要:MySQL 索引通常是被用于提高 WHERE 条件的数据行匹配时的搜索速度,在索引的使用过程中,存在 一些使用细节和注意事项。 函数,运算,否定操作符,连接条件,多个单列索引,最左前缀原则,范围查询,不会包含有NULL值 的列,like 语句不要在列上使用函数和进行运算 阅读全文
posted @ 2021-08-15 21:50 超人不会灰啊 阅读(40) 评论(0) 推荐(0) 编辑
37、MySQL中CHAR和VARCHAR的区别有哪些?
摘要:char的长度是不可变的,用空格填充到指定长度大小,而varchar的长度是可变的。 char的存取数度还是要比varchar要快得多 char的存储方式是:对英文字符(ASCII)占用1个字节,对一个汉字占用两个字节。varchar的存储方 式是:对每个英文字符占用2个字节,汉字也占用2个字节。 阅读全文
posted @ 2021-08-15 21:49 超人不会灰啊 阅读(45) 评论(0) 推荐(0) 编辑
36、创建索引时需要注意什么?
摘要:非空字段:应该指定列为NOT NULL,除非你想存储NULL。在 MySQL 中,含有空值的列很难进行查 询优化,因为它们使得索引、索引的统计信息以及比较运算更加复杂。你应该用0、一个特殊的值或者 一个空串代替空值; 取值离散大的字段:(变量各个取值之间的差异程度)的列放到联合索引的前面,可以通过c 阅读全文
posted @ 2021-08-15 21:46 超人不会灰啊 阅读(145) 评论(0) 推荐(0) 编辑
35、聚集索引与非聚集索引的区别是什么?
摘要:非聚集索引和聚集索引的区别在于, 通过聚集索引可以查到需要查找的数据, 而通过非聚集索引可以 查到记录对应的主键值 , 再使用主键的值通过聚集索引查找到需要的数据。 聚集索引和非聚集索引的根本区别是表记录的排列顺序和与索引的排列顺序是否一致。 聚集索引(Innodb)的叶节点就是数据节点,而非聚集索 阅读全文
posted @ 2021-08-15 21:42 超人不会灰啊 阅读(227) 评论(0) 推荐(0) 编辑
34、什么是非聚合索引?
摘要:如果您认识某个字,您可以快速地从自动中查到这个字。但您也可能会遇到您不认识的字,不知道它的 发音,这时候,您就不能按照刚才的方法找到您要查的字,而 需要去根据"偏旁部首"查到您要找的字, 然后根据这个字后的页码直接翻到某页来找到您要找的字。但您结合"部首目录"和"检字表"而查到的字 的排序并不是 真 阅读全文
posted @ 2021-08-15 21:38 超人不会灰啊 阅读(46) 评论(0) 推荐(0) 编辑
33、什么是聚合索引 ?
摘要:聚簇索引就是按照拼音查询,非聚簇索引就是按照偏旁等来进行查询。 其实,我们的汉语字典的正文本身就是一个聚集索引。比如,我们要查"安"字,就会很自然地翻开字典 的前几页,因为"安"的拼音是"an",而按照拼音排序 汉字的字典是以英文字母"a"开头并以"z"结尾的, 那么"安"字就自然地排在字典的前部。 阅读全文
posted @ 2021-08-15 21:37 超人不会灰啊 阅读(244) 评论(0) 推荐(0) 编辑
32、SQL中的NOW()和CURRENT_DATE()两个函数有什么区别?
摘要:NOW()命令用于显示当前年份,月份,日期,小时,分钟和秒。 CURRENT_DATE()仅显示当前年份,月份和日期。 阅读全文
posted @ 2021-08-15 21:36 超人不会灰啊 阅读(345) 评论(0) 推荐(0) 编辑
31、事务四大特性(ACID)原子性、一致性、隔离性、持久性?
摘要:第一种回答 原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某 个环节。 。事务在执行过程中发生错误,会被恢复(Rollback)到事务开始前的状态,就像这个事务从来没有执 行过一样。 一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏 阅读全文
posted @ 2021-08-15 21:35 超人不会灰啊 阅读(579) 评论(0) 推荐(0) 编辑
29、数据库三大范式精要总结
摘要:(1)简单归纳: 第一范式(1NF):字段不可分; 第二范式(2NF):有主键,非主键字段依赖主键; 第三范式(3NF):非主键字段不能相互依赖。 (2)解释: 1NF:原子性。 字段不可再分,否则就不是关系数据库;; 2NF:唯一性 。一个表只说明一个事物; 3NF:每列都与主键有直接关系,不存在 阅读全文
posted @ 2021-08-15 21:18 超人不会灰啊 阅读(48) 评论(0) 推荐(0) 编辑
28、数据库三大范式精讲
摘要:第一范式 在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数 据库就不是关系数据库。 所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同 一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。 如果出现重复的属性,就可 阅读全文
posted @ 2021-08-15 21:15 超人不会灰啊 阅读(115) 评论(0) 推荐(0) 编辑
27、数据库中的主键、超键、候选键、外键是什么?(很棒)
摘要:主键:用户选作元组标识的一个候选键程序主键 超键:在关系中能唯一标识元组的属性集称为关系模式的超键 候选键:不含有多余属性的超键称为候选键。也就是在候选键中,若再删除属性,就不是键了! 外键:如果关系模式R中属性K是其它模式的主键,那么k在模式R中称为外键。 主键为候选键的子集,候选键为超键的子集, 阅读全文
posted @ 2021-08-15 21:02 超人不会灰啊 阅读(509) 评论(0) 推荐(0) 编辑
26、覆盖索引是什么?
摘要:如果一个索=引包含(或者说覆盖)所有需要查询的字段的值,我们就称 之为“覆盖索引”。 我们知道在InnoDB存储引 擎中,如果不是主键索引,叶子节点存储的是主键+列值。最终还是要“回 表”,也就是要通过主键再查找一次,这样就 会比较慢。覆盖索引就是把要查询出的列和索引是对应的, 不做回表操作! 阅读全文
posted @ 2021-08-15 20:55 超人不会灰啊 阅读(152) 评论(0) 推荐(0) 编辑
25、什么时候需要建立数据库索引呢?
摘要:在最频繁使用的、用以缩小查询范围的字段,需要排序的字段上建立索引。 不宜: 1)对于查询中很少涉及的列或者重复值比较多的列 2)对于一些特殊的数据类型,不宜建立索引,比如文本字段(text)等。 阅读全文
posted @ 2021-08-15 20:50 超人不会灰啊 阅读(201) 评论(0) 推荐(0) 编辑
24、一道场景题:假如你所在的公司选择MySQL数据库作数据存储,一 天五万条以上的增量,预计运维三年,你有哪些优化手段?
摘要:1.设计良好的数据库结构,允许部分数据冗余,尽量避免join查询,提高效率。 2.选择合适的表字段数据类型和存储引擎,适当的添加索引。 3.MySQL库主从读写分离 4.找规律分表,减少单表中的数据量提高查询速度。 5.添加缓存机制,比如Memcached,Apc等。 6.不经常改动的页面,生成静态 阅读全文
posted @ 2021-08-15 20:49 超人不会灰啊 阅读(138) 评论(0) 推荐(0) 编辑
23、为什么说B+tree比B 树更适合实际应用中操作系统的文件索引和数据 库索引?
摘要:B+tree的磁盘读写代价更低,B+tree的查询效率更加稳定 数据库索引采用B+树而不是B树的主要原因:B+树只要遍历叶子节点就可以实现整棵树的遍历,而且在 数据库中基于范围的查询是非常频繁的,而B树只能中序遍历所有节点,效率太低。 B+树的特点 所有关键字都出现在叶子结点的链表中(稠密索引),且 阅读全文
posted @ 2021-08-15 20:47 超人不会灰啊 阅读(131) 评论(0) 推荐(0) 编辑
22、视图的作用是什么?可以更改吗?
摘要:视图是虚拟的表,与包含数据的表不一样,视图只包含使用时动态检索数据的查询;不包含任何列或数 据。使用视图可以简化复杂的 sql 操作,隐藏具体的细节,保护数据;视图创建后,可以使用与表相同 的方式利用它们。 视图不能被索引,也不能有关联的触发器或默认值,如果视图本身内有order by 则对视图再次 阅读全文
posted @ 2021-08-15 20:43 超人不会灰啊 阅读(424) 评论(0) 推荐(0) 编辑
21、MySQL中有四种索引类型,可以简单说说吗?
摘要:FULLTEXT :即为全文索引,目前只有MyISAM引擎支持。其可以在CREATE TABLE ,ALTER TABLE ,CREATE INDEX 使用,不过目前只有 CHAR、VARCHAR ,TEXT 列上可以创建全文索 引。 HASH :由于HASH的唯一(几乎100%的唯一)及类似键值对 阅读全文
posted @ 2021-08-15 20:41 超人不会灰啊 阅读(220) 评论(0) 推荐(0) 编辑
19、数据库为什么要进行分库和分表呢?都放在一个库或者一张表中不可 以吗?
摘要:分库与分表的目的在于,减小数据库的单库单表负担,提高查询性能,缩短查询时间。 通过分表,可以减少数据库的单表负担,将压力分散到不同的表上,同时因为不同的表上的数据量少了,起到提高查询性能,缩短查询时间的作用,此外,可以很大的缓解表锁的问题。 分表策略可以归纳为垂直拆分和水平拆分: 水平分表:取模分表 阅读全文
posted @ 2021-08-15 20:33 超人不会灰啊 阅读(305) 评论(0) 推荐(0) 编辑
18、MySQL索引主要使用的两种数据结构是什么?
摘要:哈希索引,对于哈希索引来说,底层的数据结构肯定是哈希表,因此在绝大多数需求为单条记录查询的时候,可以选择哈希索引,查询性能最快;其余大部分场景,建议选择BTree索引 BTree索引,Mysql的BTree索引使用的是B树中的B+Tree,BTREE索引就是一种将索引值按一定的算法,存入一个树形的数 阅读全文
posted @ 2021-08-15 20:28 超人不会灰啊 阅读(210) 评论(0) 推荐(0) 编辑
17、数据库悲观锁和乐观锁的原理和应用场景分别有什么?
摘要:悲观锁,先获取锁,再进行业务操作,一般就是利用类似 SELECT … FOR UPDATE 这样的语句,对数据加锁,避免其他事务意外修改数据。 当数据库执行SELECT … FOR UPDATE时会获取被select中的数据行的行锁,select for update获取的行锁会在当前事务结束时自动 阅读全文
posted @ 2021-08-15 17:18 超人不会灰啊 阅读(119) 评论(0) 推荐(0) 编辑
14、MySQL中为什么要有事务回滚机制?
摘要:而在 MySQL 中,恢复机制是通过回滚日志(undo log)实现的,所有事务进行的修改都会先记录到这个 回滚日志中,然后在对数据库中的对应行进行写入。 当事务已经被提交之后,就无法再次回滚了。 回滚日志作用: 1)能够在发生错误或者用户执行 ROLLBACK 时提供回滚相关的信息 2) 在整个系 阅读全文
posted @ 2021-08-15 16:36 超人不会灰啊 阅读(403) 评论(0) 推荐(0) 编辑
13、听说过视图吗?那游标呢?
摘要:视图是一种虚拟的表,通常是有一个表或者多个表的行或列的子集,具有和物理表相同的功能游标是对查询出来的结果集作为一个单元来有效的处理。一般不使用游标,但是需要逐条处理数据的时候,游标显得十分重要。 阅读全文
posted @ 2021-08-15 16:28 超人不会灰啊 阅读(36) 评论(0) 推荐(0) 编辑
11、都知道数据库索引采用B+树而不是B树,原因也有很多,主要原因是 什么?12、文件索引和数据库索引为什么使用B+树?(第9个问题的详细回答)
摘要:11、都知道数据库索引采用B+树而不是B树,原因也有很多,主要原因是 什么? 主要原因:B+树只要遍历叶子节点就可以实现整棵树的遍历,而且在数据库中基于范围的查询是非常频 繁的,而B树只能中序遍历所有节点,效率太低。 12、文件索引和数据库索引为什么使用B+树?(第9个问题的详细回答) 文件与数据库 阅读全文
posted @ 2021-08-15 16:27 超人不会灰啊 阅读(85) 评论(0) 推荐(0) 编辑
10、脏读、不可重复读和幻影读的概念,数据库隔离级别
摘要:脏读、不可重复读和幻影读的概念 1、脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是脏数据,依据脏数据所做的操作可能是不正确的。 2、不可重复 阅读全文
posted @ 2021-08-15 16:13 超人不会灰啊 阅读(228) 评论(0) 推荐(0) 编辑
9、MySQL优化了解吗?说一下从哪些方面可以做到性能优化?
摘要:1.为搜索字段创建索引 2.避免使用 Select *,列出需要查询的字段 3.垂直分割分表 4.选择正确的存储引擎 阅读全文
posted @ 2021-08-15 15:50 超人不会灰啊 阅读(59) 评论(0) 推荐(0) 编辑
8、说一说Drop、Delete与Truncate的共同点和区别
摘要:第一种回答 Drop、Delete、Truncate都表示删除,但是三者有一些差别: Delete用来删除表的全部或者一部分数据行,执行delete之后,用户需要提交(commmit)或者回滚 (rollback)来执行删除或者撤销删除,会触发这个表上所有的delete触发器。 Truncate删除 阅读全文
posted @ 2021-08-15 15:39 超人不会灰啊 阅读(431) 评论(0) 推荐(0) 编辑
6、说一下MySQL是如何执行一条SQL的?具体步骤有哪些?
摘要:Server层按顺序执行sql的步骤为: 1. 客户端请求-> 2. 连接器(验证用户身份,给予权限) -> 3. 查询缓存(存在缓存则直接返回,不存在则执行后续操作)-> 4. 分析器(对SQL进行词法分析和语法分析操作) -> 5. 优化器(主要对执行的sql优化选择最优的执行方案方法) -> 阅读全文
posted @ 2021-08-15 15:12 超人不会灰啊 阅读(101) 评论(0) 推荐(0) 编辑
7、你了解MySQL的内部构造吗?一般可以分为哪两个部分?
摘要:可以分为服务层和存储引擎层两部分,其中: 服务层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖MySQL的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如 存储过程、触发器、视图等。 存储引擎层负责数据的存储和提取。其架构模式是 阅读全文
posted @ 2021-08-15 15:12 超人不会灰啊 阅读(121) 评论(0) 推荐(0) 编辑
4、Innodb为什么要用自增id作为主键?
摘要:如果表使用自增主键,那么每次插入新的记录,记录就会顺序添加到当前索引节点的后续位置,当一页 写满,就会自动开辟一个新的页。 如果使用非自增主键(如果身份证号或学号等),由于每次插入主键的值近似于随机,因此每次新纪录 都要被插到现有索引页得中间某个位置, 频繁的移动、分页操作造成了大量的碎片,得到了不 阅读全文
posted @ 2021-08-15 14:57 超人不会灰啊 阅读(120) 评论(0) 推荐(0) 编辑
3、为什么使用索引?
摘要:1.通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 2.可以大大加快数据的检索速度,这也是创建索引的最主要的原因。 3.帮助服务器避免排序和临时表 4.将随机IO变为顺序IO。 5.可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。 阅读全文
posted @ 2021-08-15 14:56 超人不会灰啊 阅读(207) 评论(0) 推荐(0) 编辑
2、什么是非关系型数据库?
摘要:非关系型数据库也叫NOSQL,采用键值对的形式进行存储。 它的读写性能很高,易于扩展,可分为内存性数据库以及文档型数据库,比如 Redis,Mongodb,HBase 等等。 适合使用非关系型数据库的场景: 阅读全文
posted @ 2021-08-15 12:24 超人不会灰啊 阅读(451) 评论(0) 推荐(0) 编辑
1、关系型和非关系型数据库的区别你了解多少?
摘要:关系型数据库的优点 容易理解。因为它采用了关系模型来组织数据。 可以保持数据的一致性。 数据更新的开销比较小。 支持复杂查询(带where子句的查询) 非关系型数据库的优点 不需要经过SQL层的解析,读写效率高。 基于键值对,数据的扩展性很好。 可以支持多种类型数据的存储,如图片,文档等等。 阅读全文
posted @ 2021-08-15 11:55 超人不会灰啊 阅读(162) 评论(0) 推荐(0) 编辑
50、常见内存分配内存错误
摘要:(1)内存分配未成功,却使用了它。 (2)内存分配虽然成功,但是尚未初始化就引用它。 (3)内存分配成功并且已经初始化,但操作越过了内存的边界。 例如在使用数组时经常发生下标“多1”或者“少1”的操作。特别是在for循环语句中,循环次数很容易搞 错,导致数组操作越界。 (4)忘记了释放内存,造成内存 阅读全文
posted @ 2021-08-14 22:01 超人不会灰啊 阅读(692) 评论(0) 推荐(0) 编辑
57、可能是最全的页面置换算法总结了
摘要:1、最佳置换法(OPT) 最佳置换算法(OPT,Optimal) :每次选择淘汰的页面将是以后永不使用,或者在最长时间内不再被访问 的页面,这样可以保证最低的缺页率。 最佳置换算法可以保证最低的缺页率,但实际上,只有在进程执行的过程中才能知道接下来会访问到的 是哪个页面。操作系统无法提前预判页面访问 阅读全文
posted @ 2021-08-14 21:54 超人不会灰啊 阅读(977) 评论(0) 推荐(0) 编辑
59、死锁相关问题大总结,超全!
摘要:死锁是指两个(多个)线程相互等待对方数据的过程,死锁的产生会导致程序卡死,不解锁程序将永远无法进行下去。 1、死锁产生原因 举个例子:两个线程A和B,两个数据1和2。线程A在执行过程中,首先对资源1加锁,然后再去给资源2 加锁,但是由于线程的切换,导致线程A没能给资源2加锁。线程切换到B后,线程B先 阅读全文
posted @ 2021-08-14 14:54 超人不会灰啊 阅读(152) 评论(0) 推荐(0) 编辑
66、在执行malloc申请内存的时候,操作系统是怎么做的?
摘要:从操作系统层面上看,malloc是通过两个系统调用来实现的: brk和mmap brk是将进程数据段(.data)的最高地址指针向高处移动,这一步可以扩大进程在运行时的堆大小 mmap是在进程的虚拟地址空间中寻找一块空闲的虚拟内存,这一步可以获得一块可以操作的堆内存。 通常,分配的内存小于128k时 阅读全文
posted @ 2021-08-14 14:42 超人不会灰啊 阅读(80) 评论(0) 推荐(0) 编辑
65、服务器高并发的解决方案你知道多少?
摘要:应用数据与静态资源分离 将静态资源(图片,视频,js,css等)单独保存到专门的静态资源服务器中,在客户端访问的时候从 静态资源服务器中返回静态资源,从主服务器中返回应用数据。 客户端缓存 因为效率最高,消耗资源最小的就是纯静态的html页面,所以可以把网站上的页面尽可能用静态的来 实现,在页面过期 阅读全文
posted @ 2021-08-14 14:38 超人不会灰啊 阅读(253) 评论(0) 推荐(0) 编辑
64、多进程和多线程的区别是什么?换句话说,什么时候该用多线程,什 么时候该用多进程?
摘要:频繁修改:需要频繁创建和销毁的优先使用多线程 计算量:需要大量计算的优先使用多线程 因为需要消耗大量CPU资源且切换频繁,所以多线程好一 点 相关性:任务间相关性比较强的用多线程,相关性比较弱的用多进程。因为线程之间的数据共享和同 步比较简单。 多分布:可能要扩展到多机分布的用多进程,多核分布的用多 阅读全文
posted @ 2021-08-14 14:30 超人不会灰啊 阅读(290) 评论(0) 推荐(0) 编辑
62、如何消除碎片文件
摘要:对于外部碎片,通过紧凑技术消除,就是操作系统不时地对进程进行移动和整理。但是这需要动态重定 位寄存器地支持,且相对费时。紧凑地过程实际上类似于Windows系统中地磁盘整理程序,只不过后者 是对外存空间地紧凑 解决外部内存碎片的问题就是内存交换。 可以把音乐程序占用的那 256MB 内存写到硬盘上, 阅读全文
posted @ 2021-08-14 14:23 超人不会灰啊 阅读(489) 评论(0) 推荐(0) 编辑
60、为什么分段式存储管理有外部碎片而无内部碎片?为什么固定分区分 配有内部碎片而不会有外部碎片?61、内部碎片与外部碎片?
摘要:60、为什么分段式存储管理有外部碎片而无内部碎片?为什么固定分区分 配有内部碎片而不会有外部碎片? 分段式分配是按需分配,而固定式分配是固定分配的方式 61、内部碎片与外部碎片 内碎片:分配给某些进程的内存区域中有些部分没用上,常见于固定分配方式 内存总量相同,100M 固定分配,将100M分割成1 阅读全文
posted @ 2021-08-14 14:21 超人不会灰啊 阅读(3508) 评论(0) 推荐(0) 编辑
58、共享是什么?
摘要:共享是指系统中的资源可以被多个并发进程共同使用。 有两种共享方式:互斥共享和同时共享。 互斥共享的资源称为临界资源,例如打印机等,在同一时刻只允许一个进程访问,需要用同步机制来实 现互斥访问。 阅读全文
posted @ 2021-08-14 14:18 超人不会灰啊 阅读(816) 评论(0) 推荐(0) 编辑
55、内存交换你知道有哪些需要注意的关键点吗?
摘要:1. 交换需要备份存储,通常是快速磁盘,它必须足够大,并且提供对这些内存映像的直接访问。 2. 为了有效使用CPU,需要每个进程的执行时间比交换时间长,而影响交换时间的主要是转移时间,转 移时间与所交换的空间内存成正比。 3. 如果换出进程,比如确保该进程的内存空间成正比。 4. 交换空间通常作为磁 阅读全文
posted @ 2021-08-14 14:17 超人不会灰啊 阅读(206) 评论(0) 推荐(0) 编辑
54、原子操作的是如何实现的
摘要:处理器使用基于对缓存加锁或总线加锁的方式来实现多处理器之间的原子操作。首先处理器会自动保证 基本的内存操作的原子性。处理器保证从系统内存中读取或者写入一个字节是原子的,意思是当一个处 理器读取一个字节时,其他处理器不能访问这个字节的内存地址。Pentium 6和最新的处理器能自动保证 单处理器对同一 阅读全文
posted @ 2021-08-14 14:11 超人不会灰啊 阅读(157) 评论(0) 推荐(0) 编辑
53、ASCII、Unicode和UTF-8编码的区别?
摘要:ASCII ASCII 只有127个字符,表示英文字母的大小写、数字和一些符号,但由于其他语言用ASCII 编码表示字 节不够,例如:常用中文需要两个字节,且不能和ASCII冲突,中国定制了GB2312编码格式,相同的, 其他国家的语言也有属于自己的编码格式。 Unicode 由于每个国家的语言都有 阅读全文
posted @ 2021-08-14 00:56 超人不会灰啊 阅读(185) 评论(0) 推荐(0) 编辑
51、内存交换中,被换出的进程保存在哪里?
摘要:保存在磁盘中,也就是外存中。具有对换功能的操作系统中,通常把磁盘空间分为文件区和对换区两部 分。文件区主要用于存放文件,主要追求存储空间的利用率,因此对文件区空间的管理采用离散分配方 式;对换区空间只占磁盘空间的小部分,被换出的进程数据就存放在对换区。由于对换的速度直接影响到 系统的整体速度,因此对 阅读全文
posted @ 2021-08-14 00:50 超人不会灰啊 阅读(336) 评论(0) 推荐(0) 编辑
52、在发生内存交换时,有些进程是被优先考虑的?你可以说一说吗?
摘要:可优先换出阻塞进程;可换出优先级低的进程;为了防止优先级低的进程在被调入内存后很快又被换出, 有的系统还会考虑进程在内存的驻留时间… (注意: PCB 会常驻内存,不会被换出外存) 阅读全文
posted @ 2021-08-14 00:50 超人不会灰啊 阅读(72) 评论(0) 推荐(0) 编辑
49、常见内存分配方式有哪些?
摘要:内存分配方式 (1) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都 存在。例如全局变量,static变量。 (2) 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这 些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中 阅读全文
posted @ 2021-08-14 00:43 超人不会灰啊 阅读(481) 评论(0) 推荐(0) 编辑
48、从堆和栈上建立对象哪个快?(考察堆和栈的分配效率比较)
摘要:从两方面来考虑: 分配和释放,堆在分配和释放时都要调用函数(malloc,free),比如分配时会到堆空间去寻找足够大小 的空间(因为多次分配释放后会造成内存碎片),这些都会花费一定的时间,具体可以看看malloc和 free的源代码,函数做了很多额外的工作,而栈却不需要这些。 访问时间,访问堆的一 阅读全文
posted @ 2021-08-14 00:42 超人不会灰啊 阅读(177) 评论(0) 推荐(0) 编辑
47、抖动你知道是什么吗?它也叫颠簸现象
摘要:刚刚换出的页面马上又要换入内存,刚刚换入的页面马上又要换出外存,这种频繁的页面调度行为称为 抖动,或颠簸。产生抖动的主要原因是进程频繁访问的页面数目高于可用的物理块数(分配给进程的物 理块不够) 为进程分配的物理块太少,会使进程发生抖动现象。为进程分配的物理块太多,又会降低系统整体的并 发度,降低某 阅读全文
posted @ 2021-08-14 00:38 超人不会灰啊 阅读(469) 评论(0) 推荐(0) 编辑
46、交换空间与虚拟内存的关系
摘要:交换空间 Linux 中的交换空间(Swap space)在物理内存(RAM)被充满时被使用。如果系统需要更多的内存资源,而物理内存已经充满,内存中不活跃的页就会被移到交换空间去。虽然交换空间可以为带有少量内存的机器提供帮助,但是这种方法不应该被当做是对内存的取代。交换空间位于硬盘驱动器上,它比进入 阅读全文
posted @ 2021-08-13 23:36 超人不会灰啊 阅读(261) 评论(0) 推荐(0) 编辑
44、程序从堆中动态分配内存时,虚拟内存上怎么操作的
摘要:页表:是一个存放在物理内存中的数据结构,它记录了虚拟页与物理页的映射关系 在进行动态内存分配时,例如malloc()函数或者其他高级语言中的new关键字,操作系统会在硬盘中创建 或申请一段虚拟内存空间,并更新到页表(分配一个页表条目(PTE),使该PTE指向硬盘上这个新创 建的虚拟页),通过PTE建 阅读全文
posted @ 2021-08-13 23:07 超人不会灰啊 阅读(148) 评论(0) 推荐(0) 编辑
43、一般情况下在Linux/windows平台下栈空间的大小
摘要:Linux环境下有操作系统决定,一般是8KB,8192kbytes,通过ulimit命令查看以及修改 Windows环境下由编译器决定,VC++6.0一般是1M Linux linux下非编译器决定栈大小,而是由操作系统环境决定,默认是8192KB(8M);而在Windows平台下 栈的大小是被记录 阅读全文
posted @ 2021-08-13 23:06 超人不会灰啊 阅读(1380) 评论(0) 推荐(0) 编辑
42、一个由C/C++编译的程序占用的内存分为哪几个部分?
摘要:1、栈区(stack)— 地址向下增长,由编译器自动分配释放,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的队列,先进后出。 2、堆区(heap)— 地址向上增长,一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回 收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链 阅读全文
posted @ 2021-08-13 22:58 超人不会灰啊 阅读(79) 评论(0) 推荐(0) 编辑
41、Windows和Linux环境下内存分布情况
摘要:通过这张图你可以看到,用户空间内存,从低到高分别是 7 种不同的内存段: 程序文件段,包括二进制可执行代码; 已初始化数据段,包括静态常量; 未初始化数据段,包括未初始化的静态变量; 堆段,包括动态分配的内存,从低地址开始向上增长; 文件映射段,包括动态库、共享内存等,从低地址开始向上增长(跟硬件和 阅读全文
posted @ 2021-08-13 22:56 超人不会灰啊 阅读(221) 评论(0) 推荐(0) 编辑
40、Linux中异常和中断的区别
摘要:中断 大家都知道,当我们在敲击键盘的同时就会产生中断,当硬盘读写完数据之后也会产生中断,所以,我 们需要知道,中断是由硬件设备产生的,而它们从物理上说就是电信号,之后,它们通过中断控制器发 送给CPU,接着CPU判断收到的中断来自于哪个硬件设备(这定义在内核中),最后,由CPU发送给内 核,有内核处 阅读全文
posted @ 2021-08-13 22:48 超人不会灰啊 阅读(94) 评论(0) 推荐(0) 编辑
39、进程终止的几种方式
摘要:1、main函数的自然返回,return 2、调用exit函数,属于c的函数库 3、调用_exit函数,属于系统调用 4、调用abort函数,异常程序终止,同时发送SIGABRT信号给调用进程。 5、接受能导致进程终止的信号:ctrl+c (^C)、SIGINT(SIGINT中断进程) 阅读全文
posted @ 2021-08-13 22:43 超人不会灰啊 阅读(372) 评论(0) 推荐(0) 编辑
38、父进程、子进程、进程组、作业和会话
摘要:父进程 已创建一个或多个子进程的进程 子进程 由fork创建的新进程被称为子进程(child process)。该函数被调用一次,但返回两次。两次返回的区别 是子进程的返回值是0,而父进程的返回值则是新进程(子进程)的进程 id。将子进程id返回给父进程的 理由是:因为一个进程的子进程可以多于一个, 阅读全文
posted @ 2021-08-13 22:42 超人不会灰啊 阅读(342) 评论(0) 推荐(0) 编辑
36、如何避免僵尸进程?
摘要:1.通过signal(SIGCHLD, SIG_IGN)通知内核对子进程的结束不关心,由内核回收。如果不想让父进程挂 起,可以在父进程中加入一条语句:signal(SIGCHLD,SIG_IGN);表示父进程忽略SIGCHLD信号,该 信号是子进程退出的时候向父进程发送的。 2.父进程调用wait/ 阅读全文
posted @ 2021-08-13 21:09 超人不会灰啊 阅读(160) 评论(0) 推荐(0) 编辑
37、局部性原理你知道吗?主要有哪两大局部性原理?各自是什么?
摘要:主要分为时间局部性和空间局部性。 时间局部性:如果执行了程序中的某条指令,那么不久后这条指令很有可能再次执行;如果某个数据被访 问过,不久之后该数据很可能再次被访问。(因为程序中存在大量的循环) 空间局部性:一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也很有可能被访问。(因为 很多数据在 阅读全文
posted @ 2021-08-13 21:09 超人不会灰啊 阅读(292) 评论(0) 推荐(0) 编辑
35、 守护进程、僵尸进程和孤儿进程
摘要:守护进程 指在后台运行的,没有控制终端与之相连的进程。它独立于控制终端,周期性地执行某种任务。Linux 的大多数服务器就是用守护进程的方式实现的,如web服务器进程http等 创建守护进程要点: (1)让程序在后台执行。方法是调用fork()产生一个子进程,然后使父进程退出。 (2)调用setsi 阅读全文
posted @ 2021-08-13 20:58 超人不会灰啊 阅读(63) 评论(0) 推荐(0) 编辑
33、地址变换中,有快表和没快表,有什么区别?
摘要: 阅读全文
posted @ 2021-08-13 17:36 超人不会灰啊 阅读(97) 评论(0) 推荐(0) 编辑
32、什么是快表,你知道多少关于快表的知识?
摘要:快表,又称联想寄存器(TLB) ,是一种访问速度比内存快很多的高速缓冲存储器,用来存放当前访问的 若干页表项,以加速地址变换的过程。与此对应,内存中的页表常称为慢表。 阅读全文
posted @ 2021-08-13 17:23 超人不会灰啊 阅读(2091) 评论(0) 推荐(0) 编辑
30、终端退出,终端运行的进程会怎样?31、如何让进程后台运行
摘要:30、终端退出,终端运行的进程会怎样? 终端在退出时会发送SIGHUP给对应的bash进程,bash进程收到这个信号后首先将它发给session下面的进 程,如果程序没有对SIGHUP信号做特殊处理,那么进程就会随着终端关闭而退出 31、如何让进程后台运行 阅读全文
posted @ 2021-08-13 17:09 超人不会灰啊 阅读(188) 评论(0) 推荐(0) 编辑
28、内存交换是什么?有什么特点?29、什么时候会进行内存的交换?
摘要:28、内存交换是什么?有什么特点? 交换(对换)技术的设计思想:内存空间紧张时,系统将内存中某些进程暂时换出外存,把外存中某些已具备运行条件的进程换入内存(进程在内存与磁盘间动态调度) 换入:把准备好竞争CPU运行的程序从辅存移到内存。 换出:把处于等待状态(或CPU调度原则下被剥夺运行权力)的程序 阅读全文
posted @ 2021-08-13 16:58 超人不会灰啊 阅读(526) 评论(0) 推荐(0) 编辑
27、内存的覆盖是什么?有什么特点?
摘要:由于程序运行时并非任何时候都要访问程序及数据的各个部分(尤其是大程序),因此可以把用户空间 分成为一个固定区和若干个覆盖区。将经常活跃的部分放在固定区,其余部分按照调用关系分段,首先 将那些即将要访问的段放入覆盖区,其他段放在外存中,在需要调用前,系统将其调入覆盖区,替换覆 盖区中原有的段。 覆盖技 阅读全文
posted @ 2021-08-13 16:57 超人不会灰啊 阅读(317) 评论(0) 推荐(0) 编辑
26、怎么回收线程?有哪几种方法?
摘要:等待线程结束:int pthread_join(pthread_t tid, void** retval); 主线程调用,等待子线程退出并回收其资源,类似于进程中wait/waitpid回收僵尸进程,调用 pthread_join的线程会被阻塞。 tid:创建线程时通过指针得到tid值。 retva 阅读全文
posted @ 2021-08-13 16:55 超人不会灰啊 阅读(516) 评论(0) 推荐(0) 编辑
25、逻辑地址VS物理地址
摘要:Eg:编译时只需确定变量x存放的相对地址是100 ( 也就是说相对于进程在内存中的起始地址而言的地 址)。CPU想要找到x在内存中的实际存放位置,只需要用进程的起始地址+100即可。 相对地址又称逻辑地址,绝对地址又称物理地址。 阅读全文
posted @ 2021-08-13 16:49 超人不会灰啊 阅读(210) 评论(0) 推荐(0) 编辑
24.1、你知道哪几种线程锁(POSIX)?
摘要:互斥锁(mutex) 互斥锁属于sleep-waiting类型的锁。例如在一个双核的机器上有两个线程A和B,它们分别运行在core 0和core 1上。假设线程A想要通过pthread_mutex_lock操作去得到一个临界区的锁,而此时这个锁正被 线程B所持有,那么线程A就会被阻塞,此时会通过上下 阅读全文
posted @ 2021-08-13 16:47 超人不会灰啊 阅读(404) 评论(0) 推荐(0) 编辑
24、介绍一下几种典型的锁?
摘要:读写锁 多个读者可以同时进行读 写者必须互斥(只允许一个写者写,也不能读者写者同时进行) 写者优先于读者(一旦有写者,则后续读者必须等待,唤醒时优先考虑写者) 互斥锁 一次只能一个线程拥有互斥锁,其他线程只有等待 互斥锁是在抢锁失败的情况下主动放弃CPU进入睡眠状态直到锁的状态改变时再唤醒,而操作系 阅读全文
posted @ 2021-08-13 16:29 超人不会灰啊 阅读(277) 评论(0) 推荐(1) 编辑
22、操作系统经典问题之哲学家进餐问题
摘要:五个哲学家围着一张圆桌,每个哲学家面前放着食物。哲学家的生活有两种交替活动:吃饭以及思考。 当一个哲学家吃饭时,需要先拿起自己左右两边的两根筷子,并且一次只能拿起一根筷子。 下面是一种错误的解法,如果所有哲学家同时拿起左手边的筷子,那么所有哲学家都在等待其它哲学家吃完并释放自己手中的筷子,导致死锁。 阅读全文
posted @ 2021-08-13 15:50 超人不会灰啊 阅读(294) 评论(0) 推荐(0) 编辑
23、操作系统经典问题之读者-写者问题
摘要:允许多个进程同时对数据进行读操作,但是不允许读和写以及写和写操作同时发生。 一个整型变量 count 记录在对数据进行读操作的进程数量,一个互斥量 count_mutex 用于对 count 加锁, 一个互斥量 data_mutex 用于对读写的数据加锁。 阅读全文
posted @ 2021-08-13 15:50 超人不会灰啊 阅读(66) 评论(0) 推荐(0) 编辑
21、说一下你理解中的内存?他有什么作用呢?
摘要: 阅读全文
posted @ 2021-08-13 15:45 超人不会灰啊 阅读(99) 评论(0) 推荐(0) 编辑
20、虚拟内存的目的是什么?
摘要:虚拟内存的目的是为了让物理内存扩充成更大的逻辑内存,从而让程序获得更多的可用内存。 为了更好的管理内存,操作系统将内存抽象成地址空间。每个程序拥有自己的地址空间,这个地址空间被分割成多个块,每一块称为一页。 这些页被映射到物理内存,但不需要映射到连续的物理内存,也不需要所有页都必须在物理内存中。当程 阅读全文
posted @ 2021-08-13 15:44 超人不会灰啊 阅读(467) 评论(0) 推荐(0) 编辑
19、进程间通信有哪几种方式?把你知道的都说出来
摘要:Linux几乎支持全部UNIX进程间通信方法,包括管道(有名管道和无名管道)、消息队列、共享内存、 信号量和套接字。其中前四个属于同一台机器下进程间的通信,套接字则是用于网络通信。 管道 无名管道 无名管道特点: 无名管道是一种特殊的文件,这种文件只存在于内存中。 无名管道只能用于父子进程或兄弟进程 阅读全文
posted @ 2021-08-13 15:39 超人不会灰啊 阅读(209) 评论(0) 推荐(0) 编辑
18、进程通信方法(Linux和windows下),线程通信方法(Linux和 windows下)
摘要:名称及方式 管道(pipe):允许一个进程和另一个与它有共同祖先的进程之间进行通信 命名管道(FIFO):类似于管道,但是它可以用于任何两个进程之间的通信,命名管道在文件系统中有 对应的文件名。命名管道通过命令mkfifo或系统调用mkfifo来创建 消息队列(MQ):消息队列是消息的连接表,包括P 阅读全文
posted @ 2021-08-13 15:01 超人不会灰啊 阅读(305) 评论(0) 推荐(0) 编辑
17、操作系统在对内存进行管理的时候需要做些什么?
摘要:操作系统负责内存空间的分配与回收。 操作系统需要提供某种技术从逻辑上对内存空间进行扩充。 操作系统需要提供地址转换功能,负责程序的逻辑地址与物理地址的转换。 操作系统需要提供内存保护功能。保证各进程在各自存储空间内运行,互不干扰 阅读全文
posted @ 2021-08-13 12:18 超人不会灰啊 阅读(39) 评论(0) 推荐(0) 编辑
16、进程同步的四种方法?
摘要:1. 临界区 对临界资源进行访问的那段代码称为临界区。 为了互斥访问临界资源,每个进程在进入临界区之前,需要先进行检查。 2. 同步与互斥 同步:多个进程因为合作产生的直接制约关系,使得进程有一定的先后执行关系。 互斥:多个进程在同一时刻只有一个进程能进入临界区。 3. 信号量 信号量(Semaph 阅读全文
posted @ 2021-08-13 12:17 超人不会灰啊 阅读(1714) 评论(0) 推荐(0) 编辑
15、通过例子讲解逻辑地址转换为物理地址的基本过程
摘要:可以借助进程的页表将逻辑地址转换为物理地址。 通常会在系统中设置一个页表寄存器(PTR),存放页表在内存中的起始地址F和页表长度M。进程未执行时,页表的始址和页表长度放在进程控制块(PCB) 中,当进程被调度时,操作系统内核会把它们放到页表寄存器中。 注意:页面大小是2的整数幂 设页面大小为L,逻辑 阅读全文
posted @ 2021-08-13 11:50 超人不会灰啊 阅读(1470) 评论(0) 推荐(0) 编辑
14、一个程序从开始运行到结束的完整过程,你能说出来多少?
摘要:四个过程: (1)预编译 主要处理源代码文件中的以“#”开头的预编译指令。处理规则见下 1、删除所有的#define,展开所有的宏定义。 2、处理所有的条件预编译指令,如“#if”、“#endif”、“#ifdef”、“#elif”和“#else”。 3、处理“#include”预编译指令,将文件内 阅读全文
posted @ 2021-08-13 11:43 超人不会灰啊 阅读(285) 评论(0) 推荐(0) 编辑
13、进程状态的切换你知道多少?
摘要:应该注意以下内容: 1.只有就绪态和运行态可以相互转换,其它的都是单向转换。就绪状态的进程通过调度算法从而获得 CPU 时间,转为运行状态;而运行状态的进程,在分配给它的 CPU 时间片用完之后就会转为就绪状 态,等待下一次调度。 2.阻塞状态是缺少需要的资源从而由运行状态转换而来,但是该资源不包括 阅读全文
posted @ 2021-08-13 11:30 超人不会灰啊 阅读(300) 评论(0) 推荐(0) 编辑
12、虚拟技术你了解吗?
摘要:虚拟技术把一个物理实体转换为多个逻辑实体。 主要有两种虚拟技术:时(时间)分复用技术和空(空间)分复用技术。 多进程与多线程:多个进程能在同一个处理器上并发执行使用了时分复用技术,让每个进程轮流占用处 理器,每次只执行一小个时间片并快速切换。 虚拟内存使用了空分复用技术,它将物理内存抽象为地址空间, 阅读全文
posted @ 2021-08-13 11:20 超人不会灰啊 阅读(441) 评论(0) 推荐(0) 编辑
11、动态分区分配算法有哪几种?可以分别说说吗?
摘要:1、首次适应算法 算法思想:每次都从低地址开始查找,找到第–个能满足大小的空闲分区。 如何实现:空闲分区以地址递增的次序排列。每次分配内存时顺序查找空闲分区链( 或空闲分[表),找到 大小能满足要求的第-一个空闲分区。 2、最佳适应算法 算法思想:由于动态分区分配是一种连续分配方式,为各进程分配的空 阅读全文
posted @ 2021-08-13 11:14 超人不会灰啊 阅读(1192) 评论(0) 推荐(0) 编辑
线程池
摘要:1. 线程池的概念: 线程池就是首先创建一些线程,它们的集合称为线程池。使用线程池可以很好地提高性能,线程池在系统启动时即创建大量空闲的线程,程序将一个任务传给线程池,线程池就会启动一条线程来执行这个任务,执行结束以后,该线程并不会死亡,而是再次返回线程池中成为空闲状态,等待执行下一个任务。 2. 阅读全文
posted @ 2021-08-12 11:54 超人不会灰啊 阅读(30) 评论(0) 推荐(0) 编辑
10、内存交换和覆盖有什么区别?
摘要:交换技术主要是在不同进程(或作业)之间进行,而覆盖则用于同一程序或进程中。 覆盖和交换技术是在多道程序环境下用来扩充内存的两种方法。 覆盖技术主要用在早期的操作系统中,而交换技术则在现代操作系统中仍具有较强的生命力。 1、内存覆盖(Overlay) 在早期的计算机系统中,主存容量很小。虽然主存中仅存 阅读全文
posted @ 2021-08-12 11:33 超人不会灰啊 阅读(1013) 评论(0) 推荐(0) 编辑
9、如果系统中具有快表后,那么地址的转换过程变成什么样了?
摘要:①CPU给出逻辑地址,由某个硬件算得页号、页内偏移量,将页号与快表中的所有页号进行比较。 ②如果找到匹配的页号,说明要访问的页表项在快表中有副本,则直接从中取出该页对应的内存块 号,再将内存块号与页内偏移量拼接形成物理地址,最后,访问该物理地址对应的内存单元。因 此,若快表命中,则访问某个逻辑地址仅 阅读全文
posted @ 2021-08-12 11:24 超人不会灰啊 阅读(419) 评论(0) 推荐(0) 编辑
8、Linux下同步机制?
摘要:POSIX信号量:可用于进程同步,也可用于线程同步。 POSIX互斥锁 + 条件变量:只能用于线程同步。 1. 线程和进程的区别? 调度:线程是调度的基本单位(PC,状态码,通用寄存器,线程栈及栈指针);进程是拥有资源 的基本单位(打开文件,堆,静态区,代码段等)。 并发性:一个进程内多个线程可以并 阅读全文
posted @ 2021-08-11 22:49 超人不会灰啊 阅读(82) 评论(0) 推荐(0) 编辑
7、Linux下进程间通信方式?
摘要:管道: 无名管道(内存文件):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲 缘关系的进程之间使用。进程的亲缘关系通常是指父子进程关系。 有名管道(FIFO文件,借助文件系统):有名管道也是半双工的通信方式,但是允许在没有亲缘 关系的进程之间使用,管道是先进先出的通信方式。 共享内存 阅读全文
posted @ 2021-08-11 22:45 超人不会灰啊 阅读(49) 评论(0) 推荐(0) 编辑
6、进程调度算法你了解多少?
摘要:1、 先来先服务 first-come first-serverd(FCFS) 非抢占式的调度算法,按照请求的顺序进行调度。 有利于长作业,但不利于短作业,因为短作业必须一直等待前面的长作业执行完毕才能执行,而长作业 又需要执行很长时间,造成了短作业等待时间过长。 2、 短作业优先 shortest 阅读全文
posted @ 2021-08-11 22:23 超人不会灰啊 阅读(237) 评论(0) 推荐(0) 编辑
5、进程线程模型你知道多少?
摘要:对于进程和线程的理解和把握可以说基本奠定了对系统的认知和把控能力。其核心意义绝不仅仅是“线 程是调度的基本单位,进程是资源分配的基本单位”这么简单。 多线程 我们这里讨论的是用户态的多线程模型,同一个进程内部有多个线程,所有的线程共享同一个进程的内存空间,进程中定义的全局变量会被所有的线程共享,比如 阅读全文
posted @ 2021-08-11 22:11 超人不会灰啊 阅读(179) 评论(0) 推荐(1) 编辑
4、外中断和异常有什么区别?
摘要:外中断是指由 CPU 执行指令以外的事件引起,如 I/O 完成中断,表示设备输入/输出处理已经完成,处 理器能够发送下一个输入/输出请求。此外还有时钟中断、控制台中断等。 而异常时由 CPU 执行指令的内部事件引起,如非法操作码、地址越界、算术溢出等。 阅读全文
posted @ 2021-08-11 21:00 超人不会灰啊 阅读(320) 评论(0) 推荐(0) 编辑
3、一个进程可以创建多少线程,和什么有关?
摘要:理论上,一个进程可用虚拟空间是2G,默认情况下,线程的栈的大小是1MB,所以理论上最多只能创建 2048个线程。如果要创建多于2048的话,必须修改编译器的设置。 因此,一个进程可以创建的线程数由可用虚拟空间和线程的栈的大小共同决定,只要虚拟空间足够,那么新线程的建立就会成功。如果需要创建超过2K以 阅读全文
posted @ 2021-08-11 20:59 超人不会灰啊 阅读(966) 评论(0) 推荐(0) 编辑
2、线程与进程的比较
摘要:1、线程启动速度快,轻量级 2、线程的系统开销小 3、线程使用有一定难度,需要处理数据一致性问题 4、同一线程共享的有堆、全局变量、静态变量、指针,引用、文件等,而独自占有栈 阅读全文
posted @ 2021-08-11 20:55 超人不会灰啊 阅读(119) 评论(0) 推荐(0) 编辑
1、进程、线程和协程的区别和联系
摘要:1、进程是资源调度的基本单位,运行一个可执行程序会创建一个或多个进程,进程就是运行起来的可 执行程序 2、线程是程序执行的基本单位,是轻量级的进程。每个进程中都有唯一的主线程,且只能有一个,主 线程和进程是相互依存的关系,主线程结束进程也会结束。多提一句:协程是用户态的轻量级线程,线 程内部调度的基 阅读全文
posted @ 2021-08-11 20:37 超人不会灰啊 阅读(133) 评论(0) 推荐(0) 编辑
1、子网掩码的概念及作用
摘要:①、子网掩码(Subnet Mask)又叫网络掩码、地址掩码,必须结合IP地址一起对应使用。 ②、只有通过子网掩码,才能表明一台主机所在的子网与其他子网的关系,使网络正常工作。 ③、子网掩码和IP地址做“与”运算,分离出IP地址中的网络地址和主机地址,用于判断该IP地址是在本地网络上,还是在远程网络 阅读全文
posted @ 2021-08-10 17:24 超人不会灰啊 阅读(1147) 评论(0) 推荐(0) 编辑
104、一台机器能够使用的端口号上限是多少,是否可以修改?如果想要 用的端口超过这个限制怎么办?
摘要:65536.因为TCP的报文头部中源端口号和目的端口号的长度是16位,也就是可以表示2^16=65536个不同 端口号,因此TCP可供识别的端口号最多只有65536个。但是由于0到1023是知名服务端口,所以实际上 还要少1024个端口号。 而对于服务器来说,可以开的端口号与65536无关,其实是受 阅读全文
posted @ 2021-08-10 17:19 超人不会灰啊 阅读(569) 评论(0) 推荐(0) 编辑
103、服务器出现大量close_wait的连接的原因是什么?有什么解决方法?
摘要:close_wait状态是在TCP四次挥手的时候收到FIN但是没有发送自己的FIN时出现的,服务器出现大量 close_wait状态的原因有两种: 1.服务器内部业务处理占用了过多时间,都没能处理完业务;或者还有数据需要发送;或者服务器的业 务逻辑有问题,没有执行close()方法 2.服务器的父进 阅读全文
posted @ 2021-08-10 17:18 超人不会灰啊 阅读(967) 评论(0) 推荐(0) 编辑
102、常见的HTTP状态码有哪些?
摘要:1xx 信息 a. 100 Continue :表明到目前为止都很正常,客户端可以继续发送请求或者忽略这个响应。 2xx 成功 a. 200 OK b. 204 No Content :请求已经成功处理,但是返回的响应报文不包含实体的主体部分。一般在只需要从 客户端往服务器发送信息,而不需要返回数据 阅读全文
posted @ 2021-08-10 17:16 超人不会灰啊 阅读(347) 评论(0) 推荐(0) 编辑
100、拥塞控制原理听说过吗?101、如何区分流量控制和拥塞控制?
摘要:100、拥塞控制原理听说过吗? 拥塞控制目的是防止数据被过多注网络中导致网络资源(路由器、交换机等)过载。因为拥塞控制涉 及网络链路全局,所以属于全局控制。控制拥塞使用拥塞窗口。 TCP拥塞控制算法: 1.慢开始 & 拥塞避免:先试探网络拥塞程度再逐渐增大拥塞窗口。每次收到确认后拥塞窗口翻倍, 直到 阅读全文
posted @ 2021-08-10 17:08 超人不会灰啊 阅读(206) 评论(0) 推荐(0) 编辑
98、文件上传漏洞是如何发生的?你有经历过吗?
摘要:98、文件上传漏洞是如何发生的? 文件上传漏洞,指的是用户上传一个可执行的脚本文件,并通过此脚本文件获得了执行服务端命令的能力。 许多第三方框架、服务,都曾经被爆出文件上传漏洞,比如很早之前的Struts2,以及富文本编辑器等等,可被攻击者上传恶意代码,有可能服务端就被人黑了。 99、如何防范文件上 阅读全文
posted @ 2021-08-10 17:01 超人不会灰啊 阅读(93) 评论(0) 推荐(0) 编辑
95、XSS攻击是什么?(低频)96、CSRF攻击?你知道吗?97、如何防范CSRF攻击
摘要:95、XSS攻击是什么?(低频) 跨站点脚本攻击,指攻击者通过篡改网页,嵌入恶意脚本程序,在用户浏览网页时,控制用户浏览器进 行恶意操作的一种攻击方式。如何防范XSS攻击 1)前端,服务端,同时需要字符串输入的长度限制。 2)前端,服务端,同时需要对HTML转义处理。将其中的”<”,”>”等特殊字符 阅读全文
posted @ 2021-08-10 16:57 超人不会灰啊 阅读(75) 评论(0) 推荐(0) 编辑
94、可以解释一下RTO,RTT和超时重传分别是什么吗?
摘要:1.超时重传:发送端发送报文后若长时间未收到确认的报文则需要重发该报文。可能有以下几种情况: 发送的数据没能到达接收端,所以对方没有响应。 接收端接收到数据,但是ACK报文在返回过程中丢失。 接收端拒绝或丢弃数据。 2.RTO(Retransmission Time Out):从上一次发送数据,因为 阅读全文
posted @ 2021-08-10 16:50 超人不会灰啊 阅读(720) 评论(0) 推荐(0) 编辑
93、TCP 利用滑动窗口实现流量控制的机制?
摘要:流量控制是为了控制发送方发送速率,保证接收方来得及接收。TCP 利用滑动窗口实现流量控制。 TCP 中采用滑动窗口来进行传输控制,滑动窗口的大小意味着接收方还有多大的缓冲区可以用于接收数 据。发送方可以通过滑动窗口的大小来确定应该发送多少字节的数据。当滑动窗口为 0 时,发送方一般 不能再发送数据报 阅读全文
posted @ 2021-08-10 16:46 超人不会灰啊 阅读(276) 评论(0) 推荐(0) 编辑
92、在进行UDP编程的时候,一次发送多少bytes好?
摘要:当然,这个没有唯一答案,相对于不同的系统,不同的要求,其得到的答案是不一样的。 我这里仅对像ICQ一类的发送聊天消息的情况作分析,对于其他情况,你或许也能得到一点帮助:首先,我 们知道,TCP/IP通常被认为是一个四层协议系统,包括链路层,网络层,运输层,应用层.UDP属于运输层, 下面我们由下至上 阅读全文
posted @ 2021-08-10 16:44 超人不会灰啊 阅读(180) 评论(0) 推荐(0) 编辑
91、Ping命令基于哪一层协议的原理是什么?
摘要:ping命令基于网络层的命令,是基于ICMP协议工作的。 阅读全文
posted @ 2021-08-10 16:40 超人不会灰啊 阅读(1006) 评论(0) 推荐(0) 编辑
90、数据链路层常见协议?可以说一下吗?
摘要: 阅读全文
posted @ 2021-08-10 16:39 超人不会灰啊 阅读(143) 评论(0) 推荐(0) 编辑
88、TCP对应的应用层协议89、UDP对应的应用层协议
摘要:88、TCP对应的应用层协议 1.FTP:定义了文件传输协议,使用21端口. 2.Telnet:它是一种用于远程登陆的端口,23端口 3.SMTP:定义了简单邮件传送协议,服务器开放的是25号端口。 4.POP3:它是和SMTP对应,POP3用于接收邮件。 89、UDP对应的应用层协议 1.DNS: 阅读全文
posted @ 2021-08-10 16:38 超人不会灰啊 阅读(665) 评论(0) 推荐(0) 编辑
87、UDP的特点有哪些(附赠TCP的特点)?
摘要:1.UDP是无连接的; 2.UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态(这里面有许多 参数); 3.UDP是面向报文的; 4.UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电 话,实时视频会议等); 5.UDP支持一对一、一 阅读全文
posted @ 2021-08-10 16:34 超人不会灰啊 阅读(501) 评论(0) 推荐(0) 编辑
86、TCP和UDP的区别
摘要:1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接 2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到 达;UDP尽最大努力交付,即不保证可靠交付 3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节 阅读全文
posted @ 2021-08-10 16:30 超人不会灰啊 阅读(68) 评论(0) 推荐(0) 编辑
85、UDP是什么?封包和拆包你听说过吗?它是基于TCP还是UDP的?
摘要:提供无连接的,尽最大努力的数据传输服务(不保证数据传输的可靠性)。 封包和拆包你听说过吗?它是基于TCP还是UDP的? 封包和拆包都是基于TCP的概念。因为TCP是无边界的流传输,所以需要对TCP进行封包和拆包,确保 发送和接收的数据不粘连。 封包:封包就是在发送数据报的时候为每个TCP数据包加上一 阅读全文
posted @ 2021-08-10 16:26 超人不会灰啊 阅读(402) 评论(0) 推荐(0) 编辑
84、TCP 协议如何保证可靠传输?
摘要:第一种回答 1.确认和重传:接收方收到报文就会确认,发送方发送一段时间后没有收到确认就会重传。 2.数据校验:TCP报文头有校验和,用于校验报文是否损坏。 3.数据合理分片和排序:tcp会按最大传输单元(MTU)合理分片,接收方会缓存未按序到达的数据,重新 排序后交给应用层。而UDP:IP数据报大于 阅读全文
posted @ 2021-08-10 16:25 超人不会灰啊 阅读(216) 评论(0) 推荐(0) 编辑
82、你了解流量控制原理吗?
摘要:1.目的是接收方通过TCP头窗口字段告知发送方本方可接收的最大数据量,用以解决发送速率过快导致 接收方不能接收的问题。所以流量控制是点对点控制。 2.TCP是双工协议,双方可以同时通信,所以发送方接收方各自维护一个发送窗和接收窗。 发送窗:用来限制发送方可以发送的数据大小,其中发送窗口的大小由接收端 阅读全文
posted @ 2021-08-10 15:55 超人不会灰啊 阅读(345) 评论(0) 推荐(0) 编辑
81、对于FIN_WAIT_2,CLOSE_WAIT状态和TIME_WAIT状态?你知道 多少?
摘要:FIN_WAIT_2: 1.半关闭状态。 2.发送断开请求一方还有接收数据能力,但已经没有发送数据能力。 CLOSE_WAIT状态: 1.被动关闭连接一方接收到FIN包会立即回应ACK包表示已接收到断开请求。 2.被动关闭连接一方如果还有剩余数据要发送就会进入CLOSED_WAIT状态。 TIME_ 阅读全文
posted @ 2021-08-10 15:47 超人不会灰啊 阅读(222) 评论(0) 推荐(0) 编辑
80、为何快速重传是选择3次ACK?
摘要:主要的考虑还是要区分包的丢失是由于链路故障还是乱序等其他因素引发。 两次duplicated ACK时很可能是乱序造成的!三次duplicated ACK时很可能是丢包造成的!四次duplicated ACK更更更可能是丢包造成的,但是这样的响应策略太慢。丢包肯定会造成三次duplicated AC 阅读全文
posted @ 2021-08-10 15:43 超人不会灰啊 阅读(423) 评论(0) 推荐(0) 编辑
79、TCP四大拥塞控制算法总结?(极其重要)
摘要:四大算法 拥塞控制主要是四个算法:1)慢启动,2)拥塞避免,3)拥塞发生,4)快速恢复。这四个算法不是一 天都搞出来的,这个四算法的发展经历了很多时间,到今天都还在优化中。 慢热启动算法 – Slow Start 所谓慢启动,也就是TCP连接刚建立,一点一点地提速,试探一下网络的承受能力,以免直接扰 阅读全文
posted @ 2021-08-10 15:26 超人不会灰啊 阅读(1500) 评论(0) 推荐(0) 编辑
78、网络层常见协议?可以说一下吗?
摘要: 阅读全文
posted @ 2021-08-10 11:48 超人不会灰啊 阅读(44) 评论(0) 推荐(0) 编辑
77、GET与POST传递数据的最大长度能够达到多少呢?
摘要:get 是通过URL提交数据,因此GET可提交的数据量就跟URL所能达到的最大长度有直接关系。 很多文章都说GET方式提交的数据最多只能是1024字节,而实际上,URL不存在参数上限的问题, HTTP协议规范也没有对URL长度进行限制。 这个限制是特定的浏览器及服务器对它的限制,比如IE对URL长度 阅读全文
posted @ 2021-08-10 11:47 超人不会灰啊 阅读(463) 评论(0) 推荐(0) 编辑
76、HTTP如何禁用缓存?如何确认缓存?
摘要:HTTP/1.1 通过 Cache-Control 首部字段来控制缓存。 禁止进行缓存 no-store 指令规定不能对请求或响应的任何一部分进行缓存。 Cache-Control: no-store 强制确认缓存 no-cache 指令规定缓存服务器需要先向源服务器验证缓存资源的有效性,只有当缓存 阅读全文
posted @ 2021-08-10 11:25 超人不会灰啊 阅读(429) 评论(0) 推荐(0) 编辑
74、为什么有的时候刷新页面不需要重新建立 SSL 连接?75、SSL中的认证中的证书是什么?了解过吗?
摘要:74、为什么有的时候刷新页面不需要重新建立 SSL 连接? TCP 连接有的时候会被浏览器和服务端维持一段时间,TCP 不需要重新建立,SSL 自然也会用之前的。 75、SSL中的认证中的证书是什么?了解过吗? 通过使用 证书 来对通信方进行认证。 数字证书认证机构(CA,Certificate A 阅读全文
posted @ 2021-08-10 11:23 超人不会灰啊 阅读(90) 评论(0) 推荐(0) 编辑
73、HTTPS采用的加密方式有哪些?是对称还是非对称?
摘要:HTTPS 采用混合的加密机制,使用非对称密钥加密用于传输对称密钥来保证传输过程的安全性,之后使 用对称密钥加密进行通信来保证通信过程的效率。 确保传输安全过程(其实就是rsa原理): 1. Client给出协议版本号、一个客户端生成的随机数(Client random),以及客户端支持的加密方法。 阅读全文
posted @ 2021-08-10 11:17 超人不会灰啊 阅读(386) 评论(0) 推荐(0) 编辑
71、HTTPS是什么?
摘要:71、HTTPS是什么? HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer)通信,再由 SSL 和 TCP 通 信,也就是说 HTTPS 使用了隧道进行通信。通过使用 SSL,HTTPS 具有了加密(防窃听)、认证(防 伪装)和完整性保护(防篡改)。 阅读全文
posted @ 2021-08-10 11:06 超人不会灰啊 阅读(386) 评论(0) 推荐(0) 编辑
69、对称密钥加密的优点缺点?70、非对称密钥加密你了解吗?优缺点?
摘要:对称密钥加密(Symmetric-Key Encryption),加密和解密使用同一密钥。 优点:运算速度快 缺点:无法安全地将密钥传输给通信方 非对称密钥加密,又称公开密钥加密(Public-Key Encryption),加密和解密使用不同的密钥。 公开密钥所有人都可以获得,通信发送方获得接收方 阅读全文
posted @ 2021-08-10 11:01 超人不会灰啊 阅读(512) 评论(0) 推荐(0) 编辑
66、TCP粘包问题是什么?你会如何去解决它?
摘要:TCP粘包是指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧 接着前一包数据的尾。 1.由TCP连接复用造成的粘包问题。 2.因为TCP默认会使用Nagle算法,此算法会导致粘包问题。 只有上一个分组得到确认,才会发送下一个分组; 收集多个小分组,在一个确认到来时一起 阅读全文
posted @ 2021-08-10 10:50 超人不会灰啊 阅读(178) 评论(0) 推荐(0) 编辑
65、为什么TIME_WAIT状态需要经过2MSL才能返回到CLOSE状态?
摘要:第一种回答 理论上,四个报文都发送完毕,就可以直接进入CLOSE状态了,但是可能网络是不可靠的,有可能最后 一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。 第二种回答 对应这样一种情况,最后客户端发送的ACK = 1给服务端的过程中丢失了,服务端没收到,服务端怎么 认为 阅读全文
posted @ 2021-08-10 01:54 超人不会灰啊 阅读(207) 评论(0) 推荐(0) 编辑
64、四次挥手释放连接时,等待2MSL的意义?
摘要:MSL是Maximum Segment Lifetime的英文缩写,可译为“最长报文段寿命”,它是任何报文在网络上 存在的最长时间,超过这个时间报文将被丢弃。 为了保证客户端发送的最后一个ACK报文段能够到达服务器。因为这个ACK有可能丢失,从而导致处在 LAST-ACK状态的服务器收不到对FIN- 阅读全文
posted @ 2021-08-10 01:47 超人不会灰啊 阅读(247) 评论(0) 推荐(0) 编辑
63、2MSL等待状态?
摘要:TIME_WAIT状态也成为2MSL等待状态。每个具体TCP实现必须选择一个报文段最大生存时间 MSL(Maximum Segment Lifetime),它是任何报文段被丢弃前在网络内的最长时间。这个时间是有限 的,因为TCP报文段以IP数据报在网络内传输,而IP数据报则有限制其生存时间的TTL字 阅读全文
posted @ 2021-08-10 01:39 超人不会灰啊 阅读(47) 评论(0) 推荐(0) 编辑
62、挥手为什么需要四次?
摘要:第一种回答 因为当服务端收到客户端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来 应答的,SYN报文是用来同步的。但是关闭连接时,当服务端收到FIN报文时,很可能并不会立即关闭 SOCKET,所以只能先回复一个ACK报文,告诉客户端,"你发的FIN报文我收到了"。只有等 阅读全文
posted @ 2021-08-10 01:35 超人不会灰啊 阅读(246) 评论(0) 推荐(0) 编辑
61、 四次挥手相关内容
摘要:建立一个连接需要三次握手,而终止一个连接要经过四次挥手(也有将四次挥手叫做四次握手的)。这 由TCP的半关闭(half-close)造成的。所谓的半关闭,其实就是TCP提供了连接的一端在结束它的发送 后还能接收来自另一端数据的能力。 TCP 的连接的拆除需要发送四个包,因此称为四次挥手(Four-w 阅读全文
posted @ 2021-08-09 01:19 超人不会灰啊 阅读(38) 评论(0) 推荐(0) 编辑
60、SYN攻击是什么?
摘要:服务器端的资源分配是在二次握手时分配的,而客户端的资源是在完成三次握手时分配的,所以服务器 容易受到SYN洪泛攻击。SYN攻击就是Client在短时间内伪造大量不存在的IP地址,并向Server不断地发 送SYN包,Server则回复确认包,并等待Client确认,由于源地址不存在,因此Server 阅读全文
posted @ 2021-08-08 23:09 超人不会灰啊 阅读(207) 评论(0) 推荐(0) 编辑
59、 三次握手过程中可以携带数据吗?
摘要:其实第三次握手的时候,是可以携带数据的。但是,第一次、第二次握手不可以携带数据 为什么这样呢?大家可以想一个问题,假如第一次握手可以携带数据的话,如果有人要恶意攻击服务 器,那他每次都在第一次握手中的 SYN 报文中放入大量的数据。因为攻击者根本就不理服务器的接 收、发送能力是否正常,然后疯狂着重复 阅读全文
posted @ 2021-08-08 23:02 超人不会灰啊 阅读(422) 评论(0) 推荐(1) 编辑
58、 ISN(Initial Sequence Number)是固定的吗?
摘要:当一端为建立连接而发送它的SYN时,它为连接选择一个初始序号。ISN随时间而变化,因此每个连接 都将具有不同的ISN。ISN可以看作是一个32比特的计数器,每4ms加1 。这样选择序号的目的在于防止 在网络中被延迟的分组在以后又被传送,而导致某个连接的一方对它做错误的解释。 三次握手的其中一个重要功 阅读全文
posted @ 2021-08-08 23:00 超人不会灰啊 阅读(466) 评论(0) 推荐(0) 编辑
57、什么是半连接队列?
摘要:服务器第一次收到客户端的 SYN 之后,就会处于 SYN_RCVD 状态,此时双方还没有完全建立其连接, 服务器会把此种状态下请求连接放在一个队列里,我们把这种队列称之为半连接队列。 当然还有一个全连接队列,就是已经完成三次握手,建立起连接的就会放在全连接队列中。如果队列满 了就有可能会出现丢包现象 阅读全文
posted @ 2021-08-08 22:45 超人不会灰啊 阅读(182) 评论(0) 推荐(0) 编辑
56、为什么需要三次握手,两次不行吗?
摘要:弄清这个问题,我们需要先弄明白三次握手的目的是什么,能不能只用两次握手来达到同样的目的。 1.第一次握手:客户端发送网络包,服务端收到了。 这样服务端就能得出结论:客户端的发送能力、 服务端的接收能力是正常的。 2.第二次握手:服务端发包,客户端收到了。 这样客户端就能得出结论:服务端的接收、发送能 阅读全文
posted @ 2021-08-08 22:43 超人不会灰啊 阅读(268) 评论(0) 推荐(0) 编辑
55、三次握手相关内容
摘要:三次握手(Three-way Handshake)其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个 包。进行三次握手的主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序 列号为后面的可靠性传送做准备。实质上其实就是连接服务器指定端口,建立TCP连接,并同步连接双 阅读全文
posted @ 2021-08-08 22:41 超人不会灰啊 阅读(37) 评论(0) 推荐(0) 编辑
54、浏览器在与服务器建立了一个 TCP 连接后是否会在一个 HTTP 请求 完成后断开?什么情况下会断开?
摘要:在 HTTP/1.0 中,一个服务器在发送完一个 HTTP 响应后,会断开 TCP 链接。但是这样每次请求都会重 新建立和断开 TCP 连接,代价过大。所以虽然标准中没有设定,某些服务器对 Connection: keep-alive 的 Header 进行了支持。意思是说,完成这个 HTTP 请求 阅读全文
posted @ 2021-08-08 17:12 超人不会灰啊 阅读(367) 评论(0) 推荐(0) 编辑
53、应用层常见协议知道多少?了解几个?
摘要: 阅读全文
posted @ 2021-08-08 16:54 超人不会灰啊 阅读(136) 评论(0) 推荐(0) 编辑
50、TCP是什么?51、TCP头部报文字段介绍几个?各自的功能?
摘要:TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层 通信协议。 1.source port 和 destination port 两者分别为「源端口号」和「目的端口号」。源端口号就是指本地端口,目的端口就是远程端口。 可以这 阅读全文
posted @ 2021-08-08 16:53 超人不会灰啊 阅读(553) 评论(0) 推荐(0) 编辑
48、常见TCP的连接状态有哪些?
摘要:1.CLOSED:初始状态。 2.LISTEN:服务器处于监听状态。 3.SYN_SEND:客户端socket执行CONNECT连接,发送SYN包,进入此状态。 4.SYN_RECV:服务端收到SYN包并发送服务端SYN包,进入此状态。 5.ESTABLISH:表示连接建立。客户端发送了最后一个AC 阅读全文
posted @ 2021-08-08 16:35 超人不会灰啊 阅读(577) 评论(0) 推荐(0) 编辑
47、TCP头部中有哪些信息?
摘要:1.序号(32bit):传输方向上字节流的字节编号。初始时序号会被设置一个随机的初始值(ISN),之 后每次发送数据时,序号值 = ISN + 数据在整个字节流中的偏移。假设A -> B且ISN = 1024,第一段 数据512字节已经到B,则第二段数据发送时序号为1024 + 512。用于解决网络 阅读全文
posted @ 2021-08-08 16:20 超人不会灰啊 阅读(395) 评论(0) 推荐(0) 编辑
46、HTTP中有个缓存机制,但如何保证缓存是最新的呢?(缓存过期机 制)
摘要:max-age 指令出现在请求报文,并且缓存资源的缓存时间小于该指令指定的时间,那么就能接受该缓 存。 max-age 指令出现在响应报文,表示缓存资源在缓存服务器中保存的时间。 Cache-Control: max-age=31536000 Expires 首部字段也可以用于告知缓存服务器该资源什 阅读全文
posted @ 2021-08-08 16:13 超人不会灰啊 阅读(115) 评论(0) 推荐(0) 编辑
45、MTU和MSS分别是什么?
摘要:MTU:maximum transmission unit,最大传输单元,由硬件规定,如以太网的MTU为1500字节。 MSS:maximum segment size,最大分节大小,为TCP数据包每次传输的最大数据分段大小,一般由发送 端向对端TCP通知对端在每个分节中能发送的最大TCP数据。MS 阅读全文
posted @ 2021-08-08 16:10 超人不会灰啊 阅读(457) 评论(0) 推荐(0) 编辑
44、DDos 攻击了解吗?
摘要:客户端向服务端发送请求链接数据包,服务端向客户端发送确认数据包,客户端不向服务端发送确认数 据包,服务器一直等待来自客户端的确认 没有彻底根治的办法,除非不使用TCP DDos 预防: 1)限制同时打开SYN半链接的数目 2)缩短SYN半链接的Time out 时间 3)关闭不必要的服务 阅读全文
posted @ 2021-08-08 15:36 超人不会灰啊 阅读(36) 评论(0) 推荐(0) 编辑
42、Session和cookie应该如何去选择(适用场景)?43、Cookies和Session区别是什么?
摘要:42、Session和cookie应该如何去选择(适用场景)? Cookie 只能存储 ASCII 码字符串,而 Session 则可以存储任何类型的数据,因此在考虑数据复杂性时 首选 Session; Cookie 存储在浏览器中,容易被恶意查看。如果非要将一些隐私数据存在 Cookie 中,可以 阅读全文
posted @ 2021-08-08 15:33 超人不会灰啊 阅读(118) 评论(0) 推荐(0) 编辑
40、Session是什么?41、使用 Session 的过程是怎样的?
摘要:40、Session是什么? 除了可以将用户信息通过 Cookie 存储在用户浏览器中,也可以利用 Session 存储在服务器端,存储在服 务器端的信息更加安全。 Session 可以存储在服务器上的文件、数据库或者内存中。也可以将 Session 存储在 Redis 这种内存型数 据库中,效率会 阅读全文
posted @ 2021-08-08 15:31 超人不会灰啊 阅读(136) 评论(0) 推荐(0) 编辑
38、POST 方法比 GET 方法安全?
摘要:38、POST 方法比 GET 方法安全? 有人说POST 比 GET 安全,因为数据在地址栏上不可见。 然而,从传输的角度来说,他们都是不安全的,因为 HTTP 在网络上是明文传输的,只要在网络节点上 捉包,就能完整地获取数据报文。 要想安全传输,就只有加密,也就是 HTTPS。 39、POST 阅读全文
posted @ 2021-08-08 15:20 超人不会灰啊 阅读(406) 评论(0) 推荐(0) 编辑
36、GET 方法参数写法是固定的吗?
摘要:36、GET 方法参数写法是固定的吗? 在约定中,我们的参数是写在 ? 后面,用 & 分割。 我们知道,解析报文的过程是通过获取 TCP 数据,用正则等工具从数据中获取 Header 和 Body,从而提取参数。 比如header请求头中添加token,来验证用户是否登录等权限问题。 也就是说,我们 阅读全文
posted @ 2021-08-08 15:19 超人不会灰啊 阅读(136) 评论(0) 推荐(0) 编辑
35、HTTP中缓存的私有和共有字段?知道吗?
摘要:1.private 指令规定了将资源作为私有缓存,只能被单独用户使用,一般存储在用户浏览器中。 Cache-Control: private 2.public 指令规定了将资源作为公共缓存,可以被多个用户使用,一般存储在代理服务器中。 Cache-Control: public 阅读全文
posted @ 2021-08-08 14:33 超人不会灰啊 阅读(55) 评论(0) 推荐(0) 编辑
34、DNS查询方式有哪些?
摘要:递归解析 当局部DNS服务器自己不能回答客户机的DNS查询时,它就需要向其他DNS服务器进行查询。此时有两 种方式。局部DNS服务器自己负责向其他DNS服务器进行查询,一般是先向该域名的根域服务器查询, 再由根域名服务器一级级向下查询。最后得到的查询结果返回给局部DNS服务器,再由局部DNS服务器 阅读全文
posted @ 2021-08-08 14:32 超人不会灰啊 阅读(716) 评论(0) 推荐(0) 编辑
33、为何需要把 TCP/IP 协议栈分成 5 层(或7层)?开放式回答。
摘要:答:ARPANET 的研制经验表明,对于复杂的计算机网络协议,其结构应该是层次式的。 分层的好处: ①隔层之间是独立的 ②灵活性好 ③结构上可以分隔开 ④易于实现和维护 ⑤能促进标准化工作。 阅读全文
posted @ 2021-08-08 14:20 超人不会灰啊 阅读(209) 评论(0) 推荐(0) 编辑
32、端口有效范围是多少到多少?
摘要:0-1023为知名端口号,比如其中HTTP是80,FTP是20(数据端口)、21(控制端口) UDP和TCP报头使用两个字节存放端口号,所以端口号的有效范围是从0到65535。动态端口的范围是从 1024到65535 阅读全文
posted @ 2021-08-08 14:20 超人不会灰啊 阅读(530) 评论(0) 推荐(0) 编辑
31、什么是RARP?工作原理
摘要:概括: 反向地址转换协议,网络层协议,RARP与ARP工作方式相反。 RARP使只知道自己硬件地址的 主机能够知道其IP地址。RARP发出要反向解释的物理地址并希望返回其IP地址,应答包括能够提供所 需信息的RARP服务器发出的IP地址。 原理: (1)网络上的每台设备都会有一个独一无二的硬件地址, 阅读全文
posted @ 2021-08-08 14:17 超人不会灰啊 阅读(957) 评论(0) 推荐(0) 编辑
29、SQL注入攻击了解吗?
摘要:攻击者在HTTP请求中注入恶意的SQL代码,服务器使用参数构建数据库SQL命令时,恶意SQL被一起构 造,并在数据库中执行。 用户登录,输入用户名 lianggzone,密码 ‘ or ‘1’=’1 ,如果此时使用参数构造的方式,就会出现 select * from user where name 阅读全文
posted @ 2021-08-08 14:12 超人不会灰啊 阅读(57) 评论(0) 推荐(0) 编辑
28、Cookie与Session的对比
摘要:HTTP作为无状态协议,必然需要在某种方式保持连接状态。这里简要介绍一下Cookie和Session。 Cookie Cookie是客户端保持状态的方法。 Cookie简单的理解就是存储由服务器发至客户端并由客户端保存的一段字符串。为了保持会话,服务 器可以在响应客户端请求时将Cookie字符串放在 阅读全文
posted @ 2021-08-08 13:07 超人不会灰啊 阅读(42) 评论(0) 推荐(0) 编辑
26、Session知识大总结
摘要:除了可以将用户信息通过 Cookie 存储在用户浏览器中,也可以利用 Session 存储在服务器端,存储在服 务器端的信息更加安全。 Session 可以存储在服务器上的文件、数据库或者内存中。也可以将 Session 存储在 Redis 这种内存型数 据库中,效率会更高。 使用 Session 阅读全文
posted @ 2021-08-08 13:05 超人不会灰啊 阅读(44) 评论(0) 推荐(0) 编辑
24、Cookie是什么?25、Cookie有什么用途?用途
摘要:24、Cookie是什么? HTTP 协议是无状态的,主要是为了让 HTTP 协议尽可能简单,使得它能够处理大量事务,HTTP/1.1 引 入 Cookie 来保存状态信息。 Cookie 是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器之后向同一服务器再次发 起请求时被携带上,用于告 阅读全文
posted @ 2021-08-08 11:52 超人不会灰啊 阅读(666) 评论(0) 推荐(0) 编辑
23、HTTP请求和响应报文有哪些主要字段?
摘要:http协议是一个应用层协议,其报文分为请求报文和响应报文当客户端请求一个网页时,会先通过http协议将请求的内容封装在http请求报文之中,服务器收到该请求报文后根据协议规范进行报文解析,然后向客户端返回响应报文。 请求报文 1.请求行:Request Line 2.请求头:Request Hea 阅读全文
posted @ 2021-08-08 11:14 超人不会灰啊 阅读(479) 评论(0) 推荐(0) 编辑
22、如何保证公钥不被篡改?
摘要:将公钥放在数字证书中。只要证书是可信的,公钥就是可信的。 公钥加密计算量太大,如何减少耗用的时间? 每一次对话(session),客户端和服务器端都生成一个"对话密钥"(session key),用它来加密信息。由 于"对话密钥"是对称加密,所以运算速度非常快,而服务器公钥只用于加密"对话密钥"本身 阅读全文
posted @ 2021-08-08 01:03 超人不会灰啊 阅读(577) 评论(0) 推荐(0) 编辑
21、HTTPS是如何保证数据传输的安全,整体的流程是什么?(SSL是怎 么工作保证安全的)
摘要:(1)客户端向服务器端发起SSL连接请求; (2) 服务器把公钥发送给客户端,并且服务器端保存着唯一的私钥 (3)客户端用公钥对双方通信的对称秘钥进行加密,并发送给服务器端 (4)服务器利用自己唯一的私钥对客户端发来的对称秘钥进行解密 (5)进行数据传输,服务器和客户端双方用公有的相同的对称秘钥对数 阅读全文
posted @ 2021-08-08 01:01 超人不会灰啊 阅读(67) 评论(0) 推荐(0) 编辑
20、什么是SSL/TLS ?
摘要:SSL代表安全套接字层。它是一种用于加密和验证应用程序(如浏览器)和Web服务器之间发送的数据 的协议。 身份验证 , 加密Https的加密机制是一种共享密钥加密和公开密钥加密并用的混合加密机制。 SSL/TLS协议作用:认证用户和服务,加密数据,维护数据的完整性的应用层协议加密和解密需要两个 不同 阅读全文
posted @ 2021-08-07 22:00 超人不会灰啊 阅读(370) 评论(0) 推荐(0) 编辑
19、HTTPS和HTTP的区别
摘要:1、HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安 全, HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安 全。 2、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。 3、http和h 阅读全文
posted @ 2021-08-07 21:42 超人不会灰啊 阅读(192) 评论(0) 推荐(0) 编辑

 
点击右上角即可分享
微信分享提示