Tomcat 接收请求并传递给工作线程池流程
文章目录
- Tomcat 接收请求并传递给工作线程池流程
- 接收 socket 连接
- org.apache.tomcat.util.net.SocketProcessorBase#reset
- 结论
Tomcat 接收请求并传递给工作线程池流程
接收 socket 连接
- 有两个线程
http-nio-8080-ClientPoller-0/1(下文称为 clientPoller)一直在运行org.apache.tomcat.util.net.NioEndpoint.Poller.run()的 run 方法,processKey(sk, attachment);中attachment 即为 SelectionKey 中获取到的 socket ; org.apache.tomcat.util.net.AbstractEndpoint持有private Executor executor是一个工作线程池的引用;调用 其executor.execute(sc);即可将 socket 传递给工作线程池;- 工作线程池 等待在阻塞队列
LinkedBlokingQueue的 getTask :workQueue.take(); 方法,当有任务后立即执行; RMI为前缀的线程 只是共用了 并发包的线程池, 可能会影响debug;- 在
org.apache.tomcat.util.net.SocketProcessorBasereset 方法中直接打断点,可跟踪接收线程; - 在
java.util.concurrent.ThreadPoolExecutor.runWorker 方法task.run();打断点或业务代码打断点跟踪栈帧 可跟踪工作线程流程;
org.apache.tomcat.util.net.SocketProcessorBase#reset
public void reset(SocketWrapperBase<S> socketWrapper, SocketEvent event) {Objects.requireNonNull(event);this.socketWrapper = socketWrapper;this.event = event;
}
结论
- 两组 线程池传递数据,使用的是 LinkedBlokingQueue;
相关文章:
Tomcat 接收请求并传递给工作线程池流程
文章目录 Tomcat 接收请求并传递给工作线程池流程接收 socket 连接 org.apache.tomcat.util.net.SocketProcessorBase#reset结论 Tomcat 接收请求并传递给工作线程池流程 接收 socket 连接 有两个线程 http-nio-8080-ClientPoller-0/1 (下文称为 clientPoller&…...
在Linux系统上用C++将主机名称转换为IPv4、IPv6地址
在Linux系统上用C将主机名称转换为IPv4、IPv6地址 功能 指定一个std::string类型的主机名称,函数解析主机名称为IP地址,含IPv4和IPv6,解析结果以std::vector<std::string>类型返回。解析出错或者解析失败抛出std::string类型的异常消…...
【硬件设计】硬件学习笔记二--电源电路设计
硬件学习笔记二--电源电路设计 一、LDO设计1.1 LDO原理1.2 LDO参数1.3 应用 二、DC-DC设计2.1 DC-DC原理2.2 DC-DC参数介绍2.4 DC-DC设计要点2.5 DC-DC设计注意事项 写在前面:本篇笔记来自王工的硬件工程师培训课程,想要学硬件的同学可以去腾讯课堂直接搜…...
day34 集合总结
集合总结 一、概述 作用:存储对象的容器,代替数组的,使用更加的便捷 所处的位置:java.util 体系结构 二、Collection 内部的每一个元素都得是引用数据类型 常用方法 add(Object o) 添加元素 addAll(Collection c) 将指定集…...
【JAVA】 图书管理系统(javaSE简易版 内含画图分析) | 期末大作业课程设计
作者主页:paper jie 的博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《JAVA》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造&…...
区块链技术与应用 - 学习笔记3【比特币数据结构】
大家好,我是比特桃。本系列笔记只专注于探讨研究区块链技术原理,不做其他违反相关规定的讨论。 区块链技术已被纳入国家十四五规划,在“加快数字发展 建设数字中国”篇章中,区块链被列为“十四五”七大数字经济重点产业之一&#…...
Ubuntu下高效Vim的搭建(离线版)
软件界面 可以看到界面下方有一些常用提示信息:文件路径、format、文件类型、光标所在的坐标(x,y)、进度条(百分比)、日期时间 会提示已定义的变量名词(快速补全) 搭建方法 下载资源文件 把Vim 和 .vimrc 拷贝到家目录下,并执行tar -xvf Vim 即可。 …...
阿里云和腾讯云2核2G服务器价格和性能对比
2核2G云服务器可以选择阿里云服务器或腾讯云服务器,腾讯云轻量2核2G3M带宽服务器95元一年,阿里云轻量2核2G3M带宽优惠价108元一年,不只是轻量应用服务器,阿里云还可以选择ECS云服务器u1,腾讯云也可以选择CVM标准型S5云…...
PYTHON(一)——认识python、基础知识
一、为什么要学习python? Python 被认为是人工智能、机器学习的首选语言,可以说是全世界最流行通用范围最广的语言,几乎可以完成所有的任务,像设计游戏、建网站、造机器人甚至人工智能等都广泛使用Python。 二、输出(…...
Python 操作 Excel
之前看过一篇文章,说一个工作多年的老员工,处理数据时只会用复制粘贴到 Excel ,天天加班工作还完不成,后来公司就招了一个会 Python 的新人,结果分分钟就处理完成。所以工作中大家经常会使用 Excel 去处理以及展示数据…...
21.添加websocket模块
这里默认读者了解websocket协议,若是还不了解可以看下这篇文章wesocket协议。 websocket主要有三个步骤,1通过HTTP进行握手连接,2进行双向通信,3.协商断开连接 第一步的握手连接需要HTTP,所以还需要使用到上一节讲解…...
Linux UDP编程流程
文章目录 UDP编程流程UDP协议无连接的特点UDP协议数据报的特点 UDP编程流程 UDP 提供的是无连接、不可靠的、数据报服务。服务器端和客户端没有什么本质上的区别。编程流程如下: socket()用来创建套接字,使用 udp 协议时,选择数据报服务 SOC…...
【opencv】多版本安装
安装opencv3.2.0以及对应的付费模块 一、安装多版本OpenCV如何切换 按照如下步骤安装的OpenCV,在CMakeLists.txt文件中,直接指定opencv的版本就可以找到相应版本的OpenCV,为了验证可以在CMakeLists.txt文件中使用如下指令输出版本验证&…...
webpack打包常用配置项
webpack打包配置项 参考链接 文件结构:最基础版 先安装 npm i webpack webpack-cli --dev 运行命令:npx webpack 进行打包 1. 配置webpack.config.js文件: const path require(path); module.exports {mode: development, // 开发环境 …...
回归预测 | MATLAB实现MPA-BiGRU海洋捕食者算法优化双向门控循环单元多输入单输出回归预测(多指标,多图)
回归预测 | MATLAB实现MPA-BiGRU海洋捕食者算法优化双向门控循环单元多输入单输出回归预测(多指标,多图) 目录 回归预测 | MATLAB实现MPA-BiGRU海洋捕食者算法优化双向门控循环单元多输入单输出回归预测(多指标,多图&a…...
selenium_webdriver自动化测试指南
目录 1 引言 4 1.1 目的.. 4 1.2 背景.. 4 1.3 参考资料.. 4 2 安装并引用Selenium2. 5...
红米Note12Turbo解锁BL刷入PixelExperience原生ROM系统详细教程
红米Note12Turbo的兄弟是国外POCO F5 机型,并且该机性价比非常高,国内外销量也还可以,自然不缺第三方ROM适配。目前大家心心念念的原生PixelExperience已成功发布,并且相对来说,适配程度较高,已经达到日用的…...
NoSQL之Redis配置与优化(一)
关系数据库与非关系型数据库 : ●关系型数据库: 关系型数据库是一个结构化的数据库,创建在关系模型(二维表格模型)基础上,一般面向于记录。 SQL 语句(标准数据查询语言)就是一种基于…...
Boost搜索引擎
项目背景 先说一下什么是搜索引擎,很简单,就是我们平常使用的百度,我们把自己想要所有的内容输入进去,百度给我们返回相关的内容.百度一般给我们返回哪些内容呢?这里很简单,我们先来看一下. 搜索引擎基本原理 这里我们简单的说一下我们的搜索引擎的基本原理. 我们给服务器发…...
侧边栏的文章分类、热门文章和热门文章的展示(Go 搭建 qiucode.cn 之九)
早就有言,秋码记录 虽早已不是原来的面貌,但这终究是不防碍我们使用golang来搭建它。 而又为什么是使用golang呢?并非是其他编程语言呢?想必 时候回答【我为什么要学习 Go 语言(golang)】这个问题了 已经给出了答案! 当然,当初学习golang时,不单单是为了搭建一个博客应…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险
C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...
零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程
STM32F1 本教程使用零知标准板(STM32F103RBT6)通过I2C驱动ICM20948九轴传感器,实现姿态解算,并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化,适合嵌入式及物联网开发者。在基础驱动上新增…...
抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...
9-Oracle 23 ai Vector Search 特性 知识准备
很多小伙伴是不是参加了 免费认证课程(限时至2025/5/15) Oracle AI Vector Search 1Z0-184-25考试,都顺利拿到certified了没。 各行各业的AI 大模型的到来,传统的数据库中的SQL还能不能打,结构化和非结构的话数据如何和…...
