【非常小白的后端学习笔记一】后端开发的发展过程及主要技术点

本文概述了后端开发从初始阶段的服务器、数据库和编程语言,到进阶的性能优化、缓存、异步处理,再到高级的微服务架构、CI/CD和安全性的发展历程。作者关注技术选择的背景和学习路径,以及当前的趋势和未来发展方向。
摘要由CSDN通过智能技术生成

以下内容均来自和gpt的对话,感恩gpt老师的“耐心”解答,让我这辈子第一次成为了勇于提问的学生,感恩~

由于我对后端的学习非常浮于表面,目前想选一个具体的知识点去钻研,之前面试时面试官给了我一些范围,包括但不限于:框架对比、优化查询速度、多线程分布式、高并发等。

由于我整个知识体系没有建立起来,无法选择接下来的学习内容,我决定先了解后端的发展过程,了解它最开始它包括哪些技术,因为遇到了什么问题,所以增加了什么环节,涉及到了哪些技术。并且看看自己目前处于什么阶段,下一步最应该学习哪一部分的技术,所以有了这一次和gpt的问答。

内容可能非常小白,但也许有点用的吧,也许~

下面是我本次对话的知识点总结,如有错误,欢迎批评指正。

一、初始:基础的后端开发

1.1 服务器、数据库和编程语言

  • 最初,后端开发主要涉及服务器(如Apache、Nginx)、数据库(如MySQL、PostgreSQL)和一种服务器端编程语言(如Java、Python、Ruby)。
  • 这一阶段的核心是理解如何处理HTTP请求,执行业务逻辑,与数据库交互(CRUD操作:创建、读取、更新、删除),并返回响应。

1.2 框架的出现

  • 为了简化开发过程,出现了许多框架,如Spring(Java)、Django(Python)、Rails(Ruby)。
  • 框架提供了标准化的方式来构建和部署网站和应用程序,包括路由、模板、ORM(对象关系映射)等工具。

1.3 提问环节

Q1.3.1:为什么会出现这么多种框架、服务器、编程语言?

  • 不同的编程语言有各自的特点和优势,适用于不同类型的项目。例如,Java适用于大型企业级应用,Python适合快速开发和数据科学。
  • 不同的框架针对不同的编程语言和设计哲学。例如,Spring适合Java生态,Django适合Python开发者。
  • 服务器软件如Apache、Nginx等各有所长,比如Nginx在处理静态内容和高并发方面表现更佳。

二、进阶阶段:性能和优化

2.1 缓存和数据库优化

  • 随着应用规模的扩大,性能问题开始显现。这时,引入了缓存系统(如Memcached、Redis)来提高数据检索速度,减少数据库负担。
  • 数据库的查询优化、索引的使用也成为关键。

2.2 异步处理和多线程

  • 为了提高应用的响应速度和处理能力,开始使用异步编程和多线程技术。

2.3 提问环节

Q2.3.1:什么是缓存系统?

临时存储频繁访问的数据,以便快速访问。它通常存储在内存中,访问速度比磁盘存储(如数据库)快得多。能减少对数据库或其他主要数据源的访问次数,从而提高数据检索的速度和减少延迟。

Q2.3.2:数据库的查询优化包括哪些?

  • 查询优化通常包括合理设计表结构、使用有效的索引、编写高效的SQL查询语句等。
  • 索引是优化数据库查询的一个重要方面,它能显著加快数据检索速度。其他优化方法包括避免全表扫描、优化查询逻辑、使用查询缓存等。

Q2.3.3:避免全表扫描、优化查询逻辑、适用缓存等技术分别是什么,是程序员手动配置吗?

  • 全表扫描 :查询时检查表中的每一行,通常发生在没有使用有效索引的情况下。全表扫描效率低下,应尽量避免。
  • 优化查询逻辑:优化查询逻辑包括使用高效的SQL查询,避免不必要的复杂操作,如过多的嵌套查询、大量的数据联合等。查询逻辑优化需要程序员基于具体的业务场景手动进行
  • 使用查询缓存:查询缓存是指将常见查询的结果存储起来,当相同的查询再次发生时直接从缓存中获取结果。某些数据库管理系统提供自动查询缓存,但在应用层也可以手动实现,比如使用Redis。

Q2.3.4:异步编程和多线程技术的区别和联系和联系是什么?在后端的应用举例

①异步编程
总结:并没有同时执行多个任务,只是避免长期处于堵塞态,且可在单线程内实现。
异步编程允许程序在等待一个操作完成(如I/O操作)时继续执行其他任务。它主要用于提高应用的响应性和效率,避免程序在执行长时间操作时处于阻塞状态。异步编程可以在单线程内实现,比如JavaScript的Node.js环境。
应用举例:一个Web服务器在处理某个需要长时间数据库查询的请求时,可以继续响应其他用户的请求,而不是等待查询完成。

②多线程技术
总结:同时执行多个任务,会涉及线程安全和数据同步的问题
多线程技术允许程序同时执行多个任务,每个任务在不同的线程中运行。它主要用于提高程序的处理能力,特别是在多核CPU环境下,可以显著提高程序的运行效率。在多线程环境中,各个线程可以同时执行,但这也带来了线程安全和数据同步的挑战。
应用举例:一个在线购物网站的后端在高流量期间(如促销活动)使用多线程来同时处理成千上万的用户订单请求。

三、高级阶段:扩展性和可维护性

3.1 微服务架构

  • 随着应用变得更加复杂,单体应用开始显得笨重,难以维护和扩展。这时,微服务架构应运而生,它将大型应用拆分为小的、独立的服务。
  • 技术如Docker和Kubernetes被用于容器化和微服务的管理。

3.2 持续集成和持续部署(CI/CD)

  • 为了提高开发效率和代码质量,引入了自动化的测试和部署流程,即CI/CD。
  • 工具如Jenkins、GitLab CI/CD在这个阶段发挥重要作用。

3.3 提问环节

Q3.3.1:微服务架构怎么拆分应用的,拆分后哪些属于后端需要掌握的技术

①拆分应用

在微服务架构中,大型应用被拆分成小的、独立的服务,每个服务负责应用的一个特定功能。每个服务可以独立部署、升级和扩展,通常围绕业务能力组织。

②后端需要掌握的技术

容器化技术(如Docker)用于封装服务及其环境。
Kubernetes等容器编排工具用于管理和自动化容器的部署。
API网关、服务发现和负载均衡等技术用于服务间的通信和管理。

Q3.3.2:架构和框架有什么区别和共同点?有了spring框架后,为什么还需要微服务架构?

简单来说,架构对整体的划分,决定了有哪些模块,模块之间按如何交互,框架才是具体每个模块内部的设计规范。下面是gpt老师的答案:

①架构

抽象版答案:架构是一种高层次的计划,它定义了系统的整体结构和行为。架构决定了系统的组件如何交互,包括数据流、控制流和模块的组织方式。

打比方:想象你是一个城市规划师,你需要决定城市中的建筑如何分布,道路如何规划,不同区域如何功能划分(比如商业区、住宅区、工业区等)。这个过程就像软件的“架构”过程。你决定软件的整体结构和组件如何分布和交互。

比如在微服务架构中,你决定将一个大型应用拆分为许多小的、服务化的组件。

②框架

抽象版答案:框架是一种特定的软件开发环境,为应用程序的开发提供了基础结构和必要的支持。框架通常实现了某种架构模式,提供了代码库和工具集,以规范化开发过程,减少重复工作。
打比方:现在,想象你是一名建筑师,需要设计一栋具体的建筑。你会使用一些预先定义的设计模式(比如高层建筑、别墅、公寓等),这些设计模式就像是建筑的“框架”。在软件中,框架提供了一种具体的方式来构建应用的某个部分。

比如Spring框架,它提供了构建Web应用、访问数据库等一系列预定义的方法和工具。

③Spring框架与微服务架构的区别与联系

Spring框架:像建筑师的工具箱,提供了构建应用的具体工具和组件。使用Spring框架,你可以构建应用的不同部分,如数据库访问、安全控制、Web服务等。但Spring框架本身并不告诉你应用的整体结构应该是什么样的。

微服务架构:它更像是城市规划的蓝图,告诉你应该如何组织和部署你的应用。在微服务架构中,你将应用分解为一系列小的、相互独立的服务。每个服务可以单独开发、部署和扩展,它们通过网络通信协同工作。

在实际的软件开发中,你需要架构来指导整个应用的结构设计,同时需要框架来实现应用的具体功能。Spring框架可以用于实现微服务架构中的单个服务,但微服务架构本身提供了更高层次的组织和部署指导。

Q3.3.3 CI/CD就是简单的功能测试吗?为什么提高开发效率和代码质量?

①持续集成(CI)

抽象版答案:指自动化地将代码变更合并到主分支(在下面有解释)的过程。它通常包括自动编译、测试和构建应用。

打比方:想象你和你的朋友们在同一个大型的乐高项目上合作。你们每个人负责构建项目的不同部分。当你完成你部分的构建时,你需要把你的乐高部分添加到整个项目中去。但你也需要确保,加入你的部分后,整个乐高项目仍然能够稳固地站立,没有被破坏。在软件开发中,CI就像是这个过程。开发人员频繁地将代码更改合并到主项目中(这个主项目就像是“主分支”),同时确保这些更改没有破坏任何东西。

②持续部署(CD)

抽象版答案:是指自动化地将变更部署到生产环境的过程。

打比方:接下来,想象一旦整个乐高项目完成,你需要将它展示给大家。在软件开发中,CD指的是自动化地将软件发布到可以被用户使用的地方,比如将网站更新到服务器上。

③提高开发效率和代码质量:
通过自动化测试和部署,CI/CD减少了人为错误,确保了代码的质量和稳定性。
它允许开发团队更快地响应变更,加快产品的迭代速度。

④补充
CI/CD并不是像Git这样的代码管理工具。它更像是一个流程或者说是一套自动化的步骤,用来帮助团队更有效率地开发软件,并确保软件的质量。它经常使用一些工具(如Jenkins、Travis CI等)来自动化执行这些步骤。

四、当前趋势和未来发展

4.1 安全性和认证

  • Web安全成为了重点,涉及到加密、OAuth、JWT等技术。
  • Spring Security等框架提供了强大的安全功能。

4.2 云服务和无服务器架构

  • 云计算的兴起使得无服务器(Serverless)架构和云服务(如AWS、Azure、Google Cloud)变得越来越受欢迎。
  • 它们提供了弹性、可扩展的计算资源,以及服务如数据库、消息队列、存储等。

4.3 响应式编程

  • 随着实时数据处理和高并发的需求增加,响应式编程变得重要。
  • Spring WebFlux等技术支持响应式编程模型。
  • 30
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值