day22:lamp项目部署

一,lamp概述

lamp概述

LAMP 是一组开源软件的缩写,用于搭建动态网站或Web应用程序的基础环境。LAMP 代表了四个主要的组成部分:

  1. Linux:操作系统,LAMP 环境的基础。通常使用的是 Linux 发行版,如 CentOS、Ubuntu 等。
  2. Apache:Web 服务器软件,用于处理客户端请求和响应,是 LAMP 堆栈中的服务器组件。
  3. MySQLMariaDB:数据库管理系统,用于存储和管理数据。MySQL 是最常见的选择,但 MariaDB 是 MySQL 的一个分支,功能和兼容性较高。
  4. PHPPerlPython:编程语言,用于开发Web应用的动态内容。最常用的是 PHP。

组件作用

  • Linux:提供操作系统和基础环境。它为所有其他组件提供支持,管理硬件资源,处理任务和进程,是整个堆栈的运行平台。

  • Apache:作为 Web 服务器,负责接收和处理客户端请求(如 HTTP 请求),并根据请求返回网页或数据。它可以处理静态内容(如 HTML 文件)和动态内容(由 PHP 等语言生成)。它还支持多种认证和安全配置,确保网站的正常运行。

  • MySQL/MariaDB:数据库管理系统,负责存储和管理应用程序的数据(如用户信息、产品目录、文章等)。MySQL 和 MariaDB 都使用 SQL(结构化查询语言)来与数据库进行交互,执行增删改查等操作。

  • PHP/Python/Perl:用于开发动态网页的脚本语言,主要处理用户的交互请求,生成动态内容。例如,PHP 脚本可以从数据库中提取信息,并将其格式化后返回给用户的浏览器。PHP 是 LAMP 堆栈中最常用的语言,但 Python 和 Perl 也可以在不同场景中使用。

构建顺序

  • 安装 Linux 操作系统:首先,必须在服务器上安装一个 Linux 发行版。常见的选择有 CentOS、Ubuntu、Debian 等。

  • 安装 Apache Web 服务器:在 Linux 上安装 Apache,配置并启动 Web 服务器。这通常包括设置虚拟主机、配置端口等。

  • 安装 MySQL 或 MariaDB:安装数据库服务器,配置用户和权限。数据库用于存储应用程序的数据。

  • 安装 PHP/Python/Perl:选择一种服务器端语言(如 PHP),并配置与 Apache 和 MySQL 的集成。安装所需的库和模块(如 PHP 的 MySQL 扩展)。

  • 配置和优化:安装完组件后,通常需要进行一些基本的配置和性能调优,如调整 Apache 配置文件、数据库优化、启用缓存等。

  • 开发和部署应用程序:完成环境搭建后,可以开始开发 Web 应用或将现有的应用程序部署到服务器上。

其他形式

LAMP 组合有一些不同的变体,通常是基于 LAMP 的某个组件替换为其他流行的技术。常见的替代形式包括:

  • LEMP:替代 Apache 为 Nginx(发音为 "Engine-X")作为 Web 服务器。Nginx 是一个轻量级、高效的 Web 服务器,常用于高并发的环境。

    • L: Linux
    • E: Nginx (pronounced "Engine-X")
    • M: MySQL / MariaDB
    • P: PHP
  • LAPP:替代 MySQL 为 PostgreSQL(一个功能更强大的开源关系型数据库管理系统)。

    • L: Linux
    • A: Apache
    • P: PostgreSQL
    • P: PHP
  • LEPP:将数据库改为 PostgreSQL,同时使用 Nginx 作为 Web 服务器。

    • L: Linux
    • E: Nginx
    • P: PostgreSQL
    • P: PHP
  • MEAN:替代传统的 LAMP 组件为基于 JavaScript 的全栈技术,用于构建现代化的 Web 应用。

    • M: MongoDB(NoSQL 数据库)
    • E: Express.js(Node.js 框架)
    • A: Angular(前端框架)
    • N: Node.js(后端 JavaScript 环境)
  • WAMP:使用 Windows 操作系统而非 Linux。

    • W: Windows
    • A: Apache
    • M: MySQL
    • P: PHP
  • MAMP:类似 WAMP,但是搭建环境是在 macOS 系统上。

    • M: macOS
    • A: Apache
    • M: MySQL
    • P: PHP

每种变体的选择取决于应用场景、性能需求、开发语言偏好等因素。

二,discuz论坛系统部署

环境准备

1,做好网络准备(要可以连通外网,最好是静态ip但是可以不是)
#关闭无线网卡(有时候打开可能会导致网络无法访问)
systemctl stop NetworkManager
systemctl disable NetworkManager#测试连通性
ping www.baidu.com
2,设置主机名
hostnamectl set-hostname lamp
3,关闭防火墙
#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
#关闭selinux
getenforce
setenforce 0
#永久关闭selinux
vim /etc/selinux/config
#修改SELINUX=disabled即可
4,配置yum源

【Linux】CentOS更换国内阿里云yum源(超详细)_centos换源-CSDN博客

#安装拓展源
yum install -y epel-release

安装apache

1,检测apache是否已经安装
rpm [选项] [命令] [软件包]
-i:安装软件包
-U:升级或安装软件包
-e:卸载软件包
-q:查询软件包
-qa:查询所有已安装的软件包
-qi:查询已安装软件包的详细信息
-ql:列出已安装软件包的所有文件
-qf:查询文件属于哪个已安装软件包
-V:验证已安装软件包的完整性
-R:列出包的依赖关系
-p:查看 .rpm 包文件内容
--force:强制安装或卸载软件包rpm -qa |grep httpd
2,yum安装apache(软件叫httpd)
yum install -y httpd
3,修改配置文件
#配置/etc/httpd/conf/httpd.conf
vim  /etc/httpd/conf/httpd.conf
#添加或者修改为ServerName localhost:80
#(80是指定访问端口)(localhost,表示主机地址到时候写ip或者域名都可以)
# 这个时候如果已经启动就可以重启进行生效,没有启动直接启动就可以了
systemctl start httpd
systemctl enable httpd #(建议开机启动)
4,查看监听端口
netstat -ntlp |grep httpd

安装mysql

1,检测mysql是否安装
rpm -q mysql
2,下载mysql的yum
wget https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm
3,安装mysql扩展源与服务端
rpm -ivh mysql80-community-release-el7-5.noarch.rpm
#(这是安装扩展源)
yum install mysql-community-server -y
#如果验证报错就输入这条命令(etc/yum.repos.d/下)
sed -i 's/check=1/check=0/g' *.repo
4,启动mysql
systemctl start mysqld
systemctl enable mysqld
#或者
systemctl enable mysqld --now
5,查看监听端口
netstat -tulpn | grep mysql
netstat [选项]
-a: 显示所有连接和监听的端口
-t: 显示 TCP 协议的连接
-u: 显示 UDP 协议的连接
-l: 显示正在监听的端口
-n: 以数字格式显示地址和端口号(不进行域名解析)
-p: 显示与每个连接相关的进程 PID 和程序名称
-r: 显示路由表信息
-i: 显示网络接口的统计信息
-s: 显示每个协议的统计信息
-c: 持续输出网络连接信息(实时更新)
-tuln: 显示 TCP 和 UDP 协议正在监听的端口,并以数字格式显示
-g: 显示所有组播连接
-v: 显示详细信息
-A: 显示指定类型的套接字(如 UNIX 套接字)
-h: 显示帮助信息
6,初始化数据库(建议使用下面中间的)
命令(MySQL 8.0 版本及以上):
sudo mysqld --initialize
说明:
--initialize:用于初始化 MySQL 数据库。该命令会创建系统数据库、数据目录和临时文件等。
默认情况下,它会为 root 用户生成一个临时的随机密码,并将该密码存储在 MySQL 的错误日志中。执行初始化命令后,你可以通过查看错误日志文件(通常在 /var/log/mysqld.log)来查找 root 用户的临时密码。查看错误日志:
sudo cat /var/log/mysqld.log | grep 'temporary password'
通过临时密码登录 MySQL 并修改密码:
mysql -u root -p
输入刚刚找到的临时密码,然后修改 root 用户的密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
------------------------------------------------------
对于 MySQL 5.7 及以下版本
sudo mysqld --initialize-insecure
这个命令会创建一个没有密码的 root 用户,适用于不想使用临时密码的情况。确保在初始化数据库前,/var/lib/mysql 或你指定的数据目录已经存在并具有正确的权限。
#补充(建议使用这个)
mysql_secure_installation 是 MySQL 提供的一个脚本,用于对 MySQL 数据库进行初始安全配置,包括设置 root 密码、删除匿名用户、禁用远程 root 登录、删除测试数据库等。这是提高 MySQL 安全性的一个常见步骤。1运行 mysql_secure_installation 脚本——》运行以下命令启动 MySQL 安全配置脚本:sudo mysql_secure_installation
2脚本流程Enter current password for root (enter for none):输入当前 root 用户的密码。如果是第一次安装,默认没有密码(或者是你在初始化时生成的临时密码)。如果你没有设置密码,按回车键继续。(有些版本直接跳过)Set root password? [Y/n]:是否设置 root 用户的密码。如果选择 Y,将提示你输入并确认新的 root 密码。建议设置一个强密码。密码:Ly123456|Remove anonymous users? [Y/n]:是否删除匿名用户。建议选择 Y,因为匿名用户存在安全风险。Disallow root login remotely? [Y/n]:是否禁用 root 用户的远程登录。建议选择 Y,这样只有本地可以登录 root 用户,增加安全性。Remove test database and access to it? [Y/n]:是否删除 test 数据库及其访问权限。建议选择 Y,因为 test 数据库是一个默认存在的测试数据库,通常不需要使用。Reload privilege tables now? [Y/n]:是否重新加载权限表以使配置生效。选择 Y3完成配置一旦你完成上述步骤,mysql_secure_installation 脚本将配置好你的 MySQL 安全设置,包括密码、权限和不必要的用户和数据库。
登录 MySQL:
mysql -u root -p'密码'
查看当前密码政策
SHOW VARIABLES LIKE 'validate_password%';
修改密码策略
validate_password.check_user_name默认值: ON功能: 如果启用(ON),则密码不能与用户名相同。修改: 可以保持为 ON,因为这通常是一个安全设置。也可以将其设置为 OFF,允许密码与用户名相同。SET GLOBAL validate_password.check_user_name = OFF;
validate_password.length默认值: 8功能: 设置密码的最小长度。修改: 如果你想允许非常短的密码,可以将其设置为 1,这将允许密码长度为 1 个字符。SET GLOBAL validate_password.length = 1;
validate_password.mixed_case_count默认值: 1功能: 要求密码中包含至少一个大写字母和一个小写字母。修改: 你可以将此值设置为 0,以允许密码中没有大小写字母的混合。SET GLOBAL validate_password.mixed_case_count = 0;
validate_password.number_count默认值: 1功能: 要求密码中包含至少一个数字。修改: 你可以将此值设置为 0,以允许密码中不包含数字。SET GLOBAL validate_password.number_count = 0;
validate_password.policy默认值: MEDIUM功能: 控制密码策略的强度。LOW: 仅要求密码长度大于等于 8 个字符。MEDIUM: 需要密码包含大写字母、小写字母、数字、特殊字符,并且长度至少为 8 个字符(默认值)。STRONG: 更严格的密码复杂性要求。0(禁用):完全禁用密码策略,允许任何密码。SET GLOBAL validate_password.policy = 0;
validate_password.special_char_count   默认值: 1功能: 要求密码中包含至少一个特殊字符(如 !, @, # 等)。修改: 你可以将此值设置为 0,以允许密码中没有特殊字符。SET GLOBAL validate_password.special_char_count = 0;
--------------------------copy版
SET GLOBAL validate_password.check_user_name = OFF;
SET GLOBAL validate_password.length = 1;
SET GLOBAL validate_password.mixed_case_count = 0;
SET GLOBAL validate_password.number_count = 0;
SET GLOBAL validate_password.policy = 0;
SET GLOBAL validate_password.special_char_count = 0;更改 用户 密码ALTER USER '用户名'@'localhost' IDENTIFIED BY 'ly';   -- 设置为简单密码-- 或者设置为空密码(不推荐用于生产环境)ALTER USER '用户'@'localhost' IDENTIFIED BY '';
在进行密码设置后,记得刷新权限,以使修改立即生效:FLUSH PRIVILEGES;
------------------------------------------------还有一方法就是登录后
UNINSTALL PLUGIN validate_password;
禁用密码验证插件=SET GLOBAL validate_password.special_char_count = 0;

安装php

1,检测PHP是否安装
rpm -q php
或者
php -v
2,yum安装PHP
sudo yum install php php-cli php-common php-mysql php-fpm -y
3,重启httpd服务
安装或更新 PHP 后,需要重启 httpd 服务,使得新的 PHP 设置生效。
sudo systemctl restart httpd
如果你使用的是 Nginx,则需要重启 Nginx 服务:
sudo systemctl restart nginx
4,测试lamp环境是否可用
创建测试 PHP 文件在 Apache 的默认 Web 根目录(通常是 /var/www/html)下创一个 PHP文件
例如:sudo echo "<?php phpinfo(); ?>" > /var/www/html/info.php确保 Apache 具有该文件的适当权限sudo chmod 644 /var/www/html/info.php
访问测试页面打开浏览器:访问 http://your_server_ip/info.phphttp://localhost/info.php(如果在本机上测试)。

部署discuz论坛

https://gitee.com/Discuz/DiscuzX
按照自己会的来,下载zip可以,用git也可以,使用git命令要先安装git。
解压文件要安装zip与unzip,如果是git下来的就不用解压。
(对了让我们先删除之前的info.php吧)
cp -r DiscuzX/upload/* /var/www/html
upload内全是源文件,-r表示复制目录和文件,而且会递归
刷新之前链接的网址就可以了,对了去掉/info.php的后缀

这里开始就是图形化操作了:————————{ ^t^ }————————

默认进入是这样的:一次确定,一次取消

这里有错误,是因为php版本不够,虽然是一样的,但是要高一些才可以:

安装 EPEL 和 Remi 仓库:
sudo yum install -y epel-release
sudo yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm启用 Remi 仓库:
sudo yum install -y yum-utils
sudo yum-config-manager --enable remi-php74  # 启用 PHP 7.4 仓库,或选择其他版本
你可以替换 remi-php74 为你想要的 PHP 版本。例如:remi-php80(PHP 8.0)
remi-php81(PHP 8.1)安装 PHP 新版本
sudo yum install -y php php-cli php-common php-mysqlnd php-fpm php-xml php-mbstring php-json php-zip php-opcache php-intl确认 PHP 版本
php -v
重启 Apache 或 Nginx 服务
sudo systemctl restart httpd【nginx】

完成后就是这样,还是报错:没有权限怎么办,给他(复制我的命令吧,chmod -R a+w /var/www/html)

(刷新一下就好了)

点击下一步继续吧,对了因为httpd默认作为网站,当然只可以读了,要是对所有人都可读可写那不是太low了吗,所以(drwxr-xr-x. 13 root root 4096 12月  1 17:09 html
),而这个论坛要变就要有写,所以才要该权限。

安装全新的独立模式

下一步:如图:(记录一下我的admin密码是ly怕忘了)

下一步就完成了:

访问测试

三,wordpress博客系统部署(可以略过)

环境准备

1,关闭无线网卡
systemctl stop NetworkManager
2,设置主机名
hostnamectl set-hostname wordpress
3,关闭防火墙
systemctl disable firewalld --now
4,配置yum源

【Linux】CentOS更换国内阿里云yum源(超详细)_centos换源-CSDN博客

(csdn找:下载源码安装包)

编译安装mysql

安装编译 MySQL 所需的开发工具和库
sudo yum groupinstall "Development Tools" -y
sudo yum install -y cmake ncurses-devel bison gcc-c++ libaio-devel libssl-devel下载 MySQL 源代码访问 MySQL 官方下载页面(选择你需要的版本):https://dev.mysql.com/downloads/mysql/使用 wget 下载 MySQL 源代码:cd /optsudo wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.27.tar.gz
解压源代码sudo tar -zxvf mysql-8.0.27.tar.gzcd mysql-8.0.27
创建 MySQL 用户和组sudo groupadd mysqlsudo useradd -r -g mysql mysql
创建安装目录选择一个目录来存放 MySQL 数据和文件。例如,使用 /usr/local/mysql 作为安装目录。sudo mkdir /usr/local/mysqlsudo mkdir /var/lib/mysql(数据目录)sudo mkdir /var/log/mysql(日志目录)设置相应的权限:sudo chown -R root:root /usr/local/mysqlsudo chown -R mysql:mysql /var/lib/mysqlsudo chown -R mysql:mysql /var/log/mysql
配置编译选项(到达源码目录)下面直接复制执行,斜杠表示换行,注释去掉cmake . \-DCMAKE_INSTALL_PREFIX=$INSTALL_DIR \       # 设置安装路径-DMYSQL_DATADIR=$DATA_DIR \                  # 设置数据目录-DSYSCONFDIR=$CONFIG_DIR \                   # 设置配置文件目录-DWITH_SSL=$ENABLE_SSL \                     # 启用 SSL 支持-DWITH_ZLIB=$ENABLE_ZLIB \                   # 启用 Zlib 支持-DDEFAULT_CHARSET=$DEFAULT_CHARSET \         # 设置默认字符集-DDEFAULT_COLLATION=$DEFAULT_COLLATION \     # 设置默认字符序-DWITH_INNOBASE_STORAGE_ENGINE=$ENABLE_INNODB \    # 启用 InnoDB 存储引擎-DWITH_ARCHIVE_STORAGE_ENGINE=$ENABLE_ARCHIVE \     # 启用 Archive 存储引擎-DWITH_PARTITION_STORAGE_ENGINE=$ENABLE_PARTITION \  # 启用 Partition 存储引擎-DWITH_FAM=$ENABLE_FAM \                     # 启用文件监控(FAM)-DWITH_BOOST=$ENABLE_BOOST                   # 启用 Boost 库支持(根据需要)
编译 MySQLsudo make
安装 MySQLsudo make install
初始化 MySQL 数据目录cd /usr/local/mysqlsudo ./bin/mysqld --initialize --user=mysql --datadir=/var/lib/mysql --            basedir=/usr/local/mysqlsudo cat /var/log/mysqld.log | grep 'temporary password'
设置系统服务nano /etc/systemd/system/mysql.service添加以下内容:[Unit]Description=MySQL Community ServerDocumentation=https://dev.mysql.com/doc/refman/en/After=network.target[Service]Type=forkingExecStart=/usr/local/mysql/bin/mysqld --daemonize --pid-                file=/var/run/mysqld/mysqld.pidExecStartPost=/usr/local/mysql/bin/mysqladmin -u root -p$MYSQL_ROOT_PASSWORD shutdownExecStop=/usr/local/mysql/bin/mysqladmin -u root -p$MYSQL_ROOT_PASSWORD shutdownUser=mysqlGroup=mysqlLimitNOFILE=65535[Install]WantedBy=multi-user.target重新加载 systemd 配置并启用 MySQL 服务:sudo systemctl daemon-reloadsudo systemctl enable mysql
启动 MySQL 服务sudo systemctl start mysql
安全配置sudo /usr/local/mysql/bin/mysql_secure_installation
配置 MySQL 允许远程连接(可选)sudo nano /etc/my.cnf在 [mysqld] 部分添加以下内容,允许 MySQL 从任何 IP 地址进行远程连接:bind-address = 0.0.0.0
重启 MySQL 服务:sudo systemctl restart mysql
验证 MySQL 安装/usr/local/mysql/bin/mysql -u root -p
#!/bin/bash# MySQL 编译配置脚本
# 在 CentOS 7 上编译安装 MySQL,配置选项注释详解。# 创建 MySQL 系统用户和组
# MySQL 安装后需要创建专用的用户和组
sudo groupadd mysql
sudo useradd -r -g mysql mysql# 设置安装路径
INSTALL_DIR="/usr/local/mysql"
# 设置数据目录
DATA_DIR="/var/lib/mysql"
# 设置系统配置文件目录
CONFIG_DIR="/etc"# 启用或禁用存储引擎
ENABLE_INNODB="1"        # 启用 InnoDB 存储引擎
ENABLE_ARCHIVE="1"       # 启用 Archive 存储引擎
ENABLE_PARTITION="1"     # 启用 Partition 存储引擎(根据需求选择)# 启用 SSL 加密支持
ENABLE_SSL="system"     # 启用 SSL 支持,使用系统的 SSL 库
# 启用 Zlib 支持
ENABLE_ZLIB="system"    # 启用 Zlib 支持,使用系统的 Zlib 库
# 默认字符集和字符序设置
DEFAULT_CHARSET="utf8mb4"        # 设置默认字符集为 utf8mb4
DEFAULT_COLLATION="utf8mb4_unicode_ci"  # 设置默认字符序为 utf8mb4_unicode_ci
# 设置文件监控(FAM)支持
ENABLE_FAM="system"  # 启用文件监控(FAM)支持,使用系统的 FAM 库
# 启用 Boost 库支持(如果需要)
ENABLE_BOOST="/path/to/boost"  # 设置 Boost 库路径(如果需要 Boost 库支持)
# 设置编译类型
BUILD_TYPE="Release"  # 设置为 Release 模式,适用于生产环境
# 启用 MySQL 客户端和服务端的相关功能
ENABLE_CLIENT="1"    # 启用 MySQL 客户端
ENABLE_SERVER="1"    # 启用 MySQL 服务端# 创建 MySQL 编译所需的目录
mkdir -p $INSTALL_DIR
mkdir -p $DATA_DIR
mkdir -p $CONFIG_DIR# 执行 cmake 配置命令
echo "开始配置 MySQL 编译选项..."
cmake . \-DCMAKE_INSTALL_PREFIX=$INSTALL_DIR \-DMYSQL_DATADIR=$DATA_DIR \-DSYSCONFDIR=$CONFIG_DIR \-DWITH_SSL=$ENABLE_SSL \-DWITH_ZLIB=$ENABLE_ZLIB \-DDEFAULT_CHARSET=$DEFAULT_CHARSET \-DDEFAULT_COLLATION=$DEFAULT_COLLATION \-DWITH_INNOBASE_STORAGE_ENGINE=$ENABLE_INNODB \-DWITH_ARCHIVE_STORAGE_ENGINE=$ENABLE_ARCHIVE \-DWITH_PARTITION_STORAGE_ENGINE=$ENABLE_PARTITION \-DWITH_FAM=$ENABLE_FAM \-DWITH_BOOST=$ENABLE_BOOSTecho "配置完成,可以开始编译 MySQL..."# 执行 make 编译命令
make# 安装 MySQL
sudo make installecho "MySQL 编译安装完成!"# 初始化 MySQL 数据目录
# 初始化数据目录,并生成一个临时的 root 密码
sudo $INSTALL_DIR/bin/mysqld --initialize --user=mysql --datadir=$DATA_DIR --basedir=$INSTALL_DIR# 提示用户查看临时 root 密码
echo "MySQL 初始化完成,请查看临时 root 密码:"
sudo cat /var/log/mysqld.log | grep 'temporary password'# 安装并启用 systemd 服务
# 创建 MySQL 的 systemd 服务文件,确保 MySQL 可以随系统启动
echo "创建 MySQL 服务文件..."
sudo bash -c 'cat > /etc/systemd/system/mysql.service <<EOF
[Unit]
Description=MySQL Community Server
After=network.target[Service]
Type=forking
ExecStart=$INSTALL_DIR/bin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
ExecStartPost=$INSTALL_DIR/bin/mysqladmin -u root -p$MYSQL_ROOT_PASSWORD shutdown
ExecStop=$INSTALL_DIR/bin/mysqladmin -u root -p$MYSQL_ROOT_PASSWORD shutdown
User=mysql
Group=mysql
LimitNOFILE=65535[Install]
WantedBy=multi-user.target
EOF'# 重新加载 systemd 服务并启用 MySQL
sudo systemctl daemon-reload
sudo systemctl enable mysql
sudo systemctl start mysqlecho "MySQL 服务已启动!"

编译安装apache

配置php

启动测试环境

部署web应用

测试验证

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

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

相关文章

【提高篇】3.6 GPIO(六,寄存器介绍,下)

目录 2.3 输出速度寄存器OSPEEDR(GPIOx_OSPEEDR) (x = A..I) 2.4 上拉/下拉寄存器 (GPIOx_PUPDR) (x = A..I) 2.5 输入数据寄存器(IDR) 2.6 输出数据寄存器(ODR) 2.7 置位/复位寄存器(BSRR) 2.8 BSRR与ODR寄存器的区别 2.3 输出速度寄存器OSPEEDR(GPIOx_OSPEEDR) (…

Java中的“抽象类“与“接口“之间的关系

在Java中&#xff0c;抽象类和接口都是用于实现抽象的机制&#xff0c;但它们在设计目的、使用方式以及功能上有一些不同。下面我将通过文字和代码示例来详细讲解它们之间的关系。 1. 抽象类&#xff08;Abstract Class&#xff09; 特点&#xff1a; 抽象类使用abstract关键字…

ROS2-参数服务器

在 ROS 2 中&#xff0c;节点之间可以通过参数服务器共享和获取参数。这意味着一个节点可以声明一个参数&#xff0c;而其他节点可以读取或修改这个参数。这是通过 ROS 2 的参数系统实现的&#xff0c;它允许节点在参数服务器上声明、设置和获取参数 。 0. 背景 系统有多个 RO…

CSS3网站

&#xff08;看不懂英文的记得点击右上角Change language更改语言&#xff09;&#xff1a; https://developer.mozilla.org/en-US/docs/Learn/CSS/Introduction_to_CSS/Selectors CSS选择器 https://developer.mozilla.org/en-US/docs/Web/CSS/color_value 颜色值 https://ser…

js进阶-中括弧运算

一、题目 下面代码的输出是什么 console.log([[]][[]] [[]]); 二、变量类型转换 1.对于数字运算[负号-]、[减号-]、[乘号*]、[除号/]、[自加号]等&#xff0c;其后的变量都会被尝试转换为数字&#xff1b; 如果其后变量是基础数据类型&#xff0c;那么按基础数据类型转换…

【IMF靶场渗透】

文章目录 一、基础信息 二、信息收集 三、flag1 四、flag2 五、flag3 六、flag4 七、flag5 八、flag6 一、基础信息 Kali IP&#xff1a;192.168.20.146 靶机IP&#xff1a;192.168.20.147 二、信息收集 Nmap -sP 192.168.20.0/24 Arp-scan -l nmap -sS -sV -p- -…

记一次腾讯云海外服务器http能正常访问https访问拒绝问题处理过程

最近双十一, 购了一台腾讯云的海外服务器&#xff0c; 开通后就是一堆的服务器软件安装数据上传和配置&#xff0c;没想到&#xff0c;等待配置完成后才发现https无法正常访问&#xff0c;于是开启了自查。 1. 检查nginx软件的ssl配置 nginx http https配置参考 server {l…

ubuntu多版本安装gcc

1.ubuntu安装gcc 9.3.1 $ sudo apt update $ sudo apt install gcc-9 g-9 二、配置GCC版本 安装完成后&#xff0c;需要使用update-alternatives命令来配置GCC版本。这个命令允许系统在多个安装的版本之间进行选择 1.添加GCC 9.3.1到update-alternatives管理 $ sudo update-a…

hdlbits系列verilog解答(mt2015_muxdff)-90

文章目录 一、问题描述二、verilog源码三、仿真结果一、问题描述 本节要实现的电路来自于ECE253 2015中期测试问题5。要实现以下如图所示的时序电路中复用器及D触发器子模块。 模块声明 module top_module ( input clk, input L, input r_in, input q_in, output reg Q); 思路…

Word - 图片右键保存

以右键另存为的方式保存word里面的图片&#xff0c;确实会导致图片质量降低。一般图片可能看不出差别&#xff0c;但一些文字内容较多的图片&#xff0c;就会影响阅读。 针对这个问题&#xff0c;可以通过解压word文件的方法得到里面的图片。 首先&#xff0c;备份一下原文件…

Android 图形系统之七:SurfaceFlinger

一. 引言 什么是 SurfaceFlinger&#xff1f;SurfaceFlinger 的核心作用和地位&#xff1f;为什么需要了解 SurfaceFlinger&#xff1f; 二. SurfaceFlinger 的基本概念 Surface 和 SurfaceFlinger 的关系SurfaceFlinger 与图形渲染&#xff08;OpenGL ES 和 Vulkan&#xf…

YOLOv11原创改进专栏|专栏介绍目录

一、专栏简介 本专栏自2024年12月01日开始持续更新&#xff0c;专栏主要面向YOLOv11的各种改进&#xff0c;主要改进方向为Backbone&#xff08;主干&#xff09;、Conv、C2f、注意力机制、Neck以及检测头的改进&#xff0c;本专栏会涉及到提高精度、轻量化、分割等方面的内容。…

shell脚本小练习#002:通过shell脚本创建目录

实例1&#xff1a; # 编写一个shell脚本实现以下需求&#xff1a; # 执行脚本&#xff0c;当前目录下创建一个名为test的目录&#xff0c; # 然后在新建的test目录下创建3个文件夹分别命名为case1~case3&#xff0c;在每个文件下创建一个log.txt文件 # 编写一个shell脚本实现…

AI开发-深度学习框架-PyTorch-torchnlp

1 需求 Welcome to Pytorch-NLP’s documentation! — PyTorch-NLP 0.5.0 documentation 2 接口 3 示例 4 参考资料

基于Java Springboot宠物服务中心微信小程序

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 微信…

算法妙妙屋-------1.递归的深邃回响:全排列的奇妙组合

全排列的简要总结 全排列&#xff08;Permutation&#xff09;是数学中一个经典的问题&#xff0c;指的是从一组元素中&#xff0c;将所有元素按任意顺序排列形成的所有可能序列。 特点 输入条件&#xff1a; 给定一组互异的元素&#xff08;通常为数组或字符串&#xff09;。…

内网穿透步骤

步骤 第一次需要验证token window和linux的方法不同。 然后 启动 cpolar 服务&#xff1a; 在命令窗口中输入 cpolar.exe htttp 8080&#xff0c;启动内网穿透服务。确保命令窗口保持开启状态&#xff0c;以维持穿透效果。 cpolar.exe hhttp 8080 成功后 注意事项 命令窗口…

房屋结构安全监测系统守护房屋安全卫士

一、系统背景 随着时间的流逝&#xff0c;建筑物的主体结构、设备设施等会因为自然老化、材料疲劳、使用环境的变化以及维护不当等各种因素的影响&#xff0c;逐渐出现性能下降甚至安全隐患。因此&#xff0c;进行房屋安全监测显得尤为重要。房屋结构安全是指建筑物的结构体系在…

直击高频编程考点:聚焦新版综合编程能力考查汇总

目录 一、业务性编程和广度能力考查 &#xff08;一&#xff09;基本定义 &#xff08;二&#xff09;必要性分析 二、高频考查样题&#xff08;编程扩展问法&#xff09; 考题1: 用java 代码实现一个死锁用例&#xff0c;说说怎么解决死锁问题&#xff1f;&#xff08;高…

架构05-架构安全性

零、文章目录 架构05-架构安全性 1、软件架构安全的重要性 **系统安全&#xff1a;**不仅包括防御黑客攻击&#xff0c;还包括安全备份与恢复、安全审计、防治病毒等。**关注重点&#xff1a;**认证、授权、凭证、保密、传输安全、验证。 2、认证&#xff08;Authenticatio…