数据库技术基础
1 数据库系统概述
1.1 数据库的4个概念
(1)数据(信息)
数据:指已记录或可获取的事实,是数据库存储的最小单元。除文本、数字外,还有图形、图像、声音等。 数据由于能为用户利用才被记录和保存的。
信息:指用户处于某种目的以某种手段(活动)获取的数据。
活动:数据搜索、数据处理、数据操纵。
总结起来就是:
例:电话号码本--->数据,张三的电话号码--->信息
(2)数据库
数据库指长期存储在计算机内、有组织、可共享的大量数据的集合。 数据库的目的是将数据组织起来,以便用户直接从数据中获得信息。数据库的结构由数据库的元数据解释。
数据库元数据包含以下信息:
数据结构名称(如:表名、列名);
数据类型(如:字符型、整数型);
数据描述(如:Sname代表学生姓名);
其他描述数据库所存数据特征的信息。
(3)数据库管理系统DBMS
DBMS是位于用户与操作系统之间的一层数据管理软件,实现对数据库数据对象的统一管理、控制和维护。
DBMS的主要功能:
①数据定义:DBMS提供数据定义语言DDL,供用户定义数据库的三级模式结构、两级映像以及完整性约束和保密限制等约束。相关信息被存放在数据字典中。
②数据操作:DBMS提供数据操作语言DML,供用户实现对数据的追加、删除、更新、查询等操作。 数据库的运行管理:并发控制、安全性控制、完整性控制、日志管理、事务管理与恢复。这些功能保证了数据库系统的正常运行。
③数据的组织、存储与管理:组织、存储和管理各种数据,包括数据字典、用户数据、存取路径等。基本目标是提高存储空间利用率,选择合适的存取方法提高存取效率。
④数据库的维护:这一部分包括数据载入、转换、转储、数据库的重组合重构以及性能监控等功能。
⑤通信:负责数据的传送,DBMS与其他软件系统的通信功能以及数据库之间的互操作功能。
DBMS的层次结构如下图:
(4)数据库系统DBS
基于计算机系统,目的是在用户和数据库信息之间保证高效的交互。
数据库系统的三个组成部分:数据库、数据库管理系统(DBMS)和前端应用程序
1.2 数据管理技术及其发展
数据处理: 数据处理是将数据转换成信息,包括:数据的收集、管理、加工利用、信息输出。
数据管理: 数据管理是数据处理的中心问题,包括对数据的分类、组织、编码、存储、检索和维护。
数据管理技术的发展:
人工管理(20世纪50年代中期之前)、文件系统(20世纪50年代后期-60年代中期)、数据库系统(20世纪60年代 ···················· 后期)
1.3 数据库系统的特点
① 数据结构化:实现整体结构化,理解与文件系统的区别。
②数据的共享性高、冗余度低且易扩充 :数据的共享不局限于某个局部应用,高度的数据共享大大减少了数据冗余,保证数据的一致性。
③数据独立性高:
数据独立性:应用程序对数据结构的依赖程度。
逻辑独立性与物理独立性
④数据由数据库管理系统(DBMS)统一管理和控制
2 数据模型
2.1 数据模型概述
模型:对现实世界中复杂对象的模拟与抽象。例如,军事上用的沙盘、航模、建筑模型、地图等。 数据模型是对现实世界中相关实体数据特征的抽象。
数据模型是一个描述数据、数据联系、数据语义以及一致性约束的概念工具的集合,是数据库系统的核心和基础。
三个世界:现实世界、信息世界和机器世界
抽象过程: 现实世界中的客观对象抽象为概念模型; 把概念模型转换为某一DBMS支持的数据模型。 (概念模型是现实世界到机器世界的一个中间层次)
两类数据模型: 信息世界的概念模型、机器世界的逻辑模型和物理模型(也称结构数据模型)
数据模型的三要素:数据结构、数据操作、数据的完整性约束。
常用的数据模型: 概念模型:实体-联系模型(E-R模型) 结构数据模型:关系模型、层次模型、网状模型等。
概念模型 :是按用户的观点来对数据和信息建模,即:信息世界的建模。
逻辑模型:数据库的逻辑结构。
物理模型:描述数据在存储介质上的存储方式和存取方法。
2.2概念模型
信息世界的数据模型(建模工具)。
作用:需求分析的可视化,设计人员与用户之间交流的语言。
信息世界中的基本概念:实体、属性、码、实体型、实体集、联系。
概念模型的一种常用方法:实体-联系方法(实体-联系模型,E-R模型),是一种用E-R图描述(抽象)现实世界的概念模型。
2.3层次模型
层次模型是数据库系统中最早出现的数据模型
层次数据库系统的典型代表是IBM公司的IMS(Information Management System)
层次模型用树形结构来表示各类实体以及实体间的联系
基本的层次联系:
满足下面两个条件的基本层次联系的集合为层次模型:
1. 有且只有一个结点没有双亲结点,这个结点称为根结点
2. 根以外的其它结点有且只有一个双亲结点
又如下关系:
层次模型的数据操纵:查询、插入、删除、更新
层次模型的完整性约束条件
无相应的双亲结点值就不能插入子女结点值;
如果删除双亲结点值,则相应的子女结点值也被同时删除;
更新操作时,应更新所有相应记录,以保证数据的一致性。
多对多联系在层次模型中的表示
方法:将多对多联系分解成一对多联系
分解方法:冗余结点法、虚拟结点法
2.4网状模型
网状数据库系统采用网状模型作为数据的组织方式
典型代表是DBTG系统: 70年代由数据系统语言研究会( CODASYL )下属的DBTG提出的一个系统方案。这奠定了数据库系统的基本概念、方法和技术
实际系统
-Cullinet Software Inc.公司的 IDMS
-Univac公司的 DMS1100
-Honeywell公司的IDS/2
-HP公司的IMAGE
网状模型的数据结构
满足下面两个条件的基本层次联系的集合为网状模型:
1. 允许一个以上的结点无双亲;
2. 一个结点可以有多于一个的双亲。
网状模型中子女结点与双亲结点的联系可以不唯一,要为每个联系命名,并指出与该联系有关的双亲记录和子女记录 。
网状模型结构示意
多对多联系在网状模型中的表示
2.5关系模型
关系数据库系统采用关系模型作为数据的组织方式
1970年IBM公司的研究员E.F.Codd首次提出了数据库系统的关系模型
计算机厂商新推出的数据库管理系统几乎都支持关系模型
关系模型的数据结构
在用户观点下,关系模型由一组关系组成。每个关系的逻辑结构是一张二维表,它由行(元组)和列(属性)组成。
关系模型中的一些术语:
关系(Relation):一个关系对应通常说的一张表
元组(Tuple):表中的一行即为一个元组 属性(Attribute):表中的一列即为一个属性(属性名)
主码(Key):表中的某个属性组,可以唯一确定一个元组。
域(Domain):属性的取值范围。
分量:元组中的一个属性值。
关系模式:对关系的描述
关系名(属性1,属性2,…,属性n)
学生(学号,姓名,年龄,性别,系,年级)
注意:关系必须是规范化的,满足一定的规范条件!
关系中的每一个分量必须是一个不可分的数据项。
表中的工资和扣除是可分的数据项,不符合关系模型要求!
关系模型的数据操作
数据操作是集合操作,操作对象和操作结果都是关系
操作:查询、插入、删除、更新
数据操作是集合操作,操作对象和操作结果都是关系(元组的集合)
存取路径对用户隐蔽,只要指出“做什么”,不必详细说明“怎么做”
关系的完整性约束条件
实体完整性
参照完整性
用户定义的完整性
关系模型的存储结构
实体及实体间的联系都用表来表示
表以文件形式存储
有的DBMS一个表对应一个操作系统文件
有的DBMS自己设计文件结构
3 数据库系统的结构
数据库系统的内部结构-模式结构
从数据库管理系统角度看,数据库系统通常采用三级模式结构,是数据库系统的内部结构 。
数据库系统的外部结构-体系结构
从数据库最终用户角度看(数据库系统的体系结构) ,数据库系统的结构分为: 单用户结构、主从式结构、分布式结构、客户/服务器 浏览器/应用服务器/数据库服务器多层结构等
数据库系统的三级模式结构
模 式:数据库整体逻辑结构
外模式:用户的局部逻辑结构
内模式:数据库的物理结构
数据库的二级映像功能与数据独立性
三级模式是对数据的三个抽象级别
二级映象在DBMS内部实现这三个抽象层次的联系和转换:
外模式/模式映像:实现数据的逻辑独立性
模式/内模式映像 :实现数据的物理独立性
相关文章:
数据库技术基础
1 数据库系统概述 1.1 数据库的4个概念 (1)数据(信息) 数据:指已记录或可获取的事实,是数据库存储的最小单元。除文本、数字外,还有图形、图像、声音等。 数据由于能为用户利用才被记录和保…...
如何获取sql数据中时间的月份、年份(类型为date)
可用自带的函数month来实现 如: 创建表及插入数据: create table test (id int,begindate datetime) insert into test values (1,2015-01-01) insert into test values (2,2015-02-01) 执行sql语句,获取月份: select MONTH(begindate)…...
每日Attention学习18——Grouped Attention Gate
模块出处 [ICLR 25 Submission] [link] UltraLightUNet: Rethinking U-shaped Network with Multi-kernel Lightweight Convolutions for Medical Image Segmentation 模块名称 Grouped Attention Gate (GAG) 模块作用 轻量特征融合 模块结构 模块特点 特征融合前使用Group…...
分析用户请求K8S里ingress-nginx提供的ingress流量路径
前言 本文是个人的小小见解,欢迎大佬指出我文章的问题,一起讨论进步~ 我个人的疑问点 进入的流量是如何自动判断进入iptables的四表?k8s nodeport模式的原理? 一 本机环境介绍 节点名节点IPK8S版本CNI插件Master192.168.44.1…...
TensorFlow是个啥玩意?
TensorFlow是一个开源的机器学习框架,由Google开发。它可以帮助开发者构建和训练各种机器学习模型,包括神经网络和深度学习模型。TensorFlow的设计理念是使用数据流图来表示计算过程,其中节点表示数学运算,边表示数据流动。 Tens…...
初识C语言、C语言的学习方向总述与入门
目录 1. 什么是C语言? 2. 第一个C语言程序 3. 数据类型 4. 变量、常量 4.1 定义变量的方法 4.2 变量的命名 4.3 变量的分类 4.4 变量的作用域和生命周期 4.5 常量 5. 字符串转义字符注释 5.1 字符串 5.2 转义字符 6. 注释 7. 选择语句 8. 循环语句 …...
零基础学习书生.浦语大模型-入门岛
第一关:Linux基础知识 任务一:Cursor连接SSH运行代码 使用Remote - SSH插件即可 运行指令 python hello_world.py端口映射 ssh -p 46561 rootssh.intern-ai.org.cn -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyCheckingno 注:46561&a…...
【R语言】获取数据
R语言自带2种数据存储格式:*.RData和*.rds。 这两者的区别是:前者既可以存储数据,也可以存储当前工作空间中的所有变量,属于非标准化存储;后者仅用于存储单个R对象,且存储时可以创建标准化档案,…...
MongoDB学习笔记-解析jsonCommand内容
如果需要屏蔽其他项目对MongoDB的直接访问操作,统一由一个入口访问操作MongoDB,可以考虑直接传入jsonCommand语句解析执行。 相关依赖包 <!-- SpringBootDataMongodb依赖包 --> <dependency><groupId>org.springframework.boot</…...
国产编辑器EverEdit - 工具栏说明
1 工具栏 1.1 应用场景 当用户想显示/隐藏界面的标签栏、工具栏、状态栏、主菜单等界面元素时,可以通过EverEdit的菜单选项进行设置。 1.2 使用方法 选择菜单查看 -> 工具栏,在工具栏的子菜单中选择勾选或去掉勾选对应的选项。 标签栏࿱…...
linux 函数 sem_init () 信号量、sem_destroy()
(1) (2) 代码举例: #include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <semaphore.h> #include <unistd.h>sem_t semaphore;void* thread_function(void* arg) …...
制造业设备状态监控与生产优化实战:基于SQL的序列分析与状态机建模
目录 1. 背景与挑战 2. 数据建模与采集 2.1 数据表设计 设备状态表(记录设备实时状态变更)...
密码学的数学基础1-素数和RSA加密
数学公式推导是密码学的基础, 故开一个新的课题 – 密码学的数学基础系列 素数 / 质数 质数又称素数。 一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数(规定1既不是质数也不是合数࿰…...
C++ Primer 算术运算符
欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…...
计算图 Compute Graph 和自动求导 Autograd | PyTorch 深度学习实战
前一篇文章,Tensor 基本操作5 device 管理,使用 GPU 设备 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started PyTorch 计算图和 Autograd 微积分之于机器学习Computational Graphs 计算图Autograd…...
Vue 图片引用方式详解:静态资源与动态路径访问
目录 前言1. 引用 public/ 目录2. assets/ 目录3. 远程服务器4. Vue Router 动态访问5. 总结6. 扩展(图片不显示) 前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 在 Vue 开发中&#x…...
熟练掌握Http协议
目录 基本概念请求数据Get请求方式和Post请求方式 响应数据响应状态码 基本概念 Http协议全称超文本传输协议(HyperText Transfer Protocol),是网络通信中应用层的协议,规定了浏览器和web服务器数据传输的格式和规则 Http应用层协议具有以下特点&#…...
爬虫学习笔记之Robots协议相关整理
定义 Robots协议也称作爬虫协议、机器人协议,全名为网络爬虫排除标准,用来告诉爬虫和搜索引擎哪些页面可以爬取、哪些不可以。它通常是一个叫做robots.txt的文本文件,一般放在网站的根目录下。 robots.txt文件的样例 对有所爬虫均生效&#…...
血压计OCR文字检测数据集VOC+YOLO格式2147张11类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2147 标注数量(xml文件个数):2147 标注数量(txt文件个数):2147 …...
正则表达式详细介绍
目录 正则表达式详细介绍什么是正则表达式?元字符转义字符字符类限定字符字符分枝字符分组懒惰匹配和贪婪匹配零宽断言 正则表达式详细介绍 什么是正则表达式? 正则表达式是一组由字母和符号组成的特殊文本,它可以用来从文本中找出满足你想…...
初识ArkTS语言
文章目录 ArkTS是HarmonyOS优选的主力应用开发语言。ArkTS围绕应用开发在TypeScript(简称TS)生态基础上做了进一步扩展,保持了TS的基本风格,同时通过规范定义强化开发期静态检查和分析,提升程序执行稳定性和性能。 从…...
Go语言并发之美:构建高性能键值存储系统
摘要 本文介绍了基于Go语言实现的高性能并发键值存储系统。通过深入探讨Go语言在并发编程中的优势,文章详细阐述了系统的锁机制、分片优化、内存管理和持久化设计等关键环节。这些设计展示了如何在系统开发中进行有效的权衡,以确保最优性能。该系统不仅充…...
6. k8s二进制集群之各节点部署
获取kubernetes源码安装主节点(分别执行以下各节点命令)安装工作节点(同步kebelet和kube-proxy到各工作节点)总结 继续上一篇文章《k8s二进制集群之ETCD集群部署》下面介绍一下各节点的部署与配置。 获取kubernetes源码 https:/…...
从0开始使用面对对象C语言搭建一个基于OLED的图形显示框架
目录 前言 环境介绍 代码与动机 架构设计,优缺点 博客系列指引 前言 笔者前段时间花费了一周,整理了一下自从TM1637开始打算的,使用OLED来搭建一个通用的显示库的一个工程。笔者的OLED库已经开源到Github上了,地址在…...
spring基础总结
先修知识:依赖注入,反转控制,生命周期 IDEA快捷键 Ctrl Altm:提取方法,设置trycatch 通用快捷键: Ctrl F:在当前文件中查找文本。Ctrl R:在当前文件中替换文本。Ctrl Z:撤销…...
基础相对薄弱怎么考研
复习总体规划 明确目标 选择专业和院校:根据你的兴趣、职业规划和自身实力,选择适合自己的专业和院校。可以参考往年的分数线、报录比、复试难度等。了解考试科目:不同专业考试科目不同,一般包括: 公共课:…...
代码随想录36 动态规划
leetcode 343.整数拆分 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k > 2 ),并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 示例 1: 输入: n 2 输出: 1 解释: 2 1 1, 1 1 1。 示例 2: 输入: n 1…...
p5r预告信生成器API
p5r预告信生成器API 本人将js生成的p5r预告信使用go语言进行了重写和部署,并开放了其api,可以直接通过get方法获取预告信的png。 快速开始 http://api.viogami.tech/p5cc/:text eg: http://api.viogami.tech/p5cc/persona5 感谢p5r风格字体的制作者和…...
React图标库: 使用React Icons实现定制化图标效果
React图标库: 使用React Icons实现定制化图标效果 图标库介绍 是一个专门为React应用设计的图标库,它包含了丰富的图标集合,覆盖了常用的图标类型,如FontAwesome、Material Design等。React Icons可以让开发者在React应用中轻松地添加、定制各…...
说说Redis的内存淘汰策略?
大家好,我是锋哥。今天分享关于【说说Redis的内存淘汰策略?】面试题。希望对大家有帮助; 说说Redis的内存淘汰策略? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Redis 提供了多种内存淘汰策略,用于在内存达到限制时决定如何…...
【C语言】自定义类型讲解
文章目录 一、前言二、结构体2.1 概念2.2 定义2.2.1 通常情况下的定义2.2.2 匿名结构体 2.3 结构体的自引用和嵌套2.4 结构体变量的定义与初始化2.5 结构体的内存对齐2.6 结构体传参2.7 结构体实现位段 三、枚举3.1 概念3.2 定义3.3 枚举的优点3.3.1 提高代码的可读性3.3.2 防止…...
机器学习8-卷积和卷积核1
机器学习8-卷积和卷积核1 卷积与图像去噪卷积的定义与性质定义性质卷积的原理卷积步骤卷积的示例与应用卷积的优缺点优点缺点 总结 高斯卷积核卷积核尺寸的设置依据任务类型考虑数据特性实验与调优 高斯函数标准差的设置依据平滑需求结合卷积核尺寸实际应用场景 总结 图像噪声与…...
3、C#基于.net framework的应用开发实战编程 - 实现(三、三) - 编程手把手系列文章...
三、 实现; 三.三、编写应用程序; 此文主要是实现应用的主要编码工作。 1、 分层; 此例子主要分为UI、Helper、DAL等层。UI负责便签的界面显示;Helper主要是链接UI和数据库操作的中间层;DAL为对数据库的操…...
PHP 中 `foreach` 循环结合引用使用时可能出现的问题
问题背景 假设你有如下 PHP 代码: <?php $arr array(1, 2, 3, 4);// 使用引用遍历并修改数组元素 foreach ($arr as &$value) {$value $value * 2; } // 此时 $arr 变为 array(2, 4, 6, 8)// 再使用非引用方式遍历数组 foreach ($arr as $key > $val…...
go gin配置air
一、依赖下载 安装最新,且在你工作区下进行安装,我的是D:/GO是我的工作区,所有项目都在目录下的src, go install github.com/air-verse/airlatest 如果出现类似报错: 将图中第三行 github.com/air-verse/air 替换最…...
在 Spring Boot 项目中,bootstrap.yml 和 application.yml文件区别
在 Spring Boot 项目中,bootstrap.yml 和 application.yml 是两个常用的配置文件,它们的作用和加载顺序有所不同。以下是它们的详细说明: 1. bootstrap.yml 作用: bootstrap.yml 是 Spring Cloud 项目中的配置文件,用于…...
Excel中Address函数的用法
Excel中Address函数的用法 1. 函数详细讲解1.1 函数解释1.2 使用格式1.3 参数定义1.4 要点 2. 实用演示示例2.1 函数需求2.2 公式编写2.3 计算过程 3. 注意事项4. 文档下载5. 其他文章6. 获取全部Excel练习素材快来试试吧🥰 函数练习素材👈点击即可进行下…...
游戏引擎 Unity - Unity 打开项目、Unity Editor 添加简体中文语言包模块、Unity 项目设置为简体中文
Unity Unity 首次发布于 2005 年,属于 Unity Technologies Unity 使用的开发技术有:C# Unity 的适用平台:PC、主机、移动设备、VR / AR、Web 等 Unity 的适用领域:开发中等画质中小型项目 Unity 适合初学者或需要快速上手的开…...
智能家居监控系统数据收集积压优化
亮点:RocketMQ 消息大量积压问题的解决 假设我们正在开发一个智能家居监控系统。该系统从数百万个智能设备(如温度传感器、安全摄像头、烟雾探测器等)收集数据,并通过 RocketMQ 将这些数据传输到后端进行处理和分析。 在某些情况下…...
Zabbix7.0安装(Ubuntu24.04+LNMP)
1.选择版本 下载Zabbix 2.安装虚拟机 这里选择在Ubuntu24.04上安装Zabbix. 安装链接https://blog.csdn.net/weixin_58189050/article/details/145446065 配置源 vim /etc/apt/sources.list deb https://mirrors.aliyun.com/ubuntu/ noble main restricted universe multive…...
SpringBoot+Dubbo+zookeeper 急速入门案例
项目目录结构: 第一步:创建一个SpringBoot项目,这里选择Maven项目或者Spring Initializer都可以,这里创建了一个Maven项目(SpringBoot-Dubbo),pom.xml文件如下: <?xml versio…...
6种MySQL高可用方案对比分析
大家好,我是 V 哥,关于 MySQL 高可用方案,在面试中频频出现,有同学在字节面试就遇到过,主要考察你在高可用项目中是如何应用的,V 哥整理了6种方案,供你参考。 V 哥推荐:2024 最适合入…...
CLK敏感源和完整GND平面
SPI Flash芯片辐射发射(RE)问题: 某款产品在3米法电波暗室进行辐射(RE)发射测试时,发现多个频点余量不满足6dB管控要求. 通过频谱分析仪近场探头分析定位到干扰频点来自于SPI Flash时钟信号的高次谐波干扰,深入分析发…...
团体程序设计天梯赛-练习集——L1-034 点赞
前言 20分的题目题目不难,理解也不难,做起来有点问题 L1-034 点赞 微博上有个“点赞”功能,你可以为你喜欢的博文点个赞表示支持。每篇博文都有一些刻画其特性的标签,而你点赞的博文的类型,也间接刻画了你的特性。本…...
独立成分分析 (ICA):用于信号分离或降维
人工智能例子汇总:AI常见的算法和例子-CSDN博客 独立成分分析 (Independent Component Analysis, ICA) 是一种用于信号分离和降维的统计方法,常用于盲源分离 (Blind Source Separation, BSS) 问题,例如音频信号分离或脑电信号 (EEG) 处理。…...
【EdgeAI实战】(2)STM32 AI 扩展包的安装与使用
【EdgeAI实战】(1)STM32 边缘 AI 生态系统 【EdgeAI实战】(2)STM32 AI 扩展包的安装与使用 【EdgeAI实战】(2)STM32 AI 扩展包的安装与使用 1. STM32Cube.AI 简介1.1 STM32Cube.AI 简介1.2 X-CUBE-AI 内核引…...
【Java】MyBatis动态SQL
在MyBatis中使用动态SQL语句。 动态SQL是指根据参数数据动态组织SQL的技术。 生活中的案例: 在京东上买东西时,用户搜索商品,可以选择筛选条件,比如品牌,价格,材质等,也可以不使用筛选条件。这时…...
Spring Boot篇
为什么要用Spring Boot Spring Boot 优点非常多,如: 独立运行 Spring Boot 而且内嵌了各种 servlet 容器,Tomcat、Jetty 等,现在不再需要打成 war 包部署到 容器 中,Spring Boot 只要打成一个可执行的 jar 包就能独…...
深入理解Node.js_架构与最佳实践
1. 引言 1.1 什么是Node.js Node.js简介:Node.js是一个基于Chrome V8引擎的JavaScript运行时,用于构建快速、可扩展的网络应用。Node.js的历史背景和发展:Node.js最初由Ryan Dahl在2009年发布,旨在解决I/O密集型应用的性能问题。随着时间的推移,Node.js社区不断壮大,提供…...
使用mockttp库模拟HTTP服务器和客户端进行单元测试
简介 mockttp 是一个用于在 Node.js 中模拟 HTTP 服务器和客户端的库。它可以帮助我们进行单元测试和集成测试,而不需要实际发送 HTTP 请求。 安装 npm install mockttp types/mockttp模拟http服务测试 首先导入并创建一个本地服务器实例 import { getLocal } …...