1.1 课程介绍

本文介绍了牛客网的Java高级工程师系列课程,将围绕SpringBoot进行实践,通过开发牛客社区首页,逐步深入学习Web开发技术、主流框架、面试策略和性能优化等内容,构建一个完整的项目并掌握企业级开发技能。
摘要由CSDN通过智能技术生成

1.1 课程介绍

欢迎来到牛客网 Java 高级工程师系列课程,我是课程的主讲老师李红鹤,我们推出这套课的目的是想让你真正的掌握 Java web 开发相关的技术,我们会从理论、实践、面试这三个环节来帮助你,让你成长为一名合格的 Java 高级工程师。

当然了,想要达成这个目标并不会很容易,因为现在的互联网公司的用人标准都蛮高的,为了让你能够达到互联网公司的标准,成功的拿到满意的 offer,我们的课程会非常的侧重于实践,第一章的标题叫做:“初识 Spring Boot,开发社区首页”,也就是说第一章我们就要完成牛客社区首页的功能,那就要开始我们的实践了。

然后,后面还有 7 章,我们会在它的基础上不断的加深实践,最终你会开发出一个完整的牛客社区的项目。好了,在开始我们的实践之前,我想我有必要更详细地给大家介绍一下我们的课程,包括我们需要学哪些东西,我们需要做出哪些东西,以及我们需要在什么样的开发环境下来完成这样的内容。

大家可以看一下,我们这个课程主要有三个目标:

  1. 学会主流的 Web 开发技术和框架
  2. 积累一个真实的 Web 项目的开发经验。
  3. 掌握热点的面试题的答题策略,好顺利的通过面试。

那么关于第一个目标,你需要知道主流的 Web 开发技术框架都有哪些,他们互相之间是什么关系,我们需要按照什么样的路径来学习,并且你要知道学会以后,能利用这个技术做什么样的功能,这些内容我会在下一页 PPT 进行详细的介绍。

关于第二个目标,我想强调的是一个真实的项目是非常重要的,因为你在实现真实的业务时,才能够透彻地理解一项技术它能够解决什么样的问题,而且在开发的过程中,你才能够遇到足够多的坑,在你趟过这些坑以后,你才会积累到足够多的解决实际问题的经验,企业最在意什么?最在意的就是你能不能解决实际的问题,对不对?所以这个课程我为大家讲解演示的就是牛客网的核心功能。

那么第三个目标是在前两个目标都达成的前提下才能去实现的。所以我把他安排到了最后一章,你需要注意的是面试题不能死记硬背,所谓的面试策略,它一定是建立在你对框架的透彻理解,以及深度应用的前提之下,这样的话面试官无论怎么去问你,你都可以灵活应变,甚至可以举一反三,这样的话你拿到 offer 就是一个顺理成章的事了。

下面我们一起来看一下课程中要开发的项目,你看这就是项目的静态页面,那么这个项目叫牛客社区,实际上就是牛客网的讨论区的功能,我把它从牛客网中抽离出来给大家进行讲解,那么牛客网实际上是有很多功能的,那是我们技术团队经过多年的努力,才开发到现在这种规模的。

所以你是不可能一个人在短时间内把整个网站都做出来。

那么我之所以选择讨论区来讲解,是因为讨论区的它的业务是一套比较典型比较通用的业务。你看大家所熟知的微博、知乎、豆瓣,其实他们的很多功能和我们的讨论区是一样的,那么解决问题的思路技术方案也是类似的,所以你如果说在简历上写上这样的项目经历,比较容易让面试官产生兴趣。面试的时候,你们可以聊到投机一点。

那么这套静态页面是为了录制这个课单独做的,是在讨论区的基础上做了一定的精简,因为这个课是 Java 工程师的课,而 Java 开发它是侧重于服务端的,重点不是在前端。牛客网有专业的前端工程师,前端页面可以做得很丰富,也很复杂,但是如果我们直接使用原版页面来做,那就需要你具备丰富的前端知识,和我们的课程定位就矛盾了。那么简化以后的页面就简单多了,只要你熟悉 HTML 常用标签,了解一点 CSS 和 JS,那么就可以上手开发了。

下面我们详细地看一下这套页面,首先我们看到的是社区首页,它实际上就是一个帖子列表,可以按照最新或者是最热门的程度来排序。然后,如果你点这个按钮,那就可以发布一个帖子,为了防止你发布不健康的帖子,那么网站的服务端需要做敏感词过滤,把非法的词隐藏掉。采用什么样的算法做敏感词过滤,这个是我们课程中要重点探讨的话题。

另外如果你没有登录,你只能看帖子,是不能发布帖子的,而且你也不能查看消息,也不能看到个人主页账号设置,退出登录这样的功能。

因为当前我们是静态页面,这些就都显示出来了,实际开发的时候我们是要进行权限控制,动态的让这些功能显示或隐藏的。然后,当你点击某一个帖子的时候,你就能够进入帖子的详情页面,在这里你们可以看到帖子详细的信息,当然还有回帖的内容。如果你是登录的状态,就可以给帖子点赞,或者是在下面给帖子进行评论,当然你也可以对别人的回复加以评论。

还要注意咱们这个页面的右上方有三个按钮,这三个按钮不是普通用户可以用的,实际上它只有管理员和版主才能看到才能点击,这里也需要做权限控制。

这里是注册功能,当你点击注册按钮以后,服务端就会给你发一封邮件,里面会包含一个激活链接,你需要点击链接,将账号激活以后才能使用。这个就是登录功能,这里的验证码是服务端随机生成的,每次刷新页面都会变。当你点登录的时候,服务端需要对验证码、账号和密码作出判断,全都正确才能登录成功。登录成功以后,服务端需要记住用户的登录状态,这样你下次再来访问网站就不用重复登录了。登录以后,可以查看个人主页,看看你关注了多少人,有多少人关注了你,以及你获得过多少个赞,这两个地方是可以点进去的,比如说你点这可以看到你关注的人,一点这儿可以看到有多少人关注了你。在这里你还可以看到你曾经发过的帖子,在这儿你可以看到你曾经做过的回复,另外别人也可以点击你的头像,进到你的主页,他可以点这个按钮来关注你。

这里面要注意的是这个点赞和关注,它是非常高频的一个操作,我们需要重点考虑性能的问题。采用什么样的方案才能提高系统的性能,在网站流量的高峰时段,不让服务器挂掉,这是我们课程中的重点要探讨的,也是面试官的非常关心的话题。个人主页的下面还有一个账号设置功能,在这里面你可以上传头像,可以修改密码做这样的操作。

那么我们可以把头像传到自己的应用服务器,也可以传到第三方的云服务器,那么这两种方案我在课程中都会给大家做演示。

最后,账号设置下面还有一个退出的登录的功能,那么可以注销你的登录状态。这里会显示你的未读消息数量,点进去以后你可以看到你和朋友之间的私信,以及系统给你发的一些通知,你可以点这个按钮给某个人发私信,也可以点这里,看私信的详情,或者是点按钮给某个人的回信,这是关于私信的操作。

再看一下这个系统通知,当别人评论了你的帖子,或者是给你点个赞,或者是他关注了你的时候,这个时候系统就会自动的发消息通知你一下,你可以点进来看一下通知的详细的内容。

那么很明显网站每天都会产生大量的消息,所以为了降低应用服务器的压力,发布消息需要使用专业的消息队列服务器。

那么为了深刻的理解消息队列,你需要加强多线程方面的知识,需要理解生产者与消费者模式。在这里你可以进行全站的搜索,那么搜索的结果会把你输入的关键词做高亮显示,实际上就是标记为红色。全站搜索它并不是说从数据库中查一下就完了,是需要通过专业的搜索引擎来实现的,那么这也是出于性能的考虑,我们的数据库和搜索引擎之间是如何同步数据的,是如何支持中文分词的,如何做高亮显示的,这些都是我们重点探讨的话题。

除了上面的功能之外,还有一个隐含的功能,它只有管理员能够使用,访问路径也不对外暴露,我需要手地的敲一下。在这里管理员可以统计某一段时间之内,网站的 UV 或者是某一段时间之内网站的活跃用户数,那么网站的用户是非常多的,用户访问网站的次数就更多了,所以统计与用户行为有关数据的时候,那么怎么样做才能够节约存储空间,才能够拥有更高的统计效率,这是我们将来要探讨的话题。

好了,以上就是我们课程中大致要讲解和演示的功能。那么从界面上看它并不复杂,但是你要想把这些功能做到安全高效易用的程度,我们是要在服务端花很多心思去处理的。所以,服务端开发它可不是简单的将业务实现就可以了,如何提高系统性能,如何让系统更安全,它永远是我们追求的目标,这个也是企业关注的焦点。

那么在这些方面,我在课程里都会给大家做详细的讲解,让你学会专业的服务端开发技术。那么功能介绍完了,我们再回到 PPT,接下来我再给大家介绍一下咱们这个项目的技术架构,让大家清楚地了解自己要学会哪些技能。那么大家应该都知道 Java 语言是 Son 公司推出的,而 Java Web 的开发标准其实也是由 Son 制定的,就是 Java EE。而 Java EE 的核心是 EJB,我想可能很多人都没听过这个词儿,那是因为 EJB 设计的太复杂,太难用了,它已经被淘汰了。

目前市场上基于 Java 语言,做 Web 开发的主流框架就是 Spring,基本上大家都用 Spring,可以说 Spring 它已经是事实上的行业标准了。但是 Spring 它不是一个框架,而是一套框架的组合,在开发过程中我们所遇到的常见的需求,Spring 都能够给你提供很好的解决方案。当然有些功能是 Spring 自身支持的,有些功能是 Spring 整合了第三方的框架支持的,总之无论项目中有什么需求,通过 Spring 都能够找到解决方案,所以这就是大家钟爱 Spring 的原因了。目前最流行的做法不是直接使用 Spring,而是使用 Spring Boot。

那么在 Spring Boot 的帮助之下,Spring 会变得更简单。Spring Boot 就是为了进一步简化 Spring 而生的,在它的支持下,我们可以采用 Spring 来管理项目中的对象,并且对其他的技术进行整合,所以 Spring 才是整个项目的基石,是我们要学习的重点内容。

对于服务端程序来说,首要解决的就是如何处理浏览器的请求,在这方面 Spring MVC 是最流行的技术。

其次,服务端程序要解决的是如何访问数据库,在这方面 MyBatis 是最流行的技术。当然我们不会单独的使用 MyBatis,而是采用的 Spring 来整合它,让它变得更简单。

那么这三个框架, Spring、Spring MVC 以及 MyBatis,他们加起来其实就是我们通常所说的 SSM 框架了。

这套组合是目前 Java Web 开发当中使用最多的技术方案,在我们的项目中,所有的基本的功能都是由 SSM 来实现的,比如注册、登录、发帖、评论、私信等等。SSM 是我们整个项目的基础,是我们时时刻刻都得使用的技术。所以,前三章我们主要就是学 SSM,并且利用 SSM 将项目中的常规功能都给它开发完,而这个 Redis 它是 No SQL 数据库,默认是将数据存在内存里,在适当的时候再把内存中的数据存到硬盘上。由于它是操作内存的数据库,所以它的性能非常的好,在我们的项目中对于那些性能要求很高的功能,我们可以把这些功能相关的数据存到 Redis 里,来提高服务器的处理能力。

Kafka 它是目前性能最好,也是最流行的消息队列的服务器。我们的项目中所有的消息都是由 Kafka 来发布, Elastic Search 它是目前性能最好,最流行的搜索引擎,我们项目中的搜索功能就是它来实现的。Redis、Kafka、Elastic Search,他们都能够在某一个层面上提高应用的性能,所以它是我们重点要掌握的内容,也是面试官的非常关心的话题,我们在使用的时候也会通过 Spring 来整合他们,让这些技术变得更方便。我们课程当中的第四章、第五章、第六章,就是分别学这三种框架。

Spring Security 可以管理系统的权限,让每个功能被正确的人访问,可以提高系统的安全性。

Spring Actuator 在我们系统上线以后,对系统进行全面的一个监控,让运维的人员随时掌握系统的运行状况。因为很多中小公司它是让程序员兼顾运维工作的,所以说关于这方面大家最好也做一个了解。

上面我所列举的是我们的项目中的最核心的技术框架,除此以外还有很多零碎的技术,比如说怎么发邮件,怎么生成验证码,怎么过滤敏感词,怎么定时启动一个任务,怎么生成长图,怎么把代码传到云服务器上等等。这些内容其实也很重要,我也会在课程里面给大家做讲解,做详细的演示。

最后我再为大家介绍一下我们要使用的开发环境,后面的课程里我会逐个的给大家演示这些工具怎么安装怎么使用。

  • 首先我们需要构建项目,那么构建项目包括对项目的创建、编译、测试、打包、生成文档等等好多个环节,我们选择 Maven 来做这样的事情,因为它是目前最流行的项目构建工具。
  • 其次咱们这个项目代码量挺大的,所以我们最好选一个好用的集成开发工具,它可以大大提高我们的编码的速度。目前在 Java 领域, Idea 是最流行的集成开发工具,当然它分为社区版和收费版,我们选择免费的社区版就可以了。
  • 关系型数据库我们选择 MySQL;No SQL 数据库,我们选择 Redis。
  • 还有 Web 项目需要部署在应用服务器上才能运行起来。在这方面我们选择开源的 Apache Tomcat。
  • 最后你代码开发完了,我们需要上传到版本控制服务器,一个是为了便于团队成员之间的互相合作,这方面我们选择最流行的 Git。

好,上面所列举的是我们项目中最基本的开发工具,大部分的企业都会用到这些工具。除此以外还有很多工具也会用到,比如说 MySQL 的客户端 Navicat,模拟浏览器发布请求的 PostMan,进行性能测试的 JMeter 等等。那么关于这些工具,我也会在课程里给大家演示他们怎么用。好了,牛客网高级工程师这门课程我就为大家介绍到这里,那下节课我会教大家搭建自己的开发环境,我们的实践就从下次课开始了,咱们下次课再见。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值