Java并发:线程池
目录
一、核心概念与设计原理
1、线程池的核心价值
2、核心接口和类
3、线程池的核心构造参数
4、线程池工作流程
二、参数选择
1、任务队列选择
2、拒绝策略选择
3、常见线程池选择
4、参数调优
三、 应用
1、创建建议
2、生命周期管理:优雅关闭
3、监控
4、常见问题
5、使用案例
5.1 Web服务器请求处理(高并发场景)
5.2 批量数据并行处理(分片任务)
5.3 异步任务执行(带回调)
5.4 定时任务调度
5.5 资源隔离(多级线程池)
5.6 线程池监控(自定义扩展)
一、核心概念与设计原理
1、线程池的核心价值
资源服用:避免频繁创建/销毁线程的开销,通过池化技术管理线程生命周期
流量削峰:任务队列(如LinkedBlockingQueue
)缓冲突发请求,平滑处理高并发场景
精细控制:通过核心线程数、最大线程数、队列容量等参数实现资源精细化管理
2、核心接口和类
-
Executor:执行任务的根接口(
void execute(Runnable command)
) -
ExecutorService:扩展Executor接口,增加生命周期管理
-
ThreadPoolExecutor:标准线程池实现类
-
ScheduledExecutorService:支持定时/周期性任务
3、线程池的核心构造参数
参数 | 说明 | 推荐设置原则 |
---|---|---|
corePoolSize | 核心线程数(常驻线程) | CPU密集型:N+1;IO密集型:2N+1 |
maximumPoolSize | 最大线程数 | 根据业务峰值设置(建议不超过100) |
keepAliveTime | 非核心线程空闲存活时间 | 30-60秒 |
unit | 存活时间单位 | TimeUnit.SECONDS |
workQueue | 任务队列(缓冲机制) | 根据场景选择队列类型 |
threadFactory | 线程工厂(自定义线程创建) | 建议自定义命名线程 |
handler | 拒绝策略(饱和处理机制) | 根据业务容忍度选择 |
4、线程池工作流程
二、参数选择
1、任务队列选择
队列类型 | 特性 | 适用场景 |
---|---|---|
SynchronousQueue | 不存储元素,直接传递任务 | CachedThreadPool(零容量缓冲) |
LinkedBlockingQueue | 无界队列(默认容量Integer.MAX_VALUE) | FixedThreadPool(可能OOM) |
ArrayBlockingQueue | 有界队列(固定容量) | 需要控制队列大小的场景 |
PriorityBlockingQueue | 优先级队列(任务需实现Comparable) | 任务优先级调度 |
DelayedWorkQueue | 延迟队列(用于ScheduledThreadPool) | 定时任务调度 |
队列选择:根据业务特点选择队列类型
-
快速响应:SynchronousQueue(配合合理的最大线程数)
-
突发流量:LinkedBlockingQueue(需设置合理容量)
-
优先级处理:PriorityBlockingQueue
-
防止内存溢出:
ArrayBlockingQueue(
有界队列,需合理设置容量)
2、拒绝策略选择
策略类 | 行为描述 | 适用场景 |
---|---|---|
AbortPolicy | 默认策略,抛出RejectedExecutionException | 严格要求任务不丢失的场景 |
CallerRunsPolicy | 由调用者线程执行被拒绝的任务 | 允许任务降级的场景 |
DiscardPolicy | 静默丢弃被拒绝的任务 | 可容忍任务丢失的非关键业务 |
DiscardOldestPolicy | 丢弃队列最旧的任务,尝试重新提交当前任务 | 需要处理最新任务的场景 |
拒绝策略选择:
-
关键系统:自定义策略(记录日志+持久化任务)
-
可降级服务(关键任务):CallerRunsPolicy
-
非核心业务(允许部分丢失):DiscardOldestPolicy
3、常见线程池选择
类型 | 实现方式 | 特点 | 潜在风险 |
---|---|---|---|
FixedThreadPool | new ThreadPoolExecutor(n, n, 0L, LinkedBlockingQueue) | 固定线程数,无界队列,适合CPU密集型任务(如科学计算) | 队列堆积导致OOM |
CachedThreadPool | new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60L, SynchronousQueue) | 自动扩容,适合短生命周期IO密集型任务(如HTTP请求) | 线程数爆炸导致资源耗尽 |
SingleThreadExecutor | new ThreadPoolExecutor(1, 1, 0L, LinkedBlockingQueue) | 单线程顺序执行,适合需严格顺序的任务(如日志处理) | 无界队列OOM风险 |
ScheduledThreadPool | new ScheduledThreadPoolExecutor(corePoolSize) | 支持定时/周期性任务(如数据同步),使用DelayedWorkQueue | 复杂调度逻辑可能影响性能 |
4、参数调优
核心线程数选择:
-
CPU密集型:coreSize = CPU核心数 + 1
-
IO密集型:coreSize = CPU核心数 * 2
-
混合型:coreSize = (线程等待时间/线程CPU时间 + 1) * CPU核心数 或 拆分为不同线程池处理(如CPU计算与IO操作分离)
合理设置超时时间:防止死锁/长时间阻塞
预热机制:启动时调用prestartAllCoreThreads()
提前创建核心线程
动态调整:运行时通过setCorePoolSize()
和setMaximumPoolSize()
应对负载波动
三、 应用
1、创建建议
// 推荐手动创建线程池(避免使用Executors)
ThreadPoolExecutor executor = new ThreadPoolExecutor(5, // corePoolSize20, // maximumPoolSize60L, TimeUnit.SECONDS,new ArrayBlockingQueue<>(200), // 有界队列new NamedThreadFactory("app-thread"), // 自定义线程命名new CustomRejectionPolicy() // 自定义拒绝策略
);
线程命名:方便问题排查
public class NamedThreadFactory implements ThreadFactory {private final String namePrefix;private final AtomicInteger counter = new AtomicInteger(1);public NamedThreadFactory(String namePrefix) {this.namePrefix = namePrefix + "-";}@Overridepublic Thread newThread(Runnable r) {return new Thread(r, namePrefix + counter.getAndIncrement());}
}
2、生命周期管理:优雅关闭
方法 | 说明 |
---|---|
shutdown() | 平缓关闭:停止接受新任务,等待已提交任务完成 |
shutdownNow() | 立即关闭:尝试停止所有正在执行的任务,返回等待任务列表 |
awaitTermination() | 阻塞直到所有任务完成或超时 |
// 优雅关闭示例
void shutdownGracefully(ExecutorService executor, long timeout) {executor.shutdown();try {if (!executor.awaitTermination(timeout, TimeUnit.SECONDS)) {executor.shutdownNow();}} catch (InterruptedException e) {executor.shutdownNow();Thread.currentThread().interrupt();}
}
3、监控
监控指标:
方法 | 说明 |
---|---|
getActiveCount() | 获取活动线程数 |
getCompletedTaskCount() | 已完成任务数 |
getQueue().size() | 队列中等待任务数 |
getPoolSize() | 当前线程池大小 |
扩展监控:
public class MonitorThreadPool extends ThreadPoolExecutor {@Overrideprotected void beforeExecute(Thread t, Runnable r) {super.beforeExecute(t, r);// 记录任务开始时间}@Overrideprotected void afterExecute(Runnable r, Throwable t) {super.afterExecute(r, t);// 计算任务耗时,记录异常}
}
4、常见问题
1> 线程泄漏
-
症状:线程数持续增长不释放
-
检查点:未正确关闭线程池/任务中存在死循环
-
解决:使用
shutdown()
/shutdownNow()
关闭
2> 任务堆积
-
症状:队列大小持续增长
-
解决方案:优化任务处理速度/扩容线程池/增加队列容量
3> CPU利用率低
-
可能原因:IO阻塞严重/线程数设置不足/任务划分不合理
5、使用案例
5.1 Web服务器请求处理(高并发场景)
// 创建HTTP请求处理线程池
ThreadPoolExecutor serverExecutor = new ThreadPoolExecutor(8, // 核心线程数(根据CPU核心数调整)32, // 最大线程数(根据压测结果调整)60, TimeUnit.SECONDS,new LinkedBlockingQueue<>(1000), // 有界队列防止OOMnew NamedThreadFactory("http-handler"),new ThreadPoolExecutor.AbortPolicy() // 拒绝时抛出异常
);// 模拟请求处理
void handleHttpRequest(Request request) {serverExecutor.execute(() -> {try {// 处理请求业务逻辑processRequest(request);} catch (Exception e) {log.error("Request processing failed", e);} finally {// 资源清理cleanUpResources();}});
}
5.2 批量数据并行处理(分片任务)
// 创建数据处理线程池
ExecutorService batchExecutor = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() * 2
);// 分片处理10000条数据
List<Data> dataList = fetchDataFromDB(10000);
int batchSize = 1000;List<Future<Integer>> futures = new ArrayList<>();
for (int i = 0; i < dataList.size(); i += batchSize) {int end = Math.min(i + batchSize, dataList.size());List<Data> batch = dataList.subList(i, end);futures.add(batchExecutor.submit(() -> {int count = 0;for (Data data : batch) {if (processData(data)) count++;}return count;}));
}// 统计处理结果
int totalSuccess = 0;
for (Future<Integer> future : futures) {totalSuccess += future.get();
}batchExecutor.shutdown();
5.3 异步任务执行(带回调)
// 创建异步任务线程池
ThreadPoolExecutor asyncExecutor = new ThreadPoolExecutor(2, 4, 30, TimeUnit.SECONDS,new SynchronousQueue<>(),new NamedThreadFactory("async-task")
);// 提交任务并处理结果
CompletableFuture.supplyAsync(() -> {// 执行耗时操作return generateReport();
}, asyncExecutor).whenComplete((result, ex) -> {if (ex != null) {handleError(ex);} else {sendReport(result);}
});
5.4 定时任务调度
// 创建定时任务线程池
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(2);// 每天凌晨执行数据清理
scheduler.scheduleAtFixedRate(() -> {cleanUpExpiredData();
}, initialDelay, 24 * 60 * 60, TimeUnit.SECONDS);// 每5分钟执行状态检查
scheduler.scheduleWithFixedDelay(() -> {checkSystemHealth();
}, 0, 5, TimeUnit.MINUTES);
5.5 资源隔离(多级线程池)
// 关键业务独立线程池
ThreadPoolExecutor orderExecutor = new ThreadPoolExecutor(4, 8, 60, TimeUnit.SECONDS,new ArrayBlockingQueue<>(100),new NamedThreadFactory("order-service")
);// 普通业务线程池
ThreadPoolExecutor commonExecutor = new ThreadPoolExecutor(8, 32, 60, TimeUnit.SECONDS,new LinkedBlockingQueue<>(1000),new NamedThreadFactory("common-service")
);// 订单处理(高优先级)
void processOrder(Order order) {orderExecutor.execute(() -> {validateOrder(order);deductInventory(order);createPayment(order);});
}// 日志记录(低优先级)
void logActivity(Activity activity) {commonExecutor.execute(() -> {saveToLogDB(activity);});
}
5.6 线程池监控(自定义扩展)
public class MonitoredThreadPool extends ThreadPoolExecutor {private final Counter taskCounter = new Counter();public MonitoredThreadPool(int corePoolSize, int maxPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue) {super(corePoolSize, maxPoolSize, keepAliveTime, unit, workQueue);}@Overrideprotected void beforeExecute(Thread t, Runnable r) {super.beforeExecute(t, r);taskCounter.increment();MetricRegistry.recordThreadActive(getActiveCount());}@Overrideprotected void afterExecute(Runnable r, Throwable t) {super.afterExecute(r, t);taskCounter.decrement();if (t != null) {MetricRegistry.recordError();}}public int getCurrentTaskCount() {return taskCounter.get();}
}
相关文章:
Java并发:线程池
目录 一、核心概念与设计原理 1、线程池的核心价值 2、核心接口和类 3、线程池的核心构造参数 4、线程池工作流程 二、参数选择 1、任务队列选择 2、拒绝策略选择 3、常见线程池选择 4、参数调优 三、 应用 1、创建建议 2、生命周期管理:优雅关闭 3、…...
Kubernetes集群超配节点容量
目录: 1、节点超配简介2、创建 PriorityClass3、运行请求节点容量的 Pod4、调整占位资源请求5、设置所需的副本数量6、自动扩缩容组件6.1、手动方式6.2、自动方式 1、节点超配简介 节点超配是一种主动预留部分集群计算资源的策略。这种预留有助于减少在扩缩容事件期…...
每日一题(小白)回溯篇7
首先我们可以判断出这是一个dfs的题目,因为简言之就是要求最短路径。其次这个题目与直接找最短路径有所不同,增加了条件必须依次穿过指定的符号。无论坦克走到任何一点都有四个方向可以走(越界要判断),结束的条件是到达…...
rk3588上完成halcon的形状模型配准以及和opencv的图像转换
一、准备工作 1)安装好halcon,确保halcon的c的调用是正常的 2)编译好opencv 上面的两个步骤,均可以参考我的两个博文完成: Halcon在linux及ARM上的安装及c工程化_halcon linux-CSDN博客 RK3588上编译opencv 及基于…...
Spring Boot 断点续传实战:大文件上传不再怕网络中断
精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 一、痛点与挑战 在网络传输大文件(如视频、数据集、设计稿)时,常面临: 上传中途网络中断需重新开始服务器内…...
Springboot集成websocket实现消息推送
假设有个需求需要多个用户同时在对应的消息面板实时查看相关接口的执行流程进度,此时可以可考虑使用websocket来实现结果进度推送 一、引入websocket依赖,并编写WebSocket配置类 <dependency><groupId>org.springframework.boot</group…...
PostgreSQL 用户资源管理
PostgreSQL 用户资源管理 PostgreSQL 提供了多种机制来管理和限制用户对数据库资源的使用,以下是全面的资源管理方法: 1 连接限制 1.1 限制最大连接数 -- 在 postgresql.conf 中设置 max_connections 100 -- 全局最大连接数-- 为特定用户设置连接限…...
Uniapp:pages.json页面路由
目录 一、pages二、style 一、pages uni-app 通过 pages 节点配置应用由哪些页面组成,pages 节点接收一个数组,数组每个项都是一个对象,其属性值如下: 属性类型默认值描述pathString配置页面路径styleObject配置页面窗口表现nee…...
使用open3d将pcd点云按照颜色等级分块显示并令其随颜色变化播放
👑主页:吾名招财 👓简介:工科学硕,研究方向机器视觉,爱好较广泛… 💫签名:面朝大海,春暖花开! 使用open3d将pcd点云按照颜色等级分块显示并令其随颜色变化播放 引言显示效果点云获取完整代码引言 有很多时候我们需要更改pcd点云某些区域的颜色,可能是颜色随着点…...
玩转Docker | 使用Docker部署nullboard任务管理工具
玩转Docker | 使用Docker部署nullboard任务管理工具 前言一、nullboard介绍简介主要特点二、系统要求环境要求环境检查Docker版本检查检查操作系统版本三、部署nullboard服务下载镜像创建容器创建容器检查容器状态检查服务端口安全设置四、访问nullboard服务访问nullboard首页五…...
如何避免流程形式化导致的效率低下?
要避免流程形式化导致的效率低下,核心在于:聚焦流程价值、保障执行灵活性、优化流程设计、建立反馈机制、提升执行感知。其中,聚焦流程价值 是解决流程“空转”的首要原则。流程不应只是文档或制度的堆叠,而要服务于业务目标&…...
Java学习手册:HTTP 协议基础知识
一、HTTP 协议概述 HTTP(HyperText Transfer Protocol)即超文本传输协议,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传输协议。它是一个应用层协议,基于请求-响应模型…...
基于多模态融合算法的航空武器毁伤评估技术方案
基于多模态融合算法的航空武器毁伤评估技术方案 1. 引言 航空武器毁伤评估(Damage Assessment, DA)是现代战争中的关键环节,直接影响后续作战决策。传统的人工评估方式效率低、主观性强,且在高强度战场环境下难以实时完成。因此,本研究提出一种基于多模态融合算法的自动…...
欧拉-国产操作系统替代产品如何
欧拉(openEuler)国产操作系统是由华为发起并联合开源社区共同开发的企业级操作系统,旨在构建自主可控的数字基础设施生态底座。以下从开发背景、技术特点、应用场景、生态建设及市场表现等方面进行全面介绍: 一、开发背景与战略定位 国家需求驱动 在中美技术竞争背景下,国…...
入门-C编程基础部分:16、 预处理器
飞书文档https://x509p6c8to.feishu.cn/wiki/DzSJwsGiTiXkeCkyEYUcuXbKnbf C 预处理是编译过程中一个单独的步骤,是一个文本替换工具而已。所有的预处理命令都是以井号(#)开头。 指令描述#define定义宏#ifdef如果宏已经定义,则返…...
Spark-SQL4
一 .Spark-SQL核心编程(六) Spark-SQL连接Hive Apache Hive 是 Hadoop 上的 SQL 引擎,Spark SQL 编译时可以包含 Hive 支持,也可以不包含。包含 Hive 支持的 Spark SQL 可以支持 Hive 表访问、UDF (用户自定义函数)、Hive 查询语…...
模数转换【1】AD7699
1.开发背景 一款可以模数转换芯片,兼容通用 SPI 接口,支持最多支持 8 个通道和 500KSPS 的采样率。支持单个通道采集和扫描采集模式。 同系列的芯片还有 AD7682 和 AD7689 等。 2.开发需求 配置内部参考电压4.096V,实现单个通道采集和扫描采集…...
P5670 秘籍-反复异或 Solution
Description 给定序列 a ( a 1 , a 2 , ⋯ , a n ) a(a_1,a_2,\cdots,a_n) a(a1,a2,⋯,an) 和常数 m m m,有 q q q 个操作分两种: add ( l , r , x ) \operatorname{add}(l,r,x) add(l,r,x):对每个 i ∈ [ l , r ] i\in[l,r] …...
PID控制程序编写
目录 一、C语言PID控制器示例代码 二、代码解释 三、重要注意事项 一、C语言PID控制器示例代码 #include <stdio.h> #include <stdlib.h> #include <unistd.h> // For sleep function typedef struct { double Kp; // 比例增益 double…...
推荐系统/业务,相关知识/概念2
一、漫画库更新大量新作品,如何融入推荐系统? 参考答案: 快速提取新作品特征:除基础属性外,利用自然语言处理技术提取漫画简介关键词等丰富特征向量,分析情节、角色设定等深层次特征结合物品画像体系分类…...
基于Python的施工图与竣工图对比小工具开发方案
基于Python的施工图与竣工图对比小工具开发方案 一、引言 在工程建设领域,施工图与竣工图的对比是项目验收的关键环节。传统人工对比方式效率低、易出错,本文基于Python开发一款自动化对比工具,支持快速检测图纸差异并生成可视化报告&#x…...
2025年世界职业院校技能大赛实施方案(意见稿)
为贯彻落实《教育强国建设规划纲要(2024—2035年)》,进一步提升世界职业院校技能大赛(以下简称“大赛”)内涵质量,发挥大赛引领作用,提升高技能人才培养质量,服务现代职业教育体系建…...
辛格迪客户案例 | 苏州富士莱医药GMP培训管理(TMS)项目
一、案例概述 富士莱医药股份有限公司位于美丽的江南水乡常熟,前身为常熟富士莱医药化工有限公司,从建厂初期面积仅有10余亩,逐步扩展到100余亩。近年来公司飞速发展,以黑马姿态发展成为中国专业生产硫辛酸系列产品、肌肽系列产品…...
安恒安全渗透面试题
《网安面试指南》https://mp.weixin.qq.com/s/RIVYDmxI9g_TgGrpbdDKtA?token1860256701&langzh_CN 5000篇网安资料库https://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247486065&idx2&snb30ade8200e842743339d428f414475e&chksmc0e4732df793fa3bf39…...
【基于WSAAsyncSelec模型的通信程序设计】
文章目录 一、实验背景与目的二、实验设计与实现思路1. 设计思想2. 核心代码实现 总结 一、实验背景与目的 这次实验主要是为了让大家了解基于 WSAAsyncSelect 模型通信程序的编写、编译和执行过程。通过实践操作,深入掌握这种模型在实现计算机之间通信时的应用。 …...
Spring Boot+Mybatis设置sql日志打印
Spring BootMybatis设置sql日志打印 在全局配置文件添加以下内容:logging.level.com.demo.mapperdebug,com.demo.mapper:src下的mapper路径,debug:设置日志打印级别为debug,亦可设置为:ERROR、…...
Java 性能优化:从硬件到软件的全方位思考
Java 性能优化:从硬件到软件的全方位思考 在数字化飞速发展的当下,Java 作为广泛使用的编程语言,在各个应用领域发挥着关键作用。而 Java 性能优化作为提升系统运行效率、降低成本的核心环节,需要我们从硬件到软件进行全方位深入…...
ros2 humble moveit调试笔记
Overview — ROS2 Grasp Library Tutorials 0.5.0 documentation Robot Interface — ROS2 Grasp Library Tutorials 0.5.0 documentation 手动添加ompl_planning.yaml文件 planning_plugins:- ompl_interface/OMPLPlanner # To optionally use Ruckig for jerk-limited s…...
静态点亮数码管的某几段(STC89C52单片机)
#include <reg52.h> sbit ADDR0 P1^0; sbit ADDR1 P1^1; sbit ADDR2 P1^2; sbit ADDR3 P1^3; sbit ENLED P1^4; void main() { ENLED 0; //使能U3,选择数码管DS1 ADDR3 1; ADDR2 0; ADDR1 0; ADDR0 0; P0 0xF9; /…...
搭建哨兵架构
Redis大纲 3.1.sentinel环境准备: a.3个sentinel实例信息: 1.sentinel实例信息如下,sentinel只是起到监控作用,不存放数据!!2.为了节省资源,在同一台虚拟机开启3个实例,必须准备三…...
阿里云入门手册
阿里云入门手册 一、付费方式二、云计算基础概念(一)云计算定义(二)云计算优势(三)云计算部署模式(四)专有网络 VPC 三、阿里云ECS实例(一)实例类型ÿ…...
AI日报 - 2024年04月22日
🌟 今日概览(60秒速览) ▎🤖 模型进展 | Google发布Gemini 2.5 Flash,强调低延迟与成本效益;Kling AI 2.0展示多轴运动视频生成;研究揭示SLM在知识图谱上优于LLM,RLHF在推理提升上存局限。 ▎💼…...
Windows BilibiliHistoryFetcher-v1.3.2-v1.2.1-开源B站历史记录管理工具[支持批量管理下载]
Windows BilibiliHistoryFetcher 链接:https://pan.xunlei.com/s/VOONAVJpANYPmzu1Zc3B0q1XA1?pwdnrjc# 使用说明: 以1.3.2与1.2.1版本为例 需要下载 BiliBili-History-Frontend 前端程序,在下载 BilibiliHistoryAnalyzer 解压运行&#…...
CH585单片机的LCD外设怎么驱动段式LCD
1、首先这里只讲应用,不讲具体原理。 要驱动段式LCD,这里就要知道占空比的调整,比如1/4为例就需要4个COM口。这4个COM口由单片机自行驱动,你不用管。就像硬件IIC和SPI,时序问题不用你去操心,你要做的就是向…...
包管理工具有哪些?主流软件分享
常见的包管理工具主要有:npm、Yarn、pnpm、Composer、Maven、pip、Conda 等,其中 npm 是目前全球使用最广泛的JavaScript包管理工具,以丰富的生态、便捷的使用体验以及强大的社区支持闻名。npm具备依赖管理、版本控制、脚本执行等强大功能&am…...
【网络安全】OWASP 十大漏洞
1. OWASP 十大漏洞 为了应对未来的风险,安全专业人员需要随时掌握最新信息。之前,您了解了CVE 列表,这是一个公开的已知漏洞和暴露列表。CVE 列表是全球安全社区相互共享信息的重要信息来源。 在本文中,您将了解安全专业人士参考…...
Fortran中FORALL的用法与性能分析
Fortran中FORALL的用法与性能分析 FORALL语句的基本用法 FORALL是Fortran 95引入的一种结构,用于表达并行数组操作。它的基本语法如下: FORALL (index start:end:stride, mask)array(index) expression END FORALL或者更复杂的多维度形式࿱…...
web组件和http协议
1.web组件 2.自定义元素 3.影子DOM 4.HTML模板 5.http协议 6.tcp ip协议...
论文笔记-arXiv2025-FilterLLM
论文笔记-arXiv2025-FilterLLM: Text-To-Distribution LLM for Billion-Scale Cold-Start Recommendation FilterLLM:面向十亿级冷启动推荐的文本到分布大语言模型摘要1.引言2.前言2.1符号说明2.2文本到判断2.2.1候选生成(从数十亿到数百)2.2…...
Anaconda Prompt 切换工作路径的方法
直接切换是不生效的: (base) C:\Users\96975>cd D:\weiban-tool-master\weiban-tool-master需要先回到根目录C盘,然后切换到目标文件夹盘符,进一步切换到目标文件夹 (base) C:\Users\96975>cd ..(base) C:\Users>cd ..(base) C:\&g…...
Synopsys:printvar命令和puts/echo命令的区别
相关阅读 Synopsyshttps://blog.csdn.net/weixin_45791458/category_12812219.html?spm1001.2014.3001.5482 Synopsys的EDA工具中存在一类变量,它们能控制工具的行为,被称为应用变量(application variable),与之对应的是用户自定义变量(use…...
自注意力机制、多头自注意力机制、填充掩码 Python实现
原理讲解 【Transformer系列(2)】注意力机制、自注意力机制、多头注意力机制、通道注意力机制、空间注意力机制超详细讲解 自注意力机制 import torch import torch.nn as nn# 自注意力机制 class SelfAttention(nn.Module):def __init__(self, input…...
Cursor可视化大屏搭建__0420
主题:用Cursor怎么进行数据洞察,做AI预测化内容。 Python基础语法与AI python生态强大,代码简洁,相对其他语言Python更好上手,浙江高考将Python列为可选科目 科学计算:Sklearn,Numpy,Pandas 人工智能:Tensorflow,Pytorch 网络爬虫:Scrapy…...
postman乘法计算,变量赋值
postman脚本怎么计算乘法 在Postman中,你可以通过多种方式计算乘法,这取决于你的具体需求。例如,如果你想在发送请求前计算乘法结果,或者在测试标签中计算响应数据的乘法,下面是一些常见的方法。 1. 使用JavaScript代…...
计算机视觉——利用AI幻觉检测图像是否是生成式算生成的图像
概述 俄罗斯的新研究提出了一种非常规方法,用于检测不真实的AI生成图像——不是通过提高大型视觉-语言模型(LVLMs)的准确性,而是故意利用它们的幻觉倾向。 这种新方法使用LVLMs提取图像的多个“原子事实”,然后应用自…...
前端配置代理解决发送cookie问题
场景: 在开发任务管理系统时,我遇到了一个典型的身份认证问题:用户登录成功后,调获取当前用户信息接口却提示"用户未登录"。系统核心流程如下: 用户登录:调用 /login 接口&…...
word显示段落标记符(¶)而不是回车符
现象 公司的一位同事找到我说word显示异常,出现了段落标记符()。 反馈的截图如下: 正常的截图如下: 原因 语言设置错误 解决 文件 选项 更改语言 关闭word并重启 恢复正常...
使用 Vue Router 和 Vite 构建的自动路由生成系统
这段代码是一个使用 Vue Router 和 Vite 构建的自动路由生成系统。它的主要作用是自动扫描 views 目录下的所有 Vue 组件文件,并为它们创建相应的路由配置,无需手动为每个页面定义路由。 主要功能和工作流程 项目说明 结构 . ├── App.vue ├── assets │ └── v…...
乐家桌面安卓版2025下载-乐家桌面软件纯净版安装分享码大全
是否在为智能电视或机顶盒上的应用资源不够丰富而烦恼?在使用安卓版乐家桌面或者纯净版乐家桌面的过程中还需要通过搜索框多页面查询,小编今天为大家来介绍一款好用的电视桌面——乐看家桌面,将为你打开一个全新的软件世界! 乐看家…...
【sylar-webserver】重构日志系统
文章目录 主要工作流程图FiberConditionBufferBufferManagerLogEvent 序列化 & 反序列化LoggerRotatingFileLogAppender 主要工作 实现, LogEvent 序列化和反序列化 (使用序列化是为了更标准,如果转成最终的日志格式再存储(确…...