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

为什么你的虚拟线程不快?Java 25调度策略深度拆解:3种调度模式对比+2套YAML配置模板(含Quarkus/Spring Boot适配)

更多请点击 https://intelliparadigm.com第一章Java 25虚拟线程性能瓶颈的根源诊断Java 25 正式将虚拟线程Virtual Threads从预览特性转为标准特性但生产环境中频繁出现 CPU 利用率异常飙升、Thread.State.WAITING 线程堆积、以及 ForkJoinPool.commonPool 饱和等现象表明底层调度与阻塞感知机制仍存在深层矛盾。核心瓶颈定位路径启用 JVM 运行时诊断添加启动参数 -Djdk.tracePinnedThreadsfull -XX:UnlockDiagnosticVMOptions -XX:LogVMOutput -Xlog:virtualthreadsdebug捕获线程快照执行 jcmd $PID VM.native_memory summary scaleMB 与 jstack -l $PID thread-dump.txt 对比分析识别 pinned 场景检查日志中 Pinning detected 关键字及关联的 native 方法栈如 FileInputStream.read()、Object.wait() 或 JNI 调用典型阻塞陷阱示例// ❌ 错误同步块内执行阻塞 I/O导致虚拟线程被 pinning synchronized (lock) { Files.readString(Paths.get(config.json)); // 阻塞式文件读取 → pinned } // ✅ 正确委托至平台线程或使用异步 API CompletableFuture.supplyAsync(() - Files.readString(Paths.get(config.json)), ForkJoinPool.commonPool() // 显式指定调度器 );虚拟线程状态分布对比表状态类型典型触发条件是否可调度JFR 事件标记TERMINATED任务执行完成否VirtualThreadEndWAITING (pinned)进入 synchronized 块 阻塞调用否绑定 OS 线程PinnedThreadStartRUNNABLE (unpinned)纯计算或非阻塞操作是由 VMScheduler 调度VirtualThreadSubmit第二章Java 25虚拟线程调度器内核机制深度解析2.1 虚拟线程与平台线程的协同调度模型理论 JVM TI跟踪实测验证实践协同调度核心机制虚拟线程通过Carrier Thread平台线程执行JVM采用“挂起-移交-恢复”三阶段调度当虚拟线程阻塞时其栈被快照保存控制权交还调度器由另一虚拟线程复用该平台线程。JVM TI 实测关键钩子JNIEXPORT void JNICALL VirtualThreadStart(jvmtiEnv *jvmti, JNIEnv* jni, jthread thread) { // 捕获虚拟线程启动事件获取 carrier_thread_id jvmti-GetThreadState(thread, state); if (state JVMTI_THREAD_STATE_VIRTUAL) { jvmti-GetCarrierThread(thread, carrier); } }该回调在虚拟线程绑定平台线程瞬间触发GetCarrierThread返回底层平台线程引用用于建立虚/实线程映射关系表。调度开销对比10K线程压测指标纯平台线程虚拟线程内存占用/线程1 MB~2 KB创建耗时avg85 μs0.3 μs2.2 调度器事件循环Event Loop的唤醒延迟与上下文切换开销分析理论 JFR火焰图量化定位实践唤醒延迟的根源事件循环在空闲时依赖定时器或 I/O 通知唤醒但内核调度器响应存在不确定性。Linux 的CFS调度策略下nanosleep()实际唤醒偏差常达 10–50 μs尤其在高负载容器中易受throttling影响。JFR采样配置示例jcmd $PID VM.native_memory summary jcmd $PID VM.unlock_commercial_features jcmd $PID VM.jfr.start nameloop-profile settingsprofile delay5s duration30s filename/tmp/loop.jfr该命令启用低开销采样默认 10ms 间隔聚焦java.lang.Thread.onSpinWait和os::sleep调用栈为火焰图提供高保真时序数据。关键指标对比指标理想值实测瓶颈值平均唤醒延迟 5 μs28 μsCPU 饱和时上下文切换频次 1k/s12.7k/s轮询模式误用2.3 Carpark/Unpark机制在高并发IO场景下的阻塞传播效应理论 NettyVirtualThread压测对比实验实践阻塞传播的根源当大量线程因 IO 未就绪而调用LockSupport.park()其底层依赖 OS 线程挂起导致内核态调度开销陡增。此时少量慢请求会引发线程池耗尽进而使后续健康请求也陷入 park 等待——形成“阻塞雪崩”。Netty vs VirtualThread 压测关键指标场景99% 延迟ms吞吐req/s线程数NettyEventLoop44228,60016VirtualThreadForkJoinPool1841,200~3,200虚拟核心代码逻辑对比// VirtualThread 中避免显式 park由 JVM 自动调度 try (var scope new StructuredTaskScope.ShutdownOnFailure()) { scope.fork(() - blockingIORead()); // 自动挂起不消耗 OS 线程 scope.joinUntil(Instant.now().plusSeconds(5)); }该结构确保 IO 阻塞时仅释放 CPU 资源而非 OS 线程JVM 在底层将挂起映射为轻量协程切换彻底切断 park 链式传播路径。2.4 调度器负载均衡策略失效场景建模理论 ThreadLocal泄漏引发的调度倾斜复现与修复实践典型失效场景建模当调度器依赖节点历史负载指标如 CPU 加权平均、队列长度滑动窗口进行决策而指标采集周期远大于任务突发周期时会形成「感知滞后」。此时短时流量洪峰会集中压入低负载但已过期的节点。ThreadLocal 泄漏复现public class TaskRunner implements Runnable { private static final ThreadLocal connHolder ThreadLocal.withInitial(() - new Connection(db-01)); // 未重置/移除 public void run() { // 业务逻辑中未调用 connHolder.remove() processTask(); } }该实现导致线程复用时旧连接残留使调度器误判该线程所属 worker 节点资源已耗尽持续将新任务导流至其他节点造成调度倾斜。修复方案对比方案生效时机风险显式 remove()任务末尾易遗漏try-finally 包裹强保障侵入业务逻辑WeakReference 清理钩子JVM GC 时延迟不可控2.5 GC暂停对虚拟线程调度队列的隐式干扰机制理论 ZGC/Shenandoah下调度抖动实测对比实践隐式干扰的本质虚拟线程Virtual Thread依赖ForkJoinPool的窃取队列实现轻量调度但GC全局安全点Safepoint会强制所有Java线程含挂起的虚拟线程载体平台线程同步停顿。此时未完成的Continuation.run()调用被中断导致调度队列状态不一致。ZGC vs Shenandoah 抖动实测对比指标ZGC17u8Shenandoah17u899% 调度延迟μs4267GC 触发时队列重平衡次数≤13–5关键代码路径// JDK 21 Continuation.dispatch() 中的隐式屏障 if (VM.isGCActive()) { // 不可省略的安全点轮询 VM.waitForSafePoint(); // 阻塞直至GC完成 → 调度队列冻结 }该检查插入在Continuation恢复前使虚拟线程无法在GC窗口内更新其所属队列指针造成短暂“调度盲区”。ZGC的并发标记与转移阶段几乎不触发STW故队列抖动显著低于Shenandoah的并发疏散暂停。第三章三大原生调度模式原理与适用边界3.1 ForkJoinPool.defaultForkJoinWorkerThreadFactory吞吐优先型的隐式绑定陷阱与规避方案默认调度器的隐式线程绑定ForkJoinPool.commonPool() 由 JVM 隐式创建其工作线程与调用线程存在非对称绑定——当主线程调用join()时会主动窃取任务导致 I/O 阻塞线程被长期占用。典型陷阱复现// 危险模式在 commonPool 中执行阻塞操作 CompletableFuture.supplyAsync(() - { Thread.sleep(5000); // 阻塞 → 窃取线程被锁死 return done; }).join();该代码将阻塞 commonPool 中一个 worker 线程降低整体吞吐JDK 9 已通过ManagedBlocker改进但未彻底解耦。规避方案对比方案适用场景线程隔离性自定义 ForkJoinPoolCPU 密集型并行计算强ExecutorService CompletableFuture混合 I/O 与计算强3.2 自定义ScheduledExecutorService定时任务场景下的低延迟保障实践在高时效性要求的金融行情推送、实时风控等场景中JDK 默认的ScheduledThreadPoolExecutor因共享队列与线程竞争易引发调度延迟抖动。核心优化策略隔离专用线程池避免与其他业务线程争抢资源采用DelayQueue 单线程调度器消除锁竞争预热任务队列规避首次调度冷启动延迟轻量级自定义实现public class LowLatencyScheduler extends ScheduledThreadPoolExecutor { public LowLatencyScheduler() { super(1, new ScheduledTaskThreadFactory(), new ThreadPoolExecutor.CallerRunsPolicy()); setContinueExistingPeriodicTasksAfterShutdownPolicy(false); } }该实现将核心调度线程数固定为1配合调用者运行策略CallerRunsPolicy防止任务积压确保周期性任务提交后平均延迟稳定在 50μs 内实测 Q99 ≤ 120μs。性能对比10ms 周期任务QPS1000指标默认 ScheduledThreadPoolExecutorLowLatencyScheduler平均延迟8.7ms0.011ms延迟标准差4.2ms0.003ms3.3 Structured Concurrency调度器作用域生命周期与取消传播的确定性控制作用域边界即生命周期边界Structured Concurrency 的核心契约是子协程的生命周期严格受限于其父作用域。一旦作用域退出正常完成或被取消所有派生协程将被同步终止无悬垂任务。取消传播的确定性保障func fetchWithTimeout(ctx context.Context) error { // ctx 由父作用域传入携带统一取消信号 childCtx, cancel : context.WithTimeout(ctx, 2*time.Second) defer cancel() // 确保作用域退出时释放资源 return doFetch(childCtx) // 子任务继承并响应 ctx.Done() }该模式确保取消信号沿调用链向下**单向、不可屏蔽、即时生效**cancel() 调用触发 childCtx.Done() 关闭doFetch 内部 select 随即退出。调度器协同机制组件职责Scope Manager跟踪活跃协程数拦截 panic 并统一清理Cancel Broker广播取消事件阻塞至所有子任务确认终止第四章生产级YAML配置模板与框架适配指南4.1 Quarkus 3.15虚拟线程调度器全参数YAML模板含metrics暴露与熔断集成核心配置结构quarkus: virtual-thread-pool: core-size: 256 max-size: 1024 keep-alive: 30S micrometer: export: prometheus: true resilience: circuit-breaker: default: failure-threshold: 0.6 delay: 30S该配置启用Quarkus 3.15原生虚拟线程池并通过Micrometer暴露Prometheus指标端点同时为所有CircuitBreaker方法注入统一熔断策略。关键参数对照表参数作用推荐值core-size预分配虚拟线程数≥CPU核心数×4failure-threshold失败率触发熔断阈值0.5–0.84.2 Spring Boot 3.4 WebMvc/WebFlux双栈虚拟线程调度配置含Async与ReactiveAdapter适配虚拟线程基础启用Spring Boot 3.4 默认启用虚拟线程支持需在application.properties中显式声明# 启用虚拟线程调度器WebMvc/WebFlux 共享同一ForkJoinPool spring.threads.virtual.enabledtrue spring.threads.virtual.name-prefixvt-该配置使TaskExecutor和WebClient均自动绑定至VirtualThreadPerTaskExecutor避免平台线程争用。Async 与 ReactiveAdapter 协同机制组件适配方式调度行为Async 方法注入TaskExecutor自动桥接到虚拟线程池每个调用独占 VT无线程上下文丢失Mono/Flux通过ReactiveAdapterRegistry注册VirtualThreadScheduler在publishOn()中透明切换4.3 多租户场景下隔离调度器的命名空间YAML声明式定义支持动态加载声明式定义核心结构apiVersion: scheduling.example.com/v1 kind: IsolatedScheduler metadata: name: tenant-a-scheduler namespace: tenant-a spec: affinity: nodeSelector: {node-role.kubernetes.io/tenant-a: true} priorityClass: tenant-a-priority该YAML声明将调度器绑定至特定租户命名空间并通过节点亲和性与优先级类实现资源硬隔离。namespace 字段触发控制器动态监听对应命名空间事件无需重启组件。动态加载机制控制器使用 SharedInformer 监听 IsolatedScheduler 自定义资源变更每个租户命名空间独立注册 SchedulerProfile避免跨租户调度器污染CRD 更新后 200ms 内完成调度器热替换调度器绑定关系表租户命名空间调度器名称生效Pod标签选择器tenant-atenant-a-schedulerscheduling/example.com/tenant: atenant-btenant-b-schedulerscheduling/example.com/tenant: b4.4 基于Micrometer的调度器健康指标YAML注入规范含Grafana看板推荐配置核心指标注入结构management: endpoints: web: exposure: include: health,metrics,prometheus endpoint: health: show-details: when_authorized metrics: tags: application: ${spring.application.name} metrics: export: prometheus: enabled: true该配置启用Prometheus端点并为所有调度器指标自动注入应用标签确保Grafana可通过application维度精准下钻。Grafana推荐看板字段面板名称PromQL表达式用途活跃调度任务数spring_scheduler_pool_active_count{application~$app}监控线程池实时负载任务执行失败率rate(spring_scheduler_executor_tasks_failed_total{application~$app}[5m])识别异常调度链路第五章面向JDK 26的虚拟线程调度演进路线图JDK 26 将正式将虚拟线程Virtual Threads从预览特性转为标准特性并引入调度器级增强核心在于 ForkJoinPool 的 CarrierThread 动态绑定机制与 Thread.Builder.ofVirtual().scheduler() 的显式调度器注入能力。调度策略可插拔化开发者可通过实现 java.util.concurrent.ThreadScheduler 接口定制 I/O 密集型场景下的抢占式唤醒逻辑。例如在 Netty 服务中嵌入自定义调度器以规避阻塞调用导致的载体线程饥饿ThreadScheduler adaptive new ThreadScheduler() { public Thread newCarrierThread(Runnable task) { Thread t new Thread(task); t.setPriority(Thread.MIN_PRIORITY); // 降低CPU争抢 return t; } };运行时调度诊断支持JDK 26 新增 JFR 事件 jdk.VirtualThreadSubmit 与 jdk.VirtualThreadParked配合 jcmd pid VM.native_memory summary scaleMB 可定位载体线程复用瓶颈。关键演进里程碑JDK 21LTS虚拟线程初版预览仅支持默认 ForkJoinPool.commonPool() 调度JDK 23引入 Thread.ofVirtual().scheduler(...) API支持外部调度器注入JDK 26移除 --enable-preview 依赖调度器自动适配 Loom 的 Continuation 挂起点优化性能对比基准10K 并发 HTTP 请求调度配置平均延迟ms载体线程峰值数GC 暂停次数默认 commonPoolJDK 2189.225617自定义 schedulerJDK 2642.6483

相关文章:

为什么你的虚拟线程不快?Java 25调度策略深度拆解:3种调度模式对比+2套YAML配置模板(含Quarkus/Spring Boot适配)

更多请点击: https://intelliparadigm.com 第一章:Java 25虚拟线程性能瓶颈的根源诊断 Java 25 正式将虚拟线程(Virtual Threads)从预览特性转为标准特性,但生产环境中频繁出现 CPU 利用率异常飙升、Thread.State.WAI…...

10分钟完成10倍速视频硬字幕提取:SubtitleOCR颠覆传统工作流

10分钟完成10倍速视频硬字幕提取:SubtitleOCR颠覆传统工作流 【免费下载链接】SubtitleOCR 快如闪电的硬字幕提取工具。仅需苹果M1芯片或英伟达3060显卡即可达到10倍速提取。A very fast tool for video hardcode subtitle extraction 项目地址: https://gitcode.…...

KH Coder:无需编程基础,3步开启多语言文本挖掘之旅

KH Coder:无需编程基础,3步开启多语言文本挖掘之旅 【免费下载链接】khcoder KH Coder: for Quantitative Content Analysis or Text Mining 项目地址: https://gitcode.com/gh_mirrors/kh/khcoder KH Coder是一款功能强大的开源文本挖掘工具&…...

Proxmark3GUI终极指南:5个技巧解决硬件连接问题

Proxmark3GUI终极指南:5个技巧解决硬件连接问题 【免费下载链接】Proxmark3GUI A cross-platform GUI for Proxmark3 client | 为PM3设计的跨平台图形界面 项目地址: https://gitcode.com/gh_mirrors/pr/Proxmark3GUI Proxmark3GUI是一款跨平台的Proxmark3图…...

英雄联盟国服换肤神器R3nzSkin:3分钟解锁全皮肤免费体验指南

英雄联盟国服换肤神器R3nzSkin:3分钟解锁全皮肤免费体验指南 【免费下载链接】R3nzSkin-For-China-Server Skin changer for League of Legends (LOL) 项目地址: https://gitcode.com/gh_mirrors/r3/R3nzSkin-For-China-Server 还在为英雄联盟国服皮肤价格高…...

如何快速获取八大网盘直链下载链接:新手友好的完整教程

如何快速获取八大网盘直链下载链接:新手友好的完整教程 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼…...

Pearcleaner:彻底清理macOS应用残留的终极免费工具

Pearcleaner:彻底清理macOS应用残留的终极免费工具 【免费下载链接】Pearcleaner A free, source-available and fair-code licensed mac app cleaner 项目地址: https://gitcode.com/gh_mirrors/pe/Pearcleaner 你是否曾疑惑为什么删除了macOS应用后&#x…...

图像处理避坑指南:RAW10/RAW12的Packed与Unpacked存储差异及MIPI CSI-2接收解析

图像处理避坑指南:RAW10/RAW12的Packed与Unpacked存储差异及MIPI CSI-2接收解析 在嵌入式图像处理领域,RAW数据的处理效率直接影响整个ISP pipeline的性能。当你在调试一款新的图像传感器时,是否遇到过这样的场景:明明配置了正确的…...

别再只配IP和密钥了!华为交换机SSH安全配置的3个高级技巧与一个常见大坑

华为交换机SSH安全加固实战:3个进阶技巧与一个关键陷阱 当网络工程师完成基础SSH配置后,真正的安全挑战才刚刚开始。许多管理员止步于"能登录就行"的阶段,却忽略了华为交换机SSH功能中隐藏的安全进阶选项。本文将带您突破常规配置&…...

APK Installer:Windows系统安装Android应用的3大核心技术突破

APK Installer:Windows系统安装Android应用的3大核心技术突破 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否厌倦了笨重缓慢的Android模拟器&#x…...

PTA‘超能力者大赛’题解避坑指南:Floyd算法、状态合并与复杂条件判断的实战解析

PTA‘超能力者大赛’题解避坑指南:Floyd算法、状态合并与复杂条件判断的实战解析 当你第一次看到PTA上这道"超能力者大赛"题目时,可能会被它复杂的规则和多层次的交互逻辑吓到。这道题完美融合了图论算法、动态状态管理和精细的条件判断&#…...

告别纸上谈兵:手把手教你用CANoe实战UDS诊断中的$31例程控制

告别纸上谈兵:手把手教你用CANoe实战UDS诊断中的$31例程控制 在汽车电子开发领域,UDS诊断协议是工程师必须掌握的技能之一。而0x31例程控制服务作为UDS诊断中的重要功能,广泛应用于ECU编程、功能测试、标定校准等场景。本文将带你从零开始&am…...

Ultimate SD Upscale终极指南:三步掌握AI图像高清放大技术

Ultimate SD Upscale终极指南:三步掌握AI图像高清放大技术 【免费下载链接】ultimate-upscale-for-automatic1111 项目地址: https://gitcode.com/gh_mirrors/ul/ultimate-upscale-for-automatic1111 Ultimate SD Upscale是AUTOMATIC1111 Stable Diffusion …...

自动驾驶轨迹预测避坑指南:为什么你的模型对路口转向不敏感?聊聊HiVT的旋转不变性设计

自动驾驶轨迹预测避坑指南:HiVT如何用旋转不变性解决路口转向难题 环岛中央,一辆测试车正以30公里时速平稳行驶。工程师们紧盯着屏幕上的预测轨迹曲线——突然,当车辆开始左转时,模型输出的未来路径像被无形力量拉扯般偏离真实轨迹…...

扩散模型在AI药物分子生成中的突破与应用

1. 分子生成技术的前世今生药物研发领域有个经典笑话:化学家们花90%的时间在实验室合成错误的分子,再用剩下10%的时间写论文证明这些错误分子其实很有价值。这个黑色幽默背后,反映的是传统分子发现流程中试错成本居高不下的困境。直到2012年&…...

5分钟掌握nSkinz:CS:GO武器皮肤自定义完全指南

5分钟掌握nSkinz:CS:GO武器皮肤自定义完全指南 【免费下载链接】nSkinz Skin changer for CS:GO 项目地址: https://gitcode.com/gh_mirrors/ns/nSkinz nSkinz是一款专为《反恐精英:全球攻势》(CS:GO)设计的开源皮肤修改工…...

openclaw-graph:开源协作网络分析利器,从图算法到工程实践

1. 项目概述:当图算法遇上开源协作最近在折腾一个挺有意思的开源项目,叫openclaw-graph,作者是alphaonedev。光看这个名字,你可能觉得它就是个普通的图算法库,但如果你像我一样,在数据工程和复杂网络分析里…...

eNSP实战:手把手教你用MAC地址划分VLAN,实现员工电脑走到哪网络权限跟到哪

eNSP实战:MAC地址划分VLAN实现动态网络权限管理 想象一下这样的场景:研发部的工程师抱着笔记本电脑从工位移动到会议室,插上网线就能立即访问部门内网资源;市场部的同事在开放办公区随意更换座位,网络权限始终如影随形…...

3分钟在Windows电脑安装Android应用:告别模拟器的轻量级解决方案

3分钟在Windows电脑安装Android应用:告别模拟器的轻量级解决方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 还在为Windows上运行Android应用而烦恼吗&…...

别再只会抄电路图了!用89C51单片机+ADC0832,手把手教你做一个可调开关电源(附完整代码)

从零构建可调开关电源:89C51与ADC0832的实战指南 1. 项目准备与核心元件解析 在开始动手前,我们需要对关键元件有深入理解。89C51单片机作为经典8位控制器,其40引脚封装提供了32个可编程I/O口,足够应对本项目的需求。特别要注意的…...

实用工具全面指南:FileMeta让你的Windows文件管理效率翻倍

实用工具全面指南:FileMeta让你的Windows文件管理效率翻倍 【免费下载链接】FileMeta Enable Explorer in Vista, Windows 7 and later to see, edit and search on tags and other metadata for any file type 项目地址: https://gitcode.com/gh_mirrors/fi/File…...

中间件版本升级后接口超时暴增300%?揭秘JVM参数、序列化协议与线程模型的隐性耦合陷阱

更多请点击: https://intelliparadigm.com 第一章:Java 中间件适配测试 测试目标与范围界定 Java 中间件适配测试聚焦于验证主流中间件(如 Apache Kafka、Redis、RocketMQ、ShardingSphere-JDBC)在不同 JDK 版本(8u3…...

教育科技公司如何通过Taotoken为不同课程匹配最合适的大模型

教育科技公司如何通过Taotoken为不同课程匹配最合适的大模型 1. 教育场景中的多模型需求 教育科技公司在开发教学辅助工具时,不同学科对AI模型的需求差异显著。编程课程需要模型具备精准的代码生成与解释能力,文科类课程则更依赖创意写作和文本分析功能…...

Taotoken 用量看板如何帮助个人开发者清晰掌握支出

Taotoken 用量看板如何帮助个人开发者清晰掌握支出 1. 用量看板的核心功能 Taotoken 控制台提供的用量看板是个人开发者管理模型调用成本的核心工具。该看板以小时级精度记录每个 API Key 下的 token 消耗情况,并按模型类型自动分类统计。开发者进入控制台后&…...

3分钟快速搞定:Axure RP中文语言包完整安装指南

3分钟快速搞定:Axure RP中文语言包完整安装指南 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文…...

Ultimate SD Upscale:5个核心技巧让AI图像高清放大变得如此简单

Ultimate SD Upscale:5个核心技巧让AI图像高清放大变得如此简单 【免费下载链接】ultimate-upscale-for-automatic1111 项目地址: https://gitcode.com/gh_mirrors/ul/ultimate-upscale-for-automatic1111 你是否曾经为AI生成的图像分辨率不足而烦恼&#x…...

Nexu:开发环境即代码,实现团队开发环境标准化与一键部署

1. 项目概述:从零到一理解Nexu最近在开源社区里,一个名为“nexu-io/nexu”的项目引起了我的注意。乍一看这个标题,你可能会有点摸不着头脑:这到底是做什么的?是某种新的开发框架,还是一个工具链&#xff1f…...

3步解锁Wallpaper Engine资源:你的创意素材提取解决方案指南

3步解锁Wallpaper Engine资源:你的创意素材提取解决方案指南 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg 你是否曾经被Wallpaper Engine精美的动态壁纸所吸引&#x…...

5步快速掌握:Fan Control免费Windows风扇控制软件终极指南

5步快速掌握:Fan Control免费Windows风扇控制软件终极指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trendin…...

终极指南:5分钟掌握Anno 1800模组加载器,打造你的专属游戏世界

终极指南:5分钟掌握Anno 1800模组加载器,打造你的专属游戏世界 【免费下载链接】anno1800-mod-loader The one and only mod loader for Anno 1800, supports loading of unpacked RDA files, XML merging and Python mods. 项目地址: https://gitcode…...