Apache服务的搭建与配置(超详细版)
前言
Apache是一种常见的Web服务器软件,广泛用于Linux和其他UNIX操作系统上。它是自由软件,可以通过开放源代码的方式进行自由分发和修改。Apache提供了处理静态和动态内容的能力,而且还支持多种编程语言和脚本,如PHP、Python和Perl。此外,Apache还支持SSL、TLS和虚拟主机等功能,可以很好地满足大量的Web应用程序的需求。
目录
1 Apache服务的搭建
1.1 准备环境
1.2 安装Apache
1.3 Apache配置文件
1.4 启动Apache
1.5 查看服务是否启动
1.6 访问验证httpd服务
2 Apache配置实例
2.1 实例一
2.2 实例二
2.3 实例三
2.4 实例四
2.5 Apache常用命令
3 Apache配置用户认证
3.1 准备环境
3.2 下载压缩包
3.3 解压压缩包
3.4 配置
3.5 编译安装
3.6 检查配置文件有无语法错误
3.7 Apache配置用户认证
3.7.1 编辑文件
3.7.2 打开模块
3.7.3 htpasswd生成密码文件
3.8 加载配置并启动
3.9 测试
4 Apache配置默认虚拟主机
4.1 编辑主配置文件
4.2 开启模块
4.3 编辑文件
4.4 测试
4.4.1 准备
4.4.2 添加本地解析
4.4.3 启动服务
4.4.4 测试(Ctrl+c终止进程)
5 Apache配置rewrite规则
5.1 准备
5.2 开启模块
5.3 编辑文件
5.4 检查配置文件有无语法错误
5.5 添加本地解析
5.6 重新加载下配置文件
5.7 测试
5.8 禁止指定user_agent
5.9 通过rewrite限制某个目录
5.10 rewrite变量
6 Apache配置日志切割与管理
6.1 Apache主配置文件日志相关格式规定
6.2 日志切割
6.2.1 准备
6.2.2 修改文件
6.2.3 重启配置
6.2.4 修改时间
6.2.5 测试
6.3 不记录制定文件类型的日志
7 配置静态缓存
7.1 开启模块
7.2 编辑文件
7.3 测试
8 Apache配置防盗链
8.1 准备
8.2 配置防盗链
9 Apache访问控制
1 Apache服务的搭建
1.1 准备环境
(1)关闭防火墙
systemctl stop firewalld
【永久关闭防火墙 systemctl disable firewalld】
systemctl disable firewalld

(2)关闭SELinux
修改配置文件
vi /etc/selinux/config
#将SELINUX=enforcing修改为SELINUX=disabled。

setenforce 0
【永久关闭SELinux,重启生效,使用reboot命令】
reboot
1.2 安装Apache
yum -y install httpd

安装成功后,会产生下面两个文件:
#主配置文件 /etc/httpd/conf/httpd.conf
#默认网网站家目录 /var/www/html
1.3 Apache配置文件
/etc/httpd/conf/httpd.conf
serverRoot "/etc/httpd" #存放配置文件的目录
Listen 80 #Apache服务监听端口
User apache #子进程的用户
Group apache #子进程的组
serverAdmin root@locahost #设置管理员邮件地址
DocumentRoot "/var/www/html" #网站家目录
#设置DocumentRoot指定目录的属性
<Directory "/var/www/html"> # 网站容器开始标识
Options Indexes FollowSymLinks #找不到主页时,以目录的方式呈现,并允许链接到网站根目录以外
Allowoverride None # none不使用,htaccess控制,all允许
Require all granted # granted表示运行所有访问,denied表示拒绝所有访问
</Directory> #容器结束
DirectoryIndex index.html #定义主页文件,当访问到网站目录时如果有定义的主页文件,网站会自动访问
addDefaultCharset UTF-8 #字符编码,如果有中文的话,有可能需要修改为gb2312或者gbk,因你的网站文件的默认编码而异
1.4 启动Apache
systemctl start httpd
1.5 查看服务是否启动
如果没有启动成功,原因是80端口被占用。
使用如下命令查看80端口:
lsof -i:80

【确保安装了lsof(yum -y install lsof)】
yum -y install lsof

启动成功,使用浏览器访问ip地址即会出现Testing 123..页面

启动失败

1.6 访问验证httpd服务
curl +ip地址
我们也可以使用文本浏览器,方便测试。
安装elinks文本浏览器
yum - y install elinks

访问(Ctrl+c退出)
elinks +ip地址

2 Apache配置实例
在网站根目录/var/www/html下面创建一个主页文件【切记,创建的后缀必须是html】
cd /var/www/html
touch index.html

2.1 实例一
在 index.html 中添加内容
echo 'mortalz7' > /var/www/html/index.html
重新启动服务
systemctl restart httpd
接下来使用浏览器访问即可

2.2 实例二
编辑 index.html 文件
vi /var/www/html/index.html
把主页文件写成html标签格式。
在index.html中添加如下内容:
<html><head><title>测试</title></head>
<body><h1 align="center">mortalz7</h1>
</body>
</html>
重新启动服务
systemctl restart httpd
浏览器访问

2.3 实例三
修改家目录
创建www目录
mkdir /www
编辑主配置文件
vi /etc/httpd/conf/httpd.conf
显示行号
:set nu
:119
DocumentRoot "/var/www/html" 修改为 DocumentRoot "/www"
修改前:

修改后:

:131
<directory “var/www/html”>修改为<directory ”/www”>
修改前:

修改后:

重新启动服务
systemctl restart httpd
测试:
cd /www
vi index.html
添加如下内容:
mortal
重新启动服务
systemctl restart httpd
浏览器访问

2.4 实例四
修改主页类型或者主页名
编辑主配置文件
vi /etc/httpd/conf/httpd.conf
显示行号
:set nu
:164
将index.html修改为indel.php
修改前:

修改后:

重新加载服务(重启服务也可以)
systemctl reload httpd
或者
systemctl restart httpd
添加内容
echo "mortalz7 php" > /www/index.php
浏览器访问即可

2.5 Apache常用命令
#/usr/local/apache2/bin/apachectl -M #查看常见的模块(包括动态和静态)
#/usr/local/apache2/bin/apachectl -l #查看加载的静态模块
#/usr/local/apache2/bin/apachectl -t #检查配置文件有无语法错误
#/usr/local/apache2/bin/apachectl graceful #加载配置文件,但不重启
#/usr/local/apache2/bin/apachectl start/restart/stop #启动/重启/停止Apache服务
3 Apache配置用户认证
3.1 准备环境
yum -y install gcc gcc-c++ make pcre pcre-devel gd-devel openssl-devel zlib zlib-devel

为了方便,先将/tmp目录下内容删掉。
cd /tmp
rm -rf *
3.2 下载压缩包
先把wget下载好
yum -y install wget
下载压缩包
wget https://mirrors.aliyun.com/apache/httpd/httpd-2.4.58.tar.gz

3.3 解压压缩包
tar xf httpd-2.4.58.tar.gz

3.4 配置
cd httpd-2.4.58/
./configure --prefix=/usr/local/apache2

【问题解决】
发现出现configure: error: APR not found. Please read the documentation.问题,我们使用下面命令解决。
yum -y install apr-*

解决完重新执行一遍配置即可。
3.5 编译安装
make && make install

3.6 检查配置文件有无语法错误
/usr/local/apache2/bin/apachectl -t
出现如图所示问题:
![]()
【问题解决】
原因:
ServerName有问题
解决方法:
编辑配置文件:
vi /usr/local/apache2/conf/httpd.conf
添加如下内容:
ServerName localhost:80
编辑完成后保存退出,重新执行指令,只显示Syntax OK即表示成功。

3.7 Apache配置用户认证
(用户认证的用途:当一个网站被访问的时候,需要输入用户名和密码才能进入,而不是直接登录网站,这种认证的形式可以针对网站的一个目录进行,也可以针对单个的访问文件进行)
3.7.1 编辑文件
vi /usr/local/apache2/conf/extra/httpd-vhosts.conf
全部删除,写入如下内容:
<VirtualHost *:80>DocumentRoot "/www/abc" <Directory /www/abc>AllowOverride AuthConfigAuthName "mortalz7" AuthType BasicAuthUserFile /www/.htpasswdrequire valid-user
</Directory></VirtualHost>
AllowOverride AuthConfig #允许对/www/abc 目录下的内容进行用户认证
/data/www/abc #为将要访问的页面的目录
AuthName #指定存放的用户
AuthUserFile /data/.htpasswd #指定存放用户名和密码的文件
3.7.2 打开模块
编辑Apache的主配置文件
vi /usr/local/apache2/conf/httpd.conf
打开模块
:/httpd-vhost
将Include conf/extra/httpd-vhosts.conf前面的#去掉
![]()
3.7.3 htpasswd生成密码文件
指定用户为mortalz7,自己设定一个密码,并重新输入一下,出现Adding password for user mortalz7即表示成功。
htpasswd -c /www/.htpasswd mortalz7

查看,显示用户mortalz7,表示用户设置完成。
cat /www/.htpasswd

3.8 加载配置并启动
/usr/local/apache2/bin/apachectl graceful
/usr/local/apache2/bin/apachectl start
【问题解决】
一、问题:
httpd not running, trying to start
(98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
(98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
AH00015: Unable to open logs


二、原因:
httpd服务启动,占用80端口
三、解决方法:
先下载好psmisc
yum install psmisc
杀死httpd
killall -9 httpd
重新执行下面俩命令即可
/usr/local/apache2/bin/apachectl graceful
/usr/local/apache2/bin/apachectl start

3.9 测试
浏览器访问 ip地址+/www/abc
192.168.10.118/www/abc
出现输入用户名和密码页面即表示成功。

4 Apache配置默认虚拟主机
4.1 编辑主配置文件
vi /usr/local/apache2/conf/httpd.conf
:207
Require all denied 修改为 Require all granted
修改前:

修改后:

4.2 开启模块
:/httpd-vhost
将Include conf/extra/httpd-vhost.conf前面的#去掉
4.3 编辑文件
vi /usr/local/apache2/conf/extra/httpd-vhosts.conf
全部删除,写入如下内容:
<VirtualHost *:80>DocumentRoot "/tmp/111" ServerName 111.com
</VirtualHost><VirtualHost *:80>DocumentRoot "/data/www" ServerName www.test.comServerAlias www.aaa.com
</VirtualHost>
除了已作过设置的域名(aaa、test)外,其余访问的域名均跳转到/tmp/111下。
4.4 测试
4.4.1 准备
为了方便测试,我们先往index.html 文件中添加点内容。
cd /tmp
mkdir 111
cd 111/
vi index.html
写入如下内容:
mortalz7,hello i am www.111.com
cd /data/www
vi index.html
写入如下内容:
mortalz7,hello i am www.aaa.com and www.test.com
4.4.2 添加本地解析
vi /etc/hosts
添加如下内容:
192.168.10.118 www.111.com
192.168.10.118 www.aaa.com
192.168.10.118 www.test.com

4.4.3 启动服务
/usr/local/apache2/bin/apachectl start
如果显示
httpd(pid XXXX) already running
解决方法:
killall httpd
再重新启动即可
4.4.4 测试(Ctrl+c终止进程)
ping www.111.com

ping www.aaa.com

ping www.test.com

curl -x +ip地址:80 www.aaa.com
curl -x +ip地址:80 www.test.com
curl -x +ip地址:80 www.111.com
【切记加上端口号】
没有加:80会显示
curl: (7) Failed connect to 192.168.10.118:80; 拒绝连接/Connection refused
5 Apache配置rewrite规则
Apache中rewrite规则代码均写在<IfModule mod_rewrite.c>模块下(前提要在Apache主配置文件中前面#去掉,开启模块才能使用)
web服务可能会用到多个域名,域名有主有次,输入次域名会主动跳转到主域名进行访问。设定为301永久跳转,302是暂时跳转。
5.1 准备
创建好/data/www(创建过不用进行此操作)
mkdir -p /data/www
cd /data/www
vi index.html
写入如下内容:
mortalz7,hello,this is test rewrite
5.2 开启模块
vi /usr/local/apache2/conf/httpd.conf
:/rewrite
:156
将LoadModule rewrite_module modules/mod_rewrite.so前面#去掉

:481
:/httpd-vhosts
将Include conf/extra/httpd-vhost.conf前面的#去掉

5.3 编辑文件
vi /usr/local/apache2/conf/extra/httpd-vhosts.conf
清空,添加如下内容:
<VirtualHost *:80>DocumentRoot "/data/www"
<IfModule mod_write.c>RewriteEngine onRewriteCond %{HTTP_HOST} ^www.aaa.com$ [OR]RewriteCond %{HTTP_HOST} ^www.bbb.com$RewriteRule ^/(.*)$ http://www.test.com/$1 [R=301,L]
</IfModule>
</VirtualHost>
调用rewrite模块:
RewriteEngine on #打开rewrite功能
RewriteCond #跳转条件
RewriteRule #跳转规则
5.4 检查配置文件有无语法错误
/usr/local/apache2/bin/apachectl -t

5.5 添加本地解析
vi /etc/hosts
添加如下内容:
192.168.10.118 www.aaa.com
192.168.10.118 www.bbb.com
192.168.10.118 www.test.com

5.6 重新加载下配置文件
/usr/local/apache2/bin/apachectl restart
5.7 测试
curl www.aaa.com
![]()
curl www.bbb.com
![]()
curl www.test.com
![]()
5.8 禁止指定user_agent
还是提前把模块开启【刚才做过,这次不再做,没做过请参考:】
修改文件
vi /usr/local/apache2/conf/extra/httpd-vhosts.conf
清空,添加如下内容:
<VirtualHost *:80>DocumentRoot "/data/www"
<IfModule mod_write.c>RewriteEngine onRewriteCond %{HTTP_USER_AGENT} ^.*curl.* [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^.*chrome.* [NC] RewriteRule .* - [F]
</IfModule>
</VirtualHost>
先不重新启动配置测试
curl www.test.com
重新启动配置测试
/usr/local/apache2/bin/apachectl restart
curl www.test.com
访问不成功,报403错误了。
5.9 通过rewrite限制某个目录
【相同做法,自行配置并测试】
<VirtualHost *:80>DocumentRoot "/data/www"
<IfModule mod_write.c>RewriteEngine onRewriteCond %{REQUEST_URL} ^.*/tmp/.* [NC] RewriteRule .* - [F]
</IfModule>
</VirtualHost>
RewriteCond %{REQUEST_URL} ^.*/tmp/.* [NC] #禁止访问tmp目录
RewriteRule .* - [F] #禁止
5.10 rewrite变量
%{HTTP_USER_AGENT} #表示访问的user_agent
%{HTTP_HOST} #表示当前访问的网址,只是指前缀部分,格式是www.xxx.com不包括”http://”和”/”
%{REQUEST_URL} #表示访问的相对根目录地址,就是域名/后面的成分,格式包括最前面的”/”
举例:
www.123.com/xiang/1.html #www.123.com表示HOST xiang/1.html表示URL
6 Apache配置日志切割与管理
web服务器出现大量的访问日志和错误日志,我们要对日志进行切割,方便管理人员的查询,一些不重要的记录,也可以规定日志中不显示这些。
虚拟主机配置文件日志路径:/usr/local/apache2/logs

6.1 Apache主配置文件日志相关格式规定
vi /usr/local/apache2/conf/httpd.conf
:/log_config

【默认开启的】
:/LogFormat
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common

%h #来源ip
%u #访问的user
%t #时间
%r #动作
6.2 日志切割
6.2.1 准备
创建好/data/www(创建过不用进行此操作)
mkdir -p /data/www
cd /data/www
vi index.html
写入如下内容:
mortalz7,hello,this is test log
6.2.2 修改文件
vi /usr/local/apache2/conf/extra/httpd-vhosts.conf
清空,添加如下内容:
<VirtualHost *:80>DocumentRoot "/data/www"ServerName www.test.comCustomLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/test.com-access%y%m%d_log 86400" combined
</VirtualHost>
%y%m%d规定年月日,86400秒即一天,一天切割一次。
6.2.3 重启配置
/usr/local/apache2/bin/apachectl restart
6.2.4 修改时间
date查看时间
date
![]()
修改时间
date +月日时分
我将时间修改成一天后,为了简单,我直接修改为10月30号
![]()
6.2.5 测试
curl +ip地址
![]()
cd /usr/local/apache2/logs/

多出 test.com-access231030_log,日志切割成功!
6.3 不记录制定文件类型的日志
【更刚才一样,配置文件重新编辑即可。】
vi /usr/local/apache2/conf/extra/httpd-vhosts.conf
清空,添加如下内容:
<VirtualHost *:80>DocumentRoot "/data/www"ServerName www.test.comErrorLog "logs/test.com-error_log"SetEnvif Request_URL ".*\.gif$" image-requestSetEnvif Request_URL ".*\.png$" image-requestSetEnvif Request_URL ".*\.bmp$" image-requestSetEnvif Request_URL ".*\.swf$" image-requestSetEnvif Request_URL ".*\.js$" image-requestSetEnvif Request_URL ".*\.css$" image-requestCustomLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/test.com-access%y%m%d_log 86400" combined env=!image-request
</VirtualHost>
7 配置静态缓存
对于网站上一些静态资源(图片、html、css等),通过客户端缓存,减少请求,加快页面的加载速度,网站加载速度快了,用户体验感就会越好,需要提前确认是否支持 mod_expires.c模块。
7.1 开启模块
vi /usr/local/apache2/conf/httpd.conf
搜索expires
:/expires
将LoadModule expires_module modules/mod_expires.so前的#去掉

:/httpd-vhosts
将Include conf/extra/httpd-vhost.conf前面的#去掉【前面开启请忽略】

7.2 编辑文件
vi /usr/local/apache2/conf/extra/httpd-vhosts.conf
清空,添加如下内容:
<VirtualHost *:80>DocumentRoot "/data/www"ServerName www.test.com
<IfModule mod_expires.c>ExpiresActive onExpiresBytype image/gif "access plus 1 days"ExpiresBytype image/jpeg "access plus 24 hours"ExpiresBytype image/png "access plus 24 hours"ExpiresBytype text/css "now plus 2 hours"ExpiresBytype application/x-javascript "now plus 2 hours"ExpiresBytype application/x-shockwave-flash "now plus 2 hours"ExpiresDeFault "now plus 0 min"
</IfModule>
</VirtualHost>
7.3 测试
cd /data/www
yum -y install lrzsz
rz命令上传个图片
rz
授权
chmod 777 lab.jpg
重启配置
/usr/local/apache2/bin/apachectl restart
【如果显示httpd not running, trying to start则使用/usr/local/apache2/bin/apachectl start启动即可。】

关闭防火墙和selinux【之前关掉请忽略此步骤】
systemctl stop firewalld
setenforce 0

网址输入:IP地址/图片名称访问
我的IP地址是192.168.10.119,上传的图片名称是lab.jpg
192.168.10.119/lab.jpg

curl -x 192.168.10.119:80 'http://www.test.com/lab.jpg' -I

显示200 OK ,成功!
8 Apache配置防盗链
盗链:在自己的页面上展示一些并不在自己服务器上的一些内容,通过一些技术手段获得别人服务器上的一些资源,绕过别人的资源展示页面,在自己的页面上向用户提供内容。
准备: 两台虚拟机
IP地址:第一台虚拟机 192.168.10.119
第二台虚拟机 192.168.10.110
8.1 准备
第一台虚拟机:
编辑文件
vi /usr/local/apache2/conf/extra/httpd-vhosts.conf
清空,添加如下内容:
<VirtualHost *:80>DocumentRoot "/data/www"ServerName www.test.com
</VirtualHost>
第二台虚拟机:
安装服务
yum -y install httpd
cd /var/www/html
vi index.html
写入如下内容:
<html><title>test</title>
<body><h1>mortalz7</h1><img src="http://www.test.com/lab.jpg">
</body>
</html>
添加本地解析
vi /etc/hosts
添加如下内容:(IP地址是第一台机器的)
192.168.10.119 www.test.com

关闭防火墙和selinux
systemctl stop firewalld
setenforce 0
重启Apache服务
systemctl restart httpd
测试:
浏览器输入第二台主机IP地址访问即可。
8.2 配置防盗链
第一台虚拟机:
vi /usr/local/apache2/conf/extra/httpd-vhosts.conf
清空,添加如下内容:
<VirtualHost *:80>DocumentRoot "/data/www"ServerName www.test.comSetEnvIfNoCase Referer "^http://.*\.test\.com" local_ref
<filesmatch "\.(txt|png|gif|doc|mp3|zip|rar|jpg|css|js)">Order Allow,DenyAllow from env=local_ref
</filesmatch>
</VirtualHost>
SetEnvIfNoCase Referer "^http://.*\.test\.com" local_ref #给网站做标注
<filesmatch "\.(txt|png|gif|doc|mp3|zip|rar|jpg|css|js)"> #规定文件类型
Allow from env=local_ref #允许local_ref引用
重新加载下配置文件
/usr/local/apache2/bin/apachectl graceful
重启配置
/usr/local/apache2/bin/apachectl restart
测试:
浏览器输入第二台主机IP地址访问
192.168.10.110

图片显示不出来,实验成功!
9 Apache访问控制
作用:控制对网站资源的访问,还可以对特定的网站目录添加访问权限。
准备:两台虚拟机
IP地址:第一台虚拟机 192.168.10.119
第二台虚拟机 192.168.10.110
禁止IP地址/网段进行访问
第一台虚拟机:
vi /usr/local/apache2/conf/extra/httpd-vhosts.conf
清空,添加如下内容:
<VirtualHost *:80>DocumentRoot "/data/www"ServerName www.test.com
<Directory "/data/www">AllowOverride Noneoptions Noneorder allow,denyAllow from alldeny from 192.168.10.0/24
</Directory>
</VirtualHost>
order allow,deny #先允许后拒绝
Allow from all #允许所有人访问
deny from <ip地址> #禁止此IP地址访问
deny from 192.168.10.0/24 #禁止此网段(192.168.10.0/24)的IP地址访问
重新加载下配置文件
/usr/local/apache2/bin/apachectl graceful
重启配置
/usr/local/apache2/bin/apachectl restart

测试:
第二台虚拟机:
curl -I <第一台虚拟机的IP地址>
curl -I 192.168.10.119

出现403 Forbidden访问错误,实验成功!
创作不易,给个三连吧~

相关文章:
Apache服务的搭建与配置(超详细版)
前言 Apache是一种常见的Web服务器软件,广泛用于Linux和其他UNIX操作系统上。它是自由软件,可以通过开放源代码的方式进行自由分发和修改。Apache提供了处理静态和动态内容的能力,而且还支持多种编程语言和脚本,如PHP、Python和P…...
设计模式大赏(一):桥接模式,组合模式
设计模式大赏(一):桥接模式,组合模式 导言 本篇文章是设计模式大赏中的第一篇文章,这个系列的文章中我们主要将介绍一些常见的设计模式,主要是我在看Android源码中发现用到的一些设计模式。本篇文章将主要…...
数据通信——应用层(DHCP的原理与配置)
引言 假如我们的网络中有N台设备,它们都要设置IP地址,如果人工去一个个配置不仅不方便管理还很麻烦。因此我们用DHCP来自动分配地址。 一,系统的启动流程 不仅是计算机、很多网络设备的启动流程如下: 设备上电后,硬件…...
力扣151.反转字符串中的单词
原题链接:力扣151.反转字符串中的单词 全代码: 需要复刷 class Solution { public:void reverse(string& s, int start, int end){ //翻转,区间写法:左闭右闭 []for (int i start, j end; i < j; i, j--) {swap(s[i],…...
vim三种模式,文本操作(操作字符/光标,列出行号可视化块模式/多文件查看)
目录 vim--文本编辑器 功能 基本概念 命令/默认模式 插入模式 底行模式 文本操作 引入 移动光标位置 删除字符 -- x/dd 复制/粘贴字符 -- yw/yyp 替换文本 -- r / %s 底行模式 全局替换 -- /g 撤销操作 -- u / ctrlr 修改字符 -- cw 示例 跳行 -- ctrlg 底行…...
jquery控制easyui中combobox、textbox显示隐藏
//combobox下拉框 $("#下拉框id.combo").hide();//textbox输入框 $("#输入框id.textbox").hide(); 参考网址: https://blog.csdn.net/Coldmood/article/details/128279727...
Android拖放startDragAndDrop拖拽onDrawShadow静态添加xml布局View,Kotlin(4)
Android拖放startDragAndDrop拖拽onDrawShadow静态添加xml布局View,Kotlin(4) import android.content.ClipData import android.graphics.Canvas import android.graphics.Point import android.os.Bundle import android.util.Log import a…...
Servlet 初始化参数(web.xml和@WebServlet)
1、通过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/xm…...
shell_62.shell脚本生成一个标准的 SQL INSERT 语句
无论是将文件读入脚本,还是将数据从脚本输出到文件,都会用到文件重定向,这是一种很 常见的操作。本节中的示例脚本两种功能皆有。它会读取 CSV 格式的数据文件,输出 SQL INSERT 语句,并将数据插入数据库。 shell 脚本使…...
华为ICT——第五章语音处理理论与实践
目录 语言学: 主要应用场景: 语言学: 语言学: 语音学(1) 语音学(2) 语音处理介绍: 人类语音的来源: 语言数据: 语言信号预处理: …...
ardupilot开发 --- SLAM 篇
1. 视觉SLAM 1.1 深度相机的种类 结构光相机,如 Kinect1.0、RealSenseTOF相机,如 Kinect2.0双目相机,如 ZED详细参考:https://zhuanlan.zhihu.com/p/282776636 1.2 视觉SLAM算法 2D slam 与3D slam 应用场景有哪些不同&#x…...
Elasticsearch:在你的数据上训练大型语言模型 (LLM)
过去的一两年,大型语言模型(LLM)席卷了互联网。 最近 Google 推出的 PaLM 2 和 OpenAI 推出的 GPT 4激发了企业的想象力。 跨领域构思了许多潜在的用例。 多语言客户支持、代码生成、内容创建和高级聊天机器人都是一些例子。 这些用例要求 LL…...
拓展卡尔曼滤波EKF
How to fusion two Gauss Distribution N ( x , μ 0 , σ 0 ) N ( x , μ 1 , σ 1 ) N ( x , μ ′ , σ ′ ) \begin{equation} \begin{aligned} \mathcal{N}(x,\mu_0,\sigma_0) \mathcal{N}(x,\mu_1,\sigma_1) \mathcal{N}(x,\mu,\sigma) \\ \end{aligned} \end{equatio…...
第四章 应用SysML基本特性集的汽车示例 P2(断更)|系统建模语言SysML实用指南学习
仅供个人学习 使用试用版CSM很鸡肋,然后书中一些内容没有说明,自定义方面有点困难,第四章暂时停止 同时感觉画图的顺序也很随意?甚至需求图放在了后面,觉得很离谱。 准备跳过这一章节 汽车模型 续P1 序列图表示启…...
Vue入门——核心知识点
简介 Vue是一套用于构建用户界面的渐进式JS框架。 构建用户界面:就是将后端返回来的数据以不同的形式(例如:列表、按钮等)显示在界面上。渐进式:就是可以按需加载各种库。简单的应用只需要一个核心库即可,复杂的应用可以按照需求…...
使用opencv的tracking模块跟踪目标
OpenCV跟踪模块算法介绍 OpenCV的tracking模块是一个功能强大的跟踪算法库,包含多种用于跟踪对象的算法。它可以帮助你在连续的视频帧中定位一个物体,例如人脸、眼睛、车辆等。 在OpenCV的tracking模块中,一些主要的跟踪算法包括࿱…...
Debian或Ubuntu静态交叉编译arm和aarch64
Debian或Ubuntu静态交叉编译arm和aarch64 介绍术语ARM架构前置条件从源代码编译一个简单的C程序configure和make交叉编译关于静态链接和依赖关系使用 musl libc 实现与 configure 和 make 进行交叉编译 ARM 正在获得越来越多的关注,并且越来越受欢迎。直接在这些基于…...
最新ai系统ChatGPT程序源码+详细搭建教程+以图生图+Dall-E2绘画+支持GPT4+Midjourney绘画
一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…...
【设计模式】第16节:行为型模式之“命令模式”
一、简介 命令模式:将请求(命令)封装为一个对象,这样可以使用不同的请求参数化其他对象(将不同请求依赖注入到其他对象),并且能够支持请求(命令)的排队执行、记录日志、…...
安装pytorch报错torch.cuda.is_available()=false的解决方法
参考文章: https://blog.csdn.net/qq_46126258/article/details/112708781 https://blog.csdn.net/Andy_Luke/article/details/122503884 https://blog.csdn.net/anmin8888/article/details/127910084 https://blog.csdn.net/zcs2632008/article/details/127025294 …...
IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...
利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...
