什么是网站静态化/销售系统
目录
LAMP
Apache
起源
主要特点
软件版本
编译安装httpd服务器
编译安装的优点
操作步骤
准备工作
编译
安装
优化执行路径
添加服务
守护进程
配置httpd
查看 Web 站点的访问情况
虚拟主机
类型
部署基于域名的虚拟主机
为虚拟主机提供域名解析(两个域名)
不同ip访问不同的内容
部署基于IP地址的虚拟主机
部署基于端口的虚拟主机
MySQL
MySQL的编译安装
MySQL初始化
设置环境变量
拷贝服务文件
设置mysql密码
PHP
构建PHP运行环境
安装 PHP 软件包
1:准备工作
安装扩展工具库
(1)安装 libmcrypt
3:编译安装 PHP
(1)解包
(2)配置
PHP注意事项
Apache注意事项
(3)编译及安装
设置 LAMP 组件环境
(1)php.ini 配置调整
(2)添加 ZendGuardLoader 优化模块
httpd.conf 配置调整
测试 LAMP 协同工作
1:测试 PHP 网页能否正确显示
2:测试 PHP 网页能否访问 MySQL 数据库
LAMP 架构应用实例
1:部署 phpMyAdmin 系统
2:建立配置文件 config.inc.php
如果使用的函数集是msqlnd,需要修改文件
3:访问 phpMyAdmin 的 Web 管理界面
LAMP
LAMP是一个常见的开发平台和运行环境,主要用于支持动态网站和Web应用程序的开发和部署。
- L: Linux,指操作系统,通常是Linux操作系统。
- A: Apache,指Web服务器软件,常用于托管网站。
- M: MySQL,指关系型数据库管理系统,用于存储和管理数据。
- P: PHP,指编程语言,用于开发动态网页内容。
Apache
起源
- 源于A Patchy Server,著名的开源Web服务软件
- 1995年时,发布Apache服务程序的1.0版本
- 由Apache软件基金会(ASF)负责维护
- 最新的名称为“Apache HTTP Server”
主要特点
- 开放源代码、跨平台应用
- 支持多种网页编程语言
- 模块化设计、运行稳定、良好的安全性
软件版本
- 1.X
- 目前最高版本是1.3,运行稳定
- 向下兼容性较好,但缺乏一些较新的功能
- 2.X
- 目前最高版本是2.4
- 具有更多的功能特性
- 与1.X相比,配置管理风格存在较大差异
编译安装httpd服务器
编译安装的优点
- 具有较大的自由度,功能可定制
- 可及时获得最新的软件版本
- 普遍适用于大多数Linux版本,便于移植使用
- 获取Apache服务器的源码包:http://httpd.apache.org/download.cgi
操作步骤
准备工作
为了方便实验,关闭防火墙systemctl stop firewalld并关闭内核安全机制setenforce 0
使用rpm -qa httpd查看系统中是否安装了httpd,如果有的话需要卸载
安装源码包所需的开发环境yum -y install apr-util-devel pcre-devel gcc*
安装源码软件包
将httpd的源码软件包拖到Xshell中
使用tar zxvf httpd-2.4.25.tar.gz命令解压,然后cd进入解压的目录
配置安装
进入解压的目录中,使用ls命令可以看到./configure文件,该文件是一个脚本,通过该脚本指定该软件包要安装的功能
通过./configure脚本指定启用的功能
[root@localhost httpd-2.4.25]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi# 出现下方的输出信息,代表你的配置成功了,就可以进行下一步
configure: summary of build options:Server Version: 2.4.25 # httpd版本Install prefix: /usr/local/httpd # 安装路径C compiler: gcc -std=gnu99 # C语言编译器 CFLAGS: -pthreadLDFLAGS: LIBS: CPPFLAGS: -DLINUX -D_REENTRANT -D_GNU_SOURCEC preprocessor: gcc -E
- --prefix:指定安装的路径前缀;在配置文件中引用路径时,可以省去安装路径的前缀,而使用相对路径
- --enable-so:启用DSO(dynamic shared object;动态共享对象),允许在运行时动态地加载和卸载模块,而无需重新启动服务。
- --enable-rewrite:开启地址重写功能;URL重写允许你根据规则动态地改变请求的URL,这对于实现搜索引擎友好的URL、重定向、访问控制等非常有用。
- --enable-charset-lite:启用字符集支持,以便支持使用各种字符集编码的网页
- --enable-cgi:启用CGI(通用网关接口)脚本程序支持,允许Web服务器运行外部程序来形成动态Web内容。
编译
使用make命令执行编译操作,编译的结果是把源代码软件包的代码编译为二进制文件
安装
使用make install命令执行安装操作,到这一步就对源代码软件包安装结束了
优化执行路径
使用ln -s /usr/local/httpd/bin/* /usr/local/bin/命令创建软链接,使得可以在终端里直接使用命令而不需要加路径
使用httpd -v测试软件包安装是否正常
[root@localhost ~]# httpd -v
Server version: Apache/2.4.25 (Unix)
Server built: Jul 6 2024 11:57:00
添加服务
此时可以使用apachectl相关命令控制服务的状态,但是会提示没有设置服务名称
[root@localhost ~]# apachectl start
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
[root@localhost ~]# apachectl stop
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
使用vim /usr/local/httpd/conf/httpd.conf命令在该文件的第200行将服务器名称取消注释
保存并退出,再使用apachectl命令就不会提示了
守护进程
通过systemd管理httpd,使其变成系统服务和守护进程
cd到服务目录,创建httpd的服务文件并添加内容
[root@localhost system]# cd /lib/systemd/system/
[root@localhost system]# vim httpd.service
# 添加内容
[Unit]
Description=miao shu
After=network.target[Service]
Type=forking
PIDFile=/usr/local/httpd/logs/httpd.pid
ExecStart=/usr/local/bin/apachectl $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID[Install]
WantedBy=multi-user.target
内容 | 说明 |
[Unit] | 指定systemd单元的基本信息 |
Description=miao shu | 描述了服务的简短说明或名称 |
After=network.target | 在网络服务之后启动 |
[Service] | 定义了服务的执行方式和相关设置 |
Type=forking | 指定服务的启动类型为forking,即启动时会派生出一个子进程 |
PIDFile=/usr/local/httpd/logs/httpd.pid | 指定PID文件的位置,用于记录主进程的PID。 |
ExecStart=/usr/local/bin/apachectl $OPTIONS | 定义了服务启动时执行的命令,这里使用apachectl启动Apache,并传递了$OPTIONS,这个变量通常用来传递Apache HTTP服务器的启动参数,比如端口号、配置文件路径等。 |
ExecReload=/bin/kill -HUP $MAINPID | 定义了重新加载配置时执行的命令,发送SIGHUP信号给主进程以实现配置重载。 -HUP 是一个信号名称,HUP是SIGHUP信号的缩写。用于通知进程重新加载配置文件或进行其他类型的重新初始化。使新的配置生效而无需停止服务。 $MAINPID 是一个环境变量,它是由systemd设置的,表示当前服务的主进程的PID(进程ID)。 |
[Install] | 定义了如何安装这个单元 |
WantedBy=multi-user.target | 指定服务应该在multi-user.target(即多用户模式;运行级别3)下启动,表示这个服务是系统的一部分,并在多用户环境中自动启动。 |
使用httpd -t命令测试配置文件是否有语法错误
[root@localhost ~]# httpd -t
Syntax OK
使用systemctl daemon-reload命令重载一下systemd
此时就可以使用systemctl命令来管理httpd服务的状态了
[root@localhost system]# systemctl start httpd
# 测试可以在浏览器内输入当前虚拟机的ip地址来测试httpd服务是否能正常访问
[root@localhost system]# netstat -anpt | grep httpd
tcp6 0 0 :::80 :::* LISTEN 29818/httpd
[root@localhost system]# systemctl stop httpd
[root@localhost system]# netstat -anpt | grep httpd
[root@localhost system]#
配置httpd
httpd默认存放网页的位置:/usr/local/httpd/htdocs/
如果修改该路径下默认的index.html文件内测试的文本为中文,再在浏览器中访问就变成中文乱码,就需要修改编码格式
<html><body><h1>你好</h1></body></html>
通过添加head头部标签,在头部标签内通过meta标签的charset属性,声明编码格式为utf-8
修改index.html文件内容如下
不需要重启服务,直接刷新浏览器即可,此时就显示正常了
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>标题</title>
</head>
<body><h1>你好</h1>
</body>
</html>
查看 Web 站点的访问情况
[root@localhost system]# tail /usr/local/httpd/logs/access_log
虚拟主机
单台主机运行多个站点的技术
类型
- 基于ip的虚拟主机(需要多个ip)
- 基于端口的虚拟主机(一个ip,绑定多个端口)
- 基于域名的虚拟主机(最常用)
部署基于域名的虚拟主机
开启第二台虚拟机(192.168.10.102)作为客户端
为虚拟主机提供域名解析(两个域名)
使用vim /etc/hosts命令修改hosts文件为一下内容
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.101 www.e1.com
192.168.10.101 www.e2.com
此时在客户端主机(102)使用curl命令访问刚刚写入的两个ip,都能访问到一样的网页内容了
不同ip访问不同的内容
在服务端(101)创建两个ip对应的文件夹到指定位置
[root@localhost ~]# mkdir -p /var/www/html/e1com
[root@localhost ~]# mkdir -p /var/www/html/e2com
再使用重定向创建两个ip对应的首页文件
[root@localhost ~]# echo "www.e1.com" > /var/www/html/e1com/index.html
[root@localhost ~]# echo "www.e2.com" > /var/www/html/e2com/index.html
使用vim /usr/local//httpd/conf/extra/httpd-vhosts.conf命令修改虚拟主机的配置文件
改为以下内容
# 所有用户的请求都授权访问
<Directory "/var/www/html">
Require all granted
</Directory><VirtualHost *:80>ServerAdmin webmaster@dummy-host.example.com # 管理员邮箱地址DocumentRoot "/var/www/html/e1com" # 指定网页文件位置ServerName www.e1.com # 网站域名,要和客户端配置的域名保持一致,Web服务器通过ServerName来匹配应答的URLServerAlias www.dummy-host.example.com # 网站别名ErrorLog "logs/www.e1.com.error_log" # 错误日志位置CustomLog "logs/www.e1.com.access_log" common # 访问日志位置
</VirtualHost><VirtualHost *:80>ServerAdmin webmaster@dummy-host2.example.comDocumentRoot "/var/www/html/e2com/"ServerName www.e2.comErrorLog "logs/www.e2.com.error_log"CustomLog "logs/www.e2.com.access_log" common
</VirtualHost>
再修改httpd的主配置文件:vim /usr/local//httpd/conf/httpd.conf
但是此时httpd服务并没有加载vhosts.conf文件(虚拟主机配置文件),所以要在httpd的主配置文件中使用Include命令包含到当前文件中,相当于在Include语句中把要包含的代码复制粘贴了过来
通过Include命令也实现了httpd服务的模块化功能管理
在第483行将注释去掉
最后使用systemctl restart httpd重启服务
实现基于域名访问不同内容
部署基于IP地址的虚拟主机
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens33:0
[root@localhost network-scripts]# vim ifcfg-ens33:0
# 修改IP地址为210并修改名称
IPADDR=192.168.10.210NAME=ens33:0
DEVICE=ens33:0
# 保存并退出
使用systemctl restart network重启网络
使用ip a命令就可以看到一个网卡拥有了两个不同的ip地址
修改虚拟主机配置文件:vim /usr/local//httpd/conf/extra/httpd-vhosts.conf
修改访问对应网页的ip地址
保存并退出,使用systemctl restart httpd重启服务
来到客户端主机(102)使用ip测试访问是否成功
部署基于端口的虚拟主机
修改虚拟主机配置文件:vim /usr/local//httpd/conf/extra/httpd-vhosts.conf
添加监听端口
实现基于端口访问不同站点
去客户端主机(102)测试结果如下
MySQL
MySQL是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,属于 Oracle 旗下产品。
MySQL的编译安装
使用rpm -q mysql-server mysql命令查询系统内是否安装了mysql,如果有,需要卸载才能进行下一步操作
使用yum -y install ncurses-devel autoconf命令安装ncurses开发包和自动化配置脚本的工具
ncurses-devel 是针对 ncurses 库的开发包。ncurses 是一个用于 Unix-like 系统的库,提供了控制终端屏幕输出和输入的函数,允许开发者创建基于文本的用户界面(TUI)。这个开发包包含了编译和开发 ncurses 应用程序所需的头文件和静态库文件。
将mysql的源码软件包拖到Xshell中
使用tar zxvf mysql-5.6.36.tar.gz命令解压,然后cd进入解压的目录
使用yum -y install cmake命令安装cmake编译命令
使用useradd -M -s /sbin/nologin mysql命令创建一个名为 mysql 的用户,该用户没有家目录,并且无法通过常规方式登录系统
使用cmake命令根据指定的参数,生成 MySQL 的配置文件和构建脚本
- -DCMAKE_INSTALL_PREFIX=/usr/local/mysql 指定安装目录为 /usr/local/mysql。
- -DSYSCONFDIR=/etc/ 指定配置文件目录为 /etc/。
- -DDEFAULT_CHARSET=utf8 指定默认字符集为 UTF-8。
- -DDEFAULT_COLLATION=utf8_general_ci 指定默认排序规则为 UTF-8 的 utf8_general_ci。
- -DWITH_EXTRA_CHARSETS=all 启用所有额外的字符集。
[root@localhost mysql-5.6.36]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc/ -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all
使用make命令执行编译操作,再使用make install命令执行安装操作
cd到/usr/local/目录下,使用chown -R mysql:mysql mysql/命令修改mysql目录及其所有子目录的属主和属组都为mysql
使用rm -rf /etc/my.cnf命令删除mariadb在安装系统时生成的文件,需要改为mysql的配置文件
进入 mysql 解压安装包目录下的 support-files 目录,拷贝 mysql 提供的模板配置文件到 /etc/ 下,并修改文件名为 my.cnf
[root@localhost ~]# cd mysql-5.6.36
[root@localhost mysql-5.6.36]# cd support-files/
[root@localhost support-files]# cp my-default.cnf /etc/my.cnf
MySQL初始化
使用源代码软件包安装的MySQL如果不初始化是无法正常使用的,除非是使用yum命令安装的
进入mysql的脚本目录下,可以看到mysql_install_db脚本文件
执行改脚本并指定运行时使用的用户、MySQL安装目录、MySQL数据目录的位置来初始化数据库
[root@localhost ~]# cd /usr/local/mysql/scripts/
[root@localhost scripts]# ls
mysql_install_db
[root@localhost scripts]# ./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
设置环境变量
通过重定向将环境变量参数追加到全局变量的文件末尾
然后重新加载全局变量文件
[root@localhost ~]# echo "export PATH=$PATH:/usr/local/mysql/bin">> /etc/profile
[root@localhost ~]# source /etc/profile
拷贝服务文件
拷贝mysql提供的服务文件到/etc/init.d/目录下并重命名为mysqld
为mysqld文件添加执行权
[root@localhost support-files]# cp mysql.server /etc/init.d/mysqld
[root@localhost support-files]# chmod +x /etc/init.d/mysqld
[root@localhost support-files]# chkconfig --add mysqld # 因为不需要手动添加路径,所以添加的服务名要和/etc/init.d/目录下的文件名一致
现在就可以使用chkconfig命令或systemctl命令来控制mysqld的运行状态
通过netstat命令可以看到mysql服务对应的端口号是3306
[root@localhost support-files]# chkconfig mysqld on # 开启自启mysql
[root@localhost support-files]# systemctl start mysqld
[root@localhost support-files]# netstat -anpt | grep mysql
tcp6 0 0 :::3306 :::* LISTEN 1759/mysqld
设置mysql密码
[root@localhost ~]# mysql -u root -p
# 此时的mysql是空密码,所以直接登入了mysql
mysql>set password=password('123456'); # 设置密码
mysql>exit
# 通过密码登录mysql
[root@localhost ~]# mysql -u root -p123456
PHP
PHP(Hypertext Preprocessor)是一种流行的开源服务器端脚本语言,特别适用于网页开发和动态网站的创建。它可以嵌入到HTML中,通常用于生成动态网页内容,或者处理表单数据等任务。
构建PHP运行环境
安装 PHP 软件包
1:准备工作
为了避免发生程序冲突等现象,建议先将 RPM 方式安装的 PHP 及相关依赖包
如果安装时找不到lxz-devel软件包,就要把仓库源换位阿里云的yum仓库再安装
[root@www ~]# rpm -e php php-cli php-ldap php-common php-mysql --nodeps
[root@www ~]# yum -y install zlib-devel libxml2 libxml2-devel lxz-devel
安装扩展工具库
(1)安装 libmcrypt
需要安装三个扩展工具库,可以设置好阿里的yum仓库,用yum安装
[root@www ~]# yum -y install libmcrypt libmcrypt-devel mcrypt mhash
3:编译安装 PHP
(1)解包
[root@www ~]# tar zxvf php-5.5.38.tar.gz [root@www ~]# cd php-5.5.38
(2)配置
[root@www php-5.5.38]# ./configure --prefix=/usr/local/php5 --with-mcrypt --with-apxs2=/usr/local/httpd/bin/apxs --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-config-file-path=/usr/local/php5 --enable-mbstring
- --prefix=/usr/local/php5:指定了 PHP 的安装目录前缀。在这个例子中,PHP 将被安装到 /usr/local/php5 目录下。
- --with-mcrypt:启用对 mcrypt 的扩展。Mcrypt 是一个加密库,PHP 可以通过这个选项与之集成,以便在应用程序中使用加密算法。
- --with-apxs2=/usr/local/httpd/bin/apxs:指定了 Apache HTTP Server 的 APXS 工具的路径,用于编译和安装 PHP 的 Apache 模块(即 mod_php)。
- --with-mysql=/usr/local/mysql:指定 MySQL 客户端函数集的路径,用于支持 PHP 的 MySQL 扩展。
- --with-mysqli=/usr/local/mysql/bin/mysql_config:指定扩展的 MySQLi 函数集的配置路径,通常是 mysql_config 可执行文件的路径,用于支持 MySQL 的改进版接口。
- --with-config-file-path=/usr/local/php5:指定 PHP 的配置文件(php.ini)的存放路径,即 PHP 将会在 /usr/local/php5 目录下寻找和存储其配置文件。
- --enable-mbstring:a启用 mbstring 扩展,这是 PHP 中处理多字节字符串的扩展,用于支持多语言编码处理(如UTF-8)。
PHP注意事项
当安装 PHP 时,根据选择的函数集不同,会影响到 PHP 连接 MySQL 数据库时使用的连接方式。如果选择使用 mysqlnd 函数集(例如 --with-mysqli=mysqlnd),
则 PHP 可以使用主机的 IP 地址进行连接。而如果选择本地函数集(例如 --with-apxs2=/usr/local/httpd/bin/apxs),
PHP 只能使用 'localhost'、'127.0.0.1' 或本地主机名进行连接,而不能使用主机的 IP 地址(例如 192.168.10.101)。
Apache注意事项
在整合 PHP 到 Apache 时,使用 --with-apxs2=/usr/local/httpd/bin/apxs 选项
会利用 Apache 的 APXS 工具从 mod_so 模块加载 PHP 作为模块(mod_php)到 Apache 中。重要的是,Apache 必须启用 mod_so 模块以支持这一功能。
(3)编译及安装
[root@www php-5.5.38]# make && make install
设置 LAMP 组件环境
(1)php.ini 配置调整
拷贝php提供的配置文件到安装目录下并重命名为php.ini,然后修改配置文件中的个别配置
[root@www php-5.5.38]# cp php.ini-development /usr/local/php5/php.ini
[root@www php-5.5.38]# vim /usr/local/php5/php.ini
default_charset = "UTF-8" # 去掉前面的注释
short_open_tag = On # 修改值
extension=php_mysqli.dll # 去掉前面的注释
(2)添加 ZendGuardLoader 优化模块
把ZendGuardLoader源代码软件包拖入XShell中,使用tar命令解压后进入解压目录。拷贝ZendGuardLoader.so,这个文件用来加载通过Zend Guard加密果的PHP脚本文件
安装ZendGuardLoader以便执行经过加密的PHP脚本文件
[root@www~]#tar zxvf zend-loader-php5.5-linux-x86_64_update1.tar.gz
[root@www~]#cd zend-loader-php5.5-linux-x86_64
[root@www zend-loader-php5.5-linux-x86_64]#cp ZendGuardLoader.so /usr/local/php5/lib/php
[root@www ~]# vim /usr/local/php5/php.ini
在文件开头的[PHP]单元下面添加:
[PHP]
zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so
zend_loader.enable=1
httpd.conf 配置调整
编辑httpd的配置文件vim /usr/local/httpd/conf/httpd.conf
在末行模式搜索index(:/index)添加优先使用的默认索引文件
在末行模式搜索AddType(:/AddType;注意区分大小写)
最后使用httpd -t然后使用systemctl restart httpd重启httpd服务
测试 LAMP 协同工作
1:测试 PHP 网页能否正确显示
调用phpinfo函数在浏览器上展示php的信息
[root@www ~]# vim /usr/local/httpd/htdocs/test1.php
<?php
phpinfo( );
?>
此时使用浏览器访问192.168.10.101/test.php
可以正常显示php版本信息
2:测试 PHP 网页能否访问 MySQL 数据库
[root@www ~]# vim /usr/local/httpd/htdocs/test2.php
<?php
$link=mysqli_connect('localhost','root','123456');
if($link) echo "MySQL数据库连接成功";
mysqli_close($link);
?>
对数据库的连接授权,授权后可以使用主机名连接
[root@localhost ~]# mysql -u root -p123456
use mysql;
grant all on *.* to root@'192.168.10.101' identified by '123456';
如果用的是mysqlnd,要用IP地址进行连接,127.0.0.1或192.168.10.101都可以
LAMP 架构应用实例
1:部署 phpMyAdmin 系统
拖入phpMyAdmin压缩包,解压包并将解压出的目录复制到网站目录
[root@www ~]# tar zxvf phpMyAdmin-4.7.2-all-languages.tar.gz
[root@www ~]# mv phpMyAdmin-4.7.2-all-languages/ /usr/local/httpd/htdocs/phpMyAdmin
2:建立配置文件 config.inc.php
拷贝一份phpMyAdmin提供的模板文件作为配置文件
[root@www ~]# cd /usr/local/httpd/htdocs/phpMyAdmin
[root@www phpMyAdmin]# cp config.sample.inc.php config.inc.php
如果使用的函数集是msqlnd,需要修改文件
[root@www phpMyAdmin]# vim config.inc.php
// 第31行,修改ip
$cfg['Servers'][$i]['host'] = '192.168.10.101';
3:访问 phpMyAdmin 的 Web 管理界面
通过root账户和设置的mysql密码登录MySQL
相关文章:

LAMP万字详解(概念、构建步骤)
目录 LAMP Apache 起源 主要特点 软件版本 编译安装httpd服务器 编译安装的优点 操作步骤 准备工作 编译 安装 优化执行路径 添加服务 守护进程 配置httpd 查看 Web 站点的访问情况 虚拟主机 类型 部署基于域名的虚拟主机 为虚拟主机提供域名解析ÿ…...

金南瓜科技SECS/GEM:引领智能制造新潮流
引言 在当今快速发展的半导体行业中,智能制造和自动化生产已成为提升效率和降低成本的关键。金南瓜科技凭借其先进的SECS/GEM解决方案,正成为这一变革的先锋。 SECS/GEM:智能制造的核心 SECS/GEM(SEMI Equipment Communications …...

昇思训练营打卡第二十一天(DCGAN生成漫画头像)
DCGAN,即深度卷积生成对抗网络(Deep Convolutional Generative Adversarial Network),是一种深度学习模型,由Ian Goodfellow等人在2014年提出。DCGAN在生成对抗网络(GAN)的基础上,引…...

东方通Tongweb发布vue前端
一、前端包中添加文件 1、解压vue打包文件 以dist.zip为例,解压之后得到dist文件夹,进入dist文件夹,新建WEB-INF文件夹,进入WEB-INF文件夹,新建web.xml文件, 打开web.xml文件,输入以下内容 …...

spring xml实现bean对象(仅供自己参考)
对于spring xml来实现bean 具体代码: <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaL…...

MiniGPT-Med 通用医学视觉大模型:生成医学报告 + 视觉问答 + 医学疾病识别
MiniGPT-Med 通用医学视觉大模型:生成医学报告 视觉问答 医学疾病识别 提出背景解法拆解 论文:https://arxiv.org/pdf/2407.04106 代码:https://github.com/Vision-CAIR/MiniGPT-Med 提出背景 近年来,人工智能(AI…...

如何判断ip地址在同一个网段:技术解析与实际应用
在网络世界中,IP地址就像每个人的身份证一样,是识别和定位网络设备的关键。然而,仅仅知道IP地址还不足以完全理解其背后的网络结构和通信方式。特别是当我们需要判断两个或多个IP地址是否位于同一网段时,就需要借助子网掩码这一概…...

linux高级编程(TCP)(传输控制协议)
TCP与UDP: TCP: TCP优点: 可靠,稳定 TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统…...

【常见开源库的二次开发】一文学懂CJSON
简介: JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于JavaScript的一个子集,但是JSON是独立于语言的,这意味着尽管JSON是由JavaScript语法衍生出来的,它可以被任何编程语言读取和生成…...

点云下采样有损压缩
转自本人博客:点云下采样有损压缩 点云下采样是通过一定规则对原点云数据进行再采样,减少点云个数,降低点云稀疏程度,减小点云数据大小。 1. 体素下采样(Voxel Down Sample) std::shared_ptr<PointClo…...

AutoHotKey自动热键(六)转义符号
转义符号 符号说明,, (原义的逗号). 注意: 在命令最后一个参数中的逗号不需要转义, 因为程序知道把它们作为原义处理. 对于 MsgBox 所有参数同样如此, 因为它会智能的处理逗号.%% (原义的百分号) (原义的重音符; 即两个连续的转义符产生单个原义字符);; (原义的分号). 注意: 仅…...

第16章 主成分分析:四个案例及课后习题
1.假设 x x x为 m m m 维随机变量,其均值为 μ \mu μ,协方差矩阵为 Σ \Sigma Σ。 考虑由 m m m维随机变量 x x x到 m m m维随机变量 y y y的线性变换 y i α i T x ∑ k 1 m α k i x k , i 1 , 2 , ⋯ , m y _ { i } \alpha _ { i } ^ { T } …...

股票分析系统设计方案大纲与细节
股票分析系统设计方案大纲与细节 一、引言 随着互联网和金融行业的迅猛发展,股票市场已成为重要的投资渠道。投资者在追求财富增值的过程中,对股票市场的分析和预测需求日益增加。因此,设计并实现一套高效、精准的股票分析系统显得尤为重要。本设计方案旨在提出一个基于大…...

.gitmodules文件
.gitmodules文件在Git仓库中的作用 .gitmodules 文件是 Git 版本控制系统中用来跟踪和管理子模块的配置文件。子模块允许你将一个 Git 仓库嵌套在另一个仓库中,这样可以方便地管理多个项目之间的依赖关系。 在 .gitmodules 文件中,通常会记录每个子模块…...

STM32 SPI世界:W25Q64 Flash存储器的硬件与软件集成策略
摘要 在嵌入式系统设计中,选择合适的存储解决方案对于确保数据的安全性和系统的可靠性至关重要。W25Q64 Flash存储器因其高性能和大容量成为STM32微控制器项目中的热门选择。本文将深入探讨STM32与W25Q64 Flash存储器的硬件连接、软件集成以及SPI通信的最佳实践。 …...

【计算机网络仿真】b站湖科大教书匠思科Packet Tracer——实验17 开放最短路径优先OSPF
一、实验目的 1.验证OSPF协议的作用; 二、实验要求 1.使用Cisco Packet Tracer仿真平台; 2.观看B站湖科大教书匠仿真实验视频,完成对应实验。 三、实验内容 1.构建网络拓扑; 2.验证OSPF协议的作用。 四、实验步骤 1.构建网…...

ChatGPT对话:python程序模拟操作网页弹出对话框
【编者按】单击一网页中的按钮,弹出对话框网页,再单击其中的“Yes”按钮,对话框关闭,请求并获取新网页。 可能ChatGPT第一次没有正确理解描述问题的含义,再次说明后,程序编写就正确了。 1问:pyt…...

利用亚马逊云科技云原生Serverless代码托管服务开发OpenAI ChatGPT-4o应用
今天小李哥继续介绍国际上主流云计算平台亚马逊云科技AWS上的热门生成式AI应用开发架构。上次小李哥分享了利用谷歌云serverless代码托管服务Cloud Functions构建Gemini Pro API,这次我将介绍如何利用亚马逊的云原生服务Lambda调用OpenAI的最新模型ChatGPT 4o。…...

Selenium 切换 frame/iframe
环境: Python 3.8 selenium3.141.0 urllib31.26.19说明: driver.switch_to.frame() # 将当前定位的主体切换为frame/iframe表单的内嵌页面中 driver.switch_to.default_content() # 跳回最外层的页面# 判断元素是否在 frame/ifame 中 # 126 邮箱为例 # …...

VOI(Virtual Operating System Infrastructure,虚拟操作系统基础架构)
VOI(Virtual Operating System Infrastructure,虚拟操作系统基础架构)架构在桌面虚拟化领域具有其独特的优势,使得它在某些场景下表现尤为出色。以下是几个具体场景: 1. 重载性能需求场景 表现: 高效利用…...

迭代器模式(大话设计模式)C/C++版本
迭代器模式 C #include <iostream> #include <string> #include <vector>using namespace std;// 迭代抽象类,用于定义得到开始对象、得到下一个对象、判断是否到结尾、当前对象等抽象方法,统一接口 class Iterator { public:Iterator(){};virtu…...

vue学习day04-计算属性、computed计算属性与methods方法、计算属性完整写法
10、计算属性 (1)概念: 基于现有的数据,计算出来的新属性。依赖于数据变化,自动重新计算。 (计算属性->可以将一段求值的代码进行封装) (2)语法: 1&a…...

关于力扣150题目——逆波兰表达式求值Java实现的三种解法
题目介绍 逆波兰表达式是一种后缀表达式,其运算符位于操作数之后。力扣150题目要求我们实现一个函数,计算给定逆波兰表达式的值。本文将介绍三种不同的Java实现方法来解决这个问题。 解法一:使用栈 这是最直观和常见的解法,使用…...

FTP与TFTP
1、TFTP(简单文件传输协议) TFTP是TCP/IP协议族中一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。 基于UDP协议 端口号:69 特点:简单、轻量级、易于实现 传输过程&…...

【Linux】System V信号量详解以及semget()、semctl()和semop()函数讲解
💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …...

JAVA预编译简单理解
目录 一、JSP预编译 二、JDBC预编译 一、JSP预编译 JSP(JavaServer Pages)是一种动态网页技术标准,它允许将Java代码嵌入到HTML页面中。当第一次请求一个JSP页面时,Web服务器(如Tomcat)会将JSP页面转换成一…...

nvm 管理多版本 node
1、下载 先不安装node 下载 nvm 1.1.10-setup.zip 解压:nvm:https://nvm.uihtm.com/ 新建nodejs/node、nodejs/nvm文件夹用于存放node版本和nvm安装路径 安装nvm:上述链接有安装教程 查看是否安装成功:重新打开cmd 输入 nvm nv…...

C++中的多重继承和虚继承:横向继承、纵向继承和联合继承;虚继承
多重继承 A.横向多重继承: B.纵向多重继承: C.联合多重继承: 因为 single 和 waiter 都继承了一个 worker 组件,因此 SingingWaiter 将包含两个 worker 组件,那么将派生类对象的地址赋给基类指针将出现二义性 那么如何…...

利用node连接mongodb实现一个小型后端服务系统demo
http 请求 实现get请求数据库数据;实现添加数据实现编辑数据实现删除数据实现导出txt文件、Excel文件实现查询数据库数据并利用导出为excel文件 node 版本 16.16.0 node 版本 18.16.0 会连接 MongoDB 数据库错误。 Connected to MongoDB failed MongoServerSele…...

大数据面试题之数据库(3)
数据库有必要建索引吗? MySQL缺点? 什么是脏读?怎么解决? 为什么要有三大范式,建数据库时一定要遵循吗? 数据库一般对哪些列建立索引?索引的数据结构? MySOL中索引的建立需要考虑哪些问题 关系型数据库与非关系型数据库区别 MySQL与Redis区别 …...