前言:
小伙伴们,大家好,我是狂奔の蜗牛rz,当然你们可以叫我蜗牛君,我是一个练习Java半年时间的小菜鸟,同时还有一个伟大的梦想,那就是有朝一日,成为一个优秀的Java架构师。
这个SpringBoot基础学习系列用来记录我学习SpringBoot框架基础知识的全过程 (这个系列是参照B站狂神的SpringBoot最新教程来写的,由于是之前整理的,但当时没有发布出来,所以有些地方可能有错误,希望大家能够及时指正!)
之后我将会以一天一更的速度更新这个系列,还没有学习SpringBoot的小伙伴可以参照我的博客学习一下;当然学习过的小伙伴,也可以顺便跟我一起复习一下基础。
最后,希望能够和大家一同进步吧!加油吧!少年们!
Springboot系列基础学习的第一站便是了解微服务,因为学习了SpringBoot,我们就正式步入微服务的学习历程了;在了解微服务前,先和大家一同回顾一下之前学习的知识,以及这个阶段的学习路线计划!
JavaSE:OOP
MySQL:持久化
HTML+CSS+JS+jQuery+框架:视图,框架不熟练,CSS不好
JavaWeb:独立开发MVC三层架构的网站了 (原始)
SSM:框架简化了我们的开发流程,配置也开始较为复杂
War:TomCat运行
Spring再简化:SpringBoot-jar;内嵌TomCat;微服务架构
服务器越来越多:SpringCloud
怎么样,看完这个学习路线,你是否对微服务阶段的学习有了一个大致了解,对自己完成微服务阶段的学习是否充满了信心,奈何本人没文化,送大家一句可能已经听烂的、著名唐代大诗人李白的诗句:乘风破浪会有时,直挂云帆济沧海!
Spring是一个(由悉尼音乐博士Rod Johson提出的,于2003年兴起的,为解决企业级应用开发的复杂性而创建的,为简化开发而生的),以IOC (控制反转) 和AOP (面向切面编程) 为核心的轻量级的 (Java开发的开源) 框架
为了降低Java开发的复杂性,Spring采用了以下4种关键策略:
蜗牛君,蜗牛君,你这铺垫也太长了,怎么还没到重点,你是不是在水博客呀?啊这,难道才第一篇,我就开始水啦?不要急,不要急,我这不是 为对学习路线迷茫,或者已经忘记Spring框架的小伙伴们考虑一下吗?
下面就到正题啦,接下来登场的就是今天的主角,SpringBoot框架,一个被Spring家族寄予厚望的新生代框架,一经推出,就受到了大家的称赞和广泛使用!
开箱即用 (Out of box):指在开发过程中,通过在Maven项目的pom文件中添加相关依赖包,然后使用对用注解来代替繁琐的XML配置文件以管理对象的生命周期
作用:使得开发人员摆脱了复杂的配置工作以及依赖的管理工作,更加专注于业务逻辑
约定优于配置 (Convention over configuration):是一种由SpringBoot本身来配置目标结构,由开发者在结构中添加信息的软件设计范式
优点:减少了大量的XML配置,并且可以将代码编译、测试和打包等工作自动化
缺点:降低了部分灵活性,降低了BUG定位的复杂性
在学习微服务之前,为了缓和一下气氛,给大家讲个有关编程的题外话,记得蜗牛君前段时间看到央视的一个新闻报导,说的内容就是21世纪的新星农民工是"码农"。
很多初学编程的小伙伴可能对"码农"这个名词比较陌生,那到底啥是码农呢?
哈哈,其实字面意思翻译过来就是敲代码的农民,那么"码农"和程序员到底有什么区别呢?
真正的"程序" = 数据结构 + 算法 (集合框架):这是程序员
我们的"程序" = 面向对象 + 框架:这是码农
说白了就是只会敲代码和使用框架的就是码农 (啊,这说的不就是我们吗?),而只有熟练的使用数据结构和算法,这才是真正的程序员。当然,这也不是在贬低"码农",这其实就是在告诉大家一件事情,数据结构和算法,是决定一个程序员深度和高度的关键。
所以,我们的学习目标也应该是朝这个方向发展和进步!加油吧!编程人!
微服务 (或微服务架构) 是一种云原生架构方法 (或者是一种架构风格)
其中单个应用程序由许多松散耦合且可独立部署的较小组件或者服务组成
要说起微服务架构,咱得先得了解一下单体应用架构,那什么是单体应用架构嘞,请大家往下看!
所谓单体应用架构 (All In One) 是指,将一个应用服务中的所有应用服务都封装在一个应用中
无论是ERP (Enterprise Resource Planning【企业资源计划】)、CRM (Customer Relationship Management【客户关系管理】),都把数据库访问,Web访问等等,各个功能放到一个war包内
优点:
缺点:
MVC 三层架构 --> MVVM 微服务架构
业务:Service,UserService :模块
SpringMVC :Controller :提供接口
微服务其实就是把业务拆分,拆分成模块,然后进行组合
概念:
好处:
用户下单:Controller 耗时1秒
消息队列:由于不可能让用户等待10秒,因此需要使用消息队列做异步请求
仓库冻结:资金冻结;验证:购买成功,仓库数量减少,仓库解冻,资金解冻 耗时10秒
软件设计原则:高内聚,低耦合
一个大型系统的微服务架构,就像一个复杂交织的神经网络,每一个神经元就是一个功能元素,它们各自完成自己的功能,然后通过http相互请求调用
比如一个电商系统,查缓存、连接数据库、浏览页面、结账、支付等服务都是一个个独立的功能服务,都被微化了,它们作为一个个微服务共同构建了一个庞大的系统
优点:如果修改其中一个功能,只需要更新升级其中一个功能服务单元即可
缺点:但是这种庞大的系统架构给部署和运维带来很大难度
Spring为我们带来了构建的大型分布式微服务的全套、全程产品:
最后再跟大家聊点别的,现在正值金九银十招聘季,想必很多大四的或者准备跳槽的小伙伴们都在准备秋招吧,或者有一些小伙伴已经成功拿到自己心仪的offer啦!
蜗牛君目前是大四,最近也是正在找实习的工作,在不断的笔试和面试洗礼中,蜗牛君屡战屡败,屡败屡战,但最终也是成功拿到了三家中型公司的offer。因为不是什么大厂,所以这里我就不说名字啦,但是在面试过程中也收获了很多经验教训,接下来跟大家聊一聊一些有关面试的小技巧吧!
一般面试的流程也是首先自我介绍,然后你回答面试官的问题,最后结束前你再向面试官咨询薪资和工作和相关问题
自我介绍:
自我介绍其实就是首先介绍一下自己的名字,然后介绍自己的所学专业 (如果你的大学不错的话,可以提一下自己就读的院校),接着介绍你在校所学的主要课程,然后是想要应聘的工作岗位,当然,你也可以跟面试官聊一聊自己的爱好啥的,最好是跟你这个专业有关的爱好 (不要说自己喜欢打王者或者吃鸡啥的,这可不能算爱好,也不是你的加分项哦!)
回答问题:
如果是技术面的话,这个流程就是经典的你问我答环节,面试官会向你提问一些跟你本专业或者应聘岗位有关的专业知识。
由于是校招,所以面试官重点考查你的是其实基础知识,不会问比较深入或者刁钻的问题 (当然并不是说这些就不用看了,像一些底层原理以及源码,这些平时还是要多啃一啃的,不仅有利于对某些比较抽象的知识的理解,同时也是我们能够谈薪的资本,这个能够让面试官看到你的知识广度和深度),像框架源码和项目经验这些都是加分项,如果提到了就跟面试官多聊一聊!
还有一点要注意的就是,这个其实很多面试小白会经常犯的错误 (当然蜗牛君在第一次面试时也犯了同样的错误):
那就是在跟面试官技术面时,很多小伙伴们表现的好像是警察在审讯犯人一样,或者是老师在提问学生的感觉,往往都是面试官问一句,你回答一句,然后就没有了,不舍得做一些扩充 (是不是某些小伙伴就是这样的,当然蜗牛君第一次面试也是这样),但是这样不仅会让气氛变得很尴尬,而且我们也会更加紧张,同时也不能给面试官留下深刻印象。
那正确的做法是什么呢?我们先来聊一聊什么才是一场好的面试?
其实一场好的面试,应该是面试官负责引导,而你是面试的主导,而不是让面试官主导这场面试,如果这样的话,一场面试下来,面试官说的话可能比你还要多,比如面试官的说话时间占了面试时间的60%,而你只占了40%,你可以认为这是一场非常失败的面试。如果一场面试下来,你的说话时间占了80%,而面试官只占了20%,这就是一场非常成功的面试!
正确的做法如下:
比如面试官在问了一个很简单的问题时,比如面向对象的三大特征是什么?很多小伙伴都知道,不就是封装、继承和多态吗?没什么难度,但是,面试官在问完这个问题后,我们就应该想到他下一步会问什么?大概是封装、继承和多态的具体解释了。
这时,你可以主动出击,先发制人,对面试官说,您好,面试官,我可以简单解释一下我对封装、继承和多态的理解吗?那这时候面试官一般都会选择听你解释,所以你就可以跟他解释一下自己对这些特性的理解。
虽然这个是典型的Java面试八股文题,但是你又不能表现的像背书一样,你可以结合一些实际的例子来进行解释,让他看到你思考的过程,这样不仅能让面试官看到你不一样的思路,同时也会加深对你的好印象!
当然主动出击还有一个好处,那就是你可以在面试官抛出一个问题后,在回答了他问题的同时,还能做出你自己的一些知识扩展,不仅让面试官看到你对这部分知识和概念的深刻理解,也能避免让面试官来主导这场面试,因为如果你多做扩展,你会发现,一场面试下来,你回答的都是自己会的问题,每个问题也都回答的很充分,而且面试官问你的问题数量也会减少一部分!这一波操作可以说是一石二鸟,一箭双雕!
咨询问题:
技术聊的差不多后,最后的环节就是咨询问题了,一般面试官都会问你,我的问题问完了,你有什么问题想问我的吗?
这时候,你不要着急问,先想清楚了再问,比如实习的薪资待遇,是否有五险一金?实习工资是除税之后的吗?工作时间怎样安排的?会经常加班或者出差吗?有员工宿舍和食堂吗?这些你比较关心的问题,最后结束了,别忘记给面试官说声谢谢,大概就是这么个流程了!
以上就是蜗牛君对面试技巧的全部分享内容了,希望对一些正在找或者即将要找实习或者工作的小伙伴们有帮助!祝大家都能够拿到自己心仪的offer!所以,加油吧,打工人!
好了,今天的有关Springboot和微服务初始的学习就到此结束啦,欢迎小伙伴们积极学习和讨论,喜欢的可以给蜗牛君点个关注,顺便来个一键三连,我们下期见,拜拜啦!
参考视频链接:https://www.bilibili.com/video/BV1PE411i7CV(【狂神说Java】SpringBoot最新教程IDEA版通俗易懂)