Algorithms Part I & II from Princeton | My Review



Algorithms Part I & II from Princeton | My Review

The instructors are Kevin Wayne and Robert Sedgewick. The former being very active within the course discussion forums and the latter presenting all of the video lectures. Part I & II are separate courses that make up the overall module, with each part spread over ~6 weeks. It's said that this course is closely related to the mandatory algorithms module for Computer Science undergraduates at Princeton.

The standard of teaching material from the video lectures, slides and accompanying website was excellent. The way in which each week's new concept built upon the previous week's was so well structured it was like a well played game of chess.

Each week consisted of ~2 hours of lectures and was accompanied by exercise questions and the main event; a programming assignment to be written in Java. The assignments focused on choosing an appropriate algorithm to solve a large problem based on its characteristics as opposed to just coding a generic implementation of a linked list, binary tree etc. As well as correctly solving the problem presented there were also timing and memory constraints that had to be met in order to achieve 100%. Some took me around ~4 hours to complete and others I lost track of how much time I spent tweaking my solution to meet the benchmarks for 100%.


Read full article from Algorithms Part I & II from Princeton | My Review


Algorithms, Princeton, Coursera课程整理与回顾 - 老人的孩子 - SegmentFault



Algorithms, Princeton, Coursera课程整理与回顾 - 老人的孩子 - SegmentFault

Princeton的算法课是目前为止我上过的最酣畅淋漓的一门课,得师如此夫复何求,在自己的记忆彻底模糊前,愿对这其中一些印象深刻的点做一次完整的整理和回顾,以表敬意。

注:
这是一篇更关注个人努力与完成任务项目过程相关的文章,内容集中于课程背后值得提到的部分,不会介绍课程基本信息及学习时必读的设定要求等部分,敬请谅解。
在学习一门课程的时候考虑为什么这么教是个人习惯,我会尝试给出一些解读,为什么这门课这么屌(awesome)。
优化无止境,越学习才能越深刻地感受自己的无知,即使是作业内已提到的额外内容我也并没有一一探究完整,这里只是谦卑地尽力记录自己的努力,并无意与谁比较,如有新的进展还会回来更新。
除特别标注外,文章非原创插图全部来自课程相关资源。


Read full article from Algorithms, Princeton, Coursera课程整理与回顾 - 老人的孩子 - SegmentFault


一种面向突发事件的文本语料自动标注方法 | IT草根



一种面向突发事件的文本语料自动标注方法 | IT草根

Chinese Emergency Corpus简称CEC,中文名称为中文突发事件语料库,是根据上海大学刘宗田教授所提出的《面向事件的本体研究》由人工标注所构建完成,目前整个语料库在重新进行了编码转换、XML格式化、错误修复之后托管在GitHub上了,地址点我

事件的定义是什么

事件指在某个特定的时间和环境下发生的、由若干角色参与、表现出若干动作特征的一件事情。形式上,事件可表示为e,定义为一个六元组:e ::= (A, O, T, P, S, L)其中,事件六元组中的元素称为事件要素,分别表示动作(Action)、对象(Object)、时间(Time)、地点(Place)、状态(Status)、语言表现(Language Expressions)。

  • A(动作):A表示事件所包含的动作或动作序列的集合,在文本中,动作通常是作为识别一个事件的触发词
  • O(对象):O表示一个事件中的对象集合,包括事件中所有的参与者和涉及到的对象。对象可分别是动作的施动者(主体)和受动者(客体)
  • T(时间):T表示事件发生的时刻或时间段,时间分为绝对时间和相对时间,两类时间都可以通过计算转换成形如[t1,t2]的序偶表示,以此描述事件的开始、发展和结束时间,当开始时间和结束时间一样时,表示事件发生在瞬间
  • P(地点):表示事件发生的地点;例如:在小池塘里游泳, 场所:小池塘, 场所特征:水中
  • S(状态):表示事件发生过程中对象的状态集合,由事件发生的前置条件、后置结果集合组成。前置条件指为进行该事件, 各要素应当或可能满足的约束条件, 它们可以是事件发生的触发条件;中间断言指事件发生过程的中间状态各要素满足的条件;事件发生后,事件各要素将引起变化或者各要素状态的变迁, 这些变化和变迁后的结果, 将成为事件的后置条件。
  • L(语言表现):事件的语言表现规律, 包括核心词集合、核心词表现、核心词搭配等。核心词是事件在句子中常用的标志性词汇。核心词表现则为在句子中各要素的表示与核心词之间的位置关系。核心词搭配是指核心词与其他词汇的固有的搭配。可以为事件附上不同语言种类的表现, 例如中文、英文、法文等等。

在事件的六个要素中,前五个要素是事件的内在要素。


Read full article from 一种面向突发事件的文本语料自动标注方法 | IT草根


基于同义词词林扩展版的词语相似度计算 | IT草根



基于同义词词林扩展版的词语相似度计算 | IT草根

词义相似度计算在很多领域中都有广泛的应用,例如信息检索、信息抽取、文本分类、词义排歧、基于实例的机器翻译等等。国内目前主要是使用知网和同义词词林来进行词语的相似度计算。

本文主要是根据《基于同义词词林的词语相似度计算方法—田久乐》论文中所提出的分层算法实现相似度计算,程序采用Java语言编写。

同义词词林扩展版

《同义词词林》是梅家驹等人于1983年编纂而成,这本词典中不仅包括了一个词语的同义词,也包含了一定数量的同类词,即广义的相关词。《同义词词林扩展版》是由哈尔滨工业大学信息检索实验室所重新修订所得。该版收录词语近7万条,全部按意义进行编排,是一部同义类词典。

同义词词林按照树状的层次结构把所有收录的词条组织到一起,把词汇分成大、中、小三类,大类有12个,中类有97个,小类有1400个。每个小类里都有很多的词,这些词又根据词义的远近和相关性分成了若干个词群(段落)。每个段落中的词语又进一步分成了若干个行,同一行的词语要么词义相同,要么词义有很强的相关性。


Read full article from 基于同义词词林扩展版的词语相似度计算 | IT草根


又见IT精英过劳猝死 | IT草根



又见IT精英过劳猝死 | IT草根

当今快节奏高压力的生活导致猝死事件频发,我知道,这是一群迫切的希望用自己勤劳的双手快速致富的人。当然我认为绝大多数过劳死都是来自农村或者是家庭条件一般的人,试想国民老公王思聪会过劳死吗?显然不会,再退一万步,在上海有房有车无还款压力的人会过劳死吗?显然亦不会,过劳猝死的这些人,我不知道是你们个人的悲哀还是这个历史悠久的文明古国的悲哀,GDP虽然是年年暴增,但是并没有给我们普通的劳苦大众带来任何的实质性实惠,医疗费用高居不下,癌症死亡率急剧攀升,CPI远超收入增幅,基尼系数早已超越国际警戒线,资源肆无忌惮的用,环境大摇大摆的污染,重点大学农村生源已不足20%,这个传承了五千多年的习俗已不再奏效——知识改变命运。


Read full article from 又见IT精英过劳猝死 | IT草根


10年磨一剑,软件编程走火入魔之:把简单的功能做个彻彻底底、把劳动成果重复利用 - 通用C#系统架构 - 博客园



10年磨一剑,软件编程走火入魔之:把简单的功能做个彻彻底底、把劳动成果重复利用 - 通用C#系统架构 - 博客园

   年轻时、精力旺盛,有用不完的劲儿,但是工作经验不多,对各种行业实际应用没有深入的了解,大多停留在表面问题上,做不出过硬的有质量的软件组件来,刚精通C#程序时,发现又需要精通C/S、B/S才可以,这时又发现自己的数据库技术不过关,等刚掌握了SQLServer,又发现自己不懂Oralce,也不懂MySql,自己写出来的程序又不兼容这些数据库,等数据库也都精通了一些,发现自己的写文档能力不行,做个像样的东西非常不容易。

 

   这时又发现自己的设计能力不行,等把设计能力也提高了,发现写文档的表达能力还是不行,等自己的表达能力也变得很强了,对各种行业应用也开始有了深入的了解,技术又变了很多,以前积累的技术又淘汰了。

   当这些能力都接近已具备时,发现自己从早上忙到晚上,根本没有精力去写一个理想中的软件来,工作上的、家庭上的杂事也变得多如毛,当能力提高到了一定的境界后,普通人做出来的东西也都看不上了,也都不能放心了,因为知道得太多了,就能找出太多的问题了,但是自己又往往没那么多精力、空去做这个心目中的东东。


Read full article from 10年磨一剑,软件编程走火入魔之:把简单的功能做个彻彻底底、把劳动成果重复利用 - 通用C#系统架构 - 博客园


读《程序员,你伤不起》 | IT草根



读《程序员,你伤不起》 | IT草根

  • 你不能老是换方向,一方面你啥都不精,日常工作也很累,东一榔头,西一棒子,十年后,结果你啥都懂,啥都没有,别人需要啥,你都需要从零开发,你俩手空空进入IT行业,又俩手空空离开IT行业。我很害怕这个,所以,从2002年开始写的代码,几乎都在电脑里,2003年写的系统,也经常在维护着,与时俱进。

:想想自己不也是这样吗?一直都在重复造轮子,学习计算机也有七年了,本科四年,研究生三年,拿得出手的作品还真是没有,如果让我做东西的话也能做,只是一切从零开始,这想来是极其耗费精力的事情,好在我以前的代码都还留着,不管多烂也舍不得丢弃,只是一直没有整理维护之,这也正是我害怕的地方,随着时间的流逝,越来越没有心思与劲头去完善它们,谁让咱温饱都没解决呢,谁有精力去经营那些虚无的东西,人这一辈子,尤其是底层的人可能时间都用来挣钱去解决最基本的衣食住行了,这是多么可悲的事情。

  • 开发软件,本来就是人来一拨走一拨,春风吹又生,一年换一拨人,一拨又一拨。所以你必须要事先想好人员的变动因素,自己如何积累经验成果,公司如何积累经验成果,都是很深的学问。

:说的很对,不是技术导向型的公司往往无法理解技术人员真正的价值,以及技术人员之间的本质区别,顶级程序员与平庸程序员之间的差距是极大的,这是普通人所无法理解的,就像世界上跑的最快的人和平常人百米赛跑,他们花费的时间差距也不会超过两倍,这就是体力劳动的先天限制,而脑力劳动则全然不是,世界上最聪明的人和平常人的智力差距,必然是指数级的,这毫无疑问。我并不想说技术人员多牛逼多屌,而想说的是智力劳动,千兵易得,一将难求,要善于发现并珍惜重视人才。

  • 大家都讲,做日本外包学不到知识,只是低级的编码工作,我从来不认同这个观念。我做日本外包大概有一年多时间,这期间也是我提高非常快的一段时间。自从接触日本外包后,我才觉得自己终于变成软件人才了,脑子里也懂了点东西,有些内容了,知道什么叫规范,什么叫质量,什么叫规模化生产,什么样的人才是软件人才,当然也见到了管理类软件开发领域的顶尖人物。

:给那些不断打压贬低外包的人一记响亮的耳光,我常说人与人最本质的区别就在于人的能动性,无论在什么境遇下,都要充分发挥自己的能动性,在现有条件或水平内,做到最好,你就是最棒的,英雄不问出处,没人能左右自己的出身,不论出身如何,我只顾风雨兼程。

  • 在日本,一个人的工资换算成人民币有两三万元,加班还要有加班工资,一个员工一年下来,公司可能要支出20万元给他,所以公司肯花10万元来购买软件,这样不仅仅是省了费用,而且软件可以24小时不间断工作,效率也提高了很多。但是在国内,两万就可以搞定一个人干一年的费用,而且还可以安排他干其他事情,所以国内的软件市场,跟我们的人力成本是有些关系的,人力成本越高,软件越有竞争力。

:这段话的重点不是工资,重点是这个观点很新颖,原来我一直没注意到,人力成本越高,软件越有竞争力。想想现在的机器人代替工人其实不正是这个原理吗?机器人本质也都靠软件驱动,常年无休、可靠、任劳任怨,可以大大的降低人工成本,这必然会是未来的一大趋势。

  • 做公司不是做技术,更多的是做人,我做人本就不够到位,做公司是必败的。

:技术人员创业确有成功案例,小扎、马化腾、李彦宏都是技术出身,但是可能存在更多的技术人员创业失败的案例,只是不为人知晓而已,如果可以的话,技术人员最好找个合作伙伴,大家一起创业。

  • 人没必要野心太大,做事业没有那么容易,特别是在IT行业,成功概率太低了。并且就算做大了,公司上市了,其实大多都是在亏损的,最终玩的就是资本运作。所以想靠公司的技术或者产品来赢得胜利是很难的,只能走资本运作路线。

:从2015年的诸多互联网第一第二名并购案例就可以看出,最后玩的不是情怀、不是梦想、不是技术、不是产品,而是市场占有率、盈利能力以及背后对应的资本。

  • 程序是技术(说的是后台开发),设计是艺术(说的是前台开发)。技术可以批量生产,艺术无法批量制造啊。在没有高科技的开发里,还是艺术更值钱一些。有艺术细胞,还会一点儿技术,那才是人才!

:其实之所以出现这种状况,还是因为常人都是非技术人员,他们所能理解的仅仅限于前台的设计,对于后台的架构技术则是完全不懂的,所以导致现在重前台而抑后台,对应的导致前端开发的工资超越了后端开发的工资。只有上了一定量级的公司,例如天猫淘宝,才会极度的重视后台的架构设计,因为不论前台多漂亮,都是难以支撑秒杀的。

  • 日程生活中,多关注人情世故,多关心我的同事、我的家人、我的朋友,与他们保持联系,努力建设和谐社会。工作不是生活的全部,写程序更是很小的一部分。做人比做事更重要,人脉比技术更重要,有个良好的人脉,干啥都容易,说俗了人脉就是金钱。

:虽然这个话题很俗,但是在天朝,这确实是一个很大的问题,无论怎样,你都免不了花费精力去处理人际关系问题。

  • 晚上回家吃饭、上网娱乐、看电影、运动健身、看电视、睡觉,第二天起床上班,周末陪老婆看电影、逛街散步。

:看似很简单的事情,估计天朝有很多人是享受不到这种待遇的,你是否享受到了呢?

  • 不要做过于廉价的劳动力,那是在破坏市场,尊重自己尊重别人,免费给别人做当然可以,但如果那样做,IT软件就更不值钱了。

:我觉得咨询也是一种服务,所以就有了ThoughtWorks这类公司,但是这类毕竟是极其专业的咨询。日常开发生活中,我们其实也会碰到诸多的咨询,但是国人往往忽视了咨询的代价,代码调不通、环境不会配、测试通不过……从来不会尝试着自己先解决一下或者Google一下,而是第一就想到了去找别人咨询或者帮助,张口即问,伸手即来,殊不知,鲁迅先生说过,浪费别人的时间无异于谋财害命。

  • 与领导沟通好,报告写好,比拼命干活效果好几十倍。别总是埋头苦干,干得累死累活,没人知道你多么辛苦,及时向领导汇报情况,周报月报下足功夫写。平时跟领导走得近一些,领导在想啥,你在想啥,及时沟通,这样被提拔的机会多。被提拔了,发展的空间也就大了。地里干活的牛辛苦不?光干活不行,性格倔强更没前途,就别提了。

:算是厚黑学吗?

  • 开源一方面是好事情,另一方面是害死一大片的,微软很多东西都可以开源,它为什么不搞开源的操作系统?为什么不搞开源的办公软件?论坛现在几乎是一分钱不值了,大家也不用太费心机折腾论坛了。用友财务软件开源了,那谁还会花钱去买金蝶?还会去买其他小财务软件?那用友也赚不到啥钱,金蝶也可能会倒闭,做财务软件的人就有可能失业了,跟做论坛一样。商业化的东西,别乱搞开源,学习入门级别的东西,你开源是可以的,小技巧你开源可以,自己辛苦积累别轻易搞开源,那是损人害己。
    公司的成果更不能搞开源,那是老板烧了很多钱积累下来的成果,你三下两下就开源了,别以为你开源了,就为社会做贡献了,你很可能是在给自己挖掘坟墓,在污染自己的生存行业,恶化生存环境,破坏商业规则。

:说的很好,现在大家有点盲目开源了,貌似不开源技术就不行,貌似不开源就没人知道自己的牛逼之处,貌似不开源就是软件世界里的恶势力一样,这些都是错误的思想,任何事情都没有绝对的,开源同样不是百利而无一害。

  • 软件是个庞大的工程,不像盖小民房,看得见摸的着,软件是一个看不见的庞大工程,所以一个像样的项目,一般没那么容易就能搞定的。

:虽说现在有了软件工程的概念,但是对于大多数人来说,并没有真正意识到一个软件的复杂度。就我而言,可能有的软件项目成功了,但是根本谈不上完美的程度,可能其扩展性、复用性、维护性各方面都存在大量问题,而有的项目只是要当前上线运行即可,至于以后,谁管呢?说不定项目经理早已跳槽,开发人员早已换人。

  • 公司里往往耕地的牛是不讨主人喜欢的,汪汪乱叫的小狗却会讨主人的疼爱,主人会更喜好小狗。但是做软件项目是需要牛的,不是靠小狗叫叫就可以了。

:至于做牛做狗,每个人都有自己的选择权,但是我觉得这和人的秉性有很大的关系,就我来说,情商不够高,做狗可能做不来,那么我只能被动的选择去做一头牛了。但是做牛的好处就是踏实干活,把本事学到手,这样不论到哪里,不论什么境地,哪怕经济危机也罢,至少我有谋生的手段,饿不死,积财千万不如薄技在身。

  • 其实打工也是创业的开始,每个月都能拿到钱,还可以学到知识。公司的股份都是空话,没几个小公司能成功,开起来了也过不了三年就得分家。除非真的有科技含量或者是客户资源的,否则股份一文钱不值,每个月能按时拿到工资才是硬道理。

:有些人总是想着期权,还是too youngtoo simple啊,并不是说期权不好,而是真正能让期权有着其对应价值的公司很少。可能大多数的公司都等不到IPO的那天,就因为各种各样的原因而中途寿终正寝了。即便真的给了你期权,也会有诸多限制条件,比如分五年领取,或者IPO之后三年的禁售期等等。

  • 哪个都懂一些,就不容易成为专才。所以,我没有被各种诱惑误导,放弃.NET奔向Java,只做.NET就可以了,Java的不关我的事,我精力也有限,没必要接那么多项目,我也消化不了。

:跟我的方向也是一致的,我就不做C++/C,谈不上讨厌或其它,只是精力有限,不可能全部精通,而且不会C++/C也并不影响你成为全栈工程师。不管是.NET或者Java,找准方向,深钻下去,都会有所收获。

  • 当上级与下属发生争执后,公司解决问题的方法很简单:开除下属。因为公司没办法开除上级,开除上级带来的损失会更大。集团公司需要有一定的规矩,有一定的执行力度,就是靠下属服从上级领导为原则的。

:很正常,毕竟哪个最容易替换就换哪个,哪个更换成本最低就换哪个,所以你要尽力做那个并不容易替代的人。


Read full article from 读《程序员,你伤不起》 | IT草根


终于不用再苦逼地写文档了!教你如何生成可调试的API文档 - 技术总结 - SegmentFault



终于不用再苦逼地写文档了!教你如何生成可调试的API文档 - 技术总结 - SegmentFault

平时总要写文档。不写,代码无法维护,所以不得不写。但是写文档费时费力,更可怕的是写完了读起来还很费劲,束之高阁,总感觉时间浪费掉了,真是苦不堪言

一直以来深受"写文档"的折磨,偶然看到一篇神文,接着在网上又查了自动化工具DSL的理论,这才茅塞顿开!虽然大部分都没看懂,但要想做到轻松写出好文档,足矣!


Read full article from 终于不用再苦逼地写文档了!教你如何生成可调试的API文档 - 技术总结 - SegmentFault


Hadoop 3.0新特性预览



Hadoop 3.0新特性预览

2.1 Hadoop Common

1)精简Hadoop内核,包括剔除过期的API和实现,将默认组件实现替换成最高效的实现(比如将FileOutputCommitter缺省实现换为v2版本,废除hftp转由webhdfs替代,移除Hadoop子实现序列化库org.apache.hadoop.Records

2Classpath isolation以防止不同版本jar包冲突,比如google Guava在混合使用HadoopHBaseSpark时,很容易产生冲突。(https://issues.apache.org/jira/browse/HADOOP-11656

3Shell脚本重构。 Hadoop 3.0Hadoop的管理脚本进行了重构,修复了大量bug,增加了新特性,支持动态命令等。https://issues.apache.org/jira/browse/HADOOP-9902

 

2.2 Hadoop HDFS

 

1HDFS支持数据的擦除编码,这使得HDFS在不降低可靠性的前提下,节省一半存储空间。(https://issues.apache.org/jira/browse/HDFS-7285

2)多NameNode支持,即支持一个集群中,一个active、多个standby namenode部署方式。注:多ResourceManager特性在hadoop 2.0中已经支持。(https://issues.apache.org/jira/browse/HDFS-6440

 

2.3 Hadoop MapReduce

 

1Tasknative优化。为MapReduce增加了C/C++map output collector实现(包括SpillSortIFile等),通过作业级别参数调整就可切换到该实现上。对于shuffle密集型应用,其性能可提高约30%。(https://issues.apache.org/jira/browse/MAPREDUCE-2841

2MapReduce内存参数自动推断。在Hadoop 2.0中,为MapReduce作业设置内存参数非常繁琐,涉及到两个参数:mapreduce.{map,reduce}.memory.mbmapreduce.{map,reduce}.java.opts,一旦设置不合理,则会使得内存资源浪费严重,比如将前者设置为4096MB,但后者却是"-Xmx2g",则剩余2g实际上无法让java heap使用到。(https://issues.apache.org/jira/browse/MAPREDUCE-5785

 

2.4 Hadoop YARN


1)基于cgroup的内存隔离和IO Disk隔离(https://issues.apache.org/jira/browse/YARN-2619

2curator实现RM leader选举(https://issues.apache.org/jira/browse/YARN-4438

3containerresizinghttps://issues.apache.org/jira/browse/YARN-1197

4Timelineserver next generation https://issues.apache.org/jira/browse/YARN-2928

 

3.   Hadoop3.0总结


Hadoop 3.0alpha版预计今年夏天发布,GA版本11月或12月发布。


Hadoop 3.0中引入了一些重要的功能和优化,包括HDFS 可擦除编码、多Namenode支持、MR Native Task优化、YARN基于cgroup的内存和磁盘IO隔离、YARN container resizing等。

 


Read full article from Hadoop 3.0新特性预览


程序员被聘用的13个开发技能_万物云



程序员被聘用的13个开发技能_万物云


Read full article from 程序员被聘用的13个开发技能_万物云


『非著名程序员』精品文章汇总 | GodCoder's Notes



『非著名程序员』精品文章汇总 | GodCoder's Notes


Read full article from 『非著名程序员』精品文章汇总 | GodCoder's Notes


“把程序写好”这回事



"把程序写好"这回事

余晟以为 微信号 yurii-says 功能介绍 我和狗叔回忆,我们好像都没有正经上过什么"把程序写好"的培训班,也没有《九阴真经》之类的宝典。但是我们又都看到,很多程序员写的程序是不合格的,大量基础规范都没有遵循(更可怕的是这样的程序很可能还在服务我们每天的生活)。那么,优秀的程序员,是从哪里学到把程序写好的知识的呢? 这个问题我想了很久,有几点结论可以分享给大家。 反过来说,程序员能掌握的权力相当大,成为"合格程序员"的门槛也相当高,虽然这种门槛并不为许多人所知。前段时间有很多人叫嚷"我万事俱备,只差一个写代码的",恰恰是因为他们把写程序看成简单机械的劳动,但以自己的聪明才智又学不会这种"简单机械"的劳动。这种矛盾,恰恰说明写程序是有门槛、有要求的。所以,要想成为称职的程序员,必须正视写代码。 其次,必须读过一些基本的书籍 其实市面上已经有一些教人"把程序写好"的书籍,认真读完这些书,认真落实其中的规范,至少能保证把程序写"合格",不会有明显的缺陷,为将来把程序写好奠定坚实的基础。从我和身边朋友的经验出发,我觉得《代码大全》、《重构》、《编程珠玑》、《程序员修炼之道》这几本书都是很不错的,如果能耐心读完并认真思考,写程序的水平会有相当的保证。 要保持好奇心,多借鉴其它项目的内部实现 这看起来确实是简单机械的劳动,也不会给人多少提升。但事实并非如此。很多好的程序员就在这个过程中学会了把代码越写越好。因为他们保持了好奇心,去探究这些开源项目的内部实现,把应用的过程当成了学习的途径。在使用一个现成方案之前,先想想如果自己去解决要怎么办,再看看其他人的现成代码,确保自己懂得了这些代码蕴含的思维。甚至比较相类似的几个开源项目的源代码,分析其优劣,在自己的工作中注重借鉴其长处,避免其短处。久而久之,写程序的水平自然会有大的提升。 在写程序时,要懂得在工程与理论之间求得平衡 在大方向上,我认同这种说法。但在具体的问题上,它未必正确。因为编程是与工程密切相关的工作,与工程密切相关就意味着大量的权衡、取舍。无论奥卡姆剃刀原则还是爱因斯坦的话,原本的主题都是针对理论的,所以两者并不能严格划等号。 在实践中我见到过很多过份迷恋简单、美感的程序员,我称之为"玩套路"——他们太在意程序的形式美感,为了刻意追求那种严谨整齐的感觉而忽略了现实,也不懂得针对现实做出取舍,最终把自己套了进去。结

Read full article from "把程序写好"这回事


面向工资编程



面向工资编程


Read full article from 面向工资编程


通过业余项目提升自己



通过业余项目提升自己


Read full article from 通过业余项目提升自己


要聊天,先付费 - 阮一峰的网络日志



要聊天,先付费 - 阮一峰的网络日志

但是,那本书已经开源了,任何人都可以免费阅读。你缴了钱,唯一的权利就是可以加入专属的聊天群。也就是说,这其实不是众筹,而是出售聊天群的会员资格。 更严苛的是,在这个群里,你还不能随便聊天,群规写得很清楚。 我很好奇,会有人愿意出几千元,加入一个不能聊天的聊天群吗? 我不明白,为什么那么多人愿意付费加入聊天群,付钱去跟不认识的人聊天,或者听别人聊天?如果说是为了获取新的信息和知识,但是手机(尤其是聊天软件)当作学习平台,效果会好吗? 反响还挺热烈的,所有回复当中,80%表示恕不奉陪,20%表示有兴趣。其中,有一条回复引起了我的思考。 "今年下半年,我就要毕业了。这个行业里,谁也不认识。到了新城市上班以后,估计平时也没有时间和渠道,拓宽社交圈。如果可以让我多认识一些行业内人士,我愿意付费加入。" 这段话让我想通了,收费群的价值在哪里。 现代化工业的流水线模式,要求非常细的专业分工,这造成劳动者社交圈的狭窄。另一方面,当代都市的规模越来越大,带来的孤独感、疏离感和压力感,也是空前的。这些因素造成了大量的社交需求,各种社交软件的流行(比如Facebook、微信)绝不是偶然的。 因此,收费群的商业模式是可行的,背后有真实需求。而且,网络社交比传统社交更便宜。线下的社交活动,比如吃饭、出游、娱乐的成本都不低(考虑进时间成本就更是如此),相比之下,收费群的会员费并不贵,当然前提是提供良好的社交体验。 1989年,美国社会学家奥登伯格(Ray Oldenburg)出版了一本著名的书《绝好的地方》(The Great Good Place)。他提出,人类的日常生活主要分布于三个空间: "第一空间是居住空间(也就是家),第二空间是工作空间,第三空间是休闲娱乐空间,在那里会见朋友、喝啤酒、谈天说地,享受人际交往的乐趣。典型的第三空间是咖啡馆、酒吧、美发店、露天啤酒店、桌球房、俱乐部这一类地方。" 奥登伯格认为,人的生活质量与这三个空间都相关。其中,第三空间的质量和逗留时间长短,决定了你的生活是否丰富多彩。当代社会的问题是,第三空间正在逐渐丧失。 "过去25年以来,美国人更少参加聚会性的团体,更少了解自己的邻居,更少与朋友见面,甚至与自己的家人也变得更少沟通。对许多人来说,生活就是去上班,然后回家,然后看电视,周而复始。" 这本书出版后,第三空间这个概念受到了极大的重视。但是此前,第三空间

Read full article from 要聊天,先付费 - 阮一峰的网络日志


how do i ask for a recommendation | LinkedIn Help Forum



how do i ask for a recommendation | LinkedIn Help Forum

To ask for a recommendation, you can click on your profile tab which brings you to your profile page. On this page, at the bottom right corner of your photo there is the Edit box with a little arrow (pointed down) button on it's right side. You click on the arrow, and it opens a scroll down menu. The top choice in this menu is "Ask to be recommended". Let me know if this helped.

Read full article from how do i ask for a recommendation | LinkedIn Help Forum


记一次 Google 面试经历-CocoaChina_让移动开发更简单



记一次 Google 面试经历-CocoaChina_让移动开发更简单

首先,这是谷歌——所以我当然不会让我在那里工作的朋友不推荐我。我没有经过电话采访,因为我是"本地"的,所以我被直接邀请到公司面试。我个人认为,面对面绝对比电话面试好,我很幸运。 首先,我和招聘人员很简短地聊了一下,他告诉我我需要使用白板和进程,然后是两个软件工程师分别对我进行了45分钟一对一的两场面试。然后我很惊讶自己居然发现了面试的乐趣!通常情况下我在面试时感受到的只有压力,但是Google的面试真的很棒,因为没有笨蛋的参与,不会有对牛弹琴的尴尬。超酷!第一场面试的问题相当容易,而第二场则有点难,但也不算太糟糕。可能最困难的是在白板(而非计算机!)上写代码——在白板上很难做TDD!他们告诉你没有必要盛装出席,因此绝对不要装扮仪表——因为你需要坐在地板上写代码,而且不是一时半会就可以在白板上写完的,还会写得满手都是油墨。想象一下如果你穿着裙子会怎么样! 他们发给我了一系列很有帮助的面试准备。由于我坚实的学习基础,所以在一定程度上我都有所涉猎。此外平时我还会做这些事情——及时了解最新的行业新闻,广泛使用Google产品,写博客,以及思考技术如何改变我们的生活(是的,最后两件事情很有帮助)。我会深刻理解和使用Java 5的新产品,例如 Generics , Enums ,for-each等。 下面是我准备的内容(所有的图书链接均链接到Amazon): 阅读《 Programming Interviews Exposed (编程面试攻略)》,并通过所有练习——概述和复习基本的数据结构,如列表和树。递归部分没有我自己学到的那么强大(因为我有着函数背景),它反而主张编写迭代方法,不过除此之外,这的确是一本既非常好又有用的书。 阅读《 Coders at Work 》——这本书中谈到了很多的谷歌人,表达了作者对文化的观点。它还介绍了很多我不知道的却又非常有趣的编程历史,以及关于这些历史伟人如何解决问题的见解,以及对于API、可扩展性等的讨论。 《 Combinatorial Algorithms: Generation, Enumeration,

Read full article from 记一次 Google 面试经历-CocoaChina_让移动开发更简单


“吃饭、睡觉、写代码、周而复始”,何其操蛋的生活 - FETalk



"吃饭、睡觉、写代码、周而复始",何其操蛋的生活 - FETalk


Read full article from "吃饭、睡觉、写代码、周而复始",何其操蛋的生活 - FETalk


昔日巨头"雅虎" 为什么沦落到"插标自卖"?_网易科技



昔日巨头"雅虎" 为什么沦落到"插标自卖"?_网易科技

作者: 屈丽丽 编者按/继 柯达 、 诺基亚 之后, 雅虎 (编者注:文中部分亦称为 Yahoo )成了又一个大厦将倾的昔日霸主。让人们困惑的是,这些原本并不缺技术、资金,人才,尤其是不缺专利技术的企业,为什么会一个个面临轰然倒塌的结果?到底是什么在主宰着这些新兴行业的发展? Yahoo,这个曾经全球最受欢迎的网站,为何会在移动互联网的日益发展中陨落?而且,更让人不可思议的是,直到如今,雅虎的很多基础专利仍然拥有极高的引用频率,其所拥有的专利价值仍然在30~40亿美元之间,但核心资产被竞购的现实却显现:雅虎已经无路可走?本期商业案例重点关注这个昔日巨头在其核心业务(编者注:本报采访观点认为,其核心业务为专利,但本报观点可能与雅虎理解不同)上的利弊得失。 2016年4月19日是雅虎首轮竞购期结束的时间。在今年年初, Yahoo早就预测到了自己的死亡,承认公司已经长久陷于困顿,并宣称一直在"探索更多战略选择",其中就包括对核心资产(专利)进行初始竞价。至此,这就有了诸多国际媒体对于雅虎于4月18日在美国加州桑尼维尔宣告死亡的报道。 虽然雅虎的股票仍然在交易,网站也没有什么异常,但雅虎最新的财报似乎给人们带来了巨大的打击,尤其是在与 Google 对比之后。公开财报数据显示,2016年第一季度,Google母公司Alphabet总营收202.57亿美元,比去年同期增长17%,净利润42.07亿美元,比去年同期增长20%。而一季度雅虎的营收只有10.87亿美元,低于去年同期的12.26亿美元,净亏损9900万美元,去年同期净利润则为2100万美元。 显然,这个早期互联网行业的绝对领导者,曾在搜索业务和移动互联网业务做出重要奠基的企业,在成立21年之后,其搜索业务的老大地位已经完全被Google取而代之,而移动互联网业务也被facebook抢去了光环。剩下的只有昔日的余辉和对后来者的一纸教训。 定位 最典型的表现是雅虎当时进行的规模最大的两起并购交易:一个是雅虎以36亿美元的股票收购了提供免费主页的Geocities;另一个则是雅虎以57亿美元现金拿下网络电台网站Broadcast.

Read full article from 昔日巨头"雅虎" 为什么沦落到"插标自卖"?_网易科技


苹果与Google的文化之咒_36氪



苹果与Google的文化之咒_36氪


Read full article from 苹果与Google的文化之咒_36氪


谷歌:洗洗睡吧!暂时没一款Android手机能达到VR标准 - 动点科技



谷歌:洗洗睡吧!暂时没一款Android手机能达到VR标准 - 动点科技

2016/05/27 VR 显示设备目前主要有三大类,手机盒子、VR 一体机以及 VR 头显,其中手机盒子最为亲民,买个几十块钱的 cardboard,套上手机便能体验 VR 效果。然而,众所周知,低端手机相对更容易产生卡顿眩晕等问题?那就问题来了,是不是买一个最贵的高端手机就能解决这个问题?答案可能会令人非常失望——不能。 I/O2016 大会上,谷歌雄心勃勃地发布了旨在将安卓软硬件结合、打造高质量的 VR 体验的 Daydream VR 平台。为了让手机也能提供完美的 VR 体验,谷歌也学 oculus 以及 vive 建立 Daydream Ready 标准。然而,让人震惊的是,谷歌 VR 部门总监 Clay Bavor 明确表示,如今即使是最顶尖的手机也未必能达到这一标准。 其中就包括 Nexus 6P,据了解,谷歌目前推荐了 Nexus 6P 手机作为自己制作 Daydream 开发包的选择。 "我可以告诉你,现在市面上没有一款 Daydream Ready 手机,"Bavor 说,"我们希望保持一个非常高的标准,所有的部件都必须要符合要求才行。所以,我想对 VR 粉丝们说,等上几个月换下一部手机……而且要换一部 Daydream Ready 手机。" 什么是 Daydream Ready 手机? 根据"全球 VR 技术标准",首次明确了 VR 产品三大关键技术标准——低于 20ms 延时、75Hz 以上刷新率及 1K 以上陀螺仪刷新率。 提高刷新率是提升 VR 体验的大势所趋,刷新率越高 VR 延时越小,屏的闪烁感以及延时也会得到改善,体验也越好; 而采用低于 60Hz 刷新率屏幕甚至是 TFT 屏幕的 VR 产品在延时方面无法提升,体验极为糟糕且眩晕感强烈,被业内定义为缺陷级 VR 产品。故当前支持刷新率在 75Hz~90Hz 区间的 VR 设备为入门级标准指标; 高于 90Hz 的 VR 设备为中阶 VR 产品。 而谷歌目前还未公开具体的 Daydream Ready 手机规格要求, 但已发布了概况介绍。 高性能感应器 屏幕的像素密度一定要高 低余晖显示器 强大高效的处理器 高质量的 VR 需要比一般手机应用高级得多的性能水平。Daydream Ready 手机需要强大的 CPU 和 GPU,

Read full article from 谷歌:洗洗睡吧!暂时没一款Android手机能达到VR标准 - 动点科技


WebSocket 是什么原理?为什么可以实现持久连接? - Ovear 的回答 - 知乎



WebSocket 是什么原理?为什么可以实现持久连接? - Ovear 的回答 - 知乎

或者说WebSocket干脆就不是基于HTTP来执行的。但是。。。说不通啊。。。 额。。最高票答案没答到点子上,最后怎么跑到Nodejs上去了。。Websocket只是协议而已。。 首先HTTP有1.1和1.0之说,也就是所谓的keep-alive,把多个HTTP请求合并为一个,但是Websocket其实是一个新协议,跟HTTP协议基本没有关系,只是为了兼容现有浏览器的握手规范而已,也就是说它是HTTP协议上的一种补充可以通过这样一张图理解 通俗来说,你可以用HTTP协议传输非Html数据,就是这样=。= 教练,你BB了这么多,跟Websocket有什么关系呢? _(:з」∠)_好吧,我正准备说Websocket呢。。 熟悉HTTP的童鞋可能发现了,这段类似HTTP协议的握手请求中,多了几个东西。 Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw== Sec-WebSocket-Protocol: chat, superchat Sec-WebSocket-Version:

Read full article from WebSocket 是什么原理?为什么可以实现持久连接? - Ovear 的回答 - 知乎


How to disable dev tools in atom editor - Stack Overflow



How to disable dev tools in atom editor - Stack Overflow

Good answer by Ash Wilson, but I wanted to point out a handy package to disable the dev console from opening when there is an error: https://atom.io/packages/error-status .

You should find out what is causing the error, however most of the time it is annoying. This package shows the error right above the status bar. So you can still click it to see what the error is, but it is less obtrusive than opening the console.

Edit: Package was removed. Atom now has better error handling and a notification shows instead.


Read full article from How to disable dev tools in atom editor - Stack Overflow


Word Box | LeetCode Discuss



Word Box | LeetCode Discuss

Given a set of words, find whether they form word box.
A list of words can form a valid word box, when arranged horizontally forms same words if you read vertically.
Ex: BASS, AUTO, STAR, SORE
BASS
AUTO
STAR
SORE


Read full article from Word Box | LeetCode Discuss


无他,但手熟尔 - I code it



无他,但手熟尔 - I code it

即使在我们真的打算解决问题,进行主动学习时,更多的也只是在熟练使用搜索引擎而已(在一个领域待久了,你所使用的关键字准确度自然要比新人高一些,仅此而已)。精通了高效率搜索之后,你会产生一种你 精通搜索到的知识本身 的错觉。 如何写一个Shell脚本 $BLOG_HOME/images/2016/05 为了自动化这个步骤,我写了一个小的Shell脚本。当你输入一个文件名如: 但是要在文件明上加入 -resized FULLFILE=$1 FILENAME=$(basename "$FULLFILE") EXTENSION="${FILENAME##*.}" FILENAME="${FILENAME%.*}" convert -resize 800 $FULLFILE $FILENAME-resized.EXTENSION 难看是有点难看,不过还是可以工作的。接下来是按照当前日期生成完整路径, 1 但是将内容粘贴到 markdown 好了,完整的脚本写好了: 1 2 3 4 5 6 7 8 9 10 11 #!/bin/bash FULLFILE=$1 FILENAME=$(basename "$FULLFILE") EXTENSION="${FILENAME##*.}" FILENAME="${FILENAME%.*}" convert -resize 800 $FULLFILE $FILENAME-resized.EXTENSION PREFIX=`date +"/images/%Y/%m/"` echo -n "$PREFIX$FILENAME-resized.EXTENSION" | pbcopy 嗯,还不错,整个过程中就用了我十几分钟时间而已,以后我在写博客时插入图片就方便多了! Google 这里也有两个小例子: 一个C语言的小程序 上周末我买了一个茶轴的机械键盘,打开包装之后我很兴奋,赶紧插在我的笔记本上,打开一个编辑器,心说敲一些代码体验一下。几秒钟后,我发现敲出来的是: 1 2 3 4 5 6 7 8 9 10 11 12 13 # include # include int main(int argc, char *argv[]) { if(argc != 3) { fprintf(stderr,

Read full article from 无他,但手熟尔 - I code it


信用卡指南 | 小土刀



信用卡指南 | 小土刀


Read full article from 信用卡指南 | 小土刀


Why Workday Is the Worst Stock in the World - TheStreet



Why Workday Is the Worst Stock in the World - TheStreet

It's been very amusing watching investors drool over cloud-based companies these last few years. Did they even know what the "cloud" was? Or what it was used for? There's no way to tell. But if they heard a company had something to do with the mystical cloud, they wanted it.


Read full article from Why Workday Is the Worst Stock in the World - TheStreet


【   】关于Apple refer的问题【一亩三分地论坛内推版】 - Powered by Discuz!



【   】关于Apple refer的问题【一亩三分地论坛内推版】 - Powered by Discuz!

Apple 的内推过程是这样的:
1. 你去找自己喜欢的职位,然后在网上提交申请
2. 给内推人发邮件说自己申请了哪些职位
3. 内推人根据你申请的职位,给相关的team manager说明情况
4. 那些team manager根据你的背景决定是否与你联系或者给你面试

以上是帮我内推apple的人告诉我的

Read full article from 【   】关于Apple refer的问题【一亩三分地论坛内推版】 - Powered by Discuz!


增加你在美国找工作获得内推机会的10条建议 | 美国留学就业规划|Warald咨询



增加你在美国找工作获得内推机会的10条建议 | 美国留学就业规划|Warald咨询

1. 简历要靠谱。
的确很多人的简历typo一堆,或者言辞过于浮夸,或者跟职位完全不match,或者你18个月后才能上班但是你非要现在申请。

2. 仔细读过job description和内推要求。
不要明明别人要求3年经验的,你非要fresh grad去申。别人明明要求expert knowledge inXYZ,而你仅仅听说过这些包的名字就去申请。

3.写个自我介绍。
别人就不需要花费时间去从你简历里面找你的基本信息了,起码三言两语说一下自己的学位学校,会什么工具,实事求是的说一下自己的水平,希望找什么样的工作 — 至于要不要吹嘘自己刷题多少遍,这个得看人。warald见过有科班出身技术很强的人,鄙视刷题的。如果你在Linedin上找,要小心了,不要摸不清对方喜好就开始吹呼自己刷题是熟练工;但是网上帖广告提供内推的人,因为没有别的办法了解你,提刷也许不是件坏事,至少说明你努力准备了。


Read full article from 增加你在美国找工作获得内推机会的10条建议 | 美国留学就业规划|Warald咨询


Big data messaging with Kafka, Part 2 | JavaWorld



Big data messaging with Kafka, Part 2 | JavaWorld

More like this Email a friend From Sorry Partitions in Kafka Topics in Kafka can be subdivided into partitions. For example, while creating a topic named Demo, you might configure it to have three partitions. The server would create three log files, one for each of the demo partitions. When a producer published a message to the topic, it would assign a partition ID for that message. The server would then append the message to the log file for that partition only. If you then started two consumers, the server might assign partitions 1 and 2 to the first consumer, and partition 3 to the second consumer. Each consumer would read only from its assigned partitions. You can see the Demo topic configured for three partitions in Figure 1. Figure 1. A partitioned topic in Apache Kafka To expand the scenario, imagine a Kafka cluster with two brokers, housed in two machines. When you partitioned the demo topic, you would configure it to have two partitions and two replicas.

Read full article from Big data messaging with Kafka, Part 2 | JavaWorld


7 deadly career mistakes developers make | JavaWorld



7 deadly career mistakes developers make | JavaWorld

More like this Credit: Wikipedia Failure may lead to success, but unthinking complacency is a certain dev career killer Email a friend From Sorry You'll find no shortage of career motivational phrases surrounding failure: Fail fast, failure builds character, the key to success is failure, mistakes make you grow, never be afraid to fail. But the idea of mistaking your way to the top of the software industry is probably unsound. Every developer will have their share of missteps in a career but why not learn from others' experience -- and avoid the costliest errors? That's what we did: We talked with a number of tech pros who helped us identify areas where mistakes are easily avoided. Not surprising, the key to a solid dev career involves symmetry: Not staying with one stack or job too long, for example, but then again not switching languages and employers so often that you raise red flags.

Read full article from 7 deadly career mistakes developers make | JavaWorld


IBM,和传统 IT 的沦落 | 程序师



IBM,和传统 IT 的沦落 | 程序师

很多人把 IBM 的沦落归罪于 Sam Palmisano。在著名的 Luis Gerstner 激流勇退后,是 SAM 为了取悦华尔街,而采用了不提高销售额而提高毛利率的方式运营公司,进而疯狂的压缩成本、降低研发费用,导致 IBM 近些年创新产品不足。虽然 SAM 在任的时候风光无限,借着 HP 的昏招连连而使 IBM 在传统大型计算设备制造商中独占鳌头,但其后果是整个 IBM 沉浸在泡沫式的盲目乐观中。在卸任之前,SAM 又疯狂的提出了所谓的 2015 计划,导致 IBM 延续那个已经导致其创新能力不足的战略。 这一切当然是 SAM 的问题。而我们无法回避的是大型传统 IT 设备制造商现在的日子都不好过。CISCO、HP、HDS、EMC,连这些年光彩照人的 VMWare 也逐渐感到危机。这就不是 Sam 一个人的问题了,而是一个行业的问题。这个行业就是传统企业级 IT 系统产品制造和服务提供商。 如果是一个行业的问题,我们首先要分析的就是这个行业的业务模式、赢利模式。一 IBM 为例,因为 IBM 在这方面可能算是种类最全,综合性最好的一家。IBM 的产品分为软件、硬件、服务。 IBM 的业务种类 IBM 的硬件主要包括高端企业级服务器,企业级存储两大类。 IBM 的服务分为两个部门:科技服务部和咨询服务部。科技服务部主要的业务模式为:1、保修:就是所有 IBM 设备的保修,以及基于保修的增值服务;2、系统集成服务;3、IT 基础架构外包。 咨询服务部通俗的说就是搞软件开发的,同时由于其经常涉及一些企业财务、ERP、供应链、客户关系管理等大型企业软件的咨询设计与开发,必不可少的要涉及一些企业战略的咨询,管理咨询,毕竟这些软件的逻辑的相当大部分是基于企业战略和管理策略的。而作为其根基的软件开发大体上分为两大部分:一部分是我们通常意义上的软件开发。就是人家提需求 IBM GBS 帮助代码化。这是比较基础的软件开发。另外一大部分就是商业套件的定制化开发,通常是 SAP、Oracle 等企业商业套件软件生产商的 ERP、SRM、CRM、SCM 等软件的定制。 IBM 还有一些其它的比较小的业务,如 IGF 的金融服务,实验室服务部的基于 IBM 软件的实施服务,研究院的一些创新资产的市场化等等。这些都不构成主流。 IBM 的业务模式 基于这样的一个产品和服务的特点,IB

Read full article from IBM,和传统 IT 的沦落 | 程序师


雷军的一场直播捧红了小米直播App,还可能颠覆传统的发布会-虎嗅网



雷军的一场直播捧红了小米直播App,还可能颠覆传统的发布会-虎嗅网

5月25日晚,小米抛弃了其心爱的国家会议中心和新云南皇冠假日酒店,史无前例地举办了一场纯在线直播的新品发布会,在五彩城的某个小米办公室里,雷军通过十几家视频网站和手机直播APP,以及自家的"小米直播"APP发布了其生态链产品小米无人机。并用其日渐娴熟的嘴皮子功夫征服了大大小小屏幕前的米粉和少女的心。


Read full article from 雷军的一场直播捧红了小米直播App,还可能颠覆传统的发布会-虎嗅网


一大波能提高编程技能的游戏 - CocoaChina_让移动开发更简单



一大波能提高编程技能的游戏 - CocoaChina_让移动开发更简单

有时候咱们程序员也需要娱乐或放松一下,但放松的同时,也可以做一些有益于技能成长的事情。今天就来看看这一大波能够训练大脑,并且提升编程能力的网站。


Read full article from 一大波能提高编程技能的游戏 - CocoaChina_让移动开发更简单


【新提醒】关于简历再说几句【一亩三分地论坛找工求职版】 - Powered by Discuz!



【新提醒】关于简历再说几句【一亩三分地论坛找工求职版】 - Powered by Discuz!

最近各种各样熟人非熟人的简历收到很多
凭良心讲,地里出来的简历比外面熟人发来的,质量好了不是一点半点
不过很多同学还是有些可以提高的余地,一起回答一下,希望有所帮助. visit 1point3acres.com for more.

本文针对经验不太丰富的求职者,主要针对Data Science and SDE

1. specific position 请customize你的简历
海投跟内推还是不太一样
很多内推要求你选择一个职位,这说明,不是general hire,而是需要对口
这时候,为了up your chances, please customize your resume
. more info on 1point3acres.com
有人说:我的简历又不是为了你这一份工作写的,当然要把我全部经历都放上去了!   那。。。。就good luck 呗。。。。
有所针对,对你过简历关,很有帮助,如果这份工作并不重要,那就当我没说好了。。。。 鏉ユ簮涓€浜�.涓夊垎鍦拌鍧�.

不要不顾job description的自说自话
别人明明要求predictive modeling,你非要强调你NLP如何牛逼。
工作明确要java和网络开发,但是你是c++大牛,是computer vision大牛,因此你大部分篇幅说自己做了某vision project和各种高大上的simulation,可这并不能给你加分。反而马上觉得跟职位不match.

根据领域改属于的叫法,不知道SDE,但是DS里面,药厂的,IT的,传统行业的,对某些术语叫法会不同。不要等别人来习惯你的sensitivity/specificity就是人家说的precision/recall,别知道AUC但是不知道F1 score,别混淆BA的工作和DS的工作,也别混淆data eng和data science。

2. 自我介绍怎么写:
如果你写自己努力工作,团队精神好,自学能力强,非常喜欢贵公司 --- guess what ? 每个人都会这么写。。。并且绝对没人看
如果你写:我接触过C++, django, node, spark, java, android .... 100个,--- guess what, 我们每个人都"接触过",但是不精通有什么用呢?
如果你写:我精通everything,但是简历上除了人人都一样的course project3个之外,什么都没有,让别人怎么相信你精通啊?
请别把TA算成工作经验了
请别从高中开始玩VB也算成开发经验的年数了,人HR姐姐也不是傻子么
. 鍥磋鎴戜滑@1point 3 acres
这些无法查证的内容,都不用放了。zero information.

Read full article from 【新提醒】关于简历再说几句【一亩三分地论坛找工求职版】 - Powered by Discuz!


java - Get HttpServletRequest in Jax Rs / Appfuse application? - Stack Overflow



java - Get HttpServletRequest in Jax Rs / Appfuse application? - Stack Overflow

Adding it to the method signature worked. I imagine it's because the request and response objects don't yet exist when the class is instantiated, but does when called by the brower.

@Path("/")  @GET  @Produces(MediaType.APPLICATION_JSON)  List<Person> read( @Context HttpServletRequest httpServletRequest, @Context HttpServletResponse httpServletResponse) { }

Read full article from java - Get HttpServletRequest in Jax Rs / Appfuse application? - Stack Overflow


从贴吧杀入娱乐,看BAT三方如何拼杀泛娱乐产业-虎嗅网



从贴吧杀入娱乐,看BAT三方如何拼杀泛娱乐产业-虎嗅网

阿里:围绕后端电商变现领域 新浪微博长期一直都在围绕IP做文章,微博的优势就在于拥有明星资源,本身就是IP大本营,而其也与各方电影公司都有着紧密合作,而优酷土豆更是如此,此前旗下孵化出了《万万》、《泡芙小姐》这类成功的网络剧,而今年又宣布"创计划"每年投入5亿来扶植国产动漫...... 按理说,阿里如果需要孵化IP,那么新浪微博、优酷土豆必然是绝佳平台,再加上UC、线下院线、以及自身雄厚的天猫电商平台,IP从孵化到运营到最后的变现应当处于一种水到渠成的状态。但一个尴尬的事实是,这些资源并没有因为阿里系的投资变得结合更为紧密,而是依然处在各自为政的状态,平台自己孵化IP自己运营,最后又自己找资源,阿里的存在与否并不是显得那么重要。 这也和阿里的电商基因有关,其更多的是在围绕后端电商变现领域,而在前端IP的孵化与运营商并不是其强项,尽管阿里在泛娱乐的投资已经无所不包,但是却只能停留在最后涉及的变现领域,而始终没有能够亲自介入到IP的孵化到运营的过程中,进行多方资源的协同形成更大的格局。 腾讯的游戏收入在2016年Q1季度已经达到170.

Read full article from 从贴吧杀入娱乐,看BAT三方如何拼杀泛娱乐产业-虎嗅网


巧用location.hash保存页面状态



巧用location.hash保存页面状态


Read full article from 巧用location.hash保存页面状态


分布式搜索引擎设计



分布式搜索引擎设计

西加加语言 微信号 XJJ267 功能介绍 我个人感受,分布式和高可用是随着最近这些年阿里的双11活动火起来的,放眼全球,好像没有哪个公司的系统会在瞬间承接这么大的流量,并且还是绝对不能出错的交易流量,所以阿里确实积累了全球最丰富的高可用和分布式的经验,再加上各种技术大会一分享,这两个词就变成一个互联网公司技术系统的标配了。 可能很多人并不是很理解分布式和高可用,我们简单来说一下。 高可用其实是一直在IT行业中存在的,最典型的就是异地灾备系统了,这就是一个标准的高可用系统。 再次提示,请耐心读完本篇,请耐心 代码做的事情就是给一个数据作为函数的输入,然后通过函数,给出一个数据作为输出,在这个过程中可能需要存储一些数据到外部存储器中供以后使用。 所有的服务,最后都可以抽象成下面的样子 好,我们以搜索引擎为例来说一下,上面的y= f(g(h(u(x)))对应出来以后 如果是数据更新过程的话,x就是新增的那个文档,y就是更新是否成功,u函数就是分词,h就是更新内存倒排,g就是写磁盘。 所以说,一个服务,必定可以拆分成一个一个子服务,子服务还可以继续拆,拆到最后必定变成一个函数,而如果把一个或者一组函数拆出去单独变成一个服务的话,那这个服务就变成一个分布式的服务了,用时下比较流行的说法就是微服务。 4.为什么要分布式 只有当我们发现由于排序算法变复杂了,或者数据量增多了,每次返回数据的时间由10ms变成500ms了,这个时候只能把服务给拆成多个服务才能满足业务需求了,这才叫分布式。 5.如何进行分布式设计 一是服务的功能分布式,对应到代码也就是把一个1000行的函数变成两个500行的函数。 正好,搜索引擎的分布式这两个方面都可以涉及到,检索的时候需要对功能进行分布式,而索引本身需要对数据进行分布式,我们一个一个来说。 6.服务功能的分布式拆分 如果我们直接把这个服务分成上面四个单独的服务,完成服务的分布式,行不行呢?可以,但并不好,因为设计一个分布式的服务还是有一些东西需要考虑的,对于分布式的服务,一般需要注意以下三个关键点。 6.1 尽量减少网络开销 6.

Read full article from 分布式搜索引擎设计


Chrome 监听 console 打开



Chrome 监听 console 打开


Read full article from Chrome 监听 console 打开


Official Blogger Blog: More custom template flexibility



Official Blogger Blog: More custom template flexibility

Last May, we added some expressions to our templating language to make it easier for you to customize your blog's look and feel. These new expressions proved popular with those of you who enjoy advanced blogging tools, so we wanted to offer you even more flexibility. 

Read full article from Official Blogger Blog: More custom template flexibility


Official Blogger Blog: Adding new expressions to Blogger templates



Official Blogger Blog: Adding new expressions to Blogger templates

Blogger's template engine is powered by a flexible editing language, consisting of a set of Widget Tags which use expressions to conditionally change the output HTML for each post and page on your blog.

Using these expressions, you can customize the HTML output of your blog, to adjust the look and feel. You could, for example, show an image behind the header, but only on the homepage. Or add a flower icon, next to a post's title, if the post has the 'Flower' label.

You can customize your blog's template under Settings > Template > Edit HTML.

Read full article from Official Blogger Blog: Adding new expressions to Blogger templates


This cartoon explains how the rich got rich and the poor got poor - Vox



This cartoon explains how the rich got rich and the poor got poor - Vox

This cartoon explains how the rich got rich and the poor got poor Updated by Alvin Chang on May 23, 2016, 9:40 a.m. ET @alv9n Something massive and important has happened in the United States over the past 50 years: Economic wealth has become increasingly concentrated among a small group of ultra-wealthy Americans. You can read lengthy books on this subject, like economist Thomas Piketty's recent best-seller, Capital in the Twenty-First Century (the book runs 696 pages and weighs in at 2.5 pounds). You can see references to this in the campaigns of major political candidates this cycle, who talk repeatedly about how something has gone very wrong in America. Donald Trump's motto is to make America great again, while Bernie Sanders's campaign has focused on reducing income inequality. And there's a reason this message is resonating with voters: It's grounded in 50 years of reality. You can see lots of discussion and debate and political fighting over who has wealth in America,

Read full article from This cartoon explains how the rich got rich and the poor got poor - Vox


为什么说移动开发者很苦逼? - 移动应用开发 - JointForce - ITS新模式



为什么说移动开发者很苦逼? - 移动应用开发 - JointForce - ITS新模式


Read full article from 为什么说移动开发者很苦逼? - 移动应用开发 - JointForce - ITS新模式


什么才算是真正的编程能力? - 其他 - JointForce - ITS新模式



什么才算是真正的编程能力? - 其他 - JointForce - ITS新模式

计算机科学有两类根本问题。一类是理论:算法,数据结构,复杂度,机器学习,模式识别,等等等。一类是系统:操作系统,网络系统,分布式系统,存储系统,游戏引擎,等等等等。 理论走的是深度,是在追问在给定的计算能力约束下如何把一个问题解决得更快更好。而系统走的是广度,是在追问对于一个现实的需求如何在众多的技术中设计出最多快好省的技术组合。 所以比尔盖茨才会说,看到现在学编程的人经常都把编程看作解各种脑筋急转弯的问题,他觉得很遗憾。 做系统,确实不提倡"重复发明轮子"。但注意,是不提倡"重复发明",不是不提倡"重新制造"。恰恰相反的,我以为,系统的编程能力正体现在"重新制造"的能力。 能把已有的部件接起来,这很好。但当你恰好缺一种关键的胶水的时候,你能写出来吗?当一个已有的部件不完全符合你的需求的时候,你能改进它吗?如果你用的部件中有bug,你能把它修好吗?在网上繁多的类似功能的部件中,谁好谁坏?为什么?差别本质吗?一个开源代码库,你能把它从一个语言翻译到另一个语言吗?从一个平台移植到另一个平台吗?能准确估计自己翻译和移植的过程需要多少时间吗?能准确估计翻译和移植之后性能是会有提升还是会有所下降吗? 系统编程能力体现在把已有的代码拿来并变成更好的代码,体现在把没用的代码拿来并变成有用的代码,体现在把一个做好的轮子拿来能画出来轮子的设计蓝图,并用道理解释出设计蓝图中哪些地方是关键的,哪些地方是次要的,哪些地方是不容触碰的,哪些地方是还可以改进的。 怎么提高系统编程能力呢?土办法:多造轮子。就像学画画要画鸡蛋一样,不是这世界上没有人会画鸡蛋,但画鸡蛋能驯服手指,感受阴影线条和笔触。所以,自己多写点东西吧。写个编译器?渲染器?操作系统?web服务器?web浏览器?部件都一个个换成自己手写的,然后和已有的现成部件比一比,看看谁的性能好,谁的易用性好?好在哪儿?差在哪儿?为什么? 更聪明一点的办法:多拆轮子。多研究别人的代码是怎么写的。然而这个实践起来经常很难。原因:大部分工业上用的轮子可能设计上的思想和技术是好的,都设计和制造过程都很烂,里面乱成一团,让人乍一看毫无头绪,导致其对新手来说非常难拆。这种状况其实非常糟糕。所以,此办法一般只对比较简单的轮子好使,对于复杂的轮子,请量力而行。 轮子不好拆,其实是一个非常严重的问题。重复发明轮子固然是时间的浪费,但当轮子复杂而又不好拆的时候,

Read full article from 什么才算是真正的编程能力? - 其他 - JointForce - ITS新模式


setTimeout 的黑魔法 - 易极客



setTimeout 的黑魔法 - 易极客

  1. 浏览器的内核是多线程的,它们在内核制控下相互配合以保持同步,一个浏览器至少实现三个常驻线程:javascript引擎线程,GUI渲染线程,浏览器事件触发线程。
  2. javascript引擎是基于事件驱动单线程执行的.JS引擎一直等待着任务队列中任务的到来,然后加以处理,浏览器无论什么时候都只有一个JS线程在运行JS程序。
  3. 当界面需要重绘(Repaint)或由于某种操作引发回流(reflow)时,该线程就会执行。但需要注意 GUI渲染线程与JS引擎是互斥的,当JS引擎执行时GUI线程会被挂起,GUI更新会被保存在一个队列中等到JS引擎空闲时立即被执行。
  4. 当一个事件被触发时该线程会把事件添加到待处理队列的队尾,等待JS引擎的处理。这些事件可来自JavaScript引擎当前执行的代码块如setTimeOut、也可来自浏览器内核的其他线程如鼠标点击、AJAX异步请求等,但由于JS的单线程关系所有这些事件都得排队等待JS引擎处理。


Read full article from setTimeout 的黑魔法 - 易极客


TIOBE 2016年5月编程语言排行榜:Ruby 斩获历史佳绩 - 易极客



TIOBE 2016年5月编程语言排行榜:Ruby 斩获历史佳绩 - 易极客

Ruby目前正位于TIOBE排行榜的第八名,这是自2008年12月以来Ruby所拿到过的最好成绩。这是Ruby的第二个峰值,不过这次与首次登顶的情况完全相反——在2006年Ruby的信徒曾高呼:"这种语言将成为有史最佳语言,毋需质疑Ruby及其编程环境Rails将征服世界。"

在某种程度上,他们算是成功地达成了这一目标:那些市场推广计划时间有限的创业公司纷纷选择了Ruby。甚至,Ruby还曾获得了"2006年度编程语言"的殊荣,直到2008年底盛极而衰。问题出现在:这种语言编写的程序似乎无法获得可扩展性,如果需要处理的数据太多,性能便会大幅下降。


Read full article from TIOBE 2016年5月编程语言排行榜:Ruby 斩获历史佳绩 - 易极客


今日话题:百度整改宣布完成,莆田系呢? - 极客头条 - CSDN.NET



今日话题:百度整改宣布完成,莆田系呢? - 极客头条 - CSDN.NET


Read full article from 今日话题:百度整改宣布完成,莆田系呢? - 极客头条 - CSDN.NET


OpenVR SDK新版本发布 允许调用HTC Vive的前置摄像头 - 极客头条 - CSDN.NET



OpenVR SDK新版本发布 允许调用HTC Vive的前置摄像头 - 极客头条 - CSDN.NET

Valve更新了旗下的OpenVR SDK至最新版本v1.0.0。

随着越来越多的开发者开始他们的VR开发工作,他们看到了这项技术的巨大潜力,像是Valve这样的公司正在想办法保证他们的软件开发包(SDK)能够提供尽量多的功能。今天这家公司发布了其针对SteamVR的OpenVR SDK的最新版本,为该软件增加了额外的新功能。

与大量的修正同时来到OpenVR SDK v1.0.0版本的还有一个重大更改,开发者们已经可以调用HTC Vive的前置摄像头,这将会为该设备上的应用和游戏带来一系列的新的变动,因为真实环境的图像将可以被应用到VR应用中。


Read full article from OpenVR SDK新版本发布 允许调用HTC Vive的前置摄像头 - 极客头条 - CSDN.NET


Twitter open-sources Heron, its real-time stream-processing engine | VentureBeat | Dev | by Jordan Novet



Twitter open-sources Heron, its real-time stream-processing engine | VentureBeat | Dev | by Jordan Novet

Above: Twitter's logo featured in the lobby of its San Francisco headquarters. Image Credit: Ken Yeung/VentureBeat Twitter is today releasing its Heron real-time stream processing engine under an open-source Apache license on GitHub . Twitter first published a paper documenting Heron last year , but the software has been proprietary, until now. Written in C++, Java, and Python, Heron is a successor to the Storm stream-processing engine that Twitter built and then open-sourced in 2011. Heron offers considerable performance gains relative to Storm. "Heron is a streaming system that was born out of the challenges we faced due to increases in volume and diversity of data being processed, as well as the number of use cases for real-time analytics," Twitter engineering manager Karthik Ramasamy wrote in a blog post . "We needed a system that scaled better, was easier to debug, had better performance, was easier to deploy and manage, and worked in a shared multi-tenant cluster environment.

Read full article from Twitter open-sources Heron, its real-time stream-processing engine | VentureBeat | Dev | by Jordan Novet


Check if two trees are Mirror - GeeksforGeeks



Check if two trees are Mirror - GeeksforGeeks

Check if two trees are Mirror

Given two Binary Trees, write a function that returns true if two trees are mirror of each other, else false. For example, the function should return true for following input trees.


Read full article from Check if two trees are Mirror - GeeksforGeeks


Count Palindromes | LeetCode Discuss



Count Palindromes | LeetCode Discuss

Count the number of possible palindrome substrings in a string. A palindrome is a word that reads the same way spelled backwards.
Example:
input: lasagna.
Possible palindromes are asa, l,a,s,a,g,n,a.
output: count is 8.

input:hellolle
ellolle,lloll,lol,ll,ll,h,e,l,l,o,l,l,e.
output:13


Read full article from Count Palindromes | LeetCode Discuss


Find maximum length of subsequence in Array? | LeetCode Discuss



Find maximum length of subsequence in Array? | LeetCode Discuss

This is longest Increasing subsequence problem. There is DP solution for this with time complexity O(n^2). LIS[i] = Math.max(LIS[j]) where j<i and num[j] < num[i] or Lis[i] = 1 if it doesn't exist such j
There is O(nlog(n)) solution using binary search. The idea is to iterate through the array from left to right and at each iteration to improve or extend current best LIS. What do I mean. Suppose we have array a = {10, 16, 12, 14}
In the beginning our best LIS is empty , we keep it in array best

  1. best = []
  2. we read a[0] = 10 and put it in best , best = {10}
  3. read a[1] = 16 and put it in best ={10,16} because this extends our best LIS
  4. read a[2] = 12, it cannot extend our best LIS , because 12 is less than 16, but we can swap 16 with 12 in best in order to improve our LIS, There is a possibility next numbers to be greater than 12 and less than 16 and to extend best LIS.
    b becomes {10,12}
  5. We read a[3] = 14 and b becomes {10,12,14}, because 14 is greater than 12 and it iextends current best solution

Read full article from Find maximum length of subsequence in Array? | LeetCode Discuss


Walmart Faces a German Invasion - Bloomberg Gadfly



Walmart Faces a German Invasion - Bloomberg Gadfly

Investors cheered Walmart's first-quarter results last week, triggering the biggest one-day jump in the big-box retailer's shares since October 2008. But the report revealed troubles brewing across the pond, at Walmart's U.K. unit, Asda. 


Read full article from Walmart Faces a German Invasion - Bloomberg Gadfly


[JERSEY-2324] Asynchronous ContainerRequestFilter using ManagedAsync - Java.net JIRA



[JERSEY-2324] Asynchronous ContainerRequestFilter using ManagedAsync - Java.net JIRA

A ContainerRequestFilter cannot be executed asynchronously.

A very common use case for this filter would be an authorization check, but if that check goes to an external service or to a database, benefits from @ManagedAsync are lost because only resource methods are invoked asynchronously.

This is very tricky because a PreMatching filter could change the request from a @ManagedAsync resource method to a non-async method, or visa-versa. Maybe any filters that are not PreMatching should be offloaded to the ExecutorService if the matching resource method has @ManagedAsync? Or maybe an entirely new type of filter should be introduced for this case, one that's basically an HK2 AOP MethodInterceptor?


    Read full article from [JERSEY-2324] Asynchronous ContainerRequestFilter using ManagedAsync - Java.net JIRA


    Sort Complexities | LeetCode Discuss



    Sort Complexities | LeetCode Discuss

    Yeah, that's correct!

    You can see this by breaking the multiplication down to individual steps:

    e^n = e x  e  x  e  x ... x e x e  n!  = n x n-1 x n-2 x ... x 2 x 1  

    As you can see above, when n grows, n! easily overtakes e^n.


    Read full article from Sort Complexities | LeetCode Discuss


    Spark 2.0介绍:从RDD API迁移到DataSet API – 过往记忆



    Spark 2.0介绍:从RDD API迁移到DataSet API – 过往记忆


    Read full article from Spark 2.0介绍:从RDD API迁移到DataSet API – 过往记忆


    谷歌Allo的“智商”哪儿来?人工智能技术大揭秘 | 雷锋网



    谷歌Allo的"智商"哪儿来?人工智能技术大揭秘 | 雷锋网


    Read full article from 谷歌Allo的"智商"哪儿来?人工智能技术大揭秘 | 雷锋网


    我是如何寻找网络的阴暗面的 - 今日头条(TouTiao.com)



    我是如何寻找网络的阴暗面的 - 今日头条(TouTiao.com)


    Read full article from 我是如何寻找网络的阴暗面的 - 今日头条(TouTiao.com)


    运维利器:万能的 strace



    运维利器:万能的 strace

    按照strace官网的描述, strace是一个可用于诊断、调试和教学的Linux用户空间跟踪器。我们用它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等。

    strace底层使用内核的ptrace特性来实现其功能。

    在运维的日常工作中,故障处理和问题诊断是个主要的内容,也是必备的技能。strace作为一种动态跟踪工具,能够帮助运维高效地定位进程和服务故障。它像是一个侦探,通过系统调用的蛛丝马迹,告诉你异常的真相。

    strace能做什么?


    Read full article from 运维利器:万能的 strace


    第2章 使用Redis构建Web应用 — Redis 实战



    第2章 使用Redis构建Web应用 — Redis 实战

    每当我们登录互联网服务(比如银行账户或者电子邮件)的时候,这些服务都会使用cookie来记录我们的身份。cookie由少量数据组成,网站会要求我们的浏览器存储这些数据,并且在每次服务发出请求时再将这些数据传回给服务。对于用来登录的cookie,有两种常见的方法可以将登录信息存储在cookie里面:一种是签名(signed)cookie,另一种是令牌(token)cookie。

    签名cookie通常会存储用户名,可能还有他们的用户ID、用户最后一次成功登录的时间,以及网站觉得有用的其他任何信息。除了用户的相关信息之外,签名cookie还包含一个签名,服务器可以使用这个签名来验证浏览器发送的信息是否未经改动(比如将cookie中的登录用户名改成另一个用户)。

    令牌cookie会在cookie里面存储一串随机字节作为令牌,服务器可以根据令牌在数据库中查找令牌的拥有者。随着时间的推移,旧令牌会被新令牌取代。表2-1展示了签名cookie和令牌cookie的优点与缺点。


    Read full article from 第2章 使用Redis构建Web应用 — Redis 实战


    Redis 学习路线 — huangz/blog



    Redis 学习路线 — huangz/blog

    如果你只是对 Redis 感兴趣, 又或者听别人说过一些关于 Redis 的介绍, 但是却并没有实际使用过 Redis , 那么你就处于 Redis 初学者这一阶段。

    Redis 初学者可以考虑使用《Redis入门指南(第2版)》作为教程, 并辅以《Redis命令参考》文档作为参考。

    《Redis入门指南》是 ioredis 、 medis 等项目的作者 luin 的作品, 该书深入浅出地介绍了 Redis 的主要特性、基本命令以及使用方法, 整本书的篇幅不多, 行文简单, 很容易就能够看完。 初学者可以通过阅读这本书知道 Redis 是什么以及它能做什么。

    因为篇幅所限, 《Redis入门指南》并没有对 Redis 的各个命令展开进行介绍, 因此如果读者想要进一步了解某个命令的详细用法和相关信息, 那么可以通过《Redis命令参考》进行查询。

    在阅读了《Redis入门指南》和《Redis命令参考》之后, 初学者应该对 Redis 的功能、作用以及使用方法有了基本的了解, 并能够使用 Redis 去解决一些简单的问题。 在此之后, 初学者就可以向下一阶段进发, 考虑如何将 Redis 应用到实际的工作当中。


    Read full article from Redis 学习路线 — huangz/blog


    sohutv/cachecloud: 搜狐视频(sohu tv)Redis私有云平台



    sohutv/cachecloud: 搜狐视频(sohu tv)Redis私有云平台

    二、CacheCloud提供哪些功能


    Read full article from sohutv/cachecloud: 搜狐视频(sohu tv)Redis私有云平台


    osx - Mac OS X equivalent of Linux flock(1) command - Stack Overflow



    osx - Mac OS X equivalent of Linux flock(1) command - Stack Overflow

    I don't believe that the flock command exists on OS X, but it does exist on BSD which should make it reasonably easy to port to OS X.

    The closest that is available is the shlock command (man page), but it isn't as robust or secure as flock.

    Your best bet may be to look at porting either the Linux or BSD version of flock to OS X.


    Read full article from osx - Mac OS X equivalent of Linux flock(1) command - Stack Overflow


    不良编程文化-程序员头条



    不良编程文化-程序员头条


    Read full article from 不良编程文化-程序员头条


    10年前苹果向它支付1亿美元 10年后这家公司要求众巨头掏钱_Creative 创新_cnBeta.COM



    10年前苹果向它支付1亿美元 10年后这家公司要求众巨头掏钱_Creative 创新_cnBeta.COM

    "苹果要向华为支付数亿美元的专利使用费了!"不久前,这个消息在很多人的朋友圈刷了屏。事实上,苹果确实有向华为购买专利,但专利费用保密。虽然外界不 知道确切的专利使用费,但在这个消息背后却有很多值得探究的东西。在智能手机的产业链中,专利是一个非常重要的环节,《每日经济新闻》本期就为你带来专利江湖的"恩怨"故事,以及通信企业、中外手机商们围绕专利正在进行的竞争与博弈。 另外,时不时听到华为、中兴通讯等中国手机企业又被美国"337调查"之类的消息,"337调查"又是个什么东西?它真的值得我们每一次都那么一惊一乍的吗? 在你使用的手机音乐播放器中,一个并不太起眼的技术,可能要让全球的手机厂商不得不向新加坡一家老牌公司掏腰包。 很多人士将此次调查与中美贸易摩擦产生联系,但据《每日经济新闻》记者了解,事实可能并非如此。从美国国际贸易委员会官网公布的案件详情上看,此项调查起因是新加坡创新科技有限公司(以下简称创新科技)及其子公司对在美国市场有一定规模的手机品牌侵犯专利技术提出的调查,涉及到几乎所有手机品牌,之所以没有苹果,是因为苹果在2006年就被这家公司收取了1亿美元的和解费用。 有法务人士认为,创新科技再次取胜的概率很大。 "对进入美国市场的中国企业来说'337调查'已经不再神秘。但'337调查'有准司法程序性质,一旦判决时效性很强,所以败诉企业损失会较大,对中国企业应对337诉讼,国内已经有专业的律师团队,谈到'337调查'大可不必恐慌。"君泽君律师事务所张泽吾律师表示。 从美国国际贸易委员会官网查询此次"337调查"事件的信息得知,对中兴、联想、三星、索尼等提起诉讼的公司之一新加坡Creative Technology(创新科技),是一家纳斯达克上市公司。 早在3月24日,创新科技就在美国德州东区法院,针对中兴、联想、Sony、三星、LG、HTC和黑莓提起了专利侵权诉讼,而涉案专利就是赫赫有名的"ZEN"专利。同一天创新科技子公司也在ITC发起了申诉(Complaints),申诉编号为3130,申诉的对象仍然是上述这些智能手机厂商。而上周,美国ITC接受了创新科技的申诉请求,正式启动"337调查"程序。 《每日经济新闻》记者调查获悉,创新科技1981年创建于新加坡,曾经是多媒体和数码娱乐领域享有盛誉的世界领导厂商。由于个人电脑小型化,声卡大多被集成在主板之上,创新科技经营

    Read full article from 10年前苹果向它支付1亿美元 10年后这家公司要求众巨头掏钱_Creative 创新_cnBeta.COM


    Realm Java的学习、应用、总结 - 简书



    Realm Java的学习、应用、总结 - 简书


    Read full article from Realm Java的学习、应用、总结 - 简书


    bash并发编程和flock



    bash并发编程和flock

    我们先来看如何写一个并发的bash程序。当我们知道如何对命令进行作业控制和如何使用wait命令之后,我们就已经可以写一个简单的bash并发程序了。我们这次的例子稍微复杂一点,我们写一个bash脚本,创建一个计数文件,并将里面的值写为0。然后打开100个子进程,每个进程都去读取这个计数文件的当前值,并加1写回去。如果程序执行正确,最后里面的值应该是100,因为每个子进程都会累加一个1写入文件,我们来试试: [zorro@zorrozou-pc0 bash]$ cat racing.sh #!/bin/bash countfile=/tmp/count if ! [ -f $countfile ] then    echo 0 > $countfile fi do_count () {    read count < $countfile    echo $((++count)) > $countfile } for i in `seq 1 100` do     do_count & done wait cat $countfile rm $countfile 我们再来看看这个程序的执行结果: 多次执行之后,每次得到的结果都不一样,也没有一次是正确的结果。这就是典型的竞争条件引起的问题。当多个进程并发的时候,如果使用的共享的资源,就有可能会造成这样的问题。这里的竞争调教就是:当某一个进程读出文件值为0,并加1,还没写回去的时候,如果有别的进程读了文件,读到的还是0。于是多个进程会写1,以及其它的数字。解决共享文件的竞争问题的办法是使用文件锁。每个子进程在读取文件之前先给文件加锁,写入之后解锁,这样临界区代码就可以互斥执行了: [zorro@zorrozou-pc0 bash]$ cat flock.sh #!/bin/bash countfile=/tmp/count if !

    Read full article from bash并发编程和flock


    女程序员做了个梦,众网友的神回复-程序员头条



    女程序员做了个梦,众网友的神回复-程序员头条

    "昨晚梦见男朋友和别的女人在逛街,梦里我的第一反应就是查源代码,结果调试半天查不出来为什么显示的那个女人不是我,最后含泪把那个女人注释掉了,再一运行就是我男朋友自己逛街了。"


    Read full article from 女程序员做了个梦,众网友的神回复-程序员头条


    java在处理大数据的时候一些小技巧 - xieyuooo的专栏 - 博客频道 - CSDN.NET



    java在处理大数据的时候一些小技巧 - xieyuooo的专栏 - 博客频道 - CSDN.NET

    众所周知,java在处理数据量比较大的时候,加载到内存必然会导致内存溢出,而在一些数据处理中我们不得不去处理海量数据,在做数据处理中,我们常见的手段是分解,压缩,并行,临时文件等方法;


    例如,我们要将数据库(不论是什么数据库)的数据导出到一个文件,一般是Excel或文本格式的CSV;对于Excel来讲,对于POI和JXL的接口,你很多时候没有办法去控制内存什么时候向磁盘写入,很恶心,而且这些API在内存构造的对象大小将比数据原有的大小要大很多倍数,所以你不得不去拆分Excel,还好,POI开始意识到这个问题,在3.8.4的版本后,开始提供cache的行数,提供了SXSSFWorkbook的接口,可以设置在内存中的行数,不过可惜的是,他当你超过这个行数,每添加一行,它就将相对行数前面的一行写入磁盘(如你设置2000行的话,当你写第20001行的时候,他会将第一行写入磁盘),其实这个时候他些的临时文件,以至于不消耗内存,不过这样你会发现,刷磁盘的频率会非常高,我们的确不想这样,因为我们想让他达到一个范围一次性将数据刷如磁盘,比如一次刷1M之类的做法,可惜现在还没有这种API,很痛苦,我自己做过测试,通过写小的Excel比使用目前提供刷磁盘的API来写大文件,效率要高一些,而且这样如果访问的人稍微多一些磁盘IO可能会扛不住,因为IO资源是非常有限的,所以还是拆文件才是上策;而当我们写CSV,也就是文本类型的文件,我们很多时候是可以自己控制的,不过你不要用CSV自己提供的API,也是不太可控的,CSV本身就是文本文件,你按照文本格式写入即可被CSV识别出来;如何写入呢?下面来说说。。。


    在处理数据层面,如从数据库中读取数据,生成本地文件,写代码为了方便,我们未必要1M怎么来处理,这个交给底层的驱动程序去拆分,对于我们的程序来讲我们认为它是连续写即可;我们比如想将一个1000W数据的数据库表,导出到文件;此时,你要么进行分页,oracle当然用三层包装即可,mysql用limit,不过分页每次都会新的查询,而且随着翻页,会越来越慢,其实我们想拿到一个句柄,然后向下游动,编译一部分数据(如10000行)将写文件一次(写文件细节不多说了,这个是最基本的),需要注意的时候每次buffer的数据,在用outputstream写入的时候,最好flush一下,将缓冲区清空下;接下来,执行一个没有where条件的SQL,会不会将内存撑爆?是的,这个问题我们值得去思考下,通过API发现可以对SQL进行一些操作,例如,通过:PreparedStatement statement = connection.prepareStatement(sql),这是默认得到的预编译,还可以通过设置:PreparedStatement statement = connection.prepareStatement(sql , ResultSet.TYPE_FORWARD_ONLY , ResultSet.CONCUR_READ_ONLY);

    来设置游标的方式,以至于游标不是将数据直接cache到本地内存,然后通过设置statement.setFetchSize(200);设置游标每次遍历的大小;OK,这个其实我用过,oracle用了和没用没区别,因为oracle的jdbc API默认就是不会将数据cache到java的内存中的,而mysql里头设置根本无效,我上面说了一堆废话,呵呵,我只是想说,java提供的标准API也未必有效,很多时候要看厂商的实现机制,还有这个设置是很多网上说有效的,但是这纯属抄袭;对于oracle上面说了不用关心,他本身就不是cache到内存,所以java内存不会导致什么问题,如果是mysql,首先必须使用5以上的版本,然后在连接参数上加上useCursorFetch=true这个参数,至于游标大小可以通过连接参数上加上:defaultFetchSize=1000来设置,例如:

    jdbc:mysql://xxx.xxx.xxx.xxx:3306/abc?zeroDateTimeBehavior=convertToNull&useCursorFetch=true&defaultFetchSize=1000

    上次被这个问题纠结了很久(mysql的数据老导致程序内存膨胀,并行2个直接系统就宕了),还去看了很多源码才发现奇迹竟然在这里,最后经过mysql文档的确认,然后进行测试,并行多个,而且数据量都是500W以上的,都不会导致内存膨胀,GC一切正常,这个问题终于完结了。


    我们再聊聊其他的,数据拆分和合并,当数据文件多的时候我们想合并,当文件太大想要拆分,合并和拆分的过程也会遇到类似的问题,还好,这个在我们可控制的范围内,如果文件中的数据最终是可以组织的,那么在拆分和合并的时候,此时就不要按照数据逻辑行数来做了,因为行数最终你需要解释数据本身来判定,但是只是做拆分是没有必要的,你需要的是做二进制处理,在这个二进制处理过程,你要注意了,和平时read文件不要使用一样的方式,平时大多对一个文件读取只是用一次read操作,如果对于大文件内存肯定直接挂掉了,不用多说,你此时因该每次读取一个可控范围的数据,read方法提供了重载的offset和length的范围,这个在循环过程中自己可以计算出来,写入大文件和上面一样,不要读取到一定程序就要通过写入流flush到磁盘;其实对于小数据量的处理在现代的NIO技术的中也有用到,例如多个终端同时请求一个大文件下载,例如视频下载吧,在常规的情况下,如果用java的容器来处理,一般会发生两种情况:


    其一为内存溢出,因为每个请求都要加载一个文件大小的内存甚至于更多,因为java包装的时候会产生很多其他的内存开销,如果使用二进制会产生得少一些,而且在经过输入输出流的过程中还会经历几次内存拷贝,当然如果有你类似nginx之类的中间件,那么你可以通过send_file模式发送出去,但是如果你要用程序来处理的时候,内存除非你足够大,但是java内存再大也会有GC的时候,如果你内存真的很大,GC的时候死定了,当然这个地方也可以考虑自己通过直接内存的调用和释放来实现,不过要求剩余的物理内存也足够大才行,那么足够大是多大呢?这个不好说,要看文件本身的大小和访问的频率;


    其二为假如内存足够大,无限制大,那么此时的限制就是线程,传统的IO模型是线程是一个请求一个线程,这个线程从主线程从线程池中分配后,就开始工作,经过你的Context包装、Filter、拦截器、业务代码各个层次和业务逻辑、访问数据库、访问文件、渲染结果等等,其实整个过程线程都是被挂住的,所以这部分资源非常有限,而且如果是大文件操作是属于IO密集型的操作,大量的CPU时间是空余的,方法最直接当然是增加线程数来控制,当然内存足够大也有足够的空间来申请线程池,不过一般来讲一个进程的线程池一般会受到限制也不建议太多的,而在有限的系统资源下,要提高性能,我们开始有了new IO技术,也就是NIO技术,新版的里面又有了AIO技术,NIO只能算是异步IO,但是在中间读写过程仍然是阻塞的(也就是在真正的读写过程,但是不会去关心中途的响应),还未做到真正的异步IO,在监听connect的时候他是不需要很多线程参与的,有单独的线程去处理,连接也又传统的socket变成了selector,对于不需要进行数据处理的是无需分配线程处理的;而AIO通过了一种所谓的回调注册来完成,当然还需要OS的支持,当会掉的时候会去分配线程,目前还不是很成熟,性能最多和NIO吃平,不过随着技术发展,AIO必然会超越NIO,目前谷歌V8虚拟机引擎所驱动的node.js就是类似的模式,有关这种技术不是本文的说明重点;


    将上面两者结合起来就是要解决大文件,还要并行度,最土的方法是将文件每次请求的大小降低到一定程度,如8K(这个大小是经过测试后网络传输较为适宜的大小,本地读取文件并不需要这么小),如果再做深入一些,可以做一定程度的cache,将多个请求的一样的文件,cache在内存或分布式缓存中,你不用将整个文件cache在内存中,将近期使用的cache几秒左右即可,或你可以采用一些热点的算法来配合;类似迅雷下载的断点传送中(不过迅雷的网络协议不太一样),它在处理下载数据的时候未必是连续的,只要最终能合并即可,在服务器端可以反过来,谁正好需要这块的数据,就给它就可以;才用NIO后,可以支持很大的连接和并发,本地通过NIO做socket连接测试,100个终端同时请求一个线程的服务器,正常的WEB应用是第一个文件没有发送完成,第二个请求要么等待,要么超时,要么直接拒绝得不到连接,改成NIO后此时100个请求都能连接上服务器端,服务端只需要1个线程来处理数据就可以,将很多数据传递给这些连接请求资源,每次读取一部分数据传递出去,不过可以计算的是,在总体长连接传输过程中总体效率并不会提升,只是相对相应和所开销的内存得到量化控制,这就是技术的魅力,也许不要太多的算法,不过你得懂他。


    类似的数据处理还有很多,有些时候还会将就效率问题,比如在HBase的文件拆分和合并过程中,要不影响线上业务是比较难的事情,很多问题值得我们去研究场景,因为不同的场景有不同的方法去解决,但是大同小异,明白思想和方法,明白内存和体系架构,明白你所面临的是沈阳的场景,只是细节上改变可以带来惊人的效果。


    Read full article from java在处理大数据的时候一些小技巧 - xieyuooo的专栏 - 博客频道 - CSDN.NET


    谷歌想把你的手机变成实验仪器:现在装个App就能做到|谷歌|科学实验_新浪科技_新浪网



    谷歌想把你的手机变成实验仪器:现在装个App就能做到|谷歌|科学实验_新浪科技_新浪网

      新浪科技讯 北京时间5月23日上午消息,如果你喜欢科学实验,肯定会喜欢谷歌的这款新应用。谷歌希望借助于这款名为Science Journal的应用激发每个人的好奇心,它可以实时衡量和记录数据,然后将数据转化成易于识别的图表。你在高中理科课程上学到各种实验,都可以借助这款应用来完成。


    Read full article from 谷歌想把你的手机变成实验仪器:现在装个App就能做到|谷歌|科学实验_新浪科技_新浪网


    浏览器大战再起,谁将夺取企业市场第一把交椅?-搜狐科技!!!



    浏览器大战再起,谁将夺取企业市场第一把交椅?-搜狐科技!!!

      虽然微软目前为用户提供了升级到IE 11或者改用Microsoft Edge浏览器的替代方案,但这仅仅是应对Chrome等来自C端发力的一个手段。另外,中国大型企业追求的是安全稳定,IE每次在发布新版本的时候,都会把老版本的内核带上,但是如果不在开发和标准上尽快抢占到领先地位,那么随着C端用户市场的流失和开发人员对兼容性更强的浏览器偏好,IE在企业信息化服务将是"廉颇老矣,尚能饭否?"

      Chrome移动端崛起,企业服务稍逊一筹

      前不久,Chrome团队宣布经过六年的努力,在移动端在过去5个月内新增2亿用户,活跃用户已超过10亿,且Chrome桌面浏览器的市场份额由3月39%上升至4月份的41.6%,超过IE。

      在开发方面,由于网页兼容性好、稳定、极速、开放的插件/扩展、简洁易操作的界面等特点,使得无论是在软件厂商一端,还是用户端,开始纷纷转向Chrome核心,中国越来越多的银行和购物等平台也开始支持了Chrome核心。并且,Google一直都有Web OS 的愿景,即所有的应用都是基于HTML5的云端应用,还因此开发了Chrome OS操作系统。这些来自市场的客观数据和市场行为,让人们对Google开始充满期待。

      但尽管推动HTML5和Web 的发展是解决企业移动信息化信息孤岛的利器,但是Google、苹果等公司是2C的公司,每个企业的决策都要和自己的核心商业模式相呼应,这也导致了Chrome 等浏览器不会在B上面做太多的工作。Google在移动端操作系统的主要布局,还是为了解决Google的强大信息检索能力无法在安卓生态里面发挥的问题。

      在Google I/O 2016开发者大会上,他们推出的Instant Apps也让我们有理由相信Google会大力推动HTML5应用的发展,以让Google搜索引擎在移动世界再次可以发挥巨大作用。但同时,我们也看到除了Chrome 外,Google重点关注各项与生活相关的智能硬件、VR等领域,短期内让Chrome转型去做自己并不熟悉的企业市场,这基本上也是不太可能的。

      BAT浏览器之争,醉翁之意不在酒

      将目光再转向国内的互联网巨头BAT会发现,不论是高调上市的阿里钉钉,还是腾讯最近推出的企业版微信,这些都说明他们开始觊觎企业服务市场。由于BAT的加入,这第三次浏览器大战中,出现了一系列广义浏览器概念,他们不是"浏览器",但却嵌入了浏览器内核,拥有读取网页的能力,最典型的就是微信,它基于HTML5, 用户能够通过微信访问任何HTML5页面,并在社交圈进行分享和传播。


    Read full article from 浏览器大战再起,谁将夺取企业市场第一把交椅?-搜狐科技!!!


    分布式缓存 - linyx - 博客园



    分布式缓存 - linyx - 博客园

    分布式缓存出于如下考虑,首先是缓存本身的水平线性扩展问题,其次是缓存大并发下的本身的性能问题,再次避免缓存的单点故障问题(多副本和副本一致性)。分布式缓存的核心技术包括首先是内存本身的管理问题,包括了内存的分配,管理和回收机制。其次是分布式管理和分布式算法,其次是缓存键值管理和路由。

    Memcached要想实现分布式只能在客户端来完成,目前比较流行的是通过一致性hash算法来实现。首先求出memcached服务器(节点)的哈希值, 并将其配置到0~232的圆(continuum)上。 然后用同样的方法求出存储数据的键的哈希值,并映射到圆上。 然后从数据映射到的位置开始顺时针查找,将数据保存到找到的第一个服务器上。 如果超过232仍然找不到服务器,就会保存到第一台memcached服务器上。在Consistent Hashing中,只有在continuum上增加服务器的地点逆时针方向的 第一台服务器上的键会受到影响。


    Read full article from 分布式缓存 - linyx - 博客园


    LRU and LFU cache implementation | Lxming's Weblog



    LRU and LFU cache implementation | Lxming's Weblog

    I am learning a couple of LRU/LFU cache implementation. In a couple of implementations, I saw the combination of deque, double-linked list and hashmap data structure, the idea is like:

    in LRU cache:

    use hashmap to achieve a O(1) lookup.
    use deque to maintain order by access.

    in LFU cache:
    use hashmap to achieve a O(1) lookup.
    use double-linked list to maintain frequency


    Read full article from LRU and LFU cache implementation | Lxming's Weblog


    Crash率从2.2%降至0.2%,这个团队是怎么做到的?



    Crash率从2.2%降至0.2%,这个团队是怎么做到的?


    Read full article from Crash率从2.2%降至0.2%,这个团队是怎么做到的?


    谁动了我的Token – TW洞见



    谁动了我的Token – TW洞见

    早上7点45分来到公司,我坐在办公桌旁边开始考虑今天的工作事项。想到客户一直抱怨的电子表单系统在产品环境上8000多个无法重现的错误日志就亚历山大,"替换成微软类库也并不一定解决问题,客户又在捣乱。今天一定要和夏夏一起看看这个问题,优先级得提上来",我心里暗自的想着,并把它加到了待办事项的第一条,优先级标为高,截止时间是今天。 开了个好头,但遭遇IE-Only问题 按下遇到的各种环境问题不提,这个错误很快就在IE浏览器(文中统称IE)上重现了,而且只在IE上才有这个问题:页面缺少Anti-CSRF Token导致请求被拒绝。"哎,这不错!",夏夏用他一贯的幽默风格说道。我想:是的,好兆头,万事开头难,我们似乎开了个好头,然而这怎么好像又是IE啊,真不靠谱。 更不靠谱的e.preventDefault? form.submit(function() { if ("AntiCSRF-TOKEN" element not exists) { form.append( input 'AntiCSRF-TOKEN' with value) } }); "哦,横切了一刀",我说。夏夏说:"恩,你说的太对了!是在所有Form提交时自动追加Token"。我想这看起来没问题,在早期系统中经常这样干。那么是谁动了我的Token呢? 11点了,我们的诊断工作紧张而有序的继续进行着,分析各种可能出现的异常路径以及可能性。各种测试验证貌似都没有问题。"这不应该呀。夏夏,我们在里面加上e.preventDefault,不让它提交,手工测测看。"这时我开始乱入,怀着试试看的态度对夏夏说。心想,怎么有些像回到了5年前工作在这个系统上的状态。夏夏改了代码并编译运行,奇怪的事情发生了:Form提交成功,并且错误被修复了!!不光开了个好头,好像我们还中彩蛋了的感觉。 我和夏夏都惊呆了:"这怎么可能?" 夏夏说。"是啊",我说,"e.preventDefault不是应该阻止提交吗?" 暗想我就是最近一段时间没写前端代码而已,世界变化这么快?我和夏夏又过了一遍Anti-CSRF Token处理代码,做了各种尝试,仍然没有头绪。即使e.preventDefault可以解决问题,但我们仍然不知道问题根源。谁动了我的Token!

    Read full article from 谁动了我的Token – TW洞见


    知乎专栏



    知乎专栏


    Read full article from 知乎专栏


    Will Costco do a business delivery to my home? *I work from my house* : Costco



    Will Costco do a business delivery to my home? *I work from my house* : Costco

    Absolutely. Go to costco.com and search business delivery ...we have quite a few home businesses as business members. PM me if you have any issues, I work in our marketing department as a business member representative, and would be happy to address any issues you may have.

    Edit: you may also take advantage of our free fax and pull service, they will pull any orders greater than $300 (some warehouses require $500) and have it ready for pickup within 24 hours. Some prices are actually cheaper in store, as shipping is not included. Then you just walk in and pay, we will even load everything for you.


      Read full article from Will Costco do a business delivery to my home? *I work from my house* : Costco


      Google isn't merging Android and Chrome OS, it's just stealing their best parts | VentureBeat | Dev | by Emil Protalinski



      Google isn't merging Android and Chrome OS, it's just stealing their best parts | VentureBeat | Dev | by Emil Protalinski

      Both features are coming later this year, and it's certainly possible that key components will change. Still, we finally have a proper understanding of Google's vision: Instead of merging Android and Chrome OS, or maybe before doing so, it's bringing them closer together.

      The two could still merge someday. In fact, by giving Android the dual partition system that Chrome OS uses, and by giving Chrome OS the Android framework, the two will start to resemble each other more and more.


      Read full article from Google isn't merging Android and Chrome OS, it's just stealing their best parts | VentureBeat | Dev | by Emil Protalinski


      Java8并发教程:Threads和Executors | 并发编程网 - ifeve.com



      Java8并发教程:Threads和Executors | 并发编程网 - ifeve.com

      欢迎阅读我的Java8并发教程的第一部分。这份指南将会以简单易懂的代码示例来教给你如何在Java8中进行并发编程。这是一系列教程中的第一部分。在接下来的15分钟,你将会学会如何通过线程,任务(tasks)和 exector services来并行执行代码。 Runnable ——一个定义了一个无返回值无参数的 run() 因为 Runnable 或者这样: 我们可以将线程休眠确定的时间。在这篇文章接下来的代码示例中我们可以通过这种方法来模拟长时间运行的任务。 当你运行上面的代码时,你会注意到在第一条打印语句和第二条打印语句之间存在一分钟的延迟。 接下来,让我们走进并发API中最重要的一部——executor services。 ExecutorService 提供了两个方法来达到这个目的—— shutdwon() 会等待正在执行的任务执行完而 shutdownNow() 会终止所有正在执行的任务并立即关闭execuotr。 这是我喜欢的通常关闭executors的方式: executor通过等待指定的时间让当前执行的任务终止来"温柔的"关闭executor。在等待最长5分钟的时间后,execuote最终会通过中断所有的正在执行的任务关闭。 Callbale也可以像runnbales一样提交给 executor services。但是callables的结果怎么办?因为 submit() Future 在将callable提交给exector之后,我们先通过调用 future done? false future done? true result: 123 Future与底层的executor service紧密的结合在一起。记住,如果你关闭executor,所有的未中止的future都会抛出异常。 executor.shutdownNow(); future.get(); 你可能注意到我们这次创建executor的方式与上一个例子稍有不同。我们使用 ExecutorService executor = Executors.newFixedThreadPool(1); Future future = executor.submit(() -> { try { TimeUnit.SECONDS.sleep(2); return 123;

      Read full article from Java8并发教程:Threads和Executors | 并发编程网 - ifeve.com


      SleepBus takes people from SF to LA for cheap - Tech Insider



      SleepBus takes people from SF to LA for cheap - Tech Insider

      You have successfully emailed the post. People are paying $48 to ride on this 'sleep bus' and 'teleport' to another city instead of flying A Sleep Bus, that is. Since late April, a chartered bus service between the two cities has been bringing people back and forth for just $48 a ride, and the concept is simple: Get in, grab a bunk, and pass out. You fall asleep in one city and wake up in the next. "It would basically be like you teleported to L.A.," Tom Currier, the founder and CEO of SleepBus, told Inc. Magazine. It's an interesting way of connecting the two technology hubs in an era of Hyperloop test tracks and costly memberships with the so-called "Uber for private jets."  And for the budget-conscious traveler, it makes a lot of sense. While technically not a "bus" — the passenger area is a trailer connected to a commercial truck — it can carry a dozen people, and each passenger has their own bed with privacy screen and fresh sheets, power outlets, reading light,

      Read full article from SleepBus takes people from SF to LA for cheap - Tech Insider


      linux - What is the difference between grep, pgrep, egrep, fgrep? - Super User



      linux - What is the difference between grep, pgrep, egrep, fgrep? - Super User

      grep is an acronym that stands for "Global Regular Expressions Print". grep is a program which scans a specified file or files line by line, returning lines that contain a pattern. A pattern is an expression that specifies a set of strings by interpreting characters as meta-characters. For example the asterisk meta character (*) is interpreted as meaning "zero or more of the preceding element". This enables users to type a short series of characters and meta characters into a grep command to have the computer show us what lines in which files match.

      The standard grep command looks like:

      grep <flags> '<regular expression>' <filename>  

      grep prints the search results to the screen (stdout) and returns the following exit values:

      0    A match was found.  1    No match was found.  >1   A syntax error was found or a file was inaccessible        (even if matches were found).  

      Some common flags are: -c for counting the number of successful matches and not printing the actual matches, -i to make the search case insensitive, -n to print the line number before each match printout, -v to take the complement of the regular expression (i.e. return the lines which don't match), and -l to print the file names of files with lines which match the expression.

      egrep

      egrep is an acronym that stands for "Extended Global Regular Expressions Print".

      The 'E' in egrep means treat the pattern as a regular expression. "Extended Regular Expressions" abbreviated 'ERE' is enabled in egrep. egrep (which is the same as grep -E) treats +, ?, |, (, and ) as meta-characters.

      In basic regular expressions (with grep), the meta-characters ?, +, {, |, (, and ) lose their special meaning. If you want grep to treat these characters as meta-characters, escape them \?, \+, \{, \|, \(, and \).

      For example, here grep uses basic regular expressions where the plus is treated literally, any line with a plus in it is returned.

      grep "+" myfile.txt  

      egrep on the other hand treats the "+" as a meta character and returns every line because plus is interpreted as "one or more times".

      egrep "+" myfile.txt  

      Here every line is returned because the + was treated by egrep as a meta character. normal grep would have searched only for lines with a literal +.


      Read full article from linux - What is the difference between grep, pgrep, egrep, fgrep? - Super User


      Twitter开源其分布式高性能日志服务DistributedLog



      Twitter开源其分布式高性能日志服务DistributedLog


      Read full article from Twitter开源其分布式高性能日志服务DistributedLog





      Read full article from


      Labels

      Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

      Popular Posts