当前位置: 首页 > news >正文

银河麒麟系统项目部署

使用服务器信息

软件:VMware Workstation Pro

虚拟机:ubtun 内存:20G

虚拟机连接工具: MobaXterm

Redis连接工具: RedisDesktopManager

镜像:F:\Kylin-Server-10-8.2-Release-Build09-20211104-X86_64.iso

使用软件信息

Jdk: 1.8.0_151

Apache Tomcat: 8.5.20

Redis: 6.0.5

Nginx: 1.14.2

创建文件夹,将成为软件的安装位置
mkdir  /tools/

将安装包全部上传到/tools/文件夹下 安装包有(jdk1.8 tomcat8.5.30 mysql5.7 )

rz ...

1.安装配置jdk

解压安装包

[root@localhost tools]# tar -zxvf jdk-8u151-linux-x64.tar.gz

配置环境变量

[root@localhost tools]# vim /etc/profile

将jdk的环境变量粘贴在最后一行代码的下一行(写jdk的解压安装路径,我这里是/tools/

#java environment
export JAVA_HOME=/tools/jdk1.8.0_151
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

查看是否安装成功,首先刷新配置文件

[root@localhost tools]# source /etc/profile

查看版本(是否安装成功)

 
[root@localhost tools]# java -version

2.安装配置Tomcat

在/tools/目录下解压安装包

[root@localhost tools]# tar -zxvf apache-tomcat-8.5.20.tar.gz

进入解压好的文件夹

[root@localhost tools]# cd apache-tomcat-8.5.20/

进入配置文件

[root@localhost apache-tomcat-8.5.20]# cd conf/
[root@localhost conf]# vim server.xml

Host节点下添加

<Context docBase="" path="/" reloadable="true" source=""/>

2.1设置Tomcat自启动

进入本地目录

[root@localhost apache-tomcat-8.5.20]# cd /usr/lib/systemd/system

在这个目录下创建tomcat.service自启动配置文件

[root@localhost system]# vi tomcat.service

[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target remote-fs.target nss-lookup.target[Service]
Type=forking
Environment='JAVA_HOME=/lky/jdk1.8.0_151'
Environment='CATALINA_PID=/lky/apache-tomcat-8.5.20/tomcat.pid'
Environment='CATALINA_HOME=/lky/apache-tomcat-8.5.20/'
Environment='CATALINA_BASE=/lky/apache-tomcat-8.5.20/'
#Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'PIDFile=/lky/apache-tomcat-8.5.20/tomcat.pid
ExecStart=/lky/apache-tomcat-8.5.20/bin/catalina.sh start
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true[Install]
WantedBy=multi-user.target

将里面的tomcat安装位置改成我们的安装目录 lky改成/tools/(tomcat解压安装目录)

设置自启动

[root@localhost system]# systemctl enable tomcat

重载服务

[root@localhost system]# systemctl daemon-reload

重启服务

[root@localhost system]# systemctl restart tomcat

查看服务状态

[root@localhost system]# systemctl status tomcat

设置自启成功

2.2双节点配置

进入安装目录

[root@localhost system]# cd /tools/

复制一个tomcat02

[root@localhost tools]# cp -R apache-tomcat-8.5.20 tomcat02

进入tomcat02文件夹的配置文件

[root@localhost tools]# cd tomcat02/

进入配置文件夹conf

[root@localhost tomcat02]# cd conf/

修改配置文件夹,修改端口号,不然会与tomcat01端口冲突

[root@localhost conf]# vim server.xml

8005改成8006

8080改成8081

8009改成8010

修改server.xmlHost节点下添加(若依配置)

<Context docBase="" path="/" reloadable="true" source=""/>

进入tomcat02运行目录启动服务

[root@localhost conf]# cd ../bin/

启动服务

[root@localhost bin]# ./startup.sh

开放tomcat端口,两个端口号 8080 8081

[root@localhost bin]# firewall-cmd --zone=public --add-port=8080/tcp --permanent
[root@localhost bin]# firewall-cmd --zone=public --add-port=8081/tcp --permanent

刷新防火墙

[root@localhost bin]# firewall-cmd --reload

网页测试tomcat是否可以访问

虚拟机ip+端口号

访问成功,部署我们的后端war包

进入tomcat01部署项目目录webapps

[root@localhost bin]# cd /tools/apache-tomcat-8.5.20/webapps/

上传war包

rz ...

 

刷新webapps目录,tomcat是自启动的,war包自动解压

进入解压文件夹

[root@localhost webapps]# cd ruoyi-admin/

进入配置目录WEB-INF/classes/

[root@localhost ruoyi-admin]# cd WEB-INF/classes/

配置前面两个yml文件

[root@localhost classes]# vim application.yml

给redis上密码123456()

[root@localhost classes]# vim application-druid.yml

记住下面配置文件的数据库名字和数据库密码,我们安装MySQL时根据以下(数据库名字及密码)要求进行安装配置

接下来配置tomcat02,配置操作和tomcat01配置一样

进入安装目录

[root@localhost classes]# cd /tools/tomcat02/

进入软件部署目录

[root@localhost tomcat02]# cd webapps/

上传war包

rz ...

因为不是自启动,所有需要关闭在重启服务

[root@localhost webapps]# cd ../bin/
[root@localhost bin]# ./shutdown.sh
[root@localhost bin]# ./startup.sh

在进入软件部署文件

[root@localhost bin]# cd ../webapps/

进入解压好的文件夹

[root@localhost webapps]# cd ruoyi-admin/

进入配置文件目录

[root@localhost ruoyi-admin]# cd WEB-INF/classes/

修改两个配置文件

记得数据库密码,数据库名字,待会安装好mysql了,根据需求建库建表

记得把localhost改成我们虚拟机的ip

给redis加上密码,我们待会安装redis会有密码

[root@localhost classes]# vim application.yml

tomcat双击点安装配置完成

3.安装配置MySQL

回到安装目录

[root@localhost classes]# cd /tools/

测试是否有数据库,有的话删掉重新安装配置

.卸载mariadb,否则安装MySql会出现冲突(先查看后删除再查看)

[root@localhost tools]# rpm -qa|grep mariadb
mariadb-libs-5.5.64-1.el7.x86_64
[root@localhost tools]# rpm -e --nodeps mariadb-libs-5.5.64-1.el7.x86_64
[root@localhost tools]# rpm -qa|grep mariadb
[root@localhost tools]#

解压安装包

[root@localhost tools]# tar -xvf mysql-5.7.35-1.el7.x86_64.rpm-bundle.tar

开始安装,-ivh 其中i表示安装,v表示显示安装过程,h表示显示进度

rpm -ivh mysql-community-common-5.7.35-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.35-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.35-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.35-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.35-1.el7.x86_64.rpm --nodeps

如果报错,后面加上 --nodeps就可以成功下载了

登录会失败(运行下面语句)

yum -y install libncurses*
ln -s libncurses.so.6.2 libncurses.so.5
ln -s libtinfo.so.6.2 libtinfo.so.5

启动MySQL服务

[root@localhost tools]# systemctl start mysqld

登录mysql修改密码

[root@localhost tools]# grep "password" /var/log/mysqld.log
2024-06-04T03:43:11.914850Z 1 [Note] A temporary password is generated for root@localhost: Z?g>-Htd5l!h
[root@localhost tools]# mysql -uroot -p
Enter password: Z?g>-Htd5l!h

登录成功

登录进来什么都不要做,优先改密码

#设置密码校验策略,要不密码太简单不让你过

set global validate_password_policy=0;

#设置密码校验长度,要不密码太短不让你过(多次测试发现密码最小长度为4位)

set global validate_password_length=4;

#更新密码

set password = password("123456");

授予权限

 
grant all on *.* to root@'%' identified by '123456';

刷新权限

FLUSH PRIVILEGES;

创建数据库,根据上面配置文件创建数据库

mysql>
mysql> create database xmg;
Query OK, 1 row affected (0.00 sec)

进入数据库

mysql> use xmg;
Database changed
mysql>

脚本上传到安装目录 rz (此操作退出mysql容器)

导入sql脚本数据

mysql> use xmg;
Database changed
mysql> source /tools/medical(完整版,但是数据表未整理).sql

查看数据库

退出MySQL 输入命令 exit

如果我们把这些配置安装在不同的服务器上,切记一定要开放端口3306

firewall-cmd --zone=public --add-port=3306/tcp --permanent

刷新运行代码

firewall-cmd --reload

firewall-cmd --reload

查看

firewall-cmd --list-ports

4.安装配置redis

进入tools目录

下载

wget https://download.redis.io/releases/redis-6.0.5.tar.gz

创建redis目录

[root@localhost tools]# mkdir /usr/local/redis

解压下载好的安装包

[root@localhost tools]# tar -zvxf redis-6.0.5.tar.gz -C /usr/local/redis

由于redis是c语言编写的,所以我们需要先安装gcc

yum install gcc-c++

编译make,此时安装的gcc版本过低,升级一下

[root@localhost redis-6.0.1]# gcc -v                             # 查看gcc版本
[root@localhost redis-6.0.1]# yum -y install centos-release-scl  # 升级到9.1版本
[root@localhost redis-6.0.1]# yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
[root@localhost redis-6.0.1]# scl enable devtoolset-9 bash

在进入进入redis-6.2.1目录下编译

make && make install

编译成功

编辑配置文件

[root@localhost redis-6.0.5]# vi redis.conf

no改成yes

yes改成no(因为需要远程连接) ------此步骤可以忽略

注释这一行

删除注释,给上密码(根据war包里面的配置文件设置密码)

进入bin目录

[root@localhost redis-6.0.5]# cd /usr/local/bin/
设置redis自启动
[root@localhost bin]# cd /usr/lib/systemd/system

新建一个配置文件

[root@localhost system]# vi redis.service

将以下代码复制进去

[Unit]
Description=Redis
After=syslog.target network.target remote-fs.target nss-lookup.target[Service]
Type=forking
ExecStart=/lky/redis-5.0.0/src/redis-server /lky/redis-5.0.0/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID 
ExecStop=/bin/kill -s QUIT $MAINPID 
PrivateTmp=true[Install]
WantedBy=multi-user.target

复制路径,放在/redis前面

进入bin目录复制路径

[root@localhost tools]# cd /usr/local/bin/
[root@localhost bin]# pwd
/usr/local/bin
[root@localhost bin]#

复制路径

[root@localhost bin]# cd /usr/local/redis/redis-6.0.5/
[root@localhost redis-6.0.5]# pwd
/usr/local/redis/redis-6.0.5
[root@localhost redis-6.0.5]#

修改好,刷新

# 重载服务

systemctl daemon-reload

# 自启动服务

systemctl enable redis

# 启动服务

systemctl start redis

# 停止服务

systemctl stop redis

# 重启服务

systemctl restart redis

查看进程

[root@localhost redis-6.0.5]# ps -ef | grep redis

一定要关掉进程

[root@localhost redis-6.0.5]# kill -9 13390

# 重载服务

systemctl daemon-reload

# 启动服务

systemctl start redis

# 停止服务

systemctl stop redis

# 重启服务

systemctl restart redis

开发端口6379(切记)

firewall-cmd --zone=public --add-port=6379/tcp --permanent

刷新防火墙

firewall-cmd --reload

5.安装配置nginx

回到软件安装目录

[root@localhost redis-6.0.5]# cd /tools/

下载gcc(下载redis时已经下载好了可以省略这一步)

yum install -y gcc
 yum install nginx

下载nginx(可以省略)

rpm -Uvh http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.14.2-1.el7_4.ngx.x86_64.rpm

配置反向代理,负载均衡,静态资源

进入nginx下载目录

[root@localhost tools]# cd /etc/nginx/

进入配置文件目录

[root@localhost nginx]# cd conf.d/
[root@localhost conf.d]# ls
default.conf
[root@localhost conf.d]#
[root@localhost conf.d]# vim default.conf

如果没有上面配置文件,我们新建也是一样的(或者上传)rz ...

6.配置负载均衡

加入tomcat双节点

upstream  tomcats{
server   192.168.85.147:8080  weight=1;
server   192.168.85.147:8081  weight=2;
}

localhost改成我们前端给的域名(我这里是www.zking.xmg)

6.1配置反向代理
location  ^~/api/ {
proxy_pass http://tomcats/ruoyi-admin/;
}
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://tomcats/ruoyi-admin/;}

6.2配置静态文件

复制root路径

进入静态文件路径,将我们的静态文件放进去

[root@localhost conf.d]# cd /usr/share/nginx/html/

将这个目录下的文件全部删除,上传dist静态文件

[root@localhost html]# rm -rf *

rz ...

dist目录的文件夹下新建WEB-INF文件夹,并在里面添加web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"version="3.1" metadata-complete="true"><display-name>Router for Tomcat</display-name><error-page><error-code>404</error-code><location>/index.html</location></error-page>
</web-app>

开发端口80(切记)

firewall-cmd --zone=public --add-port=80/tcp --permanent

刷新防火墙

firewall-cmd --reload

启动nginx

[root@localhost nginx]# systemctl start nginx

查看状态

[root@localhost nginx]# systemctl status nginx

setenforce是Linux的selinux的防火墙配置命令,需要关闭

运行

setenforce 0

如果保持查看日志,在修改配置文件在重启服务nginx

tail -f /var/log/nginx/error.log
7.本机配置域名

路径

C:\Windows\System32\drivers\etc

host文件添加域名如下 虚拟机ip + 域名

192.168.85.147 www.zking.xmg

访问ip(部署成功页面,登录成功)

访问域名(部署成功页面,登陆成功)

相关文章:

银河麒麟系统项目部署

使用服务器信息 软件&#xff1a;VMware Workstation Pro 虚拟机&#xff1a;ubtun 内存&#xff1a;20G 虚拟机连接工具&#xff1a; MobaXterm Redis连接工具&#xff1a; RedisDesktopManager 镜像&#xff1a;F:\Kylin-Server-10-8.2-Release-Build09-20211104-X86_64…...

Stable Diffusion【应用篇】【艺术写真】:粘土风之后陶瓷风登场,来看看如何整合AI艺术写真吧

在国外的APP Remini引爆了粘土滤镜后&#xff0c;接着Remini又推出了瓷娃娃滤镜。相当粘土滤镜&#xff0c;个人更喜欢瓷娃娃滤镜&#xff0c;因为陶瓷工艺更符合东方艺术审美。 下面我们就来看看陶瓷特效在AI写真方面的应用。话不多说&#xff0c;我们直接开整。 关于粘土整…...

手机IP地址距离多远会变:解析移动设备的网络定位奥秘

在移动互联网时代&#xff0c;手机IP地址扮演着至关重要的角色&#xff0c;它不仅是我们访问网络的基础&#xff0c;还常常与网络定位、地理位置服务等相关联。那么&#xff0c;手机IP地址在距离多远时会发生变化呢&#xff1f;手机IP地址距离多远会变&#xff1f;下面跟着虎观…...

ChatGPT中文镜像网站分享

ChatGPT 是什么&#xff1f; ChatGPT 是 OpenAI 开发的一款基于生成预训练变换器&#xff08;GPT&#xff09;架构的大型语言模型。主要通过机器学习生成文本&#xff0c;能够执行包括问答、文章撰写、翻译等多种文本生成任务。截至 2023 年初&#xff0c;ChatGPT 的月活跃用户…...

碳化硅陶瓷膜良好的性能

碳化硅陶瓷膜是一种高性能的陶瓷材料&#xff0c;以其独特的物理和化学特性&#xff0c;在众多领域展现出了广泛的应用前景。以下是对碳化硅陶瓷膜的详细介绍&#xff1a; 一、基本特性 高强度与高温稳定性&#xff1a;碳化硅陶瓷膜是一种非晶态陶瓷材料&#xff0c;具有极高的…...

每日一题——Python实现PAT乙级1028 人口普查 Keyboard(举一反三+思想解读+逐步优化)六千字好文

一个认为一切根源都是“自己不够强”的INTJ 个人主页&#xff1a;用哲学编程-CSDN博客专栏&#xff1a;每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 题目链接​编辑我的写法 专业点评 时间复杂度分析 空间复杂度分析 总结 我要更强…...

小程序 UI 风格,构建美妙视觉

小程序 UI 风格&#xff0c;构建美妙视觉...

使用Python在VMware虚拟机中模拟Ubuntu服务器搭建网站

在此之前可以先使用VS Code连接到虚拟机&#xff1a;Visual Studio Code连接VMware虚拟机-CSDN博客 安装Web服务器Apache sudo apt-get install apache2 在个别情况下需要对Apache服务器的配置文件进行调整&#xff1a; 打开etc路径下的apache2文件夹&#xff0c;根据端口…...

腾讯测试开发<ieg 实验室>

3.26 40min 自我介绍实习经历有无遇到什么难点&#xff0c;你是如何克服的在这个项目中你大概做了多少个测试用例&#xff0c;这么多测试用例你平时用什么工具进行管理的&#xff0c;每一次跑全部还是每次只跑一部分现在假设给你一个新的项目&#xff0c;需要你这边去做测试&a…...

windows命令帮助大全

有关某个命令的详细信息&#xff0c;请键入 HELP 命令名 ASSOC 显示或修改文件扩展名关联。 ATTRIB 显示或更改文件属性。 BREAK 设置或清除扩展式 CTRLC 检查。 BCDEDIT 设置启动数据库中的属性以控制启动加载。 CACLS 显示或修改文件的访问控制列表(ACL)。 CALL 从另一个批处…...

pytest中失败用例重跑

pip install pytest-rerunfailures 下载rerunfailures插件包 配置文件中加入命令 --reruns 次数 也可在命令行中pytest --rerun-failures2 可以在allure报告中看到重试效果...

http穿透怎么做?

众所周知http协议的默认端口是80&#xff0c;由于国家工信部要求&#xff0c;域名必须备案才给开放80端口&#xff0c;而备案需要固定公网IP&#xff0c;这就使得开放http80端口的费用成本和时间成本变的很高。那么能不能利用内网穿透技术做http穿透呢&#xff1f;下面我就给大…...

前端技术回顾系列 11|TS 中一些实用概念

在微信中阅读,关注公众号:CodeFit。 创作不易,如果你觉得这篇文章对您有帮助,请不要忘了 点赞、分享 和 关注 我的公众号:CodeFit,为我的持续创作提供动力。 上文回顾:泛型在类和接口中的应用 上一篇文章我们回顾了 泛型 在 类 和 接口 中的应用。 通过使用泛型,我们…...

leetcode LRU 缓存

leetcode: LRU 缓存 LRU 全称为 Least Recently Used&#xff0c;最近最少使用&#xff0c;常常用于缓存机制&#xff0c;比如 cpu 的 cache 缓存&#xff0c;使用了 LRU 算法。LRU 用于缓存机制时&#xff0c;关键的是当缓存满的时候有新数据需要加载到缓存的&#xff0c;这个…...

LeetCode 2786.访问数组中的位置使分数最大:奇偶分开记录(逻辑还算清晰的题解)

【LetMeFly】2786.访问数组中的位置使分数最大&#xff1a;奇偶分开记录&#xff08;逻辑还算清晰的题解&#xff09; 力扣题目链接&#xff1a;https://leetcode.cn/problems/visit-array-positions-to-maximize-score/ 给你一个下标从 0 开始的整数数组 nums 和一个正整数 …...

嵌入式仪器模块:音频综测仪和自动化测试软件

• 24 位分辨率 • 192 KHz 采样率 • 支持多种模拟/数字音频信号的输入/输出 应用场景 • 音频信号分析&#xff1a;幅值、频率、占空比、THD、THDN 等指标 • 模拟音频测试&#xff1a;耳机、麦克风、扬声器测试&#xff0c;串扰测试 • 数字音频测试&#xff1a;平板电…...

计算商场折扣 、 判断体重指数 题目

题目 JAVA5 计算商场折扣分析&#xff1a;代码&#xff1a; JAVA6 判断体重指数分析&#xff1a;代码&#xff1a;大佬代码&#xff1a; JAVA5 计算商场折扣 描述 牛牛商场促销活动&#xff1a; 满100全额打9折&#xff1b; 满500全额打8折&#xff1b; 满2000全额打7折&…...

input输入框禁止输入小数点方法

使用blur事件&#xff1a; <el-input v-model"number" type"number" placeholder"请输入" blur"numberBlur" /> 第一种&#xff1a; 使用parseInt转为整数&#xff1a; this.number parseInt(this.number);第二种&#xff…...

使用adb通过wifi连接手机

1&#xff0c;手机打开开发者模式&#xff0c;打开无线调试 2&#xff0c;命令行使用adb命令配对&#xff1a; adb pair 192.168.0.102:40731 输入验证码&#xff1a;422859 3&#xff0c;连接设备&#xff1a; adb connect 192.168.0.102:36995 4&#xff0c;查看连接状态:…...

如何一键拷贝PPT中的所有文字?

有时我们可能需要引用PPT的文字&#xff0c;但一个幻灯片一个幻灯片拷贝很是麻烦&#xff0c;我们想一键拷贝PPT中所有幻灯片中的内容&#xff08;最近我就遇到了这个需求&#xff09;。今天就来讲讲这个一键拷贝的技巧。因为大家可能会遇到同样的问题&#xff0c;所以在此记录…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

FFmpeg avformat_open_input函数分析

函数内部的总体流程如下&#xff1a; avformat_open_input 精简后的代码如下&#xff1a; int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...

AD学习(3)

1 PCB封装元素组成及简单的PCB封装创建 封装的组成部分&#xff1a; &#xff08;1&#xff09;PCB焊盘&#xff1a;表层的铜 &#xff0c;top层的铜 &#xff08;2&#xff09;管脚序号&#xff1a;用来关联原理图中的管脚的序号&#xff0c;原理图的序号需要和PCB封装一一…...

倒装芯片凸点成型工艺

UBM&#xff08;Under Bump Metallization&#xff09;与Bump&#xff08;焊球&#xff09;形成工艺流程。我们可以将整张流程图分为三大阶段来理解&#xff1a; &#x1f527; 一、UBM&#xff08;Under Bump Metallization&#xff09;工艺流程&#xff08;黄色区域&#xff…...

基于单片机的宠物屋智能系统设计与实现(论文+源码)

本设计基于单片机的宠物屋智能系统核心是实现对宠物生活环境及状态的智能管理。系统以单片机为中枢&#xff0c;连接红外测温传感器&#xff0c;可实时精准捕捉宠物体温变化&#xff0c;以便及时发现健康异常&#xff1b;水位检测传感器时刻监测饮用水余量&#xff0c;防止宠物…...

ArcPy扩展模块的使用(3)

管理工程项目 arcpy.mp模块允许用户管理布局、地图、报表、文件夹连接、视图等工程项目。例如&#xff0c;可以更新、修复或替换图层数据源&#xff0c;修改图层的符号系统&#xff0c;甚至自动在线执行共享要托管在组织中的工程项。 以下代码展示了如何更新图层的数据源&…...