您的位置:首页 > 科技 > 能源 > app开发公司推荐安徽创逸科技有限公司_建电影网站赚钱挣钱吗_成人短期电脑培训班学费_手机优化

app开发公司推荐安徽创逸科技有限公司_建电影网站赚钱挣钱吗_成人短期电脑培训班学费_手机优化

2025/4/21 2:48:52 来源:https://blog.csdn.net/weixin_74066883/article/details/146263322  浏览:    关键词:app开发公司推荐安徽创逸科技有限公司_建电影网站赚钱挣钱吗_成人短期电脑培训班学费_手机优化
app开发公司推荐安徽创逸科技有限公司_建电影网站赚钱挣钱吗_成人短期电脑培训班学费_手机优化

1.计算机网络

1. 从输入URL到页面展示的完整流程

1. 浏览器接收请求并检查缓存
  • 缓存命中:若浏览器缓存中存在该资源,直接返回资源,流程结束。
  • 缓存未命中:进入网络请求阶段。

2. DNS解析获取IP地址
  • DNS解析顺序
    本地浏览器缓存 → 本地 Host 文件 → 路由器缓存 → DNS服务器递归查询。
  • 协议相关
    若使用 HTTPS 协议,需额外建立 TLS 加密连接。

3. 建立TCP连接并构建请求
  • TCP三次握手:浏览器与服务器IP建立TCP连接。
  • 请求信息构建
    • 生成请求行(如 GET / HTTP/1.1)、请求头。
    • 附加与该域名相关的 Cookie 等数据到请求头。

4. 服务器处理请求并生成响应
  • 服务器处理逻辑:根据请求路径、参数、Header 等信息生成响应数据。
  • 返回响应内容:包括状态码(如 200)、响应头(如 Content-Type)、响应体(如 HTML)。

5. 浏览器解析响应头
  • 重定向处理:若状态码为 301 或 302,根据 Location 头重定向到新地址。
  • 内容类型处理
    • 字节流类型(如文件下载):提交给下载管理器。
    • HTML类型:进入页面渲染流程。

6. 页面渲染流程
  1. 解析HTML:生成 DOM 树(文档对象模型)。
  2. 解析CSS:计算样式,生成 CSSOM 树(CSS对象模型)。
  3. 构建渲染树:合并 DOM 和 CSSOM,生成渲染树(Render Tree)。
  4. 布局(Layout)​:计算渲染树节点的几何位置。
  5. 绘制(Painting)​:将渲染树转换为屏幕像素,最终展示页面。

2. 三次握手步骤

步骤方向报文内容状态变化
第一次客户端 → 服务端SYN=1(同步请求),携带初始序列号 seq=x客户端进入 SYN_SENT
第二次服务端 → 客户端SYN=1(同步请求) + ACK=1(确认),携带 seq=y 和 ack=x+1服务端进入 SYN_RCVD
第三次客户端 → 服务端ACK=1(确认),携带 seq=x+1 和 ack=y+1双方进入 ESTABLISHED

3.UDP  与 TCP

TCP

  1. 定义与特点

    • TCP(传输控制协议)是面向连接的、可靠的传输层协议,通过三次握手建立连接、四次挥手断开连接,确保数据的完整性和有序性
    • 核心机制:
      • 三次握手:客户端发送 SYN=1, seq=x → 服务端回复 SYN=1, ACK=1, seq=y, ack=x+1 → 客户端确认 ACK=1, seq=x+1, ack=y+1
      • 四次挥手:客户端发送 FIN=1 → 服务端回复 ACK=1 → 服务端发送 FIN=1 → 客户端确认 ACK=1
      • 滑动窗口:动态调整发送速率,避免接收方处理过载
      • 超时重传:未收到ACK时自动重传数据包
      • 拥塞控制:通过慢启动算法等防止网络过载
  2. 可靠性保障

    • 通过序列号、确认应答、校验和、流量控制等机制,确保数据无丢失、无错误、有序到达
  3. 应用场景

    • 文件传输(FTP)、网页浏览(HTTP/HTTPS)、邮件(SMTP)等对数据准确性要求高的场景

UDP

  1. 定义与特点

    • UDP(用户数据报协议)是无连接的、不可靠的传输层协议,直接发送数据包,无需建立/断开连接
    • 核心机制:
      • 无状态传输:每个数据包独立发送,不保证顺序或完整性
      • 简单头部:仅包含源端口、目的端口、长度、校验和

  2. 不可靠性表现

    • 不提供确认应答、重传、流量控制等机制,数据可能丢失或乱序

  3. 应用场景

    • 实时性要求高但允许少量丢包的场景,如视频直播、语音通话、在线游戏、DNS查询等

4. HTTP常见字段  &&    HTTP状态码

Host          客户端发送请求时,用来指定服务器的域名

Content-length      服务器返回数据时,带有该字段,表示回应的数据长度

Connection      常用于客户端要求服务器使用HTTP连接时使用

Content-Type          服务器回应时,告诉客户端,本次数据的格式

Content-Encoding   服务器返回的数据使用了什么压缩格式

  • 200 OK:请求成功,服务器返回目标资源。
  • 201 Created:请求成功且服务器创建了新资源(如POST提交后)。
  • 204 No Content:请求成功,但无返回内容(常见于DELETE请求)。
  • 206 Partial Content:服务器成功处理了部分GET请求(用于分块下载
  • 301 Moved Permanently:资源永久重定向到新URL。
  • 302 Found:资源临时重定向(后续可能仍用原URL)。
  • 304 Not Modified:资源未修改,客户端应使用缓存。
  • 401 Unauthorized:需身份验证(如未登录)。
  • 403 Forbidden:服务器拒绝请求(权限不足)。
  • 404 Not Found:资源不存在(URL错误或已删除)
  • 500 Internal Server Error:服务器内部处理失败。
  • 502 Bad Gateway:网关/代理从上游服务器收到无效响应。
  • 503 Service Unavailable:服务器过载或维护(临时状态)。
  • 504 Gateway Timeout:网关未及时收到上游服务器响应。

5.Get 和 Post 区别

核心作用对比

方法用途示例场景
GET从服务器获取资源(数据、页面等)访问网页、搜索查询(如/search?q=keyword
POST向服务器提交数据(表单、文件等)用户登录(提交账号密码)、上传文件

2. 参数传递方式

方法参数位置限制
GET直接附加在URL后(?key1=value1&key2=value2仅支持ASCII字符,特殊字符需URL编码
POST封装在请求体(Body)​支持任意数据类型(文本、二进制等)

示例

  • GET请求URL:/api/user?id=123
  • POST请求Body:{"name": "Alice", "age": 25}

3. 安全性差异

方法风险注意事项
GET参数暴露在URL、浏览器历史、服务器日志中绝对不可传递密码、令牌等敏感信息
POST参数在Body中,不直接可见仍需配合HTTPS加密确保传输安全

4. 数据长度限制

方法限制来源典型限制值
GET浏览器/服务器对URL长度的限制≤2KB(不同浏览器可能不同)
POST理论上无限制,实际受服务器配置约束默认允许MB级数据(如文件上传)

5. 编码方式

方法支持的编码常见场景
GETapplication/x-www-form-urlencoded简单键值对参数
POST支持多种编码:
multipart/form-data(文件上传)
application/json(API交互)
复杂数据或二进制文件

6. 缓存与浏览器行为

行为GETPOST
浏览器缓存自动缓存(可被重复使用)不缓存(除非手动设置)
历史记录保留参数
书签保存可保存带参数的URL为书签不可保存
页面回退无害(直接从缓存加载)会重新提交数据(需警惕重复提交)

7.时间消耗不同


·GET产生一个TCP数据包;
·POST产生两个TCP数据包。
对于GET方式的请求,浏览器会把 header 和 data 一并发送出去,服务器响应 200 (返回数据);而对于POST,浏览器先发送 Header,服务器响应 100 continue,浏览器再发送 data,服务器响应 200 ok (返回数据)。

8.幂等


意思是多次执行相同的操作,结果都是「相同」的。
·GET方法就是安全且幂等的,因为它是「只读」操作,无论操作多少次,服务器上的数据都是安全的,且每次的结果都是相同的。
·POST因为是「新增或提交数据」的操作,会修改服务器上的资源,所以是不安全的,且多次提交数据就会创建多个资源,所以不是幂等的。

2.操作系统

1.线程与进程

进程是操作系统资源分配的最小单位,代表程序的一次执行实例​(如运行中的微信程序)。
拥有独立的内存空间(代码段、数据段、堆栈等)、文件句柄和系统资源
进程间完全隔离,一个进程崩溃不会影响其他进程

线程是CPU调度的最小单位,属于进程内的执行单元(  如数据库应用中处理查询的多个子任务)。共享进程的资源(内存、文件等),但拥有独立的栈和程序计数器
线程崩溃可能导致整个进程终止

2.缓存

答:缓存,就是数据交换的缓冲区,是一种用于临时存储数据的高效存储机制,其主要目的是加快访问速度、减轻后台系统压力,从而提升整体性能。我们平时说的缓存大多是指内存。目的是,把读写速度慢的介质的数据保存在读写速度快的介质中(这里的快与慢是相对概念),从而提高读写速度,减少时间消耗。例如:

CPU高速缓存:告诉缓存的读写速度远高于内存。
CPU读数据时,如果在高速缓存中找到所需数据,就不需要读内存
CPU写数据时,先写到高速缓存,再写回内存。
磁盘缓存:磁盘缓存其实就把常用的磁盘数据保存在内存中,内存读写速度也是远高于磁盘的。
读数据时从内存中读取
写数据时,可先写回内存,定时或定量写回到磁盘,或者是同步写回。

3.内存碎片问题

造成堆内存利用率很低的一个主要原因就是内存碎片化。内存碎片化就是计算机程序在运行过程中,频繁地内存分配与释放引起的内存空间不连续性问题,可能导致内存利用率降低甚至无法分配所需的内存。内存碎片主要分为内碎片和外碎片两种类型。

1.内碎片

•定义:内碎片指已分配的内存块未被实际使用的部分。即程序请求的内存小于分配的内存块大小时,多余的部分形成内碎片。
•产生原因:内存分配器通常按固定的对齐规则分配内存块(如对齐到4字节或8字节),分配大小往往是申请大小的倍数。
•举例:程序需要13字节内存,但内存分配器按16字节对齐规则分配了16字节。多出的3字节就是内碎片

2.外碎片

•定义:外碎片是指系统中有足够总量的空间内存,但这些空闲内存不连续,无法满足一个较大的分配请求。
•产生原因:频繁的小内存块的分配和释放导致内存分布变得零散和不连续的小块空闲内存无法自动组合成足够大的连续块。
•举例:系统中有多个小块空闲内存,总量为100MB,但是由于这些空闲内存块彼此不连续,无法分配一个需要50MB的大块。

3.tip:
内存池的固定大小块分配等机制,可以减少有效外碎片,内存池的内存分配策略根据实际需求制定的越精细产生的内碎片越少。ps:内存碎片是不可能减少的。

4.程序内存的五大区域

区域    存储内容    特点
​**.text段**         编译后的机器代码(函数、指令)    只读,不可修改
​**.data段**        已初始化的全局变量、静态变量(如 int a = 10;)    程序启动时加载,生命周期与程序一致
​**.bss段**         未初始化的全局变量、静态变量(如 int b;)    程序启动时清零,不占磁盘空间
​堆(Heap)​      动态分配的内存(new/malloc分配的对象)    手动管理,需显式释放
​栈(Stack)​     局部变量、函数参数、返回值等    自动管理,随作用域结束释放

5进程间有哪些通信方式


1.管道:是一种半双工的通信方式,数据只能单向流动而且只能在具有父子进程关系的进程间使用。
2.命名管道: 也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。
3.信号量: 是一个计数器,可以用来控制多个进程对共享资源的访问,常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此主要作为进程间以及同一进程内不同线程之间的同步手段。
4.消息队列: 消息队列是消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
5.信号:用于通知接收进程某个事件已经发生,从而迫使进程执行信号处理程序。
6.共享内存: 就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的进程通信方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,比如信号量配合使用,来实现进程间的同步和通信。
7.Socket套接字: 是支持TCP/IP的网络通信的基本操作单元,主要用于在客户端和服务器之间通过网络进行通信。

6.什么是死锁?如何避免死锁?


死锁是指两个或多个进程在争夺系统资源时,由于互相等待对方释放资源而无法继续执行的状态。
死锁只有同时满足以下四个条件才会发生:
· ​互斥条件:一个进程占用了某个资源时,其他进程无法同时占用该资源。
· ​请求保持条件:一个线程因为请求资源而阻塞的时候,不会释放自己的资源。
· ​不可剥夺条件:资源不能被强制性地从一个进程中剥夺,只能由持有自愿释放。
· ​环路等待条件:多个进程之间形成一个循环等待资源的链,每个进程都在等待下一个进程所占有的资源。

只需要破坏上面一个条件就可以破坏死锁。
· ​破坏请求与保持条件:一次性申请所有的资源。
· ​破坏不可剥夺条件:占用部分资源的线程进一步申请其他资源时,如果申请不到,可以主动释放它占有的资源。
· ​破坏循环等待条件:靠按序申请资源来预防。让所有进程按照相同的顺序请求资源,释放资源则反序释放。

7.什么是虚拟内存?为什么需要虚拟内存?

虚拟内存在每一个进程创建加载的过程中,会分配一个连续虚拟地址空间,它不是真实存在的,而是通过映射与实际地址空间对应,这样就可以使每个进程看起来都有自己独立的连续地址空间,并允许程序访问比物理内存RAM更大的地址空间,每个程序都可以认为它拥有足够的内存来运行。

需要虚拟内存的原因:
· ​内存扩展:虚拟内存使得每个程序都可以使用比实际可用内存更多的内存,从而允许运行更大的程序或处理更多的数据。
· ​内存隔离:虚拟内存还提供了进程之间的内存隔离。每个进程都有自己的虚拟地址空间,因此一个进程无法直接访问另一个进程的内存。
· ​物理内存管理:虚拟内存允许操作系统动态地将数据和程序的部分加载到物理内存中,以满足当前正在运行的进程的需求。当物理内存不足时,操作系统可以将不常用的数据或程序暂时移到硬盘上,从而释放内存,以便其他进程使用。
· ​页面交换:当物理内存不足时,操作系统可以将一部分数据从物理内存中,这个过程被称为页面交换。当需要时,数据可以再次从虚拟内存中加载到物理内存中。这样可以保证系统可以继续运行,尽管物理内存有限。
· ​内存映射文件:虚拟内存还可以用于将文件映射到内存中,这使得文件的读取和写入可以像访问内存一样高效。

7.内存分段和分页

内存分段是将一个程序的内存空间分为不同的逻辑段(segments),每个段代表程序的一个功能模块或数据类型,如代码段、数据段、堆栈段等。每个段都有其自己的大小和权限。

内存分页是把整个虚拟和物理内存空间分成固定大小的页(如4KB)。这样一个连续并且尺寸固定的内存空间,我们叫页。

作用

  1. 逻辑隔离:内存分段和分页都实现了程序的逻辑隔离,使不同的功能模块或数据类型能够被单独管理和保护,提高了程序的可靠性和安全性。
  2. 内存保护:通过将不同的段或页面设置为只读、可读写、不可执行等权限,操作系统可以确保程序不会越界访问或修改其他段的内容,从而提高了系统的稳定性。
  3. 虚拟内存:分段和分页都有助于实现虚拟内存的概念,允许应用程序认为它们在使用的是一个比实际物理内存更大的内存空间。
  4. 内存共享:通过分页,操作系统可以实现内存页面的共享,从而节省内存空间,多个进程可以共享相同的代码或数据页面。
  5. 内存管理:分页更加灵活,允许操作系统将不同进程的页面分散存放在物理内存中,从而提高内存利用率。分段则更适用于管理不同的逻辑模块。

分段与分页的区别

  • 分页对用户不可见,分段对用户可见。
  • 分页的地址空间是一维的,分段的地址空间是二维的。
  • 分页(单级页表)、分段访问一个逻辑地址都需要两次访存,分段存储中可以引入快表机制。
  • 分段更容易实现信息的共享和保护(纯代码或可重入代码可以共享)。

分段与分页优缺点

  • 分页管理:内存空间利用率高,不会产生外部碎片,只会有少量的页内碎片。但是不方便按照逻辑模块实现信息的共享和保护。
  • 分段管理:很方便按照逻辑模块实现信息的共享和保护。但是如果段长过大,为其分配很大的连续空间会很不方便,段式管理会产生外部碎片。

8. 解释一下用户态和核心态


用户态(User Mode)和核心态(Kernel Mode)是操作系统中两种不同的执行模式,用于控制进程或程序对计算机硬件资源的访问权限和操作范围。

用户态

  • 在用户态下,进程或程序只能访问受限的资源和执行受限的指令集。
  • 不能直接访问操作系统的核心部分,也不能直接访问硬件资源。
  • 用户态下的CPU不允许独占,即CPU能够被其他程序获取。

核心态

  • 核心态是操作系统的特权级别,允许进程或程序执行特权指令和访问操作系统的核心部分。
  • 在核心态下,进程可以直接访问硬件资源,执行系统调用,管理内存、文件系统等操作。
  • 处于内核态的CPU可以从一个程序切换到另外一个程序,并且占用CPU不会发生抢占情况。
  • 一般处于特权级0的状态称之为内核态。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com