CS/CSS架构应用的软件性能测试模型分析

2023-05-16

  1. CS/CSS系统架构的基本概念

    1.1系统架构定义

虽然B/S结构、J2EE架构愈来愈成为流行模式,但基于传统的C/S结构的应用程序还广泛地应用于各种行业。尤其是金融行业中的商业银行柜面-核心帐务系统等。一方面由于传统商业银行一般都有大量的字符终端等需要复用的设备,一方面也是因为他们存在大量密集的对实时性要求很高的高柜业务,使用传统的基于C/S结构或者C/S/S结构的应用效率更有保证。

C/S结构即CLIENT/SERVER结构。传统的C/S结构一般分为两层:客户端和服务器端。该结构的基本工作原理是,客户程序向数据服务器发送SQL请求,服务器返回数据和结果。客户端负责实现用户接口功能,同时封装了部分应用逻辑。服务器端的数据库服务器主要提供数据存储功能,也通过触发器和存储过程提供部分应用逻辑。

C/S/S结构即客户/应用服务器/数据库服务器三层结构,中间增加了应用服务器,通常实现应用逻辑,是连接客户与数据库服务器的桥梁。它响应用户发来的请求执行某种业务任务,并与数据库服务器打交道,技术实现上通常选用中间件产品,如BEA公司的TUXEDO和IBM公司的CICS等。(事实上J2EE架构的应用也属于这种三层或多层结构,这里不包括。)

三层或多层C/S结构与两层C/S结构相比,它的优势主要表现在:安全性加强、效率提高、易于维护、可伸缩性、可共享性、开放性好等。

1.2系统架构示意图

z

1.3CS/CSS系统架构中性能测试的特点

1.3.1CS/CSS系统架构的性能影响因素

由于CS/CSS系统的以下特性,测试工程师对一个CS/CSS系统实施性能测试具有很大的难度:

*整个系统的各个部分使用多种操作系统,性能上有差别;

*整个系统架构的各个环节上使用多种数据库,同样在性能上有差别;

*应用是多个,分属多个种类,分布在不同设备上,包括自行开发的应用、第三方的应用;

*系统中的设备、组件通过不同协议进行连接、通讯;

*系统的内部接口多,性能瓶颈多;而系统的整体性能往往取决于最差的部分;需要分别测试和联合测试

*系统的性能指标不光同应用系统架构有关,还和具体行业应用的业务模式有关;

*采用此架构的行业应用往往是一个7×24小时系统;

*采用此架构的行业应用可能高柜业务多,这样会影响对性能度量项的选取和转换;

*各个环节基本上以交换数据报文的方式通信,其格式经常会比较复杂。

因此这样的系统对于对测试工程师的知识的深度和广度都是一个考验。对于这样的系统,到底如何使用什么样的测试策略、如何分析测试需求、如何选取性能度量项的转换计算模型、如何确定测试内容和轮次、如何设计性能测试案例等等以及规划和实施性能测试中的其它诸多问题,都需要遵循一个系统的方法来解决。

1.3.2CS/CSS系统架构中性能测试的基本策略

1. 确定好测试工作范围

首先可以分析压力测试中最容易出现瓶颈的地方,从而有目的地调整测试策略或测试环境,使压力测试结果真实地反映出软件的性能。例如,服务器的硬件限制、数据库的访问性能设置等常常会成为制约软件性能的重要因素,但这些因素显然不是用户最关心的,我们在测试之前就要通过一些设置把这些因素的影响调至最低。

另外,用户更关心整个系统中哪个环节的性能情况也会影响工作范围。如有的环节是全新系统,而有的环节已经是成熟系统只是稍有改动,这样可能全新系统的局部性能测试就需要系统和全面一些。

2. 分析好客户的性能测试需求

客户是已经明确提出了性能指标,还是只提供了用户使用方式和历史交易流量数据,需要我们自己进行性能基准的计算?性能测试的目的是验证系统性能还是想确定目标系统的理想配置?是否还要使用测试结果预测在不同机型的处理能力?是否要求在性能测试各个轮次中安排性能调优过程等等问题都需要有针对性的解答。

3. 要作好性能测试的计划和方案

测试计划和方案中要注意测试需求分析阶段提出的问题的解决。

4. 确定的测试通过准则、性能测试的计划、结果要获得客户的认可

要和客户确认,系统的性能指标达标的标准是什么;对于性能测试中各个部分和步骤的计划和结果,甚至是性能测试过程,都要根据其重要程度,决定是否需要客户进行确认和签字。获得客户的认可是最重要的。

1.3.3CS/CSS系统中性能测量与性能探测

性能测量

1. 在性能测试开始前必须认真规划性能测量:

软件性能测量技术范围很广。可以包括日志、事件计数、事件持续时间、采样等性能测量技术。

*确定性能测量的策略:我们要测试什么?

*规划性能测试中使用什么样的测量工具。

2. 测量的代表性

*测量结果要能够反映出影响性能的重要因素:工作量负载、软件和计算机系统环境。

3. 测量的可重复性

*能够控制工作量负载、软件和计算机系统环境,从而能够重复测试过程。

性能探测技术

    在进行性能测量时,可以使用标准的商用工具进行,但是往往标准工具提供的数据不能满足要求。性能探测就是在程序的关键点插入代码探针来测量软件的执行特性。从而达到以下的目标:

– 性能数据获取更方便

– 数据的详细程度提高

– 数据收集方式更加可控

    依据SPE(软件性能工程)的建议,软件探测需求应该作为软件体系结构的组成部分。在设计软件时设计软件探针。

    所以在规划项目中的性能测试过程中,要建议进行软件设计时考虑岛性能探测需求,为性能测试中更好的进行性能测量做好准备。

1.3.4CS/CSS系统下性能测试的类型

    广义的性能测试包括许多类型。如:

*Scalability/load testing (规模化/压力测试) :通过在被测系统上不断增加压力,直到性能指标例如响应时间超过预定指标或者某种资源已经达到饱和状态。这种测试可以找到系统的处理极限,为系统调优提供数据。

*Performance testing (性能测试):通过模拟生产运行的业务压力量和使用场景组合测试系统的性能是否满足生产性能要求。如以实际投产结构测试,求出最大的吞吐量与最佳回应时间以保证上线的平稳,安全等。

*Configuration testing(配置测试):通过测试找到系统各项资源的最优分配原则。

*Concurrency testing(并发测试):测试多个用户同时访问同一个应用、同一个模块或者数据记录时是否存在死锁或者其他性能问题。

*Stress testing (极限测试):测试系统在一定饱和状态下,例如CPU、内存在饱和使用饱和情况下,系统能够处理的会话能力,以及系统是否会出现错误。

*Volume testing (容量测试):测试系统能够处理的最大会话能力。

*Reliability testing (可靠性测试):通过给系统加载一定的业务压力(例如资源在70-90%的使用率)的情况下,运行一段时间。

*Failover testing (失败测试):对于有冗余备份和负载均衡的系统,通过这样的测试来检验如果系统局部发生故障用户是否能够继续使用系统,用户将受到多大的影响。

在CS/CSS系统下实际的性能测试中,需要根据具体情况进行性能测试类型的选取和组合。

1.3.5CS/CSS系统下性能测试的组成部分

    通常在一个CS/CSS系统中,分为用户界面层、服务逻辑层和数据服务层等几个层次,分别对应着客户、应用服务器、数据库服务器。如在金融行业应用中,客户端承载着柜面业务,部署在网点(包括字符柜员或图形柜员),还包括部署在自助设备上面的自助业务等;应用服务器上面主要是起到路由功能、业务处理功能、和渠道整合的作用;而核心业务处理系统包括交易平台、业务逻辑、核心处理、数据处理等。

    由于业务逻辑分布在不同的环节,导致系统的内部接口多,性能瓶颈多,而系统的整体性能往往取决于最差的部分。所以对于整个系统的整体性能的测试可能需要针对各个环节分别做好各自的内部性能测试。

    如下面的一个CS/CSS系统金融行业应用的例子:

zz

为了测试整个系统的性能,需要预先针对各个组成部分进行内部性能测试,如后台主机的压力测试、SNA gateway的压力测试、大前置系统的压力测试、前端系统的压力测试、外系统接入的压力测试等等。
在本次进行的内部压力测试中,为了排除系统其它部分的影响,均需要隔离各自的部分,驱动和桩都使用软件测试工具或自行编制程序来代替。在每个部分的内部压力测试中,又均可以根据具体情况使用上一节说明的各种性能测试类型进行性能测量。

  1. CS/CSS系统架构中的性能测试的度量项计算模型

    2.1 定义度量标准项

     进行性能测试的模型分析时,首先要确定关键性能目标。它应该是通过与客户沟通获得的,这些目标应该是解决客户关注的性能问题,也就是说,客户的性能测试需求体现为关键性能目标。性能目标应该是明确的、可度量的。例如:支持2000个并发用户;连续运行30天不停机等。
    
     在明确了关键性能目标和性能测试的通过/失败准则后,需要定义如何度量关键性能目标和性能测试的通过/失败准则。度量的标准项会影响测试方法和测试工具的选择。举例来说,如果要度量100个用户并发的响应时间,就必须明确要度量以下哪一个标准项:
    

    *每个并发用户的响应时间

    *在有99个用户已经接入的情况下,第100个用户的响应时间

    *两个指标都要度量

    2.2 性能基准及测试强度估算

     实际上,关键性能目标并不总是很容易明确的。客户往往只有一些历史数据和业务增长的一些预期比例等等。但是这些数据对于我们也是很有用的,它们可以作为我们设计和测试使用的性能基准。
    
     对于性能测试,在设计时就要首先提出设计的性能基准。所谓性能基准,就是要思考:多少人使用这个系统?使用时最大的用户数是多少?用户高峰期使用时间间隔多少,在多大数量级别上系统响应时间分别是什么?数据增长量有多大?数据增长到什么数量级和时间长短对硬件而言难于承受?网络实现条件是什么?在处理时CPU和内存增长如何控制?种种这些,然后设计时根据性能基准有条件的在编码实现和硬件配置方面进行优化,测试只不过验证系统是否达到预期设计目标。
    
     但是现在的情况却往往是:设计出来后要求性能测试,测试什么然后是什么,好比考试没有标准答案却要求大家及格一样。或者是,客户虽然已经明确的提出了关键性能指标,但是设计的时候没有考虑,依赖于性能测试给出实际性能数据,然后再对比优化。性能测试在基于性能基准上,特别是基于经过计算和转换得到的关键性能目标,才能得出预期结果。这一点,需要测试工程师向设计人员反复灌输这种观念,否则,性能测试研究包括工具研究总是停留在讨论阶段。不要在编码完成以后才考虑优化问题,如果等项目实施了,优化还没有完成,就很难保证客户满意。
    
     没有目标的设计,如同城市间的交通问题一样,我们抱怨建设者们缺乏远见,而软件设计人员同样缺乏想象力。对于性能基准向关键性能目标的转化,用以下例子来说明。
    
     有200个用户使用客户端软件进行业务处理(并发度至少要达到200并发),每年通过软件进行处理的总业务量为:2000万笔业务/年。
    
     测试强度估算时采用如下假设前提:
    

    *全年的业务量集中在10个月完成,每个月20个工作日,每个工作日8个小时;

    *采用80—20原理,每个工作日中80%的业务在20%的时间内完成,即每天80%的业务在1.6小时内完成;

    测试压力的估算结果:

     去年全年处理业务约2000万笔,其中15%的业务处理每笔业务需对应用服务器提交3次请求;70%的业务处理每笔业务需对应用服务器提交2次请求;其余15%的业务每笔业务向应用服务器提交1次请求。根据以往统计结果,每年的业务增量为15%,考虑到今后三年业务发展的需要,测试需按现有业务量的2倍进行。
    

    每年总的请求数量为:(2000*15%3+200070%2+200015%*1)*2="8000万次/年。

    每天的请求数量为:8000/200="40万次/天。

    每秒的请求数量为:(40000080%)/(820%*3600)=55.6次/秒。

    正常情况下,应用服务器处理请求的能力至少应达到:56次/秒。

    或者,忽略提交的请求数,以业务交易数为准,定义每秒钟的交易数,及“吞吐量”。

    如果再考虑未来几年的交易量的增加(每年增长15%),则可以归纳为:

    ? 吞吐量:(T480%) /(1.63600)

    –T4 = T0 * (1 + 15%) ^ 4

    –T0:当前日均交易量2000万

    –T4:未来4年日均交易量

     另外,有时关键性能指标的确定和具体应用相关。如金融行业应用中的核心业务系统中会有日结、月结等批处理,往往使用一次批处理小于多少小时来表征性能指标。
    

    2.3 度量标准项和可采集的测量数据项转换

     只有使用明确的可采集到的数据才能真正反映系统的性能状况。例如:
    

    *每秒钟运行成功的交易数量

    *单一客户端的响应时间(使用时间戳的差值,发出请求的时间和收到回应的时间)

    *CPU的占用率

    *网络流量占用率

    *内存的占用率

    *硬盘使用率

    2.4 压力的分解

     对于一个由很多环节组成的复杂系统来说,如果想要模拟实际环境进行整体的联合性能测试的话,就需要针对整体压力进行各个层次的分解。
    
     如:下图是一个实际系统进行的联合性能测试。后台主机系统最多的吞吐量是480笔/秒。。由于通信网关和主机在此环境中是1对1的关系,所以通信网关的压力要达到480笔/秒。而一个通信网关对应着三个前置机,所以每个前置机要达到160笔/秒送达主机的吞吐量,才可能使整个系统满负荷运转。考虑到其它层次类推。由于主机以外还存在其它服务系统,所以在前置机的压力上面加了一个“X”代表其它服务系统要求的压力。当某个层次的设备短缺,无法实际上达到其分解下来的压力时,往往需要使用软件手段,在上一层次上直接加压力解决。
    

zzz

  1. CS/CSS系统架构中的性能测试的规划与实施要点

    3.1 测试计划中的人力资源计划

    由于性能测试时软件测试领域比较复杂的类型,所以性能测试计划中人力资源的计划也比较重要。要充分考虑到测试组织、测试程序的编写、测试设计、实现和执行、测试报告等等各种工作任务的人力资源需求情况。

    一般情况下,一个工程类项目的性能测试工作由如下角色和职责:

    *测试分析师:负责分析测试策略、编写测试计划、制订测试方案、组织测试;

    *测试工程师:测试例设计、实现;环境协调;对测试结果进行分析,编写测试总结报告。

    *测试员(通常也可测试工程师兼任):测试执行;对测试过程进行记录,收集、整理测试记录数据。

    *软件工程师(有时由测试工程师兼任):负责编写、调试客户端测试软件和模拟软件;数据库管理系统的安装、ofs配置及系统的预埋数据准备。

    *系统工程师(有时由测试工程师兼任):负责测试用的硬件维护及操作系统安装、配置。

    *上级测试负责人:负责对测试计划及测试总结报告进行批准。

    *客户:必要时可参加测试,并提出具体的测试要求;可要求暂停测试;重要测试结论要签字认可。

    3.2 为项目选择适合的测试工具

    在性能测试过程中,一定要有适合的测试工具支持。

    性能测试所使用的测试工具包括:

    负载模拟类工具
    性能测量类工具
    系统级测量工具:CPU、内存使用率统计
    统计类:响应时间、吞吐
    剖析类:代码级测量工具,例如统计函数调用次数
    对于测试工具,每个具体项目的需求是有差异的,不存在通用解决方案。而且,工具的引入需要时间、资金和人力的投入。

    测试工具的选择需要考虑性能测试中被测系统的需要,以及测试工具需要完成的功能。一般情况下的选择方案包括:

    *真实生产系统

    *商用压力测试工具

    *定制压力测试工具

    第一种选择限于资源以及准确性等因素在压力测试中一般不采用,这里不再讨论。对于后两种选择的取舍主要考虑的因素包括:

    *是否能够满足压力测试中作为模拟程序、负载模拟的需要

    *是否能够提供详细,准确的性能测量数据

    *测试工具在成本的限制因素,包括时间和金钱

    *测试组对测试工具的掌握程度

    有很多很好的自动化的性能测试工具。如:MI的Loadrunner、MI的Astra LoadTest、Empirix的E-load、Rational TeamTest等等。其中又以MI的Loadrunner最为著名和常用。

    有时在性能测试过程中也会采用自编的或定制的压力测试工具的方案,主要基于如下的原因:

    首先、由于被测系统本身的特点,满足模拟程序需要的商用测试工具难以寻觅,即便是有靠近这方面需求的测试工具,考虑到费用以及培训时间的因素,也会增加测试过程的风险。

    其次,有时由于相关技术的成熟,选择定制压力测试工具的方案无论在设计,实现,还是在测试工具的掌握上都不存在不可控的风险;并且在测试过程中随时满足测试需要的及时性方面,定制的测试工具也有无可比拟的优势。

    最后、考虑到将来前置系统的产品化,对该系统进一步测试的需要会持续很久,定制的测试工具可以更好,更完善地满足这种需求。同时,对于与对象系统采用同样系统架构的项目都可以借鉴此定制测试工具的思想,快速地建立新的测试工具。

    3.3 测试准备工作

    性能测试的准备工作,可以包括测试数据的准备、测试工具准备、测试环境准备、试执行等部分。

    3.3.1测试数据的准备

    对于行业应用,尤其是金融行业应用,测试数据的准备中最重要的就是交易的选取。交易的选取有如下原则:

    内部压力测试:尽量选取几个最消耗系统资源的交易,并覆盖所有的交易形态(如会话式、批量式、异步式之类),这样才有可能最大限度的检查出该部分的性能瓶颈;

    整体联合压力测试:由于一般整体联合压力测试需要完全模拟实际生产情况,所以交易的抽样选取相对比较复杂。通常需要进行当前交易量的收集和预测性能测试交易量,更重要的是确定交易发送比例的分布。

    如一个实际金融项目的交易发送比例的分布:

ghgh

    先选取实际原始发送比例中前50位的交易。然后将其所有比例数相加(一定小于1),做为新的基数,分别于各个交易的原始比例相除,即可得到使用工具模拟发送的比例。

    此外,主要实际交易数据的获得通常要从数据库中使用脚本提取出来;还有可能需要自己利用某些规则自造一些数据。

3.3.2测试工具的准备

    通常,要为测试工具的编制和学习使用预留充足的时间。对于商用的测试工具,通常需要进行脚本的录制和修改,场景的设定工作;对于自编工具,要有设计、编码过程。而且,它还通常有其自己的配置文件和使用的数据文件,需要进行配置或数据格式转换。

3.3.3测试环境准备

    这里需要注意的问题是,可能在后台(充当桩的)数据库中需要生成预埋测试数据,要保证其足够且可重复生成或容易清理。另外测试环境准备好了以后,每次执行前的检查环境过程也是非常重要的,可以避免大量的无用功。
  1. 性能测试报告

    4.1 测试结构数据的整理和分析

     测试报告文档的撰写
    

    1. 测试中应该生成的测试文件

     测试记录(测试负责人和参与测试的人员签字);
    
     测试总结报告。
    

    2. 测试总结报告中一般必须包含的内容

     被测试软件名称、测试项、测试环境;
    
     被测试软件的压力测试结论:响应时间、最大/最小并发数、失败的次数、正常连续运行的最长/最短时间,并发数与失败的关系等
    
     总之必须包含预先定义的关键性能指标的数据、变化曲线分析和结论。
    
    1. CS/CSS系统架构下性能测试中需要注意的问题

    5.1 注意中间件的license、数据库的用户数等影响因素

     有时候测试结果没有达到预期并不一定是被测对象的问题,可能是中间件的license不足或者是使用的数据库系统的并发用户数的限制导致,有时还因为配置项有问题等,需要综合分析。
    

    5.2 数据聚集问题

     性能测试中选用的数据应该在差异上进行分散,与实际生产数据的随即差异分布相似,充分测试系统在不同数据下的状态。如果使用较单一的数据进行测试,一方面可能使系统的局部功能没有被使用,导致性能测试数据不可靠;另外,如果系统对于同样的数据处理有优化处理功能,也导致性能测试数据不可靠。
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CS/CSS架构应用的软件性能测试模型分析 的相关文章

  • 如何将 Bootstrap 3 轮播标题移动到图像下方?

    我有这个 html 使用 bootstrap 3 显示幻灯片图像 div class col sm 8 div class carousel slide ol class carousel indicators li class activ
  • IE9支持CSS线性渐变吗?

    有了 Chrome Safari 和 Firefox webkit gradient and moz linear gradient特性 我怎样才能用 IE9 做同样的事情呢 最好的跨浏览器解决方案是 background fff back
  • 猫头鹰轮播,制作自定义导航

    所以我有一个包含三张图像的猫头鹰旋转木马 我还在左侧和右侧添加了自定义导航箭头 png 图像 然而 这些箭头目前是无用的 因为我找不到一种方法来真正让它们在我的猫头鹰旋转木马的图像之间切换 我无休止地寻找 找不到解决方案 有任何想法吗 您需
  • 状态代码 304(Jade、Node、Express)

    我在我的 jade 文件中链接 bootstrap 和 jquery link rel stylesheet href stylesheets bootstrap css and script src javascripts jquery
  • 从第三方网站为 iframe 设置 CSS

    我正在尝试设计风格snapwidget Instagram feed http snapwidget com getstarted 我想让边框变成白色 这不是小部件的设置 所以我尝试添加 css 看来我的 css 没有被检测到 因为内容位于
  • 如何用按钮生成不同的颜色

    我是初学者 想知道如何使用生成按钮生成所有不同的颜色 我应该向按钮 addEventListener 的第二个参数添加什么 另外 如何让它在刷新时自动生成颜色而不是不生成颜色 var getcolors document querySele
  • 如何限制 Chrome 中的最大文本区域宽度和高度或如何禁用文本区域调整大小

    Chrome 允许通过在右下角添加文本区域来调整文本区域的大小 但有时这种移动可能会破坏页面的设计 所以我想知道如何限制该操作的最大和最小宽度 即如何完全禁用该功能和thml javascript css在页面上 您可以使用 resize
  • 在设置后用 Javascript 替换 'var' css 属性

    我有一个元素 其上设置了 var 属性 如下所示 div class divwithbackground div CSS divwithbackground after background image var page header se
  • 如何获得浮动:右键垂直居中对齐

    我只是无法获得课程按钮align right垂直居中对齐 HTML div class panel footer span style width 100 class header footer item span div
  • 浮动标签和占位符重叠

    div class form group form default form spacing div
  • minmax 失败(属性值无效)

    Chrome 给出了invalid property value并且不尊重CSS grid template columns repeat auto fill minmax auto 1fr 当auto被替换为min content and
  • 如何使用css网格制作一个垄断板?

    I want to create a monopoly board like There are following features in the board 角是方形的 比其他盒子大 每行的文本都面向特定的角度 我的基本 html 结构
  • 让 Compass 将供应商前缀添加到动画选择器

    谁能告诉我如何让 Compass 在编译时将供应商前缀添加到 CSS3 动画选择器中 我的配置文件如下所示 http path css dir sass dir images dir img javascripts dir js outpu
  • 使用 SASS 切换用户主题 - Ruby on Rails

    所以我有一个 Rails 管理系统 允许用户选择一个主题 基本上是一组 SASS 颜色变量 它将使用新颜色重新编译 application css scss 当用户从下拉菜单中选择并提交时 更改此设置的最佳方法是什么 我阅读了一些有关缓存和
  • onMouseEnter 和 onMouseLeave 未按预期运行

    我正在尝试为我的组件模拟悬停效果 然而 onMouseEnter Leave 事件没有按预期工作 现在我试图让它简单地 console log 一个字符串来检查它是否正常工作 但什么也没有发生 目的是我可以在悬停时更改其背景颜色 我尝试通过
  • 显示居中的图像行

    我有一排三张图像 目前显示得很好 现在 我想在这三个图像的正下方显示另外两个图像 并且我希望它们居中 它看起来有点像一个颠倒的金字塔 无论我做什么 底行都保持左对齐 这是 css category width 176px font size
  • 如何让左浮动和右浮动在同一条线上?

    问题 The left part nav ul li which float left and the right part nav search which float right are not in a line it should
  • FF 和 Webkit 中边框折叠的差异

    我有一个包含以下规则的表 table cellspacing 0 cellpadding 0 style width 100 并且单元格具有以下 CSS td padding 4px height 22px border 1px solid
  • CSS变量名可以以数字开头吗?

    我想知道定义一个以这样的数字开头的 css 变量是否有效 root 1space 32px 这在 Chrome 上工作得很好 但是该代码没有经过验证https jigsaw w3 org css validator https jigsaw
  • Firefox CSS 旋转与 Chrome 旋转不同

    我想制作一个 3D 矩形 平行六面体 用户可以用箭头移动它 它在 Chrome 中工作得很好 但在 Firefox 中 一些转换 实际上很多 与 Chrome 不同 看着this https jsfiddle net 7273yur9 2

随机推荐

  • 【Github教程】史上最全github使用方法:github入门到精通

    初识Github 首先让我们大家一起喊一句 Hello Github YEAH 就是这样 Git是一个分布式的版本控制系统 xff0c 最初由Linus Torvalds编写 xff0c 用作Linux内核代码的管理 在推出后 xff0c
  • Win10系统下提示“系统组策略禁止安装此设备”的解决方案(家庭版无组策略)

    今天客户有台机器 xff0c U盘 移动硬盘都无法识别 xff0c 设备管理器 安装更新驱动显示 xff1a windows已找到设备的驱动程序软件 xff0c 但在试图安装时出现错误 查询信息提示 xff1a 系统策略组禁止安装此设备 请
  • 如何将CentOS Stream退回为CentOS 8.5

    CentOS 8 已于 2021 年年底正式停止维护 xff0c 因业务需要 xff0c 老大说 xff0c 换Steam吧 xff0c 后面环境有问题果然反悔了 xff0c 哈哈 xff0c 怎么办 xff0c 没降级工具哦 xff0c
  • 详解:什么是VXLAN?

    本文介绍了什么是VXLAN xff0c 以及VXLAN的基本概念和工作原理 什么是VXLAN VXLAN xff08 Virtual eXtensible Local Area Network xff0c 虚拟扩展局域网 xff09 xff
  • windows2022远程桌面连接管理员已结束会话解决方法

    您的远程桌面会话已结束 您的远程桌面会话已结束 可能是下列原因之一 管理员已结束了会话 在建立连接时发生错误 发生网络问题 今天有台服务器连不上 xff0c 提示这个 百思不得其解 后面问了 xff0c 原来这台机子装了BT面板 xff0c
  • 樱花大战常见问题解答

    樱花大战1 请使用免CD补丁 还有windows98兼容性 安装目录名字只能用英文 不可以用手柄 使用免CD补丁 还有windows98兼容性可以在XP系统下运行 右键点击樱花大战的启动程序 xff0c 然后 属性 xff0d 兼容性 xf
  • 【小白注意】Windows XP 大胆拥抱Linux系统所遇到的问题

    Windows XP到4月8日就不再有微软的官方技术支持了 xff0c 尽管你仍然可以继续用 xff0c 但是用起来的风险就大多了 xff0c 一不留神就可能被黑客入侵 似乎 xff0c Linux也是一个不错的选择 也许很多文章开始教你如
  • RapeLay(电车之狼R)的结局介绍 (隐藏结局攻略)

    RapeLay xff08 电车之狼R xff09 的结局介绍 隐藏结局 必备知识要让MM怀孕很简单 起初刚进入调教模式后 只要H一次 MM就开始有时期状态 生理 连上有红晕 gt 不详状态 闭目第一次 gt 危险状态 闭目第二 次 只要在
  • 海茶3 らぶデス3 入门经典教程

    又一次在百忙之中给大家写教程了 真的很忙啊 xff0c 4个汉化组 61 1个程序坑 43 1个润色坑 43 2个翻译坑 所以本文第一句话就是 xff1a 这么简单的游戏要什么教程 xff0c 不算LOADGAME xff0c 10分钟上手
  • GALGAME文字提取agth 特殊码大全(特殊码表)和使用方法

    NOTE Make sure you are using the latest version of AGTH 注意 请使用最新版AGTH 大师用的是这个 AGTH 教程也在这里 GALGAME文字提取agth v2008 11 20汉化
  • 70天复习一次通过信息系统项目管理师考试经验和心得

    和我徒弟一样发文纪念下 xff0c 信息系统项目管理师考试45分 xff0c 我报好名 xff0c 开始复习 xff0c 具体时间 xff0c 自己去某网站看 xff0c 上面写着倒计时70天 xff0c 也不知道对不对 把我 一次通过信息
  • 尤菲·如月 与你有约 ぐりぐりキュートユフィ汉化补丁

    游戏名称 xff1a 游戏厂商 xff1a 游戏大小 xff1a 1 98G 游戏语言 xff1a 汉化 发售日期 xff1a 2010年03月20日 是否有喵咪 xff1a 有 3D T Graph GuriGuriCuteYuffie
  • GALGAME引擎识别工具

    神月星人问过一个问题 最近制作RR汉化时碰到解包器难题 xff0c 有程序人员问起星人说RR游戏是用哪个脚本引擎 xff0c 星人一时哑口无言 xff0c 因为星人并不知道如何得知一款游戏的脚本引擎 要怎麽做呢 我做这个脚本引擎识别工具 可
  • 史上最新最全的ADB命令行

    Android开发工具系列目录 Android项目中Git工具的使用史上最全Git命令使用手冊史上最全的ADB命令行Android中的su命令使用Postman测试WebService接口 adb操作及命令 一 ADB的认识1 ADB组成2
  • Redis最佳实践:7个维度+43条使用规范,带你彻底玩转Redis | 附实践清单

    大家好 xff0c 我是 Kaito 这篇文章我想和你聊一聊 Redis 的最佳实践 你的项目或许已经使用 Redis 很长时间了 xff0c 但在使用过程中 xff0c 你可能还会或多或少地遇到以下问题 xff1a 我的 Redis 内存
  • neutron学习笔记

    neutron学习笔记 最近在看openstack xff0c 记录一下neutron一些重要概念 neutron主要组件 1 neutron server 用于实现neutron api和api扩展 xff0c 管理Router netw
  • Ubantu 安装到VMware详解

    想要在VMware中运行Linux系统 xff0c 那么就需要Linux系统安装到VMware虚拟机上面 在这里 xff0c 以把ubantu16 04安装到VMware虚拟机中为教程进行图文讲解 xff0c 共分为三个步骤 xff0c 分
  • 安装novnc,并加入开机自启

    1 安装git工具 apt get install git y 2 下载novnc git clone https github com novnc noVNC 3 ls 查看 xff0c 已经下载完成 4 vim novnc sh把启动命
  • python装饰器——定义可给装饰器传递参数的装饰器

    普通装饰器 xff1a span class token keyword def span span class token function wrap span span class token punctuation span f sp
  • CS/CSS架构应用的软件性能测试模型分析

    CS CSS系统架构的基本概念 1 1系统架构定义 虽然B S结构 J2EE架构愈来愈成为流行模式 xff0c 但基于传统的C S结构的应用程序还广泛地应用于各种行业 尤其是金融行业中的商业银行柜面 xff0d 核心帐务系统等 一方面由于传