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

MySQL数据库——表的CURD(Update)

3.Update

语法:update table_name set column = expr

案例

将孙悟空的数学成绩变更为80

mysql> select name,math from result;
+-----------+------+
| name      | math |
+-----------+------+
| 唐三藏    |   98 |
| 孙悟空    |   78 |
| 猪悟能    |   98 |
| 曹孟德    |   84 |
| 刘玄德    |   85 |
| 孙权      |   73 |
| 宋公明    |   65 |
+-----------+------+
7 rows in set (0.00 sec)mysql> update result set math=80 where name='孙悟空';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0mysql> select name,math from result;
+-----------+------+
| name      | math |
+-----------+------+
| 唐三藏    |   98 |
| 孙悟空    |   80 |
| 猪悟能    |   98 |
| 曹孟德    |   84 |
| 刘玄德    |   85 |
| 孙权      |   73 |
| 宋公明    |   65 |
+-----------+------+
7 rows in set (0.00 sec)

将曹孟德的数学变更为60,语文变更为70 

mysql> update result set math=60,chinese=70 where name='曹孟德';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0mysql> select* from result;
+----+-----------+---------+------+---------+
| id | name      | chinese | math | english |
+----+-----------+---------+------+---------+
|  1 | 唐三藏    |      67 |   98 |      56 |
|  2 | 孙悟空    |      87 |   80 |      77 |
|  3 | 猪悟能    |      88 |   98 |      90 |
|  4 | 曹孟德    |      70 |   60 |      67 |
|  5 | 刘玄德    |      55 |   85 |      45 |
|  6 | 孙权      |      70 |   73 |      78 |
|  7 | 宋公明    |      75 |   65 |      30 |
+----+-----------+---------+------+---------+
7 rows in set (0.00 sec)

把总成绩倒数前三的3为同学数学加上30分 

-- 查询出总成绩倒数前三的同学
mysql> select* from result;
+----+-----------+---------+------+---------+
| id | name      | chinese | math | english |
+----+-----------+---------+------+---------+
|  1 | 唐三藏    |      67 |   98 |      56 |
|  2 | 孙悟空    |      87 |   80 |      77 |
|  3 | 猪悟能    |      88 |   98 |      90 |
|  4 | 曹孟德    |      70 |   60 |      67 |
|  5 | 刘玄德    |      55 |   85 |      45 |
|  6 | 孙权      |      70 |   73 |      78 |
|  7 | 宋公明    |      75 |   65 |      30 |
+----+-----------+---------+------+---------+
7 rows in set (0.00 sec)mysql> select name,chinese+math+english as total from result;
+-----------+-------+
| name      | total |
+-----------+-------+
| 唐三藏    |   221 |
| 孙悟空    |   244 |
| 猪悟能    |   276 |
| 曹孟德    |   197 |
| 刘玄德    |   185 |
| 孙权      |   221 |
| 宋公明    |   170 |
+-----------+-------+
7 rows in set (0.00 sec)mysql> select name,chinese+math+english as total from result order by total limit 3;
+-----------+-------+
| name      | total |
+-----------+-------+
| 宋公明    |   170 |
| 刘玄德    |   185 |
| 曹孟德    |   197 |
+-----------+-------+
3 rows in set (0.00 sec)-- 更新数据
mysql> update result set math=math+30 order by chinese+math+english asc limit 3;
Query OK, 3 rows affected (0.01 sec)
Rows matched: 3  Changed: 3  Warnings: 0-- 后三名发生了变化
mysql> select name,chinese+math+english as total from result order by total limit 3;
+-----------+-------+
| name      | total |
+-----------+-------+
| 宋公明    |   200 |
| 刘玄德    |   215 |
| 唐三藏    |   221 |
+-----------+-------+
3 rows in set (0.00 sec)-- 现在的表
mysql> select name,math+english+chinese as total from result order by math+english+chinese;
+-----------+-------+
| name      | total |
+-----------+-------+
| 宋公明    |   200 |
| 刘玄德    |   215 |
| 唐三藏    |   221 |
| 孙权      |   221 |
| 曹孟德    |   227 |
| 孙悟空    |   244 |
| 猪悟能    |   276 |
+-----------+-------+
7 rows in set (0.00 sec)

将所有同学的语文成绩更新为原来的2倍 

-- 整表更新的的语句慎用!
mysql> select * from result;
+----+-----------+---------+------+---------+
| id | name      | chinese | math | english |
+----+-----------+---------+------+---------+
|  1 | 唐三藏    |      67 |   98 |      56 |
|  2 | 孙悟空    |      87 |   80 |      77 |
|  3 | 猪悟能    |      88 |   98 |      90 |
|  4 | 曹孟德    |      70 |   90 |      67 |
|  5 | 刘玄德    |      55 |  115 |      45 |
|  6 | 孙权      |      70 |   73 |      78 |
|  7 | 宋公明    |      75 |   95 |      30 |
+----+-----------+---------+------+---------+
7 rows in set (0.00 sec)mysql> update result set chinese=chinese*2;
Query OK, 7 rows affected (0.01 sec)
Rows matched: 7  Changed: 7  Warnings: 0mysql> select * from result;
+----+-----------+---------+------+---------+
| id | name      | chinese | math | english |
+----+-----------+---------+------+---------+
|  1 | 唐三藏    |     134 |   98 |      56 |
|  2 | 孙悟空    |     174 |   80 |      77 |
|  3 | 猪悟能    |     176 |   98 |      90 |
|  4 | 曹孟德    |     140 |   90 |      67 |
|  5 | 刘玄德    |     110 |  115 |      45 |
|  6 | 孙权      |     140 |   73 |      78 |
|  7 | 宋公明    |     150 |   95 |      30 |
+----+-----------+---------+------+---------+
7 rows in set (0.00 sec)

对于更新操作,有时候可能会发生一些错误比如只需要进行单个数据的更新但是我们进行了整表更新,其他的数据我们也不会一时间想起来,这种操作要慎用。对应的我们也可以使用一些方法去挽回这样的错误,这时候就提到了一个概念:事务。

事务的概念类似于快照,就是将此刻数据库的状态保存下来,如果出错了可以进行回滚,但是两者也有很多区别。

下面是我针对事务提出的一些疑问以及GPT给我的回答,选取了部分直观的回答:

 1. 在mysql中如果做了update,不小心进行了整表更新,可以像版本控制器一样进行回滚吗?

在MySQL中,如果你不小心执行了一个更新操作,并且影响了整张表,你可以尝试以下几种方法来“回滚”或撤销这个操作:

  1. 使用事务:如果你的更新操作是在事务中进行的,你可以通过执行ROLLBACK命令来撤销这个事务,前提是你的表使用了事务安全的存储引擎,如InnoDB。
  2. 使用二进制日志:如果MySQL的二进制日志(binlog)是开启的,你可以从日志中找到执行的SQL语句,并根据这个语句来手动撤销更改。但是,这通常需要你对SQL语句有深入的了解,并且能够手动构造一个相反的更新语句。
  3. 使用备份:如果你有定期备份表的习惯,你可以从备份中恢复到更新之前的状态。
  4. 使用撤销日志:某些存储引擎,如InnoDB,会维护撤销日志来支持多版本并发控制(MVCC)。在某些情况下,如果更新操作没有被其他事务看到,可能可以利用撤销日志来恢复数据,但这通常不是直接的方法。
  5. 手动构造相反的更新语句:如果你知道更新操作的具体内容,你可以手动构造一个相反的更新语句来撤销更改。例如,如果更新操作是将某个字段的所有值增加了1,你可以构造一个将该字段的所有值减去1的更新语句。
  6. 使用时间点恢复:如果你的MySQL支持时间点恢复(PITR),你可以恢复到更新操作之前的某个时间点。

2. 什么是事务,你举个例子演示一下从原数据然后整表更新,然后回滚的过程?

事务是数据库管理系统中的一个基本概念,表示一系列操作,这些操作作为一个整体被执行,具有以下四个重要的属性,通常被称为ACID属性:

  • 原子性(Atomicity):事务中的所有操作要么全部完成,要么全部不完成,不会结束在中间某个环节。
  • 一致性(Consistency):事务必须保证数据库从一个一致的状态转移到另一个一致的状态。
  • 隔离性(Isolation):并发执行的事务之间不会互相影响。
  • 持久性(Durability):一旦事务提交,它对数据库的改变就是永久性的

即使系统发生故障也不会丢失。以下是一个事务的例子,演示了从原始数据开始,进行整表更新,然后执行回滚的过程:

①原始数据状态:
假设我们有一个名为accounts的表,里面有两行数据,表示两个账户的余额。

+---------+-------+
| account| amount|
+---------+-------+
|   1     |  100  |
|   2     |  200  |
+---------+-------+

②开始事务并执行更新操作:
开始一个事务,然后对accounts表执行一个更新操作,将每个账户的余额增加50。

START TRANSACTION;
UPDATE accounts SET amount = amount + 50;

③检查更新后的数据:
在提交事务前,我们先检查更新后的数据状态。

SELECT * FROM accounts;

④此时,查询结果应该显示每个账户的余额都增加了50。

+---------+-------+
| account| amount|
+---------+-------+
|   1     |  150  |
|   2     |  250  |
+---------+-------+

⑤执行回滚操作:
在实际应用中,可能由于某些原因(比如业务规则验证失败),我们决定不提交这个事务,而是要撤销所有更改。这时,我们使用ROLLBACK命令来回滚事务。

ROLLBACK;

⑥验证数据状态:
回滚事务后,我们可以再次查询accounts表来验证数据是否回到了原始状态。

SELECT * FROM accounts;

⑦查询结果应该和事务开始前一样,显示每个账户的原始余额。

+---------+-------+
| account| amount|
+---------+-------+
|   1     |  100  |
|   2     |  200  |
+---------+-------+

这个过程演示了如何使用事务来确保数据库操作的原子性,即使在操作过程中遇到问题,也可以安全地撤销所有更改,保证数据的一致性。

3. 这个操作相当于打快照对吗?

是的,这个操作相当于在事务开始时对数据库状态打了一个“快照”。在事务的上下文中,这个快照的概念与多版本并发控制(MVCC)中的快照读(Snapshot Read)有关,尤其是在支持MVCC的存储引擎如InnoDB中。

在MVCC中,当一个事务开始时,它会“看到”一个数据的一致性快照,这个快照是事务开始时数据库状态的版本。即使其他事务在并发修改数据,当前事务也可以通过这个快照来保证读取操作的一致性。这就是为什么在可重复读(REPEATABLE READ)隔离级别下,你可以在同一个事务中多次读取同一数据,得到的结果都是一致的。

在上述事务的例子中,虽然我们没有进行标准的快照读操作(比如没有使用SELECT ... FOR UPDATESELECT ... IN SHARE MODE),但事务本身提供了一种机制,允许你在事务的开始和结束之间,对数据库的修改进行快照式的管理:

  • 开始事务START TRANSACTION):相当于创建了一个数据库状态的快照,事务中的操作都是基于这个快照进行的。
  • 执行更新操作:对数据库状态进行修改,但这些修改在事务提交之前对其他事务是不可见的。
  • 回滚事务ROLLBACK):撤销所有更改,数据库状态回到事务开始时的快照。

这种机制确保了事务的原子性和一致性,允许你在事务提交之前安全地测试和验证数据库状态,如果发现问题,可以回滚到原始状态,就像时间倒流一样。

4. 那这个时候存储的是什么能够使数据回滚,存储的是事务开启的时候的数据表还是在事务开始之前的所有表的操作又或者是其他?

在事务开始时,存储的并不是完整的数据表副本,而是足够的信息来允许在事务失败或执行ROLLBACK时能够恢复原始数据。这些信息包括:

  1. Undo日志(回滚日志)
  2. Read View(读视图)
  3. 版本链(Version Chain)
  4. 系统表空间和段
  5. Change Buffer(变更缓冲)
  6. Redo日志(重做日志)
  7. Savepoints(保存点)

5. 所以我能理解为,回滚的时候其实是把这个表删除,然后重新走了一遍事务开启之前的所有表的操作的语句吗?

不完全是这样。在数据库中,回滚操作并不是通过删除表然后重新执行事务开启之前的所有操作来实现的。实际上,回滚是通过以下方式来恢复数据到事务开始之前的状态:

  1. 使用Undo日志:当事务中的某个操作修改了数据时,数据库会记录一条Undo日志,这条日志包含了将数据恢复到修改之前状态所需的所有信息。如果需要回滚,数据库会利用这些Undo日志来逆向执行操作,从而恢复数据的原始状态。
  2. 版本链(Version Chain):在支持MVCC的存储引擎中,每次数据行更新时,都会创建一个新的数据版本并链接到前一个版本,形成版本链。回滚操作可以通过版本链找到并恢复到事务开始前的数据版本。
  3. Read View:在MVCC中,Read View是一个事务开始时数据库快照的引用,它确保了事务可以看到一致性的数据视图。当事务需要回滚时,数据库可以使用Read View来确定哪些数据版本对当前事务可见,从而恢复到一致的状态。
  4. Change Buffer:对于二级索引的变更,在InnoDB存储引擎中,变更可能会首先记录在Change Buffer中,而不是直接更新到索引页。如果事务回滚,这些未应用的变更可以简单地从Change Buffer中丢弃。
  5. Redo日志(重做日志):虽然Redo日志主要用于保证事务的持久性,确保在发生故障后可以重做事务操作,但它也间接支持回滚操作,因为如果需要,可以使用Redo日志来重建页的变更。
  6. 原子性:事务的原子性保证了事务中的所有操作要么全部成功,要么全部失败。在回滚时,事务中的所有操作都会被撤销,但这不是通过重新执行事务开始前的操作来实现的,而是通过逆向操作或恢复到操作前的状态来实现的。

因此,回滚操作是通过撤销事务中所做的修改,而不是通过重新创建表或重新执行旧的操作来完成的。这种方式更为高效,因为它避免了重复大量的I/O操作,并且能够快速地将数据恢复到一致的状态。

6. 如果我撤销事务所做的修改后又想恢复了还可以吗?

在大多数情况下,一旦事务被回滚,它所做的所有修改都会被撤销,数据库状态会回到事务开始之前的样子。默认情况下,这些撤销的操作是不可逆的,数据库不会存储足够的信息来重新应用那些被回滚的更改。

然而,有一些特殊情况和方法可能允许你在回滚之后重新应用更改:

  1. 备份和恢复:如果你在事务之前或事务过程中有数据库的备份,你可以使用这个备份来恢复到事务发生之前的状态,然后再尝试重新执行事务中的操作。
  2. 二进制日志(Binary Log):如果数据库配置了二进制日志记录,那么即使事务被回滚,二进制日志中仍然可能记录了事务的操作。在某些情况下,如果操作是可逆的,你可以从二进制日志中提取相应的SQL语句并重新执行它们。
  3. Redo日志(重做日志):对于InnoDB存储引擎,如果事务已经提交,即使后续被其他事务所覆盖,也可以通过Redo日志来恢复数据。但是,如果事务被回滚,通常意味着事务的更改没有被提交到Redo日志中,因此无法使用Redo日志来恢复。
  4. Change Buffer和Undo日志:在事务回滚时,Change Buffer和Undo日志用于撤销事务中的更改。一旦事务被成功回滚,这些日志通常会被清理,因此通常不能用来重新应用更改。
  5. 数据库快照:某些数据库系统支持快照技术,允许你在特定时间点创建数据库状态的快照。如果在使用快照之前执行了事务回滚,你可以恢复到快照状态,然后再次尝试事务。
  6. 应用程序逻辑:如果事务的操作是由应用程序逻辑控制的,应用程序可以捕获回滚事件,并根据需要重新执行事务中的操作。

7. 所以这种机制是只有start事务了才能保存,如果没有开启事务,还是不能直接撤销我的部分操作对吗?

是的,您理解得正确。数据库中的事务撤销(回滚)机制依赖于事务的开始。数据库的事务回滚机制只能撤销在同一个事务中已经做过的操作。如果操作是在事务之外执行的,它们不能被直接回滚,除非采取其他措施,如使用备份或应用程序逻辑来逆转这些更改。

8. 假如我在一张表的构建过程中开启了两次事务会发生什么,还会记录第一次的状态吗,又或者不能够开启两次还是会发生冲突之类的

在数据库操作中,如果尝试在同一个数据库连接上开启两次事务,通常会遇到一些问题。数据库连接java.sql.Connection对象本身的特性要求事务和事务之间的执行是线性的,即一个新事务的开启必须在上一个事务完成之后(如果存在的话)。这意味着,如果在第一个事务还未提交或回滚的情况下尝试开启第二个事务,这可能会导致异常或者错误

例如,在MySQL中,如果在第一个事务未提交的情况下尝试再次执行START TRANSACTION,MySQL会抛出一个异常,因为它不允许在同一连接上嵌套开始事务。这是因为数据库期望每个事务明确地提交或回滚,以保持数据的一致性和完整性20。

如果确实需要执行多个需要事务性的操作,应该在一个事务中完成所有这些操作,或者在第一个事务提交或回滚之后,再开始新的事务。这样可以确保数据库的操作符合ACID原则,即原子性、一致性、隔离性和持久性24。

此外,值得注意的是,即使在自动提交模式下(即每个单独的SQL操作默认作为一个事务执行),数据库系统通常也会期望操作之间有一定的隔离,以避免潜在的数据不一致问题。因此,合理的做法是确保每个事务性操作都在明确开启和结束的事务块中执行,以避免冲突和数据不一致。

9. 怎么结束或者提交事务

在数据库中,结束或提交事务通常涉及以下两个操作之一:

  1. 提交事务(Commit)
  • 提交事务是一个操作,它告诉数据库管理系统(DBMS)将事务中的所有更改永久保存到数据库中。
  • 一旦事务被提交,更改将变得不可逆,即使系统发生故障,更改也会保留。
  • 在SQL中,通常使用以下命令来提交事务:
COMMIT;
  1. 回滚事务(Rollback)
  • 如果事务中的某个操作失败,或者出于任何原因需要撤销事务中的所有更改,可以使用回滚操作。
  • 回滚事务会撤销事务中进行的所有更改,将数据库状态恢复到事务开始之前。
  • 在SQL中,通常使用以下命令来回滚事务:
ROLLBACK;

在某些数据库系统中,当一个事务被显式开启后,如果没有任何提交或回滚操作,并且在完成所有操作后连接被关闭,数据库可能会自动回滚该事务,以确保数据的一致性。但这种行为依赖于具体的数据库配置和设置,因此显式提交或回滚事务是最佳实践。

此外,如果你使用的是自动提交模式(每个单独的SQL操作默认作为一个事务执行),则不需要显式地提交事务,因为每个操作在执行后立即自动提交。但是,如果你需要执行一系列操作作为一个单元,你应该手动开始一个事务,然后在所有操作完成后提交或回滚事务。

例如,在自动提交模式下,每个单独的更新操作如下:

UPDATE table_name SET column_name = new_value WHERE condition;

而在手动事务管理的情况下,你可能会有如下操作序列:

START TRANSACTION;  -- 或 BEGIN;-- 执行一系列需要原子性的更新操作
UPDATE table_name SET column_name = new_value WHERE condition;
-- ... 可能还有其他更新操作 ...-- 如果一切顺利,提交事务
COMMIT;-- 如果出现错误,回滚事务
ROLLBACK;

使用事务时,务必确保在操作序列的末尾正确地提交或回滚事务,以保持数据的完整性。

10. 像mysql这样进行日志的保存,也就是将所有的操作进行存档目的是为了什么,为什么不直接备份表,这样的存储方式不会占用比表本身更多的内存消耗吗?

MySQL中进行日志保存的主要目的是为了确保事务的持久性、原子性、一致性和隔离性,以及提供数据恢复和主从复制的能力。日志记录了所有的数据变更操作,使得在系统崩溃或发生故障时可以从日志中恢复数据,保证数据不会丢失。此外,日志在主从复制中也扮演着重要的角色,通过日志复制来保持数据的一致性 33。

与直接备份表相比,日志存储方式并不会占用比表本身更多的内存消耗。这是因为日志记录的是数据变更的部分,而不是整个表的副本。例如,如果一个表中只有一行数据被更新,日志只需要记录这一行数据的变化,而不是整个表的数据。此外,日志文件通常是循环使用的,写满后可以从开始位置覆盖旧的日志记录,这样就不会无限制地增长 33。

日志系统主要包括Redo Log(重做日志)、Undo Log(回滚日志)和Bin Log(备份日志)。Redo Log用于保证事务的持久性,记录了数据页的物理修改,通过WAL(Write-Ahead Logging)机制先写日志再写磁盘,以提高性能。Undo Log用于事务的原子性和MVCC(多版本并发控制),记录了逻辑日志,可以通过undo信息恢复到修改前的状态。Bin Log记录了所有的修改操作的原始SQL语句,用于数据备份和主从复制

相关文章:

MySQL数据库——表的CURD(Update)

3.Update 语法:update table_name set column expr 案例 将孙悟空的数学成绩变更为80 mysql> select name,math from result; ----------------- | name | math | ----------------- | 唐三藏 | 98 | | 孙悟空 | 78 | | 猪悟能 | 98 |…...

性能测试 —— linux服务器搭建JMeter+Grafana+Influxdb监控可视化平台!

前言 在当前激烈的市场竞争中,创新和效率成为企业发展的核心要素之一。在这种背景下,如何保证产品和服务的稳定性、可靠性以及高效性就显得尤为重要。 而在软件开发过程中,性能测试是一项不可或缺的环节,它可以有效的评估一个系…...

python基础命令学习

1.Python基础知识 目录 1.Python基础知识1.1 变量及类型1.2 标识符与关键字1.3 输出与输入1.3.1格式化符号1.3.2转义字符1.3.3结束符1.3.4输入的特点 1.4 运算符1.4.1 算数运算符1.4.2 赋值运算符1.4.3 比较(即关系)运算符1.4.4 逻辑运算符 1.5 数据类型转换1.6 判断与循环语句…...

程序设计基础(试题及答案)

一、填空题 1.__ ____函数是程序启动时惟一的入口。 2.算法的复杂性包含两方面: 和 。 3.已知 char c= a ; int x=2,k; 执行语句k=c&&x++ ; 则x为 ,k为 。 4.数值0x34对应的十进制为 。 5…...

日常收录资源

日常收录资源 工具类绘图浏览器插件 软件类DockerGoJavaJavaScriptSpring Boot架构计算机网络算法其他 设计类配色素材图标图片 工具类 绘图 ProcessOnGitMind 浏览器插件 ColorPick Eyedropper:取色器 软件类 Docker Docker - 从入门到实践 Go Golang tuto…...

索引——电子学

电子学 教程 2N2222简介及用Arduino模拟 创意电子学:第000课——注册Tinkercad 网站账号 创意电子学-第01课:点亮LED 创意电子-第05课:串联和并联 创意电子学-第04课:使用欧姆定律 创意电子学-第03课:初学者如何…...

【学习笔记】A2X通信的协议(九)- 广播远程ID(BRID)

3GPP TS 24.577 V18.1.0的技术规范,主要定义了5G系统中A2X通信的协议方面,特别是在PC5接口和Uu接口上的A2X服务。以下是文件的核心内容分析: 7. 广播远程ID(BRID) 7.1 概述 本条款描述了以下程序: 在用…...

HoloLens 和 Unity 空间坐标系统

所有的 3D 图形应用程序都使用笛卡尔坐标系统来推理虚拟物体的位置和朝向。 这些坐标系建立三个垂直轴:X、Y 和 Z。 添加到场景的每个对象在其坐标系中都有一个 XYZ 位置。 Windows 调用在物理世界中具有实际意义的坐标系统,该系统以米为单位表示其坐…...

【npm】如何将开发的vite插件发布到npm

前言 简单说下 npm 是什么: npm 是一个 node 模块管理工具,也是全球最大的共享源。 npm 工具与 nodejs 配套发布,便利开发人员共享代码。npm 主要包括 npm 官方网站、CLI(控制台命令行工具)、和 registry(…...

数据结构-查找

一、基本术语 二、线性结构 ASL:平均查找长度 1、顺序查找 1.1、代码实现 typedef struct {int* elem;int TableLen; }SSTable;int Search_Seq(SSTable ST, int key) {ST.elem[0] key; //哨兵,使得循环不用判断数组是否会越界int i;for (i ST…...

Ubuntu环境下 pip安装应用时报错

pip安装应用时,报SSL错 WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available. 可能原因是python没有ssl,则在python安装时应该添加ssl ./configure --with-openssl/usr/local/ssl …...

打包时未添加camera模块,请参考https://ask.dcloud.net.cn/arss/1ooticle/283

今天在app打包使用的时候突然发现app在拍照上传照片的时候遇到这个问题 遇到这种情况通常是因为app打包的时候manifestjson文件中App模块配置中的Camera&Gallery配置没有打开,点击相应选项勾选即可 然后再上传打包就好了! 哈哈哈好久没写博客了最近太忙了&…...

Vue3+Setup使用websocket

创建src/util/socket.ts let websock: any null; let global_callback: any null; const serverPort "8080"; // webSocket连接端口 const wsuri "ws://" window.location.hostname ":" serverPort "/wsdemo"; function crea…...

tcpdump快速入门及实践手册

tcpdump快速入门及实践手册 1. 快速入门 [1]. 基本用法 基本用法: tcpdump [选项 参数] [过滤器 参数] [rootkysrv1 pwe]# tcpdump -h tcpdump version 4.9.3 libpcap version 1.9.1 (with TPACKET_V3) OpenSSL 1.1.1f 31 Mar 2020 Usage: tcpdump [-aAbdDefhH…...

javascript双判断语句

JavaScript的if双判断语句和java相似 if&#xff08;条件表达式&#xff09; { 执行语句 } else { 执行语句 } 比如说要判断一个年份是否是闰年&#xff0c;代码如下 html><head><meta charset"UTF-8"><title></title></hea…...

C# 中的多态

多态的定义&#xff1a; 通过指向派生类的基类引用&#xff0c;调用虚函数&#xff0c;会根据引用所指向派生类的实际类型&#xff0c;调用派生类中的同名重写函数&#xff0c;便是多态。 C#中的多态可以分为两种类型&#xff1a; 编译时多态&#xff08;静态多态&#xff09;&…...

高性能内存对象缓存Memcached原理与部署

目录 一&#xff1a;Memcached 1&#xff1a;Memcached的概述 2&#xff1a;数据存储方式与数据过期方式 &#xff08;1&#xff09;数据存储方式&#xff1a;Slab Allocation (2)数据过期方式:LRU、Laxzy Expiration 3.Memcached 缓存机制 4.Memcached 分布式 5.Memcac…...

【C++进阶】map与set的封装实践

文章目录 map和setmapmap的框架迭代器operator()operator--()operator()和operator!()operator*()operator->() insertbegin()end()operator[] ()map的所有代码&#xff1a; set的封装迭代器的封装总结 map和set 通过观察stl的底层我们可以看见&#xff0c;map和set是通过红…...

可视化编程-七巧低代码入门02

1.1.什么是可视化编程 非可视化编程是一种直接在集成开发环境中&#xff08;IDE&#xff09;编写代码的编程方式&#xff0c;这种编程方式要求开发人员具备深入的编程知识&#xff0c;开发效率相对较低&#xff0c;代码维护难度较大&#xff0c;容易出现错误&#xff0c;也需要…...

算法:魔法字典

1️⃣要求&#xff1a; 设计一个使用单词列表进行初始化的数据结构&#xff0c;单词列表中的单词 互不相同 。 如果给出一个单词&#xff0c;请判定能否只将这个单词中一个字母换成另一个字母&#xff0c;使得所形成的新单词存在于你构建的字典中。 实现 MagicDictionary 类…...

html+css 实现hover 翻转按钮

前言:哈喽,大家好,今天给大家分享html+css 绚丽效果!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 一、效果二、原理解析1.这是一个,hover翻转按钮的效果。这其实是用==一个元素==实现的。…...

ETL程序员如何平衡日常编码工作与提升式学习

在快速发展的科技行业中&#xff0c;程序员面临着不断更新的技术和工具&#xff0c;尤其是数据领域的从业者&#xff0c;如ETL&#xff08;抽取、转换、加载&#xff09;工程师。如何在日常繁重的编码工作中找到时间进行提升式学习&#xff0c;成为了许多ETL工程师的共同挑战。…...

被嫌弃的35岁程序员,竟找到了职业的新出路:PMP项目管理

35岁&#xff0c;本应是事业发展的高峰期。更多听到的却是35岁职场天花板&#xff0c;特别是IT从业者&#xff0c;35岁就好像是一道迈不过的坎&#xff1a;多年的工作经验&#xff0c;在35岁的生理年龄面前&#xff0c;一文不值。 IT从业者若想安然度过“35岁危机”&#xff0…...

跟李沐学AI:目标检测、锚框

边缘框 用于表示物体的位置&#xff0c;一个边缘框通过四个数字定义&#xff1a;(坐上x, 左上y, 右下x, 右下y)或&#xff08;左上x, 左上y, 宽, 高&#xff09; 通常物体检测或目标检测的数据集比图片分类的数据集小很多&#xff0c;因为物体检测数据集标注成本高很多。 目…...

【鸿蒙学习】HarmonyOS应用开发者基础 - 构建更加丰富的页面(一)

学完时间&#xff1a;2024年8月14日 一、前言叨叨 学习HarmonyOS的第六课&#xff0c;人数又成功的降了500名左右&#xff0c;到了3575人了。 二、ArkWeb 1、概念介绍 ArkWeb是用于应用程序中显示Web页面内容的Web组件&#xff0c;为开发者提供页面加载、页面交互、页面调…...

机器学习深度学习中的Warmup技术是什么?

机器学习&深度学习中的Warmup技术是什么&#xff1f; 在机器学习&深度学习模型的训练过程中&#xff0c;优化器的学习率调整策略对模型的性能和收敛性至关重要。Warmup是优化器学习率调整的一种技术&#xff0c;旨在改善训练的稳定性&#xff0c;特别是在训练的初期阶…...

ECMAScript6中的模块:export导出、import导入

1、模块概述 早期的 JavaScript 程序很小&#xff0c;通常被用来执行独立的脚本任务&#xff0c;在 Web 页面中需要的地方提供一定的交互。随着 Web 应用程序变得越来越复杂&#xff0c;有必要考虑提供一种将 JavaScript 程序拆分为可按需导入的单独模块的机制&#xff0c;这就…...

mysql写个分区表

因为表量已经达到1个亿了。现在想做个优化&#xff0c;先按照 create_time 时间进行分区吧。 create_time 是varchar类型。 CREATE TABLE orders (id varchar(40) NOT NULL ,order_no VARCHAR(20) NOT NULL,create_time VARCHAR(20) NOT NULL,amount DECIMAL(10,2) NOT NULL,…...

Hystrix——服务容错保护库

熔断机制是解决微服务架构中因等待出现故障的依赖方响应而形成任务挤压&#xff0c;最终导致自身服务瘫痪的一种机制&#xff0c;它的功能类似电路的保险丝&#xff0c;其目的是为了阻断故障&#xff0c;从而保护系统稳定性。Hystrix作为Spring Cloud中实现了熔断机制的组件&am…...

【区块链+金融服务】河北股权交易所综合金融服务平台 | FISCO BCOS应用案例

区域性股权市场是我国资本市场的重要组成部分&#xff0c;是多层次资本市场体系的基石。河北股权交易所&#xff08;简称&#xff1a;河交所&#xff09; 作为河北省唯一一家区域性股权市场运营机构&#xff0c;打造河北股权交易所综合金融服务平台&#xff0c;将区块链技术与区…...