展开

关键词

有多少BUG,可以来?

首先,我们的教育与实践脱节比较严。这是一个比较大的话题了,往往理论,轻实践。 其实使用语言的最要的目的是为了沟通与交流,想想语言从无到有,本身就是不断在发展变化,过于注语法真的有很大意义吗?我们经常把手段当作了目的,最后把目的倒忘了。 有不少情况都是一个客户在复犯另一个客户已经犯过的错误,而且有时候代价是极其惨痛的!再举一个亲身经历的案例。 可是,糟糕的事情发生了,系统每个一段时间就会新启动一次。如果碰巧在深更半夜,真跟闹鬼一样!这个事情对公司的形象造成了非常负面的影响!最后解决这个问题用了多久呢? 让人苦笑不得的是,最终发现原来有个工程师非常自信的删除了驱动中的几行代码,而这几行看似无用的代码,实际非常要,它是为了规避芯片中的一个BUG,就这样,我们中招了!其它公司有没有可能犯类似的错误呢?

8140

记录一个Xcode的bug

启之后只有一个接口没有反应。吃中午饭合上笔记本。下午13:00上班的时候在打开电脑,悲剧又再一次发生了。电源适配器又不起作用。电池一直掉电,直到自动关机。 回到家按一下操作步骤执行 https:support.apple.comzh-cnHT201295 https:support.apple.comzh-cnHT204063 电脑又可以新开机了,一切都恢复正常了 两次绝对不会是偶然,肯定有什么bug。在这记录一下。如果遇到同样的问题希望可以帮到你。

13510
  • 广告
    关闭

    11.11智惠云集

    2核4G云服务器首年70元,还有多款热门云产品满足您的上云需求

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

    学习-原则

    什么是:视上下文有两个不同的定义,第一个定义是名词形式对软件内部结的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本的另一人用法是动词形式使用一系列的手法 为什么要改进软件设计,如果没有,程序的设计会逐渐腐败变质。好多时候我们为了马上解决问题,就直接修改程序,程序逐渐失去了自己的结,这样下去程序会越来越难理解。 可以让我们的代码更容易理解和阅读,也可以帮助我们找到bug什么时候进行:事不过三,过三就这个原则要记住,第一次去做某件事时只管去做,第二次再去做类似的事就会不爽,但无论如何还是可以去做,但第三次再去做类似的事件 如果在修改bug和审查代码时发现不合理的地方也要进行,这样是为了更好的阅读和理解代码何时不:如果发现代码太混乱,它不如写来的简单这种情况下建议写,不用进行。 如果项目已经进入了最后期限,那也应该避免,这时已经有些晚了。最后你没有时间进行表明你其实早就该进行与性能:有时为了让代码更容易理解,会做出一些使程序运行变慢的修改,这是个要的问题。

    26450

    Linux 文件去所遇到的bug

    如果要去的文件过大,超出tmp文件的磁盘容量,就会排序失败,中间结果也不会被成功清理,tmp空间直接飙到100%这时需要我们手动清理文件来解决

    35550

    背景最近公司做了个项目,深深体会到架设计以及代码优化有多么的要。回头看自己的代码都觉得特别混乱,有时候还要看很久才能看懂,可扩展性特别差,完全是为了完成需求而编码的。 接着:直接看下面的代码呗Book类:将按照书的不同类型,按照不同价格统计的方法移动到Book类中,因为这个按理应该属于Book类中的。 第二次经过第一次,还是没有实现需求修改增加多个分类的效果。那么接下来使用接口抽象来再次。 最后想说:如果你发现自己需要为程序添加一个特性,而代码结使你无法很方便地达成目的,那么就先那个程序,使特性的添加比较容易进行,然后再添加特性。写代码就应该像写诗一样,而不是没BUG,我就不动它。 参考文章【】作者: Martin Fowler

    18910

    Bug,项目过程中的要数据

    Bug本身的信息标题、描述(操作步骤、预期结果、实际结果、截图等附加信息、环境)、创建人、修复人、创建日期、修复日期、关闭日期、优先级、严程度、解决方法、状态、新打开次数、所属需求等Bug产生的阶段接口测试 :非Bug,RD不需要更改任何的配置或代码BUG :同一个问题,提了多个(不同现象算不同问题)无法现 历史遗留:历史版本就存在的问题以后解决:当前版本不解决,下个版本再解决兼容性第三方依赖:非组内代码调用实现与文档不符 Bug等级1、Bug等级有两个层面:优先级和严程度2、优先级根据Bug紧急程度分为:高、中、低3、Bug程度分为:致命、严、一般、提示、建议按迭代分析Bug程度,可以看出版本的提测质量按人分析它所有 Bug的严程度占比,长期以往,如果一个人的Bug总是严Bug较多,也能侧面反映出一个人的代码质量且严程度高的BUG也有更高的单独分析价值,可以积累更多的测试经验我们关心项目中的哪些数据? 2、 开发的代码质量Bug数结合需求大小,以及通过Android和iOS两端做对比Bug的严程度也是一个可参考的点 Bug还有一个叫做新打开次数的属性,这个可以看出RD解决问题的能力,如果一个RD解决的

    39810

    Adobe 2019 存在bug

    我本以为不显示主页是防盗锁,没想到你是个bug???没想到你是这样的奥多比! ?目前vposy大佬已经给出了解决方案。

    90520

    代码(二):类规则

    在上篇博客《代码(一):函数规则(Swift版)》中,详细的介绍了函数的规则,其中主要包括:Extract Method, Inline Method, Inline Temp, Replace 关于上述这些函数的规则更为详细的信息请参考上一篇博客,在此就不做过多的赘述了。今天这篇博客主要介绍一下类的。在我们写代码时,有些类是不规范的,需要。 当然,在你实现时,测试用例是必不可少的,因为测试用例可以在你时及时发现因为而产生的错误。言归正传,进入今天博客的主题。 搬移后,我们可以再使用函数的规则对新组的函数进行。下方就通过一个实例来直观的感受一下Move Method。 关于这两个函数的规则的具体细节请参见《代码(一):函数规则(Swift版)》中的介绍。下方截图是对BookCustomer类中的charge()函数进行后的结果,如下所示:?

    386100

    IPProxyPool

    经过两周时间的努力,基本完成了开源IP代理池IPProxyPool的,业余时间基本上都花在上面了。如今IPProxyPool开源项目已经500多star了,谢谢大家的关注。

    25320

    师写的BUG,非比寻常

    该我们的架师上场了。代码如图。 架师说,我的代码不需要做注释。所谓的注释,都是给垃圾代码用的。我深以为是,他明显是受到了Netflix公司的影响。 这次终于引起了大牛们的注意,经过大家的分析,发现代码是忘了给MonitorKey写equals和hashCode方法了。我不禁脸红起来。作为好朋友,我不应该让他出这个丑。 答案显然是可以的,但需要注意写hashCode和equals方法。如果忘记写的话,大概率会造成内存泄漏。很不幸,现实中忘记的案例很多。大牛架师也会中招。 代码写hashCode和equals方法后,线上就再也没发生过内存溢出。----等等,还没完。毕竟是架师,仅仅这样一个bug还是证明不了水平的。架师写的bug,肯定非比寻常。 总监接着把头转向我:这个BUG非比寻常,为了让大家引以为戒,你来做整个事故的复盘。把问题的排查和得到的教训分享给大家,让大家向这种至简的架看齐。

    22610

    师写的BUG,非比寻常

    该我们的架师上场了。代码如图。 ?架师说,我的代码不需要做注释。所谓的注释,都是给垃圾代码用的。我深以为是,他明显是受到了Netflix公司的影响。 这次终于引起了大牛们的注意,经过大家的分析,发现代码是忘了给MonitorKey写equals和hashCode方法了。我不禁脸红起来。作为好朋友,我不应该让他出这个丑。 答案显然是可以的,但需要注意写hashCode和equals方法。如果忘记写的话,大概率会造成内存泄漏。很不幸,现实中忘记的案例很多。大牛架师也会中招。 代码写hashCode和equals方法后,线上就再也没发生过内存溢出。----等等,还没完。毕竟是架师,仅仅这样一个bug还是证明不了水平的。架师写的bug,肯定非比寻常。 总监接着把头转向我:这个BUG非比寻常,为了让大家引以为戒,你来做整个事故的复盘。把问题的排查和得到的教训分享给大家,让大家向这种至简的架看齐。

    19520

    代码(一):函数规则

    此时,你要考虑了。,在《,改善既有代码的设计》这本经典的书中给出了定义,大概就是:在不改变代码对外的表现的情况下,修改代码的内部特征。 本篇博客的主题就是通过一些列的手法,对既有的需要的函数或者方法进行。并且会将每个示例在GitHub上进行分享,感兴趣的小伙伴可以对其进行下载。 实在是没有必要再找其他的例子说明这些规则,因为《:改善既有的代码的设计》这本书真的是太经典了。 1.需要的代码如下所示。 在写好需要的类后,我们要为该类写一个测试用例。这便于在我们时对的正确性进行验证,因为每次后都要去执行该测试用例,以保证我们是正确的。 所为我们可以再次对上述方法进行后的具体代码如下:?今天的博客主要讲了如何对既有代码中的函数进行,在本篇博客中提到了8大规则。这8大规则在函数代码时时非常实用的,并且也是非常要的。

    47250

    代码(三):数据规则

    在《代码(一):函数规则(Swift版)》和《代码(二):类规则(Swift版)》中详细的介绍了函数与类的规则。 对数据的组织形式以及操作进行,提高了代码的可维护性以及可扩展性。与函数与类类似,对数据结也是有一定的规则的。通过这些规则可以使你更好的组织数据,让你的应用程序更为健壮。 在本篇博客中将会结合着Swift代码实现的小实例来分析一下数据的规则,并讨论一下何时使用那些规则进行数据。 还是那句话“物极必反”呢,如果不恰当的使用规则,或者过度的使用规则不但起不到的作用,有时还会起到反作用。废话少说,进入今天数据的主题。一.  也就是说里外都被修改了,这与我们所提倡的“改变模块内部结,而不改变对外调用方式”所相悖。所以在代码时不要这么做了,因为上面的这种做法的成本会很高,并且出现BUG的几率也会提高。

    35160

    边缘智能(EI):算力、算法、商业智能

    第二大类主要是为边缘智能这一闭环流程提供研发、标准制定、产业组织等服务,对应的是一些科研机开展边缘智能各个课题研发,标准化组织推出边缘智能端到端标准和参考架,以及行业协会、联盟促进整个产业合作共赢, 9月20日,AI WORLD 2018世界人工智能峰会磅发布AI领域年度大奖——AI Era创新大奖,评选出2018年度对AI领域作出大贡献,切实推动AI进步和发展的人物、企业和产品。 边缘智能(EI),智能算法引擎真正和老百姓生活息息相关的应用都是哪些呢?一般来说与老百姓出门相关的都是衣食住行,那么衣食住行当中的AI和计算机视觉会有怎样关联呢? 衣食住行无外乎是智能家居、智能出行和线下零售等等几个常用的场景,这些场景当中都有硬件、软件和计算机算法等等完整的处理方式,我们通过EI数字空间,其中三个方面,算力、算法,同时也商业模式。 我们要用边缘计算的算法和系统,这个零售的空间。的空间能够给人解决什么—实时主动决策我们认为主要是提供了变革性的决策,也就是主动地决策。

    41830

    Bug之路-dubbo应用无法连zookeeper

    Bug现场这是一起在测试环境出现的故障。起因是网工做交换机切换演练,可能由于姿势不对,使得断网的时间从预估的秒级达到了分钟级。 还好只是测试环境,但为了不让产线出现这种问题,必须一查到底,把这个Bug揪出来。 看来在dubbo对zookeeper连过程中,如果DNS也无法响应,是会出现网络恢复后也再也无法连的现象。但是,我们并不能下判断交换机的故障导致的无法连肯定是这个Bug引起。 ; } Collections.shuffle(this.serverAddresses); } ......}新版本zookeeper-3.4.13小小的了一下,将DNS的逻辑放到next函数里面并抓住了 BUG触发条件复盘在与zookeeper服务连接异常并session expired(默认30s),DNS缓存也超时(默认30s)同时用的低版本zookeeper jar包就很容易达成上述Bug的情况。

    66130

    Bug之路-中间件SQL复执行

    Bug现场应用拓扑应用通过中间件连后端多个数据库,sql会根据路由规则路由到指定的节点,如下图所示: ?错误现象应用在做某些数据库操作时,会发现有比较大的概率失败。 这个问题笔者思索了很久,因为在笔者的实际新执行出问题的sql并debug时,永远只有一个okay返回。 那三条复执行也很好解释了,就是之前的拼接sql会有三条。为何是概率出现但奇怪的是,并不是每次拼接sql都会造成update3复执行的现象,按照笔者的推断应该前面只要是多条拼接sql就会必现才对。 让我们再看一下不会让update3复执行的时序图: ? 即根据okay(update2)返回的快慢来决定是否暴露这个问题,如下图所示: ? 那肯定是中间件显示的问题了,笔者很快就想通了其中的关窍,我们中间件有个对同样sql缓存其路由节点结体的功能(这样下一次同样sql就不必解析,降低了CPU),而sqlID信息正好也在那个路由节点结体里面

    31630

    Bug之路-中间件SQL复执行

    Bug现场应用拓扑应用通过中间件连后端多个数据库,sql会根据路由规则路由到指定的节点,如下图所示: 错误现象应用在做某些数据库操作时,会发现有比较大的概率失败。 这个问题笔者思索了很久,因为在笔者的实际新执行出问题的sql并debug时,永远只有一个okay返回。 那三条复执行也很好解释了,就是之前的拼接sql会有三条。为何是概率出现但奇怪的是,并不是每次拼接sql都会造成update3复执行的现象,按照笔者的推断应该前面只要是多条拼接sql就会必现才对。 让我们再看一下不会让update3复执行的时序图: 即根据okay(update2)返回的快慢来决定是否暴露这个问题,如下图所示: 同时笔者观察日志,确实这种情况下update1;update2这条语句在中间件里面日志有两条 那肯定是中间件日志打印的问题了,笔者很快就想通了其中的关窍,我们中间件有个对同样sql缓存其路由节点结体的功能(这样下一次同样sql就不必解析,降低了CPU),而sqlID信息正好也在那个路由节点结体里面

    12820

    Bug之路-dubbo应用无法连zookeeper

    Bug现场这是一起在测试环境出现的故障。起因是网工做交换机切换演练,可能由于姿势不对,使得断网的时间从预估的秒级达到了分钟级。 只能从最基础的服务开始启,慢慢恢复。如下图所示: 还好只是测试环境,但为了不让产线出现这种问题,必须一查到底,把这个Bug揪出来。 但是,我们并不能下判断交换机的故障导致的无法连肯定是这个Bug引起。需要找到证据来证明这一点!它山之石,可以攻玉有了DNS这个信息后,先google一下,看看能否有其它人遇到过这个坑。 ; } Collections.shuffle(this.serverAddresses); } ......}新版本zookeeper-3.4.13小小的了一下,将DNS的逻辑放到next函数里面并抓住了 BUG触发条件复盘在与zookeeper服务连接异常并session expired(默认30s),DNS缓存也超时(默认30s)同时用的低版本zookeeper jar包就很容易达成上述Bug的情况。

    11220

    .NET—单元测试的代码

    ,在这次的开发当中有些东西觉得还不错有总结分享的价值,所以整理成本文; 已是老生常谈的话题,我们或多或少对它有所了解但是对它的深刻理解恐怕需要一段实践过后才能体会到;提到就不得不提为它保驾护航的大功臣单元测试 但是里面可能会有正反向很多种逻辑在里面;比如:Order.ToString()简单的代码,想要覆盖很简单,只要对象不为空都能正确的覆盖到,但是如果我们没有测试到它为NULL的情况下的边界逻辑,这个时候我们就会漏掉这种可能会导致BUG 2.1】单元测试的继承体系(利用超类来减少Mock对象的使用)将多个相关的测试用例代码通过超类的方式关联起来统一管理将大大减少复代码的建;就跟我们普通代码一样,将多个类之间共享的逻辑代码或者对象提取出来放到基类中 ,因为我们的项目中是需要迭代的,我们需要来为我们的项目保证最高的质量;所以单元测试修改的次数和的次数应该是成1:0的这样的比例,修改的范围那就不是1:10了,有时候甚至是几何的倍数;OrderService ,将规则对象化后就能随便的控制他们,当然这里是提取出方法,如果是大型企业级项目对这些易变化的点是需要抽取出来的;总之遇到这样的情况就使用简单的提取方法的方式将复杂的逻辑提取出来,这也是《》中的策略的首要的模式

    28760

    读书「

    的基本原则?添加新功能,和不可同时进行,时不加新功能,加新功能时不时不应该添加任何测试。小步前进,频繁测试。一个函数应该且只应该完成一件事情。 对一个对象函数来说,哪些地方很可能需要?拥有太多实例变量有超过百行的函数函数的参数超过三个牵一发动全身,如果经常一个改动需要在许多不同的类内做出小修改。 的方法有哪些? 分解函数 当看到一个过长的函数或者一段需要注释才能让人理解用途的代码,把这段代码放到一个独立函数里面去函数命名应该以「做什么」而不是「怎么做」来命名。 简化条件表达式 尽管一个函数最好只有一个出口,但为了这一个出口的设计而加上多 if else 判断并不一定划算。 ----参考Martin Fowler ——改善既有代码的设计

    23520

    相关产品

    • 云服务器

      云服务器

      腾讯云服务器(CVM)为您提供安全可靠的弹性云计算服务。只需几分钟,您就可以在云端获取和启用云服务器,并实时扩展或缩减云计算资源。云服务器 支持按实际使用的资源计费,可以为您节约计算成本。

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭

      扫码关注云+社区

      领取腾讯云代金券