黑马现有java课程框架及其功能梳理

目录

  • 高并发相关
    • 提高通信效率
      • ==Netty==
        • 作用:
        • 哪些框架使用它:
      • Channel
      • ChannelHandler 和 ChannelPipeline
      • EventLoop 和 EventLoopGroup
      • **涉及的名词解释:**
      • ==NIO==
      • ==Socket==
      • ==Nginx==

高并发相关

主要用来解决IO密集型程序(大量文件读写,网络通信,数据库交互),主要使用异步IO,多线程

提高通信效率

Netty

作用:

Netty是一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。(感觉只要知道他是提高通讯效率的就行了)

哪些框架使用它:

Dubbo、zk、RocketMQ、ElasticSearch、Spring5(对HTTP协议的实现)、GRPC、Spark等大型开源项目都在使用Netty作为底层通讯框架

Netty 的三大核心组件分别为 ChannelChannelHandler(以及相关的 ChannelPipeline)和 EventLoop(及其所在的 EventLoopGroup)。虽然没有明确指出“三大组件”的具体定义,但结合上下文通常是指这三个主要概念。以下是它们各自常用的函数或方法:

Channel

  • open():创建一个新的 Channel 实例。
  • bind(int port)bind(InetSocketAddress address):绑定到指定的端口或地址,开始监听连接。
  • writeAndFlush(Object msg):将对象写入到 Channel 并尝试刷新输出缓冲区。
  • close()close(ChannelFuture future):关闭 Channel。
  • pipeline():获取关联的 ChannelPipeline,用于处理入站和出站事件。

ChannelHandler 和 ChannelPipeline

  • channelRegistered(ChannelHandlerContext ctx) / channelUnregistered(ChannelHandlerContext ctx):当 Channel 注册到 EventLoop 或从 EventLoop 上解除注册时触发。
  • channelRead(ChannelHandlerContext ctx, Object msg):读取到新的数据时触发,用于处理入站数据。
  • write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise):处理出站数据,即将数据写入 Channel。
  • addLast(String name, ChannelHandler handler):向 ChannelPipeline 添加一个处理器。
  • remove(ChannelHandler handler):从 ChannelPipeline 中移除指定的处理器。

EventLoop 和 EventLoopGroup

  • register(Channel channel):将 Channel 注册到 EventLoop 上,使 EventLoop 开始处理该 Channel 的 I/O 事件。
  • execute(Runnable task):在 EventLoop 上执行给定的任务。
  • next():从 EventLoopGroup 中获取下一个可用的 EventLoop。
  • shutdownGracefully():优雅地关闭所有 EventLoop,并释放所有相关资源。

以上只是简要列举了一些常见方法,实际上每个组件提供的方法非常丰富,覆盖了网络通信的各种需求,包括但不限于连接管理、数据读写、错误处理、定时任务调度等。在实际使用 Netty 构建网络应用时,根据业务逻辑的不同,开发者会选择相应的方法来完成特定功能。

Netty 是一个强大的 Java 网络编程框架,适用于构建高性能、高并发、低延迟的网络应用程序。以下是一些实际应用场景和功能实现中会用到 Netty 的场合:

  1. 高性能网络服务器

    • 实现 HTTP 或 HTTPS 服务器,替代传统的基于 Tomcat、Jetty 等容器的同步阻塞模型,提供更好的性能和扩展性。
    • 构建 WebSocket 服务器,实现实时通讯、推送服务、在线聊天室等功能。
  2. 异步RPC框架

    • 在分布式系统中,Netty 可以作为远程过程调用(RPC)框架的底层通信库,例如 Dubbo、gRPC 等,用于服务间高效、低延迟的通信。
  3. 消息中间件

    • 开发消息队列系统(如ActiveMQ、RocketMQ的部分组件),利用Netty处理大量并发的发布/订阅请求和消息传输。
  4. 游戏服务器

    • 在游戏开发中,Netty 被广泛应用于构建多人在线游戏的后端服务器,处理玩家间的实时交互数据。
  5. 大数据处理

    • 大数据集群中的节点间通信,如Apache Hadoop、Spark等项目的部分组件可能会采用Netty进行高效的数据传输。
  6. 金融交易系统

    • 对于需要处理高频交易、实时报价等场景,Netty能够支撑高并发、低延迟的交易数据交换。
  7. 移动互联网后台服务

    • 移动APP的后台服务,如社交应用、新闻推送、即时通讯应用的后台服务,使用Netty构建高效的长连接通信服务。
  8. TCP/UDP协议开发

    • 自定义私有协议栈,基于Netty可以方便地开发和部署基于TCP、UDP或其他自定义协议的网络应用。
  9. 微服务架构中的服务间通信

    • 在微服务架构中,Netty可以作为各个服务间通信的基础组件,提供可靠的异步通信机制。

总之,任何需要进行高效网络通信、处理大量并发连接、减少资源消耗、优化网络性能的场景,都可能考虑使用Netty作为其通信层的核心框架。

涉及的名词解释:

网络应用程序框架: 用于简化网络通信和开发服务器端应用程序的一系列工具、库和服务的集合。常见网络应用程序框架:Spring MVC,spring Boot,Netty等。
I/O三种模式:
这位大佬解释的太好了!原文在这里
在这里插入图片描述

NIO

在这里插入图片描述
感觉有点太底层了,先不了解,之后看看:大佬文章
通道:简化直接与Socket进行操作的复杂性
选择器:实现一个线程处理多个客户端链接
Java高级架构线路图学习路线内含Dubbo、Redis、设计模式、Netty、zookeeper、Spring cloud、分布式,高并发

Socket

感觉更底层,也是等等再看

Nginx

Nginx 不是分布式框架,而是一款高性能的 Web 服务器和反向代理服务器,同时也可作为邮件代理服务器使用。Nginx 在分布式系统中的作用主要是:

  1. 负载均衡:Nginx 可以作为反向代理服务器,将客户端请求分发到多个后端服务器,实现流量分摊,提高系统的并发处理能力和可用性,这是构建分布式系统的重要环节。
  2. 动静分离:通过配置,Nginx 可以将动态请求转发给应用服务器(如Tomcat、Node.js等),静态内容则直接由Nginx处理并返回,提高整体系统的响应速度。
  3. 缓存服务:Nginx 提供缓存功能,对于静态资源或者经过特别配置的动态内容,可以直接从缓存中快速响应,减轻后端服务器的压力。
  4. API Gateway:在微服务架构中,Nginx 可以作为 API 网关,统一处理来自客户端的请求,路由到相应的微服务,同时还可以做权限验证、限流、熔断等操作。

虽然 Nginx 不是严格意义上的分布式框架,但它在分布式系统中承担着重要角色,为分布式系统提供了关键的服务接入和流量管理能力。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

游戏软件报错xinput1_3.dll丢失如何修复,5种方法一分钟教你修复完成

在计算机使用过程中,我们经常会遇到一些错误提示或者程序无法正常运行的情况。其中,一个常见的问题就是与xinput13.dll文件相关的问题。那么,xinput13.dll到底是什么呢?本文将对其进行详细介绍,帮助大家更好地理解和解…

25.7 MySQL 数据库和表的基本操作

1. 基础知识 1.1 一条数据的存储过程 存储数据确实是处理数据的基石, 只有确保数据被准确无误且有条理地存储, 我们才能对其进行深入的处理和细致的分析. 否则, 这些数据就像是一团毫无章法的乱麻, 让我们难以捉摸其内在的逻辑和价值.那么, 如何才能够将用户那些与经营紧密相关…

60、服务攻防——中间件安全CVE复现weblogicJenkinsGlassFish

文章目录 weblogicJbossJenkinsGlassFish weblogic 默认端口:7001,历史漏洞:CVE_2017_3506、CVE_2018_2893、CVE_2018_3245、CVE_2020_14882、CVE_2021_2394 Jboss 历史漏洞:CVE-2017-12149、CVE-2017-7504 Jenkins GlassFis…

Java面试相关问题

一.MySql篇 1优化相关问题 1.1.MySql中如何定位慢查询? 慢查询的概念:在MySQL中,慢查询是指执行时间超过一定阈值的SQL语句。这个阈值是由long_query_time参数设定的,它的默认值是10秒1。也就是说,如果一条SQL语句的执…

【免费】教你如何考取华为人才在线《人工智能技术与应用V2.0》认证

人工智能技术与应用V2.0考试PC网址 课程详情 (huawei.com) 注:免费认证,里面包含免费的课程,浏览器用Edge。 文章目录 人工智能技术与应用V2.0考试网址 前言 一、备考流程 二、联系内容 三、注意事项 总结 前言 随着人工智能&#xff…

一键成片解决方案,轻松解决企业内容创作难题

当今视频内容已经成为企业推广和品牌建设不可或缺的重要元素。然而,传统的视频制作流程繁琐、耗时,往往让企业望而却步。美摄科技凭借前沿的人工智能技术,推出了一键成片解决方案,为企业用户带来前所未有的高效、智能的视频创作体…

AI+ 发展展望

引言 随着人工智能技术的不断进步,"AI"已经成为一个热门话题,它代表着人工智能与其他行业的深度融合。"AI"不仅仅是技术的进步,更是一场影响深远的社会变革。在这篇文章中,回望历史我们将探索历史经验&#…

java智慧城管源码 AI数字化城市管理系统源码

java智慧城管源码 AI数字化城市管理系统源码 智慧城管 管理系统是基于AI视觉分析技术,算法通过云端部署摄像头,对城区街道的视频数据进行实时分析预警,支撑城管执法、市容环境、公共安全应急等管控治理工作,可将各类识别分析功能…

2.Redis有五种主要的数据类型

Redis有五种主要的数据类型 String(字符串):String类型是最简单的数据类型,可以存储任意类型的数据,例如整数、浮点数、字符串等。String类型支持一些基本的操作,如设置值、获取值、增减值等。 Hash&#…

YOLOv8独家改进: 注意力机制改进 | 上下文锚点注意力(CAA) | CVPR2024 PKINet 遥感图像目标检测

💡💡💡本文独家改进:引入了CAA模块来捕捉长距离的上下文信息,利用全局平均池化和1D条形卷积来增强中心区域的特征,从而提升检测精度,CAA和C2f进行结合实现二次创新,改进思路来自CVPR2024 PKINet,2024年前沿最新改进,抢先使用 💡💡💡小目标数据集,涨点近两个…

第十节HarmonyOS 常用容器组件3-GridRow

1、描述 栅格容器组件,仅可以和栅格子组件(GridCol)在栅格布局场景中使用。 2、子组件 可以包含GridCol子组件。 3、接口 GridRow(options:{columns: number | GridRowColumnOption, gutter?: Length | GutterOption, Breakpoints?: B…

360企业安全浏览器兼容模式显示异常某个内容不显示 偶发现象 本地无法复现情况js

360企业安全浏览器兼容模式显示异常 ,现象测试环境频发 ,本地连测试无法复现,线上反馈问题。 出现问题的电脑为windows且使用360企业安全浏览器打开兼容模式可复现 复现过程: 不直接点击超链接跳转页面 ,登录后直接通…

zabbix“专家坐诊”第234期问答

问题一 Q:除了系统信息外,仪表盘显示的信息都是空的是什么原因?已经是admin role,但不是super admin role的。 A:权限不够,在用户组赋主机权限。 问题二 Q:请问队列积压太多可以怎么解决&#…

Matlab进阶绘图第46期—气泡分组柱状图

气泡分组柱状图是分组柱状图与气泡图的组合—在分组柱状图每组柱子上方添加大小不同的气泡,用于表示另外一个数据变量(如每组柱子值的和)的大小。 本文利用自己制作的BarBubble工具,进行气泡分组柱状图的绘制,先来看一…

cesium Clock JulianDate 日照分析

cesium在初始化的时候会自动把Clock对象挂载到容器上Clock内部以JulianDate维护时间,比北京时间慢8个小时,想显示北京时间需要计算时差JulianDate的日期部分和秒数部分是分开的 julianDayNumber:指整数天,记录从公元前4713年正午以…

PCD8011TG兼用可控硅调光线性LED控制芯片 输出电流可调性 恒精度高 保护性强

概述 PCD8011TG是一款兼容可控硅调光线性恒流芯片,输出电流可调,恒流精度高,应用方案简单,不需要太多的组件, 板载IC驱动器,易于组装,降低了材料成本,提高了生产效率,具…

SQL中条件放在on后与where后的区别

数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。 在使用left jion时,on和where条件的区别如下: on条件是在生成临时表时使用的条件,不管on中的条件是否为真&…

146.【局域网_FTP大型文件传输服务器搭建】

FTP文件传输协议 1.FTP是什么?2.window上配置FTP服务器 (无需密码验证)3.打开FTP的防火墙4.两台同一个局域网下电脑进行测试5.window上配置FTP服务器 (需要密码验证) 1.FTP是什么? FTP就是文件传输协议。用于互联网双向传输,控制文件下载空间在服务器复制文件从本…

【AIGC调研系列】Gemini1.5pro的优势是什么

Gemini 1.5 Pro的优势主要体现在以下几个方面: 多模态理解和处理能力:Gemini 1.5 Pro能够处理和理解多种类型的数据,包括文本、图片、视频等,这使得它在分析、分类和总结复杂信息方面具有显著优势[2][5][6]。这种能力特别适合于需…

00后卷王的自述,难道我真的很卷?

🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 前段时间去面试了一个公司,成功拿到了offer,薪资也从12k涨到了18k&#x…