查bug受气了,反思】的更多相关文章

昨天改bug了一天,上午出现bug的原因是Boolean和boolean使用BeanUtils等工具无法自动赋值.我们写的时候注意大小写. 下午查了一个下午没有找到任何原因. 但是我受了气,因为报错点最后是在我上面的. 几点: 以后写代码多打logger,logger级别需要注意,一般异常报错error或者info.提示信息使用debug.各个代码关键点都logger一下. 还有就是我的代码没有报异常却没有执行sql语句的日志,这是有问题的,我前面的代码没有考虑异常情况下也会到我的这个步骤,健壮…
从oracle迁移数据到达梦后,发现数据库默认值都丢失了.于是我想从oracle数据库将默认值查出来,在达梦数据库加回去. 于是上网查了一下,看怎么获取oracle数据库字段默认值信息,找到了这个sql. select t.column, t.data_type, t.data_length, t.nullable, t.data_default from USER_TAB_COLS t where TABLE_NAME = 'AA' 但把sql拿到数据库跑时却发现有问题,报了一个错: 粗略扫了…
今天线上又出现了一个bug,而且代码是我写的.之前这个问题也出现过,不过由于每次情况都不同,改来改去总是改不完.之后领导知道后也很恼火,让测试把每种情况都测试了下,而我也又一次重新检查了下代码.当时确认是没有什么问题的,而且测试也确实是通过了.不过没想到这bug真是 经久不绝,历久弥新. 然后仔细又看了下代码,发现还是代码的问题,有种情况没考虑上,测试当时也没测试到.结果这事又让领导知道了,没脾气了. 于是我就在想,老是出现问题,是不是 不适合做这件事?正如喜欢一个人,一直没有结果,无非就是对方…
0.写在前面 没抢到小马哥的红包,无心回家了,回公司写篇文章安慰下自己TT..话说年关难过,bug多多,时间久了难免头昏脑热,不辨朝暮,难识乾坤...艾玛,扯远了,话说谁没踩过坑,可视大家都是如何从坑里爬出来的呢? 1.实现个静音的功能 话说,有那么一天, PM:『我这里有个需求,很简单很简单那种』 RD:『哦,需要做三天』 PM:『真的很简单很简单那种』 RD:『哦,你又说了一遍很简单,那么现在需要做六天了』 对呀,静音功能多简单,点一下,欸,静音了:再点一下,欸,不静音了:再点一下,欸...…
bug已经成为程序员工作中的一部分,作为从事嵌入式软件开发已有三年的我,经手的bug也不少了.先说说自己对于bug的心态变化吧,刚开始工作的时候,自己还是很喜欢bug的.那时,自己是负责维护别人的代码,如果发现了bug,说明自己工作有成绩:后来,自己开始码代码,这个时候测试人员告诉我有bug,自己就有些心烦,尤其是当领导知道了这个bug以后,就会感到很大压力:再后来,经手的bug变多了,也变得淡定多了,而且还逐渐建立自己分析bug的工具箱和分析流程:现在,经过几年的工作,积累了一些经验,开始在设…
最近需求少了,终于有时间修一下底层的bug,做一点工具方便查bug,写篇文章简单记录一下. 一是优化了一个玩法进程的启动速度.这个玩法需要用战力做匹配,玩家按战力分段放进不同的桶里,每个桶用skiplist组织.启动服务器的时候,会遍历所有玩家,放进对应的桶里,方便正式开放的时候进行搜索匹配.之前是遍历策划配置的战力分段表,高端玩家几乎要遍历完整个表才能进到桶里.现在改成了二分查找,匹配速度提高了好多 二是隔壁组做mmo的同事,问了下有没有现成的查内存泄漏的工具.他们加班的比较凶,周六晚加完后,…
注:这篇日志是好多年前,我还在从兴公司时写的.现在都从从兴公司离职很久了,从兴也没落了,可惜.看了一下,虽然出现了部分代码,但不至于泄漏什么机密,查bug过程的原理也有可以让新手借鉴的地方,就原文照搬上来了. dbtool是营帐研发部常用的一个类sqlplus数据库查询工具,它提供了较sqlplus更友好的输出界面,十分适合在命令行下操作,故在部门内部使用相当广泛. 不过它一直有一个bug,使用过程中偶尔会出现执行某条sql后core down的情况.但是由于这种情况较少见,而且bug出现随机性…
一个程序员在没有成长成为架构师之前,几乎都要跟 Bug为伴,程序员有很多时间都是花在了查找各种 Bug上. 我印象深刻的一个Bug, 是一个服务器网络框架无锁队列的 Bug .那个 Bug 连续查找了五天的时间,才最后定位出来. 当时我们的分布式存储系统出现了性能瓶颈,定位后发现瓶颈是在服务器网络框架上,所以我们决定为此替换一个最新研发的网络框架.这个新的网络框架为了追求高的性能,采用了无锁队列的设计. 第一天编码测试完成后.测试环境跑,完全正常,特地搞了一堆 log 来重放请求,程序跑得特别欢…
golang主要特性 1.语法简单 舍弃语法糖,严格控制关键字 C++语法糖之多,令人发指,而C又太过于底层,容易出现自己造轮子的情况,如何在两者之间取舍,是每一个转向golang的工程师曾经思考过的问题. golang的出现,就是在C和C++之间的刚刚好的取舍. 2.垃圾回收 golang支持垃圾回收,相比C/C++是一大进步. c + +由于存在指针计算,即p++.p--等,无法提供垃圾回收功能,而golang虽然有指针,但是舍弃了指针的++.--等操作,所以提供了垃圾回收功能. 标记清除…
目录 目录一.第四单元UML两次作业架构设计第一次作业第二次作业二.架构设计总结与OO方法理解演进三.测试理解与实践演进四.课程收获总结五.课程改进建议六.尾声 一.第四单元UML两次作业架构设计 第一次作业 第一次UML作业的文件树如下: 本次作业采用的是分离需求的设计思路,每一类需求整合到对应的类中单独存储,并配置修改和访问方法. 在顶层,实现课程组提供的UmlInteraction接口的类MyUmlInteraction只负责将UmlElement传入parser解析,并对外提供查询接口,…
有人说 编程是份很无聊的工作 因为整个工作时间面对的都是电脑这种机器 因为眼睛盯着的内容都是索然无味的代码 因为总是会有意想不到的bug让你怀疑自己的智商 而我认为 编程是件及其有意思的事情 可观的收入,说起来或许太俗气,当然不止这个 Unity游戏开发 让我从校园里上个世纪的知识,直接过渡到一年以内的技术 半年的实际开发锻炼的逻辑思维,远远强过大学数学专业学习三年所锻炼的思维 当电脑按照自己写出的代码做出了自己预期的事情,带有控制欲的满足感绝对刺激 然而,最让我追随的 确是编程过程中苦苦思索不…
转载自:iTech的博客 持续集成(第二版) 作者:Martin Fowler 译者:雷镇 持续集成 是一种软件开发实践.在持续集成中,团队成员频繁集成他们的工作成果,一般每人每天至少集成一次,也可以多次.每次集成会经过自动构建(包括自动测试)的 检验,以尽快发现集成错误.许多团队发现这种方法可以显著减少集成引起的问题,并可以加快团队合作软件开发的速度.这篇文章简要介绍了持续集成的技巧和它 最新的应用. 最后更改于:2006年5月1日 目录 用持续集成构建特性 持续集成实践 只维护一个源码仓库…
鸟哥那本书第11章的内容 管理整个计算机硬件的是操作系统的内核(kernel),内核是需要保护的,我们一般用户只能通过shell来跟内核通信.Shell是用户操作系统的接口 cat  /etc/passwd   :可以查看每个账号登陆后默认的shell ~/.bash_history 中记录了前一次登陆以前使用过的命令 type 可以查询命令是bash内置命令 还是 外部命令 一下子写两行命令, 用 \[Enter]转义 变量 1. 显示变量内容: echo $变量名 echo ${变量名}  …
今年的比赛最大的变化就是改用OJ判题了,相比于PC^2确实省事了不少,至少可以直接复制样例了.题目方面依旧是刘汝佳命题,这点还是相当好的,至少给人以足够的安全感. 开始比赛之后安叔瞬间就把前半部分题目抢过去了……想到可能前面的题目会比较简单我就让安叔分我一点,然后安叔就把A丢给我了,接着很快安叔就决定上去敲C了.于是我就开始默默地看题了……A是找个最长的近似回文子串,算了一下暴力没问题,然后又看了H,完成区间加和查询单点就可以了,但是又仔细想了一下其实排个序+二分+前缀和更好写一些,这时琦琦又给…
niubi-job迎来第一次重大优化 niubi-job是一款专门针对定时任务所设计的分布式任务调度框架,它可以进行动态发布任务,并且有超高的可用性保证. 有多少人半夜被叫起来查BUG,结果差到最后发现,是因为某个定时任务挂了导致出了问题? 有了niubi-job,你再也不用担心这个问题! 又有多少人因为要发布一个新的定时任务,为了不影响线上的运行,只能等到半夜再去发布应用? 有了niubi-job,你可以随时发布你的定时任务而且不会影响当前任务的运行! 是不是很兴奋呢? 还有更兴奋的呢,那就是…
应用日志(一):开始编写日志组件 对于那些做后端开发的工程师来说,看 LOG解Bug应该是理所当然的事,但我接触到的移动应用开发的工程师里面,很多人并没有这个意识,查Bug时总是一遍一遍的试图重现,试图调试,特别是 对一些不太容易重现的Bug经常焦头烂额.而且iOS的异常机制比较复杂,Objective-C的语言驾驭也需要一定的功力,做出来的应用有时候挺容易 产生崩溃闪退.一遍一遍的用XCode取应用崩溃记录.解析符号,通常不胜其烦,有时还对着解析出来的调用栈发呆,因为程序当时的内部状态常常难以…
前言 进行移动端网页开发时,想要查看手机浏览器信息从来都不是一件容易的事.特别是当目标环境为APP内置WebView,需要调用特定的JsBridge接口时,你根本都干不了什么,只能一遍又一遍地修改代码,重新打开页面并alert一下.你可能会说,可以使用Chrome,Firefox连接手机调试啊!但那样限定于使用相应的手机版浏览器,意义并不大.Weinre,Vorlonjs跟debugGap等工具实际上也并不好用,初始化过于繁琐,而且仅能调调样式,打打log,断点调试什么的也没有办法支持.每次测试…
画圆是计算机图形操作中一个非常重要的需求.普通的画圆算法需要大量的浮点数参与运算,而众所周知,浮点数的运算速度远低于整形数.而最终屏幕上影射的像素的坐标均为整形,不可能是连续的线,所以浮点数运算其实纯属浪费.下面介绍的Bresenham算法就是根据上文的原理设计.该算法原应用于直线的绘制,但由于圆的八分对称性,该算法也适用与圆(曲线图形)的绘制. 该算法主要是这样的原理:找出一个1/8的圆弧,用快速的增量计算找出下一个点.同时利用圆的八分对称性,找出8个点(包括该点),进行绘制. 这里给出示例的…
沧海一声笑,移动应用的CRASH原因我找到! --记最新款数字化測试"星云測试"的使用攻略 世界进步那么快,非常多新奇的点子层出不穷,于是我们创业.我们做最酷的手机应用,做最轰炸的应用推广.不加国际友人,仅咱泱泱大中华14亿人口,智能手机用户眼下就已经超过5亿人.并还在继续疯长中!据说到2015年1月,仅我们中国的主要应用商店APP应用累计超过400万个. 感觉像我们一样优秀的IT天才们的春天已经到来!就凭咱的脑子和实力.从各种大众脸的App应用中脱颖而出那是必定的!我们肯定是笑到最后…
在实际开发过程中,大家可能会遇到段错误的问题,虽然是个老问题,但是其带来的隐患是极大的,只要出现一次,程序立即崩溃中止.如果程序运行在PC中,segment fault的调试相对比较方便,因为可以通过串口.显示器可以查看消息,只要程序运行,通过GDB调试工具即可捕捉产生segment fault的具体原因.但是不知大家有没有想法,当程序运行在嵌入式设备上时,你所面临资源的缺乏,你没有串口打印信息,没有显示器可查看,你不知道程序运行的状态,如果程序的产生segment falut这种bug发生的周…
现在大三上学期了,家里希望考研,不然觉得我这学校不好找工作,我自己觉得工作还是靠自己,学校就像给人第一眼感觉那样,虽然重要但也只会吸引HR多看两眼,真正留得住HR的还是要有拿的出手的技能. 当初凭着对计算机的热爱硬是选了了这个专业,大一刚进学校什么都不懂,纯粹一个计算机小白,然后大一上学期学了c语言,老师是湘大信工院四大杀手之一,因为又是学校ACM/ICPC比赛教练所以基本让我们用c在oj上刷算法题,刚开始对我有点难,记得当时军训(我们入学1个月后才军训)休息时我拿出手机记事本敲代码:练步时脑子…
ping是基于ICMP(Internet Control Message Protocol)协议实现的.而ICMP协议是在IP层实现的. ping实际上是发起者发送一个Echo Request(type = 8)的,远程主机回应一个Echo Reply(type = 0)的过程. 为什么用ping不能測试某一个port 刚開始接触网络的时候,可能非常多人都有疑问,怎么用ping来測试远程主机的某个特定port? 事实上假设看下ICMP协议,就能够发现ICMP里根本没有port这个概念,也就根本无…
前言:上一章,简单介绍了5种数据结构,并给出了一些用例.现在是时候来看看一些高级的,但依然很常见的主题和设计模式 一.大O表示法(Big O Notation ) 常用时间复杂度O(1)被认为是最快速的,无论我们是在处理5个元素还是5百万个元素,最终都能得到相同的性能.对于sismember命令,其作用是告诉我们一个值是否属于一个集合,时间复杂度为O(1).sismember命令很强大,强大的一部分原因是其高效的性能特征.许多Redis命令都具有O(1)的时间复杂度 对数的时间复杂度 O(log…
今天查bug的时候,遇到一个问题,一个Dictionary<int[],string>数据结构,在使用key取它的value时: var tempVar = _dic[key]; 发生崩溃.跟进去看看,发现不对啊,key是有的啊,怎么回事?然后并不可能是VS的问题.仔细查了才发现,原来用作索引的key,并不是Dictionary里的keys里的key. 简单地说,就是Dictionary里用1,2,3作为key,而传入的key是:1',2',3'.这样当然是找不到的.由此,引发的想到引用类型和…
转发注明出处:http://www.cnblogs.com/0zcl/p/6259128.html 一.需求 1. 用户加密认证 (完成)2. 允许同时多用户登录 (完成)3. 每个用户有自己的家目录 ,且只能访问自己的家目录(完成)4. 对用户进行磁盘配额,每个用户的可用空间不同(完成)5. 允许用户在ftp server上随意切换目录cd(完成)6. 允许用户查看当前目录下文件ls(完成)7. 允许上传put和下载get文件(完成),保证文件一致性(此需求不做)8. 文件传输过程中显示进度条…
如果票选近二十年最伟大的发明,我相信搜索引擎肯定会占据一个不容小觑的位置,它不单是一项发明,更是一项成就,最大程度消灭了信息的不平等.既然人人都可以接触到海量的信息,那么衡量信息财富多寡就只剩下技巧这惟一的标准了:善用搜索引擎的都是信息时代的富翁,不懂搜索引擎的都是信息时代的负翁. 而像程序员这种必须终生学习的职业,搜索引擎就是我们的左膀右臂.懂搜索引擎就是我们的基本功,不,应该是童子功.只是大部分新手都在过分粗放的使用搜索引擎,而花几分钟时间了解搜索引擎的技巧和语法,就能让自己的信息财富来一个…
一.前言 最近开新项目,准备尝试一下 ReactNative,所以前期做了一些调研工作,ReactNative 的优点非常的明显,可以做到跨平台,除了少部分 UI 效果可能需要对不同的平台进行单独适配,其中的核心逻辑代码,都是可以重用的.所以如果最终用 ReactNative 的话,可以省出某一端的客户端开发人员.而我这里调研的主要方向,就是它对国内第三方 SDK 的支持. 在国内,开发 App,一般都是会集成一些第三方服务的,例如:升级.崩溃分析.数据统计等等.而这些第三方服务,提供的 SDK…
TRE=Tail Recursion Elimination 创始人是不愿意实现TRE的.他专门用了一篇文章来阐述原因. http://neopythonic.blogspot.com/2009/04/tail-recursion-elimination.html 1.不利于查BUG. 2.现有的1000递归深度够用. 3.递归不是所有编程的基础,也不是一个日常工具. 4.他举了个例子说明第四点,大概是指Python动态的特性不适合递归: def f(x): print 'original' i…
对于那些做后端开发的工程师来说,看LOG解Bug应该是理所当然的事,但我接触到的移动应用开发的工程师里面,很多人并没有这个意识,查Bug时总是一遍一遍的试图重现,试图调试,特别是对一些不太容易重现的Bug经常焦头烂额.而且iOS的异常机制比较复杂,Objective-C的语言驾驭也需要一定的功力,做出来的应用有时候挺容易产生崩溃闪退.一遍一遍的用XCode取应用崩溃记录.解析符号,通常不胜其烦,有时还对着解析出来的调用栈发呆,因为程序当时的内部状态常常难以看明白,只能去猜测. 对于真机,日志没法…
什么都别说了,咱心态已经炸了... question 题目戳这里的说... 其实就是叫你求下面这个式子的导函数: noteskey 其实是道板子题呢~ 刚好给我们弄个多项式合集的说... 各种板子粘贴的不亦乐乎结果一交发现自己 T 掉了,心态爆炸 斗胆把 YYB 大仙的代码交上去发现 A 掉了...(会不会被棕掉丫) 然后调了半天代码甚至还加了更多的优化结果发现跑得还是巨慢无比... 然后继续查 bug ,发现各种函数里面都没有区别,函数运行速度也差不了多少 于是只剩 NTT 里面的锅了,于是两…