文章目录
一、问自己
为什么选择学习此框架,使用它能解决哪些问题,有没有更适合的框架,与它相关联的框架有哪些?
其实这样问自己也很正常。学习一门框架不是看两篇博客就会的,也是需要花费一些时间的。一部分是看别人的文档,教程等,另一方面是自己思考和动手练习。
学习一门框架可能是工作需要,可能是更新个人技能树,可能为了找工作。不管出于何种目的,这些外部因素都是促使你不断学习的动力。框架并不是什么高深的东西,它也是来源于基础知识。框架的诞生肯定是为了解决某个问题,然后框架的开发者通过一些规则去实现框架,最后输出框架文档,并推广给更多开发者使用。
一门框架也并不是孤立存在的,往往是多种框架结合在一起使用的。例如SpringCloud
家族包括很多子项目,Eureka 注册中心 、Hystrix服务熔断降级 、Zuul微服务网关 、Config Server分布式配置、Sleuth链路追踪等。多个框架的组合使用才能完成实际的应用场景。 例如满足前端功能需要,可能会用到多种框架和技术, Node.js、Vue、ElementUI、Vue Router、Vuex等。
二、入门
学习一门框架,前期主要掌握环境搭建,基础语法。掌握框架对异常、错误处理、断言、日志和调试的支持,对单元测试的支持。
在网络中如何寻找适合自己的学习资源呢?一些必备的技能必须掌握。掌握下面这些网站优化的命令很有必要。
搜索引擎命令:
blog.csdn.net springboot #csdn上搜索包含springboot关键字
allinurl:java mysql #完全包含java mysql关键词的页面
inurl:java mysql #包含java mysql关键词的页面
allintitle:oracle 甲骨文 #查询标题完全包含oracle 甲骨文关键词的页面
intitle:oracle 甲骨文 #查询标题包含oracle 甲骨文关键词的页面
我总结了一些自学的网络资源:
自学教程网站
视频网站
系列教程
- github 上搜索系列教程
- 各大博客网站:知乎、csdn、思否等搜索关键内容。
三、深入
官网学习
为什么要首先在官网进行学习呢?因为官网是第一手的学习资源。在搜索引擎中搜索xx官网
,就可以找到对应的网站。有些伙伴可能会说好多框架的官网都是英文,看一会就没有动力了。学习技术最好要养成阅读英文文档的习惯。多年经验告诉,一些网上找不到解决方案的问题,往往在官网仔细搜索,都能找到问题的答案。
小窍门
:谷歌浏览器有翻译功能,可以适当使用一下。
多动手
进入官网后,找 Getting started
、Example
字样的文档。官网的教程一般讲的都比较详细,先阅读官方文档,然后在动手练习,最后就可以做到举一反三。最重要的还是要抓住框架的共性,我们要在动手的同时去思考。比如前端开发,单页面最近本的通用问题有哪些?路由、模块化、组件化、前后台数据交互等。
四、实战
4.1代码托管平台
现在市面上的代码托管平台特别多,例如:Github,码云(Gitee), Gitlab,码市(coding)等,代码托管都免费。这么多的代码托管平台,优秀开源项目特别多,我们就要学会使用这些平台,寻找自己需要的项目。这里以Github
使用为例。
搜热门
在Github
中 explore
标签下,有 主题(Topic)
和 热门(Trending)
。Topic
页面包括最新、最流行的讨论主题,有技术性的话题,也有一些非技术的话题,这里就是世界编程爱好者讨论技术的区域 。Trending
汇总了每天、每周、每月的热门项目和热门开发者。页面也支持多种筛选条件,方便我们快速找到心仪开源项目。
搜索栏搜索
在Github
搜索栏,按照搜索栏的语法,快速找到自己需要的内容,常用的命令如下:
stars:>=300 language:vue #搜项目
language:java location:china #搜索开发者
examples path:/docs/ language:vue #搜索vue项目中docs目录下包含examples内容的文件
issues:node #问题搜索
awesome springboot #搜索一些优秀的框架、教程、项目等
更多用法参考:Github上搜索信息
Github插件
Google
浏览器添加一些插件,让我们在线查看项目结构,源码内容。插件有:Octotree
、OctoLinker
、Sourcegraph
等。Sourcegraph
插件效果如下图
4.2选择开源项目
如何选择适合自己的开源项目?首先要明确目的选择哪类项目:系列教程型项目,综合应用的项目。
- 系列教程一般是细化框架的每个功能点,更加深入的掌握框架的使用方法。
- 综合应用关注点主要实战,不仅包括框架的一些特性,可能也会涉及到其他多种框架的使用。
其次如果寻找开源项目,要找比较活跃的项目,文档要丰富,代码提交记录也要较新一些。
4.3改造项目
学习最好的方式就是模仿,拿来主义没毛病,先掌握了已有项目,再由点及面掌握更多知识点。要改造项目首要阅读项目说明,理解项目是如何工作的。
掌握项目
1.阅读README.md
,文档会说明项目实现了什么功能,使用了哪些技术和框架,也可能会说明项目搭建步骤。通过README.md
我们对项目会有一个整体的认识。
2.项目根目录可能会包含doc
目录,这个目录也会包含项目说明文档。
3.源码目录寻找单元测试,通过运行单元测试,掌握项目功能。
4.按照文档本地运行项目,用一个功能点分析项目的三流:数据流,业务流,控制流。
改造项目
以我改造博客项目为例。我有这些想法:首页分页接口默认返回15条数据,我想让分页接口返回9条数据;首页右侧我想添加自定义个人分类,联系站长,你可能感兴趣,友情链接等板块。想让博客在多终端自适应,保证样式的不错乱,修改后台接口等等。这里以修改默认分页为例。
1.猜想:a.后端一次获取所有数据,前端做分页展示。b.前端传递分页参数,获取当前页面的分页数据。
2.浏览器(谷歌)打开Debug
调试窗口,查看请求http://www.mhtclub.com/api/hots?size=9
可知,每页数据条数是前端传递的参数。
3.前端向后端发送获取分页数据的请求,那就要找前端代码。通过上面的请求提取关键字 api/hots
,在IDE
中全局搜索内容。找到的代码如下:
seajs.use('sidebox', function (sidebox) {
sidebox.init({
<#--latestUrl : '${base}/api/latests',-->
latestUrl : '${base}/api/tags',
hotUrl : '${base}/api/hots',
hotTagUrl : '${base}/api/hot_tags',
latestCommentUrl:'${base}/api/hot_users',
size :15,
// callback
onLoadHot : function (i, data) {
return jQuery.format(li_template, i + 1, data.id, data.title);
},
onLoadLatest : function (i, data) {
return jQuery.format(hotTag_li_template, i + 1, data.name, data.posts);
},
onLoadLatestComment : function (i, data) {
return jQuery.format(hotuser_li_template, data.id, data.avatar, data.username);
}
});
看到这里答案已经很明确了,size
属性就表示默认分页数。
4.问题解决了,现在回过头来看上面的这段代码。seajs
是什么东东,它是怎么工作的?使用搜索引擎会找到我们想要的答案。
例子很简单,我想说的是这种思维方式。最终改造后的博客项目如下图:
五、提升
5.1优雅的提问
遇到问题并不可怕,遇到问题才是提升个人能力的时候。
提问前
- 尝试在网络中搜索你的问题,建议使用
Google
。 - 尝试在官方网站搜索相关问题。
- 尝试阅读指导手册,常见问题文件等来查找答案。
- 尝试结合自身经验,假设并通过试验来验证答案。
- 建议阅读源代码来解决问题。
提问时
- 礼多不怪,有时还是特别有帮助的。
- 用清晰、精准的语句来阐述自己的问题。
- 描述问题的现象,并说明你的猜想。
- 说明你对问题的思考,并做过哪些尝试。
问题解决
向所有帮助过你的人发送一份邮件,详细描述问题是怎么发生的,中间做过哪些尝试,最终是怎样定位和解决问题的。并再一次向他们表示感谢。
5.2.提升个人能力
思考能力
学习的第一步就是模仿,跨过模仿的阶段进入闻一知十 ,这个阶段就会开始体现思考能力。首先要见多识广
,掌握的东西多了,大脑在计算(思考)的时候都是基于已有知识进行重新排列组合的 。
- 增加背景知识量,多阅读技术资讯,博客,开源项目源码等。
- 提高知识熟悉程度,10万小时就可以塑造行业专家,也是有一些道理的。
- 增强知识结构性,例如项目无法访问,我们会想到,服务是否启动,网络是否连通,端口是否可用等。
- 提高对背景知识的梳理能力,通过工具
Xmind
整理知识,提高整理思维的效率。
搜索能力
现在社会,搜索能力越来越成为一个人的必备素养,大部分场景下,解决问题 ≈ 搜索。
搜索问题前需要明确两点:
- 分析问题,因为一些问题并不能直接搜索到答案。
- 将搜索的问题转化为关键词。
解决问题的能力
1.正确解决问题的方式:
分析问题 => 猜想 => 验证猜想 => 找到原因 => 构建解决方案 => 验证解决方案 => 解决
2.提升相关知识的掌握程度,分析与解决问题的能力就能明显提高。
有时困惑我们的问题在释给其他人听时候,突然就发现问题产生的原因。
六、出师
最后注意下面三个点,使用框架对你已不是难事。
6.1.在线问题定位
线上问题定位包括:日志分析,进程监控,远程调试。
Linux 服务器上的常用命令
history|grep docker #查看操作历史包括 docker字符串的命令
top #实时动态地查看系统的整体运行情况
df -h #查看磁盘使用情况
df -i #查看inode使用情况
free -m #示系统中物理上的空闲和已用内存
ps -elf | grep tomcat #查看进程统计信息
tail -f xx.log #循环读取文件内容
ll -ah #查看目录下所有文件
netstat -anp|grep 8080 #查看端口使用情况
ip addr #查看ip地址
6.2.版本问题
注意编译器版本、框架版本、服务器、各种工具包的版本问题。注意配置文件的使用细节,不同版本会有一些升级或者删改。当你怎么也检查不出配置文件的错在哪里的时候,找一些开源项目调试别人的代码,寻找答案。
6.3.了解容器技术
掌握一些微服务的知识相关技术,例如:Docker,Kubernetes 等,微服务在未来也是一个大热门,不管是项目构建,自动化测试,自动化部署都离不开容器技术的支撑。