程序员们,曾经是否有个bug让你开始怀疑人生

深夜调Bug:那次我被@OneToMany坑到怀疑人生 在一次看似普通的订单开发中,我被一个@OneToMany注解坑得差点怀疑人生。循环依赖、栈溢出、无尽的JSON嵌套,让我熬了整整一夜。直到我真正理解@JoinColumn、@JsonBackReference、@JSONField背后的逻辑,才彻底破局。 阅读详情

      相信程序员们都有一个共同的女朋友。这个女朋友总是阴魂不散,时不时还不忘调戏下男朋友程序员,而且你依然对她欲罢不能、想入非非。

      不瞒大家,最近这个女朋友找上俺了。她就是StringIndexOutOfBoundsException:

       优秀的程序员们一看就知道,你这是越界问题啊!还有的可能是工具类问题、逻辑问题、字符串截取,索引越界等等,说实话都对。然而 ,问题到现在仍然没解决掉;什么回事?先简单说下bug的由来,那是6月2号的上午11点钟左右,依稀记得当时是在写RecyclerView上拉加载和修改数据对应的数组位置,(时间有些长了,记得不是很清楚),写完马上弹出bug,时间已经到12点就没有当时解决,出去吃饭了,想的是先吃饭下午回来再解决。哪知道下午回来之后就解决不了,正好当天下午要搬家,回来简单百度查阅资料,有个前辈博客说那是越界问题,因为你获取的数据大于数组本身的长度大小而抛出异常,例如,String.length()<10;而你又要取index>=10的字符。心想,这个bug情况似乎有些不一样!修改数据对应的数组位置,在之前也改过几次,而且没有问题,且这个数组是集合数组List<NewsBeanData>[] msgSt;我只是修改了数组的位置【0】。

if (msgSt!=null) {
    nowList.clear();//清空缓存
    for (int i = 0; i < nowNum; i++) {
        nowList.add(msgSt[0].get(i));
    }
}

       那好,我们看第二中情况,当时不是在写RecyclerView上拉加载吗,搬好家之后,我把相关的代码注释掉,重新运行,问题依旧。情绪开始失控,接下来几天,又把一部分代码注释掉,开始进行排查,发现一个问题,在程序运行到报错那行就崩溃,后面的代码没法排查,注释也没有用。后来,重新又梳理一遍,思索,这个情况不太像网上大牛们说的那样越界的问题,首先能确定的是,逻辑代码没有问题,索引也没有问题,在bug出现之前是可以运行起来的,bug出现最大可能是后面新增的代码功能有误引起异常,最让人头疼的是,报错行代码没有问题,问题出现在其他地方,程序运行到报错行,后面代码没有执行,无法进行Debug调试。

       排查几日无果,情绪越来越不好,开始胡思乱想,为了逃避问题而选择玩游戏;在游戏里并不得到解脱,常常匹配到坑爹队友,情绪反而更加低落,破口骂人少不了,浪费时间不说,除了口出狂言,出言不敬之外束手无策,情绪下的言语和行动只不过是证明自己的弱小、证明自己没有办法解决问题而已。

      这让我想到了习得性无助。如果你每次去上高数课都发现自己什么都听不懂,每次做高数作业都像是看天书一样,那么你还愿意去上高数课吗?你还愿意去做高数作业吗?这种经历了挫折和失败之后,面对问题时无能为力的心理状态和行为就是习得性无助。习得性无助的人们往往不能给自己确立恰当的目标,遇到困难时容易自暴自弃,他们对于失败的恐惧远远大于对成功的渴望。他们不相信自己能够按照指定水平来执行某个行动,即自我效能感低,面对需要高质量完成的任务时他们有经常很强的焦虑感。期末考试时朋友圈流行的“我可能有一个假脑子”系列表情包便是低自我效能感的一种体现。

      话说今年的一期一会的谷歌大会,真的不把咱们程序员当人看啊!说什么人工智能、VR也就算了,居然在本次大会宣布 Kotlin成为Android 开发的1级编程语言,更好笑的是,你谷歌跟人家甲骨文公司干架就算了,居然搞个Kotlin编程语言还和Java互通。。。。。等等,谷歌干什么咱管不着,想想自己又要从零开始,又要多学一门语言,大写的尴尬啊!

      未来的世界变化不仅会变化得越来越快,估计还会让人丧心病狂。生活不都这样吗?

       本来改变就不易,我想现在的人们对未来更多的不是满怀信心、满怀希望,更多的是担忧吧!不敢说别的,估计上个厕所都能错过一个亿!你觉得这个很恐怖吗?不~~不不不~~~~~~,人家王思聪他爸一个小目标就是一个亿。人类就是一个自作孽的物种,为咋这么说?咱也不想这么说呀,要知道说一句谎话,要用十句谎话来说明这句谎话。喂~~喂喂~~~~言重了吧!好像有点了过了,来点正能量激励一下,担心什么呢?活在当下就好了,反正

再说了,今天不开心没关系,反正明天也不会好过。

       程序员是吃青春饭的,干这一行很难吃到退休。江山代有才认出,一代比一代浪,请做好从入门到被裁员的觉悟吧!

       通过二十多天的沮丧,问题终于解决了,但不是我解决的,说起来很奇葩,是bug自己不见 了。是这样的,首先声明代码没有太大的问题,只是之前有写错代码,可能真的是字符串截取索引越界,不过当时很快改过了,然而,运行程序bug一直存在,就好像Android Studio有记错功能一样,一直保存这个错误。那几天没法解决,沮丧几天后想了个办法,把报错的地方注释掉,先写其他的功能;写着写着,奇迹发生了,bug不见了,然而我并不高兴,总感觉有个更大的bug要发现,这时候还得 问问度娘,百度搜索:Android Studio run多次,经过一番查阅,终于知道问题发生的原因所在,他就是Android Studio2.0之后的逆天功能Instant Run。Instant Run作用是节约程序员在花大量的时间bulid,使用instant run, 在第一次运行之后,就可以快速的在真机中(或模拟器)看见修改后的结果。也正因为这样,instant run可能会有记忆功能,把错误也记住了(我是我的一种猜测),你接下来修改了代码,增加了代码,还会报错。如果大家以后遇到这样的情况,可以这样做,在Run菜单中Clean and Rerun找到它,点它运行程序

这是我在网上找到了一种解决方案。


出现bug的因素及解决方案:

1.80%的bug是程序员自己不小心、不认真、不负责出现的。这种情况解决方法就是多检查代码,检查再检查。

2.有些bug是工具出了问题。解决方法是检查、升级、换工具、百度

3.咱们程序员不怕bug,就怕不知道bug出在哪里。这种bug很难解决,最快最好的解决方法就是注释掉(别打我别打我,我也是这样过来的),注释排除法:重要功效就是确认bug出现在哪里。简单的说是找bug的方法。

.

.

.

.

N-2.转移伤害。当你绞尽脑汁还是没解决bug,这是你可以换个想法,假设你的一位程序员女同事出现了这么个bug,且她正在向你求助,你考虑如何帮助她。这样的话,你的注意力会转移,压力会得到一些缓解,且你的想法会更大胆,思路会更宽阔。

N-1.求助。向同事或者朋友求助,也可以到技术讨论区把遇到的问题拿出来大家帮忙,总之利用一切能利用的资源进行求助,大牛技术QQ群,微信公众号、知乎、优快云等等。

N.重写代码


一个小小的bug不值得你怀疑人生,不过人生还是值得你去怀疑的。


考完CAIE认证一年后,谈谈它对我的职业的真实影响(干货) 大门,让面试官愿意给你机会,但进门之后的发展,还得靠持续的学习和项目积累。说实话,当时的心态是“考都考了,总比闲着强”,对这张证书能带来什么实际价值,心里并没有底。这种广泛的生态认可,让这张证书的“流通性”变得很强——无论跳槽还是在原公司发展,它都是一个被市场验证过的能力证明。对我个人而言,虽然没跳槽,但在年度调薪和争取内部项目时,持证经历也成了一个有力的“加分项”。这种巨大的薪资差距,恰恰反映了市场对“能落地、懂技术”的深度人才的渴求。考完证后的这一年,我看到了两条清晰的职业发展路径在自己面前展开。 阅读详情

相关推荐

Ubuntu视频播放器怎么选?VLC、mpv、SMPlayer硬解与字幕配置指南

在Linux系统中,视频播放体验取决于播放器、解码器与显卡驱动的协同。硬件解码通过VA-API或VDPAU将解码任务交给GPU,能显著降低CPU占用,解决4K高码率视频卡顿问题。对于Ubuntu用户,合理配置解码环境与播放器,可流畅播放HEVC、多音轨及ASS特效字幕视频。无论是日常观影、番剧追更还是家庭影院场景,选择合适的播放器并正确启用硬解,都是提升体验的关键。本文围绕Ubuntu平台,详解VLC、mpv、SMPlayer等播放器的安装、硬解配置与常见问题排查,帮助你在Linux上获得流畅的本地视频播放

weixin_33801856的博客 505

那些让人怀疑人生的bug

最近写程序几近崩溃,因为总是遇到让人怀疑人生的bug。明明看来看去没有问题的地方,硬是能调一晚上也调不出来。 今天又发现了一个,switch case中,case 1,2,3 可以,但是往后面case 4,5...全都无法执行进去。又要崩了,然后找计算机同学帮忙看了下。如下图,若i不加{},则后面的都无法执行进去case. 才发现,原来case中,若有新变量定义,它就会直接影响后面的结果,因为变量定义的范围,只由{ }限定,case是限定不了的。所以会出现各色的bug。 这一个完全不起眼.

u013720996的博客 116

三边定位的最小二乘法运用

已知:条件基站到移动台的距离D,基站的坐标(xi,yi,zi) 求:移动台的坐标(x,y,z) 运用最小二乘法的核心是找到最小二乘法的矩阵形式即 Ax=B 在本次实验中通过三边定位计算得到 A=[A;2*(xi-x1),2*(yi-y1),2*(zi-z1]; %系数矩阵A b=[b;D1^2-Di^2+xi^2+yi^2+zi^2-x1^2-y1^2-z1^2]; %增广矩阵b

qq_26250141的博客 1万+

一个诡异BUG引发的血案(线程死锁造成的CPU利用率逐渐增高)

我首先声明,我有一些标题党的嫌疑,确实没有什么血案发生,顶多是我找BUG 时由于太用力把嘴唇给咬破了。

x32sky的专栏 6639

华为S5720交换机堆叠配置

S5720交换机,做下堆叠,两条线,交叉互联(即A交换机23口连到B交换机24口,A交换机24口连接B交换机23口)。PS:S5720堆叠可基于电口或者光口做,本次测试基于电口。 SWA配置 # 改名 [Huawei]sysname SWA # 最好先shutdown接口 [SWA]interface GigabitEthernet 0/0/23 [SWA-GigabitEthernet0/0/23]shutdown [SWA-GigabitEthernet0/0/23]interface G.

Markdown 6340

计组实验4 控制冒险与分支预测

目录前言实验内容背景知识分支预测技术⭐阻塞周期计算方法不开启 BTB开启 BTBpart 1 矩阵乘法与优化未开启 BTB 的分析开启 BTB 的分析part 2 设计代码使 BTB 无效part 3 循环展开优化矩阵乘法未开启 BTB开启 BTB结束语结论 前言 上一篇博客:计组实验3 mips冒险之流水线冒险 摸了半个月了。。。咕咕咕 今天来写计组实验 4 这个实验非常简单,就是有点难。 这个实验比较容易算错,或者是被模拟器出人意料的结果搞的神神叨叨的,所以今天来记录并且详细分析该实验。 注:请务必阅

AKGWSB 's blog 5666

程序员 Bug 修复手册

在软件开发过程中,Bug修复是程序员不可或缺的技能之一。以下是一份详细的Bug修复手册,旨在帮助程序员高效、准确地定位和修复Bug。

m0_56653160的博客 1176

从设计到实战:手把手教你用SolidWorks完成一个简易离心泵叶轮的水力设计全流程

本文详细介绍了使用SolidWorks进行简易离心泵叶轮水力设计的全流程,涵盖参数计算、水力设计和三维建模等关键步骤。通过实际案例演示,帮助机械设计工程师和学生掌握从理论到实践的转化技巧,特别适合低比转速离心泵叶轮的设计需求。

weixin_30621711的博客 229

最初程序员的思维“修炼”之四——Android平台开发的“强制关闭”解决思路

我和我的朋友参加一个比赛——物联网应用技能大赛,这个大赛所要求的技能有,硬件技术,Android平台开发技术,.NET平台开发技术,所以这是一个团队合作的比赛,基本上没有人能同时掌握这三种技术(在校生)。   今天的一个任务是:串口通讯实验。面向Android平台开发,要求把Android工程部署到测试机上,然后打开串口为COM1,COM2,COM3及相应波特率的串口。   我们碰到的问题是,...

weixin_34376562的博客 104

携程机票数据爬取实战:使用 Python 获取携程网机票信息

通过本篇博客,我们详细介绍了如何使用 Python 爬取携程网的机票信息,涉及了静态网页爬取(使用 Requests 和 BeautifulSoup)和动态网页爬取(使用 Selenium)两种方法。通过获取的数据,我们不仅能够进行票价分析,还可以构建更为复杂的预测模型或趋势分析工具。爬虫技术不仅能够帮助我们收集有价值的数据,还能够为商业决策提供数据支持。在实际应用中,我们可以结合更多的分析方法,如自然语言处理、图像处理等,进一步提升数据的价值。

2201_76125261的博客 1657

HCIE-Datacom笔试题库

关于HCIE Datacom笔试考试题目整理!

坏坏-5的博客 608

Bug分类和定级

Bug分类和定级一、bug的定义二、bug的类型三、bug的等级四、bug的优先级 一、bug的定义 一般是指不满足用户需求的则可以认为是bug,狭义指软件程序的漏洞或缺陷,广义指测试工程师或用户提出的软件可改进的细节、或与需求文档存在差异的功能实现等 对应三个测试目的: 1、为了发现程序的代码或业务逻辑错误 2、为了检查产品是否符合用户需求 3、为了提高用户的体验 二、bug的类型 对bug的划分,大致分为以下几类: 1、代码错误 2、设计缺陷 3、界面优化 4、性能问题 5、配置相关 6、安装部署 7、

回忆式~过去.的博客 3万+

【知识图谱】实践篇——基于知识图谱的《红楼梦》人物关系可视化及问答系统实践:part2知识获取与图谱构建、服务搭建

前序文章:其中原项目提供了关系数据如下: 其中五列数据表示:人物1,人物2,人物1与人物2关系,人物1所属家族,人物2所属家族。关系说明:以第一列为例,贾演是贾代化的父亲。下面我们就将这个数据放到neo4j中。这些需要去连接,需要安装这个包: 程序中,我使用去读取配置文件, 其中为了保持配置全局唯一性,使用单例的写法。 后面就是创建构建关系文件,构建neo4j图谱数据了,如下: 后期可能会将构建图谱内容使用flask去生成命令行的方式构建,暂时在开发的过程查看构建情况,便于调试。导入关系后,我们再查看

让算法融入生活,改变生活! 4080

那些让程序员怀疑人生的“玄学“Bug

这在分布式系统里是经典坑:Java里System.currentTimeMillis()返回毫秒,Unix timestamp是秒,Redis有的指令用秒有的用毫秒,你一旦在某个地方忘了乘1000或除以1000,就会出现各种"时间穿越"的灵异现象——过期时间设成一万年、限流器认为你来自未来、缓存以为该过期了但其实还早……索引重建归位‌:IDE之所以会出现"明明有这个类却报错找不到"、"代码跳转跳去了一个不存在的地方",往往是因为后台索引在增量更新时出错了,内存里的索引和磁盘上的代码"对不上账"

qq_41019429的博客 336

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

老程序员解Bug的通用套路

       程序员在很多人的印象里是一份严(ku)谨(bi)的职业,也是一个被搞怪吐槽乐此不疲的职业,程序员们面对复杂的代码敲打电脑时连眉头都不会皱一下,但是有一个词却是他们痛苦的根源,它就是Bug。       记得刚毕业入行时,我们老大派给我和另外一个新来同事的第一件事就是修Bug,要不是在学校敲过几年代码,还真不知道如何下手!和我一起进公司的另外一个同事完全就是以“看戏者”的身份,看我搞了...

程序猿老樊的博客 1万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

老程序员解Bug的通用套路_程序员如何解决bug

我还为大家准备了一套体系化的架构师学习资料包以及BAT面试资料,供大家参考及学习已经将知识体系整理好(源码,笔记,PPT,学习视频)7656219)][外链图片转存中…(img-8Z546JNH-1714787656220)][外链图片转存中…(img-VZVufMmB-1714787656220)]本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录。

2401_83977357的博客 980

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

测试开发程序员,你还酷吗?这些工程师开始怀疑人生......

测试开发程序员,你还酷吗?当别人问起你的职业,是否会有一丝卑微感,是不是更希望自己的头衔是经理、总监、主管之类的?面对琳琅满目且不断调整的需求,是否会以完成需求为目的,而不顾程序本身的优雅?是否觉得测试开发程序员就是吃青春饭的,迟早得转型到管理,不如趁早转,积累点经验?是否觉得自己做的事情很重要,但做成后被褒奖的却不是你,或者只是顺带一提?看到满屏的英文文档,或遇到搞不定的Bug时,开始怀疑人生?与女孩子接触的机会太少,真希望调到XX组? 是否觉得与其他人交流起来会有点困难?是否讨厌办公室政治,又不得不在其

m0_70102063的博客 167

十个糟糕的程序员的行为

原文:http://cocre.com/?p=1081 之前本站发表过《优秀程序员的十个习惯》以及《程序员需要具备的基本技能》,那是我们需要去学习和培养的。这里,我们主要讨论十个糟糕程序员的特征,主要是需要让我们去避免和小心的。1) 情绪化的思维如果你开始使用不同颜色的眼光来看待这个世界的话,那么你可能会成为一个很糟糕的程序员。情绪化的思维或态度很有可能会把自己变成一个怪物。相信你

陈皓专栏 【空谷幽兰,心如皓月】 2万+

程序员有话说 | 我不是程序猿,我只是 Bug 的搬运工

作者 | Berlinix责编 | 伍杏玲本文经授权转载自懒人生(ID:ldleworks)首先是入错了行。俗话说,女怕嫁错郎,男怕入错行。我就入错了行。我所在的行业,表...

程序人生的博客 1525

还在为副业焦虑?程序员的 “日志分析法”,帮你定位人生问题

程序员阿哲的副业屡屡失败,反映出许多技术从业者在跨界创业时的通病——习惯于代码世界的确定性,却在充满变数的副业中迷失方向。文章提出“日志分析法”,建议将查bug的思维迁移到人生规划中:1)全量记录关键细节,对抗记忆的选择性遗忘;2)筛选核心问题,剔除干扰因素;3)用5Why分析法追溯失败根源。通过案例展示,结构化记录能帮助发现“看似运气差,实则有迹可循”的真相,将失控感转化为可操作的改进点。文末建议立即开始用三行日志记录每日行动、反馈和思考,让模糊的失败

weixin_39332583的博客 704

一整天都在修复 bug 是啥感觉?

自我怀疑型:一个 bug 改一天,还是没成功,开始怀疑人生了。无动于衷型:bug 一筹莫展,我愁眉不展。我不说话,我就静静地看着你~崩溃抓狂型:没完没了的 bug,何时是个头?!无助无...

代码技巧 748

程序员的第一个 1024,我写了半年的 Bug

编译通过即是浪漫!

m0_59360502的博客 578

一个历时五天的 Bug

一个程序员在没有成长成为架构师之前,几乎都要跟 Bug为伴,程序员有很多时间都是花在了查找各种 Bug上。 我印象深刻的一个Bug, 是一个服务器网络框架无锁队列的 Bug 。那个 Bug 连续查找了五天的时间,才最后定位出来。 当时我们的分布式存储系统出现了性能瓶颈,定位后发现瓶颈是在服务器网络框架上,所以我们决定为此替换一个最新研发的网络框架。这个新的网络框架为了追求高的性能,采用了无锁队...

勇往直前的专栏 472

程序员生涯中写过或见过最大的 Bug 是什么?

先来聊老韩一个学生的真实案例。开发小哥很自信地做了个“优化”:改动了上传文件的逻辑,测试没问题,于是直接上线。问题在测试环境里没暴露,但上线后,高并发情况下线程死锁直接把服务“锁死”,所有请求超时,最后连排查都难,因为 Bug 藏在逻辑里非常不起眼的一行代码。比如某电商的“限时促销”功能,设置了从“11月4日凌晨2点到3点”开启促销,结果到了那天,正好碰上美国的夏令时切换,凌晨2点直接跳到了凌晨1点。代码提交上线,他美滋滋等着执行,直到整个数据库突然“蒸发”,页面打不开,接口全炸,公司客服被客户打爆……

m0_61562916的博客 502

关于我和程序员这条路

当我写下这个标题的时候,我正在怀疑我程序员生涯的正确性。 “35岁便是职业生涯的终点。” “个体价值被无底线的压榨。” 这便是这个职业的整体情况。 有时候回过头来看一些事情,很多事情实际上是误打误撞的因果关系。 要说因,大概可以追溯到高中时的某一天。 那天,我问同桌,你以后想做什么? 他说,他想写代码,做编程那块。 那个时候,我其实对编程的概念,恐怕也就仅仅停留在我读小学上微机课的时候,面对Win...

IT一刻钟 1566
上一篇: Android Material Design悬浮按钮和可交互提示
下一篇: NoClassDefFoundError: com/jcraft/jsch/JSchException
小红妹
博客等级 码龄10年 151粉丝 116原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值