写在前面的话html
写这篇文章以前,也是想说说为何想写这篇文章,原由是个人QQ群里,有人但愿推荐一些学Spring Boot 和分布式的书,后来在网上随便翻了翻,发现很多人不知道SpringBoot应该怎么学;java
而后发现很多小伙伴走了弯路;程序员
因此就突发奇想,想写一本关于微服务分布式的书,我当时的念头就是必定要比别人写的好,必定要比别人写的全,我要这本书上让你碰到什么错,都能轻轻松松的搞定!web
我摊牌了
我摊牌了,我想给你们推荐的就是我本身写的书,《微服务分布式架构基础与实战——基于Spring Boot + Spring Cloud》;服务器
推荐书是真的,个人书可让学生学明白也是真的。微信
Spring Boot学习难点
其实很难说Spring Boot有任何学习上的难点,毕竟Spring Boot属于原子性整合类项目,不过是经过Spring Boot去整合各种框架、各种资源,可是Spring Boot在学习的过程当中,“坑”会超多无比,毕竟由一个项目整合另一个,所遇到的坑会不少,例如:架构
- 启动的时候Http路径没有路径重复错误,可是调用的时候会产生路径重复错误;app
- 代码明明写的都对,可是启动SpringBoot项目报错;框架
- 总有些文件让SpringBoot没法扫描到;分布式
- N多个Spring的application配置文件,到最后SpringBoot究竟听谁的?
- 好几种不一样的启动参数,到最后Spring Boot按照谁的执行?
- SpringBoot为何会有端口最大限制?
- YAML文件明明和别人的写的如出一辙,为何个人就报错了?
- ...
Spring Cloud学习难点
Spring Cloud的学习难点有不少,主要分为两个方面,第一个方面是对分布式的理解和总体项目的搭建、应用。第二个方面是代码中也存在着一些细小的坑。
细小的坑例如:
- Feign调用时候,为何调用带有”-”的程序会发生报错?
- Swagger与Feign版本怎么还会冲突?
- Feign的拦截器为何生效了两次?
搭建的难点例如:
- 我已经按照操做步骤搭建好了Consul集群,可是为什么注册在其中一个Consul上以后,集群中的其它Consul没法读取我这个Spring Boot相关的信息。
- 为何会出现Quartz这种分布式任务调度?缘由是什么?和别的分布式内容不一样,这也不是个中间件啊。
- 个人FastDFS分布式文件管理系统究竟哪里搭建的不对,致使一直没有正确存储上。
- ...
个人书中帮助你们的方式
在java学习的中后期,学生们总会发现,我明明代码和书里写的如出一辙,为何他就没报错?我就报错了?是否是书里写的有问题?有错误?
其实通常的计算机类书籍有错也正常,由于高级语言更新迭代速度不是通常的快,基本上三年前的书你如今看,就已经跟不上时代了,勉强学完发现社会上也不用那些个细枝末节,由于高级语言不一样于计算机底层,计算机底层好多年前已是这个样子了,可是为了敏捷开发、为了高性能、为了分布式、为了低延时,突飞猛进的框架、技术、思想开始不断冲击着全部的在职人员和学生,你们急缺的是易上手,易帮本身解决问题的书籍
我在书里写了几十个实例,每个实例都是总体功能的一部分,可让读者尽快上手这一部分知识内容,带着你敲代码。
如果您说,大部分书籍都是这样的,那您可错了,个人每一个实例后面都会跟着一个【易错点】的小节,该小节中,会把大部分您可能出现问题的点,给暴露出来,而且提供了相应的解决方案,以下所示:
该小节将.properties文件格式转换成了YAML格式,可是这个格式看起来简单,错的人却很是多!大部分人都把port前面的空格部分使用了TAB键进行输入,但是YAML并不承认这种书写方式,因此我提供了易错点,告诉你们不能这么书写;
另外例如该小节中,正常状况下也没法看出来空格的个数,我也经过易错点的方式,详细的向读者进行说明,以下所示:
=============================================================
每个小节,我都尽量的把出现问题,细微的坑,给你们说明出来,让读者花最少的时间,学会这门技术,例以下面这个小节;
在同一个YAML文件之中,能够同时设置多组不一样的参数,经过”---”三个短横线来进行处理,如果前面增长了空格,或者TAB之类的内容,则总体程序会报错;
每个实例都有易错点,我统统摘了出来告诉你们,如果其中有易错点没有说到,我也建立了一个书友群,天天只要有时间,我也都愿意回答读者问题:
对了,针对于文中提过的学习难点,我在书中的易错点里一一有解答;
对了每一个章节以后,我都设了几道针对该章节的练习题,若是以为书籍没有彻底看懂的话,就像高中初中同样,拿着课后题,作答案,用这种方式去让读者自身有一个衡量,题能作懂那说明这章节内容就学会了,题作不懂,那就是不会;这样简单粗暴的办法,给读者一个标尺,不能说这章节我已经看完了,那我还不清楚本身会不会,这时候就有一些题给你们作,让你们知道,本身是否真的学会了,例题以下所示:
![]() |
我努力教你们分布式和集群的搭建
在我售卖这本书的过程当中,有些读者给我反馈,以为这书写的有一些难了,例如文中须要一点点Linux基础、文中在教你们集群的搭建和分布式搭建的内容;
我并不以为这样的是一件很差的事情,我也特别但愿别人能够告诉我,以为我书里哪写的很差,我但愿有一天这本书能够再版,让我增长更多的技术内容进去;
我想回答一下这几个问题吧,第一,须要一点Linux基础是我以为,工做的时候你们必备Linux基础才可以工做,微服务分布式的学习,绝对绝对不仅是代码而已,如果只会写代码、不会搭建,那在思想上始终都捅不破分布式的那层纸;
集群也是如此,我在书中含有任务调度集群、注册中心集群等等的集群架构,每一行操做,先作什么、再作什么,近乎写的像一个说明书,集群虽然不是分布式,可是集群和分布式的概念太容易让人混淆了,太多人临找工做的时候,都分不清什么是集群、什么是分布式、什么是微服务群!
集群和分布式某种程度上来讲,都十分的简单,我我的的方式就是经过搭建+代码的方式先学习完大部份内容,而后发现本身深入的悟透了这份思想,如果这份思想学到了,那如今让读者写一个本身的Redis,就叫myRedis,该Redis含有集群的能力,只要有这份思想,这个代码是十分容易实现的,可能就几千行代码就能够作到这件事情,而且有许多不一样的实现方案在等着你,你能够尽情的书写;
这些方案其实很简单,学习这份思想是很是不容易的,可是从搭建+写代码这种实现方式,去逐渐接近这份思想,将会下降整件事情的难度!
千万不要畏惧Linux、畏惧集群、畏惧搭建,或者说畏惧那些不写代码作的服务器的工做、畏惧接受一份非人类的思想,如果都畏惧都不懂的状况下,那十年工做的程序员所作的事情,和三年程序员所作的事情将会没有任何区别;
我但愿我能够真正帮助到你们
程序这个行业里、这个学业里,并无至高无上的神、无所不能的神,咱们都是不断在技术路上努力爬行的,我但愿我能够帮助到其余人,帮助到当初和我同样,找不到适合实战的书籍;
诚然我技术并不是特别优秀,这本书也不能说是天衣无缝的顶级,可是我在编写的过程当中,不断的和没有学过的人进行探讨,不断的和经过这本书学习完微服务分布式的人进行交流,但愿别人能够受益,但愿本身能够帮助到其余人,毕竟这也是我几年累计的经验,换五十块一本,其实在我内心没任何意义,可是我特别高兴有读者学完,学会了之后特别兴奋的来找我沟通、反馈,告诉我哪里学会了,哪里还差点,那种感受,跟吃了甜品同样,感受幸福极了,感受我帮到其余人了;
我想用真心换真心,但愿我努力的做品,可以让您满意,能帮助到您,不管从架构上、搭建上、代码上、思想上;
谢谢个人编辑支持我出了这本书,谢谢个人读者会喜欢这本书,张方兴在这里给您鞠躬了~
http://product.dangdang.com/28532818.html
2020年9月9日星期三夜
本文分享自微信公众号 - 北漂程序员的吐槽人生(beipiaochengxuyuan)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。