OpenStack常见模块详解

news2024/12/23 20:04:15

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。

推荐:Linux运维老纪的首页,持续学习,不断总结,共同进步,活到老学到老
导航剑指大厂系列:全面总结 运维核心技术:系统基础、数据库、网路技术、系统安全、自动化运维、容器技术、监控工具、脚本编程、云服务等。
常用运维工具系列:常用的运维开发工具, zabbix、nagios、docker、k8s、puppet、ansible等
数据库系列:详细总结了常用数据库 mysql、Redis、MongoDB、oracle 技术点,以及工作中遇到的 mysql 问题等
懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂
非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

OpenStack 架构
2.1 体现了 OpenStack 中各个服务之间的相互关系,图中的箭头体现了提供
服务方和接受服务方的相对关系。
图 2.1 云计算概念图
OpenStack 由多种服务组成,每种服务具有独立的命名。在整个 OpenStack
构中, Keystone 提供认证服务,接收来自用户和服务的认证请求,并对身份进行认
证。各个服务之间通过公用的 API 接口进行交互。大部分服务均包含一个 API 进程,
用于侦听 API 请求,根据服务的性质选择处理请求或转发请求。服务进程之间的通讯
通过消息队列实现,如 AMQP
在 部 署 完 成 的 云 系 统 平 台 上 , 用 户 通 过 Dashboard RestAPI 方 式 在 经
KeyStone 模块认证授权后,可以执行创建虚拟机服务。通过 Nova 模块创建虚拟机
实例, Nova 调用 Glance 模块提供的镜像服务,然后调用 Neutron 模块提供网络服
务。根据需要可以选择给虚拟机增加存储卷,卷功能由 Cinder 模块提供服务。整个
过程在 Ceilometer 模块的资源监控下完成。同时 Cinder 提供的 Volume Glance
2 页 共 23 3 页 共 23
提供的镜像可以通过 Swift 对象存储机制进行保存。
通过以上解析可以看到 OpenStack 云平台服务的提供主要是依靠 Nova Glance
Cinder Neutron 四 个核 心 模 块完 成 的 ,四 个 辅助 模 块 Horizen Ceilometer
Keystone Swift 提供的访问、监控、权限和对象存储功能。

一、云计算平台基础环境准备
 openstack软件仓库

​
   mount 镜像地址 挂载地址
            vi /etc/fstab(永久挂载)
                /opt/openstack/openStack-train.iso  /mnt/openstack   iso9660   defaults   0 0
            openstack yum源
                cd /etc/yum.repos.d
                vi centos-openstack.repo
                    [virt]
                        name=virt
                        baseurl=file:///mnt/openstack/virt/
                        enabled=1
                        gpgcheck=0
     
                    [base]
                        name=base
                        baseurl=file:///mnt/openstack/base/
                        enabled=1
                        gpgcheck=0
     
                    [extras]
                        name=extras
                        baseurl=file:///mnt/openstack/extras/
                        enabled=1
                        gpgcheck=0
     
                    [updates]
                        name=updates
                        baseurl=file:///mnt/openstack/updates/
                        enabled=1
                        gpgcheck=0
     
                    [train]
                        name=train
                        baseurl=file:///mnt/openstack/train
                        enabled=1
                        gpgcheck=0
            yum clean all
            yum makecache
            yum repolist
     
    #永久挂载
    vi /etc/fstab
        /opt/openstack    /mnt/openstack    iso9669    defaults     0    0
        #放置路径            挂载路径        文件类型            

        服务端安装FTP服务器

    #服务端安装ftp服务
    yum install -y vsftpd
                vi /etc/vsftpd/vsftpd.conf
                    #加一行(/opt软件仓库所在位置)
                    anon_root=/opt
                
    #服务端与客户端均运行            
    yum install -y net-tools

    安装chrony时间同步服务

    #使用以下命令安装chrony:
    yum install chrony -y
     
    #开启服务
    systemctl start chronyd
    systemctl enable chronyd
     
    systemctl命令用于控制系统服务。start选项启动服务,enable选项设置开机自启。
    配置chrony服务,
     
    #编辑chrony配置文件/etc/chrony.conf:
    vi /etc/chrony.conf
    #在文件中找到server配置项,将其更改为国内可用的NTP服务器。例如,可将其更改为阿里云的NTP服务器:
    #iburst选项表示在与服务器同步时进行快速启动。
    server ntp.aliyun.com iburst
     
    #重启服务
    systemctl restart chronyd
     
    #检查chrony服务是否正常运行:
    systemctl status chronyd
    如果服务已经成功启动并在运行中,会显示Active: active (running)。
     
    #检查系统时间是否已经与NTP服务器同步:
    chronyc tracking
    #如果系统时间已经与NTP服务器同步,则会显示类似以下内容的输出:
    Reference ID    : 7F7F0101 ()
    Stratum         : 3
    Ref time (UTC)  : Fri Oct 22 17:59:14 2021
    System time     : 0.000000002 seconds fast of NTP time
    Last offset     : +0.000000036 seconds
    RMS offset      : 0.000000036 seconds
    Frequency       : 2.815 ppm slow
    Residual freq   : +0.000 ppm
    Skew            : 0.001 ppm
    Root delay      : 0.027991212 seconds
    Root dispersion : 0.005167614 seconds
    Update interval : 64.2 seconds
    Leap status     : Normal
     
    #Ref time (UTC)表示NTP服务器上的时间。
    #System time表示本地系统时间与NTP服务器时间的差值。
    #Last offset表示上一次与NTP服务器同步时的时间偏移值。
    #RMS offset表示平均时间偏移值。
    #Frequency表示本地系统时钟的频率与NTP服务器时钟的频率之间的差异,以PPM表示。
    #其他参数表示网络延迟等性能指标。


    安装openstack云计算平台基础框架

    yum install -y centos-release-openstack-train
    yum upgrade
            #rm -rf /etc/yum.repos.d/C*.repo
    yum install -y python-openstackclient
    yum install -y openstack-selinux


    安装MariaDB数据库服务    

     yum install -y mariadb-server python2-PyMySQL
            vi /etc/my.cnf.d/openstack.cnf
                [mysqld]
                    bind-address=hostip
                    default-storage-engine=innodb
                    innodb_file_per_table=on
                    max_connections=4096
                    collation-server=utf8_general_ci
                    character-set-server=utf8
            mysql_secure_installation        #(初始化数据库)
            mysql -uroot -p password


    安装RabbitMQ消息队列服务

    yum install -y rabbitmq-server
            systemctl enable rabbitmq-server
            systemctl start rabbitmq-server
            rabbitmqctl add_user rabbitmq 123456
            rabbitmqctl set_permissions rabbitmq".*"".*"".*"
            netstat -tnluo | grep 5672        #验证


    安装Memcached缓存服务

    yum install -y memcached python-memcached
            vi /etc/sysconfig/memcached
                OPTIONS= -| hostip,::1,hostname    #修改
            systemctl enable memcached
            systemctl start memcached
            netstat -tnluo | grep 11211            #验证


    安装etcd分布式键值对存储系统

     
            yum install -y etcd
            vi /etc/etcd/etcd.conf
                # etcd配置文件  
      
                # etcd集群成员  
                ETCD_NAME=hostname  
                ETCD_ADVERTISE_CLIENT_URLS="http://(hostip):2379"  
                ETCD_INITIAL_ADVERTISE_PEER_URLS="HTTP://(HOSTIP):2380"
                ETCD_LISTEN_CLIENT_URLS="http://(hostip):2379"  
                ETCD_LISTEN_PEER_URLS="http://(hostip):2380"  
                ETCD_INITIAL_CLUSTER="hostname=http://(hostip):2380"
                ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
                ETCD_INITIAL_CLUSTER_STATE="new"
                # Raft一致性算法参数  
                #ETCD_RAFT_LOG_SIZE=536870912  
                #ETCD_RAFT_LOG_LIMIT=5242880  
                # 安全性配置  
                #ETCD_TLS=true  
                #ETCD_CERT_FILE="path/to/cert.pem"  
                #ETCD_KEY_FILE="path/to/key.pem"  
                #ETCD_CLIENT_CERT_AUTH=true  
                #ETCD_TRUSTED_CA_FILE="path/to/ca.pem"  
                #ETCD_AUTO_REJOIN_RETRIES=10  
                #ETCD_AUTO_REJOIN_DELAY=10
     
     
            systemctl enable etcd
            systemctl start etcd
            netstat -tnlup | grep etcd

​

   二、认证服务(keystone)安装

​
 #安装依赖包和Keystone服务
    yum install -y openstack-keystone httpd mod_wsgi
     
    #确认是否已经创建keystone用户组和用户
        cat /etc/passwd | grep keystone
        cat /etc/group | grep keystone
        
    #创建Keystone所需的MySQL数据库和用户
        mysql -uroot -p123456
            create database keystone;
            grant all privileges on keystone.* to 'keystone'@'localhost' identified by '123456';
            grant all privileges on keystone.* to 'keystone'@'%' identified by '123456';
     
            quit;
            
    #修改Keystone配置文件的数据库连接信息
        vi /etc/keystone/keystone.conf    #(修改以下)
            [database]
                connection = mysql+pymysql://keystone:123456@hostname/keystone    #582/600
            [token]
                provider = fernet    #2446/2475
       
    #同步Keystone数据库
        su keystone -s /bin/sh -c "keystone-manage db_sync"
    #查看数据库
        mysql -uroot -p123456
            use keystone;
            show tables;
            quit;
        
    #设置Keystone Fernet        #令牌和凭据
        keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
        keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
        
    #初始化用户身份认证
        keystone-manage bootstrap --bootstrap-password 123456 --bootstrap-admin-url http://server01:5000/v3 --bootstrap-internal-url http://server01:5000/v3 --bootstrap-public-url http://server01:5000/v3 --bootstrap-region-id RegionOne
        
    #配置Apache服务
        ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/    #建立链接
        vi /etc/httpd/conf/httpd.conf
            #修改
              ServerName (hostip)
    #启动Apache服务
        systemctl start httpd
        systemctl enable httpd
        
    #创建初始化环境变量文件
        vi admin-login
            export OS_USERNAME=admin
            export OS_PASSWORD=123456
            export OS_PROJECT_NAME=admin
            export OS_USER_DOMAIN_NAME=Default
            export OS_PROJECT_DOMAIN_NAME=Default
            export OS_AUTH_URL=http://hostname:5000/v3
            export OS_IDENTITY_API_VERSION=3
            export OS_IMAGE_API_VERSION=2
            
    #导入环境变量并查看
        source admin-login
        export -p
        
    #创建项目、角色和域,并列出已有的项目、角色和域
        openstack project create --domain default project
     
        #openstack project list
        #openstack role create user
        #openstack role list
        #openstack domain list
        #openstack user list

​

  三、镜像服务(Glance)安装

  #安装glance软件包
    yum install -y openstack-glance
     
    #查看glance用户和组
        cat /etc/passwd | grep glance
        cat /etc/group | grep glance
     
    #创建glance数据库
        mysql -uroot -p123456
            create database glance;
            grant all privileges on glance.* to 'glance'@'localhost' identified by '123456';
            grant all privileges on glance.* to 'glance'@'%' identified by '123456';
     
            quit;
        
     #备份并修改glance-api配置文件   
        cp /etc/glance/glance-api.conf     /etc/glance/glance-api.bak
        grep -Ev "^$|#" /etc/glance/glance-api.bak > /etc/glance/glance-api.conf
     
            #!@必须靠左不得有空格
     
            [database]
            connection = mysql+pymysql://glance:123456@hostname/glance
            [keystone_authtoken]
            auth_url = http://hostname:5000
            memcached_servers = hostname:11211
            auth_type = password
            project_domain_name = Default
            user_domain_name = Default
            project_name = project
            username = glance
            password = 123456    
            [paste_deploy]
            flavor = keystone
            [glance_store]
            stores = file
            default_store = file
            filesystem_store_datadir = /var/lib/glance/images/
        
    #同步数据库
        su glance -s /bin/sh -c "glance-manage db_sync"
    #查看数据库
        mysql -uroot -p123456
            use glance;
            show tables;
     
            quit;
      
    #导入环境变量
        source admin-login
     
    #创建glance用户和服务
        openstack user create --domain default --password 123456 glance
        openstack service create --name glance image
        openstack endpoint create --region RegionOne glance public http://hostname:9292
        openstack endpoint create --region RegionOne glance internal http://hostname:9292
        openstack endpoint create --region RegionOne glance admin http://hostname:9292
        
    #启动glance-api服务
        systemctl start openstack-glance-api
        systemctl enable openstack-glance-api
        
        
    #检查服务状态和端口监听情况
        netstat -tnlup | grep 9292
        systemctl status openstack-glance-api
      
     
    #例子 
    #创建镜像并查看镜像列表
        openstack image create --file 镜像地址 --disk-format qcow2 --container-format bare --public cirros(镜像名称)
        openstack image list
        
        
        #openstack user list
        #openstack domain list 
        #openstack role list
        #openstack endpoint list
        #ll /var/lib/glance/images/
  四、放置服务(Placement)安装
 #安装 openstack-placement-api  
    yum install -y openstack-placement-api        
      
    #查看 placement 用户和组
        cat /etc/passwd | grep placement
        cat /etc/group | grep placement
     
    #创建 placement 数据库,并授权
        mysql -uroot -p123456
            create database placement;
            grant all privileges on placement.* to 'placement'@'hostname' identified by '123456';
            grant all privileges on placement.* to 'placement'@'%' identified by '123456';
            quit
     
    #备份并编辑 placement 配置文件
        cp /etc/placement/plancement.conf     /etc/placement/plancement-conf.bak
        grep -Ev "^$|#" /etc/plancement/placement.conf.bak > /etc/placement/plancement.conf
     
    #配置 keystone 认证
        vi /etc/placement/placement.conf
            
            [DEFAULT]
            [api]
            auth_strategy = keystone
     
            [cors]
            [keystone_authtoken]
            auth_url = http://server:5000
            memcached_servers = server:11211
            auth_type = password
            project_domain_name = Default
            user_domain_name = Default
            project_name = project
            username = placement
            password = 123456
     
            [oslo_policy]
            [placement]
            [placement_database]
            connection = mysql+pymysql://placement:123456@server01/placement
            [profiler]
            
    #配置 apache
        vi /etc/httpd/conf.d/00-placement-api.conf 
       
        #!@在<VirtualHost *:8778>中添加,报错则删
          #  <Directory /usr/bin>
          #    Require all granted
          #  </Directory>
           <\VirtualHost>
           
    #同步数据库
        su placement -s /bin/sh -c "placement-manage db sync" 
        mysql -uroot -p123456
        use placement;
        show tables;
        
    #导入环境变量
        source admin-login
     
    #创建 keystone 用户和角色,并分配权限
        openstack user create --domain default --password 123456 placement
        openstack role add --project project --user placement admin
        
    #创建服务和端点
        openstack service create --name placement placement
        openstack endpoint create --region RegionOne placement public http://hostname:8778
        openstack endpoint create --region RegionOne placement internal http://hostname:8778
        openstack endpoint create --region RegionOne placement admin http://hostname:8778
     
    #重启 apache 并查看端口
        systemctl restart httpd
        netstat -tnlup | grep 8778
     
    #测试端口是否正常
        curl http://hostname:8778
    五、计算服务(Nova)安装
    #安装nova软件包
        yum install -y openstack-nova-api openstack-nova-conductor openstack-nova-scheduler openstack-nova-novncproxy
        cat /etc/passwd | grep nova    #查看用户信息
        cat /etc/group | grep nova    #查看用户组信息
        
        mysql -uroot -p123456    #进入数据库
            #创建三个数据库
            create database nova_api;            
            create database nova_cell0;
            create database nova;
            #授予“nova”用户从本地和远程管理数据库的权限
            grant all privileges on nova_api.* to 'nova'@'localhost' identified by '123456';
            grant all privileges on nova_api.* to 'nova'@'%' identified by '123456';
            grant all privileges on nova_cell0.* to 'nova'@'localhost' identified by '123456';
            grant all privileges on nova_cell0.* to 'nova'@'%' identified by '123456';
            grant all privileges on nova.* to 'nova'@'localhost' identified by '123456';
            grant all privileges on nova.* to 'nova'@'%' identified by '123456';
            
            quit;
        #备份配置文件
        cp /etc/nova/nova.conf  /etc/nova/nova.bak
        #去除空行和注释
        grep -Ev "^$|#" /etc/nova/nova.bak > /etc/nova/nova.conf
     
        #进入主配置文件
        #向左靠齐勿有空格
        vi /etc/nova/nova.conf
            [api_database]                                                #与nova_api数据库连接
                connection = mysql+pymysql://nova:123456@hostname/nova_api
            [database]                                                    #与nova数据库连接
                connection = mysql+pymysql://nova:123456@hostname/nova
            [api]                                                        #与keystone交互
                auth_strategy = keystone
            [keystone_authtoken]                                        #与keystone交互
                auth_url = http://hostname:5000
                memcached_servers = hostname:11211
                auth_type = password
                project_domain_name = Default
                user_domain_name = Default
                project_name = project
                username = nova
                password = 123456
            [placement]                                                    #与placement交互
                auth_url = http://hostname:5000
                auth_type = password
                project_domain_name = Default
                user_domain_name = Default
                project_name = project
                username = placement
                password = 123456
                region_name = RegionOne
            [glance]                                                    #与glance交互
                api_server = http://hostname:9292
            [oslo_concurrency]                                            #为OpenStack代码块提供线程及进程锁
                lock_path = /var/lib/nova/tmp
            [DEFAULT]                                                    #配置使用消息队列及防火墙信息
                enabled_apis = osapi_compute,metadata
                transport_url = rabbit://rabbitmq:123456@hostname:5672
                my_ip = (hostip)
                use_neturon = true
                firewall_dirver = nova.virt.firewall.NoopFirewallDriver
            [vnc]                                                        #配置VCN连接方式
                enabled = true
                server_listen = $my_ip
                server_proxyclient_address = $my_ip
            
     
        #初始化nova数据库
        su nova -s /bin/sh -c "nova-manage api_db sync"                    
        su nova -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1"
        su nova -s /bin/sh -c "nova-manage cell_v2 map_cell0"
        su nova -s /bin/sh -c "nova-manage db sync"
        
        #验证:获得已注册的单元列表
        nova-manage cell_v2 list_cells        
        
        
    #nova组件初始化
        #导入环境变量
        source admin-login    
        #在OpenStack平台创建nova用户,密码123456                                            
        openstack user create --domain default --password 123456 nova    
        openstack role add --project project --user nova admin
        
        #创建名为nova类型为compute的服务
        openstack service create --name nova compute    
        #公众用户访问端点
        openstack endpoint create --region RegionOne nova public http://hostname:8774/v2.1
        #内部组件访问端点
        openstack endpoint create --region RegionOne nova internal http://hostname:8774/v2.1
        #admin用户访问端点
        openstack endpoint create --region RegionOne nova admin http://hostname:8774/v2.1
        
        #启动并设置开机启动
        systemctl start openstack-nova-api openstack-nova-scheduler openstack-nova-conductor openstack-nova-novncproxy
        systemctl enable openstack-nova-api openstack-nova-scheduler openstack-nova-conductor openstack-nova-novncproxy
        
        netstat -nutpl | grep 877            #查看端口占用(8774,8775)
        openstack compute service list        #查看计算服务列表
        
        #安装客户端Nova服务
            yum install -y openstack-nova-compute
            cat /etc/passwd | grep nova
            cat /etc/group | grep nova
            
        cp /etc/nova/nova.conf  /etc/nova/nova.bak
        grep -Ev "^$|#" /etc/nova/nova.bak > /etc/nova/nova.conf
        vi /etc/nova/nova.conf    
            [api]
                auth_strategy = keystone
            [keystone_authtoken]
                auth_url = http://hostname:5000
                memcached_servers = hostname:11211
                auth_type = password
                project_domain_name = Default
                user_domain_name = Default
                project_name = project
                username = nova
                password = 123456    
            [placement]
                auth_url = http://hostname:5000
                auth_type = password
                project_domain_name = Default
                user_domain_name = Default
                project_name = project
                username = placement
                password = 123456
                region_name = RegionOne    
            [glance]
                api_server = http://hostname:9292
            [oslo_concurrency]
                lock_path = /var/lib/nova/tmp    
            [DEFAULT]
                enabled_apis = osapi_compute,metadata
                transport_url = rabbit://rabbitmq:123456@hostname:5672
                my_ip = (客户端ip)
                use_neturon = true
                firewall_dirver = nova.virt.firewall.NoopFirewallDriver    
            [vnc]
                enabled = true
                server_listen = 0.0.0.0
                server_proxyclient_address = $my_ip
                novncproxy_base_url = http://(server-ip):6080/vnc_auto.html
            [libvirt]
                virt_type = qemu
                
        systemctl start libvirtd openstack-nova-compute        
        systemctl enable libvirtd openstack-nova-compute    
        
        
        #发现客户端并检验服务(服务端执行)
            source admin-login
            su nova -s /bin.sh -c "nova-manage cell_v2 discover_hosts --verbose"
        #设置自动发现
            vi /etc/novs.novs.conf
                [scheduler]
                    discover_hosts_in_cells_interval = 60
                    
                    systemctl restart openstack-nova-api        #重启nova-api服务
            
            #验证
                opensatck compute service list        #查看计算服务列表
                openstack catalog list                #查看OpenStack现有服务及服务对应的端点列表
                nova-status upgrade check            #

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

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

相关文章

“NoSQL数据库技术及其应用”写作框架,软考高级,系统架构设计师

论文真题 随着互联网web2.0网站的兴起&#xff0c;传统关系数据库在应对web2.0 网站&#xff0c;特别是超大规模和高并发的web2.0纯动态SNS网站上已经显得力不从心&#xff0c;暴露了很多难以克服的问题&#xff0c;而非关系型的数据库则由于其本身的特点得到了非常迅速的发展…

Zookeeper的watch机制是如何工作的?

ZooKeeper Watch 概述 ZooKeeper Watch 机制类似于 Java 设计模式中的观察者模式或者监听模式&#xff0c;唯一的不同是不再基于线程间通信&#xff0c;而是基于进程间通信。 ZooKeeper Watch 机制是指&#xff0c;客户端在所有的读命令上告知服务端&#xff1a;这个节点或者…

windows 提权方式汇总

windows 提权 一、土豆&#xff08;potato&#xff09;家族提权 原理 土豆提权就是通过 windows 的 COM&#xff08;Component Object Model&#xff0c;组件对象模型&#xff09;类。向指定的服务器端口发送 NTLM 认证&#xff0c;捕获认证数据包&#xff0c;并修改数据包内…

【C++】—— 内存管理

【C】—— 内存管理 1 C/C 的内存划分 1.1 C/C 的内存分布1.2 C/C 的内存分布练习 2 C语言 中动态内存管理方式&#xff1a;malloc/calloc/realloc/free3 C 内存管理方式3.1 new / delete 操作内置类型3.2 new 和 delete 操作自定义类型3.2.1 new 和 delete 操作自定义类型基础…

layui栅格布局设置列间距不起作用

layui栅格布局支持设置列间距&#xff0c;只需使用预置类layui-col-space*即可。不过实际使用时却始终看不到效果。   根据layui官网文档的说明&#xff0c;只需要在行所在div元素的class属性中增加layui-col-space*即可出现列间距。如下图所示&#xff1a;   但是实际使用…

【MySQL】MySQL 表的增删改查(进阶)

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 目录 约束类型 not null 非空 unique 唯一 default 指定默认值 primary key 主键 foreign key 外键 check字句 检查 表设计 确定实体 实体之间的关系 聚合查询 聚合函数…

基于SSM的学生信息管理系统的设计与实现 (含源码+sql+视频导入教程+文档+VISIO图)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于SSM的学生信息管理系统12拥有三种角色&#xff1a;学生、教师、管理员 学生&#xff1a;选课、查看已选课程、查看成绩 教师&#xff1a;成绩管理 管理员&#xff1a;课程管理、学生…

ai变声:视频怎么变音?分享6个语音变声器,视频变声不再难!

想过如何让自己的直播内容更吸引人吗&#xff1f;你是否希望通过变声器来打造独特的声音效果&#xff1f;或者&#xff0c;如何用创意声音提升观众的互动体验呢&#xff1f;随着直播行业的不断发展&#xff0c;每位主播都在努力寻找吸引观众的独特方式&#xff0c;而变声器正是…

【电脑使用耳机录音注意事项】

文章目录 电脑音设置 电脑音设置 打开声音设置&#xff1a;右键小喇叭 → 选择“声音(S)”→选择 “录制”&#xff1a; 选择 “阵列麦克风” 调整声音大小&#xff1a; 音频增强设置

AI大模型编写多线程并发框架(六十二):限流和并发度优化

系列文章目录 文章目录 系列文章目录前言一、项目背景二、第三轮对话-补充异步执行代码三、第四轮对话-增加限流器四、第五轮对话-抽取限流器接口五、第六轮对话-修改并发度三、参考文章 前言 在这个充满技术创新的时代&#xff0c;AI大模型正成为开发者们的新宠。它们可以帮助…

何为MethodHandles?

最近在梳理ThreadPoolExecutor&#xff0c;无意间看到其内部类Worker实现了一个名字叫做AbstractQueuedSynchronizer的抽象类。看到它&#xff0c;我便想起当年为了面试而疯狂学习这个知识点的场景。不过这种临时抱佛脚的行为&#xff0c;并未给我带来即时的收益。也是这次的疯…

基于Java的高校学生工作系统的设计与实现(论文+源码)_kaic

基于Java的高校学生工作系统的设计与实现(论文源码)_kaic 摘 要 本系统为高校学生工作管理系统&#xff0c;系统能够为高校提供便捷的学生信息管理功能。该系统采用 Java 语言编写&#xff0c;系统采用MVC架构进行设计&#xff0c;通过Servlet和JSP等技术实现前后端数据交互和…

【漏洞复现】SuiteCRM responseEntryPoint Sql注入漏洞

免责声明&#xff1a; 本文内容旨在提供有关特定漏洞或安全漏洞的信息&#xff0c;以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步&#xff0c;并非出于任何恶意目的。阅读者应该明白&#xff0c;在利用本文提到的漏洞信息或进行相关测…

基于UDS的Flash 刷写——BootLoad刷写流程详解

从0开始学习CANoe使用 从0开始学习车载测试 相信时间的力量 星光不负赶路者&#xff0c;时光不负有心人。 目录 流程概述UDS流程详解释前编程①诊断会话控制 - 切换到扩展会话&#xff08;10 03&#xff09;②例程控制-预编程条件检查&#xff08;31 01 02 03&#xff09;③DTC…

ClickHouse分布式部署搭建单分片二副本集群

搭建单分片二副本集群,使用MergeTree引擎测试数据同步 服务器: 127.0.0.1 clickhouse 127.0.0.2 clickhouse + keeper 结构图 1.修改hosts vi /etc/hosts 添加需要部署的ip和名字 127.0.0.1 node1 127.0.0.2 node2 2. node1配置文件修改 2.1 修改/etc/clickhouse-se…

Excel中使用VBS自定义函数将中文转为拼音首字母

1、在“开发工具”中&#xff0c;点击“Visual Basic”。如果没有“开发工具”&#xff0c;则添加。 2、添加“模块”&#xff0c;在窗口中添加自定义函数。 Function MyGetPYChar(char) MyCodeNumber 65536 Asc(char) If (MyCodeNumber > 45217 And MyCodeNumber <…

【网络安全】缓存配置错误导致授权绕过

未经许可,不得转载。 文章目录 正文复现正文 一个电子商务网站,它有 2 个资产:target.com和admin.target.com target.com是面向用户的门户,用户可以去那里购买物品。admin.target.com是卖家的管理门户,卖家可以在其中列出他们的物品,跟踪订单、客户信息等。 我正在测试…

有希带你深入理解指针(3)

前言 本篇文章是对指针知识的进一步讲解&#xff0c;如果对部分知识有不了解的地方可以移步前文进行学习&#xff01; 1.字符指针变量 该内容我们在前面的文章中已提到过&#xff0c;想必大家对它应该不陌生吧&#xff01;这里我们会对它进行详细的介绍。 一般情况下&#xf…

FPGA开发——IIC实现简单的串口回环

一、概述 在我们进行日常开发时&#xff0c;不管是进行MCU、单片机、还是FPGA&#xff0c;都会使用到IIC通信协议。采用串行总线可以简化系统硬件结构、减小系统体积、提高系统可靠性。常 用的串行总线有单总线&#xff08;1-Wire Bus&#xff09;、IIC&#xff08;Inter-Integ…

Codeforces Round 926 (Div. 2) C. Sasha and the Casino (博弈论*1400)

这里的意思是想让我们求得是否是能够实现不停地无上限的赚钱。 这里注意避开一个思维误区&#xff0c;如果你想的是前x次一直用1枚硬币然后吃第x1次保底&#xff0c;那么就是错误的。你应该考虑到如果前x次里面出现了胜利呢&#xff1f;这时候你拿着一枚硬币根本赚不回本。 所…