Linux Apache 配置与应用 【虚拟主机 连接保持 日志分割 分析系统 优化网页】

news2024/9/27 22:07:18

--------构建虚拟 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端口号,因此用户在浏览不同的虚拟站点时需要同时指定端口号才能访问。

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

1.为虚拟主机提供域名解析(DNS、hosts)

方法一

部署DNS域名解析服务器 来提供域名解析

[root@xuexx xue]# cat DNS.sh  #一键部署DNS脚本,挂载光盘,yum下载,配置DNS

#!/bin/bash

mount /dev/sr0 /mnt &> /dev/null

echo "[local]
name=local
baseurl=file:///mnt
enabled=1
gpgcheck=0" > /etc/yum.repos.d/local.repo
yum clean all && yum makecache

read -p "请输入你的IP地址:" LAN_IP
yum install -y bind
cp /etc/named.conf{,.bak}
sed -i -e '13 s/127.0.0.1/any/' -e '21 s/localhost/any/' /etc/named.conf
cp /etc/named.rfc1912.zones{,.bak}
sed -i '24 a zone "benet.com" IN {\n\ttype master;\n\tfile "benet.com.zone";\n\tallow-update { none; };\n};\n' /etc/named.rfc1912.zones
cp -p /var/named/named.localhost /var/named/benet.com.zone
sed -i -e '2 s/rname.invalid./admin/' -e '9 s/127.0.0.1/'$LAN_IP'/' -e '$a www IN A '$LAN_IP'' -e '10d' /var/named/benet.com.zone

systemctl restart named

 更改DNS服务器,从192.168.80.101获取域名解析

vim /etc/resolv.conf
    nameserver 192.168.80.101

除了benet,再增加accp域名解析

5yy复制 p黏贴

vim /etc/named.rfc1912.zones

zone "accp.com" IN {
        type master;
        file "accp.com.zone";
        allow-update { none; };
};

复制一个accp区域文件

cd /var/named
cp -p benet.com.zone accp.com.zone

查看DNS解析情况

[root@xuexx xue] nslookup www.benet.com
Server:         192.168.80.101
Address:        192.168.80.101#53

Name:   www.benet.com
Address: 192.168.80.101

[root@xuexx named]# nslookup www.accp.com
Server:         192.168.80.101
Address:        192.168.80.101#53

Name:   www.accp.com
Address: 192.168.80.101

方法二

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

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


--------------------------------------------------------------------

<VirtualHost 192.168.80.101:80>
#ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/var/www/html/benet"
    ServerName www.benet.com
#ServerAlias www.dummy-host.example.com
    ErrorLog "logs/benet.com-error_log"
    CustomLog "logs/benet.com-access_log" common
</VirtualHost>

<VirtualHost 192.168.80.101: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.添加网页文档所在目录的访问控制配置

从 /etc/httpd/conf/httpd.conf拷贝样本配置并修改,写入/etc/httpd/conf.d/vhosts.conf

在此直接列出修改完成后的结果

vim /etc/httpd/conf.d/vhosts.conf

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

------------------------------------------------------------

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

Options指令解释
Options指令的主要作用是控制特定目录将启用哪些服务器特性。可以在Apache服务配置文件的虚拟主机配置(VirtualHost)、特定目录配置(Directory)以及.htaccess文件中使用。
Options指令常用选项

None:表示不启用任何的服务器特性。
FollowSymLinks:服务器允许在此目录中使用符号连接(软链接)可以把网页文件放在其他位置,再在网页目录创建一个软链接指向网页文件,可以正常访问。
Indexes:如果输入的网址对应服务器上的一个文件目录,而此目录中又没有Apache配置文件中的DirectoryIndex指令指定的文件(例如: DirectoryIndex index.html index.php),则列出该目录下的所有文件,而不是直接返回404。
lMultiViews:如果客户端请求的路径可能对应多种类型的文件,那么服务器将根据客户端请求的具体情况自动选择一个最匹配客户端要求的文件。例如,在服务器站点的file文件夹下中存在名为hello.jpg和hello.html的两个文件,此时用户输入 http://localhost/file/hello ,如果在 file文件夹下并没有 hello子目录,那么服务器将会尝试在 file目录下查找形如 hello.*的文件,然后根据用户请求的具体情况返回最匹配要求的 hello.jpg或者 hello.html。
Al:表示除 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 地址网络访问。

5.修改主配置文件,加载独立的虚拟机配置文件

  • RPM或YUM安装的httpd服务主配置文件路径
vim /etc/httpd/conf/httpd.conf
#RPM或YUM安装的httpd服务主配置文件路径

IncludeOptional conf.d/*.conf
#最后一行已默认开启此项
  • 源码编译安装的httpd服务主配置文件路径
vim /usr/local/httpd/conf/httpd.conf       #源码编译安装的httpd服务主配置文件路径

--483行--取消注释
Include conf/extra/httpd-vhosts.conf       #加载独立的配置文件

重启服务

systemctl restart httpd
netstat -lntp | grep 80

6.在客户机中访问虚拟 Web 主机

http://www.benet.com
http://www.accp.com

 


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

配置虚拟网卡,模拟多张网卡有多个地址的情况

ifconfig ens33:1 192.168.80.201 netmask 255.255.255.0

更改IP,模拟不同ip的虚拟主机

vim /etc/httpd/conf.d/vhosts.conf

<VirtualHost 192.168.80.101: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.201:80>                    
    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>

修改监听选项,增加201网卡80端口

vim /etc/httpd/conf/httpd.conf
--43行--插入
Listen 192.198.80.201:80

重启服务

systemctl restart httpd 

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

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

修改端口,模拟基于端口的虚拟主机

vim /etc/httpd/conf.d/vhosts.conf

<VirtualHost 192.168.80.101:666>                    
    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.101:888>                    
    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>

设置监听端口666 888

vim /etc/httpd/conf/httpd.conf
43行
Listen 192.168.80.101:666
Listen 192.168.80.101:888

重启服务

systemctl restart httpd 

在客户机中浏览器访问虚拟 Web 主机
http://192.168.80.10:80
http://192.168.80.10:8080

网页根目录、虚拟目录
 

vim /etc/httpd/conf/httpd.conf
    DocumentRoot "/usr/local/httpd/htdocs"    网页根目录
    Alias /file /var/www/html/file            别名目录(虚拟目录)

http://www.accp.com/file/hello.html    -->   /var/www/html/file/hello.html
http://www.accp.com/test/abc.html    -->   /usr/local/httpd/htdocs/test/abc.html





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

vim /usr/local/httpd/conf/extra/httpd-default.conf #源码安装的位置
vim /etc/httpd/conf.d/httpd-default.conf #yum安装的位置,需要自己创建

KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

上方代码yum位置不确定,有待商榷 

vim /etc/httpd/conf/httpd.conf
最后一行 去除注释(前面应该做过,不同版本的文件结构可能不一样)
IncludeOptional conf.d/*.conf

KeepAlive On
设置是否打开连接保持功能,后面接OFF表示关闭,接ON表示打开。可以根据网站的并发请求量决定是否打开,即在高并发时打开连接保持功能,并发量不高时关闭此功能。
MaxKeepAliveRequests 100
用于设置在一次长连接中可以传输的最大http请求数量,超过此最大请求数量就会断开连接,最大值的设置决定于网站中网页的内容,一般设置数量会多于网站中所有的元素。

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

 

不同版本文档格式可能不一样,如上下两图 

 





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

1.创建用户认证文件

cd /etc/httpd/  
#定位到/etc/httpd/conf/httpd.conf中指定用户认证文件的路径
#(对应即可 第二部代码中设置为/etc/httpd/userlist文件)

htpasswd [-c]  文件路径  用户名   --->  设置密码

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

2.在目录的访问控制配置中添加用户认证配置

vim /etc/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>

 上方代码为解释,本次实验实际使用的代码如下:

vim /etc/httpd/conf/httpd.conf

<Directory "....">
    AllowOverride None
    Options None
    Require valid-user
    AuthName "...."
    AuthType Basic
    AuthUserFile 指定用户认证文件的路径
</Directory>
Alias /file /var/www/html/file #设置别名,可以访问test也可以访问file

---------------------------------------------------

<Directory "/var/www/html/file">
    AllowOverride None
    Options None
    Require valid-user
    AuthName "HELLO SOMEBODY"
    AuthType Basic
    AuthUserFile /etc/httpd/userlist
</Directory>
Alias /file /var/www/html/file 

3.重启服务,测试用户授权

mkdir -p /var/www/html/file
echo "<h1>this is vdir file</h1>" > /var/www/html/file/index.html
systemctl restart httpd

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

http://192.168.80.10:80/test

需要认证,并且由于test为file别名,所以均可访问。

 

 

 

 

 





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

使用Apache 自带 rotatelogs 分割工具,将 Apache 的日志进行按每天的日期自动分割。

which rotatelogs #找出rotatelogs地址
/usr/sbin/rotatelogs


vim /etc/httpd/conf/httpd.conf
--183行--修改
ErrorLog "| /usr/sbin/rotatelogs -l /var/log/httpd/error_%Y%m%d.log 86400"
#分割错误日志
--218行--修改
CustomLog "| /usr/sbin/rotatelogs -l /var/log/httpd/access_%Y%m%d.log 86400" combined
#分割访问日志
#86400一天的秒数 combined长格式 common短格式

若是想要为开头的虚拟主机vhosts也配置日志分隔,写法如下。在此只对上方主配置文件进行了实验,下方代码仅供参考。

注意,这里演示代码路径使用的是源码安装的路径,需要按实际情况修改为yum安装或是源码安装。(上方代码yum安装,下方代码源码安装)

#vim /etc/httpd/conf.d/vhosts.conf #yum安装路径
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.80.101

ls /var/log/httpd

出现当前日期的 log 记录

 

配合 Apache 日志 可以做出shell脚本,过滤几秒内访问量很多的ip并且封禁

首先使用awk等命令过滤出/etc/httpd/logs/asscss_log中ip,uniq统计次数,大于一定次数的,写入变量deny_ip,追加写入http.conf文件中完成黑名单禁止。最后重载服务,不中断重载。

 


 




--------AWStats 分析系统--------

AWStats 是使用Perl 语言开发的一款开源日志分析系统,它用来完成自动化的日志统计与分析工作。

1.将安装AWStats 所需软件包传到/opt目录下,安装 AWStats 软件包

                        awstats-7.6.tar.gz

                

cd /opt
tar zxvf awstats-7.6.tar.gz
mv /opt/awstats-7.6 /usr/local/awstats

3.为要统计的站点建立配置文件

cd /usr/local/awstats/tools
./awstats_configure.pl
......
Config file path ('none' to skip web server setup):
> /usr/local/httpd/conf/httpd.conf          #输入httpd服务主配置文件的路径
Your web site, virtual server or profile name:
> www.kgc.com                                  #输入要统计的站点域名

其它全部是y 或者 回车

3.修改自动生成的 awstats 访问权限,加载 CGI 模块(Apache 2.4 以上版本需要加载CGI 模块) 

vim /usr/local/httpd/conf/httpd.conf
ErrorLog "logs/error_log"
CustomLog "logs/access_log" combined
......
--143行--
<IfModule !mpm_prefork_module>
    LoadModule cgid_module modules/mod_cgid.so        #取消注释
</IfModule>
<IfModule mpm_prefork_module>
    LoadModule cgi_module modules/mod_cgi.so        #取消注释
</IfModule>
......
--跳至末行修改--
<Directory "/usr/local/awstats/wwwroot">
    Options None
    AllowOverride None
    #Order allow,deny            #注释掉                    
    #Allow from all                #注释掉
    Require all granted            #添加
</Directory>

4.修改站点统计配置文件

vim /etc/awstats/awstats.www.kgc.com.conf
LogFile="/usr/local/httpd/logs/access_log"        #修改访问日志文件位置(由于日志格式问题,不能设置虚拟主机的日志)
DirData="/var/lib/awstats"                        #awstats目录默认不存在,需要手动创建

mkdir /var/lib/awstats

5.执行日志分析,并设置 cron 计划任务

systemctl restart httpd
cd /usr/local/awstats/tools/
./awstats_updateall.pl now      #更新数据(根据站点配置文件指定的日志文件路径获取日志数据)
#注意,更新数据前最好先把access.log文件清空后重新访问站点,再获取日志数据。

crontab -e
*/5 * * * * /usr/local/awstats/tools/awstats_updateall.pl now

systemctl start crond

6.访问 AWStats 分析系统站点

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

echo "192.168.80.10 www.kgc.com" >> /etc/hosts

浏览器访问
http://www.kgc.com/awstats/awstats.pl?config=www.kgc.com

7.优化网页地址

vim /usr/local/httpd/htdocs/aws.html
<html>
<head>
<meta http-equiv=refresh content="0;url=http://www.kgc.com/awstats/awstats.pl?config=www.kgc.com">
</head>
<body></body>
</html>




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

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

相关文章

《深入理解计算机系统(CSAPP)》第8章 异常控制流 - 学习笔记

写在前面的话&#xff1a;此系列文章为笔者学习CSAPP时的个人笔记&#xff0c;分享出来与大家学习交流&#xff0c;目录大体与《深入理解计算机系统》书本一致。因是初次预习时写的笔记&#xff0c;在复习回看时发现部分内容存在一些小问题&#xff0c;因时间紧张来不及再次整理…

chatgpt赋能python:Python合并函数:一个简单但有用的工具

Python合并函数&#xff1a;一个简单但有用的工具 Python是一种优雅而强大的编程语言&#xff0c;拥有许多内置的函数和库&#xff0c;可以让编程变得更加简单和高效。其中&#xff0c;合并函数是一个非常有用的工具&#xff0c;它可以让我们快速而灵活地合并和处理数据。 什…

5月30日第壹简报,星期二,农历四月十二

5月30日第壹简报&#xff0c;星期二&#xff0c;农历四月十二坚持阅读&#xff0c;静待花开1. 比亚迪&#xff1a;自主研发了常压油箱的燃油蒸汽排放控制技术&#xff0c;能符合蒸发排放法规标准&#xff0c; 愿与所有同行共享核心技术专利。2. 中国计划2030年前实现首次登月&a…

chatgpt赋能python:Python中升序和降序排序:什么是升序和降序以及如何使用Python进行排序

Python中升序和降序排序&#xff1a;什么是升序和降序以及如何使用Python进行排序 介绍 Python是一种强大的编程语言&#xff0c;可以用来处理各种类型的数据。其中包括对数据进行排序&#xff0c;Python具有方便且易于使用的排序功能。在Python中&#xff0c;可以使用升序和…

chatgpt赋能python:Python中可迭代对象的介绍

Python中可迭代对象的介绍 Python是一种高级编程语言&#xff0c;它具有简单易学、可读性强、功能强大等特点&#xff0c;成为了数据科学、机器学习、Web开发等领域的热门选择。Python中有很多重要的概念和功能&#xff0c;其中之一就是支持可迭代对象的概念。 在Python中&am…

chatgpt赋能python:Python中如何生成表格

Python中如何生成表格 在数据分析和处理中&#xff0c;表格是一种常见的数据格式&#xff0c;并且在不同的场景下都有着不同的用途。Python作为一种高效的编程语言&#xff0c;可以帮助我们轻松地生成和操作表格数据。在本文中&#xff0c;我们将介绍Python中生成表格的方法&a…

IDEA控制台tomcat 乱码

问题 IDEA控制台tomcat 乱码 详细问题 项目部署至tomcat上&#xff0c;启动tomcat&#xff0c;IDEA控制台终端Server日志&#xff0c;Tomcat Localhost日志&#xff0c;Tomcat Catalina日志乱码 Server日志 D:\tomcat9\bin\catalina.bat run [2023-05-29 11:20:24,521] Art…

【Linux】在Ubuntu中卸载、下载mysql以及如何检查mysql是否卸载成功

介绍 这里是小编成长之路的历程&#xff0c;也是小编的学习之路。希望和各位大佬们一起成长&#xff01; 以下为小编最喜欢的两句话&#xff1a; 要有最朴素的生活和最遥远的梦想&#xff0c;即使明天天寒地冻&#xff0c;山高水远&#xff0c;路远马亡。 一个人为什么要努力&a…

5.30黄金空头能否延续?今日多空如何布局?

近期有哪些消息面影响黄金走势&#xff1f;今日黄金多空该如何研判&#xff1f; ​黄金消息面解析&#xff1a;周一(5月29日)进入欧市盘中&#xff0c;对美国周末达成债务上限协议的乐观情绪推动风险情绪回升&#xff0c;与此同时&#xff0c;上周公布的美国PCE数据让美联储难…

ChatGPT Sorry, you have been blocked(抱歉,您已被屏蔽)的解决方法

最近在使用 ChatGPT 时大家遇到的最多的问题就是 Sorry, you have been blocked&#xff08;抱歉&#xff0c;您已被屏蔽&#xff09;了&#xff0c;之前的 Access denied 似乎都不常见了&#xff0c;今天老王就分享下这个问题的原因和解决方法。 一、ChatGPT 被屏蔽 blocked …

汇编调试及学习

汇编调试 打印寄存器的值 打印内存地址 打印8字节&#xff0c;就是64位 打印格式 是从低位取过来的 b 字节 h 双字节 w四字节 g八字节 前变基 后变基 。 后变基这个变基会发生变化的。前变基变基不会发生变化需要用&#xff01;号。 前变基 &#xff0c; 加了&#xff0…

【Springcloud】RabbitMQ入门

文章目录 一、同步通讯与异步通讯1、同步调用的优缺点2、异步调用的优缺点 二、RabbitMQ1、MQ消息队列2、RabbitMQ的安装3、RabbitMQ的结构和概念4、RabbitMQ的消息模型5、入门案例 一、同步通讯与异步通讯 同步通讯就像打视频&#xff0c;两边可以实时得到相关信息。异步通讯…

打开复制过去的virtualbox文件之后,在打开时出现只有logs文件的解决方法

文章目录 前言 问题一 打开方式 注意事项 问题二 解决方法 总结 前言 打开复制过去的virtualbox文件之后&#xff0c;在打开时出现只有logs文件的解决方法 问题一 virtualbox虚拟机拷贝到其他电脑上面如何打开&#xff1f; 打开方式 将 VirtualBox 虚拟机拷贝到其他…

第三章 JVM内存概述

附录&#xff1a;精选面试题 Q&#xff1a;为什么虚拟机必须保证一个类的Clinit( )方法在多线程的情况下被同步加锁 &#xff1f; A: 因为虚拟机在加载完一个类之后直接把这个类放到本地内存的方法区&#xff08;也叫原空间&#xff09;中了&#xff0c;当其他程序再来调这个类…

vue2.0中使用summernote富文本编辑器, 并实现上传图片至七牛

vue2.0中使用summernote富文本编辑器, 并实现上传图片至七牛 ackage.json 文件中添加所需的依赖库,然后执行 npm install 安装这些库 2. 在 src / main.js 文件中导入下列库文件 3. 由于summernote 使用 jQuery 库, 我们在组件里需要导入 jQuery才能使用, 为了方便起见,我们在 …

《深入理解计算机系统(CSAPP)》第7章 链接 - 学习笔记

写在前面的话&#xff1a;此系列文章为笔者学习CSAPP时的个人笔记&#xff0c;分享出来与大家学习交流&#xff0c;目录大体与《深入理解计算机系统》书本一致。因是初次预习时写的笔记&#xff0c;在复习回看时发现部分内容存在一些小问题&#xff0c;因时间紧张来不及再次整理…

chatgpt赋能python:Python中安装nio和ngl

Python中安装nio和ngl 介绍 nio和ngl是Python中用于网络编程和HTTP协议的模块。它们可以帮助开发人员快速地创建网络应用程序和RESTful API。 nio扩展了Python的Socket模块&#xff0c;并提供了一组高级的网络编程接口&#xff0c;比如异步IO和事件驱动编程。ngl则提供了一组…

就业内推 | 国企、运营商有岗,CCNP以上

01 中电鸿信信息科技有限公司 &#x1f537;招聘岗位&#xff1a;网络工程师 &#x1f537;职责描述&#xff1a; 1.主要负责云网类项目的网络方案规划、评审、集成交付及参照相关集成标准对硬件集成商交付的资源池基础网络进行验收&#xff1b; 2.完成公司交办的其他工作&am…

chatgpt赋能python:Python中如何根据值提取键

Python中如何根据值提取键 在编程中&#xff0c;我们经常需要在Python中查找一个字典中的值&#xff0c;然后返回它的键。这种操作在各种应用程序中经常被使用&#xff0c;例如数据库&#xff0c;社交媒体应用程序或者网上商店。 在Python中&#xff0c;这个过程非常简单&…

chatgpt赋能python:Python中如何优雅地分行

Python中如何优雅地分行 Python是一门优雅而又简洁的编程语言&#xff0c;它没有繁琐的语法规则和冗余的表达式。然而&#xff0c;随着程序规模的增大&#xff0c;代码行数也随之增多。为了使代码更加易读和易维护&#xff0c;良好的代码分行是必不可少的。 在Python中&#…