制造业
后端开发
后端开发


简介

后端开发 后端开发一般也叫做后台,其负责的是网站后台逻辑的设计和实现,还有用户及网站的数据的保存和读取。比如一般网站都是有用户注册和登录功能的,用户的注册信息通过前端页面发送给后端,后端将其保存在数据库中,用户登录网站的时候,后端需要通过用户输入的用户名和密码是否与数据库中的一致来判断用户是否有权限登录。

评判标准

后端主要负责业务逻辑的实现,前端主要负责页面展示,但是要在这些页面上实现你的业务逻辑,主要就是靠后端,也正因为后端的重要性,绝大部分2年~3年工作经验并且学历技术相差无几的情况下薪资往往后端更高。当然除了开发产品功能之外,还负责后台、数据库的搭建,你的所有用户、交易等数据信息都会在后台和数据库看到。

后端使用的编程语言也有多种,如:C, C++, Go, Java, Python, PHP, C# 和 JavaScript等。目前主流的是Java和PHP,根据不同的需求选择不同的开发语言。

开发语言

Python

概述

  • 一种开源、跨平台、面向对象、动态类型、解释型的计算机程序设计语言
  • 得益于 Python 在机器学习领域的青睐,使用 Python 开发关于此领域的项目时可更加快速地将机器学习与网页两部分结合
  • 开发快速、语言结构简洁:可很好地作为微服务支撑整套系统、也可快速进行原型开发(Prototype)
  • 类型弱强制,运行速度相较静态语言(类型强强制)会慢一些
  • 一定记得区分好本地环境中的 Python2.x 与 Python3.x,推荐使用 Anacondavenv
  • Python2 版本将于 2020 年被官方正式放弃支持,很多第三方库也陆续宣布放弃支持 Python2。如果你是新手,建议直接学习 Python3;如果你在做 Python2 项目,建议升级为 Python3。
  • Python3 官方文档简体中文版已上线,不过还没翻译完毕,有兴趣的你可以参与进来: Python 官方文档简中翻译

优点

  • 语法清晰简洁,美观易读
  • 开发快速易维护,易移植、易扩展
  • 社区庞大,第三方库众多,用途广泛
  • Python 可以用于日常工作,提升工作效率。可谓“办公神器”
  • 比起 Perl 执行速度更快

缺点

  • 相对编译型语言来说速度慢
  • 无法有效利用多线程
  • 代码维护困难
  • 第三方库太多,拿来直接用会有很多问题

常用库或包

  • random: 生成(伪)随机数等
  • time: 时间计算相关
  • turtle: 海龟画图
  • PyQt: 图形界面(GUI)编程
  • NumPy: 矩阵运算和处理
  • matplotlib: 数据可视化
  • Django: 使用最广泛的Python Web后端开发框架,重量级,内置ORM框架
  • Flask: 轻量级后端框架
  • Tornado: 轻量级后端框架,支持异步非阻塞开发
  • PyMySQL: Python连接MySQL数据可以
  • SQLAlchemy: ORM框架

Go

概述

  • 编译、运行速度非常快
  • 代码库及生成的二进制可执行文件很小
  • 环境安装简单

优点

  • 静态强类型语言,开发快速(代码编辑器会自动补全)
  • 协程(goroutine)的概念贯穿语言设计,开发高并发项目快速、可靠
  • 语言格式相对较为简洁
  • 跨平台, 二进制部署, 不存在依赖问题
  • 支持交叉编译

缺点

  • 非面向对象语言, 对新手不够友好
  • 由于是 Google 开发,且官网 golang.org 在国内访问受限,对安装、学习与开发有较大影响
  • 不支持泛型
  • 错误处理比较繁琐

C

概述

  • 运行速度非常快
  • 几乎所有系统内核使用的核心语言

优点

  • 静态强类型语言
  • 性能仅次于汇编
  • 跨平台

缺点

  • 仅支持面向过程编程
  • 不支持垃圾回收,有可能存在内存泄露问题
  • 标准不统一
  • 对于不同平台有时需要修改,否则容易出现兼容性问题

C++

概述

  • 运行速度非常快
  • 功能异常强大,几乎无所不能
  • 编译非常慢

优点

  • 静态强类型语言
  • 性能仅次于C/汇编
  • 跨平台
  • 完全兼容C语言

缺点

  • 支持面向对象,及面向过程编程
  • 语法复杂,不支持垃圾回收,有可能存在内存泄露问题
  • 标准不统一

Java

概述

  • 语言严谨、维护方便、拥有足够庞大的社区。
  • 找工作方面需要专科以上才能在一二线城市生存
  • 常用开发框架:Spring Boot

优点

  • 适合中型、大型项目
  • 一处编译,处处运行
  • 强类型、预编译、异常必须拦截等:用其编写的项目运行稳定可靠、性能强劲且不容易出现编写错误(尤其是JIT的出现之后差距更大了)
  • 提高复用度:解耦,单一职责的原则
  • 高并发处理:高并发是指响应时间,吞吐量,QPS(每秒响应请求数),在中国这个人口基数大的背景下,高并发一直是互联网企业的难题,虽然有众多的解决方案,但是还是难以完全解决因高并发带来的服务宕机, 常用互联网企业解决方案 Dubbo(阿里) Springcloud,Springcloud Alibaba

缺点

  • 开发复杂:效率相对较低
  • 成本高:项目维护成本、开发人员费用均相对较高
  • 学习成本高:从基础到开发需要花费大量时间学习

PHP

概述

  • 前期开发快速:得益于语言特性,PHP 所作修改支持实时部署,需要预览时修改内容刷新即可
  • 现有框架充足灵活:WordPress 是一款非常成熟的 CMS(Content Management System,内容管理系统);Laravel 是一款社区与官方周边完整、生态优良的 REST 开发框架
  • 建议作为第二 Web 开发语言:前期快速开发项目 Demo,后期使用 Java 替补;阿里巴巴、京东等各类大型企业均是这样的做法
  • 你现在所看到的页面即是使用了 PHP 作为的后端哦~

优点

  • 灵活、上手快
  • 易修改、发布快捷
  • 环境好部署

缺点

  • 由于其为动态语言的原因,编写时容易出错,且也正因为此,PHP 在处理边界数据时可能会出现安全隐患
  • 执行效率不高
  • 缺乏全局缓存

Nodejs

概述

  • 使用Javascript作为编程语言。
  • 在迅捷开发方面有着非常强劲的竞争力,广泛用于web应用后端以应对超快速的更新需求。
  • 常用开发框架:express,nuxt等。

优点

  • 较低的学习成本
  • 拥有JS脚本语言的灵活性
  • 弱类型意味着对千变万化的网络数据有更好的支持
  • 超级庞大的生态系统,你可以在npm(Node package manager)上获取几乎任何想要的JS库,包(package)的组织方案易于部署和使用持续集成
  • 采用事件驱动、异步编程,为网络服务而设计
  • 非阻塞模式的IO处理给Node.js带来在相对低系统资源耗用下的高性能与出众的负载能力

缺点

  • 单进程,单线程,只支持单核CPU(需要另外的代码解决)
  • 不适用CPU使用率较重、IO使用率较轻的应用

ASP.NET

  • 概述:目前市场处于下降状态,不建议新手学习

优点

  • 跨语言
  • 开发快
  • Clr 垃圾回收机制,提高内存利用率,维护成本低
  • 架构降低了程序间的耦合性,分层,目标明确
  • 支持并行开发,可扩展性好
  • 强类型 View 实现,更安全、更可靠、更高效
  • 有利于组件的重用
  • 丰富的控件支
  • 更好的支持单元测试

缺点

  • 仅仅只支持 Windows 平台
  • 入门容易,提升很难
  • 封装太强,不开源
  • 仅仅只支持 IIS 托管,存在性能天花板

ASP.NET Core

  • 概述:用于生成基于云且连接 Internet 的新式应用程序,实现了 C# 运行在 Linux、Windows、MacOS 系统上;Web 后端领域现以上述几种语言为主

优点

  • 生成 Web UI 和 Web API 的统一场景
  • 针对可测试性进行构建
  • Razor Pages 可以使基于页面的编码方式更简单高效
  • Blazor 允许你在浏览器中使用 C# 和 JavaScript。 共享全部使用 .NET 编写的服务器端和客户端应用逻辑
  • 能够在 Windows、macOS 和 Linux 上进行开发和运行
  • 开放源代码和以社区为中心
  • 集成新式客户端框架和开发工作流
  • 支持使用 gRPC 托管远程过程调用 (RPC)
  • 基于环境的云就绪配置系统
  • 内置依赖项注入
  • 轻型的高性能模块化 HTTP 请求管道
  • 能够托管于:Kestrel,IIS,HTTP.sys,Nginx,Apache,Docker
  • 并行版本控制
  • 简化新式 Web 开发的工具

缺点

  • 上手极为容易,快速做出功能丰富的网站,然后觉得自己很厉害了,不思进取

其他

  • Web后端的语言不仅限于上述的几种语言;相反地,Web后端语言很多很多,诸如:
  • 近几年关注度飙升的 JavaScript,原是作为浏览器脚本语言被开发出来,但由于 Chrome V8 引擎的实现使得其也可以作为服务器软件运行(即Nodejs)
  • 较为古老但语法非常简洁的 Ruby,一度被作为大型网站的开发语言
  • 感兴趣的读者可以自行搜索其他语言进行了解

工作流程

软件开发往往不是个人的单打独斗,在一个组织中,程序员想要出色地完成任务不可避免地要和人打交道。这是因为,程序员实现的需求是由人提出来的,脱离这一点程序员所做的工作将毫无意义(对组织来说)。

以下是一个程序员工作的标准工作流程:

1)清楚任务 ⇒ 了解需求(需要和上级主管、同事,其他部门成员共同协商及确定) 这一步至关重要,如果完成需求的程序员本人都不清楚需要实现的是什么以及怎样实现,那之后做的工作很有可能产生偏差和严重的错误。

2) 在了解需求的情况下,分析完成需求需要的环境,以及手头拥有的资源,着手研究解决方案。 需求可能是在原来的某个基础上新加的,那你就需要了解原有的一切。比如原来代码是怎么跑起来的,用了哪些技术手段、工具及架构等。需求也可能是崭新的,那你就要自己确定用什么方案。

3)验证方案可行性 大部分情况下公司做的项目都是有可行性报告的,后端程序员需要关注的可行性是代码逻辑方面,根据手机壳改变背景颜色这种需求就比较奇葩了。

4)实施方案 这一步就要开始做详细的任务分解和时间规划了。

5)代码开发过程中及时响应和反馈 这一点同样至关重要,因为需求往往不是说从开始定下来就不会变化了,而是随着时间的迁移会变化的(这个需求可能源于某人心血来潮头脑发热,也可能因为出现重大变故提需求的人离职了!)。所以一旦需求有任何变化,都要停下来调整和变通。

程序员应该是具有创造力和高效率的人,很不幸的是为公司做事情(尤其是大公司)会极大地削弱你的个人生产率,因为你需要经常跟别人探讨实施方案,弄清楚需求,不断沟通和反馈!这就是产品经理

组织结构

部门分工

人员分工

经营设计

需求分析

目标界定

总体结构设计

详细结构设计

参数设计

设计实施

设计和规划

位置与环境

投资与评估

规模与功能

风格与形式

成本

税费

金融成本

原材料成本

房租成本

能耗成本

人工成本

设备折旧

收益管理

消费曲线

时间分布

空间分布

目标群体

容量控制

风险控制

行业

国内市场

产量

消费量

国际市场

产量

消费量

主要公司

标准

这里存放条目相关的国家标准

文档

后端软件开发需要发布的文档:

  • 需求概要设计文档

需求概要说明书需要阐述需求背景、需求用户、解决的问题、后端数据流图、数据库表逻辑、升级说明

  • 需求详细设计文档

需要求详细设计需要阐述将后端数据流图、数据库表逻辑进行详细说明,结合UML时序图绘制出模块之间的业务逻辑,设计出数据库表字段逻辑

  • 接口设计说明书

接口设计说明书需要将后端提供的API接口制作成表格,java可以通过swagger工具导出,对接口名称、入参、出参、错误码进行详细说明。接口设计说明书的目的是为了让使用者更清晰的对接API,通过错误码做出不同测策略

编辑成员
23 人

風, hui, unicorn, 我的天呐!, Phantomlsh, PizzaU, Issac, rm0l, 长安成, 强力发明狂, 神隐, 维克多·吕, qianxi, Louis Studio, fish, quanee, Sans, imgg, 哄哄, SugarCane, 多米尼克领主的致意, 缪, 木又

评论(4)

你需要登录发表评论。
oLubo1cTKqQe2KSSYT_2rrH_ZIE4 2020-09-17 23:14:14
人生苦短,我选Golang。
Boz 2020-09-16 16:41:04
02年 18年开始学习 JAVA 到 Golang 冲冲冲 我可能就是唯一辣个高中没毕业的哈哈哈哈哈嗝
t298 2020-06-25 14:23:55
00后的我们,冲
oLubo1cSBchUMekyR6-jyQNIcnOk 2019-10-13 23:01:17
后端开发往往就是这么朴实无华,致00后的我们
oLubo1cSBchUMekyR6-jyQNIcnOk 2019-10-13 23:01:17
后端开发往往就是这么朴实无华,致00后的我们
1
回形针手册-icons