大厂面试官必问的Mysql锁机制
前言
前几天有粉丝和我聊到他找工作面试大厂时被问的问题,因为现在疫情期间,找工作也特别难找。他说面试的题目也比较难,都偏向于一两年的工作经验的面试题。
他说在一面的时候被问到Mysql的面试题,索引那块自己都回答比较满意,但是问到Mysql的锁机制就比较懵了。
因为平时没有关注Mysql的锁机制,当被问到高并发场景下锁机制是怎么保证数据的一致性的和事务隔离性的。
他把他面试的过程分享给了我,Mysql高并发锁机制的问题,几乎面大厂都有被问到,Mysql怎么在高并发下控制并发访问的?
我细想了一下,Mysql的锁机制确实非常重要,所以在这里做一个全面的总结整理,便于以后的查阅,也分享给各位读者大大们。
Mysql的锁机制还是有点难理解的,所以这篇文章采用图文结合的方式讲解难点,帮助大家理解,讲解的主要内容如下图的脑图所示,基本涵盖了Mysql锁机制的所有知识点。
本文脑图
锁种类
Mysql中锁的分类按照不同类型的划分可以分成不同的锁
- 按照 「锁的粒度」 划分可以分成:「表锁、页锁、行锁」;
- 按照 「使用的方式」 划分可以分为:「共享锁」和「排它锁」;
- 按照思想的划分:「乐观锁」和「悲观锁」。
下面我们对着这几种划分的锁进行详细的解说和介绍,在了解设计者设计锁的概念的同时,也能深入的理解设计者的设计思想。
「表锁」: 是粒度最大的锁,开销小,加锁快,不会出现死锁,但是由于粒度太大,因此造成锁的冲突几率大,并发性能低。
Mysql的 「MyISAM储存引擎就支持表锁」,MyISAM的表锁模式有两种:「表共享读锁」和「表独占写锁」。
当一个线程获取到MyISAM表的读锁的时候,会阻塞其他用户对该表的写操作,但是不会阻塞其它用户对该用户的读操作。
相反的,当一个线程获取到MyISAM表的写锁的时候,就会阻塞其它用户的读写操作对其它的线程具有排它性。
「页锁」: 的粒度是介于行锁和表锁之间的一种锁,因为页锁是在BDB中支持的一种锁机制,也很少没人提及和使用,所以这里制作概述,不做详解。
「行锁」: 是粒度最小的锁机制,行锁的加锁开销性能大,加锁慢,并且会出现死锁,但是行锁的锁冲突的几率低,并发性能高。
行锁是InnoDB默认的支持的锁机制,MyISAM不支持行锁,这个也是InnoDB和MyISAM的区别之一。
行锁在使用的方式上可以划分为:「共享读锁(S锁)「和」排它写锁(X锁)」。
当一个事务对Mysql中的一条数据行加上了S锁,当前事务不能修改该行数据只能执行读操作,其他事务只能对该行数据加S锁不能加X锁。
若是一个事务对一行数据加了X锁,该事务能够对该行数据执行读和写操作,其它事务不能对该行数据加任何的锁,既不能读也不能写。
「悲观锁和乐观锁是在很多框架都存在的一种思想,不要狭义地认为它们是某一种框架的锁机制」。
数据库管理系统中为了控制并发,保证在多个事务执行时的数据一致性以及事务的隔离性,使用悲观锁和乐观锁来解决并发场景下的问题。
Mysql的 「悲观锁的实现是基于Mysql自身的锁机制实现,而乐观锁需要程序员自己去实现的锁机制」,最常见的乐观锁实现就锁机制是 「使用版本号实现」。
乐观锁设计思想的在CAS
的运用也是比较经典,之前我写过一篇关于CAS的文章,大家感兴趣的可以参考这一篇[深入剖析AQS和CAS,看了都说好]。
从上面的介绍中说了每一种锁的概念,但是很难说哪一种锁就是最好的,锁没有最好的,只有哪种业务场景最适合哪种锁,具体业务具体分析。
下面我们就具体基于Mysql的存储引擎详细的分析每一种锁在存储引擎中的运用和实现。
MyISAM
MyISAM中默认支持的表级锁有两种:「共享读锁」和「独占写锁」。表级锁在MyISAM和InnoDB的存储引擎中都支持,但是InnoDB默认支持的是行锁。
Mysql中平时读写操作都是隐式的进行加锁和解锁操作,Mysql已经自动帮我们实现加锁和解锁操作了,若是想要测试锁机制,我们就要显示的自己控制锁机制。
Mysql中可以通过以下sql来显示的在事务中显式的进行加锁和解锁操作:
# 显式的添加表级读锁
LOCK TABLE 表名 READ
# 显示的添加表级写锁
LOCK TABLE 表名 WRITE
# 显式的解锁(当一个事务commit的时候也会自动解锁)
unlock tables;# 查询当前锁表状态
show open tables where in_use > 0;
下面我们就来测试一下MyISAM中的表级锁机制,首先创建一个测试表employee
,这里要指定存储引擎为MyISAM,并插入两条测试数据:
CREATE TABLE IF NOT EXISTS employee (id INT PRIMARY KEY auto_increment,name VARCHAR(40),money INT
)ENGINE MyISAM;INSERT INTO employee(name, money) VALUES('黎杜', 1000);
INSERT INTO employee(name, money) VALUES('非科班的科班', 2000);
查看一下,表结果如下图所示:
mysql> select * from employee;
+----+--------------+-------+
| id | name | money |
+----+--------------+-------+
| 1 | 黎杜 | 1000 |
| 2 | 非科班的科班 | 2000 |
+----+--------------+-------+
MyISAM表级写锁
(1)与此同时再开启一个session窗口,然后在第一个窗口执行下面的sql,在session1中给表添加写锁:
LOCK TABLE employee WRITE;
(2)可以在session2中进行查询或者插入、更新该表数据,可以发现都会处于等待状态,也就是session1锁住了整个表,导致session2只能等待:
mysql> select * from employee;
_
(3)在session1中进行查询、插入、更新数据,都可以执行成功:
mysql> insert into employee values(3, 'sql', 3000);
Query OK, 1 row affected (0.03 sec)mysql> select * from employee;
+----+--------------+-------+
| id | name | money |
+----+--------------+-------+
| 1 | 黎杜 | 1000 |
| 2 | 非科班的科班 | 2000 |
| 3 | sql | 3000 |
+----+--------------+-------+
3 rows in set (0.04 sec)mysql> update employee set name = 'ldc' where id = 2;
Query OK, 1 row affected (0.03 sec)
Rows matched: 1 Changed: 1 Warnings: 0
「总结:」 从上面的测试结果显示 「当一个线程获取到表级写锁后,只能由该线程对表进行读写操作,别的线程必须等待该线程释放锁以后才能操作」。
MyISAM表级共享读锁
(1)接下来测试一下表级共享读锁,同样还是利用上面的测试数据,第一步还是在session1给表加读锁。
mysql> lock tables employee read;
(2)然后在session1中尝试进行插入、更新数据,发现都会报错,只能查询数据。
mysql> select * from employee;
+----+------+-------+
| id | name | money |
+----+------+-------+
| 1 | 黎杜 | 1000 |
| 2 | ldc | 2000 |
| 3 | sql | 3000 |
+----+------+-------+
3 rows in set (0.03 sec)mysql> insert into employee values(4, 'mysql', 3000);
1099 - Table 'employee' was locked with a READ lock and can't be updated
mysql> update employee set name = 'mysql' where id = 3;
1099 - Table 'employee' was locked with a READ lock and can't be updated
(3)最后在session2中尝试进行插入、更新数据,程序都会进入等待状态,只能查询数据,直到session1解锁表session2才能插入、更新数据。
mysql> select * from employee;
+----+------+-------+
| id | name | money |
+----+------+-------+
| 1 | 黎杜 | 1000 |
| 2 | ldc | 2000 |
| 3 | sql | 3000 |
+----+------+-------+
3 rows in set (0.03 sec)mysql> insert into employee values(4, 'mysql', 3000);
「总结:」 从上面的测试结果显示 「当一个线程获取到表级读锁后,该线程只能读取数据不能修改数据,其它线程也只能加读锁,不能加写锁」。
MyISAM表级锁竞争情况
MyISAM存储引擎中,可以通过查询变量来查看并发场景锁的争夺情况,具体执行下面的sql语句:
mysql> show status like 'table%';
+----------------------------+-------+
| Variable_name | Value |
+----------------------------+-------+
| Table_locks_immediate | 312 |
| Table_locks_waited | 0 |
| Table_open_cache_hits | 60 |
| Table_open_cache_misses | 1 |
| Table_open_cache_overflows | 0 |
+----------------------------+-------+
主要是查看table_locks_waited
和table_locks_immediate
的值的大小分析锁的竞争情况。
Table_locks_immediate
: 表示能够立即获得表级锁的锁请求次数;Table_locks_waited
: 表示不能立即获取表级锁而需要等待的锁请求次数分析,「值越大竞争就越严重」。
并发插入
通过上面的操作演示,详细的说明了表级共享锁和表级写锁的特点。但是在平时的执行sql的时候,这些 「解锁和释放锁都是Mysql底层隐式的执行的」。
上面的演示只是为了证明显式的执行事务的过程共享锁和表级写锁的加锁和解锁的特点,实际并不会这么做的。
在我们平时执行select语句的时候就会隐式的加读锁,执行增、删、改的操作时就会隐式的执行加写锁。
MyISAM存储引擎中,虽然读写操作是串行化的,但是它也支持并发插入,这个需要设置内部变量concurrent_insert
的值。
它的值有三个值0、1、2
。可以通过以下的sql查看concurrent_insert
的默认值为 「AUTO(或者1)」。
mysql> show variables like '%concurrent_insert';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| concurrent_insert | AUTO |
+-------------------+-------+
concurrent_insert的值为NEVER (or 0)
表示不支持比并发插入;值为AUTO(或者1)
表示在MyISAM表中没有被删除的行,运行另一个线程从表尾插入数据;值为ALWAYS (or 2)
表示不管是否有删除的行,都允许在表尾插入数据。
锁调度
MyISAM存储引擎中,「假如同时一个读请求,一个写请求过来的话,它会优先处理写请求」,因为MyISAM存储引擎中认为写请求比读请求重要。
这样就会导致,「假如大量的读写请求过来,就会导致读请求长时间的等待,或者"线程饿死",因此MyISAM不适合运用于大量读写操作的场景」,这样会导致长时间读取不到用户数据,用户体验感极差。
当然可以通过设置low-priority-updates
参数,设置请求链接的优先级,使得Mysql优先处理读请求。
InnoDB
InnoDB和MyISAM不同的是,InnoDB支持 「行锁」 和 「事务」,行级锁的概念前面以及说了,这里就不再赘述,事务的四大特性的概述以及实现的原理可以参考这一篇[]。
InnoDB中除了有 「表锁」 和 「行级锁」 的概念,还有Gap Lock(间隙锁)、Next-key Lock锁, 「间隙锁主要用于范围查询的时候,锁住查询的范围,并且间隙锁也是解决幻读的方案」。
InnoDB中的行级锁是 「对索引加的锁,在不通过索引查询数据的时候,InnoDB就会使用表锁」。
「但是通过索引查询的时候是否使用索引,还要看Mysql的执行计划」,Mysql的优化器会判断是一条sql执行的最佳策略。
若是Mysql觉得执行索引查询还不如全表扫描速度快,那么Mysql就会使用全表扫描来查询,这是即使sql语句中使用了索引,最后还是执行为全表扫描,加的是表锁。
若是对于Mysql的sql执行原理不熟悉的可以参考这一篇文章[]。最后是否执行了索引查询可以通过explain
来查看,我相信这个大家都是耳熟能详的命令了。
InnoDB行锁和表锁
InnoDB的行锁也是分为行级 「共享读锁(S锁「和」排它写锁(X锁)」,原理特点和MyISAM的表级锁两种模式是一样的。
若想显式的给表加行级读锁和写锁,可以执行下面的sql语句:
# 给查询sql显示添加读锁
select ... lock in share mode;
# 给查询sql显示添加写锁
select ... for update;
(1)下面我们直接进入锁机制的测试阶段,还是创建一个测试表,并插入两条数据:
# 先把原来的MyISAM表给删除了
DROP TABLE IF EXISTS employee;
CREATE TABLE IF NOT EXISTS employee (id INT PRIMARY KEY auto_increment,name VARCHAR(40),money INT
)ENGINE INNODB;
# 插入测试数据
INSERT INTO employee(name, money) VALUES('黎杜', 1000);
INSERT INTO employee(name, money) VALUES('非科班的科班', 2000);
(2)创建的表中可以看出对表中的字段只有id添加了主键索引,接着就是在session1窗口执行begin
开启事务,并执行下面的sql语句:
# 开启事物, 使用 commit; 进行事物提交
mysql> begin;
Query OK, 0 rows affected (0.00 sec)# 使用非索引字段查询,并显式的添加写锁
mysql> select * from employee where name='黎杜' for update;
+----+------+-------+
| id | name | money |
+----+------+-------+
| 1 | 黎杜 | 1000 |
+----+------+-------+
(3)然后在session2中执行update语句,上面查询的是id=1的数据行,下面update的是id=2的数据行,会发现程序也会进入等待状态:
update employee set name='ldc' where id =2;
_
可见若是 「使用非索引查询,直接就是使用的表级锁」,锁住了整个表。
(4)若是session1使用的是id来查询,如下图所示:
mysql> select * from employee where id = 1 for update;
+----+------+-------+
| id | name | money |
+----+------+-------+
| 1 | 黎杜 | 1000 |
+----+------+-------+
(5)那么session2是可以成功update其它数据行的,但是这里我建议使用数据量大的表进行测试,因为前面我说过了 「是否执行索引还得看Mysql的执行计划,对于一些小表的操作,可能就直接使用全表扫描」。
mysql> update employee set name='ldc' where id =2;
Query OK, 1 row affected (5.25 sec)
Rows matched: 1 Changed: 1 Warnings: 0
(6)还有一种情况就是:假如我们给name字段也加上了普通索引,那么通过普通索引来查询数据,并且查询到多行数据,那它是锁这多行数据还是锁整个表呢?
下面我们来测试一下,首先给 「name字段添加普通索引」,如下图所示:
mysql> alter table employee add index index_name(name);
Query OK, 0 rows affected (0.12 sec)
Records: 0 Duplicates: 0 Warnings: 0
(7)并插入一条新的数据name值与id=2的值相同,并显式的加锁,如下若是:
(8)当update其它数据行name值不是ldc的也会进入等待状态,并且通过explain来查看是否name='ldc’有执行索引,可以看到sql语句是有执行索引条件的。
结论:从上面的测试锁机制的演示可以得出以下几个结论:
- 执行非索引条件查询执行的是表锁。
- 执行索引查询是否是加行锁,还得看Mysql的执行计划,可以通过explain关键字来查看。
- 用普通键索引的查询,遇到索引值相同的,也会对其他的操作数据行的产生影响。
InnoDB间隙锁
当我们使用范围条件查询而不是等值条件查询的时候,InnoDB就会给符合条件的范围索引加锁,在条件范围内并不存的记录就叫做"间隙(GAP)"
大家大概都知道在事务的四大隔离级别中,不可重复读会产生幻读的现象,只能通过提高隔离级别到串行化来解决幻读现象。
但是Mysql中的不可重复是已经解决了幻读问题,它通过引入间隙锁的实现来解决幻读,通过给符合条件的间隙加锁,防止再次查询的时候出现新数据产生幻读的问题。
例如我们执行下面的sql语句,就会对id大于100的记录加锁,在id>100的记录中肯定是有不存在的间隙:
select * from employee where id> 100 for update;
(1)接着来测试间隙锁,新增一个字段num,并将num添加为普通索引、修改之前的数据使得num之间的值存在间隙,操作如下sql所示:
alter table employee add num int not null default 0;
update employee set num = 1 where id = 1;
update employee set num = 1 where id = 2;
update employee set num = 3 where id = 3;
insert into employee values(4,'kris',4000,5);
(2)接着在session1的窗口开启事务,并执行下面操作:
(3)同时打开窗口session2,并执行新增语句:
insert into employee values(5,'ceshi',5000,2); # 程序出现等待
insert into employee values(5,'ceshi',5000,4); # 程序出现等待
insert into employee values(5,'ceshi',5000,6); # 新增成功
insert into employee values(6,'ceshi',5000,0); # 新增成功
「从上面的测试结果显示在区间(1,3]U[3,5)之间加了锁,是不能够新增数据行,这就是新增num=2和num=4失败的原因,但是在这个区间以外的数据行是没有加锁的,可以新增数据行」。
根据索引的有序性,而普通索引是可以出现重复值,那么当我们第一个sesson查询的时候只出现一条数据num=3,为了解决第二次查询的时候出现幻读,也就是出现两条或者更多num=3这样查询条件的数据。
Mysql在满足where条件的情况下,给(1,3]U[3,5)
区间加上了锁不允许插入num=3的数据行,这样就解决了幻读。
这里抛出几种情况接着来测试间隙锁。主键索引(唯一索引)是否会加上间隙锁呢?范围查询是否会加上间隙锁?使用不存在的检索条件是否会加上间隙锁?
先来说说:「主键索引(唯一索引)是否会加上间隙锁呢?」
因为主键索引具有唯一性,不允许出现重复,那么当进行等值查询的时候id=3,只能有且只有一条数据,是不可能再出现id=3的第二条数据。
因此它只要锁定这条数据(锁定索引),在下次查询当前读的时候不会被删除、或者更新id=3的数据行,也就保证了数据的一致性,所以主键索引由于他的唯一性的原因,是不需要加间隙锁的。
再来说说第二个问题:「范围查询是否会加上间隙锁?」
直接在session1中执行下面的sql语句,并在session2中在这个num>=3的查询条件内和外新增数据:
select * from employee where num>=3 for update;
insert into employee values(6,'ceshi',5000,2); # 程序出现等待
insert into employee values(7,'ceshi',5000,4); # 程序出现等待
insert into employee values(8,'ceshi',5000,1); # 新增数据成功
我们来分析以下原理:单查询num>=3的时候,在现有的employee表中满足条件的数据行,如下所示:
id | num |
---|---|
3 | 3 |
4 | 5 |
5 | 6 |
那么在设计者的角度出发,我为了解决幻读的现象:在num>=3的条件下是必须加上间隙锁的。
而在小于num=3中,下一条数据行就是num=1了,为了防止在(1,3]的范围中加入了num=3的数据行,所以也给这个间隙加上了锁,这就是添加num=2数据行出现等待的原因。
最后来说一说:「使用不存在的检索条件是否会加上间隙锁?」
假如是查询num>=8的数据行呢?因为employee表并不存在中num=8的数据行,num最大num=6,所以为了解决幻读(6,8]与num>=8也会加上锁。
说到这里我相信很多人已经对间隙锁有了清晰和深入的认识,可以说是精通了,又可以和面试官互扯了。
假如你是第一次接触Mysql的锁机制,第一次肯定是懵的,建议多认真的看几遍,跟着案例敲一下自己深刻的去体会,慢慢的就懂了。
死锁
死锁在InnoDB中才会出现死锁,MyISAM是不会出现死锁,因为MyISAM支持的是表锁,一次性获取了所有的锁,其它的线程只能排队等候。
而InnoDB默认支持行锁,获取锁是分步的,并不是一次性获取所有的锁,因此在锁竞争的时候就会出现死锁的情况。
虽然InnoDB会出现死锁,但是并不影响InnoDB成为最受欢迎的存储引擎,MyISAM可以理解为串行化操作,读写有序,因此支持的并发性能低下。
死锁案例一
其中name=ldc的有两条数据,并且name字段为普通索引,分别是id=2和id=3的数据行,现在假设有两个事务分别执行下面的两条sql语句:
# session1执行
update employee set num = 2 where name ='ldc';
# session2执行
select * from employee where id = 2 or id =3;
其中session1执行的sql获取的数据行是两条数据,假设先获取到第一个id=2的数据行,然后cpu的时间分配给了另一个事务,另一个事务执行查询操作获取了第二行数据也就是id=3的数据行。
当事务2继续执行的时候获取到id=3的数据行,锁定了id=3的数据行,此时cpu又将时间分配给了第一个事务,第一个事务执行准备获取第二行数据的锁,发现已经被其他事务获取了,它就处于等待的状态。
当cpu把时间有分配给了第二个事务,第二个事务准备获取第一行数据的锁发现已经被第一个事务获取了锁,这样就行了死锁,两个事务彼此之间相互等待。
死锁案例二
第二种死锁情况就是当一个事务开始并且update一条id=1的数据行时,成功获取到写锁,此时另一个事务执行也update另一条id=2的数据行时,也成功获取到写锁(id为主键)。
此时cpu将时间分配给了事务一,事务一接着也是update id=2的数据行,因为事务二已经获取到id=2数据行的锁,所以事务已处于等待状态。
事务二有获取到了时间,像执行update id=1的数据行,但是此时id=1的锁被事务一获取到了,事务二也处于等待的状态,因此形成了死锁。
session1 | session2 |
---|---|
begin;update t set name=‘测试’ where id=1; | begin |
update t set name=‘测试’ where id=2; | |
update t set name=‘测试’ where id=2; | |
等待… | update t set name=‘测试’ where id=1; |
等待… | 等待… |
死锁的解决方案
首先要解决死锁问题,在程序的设计上,当发现程序有高并发的访问某一个表时,尽量对该表的执行操作串行化,或者锁升级,一次性获取所有的锁资源。
然后也可以设置参数innodb_lock_wait_timeout
,超时时间,并且将参数innodb_deadlock_detect
打开,当发现死锁的时候,自动回滚其中的某一个事务
总结
上面详细的介绍了MyISAM和InnoDB两种存储引擎的锁机制的实现,并进行了测试。
MyISAM的表锁分为两种模式:「共享读锁」和「排它写锁」。获取的读锁的线程对该数据行只能读,不能修改,其它线程也只能对该数据行加读锁。
获取到写锁的线程对该数据行既能读也能写,对其他线程对该数据行的读写具有排它性。
MyISAM中默认写优先于去操作,因此MyISAM一般不适合运用于大量读写操作的程序中。
InnoDB的行锁虽然会出现死锁的可能,但是InnoDB的支持的并发性能比MyISAM好,行锁的粒度最小,一定的方法和措施可以解决死锁的发生,极大的发挥InnoDB的性能。
InnoDB中引入了间隙锁的概念来决解出现幻读的问题,也引入事务的特性,通过事务的四种隔离级别,来降低锁冲突,提高并发性能。
Reference
- https://www.cnblogs.com/leedaily/p/8378779.html
- https://blog.csdn.net/qq_38238296/article/details/88362999
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- Spring Boot 2020面试必看
什么是 Spring Boot?Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。Spring Boot 主要有如下优点:容易上手,提升开发效率,为 Spring 开发提供一个更快…...
2024/4/22 13:52:34 - 2020三元同学春招阿里淘系、阿里云、字节跳动面经 & 个人成长经验分享 | 掘金技术征文
原博客地址 https://juejin.im/post/5e7d4e8b6fb9a03c6422f112 本人今年 211 本科大三下,掘金六级博主,最近投实习,一共投了三家,阿里的淘系和阿里云,字节跳动的抖音,当然都是找人内推的,结果简述如下: 淘系二面通过,但入系统只能选择一个,后来选择了阿里云; 阿里云走…...
2024/4/24 17:58:05 - linux主流的发行版有哪些及特点?
1、DebianDebian是完全由自由软件组成的类UNIX操作系统,其包含的多数软件使用GNU通用公共许可协议授权,并由Debian计划的参与者组成团队对其进行打包、开发与维护。Debian计划最初由伊恩默多克于1993年发起,Debian 0.01版在1993年9月15日发布,而其第一个稳定版本则在1996年…...
2024/4/19 15:34:20 - python学习第一站:计算机基础
python基础第一篇一、计算机语言1.基本概念2.计算机语言的发展3.解释型语言和编译型语言的区别二、计算机交互方式交互种类文本交互模式打开的方式三、文本文件和字符集文本文件字符集四、数据换算 一、计算机语言 1.基本概念计算机语⾔(Computer Language)指⽤于⼈与计算机之…...
2024/4/19 16:48:45 - 用java计算素数/质数——————求1-100有多少个素数
最近复习java,来复习下用java求质数 求1-100有多少个素数 public static void main (String []args){int sum = 0 ; //定义一个计数器for(int i = 2; i <= 100; i++){//定义范围,从2开始,因为1既不是素数也不是合数boolean flag = true;//假定为正确的值for(int j = 2; j…...
2024/4/16 13:28:34 - jdbc学习----4.DAO及其实现类
BaseDao编写public abstract class BaseDao {/*** 修改方法*/public int update(Connection con,String sql,Object...args) {PreparedStatement ps = null;try {ps = con.prepareStatement(sql);if(args.length > 0) {for(int i = 0;i < args.length;i ++) {ps.setObjec…...
2024/4/20 16:31:36 - python 实现汇率兑换程序
编写一个程序,实现汇率兑换美元和人民币互相转换,1美元=6人民币 先介绍一下字符串,比如a=[‘Happy’,‘Birthday’,‘To’,‘You’] 那么顺序列表元素的标号为0,1,2,3 倒序为-1,-2,-3,-4 Happy即可以用a[0]表示,也可以用a[-4]表示 同理 You即可以用a[3]表示,也可以用a[-…...
2024/4/27 2:52:10 - JRE和JDK以及常用的DOS命令
JDK是开发环境。同时也是最大的。JRE是运行时环境,包含了JVM和核心类库。JVM保证了JAVA程序的跨平台。下图是常用的DOS命令:...
2024/4/25 18:44:40 - 【栈】C020_LC_删除最外层的括号(记录左右括号数)
一、Problem 有效括号字符串为空 ("")、"(" + A + “)” 或 A + B,其中 A 和 B 都是有效的括号字符串,+ 代表字符串的连接。例如,"","()","(())()" 和 “(()(()))” 都是有效的括号字符串。 如果有效字符串 S 非空,且…...
2024/4/16 13:28:24 - 笔记C《ArrayList线程安全》
ArrayList 线程安全 ArrayList 是非线程安全的,如果强制在多进程中使用 ,将会报 ConcurrentModificationException 并发修改异常。使用 Vector,效率低下; 使用 Collections.synchronizedList,实际返回了 SynchronizedList。在进行数据操作是,都加了 synchronized 锁来进行…...
2024/4/19 23:09:05 - 动态规划法求解0-1背包问题
动态规划函数#include<iostream> using namespace std; int main() {int n, C, i, j;cout << "请输入背包容量:";cin >> C;cout << "请输入物品数:";cin >> n;int *w = new int[n+1];int *v = new int[n+1];int *x = new …...
2024/4/16 13:27:28 - 用记事本写代码+用cmd命令提示符编译代码
用记事本和cmd命令提示符编译代码 记事本代码:资源管理器路径地址前面+cmd空格:cmd命令提示符:...
2024/4/16 13:29:36 - dataset生成batch的学习
最近在学习神经网络模型搭建,在生成batch使用到了dataset,作此记录。 data_batch (1)不调用api的方法 def next_batch(wav_files, labels,n_input,word_num_map, start_idx=0, batch_size=1):filesize = len(labels)# 计算要获取的序列的开始和结束下标end_idx = min(filesize…...
2024/4/20 15:17:09 - Mac上使用Jenv管理多个JDK版本
https://www.jianshu.com/p/21f9ae99e88b...
2024/4/18 6:33:23 - JAVA中Vector集合 及 转换为线性安全
JAVA中Vector集合:底层也是一个数组 初始化容量:10 怎么扩容的: 扩容后是原容量的两倍,10——>20——>40 Vector中所有方法都是线程同步的,有Synchronized关键字 因为Vector是线性安全的,所以Vector运行效率低,使用较少非线性安全转换为线性安全:怎么将一个线程不…...
2024/4/17 16:17:49 - 数据库增删查改、多表联查、基本操作总结
数据库增删查改、多表联查、基本操作总结 欢迎使用Markdown编辑器 入职三天,还没上手项目,简单地学习了一下数据库的基本操作以及了解业务逻辑。 数据库的增删查改*数据的insert语句 : insert into table values() insert into table (column1,column2,column3)values…...
2024/4/19 22:28:13 - C++中的printf和cout
1.printf: printf可以输出东西,但是它在一个叫做cstdio,导入cstdio包的方法是:#include<cstdio> 首先,我们要打一个#include<>。记住:括号是<>,不是()。我们在<>这里打一个你想要导入的包,例如:cstdio。所以是:include。接下来,要打主函数和停…...
2024/4/16 13:29:30 - 罗列根目录中所有子目录的功能以及存放的文件类型
/bin 二进制可执行命令。 /dev 设备特殊文件 /etc 系统管理和配置文件 /home 用户目录的基点 /lib 标准程序设计库,又叫动态链接共享库 /sbin 系统管理命令,这里存放系统管理员使用的管理程序 /tmp 公用的临时文件存储点 /root 系统管理员的主目录 /mnt 系统提供这个目…...
2024/4/19 15:34:26 - 17.1认识反射机制
反射是动态类的处理机制。 Class类是反射机制的根源,可以Object类中所提供的方法获取到一个Class实例: 获取Class实例化对象:public final Class<?> getClass();范例:获取反射实例 import java.util.Date;public class JavaReflectDemo436 {public static void mai…...
2024/4/19 2:46:10 - Editormd的使用——在线编辑和查看文章
使用Editormd可以方便地在界面上嵌入markdown编辑器,并能够实时预览。 先看一下实现效果: 编辑文章界面: 展示文章界面:用法: 首先,到https://pandao.github.io/editor.md/下载Editormd的压缩包,解压到自己的静态资源文件夹下。第二步,引入必要的文件:<link rel=&q…...
2024/4/16 13:28:44
最新文章
- 【Hadoop】-Apache Hive使用语法与概念原理[15]
一、数据库操作 创建数据库 create database if not exists myhive; 使用数据库 use myhive; 查看数据库详细信息 desc database myhive; 数据库本质上就是在HDFS之上的文件夹。 默认数据库的存放路径是HDFS的:/user/hive/warehouse内 创建数据库并指定hdfs…...
2024/4/27 23:53:28 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - 爱自然生命力粤东中心家风家教高端研讨会在广东汕头盛大开启
2024年3月30日,爱自然生命力粤东中心家风家教高端研讨会在广东汕头金海湾大酒店隆重召开。 (图为活动现场) 本次由爱自然生命力体系粤东中心主办的粤东家风家教高端研讨会,主题为“携手校家社,共筑新格局”࿰…...
2024/4/27 1:44:56 - Windows 2008虚拟机安装、安装VM Tools、快照和链接克隆、添加硬盘修改格式为GPT
一、安装vmware workstation软件 VMware workstation的安装介质,获取路径: 链接:https://pan.baidu.com/s/1AUAw_--yjZAUPbsR7StOJQ 提取码:umz1 所在目录:\vmware\VMware workstation 15.1.0 1.找到百度网盘中vmwa…...
2024/4/24 23:48:40 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/4/26 18:09:39 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/4/26 20:12:18 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/26 23:05:52 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/4/27 4:00:35 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/27 17:58:04 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/27 14:22:49 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/26 21:56:58 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/27 9:01:45 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/27 17:59:30 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/4/25 18:39:16 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/25 18:39:16 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/26 19:03:37 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/26 22:01:59 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/25 18:39:14 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/4/26 23:04:58 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/27 23:24:42 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/25 18:39:00 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/26 19:46:12 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/4/27 11:43:08 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/27 8:32:30 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57