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

squid的基本代理

一、Squid代理服务器的概述

squid 作为一款服务器代理工具,可以缓存网页对象,减少重复请求,从而达到加快网页访问速度,隐藏客户机真实IP,更为安全。

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

1、squid代理的工作机制:

• 代替客户机向网站请求数据,从而可以隐藏用户的真实IP地址

• 将获得的网页数据(静态 web元素)保存到缓存中并发给客户机,以便下次请求相同的数据时快速响应

当我们客户机通过squid代理去访问web页面时,指定的代理服务器会先检查自己的缓存,若是缓存中有我们客户机需要的页面,那么squid服务器将直接把缓存中的页面内容返回给客户机

如果缓存中没有客户端请求的页面,那么squid代理服务器就会向internet发送访问请求,获得返回的web页面后,将网页的数据保存到缓存中并发送给客户机。

由于客户机的web访问请求实际上是squid代理服务器来代替完成的,所以隐藏了用户的真实IP地址,从而起到一定的保护作用。

另一方面,squid也可以针对要访问的目标、客户机的地址、访问的时间段进行过滤控制。

2、squid代理的基本类型

① 传统代理:适用于internet,需在客户机指定代理服务器的地址和端口

② 透明代理:客户机不需指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将web访问重定向给代理服务器处理

③ 反向代理:如果Squid反向代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端;否则反向代理服务器将向后台的web服务器请求资源,然后将请求的应答返回给客户端,同时也将该应答缓存(静态)在本地,供下一个请求者使用

根据实现的方式不同,基本可以分为传统代理和透明代理两种方式:

传统代理:也就是普通的代理服务,需要我们客户端在浏览器、聊天工具等一些程序中设置代理服务器的地址和端口,然后才能使用代理来访问网络,这种方式相比较而言比较麻烦,因为客户机还需手动指定代理服务器,所以一般用于Internet环境。

透明代理:与传统代理实现的功能是一样的,区别在于客户机不需要手动指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将web访问重定向,实际上仍然交给代理服务器来处理,重定向的过程完全是由squid服务器进行的,所以对于客户机来说,甚至不知道自己使用了squid代理服务,因此呢,我们称之为透明模式。

透明代理多用于局域网环境,如在Linux网关中启用透明代理后,局域网主机无须进行额外设置就能享受更好的上网速度。

3、squid代理的工作模式图解

3.1、传统模式:

此类工作模式为三种模式中最简单的构成,对客户端配置较不友好,主要功能为正向代理,加速内网用户的访问速度,减少出口流量。

(如果搭建公用的代理服务器,用这样方式,需要用户进入其本机的网络设置中,设置搭建了squid服务器的IP和端口)

3.2、透明模式:

此类工作模式配置较为复杂,同样也是实现正向代理需要借助防火墙对端口进行重定向操作。但是对于客户端来说配置较为友好无需进行任何配置即可使用代理功能,主要功能为加速内网用户的访问速度,减少出口流量。

(如果搭建内网访问外网的代理服务器,建议使用这种,无需到客户端设置代理服务器的IP和端口,自动实现squid代理)

3.3、反向代理模式:

反向代理模式位于本地WEB服务器和公网之间,处理公网用户发起的请求,并代理至内网服务中,有效减轻后端真是服务器的压力,增加服务器的并发处理能力

4、使用squid代理的好处

• 提高web访问速度

• 隐藏客户机的真实IP地址

二、Squid代理服务器的编译安装及运行

1、Squid代理服务器的编译安装及运行的操作步骤

首先关闭防火墙和SElinux

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

1.1、编译安装Squid

#安装依赖环境
yum -y install gcc gcc-c++ make
#上传软件包squid-3.5.27. tar到/opt目录下
cd /opt
#解压
tar zxvf squid-3.5.27.tar.gz
#配置相关模块
cd squid-3.5.27/
./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 \
--enable-poll \
--enable-gnuregex# 编译安装
make && make install-----------------------------------------------
####_上述脚本解释###./configure --prefix=/usr/local/squid
##安装目录
--sysconfdir=/etc/
##单独将配置文件修改到/etc目录下
-- enable-arp-acl
##可在ACL中设置通过MAC地址进行管理,防止IP欺骗
--enable-1inux-netfilter
##使用内核过滤
--enable-linux-tproxy
##支持透明模式
--enable-async-io=100
##异步I/O,提升储存性能,值可修改
--enable-err-language="Simplify_Chinese"
##错误信息的显示语言
--enable-underscore
##允许URL中有下划线
-enable-poll
##使用Poll () 模式,提升性能
--enable-gnuregex
##使用GNU正则表达式
ln -s /usr/local/squid/sbin/* /usr/local/sbin
##创建链接文件,优化路径
useradd -M -s /sbin/nologin squid
###创建程序用户、组
chown -R squid:squid /usr/local/squid/var/
##改变目录属主,此目录用来存放缓存文件

1.2、修改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   #指定缓存文件目录

1.3 、Squid 的运行控制

#检查配置文件语法是否正确
squid -k parse#启动Squid, 第一次启动Squid服务时,会自动初始化缓存目录
squid -z   #-z选项用来初始化缓存目录
squid      #启动squid 服务netstat -anpt | grep "squid"

1.4、创建 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" instart)netstat -natp | grep squid &> /dev/nullif [ $? -eq 0 ]thenecho "squid is running"elseecho "正在启动 squid..."$CMDfi;;stop)$CMD -k kill &> /dev/nullrm -rf $PID &> /dev/null;;status)[ -f $PID ] &> /dev/nullif [ $? -eq 0 ]thennetstat -natp | grep squidelseecho "squid is not running"fi;;restart)$0 stop &> /dev/nullecho "正在关闭 squid..."$0 start &> /dev/nullecho "正在启动 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

三、搭建传统代理

1、搭建传统代理的操作步骤

环境准备

Squid 代理服务器:192.168.2.22

web服务器: 192.168.2.66

win10客户端: 192.168.2.10

1.1 修改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 64 MB            
#指定缓存功能所使用的内存空间大小,便于保持访问较频繁的WEB对象,容量最好为4的倍数,单位为MB,建议设为物理内存的1/4
reply_body_max_size 10 MB          
#允许用户下载的最大文件大小,以字节为单位,当下载超过指定大小的Web对象时,浏览器的报错页面中会出现“请求或访问太大”的提示默认设置0表示不进行限制
maximum_object_size 4096 KB        
#允许保存到缓存空间的最大对象大小,以KB为单位,超过大小限制的文件将不被缓存,而是直接转发给用户

1.2 重启服务

service squid restart
systemctl restart squid  

1.3 生产环境中还需要修改防火墙规则

iptables -F
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
iptables -nL INPUT

1.4 web服务器安装web服务(httpd或者nginx)

systemctl stop firewalld.service
setenforce 0
yum -y install httpd
systemctl start httpd
netstat -natp | grep 80

1.5 修改win10客户端,添加代理

打开浏览器工具-->Internet选项-->连接 -->局域网设置-->开启代理服务器 (地址: Squid服务器IP地址,端口: 3128) 清除缓存后使用浏览器访问http://192.168.2.66(web服务器地址)  

1.6 在win10客户端访问web服务器进行验证

#查看Squid访问日志的新增记录

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

#查看Web访问日志的新增记录

tail -f /var/log/httpd/access_log  

在浏览器输入Web服务器IP地址访问,查看Web服务器访问日志,显示的是由代理服务器替客户机在访问。

2、实例操作:搭建传统代理

2.1 修改squid的配置文件

2.2 重启服务

2.3 生产环境中还需要修改防火墙规则


  

2.4 web服务器安装web服务(httpd或者nginx)

2.5 修改win10客户端,添加代理

2.6 在win10客户端访问web服务器进行验证

四、搭建透明代理

1、搭建透明代理的操作步骤

环境准备:

squid服务器 :双网卡 ens33:192.168.2.22,ens36:12.0.0.1

web服务器:12.0.0.18(网关为squid代理服务器的ens36)

Win10客户端:192.168.229.200(网关为squid代理服务器的ens33)

1.1 Squid服务器:双网卡

内网ens33: 192.168.2.22  外网ens36: 12.0.0.1 
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens36
vim ifcfg-ens36           #修改IP地址,并注释或者删除DNS与网关
systemctl restart network  

1.2 修改squid配置文件

vim /etc/squid.conf
http_access allow all
http_access deny all
--60行--修改添加提供内网服务的IP地址,和支持透明代理选项transparent
http_port 192.168.229.60:3128 transparentsystemctl restart squid

1.3 squid服务器添加路由转发和iptables规则

#开启路由转发,实现本机中不同网段的地址转发
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p
<br>#修改防火墙规则
iptables -F
iptables -t nat -F
# 添加防火墙规则(将来源为229网段:80/443端口的流量重定向到3128端口)
iptables -t nat -I PREROUTING -i ens33 -s 192.168.229.0/24 -p tcp --dport 80 -j REDIRECT --to 3128  #用于转发Http协议
iptables -t nat -I PREROUTING -i ens33 -s 192.168.229.0/24 -p tcp --dport 443 -j REDIRECT --to 3128 #用于转发https协议   
#如果要进行重启,则需要配置以下规则
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT

1.4 web服务器

修改IP地址为12.0.0.18,并设置网关为12.0.0.1

并开启httpd服务,之前已安装该服务

 vim /etc/sysconfig/network-scripts/ifcfg-ens33cat /etc/sysconfig/network-scripts/ifcfg-ens33TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID="4ff14eea-f777-4bc2-b50b-7179db6ba998"
DEVICE=ens33
ONBOOT=yes
IPADDR=12.0.0.18
NETMASK=255.255.255.0
GATEWAY=12.0.0.1
#DNS1=192.168.229.2systemctl restart networksystemctl restart httpd.service  

1.5.客户端关闭代理并访问web服务器

添加网关,网关为squid服务器的ens33

查看Web1访问日志的新增记录
tail -f /var/log/httpd/access_log

2、实例操作:搭建透明代理

2.1 Squid服务器:双网卡

2.2 修改squid配置文件

2.3 squid服务器添加路由转发和iptables规则

2.4 web服务器


  

2.5 客户端关闭代理并访问web服务器

五、ACL访问控制

1、ACL访问控制概述

1.1、ACL访问控制列表的概念

ACL(Access Control List)访问控制列表,主要用于过滤网络中的流量,是控制访问的一种技术手段。网络设备为了过滤报文,需要配置一系列的匹配条件对报文进行分类,应用在端口上,根据预先设定的策略,对特定端口的流量起到控制作用。

访问控制列表(ACL)由一组规则组成,在规则中定义允许或拒绝通过路由器的条件

利用ACL可以对经过路由器的数据包按照设定的规则进行过滤,使数据包有选择的通过路由器,起到防火墙的作用。

ACL一般只在以下路由器上配置:

  • 内部网和外部网的边界路由器。
  • 两个功能网络交界的路由器。

1.2、在配置文件squid.conf中,ACL访问控制的步骤

通过以下两个步骤来实现:

  • 使用acl配置项定义需要控制的条件
  • 通过http_access配 置项对已定义的列表做“允许"或“拒绝”访问的控制

1.3、定义访问控制列表

格式: acl 列表名称 列表类型 列表内容

• 列表名称: 名称自定义,相当于给acl起个名字

• 列表类型: 必须使用squid预定义的值,对应不同类别的控制条件

• 列表内容: 是要控制的具体对象,不同类型的列表所对应的内容也不一样,可以有多个值(以空格为分
隔,为“或"的关系)

1.4 ACL访问控制方式

根据源地址、目标URL、文件类型等定义列表

acl 列表名称 列表类型 列表内容…

针对已定义的acl列表进行限制

http_access allow或deny列表名称…

1.5 ACL规则优先级

一个用户访问代理服务器时,Squid会顺序匹配Squid中定义的所有规则列表,一旦匹配成功,立即停止匹配
所有规则都不匹配时,Squid会使用与最后一条相反的规则

1.6 常用的ACL列表类型

src →>源地址

dst >自标地址

port→>端口

dstdomain>目标域

time →>访问时间

maxconn →最大并发连接

ourl_regex→目标URL地址

Urlpath_regex→整个目标URL路径

2、设置ACL访问控制的步骤

环境准备

Squid 代理服务器:192.168.2.22

web服务器: 192.168.2.66

win10客户端: 192.168.2.10

使用传统代理方式进行设置ACL访问控制(传统代理的设置见上文)

2.1 定义访问控制列表

方法一:

vim /etc/squid.conf
......
acl localhost src 192.168.2.100/32                 #源地址为192.168.2.100
acl MYLAN src 192.168.2.0/24                      #客户机网段
acl destinationhost dst 192.168.2.66/32               #目标地址为192.168.2.66
acl MC20 maxconn 20                         #最大并发连接20
acl PORT port 21                            #目标端口21
acl DMBLOCK dstdomain .qq.com                       #目标域,匹配域内所有站点
acl BURL url_regex -i ^rtsp:// ^emule://                #以rtsp://.emule://开头的URL,-i表示忽略大小写
acl PURL urlpath_regex -i \.mp3$ \.mp4$ \.rmvb$                 #以.mp3、.mp4、.rmvb结尾的URL路径
acl WORKTIME time MTWHF 08:30-17:30                 #时间为周一--至周五8:30~17:30,"MTWHF"为每个星期的英文首字母第一条插入:
http_access deny localhost

方法二:

#启动对象列表管理  

mkdir /etc/squid
vim /etc/squid/dest.list
192.168.2.22                               #Squid服务器IP
192.168.200.0/24                             #任意需要的网段vim /etc/ squid.conf
.......
acl destinationhost dst "/etc/squid/dest.list"                  #调用指定文件中的列表内容
http access deny(或allow) destinationhost                #注意,如果是拒绝列表,需要放在http_access allow all前面systemctl restart squid

2.2. WEB服务器上安装httpd服务

yum install -y httpd
systemctl start httpd

2.3 Client客户上测试

浏览器中输入192.168.2.66查看web是否被拒绝

六、Squid日志分析

sarg ( Squid Analysis Report Generator),是一款squid日志分析工具,采用HTML格式,详细列出每一位用户访问Internet的站点信息、时间占用信息、排名、连接次数、访问量等

1、实现Squid日志分析的步骤

1.1 安装图像处理软件包

yum install -y gd gd-devel pcre-devel
mkdir /usr/local/sarg  

1.2 将zxvf sarg-2.3.7. tar.gz压缩包上传到/opt目录下,解压并配置相关模块,编译安装

tar zxvf sarg-2.3.7.tar.gz -C /opt/cd /opt/sarg-2.3.7
./configure --prefix=/usr/local/sarg \   #指定安装路径
--sysconfdir=/etc/sarg \    #配置文件目录
--enable-extraprotection    #额外安全防护-----------------------------------------------------------------------------------------------
./configure --prefix=/usr/local/sarg --sysconfdir=/etc/sarg --enable-extraprotection
--------------------------------------------------------------------------------------------------make && make install

1.3 修改sarg配置文件

vim /etc/sarg/sarg.conf
--7行--取消注释
access_log /usr/local/squid/var/logs/access.1og #指定访问日志文件
--25行--取消注释
title "Squid User Access Reports"   #网页标题
-- 120行--取消注释,修改
output_dir /var/www/html/squid-reports  #报告输出目录
--178行--取消注释
user_ip no  #使用用户名显示
--184行--取消注释,修改
topuser_sort_field connect reverse  #top排序中,指定连接次数采用降序排列,升序是normal
-- 190行--取消注释,修改
user_sort_field connect reverse #对于用户访问记录,连接次数按降序排序
--206行--取消注释,修改
exclude_hosts /usr/local/sarg/noreport  #指定不计入排序的站点列表的文件
--257行--取消注释
overwrite_report no #同名同日期的日志是否覆盖
--289行--取消注释,修改
mail_utility mailq.postfix  #发送邮件报告命令
--434行--取消注释,修改
charset UTF-8   #指定字符集UTF-8
--518行--取消注释
weekdavs 0-6    #top排行的星期周期
--525行--取消注释
hours 0-23  #top排行的时间周期
--633行--取消注释
www_document_root /var/www/html #指定网页根目录  

1.4 添加不计入站点文件,添加的域名将不被显示在排序中

touch /usr/local/sarg/noreport
ln -s /usr/local/sarg/bin/sarg /usr/local/bin/
sarg --help #获取帮助#运行
sarg #启动一次记录 

1.5 验证

yum install httpd -y
systemctl start httpd  

在squid服务器上使用浏览器访问http://192.168.2.22/squid-reports, 查看sarg报告网页

date -s

1.6 添加计划任务,执行每天生成报告

vim /usr/local/sarg/report.sh
#/bin/bash
#Get current date
TODAY=$(date +%d/%m/%Y)
#Get one week ago today
YESTERDAY=$(date -d "1 day ago" +%d/%m/%Y)
/usr/local/sarg/bin/sarg -l /usr/1ocal/squid/var/logs/access.log -o /var/www/html/sarg
-z -d $YESTERDAY-$TODAY &> /dev/null
exit 0chmod +x /usr/local/sarg/report.shcrontab -e
0 0 * * * /usr/1ocal/sarg/report.sh

2、实例操作:实现Squid日志分析

七.反向代理

1、squid反向代理的概述

如果Squid反向代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端;

否则反向代理服务器将向后台的Web服务器请求资源,然后将请求的应答返回给客户端,同时也将该应答缓存在本地供下一个请求者使用

工作机制:

• 缓存网页对象,减少重复请求

• 将互联网请求轮询或按权重分配到内网web服务器
• 代理用户请求,避免用户直接访问Web服务器,提高安全

2、squid反向代理的操作步骤

环境准备

Squid 代理服务器:192.168.2.22

web1服务器: 192.168.2.66

web2服务器: 192.168.2.99

win10客户端: 192.168.2.10

2.1本地关闭httpd

systemctl stop httpd

2.2 清空防火墙规则,并放空3128端口

iptables -F
iptables -t nat -F
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT

2.3 .修改squid配置文件

vim /etc/ squid.conf
60行--修改,插入-------
http_port 192.168.2.22:80 accel vhost vport
cache_peer 192.168.2.66 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1
cache_peer 192.168.2.99 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2
cache_peer_domain web1 web2 www.xkq.com  #表示对www.xkq.com的请求,squid向192.168.2.66和192.168.2.99的80端口发出请求 

####关键字解释如下####

http_port 80 accel vhost vport
#squid从一个缓存变成了一个Web服务器反向代理加速模式,这个时候squid在80端口监听请求,同时和webserver的请求端口(vhost vport)绑定,这个时候请求到了squid, squid是不用转发请求的,而是直接要么从缓存中拿数据要么向,绑定的端口直接请求数据。
accel:反向代理加速模式
vhost:支持域名或主机名来表示代理节点
vport:支持IP和端口来表示代理节点
parent:代表为父节点,上下关系,非平级关系
80:代理内部web服务器的80端口
0:没有使用icp,表示就一台squid服务器
no-query:不做查询操作,直接获取数据
originserver:指定是源服务器
round-robin:指定squid 通过轮询方式将请求分发到其中一-台父节点
max_conn:指定最大连接数
weight:指定权重
name:设置别名

2.4 重启squid服务

systemctl stop squid
service squid reload  

2.5 后端web节点服务器设置

yum install -y httpd
systemctl start httpd#节点1(web1):
echo "this is test01" >> /var/www/html/index.html
#节点2(web2):
echo "this is test02" >> /var/www/html/index.html 

2.6 客户机的域名映射配置

修改C: \Windows\System32 \drivers\etc\hosts 文件
192.168.2.66 www.xkq.com

2.7 客户机的代理配置并访问测试

打开浏览器,工具-->Internet选项-->连接-->局域网设置-->开启代理服务器(地址: Squid服务器IP地址,端口:80)

浏览器访问http://www.xkq.com

3、实例操作:squid反向代理

3.1 squid服务器本地关闭httpd

3.2 清空防火墙规则,并放空3128端口

2.3 .修改squid配置文件

2.4 重启squid服务

2.5 后端web节点服务器设置

#节点1(web1):

#节点2(web2):

2.6 客户机的域名映射配置

2.7 客户机的代理配置并访问测试

Squid总结

1 . Squid作用:
缓存加速,缓存从后端web服务器获取到的,加速为了客户端访问

2 . Squid的三种模式:

① 传统模式

需要客户端指向squid代理服务器,客户端能感知到squid代理服务器的存在
修改的配置文件:squid.conf 设置 3128 端口、缓存和允许下载的大小
② 透明代理

客户端不需要配置,只要直接访问即可,服务端开启路转发,借助了防护墙规则及静态路由的方式,完成透明代理
修改的配置文件:squid.conf 设置ip和 3128 端口
需要设置iptables的流量重定向,将指定网卡网段的流量重定向到 3128 端口
③ 反向代理

作为类似于nginx服务器的反向代理功能,但自身不需要一个首页,基于ip:端口。权重的方式完成反向代理
修改的配置文件:squid.conf 设置端口为 80
服务端需要开启客户机的代理配置
3 . 对应Squid自身的管理/功能:

① ACL:主要做的是http_access(基于http协议,access访问)的允许和拒绝管理

使用 acl 配置项定义需要控制的条件;
通过 http_access 配置项对已定义的列表做“允许”或“拒 绝”访问的控制。
② Sarg:日志分析功能,可以以天的方式指定将access_log中的内容输出到一个web页面中(借助了httpd)展示出来。

相关文章:

squid的基本代理

一、Squid代理服务器的概述 squid 作为一款服务器代理工具&#xff0c;可以缓存网页对象&#xff0c;减少重复请求&#xff0c;从而达到加快网页访问速度&#xff0c;隐藏客户机真实IP&#xff0c;更为安全。 Squid主要提供缓存加速、应用层过滤控制的功能 1、squid代理的工…...

【从零开始写视觉SLAM】v0.1基于特征点的简单VO

v0.1版本的oSLAM实现了基于orb特征点的简单视觉里程计&#xff0c;通过连续两帧的rgbd数据实现相机相对位姿的估计。 #mermaid-svg-ibQfHFVHezQD5RWW {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-ibQfHFVHezQD5RW…...

CentOS-7 安装 MariaDB-10.8

一、安装之前删除已存在的 Mysql/MariaDB 1 查找存在的 MariaDB # 注意大小写 rpm -qa | grep MariaDB # rpm -qa 列出所有被安装的rpm package &#xff08;-qa:query all&#xff09; rpm -qa | grep mariadb # grep &#xff08;缩写来自Globally search a Regular Expre…...

Packet Tracer – 对 VLAN 实施进行故障排除 – 方案 1

Packet Tracer – 对 VLAN 实施进行故障排除 – 方案 1 地址分配表 设备 接口 IP 地址 子网掩码 交换机端口 VLAN PC1 NIC 172.17.10.21 255.255.255.0 S2 F0/11 10 PC2 NIC 172.17.20.22 255.255.255.0 S2 F0/18 20 PC3 NIC 172.17.30.23 255.255.255.0…...

五、c++学习(加餐1:汇编基础学习)

经过前面几节课的学习&#xff0c;我们在一些地方都会使用汇编来分析&#xff0c;我们学习汇编&#xff0c;只是学习一些基础&#xff0c;主要是在我们需要深入分析语法的时候&#xff0c;使用汇编分析&#xff0c;这样会让我们更熟悉c编译器和语法。 从这节课开始&#xff0c…...

iOS正确获取图片参数深入探究及CGImageRef的使用(附源码)

一 图片参数的正确获取 先拿一张图片作为测试使用 图片参数如下&#xff1a; 图片的尺寸为&#xff1a; -宽1236个像素点 -高748个像素点 -色彩空间为RGB -描述文件为彩色LCD -带有Alpha通道 请记住这几个参数&#xff0c;待会儿我们演示如何正确获取。 将这张图片分别放在…...

Typescript 5.0 发布:快速概览

探索最令人兴奋的功能和更新 作为一种不断发展的编程语言&#xff0c;TypeScript 带来了大量的改进和新功能。在本文中&#xff0c;我们将深入探讨 TypeScript 的最新版本 5.0&#xff0c;并探索其最值得关注的更新。 1. 装饰器 TypeScript 5.0 引入了一个重新设计的装饰器系…...

【图像处理 】卡尔曼滤波器原理

目录 一、说明 二、它是什么? 2.1 我们可以用卡尔曼滤波器做什么? 2.2 卡尔曼滤波器如何看待您的问题...

YOLOv5 实例分割入门

介绍 YOLOv5 目标检测模型以其出色的性能和优化的推理速度而闻名。因此,YOLOv5 实例分割模型已成为实时实例分割中最快、最准确的模型之一。 在这篇文章中,我们将回答以下关于 YOLOv5 实例分割的问题: YOLOv5检测模型做了哪些改动,得到了YOLOv5实例分割架构?使用的 Prot…...

数字城市发展下的技术趋势,你知道多少?

提到数字城市、智慧城市大家都会感觉经常在耳边听到&#xff0c;但是要确切说出具体的概念还是有一点难度的。具体来说&#xff1a;数字城市是一个集合多种技术的系统&#xff0c;以计算机技术、多媒体技术和大规模存储技术为基础&#xff0c;以宽带网络为纽带&#xff0c;运用…...

linux 串口改为固定

在/etc/udev/rules.d 目录下新建定义规则的文件 1. 文件名要按规范写否则改动无效2. 规则文件必须以.rules 结尾3. 规则文件名称必须遵循 xx-name.rules 格式&#xff08;xx 为数字或字母&#xff0c;name 为规则名称&#xff09;&#xff0c;例如 99-serial-ports.rules。4. 规…...

【SCI一区】考虑P2G和碳捕集设备的热电联供综合能源系统优化调度模型(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

Redis缓存数据库(四)

目录 一、概述 1、Redis Sentinel 1.1、docker配置Redis Sentinel环境 2、Redis存储方案 2.1、哈希链 2.2、哈希环 3、Redis分区(Partitioning) 4、Redis面试题 一、概述 1、Redis Sentinel Redis Sentinel为Redis提供了高可用解决方案。实际上这意味着使用Sentinel…...

View中的滑动冲突

View中的滑动冲突 1.滑动冲突的种类 滑动冲突一般有3种, 第一种是ViewGroup和子View的滑动方向不一致 比如: 父布局是可以左右滑动,子view可以上下滑动 第二种 ViewGroup和子View的滑动方向一致 第三种 第三种类似于如下图 2.滑动冲突的解决方式 滑动冲突一般情况下有2…...

java boot项目基础配置之banner与日志配置演示 并教会你如何使用文档查看配置

上文 我们简单讲了一下 springboot 项目的配置 都是写在resources下的application.properties中 springboot 项目中 配置都写在这一个文件 可以说非常方便 不像之前 写个项目配置这里一个哪里一个 看到是非常费力 我们启动项目 这里有个图案 其实 这叫 banner 我们就用配置来…...

蓝鲸平台通过标准运维 API 安装 Agent

目录 一、背景 二、目的 三、创建安装agent流程 四、通过标准运维 API 安装 Agent 五、总结 一、背景 蓝鲸平台正常情况纳管主机需要在节点管理手工安装agent&#xff0c;不能达到完成自动化安装agent的效果。想通过脚本一键安装agent&#xff0c;而不需要在蓝鲸平台进行过…...

python 图片保存成视频

&#x1f468;‍&#x1f4bb;个人简介&#xff1a; 深度学习图像领域工作者 &#x1f389;工作总结链接&#xff1a;https://blog.csdn.net/qq_28949847/article/details/128552785 链接中主要是个人工作的总结&#xff0c;每个链接都是一些常用demo&#xff0c…...

uniapp 引入 Less SCSS

✨求关注~ &#x1f600;博客&#xff1a;www.protaos.com 本文将介绍如何在 UniApp 中引入 Less 和 SCSS&#xff0c;两种流行的 CSS 预处理器。通过使用 Less 和 SCSS&#xff0c;你可以在 UniApp 项目中更灵活地编写样式&#xff0c;并享受预处理器提供的便利功能。 代码实现…...

Linux程序设计:文件操作

文件操作 系统调用 write //函数定义 #include <unistd.h> size_t write(int fildes, const void *buf, size_t nbytes); //示例程序 #include <unistd.h> #include <stdlib.h> int main() { if ((write(1, “Here is some data\n”, 18)) ! 18)write(2, …...

【自制C++深度学习推理框架】Tensor模板类的设计思路

Tensor模板类的设计思路 为什么要把Armadillo线性代数库arma::fcube封装成Tensor模板类&#xff1f; arma::fcube是Armadillo线性代数库中的一种数据类型&#xff0c;它是一个三维的float类型张量。Armadillo库是一个C科学计算库&#xff0c;提供了高效的线性代数和矩阵运算。…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解

在 C/C 编程的编译和链接过程中&#xff0c;附加包含目录、附加库目录和附加依赖项是三个至关重要的设置&#xff0c;它们相互配合&#xff0c;确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中&#xff0c;这些概念容易让人混淆&#xff0c;但深入理解它们的作用和联…...

车载诊断架构 --- ZEVonUDS(J1979-3)简介第一篇

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…...

WEB3全栈开发——面试专业技能点P4数据库

一、mysql2 原生驱动及其连接机制 概念介绍 mysql2 是 Node.js 环境中广泛使用的 MySQL 客户端库&#xff0c;基于 mysql 库改进而来&#xff0c;具有更好的性能、Promise 支持、流式查询、二进制数据处理能力等。 主要特点&#xff1a; 支持 Promise / async-await&#xf…...

Win系统权限提升篇UAC绕过DLL劫持未引号路径可控服务全检项目

应用场景&#xff1a; 1、常规某个机器被钓鱼后门攻击后&#xff0c;我们需要做更高权限操作或权限维持等。 2、内网域中某个机器被钓鱼后门攻击后&#xff0c;我们需要对后续内网域做安全测试。 #Win10&11-BypassUAC自动提权-MSF&UACME 为了远程执行目标的exe或者b…...

Axure零基础跟我学:展开与收回

亲爱的小伙伴,如有帮助请订阅专栏!跟着老师每课一练,系统学习Axure交互设计课程! Axure产品经理精品视频课https://edu.csdn.net/course/detail/40420 课程主题:Axure菜单展开与收回 课程视频:...

【Java】Ajax 技术详解

文章目录 1. Filter 过滤器1.1 Filter 概述1.2 Filter 快速入门开发步骤:1.3 Filter 执行流程1.4 Filter 拦截路径配置1.5 过滤器链2. Listener 监听器2.1 Listener 概述2.2 ServletContextListener3. Ajax 技术3.1 Ajax 概述3.2 Ajax 快速入门服务端实现:客户端实现:4. Axi…...