MySQL 8.0 OCP认证精讲视频、环境和题库之四 多实例启动 缓存、事务、脏读

一、配置第一个mysqld服务


    1、编辑选项文件,指定以下选项:
    [mysqld]
        basedir=/mysql80
        datadir=/mysql80/data1
        socket=/mysql80/data1/mysqld.sock
        pid-file=/mysql80/data1/mysqld.pid
        log-error=/mysql80/data1/mysqld.log
    2、初始化
        /mysql80/bin/mysqld --defaults-file=/mysql80/mysqld.cnf --initialize
    3、启动mysqld服务
        /mysql80/bin/mysqld--defaults-file=/mysql80/mysqld.cnf&
    4、查看初始密码,登录,修改出初始密码    
        mysqi -uroot -p'As%&sT9xX/wp' -h127.0.0.1 -P3307
        mysql>alter user user() identifiedby 'Ora_123';
        
    5、创建一个统一的用户,比如 multi_user ,密码相同,并指定shutdown权限
        mysql>create user multi_user@localhost identifiedby 'Ora_123';
        mysql>grant shutdown on *.* to  multi_user@localhost;
    6、 关闭mysqld
        /mysql80/bin/mysqldadmin -u multi_user -h 127.0.0.1 -P 3307 shutdown
    7、 屏蔽掉mysqld选
        #[mysqld]
        #basedir=/mysgl80
        #datadir=/mysql8o/datal
        socket=/mysql80/datal/mysqld.sock
        #pid-file=/mysql80/data1/mysqld.pid
        #log-error=/mysql80/data1/mysqld.log
        #port=3307


二、配置第二个mydqld服务 


    重复上述步骤1-7,指定不同的配置;


三、配置第三个mydqld服务 


    重复上述步骤1-7,指定不同的配置;
    
    #[mysqld]
    #basedir=/mysgl80
    #datadir=/mysql8o/datal
    #socket=/mysql80/datal/mysqld.sock
    #pid-file=/mysql80/data1/mysqld.pid
    #log-error=/mysql80/data1/mysqld.log
    #port=3307
    
    #[mysqld]
    #basedir=/mysql80
    #datadir=/mysql80/data2
    #socket=/mysql80/data2/mysgld.sock
    #pid-file=/mysql80/data2/mysqld.pid
    #log-error=/mysql80/data2/mysqld.log
    #port=3308
    
    #[mysqld]
    #basedir=/mysql80
    #datadir=/mysql80/data3
    #socket=/mysql80/data3/mysgld.sock
    #pid-file=/mysql80/data3/mysqld.pid
    #log-error=/mysql80/data3/mysqld.log
    #port=3309


四、取消前面的#;


    [mysqld]
    basedir=/mysgl80
    datadir=/mysql8o/datal
    socket=/mysql80/datal/mysqld.sock
    pid-file=/mysql80/data1/mysqld.pid
    log-error=/mysql80/data1/mysqld.log
    port=3307
    
    [mysqld]
    basedir=/mysql80
    datadir=/mysql80/data2
    socket=/mysql80/data2/mysgld.sock
    pid-file=/mysql80/data2/mysqld.pid
    log-error=/mysql80/data2/mysqld.log
    port=3308
    
    [mysqld]
    basedir=/mysql80
    datadir=/mysql80/data3
    socket=/mysql80/data3/mysgld.sock
    pid-file=/mysql80/data3/mysqld.pid
    log-error=/mysql80/data3/mysqld.log
    port=3309
    
    [mysql_miti]
     mysqld=/mysql80/bin/mysqld
     mysqladmin=/mysql80/bin/mysqladmin
     user= multi_user


五、修改选项名称

 
    [mysqld1]
    basedir=/mysgl80
    datadir=/mysql8o/datal
    socket=/mysql80/datal/mysqld.sock
    pid-file=/mysql80/data1/mysqld.pid
    log-error=/mysql80/data1/mysqld.log
    port=3307
    
    [mysqld]
    basedir=/mysql80
    datadir=/mysql80/data2
    socket=/mysql80/data2/mysgld.sock
    pid-file=/mysql80/data2/mysqld.pid
    log-error=/mysql80/data2/mysqld.log
    port=3308
    
    [mysqld3]
    basedir=/mysql80
    datadir=/mysql80/data3
    socket=/mysql80/data3/mysgld.sock
    pid-file=/mysql80/data3/mysqld.pid
    log-error=/mysql80/data3/mysqld.log
    port=3309
    
    [mysql_miti]
     mysqld=/mysql80/bin/mysqld
     mysqladmin=/mysql80/bin/mysqladmin
     user= multi_user


六、调用mysqld_multi命令,对多个mysqld服务统一地进行启动,关闭,查看状态 

七、修改bug


     /usr/local/mysql/bin/mysqld_multi有Bug
    # vi /usr/local/mysql/bin/mysqld_multi


    sub defaults_for_group
    {
      my ($group) = @_;

      return () unless $my_print_defaults_exists;

      my $com= join ' ', 'my_print_defaults', @defaults_options, $group;
      my @defaults = `$com`;
      chomp @defaults;
      return @defaults;
    }

    改 my $com= join ' ', 'my_print_defaults -s', @defaults_options, $group;
    

八、缓存buffer_pool

join_buffer_size
sort_buffer_size    
mysql> show variables like '%sort%';
    +--------------------------------+---------------------+
    | Variable_name                  | Value               |
    +--------------------------------+---------------------+
    | innodb_disable_sort_file_cache | OFF                 |
    | innodb_ft_sort_pll_degree      | 2                   |
    | innodb_sort_buffer_size        | 1048576             |
    | max_length_for_sort_data       | 4096                |
    | max_sort_length                | 1024                |
    | myisam_max_sort_file_size      | 9223372036853727232 |
    | myisam_sort_buffer_size        | 8388608             |
    | sort_buffer_size               | 262144              |
    +--------------------------------+---------------------+
    8 rows in set (0.00 sec)

mysql> show variables like 'innodb_buffer_pool_size';
    +-------------------------+-----------+
    | Variable_name           | Value     |
    +-------------------------+-----------+
    | innodb_buffer_pool_size | 134217728 |   
    +-------------------------+-----------+
    1 row in set (0.00 sec)

    mysql> 
    #innodb_buffer_pool_size | 134217728 生产环境偏小。
mysql> show variables like '%buffer_pool%';
        +-------------------------------------+----------------+
    | Variable_name                       | Value          |
    +-------------------------------------+----------------+
    | innodb_buffer_pool_chunk_size       | 134217728      |
    | innodb_buffer_pool_dump_at_shutdown | ON             |
    | innodb_buffer_pool_dump_now         | OFF            |
    | innodb_buffer_pool_dump_pct         | 25             |
    | innodb_buffer_pool_filename         | ib_buffer_pool |
    | innodb_buffer_pool_instances        | 1              |
    | innodb_buffer_pool_load_abort       | OFF            |
    | innodb_buffer_pool_load_at_startup  | ON             |
    | innodb_buffer_pool_load_now         | OFF            |
    | innodb_buffer_pool_size             | 134217728      |
    +-------------------------------------+----------------+
    10 rows in set (0.00 sec)
    
buffer_pool的设置
    变量innodb_buffer_pool_size:指定buffer_size的大小 。
    变量innodb_buffer_pool_chunk_size:在调整buffer_pool大小限制时的基本单位;
    当增加或减少innodb_buffer_pool_size时,操作是chunk_size执行的。区块大小由innodb_buffer_pool_Chunk_size配置选项定义,默认值为128M=134217728b。
    
    innodb_buffer_pool_size大小必须始终等于或等于innodb_Buffer_pool_chunk_size*innodb_Buffer_pool_instances的倍数。
    mysql> show variables like '%innodb_buffer_pool_instances%';
    +------------------------------+-------+
    | Variable_name                | Value |
    +------------------------------+-------+
    | innodb_buffer_pool_instances | 1     |
    +------------------------------+-------+
    1 row in set (0.00 sec)
    
    如果将innodb_buffer_pool_size配置为不等于innodb_buffer_pool_chunk_size*innodb_uffer_pool_instances或其整数倍的值,
    则缓冲池大小将自动调整为等于innodd_buffer_pool_chunk_size*innodb_pool_instances的值或其倍数。
    假设
    innodb_buffer_pool_size设置为8G,innodl_buffer_poor_instances设置为16。innodb_buffer_pool_chunk_size为128M,为默认值。
    可以判断
     innodd_buffer_pool_chunk_size*innodb_pool_instances=128M*16=  2^7*2^4=2*2^10=2G
    ( innodb_buffer_pool_size=8)/(innodd_buffer_pool_chunk_size*innodb_pool_instances=2G)=4倍
    因此innodb_buffer_pool_size-8G是有效值

    8G是一个有效的innodb_buffer_pool_size值,因为8G是innodb_buffer_pool_instance=16*innodb_uffer_pool_chunk_size=128M的倍数,即2G。
    
    
    再假设
    在本例中,innodb_buffer_pool_size设置为9G(刚才是8G),innodl_buffer_pool_instances设置为16。innodb_buffer_pool_chunk_size为128M,为默认值。
    innodb_buffer_poor_instances*innodb_buffer_pool_chunk_size=16*128M=2G ,9G/2g=4.5倍(访问时跨chunk访问,所以慢)
    因此mysql向上取整调整为10G。
    
    innodb_buffer_pool_instances    其值为>=0,<=64
    innodb_buffer_pool被划分为的区域数。对于innodb_buffer_pool在1GB 字节范围内的系统,将缓冲池划分为单独的实例,
    可以通过减少不同线程读取和写入缓存页面时的争用来提高并发性。此选项仅在将innodb_buffer_pool_size设置为1GB或更大时生效。
    缓冲池的总大小在所有缓冲池中划分。为了获得最佳效率,请指定innodb_buffer_pool_instances和innodb_buffer_pool_size的组合,以便每个缓冲池实例至少为1GB。
    
    On all other platforms, the default value is 8 when innodb_buffer_pool_size is greater than or equal to 1GB. Otherwise, the default is 1.
    
    
mysql> show variables like 'innodb_buffer_pool_size';
    +-------------------------+-----------+
    | Variable_name           | Value     |
    +-------------------------+-----------+
    | innodb_buffer_pool_size | 134217728 |
    +-------------------------+-----------+
    1 row in set (0.00 sec)

    mysql> 

    mysql> select  134217728 /1024/1024;
    +----------------------+
    | 134217728 /1024/1024 |
    +----------------------+
    |         128.00000000 |   ###128MB
    +----------------------+
    1 row in set (0.00 sec)

    mysql> 
mysql> show variables like 'innodb_buffer_pool_chunk_size';
    +-------------------------------+-----------+
    | Variable_name                 | Value     |
    +-------------------------------+-----------+
    | innodb_buffer_pool_chunk_size | 134217728 |
    +-------------------------------+-----------+
    1 row in set (0.00 sec)
    
mysql> show variables like '%innodb_buffer_pool_instances%';
+------------------------------+-------+
| Variable_name                | Value |
+------------------------------+-------+
| innodb_buffer_pool_instances | 1     |
+------------------------------+-------+
1 row in set (0.00 sec)

mysql> 

 实践

MySQL :: MySQL 8.0 Reference Manual :: 15.8.3.1 Configuring InnoDB Buffer Pool Size

变量innodb buffer pool size:指定buffer poole的大小
变量innodb_buffer_pool_chunk_size:在洞整buffer pool大小时的基本单位
变量innodb buffer pool_instances:把innodb buffer分成若干部分,分别管理,仅当innodb buffer_pool size的值大于1GB时生效
实验:buffer pool的设道
1、查看上述变量的值
2、通过set命令将innodb buffer pool size设置为129M,查看实际大小
3、修改选项文件,指定以下选项:
    innodb buffer pool chunk size=64M
    innodb_buffer_pool_size=256M
    重新启动nysqld
4、   通过set命令修改innodb buffer pool size为300M,查看实际大小
    

处理:

1 、

mysql> show variables like 'innodb_buffer_pool_size%';
+-------------------------+-----------+
| Variable_name           | Value     |
+-------------------------+-----------+
| innodb_buffer_pool_size | 134217728 |
+-------------------------+-----------+
1 row in set (0.01 sec)

mysql> show variables like 'innodb_buffer_pool_chunk%';
+-------------------------------+-----------+
| Variable_name                 | Value     |
+-------------------------------+-----------+
| innodb_buffer_pool_chunk_size | 134217728 |
+-------------------------------+-----------+
1 row in set (0.00 sec)

mysql> select 134217728/1024/1024 ;
+---------------------+
| 134217728/1024/1024 |
+---------------------+
|        128.00000000 |
+---------------------+
1 row in set (0.00 sec)

2、

mysql> select 129*1024*1024;
+---------------+
| 129*1024*1024 |
+---------------+
|     135266304 |
+---------------+
1 row in set (0.00 sec)

mysql> set global innodb_buffer_pool_size=135266304;
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> show variables like 'innodb_buffer_pool_size%';
+-------------------------+-----------+
| Variable_name           | Value     |
+-------------------------+-----------+
| innodb_buffer_pool_size | 268435456 |
+-------------------------+-----------+
1 row in set (0.00 sec)

mysql> select 268435456/1024/1024;
+---------------------+
| 268435456/1024/1024 |
+---------------------+
|        256.00000000 |     ##预期129MB  ,实际256MB,是向上取整数倍速128MB
+---------------------+
1 row in set (0.00 sec)
 

3、

 systemctl stop  mysql

 vi /etc/my.cnf
 

[mysqld]
datadir=/data/mysql/data/
socket=/data/mysql/mysql.sock

innodb_buffer_pool_chunk_size=64M
innodb_buffer_pool_size=256M
systemctl start   mysql
 

mysql> show variables like 'innodb_buffer_pool_chunk_size' ;
+-------------------------------+----------+
| Variable_name                 | Value    |
+-------------------------------+----------+
| innodb_buffer_pool_chunk_size | 67108864 |
+-------------------------------+----------+
1 row in set (0.01 sec)

mysql> show variables like 'innodb_buffer_pool_size' ;
+-------------------------+-----------+
| Variable_name           | Value     |
+-------------------------+-----------+
| innodb_buffer_pool_size | 268435456 |
+-------------------------+-----------+
1 row in set (0.00 sec)

4、

mysql> set global innodb_buffer_pool_size=314572800;

mysql> show variables  like 'innodb_buffer_pool_size';
+-------------------------+-----------+
| Variable_name           | Value     |
+-------------------------+-----------+
| innodb_buffer_pool_size | 335544320 |
+-------------------------+-----------+
1 row in set (0.00 sec)

mysql> select 335544320/1024/1024;
+---------------------+
| 335544320/1024/1024 |
+---------------------+
|        320.00000000 |     
+---------------------+
1 row in set (0.00 sec)

mysql> 
# /etc/my.cnf 中的chunk_size=64MB,300MB/64MB ~4.6875 ;向上取整=5 倍

所以 64MB*5=320MB;

九、脏读及刷新

变量innodb_max_dirty_pages_pct:
    innoDB在后台执行某些任务,包括从缓冲池中清除脏页。脏页是指那些已被修改但尚未写入磁盘上的数据文件的页。
    在MySQL 8.0中,缓冲池刷新是由页面清理线程执行的。页面清理线程的数量由innodb_page_cleaners变量控制,该变量的默认值为4。
    但是,如果页面清理线程的数量超过缓冲池实例的数量,innodb_page_cleaners会自动设置为与innodb_buffer_pool_instances相同的值。
    当脏页的百分比达到innodb_max_dirty_pages_pct_lwm变量定义的低水位标记值时,启动缓冲池刷新。默认的低水位标记是缓冲池页面的10%。innodb_max_dirty_pages_pct_lwm值为0将禁用这种早期刷新行为。
    innodb_max_dirty_pages_pct_lwm阈值的目的是控制缓冲池中脏页的百分比,并防止脏页的数量达到innodb_ax_dirty_pages_pct变量定义的阈值,该变量的默认值为90。如果缓冲池中脏页面的百分比达到InnoDB_max_dirty_pages_pct阈值,InnoDB会主动刷新缓冲池页面。
    配置innodb_max_dirty_pages_pct_lwm时,该值应始终低于innodb_ax_dirty_pages_pct值。


变量innodb_flush_neighbors:
    允许对缓冲池刷新行为进行微调:
innodb_flush_neighbors变量定义从缓冲池中刷新页面是否也会刷新同一范围中的其他脏页面。
默认设置0:
    将禁用innodb_flush_neighbors。相同范围内的脏页不会被刷新。对于寻道时间不是重要因素的非旋转存储(SSD)设备,建议使用此设置。
设置为1:
    将在同一范围内刷新连续的脏页。
设置为2:
    会在同一范围内刷新脏页。
    
innodb_LRU_scan_depth变量为每个缓冲池实例指定页面清理器线程在缓冲池LRU列表中搜索脏页面的深度。这是页面清理线程每秒执行一次的后台操作。
innodb_flush_neighbors和innodb_LRU_scan_depth变量主要用于写密集型工作负载。
小于默认值的设置通常适用于大多数工作负载。明显高于必要值的值可能会影响性能。只有在典型工作负载下有空闲I/O容量时,才考虑增加值。
相反,如果写密集型工作负载使I/O容量饱和,请降低该值,尤其是在缓冲池很大的情况下。
 

十、事务

MySQL :: MySQL 8.0 Reference Manual :: 13.3.7 SET TRANSACTION Statement

事务(transaction):一系列SQL的集合,整体执行;要 么全部成功,要么全部失败;
事务的属性:ACID
    A:原子性
    C: 一致性
    I:独立性、并发事务,隔离性
    D:持久性
事务的处理:
    commit;
    rollback;

事务的形式:
    1、多条DML的集合  insert  update delete  需要手工提交
    2、单条DDL        create  drop  alter  truncate 立即提交
    3、单条DCL        grant revoke  

变量autocommit:仅针对第一种事务

start TRANSACTION
update...
insert ...
delete ...
commit/rollback

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/109852.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【计算机毕业设计】python在线课程培训学习考试系统637r7-PyCharm项目

使用说明 使用Navicat或者其它工具&#xff0c;在mysql中创建对应名称的数据库&#xff0c;并导入项目的sql文件&#xff1b; 使用PyCharm 导入项目&#xff0c;修改配置&#xff0c;运行项目&#xff1b; 将项目中config.ini配置文件中的数据库配置改为自己的配置&#xff0c;…

文本识别工具 TextSniper 免激活for Mac

TextSniper 是一款 macOS 平台上的文本提取工具&#xff0c;它可以将屏幕上的文字内容快速转换为可编辑的文本。无论是从图像、视频、PDF 文件还是其他类型的文档中提取文字&#xff0c;TextSniper 都提供了便捷的功能。 以下是 TextSniper 的一些主要特点和功能&#xff1a; …

云原生SIEM解决方案

云原生&#xff08;Cloud Native&#xff09;是一种基于云计算的软件开发和部署方法论&#xff0c;它强调将应用程序和服务设计为云环境下的原生应用&#xff0c;以实现高可用性、可扩展性和灵活性。 云原生的优势有哪些 高可用性&#xff1a;云原生可以实现应用程序的高可用…

XTU-OJ 1295-Flawless Prime

题目描述 如果一个素数&#xff0c;依次去掉最高位得到一个数&#xff0c;这个数无前导0&#xff0c;并仍是素数的话&#xff0c;我们称其为“无瑕素数”。 比如317是素数&#xff0c;去掉最高位3得到17仍然是素数&#xff0c;再去掉最高位1得到7&#xff0c;仍然是素数&#x…

一篇文章讲明白double、float丢失精度的问题

1.背景 1.10.1 1.2000000000000002 发现上面计算的值竟然和数学计算不一致 2. 问题 计算机是通过二进制计算的&#xff0c;如果我们在二进制的视角来看待上面问题&#xff0c;就很容易发现问题了。 例如&#xff1a;把「0.1」转成二进制的表示&#xff0c;然后还原成十进制&…

java监控目录实时上传HDFS

背景描述&#xff1a; 为了满足linux服务器上特定目录的非结构化文件的实时监控&#xff0c;并上传HDFS 使用的方法 Apache的Commons-IO&#xff0c;来实现文件的监控功能 所需要的pom <dependencies><dependency><groupId>org.apache.hadoop</groupI…

选择什么电容笔比较好?平板手写笔推荐

由于苹果Pencil的热销&#xff0c;让华国内市场上&#xff0c;也出现了不少的平替式电容笔&#xff0c;这些产品&#xff0c;有好有坏&#xff0c;价格也很公道。不过&#xff0c;也有很多产品的价格都很平价。我是一个拥有多年经验的数码发烧友&#xff0c;在前几年就开始用上…

嵌入式Linux运行一定需要MMU吗

为什么需要MMU &#xff1f; 我们知道应用程序是不能随意访问内存的&#xff0c;如果让应用程序直接访问物理内存&#xff0c;那么计算机是很危险的&#xff0c;计算机内存的所有内容将被完全暴露出来。 所以出现了mmu&#xff0c;mmu是内存管理单元&#xff0c;应用程序访问…

docker load and build过程的一些步骤理解

docker load 命令执行原理 “docker load” command, the following steps are followed to load an image from a specified tar file to the local image repository: Parsing the tar file: Docker first parses the tar file to check its integrity and verify the form…

Spring Boot关掉APR

在Spring Boot中&#xff0c;可以通过设置环境变量或配置文件来关闭APR&#xff08;Apache Portable Runtime&#xff09;。下面是两种常用的方法&#xff1a; 方法一&#xff1a;设置环境变量 在启动Spring Boot应用程序时&#xff0c;可以通过设置-DuseApr环境变量来控制是…

链表 oj2 (7.31)

206. 反转链表 - 力扣&#xff08;LeetCode&#xff09; 我们通过头插来实现 将链表上的节点取下来&#xff08;取的时候需要记录下一个节点&#xff09;&#xff0c;形成新的链表&#xff0c;对新的链表进行头插。 /*** Definition for singly-linked list.* struct ListNode…

攻防千层饼

目录 钓鱼 钓鱼攻击 求职招聘 投毒 社会工程学 仿冒IT运维人员 补贴 吃瓜 反钓鱼攻击 DLL劫持制作木马 NSIS制作安装包 mysql蜜罐 LOAD DATA LOCAL INFILE 蜜罐 溯源反制 溯源 钓鱼邮件溯源 后门木马溯源 NPS 未授权访问 默认密码 灯塔 默认密码 反溯源…

Vulnhub系列靶机---Raven2

文章目录 Raven2 渗透测试信息收集提权UDF脚本MySQL提权SUID提权 Raven2 渗透测试 信息收集 查看存活主机 arp-scan -l 找到目标主机。 扫描目标主机上的端口、状态、服务类型、版本信息 nmap -A 192.168.160.47目标开放了 22、80、111 端口 访问一下80端口&#xff0c;并…

亚马逊云科技多项新功能与服务,助力各种规模的组织拥抱生成式 AI

从初创企业到大型企业&#xff0c;各种规模的组织都纷纷开始接触生成式 AI 技术。这些企业希望充分利用生成式 AI&#xff0c;将自身在测试版、原型设计以及演示版中的畅想带到现实场景中&#xff0c;实现生产力的大幅提升并大力进行创新。但是&#xff0c;组织要怎样才能在企业…

pytorch的安装【全官网流程】

1.准备python环境 python环境需要看pytorch上说明的版本本文用的是python3.9 conda create -n pytorch39 python3.92.安装pytorch【要使用GPU的先安装步骤3的CUDA在安装这个】 pytorch官方地址 &#xff08;1&#xff09;官方指出了python版本&#xff1a; &#xff08;2…

接口自动化测试难点:数据库验证解决方案!

接口自动化中的数据库验证&#xff1a;确保数据的一致性和准确性 接口自动化测试是现代软件开发中不可或缺的一环&#xff0c;而数据库验证则是确保接口返回数据与数据库中的数据一致性的重要步骤。本文将介绍接口自动化中的数据库验证的原理、步骤以及示例代码&#xff0c;帮…

rust的Defef和DerefMut学习

rust的Defef 介绍 pub trait Deref {type Target: ?Sized;// Required methodfn deref(&self) -> &Self::Target; }用于不可变的解引用操作,例如 *v ( immutable dereferencing operations)。 除了在不可变上下文中使用(一元)* 运算符进行显式解引用操作(…

am权限系统对接笔记

文章目录 角色如何对应机构如何对应 am需要提供的接口机构、角色、人员查关系 消息的交互方式方式1 接口查询方式2 mq推送消息到业务系统 am是一套通用权限管理系统。 为什么要接入am呢? 举例&#xff0c;甲方有10个供方&#xff0c;每个供方都有单独的权限系统&#xff0c;不…

爬取某音乐榜单歌曲

一、打开网页https://music.163.com/&#xff0c;进入榜单&#xff08;热歌榜&#xff09; 二、右键检查、刷新网页&#xff0c;选择元素&#xff08;点击歌曲名&#xff09; 三、相关代码 import requests #正则表达式模块内置模块 import re import osfilename music\\ if …

“第四十三天”

这个是我自己写的&#xff0c;下面那个是看的别人的&#xff0c;其实大致都是一样的&#xff0c;通过四次循环&#xff0c;挨个求和比较&#xff0c;都很麻烦&#xff0c;但重点在于&#xff0c;对于已知变量的运用&#xff0c;当我需要在最内层循环用变量确定a数组组元时&…