很多程序员视 SQL 为洪水猛兽。SQL 是一种为数不多的声明性语言,它的运行方式完全不同于我们所熟知的命令行语言、面向对象的程序语言、甚至是函数语言(尽管有些人认为 SQL 语言也是一种函数式语言)。
如果你是一下这三类人中,不妨看下此文,相信会对你有所帮助:
以下为10个简单步骤,可完全理解SQL:
正如其他语言一样,想要学好 SQL 语言就要大量的练习。上面的 10 个简单的步骤能够帮助你对你每天所写的 SQL 语句有更好的理解。另一方面来讲,从平时常见的错误中也能积累到很多经验。由于篇幅限制,无法一一详解,请阅读原文:《十步完全理解SQL》
这是每个Java程序员都知道的。虽然简单,但是从一个简单的问题可以引入更深的思考。在原文中,讨论了这个简单的程序。
Java程序是由类组成,一个类包含方法和属性。这是由于它的面向对象的特征:一切皆对象,每个对象都是一个类的实例。面向对象编程有很多优势,比如更好的模块化,扩展性强等。
“main”方法是程序的入口,它是静态的。 “static”是指该方法是类的一部分,而不是对象的一部分。
这是为什么?我们为什么不把一个非静态方法作为程序的入口?
如果方法不是静态的,那么需要创建一个对象后才能使用方法。因为必须用对象去调用方法。对于程序的入口,这是不现实的。所以,程序的入口方法是静态的。
参数“String[] args”表示一个字符串数组可以被传入到该程序,用来初始化程序。
执行这个程序,Java文件首先编译为java字节码储存在.class文件里。
字节码是什么样子的呢?
麻雀虽小,五脏俱全。虽然没什么作用,但是从中你可以理解java编程的中的思想,可编译过程等等,让你有个入门的准备。
如果你问别人成为Linux内核高手的方法,他可能会说:①如果你不需要了解内核是如何为你工作的,你为何要尝试呢?②你应该订阅Linux内核邮件列表,然后努力去理解。③如果你不去编写针对Linux内核的代码,你就是在浪费时间。其实原文作者不这样认为,他通过总结自己的成长经验总结除了四个可行性方法:
来自网易何登成在微博中的推荐。
一是Jason的《Modern Microprocessors - A 90 Minute Guide!》; 二是Michael的《A High-Performance Nehalem iDataPlex Cluster》 。 一篇介绍原理,一篇关注实践,相辅相成——Know hardware to make better software
当学C语言时,老师会讲:“不要使用goto, 这是一个坏习惯, 这种写法很烂,而且很危险!”等等。
但是为什么那么多内核程序员那么喜欢用goto呢?在这段linux内核 https://github.com/torvalds/linux/blob/master/kernel/sched/clock.c 代码里,可以用简单的一个while替换掉,如:
while(condition) { } //或 do { } while(condition);
注:这段代码来自torvalds的linux内核代码,其实不仅可以使用while,还有很多地方可以使用if () {} else {} 的结构代替,很多内核的其他文件也是如此。
有人认为:在这个例子中,估计是从原来SMP不安全(non-SMP-safe)的方式改成SMP的方式。使用goto语句对原来的代码改动量最小,引起潜在风险的概率最小。
总结了里面很多人精彩的讨论,其实,大多数人认为是不可行的,每个人都说了很多观点,这里无法一一详述,可点击小标题查看。
笔者认为,是可以从整个系统上着手进行处理,可如果国家能够提高运力,铁道部的人能够改善目前的运输状况,我想也不至于出现现在的情况。
池建强,70后程序员,Blogger,《MacTalk·人生元编程》作者。先后任职洪恩软件和用友集团,从事互联网和企业应用软件研发,目前担任瑞友科技IT应用研究院副院长。 热爱技术和编码工作,Apple 和 Google 产品重度用户,分享技术,坚持梦想。
文章基本上是口语化的,保持了采访稿的结构和原貌。访谈的内容是池建强个人成长过程中经历的一些人和事,包括一些决定和思考。以及谈了自己著书《MacTalk人生元编程》的历程。