黑马现有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 不是严格意义上的分布式框架,但它在分布式系统中承担着重要角色,为分布式系统提供了关键的服务接入和流量管理能力。

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

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

相关文章

盲盒小程序有什么优势?如何运营获客?

盲盒作为当下的热门行业,已经在国内外成功站稳脚步,市场规模庞大。 线上盲盒小程序也是互联网电商下的新模式,将传统的盲盒模式与线上电商模式相结合,为消费者提供一种新颖额盲盒购买体验,玩家在手机上就可以体验到抽…

HTML5+CSS3小实例:具有悬停效果的3D闪耀动画

实例:具有悬停效果的3D闪耀动画 技术栈:HTML+CSS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, init…

2024年卫生巾行业市场分析报告(京东天猫淘宝线上卫生巾品类电商数据查询)

最近&#xff0c;相关部门辟谣了一则“十大致癌卫生巾黑名单”的消息。这个榜单是部分博主AI撰写&#xff0c;为博眼球、蹭热度的结果。此次事件势必会对卫生巾行业产生一定影响&#xff0c;加剧行业竞争。 根据鲸参谋电商数据平台显示&#xff0c;2024年1月至2月线上电商平台…

从内存巷弄到指针大道(一)

文章目录 1.内存和地址1.1理解内存地址酒店大堂&#xff1a;内存的入口房间号&#xff1a;内存地址的意义酒店的楼层划分&#xff1a;内存的结构酒店的房间单位&#xff1a;计算机中的常见单位 1.2如何理解编址 2.指针变量和地址2.1取地址操作符&#xff08;&)2.2 指针变量…

二、typescript基础语法

一、条件语句 二、函数 1、有名函数 function add(x:number, y:number):number {return x y;}2、匿名函数 let add function (x:number, y:number):number {return x y;}函数可选参数 function buildName(firstname: string, lastname?:string) {if (lastname) {return fi…

小程序插件引用vant方式

小程序主体项目构建npm包&#xff0c;引入vant 首先要创建插件&#xff0c;不知道的去官网看下&#xff0c;直通链接 构建npm包&#xff0c;直接在小程序打开终端 npm install npm i vant/weapp -S --production记得修改 project.config.json {..."setting": {...…

模式结果和观测的对比

首先对模式的海表温度进行对比 (base) [chengxllogin02 10yearmean]$ ls sst_*.nc sst_2000.nc sst_2002.nc sst_2004.nc sst_2006.nc sst_2008.nc sst_2001.nc sst_2003.nc sst_2005.nc sst_2007.nc sst_2009.nc 首先将观测资料转化为年平均 ls sst.200* |xargs -I{} cdo -b f…

​2024年保护微服务的前10种技术

1*5rY-jEv7qlpa_swi4WMIBw.png 引言 与当前正在使用的任何其他技术或方法一样&#xff0c;微服务也有其自己的一套缺陷和问题。尽管如此&#xff0c;微服务架构的采用率不断增加&#xff0c;预计到2028年将达到1718.2亿美元。 然而&#xff0c;尽管团队使用微服务&#xff0c;但…

如何默认管理员开启CMD

许多朋友使用win10系统的时候经常会用到CMD命令&#xff0c;而且还要以管理员身份运行&#xff0c;那么如何设置默认打开cmd都是以管理员身份运行&#xff0c;设置的方法挺简单&#xff0c;大家跟着下面的步骤操作即可。 Win10怎么默认以管理员身份运行cmd&#xff1f; 1、在开…

解读 Xend Finance:向 RWA 叙事拓展,构建更具包容性的 DeFi 体系

在二十世纪后&#xff0c;非洲地区陆续爆发了主权运动&#xff0c;这也让非洲大陆逐渐摆脱“殖民地”的标签。目前&#xff0c;非洲大陆公有 54 个主权国家&#xff0c;接近 15 亿且仍在飙升的人口规模&#xff0c;其 GDP 已经与印度相当&#xff0c;且仍旧处于飞速的发展进程中…

【机器学习300问】44、P-R曲线是如何权衡精确率和召回率的?

关于精确率和召回率的基础概念我已经写了两篇文章&#xff0c;如果友友还不知道这两个评估指标是什么&#xff0c;可以先移步去看看这两篇文章&#xff1a; 【机器学习300问】25、常见的模型评估指标有哪些&#xff1f;http://t.csdnimg.cn/JtuUO 总结一下这两个概念&a…

SQL Server 文件组详解

数据文件组 SQL Server 数据库最常用的存储文件是数据文件和日志文件。 数据文件用于存储数据&#xff0c;由一个主要数据文件&#xff08;.mdf&#xff09;和若干个次要数据文件&#xff08;.ndf&#xff09;构成&#xff1b;日志文件用于存储事物日志&#xff0c;由.ldf文件…

Java全栈课程之Linux———基本属性

一、看懂文件属性 Linux系统是一种典型的多用户系统&#xff0c;不同的用户处于不同的地位&#xff0c;拥有不同的权限。为了保护系统的安全性&#xff0c;Linux系统对不同的用户访问同一文件&#xff08;包括目录文件&#xff09;的权限做了不同的规定。 在Linux中我们可以使…

2000元投影仪坚果N1 Air怎么样?对比D5X哪款更好?

投影仪市场&#xff0c;近年来作为家电数码领域的新星&#xff0c;已经引起了广泛的关注。特别是在年轻人群体中&#xff0c;投影仪成为了提升生活品质、享受家庭娱乐时光的重要工具。随着市场的繁荣&#xff0c;各种品牌和型号的投影仪如雨后春笋般涌现&#xff0c;其中&#…

Linux--进程(1)

目录 前言 1.冯诺依曼体系结构 2. 操作系统(Operator System)--第一个被加载的软件 3.进程 3.1基本概念 3.2Linux中的PCB 3.3通过系统调用创建子进程-fork初识 fork&#xff1a;创建一个子进程 为什么要创建子进程&#xff1f; fork的原理&#xff1a; 进一步了解fo…

Mora: Enabling Generalist Video Generation via A Multi-Agent Framework

Mora: Enabling Generalist Video Generation via A Multi-Agent Framework PDF: https://arxiv.org/html/2403.13248v1 1 概述 为弥补Sora不开源的缺陷&#xff0c;本文提出多代理框架Mora&#xff0c;整合先进视觉AI代理&#xff0c;复制Sora的全能视频生成能力。Mora能利用…

2024年《期刊引证报告》解读,迎来哪些新调整?

​ 【SciencePub学术】 近日&#xff0c;科睿唯安官方发布了一则关于2024年《期刊引证报告》&#xff1a;为增强透明度和包容性&#xff0c;期刊影响因子学科排名迎来新调整的文章。文章中对今年新调整过的地方做出了详细的解释。 截图来源&#xff1a;科睿唯安公众号 动态一…

#Linux(连接档概念)

&#xff08;一&#xff09;发行版&#xff1a;Ubuntu16.04.7 &#xff08;二&#xff09;记录&#xff1a; &#xff08;1&#xff09;硬链接&#xff08;inode&#xff0c;建立硬链接的文件inode号相同&#xff09; &#xff08;2&#xff09;创建硬链接:ln 文件名1 文件名…

css设置div的2个span一个在最左边,一个在最右边

界面&#xff1a; 代码&#xff1a; <html><style>.top span {display: block;position: absolute;margin: 0 20px; /* 添加边距以避免太靠近边缘 */ }.top span:nth-child(1) {left: 5px; /* 调整左侧位置 */ }.top span:nth-child(2) {right: 5px; /* 调整右侧位…

【前端性能】前端性能优化方法总结

关于前端性能指标和测量方法可以看这篇&#xff1a;【前端性能】前端性能指标和测量方法总结 文章目录 前端性能优化网络方向HTTP缓存本地储存HTTP升级DNS预解析使用CDN 渲染方向HTMLCSSJS图片Webpack优化 前端性能优化 可以从网络请求方向和页面渲染方向进行优化&#xff1a…