摘要: 一、子查询1.相关子查询相关子查询是指需要引用主查询列表的子查询语句,相关子查询是通过EXISTS谓词来实现的。下面以显示工作在"new york"的所有雇员为例,说明相关子查询的使用方法,示例如下: SQL> select ename,job,sal,deptno from emp where exists (select 1 from dept where dept.deptno=emp.deptno and dept.loc='new york');如上所示,当使用exists谓词时,如果子查询存在返回结果,则条件为true;如果子查询没用返回结 阅读全文
posted @ 2013-03-10 21:00 盖文 阅读(303) 评论(0) 推荐(0)
摘要: 我曾在一次面试中要求一个很有经验的嵌入式软件开发人员写出一个反转一段字符串并输出到屏幕上的程序。他在这个题目上挣扎了很久。这个家伙是个很神奇的人。你给他一些没用的零件,他能建造一个机器人,并能用程序控制它在屋里走来走去。他曾经参与过研制卫星,并且这个卫星现在正在轨运行。他只用左脑都比我能干。但是对于这个题目他却从来、从来没机会干过:在屏幕上显示什么东西。有些人就有这种技能,能在面试中问出正确的问题,发现优秀的程序员。而有些人却害怕提问,畏首畏尾,问一些从网上拷贝下来的问题,自己没主见,只会跟随其他面试官的意见。但面试对于大多数开发人员来说是一项很基本的技能。一次失败的招聘会给一个组织造成很严重 阅读全文
posted @ 2013-03-10 20:45 盖文 阅读(137) 评论(0) 推荐(0)
摘要: 尽管我们也许永远无法知晓为什么在某次面试中没被选中,但最近的一项研究给我们在理解招聘者的决策行为规律上带来了一些启示。根据TheLadders的研究发现,招聘者在初步决定候选人‘是否合适’之前所花费的平均时间是6秒钟。研究中对30位专业招聘人员使用了一种叫做“眼球追踪(eye tracking)”的技术,监视他们在10周时间眼球的运动轨迹,以此“记录和分析他们在理解消化一段信息或完成一个任务时,他们视线的焦点和持续的时间。”研究显示,在快速浏览你的简历的短暂时间里,招聘者会看你的姓名,当前的职称和所在公司,当前职位的开始日期和结束日期,之前的职称和公司,之前的职位的开始日期和结束日期,以及学历 阅读全文
posted @ 2013-03-10 20:38 盖文 阅读(158) 评论(0) 推荐(0)
摘要: 我已经阅读了大量的关于如何招募优 秀开 发人员的文章, 但如果你只对烂程序员感兴趣 – 哪该怎么办? 也许你并不需要用人才去挣钱,或者你觉得保质保量的完成工作并不是最重要的事。 不管是出于何种原因,本系列的关于烂程序员的文章都是关于这方面的窍门。 欢迎阅读第一篇:‘如何发现烂程序员’。招聘启事能给应聘的程序员留下对于你公司的第一印象,所以里面一定要包含以下内容:1.各种技术的缩写清单写这个启示的人,或面试的人是否理解这些缩写词所代表的意义,并不重要。 重要的是, 也许某时某刻他们会被用在某个想项目中。 程序员最喜欢在招聘启事里玩这些文字游戏了。JMS, XML, J2ME, AJAX, SSR 阅读全文
posted @ 2013-03-10 20:36 盖文 阅读(147) 评论(0) 推荐(0)
摘要: 这几年,我在Google工作,是一名软件工程师(之前是在微软做一个开发团队的队长),我曾浏览过成百上千的简历,从中挑选出可以进行下一步面试过程的 应聘者。 有些人的简历给我留下了很深的印象,而另一些则没有感觉。慢慢的,有越来越多的朋友和亲人向我咨询如何优化他们的简历,所以我就收集了一些我见过的简历中出现的最常见的问题,并给出了如何避免这些问题的建议:1.简历里要有你工作的技术细节:编程语言,你的个人成就和水平。我有时会看到一些简历,里面的工作描述就只有一行话,像这样: * 在一个3人组成的团队里开发一个 e-mail 插件。筛选者在阅读你的简历时心里都有选择标准, 1. 工作的挑战性如何... 阅读全文
posted @ 2013-03-10 20:29 盖文 阅读(167) 评论(0) 推荐(0)
摘要: 优秀的程序员都有什么共同之处?工作经验?薪水待遇?完成任务花的时间的多少?事实证明,跟这些都不相关。很奇怪,来自同一个公司的程序员们的表现都基本上处在同一水平。为什么?这最重要的因素是他们所处的工作环境能给他们提供的舒适程度:“… 最能干的程序员所工作的公司几乎都能给他们最大的隐私权,最大的个人空间,最大的控制他们的物理空间的自由度,最少的外界干扰。”来自: 《Quiet: The Power of Introverts in a World That Can’t Stop Talking》:为了证明这些,DeMarco和他的同事Timothy Lister设计了一个称之为“Coding Wa 阅读全文
posted @ 2013-03-10 20:05 盖文 阅读(184) 评论(0) 推荐(0)
摘要: 人类心理学研究中的一个基础支撑科目就是分析人的潜意识和意识。 弗洛伊德是最早的一位能够清楚的认定和描述我们的心理活动“领域”的人。 在他这著名的一生的早期,他就指出我们的意识里分“潜意识”,“前意识”,“意识”。如 果我们想能清楚他们分别跟我们的思想、感觉、认知、判断和动机(这这些在我们每天的生活,职业生活中都是关键因素)有什么关联,我们可以把我们自己描述成 一个冰山。 冰山的尖端,唯一能从水面看到的一部分,可以当作是我们的的意识。 它是有逻辑、有组织的,我们可以控制它,但这部分很小。 这庞大的水下的部分是我们的意识不到的。 它们是无组织、无逻辑、无关联的,但它们取能决定我们的行为特征。现代心 阅读全文
posted @ 2013-03-10 20:04 盖文 阅读(99) 评论(0) 推荐(0)
摘要: 架构之美 --- Mark 阅读全文
posted @ 2013-03-10 17:55 盖文 阅读(145) 评论(0) 推荐(0)
摘要: nginx并发模型: nginx 的进程模型采用的是prefork方式,预先分配的worker子进程数量由配置文件指定,默认为1,不超过1024。master主进程创建监听套接口,fork子进程以后,由worker进程监听客户连接,每个worker子进程独自尝试accept已连接套接口,accept是否上锁可以配置,默认会上锁,如果操作系统支持原子整型,才会使用共享内存实现原子上锁,否则使用文件上锁。不使用锁的时候,当多个进程同时accept,当一个连接来的时候多个进程同时被唤起,会导致惊群问题。使用锁的时候,只会有一个worker阻塞在accept上,其他的进程则会不能获取锁而阻塞,这样就解 阅读全文
posted @ 2013-03-10 17:51 盖文 阅读(331) 评论(0) 推荐(0)
摘要: 对理解软件程序很有帮助,大概已读过3遍了。。。 阅读全文
posted @ 2013-03-10 17:43 盖文 阅读(279) 评论(0) 推荐(0)
摘要: 冗余的变量拷贝相对C而言,写C++代码经常一不小心就会引入一些临时变量,比如函数实参、函数返回值。在临时变量之外,也会有其他一些情况会带来一些冗余的变量拷贝。之前针对冗余的变量拷贝问题写过一些帖子,详情请点击这里。多重过滤很多服务都会过滤的部分结果的需求,比如游戏交谈中过滤需要过滤掉敏感词。假设现在有两个过滤词典,一个词典A内容较少,另一个词典B内容较多,现在有1000个词需要验证合法性。词落在词典A中的概率是1%,落在词典B中的概率是10%,而判断词是否落在词典A或B中的操作耗时差不多,记作N。那么要判断词是否合法,有两种方式:1. 先判断词是否在A中,如果在返回非法;如果不在再判断是否在B 阅读全文
posted @ 2013-03-10 17:38 盖文 阅读(192) 评论(0) 推荐(0)
摘要: 代码风格指南http://code.google.com/p/google-styleguide/通过这个了解代码规范和编写新代码Open Source Projects Released By Googlehttp://code.google.com/intl/zh-CN/opensource/projects.htmlgoogle的完整开源例子https://developers.google.com/http://code.google.com/intl/zh-CN/opensource/http://code.google.com/hosting/search?q=label:goog 阅读全文
posted @ 2013-03-10 17:30 盖文 阅读(173) 评论(0) 推荐(0)
摘要: #类中的元素0.成员变量 1.成员函数 2.静态成员变量 3.静态成员函数 4.虚函数 5.纯虚函数#影响对象大小的因素0.成员变量 1.虚函数表指针(_vftptr) 2.虚基类表指针(_vbtptr) 3.内存对齐_vftptr、_vbtptr的初始化由对象的构造函数, 赋值运算符自动完成;对象生命周期结束后,由对象的析构函数来销毁。对象所关联的类型(type_info),通常放在virtual table的第一个slot中。虚继承:在继承定义中包含了virtual关键字的继承关系;虚基类:在虚继承体系中的通过virtual继承而来的基类,需要注意的是:class CDerive : p. 阅读全文
posted @ 2013-03-10 17:19 盖文 阅读(177) 评论(0) 推荐(0)
摘要: Martin Fowler在自己网站上写了一篇LMAX架构的文章,在文章中他介绍了LMAX是一种新型零售金融交易平台,它能够以很低的延迟产生大量交易。这个系统是建立在JVM平台上,其核心是一个业务逻辑处理器,它能够在一个线程里每秒处理6百万订单。业务逻辑处理器完全是运行在内存中,使用事件源驱动方式。业务逻辑处理器的核心是Disruptor。Disruptor它是一个开源的并发框架,并获得2011 Duke’s程序框架创新奖,能够在无锁的情况下实现网络的Queue并发操作。本文是Disruptor官网中发布的文章的译文(现在被移到了GitHub)。剖析Disruptor:为什么会这么快剖析Dis 阅读全文
posted @ 2013-03-10 17:05 盖文 阅读(1436) 评论(0) 推荐(0)
摘要: 简介TFS(Taobao !FileSystem)是一个高可扩展、高可用、高性能、面向互联网服务的分布式文件系统,主要针对海量的非结构化数据,它构筑在普通的Linux机器集群上,可为外部提供高可靠和高并发的存储访问。TFS为淘宝提供海量小文件存储,通常文件大小不超过1M,满足了淘宝对小文件存储的需求,被广泛地应用在淘宝各项应用中。它采用了HA架构和平滑扩容,保证了整个文件系统的可用性和扩展性。同时扁平化的数据组织结构,可将文件名映射到文件的物理地址,简化了文件的访问流程,一定程度上为TFS提供了良好的读写性能。TFS的总体结构一个TFS集群由两个!NameServer节点(一主一备)和多个!D 阅读全文
posted @ 2013-03-10 14:47 盖文 阅读(1391) 评论(0) 推荐(0)
摘要: 下面这张图,是在一个大型的WEB系统设计中,经典的架构设计和分层模式。1) 前端负载均衡: 有钱的用硬件四层交换(想当年雅虎中国2000台服务器,只用了四台Alteon就搞定了),没钱的用软件负载均衡(LVS、Nginx)2) 多级缓存:首先要充分利用浏览器的缓存能力,也就是Cookie,然后要在服务端利用页面缓存机制,前些年大家喜欢用Squid,现在Varnish更流行起来了,有一个牛逼的故事是挪威的最大的在线报纸Verdens Gang(vg.no)使用3台Varnish代替了原来的12台Squid,性能比以前更好,这是Varnish最成功的应用案例。 最后一个缓存点是在数据库前方设置,让 阅读全文
posted @ 2013-03-10 14:37 盖文 阅读(492) 评论(0) 推荐(0)
摘要: 著名的稳定婚姻问题是美国数学家、经济学家Lloyd Stowell Shapley(1923-)提出的。下面介绍一下背景:某单位有n个姑娘W1,W2,……,Wn和n个小伙M1,M2……,Mn。每位姑娘对所有小伙有一个满意度排序,每位小伙对所有姑娘也有一满意度排序。M1:W2 >W1>W3 W1:M1> M3> M2M2:W1 >W2>W3 W2:M3> M1> M2M3:W1> W2>W3 W3: M1> M2> M3定义:一组婚姻状态称为稳定(stable)的,若不存在配对(Mi,Wj)和(Ms,Wt),使得在Mi心中W 阅读全文
posted @ 2013-03-10 01:01 盖文 阅读(321) 评论(0) 推荐(0)
摘要: 下面这个图片来源国外,是一个关于程序员面试时的简历,被人事部门和程序员本身评审的角度不同的图片。当然,这是一个从国外面试的视角制作的图片,不过,可以看出,其中很多东西都是和国内是相同的。让我们通过这个图片也来了解一下自身吧。下面是我对其做的翻译,翻译水平有限,请大家指正。人事部门是这样阅读简历的(+15分)如果简历中说到了和工作职位相符的技能超过5次以上。(+8分)如果简历中说到了和工作职位相符的技能3次到5次。(+4分)如果简历中说到了和工作职位相符的技能1次到2次。(+4分)Cover Letter(“求职信”或“自荐信”)提到了招聘人员。(+2分)简历中有Cover Letter(求职信 阅读全文
posted @ 2013-03-10 00:54 盖文 阅读(88) 评论(0) 推荐(0)
摘要: 关于性能优化这是一个比较大的话题,在《由12306.cn谈谈网站性能技术》中我从业务和设计上说过一些可用的技术以及那些技术的优缺点,今天,想从一些技术细节上谈谈性能优化,主要是一些代码级别的技术和方法。本文的东西是我的一些经验和知识,并不一定全对,希望大家指正和补充。在开始这篇文章之前,大家可以移步去看一下酷壳以前发表的《代码优化概要》,这篇文章基本上告诉你——要进行优化,先得找到性能瓶颈! 但是在讲如何定位系统性能瓶劲之前,请让我讲一下系统性能的定义和测试,因为没有这两件事,后面的定位和优化无从谈起。一、系统性能定义让我们先来说说如何什么是系统性能。这个定义非常关键,如果我们不清楚什么是系统 阅读全文
posted @ 2013-03-10 00:49 盖文 阅读(128) 评论(0) 推荐(0)
摘要: 来源:http://www.quora.com/What-is-Facebooks-architecture(由Micha?l Figuière回答)根据我现有的阅读和谈话,我所理解的今天Facebook的架构如下:Web 前端是由 PHP 写的。Facebook 的HipHop[1] 会把PHP转成 C++ 并用 g++编译,这样就可以为模板和Web逻贺业务层提供高的性能。业务逻辑以Service的形式存在,其使用Thrift[2]。这些Service根据需求的不同由PHP,C++或Java实现(也可以用到了其它的一些语言……)用Java写的Services没有用到任何一个企业级的 阅读全文
posted @ 2013-03-10 00:45 盖文 阅读(216) 评论(0) 推荐(0)