Docker-Compose构建lnmp

news2024/11/16 15:40:52

目录

    • 实验前准备
    • 安装compose
    • Nginx
      • 准备工作目录
      • 准备Dockerfile脚本
      • 准备nginx.conf
    • Mysql
      • 准备工作目录
      • 编写Dockerfile脚本
      • 准备my.cnf
    • PHP
      • 准备工作目录
      • 准备相关文件
    • 编写docker-compose.yml配置文件
    • 目录结构
    • 启动
    • 测试
      • Mysql授权
      • 测试
    • 问题
      • Mysql容器无权访问问题
      • 浏览器访问file not found问题

实验前准备

宿主机:192.168.188.17,安装docker、docker-compose
准备以下压缩包和配置文件nginx-1.12.0.tar.gz、wordpress-4.9.4-zh_CN.tar.gz、nginx.conf、mysql-boost-5.7.20.tar.gz、my.cnf、php-7.1.10.tar.bz2、php-fpm.conf、php.ini、www.conf

安装compose

curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-uname -s-uname -m -o /usr/local/bin/docker-compose
这个下得很慢,自己想办法搞一份也行,把它放到/usr/local/bin/目录下
cp /opt/docker-compose /usr/local/bin/
chmod +x /usr/local/bin/docker-compose
可以看一下版本检查能不能用
docker-compose --version
在这里插入图片描述

Nginx

准备工作目录

mkdir -p /opt/compose_lnmp/compose_nginx/nginx
cp /opt/nginx-1.12.0.tar.gz /opt/compose_lnmp/compose_nginx/nginx/
cp /opt/wordpress-4.9.4-zh_CN.tar.gz /opt/compose_lnmp/compose_nginx/nginx/

准备Dockerfile脚本

vim /opt/compose_lnmp/compose_nginx/nginx/Dockerfile

FROM centos:7
MAINTAINER this is nginx image <lnmp>
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make;useradd -M -s /sbin/nologin nginx
ADD nginx-1.12.0.tar.gz /usr/local/src/
WORKDIR /usr/local/src/nginx-1.12.0
RUN ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module;make -j 4 && make install
ENV PATH /usr/local/nginx/sbin:$PATH
ADD nginx.conf /usr/local/nginx/conf/
ADD wordpress-4.9.4-zh_CN.tar.gz /usr/local/nginx/html
RUN chmod 777 -R /usr/local/nginx/html/
EXPOSE 80
VOLUME [ "/usr/local/nginx/html/" ]
CMD [ "/usr/local/nginx/sbin/nginx","-g","daemon off;" ]

Dockerfile的解释如下

#基础镜像
FROM centos:7
#维护者信息
MAINTAINER this is nginx image <lnmp>
#安装依赖包,并且添加nginx用户
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make;useradd -M -s /sbin/nologin nginx
#将Dockerfile所在目录下的nginx-1.12.0.tar.gz压缩包添加到容器中/usr/local/src/的目录下(会自动解压)
ADD nginx-1.12.0.tar.gz /usr/local/src/
#进入容器的/usr/local/src/nginx-1.12.0目录
WORKDIR /usr/local/src/nginx-1.12.0
#编译安装
RUN ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module;make -j 4 && make install
#添加环境变量
ENV PATH /usr/local/nginx/sbin:$PATH
#将Dockerfile所在目录下的nginx.conf配置文件添加到容器中/usr/local/nginx/conf/的目录下
ADD nginx.conf /usr/local/nginx/conf/
#将Dockerfile所在目录下的wordpress-4.9.4-zh_CN.tar.gz添加到容器中/usr/local/nginx/html/的目录下(自动解压)
ADD wordpress-4.9.4-zh_CN.tar.gz /usr/local/nginx/html
#为/usr/local/nginx/html/赋权
RUN chmod 777 -R /usr/local/nginx/html/
#映射的容器端口
EXPOSE 80
#允许被挂载的目录
VOLUME [ "/usr/local/nginx/html/" ]
#开启容器后执行的命令
CMD [ "/usr/local/nginx/sbin/nginx","-g","daemon off;" ]

准备nginx.conf

搞一份nginx.conf配置文件
cp /opt/nginx.conf /opt/compose_lnmp/compose_nginx/nginx/
主要是增加一个动态页面的location块,这里的IP要写PHP服务的容器ip
在这里插入图片描述
主要配置代码以及少量解释

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        charset utf-8;
        location / {
            root   html;
            #这里要写index.php
            index  index.html index.php;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        location ~ \.php$ {
            root           html;
	    #这个ip和端口就是php容器的ip和服务端口
            fastcgi_pass   172.20.0.30:9000;
            fastcgi_index  index.php;
	    #$fastcgi_script_name类似于外部变量,你在浏览器访问时输的uri是什么这里就是什么
            fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
}

Mysql

准备工作目录

mkdir -p /opt/compose_lnmp/compose_mysql/mysql
cp mysql-boost-5.7.20.tar.gz /opt/compose_lnmp/compose_mysql/mysql/

编写Dockerfile脚本

vim /opt/compose_lnmp/compose_mysql/mysql/Dockerfile

FROM centos:7
MAINTAINER this is mysql images <lnmp>
RUN yum -y install ncurses ncurses-devel bison cmake pcre-devel zlib-devel gcc gcc-c++ make;useradd -M -s /sbin/nologin mysql
ADD mysql-boost-5.7.20.tar.gz /usr/local/src/
WORKDIR /usr/local/src/mysql-5.7.20/
RUN cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8  \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1;make -j4;make install
ADD my.cnf /etc/my.cnf
EXPOSE 3306
RUN chown -R mysql:mysql /usr/local/mysql/;chown mysql:mysql /etc/my.cnf
WORKDIR /usr/local/mysql/bin/
RUN ./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data;cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/;systemctl enable mysqld
ENV PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
VOLUME [ "/usr/local/mysql" ]
CMD [ "/usr/sbin/init" ]

Dockerfile解释

#基础镜像
FROM centos:7
#维护者信息
MAINTAINER this is mysql images <lnmp>
#安装依赖包,添加mysql用户
RUN yum -y install ncurses ncurses-devel bison cmake pcre-devel zlib-devel gcc gcc-c++ make;useradd -M -s /sbin/nologin mysql
#向容器的/usr/local/src/目录添加mysql-boost-5.7.20.tar.gz压缩包(自动解压)
ADD mysql-boost-5.7.20.tar.gz /usr/local/src/
#进入这个目录
WORKDIR /usr/local/src/mysql-5.7.20/
#编译安装
RUN cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8  \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1;make -j4;make install
#向容器的/etc/my.cnf目录添加my.cnf
ADD my.cnf /etc/my.cnf
#映射端口
EXPOSE 3306
#改变所属用户
RUN chown -R mysql:mysql /usr/local/mysql/;chown mysql:mysql /etc/my.cnf
#进入这个目录
WORKDIR /usr/local/mysql/bin/
#初始化mysql数据库
RUN ./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data;cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/;systemctl enable mysqld
#添加环境变量
ENV PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
#允许挂载的目录
VOLUME [ "/usr/local/mysql" ]
#容器启动后执行
CMD [ "/usr/sbin/init" ]

准备my.cnf

搞一份my.cnf配置文件
cp /opt/my.cnf /opt/compose_lnmp/compose_mysql/mysql/
my.cnf里设置大概如下

[client]
port = 3306
socket=/usr/local/mysql/mysql.sock

[mysql]
port = 3306
socket = /usr/local/mysql/mysql.sock
auto-rehash

[mysqld]
user = mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306
character-set-server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket=/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
server-id = 1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

PHP

准备工作目录

mkdir -p /opt/compose_lnmp/compose_php/php
cp /opt/php-7.1.10.tar.bz2 /opt/compose_lnmp/compose_php/php/
编写Dockerfile脚本
vim /opt/compose_lnmp/compose_php/php/Dockerfile

FROM centos:7
MAINTAINER this is php image <lnmp>
RUN yum install -y gd \
libjpeg libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel \
gcc gcc-c++ make pcre-devel;useradd -M -s /sbin/nologin nginx
ADD php-7.1.10.tar.bz2 /usr/local/src/
WORKDIR /usr/local/src/php-7.1.10
RUN ./configure \
--prefix=/usr/local/php \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip ; make -j 4 ; make install
ENV PATH /usr/local/php/bin:/usr/local/php/sbin:$PATH
ADD php.ini /usr/local/php/lib/
ADD php-fpm.conf /usr/local/php/etc/
ADD www.conf /usr/local/php/etc/php-fpm.d/
EXPOSE 9000
CMD /usr/local/php/sbin/php-fpm -F

Dockerfile解释

#基础镜像
FROM centos:7
#维护者信息
MAINTAINER this is php image <lnmp>
#安装依赖包
RUN yum install -y gd \
libjpeg libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel \
gcc gcc-c++ make pcre-devel;useradd -M -s /sbin/nologin nginx
#向容器的/usr/local/src/目录添加php-7.1.10.tar.bz2 压缩包(自动解压)
ADD php-7.1.10.tar.bz2 /usr/local/src/
#进入这个目录
WORKDIR /usr/local/src/php-7.1.10
#编译安装
RUN ./configure \
--prefix=/usr/local/php \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip ; make -j 4 ; make install
#添加环境变量
ENV PATH /usr/local/php/bin:/usr/local/php/sbin:$PATH
#向容器的/usr/local/php/lib/目录添加php.ini
ADD php.ini /usr/local/php/lib/
#向容器的/usr/local/php/etc/目录添加php-fpm.conf
ADD php-fpm.conf /usr/local/php/etc/
##向容器的/usr/local/php/etc/php-fpm.d/目录添加www.conf
ADD www.conf /usr/local/php/etc/php-fpm.d/
#映射端口
EXPOSE 9000
#容器启动后执行的命令
CMD /usr/local/php/sbin/php-fpm -F

准备相关文件

cp /opt/php.ini /opt/compose_lnmp/compose_php/php/
vim /opt/compose_lnmp/compose_php/php/php.ini
进行如下修改
取消注释,修改时区
在这里插入图片描述
修改套接字路径
在这里插入图片描述
cp /opt/php-fpm.conf /opt/compose_lnmp/compose_php/php/
vim /opt/compose_lnmp/compose_php/php/php-fpm.conf
php-fpm.conf需要进行如下修改
取消注释
在这里插入图片描述
cp /opt/www.conf /opt/compose_lnmp/compose_php/php/
vim /opt/compose_lnmp/compose_php/php/www.conf
www.conf需要进行如下修改
修改用户和组
在这里插入图片描述
修改监听ip和端口
在这里插入图片描述

编写docker-compose.yml配置文件

这里坑很多,如果要自己修改,建议看懂了再改

version: '3'
services:
 nginx:
  container_name: nginx
  hostname: nginx
  build:
   context: /opt/compose_lnmp/compose_nginx/nginx
   dockerfile: Dockerfile
  ports:
   - 1216:80
   - 1217:443
  privileged: true
  networks:
   lnmp:
    ipv4_address: 172.20.0.10
  volumes:
   - nginx-data:/usr/local/nginx/html/wordpress
 mysql:
  container_name: mysql
  hostname: mysql
  build:
   context: /opt/compose_lnmp/compose_mysql/mysql
   dockerfile: Dockerfile
  ports:
   - 1226:3306
  privileged: true
  networks:
   lnmp:
    ipv4_address: 172.20.0.20
 php:
  container_name: php
  hostname: php
  build:
   context: /opt/compose_lnmp/compose_php/php
   dockerfile: Dockerfile
  ports:
   - 1236:9000
  privileged: true
  networks:
   lnmp:
    ipv4_address: 172.20.0.30
  volumes:
   - nginx-data:/usr/local/nginx/html/wordpress
   - mysql-data:/usr/local/mysql/
volumes:
 nginx-data:
 mysql-data:
networks:
 lnmp:
  driver: bridge
  ipam:
   config:
    - subnet: 172.20.0.0/16

解释如下

#语法版本,这个版本不一样可能会有一定影响
version: '3'
services:
#nginx的配置
 nginx:
#容器名
  container_name: nginx
#主机名
  hostname: nginx
#用来指定dockerfile的模块
  build:
#dockerfile的路径
   context: /opt/compose_lnmp/compose_nginx/nginx
#dockerfile的名字
   dockerfile: Dockerfile
#端口映射,前面是宿主机的端口,后面是容器端口
  ports:
   - 1216:80
   - 1217:443
#给容器root权限
  privileged: true
#网络相关
  networks:
   lnmp:
    ipv4_address: 172.20.0.10
#将nginx-data挂载到nginx容器的/usr/local/nginx/html/wordpress
  volumes:
   - nginx-data:/usr/local/nginx/html/wordpress
#mysql配置
 mysql:
  container_name: mysql
  hostname: mysql
  build:
   context: /opt/compose_lnmp/compose_mysql/mysql
   dockerfile: Dockerfile
  ports:
   - 1226:3306
  privileged: true
  networks:
   lnmp:
    ipv4_address: 172.20.0.20
#php的配置
 php:
  container_name: php
  hostname: php
  build:
   context: /opt/compose_lnmp/compose_php/php
   dockerfile: Dockerfile
  ports:
   - 1236:9000
  privileged: true
  networks:
   lnmp:
    ipv4_address: 172.20.0.30
#将nginx-data挂载到/usr/local/nginx/html/wordpress,将mysql-data挂载到/usr/local/mysql/
  volumes:
   - nginx-data:/usr/local/nginx/html/wordpress
   - mysql-data:/usr/local/mysql/
#创建两个卷用于挂载
volumes:
 nginx-data:
 mysql-data:
#自定义网络
networks:
 lnmp:
  driver: bridge
  ipam:
   config:
- subnet: 172.20.0.0/16

目录结构

在这里插入图片描述

启动

cd /opt/compose_lnmp/
docker-compose -f docker-compose.yml up -d
选项解释
-f, --file FILE :使用特定的 compose 模板文件,默认为 docker-compose.yml
-p, --project-name NAME :指定项目名称,默认使用目录名称
-d :在后台运行
在一段漫长的等待之后
在这里插入图片描述
看一下容器有没有都启动
在这里插入图片描述

测试

Mysql授权

进入mysql容器
docker exec -it web02 bash
mysql -u root -p

create database wordpress;
grant all privileges on wordpress.* to 'wordpress'@'%' identified by '123456';
grant all privileges on *.* to 'root'@'%' identified by '123456';
flush privileges;

测试

浏览器访问http://192.168.188.17:1216/wordpress/index.php
在这里插入图片描述

问题

在实验过程中有两个问题纠缠了我很久

Mysql容器无权访问问题

具体报错:Can t connect to local MySQL server through socket ‘/usr/local/mysql/mysql.soc’
报错分析:字面上看就是单纯的没找到.sock文件,根据网上的方法进行排查,发现/etc/my.cnf中写的是对的,但是.sock文件就是没生成,当我重启mysqld服务时发现居然没有权限,我才意识到可能是容器没有root权限
解决方法:在vim docker-compose.yml中为mysql容器添加了权限,具体如下:
在这里插入图片描述
重新生成并测试,解决问题

浏览器访问file not found问题

具体问题:当浏览器输入http://192.168.188.17:1216/wordpress/index.php时出现File not found报错,nginx容器中的nginx/logs/error.log日志报错为:FastCGI sent in stderr: “Primary script unknown” while reading response header from upstream, client: 192.168.188.1, server: localhost, request: “GET /wordpress/index.php HTTP/1.1”, upstream: “fastcgi://172.20.0.30:9000”, host: “192.168.188.17:1216”
报错分析:浏览器访问静态页面时正常访问,所以排除nginx服务状态问题,nginx.conf的location规则也多次检查没有问题,那么问题大概率就是出在php容器里,经过排查我发现问题可能是因为php容器没有共享到nginx容器中的nginx/html/目录导致的
解决方法:最简单的方法当然是直接在vim docker-compose.yml中用volumes_from挂载到nginx容器,但是这个方法好像只支持版本2,那么其他版本该怎么解决。其实只要将宿主机、nginx、php三者相互挂载就能用volumes实现volumes_from的功能,具体实现如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
重新生成并测试,解决问题

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

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

相关文章

JVM实战(20)——jstat实战(1)

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 学习必须往深处挖&…

React入门 - 07(说一说 JSX 中的语法细节)

本章内容 目录 1、js 表达式2、列表渲染3、条件渲染4、className5、jsx 中的样式处理6、dangeouslySetInnerHTML7、htmlFor8、使用 jsx 的注意事项 上一节内容我们完成了一个简单的TodoList案例。到现在为止我们已经知道怎么在 JSX中使用 “js 表达式”和”列表渲染“了&#…

el-date-picker组件设置时间范围限制

需求&#xff1a; 如图所示&#xff0c;下图为新增的一个弹层页面&#xff0c;同时有个需求&#xff0c;日期选择需要限制一个月的时间范围&#xff08;一月默认为30天&#xff09;&#xff1a; 查看官方文档我们需要主要使用到如下表格的一些东西&#xff1a; 参数说明类型可…

C语言经典算法之堆排序算法

目录 前言 建议 简介 A.建堆&#xff1a; B.排序 一、代码实现 二、时空复杂度 A.时间复杂度 B.空间复杂度 三、稳定性 四、现实中的应用 前言 建议 1.学习算法最重要的是理解算法的每一步&#xff0c;而不是记住算法。 2.建议读者学习算法的时候&#xff0c;自己…

深度强化学习的变道策略:Harmonious Lane Changing via Deep Reinforcement Learning

偏理论&#xff0c;假设情况不易发生 摘要 多智能体强化学习的换道策略&#xff0c;不同的智能体在每一轮学习后交换策略&#xff0c;达到零和博弈。 和谐驾驶仅依赖于单个车辆有限的感知结果来平衡整体和个体效率&#xff0c;奖励机制结合个人效率和整体效率的和谐。 Ⅰ. 简…

浪花 - 搜索标签前后端联调

前传&#xff1a;浪花 - 根据标签搜索用户-CSDN博客 目录 一、完善后端搜索标签接口 二、前后端搜索标签接口的对接 1. 使用 Axios 发送请求 2. 解决跨域问题 3. Axios 请求传参序列化 4. 接收后端响应数据 5. 处理后端响应数据格式 6. 搜索结果为空的页面展示 附&am…

Linux网络文件共享服务1(基于FTP文件传输协议)

目录 一、了解FTP 1、FTP的相关概念 2、FTP的两种模式及工作原理 2.1 主动模式 2.2 被动模式 3、vsftpd 软件介绍 3.1 基础操作 4、vsftpd服务常见配置 4.1 修改默认命令端口 4.2 主动模式端口 4.3 被动模式端口 4.4 使用当地时间 4.5 匿名用户登录 4.6 匿名用户上…

初识XSS漏洞

目录 一、XSS的原理和分类 二、Xss漏洞分类 1. 反射性xss 简单的演示&#xff1a; 2.基于DOM的XSS 简单的演示&#xff1a; 3.存储型XSS ​编辑简单的演示 4、self xss 三、XSS漏洞的危害 四、XSS漏洞的验证 五、XSS漏洞的黑盒测试 六、XSS漏洞的白盒测试 七、XS…

135基于matlab的经验小波变换(EWT)的自适应信号处理方法

基于matlab的经验小波变换(EWT)的自适应信号处理方法.其核心思想是通过对信号的Fourier谱进行自适应划分,建立合适的小波滤波器组来提取信号不同的成分&#xff0c;EWT1D和EWT2D方法。程序已调通&#xff0c;可直接运行。 135matlab信号处理EWT (xiaohongshu.com)

VMware虚拟机忘记密码操作方法

下面已openEuler虚拟机为例&#xff1a; 1、点击重启时&#xff0c;一直按esc&#xff08;鼠标点击一下&#xff0c;确保鼠标在你的虚拟机里面&#xff09; 2、一直到进入到如下页面按e键&#xff08;可能会略有不同&#xff09; 3、按e键后跳转到如下页面 4、在该页面输入 in…

C++ OJ基础

C OJ基础 在学校学习C程序设计基础课程的OJ题目 缺少第二十题 这里写目录标题 C OJ基础习题练习(一)打印图形习题练习(二)数据的输入输出习题练习(三)函数重载习题练习(四)设计矩形类习题练习(五)定义Tree类习题练习(六)完善职工工资类Salary的设计习题练习(七)设计矩形类recta…

CSS样式学习-基本用法

html超文本传输标签&#xff0c;属性等权重 outline 标签轮廓 <input type"text"> <textarea cols"30" rows"10"></textarea> outline: none; 表示无轮廓 &#xff08;开发时用的比较多&#xff09; CSS 轮廓&#xff…

机器学习-协同过滤

1、协同过滤要解决的问题 协同过滤算法主要用于推荐系统&#xff0c;推荐系统是信息过载所采用的措施&#xff0c;面对海量的数据信息&#xff0c;从中快速推荐出符合用户特点的物品。一些人的“选择恐惧症”、没有明确需求的人。 解决如何从大量信息中找到自己感兴趣的信息。…

【Linux】Linux系统编程——ls命令

【Linux】Linux 系统编程——ls 命令 1.命令概述 ls 命令是 Linux 和其他类 Unix 操作系统中最常用的命令之一。ls 命令是英文单词 list 的缩写&#xff0c;正如 list 的意思&#xff0c;ls 命令用于列出文件系统中的文件和目录。使用此命令&#xff0c;用户可以查看目录中的…

redis之单线程和多线程

目录 1、redis的发展史 2、redis为什么选择单线程&#xff1f; 3、主线程和Io线程是怎么协作完成请求处理的&#xff1f; 4、IO多路复用 5、开启redis多线程 1、redis的发展史 Redis4.0之前是用的单线程&#xff0c;4.0以后逐渐支持多线程 Redis4.0之前一直采用单线程的主…

C++学习笔记——用C++实现树(区别于C)

树是一种非常重要的数据结构&#xff0c;它在计算机科学中的应用非常广泛。在本篇博客中&#xff0c;我们将介绍树的基本概念和C中如何实现树。 目录 一、树的基本概念 2.C中实现树 2.1创建一个树的实例&#xff0c;并向其添加节点 2.2三种遍历方式的实现代码 3.与C语言相…

以前获得的一枚勋章

以前我上大学期间&#xff0c;每周都去合肥南七里买一份广州出版的《足球报》。

数据结构排序二叉树(下)

哎,调了几天深度学习模型,今天来更新排序二叉树 文章目录 前言 一、排序二叉树的结构定义 二、在排序二叉树添加数据 三、定义创建排序二叉树函数 四、查找一棵二叉排序树中的结点x的所在层数 五、删除二叉排序树中T关键字x的节点 六、查找二叉排序树中的所有小于key的关…

QT上位机开发(动画效果)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 不管是仿真&#xff0c;还是对真实环境的一比一模拟&#xff0c;动画都是非常好的一种呈现方式。目前在qt上面&#xff0c;实现动画主要有两种方法…

Github项目推荐--MusicFreeDesktop

项目地址 https://github.com/maotoumao/MusicFreeDesktop 项目简述 这是一个开源的音乐播放器&#xff0c;主要使用typescript编写&#xff0c;页面很漂亮。支持自定义主题和插件化配置音源&#xff0c;是一大亮点。 项目截图