导航:首页 > 程序命令 > 程序员小何网站被打

程序员小何网站被打

发布时间:2023-05-31 14:54:43

‘壹’ 程序员的悲哀是什么

“码农”这个词,不管是不是从事IT工作的人,都略有耳闻。这个词的诞生无从考究,不知是程序员的自嘲,还是外行带有颜色的嘲讽。总之,对于这个词,我是既无奈又无力反驳。确实,工作中,我们大多数底层程序员每日做的工作相当于流水线的作业。

大部分程序员是悲哀的,不是情商、衣着、自黑之类,悲哀的是没有决策权。项目做成什么样,那是领导和产品经理的事;用什么技术框架,那是架构师的事;数据库的设计,业务那是项目经理和产品的事;而作为一个普普通通的底层码农,我们只需要拿到需求,然后等设计给图子,流水化的写出实现代码。我们只是一个执行者,别人叫你干啥就干啥。最后项目做坏了,裁员的是谁?程序员。

这就是一个普普通通的“码农”。读书那会,我的老师跟我说,“如果从业十年,你依旧在写最基础的代码,做一个码农,那么就不要做程序员了,转行吧”。现实中,每个公司存在最多的就是这些“码农”,那种掌握核心技术,产于项目设计,技术架构的毕竟是少数,大多数程序员都处于被动接受,按需求完成代码的任务。

做程序员越久,越是感到:我们就是新时代的手工艺者。只有少数的人,从手工艺者,变成了发明手工艺制作机器的人,少部分人变成了设计手工艺品的人,少部分人变成了车间主任罢了。

“码农”这个词有着深深地悲哀

见过太多刚入行的菜鸟,像极了曾经那个满怀激情,梦想的自己。当第一次接触java的面向对象思想时,那种兴奋,仿佛能用Java描述整个世界,仿佛自己就是上帝一般,在现实世界,创造出另一个虚拟世界。而现实中,一两年的流水化作业,冲淡了一切。

对于产品,仿佛是自己的孩子,从无到有,一点一滴,看着一个网站,产品,在自己的手下,满满长大,那种满足感,自豪感,油然而生,但是最后你希望它变得更优秀时,却发现它不受你控制,仿佛养了好几年的儿子,被人教唆去做坏事,你不能说任何话,因为抚养费不是你出的。

决定你有没有决策权的是你的纵向位置,也就是在本行业金字塔的位置,出类拔萃者说话就响。过惯了咸鱼生活,但谁又甘心做一个“码农”,我们希望发出自己的声音,成为那个有权利选择的人,这一切需要提高自己的技术,能力作为支持。在国外,程序员被称为程序设计师,而国内“码农”,区别可想而知。

‘贰’ cc攻击是什么怎么防御网站被cc

什么是CC攻击?CC攻击的前身名为Fatboy攻击,是利用不断对网站发送连接请求致使形成拒绝服务的目的。攻击者通过代理服务器或者肉鸡向向受害主机不停地发大量数据包,造成对方服务器资源耗尽,一直到宕机崩溃。

如何防御CC攻击?

理论上服务器配置无限增加就可以防得住CC攻击,CPU内存带宽配置越高,抵抗能力越大,但是这只是理论上的,就好比你是一个身强体壮的汉子,跟一群人打架,三四个人也许对你毫无压力,但是如果几百个人呢?一人一口水你都挂了。

所以防御CC攻击我们需要帮手。

一,高防IP

高防IP是指拥有专业的防火墙的IP转发节点,可以有效拦截非常攻击。就好像一群人肉搏,你却拥有盔甲,对方肯定是打不过你的。

二、高防服务器

和高防IP类似,高防服务器是指拥有专业防火墙的服务器,可以有效拦截CC攻击。

三、高防CDN

高防CDN是指设置在全国各地的高防节点,通过分散攻击来达到防御作用。就像打群架,对方来100人,但是你有15个帮手,而且这些帮手个个都是练武的,一打10不是问题,那么问题就解决了。

三种防御方法主机吧比较推荐高防CDN,因为误杀率低,而且成本也低。比如网络云加速,专业版代理价也才795元一年,非常合算。相关链接

‘叁’ java程序员试用期会被开除吗技术差,天天打酱油 不知道做什么

试用期被开除的情况肯定是会有的,公司录用你,你在试用期表现不好,那肯定会开除你的啊,为什么有试用期,其实就是看你是否能够融入项目组,能够体现自己的优势,有潜力为公司带来利益,所以我希望你还是积极一点,不知道就多查查资料,虚心向项目组的其他人员请教,早点融入项目组,那样就差不多OK了,

‘肆’ 作为程序员自己的小团队,怎么找私活

很多程序员上班一般都是一个项目做两到三周,如果完成自己的那一块的话,就可能会有相对多的时间,这个时候,很多程序员就会想着多赚一点外块,这个时候就会利用自己多出来的时间来接点私活,也有一些玩得好同事就会私下问到我这个问题,今天就来个大家分享一下我的一些经验吧。

第二个通过这个途径找到我的甲方,叫鹏哥。开发一个网站,总价一万多,吃了上次的亏后,我自己就不想参与了,就找了一个读者(小李)做。结果这个项目烂尾了。小李交付的产物我自己都觉得不好意思,bug 非常多。在我看来,既然项目的订金已经收了,作为开发人员,至少应该交付一个说得过去的产物——负责任吧。

很遗憾,个人品牌招揽来的前两个私活最后都搞砸了。这里有必要总结一下:作为程序员,既然打定主意要接私活,那么接到的时候一定要珍惜。如果一开始觉得价钱低,就趁早拒绝,免得因为需求变动等等原因砸了招牌。

当然了,通过这个途径也做成了四单,每单的价格差不多两万。这里就不再详谈了。

‘伍’ 程序员遇到很难的技术问题是怎样的感觉

昨天刚领一个线上P0级重大事故,持续时间1小时,影响范围全站 !准确的时间点是下午17点开始,具体问题定位且听我下文细细道来。


先说感觉,那感觉真是太刺激了,本来下午五点,昏昏沉沉的,瞬间一个激灵就清醒了(想象一下高中课堂,你在打瞌睡,突然老师走到你面前给你一下子的感觉),原本准备再过一小时吃晚饭了,吃完晚饭再摸鱼到21点就可以下班了呀,别问我为啥到21点,问你就不是程序员!


带着无比紧张且颤抖的心情开始定位问题,先来个错误日志尝尝鲜:




整个事情的发酵是这样的:

1、下午五点开始有少量的慢sql报警,没有人当回事,因为这种事情总发生,虽然大家都知道在实际开发中如何避免慢sql,但是整个团队要想完全避免慢sql却很难;

2、五点十分左右,开始零星有用户反馈指定功能不可用,SLB开始报警,技术开始介入排查;

3、十五分左右,客服部门电话开始爆炸,用户密集反馈指定功能不可用,技术部开始重视;

4、二十分左右,所有服务大面积出现接口无法响应,整体服务不可用;

5、我们一开始定位觉得是MySQL的问题,因为前面有mycat的慢SQL报警,后来定位并不是MySQL,因为MySQL的内存、连接数、流量这些指标都很平稳;

6、最终在五点三十分的时候我们定位到是ES出问题了,因为所有的Java服务不可用最终都指向上面的错误日志,bbo提供的服务线程池满了,再有请求进来直接拒绝了,查看这个服务的代码,最终查询的是ES,此时的ES进程已经处于假死状态。


那接下来大家说怎么办?如何快速的恢复线上服务?



重启!


是的,只有重启大法此时是最快的解决办法,你不可能说保留ES事故现场,让我用arthas之类的工具来现场分析jvm内存情况。

然而重启之后服务依旧是不可用,接口还是无法响应, 大家知道这个时候是什么原因吗?为什么重启了ES服务还是不行?


后续继续重启报错bbo日志的相应服务,当这些服务全部重启完毕后,我们的服务终于恢复访问了,这个过程持续了十几分钟,确切的说,直到17点五十多分,我们的所有服务才恢复了访问。


接下来就是事故总结、相关责任人、产生问题的原因、接下来的优化方案,全公司邮件通报!


你说这个难不难?本身并不难,难的是事情紧急且重要,这个时候你慌了啊,乱手乱脚的,大家你一言我一语的,如何冷静提取有效信息然后尽可能快的解决生产的重大故障才是最难的!


最后,当一切都恢复平静的时候,你会发现:“卧槽,好累啊!”。

虚脱的感觉!

最后祝大家程序员节日快乐,今年可是程序员的本命年哦



2020 = 1024 + 996 = 404 + 404 + 404 + 404

这种感觉能难受,很压抑。

技术难题,对于程序员来说,是经常有的事,关键是如何面对吧。

说下我的事情,虽然也会写点代码,但并不是以此为正业,所以对于真正的程序员来说,可能说法会有点偏颇。

遇到难题时,一般都在网上搜索解决方法,一般来说,都有很优秀的程序员分享他的劳动成果,所以一般都能解决问题。但也真正碰到难的问题,一个就是循环的问题,无限极菜单问题,当时都是找了很久,看了很多遍才明白过来,当时自己是几天都不太开心,也不太想说话,总是在测试着程序。挺烦也挺不开心的。只是最后做出来了,心情就好多了。

这是我的一些经历,当然,如果全职程序员,可能压力就更大了。

如何形容这种感觉呢?焦躁,紧张,失落,无助,亚历山大...

再多词可能都描述不清楚。本人在工作中经常遇到难题,有些问题一两个月都搞不定。遇到这种问题,估计只有下面这张图的表情能描述此时此刻的心态了。

程序员遇到的难题其实分为两种,一种是没有办法定位清除的问题,另外一种是定位清除了,但是没办法,或者很难解决的问题。

难定位的问题

所谓难定位的问题,其实就是你根本不知道这个问题是什么。比如系统突然挂掉了,你从现有的信息根本不能确定问题在哪。这个时候你剩下的可能只有满脑子的问号了。


如果系统只挂了一次,后面不再出问题,那就很难找出问题的根源了。不过这样也有好处,那就是问题的影响的程度相对较轻,毕竟不容易出现。所以在软件开发中通常不是什么问题都解决的,因为不是所有问题都能搞清楚是什么问题,谈何解决呢!

难解决的问题

难解决的问题是问题搞清楚了,但是基于现有架构很难,或者没法搞定。遇到这种情况,通常先是很高兴,兴奋,然后就只剩下无奈了。

当然,从技术层面来说并不是完全解决不掉。只是如果要解决需要涉及架构调整或者其它方面的改动,修改调整的内容太多。这种情况下就要考虑利弊得失了。


如果改动太大,可能会引入很多新的问题,可能得不偿失。因此,遇到此类问题可能会采取一些规避方案。

当然,在开发和运营当中遇到各种问题是很正常的,关键是遇到不同的问题采用不同的策略。首先保证的是业务的正常运行,然后是考虑是否需要彻底解决。这样慢慢调整,心理压力会小一些。

作为一个工作多年的老码农,在工作也遇到过一些艰难的技术问题,就以切身体会谈谈对这个问题的看法。

首先需要明确一下,问题是否困难除了取决于问题本身之外,还在于解决问题的人的水平,也许对你很难的问题,在别人看来不过是小菜一碟。明白了这一点,那么这些技术问题也就成了考察程序员水平的试金石,有些人可能会因此气馁,甚至放弃;而有些人则通过解决问题学到了很多新的技术,也让自己进一步成长。

记得多年前看工作中要用到一款开源库,那时候刚学完C++不久,自以为对面向对象了解甚深,然而学习这个库时却是一头雾水,最后在经过泡论坛,然后又认真的学习了面向对象设计模式,后来不但能使用那个库,更重要的是对面向对象编程有了更深的认识!

后来还有很多类似的事情,刚开始时感觉无比困难,但是通过自己的努力,或求助他人、或查阅资料,当最终问题解决时,你会发现自己又牛逼了一些,然后再遇到一些新的问题,如此循环……

其实编程也是一个学习的过程,就如同爬山一样,每一阶段都会有一些山头,只有当你爬上山头才能欣赏美丽的风景,但是当你爬上一座山头的时候,就会发现更高山峰!只有当你爬上最高峰,才能“一览众山小”,可是到那时,你可能会向往地球之外的天地!

很难解决一般就是遇到某些瓶颈了,不同瓶颈的感觉是不一样的,但无非可以归结为下面几类。

成本原因
不让马儿吃草,还想让马跑。这个是有些不太理解互联网的一些领导的错误观念,他们会给你安排一个老旧台式机,想要让你承载几万、几十万并发的秒杀系统,你当然很难解决。
外界的评论可能是,“这帮程序员是吃干饭的么?这系统也太垃圾了!”
老板的评论是,“我这台式机也不少钱呢。”
程序员的评论是,“这抠门老板不会是个傻子吧。哎,再优化优化吧。”

当然,有些情况也是能够理解的,公司明白需要更好的设备,但是由于成本控制,不得不在某些方面节省。但换句话说,设备成本是占不了一个大头的,可能有其他方面的成本更加需要收紧。

如果是因为成本原因,我们的心情可能是无奈,又有些不能施展拳脚的束缚感。


历史 原因
举个例子,系统用了5年了,迭代了N个版本,在面对新的需求的时候,就会出现需求限制于系统的情况,常常会有程序员说,这个实现不了,那个不符合现在系统规则。其中很大一部分是这些年的积累,欠下的技术债造成的。俗话说,大船难调头。

这种情况更多的出现在刚创业之后的几年,由于一开始的快速迭代,追求先把业务流程跑通,先生存再规范,会让一开始的软件开发流程并不那么规范,如果在1-2年内没有进行重构,那么积攒的3-5年的技术债就会慢慢把你压得喘不过气来。

解决这种情况,一是需要时机,给出足够的空间和时间让技术团队重构,二是需要魄力,你得有成功的把握,不能干着干着说不行了,咱们还是回到原来吧。

如果是因为 历史 原因,我们的心情可能是期待和渴望,又有些对现状的无奈。


能力原因
虽然说专家很厉害,但说白了,大部分企业需要的研发人员,还到不了需要专家的级别。所以,一般而言,没有什么技术是攻克不了的。如果真的遇上了,那就说明你的公司已经到达了一个新的层次,从而需要那个层次的人员来解决,可以通过外聘或者顾问的方式,引进新的技术。

如果是因为能力原因,我们的心情虽然有些力不从心,但又为公司在新的台阶而高兴。

不管怎样,程序员是一群追求美好的人,不管是外部限制还是内部限制,不能解决的难题对于技术人员来说总是很憋屈的。

不能着急,慢慢分析,找到问题点,没有解决不了的问题

程序员的技术问题,排除架构师技术选型错误以外,都是程序员的功夫不到家所致。

1,面向网络的程序员会第一时间问度娘,各大社区求助大神。

2,面向源码的程序员会第一时间查看源码实现,查找api文档,思考解决方案。

3,不管技术如何发展,架构如何延伸,不变的是基本功,再先进的组件都是由基础语法书写出来的 。

练武不练功,到老一场空,共勉!

首先说下这个很难的技术定义,个人认为在你知道之外的知识都是很难的,一旦你深入了解其使用方式,原理,甚至阅读了他的源码,你会觉得有的时候会恍然大悟。程序员是一个不断要学习的岗位,就要面临很多从未知到已知技术的时候,每当遇到这样的情况时候,总有种不解决了这个问题,睡不着觉的感觉,心里不踏实,总是想尽各种办法去解决这个问题。甚至可以一直追查这个问题。也许这就是一种执拗吧

我老公最近就遇到一个大石头需要敲碎,我作为一个旁观者,都挺心疼他。

他还在读博,最近遇到的问题是他一个项目上的问题,也跟他的毕业设计相关。他刚读博的时候确定了一个方向,去年开题的时候他觉得这个方向没有什么前景,真的是考虑了好久要不要换,如果不换,就是安稳的毕业,换的话接下来的一年多时间他会很艰难,很多新的问题需要一一克服,最后他决定换了,他说他读博就是为了提高自己,还是想挑战一下。

年前,系统板设计好了,然后最近做好回来了,开始调试,说这个板子跟个石头一样,不工作。本来就是礼拜一到礼拜六待在学校不回来,周日是休息的。现在放假回来都是在啃变压器的东西,早上起的很早,晚上又很晚。真的挺心疼的,他还安慰我说,他又要进步了。挺担心他的身体的,我特别希望时间能快点过去,能顺利毕业。他却不希望,总觉得时间过的太快,没有时间搞研究。

今年的生日愿望,希望他科研顺利,身体 健康 。

以我的从业经历,说说遇到很难的技术问题是什么感觉吧: 兴奋、充满挑战性 。尤其是在开发中遇到了技术难题,很多情况下真有种可遇不可求的感觉。

我认为能遇到技术难题,至少证明这个工作是有价值的。 这种价值体现了两个方面,一是你的工作在整个产品开发中占据重要地位,甚至是核心地位。二是你的认知和经验,仍然有成长的空间。如果你的工作一直没有遇到难题,轻而易举地就解决了一切,那么很可能是你没有机会深入重要的核心部分,或者你的工作性质可替代性很高,简单重复性很高。

分解法。 把技术难题拆分,尽量的单元化、模块化,这样有利于逐步攻破,逐步解决。主要是降低技术难度,寻找真正的难点所在。如果问题无法拆分,就是那么一个点,那么需要逆向思维,可以先把问题扩大,看看涉及面有哪些,然后再缩小范围,锁定关键之处。

刨根法。 把技术难题抽象化,理论化,从根本的源头去解决。很多技术问题,从基础理论的角度去看,其实真的不难,只要你能定位到相关的技术点,困难点,知识点,就很容易进行快速解决。解决的终极办法就是从理论上彻底解决,做到知行统一。

讨论法。 三人行,必有我师。很多情况下,所谓的技术难题,在别人的眼中,也许并不是难题。很多情况下,小组讨论,交换意见,方案互补,就可以解决难题。有些情况下,还需要和供应商一起讨论,主要是补充信息的错漏。经常出现的芯片问题,很多情况下供应商都更加有经验。因为供应商有更多的使用客户,有很多解决问题的经验。最主要的是,芯片是他们设计的,他们更加清楚缘由。

没有绝对的技术难题,有的只是尚未解决的技术难题。

‘陆’ 老胡是名程序员又去东北游玩与一位大汉发生争执,大汉吼了一句你瞅啥,老胡说什么才不会被打

老胡只要说“不瞅啥”就可以了!东北话“你瞅啥”的意思就是“你干啥啊?你想咋的”,只是一种询问语气,没有打架的意思。所以,老胡只要正常语气回复一声“不瞅啥”就没事了,也不会被打!

‘柒’ 如何避免网站被攻击

如何做好网站安全防御:

(一)网站数据定期备份:定期备份网站数据可以用来恢复被攻击的网站,即便网站被攻击或误操作删除一些网站信息,可随时恢复。为此网站运维,网站备份才是硬道理。

(二)网站程序系统更新:网站程序和服务器系统定期更新使用的版本、补丁,可消除一些存在的安全漏洞,以防给黑客带来可趁之机。

(三)定期查杀网站病毒:定期查杀网站病毒可以防止黑客的进一步破话或窃取网站数据,也可以及时删除入侵的网站后门漏洞文件。

(四)网站文件权限设置:对网站服务器文件合理的设定权限,比如部分执行程序的重要文件应当取消写入或执行权限,可避免黑客篡改网站数据。

(五)网站域名开启https数据安全传输协议和CDN速,开启https和CDN,可以更快的、安全的运行网站,可以隐藏自己的网站真实ip,一定程度上预防DDoS攻击、CC攻击、域名劫持等安全隐患。

(六)网站如何防御DDos攻击和CC攻击?可使用高仿服务器:高防服务器具有高性能、高带宽、高防御的特点,在安全上、运行上自身具备一定维护的基础后盾,给后期维护带来了不少的方便,但是造价高昂,这里主机吧推荐用网络云加速,网络云加速是网络旗下为网站提供一站式加速、安全防护和搜索引擎优化的产品。网络云加速正为数十万用户的近百万网站提供CDN、网络安全和SEO服务。每天处理十亿级的PV流量及数百亿TB的数据流量,并提供市场顶尖水平的稳定性和抗攻击能力。相关链接

(七)定期更新管理密码:网站密码可被离职程序员记录或黑客入侵暴力破解获取,定期更新网站后台密码和远程服务器登陆密码可有效预防数据损失。

(八)定期查看网站日志:网站运行数据的记录都在网站日志里记载,开启并定期查看网站日志,清晰地了网站运行的轨迹,是网站维护的重要方式之一。

‘捌’ 澳洲程序员吐槽:收入被吊打,想回上海。网友:国内加班加吐血!

大家都知道,编程起源是在国外,国内互联网发展也不过20年左右,所以这其中的差距是不言而喻的。我们互联网落后国外的地方肯定是很多的。但如今的中国开始大力发展互联网,从马化腾到马云再到李彦宏,如今国内的互联网移动通讯迅猛发展,移动支付更是全球领先。以前很多业务我们可能会主动去和老外合作,但如今很多业务估计老外会抢着更我们合作了。那么,外国程序员和中国程序员的技术,区别在哪呢?我们来看看这位在澳大利亚工作了8年的程序员怎么说了。

“目前在澳大利亚当程序员,墨尔本,但是还没买房。本科东北一所985,毕业后工作一年就来了澳洲,现在毕业8年了……收入被北上广工作的本科同学吊打。很想回上海,但是不知道自己技术行不行,澳洲这边程序员技术有够差的...技术好的涨幅高,技术一般的就涨幅很低很低。我在的公司福利很好,吃的三餐全免,医疗几乎全包(包括私立医院),衣服经常会有品牌店(clombia等)打折卡,每年带薪假15天,还有油钱补助,因为是运营商,话费也几乎全免。我觉得除了工资低其他都挺满足的”这样的吐槽也是立马引起了国内程序员的一片群嘲。一起来看看。

“澳洲1055,中午还休息两小时”

“呆着吧,比国内强,医疗,教育,税收,房产 这四大问题已经难不倒你了,你还在乎什么钱不钱的,就是虚荣。别小看你的医疗保险”

“你开心就好吖,何必和同学比较工资收入?收入一千万又有什么用,如果是加班加到吐血,冷落家庭和亲人,得不偿失吧。”

“兄弟,让下一代接受文明 社会 教育难道不好么?工作最终不是为了生活么。 那里有 歧视,国内就没有么?你是没体会过官府的厉害哈。光盯着收入有啥意思?RMB的信用在国际上是什么样难道不知道么?要整体看收益的。还有怎么样出去?”

“我是不建议回来,我澳洲同学回国一直感叹国内物价高,主要是压力大,无论是工作、家庭、亲戚等方面压力都大,国内环境很复杂,她最后去了南京一高校做研究员,一直在想办法再出去。年纪大了你就会知道,压力大关系的问题很多,精力是主要问题。”

“老哥以前我也是外企的,感觉太闲,所以出来了,外面真的很累很苦,还未必比外企性价比高。不过我才26还单身,能吃得消。你可以自己下班学学技术看看书,然后自己接私活啊,不一定非得回国加班,国内百分之九十的公司干的都是业余开发,其实没啥技术,还不如自己去github上学习开发呢”

“国内加班太恐怖了,那些炫耀收入的只怕没告诉你他们每天几点回家、脊椎腰椎有多痛,似乎是文化认同的问题没有解决,所以想回来……问题是国内的文化你也不一定会认同,可能依然觉得被边缘化。闲暇看看人类学 社会 学的书,亲测有效。”

各位读者你们怎么看的呢,国外好还是国内好呢?

‘玖’ 网站怎么了怎么突然打开不了了

一、域名过期,域名是网站的入口,如果这个入口失效了,那么网站是肯定打不开的,虽然这种情况比较少见,但还是容易被人忽略,如果你的网站突然打不开了,首先就要排除域名是否过期。
二、域名空间出现问题导致网站打不开,分为以下几种:
1、域名没有正常纳仔备案,国内服务器域名是需要备案的
2、域名没解析;
3、空间没绑定;
4、服务器不稳定(主要表现在网站加载时慢时快、经常性颤磨打不开)
三、程序问题导致网站打不开
网站程序出现的问题,最多的还是挂马了,所以程序员在写程序的时候要考虑到这一点,也要随时做好数据的备份。
四、客户端问题,浏览器不兼容,或者异常崩溃都会导致网页无法打开。更换浏览器测试即可。
五、网络原因,如果网络不通,网站也是打不开的。建议采用Tracert(跟踪路由)的方式,查看访问途径的设备是否有异常的延时,采用代理访问的方式使用其他线茄茄斗路测试速度

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

笔者不同意下面网友的回答。程序员如果解决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就需要问下同事或者产品。如果能知道大致范围,哪一部分错了,就换一种方法呗,一般都不会只有一种方法。

1.reload

2.restart

3.rewrite and then goto 2 or 4

4.reboot

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

以上。

阅读全文

与程序员小何网站被打相关的资料

热点内容
抖音算法到底是什么 浏览:126
哪个vlan技术对报文加密 浏览:570
单片机定时电路 浏览:672
山西平台服务器云主机 浏览:700
按摩肚脐解压视频 浏览:989
php55安装教程 浏览:137
云服务器怎么查找本机域名 浏览:22
qd123y压缩机参数 浏览:385
程序员妈妈怀孕 浏览:490
金普国际编程 浏览:537
java什么是引用类型 浏览:944
这是命令吗txt 浏览:314
支付宝android包名 浏览:154
eclipsemaven命令 浏览:68
24路服务器配什么cpu 浏览:466
压缩文件和解压文件哪个快 浏览:675
亚马逊云服务器视频通话 浏览:912
金融知识app哪个好 浏览:978
农行理财app收益在哪里 浏览:969
暗淡的命令名项目表示该命令 浏览:212