IO、零拷贝、多路复用、connection、池化
目录
一、IO 模型
二、什么是网络IO
三、什么是零拷贝
四、多路复用
五、java程序、mysql JDBC connection关系
六、connection怎么操作事务
七 、java里面的池化技术
八、线程池7个核心参数
九、线程的状态
一、IO 模型
BIO :同步阻塞io,单线程 内存上下文切换开销大、性能差
NIO :同步非阻塞 提高系统并发能力,减少等待时间, 用户线程需要不断轮询io状态,占cpu资源
AIO :异步非阻塞 允许应用程序在等待io操作完成时继续执行其他任务,高并发下减少线程或进程的数量,降低资源消耗
二、什么是网络IO
网络IO操作通常包括两个阶段:
1、等待数据准备就绪(如等待数据从网络到达套接字接收缓冲区)
2、将数据从内核拷贝到用户进程
不同的网络IO模型适用于不同的应用场景。例如,对于连接数不多的应用场景,可以使用阻塞IO模型;对于需要处理大量连接的应用场景,则可以考虑使用非阻塞IO、多路复用IO或异步IO模型。在选择网络IO模型时,需要根据应用的具体需求和性能要求来综合考虑。
三、什么是零拷贝
通过减少数据拷贝次数和上下文切换次数,从而显著提高数据传输和存储的效率
零拷贝并不是指数据在传输过程中没有进行任何拷贝,而是指尽量减少用户态与内核态之间的数据拷贝次数,以及减少CPU的参与,从而提高数据传输的效率
Kafka在生产者 和消费者 之间传输数据时,通过利用操作系统的零拷贝特性
网络服务器:Nginx采用了零拷贝技术来优化数据传输
文件传输系统中,如scp(安全复制)和rsync(远程同步),零拷贝技术也被广泛应用
四、多路复用
多路复用 :异步进行资源操作的手段,
1、selector 消耗性能
2、pool 会发生链式扫描 效率慢
3、epool 消息驱动的控制机制,只关心文件有没有变化 效率快
应用: redis io多路复用 :Netty 使用 Java NIO 提供的 Selector 来实现 I/O 多路复用,netty 通过Selector能够同时监视多个Channel(通道),当Channel有I/O事件发生时(如可读、可写、连接等)
五、java程序、mysql JDBC connection关系
Java程序和MySQL数据库之间的JDBC连接关系是通过JDBC API建立的。它允许Java应用通过SQL语句与MySQL数据库交互,并执行查询、更新、插入和删除等操作。这个连接过程是基于标准的JDBC API实现的,具有跨数据库平台的通用性。
六、connection怎么操作事务
- 开启事务,将Connection对象的自动提交模式设置为false。
- 通过调用setAutoCommit(boolean autoCommit)方法实现,
- 其中autoCommit参数设置为false。
- 执行sql
- 提交事务
- 回滚事务
七 、java里面的池化技术
重用对象来减少创建和销毁对象的开销,从而提高应用程序的性能和响应速度
数据库连接池(Connection Pool):数据库连接池是管理数据库连接的缓存池技术。它可以预先创建一定数量的数据库连接,并将这些连接放置在连接池中
线程池(Thread Pool):线程池用于管理一组工作线程,这些线程可以执行提交给线程池的任务,使用线程池可以避免频繁地创建和销毁线程
对象池(Object Pool):对象池是一种用于管理可重用对象的池化技术。当应用程序需要创建大量相同类型的对象时,可以使用对象池来重用这些对象,而不是每次都创建新的对象
缓存(Cache):虽然缓存本身并不直接属于池化技术,但它也涉及到资源的重用,因此可以看作是池化思想的一种应用
八、线程池7个核心参数
corePoolSize:核心线程数:线程池的基本大小,即线程池中会一直保持的线程数量
maximumPoolSize(最大线程数)定义:线程池中允许的最大线程数量
keepAliveTime(空闲线程存活时间)定义:当线程数量超过corePoolSize时,空闲线程在终止前等待新任务的最长时间。
unit(空闲时间单位)定义:keepAliveTime的时间单位,如秒、毫秒等。
workQueue(工作队列)定义:用于存放待执行任务的阻塞队列。
threadFactory(线程工厂)定义:用于创建新线程的工厂。
handler(拒绝策略)定义:当线程池无法处理新任务时(即线程数量达到maximumPoolSize,且工作队列已满),所采取的拒绝策略。
九、线程的状态
- new 线程创建好还没有调用start
- runnable 这个状态有可能正运行、可能等待就绪
- blocked 处于锁等待
- waiting 条件等待状态 触发条件唤醒 notify /wait
- timed_wait 和waiting 状态相同 多了一个超时条件触发
- terminated 线程执行结束
十、线程怎么创建
- Thread
- Runnable
- Callable
Thread是个类 只能单一继承 ,runnable是接口可以支撑多继承
Runnable表示一个线程的顶级接口,Thread类是实现Runnable
Runnable是一个任务 thread才是真正处理的线程,前者去定义任务,后者去处理
(松耦合)
Thread真正意义上的线程实现 Runnable表示要求执行的一个任务
相关文章:
IO、零拷贝、多路复用、connection、池化
目录 一、IO 模型 二、什么是网络IO 三、什么是零拷贝 四、多路复用 五、java程序、mysql JDBC connection关系 六、connection怎么操作事务 七 、java里面的池化技术 八、线程池7个核心参数 九、线程的状态 一、IO 模型 BIO :同步阻塞io,单线程 内存上下…...
Lua 错误处理
Lua 错误处理 Lua是一种轻量级的编程语言,广泛用于游戏开发、脚本编写和其他应用程序中。在编程过程中,错误处理是一个重要的方面,它可以帮助开发者创建更健壮和可靠的程序。本文将详细介绍Lua中的错误处理机制。 错误类型 在Lua中&#x…...

二刷力扣——单调栈
739. 每日温度 单调栈应该从栈底到栈顶 是递减的。 找下一个更大的 ,用递减单调栈,就可以确定在栈里面的每个比当前元素i小的元素,下一个更大的就是这个i,然后弹出并记录;然后当前元素i入栈,仍然满足递减…...
elementPlus-vue3-ts表格单选和双选实现方式
记录在vue3、ts、element-plus环境下表格单选和多选的实现方式 单选 html部分 <el-table...reftaskTableRefselect"selectClick"... ><el-table-column type"selection" width"50" />... </el-table>ts部分 const taskTabl…...
Linux系统中卸载GitLab
在Linux系统中卸载GitLab,主要可以通过包管理器(如apt、yum、rpm等)来实现,但具体步骤可能会因GitLab的安装方式(如使用包管理器安装、从源代码安装、使用Docker等)和Linux发行版的不同而有所差异。以下是一…...

基于STM32F407ZG的FreeRTOS移植
1.从FreeRTOS官网中下载源码 2、简单分析FreeRTOS源码目录结构 2.1、简单分析FreeRTOS源码根目录 (1)Demo:是官方为一些单片机移植FreeRTOS的例程 (2)License:许可信息 (3)Sourc…...

【IT领域新生必看】Java编程中的神奇对比:深入理解`equals`与`==`的区别
文章目录 引言什么是操作符?基本数据类型的比较示例: 引用类型的比较示例: 什么是equals方法?equals方法的默认实现示例: 重写equals方法示例: equals与的区别比较内容不同示例: 使用场景不同示…...
WEBHTTP
目录 理解HTTP协议请求流程 1 1 Web基础 2 Hosts文件 1 1 2网页与HTML 2 HTML概述 1 1 3静态网页与动态网页 1.2HTTP协议 1 2 1 HTTP协议概述 1 2 2 HTTP方法 HTTP支持几种不同的请求命令,这些命令被称为HTTP方法(HTTP method 表1一3 HTTP方法 表1&#…...

nodejs 获取客服端ip,以及获取ip一直都是127.0.0.1的问题
一、问题描述 在做登录日志的时候想要获取客户端的ip, 网上查了一下 通过 req.headers[x-forwarded-for] || req.connection.remoteAddress; 获取, 结果获取了之后不管是开发环境,还是生产环境获取到的一直都是 127.0.0.1,这是因为在配置N…...

微软与OpenAI/谷歌与三星的AI交易受欧盟重点关注
近日,欧盟委员会主管竞争事务的副主席玛格丽特维斯塔格(Margrethe Vestager)在一次演讲中透露,欧盟反垄断监管机构将就微软与OpenAI的合作,以及谷歌与三星达成的AI协议寻求更多第三方意见。这意味着微软与 OpenAI、谷歌与三星的 AI 交易及合作…...

微信小程序毕业设计-学生实习与就业管理系统项目开发实战(附源码+论文)
大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:微信小程序毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计…...

spring boot 接口参数解密和返回值加密
spring boot 接口参数解密和返回值加密 开发背景简介安装配置yml 方式Bean 方式 试一下启动项目返回值加密参数解密body 参数解密param和form-data参数解密 总结 开发背景 虽然使用 HTTPS 已经可以基本保证传输数据的安全性,但是很多国企、医疗、股票项目等仍然要求…...

C语言自定义类型——联合体、枚举
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、联合体(一)、联合体的声明(二)、联合体的特点(三)、联合体大小的计算!&a…...
【trition-server】pytorch 文档:使用 Triton 提供 Torch-TensorRT 模型
Serving a Torch-TensorRT model with Triton pytorch 的官方文档: Serving a Torch-TensorRT model with Triton 在有关机器学习基础设施的讨论中,优化和部署是密不可分的。一旦完成网络级优化以获得最大性能,下一步就是部署它。 然而,提供这种优化模型也有其自身的一系列…...
wps 表格如何实现vlookup高级模糊搜索
一、VLOOKUP 模糊搜索 在 WPS 表格中,可以通过使用 VLOOKUP 函数和通配符来实现高级模糊搜索。这里有一个具体的示例来帮助你理解如何进行这些操作。 示例:实现 VLOOKUP 高级模糊搜索 假设我们有以下数据集: AB产品编号产品名称001苹果00…...

第一天(点亮led灯+led灯闪烁)——Arduino uno R3 学习之旅
常识: 一般智能手机的额定工作电流大约为200mA Arduino Uno板上I/0(输入/输出)引脚最大输出电流为40 mA Uno板控制器总的输出电流为200 mA 点亮LED灯 发光二极管介绍 发光二极管(Light Emitting Diode,简称LED)是一种能够将电能转化为光能的固态的半导体器件…...

【C++题解】1561. 买木头
问题:1561. 买木头 类型:省赛、数组问题、二分答案、贪心、2015江苏省青少年信息学奥林匹克竞赛复赛 题目描述: 有 n 个木材供应商,每个供货商有长度相同一定数量的木头。长木头可以锯短,但短木头不能接长。有一个客…...
解决android native包webview,webview中的请求blocked by CORS policy
在stack overflow查,差不多查到的都是些webView.getSettings().setxxx,没用。在github上找别的类似的android native包webview运行pwa的项目,把它们的webView.getSettings().setxxx全搬过来,写了有一页多,一个有用的都…...

链篦机回转窑球团生产工艺
生球在回转窑氧化焙烧,回转窑头部设有燃烧器,燃料可以采用气体、固体、液体。 来自环冷机一冷却段的高温废气作为二次风进入窑内参与燃烧,烧成成品球进入环冷机。 环冷机采用鼓风冷却,热风风箱分为四段: 一段气体引至…...

查看电脑ip地址快捷键是什么?是哪个
在网络世界中,IP地址是每个网络设备的唯一标识,无论是我们的电脑、手机还是其他联网设备,都需要一个独特的IP地址来进行通讯。在日常生活和工作中,我们有时需要查看电脑的IP地址,以便进行网络设置、故障排查或远程连接…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...

Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

并发编程 - go版
1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...