开发知识点-Java网络编程-Netty

在这里插入图片描述

Netty

  • P1 Netty-导学
    • 分布式
        • 网络返回 异步结果
        • dubbo rabbitmq
        • test 测试案例
        • 多线程 日志
  • 第1章_01_nio三大组件-channel-buffer
        • 网络编程 框架
        • jdk 1.4 之后才有 nio这个 API
        • Channel 数据传输通道 (双向)
        • Buffer 内存缓冲区 (暂存Channel 的 数据)
  • P3 第1章_02_nio三大组件-服务器设计-多线程版
        • Selector
        • 服务器 端 应用开发
        • 线程数 的 前提条件 CPU (执行线程的)
  • P4 第1章_03_nio三大组件-服务器设计-线程池版
        • 线程池 控制 最大线程数量 (解决 太多 线程 出现)
  • P5 第1章_04_nio三大组件-服务器设计-selector版
    • channel (通道) 事件
    • 非阻塞模式
  • P6 第1章_05_bytebuffer-基本使用
    • Channel 数据读写通道
      • 获得 Channel
      • 静态 获得 一个 缓冲区 (划分内存)
      • 从channel 读取数据
        • 加入 lombok 日志记录器
  • P7 第1章_06_bytebuffer-内部结构
    • bytebuffer 内部结构
      • 读模式
  • P8 第1章_07_bytebuffer-方法演示

P1 Netty-导学

https://www.bilibili.com/video/BV1py4y1E7oA?from=search&seid=380048128345779756&spm_id_from=333.337.0.0

在这里插入图片描述

分布式

数据库 消息队列 二进制框架

NIO
阻塞 非阻塞 同步 异步 多路复用

Netty
流水线
事件循环
高并发

网络返回 异步结果

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

dubbo rabbitmq
test 测试案例
多线程 日志

第1章_01_nio三大组件-channel-buffer

网络编程 框架

在这里插入图片描述

jdk 1.4 之后才有 nio这个 API

在这里插入图片描述

Channel 数据传输通道 (双向)

IO
输入流 数据 临时存储 在 内存中
输出流
单向

Buffer 内存缓冲区 (暂存Channel 的 数据)

应用程序 — 文件 — 网络 之间的 桥梁
在这里插入图片描述
文件
UDP
TCP
(服务器)

在这里插入图片描述

  • 字节 缓冲区 (抽象类)(实现类)
  • 不同数据类型 缓冲区

P3 第1章_02_nio三大组件-服务器设计-多线程版

在这里插入图片描述

Selector

在这里插入图片描述

服务器 端 应用开发

客户端 建立连接 Socket 读写操作 新的线程
输入流 读
输出流 写

在这里插入图片描述

  • 1M 内存 1000 连接 1G
  • 内存 容易溢出
线程数 的 前提条件 CPU (执行线程的)

eg:16h 同时跑 16线程 其他 等待(记录保存 )

P4 第1章_03_nio三大组件-服务器设计-线程池版

在这里插入图片描述

线程池 控制 最大线程数量 (解决 太多 线程 出现)

可以处理 多客户端的 操作 但 有限制
在这里插入图片描述

  • 利用率 不高
  • 适合短连接 HTTP

P5 第1章_04_nio三大组件-服务器设计-selector版

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

channel (通道) 事件

  • 可连接
  • 可读
  • 可写

非阻塞模式

  • 利用率 高
  • 连接数多 流量低(交互不频繁)

P6 第1章_05_bytebuffer-基本使用

在这里插入图片描述
在这里插入图片描述

  • maven demo

lombok getset
gson json
guava 工具类 合集
logback 日志打印

在这里插入图片描述
在这里插入图片描述

Channel 数据读写通道

获得 Channel

new 一个 对象
资源释放 java7 的
在这里插入图片描述

将 channel关闭

静态 获得 一个 缓冲区 (划分内存)

在这里插入图片描述
可以 设置 容量 capacity 字节

从channel 读取数据

在这里插入图片描述

buffer get 无参 读 一个 字节
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 所以 要 分 多次 读取 在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
加入 lombok 日志记录器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

P7 第1章_06_bytebuffer-内部结构

在这里插入图片描述

bytebuffer 内部结构

像数组结构
在这里插入图片描述
容量 capacity
指针位置 索引下标 position
限制 limit
在这里插入图片描述

读模式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

P8 第1章_07_bytebuffer-方法演示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

【React系列】Redux(三) state如何管理

本文来自#React系列教程:https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg5MDAzNzkwNA&actiongetalbum&album_id1566025152667107329) 一. reducer拆分 1.1. reducer代码拆分 我们来看一下目前我们的reducer: function reducer(state ini…

jdk动态代理与cglib代理区别1

动态代理有jdk动态代理及cglib代理&#xff0c;下面描述jdk动态代理 jdk动态代理 看了 上云 老师的视频&#xff0c;整理下 pom文件 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starte…

JS函数实现数字转中文大写

JS函数实现数字转中文大写 1. 数字转字符,分割,去除空字符2. 遍历分割字符,替换为中文3. 增加四位数单位4. 处理零5. 拼接四位数据和单位 项目中,JS将万亿以下正整数转为中文大写 1. 数字转字符,分割,去除空字符 function toChineseNumber(num){const strs num.toString().re…

2023海内外零知识证明学习资料汇总(一)(故事中的零知识证明篇)

工欲善其事,必先利其器 Web3开发中&#xff0c;各种工具、教程、社区、语言框架.。。。 种类繁多&#xff0c;是否有一个包罗万象的工具专注与Web3开发和相关资讯能毕其功于一役&#xff1f; 参见另一篇博文&#x1f449; 2024最全面且有知识深度的web3开发工具、web3学习项目…

12 位多通道,支持 MPU 存储保护功能,应用于工业控制,智能家居等产品中的国产芯片ACM32F403/F433

ACM32F403/F433 芯片的内核基于 ARMv8-M 架构&#xff0c;支持 Cortex-M33 和 Cortex-M4F 指令集。芯片内核 支持一整套DSP指令用于数字信号处理&#xff0c;支持单精度FPU处理浮点数据&#xff0c;同时还支持Memory Protection Unit &#xff08;MPU&#xff09;用于提升应用的…

街道洗扫车VR虚拟仿真展示创新了培训方式

吸污车用于收集处理城市中的污水、污泥&#xff0c;起到疏通管道的作用&#xff0c;特别是洪涝灾害时是重要的清理工具。吸污车由于内部结构复杂、工艺原理繁琐且造价成本高&#xff0c;因此传统的吸污车作业培训难以达到满意效果。VR虚拟仿真技术的出现&#xff0c;给企业提供…

免费邮件系统hMailServer本地部署并实现远程发送邮件

文章目录 前言1. 安装hMailServer2. 设置hMailServer3. 客户端安装添加账号4. 测试发送邮件5. 安装cpolar6. 创建公网地址7. 测试远程发送邮件8. 固定连接公网地址9. 测试固定远程地址发送邮件 前言 hMailServer 是一个邮件服务器,通过它我们可以搭建自己的邮件服务,通过cpola…

Vscode新手安装与使用

安装与版本选择 VS Code 有两个不同的发布渠道&#xff1a;一个是我们经常使用的稳定版&#xff08;Stable&#xff09;&#xff0c;每个月发布一个主版本&#xff1b;另外一个发布渠道叫做 Insiders&#xff0c;每周一到周五 UTC 时间早上6点从最新的代码发布一个版本&#x…

腾讯云最新优惠券、代金券、折扣券领取入口与使用教程分享

腾讯云作为国内领先的云计算服务提供商&#xff0c;一直致力于为用户提供优质、高效、安全的服务。为了更好地满足用户的需求&#xff0c;腾讯云时常会推出各种优惠活动&#xff0c;为用户提供优惠券、代金券、折扣券等福利。本文将详细介绍如何获取和使用腾讯云优惠券&#xf…

Sonarqube安装(Docker)

一&#xff0c;拉取相关镜像并运行 # 拉取sonarqube镜像 docker pull sonarqube:9.1.0-community在运行之前要提前安装postgres并允许&#xff0c;新建数据库名为sonar的数据库 Docker安装postgres教程 docker run -d --name sonarqube --restartalways \ -p 19000:9000 \ …

SparkSQL基础解析(三)

1、 Spark SQL概述 1.1什么是Spark SQL Spark SQL是Spark用来处理结构化数据的一个模块&#xff0c;它提供了2个编程抽象&#xff1a;DataFrame和 DataSet&#xff0c;并且作为分布式SQL查询引擎的作用。 我们已经学习了Hive&#xff0c;它是将Hive SQL转换成MapReduce然后提…

MR实战:词频统计

文章目录 一、实战概述二、提出任务三、完成任务&#xff08;一&#xff09;准备数据1、在虚拟机上创建文本文件2、上传文件到HDFS指定目录 &#xff08;二&#xff09;实现步骤1、创建Maven项目2、添加相关依赖3、创建日志属性文件4、创建词频统计映射器类5、创建词频统计归并…

NLP电影情绪分析项目

https://machinelearningmastery.com/develop-word-embedding-model-predicting-movie-review-sentiment/ https://machinelearningmastery.com/prepare-movie-review-data-sentiment-analysis/ 本教程分为 5 个部分;他们是&#xff1a; 电影评论数据集数据准备训练嵌入层训练…

恭喜 Databend 上榜 2023 开源创新榜「优秀开源项目 」

近日&#xff0c;国家科技传播中心见证了一场开源界的重要事件&#xff1a;由中国科协科学技术传播中心、中国计算机学会、中国通信学会和中国科学院软件研究所联合主办&#xff0c;CSDN 承办的 2023 年开源创新榜专家评审会圆满落幕。由王怀民院士担任评委会主任&#xff0c;评…

stable diffusion 人物高级提示词(四)朝向、画面范围、远近、焦距、机位、拍摄角度

一、朝向 英文中文front view正面Profile view / from side侧面half-front view半正面Back view背面(quarter front view:1.5)四分之一正面 prompt/英文中文翻译looking at the camera看向镜头facing the camera面对镜头turned towards the camera转向镜头looking away from …

uniapp中组件库的Checkbox 复选框 的丰富使用方法

目录 #平台差异说明 #基本使用 #自定义形状 #禁用checkbox #自定义形状 #自定义颜色 #横向排列形式 #横向两端排列形式 API #Checkbox Props #CheckboxGroup Props #CheckboxGroup Event 复选框组件一般用于需要多个选择的场景&#xff0c;该组件功能完整&#xff…

[Vulnhub靶机] DriftingBlues: 3

[Vulnhub靶机] DriftingBlues: 3靶机渗透思路及方法&#xff08;个人分享&#xff09; 靶机下载地址&#xff1a; https://download.vulnhub.com/driftingblues/driftingblues3.ova 靶机地址&#xff1a;192.168.67.19 攻击机地址&#xff1a;192.168.67.3 一、信息收集 1.…

simulink的模型搭建,使用状态机-最简单的教程二,状态机不显示它的logo,而显示的是模型缩略图

1&#xff0c;选择chart和graph fuction&#xff0c;然后选择子图化所选内容&#xff0c;就可以实现点击进去&#xff0c;再进行逻辑编写 2&#xff0c;选择外围的chart&#xff0c;然后选择并行&#xff0c;则里面包含的chart就变为虚线了 3&#xff0c;注意这里有一个内容预…

人生重开模拟器

前言&#xff1a; 人生重开模拟器是前段时间非常火的一个小游戏&#xff0c;接下来我们将一起学习使用c语言写一个简易版的人生重开模拟器。 网页版游戏&#xff1a; 人生重开模拟器 (ytecn.com) 1.实现一个简化版的人生重开模拟器 &#xff08;1&#xff09; 游戏开始的时…

Python基础篇: 环境安装

Python基础环境使用 一&#xff1a;运行环境Anaconda介绍1、Anaconda搭建1.1、下载方式1.2、安装1.3、验证是否安装成功 2、管理python环境2.1、列出所有环境2.2、创建环境2.3、进入指定虚拟环境2.4、离开虚拟环境2.5、删除虚拟环境 3、依赖管理3.1、安装依赖3.2、卸载依赖3.3、…