【后端】后端框架全景图:现代服务端开发技术栈详解
前言在当今快速发展的软件开发领域,后端技术作为整个应用系统的核心支撑,承担着业务逻辑处理、数据存储管理、API服务提供、安全认证等关键职责。从早期的CGI脚本到现在的云原生微服务架构,后端技术经历了翻天覆地的变化,涌现出了众多优秀的框架和技术栈。 本文将为您全面梳理现代后端开发的技术全景图,深入分析主流框架的特点、优势和适用场景,帮助开发者在技术选型时做出明智的决策。无论您是初入后端开发的新手,还是寻求技术升级的资深开发者,都能从中获得有价值的参考。 本文内容概览 技术发展历程:从CGI到微服务的演进之路 框架分类体系:按语言、架构、场景的全面分类 主流技术栈详解:Java、Python、Node.js等生态深度解析 架构演进趋势:云原生、边缘计算等前沿技术 最佳实践指南:架构设计、性能优化、安全实践 学习路径规划:从初学者到专家的成长指南 一、后端框架发展历程(一)发展阶段1. CGI时代(1990-2000) 特点:通用网关接口,简单的请求-响应模式 代表技术:Perl CGI、C CGI 优势:简单直接,易于理解 劣势:性能差,每次请求都要启动新进程 2. 应用服务器时...
【后端】Spring Boot详解:企业级Java开发框架
引言Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。它基于Spring框架,通过约定优于配置的理念,大大简化了Spring应用的配置工作,让开发者能够快速构建独立的、生产级别的Spring应用程序。 一、Spring Boot核心概念(一)设计理念1. 约定优于配置(Convention over Configuration) 默认配置:提供合理的默认配置,减少配置工作 标准化结构:统一的项目结构和命名规范 自动装配:基于类路径自动配置Bean 2. 开箱即用(Out of the Box) 内嵌服务器:无需外部容器,直接运行 起步依赖:简化依赖管理 生产就绪:内置监控、健康检查等功能 3. 微服务友好 轻量级:快速启动,资源占用少 独立部署:每个服务独立运行 云原生:支持容器化和云部署 (二)核心特性1. 自动配置(Auto Configuration)12345678910111213141516171819202122232425// Spring Boot自动配置示例@SpringBootApp...
【Node.js】Node.js深度解析:构建高性能的后端服务
摘要Node.js 凭借其非阻塞I/O和事件驱动的特性,在后端开发领域占据了重要地位。本文将深入探讨Node.js的核心概念、常用模块、Web框架、数据库交互、测试以及性能优化,旨在为开发者提供一份全面的Node.js技术指南。 一、Node.js基础(一)事件循环 (Event Loop)Node.js 的核心是事件循环,它使得Node.js可以在单线程中处理大量并发连接,而不会造成阻塞。 12345678910111213console.log('start');setTimeout(() => { console.log('setTimeout');}, 0);Promise.resolve().then(() => { console.log('Promise');});console.log('end');// 输出顺序: start, end, Promise, setTimeout (二)异步I/ONode...
【Node.js】NestJS详解:企业级Node.js框架
引言NestJS是一个用于构建高效、可扩展的Node.js服务器端应用程序的框架。它使用TypeScript构建,结合了OOP(面向对象编程)、FP(函数式编程)和FRP(函数响应式编程)的元素。NestJS深受Angular启发,提供了开箱即用的应用程序架构。 核心特性 TypeScript优先:完全支持TypeScript,提供强类型检查 装饰器模式:广泛使用装饰器来定义元数据 依赖注入:强大的依赖注入系统 模块化架构:清晰的模块化组织结构 微服务支持:内置微服务架构支持 GraphQL集成:原生GraphQL支持 WebSocket支持:实时通信功能 测试友好:内置测试工具和模拟功能 一、安装与项目初始化(一)CLI安装与项目创建1234567891011# 安装NestJS CLInpm install -g @nestjs/cli# 创建新项目nest new nest-app# 进入项目目录cd nest-app# 启动开发服务器npm run start:dev (二)项目结构123456789101112nest-app/├── src/│ ├── app...
【学习】Nacos详解:微服务注册中心与配置中心实战指南
前言在微服务架构日益普及的今天,服务注册发现和配置管理成为了分布式系统的核心基础设施。Nacos(Naming and Configuration Service)作为阿里巴巴开源的服务发现、配置管理和服务管理平台,为微服务架构提供了一站式解决方案。本文将深入探讨Nacos的核心功能、架构原理和实际应用。 什么是Nacos基本概念Nacos致力于帮助您发现、配置和管理微服务 2。它提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理 3。 核心特性Nacos主要提供以下四大功能 3: 服务发现与服务健康检查 使服务更容易注册 通过DNS或HTTP接口发现其他服务 提供服务的实时健康检查 防止向不健康的主机或服务实例发送请求 动态配置管理 在所有环境中以集中和动态的方式管理所有服务的配置 消除了在更新配置时重新部署应用程序的需要 使配置的更改更加高效和灵活 动态DNS服务 提供基于DNS协议的服务发现能力 支持异构语言的服务发现 将注册在Nacos上的服务以域名的方式暴露端点 服务和元数据管理 管理数据中心的所有服务及元数据 ...
【MySQL】关联查询问题
数据库关联查询的字段类型不一致问题问题描述在进行MySQL关联查询时,如果关联字段的数据类型不一致,可能会导致查询结果错误或者性能下降。这篇文章记录了一次由于字段类型不一致导致的关联查询问题。 错误示例以下是我用来关联查询的SQL语句,查询目的是通过左连接获取任务和报告的关联关系: 12345678SELECT lct.id as task_id, rtwm.id as report_id, rtwm.task_id as related_task_id FROM lb_core_task lct LEFT JOIN report_to_work_main rtwm ON rtwm.task_id = lct.id 执行后发现查询结果与预期不符,明显看出task_id和related_task_id并不是正确的关联关系。 注意:如果看不到图片,请确保在博客对应目录下有正确的图片文件,或使用以下描述代替: 查询结果显示:task_id是数字类型的值如”123”,而related_task_id是字符串类型的值如”123ABC”,明显不匹配。 ...
【前端】VUE中的watch监听
一、watch概述(一)什么是watch? watch是Vue中的一个特性,用于监听数据的变化并执行相应的操作。 当被监听的数据发生变化时,会触发一个回调函数,我们可以在这个回调函数中执行一些逻辑操作。 watch适用于需要在数据变化时执行异步或开销较大的操作的场景。 (二)基本语法1. 选项式API(Options API)中的watch12345678910111213export default { data() { return { message: 'Hello' } }, watch: { // 监听message属性的变化 message(newValue, oldValue) { console.log('message变化了', newValue, oldValue) } }} 2. 组合式API(Composition API)中的watch12345678im...
【LINUX】在Ubuntu服务器部署网页系统
【LINUX】在Ubuntu服务器部署网页系统前言本文档旨在详细介绍如何在Ubuntu服务器上部署一个典型的网页系统。部署过程涵盖了从环境准备、所需软件(如MySQL、Nginx、JDK、MongoDB、Redis等)的安装与配置,到前端和后端应用的打包、部署及最终的调试验证。笔者将以第一人称视角,结合实际操作经验,提供清晰、可执行的步骤指导,希望能帮助读者顺利完成部署任务。无论是初次接触服务器部署的新手,还是有一定经验的开发者,都可以从本文中获取有价值的信息。 一、准备环境 查看服务器信息 1234uname -a # 查看系统内核信息lsb_release -a # 如果是 Linux 系统,查看发行版本df -h # 查看磁盘空间free -m # 查看内存使用情况 检查软件安装状态: 123mysql --version # 检查 MySQL 是否已安装nginx -v # 检查 Nginx 是否已安装java -version # 检查 Java 是否已安装 二、...
【前端】前端导出Excel设置工作区保护
设置导出的文件不可更改 前端可以通过配置来设置导出的excel无法修改数据,或者设置密码来保护文档内容。1234567891011121314151617181920import ExcelJS from 'exceljs';// 创建 Workbook 和 Worksheetconst workbook = new ExcelJS.Workbook();const worksheet = workbook.addWorksheet('Sheet1');// 设置工作表保护(密码可选)worksheet.protect('yourPassword', { selectLockedCells: false, // 禁止选中锁定单元格 selectUnlockedCells: false, // 禁止选中未锁定单元格 formatCells: false, // 禁止格式化 insertRows: false, // 禁止插入行 deleteRows: false ...
【BUG】Maven打包失败
Maven打包常见问题及解决方案Maven是Java项目中最常用的构建工具之一,但在使用过程中可能会遇到各种打包失败的问题。本文记录了几个常见的Maven打包问题及解决方案。 一、插件版本不一致问题问题现象在使用Maven打包项目时,报错如下: 123456789101112131415161718192021[INFO] hussar-cloud-module ................................ SUCCESS [ 0.010 s][INFO] hussar-cloud-module-example-api .................... SUCCESS [ 5.644 s][INFO] hussar-cloud-module-example-feign .................. SUCCESS [ 1.507 s][INFO] hussar-cloud-module-example-server ................. SUCCESS [ 1.842 s][INFO] hussar-cloud-modul...