1. 发现问题     1. 查询慢access日志,发现偶尔有接口时延超过2s,发送概率1%左右 2. 排查     1. 写单元测试,多次测试后,不能重现问题     2. 接口代码里加日志,每隔一行代码加一次日志,等待重现     3. 不断往上游接口加日志后,发现耗时在获取榜单top10的接口     4. top10接口是从数据库获取top50的用户,然后通过多协程到redis里面获取用户信息     5. 发现从数据库获取数据时,没索引,加上索引后,问题依然存在     6. 再次加…
项目中有些页面时延不稳定,需要看每次接口调用时延,怎么看,有两种方法:一种是直接去catalina.out日志中看,一种是直接去localhost_access_log日志中看,第一种需要在代码中实现时延的计算,第二种方法只需在server.xml中加一个简单的配置.这里只说第二种: 1.打开tomcat下conf/server.xml,先看Host节点配置: <Host name="localhost" appBase="webapps" unpackWAR…
先明确几个概念: Class文件是一组以8字节为基础单位的二进制流 各个数据项目严格按照顺序紧凑排列在class文件中 中间没有任何分隔符,这使得class文件中存储的内容几乎是全部程序运行的程序 Java虚拟机规范规定,Class文件格式采用类似C语言结构体的伪结构来存储数据,这种结构只有两种数据类型:无符号数和表 接口索引计数器(interfaces_count),占2字节 参考第一句话:class文件是一组8字节为基础的二进制流,interface_count占2字节.也就是16.0000…
通过上篇文章 全栈项目|小书架|微信小程序-首页水平轮播实现 我们实现了前端(小程序)效果图的展示,这篇文章来介绍服务器端的实现. 书籍详情分析 书籍详情页面如下: 从上图可以分析出详情页面大概有以下几个接口: 获取书籍详情信息 获取用户对书籍的喜欢状态接口 喜欢/不喜欢书籍接口 获取评论列表 写评论接口 以上的接口,有的数据可以直接从已存在的数据表中去获取,比如:书籍详情信息,而其他新接口就需要创建对应的model,然后根据model创建相应的数据表. 比如 用户对书籍的喜欢操作,可以创建li…
近期一段时间,在开发Android应用程序的过程中,发现Android中一个类实现的接口数超过七个的时候,常常会出现超过第7个之后的接口不能正常使用.…
一.提出问题 由于公司是做医疗级智能可穿戴设备的,所以数据(二进制数据)的存储方面有点特殊,数据没有存储于数据库里面,而是存储于磁盘上.可能有同学质疑,mysql的Blob类型也可以存储二进制数据啊,是啊,的确可以.但是我们的数据太大了,用户可能连续测量30-40个小时,这时这个数据量有50M左右,而一般的接口传输的数据量也就5k左右,大数据在mysql里面的传输也要花大量的传输时间啊,而且数据量一大,就可能在传输中出现问题,比如传输中断.这种大流量接口对服务器.网络的冲击等等.所以就把这个数据…
1:创建模型 2:定义关联模型 <?php namespace app\common\model; use think\Model; use traits\model\SoftDelete; class TypeModel extends Model { use SoftDelete; //链接pyg商品类型表 protected $table = 'pyg_type';// 进行和规格模型关联,1对多 public function spec() { return $this->hasMan…
导读:近期有一个业务部门的同学反馈说他负责的C工程在小概率情况下SpringMvc会返回415,通过输出的日志可以确定是SpringMvc找不到content-type这个头了,具体为什么找不到了呢?请听我娓娓道来. 关键词:http 415,SpringMvc,nginx,lua,wireshark,jmeter 问题现象: 近期接到一个同学的反馈说,他负责的C工程在小概率的情况下SpringMvc会返回415,通过输出的日志发现请求头里面并没有content-type了,所以才导致Sprin…
转载自南风_real博客园:http://www.cnblogs.com/jaychang/p/5881525.html 但是最近在查阅相关资料时,发现基本都是重复一篇文章Jmeter使用笔记之html报告扩展(一),而且有很多看不明白的地方,于是根据自己需求,在报告中修改了一些,现在整理分享出来. 优化后效果图: 1. 邮件发送html报告有中文时,显示乱码: 修改encoding为"GBK" <xsl:output method="html" indent…
一.优化内容 1.Summary中只标红Failures数 2.Pages页面按Average Time倒序排序 3.Average Time超过2s标黄显示 4.Pagelist 模块中针对错误和超长时间接口标色显示 5.添加90% Line和QPS 6.Failure Detail模块显示Response Data 效果: 二.具体实现      1. Summary中的只标红Failures数: 屏蔽Summary中class属性 <!-- <xsl:attribute name=&qu…
sentinel即哨兵,相比hystrix断路器而言,它的功能更丰富.hystrix仅支持熔断,当服务消费方调用提供方发现异常后,进入熔断:sentinel不仅支持异常熔断,也支持响应超时熔断,另外还支持限流,以及针对网关的熔断和限流.此外,它还有过载处理.监控控制台(Sentinel Dashboard)等.hystrix作为组件集成到微服务中,sentinel也是如此,但它的控制台需要独立部署. 先下载Sentinel Dashboard(下载地址https://github.com/ali…
通用礼品卡接口文档,集于各商家(KFC.必胜客.GAP等)实体卡和会员卡的API虚拟卡,可用于线上/下消费.移动支付. 1.API 1.1商品列表 接口地址:http://v.juhe.cn/giftCard/products 支持格式:json/xml 请求方式:http get/post 请求示例:http://v.juhe.cn/giftCard/products 接口备注:查询可购买的礼品卡的列表,及每个礼品卡对应的productId.如需了解各礼品卡的使用,请点击 我 调用样例及调试工…
从第五回开始到第七回,咱们用 ATL 写了一个简单的 COM 组件,之所以说简单,是因为在组件中,只实现了一个自定义(custom)的接口 IFun.当然如果想偷懒的话,我们可以把 200 个函数都加到这一个接口中, 果真如此的话,恐怕就没有人喜欢使用我们这个组件了.一个组件既然可以提供多个接口,那么我们在设计的时候,就应该按照函数的功能进行分类,把不同功能分类的函数用多个接口表现出来.这样可以有如下的一些好处: 1.一个接口中的函数个数有限.功能集中,使用者容易学习.记忆和调用.一个接口到底提…
C# 基础接口篇 一.多态复习 使用个new来实现,使用virtual与override    -->new隐藏父类方法 根据当前类型,电泳对应的方法(成员)    -->override重写 无论什么情况,都是执行新的方法(成员) 继承是实现多态的一个前提,没有继承多态是不能实现的 父类与子类实现多态 抽象类与子类实现 抽象类不能实例化 抽象类中的抽象方法没有方法体 抽象类的成员有哪些   ->包含非抽象成员   ->不能实例化   ->子类必须实现父类的 抽象方法,除非子…
1.记住密码不是真的让你记住密码,这里仅仅指的是一种自动登录的手段.不管在任何地方,明文存储的密码都是安全隐患,是必须尽量避免的.你可以采用某种方式对用户名.密码以及时间戳(重要)进行签名,再次登录时使用签名后的数据进行登录. 2.客户端要包含超时机制,见过不止一次的服务端设计是通过客户端发送的userid来区分用户的.对此我真的已经无力吐槽了.最简单的办法是用session来记录用户状态.当然,考虑到客户端的特性,用户可能好几天都没有关闭一次,必须配合自动登录机制来保证客户端的在线. 3.接口…
EcStore系统已内置了丰富的API接口供外部系统调用(接口列表见文章最下面),外部系统具体如何调用这些API呢? 例如有一个PHP的论坛需要调用ecstore系统内一个商品的详情,则可以使用b2c.goods.get_goods_intro这个api接口 API调用方式:POSTAPI接口的地址: http://域名/index.php/apiAPI调用参数:系统级参数:'to_api_v' => '2.0', API版本号'direct' => 'true', 直接调用方式(主要用于测试…
简介 本篇还是回归到我们最初始的话题,想必大家都忘记了,没关系看这里:传送门  没错最初的话题就是登录,由于博客园的登录机制改变了,本篇以我找到的开源免费的登录API为案例,结合 unittest 框架写 2 个用例.同样我们先来看一下接口文档. 接口文档 登录接口 请求方式:POST 请求地址:https://api.apiopen.top/developerLogin Query参数名 类型 必需 描述 示例 e.g. name string 是 用户名 peakchao passwd st…
这次刚好用到,亲测可用.参照:https://www.cnblogs.com/wuxun1997/p/9068398.html 项目中有些页面时延不稳定,需要看每次接口调用时延,怎么看,有两种方法:一种是直接去catalina.out日志中看,一种是直接去localhost_access_log日志中看,第一种需要在代码中实现时延的计算,第二种方法只需在server.xml中加一个简单的配置.这里只说第二种: 1.打开tomcat下conf/server.xml,先看Host节点配置: <Hos…
时延是语音通信中的一个重要指标,当端到端(end2end)的时延(即one-way-delay,单向时延)低于150Ms时人感觉不到,当端到端的时延超过150Ms且小于450Ms时人能感受到但能忍受不影响通话交流,当端到端的时延大于1000Ms时严重影响通话交流,用户体验很差.同时时延也是语音方案过认证的必选项,超过了规定值这个方案是过不了认证的.今天我们就讲讲时延是怎么产生的以及怎么样在通信终端上减小时延. 1,时延产生 下图是语音从采集到播放的传输过程. 从上图看出,传输过程包括三部分,一是…
如何简单实现接口自动化测试(基于 python) 2017年09月05日 11:52:25 阅读数:9904 GitChat 作者:饿了么技术社区 原文:如何简单实现接口自动化测试(基于 python) 关注微信公众号:GitChat 技术杂谈 ,这里一本正经的讲技术 一.简介 本文从一个简单的登录接口测试入手,一步步调整优化接口调用姿势,然后简单讨论了一下接口测试框架的要点,最后介绍了一下我们目前正在使用的接口测试框架pithy.期望读者可以通过本文对接口自动化测试有一个大致的了解. 二.引言…
[作者] 张延俊:携程技术保障中心资深DBA,对数据库架构和疑难问题分析排查有浓厚的兴趣. 寿向晨:携程技术保障中心高级DBA,主要负责携程Redis及DB的运维工作,在自动化运维,流程化及监控排障等方面有较多的实践经验,喜欢深入分析问题,提高团队运维效率. [问题描述]  生产环境有一个Redis会偶尔发生连接失败的报错,报错的时间点.客户端IP并没有特别明显的规律,过一会儿,报错会自动恢复.  以下是客户端报错信息: CRedis.Client.RExceptions.ExcuteComma…
原文:http://vckbase.com/index.php/wv/1219.html 一.前言 从第五回开始到第七回,咱们用 ATL 写了一个简单的 COM 组件,之所以说简单,是因为在组件中,只实现了一个自定义(custom)的接口 IFun.当然如果想偷懒的话,我们可以把 200 个函数都加到这一个接口中, 果真如此的话,恐怕就没有人喜欢使用我们这个组件了.一个组件既然可以提供多个接口,那么我们在设计的时候,就应该按照函数的功能进行分类,把不同功能分类的函数用多个接口表现出来.这样可以有…
接口文档的特点 接口文档,顾名思义就是对接口说明的文档.好的接口文档包含了对接口URL,参数以及输出内容的说明,我们参照接口文档就能编写出一个个的测试用例.而且接口文档详细的话,测试用例编写简单,不会遗漏. 如果一个接口文档没有写清楚,你从文档中分不出哪些儿参数是必需的,哪些儿是非必须的,而且没有参数的取值说明,返回值的结构等信息的话,测试人员是无法编写相应的测试用例的.但是由于开发人员不愿意写文档,所以很多接口文档相对来说比较简单,模糊不清,这对我们做接口自动化测试是很大的阻碍. 7.2 接口…
第一章 课程介绍和学习路线 1.微服务架构SpringCloud课程介绍 简介:课程介绍和课程大纲讲解,讲课风格和重点内容理解技巧 2.技术选型和学后水平 简介:课程所需基础和技术选型讲解,学完课程可以到达怎样的程度, 1.IDEA JDK8 Maven SpringBoot基础 Linux 2.理解掌握并开发SpringCloud里面主流架构和组件的基础使用,还有部分源码原理的理解 3.掌握学习的技巧和解决问题的思路 第二章 架构演进和分布式系统基础知识 1.传统架构演进到分布式架构 简介:讲…
上文中提到 Laravel5.5 使用 laravel-cors 实现 Laravel 的跨域配置 用插件来跨域 此方法能解决一部分api 请求问题 但我碰到的是 接口 请求size 超过10k,导致 跨域中间件 无法执行到 找了下代码,没有找到哪个地方限制 大小的 配置 最终解决办法,暴力解决: 直接在api接口的json方法里,输出几个header参数,如下: header("Content-type:text/json"); //跨域 header('Access-Control…
一.详情页面路由跳转 应用 Vue Router 编程式导航通过 this.$router.push() 来实现路由跳转. 1.绑定查看详情事件 修改 src/components/Course/Course.vue 文件,给课程 div 绑定查看详情事件. <div class="courseList"> <div class="detail" v-for="(course, index) in courseDetail" :…
1.场景描述 比如说我们要做一款APP,需要通过api接口给app提供数据.假设我们是做商城,比如我们卖书的.我们可以想象下这个APP大概有哪些内容: 1)首页:banner区域(可以是一些热门书籍的图片做推广).本周热卖书籍区域.本月好评书籍区域.活动打折的书籍区域... 2)排行榜:比如第一季度热销榜.新书版... 3)书单:管理后台运营添加的书单,比如<程序员从入门到放弃>系列书单... 4)用户相关的:比如用户个人信息设置.订单管理.消息管理.收藏的书籍... 数据是保存在数据库中,考…
项目中有些页面时延不稳定,需要看每次接口调用时延,怎么看,有两种方法:一种是直接去catalina.out日志中看,一种是直接去localhost_access_log日志中看,第一种需要在代码中实现时延的计算,第二种方法只需在server.xml中加一个简单的配置.这里只说第二种: 1.打开tomcat下conf/server.xml,先看Host节点配置: <Host name="localhost" appBase="webapps" unpackWAR…
目录 identityserver4源码解析_1_项目结构 identityserver4源码解析_2_元数据接口 identityserver4源码解析_3_认证接口 identityserver4源码解析_4_令牌发放接口 identityserver4源码解析_5_查询用户信息接口 identityserver4源码解析_6_结束会话接口 identityserver4源码解析_7_查询令牌信息接口 identityserver4源码解析_8_撤销令牌接口 协议 这一系列我们都采用这样的方…
在接口自动化测试中,经常会遇到的一种场景就是参数的场景,比如在用户列表中获取所有的用户列表,然后获取到某一个用户的ID,查看该用户的详细信息.首先在这里理清思路,它的流程是,首先获取到数据,然后在Jmeter中,通过后置处理器中的jp@gc - JSON Path Extractor把响应数据中的需要处理的数据单独的取出来,定义成一个变量,然后在下个接口调用的时候,把该变量的值传进去,就能够解决动态参数传递这样的一个问题.这里以网易云平台为案例,在这里实现的是在网易云平台搜索“无涯课堂”,搜索后…