Apache配置与应用和优化

news2025/6/18 0:39:21

--------构建虚拟 Web 主机--------
虚拟Web主机指的是在同一台服务器中运行多个Web站点,其中每一个站点实际上并不独立占用整个服务器,因此被称为“虚拟”Web 主机。通过虚拟 Web 主机服务可以充分利用服务器的硬件资源,从而大大降低网站构建及运行成本。

使用httpd服务可以非常方便地构建虚拟主机服务器,只需要运行一个httpd服务就能够同时支撑大量的Web站点。Apache虚拟主机相当于一个在同一台服务器中却相互独立的站点,从而实现一台主机对外提供多个 web 服务,每个虚拟主机之间是独立的,互不影响的。

httpd服务支持的虚拟主机类型包括三种:

1.基于域名:为每个虚拟主机使用不同的域名,但是其对应的IP地址是相同的。例如,www.benet.com和www.accp.com的IP地址都是192.168.80.10.这是使用最为普遍的虚拟Web主机类型。

2.基于IP地址:为每个虚拟主机使用不同的域名,且各自对应的IP地址也不相同。这种方式需要为服务器配置多个网站接口,因此应用并不是非常广泛。

3.基于端口:这种方式并不使用域名、IP的地址来区分不同的站点内容,而是使用了不同的TCP端口号,因此用户在浏览不同的虚拟站点时需要同时指定端口号才能访问。

为虚拟主机提供域名解析:

方法一:部署DNS域名解析服务器,用来提供域名解析

方法二:在/etc/hosts 文件中临时配置域名与IP地址的映射关系

echo "192.168.179.20" >> /etc/hosts

网卡bond模式:把多个物理网卡绑定成一个逻辑上的网卡,防止硬件损坏,主备模式,负载均衡模式。

{FQDN#*.}删除.和.之前的所有字符

{FQDN%.*}删除从右往左的第一个点和后面字符

{FQDN%%.*}删除从右往左的第二个.和后面的字符

http://www.accp.com/index.php 访问的是 /var/www/html/benet/index.php文件 根目录路径设置

Document Root "/var/www/html/test"

http://www.accp.com/test/index.php 访问的是 /var/www/html/test/test/index.php

Alias /test /var/www/html/test/

http://www.accp.com/teest/index.php 访问的是/var/www/html/test/index.php 别名目录

网页实际位置: DocumentRoot目录+URI路径

Alias目录+目录下的子目录/文件

rotatelogs自带分隔工具,对Apache的日志进行按每天的日期自动分隔

ErrorLog "| /usr/local/bi/rotatelogs -l /var/log/httpd/error_%Y%m%d.log 86400" #86400代表一天84600秒,表示周期 ; -l 以本地时间

--------基于域名的虚拟主机--------


1.为虚拟主机提供域名解析
方法一:部署DNS域名解析服务器 来提供域名解析

#!/bin/bash
read -p "请输入你要解析的域名:" FQDN
read -p "请输入你要解析的IP地址:" LAN_IP
DOMAIN=${FQDN#*.}
HOSTNAME=${FQDN%%.*}

mount /dev/sr0 /mnt &> /dev/null
rpm -ivh /mnt/Packages/bind-9.9.4-50.el7.x86_64.rpm &> /dev/null
cp /etc/named.conf{,.bak}
sed -i -e '13 s/127.0.0.1/any/' -e '19 s/localhost/any/' /etc/named.conf
cp /etc/named.rfc1912.zones{,.bak}
sed -i '24 a zone "'$DOMAIN'" IN {\n\ttype master;\n\tfile "'${DOMAIN}'.zone";\n\tallow-update { none; };\n};\n' /etc/named.rfc1912.zones
cp -p /var/named/named.localhost /var/named/${DOMAIN}.zone
sed -i -e '2 s/rname.invalid./admin/' -e '9 s/127.0.0.1/'$LAN_IP'/' -e '$a '$HOSTNAME' IN A '$LAN_IP'' -e '10d' /var/named/${DOMAIN}.zone

systemctl restart named
echo "nameserver $LAN_IP" > /etc/resolv.conf
echo '--------------------------------------'
echo "nslookup $FQDN"
nslookup $FQDN

vim /etc/named.rfc1912.zones 修改配置文件

[root@www named]# nslookup www.xxx.com
Server:		192.168.179.22
Address:	192.168.179.22#53

Name:	www.xxx.com
Address: 192.168.179.22

[root@www named]# nslookup www.yyy.com
Server:		192.168.179.22
Address:	192.168.179.22#53

Name:	www.yyy.com
Address: 192.168.179.22

方法二:在/etc/hosts 文件中临时配置域名与IP地址的映射关系
echo "192.168.80.10 www.benet.com" >> /etc/hosts
echo "192.168.80.10 www.accp.com" >> /etc/hosts

2.为虚拟主机准备网页文档
mkdir -p /var/www/html/benet
mkdir -p /var/www/html/accp
echo "<h1>www.benet.com</h1>" > /var/www/html/benet/index.html
echo "<h1>www.accp.com</h1>" > /var/www/html/accp/index.html

3.添加虚拟主机配置
vim /usr/local/httpd/conf/extra/httpd-vhosts.conf            #源码编译安装的虚拟主机配置文件路径
#vim /etc/httpd/conf.d/vhosts.conf        #RPM或YUM安装的虚拟主机配置文件路径

<VirtualHost 192.168.80.10:80>                                #设置虚拟主机配置区域
#    ServerAdmin webmaster@dummy-host.example.com            #设置管理员邮箱,这行可忽略
    DocumentRoot "/var/www/html/benet"                        #设置网站根目录
    ServerName www.benet.com                                #设置Web站点的完整域名(主机名+域名)
#    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/benet.com-error_log"                        #设置错误日志文件的路径
    CustomLog "logs/benet.com-access_log" common            #设置访问日志文件的路径
</VirtualHost>

<VirtualHost 192.168.80.10:80>                    
    DocumentRoot "/var/www/html/accp"            
    ServerName www.accp.com                    
    ErrorLog "logs/accp.com-error_log"            
    CustomLog "logs/accp.com-access_log" common
</VirtualHost>

 4.设置访问控制
<Directory "/var/www/html">                                 #设置目录访问权限
    Options None                                            #不启用任何的服务器特性
    AllowOverride None                                        #不允许重写Apache默认配置    
    Require all granted                                        #允许所有主机访问
</Directory>

5.加载独立的配置文件
vim /usr/local/httpd/conf/httpd.conf                        #源码编译安装的httpd服务主配置文件路径
--483行--取消注释
Include conf/extra/httpd-vhosts.conf                        #加载独立的配置文件

#vim /etc/httpd/conf/httpd.conf        #RPM或YUM安装的httpd服务主配置文件路径
IncludeOptional conf.d/*.conf        #最后一行已默认开启此项


systemctl restart httpd 

6.在客户机中访问虚拟 Web 主机
http://www.xxx.com
http://www.yyy.com
 

--------基于IP地址的虚拟主机--------


ifconfig ens33:0 192.168.179.111 netmask 255.255.255.0 

ifconfig ens33:1 192.168.179.112 netmask 255.255.255.0 

vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost 192.168.179.111:80>                    
    DocumentRoot "/var/www/html/benet"            
    ServerName www.xxx.com                    
    ErrorLog "logs/xxx.com-error_log"            
    CustomLog "logs/xxx.com-access_log" common
</VirtualHost>

<VirtualHost 192.168.179.1112:80>                    
    DocumentRoot "/var/www/html/accp"            
    ServerName www.yyy.com                    
    ErrorLog "logs/yyy.com-error_log"            
    CustomLog "logs/yyy.com-access_log" common
</VirtualHost>

<Directory "/var/www/html"> 
    Options None            
    AllowOverride None        
    Require all granted        
</Directory>

vim /usr/local/httpd/conf/httpd.conf    
--53行--插入
Listen 192.198.179.111:80

Listen 192.198.179.112:80


systemctl restart httpd 

在客户机中浏览器访问虚拟 Web 主机
http://192.168.179.111
http://192.168.179.112

 

--------基于端口的虚拟主机--------


vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost 192.168.80.10:80>                    
    DocumentRoot "/var/www/html/benet"            
    ServerName www.benet.com                    
    ErrorLog "logs/benet.com-error_log"            
    CustomLog "logs/benet.com-access_log" common
</VirtualHost>

<VirtualHost 192.168.80.10:8080>                    
    DocumentRoot "/var/www/html/accp"            
    ServerName www.accp.com                    
    ErrorLog "logs/accp.com-error_log"            
    CustomLog "logs/accp.com-access_log" common
</VirtualHost>

<Directory "/var/www/html"> 
    Options None            
    AllowOverride None        
    Require all granted        
</Directory>

vim /usr/local/httpd/conf/httpd.conf    
--53行--插入
Listen 192.198.80.10:8080


systemctl restart httpd 

在客户机中浏览器访问虚拟 Web 主机
http://192.168.179.22:666
http://192.168.179.22:888

 

--------Apache 连接保持--------


vim /usr/local/httpd/conf/extra/httpd-default.conf
KeepAlive On            #设置是否打开连接保持功能,后面接OFF表示关闭,接ON表示打开。可以根据网站的并发请求量决定是否打开,即在高并发时打开连接保持功能,并发量不高时关闭此功能。

MaxKeepAliveRequests 100        #用于设置在一次长连接中可以传输的最大请求数量,超过此最大请求数量就会断开连接,最大值的设置决定于网站中网页的内容,一般设置数量会多于网站中所有的元素。

KeepAliveTimeout 5        #设置来自同一个客户端一次连接多次请求之间的最大间隔时间,即两次请求之间超过该时间连接就会自动断开,从而避免客户端占用连接资源。
 

Options指令解释:


Options指令的主要作用是控制特定目录将启用哪些服务器特性。可以在Apache服务配置文件的虚拟主机配置(VirtualHost)、特定目录配置(Directory)以及.htaccess文件中使用。
Options指令常用选项:
None:表示不启用任何的服务器特性。
FollowSymLinks:服务器允许在此目录中使用符号连接(软链接)。
Indexes:如果输入的网址对应服务器上的一个文件目录,而此目录中又没有Apache配置文件中的DirectoryIndex指令指定的文件(例如: DirectoryIndex index.html index.php),则列出该目录下的所有文件。    两个命令一起用

MultiViews:如果客户端请求的路径可能对应多种类型的文件,那么服务器将根据客户端请求的具体情况自动选择一个最匹配客户端要求的文件。例如,在服务器站点的file文件夹下中存在名为hello.jpg和hello.html的两个文件,此时用户输入 http://localhost/file/hello ,如果在 file文件夹下并没有 hello子目录,那么服务器将会尝试在 file目录下查找形如 hello.*的文件,然后根据用户请求的具体情况返回最匹配要求的 hello.jpg或者 hello.html。
All:表示除 MultiViews之外的所有特性。这也是Options指令的默认设置。

AllowOverride指令解释:
.htaccess(分布式隐含配置文件):提供了针对每个目录改变配置的方法,即在一个特定的目录中放置一个包含特定指令的文件,其中的指令作用于此目录及其所有子目录。
当AllowOverride设置成None时,相应的配置目录下的.htaccess文件是不被读取的,即无法生效。
当AllowOverride设置成All时,每一次请求访问相应目录下的文件时,都会读取.htaccess文件的配置,意味着原Apache指令会被.htaccess文件中的指令重写。
从性能和安全性考虑,一般都尽可能避免使用.htaccess文件,任何希望放在.htaccess文件中的配置,都可放在主配置文件(httpd.conf)的 <Directory>段中,而且高效。因此AllowOverride属性一般都配置成None 。

地址限制策略:
Require all granted:允许所有主机访问。
Require all denied:拒绝所有主机访问。
Require local:仅允许本地主机访问。
Require [not] host <主机名或域名列表>:允许或拒绝指定主机或域名访问。
Require [not] ip <IP 地址或网段列表>:允许或拒绝指定 IP 地址网络访问。

修改 /usr/lcoal/httpd/conf/extra/httpd-vhost.conf文件

--------构建Web虚拟目录与用户授权限制--------


1.创建用户认证数据文件
cd /usr/local/httpd/bin
./htpasswd -c /usr/local/httpd/conf/user zhangsan
./htpasswd /usr/local/httpd/conf/user lisi
#-c选项表示新建用户数据文件,缺省时则表示指定的用户数据文件已经存在,用于添加新的用户或修改现有用户的密码。

cat /usr/local/httpd/conf/user         #确认用户数据文件

2.添加用户授权配置
vim /usr/local/httpd/conf/httpd.conf
--末行添加--
Alias /test /var/www/html/test        #设置虚拟目录的根目录,/test为虚拟目录名称    
        
<Directory "/var/www/html/test">                #设置虚拟目录配置区域
    AuthName "Hello!"                            #定义受保护的领域名称,会在认证对话框中显示
    AuthType Basic                                #设置认证的类型,Basic表示基本认证
    AuthUserFile /usr/local/httpd/conf/user        #设置用于保存用户账号和密码的认证文件的路径
    Require valid-user                            #开启用户认证,只有认证文件中的合法用户才能访问
   #authgroupfile /usr/local/httpd/conf/group    #设置用于保存组账号和密码的认证文件的路径
   #Require user zhangsan                        #仅允许指定用户访问
   #Require group zhangsan                        #仅允许指定组访问        
</Directory>

3.验证用户访问授权
mkdir -p /var/www/html/test
echo "<h1>this is vdir test</h1>" > /var/www/html/test/index.html
systemctl restart httpd

在客户机中浏览器访问
http://192.168.80.10:80/test

--------Apache 日志分割--------


使用Apache 自带 rotatelogs 分割工具,将 Apache 的日志进行按每天的日期自动分割。
vim /usr/local/httpd/conf/httpd.conf
--275行--修改
ErrorLog "| /usr/local/bin/rotatelogs -l /var/log/httpd/error_%Y%m%d.log 86400"        #分割错误日志
--305行--修改
CustomLog "| /usr/local/bin/rotatelogs -l /var/log/httpd/access_%Y%m%d.log 86400" combined    #分割访问日志

vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
ErrorLog "| /usr/local/bin/rotatelogs -l /var/log/httpd/benet.com-error_%F.log 86400"
CustomLog "| /usr/local/bin/rotatelogs -l /var/log/httpd/benet.com-access_%F.log 86400" combined

#开头的 | 为管道符号。
#-l选项表示使用本地时间为时间基准。
#86400表示一天,即每天生成一个新的日志文件。

mkdir /var/log/httpd            #创建分割后的日志文件保存目录
systemctl restart httpd

浏览器访问
http://192.168.179.22
ls /var/log/httpd

 

 网页与安全优化

优化内容:网页压缩、网页缓存、隐藏版本号、防盗链

部署Apache后只采用默认的配置参数,会引发网站很多问题,默认配置是针对以前较低的服务器配置。

在企业中,部署Apache后只采用默认的配置参数,会引发网站很多问题,换言之默认配置是针对以前较低的服务器配置的,以前的配置已经不适用当今互联网时代。
为了适应企业需求,就需要考虑如何提升Apache的性能与稳定性,这就是Apache优化的内容。

--------网页压缩--------


1.检查是否安装 mod_deflate 模块
apachectl -t -D DUMP_MODULES | grep "deflate"

2.如果没有安装mod_deflate 模块,重新编译安装 Apache 添加 mod_deflate 模块
systemctl stop httpd.service
cd /usr/local/httpd/conf
mv httpd.conf httpd.conf.bak

yum -y install gcc gcc-c++ pcre pcre-devel zlib-devel
cd /opt/httpd-2.4.29/
./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi \
--enable-deflate                #加入mod_deflate 模块

make && make install

3.配置 mod_deflate 模块启用
vim /usr/local/httpd/conf/httpd.conf
--52行--修改
Listen 192.198.80.10:80
--105行--取消注释
LoadModule deflate_module modules/mod_deflate.so        #开启mod_deflate 模块
--197行--取消注释,修改
ServerName www.kgc.com:80
--末行添加--
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript text/jpg text/png    #代表对什么样的内容启用gzip压缩
DeflateCompressionLevel 9            #代表压缩级别,范围为1~9
SetOutputFilter DEFLATE                #代表启用deflate 模块对本站点的输出进行gzip压缩
</IfModule>

4.检查安装情况,启动服务
apachectl -t            #验证配置文件的配置是否正确
apachectl -t -D DUMP_MODULES | grep "deflate"        #检查 mod_deflate 模块是否已安装
  deflate_module (shared)                            #已安装的正确结果

systemctl start httpd.service

5.测试 mod_deflate 压缩是否生效
cd /usr/local/httpd/htdocs
先将game.jpg文件传到/usr/local/httpd/htdocs目录下
vim index.html
<html><body><h1>Hello World!!!Hello World!!! Hello World!!! Hello World!!! Hello World!!! Hello World!!! Hello World!!! Hello World!!! Hello World!!! Hello World!!! Hello World!!! Hello World!!! </h1>
<img src="game.jpg"/>
</body></html>

--------网页缓存--------


1.检查是否安装 mod_expires 模块
apachectl -t -D DUMP_MODULES | grep "expires"

2.如果没有安装mod_expires 模块,重新编译安装 Apache 添加 mod_expires模块
systemctl stop httpd.service
cd /usr/local/httpd/conf
mv httpd.conf httpd.conf.bak1

yum -y install gcc gcc-c++ pcre pcre-devel zlib-devel
cd /opt/httpd-2.4.29/
./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi \
--enable-deflate \
--enable-expires            #加入mod_expires 模块

make && make install

3.配置 mod_expires 模块启用
vim /usr/local/httpd/conf/httpd.conf
--52行--修改
Listen 192.198.80.10:80
--111行--取消注释
LoadModule expires_module modules/mod_expires.so        #开启mod_expires 模块
--199行--取消注释,修改
ServerName www.kgc.com:80
--末行添加--
<IfModule mod_expires.c>
  ExpiresActive On                                #打开网页缓存功能
  ExpiresDefault "access plus 60 seconds"        #设置缓存60秒
</IfModule>

4.检查安装情况,启动服务
apachectl -t            #验证配置文件的配置是否正确
apachectl -t -D DUMP_MODULES | grep "expires"        #检查 mod_deflate 模块是否已安装
  deflate_module (shared)                            #已安装的正确结果

systemctl start httpd.service

5.测试缓存是否生效
cat /usr/local/httpd/htdocs/index.html

方法一:
在Linux系统中,打开火狐浏览器,右击点查看元素
选择 网络 ---> 选择 HTML、WS、其他 
访问 http://192.168.80.10 ,双击200消息查看响应头中包含 Expires 项

方法二:
在Windows系统中依次安装 Microsoft.NET4 和fiddler 软件,打开fiddler 软件
选择 inspectors ---> 选择 Headers
浏览器访问 http://192.168.80.10 ,双击200消息查看 Expires 项    

--------隐藏版本信息--------


vim /usr/local/httpd/conf/httpd.conf
--491行--取消注释
Include conf/extra/httpd-default.conf

vim /usr/local/httpd/conf/extra/httpd-default.conf
--55行--修改
ServerTokens Prod            #将原本的 Full 改为 Prod,只显示名称,没有版本
#ServerTokens 表示 Server 回送给客户端的响应头域是否包含关于服务器 OS 类型和编译过的模块描述信息。

systemctl restart httpd.service

浏览器访问 http://192.168.80.10 ,双击200消息查看 Server 项

--------Apache 防盗链--------


1.检查是否安装 mod_rewrite 模块
apachectl -t -D DUMP_MODULES | grep "rewrite"

2.如果没有安装mod_rewrite 模块,重新编译安装 Apache 添加 mod_rewrite模块
systemctl stop httpd.service
cd /usr/local/httpd/conf
mv httpd.conf httpd.conf.bak2

yum -y install gcc gcc-c++ pcre pcre-devel zlib-devel
cd /opt/httpd-2.4.29/
./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \                    #加入mod_rewrite 模块
--enable-charset-lite \
--enable-cgi \
--enable-deflate \
--enable-expires

make && make install

3.配置 mod_rewrite 模块启用
vim /usr/local/httpd/conf/httpd.conf
--157行--取消注释
LoadModule rewrite_module modules/mod_rewrite.so
--224行--
<Directory "/usr/local/httpd/htdocs">
  Options Indexes FollowSymLinks
  AllowOverride None
  Require all granted

  RewriteEngine On                                                     #打开 rewrite 功能,加入 mode_rewrite 模块内容
  RewriteCond %{HTTP_REFERER} !^http://kgc.com/.*$ [NC]                #设置匹配规则
  RewriteCond %{HTTP_REFERER} !^http://kgc.com$ [NC]
  RewriteCond %{HTTP_REFERER} !^http://www.kgc.com/.*$ [NC]
  RewriteCond %{HTTP_REFERER} !^http://www.kgc.com/$ [NC]
  RewriteRule .*\.(gif|jpg|swf)$ http://www.kgc.com/error.png        #设置跳转动作
</Directory>
----------------------------------------------------------------------------------------------------------
RewriteCond %{HTTP_REFERER} !^http://www.kgc.com/.*$ [NC]  的字段含义:
“%{HTTP_REFERER}” :存放一个链接的 URL,表示从哪个链接中转访问目录下的静态资源。
“!^” :表示不以后面的字符串开头。
“http://www.kgc.com” :是本网站的路径,按整个字符串匹配。
“.*$” :表示以任意字符结尾。
“[NC]” :表示不区分大小写字母。

RewriteRule .*\.(gif|jpg|swf)$ http://www.kgc.com/error.png  的字段含义:
“.” :表示匹配一个字符。
“*” :表示匹配 0 到多个字符,与“.”合起来的意思是匹配 0 到多次前面的任意字符,如果是 1 到多次匹配可以用“+”表示。
“\.” :在这里的“\”是转义符,“\.”就代表符号“.”的意思。因为“.”在指令中是属于规则字符,有相应的含义, 如果需要匹配,需要在前面加个转义符“\”,其它规则字符如果需要匹配,也做同样处理。
“(gif|jpg|swf)” :表示匹配“gif”、“jpg”、“swf”任意一个,“$”表示结束。最后的规则是以“.gif”、“.jpg”、“.swf”结尾, 前面是1到多个字符的字符串,也就是匹配图片类型的文件。
“http://www.kgc.com/error.png” :表示转发到这个路径 。

整个配置的含义是 使用本网站以外的网站域名 访问本站的图片文件时,显示 error.png 这个图片。
----------------------------------------------------------------------------------------------------------

4.网页准备
Web源主机配置:
cd /usr/local/httpd/htdocs
将game.jpg、error.png文件传到/usr/local/httpd/htdocs目录下
vim index.html
<html><body><h1>this is kgc.com!</h1>
<img src="game.jpg"/>
</body></html>

 

gzip:

配置Apache的网页压缩功能,是使用gzip压缩算法来对网页内容进行压缩后在传输到客户端浏览器。

作用:

  • 降低了网络传输的字节数,加快网页加载速度
  • 节省流量,改善用户的浏览体验
  • gzip与搜索引擎的抓取工具有更好关系

mod_gzip与mod_deflate

  • 两者均使用gzip压缩算法,运作原理类似
  • mod_deflate压缩速度略快,mod_gzip的压缩比略高
  • mod_gzip对服务器CPU的占用要高些
  • 高流量的服务器,使用mod_deflate可能会比mod_gzip加载速度更快

检查是否安装mod_deflate模块:apachectl -t -D DUMP_MODULES | grep "deflate"

deflate_module (shared) 已安装的正确结果

gzip默认压缩比:6 范围;1~9

配置网页的缓存时间

通过mod_expire模块配置apache,使网页也能在客户端浏览器缓存一段时间,以避免重复请求。

启动mod_expire模块后,会自动生成页面头部信息中Expires标签和Cache-Control标签,客户端浏览器根据标签决定下次访问是在本地机器的缓存中获取,不需要向服务器再次发出请求,从而降低客户端的访问频率和次数,达到减少不必要的流量和增加访问数的的目的。

apachectl -t -D DUMP_MODULES | grep expires_module( static) 检查是否存在

ExpiresDefault “access plus xx secondes” 允许缓存存在多久

获取头部信息:curl -I IP

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

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

相关文章

【数据结构与算法】一、数据结构的基本概念

文章目录一、数据结构的基本概念1.1 数据结构的研究内容1.2 数据类型和抽象数据类型1.3 算法和算法分析1.3.1 算法的时间复杂度1.3.2 算法时间效率的比较1.4 知识回顾一、数据结构的基本概念 1.1 数据结构的研究内容 1.2 数据类型和抽象数据类型 抽象数据类型&#xff08;ADT…

初识linux之线程基本概念

目录 一、进程地址空间和页表再理解 二、线程 1.线程的概念 2. 进程与线程 3. 线程的意义 4.线程的优点缺点 4.1 优点 4.2 缺点 4.linux中线程的优缺点 4.1 优点 4.2 缺点 5. linux中线程创建相关接口 5.1 线程创建 6. 通过代码查看进程与线程的关系 6.1 线程库…

【软件设计师11】面向对象设计

面向对象设计 1. 设计原则 单一职责原则&#xff1a;设计目的单一的类 开放-封闭原则&#xff1a;对外扩展开放&#xff0c;对修改关闭 里氏(Liskov)替换原则&#xff1a;子类可以替换父类 依赖倒置原则&#xff1a;要依赖与对象&#xff0c;而不是具体实现&#xff1b;针…

Windows安装配置Anaconda

要进行各类有意思大模型的运行&#xff0c;首选需要解决环境问题。本文介绍了windows 下安装anaconda、conda的配置、以及conda的常用命令。 一、下载安装 注1&#xff1a;不要求提前安装python。 注2&#xff1a;因为后续环境多了&#xff0c;会占用较大硬盘空间&#xff0…

siPOOLs(一款高效、特异性好的RNAi试剂,可有效消除脱靶效应)

对于靶向基因沉默&#xff0c;RNA干扰&#xff08;RNAi)具有易于操作、快速结果、高效率、广泛适用于各种细胞类型的多重优势。其具有瞬转效应和剂量依赖效应&#xff0c;这点与小分子非常相似。然而&#xff0c;目前的siRNA试剂的特异性和基因沉默效率不是很稳定&#xff0c;阻…

VSCODE配置OPENCV编译环境(windows)

参考文章&#xff1a; https://www.cnblogs.com/kensporger/archive/2020/02/19/12320622.html 1. 安装MinGW-64 和 CMake&#xff0c;这两个一定要把环境变量添加到电脑的环境变量中&#xff0c;并且打开cmake-gui&#xff0c;细节见上文链接 2.生成MakeFiles。 ①先从open…

二叉树的遍历(节点个数及层序遍历)

简易树的图形&#xff1a; #include <stdio.h> #include <stdlib.h>//重定义数据类型 typedef char DataType; //创建简易的二叉树结构体 typedef struct BTNode {struct BTNode* left;struct BTNode* right;DataType data; }BTNode; //前序&#xff08;根左右&am…

2023年股票代持行业研究报告

第一章 股票代持概述 1.1 基本概念 股票代持&#xff0c;或称委托持股&#xff0c;是指实际出资人与名义出资人达成以下约定&#xff1a;名义出资人作为名义股东&#xff0c;在股东名册等公司工商登记信息上出现&#xff0c;而实际上由实际出资人出资并享有投资权益。 股票代…

WPF MVVM模式构建项目

什么是MVVM模式&#xff1f; MVVM是Model-View-ViewModel的简写&#xff0c;Model就是模型&#xff0c;View就是视图&#xff0c;ViewModel就是View和Model之间解耦和传递消息的中间层。MVVM采用双向数据绑定&#xff0c;View中数据变化将自动反映到ViewModel上&#xff0c;反之…

【并发编程】异步编程CompletableFuture实战

文章目录1.CompletableFuture简介2.CompletableFuture核心API实战3.CompletableFuture嵌套案例实战4.合并两个CompletableFuture案例实战5.多个CompletableFuture任务组合调度实战1.CompletableFuture简介 在JDK8之前&#xff0c;我们使用的Java多线程变成&#xff0c;主要是 …

Golang GORM入门

一、GORM入门 1.1 什么是ORM&#xff1f; orm是一种术语而不是软件 orm英文全称object relational mapping&#xff0c;就是对象映射关系简单来说类似python这种面向对象的程序来说一切皆对象&#xff0c;但是我们使用的数据库却都是关系型的 为了保证一致的使用习惯&#xff…

NumPy 数组学习手册:1~5

原文&#xff1a;Learning NumPy Array 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 一、NumPy 入门 让我们开始吧。 我们将在不同的操作系统上安装 NumPy 和相关软件&#xff0c;并查看一些使用 NumPy 的简单代码。 正如“序言”所述&#xff0c;SciPy 与 NumPy 密…

开放式蓝牙耳机推荐,推荐几款具有代表性的骨传导耳机

骨传导耳机是一种骨传导技术和音频技术结合的产品&#xff0c;通过声音将振动从骨头传到听觉神经&#xff0c;从而达到听音的效果。相比于传统的入耳式耳机&#xff0c;骨传导耳机佩戴更舒适&#xff0c;不会对耳朵造成损伤。然而市面上有很多不同类型的骨传导耳机&#xff0c;…

机器学习和深度学习在气象中的应用(台风预报只能订正、风速预报订正、LSTM 方法预测 ENSO)

查看原文>>>Python人工智能在气象中的实践技术应用 目录 专题一、Python 和科学计算基础 专题二、机器学习和深度学习基础理论和实操 2.1 机器学习和深度学习基础理论 2.2 sklearn 和pytorch 库 专题三 、气象领域中的机器学习应用实例 3.1 GFS 数值模式的风速…

【玩转RT-Thread】RT-Thread网络框架:BSD网络接口SAL套接字抽象层

文章目录RT-Thread网络框架&#xff1a;BSD网络接口&SAL套接字抽象层基础知识1.TCP与UDP的区别2.TCP编程 服务端配置过程3.TCP编程 客户端配置过程4.UDP编程 客户端配置过程SAL套接字抽象层1.SAL组件主要功能特点&#xff1a;2.SAL网络框架3.工作原理4.多协议接入与接口函数…

“成年人”的数据库,既要又要也要!

欢迎访问 OceanBase 官网获取更多信息&#xff1a;https://www.oceanbase.com/ 3 月 25 日&#xff0c;第一届 OceanBase 开发者大会在北京举行&#xff0c;《明说三人行》访谈栏目创始人兼主持人卢东明、沃趣科技创始人兼 CEO 陈栋、DBAplus 社群联合创始人杨建荣、PostgreSQL…

7.1 基本运算电路(2)

七、集成运放性能指标对运算误差的影响 在上述各电路运算关系的分析中&#xff0c;均认为集成运放为理想运放。而实际上&#xff0c;当利用运放构成运算电路时&#xff0c;由于开环差模增益 AodA_{od}Aod​、差模输入电阻 ridr_{id}rid​ 和共模抑制比 KCMRK_{CMR}KCMR​ 为有…

【计算机网络-应用层】域名系统 DNS、文件传输协议 FTP、电子邮件

文章目录1 域名系统 DNS1.1 域名结构1.2 域名服务器1.2.1 根域名服务器1.2.2 顶级域名服务器1.2.3 权限域名服务器1.2.4 本地域名服务器1.3 域名解析过程1.3.1 递归查询1.3.2 递归与迭代相结合查询1.3.3 本地域名服务器的高速缓存2 文件传输协议 FTP2.1 主动模式&#xff08;建…

java编译和运行带有包名的类

写在前面 对于习惯了使用ide的我们似乎早已经忘记了如何通过命令行来编译和运行java类了&#xff0c;至少我是这样的&#xff0c;本文就一起来回顾下吧&#xff01; 1&#xff1a;运行不带包的类 这种相信大多数朋友都记得&#xff0c;直接javac yourCode.java,然后java you…

Camtasia studio2023录屏和后期剪辑的软件

Camtasia 2023是专门用于屏幕录制的软件&#xff0c;功能十分丰富&#xff0c;不仅可以录制电脑屏幕、局部区域和摄像头等&#xff0c;而且还能即时编辑视频&#xff0c;给视频添加转场、旁白、字幕等&#xff0c;能够轻松制作更优秀的视频。 兼顾录屏和后期剪辑的软件—Camtas…