All Questions
Questions Per Page:
  • 算法复杂度这件事 这篇文章覆盖了计算机科学里面常见算法的时间和空间的大 OBig-O 复杂度。我之前在参加面试前,经常需要花费很多时间从互联网上查找各种搜索和排序算法的优劣,以便我在面试时不会被问住。最近这几年,我面试了几家硅谷的初创企业和一些更大一些的公司,如 Yahoo、eBay、LinkedIn 和 Google,每次我都需要准备这个,我就在问自己,“为什么没有人创建一个漂亮的大 O 速查表呢?”所以,为了节省大家的时间,我就创建了这个,希望你喜欢! — Eric   图例 绝佳 不错 一般 不佳 糟糕   数据结构操作 数据结构 …

    编码之妙 Asked on 2016年9月10日 in other.
    • 1007 views
    • 0 answers
    • 0 votes
  • 无论工程师做了多少枯燥的测试工作,无论他们熬了多少不眠之夜在编程,但最终他们得到的是:会导致软件彻底出问题的 bug。你知道吗,由于软件故障(bug),美国经济每年在浪费生产力、返工和实际毁坏上损失了数十亿美元。 软件故障背后的常见原因有: 错误的结构定义和底层设计; 脱离大量可靠数据和分析的强制性计划或里程碑日期; 没有考虑和调整需求增长; 整合过量员工去实现不现实的进度压缩; 利益相关者基于直觉或情感的谈判; 沟通不畅、自负以及消极的态度; 本文列举了一些由软件 Bug 引发重大事故,其结果是大量金钱损失,甚至人员死亡。如果你有任何建议或者其他案例,欢迎提出。 12.英国护照系统(1999年) 英国护照办事处启用了一种新的计算机系统,而这种新系统无法及时向超过 50 万公民发放护照。后来办事处赔偿了数百万,员工也加班为在雨中排队等候护照的人们提供雨伞。 损失:1400 万美元 故障原因:办事处没有经过适当的测试,没有对员工进行有关新系统的培训,就推出他们的软件。另外,(与新系统同时发布的)新法律要求所有 16 岁以下的儿童在出国旅行时都要拥有一个护照密码。这就导致了护照需求瞬间激增,从而致使新软件系统负载过重。 11.水手一号探测器(1962年) 1962年,发射往金星的水手一号探测器在发射 293 …

    编码之妙 Asked on 2016年9月10日 in other.
    • 1113 views
    • 0 answers
    • 0 votes
  • 我在《从你的bug总结经验教训》一文中写道,我一直在如何跟踪遇到的最有意思的bug。我最近回顾了全部194个bug(时间跨度达13年),看看从中学到了什么经验教训。下面是最重要的几个经验教训,分为编码、测试和调试这三大类: 编码 这些是在过去給我带来棘手bug的所有问题: 1. 事件顺序:处理事件时,很有必要提出下列问题:事件是否可以以一种不同的顺序到达?如果我们从来没有收到该事件,会怎样?如果该事件连续出现两次,又会怎样?即使通常情况下这永远不会出现,但系统(或交互系统)的其他部分中的bug可能会导致这出现。 2. 处理太早:这是上述“事件顺序”的一种特殊情况,不过它已引起了一些棘手的bug,所以它自成一类。比如说,如果信令消息接收太早,在配置和启动过程完成之前接收,许多奇怪的行为就会出现。另一个例子:当某个网络连接还没有被列入空闲列表就被标为断开。调试这个问题时,我们总是假设它在处于空闲列表时被设为断开(但为什么它又没有从列表上撤下?)。没考虑到有时动作发生太早要怪我们没想到。 3. 隐蔽故障:一些跟踪起来最棘手的bug(一方面)是由出现隐蔽故障、继续执行而不是給出错误的代码引起的。比如说,系统调用(比如绑定)返回未加检查的错误代码。另一个例子:遇到错误元素后,直接返回而不是给出错误的解析代码。调用在故障状态下继续持续一段时间,这大大加大了调试的难度。最好一旦检测到故障情况,就返回错误。 4. if语句:有几个条件的if语句給我带来了许多bug。即使if语句概念上很简单,有多个条件需要跟踪时,它们也很容易搞错。如今我试着重写代码,力求更简单,避免要处理复杂的if语句。 5. Else:有几个bug是没有适当考虑如果条件为假会发生什么而引起的。几乎无一例外的是,每个if语句应该有一个else部分。此外,如果你在if语句的一个分支中设置了某个变量,可能应该在另一个分支也要设置该变量。与此相关的是标志(flag)被设定的情况。仅仅添加设定标志的条件很容易,但是容易忘了添加应该重新设定标志的条件。任由永久性设定的标志留在那里可能会在将来导致bug。 6. 不断变化的假设:一开始最难预防的许多bug是由不断变化的假设引起的。比如说,一开始,可能每天只有一个客户事件。然后,按照这种假设编写了许多代码。后来某个时候,设计发生了变化,允许每天有多个客户事件。出现这种情况后,就很难改变受到新设计影响的所有情况。很容易找到显式依赖该变化的所有项,但是难就难在,找到隐式依赖旧设计的所有情况。比如说,可能有代码读取某一天的所有客户事件。隐式的假设可能是,结果集从不大于客户数量。我没有好的办法可以预防这类问题,欢迎读者建议。 7. 日志:深入了解程序执行的任务至关重要,尤其是逻辑很复杂时。务必要添加足够多(但是别太多)的日志,那样你就能弄清楚为什么程序在执行它执行的任务。如果一切正常,日志并不重要,但是一旦出现了问题(这不可避免),你会很高兴添加了适当的日志记录。、 测试 作为一名开发者,除非进行了测试,否则我不会说搞完了一项功能。至少,这意味着每一行新代码或更改后的代码至少执行了一次。此外,单元测试或功能测试也很好,但还不够。新功能还必须在类似生产环境的环境下加以测试和探究。唯有如此,我才可以说搞完了一项功能。下面是bug在测试方面给予我的一些重要的经验教训: 8. …

    编码之妙 Asked on 2016年9月10日 in other.
    • 1008 views
    • 0 answers
    • 0 votes
  • 逃离深圳的风波还未平息,华为又被曝出员工超万人年薪过百万元。对此,华为官方暂无回应。 不过,华为的员工按捺不住了,部分人士对腾讯科技表示,该说法并不准确。“年薪过百万的员工是有,但过万人有些夸大。其次,能达到这个级别的基本上都是 10 年以上的老员工。” 华为是世界 500 强企业,也是最受中国大学生欢迎或青睐雇主榜单上的常客。加上近些年持续不断的增长,华为员工的腰包确实要比以往丰满了不少,尤其是华为手机的爆发。去年,华为消费者业务表现突出,一年开展两次奖金评定,这在华为历史上鲜有先例。 “提前发放的这一次奖金相当丰厚,比年终的都要多。”一位华为终端员工对腾讯科技表示。 其实,华为多年来一直奉行高薪政策,即便是在经济低迷之下,华为也会尽力保证员工的收入不减,甚至是高出行业水平。如在《华为基本法》中有这样一句话,“华为公司保证在经济景气时期和事业发展良好的阶段,员工的人均收入高于区域行业相应的最高水平。” 那么,华为员工的工资究竟有多少钱呢?相信任何一家企业都不会公开披露这些的信息,但华为全球约有 17 万人,从一些员工口中我们掌握了一些可靠的信息。 首先,华为员工的薪酬主要包括三部分:基础工资、绩效奖金和股票分红。外派海外的另有补助,通常,在华为工作一段时间后若有被外派海外的机会,那说明你将获得提升。 基础工资上,华为还设计了一套“定岗定薪,易岗易薪”的职级制度,意思就是工资薪酬是根据岗位来设定,并设定了 13 级到 23 级(公开可查到的是 22 级,像余承东这个级别已超过 …

    编码之妙 Asked on 2016年9月10日 in other.
    • 978 views
    • 0 answers
    • 0 votes
  •     【51CTO.com快译】如果你需要在Linux环境和Windows环境之间经常切换,有许多应用程序可以助你一臂之力。我们遴选出了将为此铺平道路的21款高品质应用程序。 让你可以在Linux和Windows之间轻松切换的应用程序 虽然大约30%的应用程序没有绝对的品牌对品牌的相应应用程序,但是有切实可行的替代解决方案。 我在下面将介绍在Windows和Linux(顺便提到了MacOS)上完全匹配的应用程序,并着重介绍了什么情况下你需要使用不同的应用程序才能完成同样的工作。 Spotify 曾经一度,我们购买CD,甚至购买磁带。而现在,你只需要订阅服务,即可获取和享用世界上大多数的最流行音乐。 可能出人意料的是,有一个面向Linux的Spotify版本。Spotify的人员表示,他们亲自运营该版本,但并不得到支持。 如果你在运行Linux,你也能自己搞定支持,不是吗? YakYak(取代Hangouts) 奇怪的是,考虑到Chrome运行起来很顺畅,Google Hangouts在Linux上却并不得到支持。 然而,有一个替代者:YakYak,它可以发送和接收Hangouts消息。 通常需要注意的一个方面是:Hangouts是一种专有格式,所以这种解决方案有可能随时被淘汰。 GIMP(取代Photoshop) 先明确一点:如果你是设计专业人员,Adobe的Creative Cloud确实无法替代。它成本高昂,但物有所值。 遗憾的是,Creative Cloud在Linux上并不得到支持。有一些应用程序接近Adobe的旗舰Photoshop的许多功能。名气最大的应用程序就是GIMP。 …

    yangyu4 Asked on 2016年9月7日 in other.
    • 917 views
    • 0 answers
    • 0 votes
  •   世界上哪个国家的程序员最厉害? 你的回答可能是:美国。确实,美国是大师级程序员的集中地,比如比尔·盖茨、肯·汤普森(Ken Thompson,UNIX语言的奠基者、1983年图灵奖得主之一)、丹尼斯·里奇(DennisRitchie,C语言之父)、唐纳德·克努特( Donald Knuth,算法和程序设计技术的先驱,1974年度的图灵奖获得者)。 也有人回答是印度,印度是世界上程序员增长最快的国家,印度的软件外包业务独步全球。还有些人说是俄罗斯,因为俄罗斯拥有世界最厉害的黑客。 那到底哪个国家的程序员更厉害?有没有一种更科学的方法来评判? 计算机的本质其实就是0和1这两个数字,数字是电脑程序的灵魂。同样,我们也可以用一个个具体的数据,来解答上述问题。 图片来自东方IC 近日,一家名为HackerRank发布了一项调查结果,揭开了世界上哪个国家程序员最厉害的答案。公开资料显示,HackerRank成立于2012年,是一个面向程序员、黑客们的社交网络,该网站提供了各种编码谜题、游戏病毒和现实中的编码难题及挑战,让黑客们在该社区中进行交流讨论、接受挑战等。参与挑战的人,通过其解决问题的速度和准确度获得排名。 HackerRank公布的最新数据显示,全球已经有150万人参与到上述挑战项目当中。其中得出的结果已经具有普遍意义的代表性。 HackerRank的数据显示,中国和俄罗斯的程序员们最具天赋,两者得分分别为100分、99.9分。虽然美国和印度参与挑战的程序员最多,但整体排名并不高,一个在28位,一个在31位。 中国程序员们在数学、函数式编程(functional programming)、数据结构(data structure)上完爆所有其他国家;而俄罗斯(得分99分)的程序员们则是在算法(algorithms,此处翻译可能不太准确)上占据统治地位,算法也是编程领域最火爆且最具竞争意义的领域。 相信不少对着对于阿尔法狗与李世乭的智力较量记忆犹新,这一场比赛,也引起了公众对于人工智能的关注。这一领域,日本独领风骚,排名第一,而中国未能进入前5;而在与普罗大众息息相关的网络安全领域,中国排名第二,仅次于乌克兰。 软件工程师张士密(Shimi Zhang,音译)就是一位在此次比赛当中,位列函数式编程前十的顶级程序员,他来自重庆,两年前赴美国考取计算机科学博士学位。对于中国程序员在世界排名上优异的成绩,他表示: 由于中国人口基数高,因此在中学就开始编程的学生数量相对其他国家也更多,他们能够解决挑战很大的难题,而这样的难题世界上只有少数人才能解决。 …

    后厂村 Asked on 2016年9月5日 in other.
    • 1054 views
    • 0 answers
    • 0 votes
  • 微信号:androidhead 邮箱:linuxdriver@qq.com 软文,每一千个推荐100元。一个阅读2元。 广告:每一千个展示10元,一个点击2元。 20万包月。 撰写软文:1万/千字。 专发技术类软文广告,专为初创企业服务,融资好推手。

    lingx Asked on 2016年9月2日 in other.
    • 1031 views
    • 0 answers
    • 0 votes
  • 这是一个2013年的旧帖:垃圾场近在咫尺,恶臭不断,邻居们你们闻到了吗?还要坐视不管么? 慧谷的邻居们,你们是否在淫雨霏霏、午夜梦回的时刻,闻到一阵阵恶臭袭来,但却不知道来自何处,又去向哪里?     它,就在离我们小区几百米的绿地里,某些别有用心的人正在将这里变成一个大垃圾场。作为一个五环外的刚需楼盘,买房的多为年轻人,但白天在家的多为老人和孩子。他们每天要在这样的环境下成长,后果可想而知。     相信这不是你或者我一个人的事,这是我们大家的事,是我们大家都不能容忍的事。     事情缘起     今天,一个邻居发来qq,说她终于知道小区恶臭的来源了,“就在咱小区北面空地边上树林里,正对着咱们小区,我无意骑着自行车路过,看到好几个垃圾车往那边开,我跟过去了,没法儿靠近,特别特别臭,图片拍到的是一部分,其实真的是堆成山了,估计尚城,跟碧水附近的小区垃圾都是拉到那儿,没有任何处理,就那儿堆放!”见下图         邻居当时就打电话给12315,答复说可以向相关部门反映。但具体哪个部门没有说。   …

    lingx Asked on 2016年9月2日 in other.
    • 1309 views
    • 1 answers
    • 0 votes
  •   bristlecone pine(狐尾松) 在北美,很多这样的树树龄已达五千年。 这些树看起来很老,但那只是因为风霜。细胞水平上,它们似乎依然和出生时一样年轻。。。 Ming(明)是一种ocean quahog(海蛎?) ,捞出来时已经507年了,据推测如果没有捞出来,估计会一直活下去。 这种东西可以数出来年龄,但其它一些生物就只能靠估计了。。 Hydra(水螅) 水螅据估测可以寿达一万年 & jellyfish(水母) 水母大部分周期是无性克隆的,这时它是可以不断更新保持永生的。只有突然变成了有性,才关闭了不死开关。 American lobster(美国龙虾) 在有性繁殖的生物里,大部分物种进入性成熟期就不再生长了。但也有例外。这种玩意好像根本不会变老,只会不停地变大。。。(我不知道有一天壳不能长了,它会不会被箍死。。但这也不是老死的。。) &amp ; turtle(乌龟) …

    山东大叔 Asked on 2016年8月31日 in other.
    • 1270 views
    • 0 answers
    • 0 votes
  • 如何用编程语言杀死一条龙 有一位美丽的公主,被关押在一个城堡中最高的塔上,一条凶恶的巨龙看守着她,需要有一位勇士营救她… 下面是各种语言如何想办法将公主从巨龙手中营救出来的。 Java – 赶到那里,找到巨龙,开发出一套由多个功能层组成的恶龙歼灭框架,写几篇关于这种框架的文章…但巨龙并没有被消灭掉。 .NET – 赶到哪里,看到了Java程序员的做法,完全拷贝过来,试图去杀掉巨龙,但巨龙把他吃掉了。 C – 赶到那里,对巨龙不屑一顾,举起剑,砍掉巨龙的头,找到公主…把公主晾在一边,去看看有没有最新提交的linux内核代码。 C++ – 先打造出一根针,然后在上面添加各种功能特征,直到最后汇聚成一把复杂的剑,这把剑复杂到只有他能理解其中的功能…杀死龙,但他过桥时遇到了麻烦,因为内存溢出了。 COBOL – 赶到那里,看到巨龙,认为自己太老了,杀不死这条巨龙,营救不出公主,于是离开了。 Pascal – …

    山东大叔 Asked on 2016年8月30日 in other.
    • 1178 views
    • 0 answers
    • 0 votes