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

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服务器软件&#xff0c;广泛用于Linux和其他UNIX操作系统上。它是自由软件&#xff0c;可以通过开放源代码的方式进行自由分发和修改。Apache提供了处理静态和动态内容的能力&#xff0c;而且还支持多种编程语言和脚本&#xff0c;如PHP、Python和P…...

设计模式大赏(一):桥接模式,组合模式

设计模式大赏&#xff08;一&#xff09;&#xff1a;桥接模式&#xff0c;组合模式 导言 本篇文章是设计模式大赏中的第一篇文章&#xff0c;这个系列的文章中我们主要将介绍一些常见的设计模式&#xff0c;主要是我在看Android源码中发现用到的一些设计模式。本篇文章将主要…...

数据通信——应用层(DHCP的原理与配置)

引言 假如我们的网络中有N台设备&#xff0c;它们都要设置IP地址&#xff0c;如果人工去一个个配置不仅不方便管理还很麻烦。因此我们用DHCP来自动分配地址。 一&#xff0c;系统的启动流程 不仅是计算机、很多网络设备的启动流程如下&#xff1a; 设备上电后&#xff0c;硬件…...

力扣151.反转字符串中的单词

原题链接&#xff1a;力扣151.反转字符串中的单词 全代码&#xff1a; 需要复刷 class Solution { public:void reverse(string& s, int start, int end){ //翻转&#xff0c;区间写法&#xff1a;左闭右闭 []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(); 参考网址&#xff1a; https://blog.csdn.net/Coldmood/article/details/128279727...

Android拖放startDragAndDrop拖拽onDrawShadow静态添加xml布局View,Kotlin(4)

Android拖放startDragAndDrop拖拽onDrawShadow静态添加xml布局View&#xff0c;Kotlin&#xff08;4&#xff09; 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 语句

无论是将文件读入脚本&#xff0c;还是将数据从脚本输出到文件&#xff0c;都会用到文件重定向&#xff0c;这是一种很 常见的操作。本节中的示例脚本两种功能皆有。它会读取 CSV 格式的数据文件&#xff0c;输出 SQL INSERT 语句&#xff0c;并将数据插入数据库。 shell 脚本使…...

华为ICT——第五章语音处理理论与实践

目录 语言学&#xff1a; 主要应用场景&#xff1a; 语言学&#xff1a; 语言学&#xff1a; 语音学&#xff08;1&#xff09; 语音学&#xff08;2&#xff09; 语音处理介绍&#xff1a; 人类语音的来源&#xff1a; 语言数据&#xff1a; 语言信号预处理&#xff1a; …...

ardupilot开发 --- SLAM 篇

1. 视觉SLAM 1.1 深度相机的种类 结构光相机&#xff0c;如 Kinect1.0、RealSenseTOF相机&#xff0c;如 Kinect2.0双目相机&#xff0c;如 ZED详细参考&#xff1a;https://zhuanlan.zhihu.com/p/282776636 1.2 视觉SLAM算法 2D slam 与3D slam 应用场景有哪些不同&#x…...

Elasticsearch:在你的数据上训练大型语言模型 (LLM)

过去的一两年&#xff0c;大型语言模型&#xff08;LLM&#xff09;席卷了互联网。 最近 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很鸡肋&#xff0c;然后书中一些内容没有说明&#xff0c;自定义方面有点困难&#xff0c;第四章暂时停止 同时感觉画图的顺序也很随意&#xff1f;甚至需求图放在了后面&#xff0c;觉得很离谱。 准备跳过这一章节 汽车模型 续P1 序列图表示启…...

Vue入门——核心知识点

简介 Vue是一套用于构建用户界面的渐进式JS框架。 构建用户界面&#xff1a;就是将后端返回来的数据以不同的形式(例如&#xff1a;列表、按钮等)显示在界面上。渐进式&#xff1a;就是可以按需加载各种库。简单的应用只需要一个核心库即可&#xff0c;复杂的应用可以按照需求…...

使用opencv的tracking模块跟踪目标

OpenCV跟踪模块算法介绍 OpenCV的tracking模块是一个功能强大的跟踪算法库&#xff0c;包含多种用于跟踪对象的算法。它可以帮助你在连续的视频帧中定位一个物体&#xff0c;例如人脸、眼睛、车辆等。 在OpenCV的tracking模块中&#xff0c;一些主要的跟踪算法包括&#xff1…...

Debian或Ubuntu静态交叉编译arm和aarch64

Debian或Ubuntu静态交叉编译arm和aarch64 介绍术语ARM架构前置条件从源代码编译一个简单的C程序configure和make交叉编译关于静态链接和依赖关系使用 musl libc 实现与 configure 和 make 进行交叉编译 ARM 正在获得越来越多的关注&#xff0c;并且越来越受欢迎。直接在这些基于…...

最新ai系统ChatGPT程序源码+详细搭建教程+以图生图+Dall-E2绘画+支持GPT4+Midjourney绘画

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…...

【设计模式】第16节:行为型模式之“命令模式”

一、简介 命令模式&#xff1a;将请求&#xff08;命令&#xff09;封装为一个对象&#xff0c;这样可以使用不同的请求参数化其他对象&#xff08;将不同请求依赖注入到其他对象&#xff09;&#xff0c;并且能够支持请求&#xff08;命令&#xff09;的排队执行、记录日志、…...

安装pytorch报错torch.cuda.is_available()=false的解决方法

参考文章&#xff1a; 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 …...

RPA+AI:自动化办公机器人开发指南

RPAAI&#xff1a;自动化办公机器人开发指南 系统化学习人工智能网站&#xff08;收藏&#xff09;&#xff1a;https://www.captainbed.cn/flu 文章目录 RPAAI&#xff1a;自动化办公机器人开发指南摘要引言技术融合路径1. 传感器层&#xff1a;多模态数据接入2. 决策层&…...

如何把 Mac Finder 用得更顺手?——高效文件管理定制指南

系统梳理提升 Mac Finder 体验的实用设置与技巧&#xff0c;助你用更高效的方式管理文件。文末引出进阶选择 Path Finder。 阅读原文请转到&#xff1a;https://jimmysong.io/blog/customize-finder-for-efficiency/ 作为一个用 Mac 多年的用户&#xff0c;我始终觉得 Finder 虽…...

第23讲、Odoo18 邮件系统整体架构

目录 Odoo 邮件系统整体架构邮件发送方式邮件模板配置SMTP 邮件服务器配置邮件发送过程开发中常见邮件发送需求常见问题排查提示与最佳实践完整示例&#xff1a;审批通过自动发邮件门户表单自动邮件通知案例邮件队列与异步发送邮件添加附件邮件日志与调试多语言邮件模板邮件安…...

前后端交互过程中—各类文件/图片的上传、下载、显示转换

前后端交互过程中—各类文件/图片的上传、下载、显示转换 图片补充&#xff1a;new Blob()URL.createObjectURL()替代方案&#xff1a;FileReader.readAsDataURL()​​对比&#xff1a; tiff文件TIFF库TIFF转换通过url转换tiff文件为png通过文件选择的方式转换tiff文件为png 下…...

CRMEB 中 PHP 快递查询扩展实现:涵盖一号通、阿里云、腾讯云

目前已有一号通快递查询、阿里云快递查询扩展 扩展入口文件 文件目录 crmeb\services\express\Express.php 默认一号通快递查询 namespace crmeb\services\express;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use think\Container; use thi…...

kafka消息积压排查

kafka监控搭建&#xff1a;https://insights.blog.csdn.net/article/details/139129552?spm1001.2101.3001.6650.1&utm_mediumdistribute.pc_relevant.none-task-blog-2%7Edefault%7Ebaidujs_baidulandingword%7EPaidSort-1-139129552-blog-132216491.235%5Ev43%5Econtrol…...

亚远景科技助力东风日产通过ASPICE CL2评估

热烈祝贺东风日产通过ASPICE CL2评估 近日&#xff0c;东风日产PK1B VCM热管理项目成功通过ASPICE CL2级能力评估&#xff0c;标志着东风日产在汽车电子软件研发管理体系及技术创新能力上已达到国际领先水平&#xff0c;为其全球化布局注入强劲动能。 ASPICE&#xff1a;国际竞…...

【SSM】SpringBoot笔记2:整合Junit、MyBatis

前言&#xff1a; 文章是系列学习笔记第9篇。基于黑马程序员课程完成&#xff0c;是笔者的学习笔记与心得总结&#xff0c;供自己和他人参考。笔记大部分是对黑马视频的归纳&#xff0c;少部分自己的理解&#xff0c;微量ai解释的内容&#xff08;ai部分会标出&#xff09;。 …...

华为OD机试_2025 B卷_数组去重和排序(Python,100分)(附详细解题思路)

题目描述 给定一个乱序的数组&#xff0c;删除所有的重复元素&#xff0c;使得每个元素只出现一次&#xff0c;并且按照出现的次数从高到低进行排序&#xff0c;相同出现次数按照第一次出现顺序进行先后排序。 输入描述 一个数组 输出描述 去重排序后的数组 用例 输入1,3,…...

虚拟机CentOS 7 网络连接显示“以太网(ens33,被拔出)“、有线已拔出、CentOS7不显示网络图标

文章目录 一、问题描述二、解决方法1、查看网络连接方式2、开启相关服务3、确认虚拟机网络连接 一、问题描述 问题描述&#xff1a;在VmWare中安装CentOS7, 启动后界面不显示网络的图标。 在GONE桌面—》设置中找到网络设置&#xff0c;发现显示线缆已拔出。 二、解决方法 …...