本文详细介绍了如何使用R语言的tableone包快速生成临床基线表(Table 1),包括两列、四列和五列表格的制作方法。文章首先解释了Table 1在临床研究中的重要性,然后逐步演示了如何通过指定变量、分类变量和非正态分布变量来构建表格。此外,还提供了代码示例和详细的操作步骤,帮助读者轻松掌握这一技能。文章还涵盖了表格的保存和输出细节,适合临床研究人员和数据科学家参考使用。 在临床研究中,Table 1是研究者必须完成的初步表格,其内容涉及研究样本的基本特征。R语言作为一种强大的统计和图形工具,其tableone包为生成临床基线表提供了便利。利用R语言和tableone包,研究者可以快速生成包含两列、四列和五列等不同格式的临床基线表。 在介绍具体操作之前,文章强调了Table 1在临床研究中的重要性。Table 1不仅需要详尽展示实验组与对照组在性别、年龄以及其他关键变量上的分布情况,而且还要反映出样本的统计特征。这对于临床试验报告和论文撰写来说是不可或缺的。 具体操作方法包括如何通过tableone包来构建包含不同变量的临床基线表。例如,研究者首先需要明确变量的类型,包括分类变量和连续变量。对于分类变量,研究者需要指定哪些类别变量将被用于构建表格。对于连续变量,如果数据呈现非正态分布,研究者需要进行适当的统计方法调整,以保证基线表的准确性。 文章提供了具体代码示例,并逐步指导研究者如何操作。从加载必要的包开始,到数据集的准备,再到tableone函数的具体参数设置,每一个步骤都详尽解释,帮助读者能够完全掌握使用tableone包制作临床基线表的技能。此外,文章还涉及了表格保存和输出的相关操作,确保研究者可以将基线表导出为多种格式以适应不同的需求。 tableone包的使用在临床研究和数据分析领域具有较高的实用价值,尤其适合那些需要在多变量水平上展示数据的研究人员和数据科学家。通过学习tableone包的使用,研究者不仅可以提高数据处理的效率,还可以确保临床报告的质量和专业性。 文章详细介绍了R语言tableone包的安装和使用方法,给出了具体的代码示例,涵盖了从基础到高级的多个方面。这使得即使是没有编程背景的临床研究人员,也能够通过逐步学习和实践,掌握使用R语言tableone包进行临床基线表制作的技能。文章的实用性和操作性极强,非常适合临床研究和数据分析领域中对该技术有需求的读者。
2025-12-28 10:40:57 7KB 软件开发 源码
1
DLL 补丁式 EXE 界面修改工具简介 该工具是一款采用 DLL 补丁技术的 EXE 文件界面定制工具,无需修改原程序即可实现窗口标题、按钮文字的个性化修改,为用户提供灵活、安全的软件界面定制方案。 核心优势 非侵入式修改:通过 DLL 补丁方式操作,不改动原 EXE 文件,保障原始程序安全性,且支持备份后快速还原。 功能丰富灵活:具备原标题自动获取、手动输入、窗口标题捕获(需 pywin32 支持)等功能,同时可自定义副标题与按钮文字。 流程引导清晰:从 DLL 生成到注入提供全流程引导,兼容 Visual Studio、MinGW 等编译环境,适配 Process Hacker、Cheat Engine 等注入工具,且明确区分 32/64 位程序的 DLL 适配要求。 适用场景 适用于需要对 EXE 程序界面标题、按钮文字进行个性化调整的场景,尤其适合技术人员对软件界面进行定制化改造,满足特定使用或展示需求,在保障程序安全性的前提下实现界面的灵活定制。
2025-12-27 20:26:11 647.96MB
1
网页监控是一种重要的技术手段,它主要用于实时监测网页内容的变化,以获取及时的信息更新或进行数据分析。在互联网时代,网页监控工具对于企业和个人来说都具有很高的价值,例如跟踪竞争对手的动态、监控自身网站的性能或者抓取有价值的数据。在这个场景中,"网页内容监视器"和"网页内容变更监控"都是描述此类功能的关键词,而"网站内容变化检测"则是其核心功能。 网页监控通常涉及到的技术主要包括以下几个方面: 1. **网页抓取**:这是监控的基础,通过模拟浏览器行为,如发送HTTP请求,获取网页源代码。这通常使用`fetch` API或`XMLHttpRequest`来实现,如果是针对JavaScript渲染的页面,可能需要用到`Puppeteer`这样的库来模拟完整的浏览器环境。 2. **内容解析**:获取到网页源代码后,需要解析出关键信息。这通常涉及HTML解析,可以使用`DOM` API或者` cheerio`等库来操作DOM树,提取所需元素。 3. **差异检测**:监控的重点是识别内容变化,这需要对前后两次抓取的网页内容进行比较。可以使用`diff`算法,比如`jsdiff`库,找出文本的差异部分。对于HTML结构的变化,可能需要更复杂的比较逻辑。 4. **事件触发与通知**:当检测到内容变化时,系统应能自动触发预设的行动,如发送邮件、短信提醒,或者调用API。这需要编程实现事件驱动的逻辑,并集成相应的通知服务。 5. **定时任务**:为了持续监控,通常需要设置定时任务,如使用`setInterval`或者配合Node.js的`cron`库实现定时执行监控任务。 6. **数据存储与分析**:长期的监控会产生大量数据,需要合理存储(如数据库或云存储)并进行分析,以便了解变化趋势,发现潜在规律。 7. **性能优化**:考虑到监控频率和网页加载速度,性能优化至关重要。可以通过缓存策略、异步处理、减少请求次数等方式提高效率。 8. **错误处理与重试机制**:网络不稳定或目标网站结构变动可能导致监控失败,合理的错误处理和重试机制可以保证系统的稳定性。 9. **用户界面与权限管理**:如果开发的是一个工具或服务,那么用户界面的设计和权限管理也是重要组成部分,以便用户能方便地配置监控规则和查看结果。 在"JavaScript开发-其它杂项"这个标签下,我们可以理解这个监控工具可能使用JavaScript编写,可能包含了一些非标准或特定用途的代码,比如针对特定网页的适配或优化。 "openwebmonitor-master"这个文件名可能是指一个开源项目,"master"通常表示主分支,意味着这是一个开发中的项目或者最新的稳定版本。对于这样的项目,我们通常可以期待源码中包含了完整的监控系统实现,包括上述提到的各项功能,以及可能的配置文件和示例。通过阅读源码,开发者可以学习如何构建自己的网页监控解决方案。
2025-12-27 20:21:24 1.95MB JavaScript开发-其它杂项
1
本文详细介绍了嵌入式系统的架构、硬件、操作系统、数据库及软件开发。嵌入式系统是以应用为中心、以计算机技术为基础的专用计算机系统,具有专用性、小型化和集成性等特点。其软件架构分为硬件层、抽象层、操作系统层、中间件层和应用层。硬件部分包括微处理器分类(MPU、MCU、DSP、GPU、SoC)、体系结构(冯·诺依曼与哈佛)及AI芯片技术。操作系统部分涵盖实时操作系统(RTOS)的定义、调度算法和内核架构对比,以及鸿蒙操作系统的分层架构和分布式能力。嵌入式数据库分为内存数据库、文件数据库和网络数据库。软件开发部分强调了交叉开发、功耗优化策略及工具链的使用。通过理论与实践结合,可深入理解嵌入式系统的设计与实现。 嵌入式系统是一种特殊的计算机系统,它以应用为中心,以计算机技术为基础,具有专用性、小型化和集成性等特点。这种系统的设计和实现,需要对硬件层、抽象层、操作系统层、中间件层和应用层有一个全面的理解。 在硬件层,嵌入式系统主要包括微处理器分类(MPU、MCU、DSP、GPU、SoC)、体系结构(冯·诺依曼与哈佛)及AI芯片技术。这些硬件的选择和设计,直接影响到嵌入式系统的性能和稳定性。例如,MPU适合处理复杂的数据计算,而MCU则更适合控制任务。AI芯片技术则是嵌入式系统实现智能应用的关键。 在操作系统层,实时操作系统(RTOS)是嵌入式系统常用的系统类型。RTOS的调度算法和内核架构是其核心部分,它们决定了系统的实时性和稳定性。此外,鸿蒙操作系统作为新兴的操作系统,其分层架构和分布式能力也为嵌入式系统的设计和实现提供了新的选择。 在软件层,嵌入式数据库是嵌入式系统的重要组成部分,它包括内存数据库、文件数据库和网络数据库。这些数据库的选择和使用,直接关系到嵌入式系统的数据处理能力和稳定性。 在软件开发方面,交叉开发是嵌入式系统开发的主要方式,通过在宿主机上编写代码,然后在目标机上运行。交叉开发需要使用特定的工具链,这些工具链的选择和使用,直接影响到开发的效率和质量。此外,功耗优化也是嵌入式系统软件开发的重要策略,通过优化算法和代码,可以有效降低系统的功耗。 嵌入式系统的架构、硬件、操作系统、数据库及软件开发,都需要通过理论与实践相结合的方式,深入理解其设计与实现。这样,才能设计出性能优良、稳定性高的嵌入式系统。
2025-12-27 18:58:26 8KB 软件开发 源码
1
本文介绍了基于Matlab的掺镱光纤激光器(YDFL)脉冲锁定过程的仿真方法,包括时间域和频域分析。通过非线性偏振旋转(NPR)机制,模拟了锁模掺镱光纤激光器的特性。文章提供了详细的MATLAB代码示例,展示了如何设置参数、生成高斯脉冲、进行频域变换以及应用色散和损耗效应。此外,还介绍了如何生成和绘制模式锁定和未锁定的脉冲序列,包括时间域形状的模拟和图形展示。代码示例涵盖了初始脉冲生成、频域分析、线性传播效应模拟以及结果可视化,为读者提供了实用的仿真工具和方法。 在本文中,作者详细介绍了利用Matlab软件进行掺镱光纤激光器仿真过程的各个方面。掺镱光纤激光器(YDFL)是利用稀土元素镱作为增益介质的激光器,具有多样的应用领域,包括光学通信、激光雷达和材料加工等。仿真技术允许研究者在不实际制造激光器的情况下,研究激光器的动态特性以及如何优化性能。本文着重于脉冲锁定过程的仿真,这是指激光器输出特定重复频率和脉冲形状的能力。 在时间域分析中,仿真模拟了激光器的时序行为,包括脉冲的生成、传播和相互作用。而频域分析则关注脉冲频谱的特性,这对于理解脉冲质量及其稳定性至关重要。通过非线性偏振旋转(NPR)机制的模拟,研究者可以探索锁模掺镱光纤激光器的锁模机制,这是一种常见的产生超短脉冲的技术。 文章提供了一套详细的MATLAB代码示例,这些代码允许用户设置各种参数,如初始脉冲的特性、激光器的工作模式和环境条件。代码中的高斯脉冲生成是实现精确仿真不可或缺的一部分,它为后续的模拟和分析奠定了基础。频域变换的实现揭示了脉冲频谱的结构,为分析频域特性提供了工具。同时,色散和损耗效应的应用仿真,让研究者能够模拟真实的物理现象,如群速度色散、非线性效应等,从而获得更加准确的仿真结果。 模式锁定的仿真部分,作者着重说明了如何在仿真中实现并展示脉冲序列的锁定和未锁定状态。在模式锁定状态下,激光器输出稳定且间隔均匀的脉冲序列;而在未锁定状态下,脉冲序列可能会出现不稳定或不规则的情况。作者提供了时间域形状的模拟方法和图形展示技术,使得仿真结果直观可见。 本文章的代码示例不仅为读者提供了设置初始参数的方法,还演示了如何在仿真过程中实现线性传播效应的模拟,并利用Matlab强大的可视化功能对仿真结果进行展示。通过这些示例,读者可以更深入地理解掺镱光纤激光器的物理过程,并能够自己进行仿真研究。 本文提供了一套完整的仿真工具和方法,有助于推动掺镱光纤激光器的研究和开发。这些仿真工具不仅限于学术界的研究人员,还可能被工业界的技术开发者所利用,以优化掺镱光纤激光器的设计,提高其性能,并进一步扩展其在各种高科技领域的应用。
2025-12-27 17:29:24 531KB 软件开发 源码
1
本文详细介绍了在Windows11环境下复现UniAD代码的完整流程,包括环境安装、数据准备、验证、训练和可视化等步骤。环境安装部分需要按照官方文档安装BEVFormer环境,并额外安装motmetrics、einops、casadi和pytorch-lightning等包。数据准备部分涉及从nuscenes官网下载数据,解压并放置到指定目录,同时修改相关配置文件。验证数据准备时遇到路径问题,通过修改配置文件解决。训练部分因GPU资源不足进行了参数调整,并解决了数据类型不匹配的错误。可视化部分通过修改代码解决了KeyError和路径问题,最终成功生成可视化结果。整个过程涵盖了从环境搭建到结果展示的全流程,为复现UniAD提供了详细指导。 在Windows11环境下复现UniAD代码的详细流程可以分为几个关键步骤。环境安装至关重要,这一步骤需要按照官方文档来安装BEVFormer环境,并且还要额外安装一些特定的软件包,包括motmetrics、einops、casadi和pytorch-lightning等。这些包的安装需要按照特定的指南和命令进行,以确保环境的正确配置,从而为后续的代码运行提供必要的支持。 紧接着,数据准备步骤要求从nuscenes官网下载数据集。下载完成后,需要解压缩并将数据放置到指定的目录中。在这个过程中,还需要修改相关的配置文件,以适应本地环境和数据的存放路径。在验证数据准备的过程中,可能遇到路径问题,但通过适当的配置文件调整即可解决此类问题。 在训练步骤中,可能会遇到因GPU资源不足而导致的性能问题,这时需要进行参数调整以适应当前的硬件环境。除此之外,还可能遇到数据类型不匹配的错误,这同样需要仔细检查代码并进行相应的调整,以保证训练过程能够顺利进行。 可视化步骤是展示最终结果的重要环节。在这个阶段,可能需要修改代码来解决某些问题,比如KeyError和路径问题。经过调试和修正后,可视化部分最终能够成功生成所需的图表或图像,直观地展现UniAD的运行结果。 整个复现UniAD代码的流程,从环境搭建、数据准备、验证、训练直至可视化,都是为了实现完整和精确的代码复现。这个过程不仅涉及技术性的操作,还包括对可能出现的问题进行定位和解决的能力。对于想要复现UniAD代码的开发者而言,这份指南是一份非常宝贵的资源,能够帮助他们高效地完成复现工作。
2025-12-27 16:35:07 4KB 软件开发 源码
1
本文介绍了抖音企业号私信自动回复卡片的相关代码实现,包括AutoReplyCard结构体的定义及其各个字段的用途。结构体涵盖了企业号信息、卡片内容、跳转链接、关键词回复、自动撤回等功能。特别强调了JumpLink字段用于跳转至第三方APP,但需配合白名单域名URL使用。该代码适用于抖音企业号实现自动化私信回复功能,提升用户互动体验。 在本文中,我们将会深入探讨抖音企业号私信自动回复卡片功能的实现方式,具体包括一个名为AutoReplyCard的结构体,这个结构体是实现抖音私信自动回复功能的基础。这个结构体包含了多个字段,每个字段都承担着特定的功能和职责。 AutoReplyCard结构体包含了企业号信息字段,这部分信息是识别和确认企业账号身份的关键。通过这一部分信息,系统能够辨认出发送消息的企业,并根据企业号的特性定制个性化的回复内容。 结构体中的卡片内容字段,它承担了展示回复信息的主要职责。这部分内容通常包括文本、图片、视频等多种媒体形式,可以根据实际需要灵活定义,用于向用户展示企业想要传达的信息。 紧接着是跳转链接字段,这个字段提供了深度交互的可能性。通过设置有效的跳转链接,用户在接收到自动回复卡片后,可以通过点击链接跳转到指定的页面,完成进一步的交互和信息查询。特别地,JumpLink字段能够实现跳转至第三方APP的功能,但要求与白名单域名URL配合使用,确保了链接的安全性和合法性。 除了上述字段,AutoReplyCard结构体还包含了关键词回复功能。这项功能使得抖音企业号可以根据用户私信中的关键词自动触发特定的回复,这对于提升用户交互的即时性和效率尤为重要。 另外,自动撤回功能也是该结构体的一部分。它允许企业在私信发送后在一定时间内撤回消息,有助于企业控制信息的准确性和隐私性。 在抖音平台,企业号私信自动回复卡片的实现代码能够极大地提升企业与用户之间的互动体验。通过自动化回复,企业可以快速响应用户的咨询,提供必要的信息和服务,同时也可以在不同场景下自动化地推送相关内容,增强用户粘性。这对于企业品牌形象的建设与提升都有不可忽视的作用。 这套私信自动回复卡片的代码实现,为抖音企业号提供了一种高效、便捷的自动回复机制。它不仅提高了回复的效率,保证了内容的一致性和专业性,同时也为用户提供了更好的互动体验。对于企业而言,这是一套实用性极高的工具,能够在众多企业号中脱颖而出,以更快速和智能化的方式与用户进行互动。
2025-12-27 16:19:56 8.37MB 软件开发 源码
1
本文详细介绍了如何在IDEA中配置和使用JRebel热部署工具,包括JRebel的安装、激活、相关设置以及使用方法。JRebel是一款JAVA虚拟机插件,能够在不重启应用的情况下即时看到代码更改的效果,显著提高开发效率。文章还提供了热部署不生效的解决方案和常见问题的处理方法,如监控无效问题和启动时的错误提示。此外,还更新了最新的激活方式和下载地址,确保读者能够顺利使用JRebel进行开发。 JRebel是一个Java开发工具,它能够实现在Java虚拟机(JVM)上运行的应用程序进行实时代码更新而不重启服务器。在集成开发环境(IDE)如IntelliJ IDEA中使用JRebel时,可以极大地提高开发效率,因为开发者无需每次修改代码后都重启应用程序来查看更改效果。 在IDEA中配置JRebel首先需要下载并安装JRebel插件。安装完成后,接下来是激活过程,可以采用多种方式获取激活码,例如购买正式授权或者通过开发社区获取临时授权。激活之后,开发者需要在IDEA中进行一些设置以确保JRebel能够正确运行,这些设置可能包括配置虚拟机参数、指定JRebel运行时的配置文件位置等。 使用JRebel进行热部署时,它能够监控代码文件的变化,并且智能地只更新发生变化的部分,这与传统的部署方式相比能够节省大量的时间。例如,在进行前端界面开发或后端逻辑调整时,开发者可以立即看到更改后的结果,这在调试复杂的业务逻辑时尤其有用。 在使用过程中可能会遇到一些问题,比如热部署不生效。文章会提供详细的故障排除步骤,比如检查JRebel的监控是否开启、确认是否有需要重新编译的文件未被监控到等。除此之外,如果遇到启动时错误提示,同样会有一系列的解决方案和建议,帮助开发者快速定位问题并解决。 为了保证读者能够顺利使用JRebel,文章还会更新最新的激活方式和下载地址。这些信息对于需要使用JRebel的开发人员来说是非常实用的资源,确保他们能够获取到正确的软件和激活信息,从而提升开发体验。 JRebel的广泛使用主要是由于其提高开发效率的能力,对于任何需要频繁更改代码并查看更新效果的Java开发者来说,这都是一个十分有价值的时间节省工具。熟练掌握JRebel的使用可以显著提高项目开发的速度和质量。 特别需要注意的是,尽管JRebel提供了诸多便利,但它依然是需要付费的商业产品。因此,开发者在使用过程中应当遵守相关授权协议,对于使用的版本应当进行合法授权。这样不仅能够确保开发环境的稳定性,同时也能支持软件的持续开发和维护。 在文章中,还可能会提供一些技巧和建议,比如如何针对特定类型的项目进行JRebel配置优化,或是如何在团队开发环境中统一使用JRebel来提升团队整体的开发效率。这些实用的建议能够帮助开发者更好地利用JRebel这个强大的工具。 此外,随着技术的发展,JRebel也在不断地进行更新和升级,包括界面的改进和功能的增强。因此,建议开发者定期检查官方发布的更新日志,以了解最新的功能改进和修复的bug,确保能够利用到JRebel的所有优势。
2025-12-27 16:13:50 6KB 软件开发 源码
1
抖音私信卡片是一种高效的引流工具,解决了客户封号严重和引流效率低的问题。该技术支持生成自定义卡片链接,包括标题、描述、logo和跳转落地页的配置,并能跳转到微信、任意链接或小程序。其主要功能包括:1. 跳转微信,显示好友和群聊二维码;2. 跳转指定链接;3. 跳转小程序路径。此外,该技术还支持微信公众号和微信号的复制唤起,提高粉丝转化率和安全性。文章还展示了部分核心代码,涉及链接管理、编辑和删除等功能,为开发者提供了技术实现的参考。 抖音私信卡片是一种通过自定义卡片链接进行流量引流的工具。它具备多种功能,有效提高了用户的引流效率和粉丝转化率。其中最重要的功能包括能够跳转至微信、链接或小程序,这在避免封号的同时,保证了推广的连续性和目标受众的精准触达。该技术通过生成带有标题、描述、logo和配置落地页的链接,使得推广内容更加丰富和直观。 抖音私信卡片不仅支持微信好友和群聊的二维码跳转,使得用户可以直接添加微信好友或群聊,还提供了跳转到指定链接和小程序的功能,这为用户提供了多样化的互动选择。特别是在小程序推广方面,为广告主提供了更为便捷的接入方式,从而在丰富的应用生态中实现更有效的流量转换。 此外,该技术还提供了微信号复制唤起的功能,一方面增加了用户使用微信添加好友的便利性,另一方面也提升了整体的安全性。这种结合了便捷性和安全性的设计,对于提升用户体验和减少潜在风险具有重要意义。 文章中还详细展示了如何通过核心代码来管理链接,包括创建、编辑和删除等功能。这对于开发者而言是一个非常宝贵的技术参考资料,他们可以通过这些代码示例来了解和掌握如何实现这些功能。 值得一提的是,该技术的实现不仅仅局限于抖音平台,它所具备的通用性和可扩展性,使得其可以在多个不同的社交媒体或网络环境中得以应用。这种跨平台的应用能力,进一步扩大了其应用范围和商业价值。 通过技术的集成和应用,抖音私信卡片技术正在成为当下社交媒体营销和用户引流的重要工具,尤其在当前数字化营销的背景下,它的高效性和实用性,为品牌和商家提供了一个强有力的营销解决方案。而在技术实现方面,该技术的源码公开,为开发者提供了学习和参考的资源,有助于推动整个行业的发展。 通过技术的不断完善和创新,我们有理由相信,抖音私信卡片技术将在未来的流量获取和用户转化方面扮演更加重要的角色。开发者和营销者可以利用这项技术,结合自身的业务需求,开展更多创新性的营销活动,从而在激烈的市场竞争中占据有利位置。
2025-12-27 16:07:44 542B 软件开发 源码
1
WPS Office二次开发是针对金山公司的WPS Office套件进行的程序扩展和功能定制,它允许开发者通过API接口和插件机制来实现对WPS文字(WPS Writer)、表格(ET)和演示(WPS Presentation)等组件的深度定制。这份“WPS Office二次开发帮助文档”应该包含了关于如何进行此类开发的详细指南和示例。 ET.chm文件可能包含的是关于WPS表格的二次开发信息。在WPS表格中,开发者可以创建自定义函数、添加自定义菜单和工具栏、处理表格数据以及实现与外部数据源的交互。例如,你可以通过编程方式调用ET的API,创建复杂的公式或者自动化报表生成,甚至与数据库进行数据交换,提升办公效率。 wps.chm文件则可能涵盖了WPS文字的开发内容。WPS文字的二次开发允许开发者构建自定义模板、自动化文档生成、嵌入特定功能等。开发者可以通过API接口实现对文档内容的读取、写入、格式化、以及与其他应用程序的集成,比如创建自动化的报告系统,或者实现文字处理软件与项目管理系统的无缝对接。 wpp.chm文件很可能是关于WPS演示的开发指导。在WPS演示中,开发者可以创建动态幻灯片效果、自定义模板和主题、甚至控制演示的播放逻辑。这使得开发者能够为培训、会议或产品展示等场合打造独特的演示体验,比如自动化的工作流程演示,或者与观众互动的动态演示。 这些CHM(Compiled Help Manual)文件是微软的编译帮助文件格式,通常用于存放技术文档和教程,方便用户查阅和搜索。它们会提供详细的API参考、示例代码、步骤指南和错误处理建议,帮助开发者快速上手并解决开发过程中遇到的问题。 WPS Office二次开发可以帮助企业或个人根据自身需求定制功能,提高办公效率,降低软件成本。开发者需要具备一定的编程基础,如C++、C#或Python等,同时熟悉COM组件和对象模型。通过深入学习这些帮助文档,开发者不仅可以了解WPS Office的内部工作原理,还能掌握如何利用其开放能力创建出满足特定需求的应用和插件。
2025-12-27 10:27:16 2.4MB WPS Office
1