Windows环境下JConsole的隐藏技巧:如何高效监控你的Java应用

JMeter压测全流程问题排查指南:从环境配置到结果分析 性能测试是确保软件系统稳定性和可靠性的关键环节,其核心在于模拟真实用户负载以评估系统行为。压力测试通过工具生成并发请求,探测系统在极限或高负载下的性能表现、瓶颈及容错能力。JMeter作为一款广泛使用的开源压测工具,其价值在于提供了从脚本编写、压力施放到结果分析的全套解决方案,帮助研发和测试团队验证系统容量、发现潜在瓶颈。在实际的工程实践中,从环境配置、脚本调试到分布式压测执行和结果解读,每个环节都可能遇到典型问题,例如Java环境配置、端口耗尽、脚本逻辑错误、断言失效以及施压机资源瓶颈等。掌握这些常见问题 阅读详情

Windows环境下JConsole的隐藏技巧:如何高效监控你的Java应用

对于在Windows平台上开发和部署Java应用的技术人员来说,性能监控是日常工作中不可或缺的一环。JDK自带的JConsole工具虽然看起来简单,但深入掌握后能解决80%的Java应用监控需求。本文将揭示那些鲜为人知的高级技巧,让你在Windows环境下像专业性能调优工程师一样使用JConsole。

1. 快速启动与连接优化

很多开发者习惯通过命令行启动JConsole,但在Windows环境下有更高效的方式。按下Win + R组合键后输入jconsole是最快捷的启动方法,但这里有几个提升效率的技巧:

  • 快捷键启动特定进程:在命令提示符中使用jconsole <pid>可以直接连接到指定PID的Java进程,省去选择步骤
  • 保存连接配置:对于频繁监控的远程连接,可以在%USERPROFILE%\.jconsole目录下创建preferences文件保存连接信息
  • 批量监控脚本:创建一个批处理文件同时监控多个关键进程:
@echo off
start jconsole -interval=5 <pid1>
start jconsole -interval=5 <pid2>

注意:interval参数设置采样间隔(秒),默认10秒,对于短期性能问题可设为3-5秒

当连接本地进程时,Windows平台有个特殊优势:JConsole会自动识别所有Java进程并显示友好名称(如Tomcat、Jenkins等),而Linux/Mac通常只显示主类名。

2. 内存监控的深层解读

内存标签页是使用最频繁的功能,但大多数开发者只关注堆内存曲线。实际上,这些数据隐藏着更多价值:

堆内存结构分析表

区域正常特征异常信号调优建议
Eden区锯齿状快速升降持续高位增大Young Generation
Survivor区0-50%波动长期空置或满溢调整SurvivorRatio
老年代阶梯式缓慢上升陡峭上升检查内存泄漏或增大Old Gen
Metaspace启动后稳定持续增长检查类加载器泄漏

右键点击内存图表可以执行三个关键操作:

  1. 保存为CSV:导出历史数据用于后续分析
  2. 设置阈值警报:当内存超过指定百分比时弹出通知
  3. 显示GC时间:叠加显示GC事件时间点

实战技巧:在内存泄漏排查时,先观察老年代内存曲线,执行手动GC(点击"执行GC"按钮)后如果内存不回落,很可能存在内存泄漏。此时切换到"VM摘要"标签查看-Xmx设置是否合理。

3. 线程分析的进阶方法

线程标签页不仅能看数量变化,更是定位性能瓶颈的利器。Windows平台下这些技巧特别实用:

  • 线程名优化:在代码中为线程设置有意义的名字(如HttpRequestProcessor-1),比默认的Thread-0更易识别
  • 死锁检测:点击"检测死锁"按钮不仅显示死锁线程,还会标记持有锁的代码位置
  • CPU热点定位:配合JTop插件(后文介绍)找出CPU占用高的线程,然后在此查看其完整堆栈

关键线程状态说明:

  • BLOCKED:等待获取对象锁(可能性能瓶颈)
  • WAITING:调用了Object.wait()
  • TIMED_WAITING:带有超时的等待状态
  • RUNNABLE:正在执行或可运行

对于线程转储分析,Windows有个隐藏功能:在线程列表按Ctrl+C可以复制当前线程堆栈到剪贴板,方便粘贴到文档或聊天工具中讨论。

4. 插件扩展与自动化监控

JConsole支持插件扩展,最实用的是JDK自带的JTop插件。在Windows上安装步骤如下:

  1. 定位插件jar:%JAVA_HOME%\demo\management\JTop\jtop.jar
  2. 创建快捷方式命令:
jconsole -pluginpath %JAVA_HOME%\demo\management\JTop\jtop.jar

JTop插件提供三大核心功能:

  • 实时线程CPU占用排序
  • 线程状态过滤(RUNNABLE/BLOCKED等)
  • 线程组聚合视图

自动化监控方案:对于需要长期监控的生产环境,可以用JMX连接结合脚本定期采集数据:

# 每5分钟采集一次内存数据
while($true) {
    $timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
    $memory = (jstat -gc <pid> | Select-Object -Last 1).Split(" ") | Where-Object { $_ }
    "$timestamp,$($memory[3]),$($memory[5])" | Out-File "memory_log.csv" -Append
    Start-Sleep -Seconds 300
}

对于需要监控多个服务器的场景,推荐使用JConsole的"远程连接"功能配合SSH隧道:

  1. 在目标Java进程启动时添加JMX参数:
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9010
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
  1. 本地建立SSH隧道:
ssh -L 9010:localhost:9010 user@remote-server
  1. 在JConsole连接localhost:9010即可

5. 性能调优实战案例

某Windows服务端应用出现周期性卡顿,通过JConsole排查的完整流程:

  1. 现象确认:在"概述"页观察到CPU使用率每20分钟出现一次峰值
  2. 内存分析:发现每次CPU高峰前老年代内存稳步上升,Full GC后回落
  3. 线程分析:CPU高峰时所有线程处于RUNNABLE状态,无死锁
  4. MBean检查:在java.lang:type=GarbageCollector中发现GC时间异常增加
  5. 最终定位:通过JTop插件发现一个报表生成线程在CPU高峰时持续占用资源
  6. 解决方案:调整报表生成策略为分片处理,并增加Young区大小减少Full GC频率

调优前后关键指标对比:

指标调优前调优后
平均GC时间1.2秒/次0.3秒/次
系统吞吐量78 req/s125 req/s
99%响应时间850ms320ms

这个案例展示了如何组合使用JConsole的各项功能进行系统性性能分析。Windows平台下的开发者还可以利用WMI配合JConsole数据,构建更完整的监控体系。

JMeter启动全攻略:从环境配置到命令行压测实战 性能测试是确保软件系统稳定性和扩展性的关键环节,其核心原理是通过模拟真实用户并发请求来评估系统在高负载下的表现。在众多性能测试工具中,Apache JMeter因其开源、跨平台和高度可扩展的特性,成为工程师进行接口和Web应用压测的常用选择。要充分发挥JMeter的技术价值,无论是用于学习调试还是生产环境下的正式压测,一个正确且高效的启动过程是首要前提。这涉及到Java运行环境的适配、内存的合理分配以及启动模式的选择。特别是在应对高并发场景时,命令行模式结合内存参数调优,能有效避免内存溢出,确保测试结果的准 阅读详情

相关推荐

SpringBoot箱包存储管理系统实战:从零搭建Java Web应用

在Java Web开发领域,SpringBoot框架以其“约定大于配置”的理念,极大地简化了企业级应用的构建流程。其核心原理在于通过自动配置和起步依赖,快速集成数据持久化、Web服务等组件,显著提升开发效率。这一技术价值在于为开发者提供了标准化的项目结构和开发范式,尤其适用于构建数据驱动的管理系统。典型的应用场景包括商品管理、订单处理和库存系统等后台服务。本文以箱包存储管理系统为例,详细演示了如何使用SpringBoot整合MySQL数据库,实现完整的CRUD操作和RESTful API,并提供了从环境搭建

benben 353

IntelliJ IDEA 2024.3 插件管理实战:3种安装方式与5个性能优化参数

本文详细解析了IntelliJ IDEA 2024.3插件管理的3种安装方式与5个性能优化参数,涵盖Marketplace在线安装、磁盘安装及命令行安装的技术细节,并提供JVM参数优化方案,显著提升IDE性能与开发效率。特别针对插件依赖冲突问题给出实战排查方法,是Java开发者优化工作流的必备指南。

weixin_33884611的博客 375

JavaQuestPlayer:用Java重写跨平台QSP游戏引擎,实现一次编写到处运行

游戏引擎是游戏开发的核心框架,负责处理游戏逻辑、资源管理和平台交互。其核心原理在于通过抽象层封装底层硬件与系统差异,为开发者提供统一的编程接口。这一设计带来了显著的技术价值:它极大地提升了开发效率,保证了游戏在不同设备上的一致体验,并降低了维护成本。在应用场景上,跨平台引擎尤其适合独立开发者和中小团队,能帮助其作品触达Windows、macOS、Linux乃至移动端等更广泛的用户群体。本文聚焦的JavaQuestPlayer项目,正是这一理念的实践典范。它通过Java虚拟机(JVM)实现“一次编写,到处运行

weixin_30680385的博客 512

Tomcat部署实战:从环境配置到性能调优的通用错误与避坑指南

在Java Web开发领域,应用服务器是承载业务逻辑的核心运行环境。其工作原理在于通过特定的容器管理Servlet生命周期、处理HTTP请求与响应,并管理线程、连接等系统资源。合理配置应用服务器对于保障Web应用的稳定性、性能和安全性具有至关重要的技术价值,是生产环境高效运行的基石。无论是单体应用还是分布式微服务架构,其部署与配置都是开发者必须掌握的基础技能。本文将聚焦于广泛使用的Apache Tomcat服务器,针对其环境配置、应用部署、连接器调优、会话管理等核心环节,结合内存泄漏、性能调优等高频热词,深

weixin_30512043的博客 335

JMeter性能测试内存泄漏诊断与JVM调优实战指南

在Java应用性能测试领域,内存管理是保障测试稳定性的核心基础。Java虚拟机(JVM)的堆内存是对象实例的存储区域,其有效管理直接关系到应用的吞吐量与稳定性。理解垃圾回收(GC)原理,对于诊断内存溢出(OOM)问题至关重要。从技术价值看,精准的内存分析与调优能显著提升压测效率,避免因工具自身资源耗尽导致的测试中断。在性能测试、压力测试等应用场景中,测试工具如JMeter自身也可能成为性能瓶颈,其中监听器滥用与变量管理不当是典型的内存泄漏诱因。本文聚焦于JMeter测试计划中的内存泄漏点剖析,结合JVM堆参

weixin_33782386的博客 385

Eclipse配置Tomcat全解析:从版本兼容到热部署实战

Java Web开发中,服务器配置是应用部署与运行的基础环节。其核心原理在于将开发环境与服务器运行时环境进行正确关联,确保项目依赖、类加载路径与部署映射的一致性。这一过程的技术价值在于为开发者提供了本地调试、快速迭代和问题排查的能力,是理解Web应用生命周期的重要实践。在实际开发场景中,尤其是在维护传统项目或搭建特定教学环境时,**版本兼容性**与**热部署**机制成为影响开发效率的关键因素。本文以Eclipse集成Tomcat为例,深入讲解如何通过配置运行时环境、管理服务器实例,并实现高效的代码热更新,帮

weixin_34242819的博客 414

Tomcat 8.5.58生产环境部署与调优全指南

Web应用服务器是Java Web开发的核心基础设施,负责处理HTTP请求、管理Servlet生命周期并提供动态内容服务。其工作原理基于Java Servlet和JSP规范,通过多线程模型和连接器架构实现高并发请求处理。在技术价值上,一个稳定、高效的Web服务器能显著提升应用性能、保障服务可用性,并简化部署运维流程。Tomcat作为轻量级、开源的应用服务器,凭借其与Servlet API的紧密集成和高度可配置性,成为中小型Java应用和微服务架构中的主流选择。本文聚焦于Tomcat 8.5.58这一经典稳定

Eric.Net的专栏 408

一小时搭建Spring Boot+Vue3博客系统:从环境配置到部署上线

在Web开发领域,前后端分离架构已成为构建现代应用的主流范式。其核心原理是将用户界面与业务逻辑解耦,前端负责交互与展示,后端专注数据处理与API供给,通过HTTP协议进行通信。这种架构模式的技术价值在于提升开发效率、便于团队协作,并能实现更好的可扩展性与维护性。在众多应用场景中,个人博客系统是实践前后端分离技术的经典案例,它涵盖了用户认证、数据CRUD、API设计等核心技能。本文聚焦于如何快速构建一个功能完整的博客系统,其技术栈选用了当前业界广泛采用的Spring Boot与Vue3组合。Spring Bo

weixin_34238633的博客 360

Java内存马攻防实战:MemShellGene工具全解析与红蓝队应用

内存马(MemShell)是一种无文件、驻留于应用内存的恶意代码技术,其核心原理是通过Java动态类加载机制(如defineClass)将恶意字节码注入到JVM中,并注册为Web容器的Filter、Servlet等组件。这项技术的价值在于其极强的隐蔽性和持久化能力,能绕过传统基于文件的检测。在攻防演练和应急响应场景中,内存马常被用于维持权限、执行命令。MemShellGene作为一个集成化工具,将内存马的生成、注入、测试和检测流程标准化,显著提升了红队武器化效率和蓝队检测验证能力。通过内置的本地测试环境,安

weixin_30553777的博客 420

SRv6第二弹:SRv6基本概念

在SRv6网络编程中,不同的转发行为由不同的Function来标识,例如在RFC中定义了公认的End、End.X、End.DX4、End.DX6等。例如:R3使用报文的IPv6目的地址FC03::3查找Local SID表,命中到End SID,随后R3将报文SL减1,同时将SL=1的SID做为报文目标IPv6地址,并查路由表转发出去。SID支持静态配置或者动态分配,end-op、end、end.x、end-dt4、end-dt6、end-dx2推荐静态配置 ,便于网络运维,其他的SID可以动态分配。

wbyyy的博客 4253

解决rt-thread上使用SPI+DMA

首先阐述下遇到的问题 使用SPI读取icm20602数据,读取频率为1000hz,使用stm32f407主控,发现CPU占用率达到了70%,将此线程注释掉后CPU占用率掉到25%,看来这里要着重优化,便萌生了使用DMA的想法。 使用SPI+DMA要进行的配置 1.开启RTT设备驱动。点击自己的工程 ->RT-Thread Setting2.在board.hzhong3.在board.c文件里加入以下函数,此函数受设备框架调用 void HAL_SPI_MspInit(SPI_HandleTypeDef

响望的博客 8091

Java编程入门到精通:从环境搭建到JVM调优的完整知识体系

Java作为一门面向对象的编程语言,其核心在于通过编译型语言特性实现'一次编写,到处运行'的跨平台能力。这一特性依赖于Java虚拟机(JVM)的架构,JVM负责将字节码解释或即时编译为特定平台的机器指令。理解JVM的内存管理机制和垃圾回收原理,对于编写高性能、高可用的Java应用至关重要,尤其是在处理大数据量和高并发场景时。面向对象编程(OOP)的四大特性——封装、继承、多态和抽象,构成了Java设计的哲学基础,是构建模块化、可复用软件系统的核心。在实际开发中,合理运用异常处理机制和泛型编程,能显著提升代码

weixin_33892359的博客 477

DataGridView 右键菜单复制(公共)

dataGridView1.CellMouseClick += new DataGridViewCellMouseEventHandler( (sender1, e1) => { if (e1.Button == MouseButtons.Right) {

沁心渃水 2834

Nginx反向代理多Tomcat实例部署实战:从单机多端口到生产环境调优

在Web应用部署架构中,反向代理是实现流量分发、负载均衡和安全隔离的核心技术。其基本原理是通过一个中间服务器接收客户端请求,并根据预设规则将请求转发到后端多个应用服务器,对外隐藏了复杂的内部网络结构。这一技术价值在于显著提升了系统的可扩展性、安全性和资源利用率,是构建高可用服务集群的基础。在实际应用场景中,常与Tomcat等Java应用服务器结合,用于部署多个独立项目。本文聚焦于Nginx反向代理配置与Tomcat多实例部署的工程实践,详细解析了如何通过端口隔离与路径/子域名路由策略,实现单服务器上多个Sp

weixin_34356555的博客 449

从零构建:Trinamic API在STM32上的深度移植与TMC-IDE通信实战

本文详细介绍了如何从零开始在STM32平台上深度移植Trinamic API,并实现与TMC-IDE工具的稳定通信。内容涵盖SPI底层驱动定制、寄存器配置、高级功能实现及调试技巧,重点解析了TMC5160芯片的集成实践,帮助开发者构建可靠的嵌入式运动控制系统。

w1x2y3的博客 255

具身智能机器人算法控制研究进展综述

具身智能(Embodied Intelligence)作为人工智能与机器人学的交叉前沿领域,强调智能体通过物理身体与环境的持续交互涌现智能行为。近年来,随着基础模型(Foundation Models)、扩散策略(Diffusion Policy)、视觉-语言-动作(Vision-Language-Action, VLA)模型以及大规模机器人数据集(如Open X-Embodiment)的快速发展,具身智能机器人的算法控制范式正经历深刻变革。

VectorShift的博客 230

Java零基础到实战:环境搭建、核心语法、算法与面试全攻略

Java作为一门面向对象的编程语言,其核心在于通过封装、继承和多态三大特性来构建复杂的软件系统。理解其底层原理,如JVM内存模型和垃圾回收机制,是编写高效、稳定程序的基础。掌握集合框架(如ArrayList、HashMap)和并发编程(如synchronized、volatile)等技术,能有效提升系统性能和可靠性。这些知识不仅是工程实践的关键,也是应对大厂面试的必备技能。本文以Java学习路线为蓝本,结合斯坦福经典练习题和力扣算法题,系统讲解从环境搭建、核心语法到算法思维和面试准备的完整闭环,帮助初学者构

weixin_33907511的博客 373

算法 | 基于MATLAB的增量式SVD技术综述:实现方法、代码示例与应用实践

效率提升:较传统SVD降低计算复杂度从On3O(n^3)On3至On2O(n^2)On2实时性:支持毫秒级动态数据更新资源友好:内存占用降低60%-80%[5]

尘世冰封的专栏 488

FinalShell密码查看与安全管理:从加密原理到三种实用方法

在服务器管理和运维实践中,密码安全管理是保障系统安全的基础环节。许多SSH客户端工具提供了密码保存功能,其核心原理通常采用本地加密存储机制,将用户凭证通过加密算法保护,以实现便捷登录与安全性的平衡。从技术价值看,这既提升了操作效率,又降低了明文存储带来的风险。在实际应用场景中,当用户忘记密码、需要交接或验证时,就产生了查看已保存密码的合法需求。针对FinalShell这一常用工具,其密码存储基于AES加密并与用户环境绑定,因此直接解密较为困难。本文将围绕这一主题,介绍通过导出连接、内存调试等安全方法查看密码

weixin_33892359的博客 384

工商银行软件开发中心数据安全监测溯源防护体系建设成果及展望

结合业界先进溯源理念和我行管理要求,依托大数据、分布式搜索分析引擎等技术,构建PB级海量数据加工分析和小时级快速核验、检索、溯源手段(如图6所示),支撑6种客户敏感信息关键要素的单一或组合溯源,形成行之有效的数据安全溯源流程,配套落地自动化快速泄露样本真实性核验和灵活高效的溯源能力,通过数据相关属性的自动化分析,实现追踪泄露源头、明确泄露路径的目标,为有效应对数据安全事件,降低和消除风险与不良影响,开展事后追责处置工作提供体系化解决方案。提高数据排查的自动化程度和排查效率,降低人工成本。

银行信息系统应用架构详解 226

Tessent ATPG Flow 流程 (代码和注释)

**摘要:Tessent ATPG流程分为五个阶段:1) 环境初始化(加载设计文件、库和扫描链配置);2) DRC规则检查(验证设计可测试性并修复违例);3) ATPG向量生成(设置故障模型并运行引擎优化覆盖率);4) 向量验证与后处理(仿真验证并生成ATE格式文件);5) 进阶操作(多电压域和存储器测试)。流程输出包括测试向量、覆盖率报告和验证日志,支持stuck-at和transition故障模型,使用Tcl脚本控制。关键步骤包含扫描链配置、EDT压缩和覆盖率优化。

QQ_778132974的博客 932

从冒泡排序看Java、Go与前端技术栈的工程思维差异

排序算法是计算机科学的基础概念,其核心原理是通过比较和交换将数据元素按特定顺序重新排列。从简单的冒泡排序到高效的快速排序,算法的时间与空间复杂度直接影响程序性能。在工程实践中,排序任务的价值不仅在于算法本身,更在于如何结合语言特性和系统资源进行高效实现。不同的技术栈为此提供了截然不同的解决方案:Java强调面向对象与设计模式,通过抽象封装确保代码的健壮性和可维护性;Go凭借其轻量级并发原语,天然适合利用多核优势进行并行计算;而前端JavaScript则需在单线程事件循环中,通过Web Worker避免UI阻

weixin_30945039的博客 552

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

JUnit测试性能分析与优化实战:从JFR剖析到CI/CD集成

在软件工程实践中,单元测试是保障代码质量的核心环节,而测试本身的执行效率直接影响开发反馈速度和持续集成流水线的健康度。其原理在于将测试用例视为可观测的执行单元,通过采集执行时间、内存使用、I/O操作等关键指标数据,定位隐藏的性能瓶颈和资源泄漏问题。这项技术的核心价值在于提升测试套件的整体执行效率,减少CI/CD等待时间,从而加速开发迭代周期。典型的应用场景包括识别Spring上下文启动缓慢、数据库查询效率低下、内存泄漏以及并行测试资源竞争等问题。本文聚焦于JUnit测试性能分析,深入探讨如何利用Java F

474

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

25万+字干货|Java面试85题图解版:43道高频真题速查手册(八股+源码双吃透)

本文为25万字超全干货的Java面试85题图解完整版手册,精选43道大厂高频面试真题,摒弃传统死记硬背八股文模式,采用三句标准答案、生活化场景比喻、核心结构图解的方式,通俗讲解Java基础、并发、JVM、数据库、框架等核心考点。每道题目配套实战避坑指南、面试官高频追问与源码解析,实现八股背诵与底层源码双向吃透,适合校招、社招程序员考前速刷、长期复盘,轻松攻克Java面试重难点。

折哥|智能物流与Java实战,副高数据库工程师。深耕出版社物流WMS/OMS(线体/立库/VGA),也分享Java进阶与OMS电商对接。Oracle→PG实战派。相信沉淀可迁移能力,分享通用技术,不藏不虚。 795

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

147.【2024Java八股-全网最全-10w字】

eg: 学校、院校、经验、年龄、跳槽频率…基本包括16种常见使用场景: 、数据共享分布式、、全局 ID、计数器、限流、位统计、购物车、用户消息时间线 timeline、、抽奖、点赞、签到、打卡、商品标签、商品筛选、用户关注、推荐模型、排行榜.详细讲解16种使用场景: https://blog.youkuaiyun.com/zxl646801924/article/details/123202381用户使用id进行查询文章的时候,首先会查询redis数据库,如果在redis中命中数据,那么redis就向用户返回查询的结果

qq_69683957的博客 1736

系统资源占用异常排查:CPU与内存消失之谜与专业工具指南

在计算机系统性能监控中,CPU使用率和内存占用率是衡量系统负载的核心指标。其原理在于操作系统通过内核调度器管理处理器时间片,并通过内存管理器分配物理与虚拟地址空间。准确监控这些资源对于保障系统稳定性和应用性能至关重要,直接影响到服务器响应、应用流畅度及用户体验。在实际的工程实践中,开发者与运维人员常会遇到任务管理器显示资源耗尽,但进程列表却无对应高占用进程的典型矛盾。这通常涉及系统中断(Interrupts)、文件缓存(File Cache)、内核内存池等底层机制,使得资源消耗未直接归属到具体用户进程。针对

weixin_30878501的博客 317
上一篇: AOD4184 MOS管实测踩坑记:从坏件排查到单片机控制12V电路(附完整接线图)
下一篇: EasyPoi隐藏技巧:用$fe语法实现Word模板复杂表格循环(含跨行合并实战)
lambda
博客等级 码龄23年 49粉丝 1303原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值