掌握这4个技巧,轻松实现Java 22虚拟线程工厂的精准控制

第一章:Java 22虚拟线程与ThreadFactory概述

Java 22 引入了虚拟线程(Virtual Threads)作为正式特性,极大简化了高并发应用程序的开发。虚拟线程是由 JVM 管理的轻量级线程,相较于传统的平台线程(Platform Threads),其创建成本极低,可支持数百万并发任务的同时运行,而不会对系统资源造成显著压力。

虚拟线程的核心优势

  • 极高的吞吐量:允许创建大量并发任务而不受操作系统线程限制
  • 简化异步编程:无需使用复杂的回调或 CompletableFuture 模型
  • 兼容现有 API:虚拟线程完全遵循 java.lang.Thread 接口,可无缝集成到已有代码中

ThreadFactory 在虚拟线程中的角色

在 Java 22 中,可通过 ThreadFactory 快速生成虚拟线程。标准库提供了预设的工厂方法,也可自定义实现以满足特定需求。

// 使用 JDK 提供的虚拟线程工厂创建线程
ThreadFactory factory = Thread.ofVirtual().factory();

for (int i = 0; i < 1000; i++) {
    Thread thread = factory.newThread(() -> {
        System.out.println("运行在虚拟线程: " + Thread.currentThread());
    });
    thread.start(); // 自动由 JVM 调度执行
}

// 所有任务将被高效调度,无需手动管理线程池
上述代码展示了如何通过 ThreadFactory 创建并启动 1000 个虚拟线程。每个任务独立运行,JVM 内部通过一个固定的平台线程池进行调度,从而实现“海量并发、极简编码”的效果。

虚拟线程与平台线程对比

特性虚拟线程平台线程
创建开销极低较高(依赖操作系统)
默认栈大小约 1KB(按需扩展)通常 1MB
适用场景高并发 I/O 密集型任务CPU 密集型或传统并发模型

第二章:深入理解虚拟线程的创建机制

2.1 虚拟线程的生命周期与调度原理

虚拟线程是 Project Loom 引入的核心特性,旨在提升并发程序的吞吐量与资源利用率。其生命周期由 JVM 直接管理,创建成本极低,可同时存在数百万实例。
生命周期阶段
虚拟线程经历创建、运行、阻塞和终止四个阶段。当执行阻塞操作(如 I/O)时,JVM 自动将其挂起并释放底层平台线程,避免资源浪费。
调度机制
虚拟线程采用协作式调度,由 JVM 将其映射到少量平台线程上执行。以下代码展示了虚拟线程的创建方式:

Thread virtualThread = Thread.ofVirtual()
    .name("vt-", 1)
    .unstarted(() -> {
        System.out.println("Running in virtual thread");
    });
virtualThread.start();
上述代码通过 Thread.ofVirtual() 构建虚拟线程,unstarted() 定义任务逻辑,调用 start() 后由虚拟线程调度器安排执行。JVM 在适当时机将其挂载到底层平台线程运行,实现轻量级并发。

2.2 平台线程与虚拟线程的对比分析

线程模型的本质差异
平台线程(Platform Thread)由操作系统内核直接调度,每个线程对应一个内核级线程,资源开销大且数量受限。虚拟线程(Virtual Thread)则是 JVM 在用户空间管理的轻量级线程,由平台线程承载运行,可实现百万级并发。
性能与资源消耗对比
Thread virtualThread = Thread.ofVirtual()
    .name("vt-", 1)
    .unstarted(() -> {
        System.out.println("Running in virtual thread");
    });
virtualThread.start();
上述代码创建并启动一个虚拟线程。与传统 new Thread() 相比,虚拟线程的创建成本极低,JVM 可自动调度其在少量平台线程上高效运行,显著降低内存占用和上下文切换开销。
适用场景归纳
  • 平台线程适合计算密集型任务,能充分利用 CPU 核心;
  • 虚拟线程适用于高并发 I/O 密集型场景,如 Web 服务、数据库访问等。

2.3 Thread.ofVirtual() 的底层实现解析

Java 19 引入的虚拟线程(Virtual Thread)通过 `Thread.ofVirtual()` 工厂方法创建,其底层依托于 JVM 的协程支持,由 Project Loom 实现。
创建方式与执行模型
使用示例如下:
Thread virtualThread = Thread.ofVirtual()
    .name("vt-", 1)
    .unstarted(() -> System.out.println("Hello from virtual thread"));
virtualThread.start();
该代码创建一个命名前缀为 "vt-" 的虚拟线程,启动后执行指定任务。`ofVirtual()` 返回的是 `Thread.Builder.OfVirtual` 实例,内部关联默认的虚拟线程调度器——即平台线程池(ForkJoinPool)。
核心机制对比
特性平台线程虚拟线程
内存占用约 1MB 栈空间动态分配,极小
调度者操作系统JVM(用户态调度)

2.4 虚拟线程工厂的核心接口与契约

虚拟线程工厂作为创建虚拟线程的统一入口,定义了标准的生成契约与生命周期管理规则。其核心在于隔离线程创建逻辑与执行策略,提升资源利用率。
核心接口方法
工厂通常暴露 `newThread(Runnable)` 方法,返回一个符合虚拟线程语义的 `Thread` 实例:
VirtualThreadFactory factory = new VirtualThreadFactory();
Thread virtualThread = factory.newThread(() -> {
    System.out.println("Running in virtual thread");
});
virtualThread.start(); // 启动虚拟线程
上述代码中,`newThread` 返回的线程由 JVM 协作调度,底层由平台线程按需承载,无需手动管理池化。
契约约束
  • 每次调用必须返回独立的线程实例,保证隔离性
  • 不支持优先级设置,忽略传统线程的非关键属性
  • 启动后立即交由调度器管理,不可重复启动

2.5 虚拟线程在高并发场景下的行为模拟

虚拟线程的创建与调度优势
虚拟线程(Virtual Thread)是 Project Loom 引入的核心特性,能够在单个操作系统线程上托管成千上万个轻量级线程。相比传统平台线程,其内存开销显著降低,适合高并发 I/O 密集型任务。

try (var executor = Executors.newVirtualThreadPerTaskExecutor()) {
    for (int i = 0; i < 10_000; i++) {
        executor.submit(() -> {
            Thread.sleep(Duration.ofSeconds(1));
            System.out.println("Executed by " + Thread.currentThread());
            return null;
        });
    }
}
上述代码创建了 10,000 个虚拟线程,每个执行短暂休眠并输出信息。`newVirtualThreadPerTaskExecutor()` 自动使用虚拟线程,无需手动管理线程池大小。由于虚拟线程由 JVM 调度,阻塞时不会占用底层 OS 线程,从而实现高效并发。
性能对比分析
  • 平台线程:每个线程通常占用 1MB 栈空间,10,000 个线程将消耗约 10GB 内存
  • 虚拟线程:栈按需分配,初始仅几 KB,支持百万级并发而无内存压力
  • 适用场景:高并发 Web 服务、异步 I/O 处理、微服务请求隔离

第三章:定制ThreadFactory的核心策略

3.1 自定义线程命名与上下文绑定

在多线程开发中,为线程赋予有意义的名称有助于日志追踪与问题排查。默认线程名如 `Thread-1`、`Thread-2` 缺乏语义,难以定位业务上下文。
自定义线程命名示例
Thread thread = new Thread(() -> {
    System.out.println("Running task in custom thread");
}, "OrderProcessing-Worker-1");
thread.start();
上述代码将线程命名为 `OrderProcessing-Worker-1`,清晰表明其职责为订单处理,便于在堆栈日志中识别。
线程与上下文绑定策略
通过 `InheritableThreadLocal` 可实现上下文数据的自动传递:
  • 适用于用户身份、请求ID等跨线程传递场景
  • 子线程创建时自动复制父线程的上下文副本
  • 避免手动传递参数,降低耦合

3.2 异常处理机制的统一注入实践

在微服务架构中,异常处理的统一注入能显著提升代码可维护性与一致性。通过拦截器或切面编程(AOP),可在请求入口处集中捕获并处理异常。
全局异常处理器示例
  
@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(BusinessException.class)
    public ResponseEntity<ErrorResponse> handleBusinessException(BusinessException e) {
        ErrorResponse error = new ErrorResponse(e.getCode(), e.getMessage());
        return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(error);
    }
}
该代码定义了一个全局异常处理器,使用 @ControllerAdvice 注解实现跨控制器的异常拦截。@ExceptionHandler 注解指定了处理特定异常类型的方法,避免重复的 try-catch 逻辑。
异常分类与响应结构
异常类型HTTP状态码使用场景
BusinessException400业务规则校验失败
NotFoundException404资源未找到
SystemException500系统内部错误

3.3 线程优先级与资源隔离控制方案

在多线程系统中,合理分配线程优先级并实现资源隔离是保障关键任务响应性的核心机制。通过设定线程优先级,操作系统可调度高优先级任务优先执行,避免低优先级任务占用关键资源。
线程优先级配置示例(Linux pthread)

struct sched_param param;
pthread_t thread;

param.sched_priority = 80; // 实时优先级范围:1-99
pthread_setschedparam(thread, SCHED_FIFO, ¶m);
上述代码将线程调度策略设为 SCHED_FIFO,并设置优先级为80,确保其在同优先级队列中按先进先出方式运行,适用于实时性要求高的任务。
资源隔离策略对比
策略隔离粒度适用场景
Cgroups进程组级容器化资源限制
CPU Affinity核心级避免缓存抖动

第四章:实战中的精准控制技巧

4.1 构建可监控的虚拟线程工厂实例

在构建高并发应用时,虚拟线程(Virtual Threads)显著提升了线程管理效率。为实现运行时可观测性,需自定义线程工厂以注入监控逻辑。
监控型线程工厂实现
ThreadFactory factory = Thread.ofVirtual()
    .name("vt-monitor-", 0)
    .uncaughtExceptionHandler((t, e) -> 
        System.err.println("Exception in " + t.getName() + ": " + e))
    .factory();
上述代码通过 Thread.ofVirtual() 创建命名线程工厂,设置统一前缀与异常处理器。名称模式便于在日志和监控系统中追踪线程行为。
集成指标收集
可结合 Micrometer 或类似框架,在线程启动前后记录指标:
  • 线程创建速率
  • 活跃线程数
  • 任务执行耗时分布
通过将监控逻辑嵌入工厂,实现对虚拟线程生命周期的细粒度观测,提升系统可维护性。

4.2 集成MDC上下文传递的完整示例

在分布式系统中,为实现链路追踪的上下文透传,可借助SLF4J的MDC(Mapped Diagnostic Context)机制结合拦截器完成请求链路标识的自动注入。
核心依赖引入
确保项目中包含日志框架与OpenTelemetry适配器:
  • slf4j-api
  • logback-classic
  • opentelemetry-instrumentation-annotations
拦截器实现上下文注入
public class MdcTraceInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
        String traceId = IdGenerator.create(); // 生成唯一链路ID
        MDC.put("traceId", traceId);
        return true;
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
        MDC.clear(); // 清理避免内存泄漏
    }
}
该拦截器在请求进入时生成traceId并存入MDC,在请求结束时清除上下文,确保线程安全。
日志配置联动
Logback配置中引用MDC字段:
<pattern>%d [%thread] %-5level [traceId=%X{traceId}] %msg%n</pattern>
最终日志输出将自动携带traceId,实现跨服务调用链追踪。

4.3 基于虚引用的线程生命周期监听

在高并发编程中,精确感知线程的生命周期状态对资源管理和性能调优至关重要。虚引用(PhantomReference)提供了一种安全且高效的方式,在对象被回收前执行监听逻辑。
虚引用与引用队列结合使用
通过将虚引用与引用队列(ReferenceQueue)绑定,可监听线程终止事件:

ReferenceQueue<Thread> queue = new ReferenceQueue<>();
PhantomReference<Thread> ref = new PhantomReference<>(thread, queue);

// 在独立线程中监听
new Thread(() -> {
    try {
        while (true) {
            PhantomReference<Thread> removed = (PhantomReference<Thread>) queue.remove();
            System.out.println("线程生命周期结束:" + removed);
        }
    } catch (InterruptedException e) { /* 忽略 */ }
}).start();
上述代码中,当目标线程对象被垃圾回收时,其对应的虚引用会被放入队列,监听线程即可捕获该事件。此机制不干扰原有线程执行,实现解耦式生命周期监控。
应用场景
  • 资源清理:自动释放线程关联的本地资源
  • 监控统计:记录线程存活时间与执行频次
  • 调试诊断:追踪异常退出的线程实例

4.4 动态调整线程池与虚拟线程协作模式

在高并发场景下,传统线程池面临资源耗尽风险。通过结合虚拟线程(Virtual Threads),可实现更高效的调度策略。
动态线程池配置示例
ExecutorService pool = new ThreadPoolExecutor(
    coreSize, 
    maxSize, 
    60L, TimeUnit.SECONDS,
    new LinkedBlockingQueue<>(1000),
    threadFactory
);
该配置支持运行时调整核心参数:`coreSize` 控制最小线程数,`maxSize` 限制峰值并发,配合队列实现负载缓冲。
虚拟线程集成策略
  • 使用 Thread.ofVirtual() 创建轻量级线程
  • 将阻塞任务提交至虚拟线程,避免平台线程浪费
  • 监控系统负载并动态调用 setCorePoolSize() 调整容量
通过反馈式调节机制,线程池可在低延迟与资源利用率之间取得平衡,充分发挥虚拟线程的高并发优势。

第五章:未来演进与最佳实践总结

云原生架构的持续演进
现代应用正加速向云原生模式迁移,服务网格(如 Istio)与无服务器(Serverless)架构的融合成为趋势。企业通过将微服务部署在 Kubernetes 上,并结合 Knative 实现自动伸缩,显著降低运维成本。某金融客户在交易系统中引入 KEDA(Kubernetes Event Driven Autoscaling),根据消息队列深度动态调整 Pod 数量,峰值处理能力提升 3 倍。
可观测性最佳实践
完整的可观测性需覆盖日志、指标与链路追踪。以下为 Prometheus 抓取配置示例:

scrape_configs:
  - job_name: 'go-microservice'
    static_configs:
      - targets: ['10.0.1.10:8080']
    metrics_path: '/metrics'
    # 启用 TLS 和 Basic Auth
    scheme: https
    basic_auth:
      username: 'monitor'
      password: 'secure_token_2024'
建议使用 OpenTelemetry 统一采集端到端追踪数据,并导出至 Jaeger 或 Tempo。
安全加固策略
生产环境应遵循最小权限原则,以下措施已被验证有效:
  • 启用 Kubernetes Pod Security Admission,禁止 root 用户运行容器
  • 使用 OPA(Open Policy Agent)实施策略即代码(Policy as Code)
  • 定期轮换 TLS 证书,集成 cert-manager 与 Let's Encrypt
性能优化案例
某电商平台在大促前进行压测,发现数据库连接池瓶颈。通过调整 Golang 应用中的 database/sql 参数:

db.SetMaxOpenConns(100)
db.SetMaxIdleConns(20)
db.SetConnMaxLifetime(time.Minute * 5)
QPS 从 1,200 提升至 4,800,超时请求下降 90%。
YOLOv8作物病害检测实战源码 这是一套基于YOLOv8n的农田病虫害目标检测系统,对叶片照片做目标检测,识别健康叶片、褐斑病、白粉病、锈病四类,并给出对应防治建议。全流程纯CPU可跑,配套交付完整Python源码、9章实战教程(md/html/pdf三种格式)、100张自造样本及YOLO标签、训练曲线与混淆矩阵截图、Tkinter界面和答辩PPT。 系统围绕五项功能展开:同一套推理逻辑覆盖图像、视频、摄像头三种来源;图形界面选文件即检测,画面叠彩色框标注病名与置信度,右侧面板同步给出症状与防治措施;检测记录自动写入CSV,统计页一键生成四类病害占比饼图;训练结束自动产出损失与精度曲线;内置防治建议文案库,检测命中即回填面板。 选型用YOLOv8n nano档,参数量约320万、权重约6.2MB,CPU单帧几十毫秒,小样本训练5到8分钟完成。数据由data_gen.py程序化绘制100张叶片图,固定随机种子,重跑分布一致,不依赖公开数据集。依赖全部锁版本,教程第7章整理了19条真实报错及排查方法,第8章给出换模型档、换PlantVillage数据集的迁移路径。 适合做计算机视觉方向课程设计或毕业设计的学生,也适合智慧农业方向想了解检测模型如何落进业务面板的学习者。不需要GPU,不需要系统学过目标检测,教程第3章会按需补齐原理。 使用时先pip install -r requirements.txt装好依赖,download_data.py下载预训练权重,data_gen.py生成样本后train.py训练,完成后用main.py infer批量检测或main.py gui启动界面。 立即下载

相关推荐

数据挖掘实战:决策树 + 聚类 + 关联规则,零 Key 离线可跑(Python 源码)

数据挖掘实战包。用 Python 标准库实现 CART 风格决策树、K-Means 聚类与 Apriori 关联规则,在虚构「星河便利店」会员表和购物篮上跑通分类、分群与购物篮分析,并给出准确率、轮廓系数、支持度/置信度/提升度。零第三方依赖、零 API Key 即可离线跑通。含 4 个样例、离线冒烟、中文 README(含「使用方法」)。均为作者原创可运行源码。MIT。作者 blog.youkuaiyun.com/mtl1994

01:SpringAI

ai

weixin_43761434的博客 422

科技中介服务机构在技术供需对接中如何实现服务流程的自动化与标准化?.docx

科技中介服务机构在技术供需对接中如何实现服务流程的自动化与标准化?

产业园区运营负责人如何利用平台实现企业创新需求的精准分析与服务推送?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

产业园区如何高效对接企业技术需求与高校科研成果?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

国央企创新负责人如何快速掌握本地科技资源分布与匹配情况?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

高校技术转移办公室人员在推动成果转化落地过程中,如何实现科技成果的高效推介与价值评估?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

国央企创新负责人如何实现科技成果的精准识别与高效筛选?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

科技中介服务机构如何通过数智工具提升技术需求挖掘的精准度?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

高校技术转移办公室人员如何系统化管理科技成果信息?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

科技中介服务机构如何构建标准化、模块化的智能服务工具?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

政府科技管理者如何在政策支持中更精准地识别和支持高价值科技项目?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

fab-pm-optimizer-python-entry-py39-20261021-v1-1-0

fab-pm-optimizer-python-entry-py39-20261021-v1-1-0

全桥LLC谐振变化器参数设计资料(闭环仿真+参数设计报告)

内容概要:本文档系统性地介绍了全桥LLC谐振变换器的闭环仿真建模与关键参数设计方法,涵盖其工作原理、谐振元件(如谐振电感、谐振电容、励磁电感)的计算与优化流程,并结合Simulink或Plecs等仿真平台构建闭环控制系统模型,重点验证变频控制策略下的软开关实现、系统增益特性、效率优化及动态响应性能。资料包含完整的仿真模型、参数设计报告、数学计算书及参考文献,支持从理论分析到工程实践的全流程研究,适用于高频高效DC-DC变换器的研发与教学应用。; 适合人群:电力电子、电气工程及其自动化等相关专业的高校学生、科研人员,以及从事开关电源、新能源变换器、工业电源研发的工程技术人员,具备电路拓扑基础与仿真软件操作能力者更佳。; 使用场景及目标:①深入掌握全桥LLC谐振变换器的工作机理与谐振参数设计准则;②学习并实现闭环反馈控制系统的建模与稳定性分析;③支撑科研课题、课程设计、毕业设计或实际产品开发中的拓扑选型与性能验证需求;④通过仿真与计算联动提升对软开关技术与效率优化的理解与应用能力。; 阅读建议:建议结合所提供的仿真文件与设计文档同步操作,按照“建模—参数计算—仿真验证—性能分析”的流程逐步推进,重点关注频率调节对ZVS/ZCS实现的影响,对比不同负载条件下的闭环响应差异,深化对谐振腔特性和控制策略协同作用的理解。

PSIM-三相维也纳VIENNA整流器电压电流双闭环+中点电位平衡SVPWM控制仿真

内容概要:本文档详细介绍了一种基于PSIM软件实现的三相维也纳(VIENNA)整流器仿真模型,重点实现了电压电流双闭环控制与中点电位平衡的SVPWM调制策略。该仿真系统通过精确的控制算法有效提升了整流器的功率因数,降低了输入电流谐波含量,并解决了三电平拓扑中常见的直流侧中点电位偏移问题,具有较高的工程实用价值,适用于高效率、高功率密度的电力电子系统设计与科研验证。文档还整合了丰富的配套资源,涵盖多种电力电子变换器拓扑结构、先进控制算法及典型应用场景,形成了系统化的技术资料体系,有助于深入理解现代整流技术的核心原理与发展动态。; 适合人群:面向从事电力电子、电气工程、新能源变换系统等领域的科研人员、高校研究生以及具备一定仿真基础的工程技术人员。; 使用场景及目标:①深入研究三相VIENNA整流器的工作机理与控制特性;②掌握电压外环、电流内环双闭环控制结构的设计方法;③理解并实现SVPWM调制技术与中点电位平衡控制策略的协同作用;④开展相关控制算法的仿真验证、性能优化与实验对比,为高性能整流装置的研发提供理论支撑和技术原型。; 阅读建议:建议结合文中列出的其他仿真案例(如PWM整流器、LLC谐振变换器、DAB变换器等)进行横向对比学习,充分利用所提供的PSIM、MATLAB/Simulink等多平台仿真资源,重点关注控制逻辑与主电路的耦合关系,通过参数调试与波形分析深化对系统动态响应和稳态性能的理解,强化“理论—建模—仿真—优化”的闭环研究能力。

产业园区运营负责人如何利用数智工具提升园区企业的技术对接效率?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

政府科技管理者如何提升区域科技成果转化项目的评价与筛选效率?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

ICD10 openGauss版

ICD10 openGauss版

上一篇: f-string格式说明完全手册:一次性解决你对对齐、精度和类型的所有疑问
下一篇: 为什么你的线程池总在拖垮系统?真相就在corePoolSize与CPU核数的匹配上
LiteProceed
博客等级 码龄1年 136粉丝 2006原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值