0、资源导航
菜鸟教程:http://www.runoob.com/(runoob 为 Running Noob 的缩写,意为:奔跑吧!菜鸟。)
编程狂人:http://www.tuicool.com/mags
伯乐在线资源导航:http://hao.jobbole.com/
技术的正宗与野路子:http://zhangtielei.com/posts/blog-programmer-learn.html
基础知识整理:http://dongxicheng.org/knowledges-carding/
free-programming-books:https://github.com/vhf/free-programming-books/blob/master/free-programming-books-zh.md
free-programming-books-zh:https://github.com/vhf/free-programming-books/blob/master/free-programming-books-zh.md
1、前端
《HTML5与CSS3基础教程》:http://pan.baidu.com/s/1nvATyZ3
HTML5与CSS3基础教程代码示例:http://pan.baidu.com/s/1dFaBSzB
《如何正确学习JavaScript》:http://www.shejidaren.com/how-to-learn-javascript.html
《JavaScript基础教程》:http://pan.baidu.com/s/1eSBhEWM
JavaScript基础教程代码示例:http://pan.baidu.com/s/1c14PWre
《JavaScript高级程序设计》:http://pan.baidu.com/s/1c2mPrcW
JavaScript高级程序设计代码示例:http://pan.baidu.com/s/1pLrm6t9
《css3专业网页开发指南》:http://yuedu.baidu.com/ebook/37eb1fc06bd97f192379e9bb.html
《锋利的jQuery》:http://pan.baidu.com/s/1slSwqmT
锋利的jQuery代码示例:http://pan.baidu.com/s/1skSLYtJ
《Bootstrap教程》:http://www.runoob.com/bootstrap/bootstrap-tutorial.html
《Android第一行代码》:http://pan.baidu.com/s/1ge6LKyR
《高性能网站建设指南》:http://pan.baidu.com/s/1skSgehZ
《高性能网站建设进阶指南》:http://pan.baidu.com/s/1skGAH8h
2、后端
《啊哈C!》:http://pan.baidu.com/s/1o7YrKlO
《C语言点滴》:http://zhaoyan.website/xinzhi/cbook/book.php
《Java编程规范》:http://pan.baidu.com/s/1nvnSVyT
《Java核心技术-基础知识》:http://pan.baidu.com/s/1cqXhIQ
《Java核心技术-高级特征》:http://pan.baidu.com/s/1cvaTlk
《Java编程思想》:http://pan.baidu.com/s/1cpBmmq
《Effective Java》:http://pan.baidu.com/s/1i5wi6Nz
《深入分析Java Web技术内幕》:http://pan.baidu.com/s/1mhOm49U
《J2EE设计开发编程指南》:http://pan.baidu.com/s/1o8S2wT8
《Java并发编程》:http://pan.baidu.com/s/1dF5KgRf
《JAVA网络编程》:http://pan.baidu.com/s/1kUVaiBt
《深入剖析Tomcat》:http://pan.baidu.com/s/1miTmyYs
《Scala语言规范》:http://pan.baidu.com/s/1hrLCNv2
《大型网站技术架构:核心原理与案例分析》:https://pan.baidu.com/s/1i4KUNLN
3、操作系统、计算机网络
《鸟哥的Linux私房菜-基础学习篇》:http://cn.linux.vbird.org/linux_basic/linux_basic.php
《鸟哥的Linux私房菜-服务器架设篇》:http://cn.linux.vbird.org/linux_server/
《sed与awk》:http://pan.baidu.com/s/1sltky1v
《计算机网络导论》:http://www.dwz.cn/sGVVr
《HTTP协议(RFC2616)中文版》:http://pan.baidu.com/s/1pKQioSN
《HTTP权威指南》:http://pan.baidu.com/s/1kVjTk15
4、大数据
《Head First SQL》:http://pan.baidu.com/s/1nu6930P
《从实践中学习Oracle SQL》:http://pan.baidu.com/s/1hs0otus
《Oracle Database 11g PLSQL编程实战》:http://pan.baidu.com/s/1pLTMqFL
《数据库系统概念》:http://pan.baidu.com/s/1hsiEaVE
《数据仓库》:https://pan.baidu.com/s/1eSms3h4
《数据仓库生命周期工具箱》:https://pan.baidu.com/s/1sli8m4H
《Hadoop权威指南》:http://pan.baidu.com/s/1i4Tcsbr
《Hive编程指南》:http://pan.baidu.com/s/1dE53Uql
《Hadoop技术内幕-HDFS》:http://pan.baidu.com/s/1i4OsAdZ
《Hadoop技术内幕-MapReduce》:http://pan.baidu.com/s/1nvGZgHb
《Learning Apache Kafka》:http://pan.baidu.com/s/1mh9tzYS
《Spark快速数据处理》:http://pan.baidu.com/s/1kU7t6C3
《Learning Spark》:http://pan.baidu.com/s/1o7KKC4M
《Getting Started With Storm》:http://pan.baidu.com/s/1mioASkg
5、数据结构、算法、设计模式
《XML教程》:http://www.runoob.com/xml/xml-tutorial.html
《JSON教程》:http://www.runoob.com/json/json-tutorial.html
《啊哈!算法》:http://pan.baidu.com/s/1c10MkCw
《数据结构与算法分析-Java语言描述》:http://pan.baidu.com/s/1geETo2Z
《Head First设计模式》:http://pan.baidu.com/s/1skV3QlJ
9、后记
编程语言只是工具罢了,纯粹的工具。学会一门语言并不像你想的那么难,看看它的简明教程和语法,再看看它的例子,我相信你可以学会这门语言。C++虽然是一门庞大的语言,但绝不是现在人们口中谈虎色变的东西,它是很靠谱的编程语言,无论是性能、库、还是IDE,都是齐全的。
也许你会问,现在不都是说用Vim、Notepad++、Emacs什么的吗,Visual Studio是不是俗气了些?那是初学者都不理会的东西吧?IDE什么的别开玩笑了,我又不是大一的小孩。
也许你会问,Linux和Mac才真正是酷的吧?现在只有初级用户才用Windows吧?也许你会问很多很多诸如此类、被误导的问题,原因是现在的编程语言和编程世界被神化了。本来朴质的工具,被渲染上神秘主义的面纱,让众人觉得那些无关痛痒的东西是我们需要的。
我可以负责任地告诉你,我的想法是:编程语言是什么都无所谓,编程工具是什么也都无所谓,编程所在系统是什么根本没关系;真正有用的是算法和设计模式。算法和设计模式才是编程的根本。只要明白这两个,其他都是浮云般的存在。
算法和设计模式是独立于上述的一切而存在的。无论用C++还是Python,或者用JavaScript,算法该咋实现还咋实现,它是程序能力和效率的保证;而设计模式也是同样的道理,无论用Linux,还是GitHub,只要明白设计模式,都能设计出很规范的、相对很鲁棒、有利于后续开发的程序。
大学中说:“事有始终,物有本末,知其前后,则近道矣”。然而,现在人在给初学者意见、甚至是自己在学习的时候,不但不从根本的算法和设计模式入手,反而扯出一堆皮毛的东西,还形成了阵营,相互挖苦和嘲笑,这本身不是很奇怪的么?让那些本来应该得到重视的智慧被无视,让那些无关痛痒的技巧被学习,从古至今像这样而成功的人,我没有听说过。
如果你是初学者,现在迷茫于或者迷惑于这些建议的话,我劝你静下心来,不要被这个时代的喧嚣和浮躁所感染。你需要做下面这些事情。
1)把基础的计算机结构学好(计算机组成原理、体系结构)。
2)把数据结构学好,也要掌握一些比较高级的数据结构,每种数据结构自己都动手去做一下,形成一个自己的数据结构小类库,以后对你绝对会有用。
3)把操作系统的基本知识学好,不是Linux,也不是Windows,是那些并发、调度、缓存机制、文件系统等算法性的东西。这些东西在以后绝对会用得上,并不是在你实现操作系统的时候,而是在你写一些稍底层的结构的时候。
4)算法这东西可以说是无穷无尽的。首先把基础算法弄明白,比如动态规划、贪婪、分支限界此类的经典算法,然后随着兴趣去学更多有意思有用的算法。如果喜欢智能、自然语言处理,可以去尝试看看机器学习的书,然后动手实现一个机器学习小类库。这个类库未必用,也未必能让别人用,写它的最重要的意义在于理解那些算法。
5)致力于设计模式。算法是超脱的,是理性的。要让计算机执行这个算法,必须化为程序,那就必然用到编程。无论是什么语言,如果不会设计模式,即便你对这门语言再熟悉,也不可能设计出优秀的程序。所以设计模式在程序设计的时候是必须的,也是很重要的。
6)蔑视那些沉浸在神秘主义编程论里的人吧!在明白了上面那些后,你自己就可以实现编程语言、编程工具甚至是编程用到的操作系统。然后告诉他们:“too young,too naïve”。
找到你感兴趣的领域,在这个领域不断深入,并最终成为这个领域的专家。至于这个领域是什么,可大可小,可方可圆。我曾经亲眼见过一个人用Excel软件设计出了令人目眩的界面。虽然他不会什么C语言和算法,但是我依然相信他是专家。正所谓“领域万变,但精神唯一!”。
——摘自《C语言点滴》