精华内容
下载资源
问答
  • jsonp突破同源策略,实现跨域访问请求

    千次阅读 热门讨论 2014-06-06 14:23:38
     在上图中,大家可能会看到这个词儿——“Access-Control-Allow-Origin”,它是W3C标准中为了解决同源策略引起的跨域问题而提出的一种技术——“ 跨域资源共享(CORS,Cross-Origin Resource Sharing) ”。只要你在...

           跨域访问问题,相信大家都有遇到过。这是一个很棘手的问题。不过道高一尺,魔高一丈,对于这类问题,总有解决问题的方案。最近我又接触到了这个问题,解决的途径是ajax+jsonp。


           说到这个问题,不得不说一下“同源策略(Same-Origin Policy)”,它是由Netscape提出的一个著名的安全策略。现在所有支持JavaScript 的浏览器都会使用这个策略。所谓同源,就是必须协议、域名、端口都一致的,才叫做同源。例如:http://www.12306.cn和https://www.12306.cn,由于协议不一致,就不是同源。http://127.0.0.1:8080/test1和http://localhost:8080/test1 也不属于同源,因为域名不一致。端口不同当然也不叫同源了。


           如果非同源,那么在请求数据时,浏览器会在控制台中报一个异常,提示拒绝访问。这是一个令web开发人员非常手疼的问题。比如,我现在打开百度网页,然后在控制台中请求CSDN的网页,那么就会报如图所示的异常:



           在上图中,大家可能会看到这个词儿——“Access-Control-Allow-Origin”,它是W3C标准中为了解决同源策略引起的跨域问题而提出的一种技术——“跨域资源共享(CORS,Cross-Origin Resource Sharing)”。只要你在服务端设定这个Access-Control-Allow-Origin的header就可以允许跨域访问了。有兴趣的话,自己查一下,很简单。不过它有安全隐患,主要是因为支持通配符*。每个网站都可以随意请求,那就太不安全了。如:

    response.setHeader("Access-Control-Allow-Origin", "*");

           Query中$.ajax的get方法,是支持跨域访问的,不过dataType要设定为“jsonp”。Jsonp(JSON with Padding)是 json 的一种“使用模式”,可以让网页从别的网域获取资料。jsonp是采用的js的回调机制来实现的。使用方式也很简单,代码如下:

     
    $.ajax({ 
      url: 'http://localhost:8080/test2/searchJSONResult.action',
      type: "GET", 
      dataType: 'jsonp', 
      data: {name:”ZhangHuihua”}, timeout: 5000, 
      success: function (json) {
        //客户端jquery预先定义好的callback函数,成功获取跨域服务器上的json数据后,会动态执行这个callback函数 
        alert(json); 
      }, 
      error: function (){
        alert("请求失败!"); 
       }
    });
    
    //简单方式如下:
    $.getJSON("http://localhost:8080/test2/searchJSONResult.action?name1=ZhangHuihua&callback=?",
    function(json){ // 执行代码
    });

           在服务器端,重新拼接json数据:

    /** 获取请求的各个参数(用户名等) **/
    Map map = request.getParameterMap();
    /** 获取jsonp的回调函数名 **/
    String callback = request.getParameter("callback");
    /** 调用业务逻辑,并将结果转化为json格式 **/
    String msg = convert2Json(services.login(map))
    /** 重新拼接格式,并输出  **/
    out.println(callback + "('" + msg + "')");

           这样就可以在浏览器获取到异源服务端返回的json数据了。这里返回的跟json格式不一样,它的格式是回调函数名+(json数组)。其中小括号不可以省略。否则请求是发送成功了,但是却获取不到数据,因为返回的数据格式出错了。效果图如下:



     

    展开全文
  • DesignBox 【提要】该发明的巧妙之处在于他不是和大多数人一样借助复杂的电子装置,而是利用液晶显示器自身对光的扭转偏振的特征去实现立体显示-->FPDisplay 资讯中心 http://info.fpdisplay.com 立体电影自20世纪...
    DesignBox href="/Controls/ComboEditor/StyleLibary/DesignBoxStyle.css" type="text/css" rel="stylesheet"> href="/Controls/ComboEditor/StyleLibary/Highlighter.css" type="text/css" rel="stylesheet"> 
    
    提要该发明的巧妙之处在于他不是和大多数人一样借助复杂的电子装置,而是利用液晶显示器自身对光的扭转偏振的特征去实现立体显示
    -->FPDisplay 资讯中心 http://info.fpdisplay.com
    <script language="javascript" src="http://cn.fpdisplay.com/ad/ADImg.asp?ad_item_key=103"></script>

    立体电影自20世纪初诞生以来,因其生动逼真、身临其境的特殊效果而深受人们欢迎。但由于显示技术的制约,人们只能在影院中观看立体节目,无法通过电视及其他观看平台获得满意的立体效果。

    目前,在国际立体显示技术研发领域中,中国、美国、德国、日本等处于领先水平。绝大多数的厂家或科研机构都把研发重点放在专用裸眼立体电视或立体显示器上,这种产品一般是通过复杂的电子装置,将两副不同的图像送到人的左右眼睛里,从而实现立体成像。

    但是,这也存在许多缺陷和不足。如果不借助立体眼镜配合立体成像,其效果肯定不尽人意。现有的立体电视在观看角度、动态图像显示效果等方面尚需做较大的努力。同时,这种显示方式给观看者带来的不适感较强,看久了易让人头晕目眩,反应强烈者甚至恶心呕吐。另外,还有价格高昂是它一个无法逾越的鸿沟。目前市面上的立体电视动辄十几万甚至几十万元,

    福州何开成先生申请了名为“一种液晶立体平面兼容显示器”的发明专利,同时提出了三种可以在液晶面板上实现立体平面兼容显示的方法。这项发明,也是迄今为止立体显示领域最令人激动的发明。该发明的巧妙之处在于他不是和大多数人一样借助复杂的电子装置,而是利用液晶显示器自身对光的扭转偏振的特征去实现立体显示。

    1、液晶显示器成像基本原理:

    LCD依赖偏振光片和光线本身。自然光线是朝四面八方随机发散的,偏振光则是有一定振动方向的光波,只有与偏振片平行的光才能通过偏振光片,也就是偏振光片能阻断不与自身平行的所有光线。液晶显示器中有两个偏振光片,1、入射偏振光片,去除与偏振光片偏振方向不平行的光线,2、出射偏振光片,根据光被液晶扭转的偏转角度通过光量,形成图像。只有光线本身已扭转到与第二个偏振光片偏正方向匹配,光线才得以最大地穿透。(如图1-1)  

                                    

    20070810110904656.gif
    LCD正是由这样两个相互垂直的偏振滤光片构成,所以在正常不通电情况下应该阻断所有试图穿透的光线。但是,由于两个滤光器之间充满了扭曲液晶,所以在光线射出第一个偏振光片后,会被液晶分子扭转90度,最后从第二个偏振光片中穿出。另一方面,若为液晶加一个电压,分子又会重新排列并完全平行,使光线不再扭转,所以正好被第二个偏振光片挡住。

    总之,在入射偏振片与出射偏振片偏振方向成90度角时,对液晶加电将光线阻断,不加电则使光线射出(如图1)。入射偏振片与出射偏振片平行时,对液晶加电光线将射出,不加电则使光线被阻挡。 

    本发明立体成像主要是采用光分法原理,基于液晶显示器构造、液晶的光学特性和立体视觉成像原理结合而成,主要通过改进现有的液晶显示器制造工艺,使得液晶显示器发出的单一方向的偏振光成为隔行垂直的偏振光,通过立体视觉的光分法,使用者佩戴左右相互垂直的偏光镜片,从而实现立体左右视角图像的分离,形成立体视觉。同时与普通平面运用完全兼容。并且,根据现有的计算机图像处理技术,设计出一种使用简单的立体图像数据压缩、存储、还原的有效方法,使得该发明的普及应用成为极大的可能。

    2、液晶显示屏的技术改造

    实现该发明的对液晶显示屏的改造方法可有三种方式:

    (1)制造液晶显示屏时,加入液晶光线扭转层(扭转90度)。 

    20070810110925914.gif


    图1-2所示为加入液晶光线隔行扭转层的工作原理横截面图,其中A部分为液晶现有的构造,B部分为加入的部分。

    其中,A部分为常规的液晶工作原理,光线通过1-7各层,经由液晶的扭转,在射出时,光的振幅已经改变了90度的角度。

    B部分工作原理为:管线射出第7层时,隔行再加入一层液晶光线扭转层,有偏转的行(奇数或者偶数行,图中为上部)部分为:光线l先进入导向膜8-〉进入液晶层10,光线被扭转90度-〉到达下一导向膜11,再由玻璃12射出。呈现出图像。

    而未经扭转的行光线通路为(图中为下部):光线l先进入导向膜8-〉进入光损耗补偿层9 -〉到达下一导向膜11,再由玻璃12射出。呈现出图像。

    此方式的特点是工艺要求简单,成本较低,实现较容易。

    提要该发明的巧妙之处在于他不是和大多数人一样借助复杂的电子装置,而是利用液晶显示器自身对光的扭转偏振的特征去实现立体显示
    -->FPDisplay 资讯中心 http://info.fpdisplay.com
    <script language="javascript" src="http://cn.fpdisplay.com/ad/ADImg.asp?ad_item_key=103"></script>


    (2)在制造液晶显示屏时,即对入射偏振片和出射偏振片进行对应的隔行垂直工艺加工制作,同时液晶的导向膜也要进行相应的隔行相互垂直处理,这样整个液晶显示屏的工作正常无异,因为对应的位置(同一像素)内外两个偏光膜是同时转90度的状态,液晶也是旋转90度,故所有的电路工作不作改变,成像的原理和方式也没变化,质量也基本不受到影响(液晶显示的上下和左右的视角会有所差异),但成像的光却是隔行相互垂直偏振的,正常平面显示时使用没有区别,戴上偏振光眼镜,立体的左右视图马上就分开了。 
     

    20070810111101391.gif



    (3)在制造液晶显示屏时出射面的偏振片即做隔行垂直工艺制造,此方案与普通液晶显示器的区别就在于出光偏振片不是整张的同一方向(如图:2-2a),而是隔行相互垂直的(如图2-2b),此时的液晶显示屏实际上是长亮和长暗两种工作模式的混合产物(这里假定奇数场是长暗,如图:1-2a和12b的C区;偶数场是长亮的模式,如图:1-2a和12b的D区)。正常普通的液晶显示器两个偏光膜的光导向是相互垂直的,也就是图1-2a和图1-2b中的D区域中的1和7,属于目前液晶采用的工作方式,在这种情况下不加电时光可通过,屏幕是亮的;而当如图1-2a和图1-2b中的C区域则刚好相反:1与7相互平行,不加电时光被液晶扭转了90度,所以光无法通过属于长暗状态。此时显示器如按正常的图像矩阵控制工作,则会出现奇数场正常、偶数场却是反相图像(黑的是白的,颜色也是互补的状态)的情况,图1-2a为不加电状态,光通过偏光板1—〉液晶导向板3—〉液晶扭转90度—〉由于C区为1、3偏光平行的状态,所以光被阻挡,而D区为1、3相互垂直的状态,光扭转了90度刚好送出。图1-2b为加电状态,液晶在电场中被排列平行,所以C区可以见到光。所以这种方式要求对显示器矩阵控制电路作相应的调整,采用隔行反相控制液晶的方式,重新得到正常的图像(在这种情况下,图像的正常与否与液晶的明暗线性有关,这可以用配套的电路进行校正补偿),故采用此方式来达到显示出来的光的偏振方向是隔行相互垂直的,使得两幅立体的左右视图能够有了得以分开的基础。  

    以上三种方式的共同特征是:对现有的平面显示完全兼容,前期的技术开发完成后,可批量生产。第2种方式虽较复杂,但随着科学工艺进步也将有着它的优势和空间,量产将极大地普及三维立体电视节目和拓展工业、科技等各方面的应用。该发明在实际应用中使用简单,只需佩戴一相互垂直的的偏振光眼镜。光分法立体显示技术是极其成熟的一个系统,该发明是在液晶显示技术日趋完善的基础上实现的,技术难度不是很高,有很高的普及性。

    3、配套的立体图像压缩、保存、还原技术

    现在,计算机图像处理技术已经相当完善,本发明提出配套的图像压缩、解压缩模块设计采用目前最先进、应用领域较广的三种压缩方案,使用时可以从中选择一种,以适应不同环境和不同需求。

    一是MPEG-2。MPEG-2专门针对数字电视而开发,很快成为了迄今最成功的视频压缩标准。MPEG-2 既能够满足标准逐行视频的需求(其中视频序列由一系列按一定时间间隔采集的帧构成),又能够满足电视领域常用的隔行视频的需求。隔行视频交替采集及显示图像中两组交替的像素(每组称为一个场)。

    二是MPEG-4。MPEG-4图像压缩质量最好、算法最先进的方案,该方案图像质量好,压缩比较低,适用于网络传输性能良好的情况。

    三是H.264/AVC。H.264/AVC在压缩效率方面取得了巨大突破,一般情况下达到 MPEG-2 及 MPEG-4 简化类压缩效率的大约 2 倍。提供了对高清回放的支持。

    基于以上三种压缩方式,在数据的压缩保存中,我们对立体显示中同一时间左右眼两幅不同的画面作如下处理:将左眼图像AL与右眼图像AR均作纵向变形压缩,使得两画面只有原先的一般高度,然后在拼接左眼图像AL与右眼图像AR,比如左眼图像AL在上,右眼图像AR在下。立体图像编码、压缩、回放原理图示:

    20070810111149686.gif

                  在液晶显示上同时显示两幅图像,且两幅图像偏振光角度垂直


    根据专利说明书阐述的发明原理进行理论分析,可以得出该显示器有如下一些性能特点与技术优势 :
     1、可立体平面兼容显示 
    2、制造工艺简单,只需在普通液晶面板制造工艺中进行一个简单的改造即可。 
    3、制造成本非常低,和普通液晶显示器差不多 
    4、显示效果好(观看角度、图像效果等) 
    5、观众没有不适感 

    申请号:200710008408.3 公开号:CN2000430A 发明人:何开成
    展开全文
  • 据了解,被发现的所有应用程序都与创建的与新型冠状病毒有关的域名有关,过去几周内已经实现了激增。 恶意附件 随着人们越来越多地使用诸如Zoom和Microsoft Teams之类的在线通信平台进行工作,攻击者正在发送以...

    数据说话:威胁现状

    根据网络安全公司Lookout的说法,由于受到新冠病毒(COVID-19)的影响,全球工作者纷纷将办公地点从公司转移到了家中,这也导致攻击者开始将攻击目标瞄准了设备缺乏足够安全防护机制的远程工作者。由此开展的大多数攻击活动的目的都是窃取用户的银行凭据。

    近日,Lookout发布了一份最新的安全报告,其调查了在过去一年的移动网络钓鱼攻击,发现去年专针对移动设备的网络钓鱼攻击,在全球都呈现上升的趋势,从2019年第四季到2020年第一季,全球行动钓鱼攻击事件更是大幅增长37%。

    该报告提到,一旦网络钓鱼攻击成功,通常会让企业损失惨重,在拥有1万台移动设备的企业,每个钓鱼攻击事件会让企业损失3,500万美元,而拥有5万台移动设备的企业在每次钓鱼攻击事件中,损失将可能达1.5亿美元。而在个人隐私资料更为重要的医疗保健产业,企业每年平均需要花费50万美元来应对网络钓鱼攻击。Lookout表示,新兴的技术通常是主要的攻击目标,而移动设备则提供给了有心人攻击企业的绝佳渠道。

    该研究表明,2020年第一季度就大约有22%的企业移动用户遭到了网络钓鱼尝试而这一数据在上一季度仅为16%。该公司表示,此数据是基于全球2亿台移动设备所收集和遥测的数据得出的。

    报告指出,移动网络钓鱼攻击的激增可能与越来越多的远程工作人员将移动设备用于个人和商业目的的行为有关。这些新习惯使员工更容易成为企业凭据收集攻击的目标。

    Lookout的报告指出

    恶意行为者已经注意到我们对于移动设备的依赖程度。从他们的角度来看,移动网络钓鱼通常是入侵个人或组织最方便有效的方式。

    该报告还指出,尽管这些移动网络钓鱼活动大多针对各种部门,包括医疗保健、制造业和政府机构等展开,但是值得注意的是,旨在窃取银行客户信用凭证的攻击也正在激增。例如,该报告展示了针对两家加拿大银行(Scotiabank和Royal银行)的移动网络钓鱼活动的登陆页面(如下所示)。

    最新报告:疫情引发网络钓鱼攻击激增 移动设备成突破口

    针对加拿大银行业客户的两个伪造(左图)和真实(右图)登录页面的并排比较

    Lookout安全解决方案高级经理Hank Schless说道

    虽然我们无法确定究竟有多少人在虚假登录页面中输入了他们的登录凭据,但我们可以安全地假设,确实有一定比例的人泄露了自己的登录凭据。

    成功的攻击模式

    报告称,移动网络钓鱼攻击已经成为攻击者得心应手、奇热且成功率越来越高的攻击模式,他们通常依靠欺骗性的网络、SMS消息、可疑的应用程序和其他社交工程技术来诱骗受害者。

     最新报告:疫情引发网络钓鱼攻击激增 移动设备成突破口

    除此之外,攻击者还在越来越多地为移动设备量身定制钓鱼活动。例如,据Lookout称,攻击者发送的钓鱼链接与原始域非常相似,这通常会导致受害者忽视这种“包装精良”的网络钓鱼迹象,如果是在笔记本电脑或台式机设备上,使用更大的屏幕查看,这种骗局可能会更容易被发现一点,而在移动设备的小屏幕上,这通常会被忽略掉。

    Schless表示,

    现在,移动设备比以往任何时候都更大程度地渗入我们的工作和个人生活之中。一天之间,设备会无数次在个人和工作目的间切换,这就意味着攻击者可以通过个人社交媒体平台或第三方消息传递应用程序从受害者处窃取公司凭据。

    当然,这种网络钓鱼攻击还可以针对具有较高特权访问权限的员工,包括对组织的财务记录、研究或客户数据具有用户权限的高管的等等。

    其他COVID-19网络钓鱼攻击

    近几个月来,许多安全研究人员一直在跟踪以COVID-19主题并试图传播恶意软件(包括间谍软件和信息窃取程序等)的攻击活动。结果发现,不仅网络犯罪分子正在利用COVID-19的契机,甚至连民族国家行为者也参与其中。

    根据安全公司Intsights的最新报告显示,COVID-19的全球肆虐也使得针对YouTube凭据的攻击者受益匪浅。随着新冠病毒的全球流行,大量个人用户开始花费更多的时间上网,而攻击者也把握契机越来越多地使用已经感染了恶意软件的系统来搜索高级YouTube帐户的凭据。

    然后,威胁行为者就会在暗网论坛(即只能通过匿名Tor浏览器访问的网络犯罪论坛,任何人都可以下载该浏览器)上出售获取到的这些合法YouTube用户的凭据。

    报告称,这些被盗凭证的价格是基于该帐户的订阅者数量而定的。报告指出,对于拥有200,000个订阅者的帐户,价格起价为1,000美元,而记录990,000个YouTube有效频道的日志的价格起价为1,500美元。

    需要警惕的其他攻击方式

    移动恶意软件

    Check Point报告指出,其发现了至少16个声称提供与疫情爆发有关信息的移动恶意软件,其中包括广告软件(Hiddad)和银行木马(Cerberus)等,这些软件窃取用户个人信息或进行欺诈性评价服务。

    报告称,

    狡猾的攻击者正在利用人们对于新型冠状病毒的关注,通过声称能够提供新型冠状病毒相关的信息,来促使移动恶意软件的传播,包括移动远控木马(MRAT)、银行木马等。

    据了解,被发现的所有应用程序都与新创建的与新型冠状病毒有关的域名有关,过去几周内已经实现了激增。

    恶意附件

    随着人们越来越多地使用诸如Zoom和Microsoft Teams之类的在线通信平台进行工作,攻击者正在发送以zoom-us-zoom_##########.exe和microsoft-teams_V#mu#D_##########.exe为附件名的钓鱼邮件,引诱在设备上下载这些恶意软件。

    勒索软件

    国际刑警组织表示,网络犯罪分子正试图利用勒索软件攻击奋战在一线的主要医院和其他机构。他们使用勒索软件阻碍医院的医疗服务,加密重要的文件和系统,直到医院支付赎金为止。

    防护建议

    攻击者会根据新的社会热点不断地调整攻击策略,这次的COVID-19也不例外,攻击者利用民众对COVID-19相关信息的关注为恶意软件和勒索软件的传播提供机会。个人和组织都应该对此保持高度警惕。

    一般情况下,我们要做到避免点击未知来历的电子邮件中的链接,并且对电子邮件的附件要保持高度警惕。在使用在线会议时,确保启用密码进行保护,防止视频会议被劫持。

    参考链接

    https://thehackernews.com/2020/04/cronavirus-hackers.html

    展开全文
  • 法国工作室Ankama Games研发的游戏Tactile Wars拿到了苹果50多个国家(几乎是所有上线的地区)的首页‘最佳游戏’推荐,而且曾一度达到了美国iPhone免费榜第二名,日均下载量突破25万,而一个月后该游戏在美国的下载...

    作者:Oliver,腾讯服务器性能测试团队产品经理。
    特别鸣谢 腾讯高级测试工程师 jinni,leo的干货内容。

    WeTest导读

    大量用户登录游戏产生的“洪荒之力”往往会对游戏服务器产生巨大的压力,游戏上线之前对服务器的承载能力做测试是必须要做的事。本文从腾讯游戏之前服务器性能测试的经历出发,对服务器性能测试的原理、指标和方法进行了介绍,并介绍了内部目前流行的一些工具和使用技巧。
    在四年磨一剑的奥运会,要想成功,必须顶住压力,在0.13秒错失400米自由泳金牌之后,孙杨在200米自由泳比赛中后来居上,夺回冠军。
    这里写图片描述

    而这次奥运会人们也发现,洪荒之力的力量是无法预估的,傅园慧靠着自己的“洪荒之力”,反复刷新自己的最好成绩。
    这里写图片描述

    那么,同样也是多年磨一剑,游戏开发者精心制作的游戏在面对大量用户的“洪荒之力”时,服务器应该怎样顶住压力,高效运转?
    这里写图片描述

    先来看看用户的洪荒之力能产生什么样的后果?
    1、面对开服压力,服务器宕机。
    这里写图片描述
    版本上线之后,新的服务器开放或者服务器更新,面对大量玩家的涌入,如果服务器的性能不好,就会发生登录失败的问题。

    2、运营期压力,玩家体验损失。
    这里写图片描述
    服务器的一个外网活动,比如副本双倍掉落,可能就会造成玩家在某个场景堆积,此时副本玩家就会比平时高很多,对于服务器而言副本这个业务请求会产生比平常高很多的压力,就极容易引发相关的性能问题。

    据数据公司预测,获得苹果推荐的价值相当于200万美元(1200万元)左右的推广费用。法国工作室Ankama Games研发的游戏Tactile Wars拿到了苹果50多个国家(几乎是所有上线的地区)的首页‘最佳新游戏’推荐,而且曾一度达到了美国iPhone免费榜第二名,日均下载量突破25万,而一个月后该游戏在美国的下载排名已经降到了475,并且有持续下滑的趋势。归根结底是因为开发商没有应对大量玩家涌入服务器的准备,服务器卡死、宕机,闪退让玩家失望选择离开。在这之后Ankama花了两个月的时候才优化服务器逐步挽回了局面。
    腾讯游戏下的游戏测试团队WeTest曾经接入过一款代理游戏,有百万级的在线人数预估,当时进行了服务器性能测试,测试结果是当时对方的服务器只能承受1500人的同时在线,如果一套服务器只能承载1500个用户,该游戏要上线需要多少服务器?需要1000套,这无疑是一个巨大的浪费。

    面对用户的“洪荒之力”,惨痛的经历一次次的发生,“外网问题无小事”,游戏发行、渠道对服务器承压情况越来越重视,很多都会要求CP提供服务器性能测试报告作为凭据。
    然而目前市场上还没有针对游戏的服务器性能检测工具,无论是开源还是商业软件都不能很好的满足游戏的专项测试需求,与此同时受限于开发周期短以及人力的问题,中小型CP往往采取编写模拟机器人进行简单的压测,测试的覆盖面窄,无法保证并发请求,造成潜伏的问题遗漏到线上。

    同样是百万级的游戏,有的公司需要上千台服务器,而有的公司只要几百台服务器,巨大的服务器采购运维成本差异皆因各家公司做服务器性能测试乃至性能调优的能力参差不齐。
    那么问题就来了,
    服务器性能测试是什么?要怎么做才最有效呢?

    什么是服务器性能测试?

    提到服务器性能测试,不能不提到很多术语。为了让大家更容易理解,举个生活中的例子:
    你中午去“海底捞”吃饭。
    我们可以把“海底捞”这个酒楼看成一个被测系统。
    你去吃饭,就是对这个被测系统发起请求,对这个系统造成了一定的负载。你带去的人越多,那么这个餐馆就越繁忙,可以说餐馆承受的负载就越大。
    你开始点菜。这个时候你隔壁桌的人也开始点菜。那么你们两个对这个系统产生了并发的请求。同时,其他桌有的在吃菜,有的在等菜,这些都是并发进行的事务。一个完整的吃饭事务可以定义成包括:点菜,下单,上菜,买单四个步骤。对于一个C/S的系统来说,可以对应于:建立连接,发送请求,接受应答,断开连接。
    影响一个餐馆生意好坏的一个重要原因是上菜速度。上菜速度体现在两个方面:
    1.一个顾客请求的处理耗时,从下单到上菜中间等待的时间,我们称之为响应时间。
    2.这个餐馆同时为多名顾客上菜的频率,我们称之为吞吐量。
    很多因素会影响上菜速度,比如服务员的个数,厨师的个数。对于一个C/S的系统,服务员相当于是接入层,厨师相当于是后台服务。假如服务员太少,下单很慢,后面的厨师都闲着,那么上菜速度也快不了;假如服务员够多,下单足够快,但是厨师太少,下的单来不及做,同样上菜速度也很慢;如果服务员很多,厨师也很多,但是来的客人很少,那么大部分的服务员和厨师都闲着,资源全部浪费掉了。因此,接入层和后台服务进程个数、以及资源配比,都是需要根据实际情况进行调优的。
    来多少顾客,这是酒楼自己无法控制的,但是酒楼的上菜速度、餐位多少都会制约客流量。一定有一个峰值客流量,当来的客人超过了这个峰值,那么这些客人就会等位,或者是上菜速度超慢让客人无法容忍。容量测试就是通过工具模拟足够多的顾客来吃饭的事务,希望找到这样一个客流量对酒楼产生一定的负载,这个时候酒楼既能接待最多的客户同时也能保证最短的等待时间。更多的,还可以对这个酒楼人员配置和餐位设置等进行调优,以期达到一个最理想的资源利用率和效率。
    客流量跟进来的客人多少有关,也跟餐馆的接待能力有关。单方面增加来就餐的顾客,遭到投诉的可能性就越大,上错菜的可能性也越大。
    性能测试的核心概念主要包括两部分:正确的测试方法,正确的评价性能的指标。测试方法会告诉你用什么样的套路去执行测试;性能指标是告诉你如何用数值来描述你的测试对象的性能。

    常用的性能指标

    在介绍测试方法之前,先来了解一下关于服务器性能测试的一些指标含义。
    【吞吐量】 固定时间间隔内的处理完毕事务个数。通常是1秒内处理完毕的请求个数,单位:事务/秒(tps)。
    【平均吞吐量】一段时间内吞吐量的平均值。无法体现吞吐量的瞬间变化。
    【峰值吞吐量】一段时间内吞吐量的最大值。是用来评估系统容量的重要指标之一。
    【最低吞吐量】一段时间内吞吐量的最小值。如果最小值接近0,说明系统有“卡”的现象。
    【70%的吞吐量集中区间】通过统计15%和85%的吞吐量边界值,计算出70%的吞吐量集中区间。区间越集中,吞吐量越稳定。
    【响应时间】一次事务的处理时间。通常指从一个请求发出,到服务器进行处理后返回,再到接收完毕应答数据的时间间隔,单位:毫秒。
    【平均响应时间】 一段时间内响应时间的平均值。无法体现响应时间的波动情况。
    【中间响应时间】一段时间内响应时间的中间值,50%响应时间,有一半的服务器响应时间低于该值而另一半高于该值。
    【90%响应时间】一段时间内90%的事务响应时间比此数值要小。反应总体响应速度,和高于该值的10%超时率。是用来评估系统容量的重要指标之一。
    【最小响应时间】响应时间的最小值。反映服务最快处理能力。
    【最大响应时间】响应时间的最大值。反映服务器最慢处理能力。
    【CPU占用率】1-CPU空闲率,表示CPU被使用情况,反映了系统资源利用情况。

    常用的测试方法

    关于服务器性能测试,目前常用的测试方法有这些:
    一、现网数据预估
    这里写图片描述

    现网数据预估是根据压力测试过程中的部分数据,对未来大量用户访问的情况机型预估。途中的横轴代表现网吞吐量,纵轴代表CPU压力。

    图中绿色的部分代表当前的服务器压力,当收集一段时间数据之后,可以模拟一条曲线。假设对服务器的上线成本预估是80%,可以通过曲线拟合的方式推测出现网的能力是多少,也从而推断出最大上限是多少。
    缺点:通常游戏服务器都是比较复杂的,这种方式只适合简单的服务器拟合,复杂服务器数据就不太准确。

    二、真人压测
    真人压测就是通过邀请一定数量的真实用户来玩游戏,从而对服务器达到一个测试效果。这种方式他最大特点在于用户的行为相对是最真实的,因为用户的使用完全不会受到限制,和线上一个真实用户一样。目前游戏上线过程中的“封测”,就可以被认为是一种真人压测,可以帮助开发者发现一些性能问题。
    但是这种方式也存在着弊端。
    1、 暴露出的性能问题有限
    许多经过封测的游戏到上线还会产生问题,原因之一就是封测人数通常还是太少,虽然有几百或者几千用户在玩,但是并发并不够,不足以暴露服务端性能问题;
    2、 不适合调优
    服务器性能测试不光需要暴露服务器的问题,暴露问题之后还需要不断的回归调优,但是真人是无法完全重复这些行为方式的。
    这里写图片描述

    三、接口测试

    服务器方面的接口测试与传统意义上的接口测试略有不同,当开发人员需要对一套服务器进行评估,但是又时间不足的情况下,我们可以考虑选择一些具有代表性的功能,以及一些高风险功能进行测试,通过以小见大的方式,来评估整套服务器性能。
    当然这个方法的主要问题就是无法遍历整个服务器的接口,难以避免一些微小的问题。
    这里写图片描述

    四、录制回放

    这里面包含两部分,“录制”就是通过抓取数据包的方式,来获取游戏时的协议,比如用户登录游戏时抓取登录包;“回放”即把这些捕获的协议重新发送给服务端,这样理论上就可以通过工具放大协议量级达到性能测试的目的,比如将之前录制的登入协议扩大1w倍给服务器,这样就模拟了1w人同时登入的情况。
    这个方法存在的问题是,游戏的协议交互非常复杂,如果只是单纯的放大数据包,对于服务器是产生不了多大的压力的。这类方法比较适合固定输入输出服务类型的测试。
    这里写图片描述

    五、机器人模拟

    机器人模拟测试是对以上各种测试做了一个平衡, 通过高还原真实玩家的用户行为,模拟高并发场景,从而得到类似很多人同时游戏的测试效果。机器人模拟有三个优势:
    1、 高还原游戏玩法,深度模拟真实用户行为;
    2、 并发性不受限制,从1W到10W,压力能够自主设置;
    3、 可以反复执行,便于性能调优回归;
    4、 实现7*24小时不断监控,在开发提交代码之后,版本在自动编译之后就跑新的测试,这样每天都能进行性能监控,在调优方面,完全的进行一个重复性测试,可以不断的进行回归和调优。
    这个方法的问题就在于机器人模拟需要专人开发,对测试者的开发能力,分析能力都有一个比较高的要求。
    这里写图片描述

    说到这里,我们对之前所有的服务器性能测试方法进行了一个总结:
    这里写图片描述

    我们可以发现,速度与准确性始终是对立的,如果游戏开发者队友服务器测试有一个明确的规划,对服务器压测有一定的时间预留,机器人模拟的效果是非常好的。

    如何实现机器人模拟

    那么我们到底是如何来开发一款进行服务器性能测试的机器人呢?
    整个开发过程主要可以概括为三大步骤,建模, 分析, 开发。
    第一步,建模。
    建模是什么呢,建模是为了模拟真实玩家行为,分为两种方法:
    1、 探索典型玩家关键路径
    这里写图片描述
    通过大量玩家数据的支撑,选择最多的行为路径,设计机器人模拟的行为。

    2、 通过封测过程中的运营数据,生成专家视图
    这里写图片描述

    这个方法就是通过去测试服中搜集用户的协议数据,并对这些协议数据进行分析,确定各自是什么行为,把用户的这些协议数据还原成为用户行为的操作过程就像是把一块块散乱的拼图重新组织起来一样。
    在这个过程中,最简单的是按比例组织,通过数据分析,发现用户登录,战斗各自占据多少比例,以这个比例来分配一定的人数进行登录和战斗。但是这个方式并不太适合游戏,对于游戏本身来说,一百个人不断的重复登录的行为,一百个人同时重复游戏的行为,显然是不符合逻辑的。
    那么在分析的过程中,采用概率的方式,是更加贴近一个真实用户的行为的。当模拟一个真实用户登录之后,有一定的可能性会重新登录,还有一部分可能性就进行战斗,例如机器人有10%概率重新登入,50%概率进行战斗。 同时我们还需要考虑对角色身上的装备数据, Cache的命中,数据库容量等等,目的是让机器人更接近真实用户,更加符合一个真实用户的行为。

    第二步,分析
    那么我们会对客户端进行行为交互和协议分析。一方面,为后续协议开发实现做准备;另外,在登入的过程中,会产生大量的协议,如果没有对客户端进行分析,可能只是调用了登录的协议,从实际的协议交互上来说,一次登录可能包含了很多其他的协议信息,那这时我们实现登入就不能仅仅是个简单的登录协议,可能还包含拉取邮件信息,拉取好友信息等协议,两者之间对登入的性能差异影响非常大。

    第三步,代码开发
    主要包含两部分:
    1)协议的开发,包括协议的实现,协议的解包等;
    2) 业务逻辑的组织,主要对上述游戏模型进行实现。

    服务器性能测试工具的使用

    不过令人遗憾的是,对于游戏开发者的实际情况来说,充足的测试时间并不是每次都可以保证的,而且对于模拟机器人的开发过程本身又是一个很大的投入,对于一些通用场景,如果能够有通用的平台代码可以调用,相信对于游戏开发者是一种极大的解放。
    腾讯WeTest的压力测试团队根据十多年的内部实践经验总结,基于真实业务场景和用户行为进行压力测试,推出一套面向游戏业务的综合性应用性能管理解决方案,目的在于帮助游戏开发者发现服务器端的性能瓶颈,进行针对性的性能调优,降低服务器采购和维护成本,提高用户留存和转化率。
    针对不同的应用场景,可以选择不同的模式进行操作。
    1)简单模式
    对于HTTP协议可以通过简单的界面配置,在1分钟内直接发起压力。
    这里写图片描述
    (设置模拟用户人数)

    这里写图片描述
    (设置测试模型和客户端请求)

    2)高级模式
    对于类似游戏的复杂混合场景,可以结合在线代码开发IDE,实现对任何标准或自定义协议的通信,实现了四个目标:
    业务场景模拟。可编码解析任意协议,实现复杂业务场景。
    发现瓶颈。支持使用场景中复杂的数据传输行为,比如“登录”“查看个人信息”等,更加真实的模拟用户行为,发现服务器问题;
    持续压力。实现7*24小时一定量级的服务器压力;
    触达极限。短时间内触达服务器的压力上限。

    目前腾讯WeTest服务器性能测试已经正式对外开放,点击链接:http://wetest.qq.com/gaps/立即体验!

    展开全文
  • 从这份财报来看,哔哩哔哩在营收、月活用户规模、付费用户方面都实现了不错的增长。 受财报发布会的影响,哔哩哔哩盘后股价由跌转涨,目前涨幅超3%。 作为国内二次元网站领域的领头羊平台,B站赴美上市后成为国外...
  • IOS9关于搜索的认识和实现

    千次阅读 2016-04-24 22:31:21
    在iOS 9 中,NSUserActiviy增加一些的属性以支持 App Search。从理论上讲,如果一个任务能够转变成一个 NSUserActivity 并转交给其它设备,它也能转换为一个搜索项并在同一个设备上继续处理。这就有可能对App 上的...
  • 您可以在上阅读有关实现的书面教程。 :joystick_selector:
  • 跨镜追踪(ReID)技术能够根据行人的穿着、体态、发型等信息认知行人,与人脸识别技术结合能够适用于更多的应用场景,提供更加丰富的服务,将人工智能的认知水平提高到一个的阶段。 最近云从科技在 ReID 技术上...
  • 动态阶梯突破策略

    2019-12-04 14:41:19
    但有时候我们写策略可能会用到talib库中没有的计算方法,那么今天我们就通过动态阶梯突破策略,来学习下这种策略是如何实现的。 什么是突破策略 我们知道,期货市场的价格以趋势和震荡交替的方式演变,如果我们...
  • 突破小米悬浮窗权限控制--不需要权限的悬浮窗

    万次阅读 多人点赞 2016-07-06 16:52:42
    上一篇文章讲了Android的Toast拓展,在原生Toast基础上对显示时长和显示动画做了二次封装,强化了Toast的部分功能。...但是,小米系统对开发者恶心,你们也懂的,下面分析一下如何突破小米悬浮窗权限封锁。
  • 有插件一般都会伴随着宿主的存在,宿主APK实现了一套插件的加载和管理的框架,它作为应用的主工程存在,插件APK是依附于宿主APK存在的 插件也称为Plug-in,或者add-in,俗称外挂,是宿主应用的功能扩展,对宿主来说...
  • 终极突破

    千次阅读 2010-05-09 07:52:00
    终极突破[10 天改变一生] 当你阅读这本书时,你要把这本书当作你个人的真挚朋友或者内心深处的另一个自己。就好像这本书是作者单独为你个人而写作的书,把那些对你有意义的句子、词汇做上记号,记住自我激励的语句...
  • 随着国家层面“5G基建时代”的开启,又刺激了新一波的创业浪潮,很多人大刀阔斧,跃跃欲试。不过也有人“居安思危”,表达了忧虑情绪,要知道,在上一波的“AI创业热”中,死亡率曾高达90%。无数公司成立已长达十...
  • 在上篇文章里,我提到了如何通过对价值流进行分析、拆解关键要素指标,并通过缩减处理时间PT、降低前置时间LT、提高完成&准确的百分比(C&A%),实现企业研发效能10倍速提...
  • 陆向谦老师还讲述了自己个人的经历,文革时期在上小学,当时大家都在 搞政治运动,惟独他喜欢看书,不断学习。在文革时期这么做可以说是异类,甚至有被敌视迫害的风险,而他却坚持 自己看书的兴趣,积累...
  • Mybatis-plus 3.3及之前版本的分页插件和突破查询记录数最大限制的方法已在上一篇文章中介绍,链接地址:https://blog.csdn.net/donotshow/article/details/116272977。最近更新了mybatis-plus的版本到3.4.2,发现...
  • HTTP 2.0在应用层跟传送层之间增加了一个二进制分帧层,从而能够达到在不改动HTTP的语义,HTTP方法,状态码,URI以及首部字段的情况下,突破HTTP 1.1的性能限制,改进传输性能,实现低延迟和高吞吐量  在上图所...
  • 也就是百度收录突破只收录首页的第一阶段。 有关第一阶段收录,我昨天写了一篇文章:新站6天百度收录经验谈。接下来的这篇文章主要来谈谈我对百度第二阶段,也就是从1到多收录的经验总结。 在上一篇中我总结了二个...
  • 十大经典排序算法 讲解,python3实现

    千次阅读 2018-11-22 21:15:46
    非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。 线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以...
  • 2018全年AI技术大突破大总结

    千次阅读 2018-12-24 08:24:55
    工具、框架的出现,也让这个领域的明天特别让人期待…… 近日,Analytics Vidhya发布了一份2018人工智能技术总结与2019趋势预测报告,原文作者PRANAV DAR。量子位在保留这个报告架构的基础上,对内容进行了重新...
  • 移动办公的实现和演进 移动办公,即在任何时间、任何地点处理任何与业务相关的事件,看着非常高大上,其实我们日常工作中使用手机办公软件、携带笔记本出差办公甚至通过微信沟通工作都属于移动办公,是一种非常接地...
  • 推荐系统的工程实现

    2019-06-19 17:31:18
    原创:gongyouliu大数据与人工智能 目录 1.写在前面 2.推荐系统与大数据 3.推荐系统业务流及核心模块 4.推荐系统支撑模块 5.推荐系统范式 ...7.推荐系统工程实现的设计哲学 ...作者在上篇文...
  • 在上个世纪90年代,“物联网”就已经提出,“物联网”的最直接的概念就是利用产品电子代码,还有无线射频识别技术,通过网络来实现物品的在任何时候、任何地方实现点对点的互联互通。经过了近几年的市场及大环...
  • 在上一个小节中,使用Model2来实现了一个简单的登陆功能,在本节里面,使用Struts2来实现同样的功能。Model2和Struts2都实现了MVC,因此Struts2的实现和上面Model2的实现是类似的。  前面讲到Struts2是一个基于...
  • 在上一个小节中,使用Model2来实现了一个简单的登陆功能,在本节里面,使用Struts2来实现同样的功能。Model2和Struts2都实现了MVC,因此Struts2的实现和上面Model2的实现是类似的。  前面讲到Struts2是一个基于MVC...
  • 工具、框架的出现,也让这个领域的明天特别让人期待…… 近日,Analytics Vidhya发布了一份2018人工智能技术总结与2019趋势预测报告,原文作者PRANAV DAR。量子位在保留这个报告架构的基础上,对内容进行了重新...
  • 本文首发于PPPoE中间人拦截以及校园网突破漫谈,转载请注明出处。 PPPoE中间人拦截以及校园网突破漫谈 校园生活快结束了,之前还有点未完成的想法,趁着这两天有兴趣搞搞。 此文面向大众是那种在校园内苦受拨号...
  • 事实上,传统的神经网络结构和算法早在上个世纪就已经被提出,但由于当时的任务需求仍远未达到传统机器学习算法的瓶颈,同时神经网络算法也受限于计算和数据资源,因此并未被普遍关注。   近些年来,依靠人工设计...
  • Spark PageRank 算法——从原理到实现 Spark PageRankspark 系列前言算法来源算法原理排名泄露排名下沉排名上升算法证明PR值计算方法幂迭代法特征值法代数法案例演示PageRank算法的优缺点 前言 在上一篇博客已经...
  • 近几年,物联网终端的安全问题的源头大部分指向了终端固件的保护不周,所以,各个MCU的厂商也在其芯片内植入了类似于安全芯片的能力,比如ARM提出并实现了TrustZone技术满足Cortex A和最新的Cortex M系列的芯片安全...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,435
精华内容 4,174
关键字:

在上实现新突破