Fork me on GitHub

Java 学习路线以及各阶段学习书籍,博文,视频的分享

 

 

感谢:

        感谢每一个打开这篇文章的人,听我在这里瞎扯!至于我为什么会有闲情写这篇文章呢?因为我每天想的是为什么要给我这样的需求,背后的人性是什么,我能再做些什么能让他更好。久而久之,我也稍微有了些自己的思维,善于去思考事物的本质,然后,我就有了点感悟,一些我觉得正能量的东西,一些我觉得值得传递的东西,如果我的磁场吸引了你的话,我很高兴,但请你以开放的心态来看待我所讲的东西,不要陷入我的思维里,你该有你的思维,读完我的文章后,你应该从中得到一些启迪,避免全盘接收,抛弃你传统的中国填鸭式的思维方式吧!总之,谢谢大家来看这篇文章。

前言:

      今天给大伙介绍一下线上学习的一些平台和我自己比较喜欢的Coursera,当然这里不仅仅是CS的课程,还有很多很多有趣的课程。提升个人独立思考能力和学习能力的好平台。现在你在皇家大学院里呆得可好?人最可怕的就是没有思想,或者说是凝固的思维

 

主题:有意识的去学习

                                                           作者:冯皓林

                                                             

三个方面:

一、三大慕课平台

二、你的目标应该是成为一个有能力的人而不是有经验的人

三、坚持,是一件改变灵魂的事情

思维导图总览:

 

 

 

 

一、三大慕课平台:

2.Coursera

 

Coursera: 创始人 Daphne Koller 和 Andrew Ng 始于斯坦福大学
TED: Daphne Koller: What we're learning from online education

[TED][中英字幕]2012Daphne Koller: 我们从在线教育学到了什么

http://v.youku.com/v_show/id_XNDUxMDg0MjQ0.html

 

3.Edx

Edx:CEO Anant Agarwal 始于MIT和哈佛大学
TED: Anant Agarwal: Why massive open online courses (still) matter

【TED2013 】Anant Agarwal:为什么MOOC仍然重要?

http://v.youku.com/v_show/id_XNjkzODczMjky.html

 

3.Udacity

Udacity:创始人CEO Sebastian Thrun 始于斯坦福大学
TED Peter Norvig: The 100,000-student classroom
容纳十万人的教室(中文版网易公开课)




coursera合作院校:

· 北京大学: https://www.coursera.org/pku

· 国立台湾大学:https://www.coursera.org/taiwan

· 香港中文大学: https://www.coursera.org/cuhk

· 香港科技大学:https://www.coursera.org/hkust

· 上海交通大学:https://www.coursera.org/sjtu

· 复旦大学:https://www.coursera.org/fudan

edx合作院校:

· 清华大学:https://www.edx.org/school/tsinghuax

· 北京大学:https://www.edx.org/school/pekingx

· 香港科技大学:https://www.edx.org/school/hkustx

· 香港大学:HKUx | edX


在 中国毫无疑问,coursera有绝对的优势,不用FQ,其他的平台基本都借助youtube,本身coursera的国际化最好(跨越语言和国家),界 面支持中文,coursera的联合创始人的Andrew Ng(斯坦福大学机器学习授课者)很有中国情缘,另外网易和果壳同coursera都有官方的合作。 

二、你的目标应该是成为一个有能力的人而不是有经验的人

1.规律使我们开阔,但思想使我们更加深刻

                          -- 打根基的重要性,厚积薄发前要隐忍

 

大学教育

培训机构

觉得大学教的东西没用?老师不会教书?

1.Computer Science当然是教Science,Software Engineering当然是培养合格的PM.

2.思想、原理

3.内功

看了培训机构的视频,觉得自己得到了实在的东西?觉得能做出一个项目就觉得自己很牛逼?

1.具体的工具的教学

2.公式化、偏应用、经验、套路

3.浅薄

 

(目前国内培训机构:传智播客、黑马程序员、尚学堂、尚硅谷、达内、北大青鸟... ...)

  培训机构的视频,所能给我们的是规律性、应用性的东西,而大学里所设立的课程将是真正令我们思想才是提高程序设计者的内涵的东西。

 

我不偏于哪种是最好的,我个人认为可以两者可结合在一起学习,培训机构的视频可以让你入门,你会了基本的应用,照猫画虎画了一段时间后,在模仿学习的过程中聚合自己的思维,度过了模仿的阶段,那么你就得寻求更深刻的东西了!你要的就不再是花拳绣腿的东西,而是真正提升内功的东西了。

 

学习CS,其实学得就是思想,如果你认为某个语言某个工具很重要,那么这就是本末倒置,你一味地追求华而不实的东西,技术变化这么快,你将疲于技术的追逐。因此,正确的做法就是尽可能寻找出不变东西--原理(思想)。以后你所遇到的所有各种各样的技术,表面看起来很花哨,但本质是一样,它只不过是基于原理而衍生出的原型,进而延伸成雏形,给你造成很高大上的假象。

 

这世界上是个人都能写代码,调用调用api,加个loop啥的我妈都会,但what makes berkeley eecs graduates different是你对计算机系统的理解,无论是操作系统内核的实现,还是网络如何工作的,这些才是伯克利给你最大的礼物(所以请最大化的利用资源),当然伯克利教的可能都是写最最简单的,最最高层的东西,但无论怎么变这些理论还是必须遵守的.【注:我学习的伯克利大学的课程:CS61 computer science paul hilfinger 】

 

编程的东西变化这么快,你要是连自学找工作都不行,那你就不应该浪费时间继续CS

 

2.你看清了事物的本质(思想),掌握了事物的规律,但是你看不清事物间的变化连接

概述:

   一直都认为学技术需要广度还要有深度广度让你看问题更全面,深度让你处理实际问题得心应手。事事皆如此

   很早之前,我学习编程的时候,发现CS处处都有各个学科和生活的影子,隐隐感受到事物之间这种千丝万缕的微妙联系,随着逐渐的深入学习,我才真正对哲学上“世间万物的关系,是既对立又统一的【1】”有了一番体悟。尤其是,在我读了《Complexity in Software 3: The Constructal Law 》(中文:《软件的复杂性与构造定律 》)这篇博文后,更加深有体会。

    大学陆陆续续看了很多书,而且没有一本书技术书。我看过心理学,佛家,道家,喇嘛的修行,也看过安妮宝贝,村上春树,三毛,还看哲学,灵修。说实话,当初我看这些东西,我也不知道为什么要看,直到后来很多东西串起来后才明白这些书为我以后的生活工作提供了多少便捷

   Steve Joe在Standford University的演讲上提到:Connecting the dot.他也是不知道自己当初为什么学习艺术字的设计,直到后来创立了苹果公司,在对产品的设计上却运用了以前他学的艺术字设计的知识。生命就是这么奇妙,过去习得的经验是当下自己动机的根源。

所以,技术不会有多难,多难克服,难是难在做一个有思想的技术人员

 

更深的见地,大家参见一下的资料吧!!

   文章:

《我们为什么要学习文史哲》龙应台

书:

《彭明辉: 生命是一种长期而持续的累积过程》

【1】:辩证统一,也叫对立统一,是唯物辩证法的基本观点,是指人们在认识事物的时候,既要看到事物共性的一面,又要看到事物对立的一面,即要以坚持全面发展的高度为前提,把二者有机统一起来,以实现两者和谐发展之目的

2.1去生活吧,少年!

互联网是现实世界投射来的。越会生活,越能理解它

    生活是一场修行,去对自己进行修行吧,不要整天钻在代码里,对自己没好处的。

    我想也没几个人愿意做一辈子技术。所以多了解社会,了解自己吧!

    生活将影响着你的程序设计,而你写的代码也正潜移默化地影响着生活。你个人的眼界和心态的开放程度,决定着你个人的气象格局,最后形成你的个人磁场(独特的个人魅力)。你所做之事近乎水到渠成,左右逢源,一切显得那么自然。

    越努力,越幸运!

2.2作为一个程序员,需要学习多少技能?

1、学好"物理"。 基础算法和数据结构。是计算机世界的基本定律,是程序问题的终极答案;

2、学好“化学”。 各类系统和语言的关键性质,提供能写出优秀程序的原料;

3、学好“生物”。 不同的技术构成不同的生态系统,不同的生态系统有不同的规则。程序符合生态系统环境,才能长成参天大树。

4、学好“历史”。 技术从哪里来,要到哪里去;

5、学好“文学”。 写明白文档,表达好逻辑,起得好名字,用得好隐喻;

6、学好“建筑”。 钢铁,水泥,脚手架,防灾,抗压,无单点,架构是系统的核心;

7、学好“艺术”。 写程序对得起自己的眼睛,做产品对得起用户。

8、学好“经济”。 成本、收益和时间帮助你做编程时的主要决策。

      ... ...

 

3.技术的优劣,是开发技巧以及思维方式的不同造成的

stay给我的感悟】http://stay.cnblogs.com/

且看下面三种开发人员:

大神用脑:
      分析--->设计--->架构--->实现

小神用抄:
      分析--->搜索--->抄袭--->微创新---->实现

码农用耗:

    copy--->debug--->debug--->debug...... --->实现

 

结论:好的思维方式-->好的解决方案-->优雅地解决问题.

 

核心:4w模型,做任何一件事情前最好都去分析what when why how

记住:代码都是虚的。

原则:实践比源码重要,思维比实践重要

为什么?衡量一个工程师是否优秀,不是他会多少API,做过多少项目。而是遇到问题时,会用更优雅的方式来解决它

1.自己动手比什么方式都提升的迅速,哪怕仅仅是抄一遍(模仿)

2.分析需求(我们少有创新,大多算更新,所以所有的需求都有原型,以及延伸的雏形,找到它,试图理解它背后的逻辑,然后再考虑技术实现)

3.设计原型(来自于经验的累积,流程图会帮你从混乱的需求中清醒,即使是草图)

4.团队协作(了解每个人擅长做什么,出现状况时,做为旁观者,你要做的是帮他理清思绪,what when why how,同样适用于自身) 

5.编码(随时随地都有big picture,别纠结于某个detail的实现而拖慢进度,伪代码的意义重大)

6.测试(宏观测试,确保架构稳定,局部测试,确保逻辑与性能,两者会交叉影响,debug时假设所有变量都存在问题然后一个个排除)

7.解决问题(what when why how不管是提问题,还是解决问题,都应组织好语言,这个问题是什么,什么情况下发生,为什么会这样发生,如何解决,提问是希望他人能给出提示,而不是解决方案)

8.记忆索引(想想搜索引擎的工作原理,记代码是不可能的,每个解决方案背后都对应着一个确定的需求,要记住的是生活化的需求,对这些需求分类建立索引,并用良好的代码规范存储,这是个漫长的过程,一旦存储,就不会忘记。当然可以用note来辅助记忆)

 

有意识的学习,别让自己陷在终日的复制粘贴和漫无目的的debug里,共勉~~

小结:

1.掌握规律的同时,要注重思想!

2.开眼看世界,你的世界不仅仅是技术,其它的东西也很重要!!

3.你没有应用正确的思维,来思考你所面临的挑战,你之所以下陷,正是因为你的努力.

有经验的人常常会过度依赖或者仰仗自己的经验,妄图去解决一切问题。这个时候非常的危险。不能迷信技术,同时还要多拓宽自己的深度广度其他领域的也最好略知一二。而且多培养自己的情商,当技术累积到一定程度就更需要有个圈子,但你需要什么帮助或者你想做什么事情,圈子的人都会出来帮你

 

当你的经验和阅历越来越多,你才有可能成功的去规划你的路,才有可能做个有能力的人

三、坚持是一件改变灵魂的事情

概述:

学习的根本,是如何处理信息的能力,也就是对现象的分析,归纳和延伸的能力。

一开始,我们通过模仿来学习,收集的信息和得到的反馈多了之后就会通过思考来学习

 

你学习的话也许会经过一下几个阶段:

第一阶段:抓大放小、应用驱动学习、照猫画虎(刻意练习)

思维比代码重要,学习在于模仿,从积累中聚合自己的思维

配图:[舒适区 -- 学习区 -- 恐慌区]

由美国人Noel Tichy提出的理论,图里的3个区可以表示为你想学习的事物的等级:

 

 

第二阶段:通过思考来学习

有了自己的思维方式后,就会不断地去提出一些问题,思考一些问题。

自己百度费曼技巧!

第三阶段:一切都是生活、哲学

任何一件小事, 哪怕是简单的、重复的行为,都会在其重复的过程里,生出一种乐趣和意志, 自我蜕变成为一种哲学。

Complexity in Software 3: The Constructal Law 》(中文:《软件的复杂性与构造定律 》)正是这篇博文让我开窍的,深深被这位外国人的思维所折服.

 

一万小时定律.  

     作家格拉德韦尔在《异数》一书中指出:“人们眼中的天才之所以卓越非凡,并非天资超人一等,而是付出了持续不断的努力。只要经过1万小时的锤炼,任何人都能从平凡变成超凡!

 

写在最后:

请记住,我说的每一句话都是错的!!

    如果你想真正得到一些知识,最好过滤一下你的信息。否则你只是在别人的思考中得意着,不要让别人的思维来定义你的思维,不要让自己的大脑沦为别人思想的跑马场。

因为,你必须要会思考,有自己的观点、立场、看法,辩证的对待我今天给你讲的东西。

 

JAVA学习的建议:

一、基础

1.Java SE

       主要看《java核心技术:卷一》的重点章节  +  一些培训机构的视频

       掌握java常用技术,io、多线程、反射、常用集合框架

 

2.数据结构

       数据结构看一遍,作用至少要清楚。如hash冲突解决办法,常用排序算法的应用场景和空间/时间复杂度等

3.数据库

         数据库,能看懂ER关系,熟悉数据库三大范式,熟练常用SQL语句

4.java网络编程

       可以掌握一点java网络编程方面的知识,对tcp/ip有初步的认识
课程不能落下,专业课程(计算机网络,操作系统,数据结构,数据库,计算机组成原理)要好好学。不要挂科

5.Java EE 基础

      学习servlet/jsp,至少能写简单的图书管理系统,熟悉核心api
      了解前后端交互方式,ajax、json/xml至少知道,会使用jquery,html,css,js最好

       MVC+三层架构开发模式

二、提高

1.学习后端框架,

        SpringMVC/Struts2、Mybatis、Spring,熟悉MVC模式,知道三层架构及每一层之间的关系

2.HTTP

        会用chrome/firefox浏览器分析http请求,解决、定位问题。知道常用http状态码,了解TCP/IP,知道一次http请求发生了哪些事情

3.设计模式JAVA SE  ---> JAVA EE 的桥梁

        学习设计模式,23种设计模式都需要了解一点,熟悉常用的如:单例,工厂,模板,适配器,代理,责任链,构造器,装饰器,迭代器,策略,命令,观察者,外观,享元。理解他们的好处,可以找找在其他框架哪些用了这些设计模式

4.初尝源码

        可以适当的看一些源码,Spring的源码可以着重的看一下。tomcat可以从源码的角度看看tomcat的整体设计方案,一次请求tomcat如何处理,servlet在tomcat中的加载,编译过程。tomcat自定义的ClassLoader有什么作用。

5.设计数据库

        会设计数据库,多对多,一对多,迭代,会写复杂的SQL,了解SQL调优,会写存储过程,触发器。熟悉索引的使用,了解视图。去了解一些常用NOSQL,比如Redis/mongodb

6.Linux

        学习Linux,熟悉基本命令,学习一种脚本语言(shell/python)。会在linux下写脚本开发

三、深入

1.算法相关

        算法,可以看看编程之美,算法导论。

 

2.深入java

        理解JVM,JMM,Classloader,GC算法,GC收集器。学会定位OOM问题所在。

3.源码分析

        常用集合类如:Hashmap,Arraylist,linkedList,HashSet,ConcurrentHashmap等的源码分析,要非常熟悉java集合框架设计。最好能够分析一种框架源码,比如Spring

4.深入数据库:

 4.1 数据库引擎

             理解至少两种数据库引擎(Inndb/Mysiam)的差异性,

 4.2 索引

             熟悉索引的内部数据结构.熟悉常见的索引方式(Btree,hash),和索引类型(unique,full text,normal)

 4.3 数据库引擎

会使用explain分析SQL语句,会优化SQL语句

 4.5 NoSQL    

 熟悉一种NOSQL,知道内部实现原理(内部数据结构,在算法优化,内部机制)

 4.6 分布式数据库   

            掌握分布式数据库的知识,分表,分库,分区,分布式事务等,可以学习一个数据库中间件(TDDL/COBAR)

 4.7  架构设计

            架构设计,看看大型高流量/高并发的网站设计(CDN,异步,前端优化),了解缓存(分布式memcached/常用本地缓存),搜索引擎(lucene/solr/elasticSearch),分布式(负载均衡/分布式数据库/分布式应用集群),消息队列(ActiveMQ/Rabbitmq)在大型网站中的作用

 4.8 其他

        还有一些其他的知识,如RPC框架,分布式服务架构,SOA,REST架构等等
        可以接触一些云计算方面的知识,如Hadoop/Storm/Spark等,要是再能接触一点机器学习就更棒啦

 

四、好习惯

 

1.分类整理好文档

2.分类整理好开发包

 

3.分类整理好笔记

推荐软件:印象笔记、为知笔记、有道云笔记、OneNote...(看个人喜好吧!!)

 

4.建立代码库

版本控制软件:git  

 

代码库:

 

上传到github的服务器:

 

5.写博客,打造个人品牌

好处:1.知识点存储  2.打造个人品牌

 

6.常见错误解决的总结归纳

 

7.善于使用IDE快捷键:

以eclipese为例:

 

8.用好思维导图

 

9.提问的艺术

引用文:

提问的艺术
2014-12-05 Stay Stay

 

当一个人身边都是优秀的人,没有人求他帮忙,因为身边这些优秀的人几乎无一例外都以耽误别人的时间为耻,同时,这些人恰好是因为遇到问题能够解决问题才被认为是优秀的。

 

如何以最快速度成为优秀的开发者?每一个新学员进来,我都会不厌其烦的说一些秘诀。

 

有问题在学员群里问,私人问题(工作,生活)私聊我。你的问题可能也是其他人的问题,其他人的问题也可能是你未来会碰到的问题,多参与,多分享,这样,你会在不知不觉中知道了很多问题的解决方案,也学习了很多宝贵的分析思路。

 

当你遇到一个问题,最怕的是不知道如何找切入点来分析。如果你知道以前有人碰到类似的问题,并且说了解决方案,那真真是极好的。如果没有,那你得苦逼的求爷爷告奶奶,而且还不一定求得到,花了大把冤枉的时间和精力。不值得。

 

如果你平时不注意分享,不在圈子里多提高点影响力,只会问问题,试想被回答的概率有多少?然后就开始抱怨,哎呀,这个圈子都没人回答问题的,怒取关。请问,大家是欠你一个答案么。

 

OK,OK,Anyway。我知道你很忙,没时间去解答别人的问题,也很吝惜自己的时间。但是在提问之前,请至少做一些事情,提高被解答的概率。

 

比如,有人做过xxx么?微信支付返回error_code xxx是什么意思?推送是怎么做的啊?单点登录是什么思路啊?

 

看看,如果之前做过这些东西,你有多大的概率来回答这些问题?估计只有心情甚好的时候才会简单的点两句,然后就没有然后了。所以啊,己所不欲,勿施于人。你自己都不愿意解答的,还指望有人愿意解答吗。

 

在提问之前,你至少知道你做的是什么东西,跟哪些东西相关,并且google下相关的资料,有个充分的了解之后,如果还没找到解决方案。再就某一点来提问。

 

比如,上面提到的error_code你完全可以去看微信支付文档,100%有。推送,目前有xmpp,socket,第三方推送平台,都了解一下。为了快速迭代与试错,第三方平台最佳。如果有钱任性有耐心就用xmpp,如果是土豪有服务器集群,显然用socket嘛。至于达到率与及时性,官网的数据不靠谱,实际问下,推送平台哪家强就好了。话又说回来,你指望免费又好用的产品就跟指望老板会跟你涨工资一样天真。再比如单点登录,至少有3种解决方案,你至少有个大概的了解,自己思考之后再问:“我有一个单点登录的需求,我现在能想到的是通过token+推送的方式主动让另一个device下线,请问是否还有更好的办法。”

 

看看,如果这样来提问,被问的人不管做过没做过,只要看到了,都会脑子跟着转跟着思考,如果他想到什么了,心情又比较不错,那他就大方的告诉你了。对不对。要是你只会问xxx怎么做的。谁TM愿意浪费口舌给一个只会索取的人讲一堆明确的解决方案呢。

 

将心比心嘛。你迟早会走上牛逼的神坛,有没有观众完全是你说了算的嘛。

 

还有一种情况让人哭笑不得,一个人在微信上问我问题,我就问他为什么不在qq上问我,他说公司屏蔽qq,真心无语,回复一会不得不去开网页版微信去解答。怎么感觉都不对,明明是你有求与我,为啥我还要费劲的来将就你。现在就这么屌,长大以后该怎么办啊。

 

再给你看个截图,这样的人不是个例。我是说什么都可以问,但是好歹也让我回答的舒心一点啊。我每天要回复N个问题,60%的问题都没经过对方思考的,想想都觉得为对方担心,出解决方案的是我,动脑子的是我,成长的也是我。这样长期下去,就很难有自己的思维逻辑,可能注定只能当码农了。这样不划算的事情,真的值得吗?就为了眼前的问题,放慢了变牛逼的脚步。得不偿失。

 

碰到问题千万别急躁,不能因为项目急就乱了分寸,不然以这样的心态去提问,会影响他人的情绪,到时候两个人干着急,脑子就不好使了,白花了时间。静下心来分析各种情况,从某个切入点出发,把握好大方向没问题,剩下来的就是个个击破了。不会多花太多时间,而且你也得到了锻炼。

 

再有就是不同的情景下有不同的解法,千万别因为你的上司的意见局限你的思维。只要你好好沟通,选择最优最便捷的方法来解决,没人非得让你换一种蹩脚的方式去实现。很多时候是沟通问题导致你开发举步艰难。你拿不出有说服力的方案当然会被拒,但是你不试着去说服,老老实实的按别人规划好的方向走,那就是一走一个坑。

 

我喜欢回答问题,就算解决不了,我也会参与进去,分析,思考,尽一切可能去解决它。我可不想在未来再碰到它时束手无策。这是个长期的过程。可能要很久才能显现它的威力。当你质疑我四年工作经验就敢出来做培训的时候,我只能呵呵了啊。因为我们走的那段路根本就不是一条路哇。

 

没人非得为你的问题负责,若是帮助你了,请记得感恩,至少把这种精神传递下去,若是没帮上忙也别嫌弃。这年头,自私自利的人太多了,我QQ里几百号人80%都是一次性的陌生人。优秀的人都以伸手党为耻,你占用了他人的时间,还觉得理所当然,就太说不过去了。毕竟,连餐厅服务生都要收小费。

 

如果觉得受之有愧,那,这是我的支付宝:18621552693,看着办吧。

 

有好事者在等着我答题吐血的那天,说一定会点赞。为了那天永远不来,请你我都能有个好的心态对待。回复 “奇葩” ,给你看那些让人吐血的自私鬼。

 

我脾气好,有耐心,但是我是白羊座。千万别真的碰到我的底线。

 

既然写了如何提问,那应该还要写个如何搜索,这年头真的会用搜索的人不多,千万别觉得自己的问题没人碰到过,真的是你方式用错了。

 

 

推荐:

书:

《深入分析Java Web技术内幕》

 @淘宝君山写的书,经历了taobao.com从一亿到十亿的pv变化
《java编程思想》这个至今觉得一般,可能是功力还没有达到 
《java核心技术:卷一卷二》,对java入门非常不错,基本上涵盖了java很多知识
《java并发编程实战》并发肯定要看这本书啦,从理论和实践上面讲得非常不错哦
《编程之美》,《剑指offer》这两本本书不用说,刷offer必备
《深入理解jvm虚拟机》看了这本书,基本上JVM相关的知识难不倒,唯一缺的就是实战经验
《Spring技术内幕》比较透彻的解读了spring的源码,浅显易懂
《大型网站技术架构》alibaba.com架构师@李智慧写的书,在大型网站架构方面有非常深刻的认识,我等膜拜
《java设计模式》这本书一般般,主要看看大牛的博客
《java网络编程》一般般,讲得不是很深,可以对io和网络有进一步的认识
《java分布式应用:基础与实践》@毕玄写的书,大牛写的书都要膜拜
《java数据结构与算法》外国人写的书,一般,不评价!用java实现了80%的数据结构
《how tomcat works》在讲解tomcat的架构和设计模式方面讲得非常不错,虽然和现在的版本上有一些差别,但是影响不大
《tcp/ip详解,卷一:协议》深入理解tcp。对tcp各个方面都有更加深刻的认识,正在看
《hadoop技术内幕》可以pass掉,当时学习hadoop的时候看的书籍,讲解hadoop的源代码
《算法导论》正在看,我也想做一个算法狗

博客:

Ctril + 鼠标左键 即可跳转到相应的网站)

·  IBM developerWorks 中国,里面有高质量的文章

· ·  结构之法,算法之道,july大神的博客

· xieyuooo的专栏,《java特种兵作者》

· @兰亭风雨人任平生|兰亭风雨的专栏目前人在腾讯,博客都写得很好,很深入!受益匪浅

· 机会永远留给有准备的人,享受编程和技术所带来的快乐(目前人在VMware

· 分布式架构、大数据、机器学习、搜索、推荐、广告

· 赵伊凡's Blog,涉及各个领域

· 搜索技术博客-淘宝,搜索团队的blog

· 廖雪峰的官方网站,python就是跟着他学的

· 空虚浪子心的灵魂,java安全,alibaba的安全专家

· 阿里中间件团队博客,咱事业部的中间件,很厉害 (๑¯ิε ¯ิ๑)

· 服务器运维与网站架构|Linux运维|X研究,里面提到的技术都碉堡,博客质量也高。曾经memcached在哪里学到了很多

· 淘宝沈询_WhisperXD的博客,TDDL作者,ONS消息服务负责人,差点就跟着沈沈混了(•‾̑⌣‾̑•)✧˖° (๑´ڡ`๑) (๑¯ิε ¯ิ๑),在数据库方面强烈推荐

· 跟阿铭学Linux

· 刘未鹏 | MIND HACKS,这个大牛简直不要太叼

高质量网站:

下面我列举一些,每天都最好抽时间去走一遍 

· GitHub,程序员不知道这个可以考虑转行了(๑´ڡ`๑)

· CSDN.中国最大的it交流网站

· cnblogs,还是有很多资料的,里面也有大神

· Stack Overflow,问答网站,回答质量高

· LeetCode OJ,刷算法的oj

· V2EX,一个关于分享和探索的地方。

· ITeye,前身为JavaEye

· 并发编程网,致力于促进并发编程研究和传播的垂直性技术网站。

· IBM developerWorks 中国,里面有高质量的文章

· 开源中国,可以关注一些开源动态

· 7月算法,july的在线教育项目,主要是算法方面

· InfoQ,促进软件开发领域知识与创新的传播

 

公众号:

CSDN

全球最大的中文IT社区

程序猿

   一些IT行业和一些优秀博文的推送

36氪:wow36kr

 

功能介绍:36氪(36Kr.com)是中国领先的科技新媒体,我们报道最新的互联网科技新闻以及最有潜力的互联网创业企业。
账号主体:北京协力筑成传媒科技有限公司。
商标保护:氪 36。


硅发布:guifabucom

 

功能介绍:这是硅发布网站的官方微信账号,我们在硅谷。
来自新浪微博认证资料:硅发布中文网,官方微博 @硅发布中文网。


虎嗅网:huxiu_com

 

功能介绍:有视角的商业资讯交流平台。
账号主体:北京云觅信息科技有限公司。


InfoQ:infoqchina

 

功能介绍:关注中高端技术人员的社区媒体,促进软件开发领域知识与创新的传播。
账号主体:北京创新网媒广告有限公司。


中文互联网数据研究资讯中心:i199it

 

功能介绍:发掘、分享数据价值,为您提供一个内容丰富的互联网数据咨询平台!网站(199it.com)、微博 @199IT-互联网数据中心、大数据工具导航(hao.199it.com),感谢您的关注。
账号主体:北京思集智库科技有限公司。


伯乐在线:jobbole

 

功能介绍:关注职业资讯;学习各类职业感悟、心得和经验分享,扩大职业视野;体会求职、工作和创业的历程 - 就在伯乐在线。
腾讯微博:来自腾讯微博认证资料:伯乐在线专注于个人职业发展和企业人才服务,提供一个互动、高校的人才服务平台。@伯乐在线


深蓝阅读:bluereader

 

功能介绍:深蓝阅读是专注于内容订阅的平台,可订阅RSS或任何网站链接,一切你关心的皆可订阅。官网网址:bluereader.or 

 

手机app:

        知乎、豆瓣、TED、Coursera、爽哥英语、CSDN、博客园、Quora、SOClient(Stack Over Flow的客户端)

OJ网站:

POJ

PAT

 

线上比赛:

百度之星

Topcoder

天池大数据竞赛(阿里的)

CoderTank

编程马拉松

Hero英雄会

在线编程学习网站:

http://www.codecademy.com

 

https://www.codeschool.com

 

一定要了解的一个人:

Martin fowler(软件行业教父级人物)

附录:

基础、提高

知识点一览:





 

1J2SE 面向对象-封装、继承、多态

内存的分析

递归

集合类、泛型、自动打包与解包、Annotation

IO

多线程、线程同步

TCP/UDP

AWT、事件模型、匿名类

正则表达式

反射机制

2:数据库(Oracle或者MySQL

SQL语句

多表连接,内外连接, 子查询等

管理表、视图、索引、序列、约束等

树状结构存储

存储过程、触发器

数据库设计三范式、

3JDBC

JDBC基础

连接池

树状结构存储与展现

DataSource & RowSet

JDBC连接Oracle及MySQL

4HTML_CSS_JAVASCRIPT

html、css、javascript基础语法

JavaScript Form判断

Dom编程基础(事件处理等)

JS常用效果如TreeView、下拉联动等

JS学习方法

JS调试方法

DreamWeaver初步(建立HTML、Table、Form、CSS)等

5Servlet & JSP

tomcat基础

servlet基础

web.xml配置基础

web application的结构

servlet生命周期

request response等常用方法

ServletContext类

HTTP协议基础(GET POST)

Cookie

Session

Application

JSP的几种语法(包括JSTL等)注意在项目中练习,不要拘泥于语法细节而裹步不前。

6Struts

多层架构理论

Model 1 and Model 2

Struts基本概念

MVC

Action与业务逻辑类的关系

在Struts与JSP之间传递数据

Struts处理流程(控制流)

Struts TagLib(了解常用的)

JSTL

ActionForm

字段收集

上传文件

类型转换

DTO

动态Action Form

验证框架

ActionForward 转发与重定向

动态生成ActionForward

全局与局部的ActionForward

Action Forward Scope

UnknownActionMapping

Action的线程安全

I18N

如何切换语言环境

Struts异常处理机制 程序处理 自动处理 自定义异常处理器

Struts的多模块配置

7XML

(XML/XSL、XSLT/DTD、SCHEMA等基础的概念、关于Java的编程可以暂时扔在一边)

8Hibernate

OR Mapping原理

Hibernate基础开发步骤

Hibernate基本接口(重点Session)

普通属性映射

关联关系映射

Native SQL

inverse lazy cascade

继承关系映射

HQL

性能优化 一级缓存 二级缓存 查询缓存

事务与并发 悲观锁、乐观锁

OpenSessionInView

CurrentSession

(至于JTA、联合主键、自然主键、动态主键、Any类型 Creteria Queries Intercepter and Event 自定义类型等,可以暂时扔在一边)

9Spring

Spring配置

Spring架构

AOP及Spring AOP

声明式事务(AOP)

Spring + Hibernate Spring支持Web

Scope

(其他的Spring模块对于自学来说可以暂时扔在一边)

10EJB3.0

J2EE架构基础(JTA JMS等)

EJB基础(地位及基本理论、分类等)

Annotation

Ant编译与部署EJB

Session Bean

EJB的依赖注入

Persistence API

(可以用JBoss学习EJB3.0)

     

关于作者:

关于我:

爱正能量,爱偏执,追英语,追极限,追梦想。

乐于尝试新技术,学习能力强,热爱阅读英文资料

链接:https://github.com/dantefung

联系我:

邮箱:476400902@qq.com

技术博客:

       新浪:http://blog.sina.com.cn/u/1891632140

       博客园:http://www.cnblogs.com/dantefung/

       个人博客:https://dantefung.github.io

 

 

posted @ 2015-10-15 21:34  Dantefung  阅读(3614)  评论(0编辑  收藏  举报