java面试(网络)

TCP和UDP有什么区别?TCP三次握手不是两次?

TCP:面向连接,可靠的,传输层通信协议。点对点,占用资源多,效率低。
UDP:无连接,不可靠,传输层通信协议。广播,协议简单,占用资源少,效率高。
两次握手客户端在第一次握手推出后造成资源浪费。

JAVA有几种IO模型?

BIO:同步阻塞IO,可靠性差,吞吐量低。适用于连接少,且比较固定的场景。JDK1.4唯一选择。
BIO
NIO:同步非阻塞IO:可靠性好,吞吐量较高。适用于连接多,且连接短操作,例如聊天室,Netty。JDK1.4+。
NIO
AIO:异步非阻塞IO:可靠性好,吞吐量高,适用于连接多,且连接长操作,例如相册服务器,视频流,JDK1.7+
AIO
同步,异步针对请求,阻塞,非阻塞针对客户端
客户端发请求,一直等待服务器响应:客户端:阻塞,请求:同步
客户端发请求,轮询服务器响应:客户端:非阻塞,请求:同步
客户端发请求,等待服务器响应:客户端:阻塞,请求:异步
客户端发请求,不等待服务器返回响应:客户端:非阻塞,请求:异步

JAVA NIO核心组件?

Channel Buffer Selector
Buffer:缓冲区,手动或自动将数据送到channel/client。
Channel:接口,类似流,每个Channel对应一个Buffer缓冲区。Channel会注册到Selector上,用于读写数据
Selector:选择器,能够检测多个注册的通道是否有事件发生。如果有事件发生,对该事件进行相应的处理,只用一个线程去管理多个通道(连接),极大地减少了系统开销,简化了初始化成本和多线程之间上下文切换的成本。
NIO

select,poll和epoll区别?javaNIO使用那种机制?

NIO中Selector核心实现机制。
用户空间和内核空间:操作系统为保护系统安全,将内核划分为两个部分。用户空间不能直接访问底层硬件设备,必须通过内核空间。
文件描述符(FD):形式上是整数,实际上是索引,指向内核为每个进程维护进程所打开的文件记录表,当程序打开/创建一个文件时,内核就会向i昵称返回一个FD。
select:会维护一个FD集合fd_set,将fd_set从用户空间复制到内核空间,激活socket。fdSet在x64大小2048。
poll:类似select,把fd_set优化为pollFd(链表)结构。fd集合突破大小限制。
epoll:事件驱动,不再扫描所有的fd,只将用户关心(读写)的fd事件存放在内核的事件表中,这样减少了从用户到内核的拷贝数据。
总结:
select:遍历 数组 受限内核2048 低
poll: 遍历 链表 无上限 低
epoll: 遍历 红黑树 无上限 高
java中可查看DefaultSelectorProvider源码,在windows下使用WindowsSelectorProvider,而Linux下,根据Linux内核版本,2.6+使用EpollSelectorProvider,否则使用默认的PollSelectorProvider。
select:1984年,poll:1997年,epoll:2002年。受限于机器硬件。

描述下HTTP和HTTPS的区别。

HTTP:网络通信协议。基于TCP,使浏览器工作高效,减少网络传输。
HTTPS:是HTTP加强版。是HTTP+SSL(Secure Socket Layer)。在HTTP的基础上增加了一系列的安全机制,一方面保证数据传输安全,另一方面对访问者增加了验证机制(证书)。
区别:
1.HTTP:连接简单,无状态,HTTPS:传输经过证书加密,安全性高
2.HTTP:免费。HTTPS:申请证书收费
3.他们的传输协议不同,HTTP默认80端口,HTTPS默认443端口
HTTPS缺点:握手协议费时,影响响应速度及吞吐量。HTTPS证书体系也并不是完全安全,对于DDOS攻击也没用还会起反作用。功能越强大的证书越贵。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

国家能源、华能、一汽、中国交建、中国铁塔、中国烟草、中航信托--校园招聘历年题库和真题

作为准备参加国有企业校园招聘的应聘者,掌握相关企业的招聘试题资料是至关重要的。国家能源、华能、一汽、中国交建、中国铁塔、中国烟草、中航信托等知名国有企业在中国经济中扮演着重要的角色,每年都会举行校园招聘活动,吸引大批毕业生和应…

【国产MCU】-CH32V307-定时器同步模式

定时器同步模式 文章目录 定时器同步模式1、定时器同步模式介绍2、驱动API介绍3、定时器同步模式实例1、定时器同步模式介绍 CH32V307的定时器能够输出时钟脉冲(TRGO),也能接收其他定时器的输入(ITRx)。不同的定时器的ITRx的来源(别的定时器的TRGO)是不一样的。 通用定…

RCE (Remote ????? execution) --->CTF

看这个标题就知道今天的内容不简单!!!! 那么就来讲一下我们的RCE吧 目录 ​编辑 1. &? |? ||? &&? 2.PHP命令执行函数&& ||"" 1."" &…

(202402)多智能体MetaGPT入门1:MetaGPT环境配置

文章目录 前言拉取MetaGPT仓库1 仅仅安装最新版2 拉取源码本地安装MetaGPT安装成果全流程展示 尝试简单使用1 本地部署大模型尝试(失败-->成功)2 讯飞星火API调用 前言 感谢datawhale组织开源的多智能体学习内容,飞书文档地址在https://d…

【LNMP】云导航项目部署及环境搭建(复杂)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、项目介绍1.1项目环境架构LNMP1.2项目代码说明 二、项目环境搭建2.1 Nginx安装2.2 php安装2.3 nginx配置和php配置2.3.1 修改nginx文件2.3.2 修改vim /etc/p…

基于IDEA+Mysql+Tomcat+Vue开发的框架的汇美食电子商城的设计与实现

基于IDEAMysqlTomcatVue开发的框架的汇美食电子商城的设计与实现 项目介绍💁🏻 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了基于Vue框架的汇美食电子商城的设计与实现的开发全过程。通过分…

HuggingFists系统功能介绍(1)--系统概述

HuggingFists是一款低代码AI应用工具,力图发展为LangChain的低代码平替工具。HuggingFists发起于数由科技的Sengee数据科学计算框架,因此其界面风格继承了数据科学工具的很多特征。有别于完全基于LangChain衍生出的低代码工具Flowise,其风格更…

一个具有强大PDF处理能力的.Net开源项目

PDF具有跨平台、可读性强、不可修改性、无需特定阅读软件、内容安全等好处,在工作中经常都会用到。 所以,我们在项目开发中,经常需要生成PDF的文件,或者把Html、Xml等文件转化为PDF格式。 今天给大家推荐一个具有PDF处理能力的.…

贪心算法学习

贪心算法(Greedy Algorithm)是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是全局最好或最优的算法。贪心算法在有最优子结构的问题中尤为有效。然而,要注意的是贪心…

React组件详解

React组件分为两大类 1.函数组件 2.类组件&#xff08;最常用&#xff09; 组件化 import ReactDom from "react-dom";// // 1.通过函数创建一个组件 // 2.函数名字必须大写开头 // 3.函数必须有返回值 function Func1() {return <h2>这是一个基础组件</h…

5.2 Ajax 数据爬取实战

目录 1. 实战内容 2、Ajax 分析 3、爬取内容 4、存入MySQL 数据库 4.1 创建相关表 4.2 数据插入表中 5、总代码与结果 1. 实战内容 爬取Scrape | Movie的所有电影详情页的电影名、类别、时长、上映地及时间、简介、评分&#xff0c;并将这些内容存入MySQL数据库中。 2、…

React组件通讯

组件通讯 组件是一个独立的单元&#xff0c;默认情况下组件只能自己使用自己的数据。在组件化过程中&#xff0c;我们将一个完整的功能拆分成多个组件&#xff0c;便于更好的完成整个应用的功能。 Props 组件本来是封闭的&#xff0c;要接受外部数据应该可以通过Props来实现…

Jenkins自动化部署构建说明(8)

Jenkins构建说明 - 20211012 什么是Jenkins? Jenkins 是一款流行的开源持续集成&#xff08;Continuous Integration&#xff09;工具&#xff0c;广泛用于项目开发&#xff0c;具有自动化构建、测试和部署等功能。它是一个自动化的周期性的集成测试过程&#xff0c;从检出代…

基于容器和集群技术的数据自动化采集设计和实现

目标&#xff1a;部署mysql服务容器并使用docker构建包含python爬虫脚本的容器采集数据到mysql数据库。 环境&#xff1a;Centos7、已配置Kubernetes集群及docker。 环境配置请参考以下文章&#xff1a; CentOS7搭建Kubernetes集群 Kubernetes集群信息如下(虚拟机主机名和IP…

流计算之Flink

文章目录 概要有界无界流集群JobManagerTaskManagersTasks 和算子链Task Slots 和资源 小结 概要 Apache Flink 是一个框架和分布式处理引擎&#xff0c;用于在无边界和有边界数据流上进行有状态的计算。Flink 能在所有常见集群环境中运行&#xff0c;并能以内存速度和任意规模…

图解KMP算法

目录 1.最长公共前后缀1.1前缀1.2后缀1.3最长公共前后缀 2、KMP算法过程2.1例子12.2例子22.3Python代码&#xff1a;2.4next数组的计算过程 1.最长公共前后缀 1.1前缀 前缀说的是一个字符串除了最后一个字符以外&#xff0c;所有的子串都算是前缀。 前缀字符串&#xff1a;A…

Linux字符设备驱动中itcol的使用

文章目录 前言一、ioctl二、代码解析2.1 驱动层2.2 应用层 运行结果总结 前言 在Linux字符设备驱动中&#xff0c;ioctl是必须掌握一个函数&#xff0c;其实在软件层面它就是一个函数&#xff0c;但是我愿意称之为强大的硬件控制器&#xff01;在应用中&#xff0c;让我深刻感…

C#常识篇(二)

委托和事件的区别 委托可以认为是对指定签名的函数的引用&#xff0c;通过委托可以实现将函数作为参数传递或者间接调用函数&#xff0c;委托是类型安全的&#xff0c;仅指向与其声明时指定签名相匹配的函数。委托可以分为单播委托和多播委托&#xff0c;二者的区别在于是对单个…

STM32单片机基本原理与应用(九)

SDIO/SD卡实验 实验内容 将SD卡插入实训平台并烧写程序&#xff0c;开机后TFTLCD屏幕上会显示是否成功初始化SD卡并显示SD卡容量。 电路原理图 实验原理 SD卡的通信方式有两种&#xff1a;SPI和SDIO。SD卡有五种寄存器&#xff0c;如下表 SD 卡的指令由 6 个字节组成&…

YOLOv5算法进阶改进(18)— 引入动态蛇形卷积DSConv(ICCV2023 | 用于管状结构分割)

前言:Hello大家好,我是小哥谈。动态蛇形卷积(Dynamic Snake Convolution,简称DSConv)是一种用于图像处理和计算机视觉任务的卷积神经网络(CNN)操作。它是在传统的卷积操作基础上引入了动态蛇形路径的概念,以更好地捕捉图像中的细节和边缘信息。传统的卷积操作是在固定的…