云计算 3月6号 (crontab-计划任务 日志轮转 免密登录)
一、计划任务
计划任务概念解析
在Linux操作系统中,除了用户即时执行的命令操作以外,还可以配置在指定的时间、指定的日期执行预先计划好的系统管理任务(如定期备份、定期采集监测数据)。RHEL6系统中默认已安装了at、crontab软件包,通过atd和crond这两个系统服务实现一次性、周期性计划任务的功能,并分别通过at、crontab命令进行计划任务设置。
计划任务分为一次性和循环性的计划任务
一次性调度执行-at
作用: 计划任务主要是做一些周期性的任务,目前最主要的用途是定期备份数据
语法格式 at <时间规格>now +5minteatime tomorrow (teatime is 16:00)5pm august 3 2019
例1:
[root@linux-server ~ ]# yum -y install at
[root@linux-server ~]# systemctl status atd #查看启动状态
[root@linux-server ~ ]# systemctl start atd #首先要启动服务
[root@linux-server ~ ]# systemctl enable atd # 做开机启动
[root@linux-server ~]# at now +1min #一分钟后开始执行
at> useradd uuuu
at> <EOT> #Ctrl+D
job 1 at Sat Mar 21 22:34:00 2015
[root@linux-server ~]# id uuuu例2:
[root@linux-server ~]# vim at.jobs
useradd u99
useradd u00
touch /a.txt
[root@linux-server ~]# at 20:33 < at.jobs例3:
1. 准备sudo用户
[root@linux-server ~]# id jack
uid=1007(jack) gid=1012(jack) groups=1012(jack)
[root@linux-server ~]# useradd jack #如果不存在创建
[root@linux-server ~]# visudo91 ## Allow root to run any commands anywhere92 root ALL=(ALL) ALL93 jack ALL=(ALL) NOPASSWD: ALL #添加内容
[root@linux-server ~]# su - jack2. 以sudo 用户jack创建at任务[jack@linux-server ~]$ vim jack.atsudo useradd u200sudo useradd u300sudo touch /home/jack.txt[jack@linux-server ~]$ at 20:38 < jack.at
循环调度执行cron 用户级
安装软件[root@qfedu.com ~]# yum -y install crontabs #如果软件不存在安装
启动服务rhel5/6:[root@qfedu.com ~]# /etc/init.d/crond status[root@qfedu.com ~]# /etc/init.d/crond start
rhel7:[root@qfedu.com ~]# systemctl start crond.service[root@qfedu.com ~]# systemctl status crond.service[root@qfedu.com ~]# systemctl enable crond.service
开机启动(rhel5/6)[root@qfedu.com ~]# chkconfig crond on
[root@linux-server ~]# systemctl status crond.service #查看服务状态
[root@linux-server ~]# ps -ef | grep crond
root 755 1 0 20:18 ? 00:00:00 /usr/sbin/crond -n
#crond进程每分钟会处理一次计划任务
存储位置:
[root@linux-server ~]# cd /var/spool/cron/
管理方式:
crontab -l List the jobs for the current user. //列出当前用户的计划任务
crontab -r Remove all jobs for the current users. //删除当前用户所有的计划任务
crontab -e Edit jobs for the current user. //编辑当前用户的计划任务
管理员可以使用 -u username, 去管理其他用户的计划任务语法格式 :
Minutes Hours Day-of-Month Month Day-of-Week Command 分钟 小时 日 月 周 执行的命令,最好是命令的绝对路径0-59 0-23 1-31 1-12 0-7
时间:
*:每
*/5 每隔分钟
,:不同的时间段
- : 表示范围
实战
[root@linux-server ~]# vim /home/soso.sh
#!/bin/bash
touch /opt/a.txt
[root@linux-server ~]# chmod +x /home/soso.sh
创建计划任务
[root@linux-server ~]# crontab -e //当前用户编写计划任务每天6:00执行
0 6 * * * /home/soso.sh
每天8:40执行
40 8 * * * /home/soso.sh
每周六凌晨4:00执行
0 4 * * 6 /home/soso.sh
每周六凌晨4:05执行
5 4 * * 6 /home/soso.sh
每周六凌晨5:00执行
0 5 * * 6 /home/soso.sh每周一到周五9:30
30 9 * * 1-5 /home/soso.sh
每周一到周五8:00,每周一到周五9:00
0 8,9 * * 1-5 /home/soso.sh
每周六23:59
59 23 * * 6 /home/soso.sh
每天0:30
30 0 * * * /home/soso.sh[root@linux-server ~]# crontab -l #列出计划任务
实例
00 00 * * * /home/soso.sh #每天凌晨 00 02 * * * ls #每天2:00整 00 02 1 * * ls #每月1号2:00整 00 02 14 2 * ls #每年2月14号2:00整 00 02 * * 7 ls #每周日2:00整 00 02 * 6 5 ls #每年6月的周五2:00整 00 02 * * * ls #每天2:00整 */5 * * * * ls #每隔5分钟 00 02 1,5,8 * * ls #每月1,5,8号的2:00整 00 02 1-8 * * ls #每月1到8号的2:00整
使用其他用户创建
[root@linux-server ~]# crontab -u jack -e #使用jack用户创建
[root@linux-server ~]# crontab -u jack -l #查看jack用户的计划任务
[root@linux-server ~]# crontab -r #删除当前用户的计划任务
[root@linux-server ~]# crontab -u jack -r #删除jack用户的计划任务
使用者权限文件: 文件: /etc/cron.deny 说明: 该文件中所列用户不允许使用crontab命令 文件: /etc/cron.allow # 当这个文件产生时,/etc/cron.deny文件失去作用,只有这个文件中的用户才能使用crontab 说明: 该文件中所列用户允许使用crontab命令 系统本身的计划任务/etc/crontab
二、日志轮转
日志重要性
Linux系统日志对管理员来说,是了解系统运行的主要途径,因此需要对 Linux 日志系统有个详细的了解。
Linux 系统内核和许多程序会产生各种错误信息、告警信息和其他的提示信息,这些各种信息都应该记录到日志文件中,完成这个过程的程序就是 rsyslog,rsyslog 可以根据日志的类别和优先级将日志保存到不同的文件中。
日志系统rsyslog
日志管理基础
rsyslog 日志管理 logrotate日志轮转
一、处理日志的进程
rsyslogd:绝大部分日志记录,和系统操作有关,安全,认证sshd,su,计划任务at,cron... httpd/nginx/mysql: 可以自己的方式记录日志[root@linux-server ~]# ps aux |grep rsyslogd root 752 0.0 0.2 216440 5548 ? Ssl 20:18 0:00 /usr/sbin/rsyslogd -n 日志配置主文件: /etc/rsyslog.conf
二、常见的日志文件(系统、进程、应用程序)
#tail -f /var/log/messages #动态查看日志文件的尾部,系统主日志文件 #tail -f /var/log/secure #记录认证、安全的日志 tail /var/log/maillog #跟邮件postfix相关 #tail /var/log/cron #crond、at进程产生的日志 tail /var/log/dmesg #和系统启动相关 #tail /var/log/yum.log #yum的日志 tail -f /var/log/mysqld.log #MySQL日志 tail /var/log/xferlog #和访问FTP服务器相关 /var/log/boot.log #系统启动过程日志记录存放 #[root@linux-server ~]#w #当前登录的用户 /var/log/wtmp #[root@linux-server ~]#last #最近登录的用户 /var/log/btmp 第一列,用户名; 第二列,终端位置,/pts/0 (伪终端)意味着从诸如ssh或者telnet的远程链接的用户,tty(teletypewriter)意味着直接连接到计算机或者本地链接的用户; 第三列,登录的ip或者内核。 第四列,开始时间; 第五列,结束时间(still login in 还未退出 down 直到正常关机 crash 直到强制关机); [root@linux-server ~]#lastlog #所有用户的登录情况 /var/log/lastlog
日志优先级
日志级别分为:7种日志级别代号0-7 0 debug #有调试信息的,日志信息最多 1 info #一般信息的日志,最常用 2 notice #最具有重要性的普通条件的信息 3 warning #警告级别 4 err #错误级别,阻止某个功能或者模块不能正常工作的信息 5 crit #严重级别,阻止整个系统或者整个软件不能工作的信息 6 alert #需要立刻修改的信息 7 emerg #内核崩溃等严重信息 none #什么都不记录
三、logrotate日志轮转
什么是日志轮转? 自动切日志 注:可以针对任何日志文件(rsyslog 日志、Nginx访问或错误日志...)一、logrotate (轮转,日志切割) 1. 如果没有日志轮转,日志文件会越来越大 2. 将丢弃系统中最旧的日志文件,以节省空间 3. logrotate本身不是系统守护进程,它是通过计划任务crond每天执行logrotate 配置文件: 主配置文件:/etc/logrotate.conf (决定每个日志文件如何轮转)配置日志轮转 [root@linux-server ~]# vim /etc/logrotate.conf weekly #轮转的周期,一周轮转,单位有年,月,日 rotate 4 #保留4份 create #轮转后创建新文件 dateext #使用日期作为后缀 #compress #日志轮替时,旧的日志进行压缩 include /etc/logrotate.d #包含该目录下的配置文件,会引用该目录下面配置的文件 /var/log/wtmp { #对该日志文件设置轮转的方法 monthly #一月轮转一次 minsize 1M #最小达到1M才轮转,否则就算时间到了也不轮转create 0664 root utmp #轮转后创建新文件,并设置权限 rotate 2 #保留2份 } /var/log/btmp { missingok #丢失不提示 monthly create 0600 root utmp rotate 1 }
实战案例
例1:轮转文件/var/log/yum.log
[root@linux-server ~]# vim /etc/logrotate.d/yum
/var/log/yum.log {missingok #丢失不提醒#notifempty #空文件不轮转 #size 30k #只要到了30k就轮转#yearlydaily #每天轮转一次 rotate 3 create 0644 root root
}
测试:
[root@linux-server ~]# /usr/sbin/logrotate /etc/logrotate.conf #手动轮转
[root@linux-server ~]# ls /var/log/yum*
/var/log/yum.log /var/log/yum.log-20191110
[root@linux-server ~]# grep yum /var/lib/logrotate/logrotate.status #查看记录所有日志文件最近轮转的时间
"/var/log/yum.log" 2019-11-10-21:26:14
2:日志安全,操作日志的隐藏权限
[root@localhost log]# cd /etc/logrotate.d/
[root@localhost logrotate.d]# vim syslog
建议测试时先把/etc/logrotate.d/syslog中messages删除,然后在下面添加如下:
/var/log/messages{prerotatechattr -a /var/log/messagesendscript#notifemptydailycreate 0600 root rootmissingokrotate 3
postrotatechattr +a /var/log/messagesendscript
}
[root@localhost logrotate.d]# /usr/sbin/logrotate /etc/logrotate.conf #手动轮转
[root@localhost logrotate.d]# cd /var/log/
[root@localhost log]# ls mess*
messages messages-20200805 messages-20200806
参数解释: prerotate/endscript - 在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行 postrotate/endscript - 在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行 size 触发分割的条件是:1.日志大小达到这个值,和时间周期没有关系。 minsize 触发分割的条件是:1.时间周期到了,2.日志大小达到这个值;两个条件都要满足。 maxsize 触发分割的条件是:1.时间周期到了,2. 日志大小大于这个值;两个条件任何一个满足。
四、ssh远程管理服务
openssh-service 提供服务 openssh-clients 客户端 sshd服务的端口号----22
安装
[root@linux-server ~]# yum install -y openssh* 1.服务器端启动服务: systemctl start sshd 2.关闭防火墙和selinux
登录方式
远程登录: [root@linux-server ~]# ssh root@192.168.246.114 参数解释: root 用户默认不写为root,也可以使用其他用户无密码登陆(ssh密钥认证) 1.产生公钥和私钥: 生成一对密钥:公钥+私钥 [root@linux-server ~]# ssh-keygen #一直回车 2.查看钥匙的目录: [root@linux-server ~]# cd /root/.ssh/ id_rsa ---私钥 id_rsa.pub ---公钥 known_hosts ----确认过公钥指纹的可信服务器列表的文件 authorized_keys ---授权文件,是传输过公钥到对方服务后会自动重命名生成的 3.拷贝公钥给对方机器: [root@linux-server ~]# ssh-copy-id 对方机器ip地址 ip地址:指的是对方服务器 4.远程连接的时候就不用输入密码了修改端口号: 修改配置文件: # vim /etc/ssh/sshd_config 17 #Port 22 #将注释去掉,修改端口号可以修改为自定义的。 [root@linux-server ~]# systemctl restart sshd 远程登录 -p:prot端口,指定端口,如果端口修改了需要指定 案例: [root@linux-server ~]# ssh root@192.168.246.158 -p 2222
远程拷贝
远程拷贝: # scp -P 端口号 /a.txt ip:/路径源文件 目标地址 [root@linux-server ~]# scp -r -P 2222 test/ 192.168.246.158:/root/ 谁是远程加谁ip 远程拷贝目标机器改了端口加-(大)P 目录加 -r
五、tcpwrapper---访问控制工具
1.tcp wrapper是一种访问控制工具是操作系统自带的,类似于防火墙(iptables)可以作访问控制。 2.针对系统进程来做限制的 ============================ #TCPwrapper配置 TCPwrapper有两个配置文件。 1./etc/hosts.allow --允许 2./etc/hosts.deny --拒绝 TCPwrappers先查找/etc/hosts.allow,再查找/etc/hosts.deny,如果两个配置中有冲突,先匹配中的优先,也就是hosts.allow中的配置优先,如果两个配置都没命中,默认放行。
TCPwrapper作用范围
tcpwarpper要看该应用是否依赖libwrap.so这个库文件。 例如tcpwrapper可以控制ssh服务,因为实现ssh协议的sshd程序依赖了libwarp.so库文件,
实战环境
准备两台机器:
wrap-server----192.168.246.188
test-1----192.168.246.158
#所有机器关闭防火墙和selinux
[root@localhost ~]# systemctl stop firewalld #关闭防火墙
[root@localhost ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@localhost ~]# setenforce 0 #临时关闭selinux1.查看某一个程序是否支持tcpwrapper
[root@wrap-server ~]# ldd `which sshd` | grep wrap
libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f9ec5c26000)
[root@wrap-server ~]# ldd `which httpd` | grep wrap #httpd就不用,所以不支持
[root@wrap-server ~]#
实战案例:
1.允许192.168.246.158这台机器访问我的服务器,其他禁止掉
[root@wrap-server ~]# vim /etc/hosts.allow #在文件后面新增一行 sshd:192.168.246.158 [root@wrap-server ~]# vim /etc/hosts.deny #在文件后面新增一行 sshd:ALL #拒绝所有 =========================== sshd:192.168.246.159 #拒绝某个IP
测试:
1.首先我们用192.168.246.158的机器去ssh连接 [root@web-1 ~]# ssh 192.168.246.188 [root@wrap-server ~]# 2.在用其他机器连接 1.通过finalshell连接。 ---连接拒绝 2.或者通过第三台机器去连接 [root@test-2 ~]# ssh 192.168.246.188 ssh_exchange_identification: read: Connection reset by peer #拒绝连接
常用命令
[root@linux-server ~]# ping www.baidu.com #ping命令,可以检查主机是否可以联网 PING www.a.shifen.com (183.232.231.174) 56(84) bytes of data. 64 bytes from 183.232.231.174 (183.232.231.174): icmp_seq=1 ttl=128 time=55.8 ms 64 bytes from 183.232.231.174 (183.232.231.174): icmp_seq=2 ttl=128 time=36.6 ms [root@linux-server ~]# ping -c 3 www.baidu.com -c:指定次数 #ping命令是通过icmp协议:用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息
telnet命令用于登录远程主机,对远程主机进行管理。telnet因为采用明文传送报文,安全性不好,很多Linux服务器都不开放telnet服务,而改用更安全的ssh方式了。 [root@linux-server ~]# telnet 192.168.246.156 80 #检查tcp连接80端口是否开放 Trying 192.168.246.156... Connected to 192.168.246.156. #如果出现这样那就是通了 Escape character is '^]'. 实现服务器时间对时(ntp) [root@localhost ~]# yum install ntp [root@localhost ~]# ntpdate cn.pool.ntp.org #如果想每隔一定时间自动校时,只需将上面的命令加入至Cron就行了: 00 12 * * * /sbin/ntpdate cn.pool.ntp.org cn.pool.ntp.org是ntp网络授时组织的中国授时源
相关文章:
云计算 3月6号 (crontab-计划任务 日志轮转 免密登录)
一、计划任务 计划任务概念解析 在Linux操作系统中,除了用户即时执行的命令操作以外,还可以配置在指定的时间、指定的日期执行预先计划好的系统管理任务(如定期备份、定期采集监测数据)。RHEL6系统中默认已安装了at、crontab软件…...
Windows Shell命令详解:入门指南
Windows操作系统的Shell命令是执行各种任务和管理系统的关键工具。本文将深入探讨Windows Shell命令的基础知识,介绍常用的命令以及它们的功能和用法,并探讨一些高级技巧,帮助用户更好地利用Shell命令提高工作效率。 1. 什么是Windows Shell命…...
MogDB/openGauss关于PL/SQL匿名块调用测试
MogDB/openGauss 关于 PL/SQL 匿名块调用测试 一、原理介绍 PL/SQL(Procedure Language/Structure Query Language)是标准 SQL 语言添加了过程化功能的一门程序设计语言。 单一的 SQL 语句只能进行数据操作,没有流程控制,无法开发复杂的应用。PL/SQL …...
STP---生成树协议
STP的作用 a)Stp通过阻塞端口来消除环路,并能够实现链路备份目的 b)消除了广播风暴 c)物理链路冗余,网络变成了层次化结构的网络 STP操作 选举一个根桥每个非根交换机选举一个根端口每个网段选举一个指定端口阻塞非根,非指定端口 STP--生成树…...
算法D38| 动态规划1 | 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯
理论基础 无论大家之前对动态规划学到什么程度,一定要先看 我讲的 动态规划理论基础。 如果没做过动态规划的题目,看我讲的理论基础,会有感觉 是不是简单题想复杂了? 其实并没有,我讲的理论基础内容,在动…...
Vue教学13:组件的生命周期:掌握组件的每一个关键时刻
大家好,欢迎回到我们的Vue教学系列博客!在前十二篇博客中,我们学习了Vue.js的基础知识、安装Node.js与npm、使用Vue Devtools进行调试、Vue实例与生命周期钩子、数据绑定(单向与双向)、计算属性与侦听器、条件渲染和列…...
mitmproxy代理
文章目录 mitmproxy1. 网络代理2. 安装3. Https请求3.1 启动mitmproxy3.2 获取证书3.3 配置代理3.4 运行测试 4. 请求4.1 读取请求4.2 修改请求4.3 拦截请求 5. 响应5.1 读取响应5.2 修改响应 6. 案例:共享账号6.1 登录bilibili获取cookies6.2 在代理请求中设置cook…...
【GPU驱动开发】- mesa编译与链接过程详细分析
前言 不必害怕未知,无需恐惧犯错,做一个Creator! 一、总体框架图 暂时无法在飞书文档外展示此内容 二、Mesa API 处理 OpenGL 函数调用 Mesa API 负责实现 OpenGL 和其他图形 API 的函数接口。Mesa API 表是一个重要的数据结构…...
如何恢复已删除的华为手机图片?5 种方式分享
不幸的现实是,华为的珍贵时刻有时会因为意外删除、软件故障或其他不可预见的情况而在眨眼之间消失。在这种情况下,寻求恢复已删除的图片成为个人迫切关心的问题。 本文旨在为用户提供如何从华为恢复已删除图片的实用解决方案。我们将探索五种可行的方法…...
通过 python 和 wget 批量下载文件(在Linux/Ubuntu/Debian中测试)
首先创建一个文本文件d.txt, 一行一个链接。 你可以使用简单的 Python 脚本逐行读取文件 (d.txt) 中的链接,并使用 wget 下载文件: import subprocess# File containing download links (replace with your file path) file_path d.txt# Function to …...
个人博客系列-后端项目-RBAC角色管理(6)
设计用户表 ## 用户表 class User(models.Model):username models.CharField(max_length255, uniqueTrue, verbose_name"手机号")password models.CharField(max_length255, uniqueFalse, verbose_name"密码")is_vip models.BooleanField(defaultFalse…...
机器学习-启航
文章目录 原理分析机器学习的两种典型任务机器学习分类总结数据机器学习分类解读简单复杂 原理分析 马克思主义哲学-规律篇 规律客观存在,万事万物皆有规律。 机器学习则是多维角度拆解分析复杂事实数据,发现复杂事实背后的规律,然后将规律用…...
驱动调试第014期-变频调速的原理及相关计算公式应用
一、引言 变频调速是一种通过改变电源频率来实现电动机调速的技术。它具有高效、精确、可靠等优点,广泛应用于工业、商业和家用领域。本文将介绍变频调速的基本原理、优点以及应用领域,并通过详细的公式计算过程和图片说明来帮助读者更好地理解。 二、变…...
JavaWeb环境配置 IDE2022版
一、新建一个javaweb文件 文件名可以自己随意改 二、给建立的项目添加框架支持 勾选Web Application,点击确定 建立成功界面,会生成一个新的web文件夹 三、配置tomcat 1、两种打开配置文件方式: 第一种 第二种 2、打开后,点击号…...
Matlab偏微分方程拟合 | 完整源码 | 视频教程
专栏导读 作者简介:工学博士,高级工程师,专注于工业软件算法研究本文已收录于专栏:《复杂函数拟合案例分享》本专栏旨在提供 1.以案例的形式讲解各类复杂函数拟合的程序实现方法,并提供所有案例完整源码;2.…...
什么是yocto基本组件(bitbake,recipes,classes,configuration,layer)
文章目录 1基本组件1.1 bitbake1.2 Recipes1.3 Classes1.4 Configurations2 层的理解2.1 层结构2.2 nxp yocto示例2.3 ti yocto示例1基本组件 1.1 bitbake bitbake,是OpenEmbedded构建系统的核心工具,负责解析元数据,从中生成任务列表,然后执行这些任务。bitbake是一个通…...
electron 程序与安装包图标放大与制作
原因 electron-builder 在打包时需要最小支持到256x256像素的icon图标。原有历史图标都太小了。需要尝试将图标放大。 工具 convertio.co/zh/ico-png/ 在线ico转png网站 https://github.com/upscayl/upscayl 图片放大工具 csdn下载 greenfish-icon-editor-pro.en.softonic.c…...
nginx,php-fpm
一,Nginx是异步非阻塞多进程,io多路复用 1、master进程:管理进程 master进程主要用来管理worker进程,具体包括如下4个主要功能: (1)接收来自外界的信号。 (2)向各worker进…...
网络编程(3/4)
广播 #include<myhead.h>int main(int argc, const char *argv[]) {//1、创建套接字int sfd socket(AF_INET, SOCK_DGRAM, 0);if(sfd -1){perror("socket error");return -1;}//2、将套接字设置成允许广播int broadcast 1;if(setsockopt(sfd, SOL_SOC…...
vue computed计算属性
模板中的表达式虽然方便,但也只能用来做简单的操作;如果在模板中写太多逻辑,会让模板变得臃肿,难以维护;因此我们推荐使用计算属性来描述依赖响应式状态的复杂逻辑 1. 选项式 API 中,可以提供computed选项来…...
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险
C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...
uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
解析两阶段提交与三阶段提交的核心差异及MySQL实现方案
引言 在分布式系统的事务处理中,如何保障跨节点数据操作的一致性始终是核心挑战。经典的两阶段提交协议(2PC)通过准备阶段与提交阶段的协调机制,以同步决策模式确保事务原子性。其改进版本三阶段提交协议(3PC…...
