很多程序员视 SQL 为洪水猛兽。SQL 是一种为数不多的声明性语言,它的运行方式完全不同于我们所熟知的命令行语言、面向对象的程序语言、甚至是函数语言(尽管有些人认为 SQL 语言也是一种函数式语言)。
如果你是一下这三类人中,不妨看下此文,相信会对你有所帮助:
- 在工作中会用到 SQL 但是对它并不完全了解的人;
- 能够熟练使用 SQL 但是并不了解其语法逻辑的人;
- 想要教别人 SQL 的人。
以下为10个简单步骤,可完全理解SQL:
- SQL 是一种声明式语言——SQL 语言声明的是结果集的属性,计算机会根据 SQL 所声明的内容来从数据库中挑选出符合声明的数据,而不是像传统编程思维去指示计算机如何操作。
- SQL 的语法并不按照语法顺序执行
- SQL 语言的核心是对表的引用(table references)
- 灵活引用表能使 SQL 语句变得更强大
- SQL 语句中推荐使用表连接——记着要尽量使用 JOIN 进行表的连接,永远不要在 FROM 后面使用逗号连接表。
- SQL 语句中不同的连接操作
- SQL 中如同变量的派生表——大体上来说 SQL 语句就是对表的引用,而并非对字段的引用。
- SQL 语句中 GROUP BY 是对表的引用进行的操作
- SQL 语句中的 SELECT 实质上是对关系的映射
- SQL 语句中的几个简单的关键词: DISTINCT , UNION , ORDER BY 和 OFFSET
正如其他语言一样,想要学好 SQL 语言就要大量的练习。上面的 10 个简单的步骤能够帮助你对你每天所写的 SQL 语句有更好的理解。另一方面来讲,从平时常见的错误中也能积累到很多经验。由于篇幅限制,无法一一详解,请阅读原文:《十步完全理解SQL》
一、 我们能从java的HelloWorld学到什么?
这是每个Java程序员都知道的。虽然简单,但是从一个简单的问题可以引入更深的思考。在原文中,讨论了这个简单的程序。
- 为什么一切都开始于一个类?
Java程序是由类组成,一个类包含方法和属性。这是由于它的面向对象的特征:一切皆对象,每个对象都是一个类的实例。面向对象编程有很多优势,比如更好的模块化,扩展性强等。
- 为什么总有一个“main”方法?
“main”方法是程序的入口,它是静态的。 “static”是指该方法是类的一部分,而不是对象的一部分。
这是为什么?我们为什么不把一个非静态方法作为程序的入口?
如果方法不是静态的,那么需要创建一个对象后才能使用方法。因为必须用对象去调用方法。对于程序的入口,这是不现实的。所以,程序的入口方法是静态的。
参数“String[] args”表示一个字符串数组可以被传入到该程序,用来初始化程序。
- HelloWorld的字节码
执行这个程序,Java文件首先编译为java字节码储存在.class文件里。
字节码是什么样子的呢?
麻雀虽小,五脏俱全。虽然没什么作用,但是从中你可以理解java编程的中的思想,可编译过程等等,让你有个入门的准备。
二、 成为Linux内核高手的四个方法
如果你问别人成为Linux内核高手的方法,他可能会说:①如果你不需要了解内核是如何为你工作的,你为何要尝试呢?②你应该订阅Linux内核邮件列表,然后努力去理解。③如果你不去编写针对Linux内核的代码,你就是在浪费时间。其实原文作者不这样认为,他通过总结自己的成长经验总结除了四个可行性方法:
- 编写你自己的操作系统
- 编写一些内核模块!
- 参加一次Linux内核实习!
- 阅读内核源码
三、 主流CPU架构与实现一定要看的两篇文章
来自网易何登成在微博中的推荐。
一是Jason的《Modern Microprocessors - A 90 Minute Guide!》;
二是Michael的《A High-Performance Nehalem iDataPlex Cluster》 。
一篇介绍原理,一篇关注实践,相辅相成——Know hardware to make better software
四、 2014年,程序员们的开年技术书选择!
- 《MacTalk人生元编程》——By 池建强随笔文集 【小道消息】作者冯大辉作序
- 《Linux/UNIX系统编程手册》——本书号称超越APUE的一本经典书
- 《Haskell趣学指南》——传说中提到的所有Haskell神器
- 《JavaScript启示录》——初学者的权威手册
- 《算法谜题》——算法面试宝典
- 《Fiddler调试权威指南》——Fiddler之父Eric Lawrence编著,权威的参考指南
- 《玩转3D打印机》——教您亲手玩转3D打印机
- 《Java 7 并发编程实践手册》——超过60个简单而富有成效的技巧,彻底掌握Java 7多线程应用程序的开发
- 《用户体验设计成功之道》——用户体验设计的入门佳作
- 《玩转比特币》——一本书玩赚比特币,全彩印刷,图文并茂
五、 为什么大神级程序的C语言代码里到处都是goto?
当学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语句对原来的代码改动量最小,引起潜在风险的概率最小。
六、 【知乎讨论】12306 外包给阿里巴巴、IBM 等大企业做是否可行?
总结了里面很多人精彩的讨论,其实,大多数人认为是不可行的,每个人都说了很多观点,这里无法一一详述,可点击小标题查看。
笔者认为,是可以从整个系统上着手进行处理,可如果国家能够提高运力,铁道部的人能够改善目前的运输状况,我想也不至于出现现在的情况。
七、 外行朋友值得一读的5本经典数学书
- 《A History of Mathematics | 数学史》作者:Carl B. Boyer
- 《Journeys Through Genius | 天才引导的历程:数学中的伟大定理》作者:William Dunham
- 《The Mathematical Experience | 数学经验》作者 Philip J.Davis、Reuben Hersh
- 《Proofs from the Book | 数学天书中的证明》作者:Martin Aigner、Günter M. Ziegler
- 《Proofs and Refutations | 证明与反驳-数学发现的逻辑》作者:Imre Lakatos
八、 我的人生元编程(图灵访谈)
池建强,70后程序员,Blogger,《MacTalk·人生元编程》作者。先后任职洪恩软件和用友集团,从事互联网和企业应用软件研发,目前担任瑞友科技IT应用研究院副院长。 热爱技术和编码工作,Apple 和 Google 产品重度用户,分享技术,坚持梦想。
文章基本上是口语化的,保持了采访稿的结构和原貌。访谈的内容是池建强个人成长过程中经历的一些人和事,包括一些决定和思考。以及谈了自己著书《MacTalk人生元编程》的历程。
上期回顾:
关于我们:
极客头条是CSDN推出的精品内容发掘平台,在这里可以发现、分享值得你关注的极客新闻。