半年前刚毕业的那会儿,会的语言有c,c++,c#,都不精通,甚至谈不上熟悉,只能算了解吧。我不是计算机专业的学生,也没相关的实习经验,或者开发经验。经过半年的学习,踩坑,也有了一些收获,想记录下自己的学习经验,过段时间可能证明是错的也不要紧,是自己的总结,也是自己的进步。
1. 如何学习一门新的技术/语言
学习初期很容易踩的坑是,给你一个新项目,一堆代码,一堆类,不知道从哪个类开
始看,不知道从哪行代码开始看。带我的师父有指导说,可以从入口开始看?(什么是入口?),或者,慢慢看,一遍看不懂,就看2遍?…
之前看得一篇博文中的一句话,让我印象深刻,大概的意思是“学习一门技术之前,要知道,它解决了什么问题,有怎样的应用场景”,所以在刚开始接触一门新技术时,不是先看代码,而是,先了解,这个技术是做什么的,他的结构是什么,他有哪些部分,每个部分是怎样的关系,再是每个部分的内部结构,具体实现。
举个例子,在学习springboot的时候,当时的师父给了我一本《springboot实战》,看了几页就放弃了,对于一个对spring一无所知,甚至对java都不甚了解的人,啃起来太吃力,很多名词都不知道是什么。我就立马停下,去翻博文了,同时去啃《Core Java》(在此推荐,相当基础的一本书,Java入门必备)。
首先,我先简单了解了一下 spring mvc的结构model是什么,controller是做什么的,view是什么内容,然后照着博文实现了几个简单的项目,很快就能开发一些简单的功能了,发请求,查询,更新数据库。再后面,学习新功能,实现新功能,等对spring的操作熟悉了一些以后,就开始啃《精通Spring 4.x ——企业应用开发实战》,800页啃起来很慢,但是当你了解逻辑时,你才会知道他里面谈到的aop,ioc是做什么的,哦,原来我之前标一个@Autowire 就有实例了,是这样实现的(推荐的第二本书,写的很不错,同时穿插Java的基础知识,语言也很风趣)。
最近在学netty,我先去了解了一下IO是什么,NIO是什么,java NIO是怎样操作的,J具体操作了再去看netty的操作,就能更快地知道,netty在做什么,而不是一开始就去啃代码,《Netty权威指南》的学习步骤很认同,前面讲基础,后面的章节可以单独按需看。
2. 如何学得更快
如何学得更快,是我最近思考最多的一个问题,对于一个初学者来说,要看的书很多,
要学的东西也很多,那么,学习内容的挑选,学习方式的组织,就很重要了,学习方法,上文说明了,那么学习内容怎样选择呢。以下是我读过或正在读的书。
-
正在看的书
- Redis设计与实践
- ECMAScript 6 入门
- head first 设计模式
- JAVA并发编程实践
-
2017看过的书
- Redis入门指南
- Netty权威指南
- 精通Spring 4x
- react 引领未来的用户界面开发框架
- core java 卷1
我在书籍的选择上会遵守以下原则:
- 基础知识,比如core java , ES6, java多线程,设计模式
- 接近工作,比如redis,react,spring,netty
同时在MOOC上看南京大学操作系统的公开课,作为一个非科班出身的学生,操作系统
和计算机网络都没学过,很多人觉得生活中不会用到,所以就不看了。但在后面的学习中,经常会接触到,IO操作为什么慢,什么是原子性,socket的一堆设置是什么意思。当然,不清楚具体实现也不影响开发,但我认为,你对一门技术的了解程度,决定了你对它的控制程度。
其次,要学习优秀代码,无论是同事的,还是开源的,不仅要知道他们写得好,还有知道,为什么好,要在自己的代码中去模仿,去运用,去实践。
开通博客的初衷,是觉得网上没有完全符合自己学习模式的博文,这也是必然的,再加上最近学的东西比较多,不总结容易忘。写博文更多的是帮助自己成长,如果有写错的地方,也欢迎大家指正,如果能恰好帮助一些像我一样的新手,就更好了。
--2018/7/13-分割线------------------------------------------------------------------------------------------
距离第一次,写博文已经半年了,我也工作刚好一年,感触还是颇多的。写第一篇Jedis文章的时间特别长,主要是需要自己做图,因为没什么经验,语文也不太好,又想好好写,所以这一篇写的时间特别长。不过,跨过这道坎以后,后面写文章就快多了(跟第一次对比哈)。
跟第一次写博客相比,想法变了很多,比如:
首先,我觉得更多的想帮助大家,如果只是为了自己,那就写写笔记好了,不用分享出来,网上的博客质量太差,很多时间,要逛个十几篇博客才能找到几篇有用的。所以即使现在不是大佬,写文章速度也不快,但我会尽量把文章内容写清楚,写简单,希望能节省大家的时间。
另外,我在慢慢翻译国外的一本讲spring security的书,这本书是部门总监推荐的,个人觉得内容设计的挺不错。可能是spring security本身设计得比较难,网上没几个能说的清楚,说的全的,感觉部门也没几个很懂的,即使是操作。当初想做个demo都自己摸索了好久,如果有这本书,我想,我会快很多。翻译的很慢(有其他文章在写,要先做一遍,翻译得找百度确认一下==),如果着急可以看英文书,或者找我要资料~,不着急的,可以收藏一下,我会尽量在下半年翻译完。
最后,要复习下自己这段时间学习的知识。总监说的一段话让我思考了很多,学习的东西不是为了丢掉的,要么输出成文章,帮助其他人,要么应用到项目中,这样,你才能记得住。还有,要经常和大家互动,这样你才知道,你做的东西是不是大家想要的。接下来会努力在这上面改进,加油。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。