【SQL Server】华中农业大学空间数据库实验报告 实验九 触发器
1.实验目的
- 通过实验课程与理论课的学习深入理解掌握的触发器的原理、创建、修改、删除、基本的使用方法、主要用途,并且可以在练习的基础上,熟练使用触发器来进行数据库的应用程序的设计;
- 深入学习深刻理解与触发器相关的T-SQL语句的编写的基本原理、编写方法与常见的编写规范,并通过与数据查询、存储过程的T-SQL语句进行比较,充分了解其间的差异,从而进一步理解T-SQL语句编写代码的方法。
2.实验内容
- 创建并执行触发器:交互式为数据库表S创建一级联更新触发器TRIGGER_S、交互式为数据库表SC创建一个限制更新触发器TRIGGER_SC、用SQL为数据库表SC创建一个触发器Score_SC_TRI、用SQL为数据库表C创建一个级联删除触发器TRIGGER_DC;
- 修改触发器:交互式修改数据库表S的触发器TRIGGER_S、用SQL修改数据库表C的触发器TRIGGER_DC;
- 删除触发器:交互式删除数据库表S的触发器TRIGGER_S、用SQL删除数据库表C的触发器TRIGGER_DC。
3.实验步骤
3.1创建并执行触发器
1.交互式为数据库表S创建一级联更新触发器TRIGGER_S
要求:若修改STUDENT表中一位学生的学号,则SC表中与该学生相关的学号自动修改:
(1)点击【对象资源管理器】—>【数据库】—>【jiaoxuedb】—>【任意一数据库表】—>【触发器】,即可打开新建触发器的编辑窗口如下所示:
(2)根据实验要求,输入代码如下所示,其代码主要分为两个部分,上半部分:创建触发器名称与在哪个数据库表上创建触发器,并且是在进行什么操作(包括UPDATE、INSERT、DELETE)时触发触发器;下半部分:首先声明我们需要用到的形参变量,然后利用SQL语句编写更新代码,SELECT为获得数据,UPDATE表名 SET字段=新值,WHERE条件:
(3)验证触发器作用:首先如果STUDENT表与SC表间建立了外键关系,我们需要删除外键,因为外键也会达到跟随变更的效果,我们需要删除外键,仅需要触发器TRIGGER_S单独的效果;
我们将STUDENT表中的S4同学改为S9同学,保存后回到SC表中,可以看到SC表中已经没有S4同学,但是出现了S9同学了:
2.交互式为数据库表SC创建一个限制更新触发器TRIGGER_SC
要求:若修改SC表中一记录的学号,则要检查表STUDENT中是否存在与该学号相同的记录,若存在则不许修改,若不存在则可修改。
(1)新建触发器的编辑窗口,输入代码如下所示,其代码同样分为两部分,上半部分:创建触发器名称:TRIGGER_SC,在数据库表SC上创建触发器,当对列属性SNO有UPDATE指令时触发;下半部分:首先声明我们需要用到的形参变量,然后利用SQL语句编写更新代码,SELECT为获得数据,如果@SNO_CNT不为0,则rollback transaction滚回原操作,即不执行此次更新的操作:
(2)验证触发器作用:在SC表中如果想将SNO值修改为STUDENT表中已有的值,则会自动报错,报错内容显示事物在触发器中结束,说明触发器阻止了此不合规范的操作:
3.用SQL为数据库表SC创建一个触发器Score_SC_TRI
要求:当插入一个记录或修改成绩时,确保此记录的成绩在0—100分内
(1)新建触发器的编辑窗口,输入代码如下所示,其代码含义为:上半部分在数据库表SC上,针对操作UPDATE与INSERT,创建触发器命名为Score_SC_TRI,并声明将会用到的变量;下半部分同SQL语句的编码思路,SELECT语句为我们的形参赋值,IF为触发器触发的条件,且只负责离它最近的一个BEGIN END语句:
(2)验证触发器作用:使用交互式的方法想要将某一位同学的成绩更改为超过100分时,则会自动报错,报错内容显示事物在触发器中结束,说明触发器阻止了此不合规范的操作:
4.用SQL为数据库表C创建一个级联删除触发器TRIGGER_DC
要求:通过课程名从COURESE表中删除某课程信息,同时删除SC表中与此课程相关的选课记录
(1)新建查询,输入代码如下所示,其代码含义为:上半部分在数据库表COURESE上,针对操作DELETE,创建触发器命名为TRIGGER_DC,并声明将会用到的变量;下半部分同SQL语句的编码思路,SELECT语句为形参赋值,DELETE语句进行相应的实验要求操作,此处不需要BEGIN END语句也可以完成触发器的建立:
(2)验证触发器作用:使用交互式的方法在COURESE表中删除课程C5的信息,回到SC表中可以发现选择课程C5的学生的课程信息、成绩都已经被删除了。
3.2修改触发器
1.交互式修改数据库表S的触发器TRIGGER_S
点击【对象资源管理器】—>【数据库】—>【jiaoxuedb】—>【任意一数据库表】—>【触发器】—>【任意一触发器】,点击修改即可打开触发器的编辑界面,根据要求修改触发器即可:
2.用SQL修改数据库表C的触发器TRIGGER_DC
要求:通过课程名从COURESE表中删除某课程信息,同时删除SC表和TC表中与此课程相关的选课记录
新建查询,输入代码如下所示,执行后即可修改触发器,与存储过程的修改相同,与其说是修改触发器,更类似重新编写了一个触发器,因为其基本的修改思路就是重新编写了一个触发器,无论其属性需不需要修改,依然需要写在SQL语句中;
3.3删除触发器
1.交互式删除数据库表S的触发器TRIGGER_S
点击【对象资源管理器】—>【数据库】—>【jiaoxuedb】—>【任意一数据库表】—>【触发器】—>【任意一触发器】,右击后即可看到删除选项
2.用SQL删除数据库表C的触发器TRIGGER_DC
新建查询,输入代码如下所示,T-SQL语句中,DROP语句是非常通用的删除语句,一般的删除数据库、数据库表等都是利用DROP语句:
4.课后习题
基于教学数据库jxsk,创建下面的触发器,并给出正反实例:
1.为数据库表SC创建--触发器:当插入或修改-一个记录时,确保此记录的成绩在0—100分之间:
新建查询,输入代码如下所示,创建一个命名为TRIGGER_SC_1的触发器:
验证:交互式修改S3的C2数据,右图所示为将分数从100改至60,显示成功,而将分数由100改至110,则会显示触发器报错,说明触发器创建成果且符合实际需要:
2.为数据库表C、TC和SC创建参照完整性:级联删除和级联修改触发器:
新建查询,输入代码如下所示,创建一个命名为TRIGGER_SC_1的触发器:
验证:新建查询,输入代码如下所示,利用T-SQL语句修改COURESE表中C6课程的课程号为C7:
结果如下:其中1行受影响为数据库TC,3行受影响为数据库表SC:
3.为数据库表T创建一触发器:当职称从“讲师”晋升为“副教授”时,岗位津贴自动增加500元;从“副教授”晋升为“教授"时,岗位津贴自动增加900元:
新建查询,输入代码如下所示,创建一个命名为TRIGGER_T的触发器:
验证:新建查询,输入代码如下所示,利用T-SQL语句修改教师号为T4的教师职称由讲师更改为副教授:
结果如下所示,当教师职称发生改变时,薪水将会一起改变:
5.实验总结
1.相关概念的学习与区分
存储过程的相关原理:
存储过程代码的编写,其实本质上就是利用SQL语句编写代码的一个过程,只是将比较复杂的过程封装了起来,并且引入了形参作为我们实际使用的变量,形参是存储过程与触发器中都非常重要的一部分,编写存储过程的代码,只有在声明变量时,输出数据的形参后不需要加OUTPUT,其余部分都需要加OUTPUT。因此虽然创建存储过程的编辑窗口看起来很复杂(尤其是交互式方法),但其实原理是非常好理解的,代码的编写也十分简单直接。
而调用存储过程,在我们此次实验过程中可以明显感受到,相比起交互式方法与T-SQL语句的方法,存储过程似乎并没有给我们带来多少的便捷,其根本原因还是在于我们目前数据库中的数据量太少了,这也导致我们无法很好的体验到存储过程设计的目的与优势,事实上,存储过程最大的优点就在于它提高SQL语句的重用性,不仅仅是简化了我们反复编译的操作,同时减少了我们表与表、数据库与服务器的连接次数,从而提高了查询数据库的效率。
触发器的相关原理:
触发器的根本目的,是为了保证实现数据库的完整性,简单理解来说就是保证数据库表中数据可以同步更新,这样看来,触发器的作用与效果与我们之前实验课接触的约束十分相似。
但触发器这一工具,主要运用的是数据库中DELETED表与INSERTED表:DELETED表用于存储 DELETE和UPDATE语句所影响的行的副本;INSETED表用于存储 INSERT和UPDATE语句所影响的行的副本。触发器更像是利用我们自行编写的SQL语句来对数据库进行一定的‘约束’,相比于之前所学的内容,逻辑上更方便于理解。
2.代码执行与编写思路总结
在此次实验中,正确理解如何利用SQL语句编写创建存储过程与触发器的代码是最为重要也是最困难的一步,部分同学如果实验过程中只是对着实验指导书上的内容照抄,而忽略了进行自我的思考与总结的话,就很难学到此次实验课中的精髓,因此我将我对代码的理解以文字的内容总结如下:
存储过程:以下图的存储过程的代码为例
基础(上半)部分为:CREATE PROCEDURE+【存储过程名】+【形参名】+【形参类型】,其中多个形参用逗号隔开;
下半部分为:AS起手,作为上半与下半的分界线,AS后的所有内容,即符合我们SQL语句编写代码的原理与思路。
触发器:以下图的触发器的代码为例
基础部分为:CREATE TRIGGER 【触发器名】 ON 【数据库表名】 FOR 【UPDATE、INSERT、DELETE】(在进行什么操作时触发触发器);
重点编写部分:AS起手,作为分界线
首先+DECLARE,声明我们要用到的所有形参变量及其数据类型;
其次+SELECT FROM WHERE语句,为我们声明的形参变量赋值;
而后的内容,就是根据实验要求需要,利用SQL语句进行代码编写:
IF+通常加在什么样的情况下触发器触发;
BEGIN END 语句:BEGIN+在IF的条件下数据库表进行什么样的修改,可以有多个BEGIN END 语句
ROLLBACK TRANSACTION语句:表示不执行该操作,回滚至原来值。
3.常见问题总结
调用存储过程,SELECT获取的查询结果不符合实际需要:
在创建成功存储过程后,为验证存储过程是否符合我们的需求,一般都会调用存储过程以进行验证,但在此次存储过程的第一个实验步骤进行验证时,就发现得到的结果不符合预期,存储过程返回的结果并不是一个表,而是一个单独的值。
经过老师讲解后我们可以知道,其根本原因在于在调用存储过程的代码中,我们使用的是SELECT的调用函数,此函数在我们目前编写的代码逻辑中,得到的第二个结果会将第一个结果覆盖,因此导致:如果我们应该得到多个结果,最后得到结果却只有一个,而且固定为结果中的最后一个。
为得到准确的结果,根据老师讲解,我可以用到理论课学习的与后续实验课程会练习的游标(Cursor),循环输SELECT调用函数的查询结果,此次实验中就不再进行深入的探讨与研究,在后续的实验过程中希望有更详细具体的学习。
4.实验心得
(1)本次存储过程与触发器实验的实验操作其实都较为简单,是思路非常清晰的创建、修改、删除一条龙式的实验过程,同时因为有实验指导书的辅助与参考,对于大部分同学来说完成实验内容应该并不是一件困难的事,但其实验比较关键的一点在于:真正理解代码编写的原理,与如何解决验证过程中常出现的一些的错误。因为与往次实验不同的是,在存储过程与触发器编写过程中,我们很少出现代码的报错错误,但在交互式或T-SQL语句编写调用存储过程或触发器的代码时,却常出现得到结果不符合我们预期的情况,考虑到交互式方法的缺点、主外键的影响、约束的限制等等因素,这类情况出现的原因有很多。但归根结底,只要理清其中的逻辑与原理就不难解决;
(2)此次实验中,我感受最为明显的一点就是SQL语句相比于交互式方法的优点:首先是在创建存储过程或触发器的过程中,我们可以很直接的感受到,就算是交互式方法,其底层思路依然是要编写SQL语句,而且交互式方法打开的编辑界面还较为复杂,并不像SQL方法新建查询简洁;除此之外,在调用存储过程或触发器时,如果用交互式直接修改,往往不能立即得到触发器的反馈,而交互式则会直接提示(几行受到影响);同时,如果调用存储过程或触发器显示报错,SQL语句的方法显示的报错原因也比交互式方法更为详细,更方便于我们针对报错原因进行修改;
(3)在存储过程与触发器整个的实验过程中,我再一次体会到了大一时学习C++课程编写代码的感觉,虽然无论是语句的复杂程度还是思路的创建难度目前我们学习到的难度还不及C++的课程,但我能深刻的感受到,二者其最基本的原理与思路都是互通的,我们首先需要明确我们的需求需要获得什么,其次明确在什么样的条件下执行我们的语句,最后也就是我们最重要的部分,根据实验要求编写相应的应执行的代码,我也非常感谢过去的自己与老师,虽然在大学之前从未有过计算机语言的基础,但通过努力认真的学习,已经为现在的自己深入学习打下了良好的基础。
相关文章:
【SQL Server】华中农业大学空间数据库实验报告 实验九 触发器
1.实验目的 通过实验课程与理论课的学习深入理解掌握的触发器的原理、创建、修改、删除、基本的使用方法、主要用途,并且可以在练习的基础上,熟练使用触发器来进行数据库的应用程序的设计;深入学习深刻理解与触发器相关的T-SQL语句的编写的基…...
Linux 中的 zoxide 命令详解与示例
文章目录 Linux 中的 zoxide 命令详解与示例zoxide 简介安装 zoxide使用包管理器Ubuntu/DebianArch LinuxFedoramacOS(Homebrew)Windows(Scoop) 使用脚本安装(linux、Centos)安装流程 集成到 ShellBashZshF…...
Etcd 框架
基本了解 客户端、长连接与租约的关系 客户端对象 etcd的客户端对象是用户与etcd服务进行交互的主要接口,主要功能就是存储、通知和事务等功能访问 键值存储:客户端通过put 和 get操作存储数据;数据存储在etcd的层级化键值数据库中监听器&a…...
在 CentOS 7 上安装 MinIO 的步骤
在 CentOS 7 上安装 MinIO 的步骤 在 CentOS 7 上安装 MinIO 的步骤1. 更新系统2. 安装依赖3. 下载 MinIO4. 赋予执行权限5. 移动 MinIO 到系统路径6. 创建 MinIO 用户7. 创建数据目录8. 创建 MinIO 服务文件9. 启动 MinIO 服务10. 设置开机自启11. 访问 MinIO12. 配置防火墙&a…...
【Linux】进程地址空间
目录 一、引入问题: 二、进程地址空间: 地址和数据总线: 三、页表: 权限: 缺页中断: 四、回到问题: 五、总结: 重新理解进程: 一、引入问题: 在C中&a…...
快速图像识别:落叶植物叶片分类
1.背景意义 研究背景与意义 随着全球生态环境的变化,植物的多样性及其在生态系统中的重要性日益受到关注。植物叶片的分类不仅是植物学研究的基础,也是生态监测、农业管理和生物多样性保护的重要环节。传统的植物分类方法依赖于人工观察和专家知识&…...
第 22 章 - Go语言 测试与基准测试
在Go语言中,测试是一个非常重要的部分,它帮助开发者确保代码的正确性、性能以及可维护性。Go语言提供了一套标准的测试工具,这些工具可以帮助开发者编写单元测试、表达式测试(通常也是指单元测试中的断言)、基准测试等…...
K8S + Jenkins 做CICD
前言 这里会做整体CICD的思路和流程的介绍,会给出核心的Jenkins pipeline脚本,最后会演示一下 实验/实操 结果 由于整体内容较多,所以不打算在这里做每一步的详细演示 - 本文仅作自己的实操记录和日后回顾用 要看保姆式教学的可以划走了&…...
http/https
1、http与https HTTPHTTPS信息明文传输加入ssl加密传输协议,可以使得报文加密传输默认端口80默认端口443连接简单TCP三次握手通信TCP三次握手后还要SSL/TLS握手过程,才可以加密报文传输无状态不安全需要到CA申请证书,身份认证,自…...
腾讯云 AI 代码助手:产品研发过程的思考和方法论
一、文章摘要 本文将详细阐述 腾讯云 AI 代码助手的历史发展形态与产品整体架构,并从技术、研发方法论的角度分别阐述了产品的研发过程。 全文阅读约 5~8 分钟。 二、产品布局 AI 代码助手产品经历了三个时代的发展 第一代诸如 Eclipse、Jetbrains、V…...
淘宝商品评论爬虫:Java实现指南
在当今的互联网时代,数据的价值日益凸显,尤其是用户生成的内容,如商品评论,对于理解消费者行为和市场趋势具有重要意义。淘宝作为中国最大的电商平台之一,拥有海量的商品评论数据。本文将介绍如何使用Java编写一个简单…...
银河麒麟v10 x86架构二进制方式kubeadm+docker+cri-docker搭建k8s集群(证书有效期100年) —— 筑梦之路
环境说明 master:192.168.100.100 node: 192.168.100.101 kubeadm 1.31.2 (自编译二进制文件,证书有效期100年) 银河麒麟v10 sp2 x86架构 内核版本:5.4.x 编译安装 cgroup v2启用 docker版本:27.x …...
【Linux】详解shell代码实现(上)
🪐🪐🪐欢迎来到程序员餐厅💫💫💫 主厨:邪王真眼 主厨的主页:Chef‘s blog 所属专栏:青果大战linux 总有光环在陨落,总有新星在闪烁 学校开始搞蓝桥的校选…...
Ruby 模块(Module)
Ruby 模块(Module) 概述 Ruby 是一种动态、开放源代码的编程语言,以其简洁明了的语法和强大的功能而闻名。在 Ruby 中,模块(Module)是一个重要的概念,它用于封装一组相关的方法和常量。模块提…...
成都睿明智科技有限公司怎么样可靠不?
在这个日新月异的数字时代,电商行业如同一股不可阻挡的洪流,席卷着每一个消费者的生活。而抖音,作为短视频与电商完美融合的典范,更是为无数商家开辟了一片全新的蓝海。在这片充满机遇与挑战的海洋中,成都睿明智科技有…...
内网安全隧道搭建-ngrok-frp-nps-sapp
1.ngrok 建立内网主机与公网跳板机的连接: 内网主机为客户机: 下载客户端执行 2.frp (1)以下为内网穿透端口转发 frp服务端配置: bindPort 为frp运行端口 服务端运行 ./frps -c frps.ini frp客户端配置…...
k8s 对外服务之 Ingress
LB ingress //Ingress 简介 service的作用体现在两个方面,对集群内部,它不断跟踪pod的变化,更新endpoint中对应pod的对象,提供了ip不断变化的pod的服务发现机制;对集群外部,他类似负载均衡器,…...
前端速通(JavaScript)
1 初识JavaScript 1 JavaScript是什么 JavaScript 是一种高层的、轻量级的、解释型的编程语言,最初由 Netscape 公司于 1995 年开发。它的特点包括: 动态性:JavaScript是动态类型语言,允许开发者灵活地操作数据。跨平台…...
Unity图形学之着色器之间传递参数
1.初始化 struct: UNITY_INITIALIZE_OUTPUT(type,name) Type: struct 名字 Name :变量的名字 struct Input{float2 uv_MainTex;float3 myColor;};half _Glossiness;half _Metallic;fixed4 _Color;void MyVertx(inout appdata_base v,out I…...
JavaScript中的this指向问题
JavaScript中的this指向问题 1.1 为什么需要this? 为什么需要this? 在常见的编程语言中,几乎都有this这个关键字(Objective-C中使用的是self),但是在JavaScript中的this和常见的面向对象语言中的this不太一样 常见面向对象的编程语言中,比…...
Qt之QWidget相关
Qt概述 Qt 是一个跨平台的 C 开发框架。 跨平台支持:可以用于开发 Windows、macOS、Linux、Android、iOS 等多种操作系统下的应用程序。这意味着开发者使用 Qt 编写的代码,在经过适当的编译和配置后,能够在不同平台上运行,减少了…...
Ease Monitor 会把基础层,中间件层的监控数据和服务的监控数据打通,从总体的视角提供监控分析
1. 产品定位 Ease Monitor 有如下的产品定位: 关注于整体应用的SLA。 主要从为用户服务的 API 来监控整个系统。 关联指标聚合。 把有关联的系统及其指示聚合展示。主要是三层系统数据:基础层、平台中间件层和应用层。 快速故障定位。 对于现有的系统…...
苹果MacOS 调用自编译opencv的Dylib显示一个图片程序的步骤
前言 为了测试自编译的opencv库是否能在苹果MacOS系统下使用,需要写一个简单的测试程序。这个测试程序写起来不难,麻烦的是一些配置。网上的办法很多,里面因为版本的问题有一些坑。特此写了一个建立步骤,供大家参考。 1、新建一个…...
网页中调用系统的EXE文件,如打开QQ
遇到一个实际的问题,需要在网页中打开本地的某个工业软件。 通过点击exe文件就可以调用到程序。 比如双击qq的exe就可以启动qq的程序。 那么问题就变成了如何加载exe程序呢? 可以通过Java的 Process process Runtime.getRuntime().exec(command);通过…...
在 Ubuntu 系统上安装 npm 环境以及 nvm(Node Version Manager)
在 Ubuntu 系统上安装 npm 环境以及 nvm(Node Version Manager) 步骤 1: 更新系统包步骤 2: 安装 nvm步骤 3: 安装 Node.js 和 npm步骤 4: 设置默认 Node.js 版本(可选)总结 在 Ubuntu 系统上安装 npm 环境以及 nvm(No…...
Linux环境开启MongoDB的安全认证
文章目录 1. MongoDB安全认证简介1.1 访问控制1.2 角色1.3 权限 2. MongoDB中的常见角色3. MongoDB Shell3.1 下载MongoDB Shell3.2 通过MongoDB Shell连接MongoDB 4. 创建管理员用户5. 为具体的数据库创建用户6. 开启权限认证7. 重启MongoDB服务8. 连接MongoDB9. MongoDB数据库…...
实现了两种不同的图像处理和物体检测方法
这段代码实现了两种不同的图像处理和物体检测方法:一种是基于Canny边缘检测与轮廓分析的方法,另一种是使用TensorFlow加载预训练SSD(Single Shot Multibox Detector)模型进行物体检测。 1. Canny边缘检测与轮廓分析: …...
经典工具 | 使用SIFT预测错义突变的有害性
SIFT 用计算机替代人预测复杂事件的影响,是我们这个时代最令人兴奋的科学进展之一。SIFT就是这样一个应用于基因组学研究的经典工具。 SIFT可预测多种生物体的基因组变异,主要是错义突变的影响与效应,最大的特点是物种丰富,是一个…...
如何给 Apache 新站点目录配置 SELinux ?
在 web 服务器管理领域,确保服务器环境的安全性至关重要。SELinux (Security-Enhanced Linux) 是保护 Linux 服务器最有效的工具之一,它是一种强制访问控制 (MAC mandatory access control) 安全机制。当使用最流行的 web 服务器 Apache 提供 web 内容时…...
RTSP播放器EasyPlayer.js播放器分辨率高的视频在设置container的宽高较小时,会出现锯齿状的画面效果
流媒体播放器的核心技术及发展趋势展现了其在未来数字生活中的无限潜力。随着技术的不断进步和市场的持续发展,流媒体播放器将在内容创新、用户体验优化以及跨平台互通等方面取得新的突破。对于从业者而言,把握这些趋势并积极应对挑战将是实现成功的关键…...
云讷科技Kerloud无人飞车专利发布
云讷科技Kerloud无人飞车获得了“一种室内外两用的四旋翼无人飞车”的实用新型专利证书,作为科教社区第一款四旋翼飞车,这项技术结合了无人机和无人车的优势,提供了一种能够在多种环境下使用的多功能飞行器。 这项设计的优势如下ÿ…...
快速识别模型:simple_ocr,部署教程
快速识别图片中的英文、标点符号、数学符号、Emoji, 模型会输出图片中文字行的坐标位置、最低得分、识别结果。当前服务用到的模型:检测模型、数字识别、英文符号识别。 一、部署流程 1.更新基础环境 apt update2.安装miniconda wget https://repo.anaconda.com/…...
Qt交叉编译x86和arm心得
最近一直在Linux上开发qt程序,主要工作是在x86的Ubuntu上开发编译调试程序,确定没有问题后交叉编译到arm的linux系统上运行 1.环境 Qt的交叉编译环境厂家已经提供了,嵌入式的同事帮我安装调试的,具体就是装了厂家给的gcc编译套件…...
用CAXA CAD电子图板导入图框、标题栏并导出pdf的方法
1.导入图框: 点击调入图框->出现读入图框文件 一个一个点击,选择合适的图框 然后点击导入 2.导入标题栏: 调入标题栏->出现读入标题栏文件 一个一个点击,选择合适的标题栏,然后点击导入 3.导出pdf&#x…...
在 Ubuntu/Debian 上安装 Go
使用官方二进制文件安装(推荐) Go 提供了官方的二进制安装包,适用于大多数 Linux 发行版,包括 Ubuntu 和 Debian。步骤如下: 更新包索引: bash sudo apt update 安装依赖(如果尚未安装&#…...
设计模式之策略模式-工作实战总结与实现
文章目录 应用场景存在问题解决方案继续延伸 应用场景 假设有这样的业务场景,大数据系统把文件推送过来,根据不同类型采取不同的解析方式。多数的小伙伴就会写出以下的代码: public class Question {public static void main(String[] args…...
自动语音识别(ASR)与文本转语音(TTS)技术的应用与发展
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
实验十三 生态安全评价
1 背景及目的 生态安全是生态系统完整性和健康性的整体反映,完整健康的生态系统具有调节气候净化污染、涵养水源、保持水土、防风固沙、减轻灾害、保护生物多样性等功能。维护生态安全对于人类生产、生活、健康及可持续发展至关重要。随着城市化进程的不断推进&…...
【MySQL实战45讲笔记】基础篇——redo log 和 binlog
系列文章 基础篇——MySQL 的基础架构 目录 系列文章1. 重要的日志模块:redo log 和 binlog1.1 redo log1.2 binlog1.3 执行器和 InnoDB 引擎内部如何执行更新语句 1. 重要的日志模块:redo log 和 binlog 前面系统的了解了一个查询语句的执行流程&…...
Java 基于SpringBoot+vue框架的老年医疗保健网站
大家好,我是Java徐师兄,今天为大家带来的是Java Java 基于SpringBootvue框架的老年医疗保健网站。该系统采用 Java 语言开发,SpringBoot 框架,MySql 作为数据库,系统功能完善 ,实用性强 ,可供大…...
Java集合分页
一、前言 在Java开发中,若单次展示的数据量太大,会造成程序响应缓慢,就需要用到分页功能,每一页展示一定量的数据,分多次展示 ... 那么在List集合中,如何实现分页功能呢? 本文将以3种方式&…...
python语言基础-5 进阶语法-5.5 上下文管理协议(with语句)
声明:本内容非盈利性质,也不支持任何组织或个人将其用作盈利用途。本内容来源于参考书或网站,会尽量附上原文链接,并鼓励大家看原文。侵删。 5.5 上下文管理协议(with语句)(参考链接࿱…...
周志华深度森林deep forest(deep-forest)最新可安装教程,仅需在pycharm中完成,超简单安装教程
1、打开pycharm 没有pycharm的,在站内搜索安装教程即可。 2、点击“文件”“新建项目” 3、创建项目,Python版本中选择Python39。如果没有该版本,选择下面的Python 3.9下载并安装。 4、打开软件包,搜索“deep-forest”软件包&am…...
技术美术百人计划 | 《2.1 色彩空间介绍》笔记
总览 一、色彩发送器 色彩认知: 光源是出生点,光源发射出光线,光线通过直射反射折射等路径最终进入人眼。 但人眼接收到光线后,人眼的细胞产生了一系列化学反应。 由此把产生的信号传入大脑,最终大脑对颜色产生了认…...
设计模式:6、装饰模式(包装器)
目录 0、定义 1、装饰模式包含的四种角色 2、装饰模式的UML类图 3、示例代码 0、定义 动态地给对象添加一些额外的职责。就功能来说装饰模式相比生成子类更为灵活。 1、装饰模式包含的四种角色 抽象组件(Component):抽象组件是一个抽象…...
vue-office:word(.docx)、pdf、excel(.xlsx,.xls)格式文件预览
vue-office:word(.docx)、excel(.xlsx,.xls)格式文件预览 组件安装 // docx文档预览组件 npm install vue-office/docx vue-demi0.14.6// excel文档预览组件 npm install vue-office/excel vue-demi0.14.…...
简单工厂模式
简单工厂模式详解 定义 简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,用于创建对象的实例。通过一个工厂类来决定实例化哪一个具体类,降低客户端与具体类之间的耦合。 对于长switch或者长if、else,且…...
得物彩虹桥架构演进之路-负载均衡篇
文 / 新一 一、前言 一年一更的彩虹桥系列又来了,在前面两期我们分享了在稳定性和性能2个层面的一些演进&优化思路。近期我们针对彩虹桥 Proxy 负载均衡层面的架构做了一次升级,目前新架构已经部署完成,生产环境正在逐步升级中…...
【大数据学习 | Spark-Core】spark-shell开发
spark的代码分为两种 本地代码在driver端直接解析执行没有后续 集群代码,会在driver端进行解析,然后让多个机器进行集群形式的执行计算 spark-shell --master spark://nn1:7077 --executor-cores 2 --executor-memory 2G sc.textFile("/home/ha…...
macos 使用 nvm 管理 node 并自定义安装目录
系统环境:MacOS Version 参考文章: Github 地址:https://github.com/nvm-sh/nvm 安装的方式是很简单的,直接执行下面的命令即可: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bas…...