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

【数据库】四、数据库管理与维护

文章目录

  • 四、数据库管理与维护
    • 1 安全性管理
    • 2 事务概述
    • 3 并发控制
    • 4 备份与恢复管理

四、数据库管理与维护

1 安全性管理

安全性管理是指保护数据库,以避免非法用户进行窃取数据、篡改数据、删除数据和破坏数据库结构等操作

三个级别认证:

  • 服务器级别,也称身份认证
  • 数据库级别
  • 数据库对象级别

服务器登录名:服务器级别认证

数据库用户:数据库级别认证。在数据库级别进行认证和授权的对象。不同的数据库用户可以具有不同的权限,以便执行数据库中的各种操作。

  • dbo:数据库所有者(Database Owner)是数据库的默认用户,拥有数据库中的所有权限。它通常在数据库创建时自动存在,并具有最高权限。
  • guest:这是一个特殊的用户,表示未在数据库中明确授权的用户。只有当数据库没有其他用户时,guest用户才能访问数据库。

角色管理

  • 服务器角色:固定的,不能增加删除
  • 数据库角色:在数据库级别上定义的权限集合,用来管理和限制用户对特定数据库的操作权限。用户可以被授予一个或多个角色,允许他们在数据库中执行不同的操作。

架构:架构是一组数据库对象的集合。它是组织数据库对象(如表、视图、存储过程等)的方式,类似于文件系统中的文件夹。常用于将数据库对象按功能或业务划分。

权限管理

  • 权限包括:对象权限、语句权限、隐式权限(不需授予就有的)

  • 权限操作:授予:GRANT,禁止:DENY,撤销:REVOKE、查看:EXECUTE

  • 例如,授予数据库用户dbuser2查询和修改Goods表的权限

    GRANT SELECT, UPDATE ON Goods TO dbuser2
    
  • 例如,禁止guest用户对Goods表进行查询、添加、修改和删除操作

    DENY SELECT, INSERT, UPDATE, DELETE ON Goods TO guest
    
  • 例如,撤销数据库用户dbuser2对表Goods的查询和修改权限

    REVOKE SELECT, UPDATE ON Goods FROM dbuser2
    
  • 例如,查看数据库用户dbuser2拥有的权限。

    EXECUTE sp_helprotect @username='dbuser2'
    
  • 例如,查看获得CREATE VIEW权限的用户信息。

    EXECUTE sp_helprotect @name='CREATE VIEW'
    

2 事务概述

事务:用户定义的一些操作语句,这些语句要么全部执行要么全部不执行。事务时数据库操作中最小单位,必须是一个整体

事务实例:一条SQL语句,一组SQL语句、整个程序

事务特性(ACID特性):

  • 原子性:所有操作都是不可分割的整体,这些操作要么全部执行,要么全部不执行
  • 一致性:事务执行完成后,数据库中的内容必须全部更新。如果中途出故障,会回滚到事务开始的一致性状态
  • 隔离性:不能被其他事务干扰
  • 持续性:一旦提交,影响永久

ACID特性可能遭到破坏的因素

  1. 多个事务并行运行时,不同事务的操作交叉执行。此时 DBMS 必须保证多个事务的交叉运行不影响这些事务的原子性。
  2. 事务在运行过程中被强行停止。此时 DBMS 必须保证被强行停止的事务对数据库和其他事务没有任何影响。

事务的处理模型

  • 显式事务,是指事务有显式的开始和结束标记
    • 开始:首条INSERT语句 或者 BEGIN TRANSACT
    • 结束:COMMIT
  • 隐式事务,是指每一条数据操作语句都自动成为一个事务

3 并发控制

串行:一个事务完成以后,再开始另一个事务

并行:多个事务在时间上可以重叠执行

并行特点

  • 优点:提高系统资源的利用率,改善事务的响应时间
  • 缺点:可能会破坏事务的 ACID 特性(隔离性)

并行导致的问题

  • 丢失数据:两个或两个以上的事务在更新同一数据值时,会发生某些修改被覆盖(丢失)

  • 读“脏”数据:指一个事务读取了另一个事务运行失败过程中的数据。

    注:但失败事务会回滚,而另一个事务却读取到了失败事务进行过程中的错误数据

  • 不可重复读:两次前后读取的数据不一样的情况

  • “幽灵”数据:不可重复读的一种特殊情况。刚读完数据就被添加,下次再读发现变多

并发控制的目的:用某种方法来执行并发操作,使一个事务的执行不受其他事务的干扰,避免造成数据的不一致

并发控制的方法封锁机制

封锁是指一个事务T在对某个数据对象进行操作之前,先向系统发出请求,对其加锁。加锁后事务T对该数据对象有一定的控制权,在事务结束后释放锁。而在事务T释放锁之前,其他事务不能更新此数据对象,以保证数据操作的正确性和一致性

锁的类型

  • 排他锁(X锁):事务对数据进行访问时,其他事务不能读取或更新锁定的数据,其他事务不能对被锁的对再加任何类型的锁。本质上:禁止并发操作。
  • 共享锁(S锁):允许读取,但不能修改。如事务T给对象加S锁,那么事务T只能读取对象而不能修改,其他事务也只能对该对象加S锁,不能加X锁,直到事务T释放对象S锁。保证了其他事务可以读取R,而不能在释放R上的S锁之前对R进行修改操作

对数据库中数据进行读取操作不会破坏数据的完整性,更新操作才会破坏数据的完整性。加锁的真正目的在于防止更新操作对数据一致性的破坏

封锁协议

  1. 一级封锁协议:修改数据时加X锁,读取时不加锁。结果:防止丢失数据,不保证可重复读和读“脏”数据。
  2. 二级封锁协议:修改数据时加X锁,读取加S锁,并且读完立即释放S锁。结果:防止数据丢失更新问题,防止读“脏”数据,不能保证可重复读。
  3. 三级封锁协议:修改数据时加X锁,读取加S锁,读取完不立即释放,等事务结束才释放。结果:防止数据丢失更新问题,防止读“脏”数据,保证可重复读。

总结:

image-20250102180932760

活锁

  • 当两个或多个事务请求对同一数据进行封锁时,可能会存在某个事务处于永远等待锁的情况
  • 解决:先来先服务策略

死锁

  • 在同时处于等待状态的两个或多个事务中,其中每一个事务又在等待其他事务释放封锁后才能继续执行(两个事务互相等待彼此封锁的数据),这样出现多个事务彼此相互等待的状态
  • 如何解决?
  • 预防死锁发生(困难)
    • 一次性封锁法:一次性封锁法要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行。缺点:扩大封锁范围,降低并发度,从而影响系统效率,并且精确决定封锁对象是困难的
    • 顺序封锁法:所有事务必须按照一个预先约定的封锁顺序对所要用到的数据对象进行封锁。也很难做到事先预测。
  • 解决死锁。发生后调用程序去解决。
    • 超时法。周期太长可能不能及时发现。周期太短可能会误判。
    • 事务等待图法。结点:事务。边:等待关系。若图中有回路,说明有锁。
    • 通常采用的方法是选择一个处理死锁代价最小的事务,将其撤销,释放该事务持有的所有锁,使其他事务得以继续运行下去

并发调度的可串行性

多个事务的并发执行什么情况下是正确的?
当且仅当结果与按某一顺序串行地执行这些事务时的结果相同这种调度策略被称为可串行化的调度

==可串行性是并发事务正确调度的准则。==可能会有多种结果,但其一都是正确的。

两段锁协议:用于实现可串行化

  • 申请阶段。在对任何数据进行读写操作之前,要先申请并获得对该数据的封锁。可申请任何锁,但不允许释放任何锁。
  • 在释放一个封锁之后,事务不再申请和获得对该数据的封锁。可释放任何锁,但不允许申请任何锁。

遵循两段锁协议一定能可串行化。但可串行化不一定遵循了两段锁协议。二者是充分不必要关系。

总之:申请必须连续,释放也必须连续,不允许申请-释放-又申请。


4 备份与恢复管理

数据备份:指定期或不定期地对数据库及其相关信息进行复制,在本地机器或其他机器上创建数据库的副本。

数据恢复:当系统运行过程中发生故障时,利用数据库的备份副本和日志文件将数据库恢复到故障前的某个一致性状态

数据备份类型

  1. 完全备份:整个数据库。表、视图、索引等数据库对象和日志部分。适用小型数据库。

  2. 差分备份:仅备份自上次完全备份以来数据改变部分的内容。速度快,节省空间。适用于频繁修改的数据库。

  3. 事务日志备份:对事务日志进行备份,备份时复制自上次备份以来对数据库所做的改变。仅需要很少的时间。建议频繁备份。

    注:事务日志备份和差分备份的区别是差分备份无法将数据库恢复到出现故障前某一个指定的时刻,它只能将数据库恢复到上一次差分备份结束的时刻

  4. 文件或文件组备份:数据库由磁盘上的许多文件构成。如果数据库非常大,执行完全备份是不可行的,可以使用文件备份或文件组备份来备份数据库的一部分

建立备份设备

  1. 使用 Management Studio 建立备份设备

  2. 使用系统存储过程建立备份设备

    sp_addumpdevice @devtype=disk,@logicalname=’ SuperMarket_bakdevice’ -- 逻辑设备名
    ,@physicalname=’ E:\Database\SuperMarket_full.bak' --物理设备名
    

数据备份操作

  1. 使用 SQL Server Management Studio 备份数据库
  2. 使用 T-SQL 语句备份数据库。
    • 注:必须先创建完全备份,才能创建第一个日志备份

示例:备份SuperMarket数据库的事务日志,备份集名为SuperMarket_log_20180615,保留7天

BACKUP LOG SuperMarket -- 完全备份的话LOG改为DATABASE
TO DISK=’E:\Database\supermarket.bak’
WITH
NAME=’SuperMarket_log_20180615’, DESCRIPTION=’日志备份’, RETAINDAYS=7

数据恢复类型

事务故障恢复:事务在运行到正常终止点前被中止,利用事务操作的日志文件撤销该事务对数据库进行的修改。

具体步骤:从后往前,反向操作:删的插入,插入的删除,修改的恢复旧值。直到该事务开始标志的地方。(不需数据库管理员操作)

系统故障恢复:系统蓝屏死机,使得事务终止。

做法:先扫描日志文件,找出在故障发生前已提交的事务,对其中的各个事务进行撤销处理,其方法同事务故障恢复一致。(不需数据库管理员操作)

介质故障恢复:物理磁盘的数据被破坏,导致数据无法恢复。

做法:重装数据库,然后重做事务

具体:

  • 先装入最新的数据库备份副本,使数据库恢复到最近一次存储时的一致性状态
  • 再装入最新的日志文件副本,根据日志文件中的内容重做已完成的事务

数据恢复方式

  1. 使用Microsoft SQL Server Management Studio。
  2. 使用T-SQL语句恢复数据库

示例:使用SuperMarket 数据库的完整数据库备份进行恢复

RESTORE DATABASE SuperMarket
FROM DISK=’ E:\Database\supermarket.bak’
WITH REPLACE, NORECOVERY

RECOVERY | NORECOVERY:指示恢复操作是否回滚所有未曾提交的事务。

REPLACE:会覆盖所有现有数据库以及相关文件,包括已存在同名的其他数据库或文件。强制还原。


相关文章:

【数据库】四、数据库管理与维护

文章目录 四、数据库管理与维护1 安全性管理2 事务概述3 并发控制4 备份与恢复管理 四、数据库管理与维护 1 安全性管理 安全性管理是指保护数据库,以避免非法用户进行窃取数据、篡改数据、删除数据和破坏数据库结构等操作 三个级别认证: 服务器级别…...

徐克版射雕唤醒热血武侠魂,共赴新春侠义之约

2025年大年初一,由徐克执导的古装武侠电影《射雕英雄传:侠之大者》将在影院拉开帷幕,在精彩纷呈的春节档电影中,“大IP”“大导演”“大场面”等标签让这部电影自定档起便备受关注,其精良的制作和传统中国武侠风的设定…...

设计模式(观察者模式)

设计模式(观察者模式) 第三章 设计模式之观察者模式 观察者模式介绍 观察者模式(Observer Design Pattern) 也被称为发布订阅模式 。模式定义:在对象之间定义一个一对多的依赖,当一个对象状态改变的时候…...

能量函数和能量守恒

在之前的文章1中讨论了与循环坐标相对应的动量守恒定律和动量矩守恒定律,本文将由拉格朗日方程中导出能量函数,进一步讨论能量守恒定律,并给出耗散系统的处理方法,这其中用到的一个关键数学定理是欧拉定理(描述如何将一…...

【pycharm发现找不到python打包工具,且无法下载】

发现找不到python打包工具,且无法下载 解决方法: 第一步:安装distutils,在CMD命令行输入: python -m ensurepip --default-pip第二步:检查和安装setuptools和wheel: python -m pip install --upgrade …...

使用 Maxwell 计算母线的电动势

三相短路事件的动力学 三相短路事件在电气系统中至关重要,因为三相之间的意外连接会导致电流大幅激增。如果管理不当,这些事件可能会造成损坏,因为它们会对电气元件(尤其是母线)产生极大的力和热效应。 短路时&#x…...

【Python】Python之Selenium基础教程+实战demo:提升你的测试+测试数据构造的效率!

这里写目录标题 什么是Selenium?Selenium基础用法详解环境搭建编写第一个Selenium脚本解析脚本常用的元素定位方法常用的WebDriver方法等待机制 Selenium高级技巧详解页面元素操作处理弹窗和警告框截图和日志记录多窗口和多标签页操作 一个实战的小demo步骤一&#…...

Ubuntu中批量重命名,rename

你可以使用下面的命令批量重命名这些文件,在文件名中插入 _1: 方式一 使用 mv 命令批量重命名 如果你已经在终端中,且当前目录包含这些文件,可以执行以下命令: mv ai.c ai_1.c mv ai.h ai_1.h mv ao.c ao_1.c mv a…...

LINUX 下 NODE 安装与配置

一、官网地址: (中文网)https://nodejs.cn/ (英文网)https://nodejs.org/en/ 二、下载安装包 2.1、下载地址:下载 | Node.js 中文网 https://nodejs.cn/download/ 2.2、使用 wget 命令下载到linux 服务器…...

Vue3 el-tree-v2渲染慢的问题

一、现象 使用el-tree-v2处理组织架构权限时,整个树的数据在8500条,勾选数据8200条,打开页面需要8~10秒,用户无法接受。 经调试,发现主要卡在树的渲染回显上(勾选数据少时,很快,勾选…...

【redis初阶】浅谈分布式系统

目录 一、常见概念 1.1 基本概念 2.2 评价指标(Metric) 二、架构演进 2.1 单机架构 2.2 应用数据分离架构 2.3 应用服务集群架构 2.4 读写分离/主从分离架构 2.5 引入缓存 ⸺ 冷热分离架构 2.6 数据库分库分表 2.7 业务拆分 ⸺ 引入微服务 redis学习&…...

模式识别与机器学习 | 十一章 概率图模型基础

隐马尔科夫模型(Hidden Markov Model,HMM) HMM是建模序列数据的图模型 1、第一个状态节点对应一个初始状态概率分布 2、状态转移矩阵A, 3、发射矩阵概率B 4、对特定的(x,y)的联合概率可以表示为 α递归计算——前向算法β递归…...

Linux基本指令(1)

一、ls指令 功能:对于目录,显示这个目录下的目录名以及文件名;对于文件,显示文件名 后面可接命令行选项配合使用,接选项时ls与选项以及选项与选项之间要有一个空格; 这里先学习了两个选项:-l…...

逐“绿”前行 企业综合能源管控低碳转型如何推进?

引言: 在“双碳”战略指引下,中国低碳节能各项工作有序推进,逐步建立起碳达峰碳中和“1N”的政策体系,重点领域、重点行业及各地区的碳达峰实施方案相继出台。能源对于促进经济社会发展、增进人民福祉至关重要。近年来&#xff0…...

springboot和vue配置https请求

项目场景: 代码发布到线上使用https请求需要配置ssl证书,前后端都需要修改。 问题描述 如图,我们在调用接口时报如下错误,这就是未配置ssl但是用https请求产生的问题。 解决方案: 前端:在vite.config.js文…...

数据库(2)--建表 表操作

1.建表 语法: create table if not exists 表名( 类型名 类型 comment ‘注释内容’, ... )设置字符集编码与排序规则; create table if not exists student( name char(10) comment 姓名, id bigint comment 学号 )character set utf8mb4 collate utf8mb4_0900_a…...

泷羽sec----学会并玩转powershell【基础1-2】

声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&#…...

2 逻辑符号

在文件和目录的判断或者其他情况中,可以组合使用多个条件。 逻辑与 (&&) 逻辑与运算符 && 用于在多个条件都为真时执行某个操作。 # 判断文件是否存在且可读 if [ -f "$file" ] && [ -r "$file" ]; thenecho "…...

Android基于回调的事件处理

Android 中的回调机制:基于回调的事件处理详解 在 Android 开发中,回调(Callback)是一种常见的事件处理机制,主要用于异步操作和事件通知。与传统的基于监听器的事件处理相比,回调机制更加灵活、通用&…...

跨界融合:人工智能与区块链如何重新定义数据安全?

引言:数据安全的挑战与现状 在信息化驱动的数字化时代,数据已成为企业和个人最重要的资产之一。然而,随着网络技术的逐步优化和数据量的爆发式增长,数据安全问题也愈变突出。 数据安全现状:– 数据泄露驱动相关事件驱…...

qml SpringAnimation详解

1. 概述 SpringAnimation 是 Qt Quick 中用于模拟弹簧效果的动画类。它通过模拟物体在弹簧力作用下的反应,产生一种振荡的动画效果,常用于模拟具有自然回弹、弹性和振动的动态行为。这种动画效果在 UI 中广泛应用,特别是在拖动、拉伸、回弹等…...

Qt 5.14.2 学习记录 —— 칠 QWidget 常用控件(2)

文章目录 1、Window Frame2、windowTitle3、windowIcon4、qrc机制5、windowOpacity 1、Window Frame 在运行Qt程序后,除了用户做的界面,最上面还有一个框,这就是window frame框。对于界面的元素,它们的原点是Qt界面的左上角或win…...

Windows service运行Django项目

系统:Windows Service 软件:nssm,nginx 配置Django项目 1、把Django项目的静态文件整理到staticfiles文件夹中 注:settings中的设置 STATIC_URL /static/ STATIC_ROOT os.path.join(BASE_DIR, staticfiles/) STATICFILES_DI…...

notebook主目录及pip镜像源修改

目录 一、notebook主目录修改二、pip镜像源修改 一、notebook主目录修改 在使用Jupyter Notebook进行数据分析时,生成的.ipynb文件默认会保存在Jupyter的主目录中。通常情况下,系统会将Jupyter的主目录设置为系统的文档目录,而文档目录通常位…...

Linux(Centos 7.6)命令详解:touch

1.命令作用 如果文件不存在将创建一个空文件;修改文件修改访问时间。 2.命令语法 Usage: touch [OPTION]... FILE... 3.参数详解 Usage: -a,access 只修改访问时间-c,不创建任何文件-d,--dateSTRING 解析STRING并使用它替代…...

ubuntu 下生成 core dump

在Ubuntu下,发现程序崩溃后不生成core dump文件, 即使设置了ulimit -c unlimited后仍然无效。 1.ulimit -c unlimited 输出的的含义是核心转储文件的大小限制,单位是blocks,默认是0,表示不生成core dump文件。 2. 重设core_pattern ulimit -c unlimited后,核心转储文件…...

大数据智能选课系统

1.产品介绍 产品名称:大数据智能选课系统 一、产品概述 随着信息技术的快速发展,大数据技术在教育领域的应用越来越广泛。针对当前高校选课过程中的繁琐操作、资源分配不均等问题,我们研发了一款基于大数据智能分析的选课系统。本系统旨在…...

HTTP-响应协议

HTTP的响应过程? 浏览器请求数据--》web服务器过程:请求过程 web服务器将响应数据-》到浏览器:响应过程 响应数据有哪些内容? 1.和请求数据类似。 2. 响应体中存储着web服务器返回给浏览器的响应数据。并且注意响应头和响应体之间…...

[离线数仓] 总结三、Hive数仓DIM层开发

5.9 数仓开发之DIM层 DIM层设计要点: (1)DIM层的设计依据是维度建模理论,该层存储维度模型的维度表。 (2)DIM层的数据存储格式为orc列式存储+snappy压缩。 (3)DIM层表名的命名规范为dim_表名_全量表或者拉链表标识(full/zip)。 -- 数仓开发之DIM层 -- DIM层设计要点:…...

搭建RK3588开发板Qt交叉编译环境

一、开发环境 在虚拟机里安装Ubuntu20.04Qt5.14.2交叉编译器gcc-linaro-7.5.0 二、相关资料下载 在虚拟机里安装Ubuntu20.04 Ubuntu20.04镜像下载(https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/)安装Qt5.14.2 下载安装包和源码 安装包(http…...

【Rust自学】11.3. 自定义错误信息

喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 11.3.1. 添加错误信息 在 11.2. 断言(Assert) 中我们学习了assert!、assert_eq!和assert_ne!这三个宏,而这篇文章讲的就是它…...

ROS核心概念解析:从Node到Master,再到roslaunch的全面指南

Node 在ROS中,最小的进程单元就是节点(node)。一个软件包里可以有多个可执行文件,可执行文件在运行之后就成了一个进程(process),这个进程在ROS中就叫做节点。 从程序角度来说,node就是一个可执行文件&…...

Autodl安装tensorflow2.10.0记录

首先租用新实例(我选的是3080*2卡),由于基础镜像中没有2.10.0版本,选miniconda3的基础环境 创建虚拟环境:conda create --name xxx python3.8(环境名)激活虚拟环境:conda activate x…...

Linux第一课:c语言 学习记录day06

四、数组 冒泡排序 两两比较,第 j 个和 j1 个比较 int a[5] {5, 4, 3, 2, 1}; 第一轮:i 0 n:n个数,比较 n-1-i 次 4 5 3 2 1 // 第一次比较 j 0 4 3 5 2 1 // 第二次比较 j 1 4 3 2 5 1 // 第三次比较 j 2 4 3 2 1 5 // …...

代码随想录day03

203 链表基础操作 class Solution { public:ListNode* removeElements(ListNode* head, int val) {while (head!NULL&&head->valval){ListNode* temphead;headhead->next;delete temp;}ListNode* curhead;while (cur!NULL&&cur->next!NULL){if(cur-…...

python-leetcode-无重复字符的最长子串

3. 无重复字符的最长子串 - 力扣(LeetCode) class Solution:def lengthOfLongestSubstring(self, s: str) -> int:char_set set()left 0max_length 0for right in range(len(s)):while s[right] in char_set:char_set.remove(s[left])left 1char_…...

30天开发操作系统 第 12 天 -- 定时器 v1.0

前言 定时器(Timer)对于操作系统非常重要。它在原理上却很简单,只是每隔一段时间(比如0.01秒)就发送一个中断信号给CPU。幸亏有了定时器,CPU才不用辛苦地去计量时间。……如果没有定时器会怎么样呢?让我们想象一下吧。 假如CPU看不到定时器而仍想计量时…...

RNN之:LSTM 长短期记忆模型-结构-理论详解(Matlab向)

前言 递归!循环神经网络Recurrent Neural Network 循环神经网络(又称递归神经网络,Recurrent Neural Network,RNN)。是一种用于处理序列数据的神经网络结构,具有记忆功能,能够捕捉序列中的时间…...

vue的路由守卫逻辑处理不当导致部署在nginx上无法捕捉后端异步响应消息等问题

近期对前端的路由卫士有了更多的认识。 何为路由守卫?这可能是一种约定俗成的名称。就是VUE中的自定义函数,用来处理路由跳转。 import { createRouter, createWebHashHistory } from "vue-router";const router createRouter({history: cr…...

C++版的飞翔的小鸟

忙了几天,写了个小鸟游戏打发时间。 MINGWOPENGL 作者很懒,具体看readme.txt吧。 好吧,这就是个当网盘用的,没有售后服务的,而且还不怎么会上传文件。。。😂😂 顺便问下,这破玩意上…...

深入详解自然语言处理(NLP)中的语言模型:BERT、GPT及其他预训练模型的原理与应用

【自然语言处理】——深入详解自然语言处理(NLP)中的语言模型:BERT、GPT及其他预训练模型的原理与应用 自然语言处理(NLP)是人工智能(AI)领域中的重要分支,旨在通过计算机处理和分析…...

EFCore HasDefaultValueSql (续1 ValueGeneratedOnAdd)

前情:EFCore HasDefaultValueSql 小伙伴在使用 HasDefaultValueSql 时,对相关的 ValueGeneratedOnAdd 也有了疑问: ValueGeneratedOnAdd 和 HasDefaultValueSql 是 Entity Framework Core 中用于管理字段默认值的两种不同配置方式&#xff0…...

React PureComponent使用场景

1. 基本概念 1.1 什么是 PureComponent PureComponent 是 React 提供的一个优化类组件,它通过自动实现 shouldComponentUpdate 生命周期方法,对 props 和 state 进行浅比较来决定是否需要重新渲染组件。 1.2 与 Component 的区别 // 普通 Component …...

初学者如何利用AI辅助编程快速搭建软件原型

在当今这个快速发展的科技时代,AI辅助编程已成为软件开发领域的一大助力,尤其在搭建软件原型阶段,更是能帮助开发者快速探索众多想法,创造出新事物。吴恩达老师最近分享了关于搭建简单Web应用原型的一些最佳实践,其中重…...

六、Angular 发送请求/ HttpClient 模块

一、应用 HttpClient 模块 angular/common/http 中的 HttpClient 类基于浏览器提供的 XMLHttpRequest 接口。要想使用 HtpClient 模块,就要先导入 Anqular 的 HttpClientModule。大多数 Web 应用程序都会在根模块 AppModule 中导入它。 编辑 src/app/app.module.ts…...

11_Redis数据类型-Geo地理位置

1.Geo地理位置介绍 1.1 基本概念 Redis中的GEO(Geographic)是一种专门用于处理地理位置信息的功能模块,自Redis 3.2版本引入。它特别适合用于LBS(基于位置的服务)应用,如查找附近的餐馆、用户或兴趣点等。Redis GEO的实现依赖于有序集合(sorted set),并且利用了Geoh…...

电脑每次开机卡到windows图标界面进不去

我遇到的现象是: 可以正常开机,也可以重装系统,主板电池换过,硬盘,内存也没问题,但每次开机都会卡到这个界面不动,也不崩溃,也进不去系统。最后的解决方法:换CPU&#x…...

如何将 DotNetFramework 项目打包成 NuGet 包并发布

如何将 DotNetFramework 项目打包成 NuGet 包并发布 在软件开发过程中,将项目打包成 NuGet 包并发布到 NuGet 库,可以让其他开发者方便地引用和使用你的项目成果。以下是将 WixWPFWizardBA 项目打包成 NuGet 包并发布的详细步骤: 1. 创建 .n…...

7 分布式定时任务调度框架

先简单介绍下分布式定时任务调度框架的使用场景和功能和架构,然后再介绍世面上常见的产品 我们在大型的复杂的系统下,会有大量的跑批,定时任务的功能,如果在独立的子项目中单独去处理这些任务,随着业务的复杂度的提高…...

鸿蒙UI开发——日历选择器

1、概 述 在项目开发中,我们时常会用到日历选择器,效果如下: ArkUI已经为我们提供了组件,我们可以直接使用,下面针对日历组件做简单介绍。 2、CalendarPickerDialog 接口定义如下: // 定义日历选择器弹…...