跨境互联网 跨境互联网
首页
  • AI 工具

    • 绘图提示词工具 (opens new window)
    • ChatGPT 指令 (opens new window)
  • ChatGPT

    • ChatGP T介绍
    • ChatGPT API 中文开发手册
    • ChatGPT 中文调教指南
    • ChatGPT 开源项目
  • Midjourney

    • Midjourney 文档
  • Stable Diffusion

    • Stable Diffusion 文档
  • 其他

    • AIGC 热门文章
    • 账号合租 (opens new window)
    • 有趣的网站
  • Vue

    • Vue3前置
  • JAVA基础

    • Stream
    • Git
    • Maven
    • 常用第三方类库
    • 性能调优工具
    • UML系统建模
    • 领域驱动设计
    • 敏捷开发
    • Java 测试
    • 代码规范及工具
    • Groovy 编程
  • 并发编程&多线程

    • 并发编程
    • 高性能队列 Disruptor
    • 多线程并发在电商系统下的应用
  • 其他

    • 面试题
  • 消息中间中间件

    • Kafka
    • RabbitMQ
    • RocketMQ
  • 任务调度

    • Quartz
    • XXL-Job
    • Elastic-Job
  • 源码解析

    • Mybatis 高级使用
    • Mybatis 源码剖析
    • Mybatis-Plus
    • Spring Data JPA
    • Spring 高级使用
    • Spring 源码剖析
    • SpringBoot 高级使用
    • SpringBoot 源码剖析
    • Jdk 解析
    • Tomcat 架构设计&源码剖析
    • Tomcat Web应用服务器
    • Zookeeper 高级
    • Netty
  • 微服务框架

    • 分布式原理
    • 分布式集群架构场景化解决方案
    • Dubbo 高级使用
    • Dubbo 核心源码剖析
    • Spring Cloud Gateway
    • Nacos 实战应用
    • Sentinel 实战应用
    • Seata 分布式事务
  • 数据结构和算法的深入应用
  • 存储

    • 图和Neo4j
    • MongoDB
    • TiDB
    • MySQL 优化
    • MySQL 平滑扩容实战
    • MySQL 海量数据存储与优化
    • Elasticsearch
  • 缓存

    • Redis
    • Aerospike
    • Guava Cache
    • Tair
  • 文件存储

    • 阿里云 OSS 云存储
    • FastDF 文件存储
  • 基础

    • Linux 使用
    • Nginx 使用与配置
    • OpenResty 使用
    • LVS+Keepalived 高可用部署
    • Jekins
  • 容器技术

    • Docker
    • K8S
    • K8S
  • 01.全链路(APM)
  • 02.电商终极搜索解决方案
  • 03.电商亿级数据库设计
  • 04.大屏实时计算
  • 05.分库分表的深入实战
  • 06.多维系统下单点登录
  • 07.多服务之间分布式事务
  • 08.业务幂等性技术架构体系
  • 09.高并发下的12306优化
  • 10.每秒100W请求的秒杀架构体系
  • 11.集中化日志管理平台的应用
  • 12.数据中台配置中心
  • 13.每天千万级订单的生成背后痛点及技术突破
  • 14.红包雨的架构设计及源码实现
  • 人工智能

    • Python 笔记
    • Python 工具库
    • 人工智能(AI) 笔记
    • 人工智能(AI) 项目笔记
  • 大数据

    • Flink流处理框架
  • 加密区

    • 机器学习(ML) (opens new window)
    • 深度学习(DL) (opens new window)
    • 自然语言处理(NLP) (opens new window)
AI 导航 (opens new window)

Revin

首页
  • AI 工具

    • 绘图提示词工具 (opens new window)
    • ChatGPT 指令 (opens new window)
  • ChatGPT

    • ChatGP T介绍
    • ChatGPT API 中文开发手册
    • ChatGPT 中文调教指南
    • ChatGPT 开源项目
  • Midjourney

    • Midjourney 文档
  • Stable Diffusion

    • Stable Diffusion 文档
  • 其他

    • AIGC 热门文章
    • 账号合租 (opens new window)
    • 有趣的网站
  • Vue

    • Vue3前置
  • JAVA基础

    • Stream
    • Git
    • Maven
    • 常用第三方类库
    • 性能调优工具
    • UML系统建模
    • 领域驱动设计
    • 敏捷开发
    • Java 测试
    • 代码规范及工具
    • Groovy 编程
  • 并发编程&多线程

    • 并发编程
    • 高性能队列 Disruptor
    • 多线程并发在电商系统下的应用
  • 其他

    • 面试题
  • 消息中间中间件

    • Kafka
    • RabbitMQ
    • RocketMQ
  • 任务调度

    • Quartz
    • XXL-Job
    • Elastic-Job
  • 源码解析

    • Mybatis 高级使用
    • Mybatis 源码剖析
    • Mybatis-Plus
    • Spring Data JPA
    • Spring 高级使用
    • Spring 源码剖析
    • SpringBoot 高级使用
    • SpringBoot 源码剖析
    • Jdk 解析
    • Tomcat 架构设计&源码剖析
    • Tomcat Web应用服务器
    • Zookeeper 高级
    • Netty
  • 微服务框架

    • 分布式原理
    • 分布式集群架构场景化解决方案
    • Dubbo 高级使用
    • Dubbo 核心源码剖析
    • Spring Cloud Gateway
    • Nacos 实战应用
    • Sentinel 实战应用
    • Seata 分布式事务
  • 数据结构和算法的深入应用
  • 存储

    • 图和Neo4j
    • MongoDB
    • TiDB
    • MySQL 优化
    • MySQL 平滑扩容实战
    • MySQL 海量数据存储与优化
    • Elasticsearch
  • 缓存

    • Redis
    • Aerospike
    • Guava Cache
    • Tair
  • 文件存储

    • 阿里云 OSS 云存储
    • FastDF 文件存储
  • 基础

    • Linux 使用
    • Nginx 使用与配置
    • OpenResty 使用
    • LVS+Keepalived 高可用部署
    • Jekins
  • 容器技术

    • Docker
    • K8S
    • K8S
  • 01.全链路(APM)
  • 02.电商终极搜索解决方案
  • 03.电商亿级数据库设计
  • 04.大屏实时计算
  • 05.分库分表的深入实战
  • 06.多维系统下单点登录
  • 07.多服务之间分布式事务
  • 08.业务幂等性技术架构体系
  • 09.高并发下的12306优化
  • 10.每秒100W请求的秒杀架构体系
  • 11.集中化日志管理平台的应用
  • 12.数据中台配置中心
  • 13.每天千万级订单的生成背后痛点及技术突破
  • 14.红包雨的架构设计及源码实现
  • 人工智能

    • Python 笔记
    • Python 工具库
    • 人工智能(AI) 笔记
    • 人工智能(AI) 项目笔记
  • 大数据

    • Flink流处理框架
  • 加密区

    • 机器学习(ML) (opens new window)
    • 深度学习(DL) (opens new window)
    • 自然语言处理(NLP) (opens new window)
AI 导航 (opens new window)
  • 谈一谈对CAS的理解
  • Elasticsearch
  • 网络
    • 题⽬描述
      • 1 简述tcp和udp的区别?
      • 2 tcp为什么要三次握⼿,两次不⾏吗?为什么?
      • 3 OSI的七层模型都有哪些?
      • 4 get和post请求有哪些区别?
    • 1.jsp和servlet有什么区别?
    • 2.jsp有哪些内置对象?作⽤分别是什么?
    • 3.说⼀下jsp的4种作⽤域?
    • 4.session和cookie有什么区别?
  • 单点登录
  • 容器
  • 负载均衡
  • Docker
  • Redis
  • Redis
  • IO
  • JDK与Java8
  • Nginx
  • Netty
  • 锁
  • 设计模式
  • MySQL
  • 并发编程
  • 数据结构与算法
  • Spring与SpringBoot
  • SpringCloud与Dubbo
  • MyBatis
  • 分布式理论
  • JVM
  • 面试
Revin
2023-07-17
目录

网络

# 1 TCP&UDP区别,TCP三次握手目的,OSI七层模型,get和post区别

# 题⽬描述

# 1 简述tcp和udp的区别?

  • TCP⾯向连接(如打电话要先拨号建⽴连接);UDP是⽆连接的,即发送数据之前不需要建⽴连接。
  • TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,⽆差错,不丢失,不重复,且按序到达;UDP尽最⼤努⼒交付,即不保证可靠交付。
  • Tcp通过校验和,重传控制,序号标识,滑动窗⼝、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进⾏顺序控制。
  • UDP具有较好的实时性,⼯作效率⽐TCP⾼,适⽤于对⾼速传输和实时性有较⾼的通信或⼴播通信。
  • 每⼀条TCP连接只能是点到点的;UDP⽀持⼀对⼀,⼀对多,多对⼀和多对多的交互通信
  • TCP对系统资源要求较多,UDP对系统资源要求较少。

# 2 tcp为什么要三次握⼿,两次不⾏吗?为什么?

为了实现可靠数据传输,TCP协议的通信双⽅,都必须维护⼀个序列号,以标识发送出去的数据包中,哪些是已经被对⽅收到的。三次握⼿的过程即是通信双⽅相互告知序列号起始值,并确认对⽅已经收到了序列号起始值的必经步骤。

如果只是两次握⼿,⾄多只有连接发起⽅的起始序列号能被确认,另⼀⽅选择的序列号则得不到确认。

# 3 OSI的七层模型都有哪些?

  • 应⽤层:⽹络服务与最终⽤⼾的⼀个接⼝。
  • 表⽰层:数据的表⽰、安全、压缩。
  • 会话层:建⽴、管理、终⽌会话。
  • 传输层:定义传输数据的协议端⼝号,以及流控和差错校验。
  • ⽹络层:进⾏逻辑地址寻址,实现不同⽹络之间的路径选择。
  • 数据链路层:建⽴逻辑连接、进⾏硬件地址寻址、差错校验等功能。
  • 物理层:建⽴、维护、断开物理连接。

# 4 get和post请求有哪些区别?

  • GET在浏览器回退时是⽆害的,⽽POST会再次提交请求。
  • GET产⽣的URL地址可以被Bookmark,⽽POST不可以。
  • GET请求会被浏览器主动cache,⽽POST不会,除⾮⼿动设置。
  • GET请求只能进⾏url编码,⽽POST⽀持多种编码⽅式。
  • GET请求参数会被完整保留在浏览器历史记录⾥,⽽POST中的参数不会被保留。
  • GET请求在URL中传送的参数是有⻓度限制的,⽽POST么有。
  • 对参数的数据类型,GET只接受ASCII字符,⽽POST没有限制。
  • GET⽐POST更不安全,因为参数直接暴露在URL上,所以不能⽤来传递敏感信息。
  • GET参数通过URL传递,POST放在Requestbody中

# JSP

# 1.jsp和servlet有什么区别?

jsp经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP

的代码,Web容器将JSP的代码编译成JVM能够识别的java类)

jsp更擅⻓表现于⻚⾯显⽰,servlet更擅⻓于逻辑控制。

Servlet中没有内置对象,Jsp中的内置对象都是必须通过HttpServletRequest对象,

HttpServletResponse对象以及HttpServlet对象得到。

Jsp是Servlet的⼀种简化,使⽤Jsp只需要完成程序员需要输出到客⼾端的内容,Jsp中的Java脚

本如何镶嵌到⼀个类中,由Jsp容器完成。⽽Servlet则是个完整的Java类,这个类的Service⽅法⽤于⽣成对客⼾端的响应。

# 2.jsp有哪些内置对象?作⽤分别是什么?

JSP有9个内置对象:

request:封装客⼾端的请求,其中包含来⾃GET或POST请求的参数;

response:封装服务器对客⼾端的响应;

pageContext:通过该对象可以获取其他对象;

session:封装⽤⼾会话的对象;

application:封装服务器运⾏环境的对象;

out:输出服务器响应的输出流对象;

config:Web应⽤的配置对象;

page:JSP⻚⾯本⾝(相当于Java程序中的this);

exception:封装⻚⾯抛出异常的对象。

# 3.说⼀下jsp的4种作⽤域?

JSP中的四种作⽤域包括page、request、session和application,具体来说:

page代表与⼀个⻚⾯相关的对象和属性。

request代表与Web客⼾机发出的⼀个请求相关的对象和属性。⼀个请求可能跨越多个⻚⾯,涉及多个Web组件;需要在⻚⾯显⽰的临时数据可以置于此作⽤域。

session代表与某个⽤⼾与服务器建⽴的⼀次会话相关的对象和属性。跟某个⽤⼾相关的数据应该放在⽤⼾⾃⼰的session中。

application代表与整个Web应⽤程序相关的对象和属性,它实质上是跨越整个Web应⽤程序,包括多个⻚⾯、请求和会话的⼀个全局作⽤域。

# 4.session和cookie有什么区别?

由于HTTP协议是⽆状态的协议,所以服务端需要记录⽤⼾的状态时,就需要⽤某种机制来识具体的⽤⼾,这个机制就是Session.典型的场景⽐如购物⻋,当你点击下单按钮时,由于HTTP协议⽆状态,所以并不知道是哪个⽤⼾操作的,所以服务端要为特定的⽤⼾创建了特定的Session,⽤⽤于标识这个⽤⼾,并且跟踪⽤⼾,这样才知道购物⻋⾥⾯有⼏本书。这个Session是保存在服务端的,有⼀个唯⼀标识。在服务端保存Session的⽅法很多,内存、数据库、⽂件都有。集群的时候也要考虑Session的转移,在⼤型的⽹站,⼀般会有专⻔的Session服务器集群,⽤来保存⽤⼾会话,这个时候Session信息都是放在内存的,使⽤⼀些缓存服务⽐如Memcached之类的来放Session。

思考⼀下服务端如何识别特定的客⼾?这个时候Cookie就登场了。每次HTTP请求的时候,客⼾端都会发送相应的Cookie信息到服务端。实际上⼤多数的应⽤都是⽤Cookie来实现Session跟踪的,第⼀次创建Session的时候,服务端会在HTTP协议中告诉客⼾端,需要在Cookie⾥⾯记录⼀个SessionID,以后每次请求把这个会话ID发送到服务器,我就知道你是谁了。有⼈问,如果客⼾端的浏览器禁⽤了Cookie怎么办?⼀般这种情况下,会使⽤⼀种叫做URL重写的技术来进⾏会话跟踪,即每次HTTP交互,URL后⾯都会被附加上⼀个诸如sid=xxxxx这样的参数,服务端据此来识别⽤⼾。

Cookie其实还可以⽤在⼀些⽅便⽤⼾的场景下,设想你某次登陆过⼀个⽹站,下次登录的时候不想再次输⼊账号了,怎么办?这个信息可以写到Cookie⾥⾯,访问⽹站的时候,⽹站⻚⾯的脚本可以读取这个信息,就⾃动帮你把⽤⼾名给填了,能够⽅便⼀下⽤⼾。这也是Cookie名称的由来,给⽤⼾的⼀点甜头。所以,总结⼀下:Session是在服务端保存的⼀个数据结构,⽤来跟踪⽤⼾的状态,这个数据可以保存在集群、数据库、⽂件中;Cookie是客⼾端保存⽤⼾信息的⼀种机制,⽤来记录⽤⼾的⼀些信息,也是实现Session的⼀种⽅式。

上次更新: 2025/04/03, 11:07:08
Elasticsearch
单点登录

← Elasticsearch 单点登录→

最近更新
01
tailwindcss
03-26
02
PaddleSpeech
02-18
03
whisper
02-18
更多文章>
Theme by Vdoing | Copyright © 2019-2025 跨境互联网 | 豫ICP备14016603号-5 | 豫公网安备41090002410995号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式