数据库系统原理课程总结8——备份与日志初步、并发模拟实验

2023-11-10

一、备份与日志初步实验

1) 了解你所使用的数据库平台的单表数据备份和整库备份方法,进行相应备份操作,并尝试利用备份数据在另一个机器上恢复数据,并在实验报告中描述上述过程。

答:首先,在MySQL中使用mysqldump将数据库的单表数据以sql文件的形式存储起来,指令的格式如下图,为用户名,密码,数据库,列表,存储文件的绝对路径,这里程序的warning是针对密码在指令中直接出现的提醒,不对结果产生影响:
在这里插入图片描述

这里需要说明的一点是不能够登录MySQL之后再使用mysqldump来进行数据的备份,因为这样执行程序会报错,上网查询了一下认为应该是版本的问题,MySQL和mysqldump之间如果存在版本不对应的话是无法在MySQL里面完成数据备份功能的。
在实行上面的语句之后,可以再对应路径下看到Sql文件:
在这里插入图片描述

这个文件可以通过文本编译器或者MySQL workbench打开:
在这里插入图片描述

通过导入这一文件可以恢复我们备份的数据:
在这里插入图片描述

这里我使用的是删除备份的列表来查看恢复功能:
在这里插入图片描述

这里已经完成了列表的删除,接下来导入文件,恢复备份数据:
在这里插入图片描述

再对列表进行搜索,发现spj列表已经恢复成功:
在这里插入图片描述

2) 掌握数据库日志的概念,并说明数据备份、日志与故障恢复之间的关系。

答:数据库日志概念:在数据库系统中,对数据的任何更新操作(如:增加、修改、删除),都要把相关操作的命令、执行时间、数据的更新等信息保存下来。这些被保存的信息就是数据库日志。也就是说,数据库日志是数据库系统中所有更新活动的操作序列。数据库日志是系统正常运行、保持数据一致性的重要手段。
mysql数据库日志分为四种:bin log、error log、general query log、slow query log

bin log:MySQL的bin log日志作用是用来记录mysql内部增删改等对mysql数据库有更新的内容的记录(对数据库的改动),对数据库查询的语句如show,select开头的语句,不会被binlog日志记录。binlog日志只要用于数据库的增量恢复,以及主从复制。

error log:MySQL的错误日志(error log)记录MySQL服务进程mysqld在启动/关闭或运行过程中遇到的错误信息。

general query log:普通查询日志(general query log):记录客户端连接信息和执行的SQL语句信息

slow query log:慢查询日志(slow query log):记录执行时间超出指定值(long_query_time)的SQL语句。

数据备份、日志与故障恢复之间的关系:
随着制作备份的种类和频繁程度的不同,数据库发生故障后其恢复的可行性、难度与所花费的时间也不同。
数据库故障是指数据库运行过程中影响数据库正常使用的特殊事件。数据库故障有许多类型,最严重的是介质失败(如磁盘损坏),这种故障如不能恢复将导致数据库中数据的丢失。数据库故障类型有:语句失败、用户进程失败、实例失败、用户或应用错误操作、介质失败如硬盘失败,硬盘中的数据丢失等。由于故障类型的不同,恢复数据库的方法也不同。通过装载备份来恢复数据库既是常用的恢复手段,也是恢复介质失败故障的主要方法。数据库日志可以帮助我们定位mysql内部发生的事件,数据库性能故障,记录数据的变更历史,用户恢复数据库等等。

  1. 查阅资料,在你所使用的数据库中找到能记录数据修改操作的日志文件,针对某个表执行插入或修改操作,请在相应日志文件中找对应的插入或修改操作日志记录,至少解释其中的一条日志数据样例。
    答:输入show variables like '%general%'语句,程序自动输出是否开启日志,并且给出日志文件相对路径,开始的时候,MySQL5.7是不打开日志的,可以通过MySQL中的在my.ini文件进行配置实现日志功能的管理:
    在这里插入图片描述

    完成配置之后再执行上述语句,可以看到如下结果:这里因为日志文件和server在同一个目录里面,所以只有文件名称。
    在这里插入图片描述

    通过相对路径找到了日志文件后执行语句并打开日志:
    在这里插入图片描述

    日志中和这句程序语句相关的部分是如下图片中的内容(因为触发器的原因,所以有update语句):
    在这里插入图片描述

    日志解释:以倒数第二条记录为例,第一个参数表示时间,字母T代表的是时间元素的开始。. 后面的是完整的us数,Z表示 UTC(标准时间)如果后面加+、- 号是表示时区的变换如UTC+8就是北京时间。第二个参数ID表示日志号,该日志的日志号就是11.第三个参数表示的是命令类型,这里是Query类型。最后一个参数就是详细的命令内容。整个一行,记录了我在某一时刻输入的插入信息的指令。

二、 并发控制实验

1) 通过取消所用DBMS的查询分析器的自动提交功能,创建两个不同用户,分别登录查询分析器,同时打开两个客户端;

首先查看MySQL的自动提交功能情况,发现自动提交已打开:
在这里插入图片描述

关闭自动提交功能并且再次查看自动提交功能情况:
在这里插入图片描述

创建两个不同的用户:
在这里插入图片描述

打开两个客户端:
在这里插入图片描述

2) 通过SQL语言设计具体例子展示不同隔离级别的应用场景,验证各种隔离级别的并发控制效果,即是否存在并发操作带来的数据不一致问题,包括丢失修改、不可重复读和读“脏”数据等。

答:

首先声明一下MySQL中的各个隔离级别:

1.Read Uncommitted(读取未提交内容)
在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未提交的数据,也被称之为脏读(Dirty Read)。

2.Read Committed(读取提交内容)
这是大多数数据库系统的默认隔离级别(但不是MySQL默认的)。它满足了隔离的简单定义:一个事务只能看见已经提交事务所做的改变。这种隔离级别 也支持所谓的不可重复读(Nonrepeatable Read),因为同一事务的其他实例在该实例处理其间可能会有新的commit,所以同一select可能返回不同结果。

3.Repeatable Read(可重读)
这是MySQL的默认事务隔离级别,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行。不过理论上,这会导致另一个棘手的问题:幻读 (Phantom Read)。简单的说,幻读指当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的“幻影” 行。InnoDB和Falcon存储引擎通过多版本并发控制(MVCC,Multiversion Concurrency Control)机制解决了该问题。

4.Serializable(可串行化)
这是最高的隔离级别,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。简言之,它是在每个读的数据行上加上共享锁。在这个级别,可能导致大量的超时现象和锁竞争。

对于并发操作导致的问题声明:

1.脏读:在事务A执行过程中,事务A对数据资源进行了修改,事务B读取了事务A修改后的数据。由于某些原因,事务A并没有完成提交,发生了RollBack操作,则事务B读取的数据就是脏数据。这种读取到另一个事务未提交的数据的现象就是脏读。

2.不可重复读:事务B读取了两次数据资源,在这两次读取的过程中事务A修改了数据,导致事务B在这两次读取出来的数据不一致。这种在同一个事务中,前后两次读取的数据不一致的现象就是不可重复读。

3.丢失修改:丢失修改分为两类,第一类事务A和事务B都对数据进行更新,但是事务A由于某种原因事务回滚了,把已经提交的事务B的更新数据给覆盖了。这种现象就是第一类更新丢失。第二类跟第一类更新丢失有点类似,也是两个事务同时对数据进行更新,但是事务A的更新把已提交的事务B的更新数据给覆盖了。这种现象就是第二类更新丢失。

4.幻读:事务B前后两次读取同一个范围的数据,在事务B两次读取的过程中事务A新增了数据,导致事务B后一次读取到前一次查询没有看到的行。幻读和不可重复读有些类似,但是幻读强调的是集合的增减,而不是单条数据的更新

实验任务:通过SQL语言设计具体例子展示不同隔离级别的应用场景,验证各种隔离级别的并发控制效果:
首先对目前的隔离级别进行查看,这里因为使用的是MySQL5.7版本,所以使用的是select @@tx_isolation,如果版本在8.0以上的话,就需要使用select @@transaction_isolation:
在这里插入图片描述

可以看到,这里MySQL中默认的隔离级别是第三级别的可重复读。
接下来,对于用户的隔离级别进行修改并且尝试对不同隔离级别下的并发错误进行查看:
修改隔离级别的语句为:

set session transaction isolation level read uncommitted;

在执行完语句之后,再次进行隔离级别的查看,发现已经成功修改。
接下来,对各个隔离级别进行应用实验:

1.Read Uncommitted(读取未提交内容):
在这里插入图片描述

这里在准备进行数据的查询和修改的时候出现了错误:
在这里插入图片描述

这说明在生成用户之后再一些权限上存在错误,所以使用root登录数据库进行如下修改:
在这里插入图片描述

User_2同理。
重新进行上述步骤,设置好两个用户的隔离级别之后进行并发问题查看:
在这里插入图片描述

User_1中修改信息
在这里插入图片描述

User_2中获得修改过的信息
在这里插入图片描述

User_1回滚,user_2出现脏读
考虑到如果出现脏读,那么不可重复读也是一定会发生的,如下图所示,右边的用户2中两次查询出现了数据不一致的情况:
在这里插入图片描述

丢失修改,可以看到,用户2的修改指令必须要等待到用户1的进程结束之后才可以执行的,所以读未提交可以解决丢失修改:
在这里插入图片描述

幻读,在用户1的进程中,用户2向数据库插入了一条数据,用户1进程里的两次查询得到结果不同,说明读未提交不能解决幻读问题:
在这里插入图片描述
在这里插入图片描述

2.Read Committed(读取提交内容)
首先进行隔离级别的配置:
在这里插入图片描述

下图是通过读已提交隔离级别进行的查询实验:在实验过程中,我们在用户1处进行了修改之后再用户2处进行查询,查询到的结果是没有发生修改的初始值,在用户1的操作commit了之后,用户2再次进行查询,这一次的结果才是修改后的数据,这样就成功的避免了脏读,但是同时我们也会发现前后两次查询的数据不一样,所以我们可以得出的结论是第二级别的隔离级别读已提交可以避免脏读但是不可以避免不可重复读。
在这里插入图片描述

这里对于读已提交隔离级别进行丢失修改的实验查看,首先通过用户1对数据库进行修改,在commit之前通过用户2也对这一个数据进行修改,同时实验发现,用户2的修改语句会一直等待用户1的commit而不执行,直到超过MySQL中设定的运行时间后报错。这样的设定可以避免程序的第一类丢失。
在这里插入图片描述

读已提交同样不能解决幻读问题,在用户2插入并且提交后用户1进行查询可以看到数据的修改:
在这里插入图片描述

3.Repeatable Read(可重读)
首先还是进行隔离级别的配置:
在这里插入图片描述

在可重复读这一隔离级别中,可以看到的是脏读和不可重复读两个并发错误都被避免了,在用户2commit之前,用户2从数据库中调用的都是一开始数据库的初始数据,只有两个进程都结束了,再进行数据查询的时候才会看到数据的修改。所以在这一隔离级别中,脏读和不可重复读都不会发生。
在这里插入图片描述

对于丢失修改并发错误的避免,可重复读和读已提交两个隔离级别擦爱用了相同的方法,也就是只有在用户1的修改结束并且提交commit了之后,用户2的修改才会生效,否则会一直停留知道超时报错。
下图中的用户2的界面中可以看到修改语句用户接近8s就是因为需要在用户1处运行commit之后这一修改语句才会运行:
在这里插入图片描述

同时,进行幻读并行错误的检查,这里我们发现,在用户1的进程中用户2进行了insert插入,但是用户1的显示依旧没有变化,看起来似乎可重复读的隔离级别可以处理幻读错误:
在这里插入图片描述
在这里插入图片描述

但是这就带来了一个问题,最后的隔离级别可串行化又是为了什么呢?所以通过上网学习,我了解到,可重复读中其实只是在读数据的时候解决了幻读问题,而在其他情况下依旧会出现幻读错误,如下图所示就是可重复读下的标准幻读错误:
在这里插入图片描述

可以看到,用户1在对ebook进行更新操作的时候,程序有一个很明显的停顿,只有用户2完成commit之后用户1的修改语句才会继续进行,同时,我们的修改结果参考之前的查询,应该只有一条数据被修改,但是最终的结果却是两条数据被修改,其中包括一条用户2输入的语句,这就说明其实在用户1的进程中间其实已经将这一数据存入数据库了,只是读数据的时候没有显示。这其实也已经属于幻读错误了。
在这里插入图片描述

4.Serializable(可串行化)
还是先进行隔离级别的配置:
在这里插入图片描述

首先还是进行脏读和不可重复读的检测,这里不同于之前三种,在用户1没有提交commit之前,用户2的查询请求也被停止了,直到用户1提交commit之后用户2的进程才正常的运行。所以也可以看到用户2的查询语句的运行时间会很长。这样的机制同时处理了脏读和不可重复读。
在这里插入图片描述

接下来是丢失修改,这里的操作和之前可以处理丢失修改的几类隔离级别一样,都是让一个停止,等待另一个,通过观察运行时间也可以得到类似的结论:
在这里插入图片描述

最后是幻读:
可串行化彻底的解决了幻读的各种错误,我们可以再下图中看到,在可串行化中,用户2对于数据的插入是需要等待用户1提交commit之后再进行的,而同样的,用户1在更新完成之后的后续查询操作则是需要等待用户2进程的结束。通过双向的钳制确保幻读问题的充分解决:
在这里插入图片描述

在用户1中我们看到用户2插入的数据没有被用户1进程中的更新语句影响,说明不只是在读数据的时候解决了幻读,在用户1的进程结束之后,用户2的插入数据才进入的数据库:
在这里插入图片描述

最后的总结:
SQL 标准定义了四种隔离级别,MySQL 全都支持。但是随着隔离强度逐渐增强,性能也在逐渐变差。采用哪种隔离级别要根据系统需求权衡决定,其中,可重复读是 MySQL 的默认级别。
四种隔离级别对应并发错误的情况如下表:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据库系统原理课程总结8——备份与日志初步、并发模拟实验 的相关文章

  • MySql 西班牙语字符数据

    我有一个包含西班牙语字符的数据库 为了填充数据库 我从字符编码 UTF 8 的客户端页面获取值 当我在 mySql 数据库中插入值时 行包含更改的数据 例如 如果我插入 M xico 数据库中的条目是 M xico 其影响是当我对指定 M
  • mysql错误1442的真正原因是什么?

    好吧 我在互联网上寻找了很多地方来寻找原因mysql error 1442其中说 无法更新存储函数 触发器中的表 unlucky table 因为 它已被调用此存储的语句使用 功能 触发器 有人说这是 mysql 中的一个错误或者它不提供的
  • 如何在同一列中选择多个值?

    我正在尝试在单个列中选择多个值 基本上我希望查询选择列下的所有内容family有价值观Software 1Y XI 1Y and P1 1Y 我正在运行这个查询 SELECT salesorder masterproduct family
  • MySQL Workbench 深色主题

    我刚刚开始学习 SQL 课程 并且一直在尝试不同的 GUI 我喜欢使用 MySQL Workbench 但白色背景刺瞎了我的眼睛 我已经搜索并找到了一些其他讨论编辑 xml 文件的相关帖子 我尝试用几种不同的方式对其进行编辑 但无济于事 我
  • PHP 和 MySql 检查表是否为空

    我有点菜鸟 而且我很难过 我需要一些代码来搜索数据库表以查找与 id 变量匹配的行 我需要抓取该表 描述 中的一个字段 如果它为空 我需要显示一条消息 如果不是另一条消息 这是我的代码 我知道我需要添加 mysqli 转义字符串 只需从内存
  • MongoDB 中递归文档的结构和查询语法?

    我最近开始在工作项目中研究 MongoDB 我对 JSON 和 MongoDB 的查询结构相当陌生 所以我希望你们中的一位能够提供一些说明 我已将这个问题翻译成 Excel 术语 因为它很常见并且很好地代表了我的问题 如果我尝试将 Exce
  • 检测 MySQL 中的 utf8 损坏字符

    我有一个数据库 其中有一堆损坏的 utf8 字符分散在多个表中 字符列表不是很广泛 AFAIK 修复给定的表非常简单 update orderItem set itemName replace itemName 但我无法找到检测损坏字符的方
  • SQL 未插入到 Yii 中具有关系的表中

    我正在尝试创建一个用户 但所有值都没有插入到数据库中 Systems user 表与partys 表有关系 因为party id 是sytems user 的主键 没有插入任何内容 甚至没有错误 它只是返回到 创建 页面 这是我的架构 Ta
  • 在 Bluemix 中激活 PHP 扩展

    这纯粹是 Bluemix 问题 我的代码在本地主机上顺利运行 但是当我将其迁移到 Bluemix 时 我的数据库连接失败了 检查日志 我发现问题 调用未定义的函数 mysqli init HTTP 响应 500 我发现扩展已被禁用以使其更小
  • 创建表时 MySQL 语法错误

    我正在尝试在 Filemaker gt MySQL 转换脚本中使用此查询 表创建步骤直接从 phpMyAdmin 导出中获取 并添加到 DROP 语句中 DROP TABLE IF EXISTS artifacts CREATE TABLE
  • MySQL 更新具有多个值的查询

    我在数据库中有一个表 其记录如下 match id guess result 125 1 0 130 5 0 233 11 0 125 2 0 我的用户为每场比赛选择一个猜测 我有一个函数可以根据比赛的结果计算猜测的结果 如果猜测正确 结果
  • 如何在Sequelize中配置一对多关系?

    我目前正在使用 Express 和 Sequelize MySQL 想知道解决这个问题的最佳方法是什么 如果这是一个基本问题 我很抱歉 因为我对 Sequelize 甚至 SQL 数据库都很陌生 我有一个模型User像这样 export d
  • 使用 Java 连接到 MySql - SSL 连接

    我一直在尝试连接到 MySql 数据库 该数据库使用 ssl 连接与 java 并遇到麻烦 如果任何人可以帮助我 将会有很大的帮助 手动连接MySql 我们使用MySQL Workbench 参数 主机名 test db1 ro xxxxx
  • 用于 Mysql 查询的 FLASK HTML 字段

    你好 Stackoverflow 社区 我是 FLASK 的新手 但是虽然学习曲线非常陡峭 但有一个项目我无法理解 我使用一个非常简单的 HTML 搜索表单 用户在其中输入城市名称 此输入将传递到 Mysql 查询并将输出返回到表中 一切正
  • Laravel 5.2 中使用多个 MySQL 数据库连接查询关系存在

    我正在处理以下情况 我有两个模型 一个Employee with id and name字段和一个Telephone with id employee id and flag字段 还有一个一对多关系在这两种模型之间 即一个员工可能拥有多部电
  • 更改 MySQL Workbench 上的默认字符集

    我正在尝试使用连接到我的 MYSQL 数据库utf8mb4字符集 请注意 数据库字符集的全局设置已经是 utf8mb4 我可以使用 CLI 轻松完成此操作 如下所示 mysql h myhostname u myuser p default
  • MySQL Workbench:如何将 mysql 数据库导出到 .sql 文件?

    我需要将 mysql 工作台中的数据库导出到文件 sql 该怎么办 在 MySql Workbench 版本 8 0 中 您只需按照以下步骤操作即可 Go to Server tab Go to 数据库导出 这会打开类似这样的东西 在中选择
  • 表中主键的最佳实践是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在设计表时 我养成了一种习惯 即有一列是唯一的 并且我将其作为主键 根据要求 可以通过三种方式实现 自动递增的标识整数列 唯一标识符 GUID
  • Codeigniter,为MySQL创建表和用户

    我想以编程方式使用 CI 创建数据库和用户 到目前为止 我有这 2 个简单的 MySQL 语句 CREATE DATABASE testdb DEFAULT CHARACTER SET utf8 COLLATE utf8 general c
  • 具有重复值的 Sqlite 列

    就说专栏吧aSQLite 数据库的非常重复 始终有相同的 4 个值 其他值可能稍后出现 但不同值的数量将少于 1000 个 VALUES hello world it s a shame to store this str many tim

随机推荐

  • 「经验分享」一款PCB电路板设计要经历哪些流程?

    一款PCB电路板设计主要包括明确产品需求 硬件系统设计 器件选型 PCB绘制 PCB生产打样 焊接调试等步骤 那么这些步骤都有哪些需要注意点呢 小编带你细品 一定要细品 一 明确需求 在一个硬件设计之初 首先要做的是明确产品的需求 这里主要
  • BMP文件格式详解(BMP file format)

    BMP文件格式 又称为Bitmap 位图 或是DIB Device Independent Device 设备无关位图 是Windows系统中广泛使用的图像文件格式 由于它可以不作任何变换地保存图像像素域的数据 因此成为我们取得RAW数据的
  • 【SIMULINK】基于DQ0模型的三相异步电机自制仿真模型教程

    SIMULINK 基于DQ0模型的三相异步电机自制仿真模型 其实 打开simscape自带的异步电机模型 里面也是基于DQ0的 电机的模型定子电压作为输入 定子电流是输出 内部结构 omega 1 是DQ坐标系的转速 为0时退化为 alph
  • 计算机是人类的好伴侣 作文,书是我们的好伴侣_我和书的故事作文

    书 大家是并不陌生的 它会让人陶醉享受 也会使人沉迷于此 总得来说 书 是我们的好伴侣 不管是休闲娱乐 还是读后写作都少不了它 说到我喜欢的书 我还是算得上是个小小小的 书迷 但是我最喜欢沈石溪所写的动物小说 内容精彩而又丰富 把这所有的动
  • Android性能分析和优化之traces.txt(ANR分析)

    ANR 类型分类 1 KeyDispatchTimeout 5 seconds 主要类型按键或触摸事件在特定时间内无响应 按键或者触摸引起的ANR的时间定于是在AMS中 static final int KEY DISPATCHING TI
  • C语言——文件操作

    C语言文件操作 使用文件的原因 文件 程序文件 数据文件 文件名 文件的打开和关闭 文件指针 文件的打开和关闭 文件的顺序读写 文件的随机读写 fseek ftell rewind 文本文件和二进制文件 文件读取结束的判定 文件缓冲区 使用
  • Python 入门习题

    如果下面代码有问题或者你有更好的实现方法欢迎与我私信 1 输入一个字符串 内容是带小数的实数 例如 123 45 输出是两个整数变量x和y x是整数部分123 y是小数部分45 你可以用split函数完成 str input L str s
  • iOS编程基础-OC(七)-运行时系统(续)

    该系列文章系个人读书笔记及总结性内容 任何组织和个人不得转载进行商业活动 第7章 运行时系统 7 4 动态绑定 动态绑定 dynamic binding 是指在运行程序时 而不是在编译时 将消息与方法对应起来的处理过程 在运行程序和发送消息
  • Motionbuilder矩阵计算方式

    基本使用 对于类型为 FBModel 的对象 有 GetMatrix SetMatrix 方法来获取及设置其变换矩阵 GetMatrix pMatrix FBMatrix pWhat kModelTransformation pGlobal
  • SpringBoot 集成 Apollo 配置中心,一文搞定!(万字长文)

    由于 Apollo 概念比较多 刚开始使用比较复杂 最好先过一遍概念再动手实践尝试使用 1 背景 随着程序功能的日益复杂 程序的配置日益增多 各种功能的开关 参数的配置 服务器的地址 对程序配置的期望值也越来越高 配置修改后实时生效 灰度发
  • STM32操作增量式编码器(一)----使用外部中断实现测速

    1 编码器概述 这里对此不再详细说明 本博文重在如何使用编码器 有兴趣的同学可以去网上了解 或者参考一下博文 旋转编码器工作原理 2 增量式编码器控制思路 图2 1 编码器实物图 图2 2 编码器与MCU接线图 我们首先需要清楚编码器输出什
  • 【剑指Offer题解:java】从上往下打印二叉树

    题目 从上往下打印出二叉树的每个节点 同层节点从左至右打印 分析 初始化 一个队列Queue queue 将root节点入队列queue 如果队列不空 做如下操作 弹出队列头 保存为node 将node的左右非空子节点加入队列 做2 3步骤
  • Zimbra安装成功后,邮件发送失败!!急!!发生错误 (mail.TRY_AGAIN),原因不详。

    method unknown msg try again Unable to connect to the MTA code mail TRY AGAIN detail soap Receiver trace com zimbra cs m
  • Less-27and27a

    文章目录 1 思路分析 2 注入过程 3 27a 1 思路分析 这一关表上上告诉你他只是过滤了union和select 其实不然 function blacklist id id preg replace id strip out id p
  • MQ-2烟雾报警器

    MQ 2烟雾报警器 原理 MQ 2型烟雾传感器属于二氧化锡半导体气敏材料 属于表面离子式N型半导体 处于200 300摄氏度时 二氧化锡吸附空气中的氧 形成氧的负离子吸附 使半导体中的电子密度减少 从而使其电阻值增加 当与烟雾接触时 如果晶
  • 传输线阻抗理论

    一 理想元件阻抗特性 对于所有的理想元件 传输线 阻抗 为该导体两端的电压和流经该导体的电流的比值 一般包括阻抗 感抗和容抗的统称 电阻阻抗 电感感抗 电容容抗 显然 对于理想电感和电容 其阻抗和频率有关 理想电感器的阻抗随频率升高而增大
  • maven手动引入仓库文件操作

    捕获 jpg 一 idea打开maven命令窗口 在框里输入命令 mvn install install file DgroupId com elink web DartifactId jcifs Dversion 1 3 15 SNAPS
  • 【2021年全国大学生数学建模竞赛题】“生产企业原材料的订购与运输”详细解析(内附MATLAB代码)

    2021年全国大学生数学建模竞赛题 生产企业原材料的订购与运输 详细解析 内附MATLAB代码 文章目录 1 模型建立 1 1确定被评判对象的对象集及因素集 1 2确定各评价指标权重 1 3建立相对模糊及对因素的偏差加权平均 1 4根据Fj
  • Android APK安装完成自动删除安装包

    需要实现此功能 一般实际开发是在自动版本更新上 当更新完开始自动安装完毕后 删除内存卡里的安装包 实现方式很简单 监听应用广播 获取内存卡下的文件 删除 1 监听广播 java view plain copy package com exa
  • 数据库系统原理课程总结8——备份与日志初步、并发模拟实验

    一 备份与日志初步实验 1 了解你所使用的数据库平台的单表数据备份和整库备份方法 进行相应备份操作 并尝试利用备份数据在另一个机器上恢复数据 并在实验报告中描述上述过程 答 首先 在MySQL中使用mysqldump将数据库的单表数据以sq