后端开发需要学哪些技术?

必须 AI 第一位

如果在去年谈这个问题,我都要想分成几种吧 Java 系、Python 系、Go系、还有我不熟的.Net 系的(这里不会出现.Net 相关的任何知识,如果需要请看其它文章),可能要谈很久。但是现在不同了。所有的人必须第一个要学的,只有一个选择:AI(典型就是 ChatGPT/GPT4, Bard, Claude)

谈一下这个 AI 都能干嘛吧,AI 可以给你足够的信息,告诉你整个后端的知识体系是什么样的!

比如你可以试一下下面的这些 Prompts

请以一个资深 Java 后端开发工程师的身份,介绍一下 Java 后端开发的知识体系。
请以一个资深 Python 后端开发工程师的身份,介绍一下 Python 后端开发的知识体系。
请以一个资深 Go 后端开发工程师的身份,介绍一下 Go 后端开发的知识体系。

如果你会了这个,我想后端开发要学习什么,自己就会了。

所以,你要不要考虑一下,转行学习 AI 呢?

无论如何,我也继续谈一下我对后端开发的理解吧, 它是一个特别成体系的东西,但是并不少,或者说还是有点儿小复杂的。

基本的网络知识

对于所有的开发来讲,无论是前端还是后端,我都建议最优先掌握的是网络知识,比如你要清楚 TCP、UDP、HTTP、HTTPS、HTTP2 这些协议的内容,它们之间可能的简单区别。

我曾经在面试问过 TCP 与 HTTP 有什么区别,在我看来这是一个极其简单的东西,二者处于七层网络的不同层,HTTP 依赖于 TCP 的实现;同时 TCP 本身是面向连接的,HTTP 是无状态的。

可惜,有一部分人,尤其是培训班出来的人都回答不出来这个问题。可以说,AI 出现后,对于通过培训班再进行 IT 行业,已经不是一个好的手段了。

我建议大家考虑一下,不要做 IT,而是去做 AI。只有 AI 才能帮助一个新人重新去适应这个 IT 行业。如果不能使用 AI、了解 AI,这个就没有什么意义了。

后端开发需要学哪些技术?_第1张图片

数据库知识

在所有的后端知识里,除了基本的网络协议,只有数据库知识是相对稳定的,变化最慢的了。所以在数据库这块,你只需要熟悉一两种数据库,然后努力研究它的优化、稳定性、性能相关的技术就好了。

这里我优先推荐 Postgresql 与 MySQL 这两种,至于你是不是要去研究一个商业版本的数据库尤其是 Oracle,这个要看你的位置了。

不过我倒是建议你再看看

  • 图数据库,像 Neo4J ,或者 DGraph。
  • 文档型的数据库 MongoDB
  • 最简单的数据库 Redis

哦,对了,大模型起来后,尤其是 LangChain 的发展,肯定是要再了解一下矢量数据库 Faiss 一类的,还是要看看的。

服务器知识

好多年以前服务器知识可能只有一个 Apache,但是现在呢,可能变成了另一个 Nginx。做为Web前端服务器,用的最多的应该是 Nginx 了,其它别的不好说。但是你要用 Python、Java、或者 Go,还要去了解一下自己的语言对应的服务器如 Tomcat、Gunicorn一类的。

要了解这些服务器的基本配置信息还是很有用的。尤其是关于各种数据的大小。我在很久以前曾经碰到过一个问题:上传数据超过 20M 的时候会出现问题。尽管我们的数据只有极其偶然的状态下才会出现,但是碰到了终究要解决嘛。结果查了很久,发现我们的统一管理的集团配置中有一个 Apache 的配置里有限制 20M 的 Post 数据的限制,这个配置都不知道被那个规则指定的,结果只有我倒霉,碰到了。当时真的是认真的一层层的去排查,那个地方有问题。最后通过查看 Apache 的配置手册才发现,Post 在这儿有设定的。当然了,Nginx 一类的也是有的。

当时真的是初入职场,觉得一切都是可以解决的。后来发现,问题是可以解决的,但是解决的知识要相当全面才有可能解决各种奇怪的问题。

你可能看到的是自己程序的 Bug、数据库的配置问题、服务器的配置问题、硬件网络某个接口不稳定、或者那个新人直接把网线拨了,然后又给你插上了!

某一门开发语言及框架

在很久以前学一门语言的选择很简单啊,Java 算一门,Python 算半门,可能也不需要学别的。如果你精力充沛,还可以学另一个杂活 HTML/CSS/JavaScript。现在吧,Java、Python、Go、HTML/CSS/JavaScript 都要会一些。时代不同了,要求变高了,但是工钱还没涨!~~!

学语言又要求是这样的:

  • 基本语法、数据结构、关键字、设计模式
  • 核心库
  • 虚拟机器
  • 框架(Web、ORM、SSO/OAuth)

安全相关的知识

这可能对于一般的后端开发人员是一个极致的要求了。但是又已经是必须要考虑的一个问题了。

后端开发安全的目的是确保数据和系统不被恶意利用。

  • 首先,要防止注入攻击,如 SQL 注入,确保不直接使用用户输入拼接查询。在 Java 中,可以使用 PreparedStatement;Python 的 ORM 或参数化查询也是一个好的选择。
  • 跨站请求伪造(CSRF) 和 跨站脚本攻击(XSS) 是 Web 应用的常见威胁。对于 CSRF,使用特定令牌或内置框架功能进行防护,如 Java 的 Spring Security 或 Python 的 Django。对于 XSS,确保输出到用户的内容经过适当的转义或清理。
  • 身份验证和授权是另一个关键领域,这块经常会被伪造身份的人搞出事儿来。必须确保只有授权的用户能够访问敏感资源。同时,对敏感数据进行加密,无论是在传输中还是存储时,都是至关重要的。
  • 应用程序的活动应当进行适当的日志和监控,以便在出现问题时能迅速响应。同时,避免在错误消息中透露过多信息。我记得有谁家的日记里有信用卡与 CVC 验证码,简直是疯了。
  • 最后,还有个累活,定期检查和更新依赖库,确保没有已知的安全漏洞,以及采用安全的服务器和数据库配置策略。你不知道一个 Bug 会造成什么,而且还有组织会更新 Bug 的攻击手段。说的就是你:Struts,从来没见过这么恶劣的操作,自己主动公开如何攻击自己的 特定版本的漏洞!

简而言之,后端安全是系统的最核心部分,而你的一小行代码,可以就把整个公司放倒了,你可能要做的只有删库跑路了。

后端开发需要学哪些技术?_第2张图片

你可能感兴趣的:(eclipse,java,tomcat,spring,maven,python,django)