目前市面上做软件开发的几大主流技术体系为(一般而言一类编程语言就代表了一种技术体系):
Java技术体系
.Net技术体系
Python技术体系
PHP技术体系
C/C++技术体系
Web前端(以JavaScript为代表的技术体系,包括Node.js);
基本上市面上主流做软件开发的都是这几种技术体系,当然还有其他比较小众的技术体系
比如Go语言、Object-C、Rust等等这些都是比较小众的,针对某些小的应用场景的,暂时并没有成为应用开发的主流体系。
我们知道,在软件开发中,就是两种软件架构:一种是B/S架构,一种是C/S架构
开发人员为了设计开发这两种类型架构的软件,需要选择其所需要的技术,对于不同技术体系的选择,便诞生了不同的岗位,整体上讲一般是前端工程师、后端工程师;
再细分下前端又分为web前端、客户端,B/S架构软件的前端叫做Web前端,C/S架构软件的前端一般叫做客户端
当然这种叫法面对不同的终端又会有不同,一般我们的终端有三种:移动端、Pad、PC端,这是面向用户的,我们的软件前端就是部署在这些终端上可以给用户看的。
这里对于前后端的描述比较多的原因是由于很多人分不清哪是前端,哪是后端,特别是初学者,我很理解你们对于一个小小的概念的不知具体所指而感受到的烦恼。
在两种软件架构中(B/S、C/S),后端就是其中的S(Server),两种架构的软件可以共用一个后端,后端一般就一个比较好理解,但是涉及到的后端技术就很多了,因为后端承受着用户的各种请求,对于高并发、高流量的处理,对于后端来说是非常重要的,一般大型网站都会运用去中心化的思想将一个后台拆成多个不同的部分,也即设计成分布式系统,要设计成分布式系统就需要对原始的集中式后台进行拆分,将不同的功能或者服务分别部署在不同的服务器后台上以应对高并发请求带来卡顿的用户体验,一般分布式系统的设计有以下几种方式:
RPC(远程过程调用):将不同的服务部署在不同的地方(所谓不同的地方就是部署再不同的服务器上,不将多个服务部署在同一服务器),通过RPC技术实现远程服务的调用,就像调用本地程序一样
MQ(消息队列):消息队列就是一个进程间通信的中间件,也是后台系统分层思想的一种体现,作用就是将信息通过中间传输,以降低服务器的压力
LoadBlance(负载均衡):也是在去中心化思想的指导下所做的将应用分层的一种技术,即通过在多个设备上部署相同的服务确保同一应用服务因为大量请求而崩溃导致整个系统崩溃
分库分表:这是一种在数据存储层所作的去中心化,即将一些用户经常需要操作的数据库表分开存储,以降低对同一个表的同时访问压力
CDN(内容分发网络):英文全称为Content Delivery Network,目的是为了加快用户后台的访问,这个网络的作用就是将应用服务完整的部署在CDN网络提供商的服务器上,以作缓存,当用户访问系统后台时会根据cdn网络自动寻址到离他最近的cdn网络提供商的服务器上,然后再访问后台应用(这里可能说的有点牵强,待我下次再整理好了会完善的)
现在的大型系统后台一般都是分布式设计的,运用了很多的分层/去中心化技术,当然这里所说得去中心化不是说某个独立的去中心化,而是将一个整体进行拆分的去中心化,拆分后的每个独立的模块需要相互配合才能发挥其整个系统功能的作用,去中心化这个词本身有几种理解,刚接触这个词时那面会有点模糊,需要去多多理解
还有一些细分领域应用:图像处理、人脸识别、机器学习
这些细分领域应用指的是针对某一个系统种的具体模块需要用到,他们往往是一个系统的核心,在这些细分领域从事工作,需要比较好的数据结构与算法基础。
以上就是关于当前的几大技术体系的粗略介绍,后期需要整理的,这只是基本的思路记录下
原文地址:https://www.cnblogs.com/liugrwit/p/11828713.html