2021服务外包-后端技术培训

什么是后端?

1、后端是在后台工作的,控制着前端的内容,主要负责程序设计架构思想,管理数据库等。后端更多的是与数据库进行交互以处理相应的业务逻辑,需要考虑的是如何实现功能、数据的存取、平台的稳定性与性能等,涉及动态语言如PHP、ASP、JSP等。

2、后台开发就是来解决这样的需求的。为了让各个服务器同时并行工作,他们研究分布式算法,把大任务拆成小任务,分布给各个服务器单独运算。为了提高数据库的存取速度,他们研究非关系型数据库,也就是NoSQL,把它们用在社交、O2O应用的后台。为了解决硬盘速度远远跟不上内存速度的问题,他们研究缓存技术,简单来说就是数据从硬盘里取出来就不放回去了,这样下次还用就不用再去硬盘取了。当然,也有一些后台开发专注于业务逻辑,前端想请求什么样的数据,大家坐在一起商量一个协议,他们负责写个接口,前端来调用就是了。

C/S

C/S(Client/Server):又称客户/服务器模式。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sql Server等。客户端需要安装专用的客户端软件,结果图如下:

举个栗子:以电脑上的qq为例,qq APP就是Client客户端,存放所有用户信息的地方就是qq的Server服务器。

B/S

B/S(Browser/Server):又称浏览器/服务器模式。是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器,如Internet Explorer,服务器安装SQL Server、Oracle、MYSQL等数据库。浏览器通过Web Server 同数据库进行数据交互。
结构图如下:

举个栗子:我们经常访问的百度为例,当我访问百度时,我的电脑就是客户机之一,百度的代码存放的地方就是web服务器,而百度用户的信息及百度的一些基本数据信息就是数据库服务器

后端技术栈

CGI

ASP、PHP、JSP

Java

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。

设计模式

https://www.bilibili/video/BV1G4411c7N4

数据库

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。

每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。

我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。

所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。

RDBMS 即关系数据库管理系统(Relational Database Management System)的特点:

  • 1.数据以表格的形式出现
  • 2.每行为各种记录名称
  • 3.每列为记录名称所对应的数据域
  • 4.许多的行和列组成一张表单
  • 5.若干的表单组成database

MySQL

MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。

https://www.bilibili/video/BV1xW411u7ax

Redis

REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。

Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

Java EE

Java EE,Java平台企业版(Java Platform Enterprise Edition),之前称为Java 2 Platform, Enterprise Edition (J2EE),2018年3月更名为Jakarta EE。[1]是Sun公司为企业级应用推出的标准平台。Java平台共分为三个主要版本Java EE、Java SE和Java ME。

JDBC

Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。我们通常说的JDBC是面向关系型数据库的。

https://www.bilibili/video/BV1eJ411c7rf

前端知识

HTML5/CSS

JavaScript

https://www.bilibili/video/BV14W411u7bC

JQuery

AJAX

https://www.bilibili/video/BV1JW411u77A

Java Web

Java Web,是用Java技术来解决相关web互联网领域的技术栈。web包括:web服务端和web客户端两部分。Java在客户端的应用有Java Applet,不过使用得很少,Java在服务器端的应用非常的丰富,比如Servlet,JSP、第三方框架等等。Java技术对Web领域的发展注入了强大的动力。

https://www.bilibili/video/BV1Y7411K7zz

三层架构

UI( 表现层 ): 主要是指与用户交互的界面。用于接收用户输入的数据和显示处理后用户需要的数据。

BLL:( 业务逻辑层 ): UI层和DAL层之间的桥梁。实现业务逻辑。业务逻辑具体包含:验证、计算、业务规则等等。

DAL:( 数据访问层 ): 与数据库打交道。主要实现对数据的增、删、改、查。将存储在数据库中的数据提交给业务层,同时将业务层处理的数据保存到数据库。

MVC模式

Model (模型) - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器。

View (视图) - 视图代表模型包含的数据的可视化。

Controller (控制器) - 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。

SSM(SpringMVC+Spring+MyBatis)

Spring

Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。

https://www.bilibili/video/BV1Vf4y127N5

IOC

Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地new一个对象,而是让Spring框架帮你来完成这一切。

AOP

AOP(Aspect Oriented Programming)称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等待,Struts2的拦截器设计就是基于AOP的思想,是个比较经典的例子。

在不改变原有的逻辑的基础上,增加一些额外的功能。代理也是这个功能,读写分离也能用AOP来做。

SpringMVC

SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。SpringMVC相当于SSH框架中struts。

MyBatis

MyBatis是对JDBC的封装,它让数据库底层操作变的透明。MyBatis的操作都是围绕一个sqlSessionFactory实例展开的。MyBatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。

页面发送请求给控制器,控制器调用业务层处理逻辑,逻辑层向持久层发送请求,持久层与数据库交互,后将结果返回给业务层,业务层将处理逻辑发送给控制器,控制器再调用视图展现数据。

Spring Boot

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

Spring Cloud

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

https://www.bilibili/video/BV18E411x7eT

服务与服务之间的解耦。很多公司在业务高速发展的时候,服务组件也会相应的不断增加。服务和服务之间有着复杂的相互调用关系,经常有服务A调用服务B,服务B调用服务C和服务D …,随着服务化组件的不断增多,服务之间的调用关系成指数级别的增长。这样最容易导致的情况就是牵一发而动全身,经常出现由于某个服务更新而没有通知到其它服务,导致上线后惨案频发。这时候就应该进行服务治理,将服务之间的直接依赖转化为服务对服务中心的依赖。Spring Cloud 核心组件Eureka就是解决这类问题。

Spring Cloud Alibaba

Spring Cloud Alibaba 是阿里巴巴提供的微服务开发一站式解决方案,是阿里巴巴开源中间件与 Spring Cloud 体系的融合。

Java分布式开发

分布式系统对于用户而言,他们面对的就是一个服务器,提供用户需要的服务而已,而实际上这些服务是通过背后的众多服务器组成的一个分布式系统。

例如淘宝,平时大家都会使用,它本身就是一个分布式系统,我们通过浏览器访问淘宝网站时,这个请求的背后就是一个庞大的分布式系统在为我们提供服务,整个系统中有的负责请求处理,有的负责存储,有的负责计算,最终他们相互协调把最后的结果返回并呈现给用户。

zookeeper、dubbo

大数据

随着IT行业的发展,系统运行的时间越来越长,搜集到的数据也越来越多,传统的数据库已经不能支撑全量数据的存储工作;另一方面,数据越来越多,单机的计算已经成为瓶颈。

在当前大数据环境下,海量数据,呈爆发式增长,数据类型复杂多样,因此,对数据的处理需要更强大的技术和手段,因此也衍生出了很多大数据处理框架。

Hadoop、Spark、Storm

其他

Maven

https://www.bilibili/video/BV1Te411W7N6

Git

https://www.bilibili/video/BV1Te411W7N6

docker


https://www.bilibili/video/BV1Ls411n7mx

学习路线

Java + 数据库

目前许多主流框架都是以java编写的,学好Java是进入后台开发的第一步,也是关键的一步。

数据库是后台的数据仓库,推荐学习MySQL,开源且免费,后续专业课也会使用。

Java WEB 前端

HTML+CSS+JavaScript,JQuery+Ajax,当前由于前后端分离的思想,页面大多由前端负责,但是基础的前端技术对理解HTTP请求或者学习爬虫等都是有好处的。

JavaEE + Web框架

JavaEE是在 JavaSE 的基础上构建的扩展应用框架,重要的内容有JDBC,Servlet,JSP等。Web框架建议学习Spring、Spring MVC、MyBatis,也可从Spring Boot学起。

学习资料和工具

视频

bilibili

https://www.bilibili/

尚硅谷

http://www.atguigu/

传智播客(黑马程序员)

http://www.itcast/

http://www.itheima/

网易云课堂

https://study.163/

书籍

Java

四大名著: Java编程思想、Java核心技术、Java语言程序设计与数据结构、Effective Java中文版

Java Web

学习建议

  • 保持对技术的热情

    兴趣是最好的老师,学习热爱的事物往往能事半功倍。

  • 面向搜索引擎编程

    遇到Bug先尝试自行解决,如果无法解决可通过Google或者百度查看网上有没有处理相同Bug的经验

  • 学会查阅官方文档

    官方文档是一项技术最权威、最全面的解读,而且很多官方文档写的很好,要学会通过官方文档学习新技术。

  • 博客和论坛

    分享自己的问题,学习,生活。例如:CSDN、博客园、简书、知乎

  • 用好GitHub

    GitHub上有许多有趣的项目和他人整理的学习资料,快去探索新世界吧!。

参考文章

spring aop 及实现方式

什么是前端、后端

更多推荐

服务外包技术培训——后端开发(Java)