liam liam
2年前
开发改了接口,经常忘通知测试,有什么好的解决方案吗?
不知道大家有没有同感,做接口测试麻烦的不是测试本身,而是接口它会变,更麻烦的不是接口变了,而是它变了而你不知道。等到你测完,开发才悠悠跟你说——“那个接口我改了点东西,你再看一眼哈”。我那是看一眼的工作量吗?我得review一遍看影响到哪些接口,再根据影响到的接口,查看并修改对应的接口用例,调用链下游的用例,该改的改,改完再跑一次接口测试。——这意味着已经
K8sCat K8sCat
2年前
飞书 + Lua 实现企业级组织架构登录认证
飞书是字节跳动旗下一款企业级协同办公软件,本文将介绍如何基于飞书开放平台的身份验证能力,使用Lua实现企业级组织架构的登录认证网关。登录流程让我们首先看一下飞书第三方网站免登的整体流程:第一步:网页后端发现用户未登录,请求身份验证;第二步:用户登录后,开放平台生成登录预授权码,302跳转至重定向地址;第三步:网页后端调用获取登录用户身份校验登录预
lucien-ma lucien-ma
3年前
Java封装详解,通俗易懂
封装什么是封装?封装是指将类的属性隐藏在内部,外部不能直接访问和修改,必须通过类提供的方法来完成属性的访问和修改。封装的核心思想就是尽可能把属性都隐藏在内部,对外提供方法来访问,我们可以在这些方法中田间逻辑处理来实现过滤,以屏蔽错误的数据的赋值。封装的步骤1.修改属性的访问权限,使得外部不能直接访问2.提供外部可以直接调用的方法3.在方法中加入属性
Wesley13 Wesley13
2年前
C++中初始化的顺序问题
C的初始化顺序非常重要,牢记才能不出常识性的错误。其初始化顺序为:1类中的static成员是最先初始化的,这个是先于main函数的执行的,但是必须注意,如果这个成员只是在类中声明,而没有在类外边进行定义的话,那么这个是不会开辟内存的,是不会初始化的。2调用基类的构造函数。但是基类分为两种顺序,特别注意。一种是虚继承的基类;另一种是普通继承
Wesley13 Wesley13
2年前
vivo 互联网业务就近路由技术实战
一、问题背景在vivo互联网业务高速发展的同时,支撑的服务实例规模也越来越大,然而单个机房能承载的机器容量是有限的,于是同城多机房甚至多地域部署就成为了业务在实际部署过程中不得不面临的场景。一般情况下,同一个机房内部的网络调用平均时延在0.1ms左右,同城多个机房之间的平均时延在1ms左右,跨地域机房之间的网络时延则更大,例如北京到上海
Python进阶者 Python进阶者
2年前
手把手教你搭建集中式版本控制系统SVN服务器
大家好,我是IT共享者,人称皮皮。一、前言我们前段日子学过了分布式版本控制系统git,相信大家都领略到了它的强大,今天我们来说说集中式版本控制系统svn,跟分布式版本控制系统不同的是,集中式版本控制系统旨在用于多个人协同开发一个项目,而且它的版本控制系统都是存放在中央服务器上的,如果你需要使用就得从中央服务器上调用,它不像git,每个用户都可以有自己的版本
Wesley13 Wesley13
2年前
Java设计模式:Singleton(单例)模式
概念定义Singleton(单例)模式是指在程序运行期间,某些类只实例化一次,创建一个全局唯一对象。因此,单例类只能有一个实例,且必须自己创建自己的这个唯一实例,并对外提供访问该实例的方式。单例模式主要是为了避免创建多个实例造成的资源浪费,以及多个实例多次调用容易导致结果出现不一致等问题。例如,一个系统只能有一个窗口管理器或文件系统,一个程
Wesley13 Wesley13
2年前
C++多态性与虚函数
  派生一个类的原因并非总是为了继承或是添加新的成员,有时是为了重新定义基类的成员,使得基类成员“获得新生”。面向对象的程序设计真正的力量不仅仅是继承,而且还在于允许派生类对象像基类对象一样处理,其核心机制就是多态和动态联编。(一)多态性  多态是指同样的消息被不同的对象接收时导致不同的行为。所谓消息是指对类成员函数的调用,不同的行为是指的不同的实现
Stella981 Stella981
2年前
Linux的文件描述符
(1).文件描述符的定义  文件描述符是内核为了高效管理已被打开的文件所创建的索引,用于指向被打开的文件,所有执行I/O操作的系统调用都通过文件描述符;文件描述符是一个简单的非负整数,用以表明每个被进程打开的文件。程序刚刚启动时,第一个打开的文件是0,第二个是1,以此类推。也可以理解为文件的身份ID。  用户通过操作系统处理信息的过程中,使用的交互设
Stella981 Stella981
2年前
MariaDB自动分区维护
最近遇到一个问题,就是如何自动删除6个月之前的旧的分区。就MariaDB而言,并没有类似机制,可以让我们开箱即用,去完成这件事情。所以我们需要换一种思路,或许问题就可以很简单的被解决。我们可以创建一个存储过程和一个事件,然后按照预定的时间表来调用这个存储过程。实际上,我们还可以进一步创建一个存储过程,让该过程自动添加新的分区。在本篇文章中,我们将展示如何