【传统方式部署Ruoyi微服务】

news2024/11/26 0:34:21

IP机器与部署组件

在这里插入图片描述
在这里插入图片描述
部署思路顺序:
在这里插入图片描述

1 安装mysql

wget https://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
rpm -ivh https://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

systemctl enable mysqld --now
systemctl status mysqld

#默认密码

cat /var/log/mysqld.log | awk '/password/ {print $NF}'
mysql -uroot -p'hWgmWK.r=6%I'

mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;
mysql> set password = password("123456");
mysql> flush privileges;
grant all privileges on *.* to 'root'@'192.168.%.%' identified by '123456';

2 安装redis

yum install epel-release -y
yum install redis -y
systemctl enable redis --now
systemctl status redis


改/etc/redis.conf
bind 0.0.0.0
设置redis的访问密码

部署微服务治理层

0 安装 java 1.8.0_262 和 maven3.8.8 (略)

/etc/profile最后面
export JAVA_HOME=/opt/software/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar

export MAVEN_HOME=/opt/software/maven3.8
export PATH=$PATH:$MAVEN_HOME/bin

1 部署nacos (单机版) (端口8848)

wget https://linux.oldxu.net/nacos-mysql.sql
wget https://linux.oldxu.net/nacos-server-2.1.1.tar.gz

mysql -uroot -p123456 -e "create database nacos;"
mysql -uroot -p123456 nacos < nacos-mysql.sql 


cd /root/k8sFile/project/microServer/nacos/nacos/conf
#修改数据库配置信息
vim application.properties

### If use MySQL as datasource:
spring.datasource.platform=mysql

### Count of DB:
db.num=1

### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=123456
#单机模式启动nacos-server
cd /root/k8sFile/project/microServer/nacos/nacos/bin
[root@node5-db bin]# sh startup.sh -m standalone

/opt/software/jdk1.8/bin/java -Djava.ext.dirs=/opt/software/jdk1.8/jre/lib/ext:/opt/software/jdk1.8/lib/ext  -Xms512m -Xmx512m -Xmn256m -Dnacos.standalone=true -Dnacos.member.list= -Xloggc:/root/k8sFile/project/microServer/nacos/nacos/logs/nacos_gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M -Dloader.path=/root/k8sFile/project/microServer/nacos/nacos/plugins/health,/root/k8sFile/project/microServer/nacos/nacos/plugins/cmdb,/root/k8sFile/project/microServer/nacos/nacos/plugins/selector -Dnacos.home=/root/k8sFile/project/microServer/nacos/nacos -jar /root/k8sFile/project/microServer/nacos/nacos/target/nacos-server.jar  --spring.config.additional-location=file:/root/k8sFile/project/microServer/nacos/nacos/conf/ --logging.config=/root/k8sFile/project/microServer/nacos/nacos/conf/nacos-logback.xml --server.max-http-header-size=524288
nacos is starting with standalone
nacos is starting,you can check the /root/k8sFile/project/microServer/nacos/nacos/logs/start.out

访问nacos的 http://192.168.79.35:8848/nacos/#/login 账号密码 nacos/nacos
在这里插入图片描述
在这里插入图片描述

2 部署sentinel (限流组件)(jar包) (业务8718 、API调用8719)

wget https://linux.oldxu.net/sentinel-dashboard-1.8.5.jar

运行sentinel,-Dserver.port=8718 用来指定sentinel控制台访问端口:
nohup java -Dserver.port=8718 \
-Dcsp.sentinel.dashboard.server=localhost:8718 \
-Dproject.name=sentinel-dashboard \
-Dcsp.sentinel.api.port.port=8719 \
-jar sentinel-dashboard-1.8.5.jar &> /var/log/sentinel.log & 

访问sentinel,通过http://IP:8718 ,登录用户名及密码均为 sentinel
在这里插入图片描述
在这里插入图片描述

2.1 应用使用sentinel,需要先添加依赖 (开发)

为pom.xml 添加依赖

在这里插入图片描述

2.2 、为应用添加sentinel配置,(服务配置一般保存在nacos中,在nacos对应配置添加如下字段即可)

例如:

 spring:
 application:
   name: ruoyi-auth # 应用名称
 cloud:
   sentinel: # 取消控制台懒加载
     eager: true
     transport:
       dashboard: 127.0.0.1:8718 # 控制台地址

3 部署skywalking链路追踪组件 (收集器(11800端口),web页面(8080端口))

wget https://linux.oldxu.net/apache-skywalking-apm-8.8.1.tar.gz
tar xf apache-skywalking-apm-8.8.1.tar.gz

#运行skywalking,它会运行两个组件,一个收集器(11800端口),一个web页面(8080端口)
cd /root/k8sFile/project/microServer/03-skywalking/apache-skywalking-apm-bin/bin

[root@node5-db bin]# sh startup.sh 
SkyWalking OAP started successfully!
SkyWalking Web Application started successfully!

访问skywalking,通过 http://IP:8080
在这里插入图片描述

3.1 如果项目需要使用skywalking,需要在启动业务时加载skywalking-agent的jar包

示例如下

wget https://linux.oldxu.net/apache-skywalking-java-agent-8.8.0.tgz
tar xf apache-skywalking-java-agent-8.8.0.tgz

[root@node5-db 03-skywalking]# ls skywalking-agent/
activations  bootstrap-plugins  config  LICENSE  licenses  logs  NOTICE  optional-plugins  optional-reporter-plugins  plugins  skywalking-agent.jar
# 运行java应用,而后指定
java -javaagent:./skywalking-agent/skywalking-agent.jar \
-Dskywalking-agent.jar \
-Dskywalking.agent.service_name=ruoyi-auth \
-Dskywalking.collector.backend_service=192.168.79.35:11800 \
-har ruoyi-auth/target/ruoyi-auth.jar &

4 部署微服务组件

#79.34操作
#git clone https://gitee.com/y_project/RuoYi-Cloud   或者使用oldxu的:
wget https://linux.oldxu.net/RuoYi-Cloud-20220814.zip
unzip RuoYi-Cloud-20220814.zip

[root@node4 danji-ruoyi]# cd RuoYi-Cloud
[root@node4 RuoYi-Cloud]# ls
bin  docker  LICENSE  pom.xml  README.md  ruoyi-api  ruoyi-auth  ruoyi-common  ruoyi-gateway  ruoyi-modules  ruoyi-ui  ruoyi-visual  sql

scp -r sql/ 192.168.79.35:/root

4.1 创库,导入sql

RuoYi-Cloud项目所需的数据文件

mysql -uroot -p
mysql> create database `ry-cloud` charset utf8;
mysql> show database;

[root@node5-db sql]# ls
quartz.sql  ry_20220814.sql  ry_config_20220510.sql  ry_seata_20210128.sql
[root@node5-db sql]# mysql -uroot -p123456 ry-cloud < ry_20220814.sql 

#检查
mysql> use  ry-cloud;
mysql> show tables;
+--------------------+
| Tables_in_ry-cloud |
+--------------------+
| gen_table          |
| gen_table_column   |
| sys_config         |
| sys_dept           |
| sys_dict_data      |
| sys_dict_type      |
| sys_job            |
| sys_job_log        |
| sys_logininfor     |
| sys_menu           |
| sys_notice         |
| sys_oper_log       |
| sys_post           |
| sys_role           |
| sys_role_dept      |
| sys_role_menu      |
| sys_user           |
| sys_user_post      |
| sys_user_role      |
+--------------------+
19 rows in set (0.00 sec)

创ry-config库。导入ruoyi-config配置的sql文件。

mysql -uroot -p
mysql> create database `ry-config` charset utf8;

mysql -uroot -p123456 ry-config < ry_config_20220510.sql 

然后修改 nacos 的 conf/application.properties 配置文件,将默认nacos库指向新的ry-config库

### Count of DB:
db.num=1

### Connect URL of DB:
#db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.url.0=jdbc:mysql://127.0.0.1:3306/ry-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=123456
#重启nacos
sh shutdown.sh
sh startup.sh -m standalone

检查nacos是否已经注入了业务所需的配置文件相关数据;
在这里插入图片描述

打包项目

#79.34操作
 cd RuoYi-Cloud/
 mvn clean package -Dmaven.test.skip=true
 #打包完成后,整个约有620MB大小

在这里插入图片描述

对单独某模块打包操作

#比如 单独对 ruoyi-auth模块打包
cd RuoYi-Cloud/
mvn package -Dmaven.test.skip=true -pl ruoyi-auth -am

4.2 部署system组件

#机器79.34
cd /root/k8sFile/project/danji-ruoyi/guanWang
wget https://linux.oldxu.net/apache-skywalking-java-agent-8.8.0.tgz 
tar xf apache-skywalking-java-agent-8.8.0.tgz

[root@node4 guanWang]# ls
RuoYi-Cloud  skywalking-agent

1、修改system连接数据库信息,信息都存储在nacos组件中,需要登录nacos修改ruoyi-system-dev.yml

ruoyi-system-dev.yml 。 注意cloud是与redis同级的 (配置sentinel的)

# spring配置
spring:
  redis:
    host: 192.168.79.35
    port: 6379
    password: 
  cloud:
     sentinel:
        eager: true
        transport: 
           dashboard: 192.168.79.35:8718   
  datasource:
    druid:
      stat-view-servlet:
        enabled: true
        loginUsername: admin
        loginPassword: 123456
    dynamic:
      druid:
        initial-size: 5
        min-idle: 5
        maxActive: 20
        maxWait: 60000
        timeBetweenEvictionRunsMillis: 60000
        minEvictableIdleTimeMillis: 300000
        validationQuery: SELECT 1 FROM DUAL
        testWhileIdle: true
        testOnBorrow: false
        testOnReturn: false
        poolPreparedStatements: true
        maxPoolPreparedStatementPerConnectionSize: 20
        filters: stat,slf4j
        connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
      datasource:
          # 主库数据源
          master:
            driver-class-name: com.mysql.cj.jdbc.Driver
            url: jdbc:mysql://192.168.79.35:3306/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
            username: root
            password: 123456
          # 从库数据源
          # slave:
            # username: 
            # password: 
            # url: 
            # driver-class-name: 
      # seata: true    # 开启seata代理,开启后默认每个数据源都代理,如果某个不需要代理可单独关闭

# seata配置
seata:
  # 默认关闭,如需启用spring.datasource.dynami.seata需要同时开启
  enabled: false
  # Seata 应用编号,默认为 ${spring.application.name}
  application-id: ${spring.application.name}
  # Seata 事务组编号,用于 TC 集群名
  tx-service-group: ${spring.application.name}-group
  # 关闭自动代理
  enable-auto-data-source-proxy: false
  # 服务配置项
  service:
    # 虚拟组和分组的映射
    vgroup-mapping:
      ruoyi-system-group: default
  config:
    type: nacos
    nacos:
      serverAddr: 127.0.0.1:8848
      group: SEATA_GROUP
      namespace:
  registry:
    type: nacos
    nacos:
      application: seata-server
      server-addr: 127.0.0.1:8848
      namespace:

# mybatis配置
mybatis:
    # 搜索指定包别名
    typeAliasesPackage: com.ruoyi.system
    # 配置mapper的扫描,找到所有的mapper.xml映射文件
    mapperLocations: classpath:mapper/**/*.xml

# swagger配置
swagger:
  title: 系统模块接口文档
  license: Powered By ruoyi
  licenseUrl: https://ruoyi.vip

启动ruoyi-system

#启动ruoyi-system
nohup java -javaagent:./skywalking-agent/skywalking-agent.jar \
-Dskywalking.agent.service_name=ruoyi-system \
-Dskywalking.collector.backend_service=192.168.79.35:11800 \
-Dspring.profiles.active=dev \
-Dspring.cloud.nacos.config.file-extension=yml \
-Dspring.cloud.nacos.discovery.server-addr=192.168.79.35:8848 \
-Dspring.cloud.nacos.config.server-addr=192.168.79.35:8848 \
-jar RuoYi-Cloud/ruoyi-modules/ruoyi-system/target/ruoyi-modules-system.jar &>/var/log/system.log &

ruoyi-system已注册到nacos:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.3 部署auth组件

1、修改auth连接redis信息,信息都存储在nacos组件中,需要登录nacos修改ruoyi-auth-dev.yml

ruoyi-auth-dev.yml

spring: 
  redis:
    host: 192.168.79.35
    port: 6379
    password: 
  cloud:
    sentinel:
      eager: true
      transport:
        dashboard: 192.168.79.35:8718

启动ruoyi-auth

#启动ruoyi-auth
nohup java -javaagent:./skywalking-agent/skywalking-agent.jar \
-Dskywalking.agent.service_name=ruoyi-auth \
-Dskywalking.collector.backend_service=192.168.79.35:11800 \
-Dspring.profiles.active=dev \
-Dspring.cloud.nacos.config.file-extension=yml \
-Dspring.cloud.nacos.discovery.server-addr=192.168.79.35:8848 \
-Dspring.cloud.nacos.config.server-addr=192.168.79.35:8848 \
-jar RuoYi-Cloud/ruoyi-auth/target/ruoyi-auth.jar &>/var/log/auth.log  &

4.4 部署gateway组件

1、修改gateway连接redis信息,信息都存储在nacos组件中,需要登录nacos修改ruoyi-gateway-dev.yml

ruoyi-gateway-dev.yml

spring:
  redis:
    host: 192.168.79.35
    port: 6379
    password: 
  cloud:
    sentinel:
      eager: true
      transport:
        dashboard: 192.168.79.35:8718
    gateway:
      discovery:
        locator:
          lowerCaseServiceId: true
          enabled: true
      routes:
        # 认证中心
        - id: ruoyi-auth
          uri: lb://ruoyi-auth
          predicates:
            - Path=/auth/**
          filters:
            # 验证码处理
            - CacheRequestFilter
            - ValidateCodeFilter
            - StripPrefix=1
        # 代码生成
        - id: ruoyi-gen
          uri: lb://ruoyi-gen
          predicates:
            - Path=/code/**
          filters:
            - StripPrefix=1
        # 定时任务
        - id: ruoyi-job
          uri: lb://ruoyi-job
          predicates:
            - Path=/schedule/**
          filters:
            - StripPrefix=1
        # 系统模块
        - id: ruoyi-system
          uri: lb://ruoyi-system
          predicates:
            - Path=/system/**
          filters:
            - StripPrefix=1
        # 文件服务
        - id: ruoyi-file
          uri: lb://ruoyi-file
          predicates:
            - Path=/file/**
          filters:
            - StripPrefix=1

# 安全配置
security:
  # 验证码
  captcha:
    enabled: true
    type: math
  # 防止XSS攻击
  xss:
    enabled: true
    excludeUrls:
      - /system/notice
  # 不校验白名单
  ignore:
    whites:
      - /auth/logout
      - /auth/login
      - /auth/register
      - /*/v2/api-docs
      - /csrf

启动ruoyi-gateway

nohup java -javaagent:./skywalking-agent/skywalking-agent.jar \
-Dskywalking.agent.service_name=ruoyi-gateway \
-Dskywalking.collector.backend_service=192.168.79.35:11800 \
-Dspring.profiles.active=dev \
-Dspring.cloud.nacos.config.file-extension=yml \
-Dspring.cloud.nacos.discovery.server-addr=192.168.79.35:8848 \
-Dspring.cloud.config.server-addr=192.168.79.35:8848 \
-jar RuoYi-Cloud/ruoyi-gateway/target/ruoyi-gateway.jar &>/var/log/gateway.log

备注:会一直报这个127.0.0.1:9848。但已注册到nacos 、sentinel 、skywalking。 可暂时忽略
在这里插入图片描述
后面已处理,详细看:https://blog.csdn.net/Nightwish5/article/details/130303765

4.5 部署gateway组件

1、修改monitor,信息都存储在nacos组件中,需要登录nacos修改ruoyi-monitor-dev.yml

# spring
spring: 
  security:
    user:
      name: ruoyi
      password: 123456
  boot:
    admin:
      ui:
        title: 若依服务状态监控

2、启动ruoyi-monitor

nohup java -javaagent:./skywalking-agent/skywalking-agent.jar  \
-Dskywalking.agent.service_name=ruoyi-monitor \
-Dskywalking.collector.backend_service=192.168.79.35:11800 \
-Dspring.profiles.active=dev \
-Dspring.cloud.nacos.config.file-extension=yml \
-Dspring.cloud.nacos.discovery.server-addr=192.168.79.35:8848 \
-Dspring.cloud.nacos.config.server-addr=192.168.79.35:8848 \
-jar RuoYi-Cloud/ruoyi-visual/ruoyi-monitor/target/ruoyi-visual-monitor.jar &>/var/log/monitor.log &

访问监控页面 192.168.79.34:9100
在这里插入图片描述

4.6 部署微服务前端UI

#安装nodejs , npm
sudo curl -sL -o /etc/yum.repos.d/khara-nodejs.repo  https://copr.fedoraproject.org/coprs/khara/nodejs/repo/epel-7/khara-nodejs-epel-7.repo
sudo yum install -y nodejs nodejs-npm

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

#安装nginx
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
sudo yum -y install nginx

1、修改配置

# 修改ui连接gateway地址
cd /root/k8sFile/project/danji-ruoyi/guanWang/RuoYi-Cloud/ruoyi-ui
vim vue.config.js

  // webpack-dev-server 相关配置
  devServer: {
    host: '0.0.0.0',
    port: port,
    open: true,
    proxy: {
      // detail: https://cli.vuejs.org/config/#devserver-proxy
      [process.env.VUE_APP_BASE_API]: {
        target: `http://192.168.79.34:8080`,
        changeOrigin: true,
        pathRewrite: {
          ['^' + process.env.VUE_APP_BASE_API]: ''
        }
      }
    },
    disableHostCheck: true
  },

2、编译项目

#注意 一定要进入对应的前端目录 。否则执行npm会报错
cd /root/k8sFile/project/danji-ruoyi/guanWang/RuoYi-Cloud/ruoyi-ui
[root@node4 ruoyi-ui]# ls
babel.config.js  bin  build  package.json  public  README.md  src  vue.config.js

npm install --registry=https://registry.npmmirror.com
npm run build:prod

3、拷贝编译后的代码至于Nginx站点目录

cd /root/k8sFile/project/danji-ruoyi/guanWang/RuoYi-Cloud/ruoyi-ui
[root@node4 ruoyi-ui]# ls dist/
favicon.ico  html  index.html  index.html.gz  robots.txt  static

mkdir -p /code
cp -r dist/* /code	

4、编写Nginx配置文件

[root@node4 conf.d]# cat ruoyi.oldxu.net.conf 
server {
	listen 20080;
	server_name ruoyi.oldxu.net;
	charset utf-8;
	root /code;
	location / {
		try_files $uri $uri/ /index.html;
		index index.html index.htm;
	}

	location /prod-api/ {
		proxy_set_header Host $http_host;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header REMOTE-HOST $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_pass http://192.168.79.84:8080/;
	}
}

5、打开浏览器,输入:http://192.168.79.34:20080 默认账户/密码admin/admin123

在这里插入图片描述
END

其他

#启动所有微服务脚本:
#!/bin/bash
cd /root/k8sFile/project/danji-ruoyi/guanWang
#1 ruoyi-system
nohup java -javaagent:./skywalking-agent/skywalking-agent.jar \
-Dskywalking.agent.service_name=ruoyi-system \
-Dskywalking.collector.backend_service=192.168.79.35:11800 \
-Dspring.profiles.active=dev \
-Dspring.cloud.nacos.config.file-extension=yml \
-Dspring.cloud.nacos.discovery.server-addr=192.168.79.35:8848 \
-Dspring.cloud.nacos.config.server-addr=192.168.79.35:8848 \
-jar RuoYi-Cloud/ruoyi-modules/ruoyi-system/target/ruoyi-modules-system.jar &>/var/log/system.log &
sleep 45 

#2 ruoyi-auth
nohup java -javaagent:./skywalking-agent/skywalking-agent.jar \
-Dskywalking.agent.service_name=ruoyi-auth \
-Dskywalking.collector.backend_service=192.168.79.35:11800 \
-Dspring.profiles.active=dev \
-Dspring.cloud.nacos.config.file-extension=yml \
-Dspring.cloud.nacos.discovery.server-addr=192.168.79.35:8848 \
-Dspring.cloud.nacos.config.server-addr=192.168.79.35:8848 \
-jar RuoYi-Cloud/ruoyi-auth/target/ruoyi-auth.jar &>/var/log/auth.log  &
sleep 45 

#3 gateway
nohup java -javaagent:./skywalking-agent/skywalking-agent.jar \
-Dskywalking.agent.service_name=ruoyi-gateway \
-Dskywalking.collector.backend_service=192.168.79.35:11800 \
-Dspring.profiles.active=dev \
-Dspring.cloud.nacos.config.file-extension=yml \
-Dspring.cloud.nacos.discovery.server-addr=192.168.79.35:8848 \
-Dspring.cloud.config.server-addr=192.168.79.35:8848 \
-jar RuoYi-Cloud/ruoyi-gateway/target/ruoyi-gateway.jar &>/var/log/gateway.log &

sleep 45 
#4 monitor
nohup java -javaagent:./skywalking-agent/skywalking-agent.jar  \
-Dskywalking.agent.service_name=ruoyi-monitor \
-Dskywalking.collector.backend_service=192.168.79.35:11800 \
-Dspring.profiles.active=dev \
-Dspring.cloud.nacos.config.file-extension=yml \
-Dspring.cloud.nacos.discovery.server-addr=192.168.79.35:8848 \
-Dspring.cloud.nacos.config.server-addr=192.168.79.35:8848 \
-jar RuoYi-Cloud/ruoyi-visual/ruoyi-monitor/target/ruoyi-visual-monitor.jar &>/var/log/monitor.log &

在这里插入图片描述

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

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

相关文章

排序 - 快速排序(Quick Sort)

文章目录 快速排序介绍快速排序实现快速排序时间复杂度和稳定性快速排序稳定性快速排序时间复杂度 代码实现核心&总结 快速排序介绍 它的基本思想是: 选择一个基准数&#xff0c;通过一趟排序将要排序的数据分割成独立的两部分&#xff1b;其中一部分的所有数据都比另外一…

使用QToolButton和QStackedWidget的侧边栏(SideBar)的实现与实现原理解析

使用QToolButton和QStackedWidget的侧边栏&#xff08;SideBar&#xff09;的实现与实现原理解析 原文链接&#xff1a;https://blog.csdn.net/qq153471503/article/details/128528072 Demo下载&#xff1a;https://gitee.com/jhuangBTT/QtSideBar 1、简介 侧边栏是一个很常用…

ModStartBlog v7.2.0 暗黑模式,超级搜索,富文本升级

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用&#xff0c;支持后台一键快速安装&#xff0c;让开发者能快的实现业务功能开发。 系统完全开源&#xff0c;基于 Apache 2.0 开源协议。 功能特性 丰富的模块市场&#xff0c;后台一键快速安装会…

Spring Security Ldap 登录认证流程的源码梳理

一、通过请求Controller开始登录认证 通过authenticationManager调用authenticate()方法开始登录认证&#xff0c;因为authenticationManager是通过Bean注入&#xff0c;因为SecurityLdapConfig是继承的WebSecurityConfigurerAdapter类&#xff0c;所以authenticationManager的…

【Unity+MySQL】实现注册登录系统(封装版)

目录 1 MySQL封装2 用户注册、登录方法封装3 Unity交互 接着 上篇文章的注册登录系统&#xff0c;这篇文章将MySQL相关操作封装&#xff0c;在Unity交互脚本中直接调用封装的方法。 1 MySQL封装 编写一个DBConnector脚本&#xff0c;封装MySQL中常用的操作&#xff0c;如连接…

【已解决】SpringBoot 工程 war包服务部署与调用测试

1.开发环境&#xff1a;IDEA&#xff0c;JDK1.8 2.服务打包类型&#xff1a; war包 3.war包部署环境&#xff1a;Linux系统&#xff0c;tomcat服务器&#xff0c;端口号&#xff1a;8081 4.war包部署位置&#xff1a;tomcat-8081/webapps/temp.war 5.服务名为&#xff1a;t…

Java版本企业电子招投标采购系统源码——功能模块功能描述+数字化采购管理 采购招投标

功能模块&#xff1a; 待办消息&#xff0c;招标公告&#xff0c;中标公告&#xff0c;信息发布 描述&#xff1a; 全过程数字化采购管理&#xff0c;打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力&#xff0c;为外部供…

Postman轻松签名,让SHA256withRSA保驾护航!

postman接口签名教程&#xff1a;https://www.bilibili.com/video/BV1r14y1A7MQ/? 目录&#xff1a;导读 前言 获取pmlib 引入依赖bundle.js&#xff0c;有以下两种方式&#xff1a; 使用Pre-request Script对请求进行加签(具体加签字段请看自己项目) 结语 前言 在接口测…

荔枝派Zero(全志V3S)开启alsa,测试codec

文章目录 前言一、ALSA 简介二、ALSA 框架三、buildroot 配置四、烧录到 SD 卡五、测试1、查看 CODEC 设备2、alsa-utils 使用①、查看设备②、调节音量③、查看控制器④、录音测试⑤、播放测试 前言 默认 dts 中使能了 codec 需要使用的话&#xff0c;在 buildroot 中勾选 a…

2023年五月份图形化四级打卡试题

活动时间 从2023年5月1日至5月21日&#xff0c;每天一道编程题。 本次打卡的规则如下&#xff1a; 小朋友每天利用10~15分钟做一道编程题&#xff0c;遇到问题就来群内讨论&#xff0c;我来给大家答疑。 小朋友做完题目后&#xff0c;截图到朋友圈打卡并把打卡的截图发到活动群…

开放式耳机有什么好处,盘点几款性能不错的开放式耳机

随着人们对生活质量要求的提高&#xff0c;大家在运动的时候都喜欢戴上耳机&#xff0c;享受运动的乐趣。但是传统耳机戴久了之后就会出现耳朵酸痛的情况&#xff0c;这是因为传统耳机佩戴方式是通过空气振动来传递声音&#xff0c;而人在运动时就会伴随着大量的汗水&#xff0…

基于ResNet-attention的负荷预测

一、attention机制 注意力模型最近几年在深度学习各个领域被广泛使用&#xff0c;无论是图像处理、语音识别还是自然语言处理的各种不同类型的任务中&#xff0c;都很容易遇到注意力模型的身影。从注意力模型的命名方式看&#xff0c;很明显其借鉴了人类的注意力机制。我们来看…

GB/T28181-2022相对2016版“基于TCP协议的视音频媒体传输要求“规范解读和技术实现

规范解读 GB/T28181-2022和GB/T28181-2016规范&#xff0c;有这么一条“更改了附录 D 基于 TCP 协议的视音频媒体传输要求&#xff08;见附录 D&#xff0c;2016 年版的附录 L&#xff09;。”。 本文主要是针对GB/T28181-2022里面提到的“基于 TCP 协议的视音频媒体传输要求…

chmod 命令 (chmod 0660)

chmod的作用: 用于设置文件所有者和文件关联组的命令,就是控制用户的权限命令 注意事项: chown 需要超级用户 root 的权限才能执行此命令。 自己常用chmod 命令是 chmod 777 * 给所有文件权限 chmod 777 文件名 给单独文件权限 这个777 是怎么来的, 或者chmod 0660 这…

Servlet路径问题(“/“到底代表什么)-“web应用程序的根目录“与“web站点的根目录“

JavaWeb——Servlet路径问题("/"到底代表什么) JavaWeb——Servlet路径问题("/"到底代表什么) 在JavaWeb中&#xff0c;使用路径时出现了大量的"/“&#xff0c;而每次使用”“时都感觉其代表的含义是不同的&#xff0c;因此&#xff0c;本篇文章将汇…

分布式ID解决方案对比

在复杂的分布式系统中&#xff0c;往往需要对大量的数据进行唯一标识&#xff0c;比如在对一个订单表进行了分库分表操作&#xff0c;这时候数据库的自增ID显然不能作为某个订单的唯一标识。除此之外还有其他分布式场景对分布式ID的一些要求&#xff1a; 趋势递增&#xff1a; …

(栈和队列) 232. 用栈实现队列 ——【Leetcode每日一题】

❓232. 用栈实现队列 难度&#xff1a;中等 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09;&#xff1a; 实现 MyQueue 类&#xff1a; void push(int x) 将元素 x 推到队列的末尾int pop() 从队列…

Jenkins之allure测试报告邮件通知

Jenkins入门教程&#xff1a;Jenkins入门 一般情况下&#xff0c;我们想让Jenkins将构建结果或构建中的代码执行结果&#xff08;比如跑批数据&#xff09;通知我们&#xff0c;这个是构建后的操作。 经常用的是邮件通知 邮件通知基础 Jenkins自带了邮件通知配置&#xff0c…

灌区信息化和灌区自动化监测方案

一、方案背景 以提升粮食综合生产能力和水资源高效利用作为现代化改造的目标&#xff0c;把国家粮食安全和节水放在首位&#xff1b;以完善灌区工程设施体系和管理体系作为现代化改造的基础&#xff0c;以现代信息技术应用、智慧灌区建设作为提高管理能力和服务水平的手段&…

windows 文件夹目录过长超过长度259字符 文件打不开

当路径超过260个字符时&#xff0c;Windows操作系统就无法处理文件或文件夹&#xff0c;并且无法打开或重命名。这是因为Windows系统使用的文件系统&#xff0c;即FAT和NTFS文件系统&#xff0c;都有最大路径限制。NTFS文件系统最大长度限制为32767个字符&#xff0c;但操作系统…