首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

测试环境没有上游系统数据,测不了怎么办 ?(补充版)

读者提问 阿常回答 补充背景: 系统 A 与 系统 B 数据交互方式:系统 A 直连系统 B 数据库。 读者提问: 我们团队负责测试系统A,数据源来自兄弟团队负责测试系统B。...现在存在问题是: 系统B 生产环境和测试环境都是生产数据,我们在测试环境没有数据可测,只能上生产验证。 有什么解决办法吗?...阿常回答: 短期解决方案:在你们系统 A 测试环境同步一份系统 B 生产环境数据。 长期解决方案:搭建大数据平台,将所有上游系统数据都同步到你们大数据平台。...读者朋友阿朵问阿常上述问题:测试环境没有上游系统数据,怎么办 ?...为了校验不同规则,阿朵需要对源数据进行相关改造以覆盖所有的场景。但是源数据在系统 B,阿朵没有权限去改造系统 B 数据。

35810
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    线程补充

    ThreadLocal ThreadLocal让线程有自己局部变量,其中重要方法有:set(),get(),remove() ThreadLocal使用 public static void main...thread2.start(); } 线程1输出:我是线程1消息 线程2输出:null 线程1存内容,只有线程1能使用,其他线程拿不到 2....内存泄漏 ThreadLocalMap生命周期跟Thread一样长,如果没有手动删除对应key就会导致内存泄漏,而不是因为弱引用,想要避免内存泄露就要手动remove(),key是弱引用,值不是 4....线程死锁 互斥条件:线程使用资源不共享 请求与保持条件:一个线程有一个资源且等待获取一个被其他线程拥有的资源 非剥夺条件:分配资源不能从相应线程中被强制剥夺 循环等待条件:一个线程等待其他线程,其他线程又等待该线程...避免死锁: 固定加锁顺序(针对锁顺序死锁) 开放调用(针对对象之间协作造成死锁) 使用定时锁tryLock(),如果等待获取锁时间超时,则抛出异常而不是一直等待!

    35840

    论文研读-用于约束多目标优化新型双阶段双种群进化算法补充材料

    论文研读-用于约束多目标优化新型双阶段双种群进化算法补充材料 A Novel Dual-Stage Dual-Population Evolutionary Algorithm for Constrained...从表二和图4可以看出,尽管种群仍在探索新地区,平均点从第1代到第2代没有变化,估计理想点和估计最低点从第2代到第3代没有变化。...其余设置和运算符都没有改变。实验结果如表7所示,根据表7结果,我们有如下观察。 这六种算法都有自己擅长解决问题。...例如,auxPop比率较小版本适用于解决具有易于找到约束PFs(如LIRCMOP7和LIRCMOP8)问题。...原因可能是,在我们DD-CMOEA设计中,mainPop不仅用于寻找可行解决方案,还用于指导auxPop在开发阶段移动。然而,在变体中,在开发开始时,随机生成群体被用作主要POP。

    1.2K30

    关于 GitHub 若干补充

    在通读「史上最简单 GitHub 教程」系列博文之后,相信大家已经初步了解以及会使用 GitHub 进行常见操作啦!为了大家玩更好,在此给出 GitHub 若干补充。...Point 1:查看Repo数据 对于一个开源项目,我们可以清晰查看其commit记录情况(可以用图形方式表现出来),如果这个项目有多个分支以及有过合并分支记录,那么我们也可以查看其合并分支情况等...观察上图,显然我们可以发现其展示出来结果为star数大于1000开源项目。...我一直认为「程序员不应该只局限于某种语言使用者,而是应该成为语言参与者」,点点滴滴,皆是学问,看到了、记住了,便是收获、便是进步。...在「那些年,关于 Java 那些事儿」系列博文中,作者将和大家一起分享 Java 中那些值得我们了解事儿,我在这里,你在哪里?

    87880

    fusionUI表单组件补充

    前面文章我们介绍了fusionUI表单组件使用,这里有一些不补充,假如我们表单填写工程中,需要实时操作一些值,或者说是实时获取某些输入项值,该如何操作呢?...有如下集中方案,监听每个组件change事件,组件变动即可得到变化值。...还有一种方式,是fusion为我们提供,我们可以向Form表单传递一个参数,这个参数上篇文章没有提高,这里做个补充,什么参数呢?...属性,当表单中上传了图片组件时,chang执行,postdata变化,图片实时显示。...这样,当触发submit事件时,我们既可以从函数参数获取表单值,也可以从postdata获取值。 以上便是fusionUI上传组件补充,希望对你有所帮助。

    1K30

    linux基本指令补充

    888.txt 1111 2222 3333 333333 4444 444444 8888 sort排序规则:从左向右,每行第一个字母开始按ascii值进行比较,谁ascii值小就放在前面sort...手册对应内容也显示出来了 5. grep指令 1.作用 文本行过滤工具 将指定文本内容按照特定关键字来进行按行筛选 这里就要用到上一节提到1——1000带有编号hello wold 创建...creating: test/ [yzq@VM-8-8-centos my]$ tree test test 0 directories, 0 files 将test.zip压缩包剪切到my目录下,解包后发现没有数据存在...是因为 打包时候没有把里面的东西 打包并压缩 zip -r 将里面的内容也打包并压缩 zip -r 文件名.zip 文件名 6.6 9.9 dir game lesson5 mk...,再剪切到my目录中打开 发现有test内部内容啦 4. unzip -d 解包到指定目录下 需要注意是 虽然解包了 但原有位置.zip依旧存在 6.6 9.9 dir game

    85740

    iOS流布局UICollectionView系列二——UICollectionView代理方法

    ,也介绍了瀑布流布局过程与思路,这篇博客是上一篇补充,来讨论关于UICollectionView代理方法使用。...协议         这个协议主要用于collectionView相关数据处理,包含方法如下: 首先,有两个方法是我们必须实现: 设置每个分区Item个数 - (NSInteger)collectionView...collectionView willDisplaySupplementaryView:(UICollectionReusableView *)view forElementKind:(NSString *)elementKind...这个方法用于设置要展示菜单选项 - (BOOL)collectionView:(UICollectionView *)collectionView canPerformAction:(SEL)action...forItemAtIndexPath:(NSIndexPath *)indexPath withSender:(nullable id)sender; 这个方法用于实现点击菜单按钮后触发方法,通过测试

    2K20

    Flutter中Key详解(补充

    本文是对Flutter中Key详解补充,建议读本文前先读完Flutter中Key详解。...oldWidget.runtimeType == newWidget.runtimeType && oldWidget.key == newWidget.key; } 这个函数用于判断...如果没有设置key,那么他们key就都是null,此时就只需要判断新、旧WidgetruntimeType即可。...最终结果就是,虽然Widget被交换了位置,但是所有的Element还是按照原来位置被重新复用了,Element中存储State中数字也就被复用了;同时因为Element复用,当颜色发生变化时候...)一致Widget(newWidget),那么该Element还是会被保存下来复用,并重新建立Element和新widget位置对应关系;相反,如果没有找到一致,那么旧Element就会被销毁而重新创建

    61330

    关于迭代与递归补充

    递归 大家有没有想我Python呢?这几天挖粽子,挖到自闭,还好挖到一个,大家快去补天挖粽子吧!我知道这是废话。连Python都不会挖什么粽子。那不还赶快学起。...这是函数最后一章,下一章《字典》快点学习吧,开始我们笔记 等等,差点忘记了,为了赶时间,我只能舍弃无关图片,但又要保障大家质量。...这个故事永远也讲不完,因为没有递归结束条件。老师讲递归时总是说,递归很简单,一个递归结束条件,一个自己调用自己。如果递归没有结束条件,那么就会无限递归下去。...在编程时候,没有递归结束条件或者递归过深,一般会造成栈溢出。 网络 怎么样理解了吗?有的同学对迭代也不了解,这里也提一下 迭代算法是用计算机解决问题一种基本方法。...网络 这样解释懂了吧。 递归从原理上来讲就是不断地调用自身一个行为,迭代就是重复同一个操作,并从原有的值变成新值 例子 >>> def number(): ...

    48020

    关于Consul测试几点补充

    这是学习笔记第 2060 篇文章 最近在完善Consul相关一些高可用方向升级,目前是基于MHA+Consul方案,对于Consul方面算是做一些普及和推广,而对于MHA则是处于保守维护状态...当然前提是一些版本规划能够统一,而且是与时俱进,在此补充几点关于service_name测试一些建议。...比如我们搭建一套平行环境,端口配置不同,则可以和业务方进行对接测试,测试时候使用都是新端口,这样我们可以在线上真实模拟服务切换情况,而等待测试完成之后,则将环境重置,恢复原来端口和服务配置...4)在第3步基础之上,我们可以开启新服务MGR特性,然后重新构建新MGR secondary节点,这样我们就可以快速把MySQL服务从原本MHA切换到了MGR,前提是应用基础配置满足(比如表要有主键等...,这样一来应用一来就不是单纯域名服务,而是对这两类服务做了解耦,当然从这个层面来看,对于应用端逻辑改造会有一定代码量,但是收益也是巨大

    76020

    第十四章补充

    一些相关BIF issubclass(class,classinfo) 如果第一个参数(class)是第二个参数(classinfo一个子类),则返回TRUE否则则返回False 一个类被认为是其自身子类...classinfo可以是类对象组成元组,只要class是其中任何一个候选类子类,则返回TRUE 其他情况会抛出一个TypeError异常 >>> class A: ......TRUE 如果第一个参数不是对象,那么永远返回false classinfo可以是类对象或者类组成元组,只要object其中任何一个候选对象实例。...defaule(可选参数)值;如果没有则会抛出ArrtributeError异常 >>> hasattr(c1,'x') True >>> getattr(c1,'x') 0 >>> getattr(...AttributeError: 'C' object has no attribute 'y' >>> setattr(object,name,value) 与getattr()对应,setattr()可以设置指定属性,如果没有则会创建一个新属性并赋值

    43920

    Python补充01 序列方法

    下面的内建函数(built-in function)可用于序列(表,定值表,字符串): # s为一个序列 len(s)         返回: 序列中包含元素个数 min(s)         返回:..., 如果任一元素为True的话 下面的方法主要起查询功能,不改变序列本身, 可用于表和定值表: sum(s)         返回:序列中所有元素和 # x为元素值,i为下标(元素在序列中位置) s.count...(x)     返回: x在s中出现次数 s.index(x)     返回: x在s中第一次出现下标 由于定值表元素不可变更,下面方法只适用于表: # l为一个表, l2为另一个表 l.extend...下面是一些用于字符串方法。尽管字符串是定值表特殊一种,但字符串(string)类有一些方法是改变字符串。...width为一个整数,用于说明新生成字符串宽度。

    68180

    关于GSEA几点补充说明

    之前文章中介绍了GSEA软件使用和结果解读,但是有几点漏掉了,在本文中补充一下。首先是Leading Edge对应3个统计量,示例如下 ?...对于转录组数据分析而言,我们通常会采用DESeq2等软件进行差异分析,在差异分析结果中已经给出了计算好foldchange值,转录组差异分析是非常复杂,涉及到非常多算法,比如归一化方法选择,...GSEA软件默认输入是基因表达量矩阵和样本分组,然后内置进行归一化,进行差异分析,计算singal2noise等统计量,其本质就是自己进行了差异分析,计算出类似foldchange统计值,其归一化算法是否适用于我们输入表达量矩阵...,在计算基因foldchange值时有没有考虑生物学重复本身变化程度,这些都导致其计算出foldchange值并不能满足我们需求,更加有效做法是采用专用差异分析软件计算出foldchange...phenotype适用于生物学重复数目大于7个情况,而gene set试用于生物学重复小于7个情况。

    1.3K20
    领券