程序员遇到百度不出来的bug都是怎么解决的

程序员遇到百度不出来的bug都是怎么解决的,第1张

笔者不同意下面网友的回答。程序员如果解决bug的水平停留在百度,那么本质上只是一个“面向搜索引擎的代码搬运工”,是不合格的程序员。

程序员对面bug,正确的“打开方式”是像福尔摩斯和柯南那样,寻找线索、运用逻辑推理来缩小问题可能的根因范围,最终精准定位。

常用的方法有:

1 坏境上下文变换法

2 工具调试法

3 版本回溯对比法

4 代码审计法

……

没有编程问题是stack overflow和Google解决不了的,假设你在编程中遇到了问题,你自己解决不了、你周围的的人都解决不了的时候,我觉得stack overflow、Google是你最好、也是最后的帮手。

作为一个程序员,我觉得Google、stack overflow是你必须要学会使用的两个工具,这两个工具本身并没有使用门槛,只不过因为一些众所周知的原因,很多人不能使用Google和stack overflow这两款工具。

Google主要还是方便,而且很多编程问题都需要用到英文搜索,当然现在百度在专业能力上也提升明显,不过跟Google也还是有比较大的差距,因此我还是强烈建议要学会使用Google,这会帮你在工作、学习上事半功倍。假设Google确实因为某些原因没办法很好的使用,我也建议你至少要会使用Bing搜索。

现在可以说stack overflow上没有你找不到的问题了,从IDE环境安装问题,到各类编程语言问题。算法问题,数据结构问题,调试,重构等等,几乎这里就没有你找不到的答案,可以说在stack overflow上你可以找到任何解决方案,并且上面的回答者基本上都是非常有经验,而且都是实际中遇到的问题分享出来的,这个工具一定要会使用。同理,除了stack overflow这个专业的垂直程序员问答社区,你也可以使用Quora这个综合问答社区,这上面也能找到很多问题的答案。

一些比较优秀的文本编辑器: Emacs/Vim,Visual Studio Code,Sublime Text,Atom,Ultraedit,Hbuilder等。

一些比较非常出色的IDE集成开发环境: visual studio,IntelliJ IDEA,PhpStorm,Haskell for Mac ,eclipse,WebStorm,GoLand,CLion,Android Studio,Xcode,QT等。

macOS平台比较好的第三方包管理工具: Fink,Macports,Homebrew等。

一些比较好的终端工具: Zoc7,iTerm2,Cmder,terminus,hyper等。

一些比较好的笔记软件、markdown工具、效率工具: Evernote,有道云笔记,为知笔记,Ulysses,MWeb,FileZilla,Snipaste,Kantu等。

虚拟机软件、容器软件: Parallels Desktop,VMWare Fusion,Virtual Box,Docker等。

我是个程序员,职务是linux底层驱动工程师。平时的主要工作是调试驱动,但产品遇到诸如死机、重启、不开机之类的问题时,也要参与查找原因。一部分问题,确实可以查看相关的log,然后百度这些log的关键字来解决;但更多的问题,牵扯的条件太多,并不是简单的百度就能解决的。

观察了周围同事们的做法,我总结出以下几种解决方法:

百度因为竞价排名的原因,搜索出来的结果有很多广告的成分,所以有时候要翻好几页才能看到一条相关的答案,有些甚至要翻几十页。

因为百度搜索使用的是SEO技术,即普通用户可以通过优化网站内容来提升关键词排名。

而这就会导致一个问题:你搜索关键词后展现出来的结果是有人想要让你看到的,并不是质量最好的。

也就是说,百度搜索结果被人为干预了。所以百度一直被网民所诟病。

但百度搜索不出结果,未必是百度的原因,也有可能是自己输入的搜索词不准确造成的。所以对于百度,我们要做到如下几点:

除此之外,百度搜索还有点小技巧,粥左罗《万字干货,彻底讲透搜索技巧,10倍提升你的搜索力(免费教程)》这篇文章写得非常好,我整理几点,仅供参考:

01 过滤目标内容

命令:“+”“-”

用法:通过“+”和“-”来对搜索结果进行过滤

比如在关键词后加上“-推广 -推广链接”就可以排除搜索结果中包含相应字样的链接。如果你发现广告还没有排除干净,你也可以再加上“-广告”通常就能彻底的消灭广告。

02 搜索包含某关键词的内容

命令:“intitle”

用法:通过“intitle”命令指定搜索结果中要包含的关键词,注意“intitle”后边连接的冒号是英文状态下的。

03 搜索某一个格式的文件

命令:“filetype”

用法:通过“filetype”命令可以限制我们要搜索文件的类型,注意“filetype”后边接的冒号也是英文状态下的。

04 搜索特定时间范围的内容

命令:“时间时间”

用法:通过“时间时间”命令可以限制我们要搜索的文件的时间,注意两个时间的中间顿号没有空格。

相对百度,谷歌、必应对于技术搜索,就相对准确许多,所以当你百度搜索不到时,尝试下别的搜索引擎,说不定会有新发现。

现在程序员使用的机器语言,都是国外的,更准确的说,都是美国的。所以很多论坛、资料等,都是英文。如果你只会用中文来搜索,某些小众的问题,当然搜不到啦。

所以,要学会使用英文关键字来搜索。

有时候甚至要去国外的一些论坛来搜索想要的答案,这就要求要有一定的英语阅读能力,不能一看到英文帖就放弃。

有时候不管你如何搜索,都找不到自己想要的答案,该怎么办呢?这种情况下,就只能硬着头皮尝试自己解决了。

或者,寻求同事或朋友的帮助,寻求大脑风暴,说不定就会有思路。

如果有些问题是因为新器件带来的,还可以找到器件供应商,让他们安排技术支持帮忙查找原因。

除此之外,还可以把问题整理好,写清发生的条件、复现步骤、测试方法、相关的LOG截图等资料,去一些技术论坛发求助帖,寻找大牛的帮助。

做技术时间久了,发现有些问题确实无解,根本没有办法去解决它。

这时候,我一般会尝试把它绕过,就是说,想办法让它无法复现,虽然问题还是存在,但是能把它掩盖过去。

比如有些驱动在开机启动时会加载不正常,那么就让它晚点启动,或者手动加载。这也不失为一种解决问题的方法。

以上就是我的建立,希望对你有帮助。

首先作为一个程序员,一个优秀的程序员最最最重要的能力就是解决问题的能力。这里解决问题的能力当然就包含了解决 bug 能力了

毕竟,程序员这一生,可能会写无数个 bug ,没有说哪个程序员敢保证自己写的程序没有 bug 。 所以,写了 bug ,遇到 bug 并不可怕,可怕的是你没有解决 bug 的能力 。

作为一个程序员,解决 bug 的途径有哪些呢?我们来一起聊一聊!

其实,每个程序员在学习编程的时候,都会使用编程工具,而现在的开发工具,其实功能都很强大。如果你自己合理利用编程工具,都了解和懂得开发工具的一些技巧,其实不仅仅能够提高开发效率,而且还能够帮助你解决很多编程中的实际问题。

debug 调试,大部分你常用的开发工具,都会有调试模式的,简而言之,就是你编程的时候,遇到了不是自己所想的结果的时候,你可以使用 debug 模式,来一步一步的调试,在调试模式下一般每一步都会显示所执行的结果,你可以看看在哪一步出错了,执行的结果与你预想的结果不对,那么你就能够找到问题所在了。

还有就是,开发工具的控制台,都会提示出报错信息的,现在的开发工具,都会直接告诉你哪一行,报了什么错。其实,很容易定位到错误的。你只需要在编程的过程中积累经验,知道报什么错,用什么方法来解决就行啦。

可是,提示的报错信息,我不知道用什么方法来解决的时候,该怎么办呢?这就是你需要积累的,也是问题中所描述的,就是通过搜索引擎来找答案。

不对,这里不应该是合理使用搜索引擎,应该是学会正确使用搜索引擎。比如:百度,你就不要用了,搜出一堆重复的信息,而且广告也多。作为程序员,建议你使用谷歌搜索。

其实,你在编程中所遇到的几乎所有的问题和 bug ,别人也同样遇到过,因为不管是经验丰富的老程序员,他技术再牛逼,也是初学者过来的,也都踩过你踩的坑。所以,互联网是个好地方,里面包含了你想要的问题的答案。

你只要把报错信息往搜索引擎上一放,回车一下,很多关于这个 bug 的答案就出来很多,你只需要找到跟你一样的 bug ,就能找到答案了。

在这里必须提一下这个网站,所有的程序员有必要学会使用这个网站,其实,你编程中所遇到的问题,这个网站上几乎都是由解答的。

Stack Overflow 可以说是最好的软件程序类问答网站了,给软件开发人员工作和学习提供了非常大的便利,以至于像小白,离了 Stack Overflow 简直都不会写程序了。

所以,建议大家一定要学会使用这个网站,对你编程肯定会有非常大的帮助的。

通过上面的方法,几乎应该能够解决到你所遇到的问题,但是,实在找不到答案的话,你可以问经验比你丰富的老程序员,实在解决不了,那就换种方法吧!

百度,谷歌,debug,断点调试,业务上的bug就需要问下同事或者产品。如果能知道大致范围,哪一部分错了,就换一种方法呗,一般都不会只有一种方法。

1reload

2restart

3rewrite and then goto 2 or 4

4reboot

5rm -rf /

6原谅我编不下去了[捂脸][捂脸][捂脸][捂脸][捂脸][捂脸][捂脸]

找bug跟医生看病的思路是一样的,要对症下药。得先把问题的根源找到,找到根源以后问题就容易处理了。搜索引擎找不到的问题,说明这个问题不是一个常见的问题,具有独特性,那么从bug出现的路径上一步一步去排查。必要时可以用排除法,尽可能的缩小排查范围。另外,当软件的业务逻辑比较繁多复杂的时候,一个结构清晰的架构能为你节省不少找bug的时间。还有,充分的单元测试能够帮你减少出bug的机会。以上均为个人看法,欢迎讨论!

一般程序员能碰到的bug无外乎其他上游程序员写库时手抖留下些不匹配或者容易溢出的问题,搜一下差不多能解决问题。如果是自己写的,那无非就是时序错误类型错误之类的,用break point一行行的调就好了。

再复杂点的bug就是程序员拿高薪的根本了,只可意会,不可言传~

仅仅靠搜索引擎、其他网站那必然无法解决大量问题,因为很多问题是跟业务逻辑相关的,是没有直接答案的。比如 游戏 开发有个界面一直无法显示,这个问题就不是百度可以解决的。问题需要调试分析,这和破案非常像,但在开发过程中更有利的是问题有机会可以重现。破案是逆向工程,需要反推。解决代码问题不仅仅可以反推,也可以通过阅读代码正向分析。下面说说如何debug一个业务逻辑问题。回到刚刚的例子,有个界面一直出不来,我们如何快速去定位:

1思考这个问题发生的可能性。比如 游戏 内大量界面都是正常的,那么可以对比正常界面代码和异常界面代码的区别,这是对比法。

2假设创建正常界面和这个异常界面的逻辑代码是一样的,那么问题就落到了这两个界面内部,继续在内部重复上面的对比法进行判断,直到锁定最终位置。

上面说的方法基本上可以杜绝卡在一个简单问题上,这是摆脱新手的一个过程。选择使用对比法或者其他方法的前提都是基于观察和对项目的认识,所以,搜集“案发现场”是最关键的。

其他的问题,不属于逻辑的,像其他网友说的那样,有些通过到github、stackoverflow等地方解决的。这些问题也不是直接就去查找的,它通常也有个分析过程。比如你使用了一个库,但是目前它不支持你的模块。对于新手,就是直接百度或者google了。实际上这样的问题也是有“案发现场”的。对于作者提供的api接口的统一性和便捷程度去推断作者在相关支持模块的位置以及命名以及拓展,再尝试在文件夹中搜索。如果都找不到,再去Google上获取更多的信息。重复推断、分析,决定如何拓展或者绕过。

综合上面的几种问题,可以看到的是都离不开对现场的观察和推理分析。这种能力也被称为经验。但是一般情况下你看不到它们这个分析过程,你能做的就是在实际环境中反复逼迫自己去思考,去训练。这个推理的培养,不仅仅是对事情,也是对人。

我在入行 游戏 开发的前期,也是类似的情况。卡在不同种类的问题上,有些在简单逻辑,有些在别人的代码支持上。后面解决的问题多了,就会发现里面共通的思维方式。常用的一些方法如下:

1对比法,比较正常与异常代码区别

2二分查找法。分段注释找问题,也会用在很多方面。比如最近版本突然出了一个奇怪bug,可以通过svn还原来定位。这个还原不是一个一个版本还原,而是用二分法去还原。

3增加信息。在怀疑的位置或者过程添加日志或者打断点辅助自己更好的推理。

4相似推理。比如一个引擎在api、性能使用程度上都非常友好,那么它在别的地方也有可能相对表现比较好。这时候如果有个功能我们的实现需要很复杂才能完成,那么就有可能是我们用错了。相似推理不一定都能正确,但会提供一些帮助。

以上。

很多人认为程序员是一个非常高大上的工作,现在更多人开始选择计算机方面的工作,但是一个优秀的程序员背后的付出不是所有人都能接受的。

程序员需要掌握的知识是非常多,并且还会面临很多困难,如果不能克服困难不断坚持,想要成功是不可能的。

下面福建电脑培训为大家介绍程序员需要克服的困难和掌握的知识。

一、程序员不可能一帆风顺在编程过程中,我们会遇到各种各样的问题,遇到问题解决问题是非常必要的。

在遇到问题的时候,不可能每次都让别人进行帮忙,学会自己掌握存在的问题,在问题中积累经验,让自己具备解决问题的能力。

二、技术更新太快很多人在开始学习技术的时候认为自己是非常厉害的,在学校里面得到很多人的认可,但是计算机行业的发展是非常迅速的,如果不能保持一直学习,一到两年之后就会被计算机行业所淘汰。

在学习的时候,福建IT培训建议应该每天坚持学习,了解计算机方面前沿的技术,让自己不被社会所淘汰。

三、两大学习能力1、学习能力学习能力是非常关键的,前面已经说过,计算机的技术更新是非常快的,福建IT培训认为如果没有很好的学习能力,很快就会被计算机行业所淘汰。

2、动手能力程序员需要编程首先需要掌握的是基础知识,但是动手能力才是最关键的,动手是需要编程最好的捷径。

多动手进行练习,不仅能够让自己掌握扎实的基础,还能找到自己存在的问题并且解决。

四、基础学习什么是基础学习呢?程序员需要掌握Java知识,并且还需要了解网络基础知识、计算机知识和框架知识等。

简单来说,北大青鸟福建计算机学院认为编程相关的知识都需要有掌握,了解其中所具备的内容,这样后续才能学习更加复杂的内容。

一、熬夜

很多程序员将熬夜变成了生活习惯,还口口声声解释“程序员只有在晚上效率才高”,这是非常扯淡的理论。有人将程序员做下图的类比,虽然比较贴切,但这种方式对你的健康伤害是最大的。建议你尝试一下晚上10点睡觉,早上6点起来工作的作息方式,也许会事半功倍。

二、久坐

有些程序员在电脑面前一坐就是一天,中间除了吃饭上厕所外,基本不起来动动。这是非常不好的习惯,时间久了,很容易得肩周炎、颈椎病,到时候后悔就晚了。建议每坐一个小时就起来动10分钟,主要是转转手臂和脖子。

三、外卖和泡面

很多程序员在饮食上也非常不注重健康,上班的时候为了贪图方便经常叫一些外卖,更厉害的是直接搞一桶方便面来做午餐。这里建议大家中午出去吃,荤素搭配,再可以弄点水果。

四、缺乏锻炼

建议在工作日下班后做一些简单的球类运动,乒乓球、羽毛球。

五、用眼过度

IT公司的员工的体检报告中大部分程序员都患有“慢性结膜炎”,当然对于这个病并不是长时间对着电脑引起的,但是用眼过度也会加剧“慢性结膜炎”的恶化。

建议大家平时准备防止眼干的眼药水,如果确定是结膜炎的话,还要及时去医院就诊。另外电脑的背景可以设成绿色,这样对眼睛也能起到一定的保护作用。

很多人都说程序员是很苦很累的职业,但是这只是外表看到的,如果不深处其中是无法感受的。

程序员也会出现很多无法解决的困难,除了身体上的累以外,在工作中还会遇到很多烦恼的事情,这些事情可能是什么呢?下面南昌电脑培训为大家具体介绍。

1、错误的团队如果你不幸选择了一个错误的团队,经常遇到问题是不可避免的。

很多时候并不是任何人的错,但是团队里面的人会因为各种问题感到不开心,或者对琐碎的事情感觉到厌恶,这些都是影响团队氛围的关键点。

如果其他人只关心自己的职业生涯,这将是一个糟糕的队友,所以南昌IT培训认为一个错误的团队会让你度过一个艰难的时光。

2、荒谬的要求一些项目需求就像科幻小说,非常抽象,而且根本不实际。

拥有想象力的项目肯定是好的,但想象力必须适应团队。

如果项目团队中有很多近期毕业生,那么南昌IT培训认为想要在项目中使用抽象内容是不太可能的,想要创建出最好的内容更是困难。

3、外行的期望过高的期望值反而会影响程序员的发挥,现在很多外行人对程序员的了解非常片面,导致对程序员的期望值过高,把程序员想象成超人。

其实对于程序员来说,一个项目的开发和实施是需要很长过程的,并且还需要进行多次调试,程序员需要更多的时间进行调试。

外行人应该对程序员做到正确的认识。

4、咖啡中度过夜晚在很多情况下,超负荷的工作是经常的事情,尝试完成超越身体极限的工作量。

南昌电脑培训发现如果当项目遇到问题的时候,需要非常尽力的去解决问题,这是会增加额外的加班时间,很多时候可能会直接工作到深夜。

对于程序员来说,遇到问题,及时解决问题是非常重要的,咖啡能够帮助程序员度过漫长的黑夜。

会的。身边同事工资翻了一番,但自己跳槽加薪难,面试无回复,跳槽加薪不高;我想离开一线的开发工作,做一个技术管理的职位。我对自己的技术实力和项目管理能力没有信心。不愿意写一辈子的代码,想寻求职业突破(进入知名公司,拿高薪)却找不到方法,缺乏明确的职业规划。这类朋友还是比较多的,主要是想学但没有方向,这应该是广大程序员工作人群的困惑。

很多Java程序员都将成为架构师作为职业目标,那么小编在这里主要从架构师的方向出发,如何快速、系统地掌握Java核心技术,成为架构师职业规划应该学习哪些技术在这里,小编为大家分享一些学习心得。

编程本质上是一种机动度量解决问题的手段,而数学是世界上最客观的知识之一。对于常规代码,每一行代码都有自己的数学起源,可以说一切都是一样的。因此,学习经典源代码是非常重要的。毕竟,让经典成为经典的是它深不可测的价值。经典源代码不仅可以构建一个系统,指导我们学习代码编写的例程,让我们从零开始学习编程。随着经验的积累,我们回顾这些经典的源代码,往往会有不一样的感受。它允许人们进一步理解技术的上下文,并从根本上思考代码的逻辑和连续性。

其实,刚开始的时候,我并不喜欢把自己的作品记录下来,更不喜欢把它写成微博,发布在公众号上。即使在公司里,我也嘲笑它,认为这只是形式主义。但在我被困住的那些年里,我一直在写作,让自己不去想那些事情。这次经历让我想到了用一种新的方式总结经验。乍一看,根据某一条目逐字逐句地输入你的工作经历似乎是在浪费时间。但在不断总结工作经验的过程中,我们对工作进行了更仔细的梳理。这实际上是一个思考的过程,在经验中寻找共性,并逐渐形成自己的工作方式。随着时间的推移,你会摆脱焦虑,找到一条适合自己的道路。

对于软件编程开发程序员来说,无效代码堆积以及代码质量低是很多新手容易犯的一些错误。下面我们就一起来了解和学习一下,减少无效代码的堆积都有哪些方法。

当曾经向往的职业变成一日又一日的无用代码堆积,多少让开发者有些心灰意冷,虽然无法保证整个产品质量,但至少可以在代码层面下点功夫。无用代码堆积这种现象在日常软件开发中非常普遍,对于需求频繁被修改的问题,根源在于弄清楚软件开发的目的是什么,代码有没有用的终决定者应该是用户,如果一段代码具备的功能符合用户需求,具备业务价值,那么就是有用的。

在软件开发过程中,需求变更和代码修改是很正常的事情,但这个不确定性需要在一定范围内。对此,佳的解决方案可能是迭代开发,也叫迭代增量式开发,将整个开发周期分解为若干时间段,每隔一段固定时间就对软件进行一次小迭代,每迭代几次就进行一次全面测试和大版本更新,对开发成果进行质量评审,这个过程重要的是听取终用户的意见,以便及时调整优化,避免无效需求,尤其是决策者拍脑门出来的决定。

开发之前,技术负责人务必准备好相应文档,确定好各工程师的分工,尤其是需要协同完成的部分。另外,团队尽量抽出时间和精力进行代码Review,并以降低代码复杂度为目标,如果不同工程师之间的代码间经常互相影响,可以考虑让这类程序员负责独立开发模块,降低对整个项目的影响。

长期以来,测试在国内的重视程度并不够,一个测试团队起码应该有白盒测试、效率测试、单元测试等各类专职人员,不建议在所有功能完成之后才开始测试,好是完成一个功能就马上交给测试,测试阶段应由测试完全掌握主动权,开发必须尊重测试人员的工作。

归根结底,丽江北大青鸟>

以上就是关于程序员遇到百度不出来的bug都是怎么解决的全部的内容,包括:程序员遇到百度不出来的bug都是怎么解决的、北大青鸟java培训:程序员需要掌握的知识有哪些、程序员日常生活面临的问题和挑战有哪些等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10065326.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-04
下一篇2023-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存