精华内容
下载资源
问答
  • 为实时动态监测瓦斯抽采钻孔深部稳定性,自主研发了瓦斯抽采钻孔稳定性动态监测装置,其主要由主体承载机构、高灵敏度应力应变片、快速连接杆和精密应力应变测量仪组成。该装置可采集不同角度地应力值,采集钻孔变形...
  • 本周我们的讨论话题是关于测试质量管理: ...我们的最终目标是保障产品质量,提升产品质量的稳定性。因此,在你的工作中有统计哪些质量数据呢?是怎么利用这些质量数据的呢? 大家讨论分享的结果 本周只有一...

    本周我们的讨论话题是关于测试质量管理:

    讨论话题

    • 问题:产品研发流程中有哪些质量数据?如何利用这些质量数据?
    • 问题描述:在产品研发流程中,其实不仅仅有我们提的bug数量这一质量数据。还有很多可以衡量产品质量的数据纬度,比如:产品需求变更次数。
      我们的最终目标是保障产品质量,提升产品质量的稳定性。因此,在你的工作中有统计哪些质量数据呢?是怎么利用这些质量数据的呢?

    大家讨论分享的结果

    本周只有一位同学参与讨论,不过我会详细阐明下我的观点。

    某公司测试工程师—吕俊杰

    其实个人不太建议单纯的使用bug数量或者严重bug数量作为质量好坏的依据甚至开发人员考核。如果真的要看,还是有些重要的指标的,就是bug reopen的次数,冒烟测试的通过率,bug修复的时间效率,上线后反馈bug,bug燃尽图(波峰时间,收敛时间,拐点等)。项目有大小,也要轻重缓急,项目和项目之间没什么好比较的,还是需要看在整个项目过程中,从立项到项目上线期间,这个流程是否合理,是否完成了每个阶段的里程碑。

    不过他的观点主要还是围绕着bug,其实我觉得应该有更多的纬度。

    我的观点

    我觉得思考这个问题的出发点是产品质量,所有可能影响产品质量或者稳定性的因素都可以考虑进去。我觉得大致可以从以下几个方面考虑:

    • 产品需求评审通过率:以产品feature为单位划分,计算每次需求评审通过率。从项目周期角度来看,产品需求评审不通过,会影响产品的正常研发效率。
    • 产品需求变更次数:所有的开发和测试同学,最痛恨的应该就是需求改改改了吧?!每次需求变更,都需要重新评估开发和测试时间,会影响产品正常上线。统计这个数据,也能一定程度给产品经理思想压力,在设计需求时,做更多的考虑。
    • 开发自测通过率:开发研发完成提测时,一定要统计它们自测通过情况。我们可以将测试用例中P0/P1级别的用例提供给开发,让他们进行自测。这个数据很重要,可以直接衡量开发的研发质量和工作态度。
    • 【可选】开发单元测试覆盖率/通过率:如果你的公司,已经推行了单元测试,那么可以在提测打包时,获取单元测试的质量数据。当然这有个前提,开发的单元测试场景得足够充分,建议测试同学能查看开发的单元测试代码。
    • 静态代码检测数据:这个实现成本挺低的,可以在Jenkins里做个持续集成项目,当开发提测时(一般是合代码到qa分支),自动触发进行代码扫描,将常见的问题(比如:空指针)提前暴漏出来。衡量指标可以是:不能有P0、P1级别的问题,P2、P3级别的问题不能超过多少个。
    • bug整体数据:我个人觉得,bug给出一个整体的数据即可,比如:总共有多少个bug、遗留了多少个bug、reopen bug的数量、P0级别bug数量、P1级别bug数量。假如想统计每个开发同学的bug数据,我建议统计两个指标:P0级别bug数量(可以反映研发质量)、reopen bug数量(可以反映研发质量和工作态度)。
    • 线上bug数量:产品上线后,要统计用户反馈的问题,是否有P0级别的致命问题出现。强烈建议组织产品质量复盘会,针对出现的问题,总结优化工作流程。
    • 线上产品质量数据:这主要依赖各种监控平台,比如移动端产品一般有crash率统计工具bugly、服务端产品有质量监控报警平台或者接口自动化监控等,这些数据可以作为产品质量的一个衡量纬度。

    总结

    上面列了一些质量数据可以参考的点,可能不全。大家如果有其他的建议,可以跟我联系,我再补充。

    总之,我建议大家在平时的工作中,要善于利用各种质量数据,一来可以为我们的软件测试工作服务;二来这个数据一定程度可以提升测试在团队中的地位。

    展开全文
  • B+树的磁盘读写代价更低:B+树的内部节点并没有指向关键字具体信息的指针,因此其内部节点相对B树更小,如果把所有同一内部节点的关键字存放在同一盘块中,那么盘块所能容纳的关键字数量也越多,一次读入内存的...

    B+树如何提高检索效率

    主要是对比B树和B+树的区别

    • B+树的磁盘读写代价更低:B+树的内部节点并没有指向关键字具体信息的指针,因此其内部节点相对B树更小,如果把所有同一内部节点的关键字存放在同一盘块中,那么盘块所能容纳的关键字数量也越多,一次性读入内存的需要查找的关键字也就越多,相对IO读写次数就降低了。

    • B+树的查询效率更加稳定:由于非终结点并不是最终指向文件内容的结点,而只是叶子结点中关键字的索引。所以任何关键字的查找必须走一条从根结点到叶子结点的路。所有关键字查询的路径长度相同,导致每一个数据的查询效率相当。

    • 由于B+树的数据都存储在叶子结点中,分支结点均为索引,方便扫库,只需要扫一遍叶子结点即可,但是B树因为其分支结点同样存储着数据,我们要找到具体的数据,需要进行一次中序遍历按序来扫,所以B+树更加适合在区间查询的情况,所以通常B+树用于数据库索引。

    • B树在提高了IO性能的同时并没有解决元素遍历的效率低下的问题,正是为了解决这个问题,B+树应用而生。B+树只需要去遍历叶子节点就可以实现整棵树的遍历。而且在数据库中基于范围的查询是非常频繁的,而B树不支持这样的操作或者说效率太低。

    进程和线程的区别?

     

    展开全文
  • 旋转导向钻井工具稳定平台研发过程中,有大量参数调试和数据回放,通常停机后再 利用仿真工具进行数据存取,实时和通用受到限制。为此,设计了旋转导向钻井工具稳定平 台试验数据无线通信系统。该系统既可保证...
  • 引言钉钉业务体量已达亿级,钉钉技术的服务端、客户端等的数据模型和接口已达到极高的复杂度。面对多样的客户端和技术栈IO环境,我们采用了IDL(interface description language)来描述多端数据通信的约定,以收敛...

    66000b1ec6be753e162967ce845a5344.png

    引言

    钉钉业务体量已达亿级,钉钉技术的服务端、客户端等的数据模型和接口已达到极高的复杂度。面对多样的客户端和技术栈IO环境,我们采用了IDL(interface description language)来描述多端数据通信的约定,以收敛业务复杂度带来的维护风险。

    对于前端来说,容器环境从mobile、web到智能硬件IOT、桌面端CEF容器;上下游数据源也包罗了Java、C++、Node.js等宿主语言环境。

    8cab617808d097f5926b9ae1f92b0982.png

    在多人协作、前端工程化的大背景下,我们开始大量使用Typescript来增强代码的健壮性、可维护性。本文将分享笔者是如何设计自动化代码工具,以便加速typescript在团队的落地。

    前端代码演进至Typescript

    相信大部分前端掘友们都有体感,业务迭代伴随的数据接口、模型改动,都需要前端同学手动检查业务代码,一旦改动不彻底、单元测试没有覆盖分支流程,线上稳定性就极容易收到威胁,作为开发的体感也是极差。

    在2017年,借助钉钉桌面客户端从node-webkit演进至native CEF架构的契机,我们引入Typescript作为开发语言,并逐步使用起ts的技术生态,如rxjs、redux-observable等。

    从2017年到2018年,钉钉桌面客户端CEF容器中运行的前端代码就已经高达23万行,维护者达到20位。

    Typescript在钉钉桌面端的落地让推广工作得到了认可,比如钉钉考勤在重构过程中,逐步从js迁移到ts,开放平台的售卖系统直接就用ts编写、多个内部npm模块编写的语言选型优先采用ts。

    But , 原本以为ts可以在团队顺利推广,然而现实却并非如此。很多新业务在选型时还是选择了js,是工程化成本太高还是ts太难?

    我们了解到很多新同学、实习生加入团队就能很快的上手老的ts项目,断言ts语言不是问题源头。

    在和业务开发同学沟通后,我们发现技术栈从js迁移到ts的过程中,数据接口定义的编写、ts脚手架的重新熟悉是主要的障碍源。

    工程化和研发效率的问题构成了较高的ts研发成本,成本就意味着收益降低。

    确实,要想享受ts的类型检查类型推导编译期代码检查等便利,前端项目就必须提供数据模型和接口的ts定义,我们希望找到自动化生成ts代码的方案来解决这个问题。

    Typescript落地之IDL自动化生成代码

    在开始介绍我们的IDL自动化代码生成方案之前,我先简单介绍下钉钉的IDL —— 强有力的多端数据接口描述语言。

    背景知识之 钉钉IDL

    钉钉的接口描述(IDL)文件,由model和interface组成,model用来描述数据模型定义、interface描述接口信息。举个例子

    /** * model.idl * 网关报错返回对象 */module test;struct GatewayErrorModel {    // 是否被降级。1是,0否    1: int isDegrading;    // 安全网关域名    2: string domain;};
    /** * interface.idl */module test;include test.GatewayErrorModel;interface GatewayIService {    /**    * 上报网关访问异常错误    * @param appId  ID    * @param host   域名    * @param errMsg 错误信息    */    GatewayErrorModel testRpc(string appId,string corpId,string domain,string errCode,string errMsg);};

    以上两个文件interface.idl和model.idl同属一个模块, 模块名由module关键字指定即test,模型和接口的依赖关系通过include描述,数据结构通过struct描述。model和interface的idl文件,组合构成该模块对外暴露的数据接口。在钉钉,IDL描述了各端的数据IO信息,不同代码语言如Java、C++的rpc和推送模型的自动化生成基于IDL。IDL为各端的代码编写提供了一致性保障,让所有的数据和请求都有源可溯。

    简单介绍完IDL后,我们回归上面的问题:如何降低ts对业务开发的成本。

    想必大部分读者已经猜到了,我们的方案便是编写工具将IDL转译成Typescript接口和模型定义,简图如下。

    08f9832726fdb866e7887367bf602a8d.png

    前端代码自动化工具之 dingtalk-idl-ts

    从信息熵的角度来说,IDL既然能覆盖c++/java等语言的数据约定,它包含的信息肯定足够覆盖前端Typescript的定义。

    下面用一幅图,简示下dingtalk-idl-ts的实现细节流程。

    首先从IDL做tokenizer到AST,再由AST做fs.writeFile生成初步的ts文件,随之根据业务上层传入的语言模块要求(如es、cjs)生成不同的compilerOptions以供tsc命令调用,最后调用tsc命令行自动生成rpc代码及模块定义。有兴趣的同学可以私信了解每个环节的代码实现。

    775fe90fd0823b4a77128f319581bce7.png

    有了自动化生成ts的工具还不够?我们要将稳定性的要求注入生成的ts产物

    为了让数据模型生成的置信度最高,在自动化生成代码的同时,dingtalk-idl-ts工 具对数据模型的property做了optional的处理。因此任何一行业务层的代码如果对模型的property selector没有做保护,都无法通过编译。

    57e97054899f8140a1153583c8d017a5.png

    这样的设计模式给业务代码带来了一定的冗余度,但为业务的正确运行和错误溯源做了底线的保护。

    自动化代码的生成产物,大致如下:

    ce9672f1f253a2ebff064266c7ae66db.png

    通过dingtalk-idl-ts提供的命令行工具,业务开发只需要一个命令行,即可按需生成项目所需要的ts数据接口定义,从易出错的手动编写ts代码中解放出来。

    现在该工具已在钉钉的桌面端、小程序、H5应用中落地使用,ts的进一步推广也随着基础设施的完善逐渐落地。

    写在后面

    以上大致就是我们在落地Typescript的一些方案和实践,非常欢迎有更好想法的同学提出意见和建议。希望读完本文你有一定的收获。

    78cac728d71989ab030f297c5d14a894.png

    展开全文
  • 引言钉钉业务体量已达亿级,钉钉技术的服务端、客户端等的数据模型和接口已达到极高的复杂度。面对多样的客户端和技术栈IO环境,我们采用了IDL(interface description language)来描述多端数据通信的约定,以收敛...

    1f605f29b1912220d51b78f5a6c4a7d0.png

    引言

    钉钉业务体量已达亿级,钉钉技术的服务端、客户端等的数据模型和接口已达到极高的复杂度。面对多样的客户端和技术栈IO环境,我们采用了IDL(interface description language)来描述多端数据通信的约定,以收敛业务复杂度带来的维护风险。

    对于前端来说,容器环境从mobile、web到智能硬件IOT、桌面端CEF容器;上下游数据源也包罗了Java、C++、Node.js等宿主语言环境。

    d1ae0f90faadedac3f2b04b6557e50aa.png

    在多人协作、前端工程化的大背景下,我们开始大量使用Typescript来增强代码的健壮性、可维护性。本文将分享笔者是如何设计自动化代码工具,以便加速typescript在团队的落地。

    前端代码演进至Typescript

    相信大部分前端掘友们都有体感,业务迭代伴随的数据接口、模型改动,都需要前端同学手动检查业务代码,一旦改动不彻底、单元测试没有覆盖分支流程,线上稳定性就极容易收到威胁,作为开发的体感也是极差。

    在2017年,借助钉钉桌面客户端从node-webkit演进至native CEF架构的契机,我们引入Typescript作为开发语言,并逐步使用起ts的技术生态,如rxjs、redux-observable等。

    从2017年到2018年,钉钉桌面客户端CEF容器中运行的前端代码就已经高达23万行,维护者达到20位。

    Typescript在钉钉桌面端的落地让推广工作得到了认可,比如钉钉考勤在重构过程中,逐步从js迁移到ts,开放平台的售卖系统直接就用ts编写、多个内部npm模块编写的语言选型优先采用ts。

    But , 原本以为ts可以在团队顺利推广,然而现实却并非如此。很多新业务在选型时还是选择了js,是工程化成本太高还是ts太难?

    我们了解到很多新同学、实习生加入团队就能很快的上手老的ts项目,断言ts语言不是问题源头。

    在和业务开发同学沟通后,我们发现技术栈从js迁移到ts的过程中,数据接口定义的编写、ts脚手架的重新熟悉是主要的障碍源。

    工程化和研发效率的问题构成了较高的ts研发成本,成本就意味着收益降低。

    确实,要想享受ts的类型检查类型推导编译期代码检查等便利,前端项目就必须提供数据模型和接口的ts定义,我们希望找到自动化生成ts代码的方案来解决这个问题。

    Typescript落地之IDL自动化生成代码

    在开始介绍我们的IDL自动化代码生成方案之前,我先简单介绍下钉钉的IDL —— 强有力的多端数据接口描述语言。

    背景知识之 钉钉IDL

    钉钉的接口描述(IDL)文件,由model和interface组成,model用来描述数据模型定义、interface描述接口信息。举个例子

    /** * model.idl * 网关报错返回对象 */module test;struct GatewayErrorModel {    // 是否被降级。1是,0否    1: int isDegrading;    // 安全网关域名    2: string domain;};
    /** * interface.idl */module test;include test.GatewayErrorModel;interface GatewayIService {    /**    * 上报网关访问异常错误    * @param appId  ID    * @param host   域名    * @param errMsg 错误信息    */    GatewayErrorModel testRpc(string appId,string corpId,string domain,string errCode,string errMsg);};

    以上两个文件interface.idl和model.idl同属一个模块, 模块名由module关键字指定即test,模型和接口的依赖关系通过include描述,数据结构通过struct描述。model和interface的idl文件,组合构成该模块对外暴露的数据接口。在钉钉,IDL描述了各端的数据IO信息,不同代码语言如Java、C++的rpc和推送模型的自动化生成基于IDL。IDL为各端的代码编写提供了一致性保障,让所有的数据和请求都有源可溯。

    简单介绍完IDL后,我们回归上面的问题:如何降低ts对业务开发的成本。

    想必大部分读者已经猜到了,我们的方案便是编写工具将IDL转译成Typescript接口和模型定义,简图如下。

    34b7a9c89f67a5ba3cad49da38cfe3d7.png

    前端代码自动化工具之 dingtalk-idl-ts

    从信息熵的角度来说,IDL既然能覆盖c++/java等语言的数据约定,它包含的信息肯定足够覆盖前端Typescript的定义。

    下面用一幅图,简示下dingtalk-idl-ts的实现细节流程。

    首先从IDL做tokenizer到AST,再由AST做fs.writeFile生成初步的ts文件,随之根据业务上层传入的语言模块要求(如es、cjs)生成不同的compilerOptions以供tsc命令调用,最后调用tsc命令行自动生成rpc代码及模块定义。有兴趣的同学可以私信了解每个环节的代码实现。

    73b716319b6be3266daa1053210e2ccb.png

    有了自动化生成ts的工具还不够?我们要将稳定性的要求注入生成的ts产物

    为了让数据模型生成的置信度最高,在自动化生成代码的同时,dingtalk-idl-ts工 具对数据模型的property做了optional的处理。因此任何一行业务层的代码如果对模型的property selector没有做保护,都无法通过编译。

    c371d2478db465a71e88f77668d8e171.png

    这样的设计模式给业务代码带来了一定的冗余度,但为业务的正确运行和错误溯源做了底线的保护。

    自动化代码的生成产物,大致如下:

    4ef03490e812cff6e51f5d31e20b88cf.png

    通过dingtalk-idl-ts提供的命令行工具,业务开发只需要一个命令行,即可按需生成项目所需要的ts数据接口定义,从易出错的手动编写ts代码中解放出来。

    现在该工具已在钉钉的桌面端、小程序、H5应用中落地使用,ts的进一步推广也随着基础设施的完善逐渐落地。

    写在后面

    以上大致就是我们在落地Typescript的一些方案和实践,非常欢迎有更好想法的同学提出意见和建议。希望读完本文你有一定的收获。

    68b89f09f82f98ff572aa77339eed9ea.png

    展开全文
  • 物联网卡稳定性方面究竟好不好

    千次阅读 2019-05-11 15:43:31
    一切的研发技术都将只是区域性,得不到广泛的推广和使用,5G时代的到来,最让大家关注的就是数据传输的稳定性。  马上即将迎来的5G有什么特别的呢?主要的特点包括数据传送速度更快,传送量更大,同时稳定性更强...
  • 注重便利!然而这样却带来一个缺陷,那就是接口越来越少甚至接口就只有一个!也许以前这是一大难题,放心,现在它已经不是什么问题!因为创基Chungkey usb3.0 hub多功能扩展坞,跟华为强强联手合作,从设计——...
  • GBASE南大通用与美林数据完成兼容互认证三连击 近日,GBASE南大通用大规模分布式并行数据库集群系统 [简称:GBase 8a MPP Cluster]连续完成与美林数据技术股份有限公司(简称:美林数据)Tempo人工智能平台...
  • 真诚型领导作为一种领导方式,已经被证明具有在激烈的企业竞争中有效减小员工流动性、维持组织稳定性的积极作用。文中从领导-成员交换质量的中介作用和下属对权力距离感知的调节作用角度,研究真诚型领导在科技研发...
  • 作者:段兵 TiDB 是 PingCAP 自主研发的开源分布式...TiDB 3.0 版本显著提升了大规模集群的稳定性,集群支持 150+ 存储节点,300+TB 存储容量长期稳定运行。易用性方面引入大量降低用户运维成本的优化,包括引入 Inf...
  • TiDB 是 PingCAP 自主研发的开源分布式关系...TiDB 3.0 版本显著提升了大规模集群的稳定性,集群支持 150+ 存储节点,300+TB 存储容量长期稳定运行。易用性方面引入大量降低用户运维成本的优化,包括引入 Informatio...
  • Hive是Apache开源的数据仓库工具,主要是将基于Hadoop的结构化数据文件映射为数据库表,并提供类SQL查询功能。...网易杭研研发的大数据平台网易猛犸的数仓建设及离线分析均是基于Hive,权限、血缘及
  • 高性能高并发系统的稳定性保障

    千次阅读 2017-02-11 17:12:56
    高性能高并发系统的稳定性保障 原创 2016-12-21 肖飞 开涛的博客 作者:肖飞,于2011年8月份加入京东,曾亲身参与到京东的应用性能监控、统一日志、流式计算、内存缓存、四层防攻击等一些基础技术平台的...
  • 数据切片

    2019-09-30 11:35:36
    对于系统的稳定性和扩展性造成了极大的问题。通过数据切分来提高网站性能,横向扩展数据层已经成为架构研发人员首选的方式。水平切分数据库,可以降低单台机器的负载,同时最大限度的降低了了宕机造成的损失。通过...
  • 本周我们的讨论话题是关于测试质量管理: ...我们的最终目标是保障产品质量,提升产品质量的稳定性。因此,在你的工作中有统计哪些质量数据呢?是怎么利用这些质量数据的呢? 大家讨论分享的结果 本周只有一...
  • 数据切分

    2016-11-30 12:31:10
    引言  第1章 引言 随着互联网应用的广泛普及,海量数据的存储和访问成为了...对于系统的稳定性和扩展性造成了极大的问题。通过数据切分来提高网站性能,横向扩展数据层 已经成为架构研发人员首选的方式。水平切分
  • Jindo 原是阿里云 开源大数据团队的内部研发代号, 取自筋斗(云)的谐音,Jindo 在开源基础上做了大量优化和扩展, 深度集成和连接了众多阿里云基础服务。 JindoFS 是阿里云针对云上存储自研的大数据缓存加速服务, ...
  • 海量数据

    2017-02-07 15:28:49
    对于系统的稳定性和扩展性造成了极大的问题。通过数据切分来提高网站性能,横向扩展数据层 已经成为架构研发人员首选的方式。水平切分数据库,可以降低单台机器的负载,同时最大限度的降低了了宕机造成的损失。通过...
  • 对于系统的稳定性和扩展性造成了极大的问题。3.解决方案:通过数据切分来提高网站性能,横向扩展数据层实现了分布式数据访问层(DDAL)已经成为架构研发人员首选的方式。水平切分数据库可以降低单台机器的负载,同时...
  • 基于提高超声数据采集系统的稳定性数据采集效率的目的,利用C#语言编写上位机软件从而将数据通过CH375接口进行读取、转换、存储并实时显示。通过使用Visual Studio 2013.NET编程环境中Thread类联合CH375动态链接库...
  • 对于系统的稳定性和扩展性造成了极大的问题。通过数据切分来提高网站性能,横向扩展数据层已经成为架构研发人员首选的方式。数据切分:可以降低单台机器的负载,同时最大限度的降低了宕机造成的损失;负载均衡策略:...
  • 引言: 随着云计算、大数据、物联网等技术兴起,数据朝着多样、高体量、高速度方向发展,如何将海量数据安全、稳定、高效地数据共享出去成为各企业关注的重点。本次微课堂通过普元在数据服务共享平台研发过程中的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 861
精华内容 344
关键字:

数据研发数据稳定性