‘壹’ 后端开发都需要那些技术
后端主要是让服务器、应用、数据库能够彼此交互,需要考虑如何实现功能、数据的存取、平台的稳定性与性能等。常用的脚本语言有php、 java 、 python、C、C++等,以java为例主要用到的技术包括但不限于Struts、spring、springmvc 、Hibernate、Http协议、Servlet、Tomcat服务器等
第一,Servlet技术。Servlet技术是Java后端的重要技术之一,作为Java Web开发的核心组件,Servlet承担了Web MVC结构中的核心作用(功能导航)。传统的Model2结构(Servlet+JavaBean+JSP)虽然在目前已经很少使用了,但是Web开发的基本结构依然没有改变。Servlet技术的应用涉及到Web容器、会话(HttpSession)、安全、同步、Web应用部署等相关内容。
第二,Java操作数据库。后端开发免不了与数据库打交道,所以掌握Java的数据库操作是一个基本要求。Java操作数据库涉及到的内容有JDBC、JNDI、RMI、DAO等内容,其中使用RMI+JDBC是构建java数据库开发的一个常见的解决方案,而JNDI则是对各种资源的定义。
第三,Spring框架。Spring+SpringMVC+MyBatis是目前一个比较常见的后端开发方案,Spring的原理就是构建了一个“业务组件容器”,SpringMVC则是Web MVC的一个具体实现框架,而MyBatis则是一个基于DAO的实现框架。从性能的角度来说,Spring是EJB的轻量级解决方案,得到了广大Java程序员的欢迎。如果有Servlet以及数据库操作的基础,那么学习这几个框架的使用是一件非常轻松的过程。虽然基于Spring的编程比较方便,但是Spring也有缺点,比如配置文件过于繁琐。
第四,结合hadoop构建Java的分布式开发。Java的分布式开发是提高Java后端处理能力的重要内容,RMI是Java分布式开发比较常见的解决方案,学习起来也比较简单
‘贰’ 后端都要学习什么
1、Java基础语法:Java语法是就相当于英文中的26个字母,你需要将每个关键词都学得很透彻,对于初学者来说,最困难的概念是基本结构,例如循环和分支。这部分没有过多的技巧,多去做一些相关的练习题,熟能生巧。
2、面向对象编程(OOP):OOP严格意义上来说有两个模块,一是面向对象的思维,二是面向对象的编程语法。面向对象的思维这个理解起来有点难,因为我们在学Java的基础语法时,习惯了用面向过程的思维去编程,转变为面向对象时头脑中会很混乱。
即使老师举很多实例去解释 依旧会产生很多困惑,碰到这种情况不要着急,面向对象的思维需要长期去培养,同基础语法一样,思维也需要大量的实践去培养。
面向对象涉及到的语法主要有:类、继承、接口、多态、封装,这是Java编程中另一个重要的组成部分,可以说在工作中,无论用哪种框架,哪种编辑器,面向对象的编程都是重中之重。这个模块也是在面试中的重点,所以一定要掌握扎实。
3、集合框架:Java为不同的集合提供了一个集合框架。集合基于数据结构,比如常见的:列表、数组、集合、哈希图等等。因此,在研究集合时,最好了解一点数据结构的相关知识。
学习集合的主要困难在于他们之间的区别,以及何时用到适合的集合类型。同样的,也是必须实践出真知。
4、异常处理:异常是在执行程序时可能发生的异常情况。很多人在学习的过程中理解不了异常的作用,在初学的时候也有相同的疑问,编辑器已经有报错的功能了,为什么还要自己去编写一段处理异常的代码。后来随着项目使用的异常处理越来越多,对异常处理也会有深刻的了解。
举个简单的例子:当你下载文件时,如出现什么错误,用户希望下载器能告诉他出现了什么问题,比如硬盘不足等等,当用户提供了足够的硬盘空间以后,下载继续自动进行。而不是说空间一不足,立刻下载器就崩溃,这就是异常技术。
5、输入/输出流:Java使用流来执行输入和输出的操作。在项目中,需要经常进行读写操作。对于初学者来说,这也是一个比较困难的知识点,而且在Java的学习过程中,这一点的重要性并不是很突出,导致很多人在工作后碰到文件的读写操作就干瞪眼了。
6、Java多线程/并发:多线程和并发操作是Java高级编程的核心主题。这部分几乎所有的同学都理解不了,不过没有关系,这部分对于初级开发者来说不是很重要。
‘叁’ 后端工程师需要掌握哪些知识
1 后端开发语言
包括但不限于(php, python, java, scala, go, ruby) 之一。 能够使用一门或者数门语言构造大型应用。
2 运维
了解 (ansible, salt, puppet)等自动化运维技术, 了解docker, 熟练掌握shell脚本处理线上问题
3 安全
知道各种安全攻击方式(xss, csrf, sql注入) 代码实现能够规避常见的安全漏洞, 处理各种网络攻击事件
4 数据库
知道常见的数据库的优化以及运维,能够分析sql并且调优使之满足性能
5 网络编程
了解linux的网络模型epoll, 熟练掌握http, tcp/ip协议,并且能够通过抓包方式debug。 熟练掌握linux, 能够在高兵法场景下通过优化内核解决问题。
6 大数据
了解 (hadoop/storn/spark)技术栈, 能够使用大数据技术栈解决常见的大数据问题
7 算法和数据结构
知道常规的算法和数据结构,通过分析代码能了解架构的计算复杂度和性能,并针对性做出优化
8 机器学习算法
知道常见的机器学习算法,能够使用机器学习和深度学习解决一些人工智能问题,比如聊天机器人, 反spam, 机器推荐等
9 搜索引擎
掌握elasticsearch solr等开源搜索引擎,能够搭建搜索引擎实现各种搜索以及排序任务