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

news2024/9/22 19:43:29

目录

  • 高并发相关
    • 提高通信效率
      • ==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.coloradmin.cn/o/1536649.html

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

相关文章

AI+ 发展展望

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

高德地图——轨迹回放和电子围栏

功能点 地图的初始化显示电子围栏(先初始化在调接口显示电子围栏)显示定位显示轨迹轨迹回放 (回放速度无法控制是因为高德地图的版本问题,不要设置版本,使用默认的即可生效)获取当前城市及天气情况设置地图…

【机器学习300问】43、回归模型预测效果明明很好,为什么均方根误差很大?

一、案例描述 假设我们正在构建一个房地产价格预测模型,目标是预测某个城市各类住宅的售价。模型基于大量房屋的各种特征(如面积、地段、房龄、楼层等)进行训练。 回归模型在大部分情况下对于住宅价格预测非常精准,用户反…

Deep Graph Representation Learning and Optimization for Influence Maximization

Abstract 影响力最大化(IM)被表述为从社交网络中选择一组初始用户,以最大化受影响用户的预期数量。研究人员在设计各种传统方法方面取得了巨大进展,其理论设计和性能增益已接近极限。在过去的几年里,基于学习的IM方法的…

面试算法-81-旋转链表

题目 给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。 示例 1: 输入:head [1,2,3,4,5], k 2 输出:[4,5,1,2,3] 解 class Solution {public ListNode rotateRight(ListNode head, int …

语音神经科学—05. Human cortical encoding of pitch in tonal and non-tonal languages

Human cortical encoding of pitch in tonal and non-tonal languages(在音调语音和非音调语言中人类大脑皮层的音高编码) 专业术语 tonal language 音调语言 pitch 音高 lexical tone 词汇音调 anatomical properties 解刨学特性 temporal lobe 颞叶 s…

【蓝桥杯】第15届蓝桥杯青少组stema选拔赛C++中高级真题答案(20240310)

一、选择题 第 1 题 第 2 题 表达式1000/3的结果是( A )。 A.333 B.333.3 C.334 D.333.0 第 3 题 下列选项中,判断a等于1并且b等于1正确的表达式是( B )。 A.!((a!1)&&(b!1)) B.!((a!1)||(b!1)) C.!(a1)&&(b1) D.(a1)&&(b1) 【解析】 A…

论文笔记:Contrastive Multi-Modal Knowledge GraphRepresentation Learning

论文来源:IEEE Transactions on Knowledge and Data Engineering 2023 论文地址:Contrastive Multi-Modal Knowledge Graph Representation Learning | IEEE Journals & Magazine | IEEE Xplorehttps://ieeexplore.ieee.org/abstract/document/9942…

上海晋名室外暂存柜助力新技术皮革制品生产行业安全

本周上海晋名又有一台室外危化品暂存柜项目通过验收,此次项目主要用于新技术皮革制品生产行业油桶、化学品等物资的室外暂存安全。 用户单位创立于2004年,是一家从事新技术皮革制品加工、生产的外资企业。 上海晋名作为一家专注工业安全防护领域&#…

mysql索引(explain 执行计划)

关键词 执行计划 EXPLAIN 语句查看mysql 优化后的语句 show warnings;EXPLAIN 执行后,各列的含义 要点: select_type 如何查询 表type 如何查询 行key 如何使用 索引key_len 索引 使用多少rows 行 预计使用多少extra 表 的额外信息 1.id id列的编…

20240316-1-向量化搜索

向量化搜索 在高维空间内快速搜索最近邻(Approximate Nearest Neighbor)。召回中,Embedding向量的搜索。 FAISS、kd-tree、局部敏感哈希、【Amnoy、HNSW】 FAISS faiss是Facebook的AI团队开源的一套用于做聚类或者相似性搜索的软件库&…

【JSON2WEB】10 基于 Amis 做个登录页面login.html

【JSON2WEB】01 WEB管理信息系统架构设计 【JSON2WEB】02 JSON2WEB初步UI设计 【JSON2WEB】03 go的模板包html/template的使用 【JSON2WEB】04 amis低代码前端框架介绍 【JSON2WEB】05 前端开发三件套 HTML CSS JavaScript 速成 【JSON2WEB】06 JSON2WEB前端框架搭建 【J…

linux系统----------MySQL索引浅探索

目录 一、数据库索引介绍 二、索引的作用 索引的副作用 (缺点) 三、创建索引的原则依据 四、索引的分类和创建 4.1普通索引 4.1.1直接创建索引 4.1.2修改表方式创建 4.1.3创建表的时候指定索引 4.2唯一索引 4.2.1直接创建唯一索引 4.2.2修改表方式创建 4.2.3创建表…

Linux——du, df命令查看磁盘空间使用情况

一、实现原理: df 命令的全称是Disk Free ,显而易见它是统计磁盘中空闲的空间,也即空闲的磁盘块数。它是通过文件系统磁盘块分配图进行计算出的。 du 命令的全称是 Disk Used ,统计磁盘有已经使用的空间。它是直接统计各文件各目…

Qt QGraphicsView移动、缩放

原链接 首先需要明白,view在整个视图框架中的角色是用于显示scene的,所以决定了如何展示scene,包括scale()函数,用于放大缩小所展示的scene;centerOn()函数,决定scene的中心在何方。所有的操作&#xff0c…

移动app测试的好处简析,有必要选择第三方软件测试机构吗?

移动app测试是指对移动应用程序进行全面、系统和深入的检查和验证,以确保其功能、性能和稳定性达到预期要求。在移动应用市场日益竞争激烈的今天,进行移动app测试是至关重要的。 一、移动app测试的好处:   1、具有确保应用质量的作用。通过…

集简云新增“AI图像生成与识别”功能:实现智能图像识别与理解场景

自OpenAI发布GPT-4V以来,也掀起了各大企业对于多模态大模型的研究热潮。和以往的生图模型相比,多模态模型已突破文本限制,图像理解和识别能力尤为突出。 本周,集简云上线AI图像识别与问答功能,集成OpenAI和Anthropic两…

复制浏览器请求到Postman

目录 1.复制链接 2.导入到Postman 1.复制链接 F12打开开发者模式 2.导入到Postman 如上图所示,参数及cookie等信息都被导入进来。

VUE自己项目做的时候遇到的疑惑问题

晚上还在疑惑为什么下面还有一个一模一样的 早上起来,神清气爽,想了一下。原来是我用了两个路由出口

C语言复杂度(个人笔记)

时间复杂度主要衡量一个算法的运行快慢. 空间复杂度主要衡量一个算法运行所需要的额外空间. 时间复杂度 算法中的基本操作的执行次数,为算法的时间复杂度. 只需要大概执行次数,我们使用大O的渐进表示法。(看谁对数学表达式的影响最大) 空间复杂度 是…