【Squid一】Squid代理服务器应用

news2024/11/23 3:45:46

Squid代理服务器应用

  • 1.Squid代理服务器
    • 1.1 正向代理的工作机制
    • 1.2 代理服务器的概念及其作用
    • 1.3 代理服务器主要作用
    • 1.4 Squid代理的类型
  • 2.CDN
    • 2.1 CDN概述
    • 2.2 CDN优势
    • 2.3 CDN对网络的优化作用
    • 2.4 CDN访问过程
    • 2.5 CDN网络的组成要素
  • 3.安装Squid服务
    • 3.1 使用脚本启动和关闭squid服务
    • 3.2 使用supervisor命令启动和关闭squid服务
  • 4.搭建传统代理服务器
    • 4.1 安装nginx服务端
    • 4.2 搭建squid代理服务器
  • 5.搭建透明代理服务器
    • 5.1 nginx服务器配置
    • 5.2 网关服务器配置
    • 5.3 客户端配置
  • 6.ACL访问控制

1.Squid代理服务器

Squid主要提供缓存加速、应用层过滤控制的功能。

1.1 正向代理的工作机制

(1)代替客户机向网站请求数据,从而可以隐藏用户的真实IP地址
(2)将获得的网页数据(静态Web元素)保存到缓存中并发送给客户机,以便下次请求相同的数据时快速响应。

在这里插入图片描述

1.2 代理服务器的概念及其作用

代理服务器是一个位于客户端和原始(资源)服务器之间的服务器,为了从原始服务器取得内容,客户端向代理服务器发送一个请求并指定目标原始服务器,然后代理服务器向原始服务器转交请求并将获得的内容返回给客户端
缓存代理对于Web至关重要,尤其对于大型高负载Web站点。缓存可作为性能优化的一个重要手段,可以极大减轻后端服务器的负载。通常对于静态资源,即较少经常更新的资源,如图片,css或js等进行缓存,从而在每次刷新浏览器的时候,不用重新请求,而是从缓存里面读取,这样就可以减轻服务器的压力

1.3 代理服务器主要作用

资源获取代替客户端实现从原始服务器的资源获取;
加速访问:代理服务器可能离原始服务器更近,从而起到一定的加速作用;
缓存作用:代理服务器保存从原始服务器所获取的资源,从而实现客户端快速的获取
隐藏真实地址:代理服务器代替客户端去获取原始服务器资源,从而隐藏客户端真实信息。
Squid Nginx Varnish CDN

1.4 Squid代理的类型

  • 传统代理:适用于Internet正向代理,需在客户机指定代理服务器的地址和端口
  • 透明代理:客户机不需指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将Web访问重定向给代理服务器处理
  • 反向代理如果Squid反向代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端;否则反向代理服务器将向后台的WEB服务器请求资源,然后将请求的应答返回给客户端,同时也将该应答缓存在本地,供下一个请求者使用。
    在这里插入图片描述

2.CDN

2.1 CDN概述

CDN的全称是Content Delivery Network,即内容分发网络。其目的是通过在现有的Internet中增加一层新的CACHE(缓存)层,将网站的内容发布到最接近用户的网络”边缘“的节点,使用户可以就近取得所需的内容(就近原则),提高用户访问网站的响应速度。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等原因,提高用户访问网站的响应速度。
简单的说,CDN的工作原理就是将源站的资源缓存到位于全球各地的CDN节点上,用户请求资源时,就近返回节点上缓存的资源,而不需要每个用户的请求都发送到源站获取,避免网络拥塞、缓解源站压力,保证用户访问资源的速度和体验

2.2 CDN优势

(1)CDN节点解决了跨运营商和跨地域访问的问题,访问延时大大降低
(2)大部分请求在CDN边缘节点完成,CDN起到了分流作用,减轻了源站的负载

2.3 CDN对网络的优化作用

  • 解决服务器端的“第一公里”问题
  • 缓解甚至消除了不同运营商之间互联的瓶颈造成的影响
  • 减轻了各省的出口带宽压力
  • 缓解了骨干网的压力
  • 优化了网上热点内容的分布

2.4 CDN访问过程

在这里插入图片描述
(1)用户输入访问的域名,操作系统向LocalDns查询域名的ip地址.
(2)LocalDns向ROOT DNS查询域名的授权服务器(这里假设LocalDns缓存过期)
(3)ROOT DNS将域名授权dns记录回应给LocalDns
(4)LocalDns得到域名的授权dns记录后,继续向域名授权dns查询域名的ip地址
(5)域名授权dns查询域名记录后(一般是CNAME),回应给LocalDns
(6)LocalDns得到域名记录后,向智能调度DNS查询域名的ip地址
(7)智能调度DNS根据一定的算法和策略(比如静态拓扑,容量等),将最适合的CDN节点ip地址回应给LocalDns
(8)LocalDns将得到的域名ip地址,回应给用户端
(9)用户得到域名ip地址后,访问站点服务器
(10)CDN节点服务器应答请求,将内容返回给客户端.(缓存服务器一方面在本地进行保存,以备以后使用;二方面把获取的数据返回给客户端,完成数据服务过程)

通过以上的分析我们可以得到,为了实现对普通用户透明(使用缓存后用户客户端无需进行任何设置)访问,需要使用DNS(域名解析)来引导用户来访问Cache服务器,以实现透明的加速服务. 由于用户访问网站的第一步就是域名解析,所以通过修改dns来引导用户访问是最简单有效的方式.

2.5 CDN网络的组成要素

对于普通的Internet用户,每个CDN节点就相当于一个放置在它周围的网站服务器. 通过对dns的接管,用户的请求被透明地指向离他最近的节点,节点中CDN服务器会像网站的原始服务器一样,响应用户的请求. 由于它离用户更近,因而响应时间必然更快.
CDN层位于用户端和站点服务器之间.

  • 智能调度DNS(比如f5的3DNS)
    智能调度DNS是CDN服务中的关键系统.当用户访问加入CDN服务的网站时,域名解析请求将最终由 “智能调度DNS”负责处理。它通过一组预先定义好的策略,将当时最接近用户的节点地址提供给用户,使用户可以得到快速的服务。同时它需要与分布在各地的CDN节点保持通信,跟踪各节点的健康状态、容量等信息,确保将用户的请求分配到就近可用的节点上.

  • 缓存功能服务
    负载均衡设备(如lvs,F5的BIG/IP)
    内容Cache服务器(如squid)
    共享存储

3.安装Squid服务

###关闭和禁止防火墙开机自启功能
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config

(1)编译安装Squid

yum -y install gcc gcc-c++ make
cd /opt
rz -E
#squid-3.5.28.tar.gz
tar xf squid-3.5.28.tar.gz -C /opt/
cd /opt/squid-3.5.28

./configure --prefix=/usr/local/squid \				#指定安装目录路径
--sysconfdir=/etc \									#指定配置文件路径
--enable-arp-acl \									#MAC地址管控,防止客户端使用IP欺骗
--enable-linux-netfilter \							#使用内核过滤
--enable-linux-tproxy \								#支持透明模式
--enable-async-io=100 \								#异步IO,提升存储性能
--enable-err-language="Simplify_Chinese" \			#错误信息的显示语言
--enable-underscore \								#允许URL中有下划线
--disable-poll \									#关闭默认使用 poll 模式
--enable-epoll \									#开启epoll模式提升性能
--enable-gnuregex									#使用GNU正则表达式
----------------------------------------------------------------------------------------------------------
./configure --prefix=/usr/local/squid \
--sysconfdir=/etc \
--enable-arp-acl \
--enable-linux-netfilter \
--enable-linux-tproxy \
--enable-async-io=100 \
--enable-err-language="Simplify_Chinese" \
--enable-underscore \
--disable-poll \
--enable-epoll \
--enable-gnuregex

make && make -j2 install

在这里插入图片描述

(2)制作squid的软链接,便于系统能够识别squid服务

ln -s /usr/local/squid/sbin/* /usr/local/sbin/
useradd -M -s /sbin/nologin squid
chown -R squid:squid /usr/local/squid/var/		#此目录用于存放缓存文件

(3)修改Squid的配置文件

vim /etc/squid.conf
......
--56行--插入
http_access allow all		   #放在http_access deny all之前,允许任意客户机使用代理服务,控制规则自上而下匹配
http_access deny all
http_port 3128				   #用来指定代理服务监听的地址和端口(默认的端口号为 3128)
--61行--插入
cache_effective_user squid	   #添加,指定程序用户,用来设置初始化、运行时缓存的账号,否则启动不成功
cache_effective_group squid			#添加,指定账号基本组

coredump_dir /usr/local/squid/var/cache/squid		#指定缓存文件目录

在这里插入图片描述

(4)Squid的运行控制

#检查配置文件语法是否正确
squid -k parse

#启动Squid,第一次启动Squid服务时,会自动初始化缓存目录
squid -z 					#-z选项用来初始化缓存目录
squid						#启动squid服务
netstat -anpt | grep squid

在这里插入图片描述

3.1 使用脚本启动和关闭squid服务

vim /etc/init.d/squid
#!/bin/bash
#chkconfig: 2345 90 25
PID="/usr/local/squid/var/run/squid.pid"
CONF="/etc/squid.conf"
CMD="/usr/local/squid/sbin/squid"

case "$1" in
   start)
     netstat -natp | grep squid &> /dev/null
     if [ $? -eq 0 ]
     then
       echo "squid is running"
     else
       echo "正在启动 squid..."
       $CMD
     fi
   ;;
   stop)
     $CMD -k kill &> /dev/null
     rm -rf $PID &> /dev/null
   ;;
   status)
     [ -f $PID ] &> /dev/null
        if [ $? -eq 0 ]
          then
            netstat -natp | grep squid
          else
            echo "squid is not running"
        fi
   ;;
   restart)
      $0 stop &> /dev/null
      echo "正在关闭 squid..."
      $0 start &> /dev/null
      echo "正在启动 squid..."
   ;;
   reload)
      $CMD -k reconfigure
   ;;
   check)
      $CMD -k parse
   ;;
   *)
      echo "用法:$0{start|stop|status|reload|check|restart}"
   ;;
esac

#2345是默认自启动级别,如是-代表任何级别都不自启动;90是启动优先级,25是停止优先级,优先级范围是0-100,数字越大,优先级越低。

chmod +x /etc/init.d/squid
chkconfig --add squid
chkconfig --level 35 squid on

在这里插入图片描述

3.2 使用supervisor命令启动和关闭squid服务

(1)安装supervisor工具

yum install -y epel-release
yum install -y supervisor

在这里插入图片描述
注意: 使用yum安装的supervisor会在/etc/目录下,生成一个supervisord.conf 文件及一个supervisor.d文件目录。
(2)修改/etc/supervisord.conf配置文件

vim /etc/supervisord.conf
###取消第5行前面的;号注释,并修改权限为766
chmod=0766 
###取消第129行的;号注释,并在130行添加下面内容
files = /etc/supervisord.d/*.conf

(3)添加squid服务的进程管理配置文件/etc/supervisord.d/squid.conf

vim /etc/supervisord.d/squid.conf 
###第2行的-N -d1:表示前台启动squid服务
[program:squid]
command=/usr/local/squid/sbin/squid -N -d1
stdout_logfile=/var/log/supervisor/logs/run.log
stderr_logfile=/var/log/supervisor/logs/error.log
autostart=true
startsecs=10
autorestart=true
startretries=3
user=squid
priority=998
stdout_logfile_maxbytes=200MB
stdout_logfile_backups=20
stopasgroup=true
killasgroup=true
redirect_stderr=true

(4)启动supervisor服务

mkdir -p /var/log/supervisor/logs
systemctl start supervisord
systemctl enable supervisord

supervisord -c /etc/supervisord.conf
supervisorctl reload           #重新启动配置中的所有程序

(5)使用supervisor命令启动squid服务

supervisorctl start squid   #启动进程
supervisorctl status  squid         #查看所有进程的状态
supervisorctl stop squid     #停止进程
supervisorctl restart squid   #重启进程
netstat -lntp | grep squid

在这里插入图片描述

4.搭建传统代理服务器

在这里插入图片描述

4.1 安装nginx服务端

###关闭和禁止防火墙开机自启功能
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config

(1)上传nginx在线源并安装nginx

cd /etc/yum.repos.d
rz -E
#nginx.repo
yum install -y nginx

(2)修改/etc/nginx/nginx.conf配置文件,关闭长连接保持功能

vim /etc/nginx/nginx.conf 
###在第27行关闭长连接保持功能
  keepalive_timeout  0;

(3)制作网页目录访问的数据内容

cd /usr/share/nginx/html/
echo '<h1>IP:192.168.80.40,gzy like mygirl!!!</h1>' > test.html

(4)启动nginx服务

systemctl restart nginx
systemctl enable --now nginx
systemctl status nginx
netstat -lntp | grep nginx

在这里插入图片描述

4.2 搭建squid代理服务器

(1)修改/etc/squid.conf配置文件,修改squid服务的缓存参数

vim /etc/squid.conf
......
http_access allow all
http_access deny all
http_port 3128
cache_effective_user squid
cache_effective_group squid
--63行--插入
cache_mem 1024 MB				#指定缓存功能所使用的内存空间大小,便于保持访问较频繁的WEB对象,容量最好为4的倍数,单位为MB,一般设为物理内存的1/3
cache_swap_high 95			#cache目录使用量大于95%时,开始清理旧的cache
cache_swap_low 90			#cache目录清理到90%时停止

reply_body_max_size 100 MB			#允许用户下载的最大文件大小,以字节为单位,当下载超过指定大小的Web对象时,浏览器的报错页面中会出现“请求或访问太大”的提示默认设置0表示不进行限制
maximum_object_size 512000 KB		#设置squid磁盘缓存最大文件,以KB为单位,超过的文件不保存到硬盘,而是直接转发给用户
maximum_object_size_in_memory 512 KB	#设置squid内存缓存最大文件,超过的文件不保存到内存
minimum_object_size 0 KB			#设置squid磁盘缓存最小文件

在这里插入图片描述
(2)重新启动squid服务

squid -k parse   #检查配置文件是否正确

supervisorctl restart squid
netstat -lntp | grep squid

在这里插入图片描述
(3)修改防火墙规则,开通squid服务的3128端口

#生产环境中还需要修改防火墙规则
iptables -F
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT

(4)使用客户端验证squid服务的代理
设置客户端与服务端位于同一网段内;
在这里插入图片描述

客户机的代理配置,打开浏览器,工具–>Internet选项–>连接–>局域网设置–>开启代理服务器(地址:Squid服务器IP地址,端口:3128)

在这里插入图片描述
客户端浏览器访问;

http://192.168.80.40/test.html

在这里插入图片描述
squid正向代理服务器,查看Squid访问日志的新增记录中的缓存命中情况;

tail -f /usr/local/squid/var/logs/access.log

在这里插入图片描述
服务端查看Web访问日志的新增记录;

tail -f /var/log/nginx/access.log
#在浏览器输入Web服务器IP地址访问,查看Web服务器访问日志,显示的是由代理服务器替客户机在访问。

在这里插入图片描述
(5)重新在打开一台linux虚拟机进行访问验证测试;
linux客户端没有连接代理服务器,访问web页面的情况;
在这里插入图片描述

linux客户端连接代理服务器后,访问web页面的情况;

开启代理服务器:常规-网络设置

在这里插入图片描述
在这里插入图片描述
相应于HTTP请求,下列标签可能出现在access.log文件的第四个域

TCP_HIT    #Squid发现请求资源的貌似新鲜的拷贝,并将其立即发送到客户端
TCP_MISS   #Squid没有请求资源的cache拷贝
TCP_REFERSH_HIT(squid3.0改为TCP_REFRESH_UNMODIFIED)    #Squid发现请求资源的貌似陈旧的拷贝,并发送确认请求到原始服务器。原始服务器返回304(未修改)响应,指示squid的拷贝仍旧是新鲜的。
TCP_REF_FAIL_HIT    #Squid发现请求资源的貌似陈旧的拷贝,并发送确认请求到原始服务器。然而,原始服务器响应失败,或者返回的响应Squid不能理解。在此情形下,squid发送现有cache拷贝(很可能是陈旧的)到客户端
TCP_REFRESH_MISS(squid3.0改为TCP_REFRESH_MODIFIED)   #Squid发现请求资源的貌似陈旧的拷贝,并发送确认请求到原始服务器。原始服务器响应新的内容,指示这个cache拷贝确实是陈旧的
TCP_CLIENT_REFRESH_MISS    #Squid发现了请求资源的拷贝,但客户端的请求包含了Cache-Control: no-cache指令。Squid转发客户端的请求到原始服务器,强迫cache确认
TCP_IMS_HIT   #客户端发送确认请求,Squid发现更近来的、貌似新鲜的请求资源的拷贝。Squid发送更新的内容到客户端,而不联系原始服务器。
TCP_SWAPFAIL_MISS   #Squid发现请求资源的有效拷贝,但从磁盘装载它失败。这时squid发送请求到原始服务器,就如同这是个cache丢失一样。
TCP_NEGATIVE_HIT   #在对原始服务器的请求导致HTTP错误时,Squid也会cache这个响应。在短时间内对这些资源的重复请求,导致了否命中。negative_ttl 指令控制这些错误被cache的时间数量。请注意这些错误只在内存cache,不会写往磁盘。下列HTTP状态码可能导致否定cache(也遵循于其他约束): 204, 305, 400, 403, 404, 405, 414, 500, 501, 502, 503, 504
TCP_MEM_HIT    #Squid在内存cache里发现请求资源的有效拷贝,并将其立即发送到客户端。注意这点并非精确的呈现了所有从内存服务的响应。例如,某些cache在内存里,但要求确认的响应,会以TCP_REFRESH_HIT, TCP_REFRESH_MISS等形式记录
TCP_DENIED   #因为http_access或http_reply_access规则,客户端的请求被拒绝了。注意被http_access拒绝的请求在第9域的值是NONE/-,然而被http_reply_access拒绝的请求,在相应地方有一个有效值
TCP_OFFLINE_HIT    #当offline_mode激活时,Squid对任何cache响应返回cache命中,而不用考虑它的新鲜程度
TCP_REDIRECT    #重定向程序告诉Squid产生一个HTTP重定向到新的URI(见11.1节)。正常的,Squid不会记录这些重定向。假如要这样做,必须在编译squid前,手工定义LOG_TCP_REDIRECTS预处理指令
NONE   #无分类的结果用于特定错误,例如无效主机名

相应于ICP查询,下列标签可能出现在access.log文件的第四域

UDP_HIT    #Squid在cache里发现请求资源的貌似新鲜的拷贝
UDP_MISS    #Squid没有在cache里发现请求资源的貌似新鲜的拷贝。假如同一目标通过HTTP请求,就可能是个cache丢失。请对比UDP_MISS_NOFETCH
UDP_MISS_NOFETCH    #跟UDP_MISS类似,不同的是这里也指示了Squid不愿去处理相应的HTTP请求。假如使用了-Y命令行选项,Squid在启动并编译其内存索引时,会返回这个标签而不是UDP_MISS
UDP_DENIED   #因为icp_access规则,ICP查询被拒绝。假如超过95%的到某客户端的ICP响应是UDP_DENIED,并且客户端数据库激活了(见附录A),Squid在1小时内,停止发送任何ICP响应到该客户端。若这点发生,你也可在cache.log里见到一个警告
UDP_INVALID    #Squid接受到无效查询(例如截断的消息、无效协议版本、URI里的空格等)。Squid发送UDP_INVALID响应到客户端

5.搭建透明代理服务器

在这里插入图片描述

5.1 nginx服务器配置

nginx服务器端修改网卡配置

vim /etc/sysconfig/network-scripts/ifcfg-ens33 
###按照拓扑图架构修改网卡配置
IPADDR=12.0.0.40
NETMASK=255.255.255.0
GATEWAY=12.0.0.20

###重新启动nginx服务器和网卡服务
systemctl restart network nginx
systemctl restart nginx

在这里插入图片描述

5.2 网关服务器配置

网关服务器添加一张新的网卡
在这里插入图片描述

修改网关服务器的内网网卡配置

vim /etc/sysconfig/network-scripts/ifcfg-ens33 
###删除网关地址和DNS地址
GATEWAY=192.168.80.2
DNS1=192.168.80.2

在这里插入图片描述
修改网关服务器的外网网卡配置

cd /etc/sysconfig/network-scripts
cp ifcfg-ens33 ifcfg-ens35
vim /etc/sysconfig/network-scripts/ifcfg-ens35
###修改外网网卡名称和IP地址,删除UUID
NAME=ens35
DEVICE=ens35
ONBOOT=yes
IPADDR=12.0.0.20
NETMASK=255.255.255.0

在这里插入图片描述

开启网关服务器的路由转发功能

vim /etc/sysctl.conf
net.ipv4.ip_forward=1

添加网关服务器的重定向改写规则

iptables -F && iptables -t nat -F
iptables -nL -t nat
iptables -t filter -A INPUT -p tcp --dport 3128 -j ACCEPT
iptables -t nat -A PREROUTING -i ens33 -s 192.168.80.0/24 -p tcp --dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -A PREROUTING -i ens33 -s 192.168.80.0/24 -p tcp --dport 443 -j REDIRECT --to-ports 3128
iptables -nL -t nat

在这里插入图片描述
修改/etc/squid.conf的监听地址

vim /etc/squid.conf
###修改59行,监听内网网卡地址
http_port 192.168.80.20:3128 transparent

在这里插入图片描述
重启squid服务

supervisorctl reload
supervisorctl restart squid
netstat -lntp | grep squid

在这里插入图片描述

5.3 客户端配置

客户端的网关地址修改为网关服务器内网网卡的IP地址
在这里插入图片描述
客户端访问验证
切记:此时客户端一定要先关闭代理服务器功能;

http://12.0.0.40/test.html

在这里插入图片描述
在这里插入图片描述

在服务器端追踪日志查看访问路径信息

tail -f /var/log/nginx/access.log

在这里插入图片描述
在网关服务器端追踪日志查看访问路径信息

tail -f /usr/local/squid/var/logs/access.log

在这里插入图片描述

6.ACL访问控制

在/etc/squid.conf配置文件中,添加acl拒绝访问规则

vim /etc/squid.conf
###在26行添加拒绝的访问要求
acl deny_host src 192.168.80.120
http_access deny deny_host

###也可以指定具有特殊地址的文件进行加载,/usr/local/squid/hostlist文件中保存有大量拒绝访问的IP地址
#acl deny_host src "/usr/local/squid/hostlist"
#http_access deny deny_host

在这里插入图片描述
重新启动squid服务

supervisorctl reload
supervisorctl restart squid
netstat -lntp | grep squid

客服端访问验证

http://12.0.0.40/test.html

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

guest内核不响应导致磁盘卸载问题排查

用户问题 客户报障磁盘卸载不了&#xff0c;而且是经常出现卸载不了的情况&#xff0c;客户比较着急&#xff0c;同时PDD也是大客户。 排查过程 查看宿主机上虚拟机信息 1、用户虚拟机有14块磁盘&#xff0c;而且这14块都是以legacypci的方式插入虚拟机&#xff0c;我印象中…

MATLAB | 拉普拉斯分布/拉普拉斯噪声的生成

一、实验目标 生成拉普拉斯分布的噪声&#xff0c;并分析它的概率密度函数 二、解决思路 &#xff08;1&#xff09;拉普拉斯分布可以由指数分布生成 拉普拉斯的概率密度函数为 f ( x ; μ , λ ) 1 2 λ e − ∣ x − μ ∣ λ f(x;\mu,\lambda)\frac{1}{2 \lambda} e^{…

创建启动前端vue与后端python/flask,前后端分离,相互传递参数

创建启动vue 确保你已经安装了Node.js和npm 安装vue npm install -g vue/cli创建vue项目&#xff1a; vue create my-project cd my-project启动vue npm run serve如果安装vue报错&#xff1a;管理员权限模式打开powershell Windows PowerShell 版权所有&#xff08;C&#…

windows怎么查看目标文件.o and windows - 如何使用/安装 GNU binutils (objdump)

GNU binutils-objdump工具 一、windows怎么查看目标文件.o二、安装GNU binutils (objdump)三、使用GNU binutils (objdump)参考资料 一、windows怎么查看目标文件.o 可以使用GNU binutils (objdump)进行查看编译生成的目标文件.o。 二、安装GNU binutils (objdump) 点击下载…

Apache Airflow 多个 Provider 存在漏洞

项目介绍 Airflow 是一个使用 python 语言编写的 data pipeline 调度和监控工作流的平台。 Airflow 是通过 DAG&#xff08;Directed acyclic graph 有向无环图&#xff09;来管理任务流程的任务调度工具&#xff0c; 不需要知道业务数据的具体内容&#xff0c;设置任务的依赖…

辅助驾驶功能开发-功能规范篇(21)-4-XP行泊一体方案功能规范

XPilot Parking 自动泊车系统 • 超级自动泊车辅助(Super AutoParking Assist)、语音控制泊车辅助(Autoparking with Speech) - 产品定义 超级自动泊车辅助是⼀个增强的自动泊车辅助系统。在超级自动泊车辅助系统中,识别车位将会变得实时可见, 并且不可泊入的⻋位也将…

zynq系列器件使用vivado配置国产内存

zynq系列器件使用vivado配置国产内存 一、镁光公司器件命名的含义二、紫光公司器件命名的含义二、国产ddr&#xff08;SCB13H8G162BF-13KI&#xff09;和镁光&#xff08;MT41K512M8-125&#xff09;ddr参数对比三、vivado参数填入 一、镁光公司器件命名的含义 以MT41K512M8-1…

代码随想录算法训练营第六天 | 哈希表系列2(两数之和--四数相加II--三数之和--四数之和)

哈希表系列2 1 两数之和本题思路代码随想录的代码力扣的示例代码 454 四数相加II本题思路代码随想录的代码力扣的示例代码 15 三数之和本题思路代码随想录的代码力扣的示例代码 18 四数之和代码随想录的代码力扣的示例代码 1 两数之和 给定一个整数数组 nums 和一个整数目标值…

DAY41——动态规划part3

整数拆分 dp[i]&#xff1a;分拆数字i&#xff0c;可以得到的最大乘积为dp[i]。 dp[i](i-j)*j或j * dp[i-j]两种可能&#xff0c;前者是拆成两个数的可能性&#xff0c;后者是拆成三个或更多的可能性 对于dp[i] j * dp[i-j] 对每个i遍历j(1->i-1) 事实上是把i拆成j和i-j两…

web安全php基础_搭建php环境

首先打开phpstudy的网站栏点击创建网站&#xff0c;新建一个网站&#xff08;域名随便输反正是局域网&#xff09;然后点击确认 如下&#xff0c;网站便创建好了 打开浏览器输入刚刚创建网站时输入的域名&#xff0c;即可看见我们的网站 然后网站好了&#xff0c;就可以新建项…

IDEA中MyBatiX插件的使用教程

MybatisX插件功能介绍 主要功能如下&#xff1a; 生成mapper xml文件 快速从代码跳转到mapper及从mapper返回代码 mybatis自动补全及语法错误提示 集成mybatis generator gui界面 根据数据库注解&#xff0c;生成swagger model注解 首先下载MybatisX插件 配置数据源 在idea中连…

【C语言】指针和数组笔试题解析

简单不先于复杂&#xff0c;而是在复杂之后。 注&#xff1a;题目会附在前面&#xff0c;大家可以先复制代码自己做一遍&#xff0c;再看答案。 目录 1. 一维数组 2. 字符数组 2.1 sizeof 相关 2.1.1 题一 2.1.2 题二 2.1.3 题三 2.2 strlen 相关 2.2.1 题一 2.2.…

面试之线程池(高级开发 必问)

今天被面试 问麻了。第一个问题是&#xff1a; 一个类有私有的变量&#xff0c;如果修改这个类的私有变量。使用setter方法除外。&#xff08;后来才知道用反射&#xff09; 算了&#xff0c;我还是太水了。回归主题。 线程池的优点: (1):降低资源消耗&#xff0c;通过重读…

UE4/5动画蓝图中Additive Animations讲解

Additive Animation指用当前动画作为Additive动画减去参考位置后得到的Delta量&#xff0c;再通过Apply Additive节点将任意动画输出套用该Delta量&#xff0c;从而达到动画叠加的效果。 官方案例的Additive Animation案例&#xff0c;位于“内容示例/Animation_Basics”场景中…

【Visual Studio】printf() 函数无输出显示问题。使用 C++ 语言,配合 Qt 开发串口通信界面

使用 C 语言&#xff0c;配合 Qt 开发串口通信界面时&#xff0c;遇到 printf() 函数无输出显示。 在工程属性的对应位置添加 editbin /SUBSYSTEM:CONSOLE $(OUTDIR)\$(ProjectName).exe 即可&#xff0c;如下图所示。 成功运行的截图如下&#xff1a; Ref. Visual Studio 20…

用uniapp完成一个前端项目

持续更新中… 这里给初学者提供一个uniapp的练习项目&#xff0c;学习uniapp需要vue和微信小程序的基础&#xff08;其实微信小程序基础需要的不多&#xff09;&#xff0c;建议把基础内容学牢固了再看本文。 本项目完成的是H5小程序APP的新闻项目&#xff0c;下面就开始说一下…

kubectl详解之声明式管理方法

目录 一、声明式管理方法二、资源配置清单的管理2.1 查看资源配置清单2.1 修改资源配置清单并应用2.1.1 离线修改2.1.2 在线修改 一、声明式管理方法 适合于对资源的修改操作 声明式资源管理方法依赖于资源配置清单文件对资源进行管理 资源配置清单文件有两种格式&#xff1a;…

Codeforces 879 C.Game with Reversing

博弈&#xff0c;思维&#xff0c;分类讨论 题意&#xff1a; 给你两个字符串&#xff0c;Alice可以每次选一个字符串的任意字母换成任意的字母&#xff0c;Bob可以选择一个字符串进行反转&#xff0c;Alice希望快速结束游戏&#xff0c;Bob希望拖延游戏&#xff0c;问你如果…

【智能座舱系列| 域控制器】 — 智能座舱域控制器技术发展趋势分析

引言 提到座舱域控制器用的主控SoC芯片,大家第一个会想到应该就是高通的SA8155P 。目前,在主机厂新上市的中高端车型中,其座舱的主控SoC芯片多是采用高通的SA8155P, SA8155P为什么会得到众多主机厂的青睐呢?不妨先看一看高通座舱SoC芯片的迭代历程。 高通座舱芯片的迭代历…

Docker 部署 Tomcat 并开放 8082 端口

本文目录 1. 是否安装 Docker2. 拉取 Tomcat 镜像3. 运行 Tomcat 容器4. 验证 Tomcat 容器运行5. 测试 Tomcat 访问6. 开放 8082 端口 1. 是否安装 Docker 可以通过下面的命令来验证是否安装了 Docker&#xff1a; docker --version可以看到&#xff0c;输入该命令后显示了 D…