Redis

【用例设计】接口用例设计

这一生的挚爱 提交于 2021-01-13 11:53:41
在接口测试过程中,用例设计是关键中的关键,需要重点关注的一些维度 接口测试 什么是接口 接口就是内部模块对模块,外部系统对其他服务提供的一种可调用或者连接的能力的标准,所谓的接口是模块与模块之间的一种连接 接口测试 上图为一个典型的接口,一个接口通常是有输入输出的,输入就是我们常见的入参,输出有时有,有时没有。调用相关接口,接口会执行相关处理逻辑 接口测试的用例设计,主要从输入和接口处理两方面考虑: 针对输入,可按照参数类型进行设计 针对接口处理,可按照逻辑进行用例设计 针对输出,可根据结果进行分析设计 典型问题 接口测试经常遇到的bug和问题,如下: 传入参数处理不当,导致程序crash 类型溢出,导致数据读出和写入不一致 因对象权限未进行校验,可以访问其他用户敏感信息 状态处理不当,导致逻辑出现错乱 逻辑校验不完善,可利用漏洞获取非正当利益等 用例设计 前面说明什么是接口以及什么是接口测试,接下来详细看看如何才能更好的进行接口用例设计 一、参数校验 对于接口来说,输入就是入参。常见参数类型有: 数值型(int、long、float、double等) 字符串类型 数组或链表 结构体 1.1 数值型 数值型参数主要考虑的设计思路 1.1.1 等价类 取值范围内 取值范围外 1.1.2 边界值 取值范围边界(边界最小、最大、边界最小-1、边界最大+1等) 数据类型边界

PHP7源码之array_unique函数分析

血红的双手。 提交于 2021-01-13 11:00:26
以下源码基于 PHP 7.3.8 array array_unique ( array array[,intarray[,intsort_flags = SORT_STRING ] ) (PHP 4 >= 4.0.1, PHP 5, PHP 7) array_unique — 移除数组中重复的值 参数说明: array:输入的数组。 sort_flag:(可选)排序类型标记,用于修改排序行为,主要有以下值: SORT_REGULAR - 按照通常方法比较(不修改类型) SORT_NUMERIC - 按照数字形式比较 SORT_STRING - 按照字符串形式比较 SORT_LOCALE_STRING - 根据当前的本地化设置,按照字符串比较。 array_unique 函数的源代码在 /ext/standard/array.c 文件中。由于 PHP_FUNCTION(array_unique){ // code... } 篇幅过长,完整代码不在这里贴出来了,可以参见 GitHub 贴出的源代码。 定义变量 zval *array; uint32_t idx; Bucket *p; struct bucketindex *arTmp, *cmpdata, *lastkept; unsigned int i; zend_long sort_type = PHP_SORT_STRING;

java零基础之---常见java面试题

社会主义新天地 提交于 2021-01-13 08:31:32
看到别人分享的面试题,感觉蛮全面的,分享出来,慢慢研究答案。 一、Java 基础 1.JDK 和 JRE 有什么区别? 2.== 和 equals 的区别是什么? 3.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗? 4.final 在 java 中有什么作用? 5.java 中的 Math.round(-1.5) 等于多少? 6.String 属于基础的数据类型吗? 7.java 中操作字符串都有哪些类?它们之间有什么区别? 8.String str="i"与 String str=new String("i")一样吗? 9.如何将字符串反转? 10.String 类的常用方法都有那些? 11.抽象类必须要有抽象方法吗? 12.普通类和抽象类有哪些区别? 13.抽象类能使用 final 修饰吗? 14.接口和抽象类有什么区别? 15.java 中 IO 流分为几种? 16.BIO、NIO、AIO 有什么区别? 17.Files的常用方法都有哪些? 二、容器 18.java 容器都有哪些? 19.Collection 和 Collections 有什么区别? 20.List、Set、Map 之间的区别是什么? 21.HashMap 和 Hashtable 有什么区别? 22.如何决定使用 HashMap 还是 TreeMap? 23.说一下

Golang 根据Gorm和Gin开发一个后台管理系统

眉间皱痕 提交于 2021-01-13 07:50:42
\\\\\\\\\\\ 项目后端地址: https://github .com/olongfen/gorm-gin-admin 项目前端地址: https://github.com/olongfen/user_admin 项目指导文档 Web UI Framework:element-ui Server Framework:gin Grom Framework: gorm 1. 基本介绍 1.1 项目结构 │ ├─conf (Config file) │ ├─docs (swagger APIs docs) │ ├─log (log file) │ ├─public (public static file) │ ├─static (head icon) ├─src │ ├─controller (Controller) │ ├─middleware (Middleware) │ ├─models (Model entity) │ ├─pkg (Project private package) │ ├─adapter (Casbin adapter) │ ├─app (Gin service response) │ ├─codes (Response code) │ ├─error (Project private error) │ ├─gredis (Redis) │ ├

微服务架构的四大金刚利器

跟風遠走 提交于 2021-01-13 06:59:26
Photo @Christopher Campbell 文 | 孔凡勇 概述 互联网应用发展到今天,从单体应用架构到 SOA 以及今天的微服务,随着微服务化的不断升级进化,服务和服务之间的稳定性变得越来越重要,分布式系统之所以复杂,主要原因是分布式系统需要考虑到网络的延时和不可靠,微服务很重要的一个特质就是需要保证服务幂等,保证幂等性很重要的前提需要分布式锁控制并发,同时缓存、降级和限流是保护微服务系统运行稳定性的三大利器。 随着业务不断的发展,按业务域的划分子系统越来越多,每个业务系统都需要缓存、限流、分布式锁、幂等工具组件, distributed-tools 组件(暂未开源)正式包含了上述分布式系统所需要的基础功能组件。 distributed-tools 组件基于 tair、redis 分别提供了 2 个 springboot starter ,使用起来非常简单。 以使用缓存使用 redis 为例, application.properties 添加如下配置: redis.extend.hostName= 127.0 .0.1 redis.extend.port= 6379 redis.extend.password=pwdcode redis.extend.timeout= 10000 redis.idempotent.enabled= true 接下来的篇幅

Redis +Tomcat实现Session共享

早过忘川 提交于 2021-01-13 05:51:58
1.1 背景 因业务需要准备在原有Tomcat部署的web项目中加入Redis 实现session共享方案。 1.2 业务流程 1.3 功能改造 1) 下载tomcat-cluster-redis-session-manager https://github.com/ran-jit/tomcat-cluster-redis-session-manager tomcat-cluster-redis-session-manager.rar 2) 添加redis-data-cache.properties 在tomcat/conf/redis-data-cache.properties文件中配置redis数据库信息 redis.hosts=10.3.8.235:6379,10.3.8.236:6379,10.3.8.237:6379 redis.password=123456 3) 修改context.xml 在tomcat/conf/context.xml文件中…段中增加以下两行: <Valve className="tomcat.request.session.redis.SessionHandlerValve" /> <Manager className="tomcat.request.session.redis.SessionManager" /> 4) web.xml 配置

wordpress文章页面添加字体增大减小链接

那年仲夏 提交于 2021-01-13 02:54:37
字体的大小 影响读者的视觉感受,我们可以在wordpress的文章页面single.php上通过js添加字体的增大减小按钮,来方便字体大小的调整。 1、在single.php文章页面添加Js <script type="text/javascript"> function SetFont(size){ document.getElementById("main").style.fontSize=size } </script> 注意: 要查看你的single.php的div的 ID 是不是 main ,否则修改成id的名称。 2、在single.php文章页面添加html <a href="javascript:SetFont('12px')" accesskey="1">小</a> <a href="javascript:SetFont('14px')" accesskey="2">中</a> <a href="javascript:SetFont('16px')" accesskey="3">大</a> 根据自己的主题可以把链接修改成按钮,图片等等。字体的大小修改上面的数字。 您可能感兴趣的文章: ▪ 给你的wordpress洗洗头wp_head和remove_action函数 ▪ 511遇见网络采用阿里云ECS Wordpress ▪ Wordpress使用Redis缓存加速

爱奇艺全链路压测探索与实践

*爱你&永不变心* 提交于 2021-01-12 19:07:38
背 景 爱奇艺除了每天都为数以亿计的用户提供优质的视频服务,同时还有体育、直播、文学等业务服务于更多的圈层用户,海量的业务几乎每天都在进行营销活动,由此带来的流量随时可能会给我们的服务引入不确定性。爱奇艺支付团队为各业务线提供全面的收付款服务,保障用户的付费体验,团队除了保障服务的稳定性外,还要应对随时可能爆发的流量挑战。对于支付系统来说做好准确的容量评估和预案是非常重要的,全链路压测在这方面提供了有力保障。 全链路压测是基于生产环境,模拟业务高峰时的海量请求,对整个系统链路进行压力测试,继而进行有效的容量评估和系统调优。因为支付业务对数据敏感同时业务复杂,使得系统间调用链路难以准确全面评估,实施压测比较困难,在没有实施全链路压测前,我们经常会遇到以下问题: 生产环境流量构成复杂,单机压测结果难以有效评估生产环境容量; 流量转化评估与实际用户行为不匹配,导致预案不能达到预期效果; 公共资源/服务很难在局部压测中暴露瓶颈,需要真实的高峰流量来验证; 链路容量不能对齐导致整体受限于短板服务,同时也产生了严重的资源浪费。 以上问题归结原因主要是没有在生产环境使用真实场景的流量去压测系统,也就无法做出准确评估,为了解决以上问题,我们开始了全链路压测在以支付业务为核心场景的探索与实践。 问题探索与方法实践 开展全链路压测我们主要从几下方面进行了探索与实践: 核心链路梳理,

全链路压测探索实践之路

℡╲_俬逩灬. 提交于 2021-01-12 18:05:31
去年双十一,为了应对零点的峰值流量冲击,我们在八月下旬启动了全链路压测第一次实践。由于从零开始,因此单独搭建了一套和生产1:1的环境,2个月的时间,光环境成本就高达几百万。 经过双十一,压测团队从中汲取了不少的经验和教训。双十一之后,在CTO的指导下和支持下,由基架和性能测试团队快速的投入了全链路压测平台的研发当中。 并且趁着核心系统重构,快速的接入落地,对后续的系统稳定性保障工作,迈出了坚定地一步。 流程导图 梳理阶段 1、系统服务梳理 全链路压测是一个很复杂的工程,其中涉及到多个服务。对整个业务系统进行梳理,确认流量传递的上下游和范围,是首先要做的事情。 2、核心链路梳理 什么是核心链路?现在来看,依然是一个艰难的选择。压测团队在梳理核心链路时,主要从如下几方面来评估: 1)是否是高频访问业务; 2)是否是强依赖的核心环节; 3)是否直接影响生产的交易业务; 4)参考生产实际的QPS指标为维度; 3、外部依赖梳理 确定核心链路后,要对其外部依赖进行进行梳理(比如第三方支付)。由于全链路压测在生产环境进行,因此需要对外部依赖进行mock处理,避免对生产服务造成影响。 4、中间件梳理 为了避免压测流量对生产造成影响,产生脏数据,需要对整个流量传递过程中涉及的中间件进行梳理,让压测流量透传落影子库。 压测流量模拟在请求网关接口时候在header中带上:x-infr-flowtype