话说栈长前阵子写了一个功能,测试 0 bug 就上线了,上线后也运行好好的,好多天都没有人反馈bug,超爽.. 不出问题还好,出问题就是大问题.. 最近有个客户反馈某些数据混乱问题,看代码死活看不出什么问题,很诡异,再仔细看代码,原来是一个全局变量的问题,导致在并发情况下出现了线程不安全的问题,事后被同事们打脸!!! 慎用全局变量,我在公司一直在强调,没想到这么低级的问题居然发生在自己身上,说起来真的惭愧啊.. 最开始使用的是 Spring 注入对象的方式: @Autowired private…
我们写测试用例的目的是为了能够整理思路,把要测试的地方列出来,做为知识的积淀,用例可以交给其他测试人员执行,或者是跟需求提出者进行讨论,对用例进行补充和修改. 理论上用例写的越多,越容易发现bug.但是,本文我们将讨论如何写出发现不了bug的测试用例. 不看需求 要想写出测不出bug的用例,最关键的一点就是不看需求或者随便看看需求. 需求文档是个磨人的小妖精,要么是写的看不懂,要么写的太简单.这玩意很多时候我们是看不懂的,看不懂的话,嗯,那么就脑补咯,用例写的又快又好,执行的时候肯定发现不了bu…
在我们日常写注释是需要注意,在有返回值的里面不要用以下方式注释,不然不会报错,运行状态码返回也是200,但就不是想要的结果. 下面举个例子 return { 'token':token, 'user_id':user.id, ''' BUG:username 写成user_name,在source中的session中就查询不到username ''' 'username':user.username, } 要改为以下方式即可出现想要的结果: ''' BUG:username 写成user_nam…
在尝试用flask写service的过程中,我发现全局变量使用虽然很方便,但其实是很冒险的. 本次我使用的是声明global变量的方式,如果作为本地的单次使用的程序来说,确实没有问题并且很好用,对于竞赛题目来说更加便捷,但是作为service,在挂上服务器运行时,在单次没有中断这个服务的情况下,全局变量其实也是不清空的. 也就是说,当这个service被多次调用时,虽然对于各个调用来说看似是独立的,但是对于这个service来说确是共用global的,因此会存在多次调用的结果不一样的各种问题.…
你知道的越多,你不知道的越多 点赞再看,养成习惯 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试点思维导图,也整理了很多我的文档,欢迎Star和完善,大家面试可以参照考点复习,希望我们一起有点东西. 前前言 为啥今天有个前前言呢? 因为你们的丙丙啊,昨天有牌面了哟,直接被微信官方推荐,知乎推荐,也就仅仅是还行吧(心里乐开花). 也有好几个号主发来问候,直接实名羡慕哈哈,丙丙以后也是被微信推荐过的男人了,你们也是有牌面的读者了. 前言 你们是…
大家好,我是良许. 计算机专业的小伙伴,在学校期间一定学过 C 语言.它是众多高级语言的鼻祖,深入学习这门语言会对计算机原理.操作系统.内存管理等等底层相关的知识会有更深入的了解,所以我在直播的时候,多次强调大家一定要好好学习这门语言. 但是,即使是最有经验的程序员也会写出各种各样的 Bug.本文就盘点一下学习或使用 C 语言过程中,非常容易出现的 5 个 Bug,以及如何规避这些 Bug. 这篇文章主要面向初学者,老鸟可以忽略哈(其实不少老鸟依然还会犯这些低级错误哦)~ 1. 变量未初始化 当…
这是个持续多年的话题了,很多大公司,尤其是牛逼的独立分包公司(开发公司)都会有代码审核和严格QA程序,一般的公司就很难说咯,在法律上目前还没有完全支持处罚程序员bug经济损失的判例(国内如此),国外也是分为故意损害和无意损害两类,但是举证故意损害举证很困难.就我的经验来说(我只在小公司和小小公司待过,大公司和超级公司只是从资料和论文以及产品里看过),一般会有限制级要求和程序性要求,其他的就是使命感和责任心的管理,加强程序员的自我管理是很重要的学问:这里说的是OKR,不是KPI:技术型公司不适用制…
1.双边距BUG float引起的  使用display:inline 2.3像素问题 使用多个float和注释引起的 使用dislpay:inline -3px   3.超链接hover 点击后失效  使用正确的书写顺序 link visited hover active 4.Ie z-index问题 给父级添加position:relative 5.Png 透明 使用js代码 改 6.Min-height 最小高度 !Important 解决’ 7.select 在ie6下遮盖 使用ifra…
与上一篇<秒杀多线程第十篇 生产者消费者问题>的生产者消费者问题一样,读者写者也是一个非常著名的同步问题.读者写者问题描述非常简单,有一个写者很多读者,多个读者可以同时读文件,但写者在写文件时不允许有读者在读文件,同样有读者在读文件时写者也不去能写文件. 上面是读者写者问题示意图,类似于生产者消费者问题的分析过程,首先来找找哪些是属于"等待"情况. 第一.写者要等到没有读者时才能去写文件. 第二.所有读者要等待写者完成写文件后才能去读文件. 找完"等待"…
各位,再强调一点,以后如果遇到bug的地方,是自己开发的内容,我希望自己去看下调整下,而不是等再此被提出,等到领导再次提出问题,或者多次出现问题会影响自己的评级 现在是我再这里说,以后再其他地方工作,或者自己开的公司遇到这样的员工或者同样的问题你会怎么看待,值得各位自己思考下…
点赞再看,养成习惯,微信搜索[三太子敖丙]关注这个互联网苟且偷生的工具人. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的系列文章. 背景 某天运营反馈,点了一次保存,但是后台出现了3条数据,我当时就想,不应该啊,这代码我几万年没动了,我当时就叫他先别操作了,保留一下现场,我去排查一下. 我看了下新增的代码,直接右键查看作者 没想到三歪做过改动,我就去问三歪,XX模块的新增代码你是不是动过? 他沉默了很久没说话,然后抓…
let today = new Date();应该在每次用之前重新生成新的对象,因为对于例如 today.getTime() 这种方法,取得是today对象的time,而非调用today对象取得实时时间,即today.getTime()方法返回的是today定义时的time,而非此方法执行时的time.…
刚入职的程序员新人,办公桌上,基本上也就一电脑.一键盘.一鼠标,再配个被杯子.然而混迹职场多年的猿老们,办公桌上都有一些彰显身份地位的“好东西”. 这张图两点颇多,最显眼的,是办公桌上那个黄黄的东西,拉近一看,是一只小黄鸭.据说程序大师随身都会携带一只小黄鸭,调试代码时,就会详细的向鸭子解释每行代码.这种方法还有一个好听的名字“小黄鸭调试法”. 一直以为,不会写 bug 的程序员,是一个非常不合格的程序员.不过 bug 写多了,好像也不是什么好事.这不,某位程序员同僚,因为赶项目的时候,写了太多…
我们写测试用例的目的是为了能够整理思路,把要测试的地方列出来,做为知识的积淀,用例可以交给其他测试人员执行,或者是跟需求提出者进行讨论,对用例进行补充和修改.那么为啥你写的用例测不出Bug来呢,真的是没有Bug吗?下面看看你的用例是不是犯了下面的几个错误. 不看需求 要想写出测不出bug的用例,最关键的一点就是不看需求或者随便看看需求. 需求文档是个磨人的小妖精,要么是写的看不懂,要么写的太简单.这玩意很多时候我们是看不懂的,看不懂的话,嗯,那么就脑补咯,用例写的又快又好,执行的时候肯定发现不了…
作为测试人员,我们都知道Bug的生命周期是: 我们都希望自己不仅有敏锐的洞察力能够全面的找出隐藏在软件中的bug,还希望自己有系统的分析能力能够准确的分析出每个bug的原因以至于能正确.全面的解决修复bug.这也是一个优秀的测试工程师应该具备的基本能力.那么对于回归验证bug这个环节就是对前面两项工作是否合格的体现及验证.bug回归到不到位, 关系到发现bug本身有没有修复正确, ?同样也关系到bug修复过程中可能引起新的bug.接下来我们就讲讲如何做好bug的回归验证: 一.确认好bug的复现…
排Bug技巧 什么是Bug? Bug一词的英文原意是"臭虫"或"虫子".但是现在,在电脑系统或游戏程序中,如果隐藏着的一些未被发现的缺陷或问题,可被人利用,人们也叫它Bug,也叫漏洞. 解决Bug方法 利用网络 把错误信息粘贴到百度.Stack Overflow.Google中搜索 重写 遇到BUG,去理清楚是什么导致的,去分析在哪儿改能成,都试过不行,重头写一遍 日积月累 把BUG分类,并把常见bug整理一套解决方案 请教大牛 谦卑的态度请教同事.网络技术论坛--…
C语言,作为大多数人的第一门编程语言,重要性不言而喻,很多编程习惯,逻辑方式在此时就已经形成了.这个是我在大一学习 C语言 后写的推箱子小游戏,自己的逻辑能力得到了提升,在这里同大家分享这个推箱子小游戏项目. GitHub 仓库地址:github.com/weizhiwen/C… 先来看看最后的运行的效果. 这是一个在 Windows Dos 界面的小游戏,界面上有推箱子的地图,使用#来代表地图的边界,P来代表推箱子的小人,X来代表箱子,O来代表箱子要推到的目标位置. W(w).S(s).A(a…
C语言,作为大多数人的第一门编程语言,重要性不言而喻,很多编程习惯,逻辑方式在此时就已经形成了.这个是我在大一学习 C语言 后写的推箱子小游戏,自己的逻辑能力得到了提升,在这里同大家分享这个推箱子小游戏项目. 先来看看最后的运行的效果.   这是一个在 Windows Dos 界面的小游戏,界面上有推箱子的地图,使用 # 来代表地图的边界,P 来代表推箱子的小人,X 来代表箱子,O 来代表箱子要推到的目标位置. W(w).S(s).A(a).D(d) 分别对应小人向上.下.左.右移动. ✿  要…
Geotrellis系列文章链接地址http://www.cnblogs.com/shoufengwei/p/5619419.html 目录 前言 BUG说明 解决方案 总结 一.前言        在上一篇文章中介绍了一个自己写程序过程中的BUG,并提出质疑是否是Geotrellis的BUG,又经过几天的折腾之后,最终可以明确证明这个BUG肯定是Geotrellis造成的,现记录之. 二.BUG说明        当我们将一个Byte有符号类型的Getiff数据使用Geotrellis(版本0…
背景交代.最近在玩lua的服务端编码, 有项目A,B,AB都是同一个模子的.我手上有A的winsocket客户端和服务端的代码,B项目早期的一份linux下的lua client.服务端.客户端都是LUA. 目标:调通B的client供我在Linux下对A做测试. 顺便加强对A项目的认识,主要是通讯层.根据个人经历,这类项目,最难搞定和最难缠的通常也是因为网络通讯导致的bug.   最难的问题是这样的,在修复了各种简单的问题后.出现了一个难缠. 在登录成功后,向服务器端发出的一个邮件列表请求,始…
正确对待bug 2016-10-09 公众号:一只程序媛 以前我一直以为bug是代码的天敌,我以为好的程序媛写出来的代码是应该没有bug的,零bug是终极奋斗目标. 后来,看到一句话"上帝创造世界时如果没有bug,我们现在都还只是猴子",虽然时一句玩笑话不过仔细想想或者遇到bug时这样自我安慰,对bug已经没有那么抵触了. 今天就是想记录一些自己对bug的错误理解.     1.不存在没有bug的代码,即使是大牛写的代码也是存在bug的,所以有bug并不丢人.     2.不能遇到bu…
     在我们使用android编写程序的时候,少不了想利用全局变量,但是面向对象语言和过程语言区别很大,不再是include就可以的.这里我写了使用全局变量的两种方法: 1.使用application来保存全局变量 这里没有太多理论性的东西,无非就是一些实际操作. 1.1定义Data类继承Application Data.class import android.app.Application; public class Data extends Application{ private S…
图表示这样的 页面上有很多个图表,由于没有查询按钮,就只是点击发送ajax数据,所以把所有图表的方法放在updated中, 功能是实现了没问题,但是加载页面的时候会发送很多的ajax请求,而且点击修改的时候整个页面的图表都会重绘,目前考虑的解决办法是做一个判断,如果当前的的这个对象的数值发生改变了再出发DOM更新 ,大家有没有更好的方法,谢啦感谢@zhaokang 的回答,我在设置watch监听数组之后,已经可以动态的更新echarts图表, 效果如下 touchComparison是一个数组…
"出错了." 没有那句话能像"出错了"一样让程序员/开发者如此沮丧,心里翻江倒海,怒火一点即燃,还要死掉一大片脑细胞. 这句生硬的开场白通常标志着让开发者恐惧的长时间排错工作要开始了. 在我的职业生涯中,我就进行过好几次这样的对话: "出错了." "什么出错了?" "网站." "网站什么地方出错了?" "我不确定.你把它弄好就是了." 对于很多的非技术人员来说,这句话…
一.引子 RT,本篇博客记录的是马三的一次解决 LuaFunction has been disposed 的bug的全过程,事情还要从马三的自研框架 ColaFrameWork 说起.最近,马三在业余时间维护了一款基于Unity的客户端自研框架,起名叫 ColaFrameWork ,寓意是希望写代码能像喝小可乐一样享受和轻松.为了在Lua层可以监听到UI事件,马三制作了UGUIEventListener.UGUIDragEventListenner和UGUIMsgHandler等这样几个UI组…
近来在公司写代码,写出的代码发现BUG很多,为了实现一个功能,代码改了又改,影响了工单的效率,也影响个人绩效,因此从网上找了些关于写健壮代码的文章看了看,再加上自己的一些经验总结. 所谓健壮的代码是指:健壮性又称鲁棒性,是指软件对于规范要求以外的输入情况的处理能力. 所谓健壮的系统是指对于规范要求以外的输入能够判断出这个输入不符合规范要求,并能有合理的处理方式.      另外健壮性有时也和容错性,可移植性,正确性有交叉的地方.      比如,一个软件可以从错误的输入推断出正确合理的输入,这属…
原创文章,欢迎阅读,禁止转载. bug预防C/C++代码发布前的检查:检查有没有低级错误,可用cppcheck (bug预防是指在写程序的时候,bug没出现,积极的进行预防,减少.包括良好的编码风格.编码习惯.使用管理工具和检查工具等.这个放在另一片文章中说吧.) 排查bug的步骤: 复现--让你看到bug的表现固化--尽量让bug能100%出现定位--找出问题根源修改--消除bug验证--测试bug是否彻底解决 (排查bug指的是,已经出现了bug,现在需要把它解决掉) 检查有没有内存泄露,结…
做测试的小伙伴可能用过httpwatch,firebug,fiddler,charles等抓包(数据包)工具,但实际上除了这些还有一个简单实用并的抓包工具,那就是浏览器的F12调试器. httpwatch,firebug都是浏览器的插件,需要额外下载,fiddler,charles也需要额外下载安装包另行安装,但是浏览器F12调试器却是所有浏览器内置的调试器,不需要大家额外去安装的,打开它只是一个顺手的事情,而且它提供的功能也比较强大,因此如果在开发或者测试web系统的时候,我们可以先考虑使用这…