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://www.rhkb.cn/news/265983.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在Linux使用Docker部署Nexus容器并实现公网访问本地仓库【内网穿透】

文章目录 1. Docker安装Nexus2. 本地访问Nexus3. Linux安装Cpolar4. 配置Nexus界面公网地址5. 远程访问 Nexus界面6. 固定Nexus公网地址7. 固定地址访问Nexus Nexus是一个仓库管理工具,用于管理和组织软件构建过程中的依赖项和构件。它与Maven密切相关,可…

服务器数据恢复-异常断电导致服务器硬盘离线的数据恢复案例

服务器数据恢复环境: dell某型号服务器中有一组通过raid卡组建的raid10,该raid阵列中一共有4块磁盘。上层部署XenServer虚拟化平台,作为网站服务器使用。 服务器故障: 服务器异常断电导致服务器上的一台虚拟机不可用。需要恢复这…

SQL进阶(三):Join 小技巧:提升数据的处理速度

复杂数据结构处理:Join 小技巧:提升数据的处理速度 本文是在原本sql闯关的基础上总结得来,加入了自己的理解以及疑问解答(by GPT4) 原活动链接 用到的数据:链接 提取码:l03e 目录 1. 课前小问…

神经网络系列---常用梯度下降算法

文章目录 常用梯度下降算法随机梯度下降(Stochastic Gradient Descent,SGD):随机梯度下降数学公式:代码演示 批量梯度下降(Batch Gradient Descent)批量梯度下降数学公式:代码演示 小…

五种查看Spring容器中bean的方法

五种查看Spring容器中bean的方法 在Spring应用程序中,了解和查看容器中的Bean是进行调试和问题排查的关键。Spring提供了多种方法来查看容器中注册的Bean,以便我们深入了解应用程序的内部结构和调试潜在问题。本文将介绍五种常用的查看Spring容器中Bean的…

如何在宝塔面板中设置FTP文件传输服务并实现远程文件管理

文章目录 1. Linux安装Cpolar2. 创建FTP公网地址3. 宝塔FTP服务设置4. FTP服务远程连接小结 5. 固定FTP公网地址6. 固定FTP地址连接 宝塔FTP是宝塔面板中的一项功能,用于设置和管理FTP服务。通过宝塔FTP,用户可以创建FTP账号,配置FTP用户权限…

Docker使用数据卷自定义镜像Dockerfile

目录 一、数据卷 1.1、简介 1.2、用途 1.3、特性: 1.4、数据卷相关操作 1.5、使用情况 二、自定义镜像Dockerfile 2.1、Dockerfile 2.1、使用情况 2.3、具体操作 a、自定义centos 创建文件 编辑内容 制作镜像 测试 b、自定义tomcat 创建文件 编…

人工智能到深度学习:药物发现的机器智能方法(综述学习)

Artificial intelligence to deep learning: machine intelligence approach for drug discovery - PubMed (nih.gov) 人工神经网络、深度神经网络、支持向量机、分类和回归、生成对抗网络、符号学习和元学习是应用于药物设计和发现过程的算法的例子。人工智能已应用于药物设计…

论文阅读:《High-Resolution Image Synthesis with Latent Diffusion Models》

High-Resolution Image Synthesis with Latent Diffusion Models 论文链接 代码链接 What’s the problem addressed in the paper?(这篇文章究竟讲了什么问题?比方说一个算法,它的 input 和 output 是什么?问题的条件是什么) 这篇文章提…

el-autocomplete 提示文字出不来?修改支持模糊搜索提示

查看本专栏目录 关于作者 还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas&#x…

Groovy(第九节) Groovy 之单元测试

JUnit 利用 Java 对 Song 类进行单元测试 默认情况下 Groovy 编译的类属性是私有的,所以不能直接在 Java 中访问它们,必须像下面这样使用 setter: 编写这个测试用例余下的代码就是小菜一碟了。测试用例很好地演示了这样一点:用 Groovy 所做的一切都可以轻易地在 Java 程序…

[ai笔记12] chatGPT技术体系梳理+本质探寻

欢迎来到文思源想的ai空间,这是技术老兵重学ai以及成长思考的第12篇分享! 这周时间看了两本书,一本是大神斯蒂芬沃尔弗拉姆学的《这就是ChatGPT》,另外一本则是腾讯云生态解决方案高级架构师宋立恒所写的《AI制胜机器学习极简入门》&#xf…

JavaScript+PHP实现视频文件分片上传

摘要 视频文件分片上传,整体思路是利用JavaScript将文件切片,然后循环调用上传接口 upload.php 将切片上传到服务器。这样将由原来的一个大文件上传变为多个小文件同时上传,节省了上传时间,这就是文件分片上传的其中一个好处。 上…

算法沉淀——动态规划之两个数组的 dp(下)(leetcode真题剖析)

算法沉淀——动态规划之两个数组的 dp 01.正则表达式匹配02.交错字符串03.两个字符串的最小ASCII删除和04.最长重复子数组 01.正则表达式匹配 题目链接:https://leetcode.cn/problems/regular-expression-matching/ 给你一个字符串 s 和一个字符规律 p&#xff0c…

【Unity每日一记】角色控制器Character Contorller

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:Uni…

Python中的数据类型

如果说python中的数据类型,那我们要从标准数据类型说起,在python中标准数据类型如下: 数字类型: 数字数据类型用于存储数值。 他们是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象。 在python2.X中数据类型分的比较多,有int(有符号整型),long(…

Redis——服务器

Redis服务器负责与多个客户端建立网络连接,处理客户端发送的命令请求,在数据库中保存客户端执行命令所产生的数据,并通过资源管理来维持服务器自身的运行。 一. 命令请求的执行过程 一个命令请求从发送到获得回复过程中,客户端和服…

【MySQL】基本查询(表的增删改查)-- 详解

CRUD:Create(创建),Retrieve(读取),Update(更新),Delete(删除)。 一、Create insert [into] table_name [(column [, column] ...)] v…

从0到1实现五子棋游戏!!

Hello,好久不见宝子们,今天来给大家更一个五子棋的程序~ 我们今天要讲的内容如下: 文章目录 1.五子棋游戏介绍1.1 游戏玩法介绍: 2.准备工作2.1 具体操作流程 3.游戏程序主函数4.初始化棋盘4.1.定义宏变量4.2 初始化棋盘 5.打印…