零基础入门JavaWeb——Web基本概念

news2024/10/6 9:45:55

一、服务器和客户端的概念

请添加图片描述

1.1 客户端的作用

与用户进行交互,用于接收用户的输入、展示服务器端的数据以及向服务器端传递数据。

1.2 服务器的作用

与客户端进行交互,接收客户端的数据、处理具体的业务逻辑、传递给客户端需要的数据。

1.3 什么是服务器?

“服务器”是一个很广泛的概念,从硬件而言:服务器是计算机的一种,它比普通计算机运行更快、负载更高、价格更贵。服务器在网络中为其他客户机(如PC机、智能手机、ATM等终端)提供计算或者应用服务。从软件而言:服务器其实就是安装在计算机上的一个软件,根据其作用的不同又可以分为各种不同的服务器,例如应用服务器、数据库服务器、Redis服务器、DNS服务器、ftp服务器等。

1.3.1 常见的服务器硬件设备

  • 刀片服务器
  • 塔式服务器
  • 机房

1.3.2 常见的服务器操作系统

服务器是一台计算机,它必须安装操作系统之后才能够安装使用服务器软件

  • Linux系统:使用最多的服务器系统,安全稳定、性能强劲、开源免费(或少许费用)。
  • Unix系统:和硬件服务器捆绑销售,版权不公开,用法和Linux一样。
  • Windows Server系统:源代码不开放,费用高昂,漏洞较多,性能较差,运维成本高。

1.3.3 常见的服务器软件

  • Tomcat
  • MySQL
  • Redis
  • FastDFS
  • ElasticSearch

1.3.4 虚拟机服务器

  • VMWare虚拟机:通常来说VMWare用于开发人员在本地电脑上搭建一个模拟的服务器环境,或自己装一些东西测试,不是团队共同使用的正式环境。
  • 弹性云服务器:使用弹性云服务器最大的好处就是弹性收缩。什么是弹性伸缩呢?比如现在我的服务器是20G内存,因为访问量暴涨需要把内存扩容到80G,要是物理的硬件服务器就需要买来新的内存条插入主板上的内存插槽。而弹性云服务器只需要改一下内存容量的参数就行了,非常方便。等访问量下降了,再把内存容量调回来就可以了,不仅方便,而且可以精准的在访问高峰期提高服务器配置而不是一直维持高配,节约成本。

二、服务器端应用程序

服务器应用程序就是运行在应用服务器软件上,用于处理具体业务功能的一个应用程序。例如:淘宝、京东等项目都是服务器端应用程序。

业务就是服务器应用程序中的各个功能,例如:商城里面的注册、登录、添加购物车、提交订单、结算订单等等都成称之为业务。

三、请求和响应

3.1 请求

请求就是从客户端发送给服务器,主要用于将客户端的数据传递给服务器。

3.2 响应

响应就是从服务器发送给客户端,主要用于将服务器的数据传递给客户端。

四、项目的逻辑构成

4.1 请求响应对

请求响应对是构成项目的最基本的逻辑单元,一个项目是由非常非常多的请求响应对构成的。

例如:点击链接跳转到注册页面

4.2 功能:一个功能包含多个请求响应对

例如:注册用户功能

  • 请求1:点超链接跳转到注册页面
  • 请求2:发送请求获取短信验证码
  • 请求3:检查用户名是否可用
  • 请求4:提交表单完成注册

4.3 模块:一个模块包含多个功能

例如:用户信息管理模块

  • 功能1:用户注册功能
  • 功能2:用户登录功能
  • 功能3:个人中心——账户安全功能
  • 功能4:个人中心——账户绑定功能
  • 功能5:个人中心——收货地址功能

4.4 子系统

根据项目规模的不同,子系统可能有也可能没有。如果设置了子系统,那么子系统中也必然包含很多模块。其实庞大项目的子系统就相当于一个项目了,甚至比一些小型项目还要大。

例如:认证中心子系统

  • 模块1:用户信息管理模块
  • 模块2:权限管理模块
  • 模块3:授权管理模块
  • 模块4:权限检查模块

4.5 项目

为了解决生活中的实际问题开发一个项目,这个项目就是为这个需求提供的一整套解决方案。

例如:电商项目

  • 子系统1:认证中心子系统
  • 子系统2:商品管理子系统
  • 子系统3:购物车子系统
  • 子系统4:订单子系统

请添加图片描述

五、架构

5.1 架构的概念

架构其实就是项目的结构。项目是由哪些部分组成的、每部分的作用、以及各个部分之间的联系、以及各个部分是如何组成一个系统的。

5.2 架构的演进过程

5.2.1 单一应用架构(all in one)

当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署结点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。
请添加图片描述

架构优点

架构简单,前期开发成本低、开发周期端,适合小型项目。

架构缺点

全部功能集成在一个工程中

  1. 业务代码耦合度高,不易维护
  2. 维护成本高,不易拓展
  3. 并发量大,不易解决
  4. 技术栈受限,只能使用一种语言开发
单一架构中的技术体系

视图:用户的操作界面+数据的动态显示

  • 前端技术:HTML、CSS、JavaScript、Vue
  • 异步交互:Ajax
  • 服务器端页面模板技术:Thymeleaf

控制层:处理请求+跳转页面

  • 服务器:Tomcat
  • 控制器:Servlet
  • 域对象:request、session、servletContext

业务逻辑层:业务逻辑计算

持久化层:操作数据库

5.2.2 垂直架构

当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,可以提升效率。此时,用于加速前端页面开发的Web框架(MVC)是关键。

请添加图片描述

架构优点

  1. 业务代码相对解耦
  2. 维护成本相对易于拓展(修改一个功能,可以直接修改一个项目,单独部署)
  3. 并发量大相对易于解决(搭建集群)
  4. 技术栈可扩展(不同的系统可以用不同的编程语言编写)

架构缺点

  1. 功能集中在一个项目中,不利于开发、扩展、维护
  2. 粒度不够细
  3. 代码之间存在数据、方法的冗余

5.2.3 分布式架构

当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,主键形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式服务框架(RPC)是关键。

请添加图片描述

架构优点

  1. 业务代码完全解耦,并可实现通用
  2. 维护成本易于拓展(修改一个功能,可以直接修改一个项目,单独部署)
  3. 并发量大易于解决(搭建集群)
  4. 技术栈完全扩展(不同的系统可以用不同的编程语言编写)

架构缺点

  1. 缺少统一管理资源调度的框架

5.2.4 流动计算架构(SOA)

服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需要增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高集群机器利用率的资源调度和治理中心(SOA)是关键。

资源调度和治理中心的框架:dubbo、spring cloud。
请添加图片描述

架构优点

  1. 业务代码完全解耦,并可实现通用
  2. 维护成本易于拓展(修改一个功能,可以直接修改一个项目,单独部署)
  3. 并发量大易于解决(搭建集群)
  4. 技术栈完全扩展(不同的系统可以用不同的编程语言编写)
  5. 框架实现了服务治理,不用担心集群的使用情况(失败会尝试其他服务…)

学海无涯苦作舟

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/25509.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

王道考研——操作系统(第二章 进程管理)

一、进程的概念、组成、特征 进程的概念 进程的组成——PCB 进程的组成——程序段、数据段 知识滚雪球:程序是如何运行的? 进程的组成 进程的特征 知识回顾与重要考点 二、进程的状态与转换 进程的状态——创建态、就绪态 进程的状态——运行态 进程的…

5G+北斗:人员定位系统为化工厂定位赋能

人员定位系统是集计算机软硬件、信息采集处理、无线数据传输、网络数据通讯、自动控制等技术多学科综合应用为一体的自动识别信息技术产品,可以实现对不同人、物在不同状态下的智能识别。 物联网时代,人们以感知为目的实现人与人、人与物、物与物全面互联…

【栈和队列的相互转换】

目录:前言一、 用队列实现栈(一) 题目分析1.队列基本操作2.画图分析3.翻译图解(二)整体代码二、用栈实现队列(一) 题目分析1.栈基本操作2.画图分析3.翻译图解(二)整体代码…

wy的leetcode刷题记录_Day47

wy的leetcode刷题记录_Day47 声明 本文章的所有题目信息都来源于leetcode 如有侵权请联系我删掉! 时间:2022-11-20 前言 补 目录wy的leetcode刷题记录_Day47声明前言799. 香槟塔题目介绍思路代码收获105. 从前序与中序遍历序列构造二叉树题目介绍思路代码收获79…

优思学院|精益六西格玛的成本效益怎么样?

所有精益六西格玛的实施都以项目工作为中心,因此可以用投资回报率(ROI)确定成本效益。项目可以集中在通过改善营收或降低成本(或两者)来提高净利润。 它们也可以侧重于通过减少资产(通常是库存或应收账款&…

迅为IMX8M开发板2gst-inspect-1.0测试

gstreamer 开发中,一般开发思路为:寻找命令行实现--命令行验证--将命令行集成到代码中---代码工程 化。当然如果你要代码更优雅一点,可以用命令行用对应的 API 来实现。本节来总结一下 gstreamer 的常用 使用过程。 gst-inspect 可以查看插件…

新鲜出炉,Linux眼花缭乱的小寄巧

14天学习训练营导师课程: 互联网老辛《 符合学习规律的超详细linux实战快速入门》 努力是为了不平庸~ 学习有些时候是枯燥的,但收获的快乐是加倍的,欢迎记录下你的那些努力时刻(学习知识点/题解/项目实操/遇到的bug/等等&#xf…

MySQL_数据库的约束

文章目录 1. NULL约束 2. UNIQUE(唯一约束) 3. DEFAULT(默认值约束) 4. PRIMARY KEY(主键约束) 5. FOREIGN KEY(外键约束) 数据库的约束就是关系型数据库给我们提供的一种"校验数据"合法性的机制 1. NULL约束 创建表时,可以指定某列不为空 create table stud…

MindFusion Scheduler for JavaScript 2.0 Crack

用纯 JAVASCRIPT 编写的交互式调度库--MindFusion Scheduler for JavaScript MindFusion 为所有需要呈现交互式时间表、活动日程或约会日历的应用程序提供了完整的解决方案。完全响应、高度可定制且易于集成的 JavaScript 调度库,您可以根据需要快速编程。 本土化 本…

Centos7 linux 中 防火墙操作命令及SSH远程连接

文章目录查看防火墙状态开启防火墙关闭防火墙查看对外开放的端口状态对外开发端口SSH 工具远程连接VMware 虚拟机查看防火墙状态 systemctl status firewalld开启防火墙 systemctl start firewalld若遇到无法开启 先用:systemctl unmask firewalld.service 然后&a…

Java继承——抽象类与接口的比较以及内部类、匿名类、异常类......

文章目录壹、抽象类与接口的比较贰、内部类叁、匿名类(匿名内部类)肆、异常类(Exception)壹、抽象类与接口的比较 1、抽象类与接口都可以有抽象方法; 2、接口中只可以有常量,不可以有变量;而抽…

Mac | 使用 Wineskin 在 Mac 上运行 exe 程序

​1 Wineskin 简介 Wineskin is a user-friendly tool used to make ports of Microsoft Windows software to macOS. 很多实用工具只有 Windows 版本,而 Mac 机器本身不支持运行 exe 程序,除了安装双系统、虚拟机等方法外,Wineskin 可以将…

使用HTML+CSS实现一个静态页面——面包蛋糕 (9页)

🎀 精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

xlsx库实现纯前端导入导出Excel

前言 最近做了前端导入、导出 Excel 的需求,用到了js-xlsx这个库,该库文档提供的用例很少,并不是很友好。本文总结一下我是如何实现需求的。 需求 提供一个 Excel 文件,将里面的内容转成 JSON 导入数据提供一个 JSON 文件&…

3D-2D:PnP

直接线性变换 Perspective-n-Point 是求解3D到2D点对运动的方法。它描述了已知n个3D空间点及其投影位置时,如何估计相机的位姿。 2D-2D的对极几何方法需要8个或8个以上的点对(以八点法为例),且存在初始化、纯旋转和尺度的问题。然而,如果两张…

【数据挖掘】数据预处理

Outline ChapterOverview1.为什么要对数据预处理2.数据描述性总结3.数据清洗4.数据变换5.数据整合6.数据归约7.离散化与概念层级8.总结Chapter 1. 为什么要预处理 我们从现实生活中获得的原始数据,或多或少会因为各种原因不能直接使用。例如: 不完整 …

K8S Pod Sidecar 应用场景之一-加入 NGINX Sidecar 做反代和 web 服务器

Kubernetes Pod Sidecar 简介 Sidecar 是一个独立的容器,与 Kubernetes pod 中的应用容器一起运行,是一种辅助性的应用。 Sidecar 的常见辅助性功能有这么几种: 服务网格 (service mesh) 代理监控 Exporter(如 redis exporter)C…

【附源码】计算机毕业设计JAVA学校食堂订餐管理

【附源码】计算机毕业设计JAVA学校食堂订餐管理 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: JAVA my…

Java#20(包和final)

目录 一.包 1.包的作用? 2.包名书写的规则? 3.什么是全类名? 4.什么时候需要导包? 什么时候不需要导包? 二.final 三.常量 实际开发中,常量一般作为系统的配置信息,方便维护,提高可读性 四.权限修饰符 五.静态代码块 一.包 1…

简述使用vue使用webpack脚手架创建项目并升级至webpack4

第一步、输入命令 vue init webpack demo2 (demo2表示项目名称),回车后等待项目完成创建; 第二步、打开package.json,升级以下依赖(建议升级一项依赖后运行一下项目) webpack系列webpack 3.6.…