文章目录

    • 一、概述
    • 二、基础知识
      • 1. 进程相关概念
      • 2. 环境变量
      • 3. 相关函数
    • 三、练习

一、概述

在这里插入图片描述

二、基础知识

1. 进程相关概念

1)程序和进程

程序,是指编译好的二进制文件,在磁盘上,不占用系统资源(cpu、内存、打开的文件、设备、锁…)

进程,是一个抽象的概念,与操作系统原理联系紧密。进程是活跃(运行起来的)的程序,占用系统资源,在内存中执行。(程序运行起来,产生一个进程)。

程序 → 剧本(纸) ,进程 → 戏(舞台、演员、灯光、道具…),同一个剧本可以在多个舞台同时上演。同样,同一个程序也可以加载为不同的进程(彼此之间互不影响)

如:同时开两个终端。各自都有一个bash,但彼此ID不同。

进程和线程的区别:
在这里插入图片描述
阮一峰大佬的文章

  • CPU是工厂、
  • CPU时间片是电力资源、
  • 进程是车间、
  • 线程是车间工人~

2)并发

并发,在操作系统中,一个时间段中有多个进程都处于已启动运行到运行完毕之间的状态。但,任一个时刻点上仍只有一个进程在运行。理论依据:时钟中断

例如,当下,我们使用计算机时可以边听音乐边聊天边上网。 若笼统的将他们均看做一个进程的话,为什么可以同时运行呢,因为并发。
在这里插入图片描述

并发和并行的区别:
在这里插入图片描述
Erlang 之父 Joe Armstrong 用一张5岁小孩都能看懂的图解释了并发与并行的区别

  • 并发是两个队列交替使用一台咖啡机,
  • 并行是两个队列同时使用两台咖啡机,
  • 串行是一个队列使用一台咖啡机,

3)单道程序设计

所有进程一个一个排队执行。若A阻塞,B只能等待,即使CPU处于空闲状态。而在人机交互时阻塞的出现时必然的。所有这种模型在系统资源利用上及其不合理,在计算机发展历史上存在不久,大部分便被淘汰了。

4)多道程序设计

在计算机内存中同时存放几道相互独立的程序,它们在管理程序控制之下,相互穿插的运行。多道程序设计必须有硬件基础作为保证。

时钟中断 即为多道程序设计模型的理论基础。 并发时,任意进程在执行期间都不希望放弃cpu。因此系统需要一种强制让进程让出cpu资源的手段。时钟中断有硬件基础作为保障,对进程而言不可抗拒。 操作系统中的中断处理函数,来负责调度程序执行。

在多道程序设计模型中,多个进程轮流使用CPU (分时复用CPU资源)。而当下常见CPU为纳秒级,1秒可以执行大约10亿条指令(1s = 1000ms, 1ms = 1000us, 1us = 1000ns)。由于人眼的反应速度是毫秒级,所以看似同时在运行。

实质上,并发是宏观并行,微观串行(伪并行)!推动了计算机蓬勃发展,将人类引入了多媒体时代。

5)CPU和MMU
在这里插入图片描述程序中用到的所有的内存都是虚拟内存,但是虚拟内存在计算机中是不实际存在的,存储的数据都是存储在物理内存中。
在这里插入图片描述6)进程控制块PCB

每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,Linux内核的进程控制块是task_struct结构体。

  • 进程id。系统中每个进程有唯一的id,在C语言中用pid_t类型表示,其实就是一个非负整数。
  • 进程的状态,有初始化、就绪、运行、挂起、停止等状态。
  • 进程切换时需要保存和恢复的一些CPU寄存器的值。
  • 描述虚拟地址空间的信息。
  • 描述控制终端的信息。
  • 当前工作目录(Current Working Directory)。
  • umask掩码。
  • 文件描述符表,包含很多指向已经打开的文件的file结构体的指针的一个数组。 (注:pcb中有一根指针,指针存储的是文件描述符表的首地址)
  • 和信号相关的信息。
  • 用户id和组id。
  • 会话(Session)和进程组。
  • 进程可以使用的资源上限(Resource Limit)。

在这里插入图片描述
ulimit -a 列出所有当前资源极限

7)进程状态

进程基本的状态有5种。分别为初始态,就绪态,运行态,挂起态与终止态。细分可以分成七种状态:
在这里插入图片描述

2. 环境变量

(1)定义:

环境变量,是指在操作系统中用来指定操作系统运行环境的一些参数。

  • 通常具备以下特征:
    • ① 字符串(本质)
    • ② 有统一的格式:名=值[:值]
    • ③ 值用来描述进程环境信息。
  • 存储形式:与命令行参数类似。char *[]数组,数组名environ,内部存储字符串,NULL作为哨兵结尾。
  • 使用形式:与命令行参数类似。
  • 加载位置:与命令行参数类似。位于用户区,高于stack的起始位置。
  • 引入环境变量表:须声明环境变量。extern char ** environ;

(2)常见环境变量:

按照惯例,环境变量字符串都是name=value这样的形式,大多数name由大写字母加下划线组成,一般把name的部分叫做环境变量,value的部分则是环境变量的值。环境变量定义了进程的运行环境,一些比较重要的环境变量的含义如下:

  • PATH

可执行文件的搜索路径。ls命令也是一个程序,执行它不需要提供完整的路径名/bin/ls,然而通常我们执行当前目录下的程序a.out却需要提供完整的路径名./a.out,这是因为PATH环境变量的值里面包含了ls命令所在的目录/bin,却不包含a.out所在的目录。PATH环境变量的值可以包含多个目录,用:号隔开。在Shell中用echo命令可以查看这个环境变量的值:$ echo $PATH

  • SHELL

当前Shell,它的值通常是/bin/bash。

  • TERM

当前终端类型,在图形界面终端下它的值通常是xterm,终端类型决定了一些程序的输出显示方式,比如图形界面终端可以显示汉字,而字符终端一般不行。

  • LANG

语言和locale,决定了字符编码以及时间、货币等信息的显示格式。

  • HOME

当前用户主目录的路径,很多程序需要在主目录下保存配置文件,使得每个用户在运行该程序时都有自己的一套配置。

3. 相关函数

1)getenv

  • 函数作用:获取当前进程环境变量
  • 头文件
    在这里插入图片描述
    参数说明:
  • name环境变量名

返回值

  • 成功:指向环境变值得指针
  • 失败:返回NULL

在这里插入图片描述
在这里插入图片描述

2)setenv

  • 函数作用:设置环境变量。
  • 头文件:
    在这里插入图片描述
    参数说明:
  • name 环境变量名
  • value 要设置的环境变量值
  • overwrite取值: 1:覆盖原环境变量。0:不覆盖

返回值:

  • 成功:0;
  • 失败:-1

3)unsetenv

  • 函数作用:删除环境变量name的定义
  • 头文件:
    在这里插入图片描述
    参数说明:
  • name 环境变量名

返回值

  • 成功:0;
  • 失败:-1

注意:name不存在仍返回0(成功),当name命名为"ABC="时则会出错。因为“=”是构成环境变量中的一个组成部分。

1)fork

  • 函数作用:创建子进程
  • 头文件
    在这里插入图片描述
    返回值
  • 成功:两次返回,父进程返回子进程的id,子进程返回0
  • 失败:返回-1给父进程,设置errno

在这里插入图片描述
在这里插入图片描述
结果分析:为何会打印两次begin?

这是由于 printf("Begin ..."); 执行之后并不会打印到屏幕,而是在缓冲区,因此fork之后子进程在执行 printf("End ...\n"); 遇到\n则全部打印出来。

如果修改为 printf("Begin …\n");(在遇到\n时会将缓冲区内容打印到屏幕。)则子进程不会打印begin…
在这里插入图片描述
2)getpid与getppid

  • 函数作用:获取进程id
  • 头文件
    在这里插入图片描述

返回值:

  • getpid 获得当前进程的pid,getppid获取当前进程父进程的pid。
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

(1)查看进程信息:

  • init进程是所有进程的祖先。

  • ps命令:

    • ps aux
    • ps ajx —可以追溯进程之间的血缘关系
  • kill命令:

    • SIGKILL/9 信号
    • kill -SIGKILL pid
    • kill -9 pid

(2)循环创建n个子进程:
一次fork函数调用可以创建一个子进程, 那么创建N个子进程应该怎样实现呢?
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述> 执行结果:

总共产生4个进程,但是本来想产生2个,因此将代码中的break打开,在fork进程之后,将子进程退出。
在这里插入图片描述在这里插入图片描述 从上图可以很清晰的看到,当n为2时候,循环创建了(2^n)-1个子进程,而不是n的子进程。需要在循环的过程,保证子进程不再执行fork ,因此当 (fork() == 0)时,子进程应该立即 break; 才正确。

如何修改成预期创建两个线程?
将代码中的break解注释,当为子线程的时候直接退出。

重点:通过该练习掌握框架,循环创建n个子进程,使用循环因子i对创建的子进程加以区分。

(3)进程先创建先退出?
在这里插入图片描述
在这里插入图片描述

3)getuid

  • uid_t getuid(void); --> 获取当前进程实际用户ID
  • uid_t geteuid(void); --> 获取当前进程有效用户ID
    在这里插入图片描述

4)getgid

  • gid_t getgid(void); --> 获取当前进程使用用户组ID
  • gid_t getegid(void); --> 获取当前进程有效用户组ID
    在这里插入图片描述

父子进程之间在fork后,有哪些相同,那些相异之处呢?

刚fork之后:

  • 父子相同处(0-3G的用户区及3-4G的内核区大部分): 全局变量、.data、.text、栈、堆、环境变量、用户ID、宿主目录、进程工作目录、信号处理方式…
  • 父子不同处(3-4G中的内核区的PCB区): 1.进程ID 2.fork返回值 3.父进程ID 4.进程运行时间 5.闹钟(定时器)(定时器是以进程为单位进行分配,每个进程有且仅有一个) 6.未决信号集。

似乎,子进程复制了父进程0-3G用户空间内容,以及父进程的PCB,但pid不同真的每fork一个子进程都要将父进程的0-3G地址空间完全拷贝一份,然后在映射至物理内存吗?

  • 当然不是!
  • 父子进程间遵循 读时共享写时复制 的原则(针对的是物理地址)。这样设计,无论子进程执行父进程的逻辑还是执行自己的逻辑都能节省内存开销。

练习:编写程序测试,父子进程是否共享全局变?
在这里插入图片描述
在这里插入图片描述
结论:父子进程不共享全局变量。
父子进程共享:1. 文件描述符(打开文件的结构体) 2. mmap建立的映射区 (进程间通信详解)
特别的,fork之后父进程先执行还是子进程先执行不确定,取决于内核所使用的调度算法,即随机争夺。

在这里插入图片描述如上图:如果有一个全局变量 i = 5,当fork出子进程之后,此时父子进程指向同一片物理内存,父子进程读到的 i = 5,但是当子进程或者父进程去修改全局变量(i = 10),则此时系统会开辟一片新内存,则父子进程的 i 就不是同一个值。

这样做为了减少系统开销,也就是 读时共享,写时复制。

5)gdb调试

使用gdb调试的时候,gdb只能跟踪一个进程。可以在fork函数调用之前,通过指令设置gdb调试工具跟踪父进程或者是跟踪子进程。默认跟踪父进程。

set follow-fork-mode child 		命令设置gdb在fork之后跟踪子进程
set follow-fork-mode parent 	设置跟踪父进程

注意,一定要在fork函数调用之前设置才有效。

6)exec函数族

fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往往要调用一种exec函数以执行另一个程序。当进程调用一种exec函数时,该进程的用户空间代码和数据完全被新程序替换,从新程序的启动例程开始执行。调用exec并不创建新进程,所以调用exec前后该进程的id并未改变。

将当前进程的.text、.data替换为所要加载的程序的.text、.data,然后让进程从新的.text第一条指令开始执行,但进程ID不变,换核不换壳。也就是调用完exec函数中的命令之后,原来函数后面的代码就不会执行。

其实有六种以exec开头的函数,统称exec函数:

在这里插入图片描述7)execlp

参数说明:

  • file 需要加载的程序的名字
  • arg 一般是程序名
  • … 参数名,可变参数

返回值:

  • 成功:无返回
  • 失败:-1

注意:p是PATH的缩写, execlp加载一个进程,借助PATH环境变量 (不用写该命令的绝对路径,会到当前进程的环境变量中去找),当PATH中所有目录搜索后没有参数1则出错返回。

该函数通常用来调用系统程序。如:ls、date、cp、cat等命令。比如:execlp("ls", "ls", "-l", "-F", NULL); 使用程序名在PATH中搜索。

注意:int execlp(const char *file, const char *arg, ...); ---> int execlp(const char *file, const char *argv[]); 因此 arg 就相当于第一个参数(argv[0])。
在这里插入图片描述
在这里插入图片描述
7)execl函数

其中 l 是 list 的缩写,基本同execlp函数,只是该函数在加载程序式,需要写绝对路径。

比如:execl("/bin/ls", “ls”, “-l”, “-F”, NULL); 使用参数1给出的绝对路径搜索。
在这里插入图片描述
在这里插入图片描述
8)execvp函数

加载一个进程,使用自定义环境变量env

  • 变参形式: 1)… 2)argv[] (main函数也是变参函数,形式上等同于 int main(int argc, char *argv0, …))

  • 变参终止条件:1)NULL结尾 2)固参指定

execvp与execlp参数形式不同,原理一致。

9)exec函数族一般规律

exec函数一旦调用成功即执行新的程序,不返回。只有失败才返回,错误值-1。所以通常我们直接在exec函数调用后直接调用perror()和exit(),无需if判断。

  • l (list) 命令行参数列表
  • p (path) 搜素file时使用path变量
  • v (vector) 使用命令行参数数组
  • e (environment) 使用环境变量数组,不使用进程原有的环境变量,设置新加载程序运行的环境变量

事实上,只有execve是真正的系统调用,其它五个函数最终都调用execve,所以execve在man手册第2节,其它函数在man手册第3节。

这些函数之间的关系如下图所示。
在这里插入图片描述
10)回收子进程

  • 孤儿进程:父进程先于子进程结束,则子进程成为孤儿进程,子进程的父进程成为init进程,称为init进程领养孤儿进程。

  • 僵尸进程:子进程终止,父进程尚未回收,子进程残留资源(PCB)存放于内核中,变成僵尸(Zombie)进程。

特别注意,僵尸进程是不能使用kill命令清除掉的。因为kill命令只是用来终止进程的,而僵尸进程已经终止。

思考!用什么办法可清除掉僵尸进程呢?

  • 方一:wait函数。
  • 方二:杀死他的父进程使其变成孤儿进程,进而被系统处理。

孤儿进程:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
僵尸进程:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
11)wait

一个进程在终止时会关闭所有文件描述符,释放在用户空间分配的内存,但它的PCB还保留着,内核在其中保存了一些信息:如果是正常终止则保存着退出状态,如果是异常终止则保存着导致该进程终止的信号是哪个。这个进程的父进程可以调用wait或waitpid获取这些信息,然后彻底清除掉这个进程。我们知道一个进程的退出状态可以在Shell中用特殊变量$?查看,因为Shell是它的父进程,当它终止时Shell调用wait或waitpid得到它的退出状态同时彻底清除掉这个进程。

父进程调用wait函数可以回收子进程终止信息。该函数有三个功能:

  • 阻塞等待子进程退出
  • 回收子进程残留资源
  • 获取子进程结束状态(退出原因)

当进程终止时,操作系统的隐式回收机制会:1.关闭所有文件描述符 2. 释放用户空间分配的内存。内核的PCB仍存在。其中保存该进程的退出状态。(正常终止→退出值;异常终止→终止信号)

可使用wait函数传出参数status来保存进程的退出状态(status只是一个整型变量,不能很精确的描述出状态),因此需要借助宏函数来进一步判断进程终止的具体原因。宏函数可分为如下三组:

  • WIFEXITED(status) 为非0 → 进程正常结束
    WEXITSTATUS(status) 如上宏为真,使用此宏 → 获取进程退出状态 (exit的参数)
  • WIFSIGNALED(status) 为非0 → 进程异常终止
    WTERMSIG(status) 如上宏为真,使用此宏 → 取得使进程终止的那个信号的编号。
  • WIFSTOPPED(status) 为非0 → 进程处于暂停状态
    WSTOPSIG(status) 如上宏为真,使用此宏 → 取得使进程暂停的那个信号的编号。
    WIFCONTINUED(status) 为真 → 进程暂停后已经继续运行

  • wait 函数作用:1)阻塞等待 2)回收子进程资源 3)查看死亡原因
  • 头文件
    在这里插入图片描述
    参数说明:
  • status传出参数,用来获取子进程退出的状态。

返回值:

  • 成功:返回终止的子进程pid
  • 失败:返回-1,设置errno

子进程的死亡原因:

  • 正常死亡 WIFEXITED,如果WIFEXITED为真,使用WEXITSTATUS得到退出状态。
  • 非正常死亡WIFSIGNALED,如果WIFSIGNALED为真,使用WTERMSIG得到信号。

wait回收子进程:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述wait查看子进程死亡原因:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
wait回收多个子进程:
在这里插入图片描述
在这里插入图片描述

12)waitpid

  • 作用同wait,但可指定pid进程清理,可以不阻塞。

参数说明:

  • pid:
    • < -1 组id
    • -1 回收任意
    • 0 回收和调用进程组id相同组内的子进程
    • >0 回收指定的pid
  • options
    • 0与wait形同,也会阻塞
    • WNOHANG 如果当前没有子进程退出的,会立即返回。

返回值:

  • 如果设置了WNOHANG,那么如果没有子进程退出,返回0。
  • 如果有子进程退出,返回退出子进程的pid
  • 失败: 返回-1(没有子进程),设置errno

注意:一次wait或waitpid调用只能清理一个子进程,清理多个子进程应使用循环。

waitpid回收子进程:
在这里插入图片描述
在这里插入图片描述
waitpid回收多个子进程:
在这里插入图片描述
在这里插入图片描述

三、练习

  1. 父进程fork 3 个子进程,三个子进程一个调用ps命令, 一个调用自定义程序1(正常),一个调用自定义程序2(会出段错误)。父进程使用waitpid对其子进程进行回收?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

  1. 验证子进程是否共享文件描述符,子进程负责写入数据,父进程负责读数据?
    在这里插入图片描述
    在这里插入图片描述
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 如何将git上项目在本地跑起来

    新手第一次从公司git上下载项目,尝试在本地跑起来,记录一下部署的步骤,以及遇到的问题,内容里有什么错误的地方,还请各位大佬指正,下载需要的安装包 idea : https://shimo.im/docs/eavXX1p7YiQMv9oS/read maven: http://maven.apache.org/download.cgi git: https://gi…...

    2024/5/8 16:33:26
  2. 波卡创始人:治理是加密生态系统的关键

    波卡Polkadot创始人Gavin Wood表示,加密经济系统就像互联网的“民族国家”,以议会民主的形式进行治理。为了使这些区块链民族国家得以生存,它们必须与其他国家互动,而治理是关键。治理基本上代表加密经济体系发声的手段,把加密经济体系的内部要素、内部利益相关者汇聚在一…...

    2024/5/8 17:40:15
  3. java单词自检小程序

    java单词自检小程序 本人java小白一枚,最近在学习java,本程序仅供参考,欢迎大家指出代码中错误的部分,本人必将洗耳恭听。 代码如下: 组件类: package com.lxd.wordtext; /*** @author lxd* @date 2020-07-05* @deign 组件类*/ import java.util.*; import javax.swing.*…...

    2024/4/23 2:37:30
  4. Open Supervised Device Protocol (OSDP)的开发实例

    简介性资料What Is OSDP?开放监视设备协议(OSDP)是安全行业协会(SIA)为提高访问控制和安全产品之间的互操作性而开发的访问控制通信标准。OSDP v2.1.7目前正在成为美国国家标准协会(ANSI)认可的标准,并且OSDP正在不断改进以保持行业领先地位。Benefits of OSDP与普通的低安全…...

    2024/5/7 8:19:10
  5. 拼多多无货源开店怎么样?

    在如今互联网的高速发展下,有很多人都发现互联网是一个赚钱的好去处,首先互联网上的市场极大,现在网民不知道有多少个亿了,这么大一片市场,明显比线下有优势,所以在网上找点儿事儿做也是个不错的选择,很多白领,上班族,尤其是学生族都会用闲暇时间做一些网络兼职,挣一…...

    2024/5/8 17:14:56
  6. 初学呐喊!——Java API(1)

    Java API应用部分学习笔记Part1 下载、查阅API 一、什么是API?全称:应用编程接口-Application Programming Interface; 应用指的是:软件 编程接口:我们写的或第三方的类或接口(属性、方法)通俗理解:类库、库函数,事先写好的,供其他人使用(例如:C语言库函数、MFC类库…...

    2024/5/8 15:59:38
  7. 科普 | 加密货币基金的运作方式

    加密货币基金是一种新型投资工具,与对冲基金等传统组合投资类似,但完全由数字资产组成。因此,他们的规则与传统规则相比略有不同。对于想进入这个有趣的新领域的人来说,了解它们之间的差异以及在哪里参与是关键,因此,我们在篇实用指南中概述了要点。什么是加密货币基金?…...

    2024/4/18 21:40:19
  8. 2020年7月编程语言排名,C语言与java拉大距离,黑马R排名第八

    TIOBE编程社区2020年7月编程语言排行榜如期而至,你的生活工作是否也是这样如期而至呢?看看7月编程语言排行榜又有哪些变化呢?你所心仪的编程语言有什么变化吗?7月份编程语言榜单中,C语言依旧占据第一的位置。其中变化比较大的就是本年度的黑马R语言,一路上升,进入前10名…...

    2024/5/4 0:30:06
  9. 物联网平台设备属性上报笔记(参照源码)

    设备上传信息代码LinkKit.getInstance().getDeviceThing().thingPropertyPost(Map<String, ValueWrapper> var1, IPublishResourceListener var2)传入第一个对象是一个Map,里面存储的是上报属性的标识符和值,第二个参数是一个监听器,用来监听上报属性成功与否。 理解…...

    2024/4/4 20:43:05
  10. 区块链彻底火了,可是你真的了解吗?带你3分钟了解

    这段时间区块链这一词不断地出现在人们的视野中,甚至各种概念股都相继推出各种区块链,可是你真的明白区块链到底是什么吗?估计很多人不都明白区块链他到底是什么链。今天小编就来说说这个区块链到底是什么,今天把它弄得明明白白的,让你在以后看到区块链或者是数字化经济有…...

    2024/4/16 8:05:16
  11. Unity Quaternion用法小结

    AngleAxis方法和SetAngleAxis方法官方例子。Before:After:Quaternion的静态方法,是用来构造一个Rotation的。分析:轴,如果设置为Vector.Down,那么单头会向左侧旋转。同理,Vector.right像下旋转 Vector.Left像上旋转。30如果传负值,向反方向旋转。这个方法,用于定义一个…...

    2024/4/16 8:05:21
  12. 外贸收汇方式你都真的清楚了吗?外贸B2B收款结汇方法详解!

    外贸收汇方式你都真的清楚了吗?外贸B2B收款结汇方法详解!很多做外贸朋友都知道,外贸收款、结汇是外贸交易中非常重要的一个环节。一个好的外贸收款渠道,可以快速地帮助企业资金回笼,支付货款、退税等等,能省去很多不必要的麻烦。所以,对于外贸从业者来说,选择一个合适的…...

    2024/4/20 10:38:38
  13. etl作业调度工具必备的10个功能属性

    概述taskctl是一款国内开源的ETL工具,纯C编写,可以在Window、Linux、Unix上运行。说白了就是,很有必要去理解一般ETL工具必备的特性和功能,这样才更好的掌握taskctl的使用。今天主要先描述ETL工具的通用功能。ETL工具的功能之一:连接任何ETL工具都应该有能力连接到类型广泛…...

    2024/4/20 2:53:51
  14. 随记——一站式前端搭建平台(必盛云虚拟主机)

    前言——由于前段时间对网页前端比较感兴趣,所以就小小对比了一下现有的虚拟主机服务商,最后选择了“必盛互联”这个品牌,在此将我的一些经历分享出来。1. 什么是虚拟主机?这个问题百度很好解决。 对于新手来说,弄清楚云主机,vps,虚拟主机等等各种各样的云服务比较重要,…...

    2024/5/6 20:27:55
  15. 2020高考的上海卷作文:人对事物的发展无能为力?

    新鲜出炉的2020高考上海卷作文:2020年真是发生了太多事情,疫情、网课、暴雨...有人说,这篇作文题,有视野有想法的孩子容易写得好作为一个成年人,想说,只要自己准备好了,养兵千日用兵一时,必然能从危机中找寻到机会。对大自然,我们或许无能为力,但适者生存,我们可以让…...

    2024/5/7 3:16:05
  16. Google镜像站

    Google镜像站 – 不爬墙进谷歌 大天朝的种种限制还是抵挡不了各位网民对Google的喜爱,但是Google确实是最好的搜索引擎。留个笔记,以后若有需要方便找!!!! 谷歌搜索镜像 站点① : https://deeps.top/ (推荐) 站点② : https://google.uulucky.com 站点③ :https://go.re…...

    2024/5/7 14:36:13
  17. 各种聚类算法(原理+代码+对比分析)最全总结(二) 转

    序言 还是要持续总结,持续积累。一、聚类的目标 使同一类对象的相似度尽可能地大;不同类对象之间的相似度尽可能地小。二、聚类算法分类 1.基于划分 给定一个有N个元组或者纪录的数据集,分裂法将构造K个分组,每一个分组就代表一个聚类,K<N。 特点:计算量大。很适合发现…...

    2024/5/3 11:31:27
  18. java项目 小区出入登记软件

    为加强新型冠状病毒感染的肺炎疫情防控工作,有效减少人员聚集,阻断疫情传播,社区决定实行小区人员进出管理制度,开发一套小区出入登记软件。项目功能包括:1.软件用户分为小区管理员和小区门禁执勤人员两类。2.小区管理员登录后可以管理(增删查改)软件中的管理员用户或执…...

    2024/5/3 14:16:10
  19. mycat 实施指南_高级文件系统实施者指南,第6部分

    你准备好了吗? 在本文中,我们将完成将Linux系统转换为devfs或设备文件系统的操作。 对于那些刚刚加入devfs系列的人,请阅读本系列的第4部分,我在其中解释了devfs如何解决内核级别的设备注册难题。 然后阅读本系列的第5部分 ,我在其中介绍了使Linux系统与devfs兼容所需的所…...

    2024/5/7 8:38:44
  20. hbase和couchdb_使用CouchDB和Bootstrap原型化Web应用程序

    Apache CouchDB是NoSQL运动中的一种新型数据库管理系统(DBMS)。 主要信息存储为JavaScript Object Notation(JSON)文档。 CouchDB还支持更通用的文档格式作为托管附件。 它不支持的是经典的表格数据,这些数据是SQL查询的,数十年来一直统治着DBMS。 CouchDB的另一个关键特…...

    2024/5/7 1:07:12

最新文章

  1. 【Kubernetes集群一主二从安装教程】

    文章目录 环境准备主机间做信任安装ansible工具 升级内核版本使用elrepo源升级内核查看最新版内核安装最新的内核版本设置系统默认内核设置默认内核为我们刚才升级的内核版本 初始化关闭防火墙关闭selinux关闭swap修改主机名修改hosts文件将桥接的IPv4流量传递到iptables的链配…...

    2024/5/8 20:36:42
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/7 10:36:02
  3. 对接阿里云实时语音转文字的思路

    将上述概念转化为详细代码需要一定的步骤。这里&#xff0c;我们将根据之前讨论的服务划分&#xff0c;创建一个简化的框架来模拟这个流程。注意&#xff0c;由于空间限制和简化目的&#xff0c;某些实现细节会被省略或简化&#xff0c;你可能需要根据实际情况进行调整。 1. 配…...

    2024/5/3 10:23:52
  4. 面试经典算法系列之双指针1 -- 合并两个有序数组

    面试经典算法题1 – 合并两个有序数组 LeetCode.88 公众号&#xff1a;阿Q技术站 问题描述 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &#xff0c;分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中&#…...

    2024/5/5 8:39:32
  5. Chrome 浏览器无法保存或自动填充密码

    Chrome 浏览器无法保存或自动填充密码 分类 平时使用 Chrome 浏览器都会对网站的用户名密码自动填充&#xff0c;今天发现突然不行了&#xff0c;找到一个解决办法&#xff1a; 1、退出 Chrome 浏览器。2、打开 Chrome 安装目录下的的 Profile 目录&#xff0c;删除 Login Da…...

    2024/5/8 11:43:24
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/8 6:01:22
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/7 9:45:25
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/7 14:25:14
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/7 11:36:39
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/6 1:40:42
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/4 23:55:17
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/7 9:26:26
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/8 19:33:07
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/5 8:13:33
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/4 23:55:16
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/6 21:42:42
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/4 23:54:56
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; 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
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在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