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

了解Apache 配置与应用

本章内容
  • 理解 Apache 连接保持
  • 掌握 Apache 的访问控制
  • 掌握 Apache 日志管理的方法

Apache HTTP Server 之所以受到众多企业的青睐,得益于其代码开源、跨平台、功能
模块化、可灵活定制等诸多优点,不仅性能稳定,在安全性方面的表现也十分出色。
本章将进一步学习 httpd 服务器的相关知识。
3.1 Apache 连接保持
HTTP 是属于应用层的面向对象协议,基于 TCP 协议之上的可靠传输。每次在进行
HTTP 连接之前,需要先进行 TCP 连接,在 HTTP 连接结束后要对 TCP 连接进行终止,每
TCP 连接都需要进行三次握手与四次断开。 HTTP 协议不会对之前发生过的请求和响应
进行管理,所以频繁地建立与关闭连接对于 HTTP 而言会消耗更多的内存与 CPU 资源。能
不能允许通过同一个 TCP 连接发出多个请求,从而减少与多个连接相关的延迟,解决办法
就是连接保持。
对于 HTTP/1.1 ,就是尽量地保持客户端的连接,通过一个连接传送多个 HTTP 请求响
应,对于客户端可以提高 50% 以上的响应时间,对于服务器可以降低资源开销。
Apache 通过设置配置文件 httpd-default.conf 中相关的连接保持参数来开启与控制连接
保持功能。
KeepAlive :决定是否打开连接保持功能,后面接 OFF 表示关闭,接 ON 表示打开,可
以根据网站的并发请求量决定是否打开,即在高并发时打开连接保持功能,并发量不高
时关闭此功能。
KeepAliveTimeout :表示一次连接多次请求之间的最大间隔时间,即两次请求之间超
过该时间连接就会自动断开,从而避免客户端占用连接资源。
MaxKeepAliveRequests :用于设置在一次长连接中可以传输的最大请求数量,超过此
最大请求数量就会断开连接,最大值的设置决定于网站中网页的内容,一般设置数量会
多于网站中所有的元素
3.2 Apache 的访问控制
为了更好地控制对网站资源的访问,可以为特定的网站目录添加访问授权。本节将分别
介绍客户机地址限制、用户授权限制,这两种访问控制方式都应用于 httpd.conf 配置文件中
的目录区域 <Directory 目录位置 > …… </Directory> 范围内。
3.2.1 客户机地址限制
通过 Require 配置项,可以根据客户端的主机名或 IP 地址来决定是否允许客户端访问。
httpd 服务主配置文件的 <Location> <Directory> <Files> <Limit> 配置段中均可以使
Require 配置项来控制客户端的访问。使用 Require 配置项时,需要设置客户端地址以构
成完整的限制策略,地址形式可以是 IP 地址、网络地址、主机名或域名。当 Require 配置
项之后为 “all” 时,表示匹配任意地址。限制策略的格式如下所示。
Require all granted :允许所有主机访问;
Require all denied :拒绝所有主机访问;
Require local :仅允许本地主机访问;
Require [not] host < 主机名或域名列表 > :允许或拒绝指定主机或域名访问;
Require [not] ip <IP 地址或网段列表 > :允许或拒绝指定 IP 地址网络访问。
通常情况下,网站服务器是对所有客户机开放的,网页文档目录并未做任何限制,因此
使用的是 “Require all granted” 的策略,表示允许从任何客户机访问,策略格式如下所示。
<Directory "/usr/local/httpd/htdocs">
........省略
Require all granted
</Directory>
定义限制策略时,多个不带 “not” Require 配置语句之间是 的关系,即任意一条
Require 配置语句满足条件均可访问。若既出现了不带 “not” Require 配置语句,又出现了
“not” Require 配置语句,则配置语句之间是 的关系,即同时满足所有 Require 配置
语句才能访问。
需要使用 仅允许 的限制策略时,应使用 Require 配置语句明确设置允许策略,只允许
一部分主机访问。例如,若只希望 IP 地址为 192.168.248.1 的主机能够访问,目录区域应做
如下设置。
<Directory "/usr/local/httpd/htdocs">
........省略
Require ip 192.168.248.1
</Directory>
反之,需要使用 仅拒绝 的限制策略时,灵活使用 Require Require not 配置语句设
置 拒 绝 访 问 策 略 , 仅 禁 止 一 部 分 主 机 访 问 。 在 使 用 not 禁 止 访 问 时 要 将 其 置 于
<RequireAll></RequireAll> 容器中,并在容器中设置相应的限制策略。例如,若只希望禁止
来自两个内网网段 192.168.0.0/24 192.168.1.0/24 的主机访问,但允许其他任何主机访
问,可以使用如下限制策略。
<Directory "/usr/local/httpd/htdocs">
........省略<RequireAll>Require all grantedRequire not ip 192.168.0.0/24 192.168.1.0/24</Directory>
当未被授权的客户机访问网站目录时,将会被拒绝访问。
3.2.2 用户授权限制
httpd 服务器支持使用摘要认证( Digest )和基本认证( Basic )两种方式。使用摘要认
证需要在编译 httpd 之前添加 “--enable-auth-digest” 选项,但并不是所有的浏览器都支持摘
要认证;而基本认证是 httpd 服务的基本功能,不需要预先配置特别的选项。
基于用户的访问控制包含认证( Authentication )和授权( Authorization )两个过程。
认证是指识别用户身份的过程,授权是指允许特定用户访问特定目录区域的过程。下面将以
基本认证方式为例,添加用户授权限制。
1 .创建用户认证数据文件
httpd 的基本认证通过校验用户名、密码组合来判断是否允许用户访问。授权访问的用
户账号需要事先建立,并保存在固定的数据文件中。使用专门的 htpasswd 工具程序,可以
创建授权用户数据文件,并维护其中的用户账号。
使用 htpasswd 工具时,必须指定用户数据文件的位置,添加 “-c” 选项表示新建立此文
件。例如,执行以下操作可以新建数据文件 /usr/local/httpd/conf/.awspwd ,其中包含一个名
webadmin 的用户信息。
[root@nmd ~]# cd /usr/local/httpd/
[root@nmd httpd]# bin/htpasswd -c /usr/local/httpd/conf/.awspwd webadmin
New password: 
Re-type new password: 
Adding password for user webadmin
[root@nmd httpd]# 
[root@nmd httpd]# cat /usr/local/httpd/conf/.awspwd 
webadmin:$apr1$ijl6opdz$gUd0SemsticNsvlapWNaw/
[root@nmd httpd]# 
若省略 “-c” 选项,则表示指定的用户数据文件已经存在,用于添加新的用户或修改现有
用户的密码。例如,需要向 .awspwd 数据文件中添加一个新用户 zhangsan   时,可以执行以下操
作。
[root@nmd httpd]# bin/htpasswd /usr/local/httpd/conf/.awspwd zhangsan
New password: 
Re-type new password: 
Adding password for user zhangsan
[root@nmd httpd]# cat /usr/local/httpd/conf/.awspwd 
webadmin:$apr1$ijl6opdz$gUd0SemsticNsvlapWNaw/
zhangsan:$apr1$p1UuzJ1s$AOoKe4.kdofZdtd2vk9Mg0
[root@nmd httpd]# 
2 .添加用户授权配置
有了授权用户账号以后,还需要修改 httpd.conf 配置文件,在特定的目录区域中添加授
权配置,以启用基本认证并设置允许哪些用户访问。例如,若只允许 .awspwd 数据文件中
的任一用户访问系统,可以执行以下操作。
[root@nmd ~]# vim /usr/local/httpd/conf/httpd.conf
<Directory "/usr/local/httpd/htdocs">
........省略AuthName "DocumentRoot"AuthType BasicAuthUserFile /usr/local/httpd/conf/.awspwdRequire valid-user
</Directory>
[root@nmd ~]# systemctl restart httpd.service
在上述配置内容中,相关配置项的含义如下。
AuthName 定义受保护的领域名称,该内容将在浏览器弹出的认证对话框中显示。
AuthType 设置认证的类型, Basic 表示基本认证。
AuthUserFile 设置用于保存用户账号、密码的认证文件路径。
require valid-user 要求只有认证文件中的合法用户才能访问。其中, valid-user 表示
所有合法用户,若只授权给单个用户,可改为指定的用户名(如 zhangsan )。
3 .验证用户访问授权
当访问系统时,浏览器会首先弹出认证对话框,如图 3.1 所示。只有输入正确的用户名
和密码后才能查看特定目录下的网站资源,否则将拒绝访问。
3.3 Apache 日志分割
随着网站的访问量越来越大,默认情况下 Apache 服务器产生的单个日志文件也会越来
越大,如果不对日志进行分割,那么如果日志文件占用磁盘空间很大的话势必会将整个日志
文件删除,这样也丢失了很多对网站比较宝贵的信息,而这些日志可以用来进行访问分析、
网络安全监察、网络运行状况监控等。
另外,如果服务器遇到故障时,运维人员要打开日志文件进行分析,打开的过程会消耗
很长时间,也势必会增加处理故障的时间。因此管理好这些海量的日志对网站的意义很大,
我们会将 Apache 的日志进行按每天的日期自动分割。下面介绍两种方法均可实现。
1.Apache 自带 rotatelogs 分割工具
首先,将 Apache 主配置文件 httpd.conf 打开,配置网站的日志文件转交给 rotatelogs
分割处理。
[root@nmd ~]# mkdir /var/log/httpd/
[root@nmd ~]# vim /usr/local/httpd/conf/httpd.conf 
ErrorLog "| /usr/local/bin/rotatelogs -l /var/log/httpd/error_%Y%m%d.log 86400"
CustomLog "| /usr/local/bin/rotatelogs -l /var/log/httpd/access_%Y%m%d.log 86400" combined
[root@nmd ~]# systemctl restart httpd.service
[root@nmd ~]# ll /var/log/httpd/
总用量 8
-rw-r--r--. 1 root root 2424 1月   3 12:11 access_20240103.log
-rw-r--r--. 1 root root  867 1月   3 12:11 error_20240103.log
其中 ErrorLog 行是错误日志, -l 表示使用本地时间代替 GMT 时间作为时间基准。需要
注意的是在一个改变 GMT 偏移量 ( 比如夏令时 ) 的环境中使用 -l 会导致不可预料的结果。
CustomLog 行是定义访问日志格式, 86400 表示一天,即每天生成一个新的日志文件。
重启 Apache 服务,查看日志文件是否已经按日期分割。
2. 使用第三方工具 cronolog 分割
除了 Apache 自带 rotatelogs 分割工具,也可使用第三方工具 cronolog Apache 日志
进行分割,具体操作如下所示。
1 )编译安装 cronolog 工具
[root@nmd ~]# tar zxvf cronolog-1.6.2.tar.gz 
[root@nmd ~]# cd cronolog-1.6.2/
[root@nmd cronolog-1.6.2]# ./configure
[root@nmd cronolog-1.6.2]#make && make install
2 )设置 cronolog 工具工具分割 apache 日志
[root@nmd ~]# vim /usr/local/httpd/conf/httpd.conf 
ErrorLog "| /usr/local/sbin/cronolog -l /var/log/httpd/www.bdqn.com-error_%Y%m%d.log 86400"
CustomLog "| /usr/local/sbin/cronolog -l /var/log/httpd/www.bdqn.com-access_%Y%m%d.log 86400" combined
[root@nmd ~]# systemctl restart httpd.service
[root@nmd ~]# ll /var/log/httpd/
总用量 8
-rw-r--r--. 1 root root 2424 1月   3 12:11 access_20240103.log
-rw-r--r--. 1 root root  867 1月   3 12:11 error_20240103.log
3.4 AWStats 日志分析
httpd 服务器的访问日志文件 access_log 中,记录了大量的客户机访问信息,通过
分析这些信息,可以及时了解 Web 站点的访问情况,如每天或特定时间段的访问 IP 数量,
点击量最大的页面等。
本节将介绍如何安装 AWStats 日志分析系统,以完成自动化的日志分析与统计工作。
3.4.1 部署 AWStats 分析系统
AWStats 是使用 Perl 语言开发的一款开源日志分析系统,它不仅可用来分析 Apache
站服务器的访问日志,也可以用来分析 Samba Vsftpd IIS 等服务的日志信息。结合 crond
等计划任务服务,可以对不断增长的日志内容定期进行分析。
AWStats 的软件包可以从官方网站下载。下面以 awstats-7.7.tar.gz 软件包为例,介绍
Web 站点 www.kcg.com 添加 AWStats 日志分析系统的过程。
1 .安装 AWStats 软件包
Awstats 软件包的安装非常简单,只需将软件包解压到 httpd 服务器中的 /usr/local/ 目录
下即可。
[root@nmd ~]# tar zxf awstats-7.7.tar.gz 
[root@nmd ~]# mv awstats-7.7 /usr/local/awstats
2 .为要统计的站点建立配置文件
AWStats 系统支持统计多个网站的日志文件,通常以网站名称来区分不同的站点。因
此,在执行日志文件分析之前,需要为每个 Web 站点建立站点统计配置文件,借助于
AWStats 系统提供的 awstats_configure.pl 脚本可以简化创建过程。
首先切换到 awstats/tools 目录下,并执行其中的 awstats_configure.pl 脚本。
[root@nmd ~]# cd /usr/local/awstats/tools/
[root@nmd tools]# chmod +x awstats_configure.pl
[root@nmd tools]# ./awstats_configure.pl 
之后将会进入一个交互式的配置过程,将会检查 awstats 的安装目录、 httpd 服务的配
置文件路径等系统环境,并提示用户指定站点名称、设置配置文件路径。
1 )指定 httpd 主配置文件的路径
配置脚本将查找并识别 httpd 服务的主配置文件,以便自动添加相关配置内容。如果未
能在常见的安装路径中找到相关配置内容,则用户需要根据提示进行手工指定。
[root@nmd tools]# ./awstats_configure.pl ----- AWStats awstats_configure 1.0 (build 20140126) (c) Laurent Destailleur -----
This tool will help you to configure AWStats to analyze statistics for
one web server. You can try to use it to let it do all that is possible
in AWStats setup, however following the step by step manual setup
documentation (docs/index.html) is often a better idea. Above all if:
- You are not an administrator user,
- You want to analyze downloaded log files without web server,
- You want to analyze mail or ftp log files instead of web log files,
- You need to analyze load balanced servers log files,
- You want to 'understand' all possible ways to use AWStats...
Read the AWStats documentation (docs/index.html).-----> Running OS detected: Linux, BSD or Unix-----> Check for web server installEnter full config file path of your Web server.
Example: /etc/httpd/httpd.conf
Example: /usr/local/apache2/conf/httpd.conf
Example: c:\Program files\apache group\apache\conf\httpd.conf
Config file path ('none' to skip web server setup):
> 
Config file path ('none' to skip web server setup):
> 
Config file path ('none' to skip web server setup):
> /usr/local/httpd/conf/httpd.conf 
2 )为指定 Web 站点创建配置文件
根据提示继续选择“ y ”以创建站点配置文件,并指定要统计的目标网站名称、站点配
置文件的存放位置(默认为 /etc/awstats )。
-----> Check and complete web server config file '/usr/local/httpd/conf/httpd.conf'
Warning: You Apache config file contains directives to write 'common' log files
This means that some features can't work (os, browsers and keywords detection).
Do you want me to setup Apache to write 'combined' log files [y/N] ? yAdd 'Alias /awstatsclasses "/usr/local/awstats/wwwroot/classes/"'Add 'Alias /awstatscss "/usr/local/awstats/wwwroot/css/"'Add 'Alias /awstatsicons "/usr/local/awstats/wwwroot/icon/"'Add 'ScriptAlias /awstats/ "/usr/local/awstats/wwwroot/cgi-bin/"'Add '<Directory>' directiveAWStats directives added to Apache config file.-----> Update model config file '/usr/local/awstats/wwwroot/cgi-bin/awstats.model.conf'File awstats.model.conf updated.-----> Need to create a new config file ?
Do you want me to build a new AWStats config/profile
file (required if first install) [y/N] ? y-----> Define config file name to create
What is the name of your web site or profile analysis ?
Example: www.mysite.com
Example: demo
-----> Define config file path
In which directory do you plan to store your config file(s) ?
Default: /etc/awstats
Directory path to store config file(s) (Enter for default):
> //直接按 Enter 键接受默认设置
3 )后续配置工作
后续配置工作接下来将会尝试重启 httpd 服务(支持使用 /sbin/service httpd restart
/bin/systemctl restarthttpd.servic 命令重启,需要有相关脚本,否则手动重启 apache 服务),
然 后 设 置 cron 计 划 任 务 ( 7.6 版 本 尚 不 支 持 , 需 要 根 据 提 示 使 用
/usr/local/awstats/tools/awstats_updateall.pl now 命令,自行设置任务计划),按两次 Enter
键退出配置工具。
Apache 2.4 以上版本,因为重新定义了访问权限,所以需要将自动生成的 awstats 访
问权限进行相应修改。同时,加载 CGI 模块
[root@nmd tools]# vim /usr/local/httpd/conf/httpd.conf#
<Directory "/usr/local/awstats/wwwroot">Options NoneAllowOverride None
#   Order allow,deny
#   Allow from allRequire all granted
</Directory>
[root@nmd tools]# systemctl restart httpd.service
根据上述设置过程,为网站 www.kgc.com 新建立的站点统计配置文件将存放到
/etc/awstats 目录下,文件名称为 awstats.www.kgc.com.conf 。若还需要统计其他 Web
点 的 日 志 , 可 以 执 行 awstats_configure.pl 脚 本 创 建 新 的 配 置 文 件 。 可 以 使 用
 http://localhost/awstats/awstats.pl?config=www.bdqn.com地址访问日志分析页面。
3 .修改站点统计配置文件
为站点 www.kgc.com 建立好配置文件以后,还需要对其做进一步的修改。修改的内容
主要包括指定要分析的 Web 日志文件和指定用来存放统计数据的目录。
[root@nmd ~]# vim /etc/awstats/awstats.www.bdqn.com.conf 
LogFile="/var/log/httpdlogs/access_log"
DirData="/var/lib/awstats"
[root@nmd ~]# mkdir /var/lib/awstats
其中, LogFile 用来指定日志路径,应设置 Web 日志文件的实际位置; DirData 用来指
定数据目录,可以采用默认值,但需要创建指定的目录( /var/lib/awstats )。
4 .执行日志分析,并设置 cron 计划任务
使用 AWStats 提供的 awstats_updateall.pl 脚本,可以更新所有站点(根据站点配置文
件)的日志统计数据。执行该脚本时,系统将会自动分析新增的日志内容,并将分析结果更
新到统计数据库中。
[root@nmd ~]# cd /usr/local/awstats/tools/
[root@nmd tools]# chmod +x awstats_updateall.pl 
[root@nmd tools]# ./awstats_updateall.pl now
由于 Web 日志文件的内容是在不断更新的,为了及时反馈网站访问情况,日志分析工
作也需要定期、自动地执行。通过 crond 服务可设置计划任务,一般建议每五分钟执行一次
日志分析任务。
[root@nmd tools]# crontab -e
*/5 * * * * /usr/local/awstats/tools/awstats_updateall.pl now
3.4.2 访问 AWStats 分析系统
访问站点 http://192.168.9.158/awstats/awstats.pl?config=www.kgc.com 后,即可看到
AWStats 日志分析系统的统计页面,该页面分别按访问时间、用户来源、所用浏览器等类
别列出各种详细的网站访问情况 。若此处访问出现 403 Forbidden 错误,关
selinux 即可正常访问。
在该页面中,拖动窗口右侧的滚动条即可查看整个分析报告内容;或者单击左侧导航栏
中的链接,可以选择查看其中的部分内容。
在“按参观时间”类别下,可以查看每小时、每天、每周、每月的网站访问次数、网页
数、文件数等信息。
在“浏览器统计”类别下,可以查看用户的参观时间、所用的操作系统、浏览器版
搜索本网站的关键词等相关信息。
在访问 AWStats 系统时,需要指定 awstats 目录、脚本位置、统计目标等信息,这样
既不便于记忆,输入时也比较麻烦。为了简化操作,可以在 Web 根目录下建立一个自动跳
转的 HTML 网页。例如,执行以下操作后,用户只要访问 http://www.kgc.com/awb.html
即可自动跳转到 www.kgc.com 站点的 AWStats 日志分析页面。
[root@www ~]# vim /var/www/html/awb.html
<html>
<head>
<meta http-equiv=refresh content="0;
url=http://www.bdqn.com/awstats/awstats.pl?config=www.bdqn.com">
</head>
<body></body>
</html>

相关文章:

了解Apache 配置与应用

本章内容 理解 Apache 连接保持 掌握 Apache 的访问控制 掌握 Apache 日志管理的方法 Apache HTTP Server 之所以受到众多企业的青睐&#xff0c;得益于其代码开源、跨平台、功能 模块化、可灵活定制等诸多优点&#xff0c;不仅性能稳定&#xff0c;在安全性方面的表现也十分…...

悟的复杂度分析

复杂度分析&#xff1a; 时间复杂度&#xff08;算法中的基本操作的执行次数&#xff09;&#xff1b; 空间复杂度。 时间复杂度&#xff1a; 实际上我们计算时间复杂度时&#xff0c;我们其实并不需要计算准确的执行次数&#xff0c;只需要大概的执行次数&#xff0c;因此我们…...

《网络是怎样连接的》2.5节图表(自用)

图5.1&#xff1a;ip包结构 图5.2&#xff1a;ip网络包的传输方式 1.以太网的部分也可以替换成其他的东西&#xff0c;例如无线局域网、ADSL、FTTH等&#xff0c;它们都可以替代以太网的角色帮助IP协议来传输网络包 2.根据ARP协议&#xff0c;客户端可以根据ip地址得到下一个路…...

java 音乐会售票平台系统Myeclipse开发mysql数据库struts2结构java编程计算机网页项目

一、源码特点 java 音乐会售票平台系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助struts2框架开发mvc模式&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发 环境为TOCAT7.0,Myeclipse8.5开发&#xff0c;数据…...

鸿蒙开发解决agconnect sdk not initialized. please call initialize()

文章目录 项目场景:问题描述原因分析:解决方案:总结:项目场景: 鸿蒙开发报错: agconnect sdk not initialized. please call initialize() 问题描述 报错内容为: 10-25 11:41:01.152 6076-16676 E A0c0d0/JSApp: app Log: 数据查询失败: {“code”:1100001,“messag…...

秋招阿里巴巴java笔试试题-精

一、单项选择题 1、以下函数的时间复杂度是 &#xff08; &#xff09; 1 2 3 4 5 6 7 8 9 void func(int x,int y, int z){ if(x<0) printf("%d, %d\n", y, z); else { func(x-1,y1,z); func(x-1,y,z1); } } A.O(x*y*z) B.O(x^2*y^2) C.O(2^x) D.O(2^x*…...

018、通用集合类型

Rust标准库包含了一系列非常有用的被称为集合的数据结构。大部分的数据结构都代表着某个特定的值&#xff0c;但集合却可以包含多个值。 与内置的数组与元组类型不同&#xff0c;这些集合将自己持有的数据存储在了堆上。这意味着数据的大小不需要在编译时确定&#xff0c;并且可…...

【Leetcode】236.二叉树的最近公共祖先

一、题目 1、题目描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 示例1…...

C#,入门教程(11)——枚举(Enum)的基础知识和高级应用

上一篇&#xff1a; C#&#xff0c;入门教程(10)——常量、变量与命名规则的基础知识https://blog.csdn.net/beijinghorn/article/details/123913570 不会枚举&#xff0c;就不会编程&#xff01; 枚举 一个有组织的常量系列 比如&#xff1a;一个星期每一天的名字&#xf…...

java SSM水质历史数据可视化设计myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM水质历史数据可视化设计是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主…...

C++推箱子游戏开发

游戏 自动地图生成背景音乐推箱子到目标位置 美工资源 美工资源&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1MZv8pDBXdNDbXxuAAPSM-A **提取码&#xff1a;**2syq 图形库: www.easyx.cn cpp文件 #include "box_man.h" #include <conio.h> #…...

Kotlin函数式接口

函数式接口 接口只有一个抽象方法的接口&#xff0c;称为 函数式接口 functional interface&#xff0c;也叫做 Single Abstract Method(SAM) interface。 注&#xff1a;函数式接口&#xff0c;只有一个抽象方法&#xff0c;但可以有多个非抽象方法。 一、Kotlin Kotlin支持…...

2024年1月9日学习总结

目录 学习目标学习内容联邦学习基础&#xff1a;why, what, howwhy&#xff1f;what&#xff1f;how&#xff1f; 联邦学习的例子——CIFAR-10数据集&#xff08;分类问题&#xff09;1、import libararies2、hyper-parameters3、加载并且划分数据4、创建神经网络模型5、helper…...

Nacos使用MySQL8时区问题导致启动失败

文章目录 配置下mysql的时区方式一 (永久)方式二&#xff08;临时&#xff09; 由于mysql8需要配置时区&#xff0c;如果不配置时区&#xff0c;nacos就连不上mysql&#xff0c;从而也就无法登录nacos自带的图形化界面 配置下mysql的时区 方式一 (永久) 直接修改配置文件&…...

在k8s集群中部署多nginx-ingress

关于ingress的介绍&#xff0c;前面已经详细讲过了&#xff0c;参考ingress-nginx详解和部署方案。本案例ingress的部署使用deploymentLB的方式。 参考链接&#xff1a; 多个ingress部署 文章目录 1. 下载ingress的文件2. 文件资源分析3. 部署ingress3.1 部署第一套ingress3.1…...

SLF4J Spring Boot日志框架

JAVA日志框架 JAVA有好多优秀的日志框架&#xff0c;比如log4j、log4j2、logback、JUL&#xff08;java.util.logging&#xff09;、JCL&#xff08;JAVA Common Logging&#xff09;等等&#xff0c;logback是后起之秀&#xff0c;是Spring Boot默认日志框架。 今天文章的目…...

mysql之导入导出远程备份

文章目录 一、navicat导入导出二、mysqldump命令导入导出2.1导出2.1.1 导出表数据和表结构2.1.2 只导出表结构() 2.2 导入(使用mysqldump导入 包含t _log表的整个数据库 共耗时 20s;)方法一&#xff1a;方法二&#xff1a; 三、LOAD DATA INFILE命令导入导出(只针对单表)设置导…...

Java虚拟机ART 读书笔记 第2章 深入理解Class文件格式

GitHub - Omooo/Android-Notes: ✨✨✨这有一包小鱼干&#xff0c;确定不要吃嘛&#xff1f;( 逃 深入理解Android&#xff1a;Java虚拟机ART 读书笔记 以下内容均来自书中内容 建议看原书哦 第2章 深入理解Class文件格式 2.1 class文件总览 Class文件格式全貌 u4&#xff…...

编程基础 - 初识Linux

编程基础 - 初识Linux 返回序言及专栏目录 文章目录 编程基础 - 初识Linux前言一、Linux发展简介二、现代Linux三、Linux系统各发行版小结 前言 为什么要学习Linux呢&#xff1f;我这Windows用得好好的&#xff0c;简单易用傻瓜式、用的人还超多&#xff01;但是我要告诉你的…...

c yuv422转yuv420p

思路&#xff1a; yuv422 存储格式为 y u y v y u y v y u y v y u y v yuv420p 存储最简单&#xff0c;先存所以的y&#xff0c;再存u&#xff0c;最后v 所以先把422所有的y存在一起&#xff0c;再提奇数行的u &#xff0c;偶数行舍弃。提…...

计算机网络 - 路由器查表过程模拟 C++(2024)

1.题目描述 参考计算机网络教材 140 页 4.3 节内容&#xff0c;编程模拟路由器查找路由表的过程&#xff0c;用&#xff08;目的地址 掩码 下一跳&#xff09; 的 IP 路由表以及目的地址作为输入&#xff0c;为目的地址查找路由表&#xff0c;找出正确的下一跳并输出结果。 1.…...

实现pytorch版的mobileNetV1

mobileNet具体细节&#xff0c;在前面已做了分析记录&#xff1a;轻量化网络-MobileNet系列-CSDN博客 这里是根据网络结构&#xff0c;搭建模型&#xff0c;用于图像分类任务。 1. 网络结构和基本组件 2. 搭建组件 &#xff08;1&#xff09;普通的卷积组件&#xff1a;CBL …...

vue多tab页面全部关闭后自动退出登录

业务场景&#xff1a;主项目是用vue写的单页面应用&#xff0c;但是有多开页面的需求&#xff0c;现在需要在用户关闭了所有的浏览器标签页面后&#xff0c;自动退出登录。 思路&#xff1a;因为是不同的tab页面&#xff0c;我只能用localStorage来通信&#xff0c;新打开一个…...

记一个集群环境部署不完整导致的BUG

一 背景 产品有三个环境&#xff1a;开发测试环境、验收环境、生产环境。 开发测试环境&#xff0c;保持最新的更新&#xff1b; 验收环境&#xff0c;阶段待发布内容&#xff1b; 生产环境&#xff0c;部署稳定内容。 产品为BS架构&#xff0c;后端采用微服务&#xf…...

Go zero copy,复制文件

这里使用零拷贝技术复制文件&#xff0c;从内核态操作源文件和目标文件。避免了在用户态开辟缓冲区&#xff0c;然后从内核态复制文件到用户态的问题。 由内核态完成文件复制操作。 调用的是syscall.Sendfile系统调用函数。 //go:build linuxpackage zero_copyimport ("f…...

http协议九种请求方法介绍及常见状态码

http1.0定义了三种&#xff1a; GET: 向服务器获取资源&#xff0c;比如常见的查询请求POST: 向服务器提交数据而发送的请求Head: 和get类似&#xff0c;返回的响应中没有具体的内容&#xff0c;用于获取报头 http1.1定义了六种 PUT&#xff1a;一般是用于更新请求&#xff0c;…...

详解flink exactly-once和两阶段提交

以下是我们常见的三种 flink 处理语义&#xff1a; 最多一次&#xff08;At-most-Once&#xff09;&#xff1a;用户的数据只会被处理一次&#xff0c;不管成功还是失败&#xff0c;不会重试也不会重发。 至少一次&#xff08;At-least-Once&#xff09;&#xff1a;系统会保…...

Qt/QML编程学习之心得:QDbus实现service接口调用(28)

D-Bus协议用于进程间通讯的。 QString value = retrieveValue();QDBusPendingCall pcall = interface->asyncCall(QLatin1String("Process"), value);QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pcall, this);QObject::connect(watcher, SI…...

前端nginx配置指南

前端项目发布后&#xff0c;有些接口需要在服务器配置反向代理&#xff0c;资源配置gzip压缩&#xff0c;配置跨域允许访问等 配置文件模块概览 配置示例 反向代理 反向代理是Nginx的核心功能之一&#xff0c;是指客户端发送请求到代理服务器&#xff0c;代理服务器再将请求…...

接口测试到底怎么做,5分钟时间看完这篇文章彻底搞清楚

01、通用的项目架构 02、什么是接口 接口&#xff1a;服务端程序对外提供的一种统一的访问方式&#xff0c;通常采用HTTP协议&#xff0c;通过不同的url&#xff0c;不同的请求类型&#xff08;GET、POST&#xff09;&#xff0c;不同的参数&#xff0c;来执行不同的业务逻辑。…...

如何规避电子政务门户网站建设教训/如何做到精准客户推广

2019独角兽企业重金招聘Python工程师标准>>> 【中国公益在线广州讯 记者张强】10月19日&#xff0c;由中国.尚洋科技、法国.科诗美蒂卡主办&#xff0c;珠海尚妆生物科技有限公司承办&#xff0c;世界旅游辣妈大赛组委会、广东省色妆职业培训学院、南方日报社、广东…...

给网站写文章怎么做/华为云速建站

类似于弹飞绵羊的做法 我们对于当前节点往上能达到的节点连边 查询的话直接查询这个点到根的距离即可(只涉及cut和Link的LCT) #include <algorithm> #include <iostream> #include <vector> const int MAXN1e510; #define ll long long using namespace s…...

教做美食网站源码/2023年6月份又封城了

最近不停的在考虑C#读取数据性能问题第一种使用ado拼接sql连接数据库第二种使用ado调用存储过程第三种使用entityframework加linq第四种使用反射IList<T>1.从开发速度上面来看的话&#xff0c;entityframework加linq可以很容易实现数据库的读取&#xff0c;将大量的时间放…...

临沂建设企业网站/社群营销的十大步骤

Series 一种类似于一维数组的对象 Series 有values 和 index 属性 Series可以看成定长的有序字典 Series对象本身及其索引都有以一个name属性 DataFrame 表格型数据结构 最常用的构建方法&#xff1a;直接传入一个由等长列表或Numpy 数组组成的字典...

律师怎样做网站/手机app安装下载

属性访问 方法含义_getattr_(self,name)定义用户试图获取一个不存在的属性时的行为__getattribute__(self.name)定义当该类的属性被访问时的行为__setattr__(self,name,value)定义当一个属性被设置时的行为__delattr__(self,name)定义当一个属性被删除时的行为 class C:def __…...

长沙公司网站设计报价/上海自媒体推广

1&#xff0c;Flask框架的诞生&#xff1a; Flask诞生于2010年&#xff0c;是Armin ronacher&#xff08;人名&#xff09;用Python语言基于Werkzeug工具箱编写的轻量级Web开发框架。它主要面向需求简单的小应用。 Flask本身相当于一个内核&#xff0c;其他几乎所有的功能都要…...