当前位置: 首页 > article >正文

后端开发概念

1. 后端开发概念解析

1.1. 什么是服务器,后端服务

1.1.1. 服务器

服务器是一种提供服务的计算机系统,它可以接收、处理和响应来自其他计算机系统(客户端)的请求。服务器主要用于存储、处理和传输数据,以便客户端可以通过网络访问这些数据或服务。服务器可以是硬件设备,也可以是运行在硬件上的软件。

硬件角度来看,服务器以机器的形式存在各个机房类似我们的PC电脑,实际是一个硬件设备。

软件角度来看,服务器是运行在硬件设备上的软件,我们通过代码写后端服务,接收请求,处理逻辑:

  1. nginx应用服务器
  2. 类似Flask的程序逻辑服务器

1.1.2. 后端服务

在计算机科学中,后端服务通常是指应用程序的后端部分,负责处理业务逻辑、与数据库交互、执行算法等。后端服务通常运行在服务器上,提供数据和功能给客户端。它可以通过不同的协议(例如,HTTP、WebSocket)与前端或其他服务通信。

关于后端服务的一些关键概念:

  1. 业务逻辑: 后端服务包含应用程序的业务逻辑,负责处理用户请求、执行特定的功能和操作。
  2. 数据库交互: 后端服务通常需要与数据库进行交互,包括读取和写入数据,以及执行数据库查询和更新操作。
  3. API(应用程序接口): 后端服务通过API与前端或其他服务通信。API定义了可用于访问后端功能和数据的协议和终点。
  4. 安全性: 后端服务通常需要实施安全措施,以确保数据的机密性和完整性。这可能包括身份验证、授权、数据加密等。
  5. 性能和可伸缩性: 后端服务需要具备足够的性能和可伸缩性,以处理大量的并发请求,并在需要时进行水平扩展。
  6. 服务端技术: 后端服务可以使用不同的编程语言和框架实现,如Java(Spring Boot)、Python(Django、Flask)、Node.js、Ruby(Ruby on Rails)等。

总的来说,后端服务是构成分布式应用架构中的一部分,通过处理业务逻辑和数据管理,为前端或其他客户端提供服务。在现代应用程序中,通常采用前后端分离的架构,使得前端和后端能够独立开发和部署。我们学的后端技术,就是为了开发、部署、维护后端服务

1.2. 正式工作中的不同环境

在软件开发中,尤其是后端程序开发,通常会涉及多个不同的环境,以便进行开发、测试和部署。以下是一些常见的后端程序环境:

1. 开发环境(Development Environment):

用途:用于开发和调试代码。

特点:通常配置为开发人员本地机器上的环境,包含开发所需的所有工具、库和服务。

2. 测试环境(Testing Environment):

用途:用于进行单元测试、集成测试和系统测试。

特点:尽可能模拟生产环境,但通常规模较小,用于检测和解决代码中的问题。

3. 预发布环境(Staging Environment):

用途:用于测试部署到生产环境之前的最终版本。

特点:模拟生产环境,并使用生产环境相似的硬件和软件配置。

4. 生产环境(Production Environment):

用途:运行实际的生产应用程序,提供服务给最终用户。

特点:具有高可用性、性能优化和安全性,通常包括负载均衡、故障恢复机制等。

这些环境的设置有助于确保开发人员能够在相对隔离的环境中进行工作,同时在生产环境之前检测和解决潜在的问题。这也有助于提高软件质量、可靠性和可维护性。

1.3. 前后端交互流程

在 Web 开发中,前端和后端是通过 HTTP 协议进行通信的。前端负责展示用户界面,而后端负责处理业务逻辑、与数据库交互以及提供数据和服务。以下是它们之间协作的一般过程:

1. 前端请求(Request):

  • 用户在浏览器中输入 URL 或者与前端页面进行交互,触发了一个 HTTP 请求。
  • 请求中包含了与服务端通信所需的信息,如参数、头部信息等。

2. 后端处理请求:

  • 服务器接收到请求后,后端应用程序开始处理它。
  • 后端应用程序执行业务逻辑,可能包括从数据库中检索数据、验证用户身份、计算等。

3. 数据库交互:

  • 如果业务逻辑需要与数据库交互,后端会执行相应的数据库查询或更新操作。

4. 生成响应(Response):

  • 后端应用程序生成一个 HTTP 响应,其中包含了处理结果、数据等。
  • 响应通常是一个包含数据的 JSON 对象,也可以包括其他资源如图片、文件等。

5. 前端接收响应:

  • 浏览器接收到后端的响应后,前端开始解析响应,提取出所需的数据。

6. 更新用户界面:

  • 前端使用从后端获取的数据更新用户界面,可能涉及到更新页面内容、刷新列表、显示错误消息等。

7. 用户交互:

  • 用户与前端界面进行交互,可能触发新的请求,形成新的请求-响应循环。

这种前后端协作的方式被称为前后端分离(Frontend-Backend Separation)或前后端分离架构。在这种架构中,前端和后端是独立的系统,通过定义好的接口进行通信。这使得可以使用不同的技术栈来开发前端和后端,同时也更容易实现代码的重用和维护。

常见的前后端通信方式包括使用 RESTful API、GraphQL 等。RESTful API 是一种使用 HTTP 请求进行通信的方式,而 GraphQL 则允许前端请求指定其需要的数据结构。

1.4. 前后端开发流程

假如要开发一个根据商品名称查询商品信息的功能(比如网页搜索商品),这用HTTP协议举例。

1. 前后端定义好接口传输的协议格式,一般都是json格式

2. 定义好HTTP请求方法、接口名字、前端传参、后端返回的参数。

确定HTTP请求方法:

因为是查询功能,根据RESTful url的规定,HTTP请求方法是请求资源的动作,所以用GET请求。

接口名字:

起一个有意义的名字,这里是根据商品名称查询商品信息,因此接口路由起名叫 /search;

当前用 /query_by_name 也可以,合理即可;

前端将把请求发给这url,进行HTTP请求。

前端请求协议 request:

查询商品,那么我们要传入商品名称;

定义好参数名称,和参数value的数据结构,这里是string。

后端响应协议 response:

查询的结果可能如上图所示,这里在开发前应该找需求方确认好需求,心里有预期

需要给前端的信息:

我们可能只有需要知道商品的价格、名称、描述、店家、评价数目等。

搜索会搜索出很多商品信息,所以应该返回Json数组

开发:确认协议后前后端各自开发,互不影响

自测:根据协议,使用postman等工具,构造数据,测试样例进行自测,保证开发的后端功能正确,并且不影响其他接口

自测方式:使用postman等工具

本地多打日志观察数据正确性

前后端联调:

自测确认没问题了,和前端同学一起联调,实际上就是前端真正请求你后端接口的数据,观察前后端在真正请求时候的正确与否

如果联调有问题,再及时修改

提交代码,项目部署上线

相关文章:

后端开发概念

1. 后端开发概念解析 1.1. 什么是服务器,后端服务 1.1.1. 服务器 服务器是一种提供服务的计算机系统,它可以接收、处理和响应来自其他计算机系统(客户端)的请求。服务器主要用于存储、处理和传输数据,以便客户端可以…...

2025网络安全趋势报告 内容摘要

2025 年网络安全在技术、法规、行业等多个维度呈现新趋势。技术上,人工智能、隐私保护技术、区块链、量子安全技术等取得进展;法规方面,数据安全法规进一步细化;行业应用中,物联网、工业控制系统安全升级,供…...

云原生安全基石:深度解析HTTPS协议(从原理到实战)

🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念:HTTPS是什么? HTTPS(HyperText Transfer Protocol Secure)是HTTP协议的安全版本&#xff0c…...

Autodl训练Faster-RCNN网络--自己的数据集(一)

参考文章: Autodl服务器中Faster-rcnn(jwyang)复现(一)_autodl faster rcnn-CSDN博客 Autodl服务器中Faster-rcnn(jwyang)训练自己数据集(二)_faster rcnn autodl-CSDN博客 食用指南:先跟着参考文章一进行操作,遇到问题再来看我这里有没有解…...

python打卡day36

复习日 仔细回顾一下神经网络到目前的内容,没跟上进度的补一下进度 作业:对之前的信贷项目,利用神经网络训练下,尝试用到目前的知识点让代码更加规范和美观。探索性作业(随意完成):尝试进入nn.M…...

8.Java 8 日期时间处理:从 Date 的崩溃到 LocalDate 的优雅自救​

一、被 Date 逼疯的程序员:那些年踩过的坑​ 还记得刚学 Java 时被Date支配的恐惧吗?​ 想获取 "2023 年 10 月 1 日"?new Date(2023, 9, 1)—— 等等,为什么月份是 9?哦对,Java 的月份从 0 开…...

基于Python的全卷积网络(FCN)实现路径损耗预测

以下是一份详细的基于Python的全卷积网络(FCN)实现路径损耗预测的技术文档。本方案包含理论基础、数据生成、模型构建、训练优化及可视化分析,代码实现约6000字。 基于全卷积网络的无线信道路径损耗预测系统 目录 问题背景与需求分析系统架构设计合成数据生成方法全卷积网络…...

【ubuntu】安装NVIDIA Container Toolkit

目录 安装NVIDIA Container Toolkit 安装依赖 添加密钥和仓库 配置中国科技大学(USTC) 镜像 APT 源 更新 APT 包列表 安装 NVIDIA Container Toolkit 验证安装 重启docker 起容器示例命令 【问题】如何在docker中正确使用GPU? 安装…...

Paimon和Hive相集成

Flink版本1.17 Hive版本3.1.3 1、Paimon集成Hive 将paimon-hive-connector.jar复制到auxlib中,下载链接Index of /groups/snapshots/org/apache/https://repository.apache.org/snapshots/org/apache/paimon/ 通过flink进入查看paimon /opt/softwares/flink-1.…...

精益数据分析(74/126):从愿景到落地的精益开发路径——Rally的全流程管理实践

精益数据分析(74/126):从愿景到落地的精益开发路径——Rally的全流程管理实践 在创业的黏性阶段,如何将抽象的愿景转化为可落地的产品功能?如何在快速迭代中保持战略聚焦?今天,我们通过Rally软…...

HarmonyOS 鸿蒙应用开发进阶:深入理解鸿蒙跨设备互通机制

鸿蒙跨设备互通(HarmonyOS Cross-Device Collaboration)是鸿蒙系统分布式能力的重要体现,通过创新的分布式软总线技术,实现了设备间的高效互联与能力共享。本文将系统性地解析鸿蒙跨设备互通的技术架构、实现原理及开发实践。 跨设…...

Vue.js教学第十五章:深入解析Webpack与Vue项目实战

Webpack 与 Vue 项目详解 在现代前端开发中,Webpack 作为最流行的模块打包工具之一,对于 Vue 项目的构建和优化起着至关重要的作用。本文将深入剖析 Webpack 的基本概念、在 Vue 项目中的应用场景,并详细讲解常用的 Webpack loaders 和 plugins 的配置与作用,同时通过实例…...

深入浅出 Python Testcontainers:用容器优雅地编写集成测试

在现代软件开发中,自动化测试已成为敏捷开发与持续集成中的关键环节。单元测试可以快速验证函数或类的行为是否符合预期,而集成测试则确保多个模块协同工作时依然正确。问题是:如何让集成测试可靠、可重复且易于维护? 这时&#…...

Cmake编译gflags过程记录和在QT中测试

由于在QT中使用PaddleOCR2.8存在这样那样的问题,查找貌似是gflags相关问题导致的,因此从头开始按相关参考文章编译一遍gflags源码,测试结果表明Qt5.14.2中使用MSVC2017X64编译器运行的QTgflags项目是正常。 详细编译步骤如下: 1、…...

项目中Warmup耗时高该如何操作处理

1)项目中Warmup耗时高该如何操作处理 2)如何在卸载资源后Untracked和Other的内存都回收 3)总Triangles的值是否包含了通过GPU Instancing画的三角形 4)有没有用Lua来修复虚幻引擎中对C代码进行插桩Hook的方案 这是第432篇UWA技术知…...

制作一款打飞机游戏53:子弹样式

现在,我们有一个小程序可以发射子弹,但这些子弹并不完美,我们稍后会修复它们。 子弹模式与目标 在开始之前,我想修正一下,因为我观察到在其他射击游戏中有一个我想复制的简单行为。我们有静态射击、瞄准射击和快速射击…...

Windows磁盘无法格式化及磁盘管理

简述:D盘使用了虚拟分区,结果导致无法格式化。 一、无法格式化磁盘 因为以前划分C盘的时候,空间划小了,所以在下载一些程序的依赖包之后爆红。当我想要把D盘的空间分给C盘时,发现D盘无法格式化。在网上没有找到合适的…...

每日算法 -【Swift 算法】Z 字形变换(Zigzag Conversion)详解与实现

Swift | Z 字形变换(Zigzag Conversion)详解与实现 🧩 题目描述 给定一个字符串 s 和一个行数 numRows,请按照从上往下、再从下往上的“Z”字形排列这个字符串,并按行输出最终结果。例如: 输入&#xff…...

Docker运维-5.3 配置私有仓库(Harbor)

1. harbor的介绍 Harbor(港湾),是一个用于存储和分发 Docker 镜像的企业级 Registry 服务器。以前的镜像私有仓库采用官方的 Docker Registry,不便于管理镜像。 Harbor 是由 VMWare 在 Docker Registry 的基础之上进行了二次封装,加进去了很…...

day 36

利用前面所学知识,对之前的信贷项目,利用神经网络训练 # 先运行之前预处理好的代码 import pandas as pd import pandas as pd #用于数据处理和分析,可处理表格数据。 import numpy as np #用于数值计算,提供了高效的数组…...

mybatis-plus使用记录

MyBatis-Plus 学习笔记 一、 快速入门 MyBatis-Plus (MP) 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 1. 引入 Maven 依赖 要使用 MyBatis-Plus,首先需要在项目的 pom.xml 文件中引入相…...

Mcu_Bsdiff_Upgrade

系统架构 概述 MCU BSDiff 升级系统通过使用二进制差分技术,提供了一种在资源受限的微控制器上进行高效固件更新的机制。系统不传输和存储完整的固件映像,而是只处理固件版本之间的差异,从而显著缩小更新包并降低带宽要求。 该架构遵循一个…...

有监督学习——决策树

任务 1、基于iris_data.csv数据,建立决策树模型,评估模型表现; 2、可视化决策树结构; 3、修改min_samples_leaf参数,对比模型结果 代码工具:jupyter notebook 参考资料 20.23 决策树(1)_哔哩哔哩_bil…...

华为OD机试真题——启动多任务排序(2025B卷:200分)Java/python/JavaScript/C/C++/GO最佳实现

2025 B卷 200分 题型 本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式; 并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析; 本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分…...

AWS云与第三方通信最佳实践:安全、高效的数据交互方案

引言 在当今的云计算时代,企业经常需要在AWS云环境中存储和处理数据,同时还需要与第三方应用或服务进行数据交互。如何安全、高效地实现这种通信是许多企业面临的挑战。本文将详细探讨几种AWS云与第三方通信的方案,并分析它们的优缺点,帮助您为自己的业务场景选择最佳解决…...

Ubuntu Server 24 设置 WiFi 网络的方案

一、配置流程 1. 确认无线网卡信息 首先需明确无线网卡接口名称及当前连接状态: ip link show # 查看网络接口(寻找状态为 "UP" 的无线接口,如 wlan0、wlx* 或 wlp1s0) iwconfig # 确认无线网…...

【redis】redis和hiredis的基本使用

总结: 介绍了一下redis和hiredis的安装步骤,用一个简单的demo演示了使用redis的基本过程。 启动redis步骤 1、下载redis:https://github.com/redis/redis 2、编译命令:make 3、编译产物:libredis.a(静…...

大模型时代,Python 近红外光谱与 Transformer 模型:学习的必要性探究

在当下大语言模型盛行的时代,各类新技术如潮水般不断涌现,让人应接不暇。身处这样的浪潮之中,不少人心中都会泛起疑问:Python 近红外光谱和 Transformer 模型还有学习的必要性吗?今天,就让我们深入探讨一番…...

产品经理常用术语大全

作为一名产品经理,不仅需要具备跨领域的知识和技能,还需要熟练掌握一系列专业术语,以便更有效地沟通、规划和执行产品开发过程中的各项任务。以下是一篇详细介绍产品经理日常工作中常见术语的文章,旨在帮助新手快速入门&#xff0…...

梯度优化提示词:精准引导AI分类

基于梯度优化的提示词工程方法,通过迭代调整提示词的嵌入向量,使其能够更有效地引导模型做出正确分类。 数据形式 训练数据 train_data 是一个列表,每个元素是一个字典,包含两个键: text: 需要分类的文本描述label: 对应的标签(“冲动"或"理性”)示例数据: …...