Ansible常用模块的使用
Ansible常用模块的使用
- 1. 常用模块之万能模块
- 1.2 模块示例
- 1.3 command模块
- 2. 常用模块之yum模块
1. 常用模块之万能模块
- :shell模块支持管道符和重定向等命令,而在command模块上时不支持管道符和重定向的。
- command模块:不能使用管道符和重定向命令,因为command模块执行时不会经过shell处理,所以无法执行这些命令。其他命令都可以执行
- raw模块:执行环境中没有python也可以执行,或者说python2.几的版本中就需要使用raw模块,用法也与shell命令大同小异
1.2 模块示例
shell模块
[root@node1 ~]# ansible node1 -m shell -a 'ls /mnt/'
node1 | CHANGED | rc=0 >>
cdrom
hgfs //意思时查看/mnt 目录下的所有文件
[root@node1 ~]# ansible node1 -m shell -a 'ls /mnt/ | grep "cdrom"'
node1 | CHANGED | rc=0 >>
cdrom //意思是将/mnt目录下名为cdrom的这个目录过滤出来
[root@node1 hgfs]# ansible node1 -m shell -a 'echo "redhat" >> /mnt/hgfs/test.txt '
node1 | CHANGED | rc=0 >>
将redhat追加到 /mnt/hgfs/test.txt 这个文件里面
[root@node1 hgfs]# ls
test.txt
[root@node1 hgfs]# cat test.txt
redhat
1.3 command模块
[root@node1 ~]# ansible node1 -m command -a "ls /opt"
node1 | CHANGED | rc=0 >>
test2.txt //查看/opt目录下的文件[root@node1 opt]# ls
file.txt test2.txt
[root@node1 opt]# ansible node1 -m command -a 'ls /opt | grep file.txt'
node1 | FAILED | rc=2 >>
/opt:
file.txt
test2.txtls: 无法访问'|': 没有那个文件或目录
ls: 无法访问'grep': 没有那个文件或目录
ls: 无法访问'file.txt': 没有那个文件或目录non-zero return code
当使用管道符的时候就会报错[root@node1 opt]# ansible node1 -m command -a "echo 'hello world > /opt/file.txt'"
node1 | CHANGED | rc=0 >>
hello world > /opt/file.txt
[root@node1 opt]# cat file.txt
[root@node1 opt]# //虽然没有报错但是file.txt文件里面却没有hello world这个内容
raw模块
[root@node1 opt]# ansible node1 -m raw -a 'echo "windows" > /opt/file.txt'
node1 | CHANGED | rc=0 >>
Shared connection to node1 closed.
[root@node1 opt]# cat file.txt
windows //将windows重定向到file.txt这个文件里面[root@node1 opt]# ansible node1 -m raw -a 'date && ls /opt'
node1 | CHANGED | rc=0 >>
2021年 07月 17日 星期六 17:42:37 CST
file.txt test2.txt
Shared connection to node1 closed.
先查看时间再查看/opt目录下的内容
常用模块之ping模块
ping模块主要是用于检查控制端的主机与指定的主机之间是否互通
[root@node1 ~]# ansible all -m ping
node2 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": false,"ping": "pong"
}
node1 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": false,"ping": "pong"
} //主控端用主机清单里面的所有主机是否互通
2. 常用模块之yum模块
yum模块是用来管理软件的
参数 | 作用 |
---|---|
present | 安装软件 |
absent | 安装最新版本 |
remove | 卸载软件 |
install | 安装软件 |
[root@node2 ~]# rpm -qa | grep httpd
[root@node2 ~]# //node2上没有httpd服务[root@node1 ~]# ansible node2 -m yum -a 'name=httpd state=present' //安装httpd服务
node2 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": true,"msg": "","rc": 0,[root@node2 ~]# rpm -qa | grep httpd //到node2上查看是否安装了httpd服务
redhat-logos-httpd-81.1-1.el8.noarch
httpd-filesystem-2.4.37-21.module+el8.2.0+5008+cca404a3.noarch
httpd-2.4.37-21.module+el8.2.0+5008+cca404a3.x86_64
httpd-tools-2.4.37-21.module+el8.2.0+5008+cca404a3.x86_64
常用模块之script模块
是将主控端的script传给被控端上去执行
[root@node1 ~]# cat m.sh
#!/bin/bash
x="我是node1上的脚本"
echo $x[root@node1 ~]# ansible node2 -m script -a "/root/m.sh &>/mnt/hgfs/test "
node2 | CHANGED => {"changed": true,"rc": 0,"stderr": "Shared connection to node2 closed.\r\n","stderr_lines": ["Shared connection to node2 closed."],"stdout": "","stdout_lines": []
}
[root@node2 hgfs]# pwd
/mnt/hgfs
[root@node2 hgfs]# cat test
我是node1上的脚本[root@node1 ~]# ansible node2 -m script -a "creates=/root/m.sh /mnt/m.sh"
node2 | SKIPPED
[root@node2 hgfs]# ls
m.sh test //因为node2中已经存在一个名为m.sh的文件[root@node1 ~]# ansible node2 -m script -a '/root/m.sh /mnt/m.sh'
node2 | CHANGED => {"changed": true,"rc": 0,"stderr": "Shared connection to node2 closed.\r\n","stderr_lines": ["Shared connection to node2 closed."],"stdout": "我是node1上的脚本\r\n","stdout_lines": ["我是node1上的脚本"]
} //因为node2上的/mnt目录下有m.sh文件所以执行成功了。
参数 | 作用 |
---|---|
chdir | 指定一个远程主机的目录,在执行此脚本前会先进入到执行的目录中 |
creates | 指定一个远程主机中的文件,当指定的文件存在时,就不执行对应的脚本 |
removes | 指定一个远程主机中的文件,当指定的文件按不存在时,就不执行对应的脚本。 |
常用模块之template模块
可以生成模板并传至其他主机上
参数 | 作用 |
---|---|
mode | 设置远程节点上的template文件的权限类似于chmod |
owner | 设置远程节点上的template文件所属的用户 |
group | 设置远程节点上的template文件所诉的组 |
常用模块之copy模块
是将本机或其他主机上的文件复制到指定的位置
参数 | 作用 |
---|---|
backup | 复制当前主机的文件到其他主机上,并对源文件进行备份 |
src、dest | src是写当前主机的要复制某个路径下的文件,dest是写入到指定的其他主机上的某个路径,可以是绝对路径也可以是相对路径 |
content | 把目录设置成特定的值 |
force | 其他主上有该文件,内容不同时等于yes时强制复制,等于no时,除非其他主指定位置上没有该文件按,才会复制否则不会复制 |
[root@node2 hgfs]# ls
test[root@node1 ~]# ansible node2 -m copy -a 'src=/root/m.sh dest=/mnt/hgfs/'
node2 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": true,
//将node1上面的m.sh文件复制到node2;上的/mnt/hgfs/下
[root@node2 hgfs]# ls
m.sh test[root@node1 ~]# ansible node2 -m copy -a 'src=/root/m.sh backup=yes dest=/mnt/hgfs/'
node2 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": false,[root@node2 hgfs]# cat m.sh
[root@node2 hgfs]#
node2上的m.sh文件里面没有内容[root@node1 ~]# ansible node2 -m copy -a "src=/root/m.sh force=yes dest=/mnt/hgfs/m.sh"
node2 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": false,[root@node2 hgfs]# cat m.sh
#!/bin/bash
x="我是node1上的脚本"
echo $x
因为node2上面有m.sh这个文件所以将node1同名文件里面的内容强制覆盖到node2同名文件里。[root@node2 hgfs]# cat test
[root@node2 hgfs]# [root@node1 ~]# ansible node2 -m copy -a "content='hello world\n' dest=/mnt/hgfs/test"
node2 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": true,
[root@node2 hgfs]# cat test
hello world
将hello world放到node2/mnt/hgfs/test目录下
###常用命令之service模块
启动、重启、停止和重启服务
[root@node1 ~]# ansible node2 -m service -a "name=httpd state=started"
node2 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},[root@node2 ~]# systemctl status httpd
● httpd.service - The Apache HTTP ServerLoaded: loaded (/usr/lib/systemd/system/httpd.service; disabled>Active: active (running) since Sat 2021-07-17 20:57:16 CST; 13s>Docs: man:httpd.service(8)
开启httpd服务[root@node1 ~]# ansible node2 -m service -a "name=httpd state=stopped"
node2 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},[root@node2 ~]# systemctl status httpd
● httpd.service - The Apache HTTP ServerLoaded: loaded (/usr/lib/systemd/system/httpd.service; disabled>Active: inactive (dead)Docs: man:httpd.service(8
关闭httpd服务[root@node1 ~]# ansible node2 -m service -a "name=httpd state=restarted"
node2 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"
重启httpd服务[root@node1 ~]# ansible node2 -m service -a "name=httpd enabled=yes"
node2 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"
设置开机自启httpd服务
###常用命令之systemd模块
这个模块和service模块用法相似唯一不同的是这个模块可以设置masked状态,当masked=yes开启时,若服务是关闭状态则不能开启,masked是关闭时,服务能正常开启
[root@node1 ~]# ansible node2 -m systemd -a "name=httpd state=stopped"
node2 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"
关闭node2上的httpd服务[root@node1 ~]# ansible node2 -m systemd -a "name=httpd masked=yes state=started"
node2 | FAILED! => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": false,"msg": "Unable to start service httpd: Failed to start httpd.service: Unit httpd.service is masked.\n"
}
当我们开启masked时httpd服务就开启不成功[root@node1 ~]# ansible node2 -m systemd -a "name=httpd masked=no state=started"
node2 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": true,
当我们关闭masked时,服务便能正常开启。
###常用模块之user模块
是用来管理用户的
[root@node1 ~]# ansible node2 -m group -a "name=tom state=present gid=1001 "
ansible node2 -m user -a "name=tom uid=1001 group=1001 state=present"
创建一个名为tom的用户并指定uid和gid[root@node1 ~]# ansible node2 -m user -a "name=tom state=absent remove=yes"
node2 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": true,"force": false,"name": "tom",
删除tom用户并且删除其家目录
[root@node2 ~]# ll /home/
总用量 0
drwx------. 2 admin admin 62 7月 10 18:08 admin
drwx------ 2 1001 1001 62 7月 15 19:02 tom[root@node2 ~]# ll /home/
总用量 0
drwx------. 2 admin admin 62 7月 10 18:08 admin
常用模块之group模块
是用来管理组的
[root@node1 ~]# ansible node2 -m group -a "name=apache gid=500 state=present"
node2 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": true,"gid": 500,"name": "apache","state": "present","system": false
}[root@node2 ~]# tail -3 /etc/group
rngd:x:992:
admin:x:1000:
apache:x:500:
创建出一个名为apache的500的组[root@node1 ~]# ansible node2 -m group -a "name=apache state=absent"node2 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": true,"name": "apache",
删除这个组
###常用模块之file模块
参数 | 作用 |
---|---|
mode | 设置远程节点上的文件的权限类似于chmod |
owner | 设置远程节点上的文件所属的用户 |
group | 设置远程节点上的文件所诉的组 |
[root@node1 ~]# ansible node2 -m file -a "path=/home/zz owner=root mode=711"
node2 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"
修改zz这个用户的属主为root以及权限为属主有所有权限,属组和其他用户有执行权限[root@node2 home]# ll /home/
总用量 0
drwx------. 2 admin admin 62 7月 10 18:08 admin
drwx--x--x 2 root zz 62 7月 18 10:34 zz
###常用模块之cron模块
是用于管理计划任务的
参数 | 作用 |
---|---|
present | 表示添加 |
absent | 表示移除 |
job | 后面跟要执行的内容 |
minute | 表示分钟 |
hour | 小时 |
day | 天 |
weekday | 周 |
month | 月 |
disabled | 使计划任务失效,但一定要写全任务的name,minute,hour,month,weekday,job否则只是修改原计划的内容 |
backup | backup=yes表示修改或删除对应计划任务时,会先进行备份 |
[root@node1 ~]# ansible node2 -m cron -a "minute='*/1' job='/usr/bin/echo hello >> /mnt/hgfs/test' name=test"
node2 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": true,"envs": [],"jobs": ["test"]
每隔一分钟向 /mnt/hgfs/test文件追加hello。[root@node1 ~]# ansible node2 -m cron -a "name=test state=absent"node2 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},
删除计划任务[root@node1 ~]# ansible node2 -a 'crontab -l'
node2 | CHANGED | rc=0 >>
删除成功
###常用模块之setup模块
是用来收集其他主机的信息
[root@node1 ~]# ansible node2 -m setup
node2 | SUCCESS => {"ansible_facts": {
查看node2主机上的信息
###blockinfile模块的使用
可以在指定都文件按中插入一段文本
参数 | 作用 |
---|---|
path | 指定要操作的文件 |
block | 指定要写入的文本,此参数和content都可用,作用相同 |
marker | 会替换开始和结束的标记 |
state | 有两个可选的值为present、absent。present作用是当标记的文本存在时会更新没有就写入,absent作用是删除标记的文本 |
insertafter | 默认插入到文本的末尾 |
create | 当操作的文件不存在时,是否要创建文件默认情况下为false |
backup | 在文件修改前对文件进行备份 |
[root@node1 ~]# ansible node2 -m blockinfile -a "path=/mnt/hgfs/test block='hello linux'"
node2 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": true,"msg": "Block inserted"
}
在node2的/mnt/hgfs/test文件里面添加hello linux
[root@node2 hgfs]# cat test
# BEGIN ANSIBLE MANAGED BLOCK
hello linux[root@node1 ~]# ansible node2 -m blockinfile -a "path=/mnt/hgfs/test block='hello world\n' marker='#{marker} hello to linux' "
node2 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": true,"msg": "Block inserted"
}
在test文件的 hello linux的后面添加一行hello world
部署lamp架构
主机 | IP地址 |
---|---|
node1(ansible) | 192.168.182.137 |
node2(httpd) | 192.168.182.138 |
node3(mysql) | 192.168.182.139 |
node4(php) | 192.168.182.140 |
1.首先安装apache服务,并设置开机自启
[root@node1 ~]# ansible node2 -m yum -a "name=httpd state=present enabled=yes"
[root@node1 ~]# ansible node2 -m service -a "name=httpd state=started"
2.在/etc/httpd/conf/httpd.conf添加下面几行内容
AddType application/x-httpd-php .php # 让httpd支持PHP
DirectoryIndex index.html index.php # 添加默认首页
3.安装MySQL,并设置开机自启
[root@node1 ~]# ansible node3 -m yum -a "name=mariadb-server state=present [root@node1 ~]# ansible node3 -m service -a "name=mariadb enabled=yes"[root@node1 ~]# ansible node3 -m yum -a "name=mariadb-server state=present " //开启数据库服务
4.安装PHP
[root@node1 ~]# ansible node4 -m yum -a "name=php-* state=present"
5.关闭防火墙和selinux
[root@node1 ~]# ansible all -m shell -a "systemctl stop firewalld ; systemctl disable firewalld"[root@node1 ~]# ansible all -m shell -a "setenforce 0 ; getenforce 0 "
6.修改apache配置文件
[[root@node1 ~]# ansible node2 -m blockinfile -a "path=/etc/httpd/conf/httpd.conf path='index.html' 'marker='#{mark} DirectoryIndex to index.html "
192.168.182.138 | CHANGED | rc=0 >>
[root@node1]# ansible node2 -m lineinfile -a 'path=/etc/httpd/conf/httpd.conf insertafter="AddType application/x-gzip.gz.tgz" line="AddType application/x-httpd-php .php"'
192.168.182.138 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"}, "backup": "", "changed": true, "msg": "line added"}[root@node1]# ansible node2 -m lineinfile -a 'path=/etc/httpd/conf/httpd.conf insertafter="AddType application/x-gzip .gz.tgz" line="AddType application/x-httpd-php-source.phps"'*192.168.182.138 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"}, "backup": "", "changed": true, "msg": "line added"}[root@node1]# ansible node2 -m lineinfile -a 'path=/etc/httpd/conf/httpd.conf insertafter="# LoadModule foo_module modules/mod_foo.so" line="LoadModule proxy_module modules/mod_proxy.so"'*192.168.182.138 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"}, "backup": "", "changed": true, "msg": "line added"}[root@node1]# ansible node2 -m lineinfile -a 'path=/etc/httpd/conf/httpd.conf insertafter="# LoadModule foo_module modules/mod_foo.so" line="LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so"'*192.168.182.138 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"}, "backup": "", "changed": true, "msg": "line added"}
7.将文件传输到apache服务器
[root@node1]# vim /root/httpd.conf[root@node1]# cat /root/httpd.conf<VirtualHost *:80>DocumentRoot "/var/www/html/"ServerName www.xyz.comProxyRequests OffProxyPassMatch ^/(.*.php)$ fcgi://192.168.182.140:9000/www/html/$1</VirtualHost>[root@node1]# ansible node2 -m copy -a 'src=/root/httpd.conf dest=/etc/httpd/conf.d/'192.168.182.138 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": true,"checksum": "2f62d8c0ccd379743622054a99c758a6423f8ec8","dest": "/etc/httpd/conf.d/httpd.conf","gid": 0,"group": "root","md5sum": "604f9a468f676a906d01bb7d1cb72645","mode": "0644","owner": "root","secontext": "system_u:object_r:httpd_config_t:s0","size": 187,"src": "/root/.ansible/tmp/ansible-tmp-1626679607.87-66439-218859208379640/source","state": "file","uid": 0}
8.修改PHP配置文件
[root@node1]# ansible node4 -m lineinfile -a 'path=/etc/php-fpm.d/www.conf regexp="listen = /usr" line="listen = 0.0.0.0:9000"'192.168.182.140 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"}, "backup": "", "changed": true, "msg": "line added"}[root@node1]# ansible node4 -m lineinfile -a 'path=/etc/php-fpm.d/www.conf regexp="listen.allowed_clients = 127.0.0.1" line="listen.allowed_clients = 192.168.182.138"'192.168.182.140 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"}, "backup": "", "changed": true, "msg": "line added"}
9.将PHP测试文件放置PHP服务器
[root@node1 ~]# ansible node4 -m copy -a 'src=index.php dest=/www/html/'192.168.182.140 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"}, "changed": true, "checksum": "012ee25cceff745e681fbb3697a06f3712f55554", "dest": "/www/html/index.php", "gid": 0,
10.将源码放在PHP服务端的/var/www/html目录下
[root@node1 html]# vim /etc/httpd/conf/httpd.conf# probably should define those extensions to indicate media types:#AddType application/x-compress .ZAddType application/x-gzip .gz .tgzAddType application/x-httpd-php-source .phpsAddType application/x-httpd-php .phpProxyrequests OffProxyPassMatch ^/(.*\.php)$ fcgi://192.168.182.137:9000/var/www/html/$1
11.修改PHP服务监听方式
[root@node4 ~]# vim /etc/php-fpm.d/www.conf; Note: This value is mandatory.listen = /run/php-fpm/www.socklisten = 9000; Set listen(2) backlog.; Default Value: 511;listen.backlog = 511
12.重启服务MySQL、PHP、apache
[root@node1]# ansible node2 -m service -a 'name=httpd state=restarted'192.168.182.138 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"}, "changed": true, "name": "httpd", "state": "started", "status": {[root@node1]# ansible node4 -m service -a 'name=php-fpm state=restarted'192.168.182.140 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"}, "changed": true, "name": "php-fpm", "state": "started", "status": {[root@node1]# ansible node3-m service -a 'name=mariadb state=restarted'192.168.182.139 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"}, "changed": true, "name": "mariadb", "state": "started", "status": {
12.重启之后,用apache主机的IP地址访问。
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- Python介绍
Python应用领域和职业发展分析 简单的说,Python是一个“优雅”、“明确”、“简单”的编程语言。 学习曲线低,非专业人士也能上手 开源系统,拥有强大的生态圈 解释型语言,完美的平台可移植性 动态类型语言,支持面向对…...
2024/4/20 15:02:02 - 拉格朗日插值法
(1)线性插值:对于两个插值点: 满足以下条件: 直线的两点式表示: 其中被称为插值基函数满足 1001 (2)二次插值(抛物插值) 同(1)对应三个插值点 三个插值基函数应当满足: 100010001 故…...
2024/4/14 19:56:53 - Java8新特性-Optional类
1. 什么是Optional类 到目前为止,臭名昭著的空指针异常是导致 Java 应用程序失败的最常见原因。以前,为了解决空指针异常,Google 公司著名的 Guava 项目引入了 Optional 类,Guava 通过使用检查空值的方式来防止代码污染ÿ…...
2024/4/5 5:30:24 - Java(59):获取当前时间,写成方法
在做Java接口自动化的过程中,需要获取当前日期格式展示,并需要获取测试用例的运行时间。 一、获取当前时间并格式化展示 import java.text.SimpleDateFormat; import java.util.Date; /*** return 获取当前时间并格式化展示* function 获取系统当前时间…...
2024/4/14 19:58:09 - SpringBoot 日志输出到指定文件控制台彩色输出配置(彩色日志配置)
logger.info("项目启动了"); logger.debug("debug"); logger.warn("warn"); logger.error("error"); SpringApplication.run(LogApplication.class, args); logger.info("启动成功"); } } 10:45:30.754 [main] INFO …...
2024/4/14 19:58:04 - cpp高亮格式文件转网页格式
高亮的源代码需要编辑器环境,但是分享源代码在手机上常用记事本和浏览器等应用软件,不会去用专业的编程的环境。但是用这些普通应用打开代码的可读性不高。 highlight.js插件渲染(2h) 参考网页文档介绍在官网上下载相关包。最后…...
2024/4/14 19:57:39 - 【数据结构】概述 - 逻辑结构与物理结构 - 附练习题
嗨!~ 大家好,我是YK菌 🐷 ,一个微系前端 ✨,爱思考,爱总结,爱记录,更爱分享 🏹,欢迎关注我呀 😘 ~ [微信号: yk2012yk2012,微信公众号…...
2024/4/14 19:57:44 - centos7下编译时提示需要 libclang3.9 or later 解决办法
yum install centos-release-scl -y yum install llvm-toolset-7 -y scl enable llvm-toolset-7 bash clang --version 这样就可以安装最新版本了,记得旧的先删除...
2024/4/7 3:28:37 - 网络空间安全防御体系构建及网络安全指标体系
网络安全防御体系构建认识 通用指标体系框架 安全指标体系的六个原则 具体信息系统的安全指标体系 基于安全性要求的指标体系构建 基于安全域划分的安全指标体系构建 举例: 基于合规性要求的安全指标体系构建 基于防御环节组成的安全指标体系构建 本文资料主要来自M…...
2024/4/19 8:47:53 - Unity的GameObject类与Transform类
1.GameObject:一个类类型,所有游戏物体都是这个类型的对象 2.gameObject:一个对象,指的是这个脚本所附着的游戏物件 当前游戏对象的实例 3.Transfrom:是一个类,用来描述物体的大小位置旋转等等信息 4.Transfrom是Transfrom的对象&…...
2024/4/14 19:57:59 - 3-4.简单工厂模式,工厂模式,抽象工厂模式
工厂方法模式 Factory Method 模式定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使得一个类的实例化延迟到子类 典型应用:各种factory 1. 当不知道该使用对象的确切类型的时候 2.当希望为库或者框架提…...
2024/4/14 19:57:54 - spring3,学java基础的心得体会
[java] http://www.springframework.org/schema/task [java] http://www.springframework.org/schema/task/spring-task-3.2.xsd" [java] <context:component-scan base-package“com.zt49”> <context:exclude-filter type“annotation” expression“org.…...
2024/4/14 19:57:44 - 2021.11.3 CCPC桂林 打铜总结
2021.11.3 CCPC桂林 打铜总结 1.比赛体验 感觉主办方从一开始就非常欢乐,然后各种聊天也非常友善。血亏没去线下。(我与疫情不共戴天!!!) 感觉这次体验还不错,就是志愿者配环境非常辛苦&…...
2024/4/18 2:00:54 - Abaqus二次开发实例——基于Abaqus的自动化仿真系统分享
目录 1、 引言 2、综述 2.1 基于Abaqus的仿真系统的基本定义 2.2 Abaqus仿真系统基本功能 3、仿真系统功能模块详解 3.1 仿真工程管理 3.2 仿真数据输入 3.3 仿真终端驱动 3.4 仿真结果查看 3.5 仿真报告生成 3.6 仿真数据管理 4、技术咨询&&项目委托 1、 引…...
2024/4/19 8:39:29 - JavaScript DOM
目录 1.DOM的简介 2.节点获取 1).获取子节点 2).节点属性 3).获取父节点 4).获取相邻节点 3).节点的操作 1.节点的创建 2.节点的添加 3.节点的插入 4.节点的删除 5.节点替换 6.节点克隆 练习发表评论 4)…...
2024/4/14 19:57:49 - 5.建造者模式
建造者模式 模式定义:先new一个builder建造者(get/set/build在这个类中实现),然后new一个director指导者(在这个类中指定创建顺序),然后在用指导者按照参数进行创建product 典型应用:…...
2024/4/5 5:30:39 - 由于jdk版本原因,报错javax/xml/bind/DatatypeConverter
nested exception is java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter 报错内容: org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConvert…...
2024/4/19 1:18:05 - 基于栈的中缀算术表达式求值
基于栈的中缀算术表达式求值 描述 输入一个中缀算术表达式,求解表达式的值。运算符包括、-、*、/、(、)、,参加运算的数为double类型且为正数。(要求:直接针对中缀算术表达式进行计算,不能转换为后缀或前缀表达式再进…...
2024/4/14 19:57:44 - maven刷新导致idea配置重置
maven刷新后idea language level 和 Java compile 配置都重置了 将下列配置加入项目pom文件中。 <build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><versio…...
2024/4/15 23:26:48 - vscode定义代码块----定义光标位置
近期在练习使用小程序,搭配着vscode书写代码,虽然装上一些插件,但是还有一些小程序标签书写起来不太方便,所以用vscode中代码块来定义一些标签。 文件> 首选项>用户片段 定义好片段,想让光标位置在定义的标签里…...
2024/4/14 19:57:39
最新文章
- 实现批量自动文本标注(输出标签)代码复现
一:项目地址: IDEA-Research/Grounded-Segment-Anything: Grounded-SAM: Marrying Grounding-DINO with Segment Anything & Stable Diffusion & Recognize Anything - Automatically Detect , Segment and Generate Anything (github.com) 二…...
2024/5/5 16:47:38 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - Go语言map、slice、channel底层实现(go面试)
slice 切片是一个引用类型,其底层实现是一个结构体,包含以下字段: ptr:一个指向底层数组的指针,指针指向数组的第一个元素。 len:切片当前包含的元素数量。 cap:切片的容量,即底层…...
2024/5/5 1:45:06 - Linux mount用法
在Linux系统中,系统自动挂载了以下挂载点: /: xfs文件系统,根文件系统, 所有其他文件系统的挂载点。 /sys: sysfs文件系统,提供内核对象的信息和接口。 /proc: proc文件系统,提供进程和系统信息。 /dev: devtmpfs文件系…...
2024/5/5 8:38:45 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/4 23:54:56 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/4 23:54:56 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/5/4 23:54:56 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/4 23:55:17 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/5/4 23:54:56 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/5/4 23:55:05 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/5/4 23:54:56 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/5/4 23:55:16 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/5/4 23:54:56 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/4 18:20:48 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/5/4 23:54:56 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/5/4 23:55:17 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/5/4 23:55:06 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/5/4 23:54:56 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/4 23:55:06 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/5 8:13:33 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/5/4 23:55:16 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/5/4 23:54:58 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/4 23:55:01 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/5/4 23:54:56 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下: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