当前位置: 首页 > news >正文

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 线程执行结束

十、线程怎么创建

  1. Thread
  2. Runnable
  3. 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&#xff0c;主要可以通过包管理器&#xff08;如apt、yum、rpm等&#xff09;来实现&#xff0c;但具体步骤可能会因GitLab的安装方式&#xff08;如使用包管理器安装、从源代码安装、使用Docker等&#xff09;和Linux发行版的不同而有所差异。以下是一…...

基于STM32F407ZG的FreeRTOS移植

1.从FreeRTOS官网中下载源码 2、简单分析FreeRTOS源码目录结构 2.1、简单分析FreeRTOS源码根目录 &#xff08;1&#xff09;Demo&#xff1a;是官方为一些单片机移植FreeRTOS的例程 &#xff08;2&#xff09;License&#xff1a;许可信息 &#xff08;3&#xff09;Sourc…...

【IT领域新生必看】Java编程中的神奇对比:深入理解`equals`与`==`的区别

文章目录 引言什么是操作符&#xff1f;基本数据类型的比较示例&#xff1a; 引用类型的比较示例&#xff1a; 什么是equals方法&#xff1f;equals方法的默认实现示例&#xff1a; 重写equals方法示例&#xff1a; equals与的区别比较内容不同示例&#xff1a; 使用场景不同示…...

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支持几种不同的请求命令&#xff0c;这些命令被称为HTTP方法(HTTP method 表1一3 HTTP方法 表1&#…...

nodejs 获取客服端ip,以及获取ip一直都是127.0.0.1的问题

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

微软与OpenAI/谷歌与三星的AI交易受欧盟重点关注

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

微信小程序毕业设计-学生实习与就业管理系统项目开发实战(附源码+论文)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…...

spring boot 接口参数解密和返回值加密

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

C语言自定义类型——联合体、枚举

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、联合体&#xff08;一&#xff09;、联合体的声明&#xff08;二&#xff09;、联合体的特点&#xff08;三&#xff09;、联合体大小的计算&#xff01;&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 表格中&#xff0c;可以通过使用 VLOOKUP 函数和通配符来实现高级模糊搜索。这里有一个具体的示例来帮助你理解如何进行这些操作。 示例&#xff1a;实现 VLOOKUP 高级模糊搜索 假设我们有以下数据集&#xff1a; AB产品编号产品名称001苹果00…...

第一天(点亮led灯+led灯闪烁)——Arduino uno R3 学习之旅

​ 常识: 一般智能手机的额定工作电流大约为200mA Arduino Uno板上I/0(输入/输出)引脚最大输出电流为40 mA Uno板控制器总的输出电流为200 mA 点亮LED灯 发光二极管介绍 发光二极管(Light Emitting Diode&#xff0c;简称LED)是一种能够将电能转化为光能的固态的半导体器件…...

【C++题解】1561. 买木头

问题&#xff1a;1561. 买木头 类型&#xff1a;省赛、数组问题、二分答案、贪心、2015江苏省青少年信息学奥林匹克竞赛复赛 题目描述&#xff1a; 有 n 个木材供应商&#xff0c;每个供货商有长度相同一定数量的木头。长木头可以锯短&#xff0c;但短木头不能接长。有一个客…...

解决android native包webview,webview中的请求blocked by CORS policy

在stack overflow查&#xff0c;差不多查到的都是些webView.getSettings().setxxx&#xff0c;没用。在github上找别的类似的android native包webview运行pwa的项目&#xff0c;把它们的webView.getSettings().setxxx全搬过来&#xff0c;写了有一页多&#xff0c;一个有用的都…...

链篦机回转窑球团生产工艺

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

查看电脑ip地址快捷键是什么?是哪个

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

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...