雷池WAF+Modsecurity安装防护及系统加固

news2024/10/5 9:36:46

君衍.

  • 一、雷池WAF
    • 1、什么是雷池
    • 2、什么是WAF
    • 3、雷池的功能
    • 4、WAF部署架构
    • 5、整体检测流程
  • 二、雷池WAF环境依赖
    • 1、查看本地CPU架构
    • 2、Docker安装
      • 2.1 卸载旧版本
      • 2.2 安装yum-utils工具包
      • 2.3 设置镜像仓库
      • 2.4 安装docker
      • 2.5 启动docker并查看版本
    • 3、Docker Compose安装
      • 3.1 卸载旧版本
      • 3.2 下载文件并移至bin目录
      • 3.3 添加执行权限
      • 3.4 查看版本
  • 三、雷池WAF安装配置
    • 1、Nginx更改端口
    • 2、自动安装雷池WAF
    • 3、初始化账户并登录
    • 4、配置防护站点
    • 5、防护测试
    • 6、拦截效果
  • 四、系统加固
    • 1、iptables放通端口
    • 2、iptables拦截IP
  • 五、深度防御实现
    • 1、配置雷池上游服务器地址
    • 2、设置云服务器安全组规则
    • 3、iptables制定策略
  • 六、遇到的问题及解决
    • 1、nginx: [alert] kill(30127, 1) failed (3: No such process)
    • 2、nginx: [error] open() “/usr/local/nginx/logs/nginx.pid“ failed (2: No such file or directory)
    • 3、雷池常见问题排查

本文继上篇环境: 腾讯云服务器+Nginx+ModSecurity+XSS(CentOS7)靶场搭建的一个传统WAF环境,之后,再此基础上使用雷池WAF二次进行应用层防护,及使用iptables代替防火墙来进行系统加固。
在这里插入图片描述

上篇文章地址: Modsecurity安装+Nginx+腾讯云CentOS+XSS-Labs靶场+WAF规则
这里介绍下我的思路,为了凸显雷池WAF的优势以及区别,设计两个端口来进行区分,将8080端口设置为nginx服务的端口地址,使用雷池WAF监听80端口,配置上游服务器为源站8080端口。而8080端口源站我们已经使用modsecurity进行了防御。所以,之后我们可以使用payload来进行两端测试,80端口为雷池WAF防护地址,8080端口为modsecurity防护地址。当然,80端口为WAF+Modsecurity双层防御来应对网络中复杂流量以及报文。而判断雷池与modsecurity差别则可进行日志审计或者进行测试观察,同时modsecurity拦截直接状态码403回显,而雷池WAF拦截则是没有响应报文。(当然了,也可以不对外暴露8080端口,只能使用80端口进行访问,之后雷池对流量进行检测,抛给源站,源站上又配置了modsecurity进行校验,从而使系统更加安全,在文章最后介绍如何使用户只能通过80端口访问。)
在这里插入图片描述
选择雷池也有部分原因为雷池社区版免费,以及modsecurity开源,可供学习研究。
在这里插入图片描述

一、雷池WAF

1、什么是雷池

雷池(SafeLine)是一种Web应用防火墙(Web Application Firewall),其名称来源于其开发者长亭科技。WAF通常被用于保护Web应用程序免受各种网络攻击,如SQL注入、跨站脚本(XSS)、跨站请求伪造(CSRF)等。它位于Web应用程序前面,监控和过滤进入应用程序的HTTP流量,以识别和阻止恶意的HTTP请求。
雷池技术体系知识库

  • 雷池语义分析算法
  • 雷池技术架构

2、什么是WAF

WAF是Web Application Firewall(Web应用防火墙)的缩写。它是一种专门用于保护Web应用程序免受各种网络攻击的安全设备或服务。
WAF 的作用和功能:

  • 过滤恶意流量:WAF位于Web应用程序前面,监控所有进入应用程序的HTTP/HTTPS流量。它能够识别和过滤掉包含恶意代码或攻击特征的请求,如SQL注入、跨站脚本(XSS)、跨站请
  • 实时监控和分析:WAF实时地分析流量,监控潜在的安全威胁,并根据预定义的规则或策略采取相应的防御措施,比如阻止恶意请求或者记录日志供进一步审计。
  • 安全策略:管理员可以根据具体的应用需求配置和实施多种安全策略。这些策略包括防止公开漏洞的利用、防御未知的威胁以及应对已知的攻击模式。
  • 日志和报告:WAF通常会记录所有的HTTP/HTTPS流量,包括允许和拒绝的请求,以及详细的安全事件日志。这些日志可以用于安全审计、调查事件和性能优化。
  • 缓解DDoS攻击:某些WAF还具备抵御分布式拒绝服务(DDoS)攻击的能力,通过流量限制、IP黑名单等方式来减轻对服务器的压力。
  • 自动化和智能防护:现代的WAF通常支持自动化配置和智能学习,能够识别新型的攻击模式并自动适应防御策略,减少对管理员的依赖。
  • 性能优化:为了不影响Web应用程序的正常运行,WAF会采用各种技术手段来优化性能,如请求缓存、延迟加载等。

3、雷池的功能

便捷性

  • 采用容器化部署,一条命令即可完成安装,0 成本上手
  • 安全配置开箱即用,无需人工维护,可实现安全躺平式管理

安全性

  • 首创业内领先的智能语义分析算法,精准检测、低误报、难绕过
  • 语义分析算法无规则,面对未知特征的 0day 攻击不再手足无措

高性能

  • 无规则引擎,线性安全检测算法,平均请求检测延迟在 1 毫秒级别
  • 并发能力强,单核轻松检测 2000+ TPS,只要硬件足够强,可支撑的流量规模无上限

高可用

  • 流量处理引擎基于 Nginx 开发,性能与稳定性均可得到保障
  • 内置完善的健康检查机制,服务可用性高达 99.99%

4、WAF部署架构

一般外部用户发出请求,经过网络最终传递到网站服务器。
在这里插入图片描述
此时,若外部用户中存在恶意用户,那么由恶意用户发出的攻击请求也会经过网络最终传递到网站服务器。
在这里插入图片描述
社区版雷池以反向代理方式接入,优先于网站服务器接收流量,对流量中的攻击行为进行检测和清洗,将清洗过后的流量转发给网站服务器。

5、整体检测流程

在这里插入图片描述

二、雷池WAF环境依赖

安装雷池前请确保你的系统环境符合以下要求:

  • 操作系统:Linux
  • CPU 指令架构:x86_64
  • CPU 指令架构:支持 ssse3 指令集
  • 软件依赖:Docker 20.10.14 版本以上
  • 软件依赖:Docker Compose 2.0.0 版本以上
  • 最低资源需求:1 核 CPU / 1 GB 内存 / 5 GB 磁盘

1、查看本地CPU架构

  • 查看指令架构
uname -m

在这里插入图片描述

  • 查看CPU信息
cat /proc/cpuinfo| grep "processor"

在这里插入图片描述

  • 查看CPU是或否支持ssse3指令集
lscpu | grep ssse3

在这里插入图片描述

2、Docker安装

这里需要注意的是我这里Linux使用的是CentOS7系统,所以之后的环境安装需要注意命令是否需要更改。(由于篇幅限制,这里我不具体介绍安装过程的描述)
Ubuntu操作系统安装docker详见:Ubuntu22.04安装docker

2.1 卸载旧版本

yum remove docker \
                   docker-client \
                   docker-client-latest \
                   docker-common \
                   docker-latest \
                   docker-latest-logrotate \
                   docker-logrotate \
                   docker-engine

这里之前没有安装可以忽略不用卸载,不知道是否有安装可以执行,回显处出没找到即可。
在这里插入图片描述

2.2 安装yum-utils工具包

yum install -y yum-utils

在这里插入图片描述

2.3 设置镜像仓库

这里使用阿里云镜像仓库

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

在这里插入图片描述

2.4 安装docker

yum install docker-ce docker-ce-cli containerd.io

在这里插入图片描述

2.5 启动docker并查看版本

systemctl start docker
docker version

在这里插入图片描述
至此,CentOS操作系统安装docker即可完成。其他操作系统Ubuntu可见博客:Ubuntu22.04安装docker

3、Docker Compose安装

3.1 卸载旧版本

rm /usr/local/bin/docker-compose

这里直接删除旧版本目录即可,如果没有安装过可以忽略,不清楚则可执行,显示没有这个目录即可。

3.2 下载文件并移至bin目录

curl -L https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

这里可能会特别慢,我当时的解决方式是直接在windows下下载完成,使用ftp完成文件上传至bin目录下即可。

3.3 添加执行权限

chmod +x /usr/local/bin/docker-compose

3.4 查看版本

在这里插入图片描述
以上即可将雷池WAF所需的依赖环境安装完成,以及其硬件需求需要注意。

安装雷池前请确保你的系统环境符合以下要求:

  • 操作系统:Linux
  • CPU 指令架构:x86_64
  • CPU 指令架构:支持 ssse3 指令集
  • 软件依赖:Docker 20.10.14 版本以上
  • 软件依赖:Docker Compose 2.0.0 版本以上
  • 最低资源需求:1 核 CPU / 1 GB 内存 / 5 GB 磁盘

三、雷池WAF安装配置

本篇采用的WAF安装方式是直接在本地服务器上部署,与后端服务器部署在一台主机上。当然,这里其实不建议这么配置的如果是在真实的生产环境下,这种对于单机的负载要求更高,设备宕机概率大,同时故障排查困难,生产环境下建议在单独的服务器上部署雷池。

1、Nginx更改端口

首先,我依旧说明下我目前的环境,当前的环境是上一篇文章的环境,使用了nginx作为中间件,同时nginx监听的端口为80端口。而雷池的防护站点配置,配置需要监听80端口,HTTP的默认端口,当然,如果你要让雷池监听别的端口,那么访问站点时,后面自然需要跟上雷池防护的端口,所以这里我决定更改Nginx的监听端口,更改为8080,让雷池去监听80端口,8080端口让modsecurity防护,从而也有个测试的平台也就是8080端口来测试哪些payload是雷池可以防住而modsecurity防不住的,以上便是的大体的思路。
下面我们更改Nginx监听端口:

  • 1、为了方便之后的nginx执行,首先配置环境变量:
vim /etc/profile
# 文件末尾加上以下两个
export NGINX_HOME=/usr/local/nginx
export PATH=$PATH:$NGINX_HOME/sbin
# 保存退出
source /etc/profile

以上一个是Nginx的家目录,一个是可执行文件目录需要配置正确。
在这里插入图片描述

  • 2、将Nginx的服务关闭,使用命令:
nginx -s stop
netstat -ntlp # 查看端口状态

在这里插入图片描述
这里我们可以看到80端口已经不再被监听。

  • 3、下面我们去Nginx的配置文件里面监听端口更改为8080:
vim /usr/local/nginx/conf/nginx.conf

在这里插入图片描述

  • 4、重启nginx服务:
nginx -s reload
netstat -ntlp

在这里插入图片描述
重启之后查看nginx监听端口为8080,即可更换完毕。(同时需要注意,有防火墙的话需要将8080端口全部放开,我这里在腾讯云防火墙以及本机防火墙都已开放8080端口。)
当然,这里可能会发生报错,所以我在文章最后有两个报错内容以及解决方式供大家参考。

2、自动安装雷池WAF

bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/setup.sh)"

在这里插入图片描述
安装完毕后,会看到进行雷池控制台的方式,也可看到这里端口是9443默认端口控制。所以我们只需在ip地址后加上9443即可访问到控制台,这里仍需注意,9443端口是否被开放(防火墙以及云自带防火墙)。

3、初始化账户并登录

这里直接访问9443端口即可看到需要登录界面,所以需要重新初始化管理账户。

docker exec safeline-mgt resetadmin

这里即可输出账号密码,使用系统生成的账户密码即可登录控制台。

[SafeLine] Initial username:admin
[SafeLine] Initial password:**********
[SafeLine] Done

在这里插入图片描述

4、配置防护站点

这里防护站点配置在域名处可以配置自己服务器的IP地址或者域名,都可,端口这里我是计划了让雷池监听80端口,上游服务器也就是源站,这里我就是ip地址加上8080的nginx端口从而完成流量的转发以及响应,接着提交即可。
在这里插入图片描述
下面配置完之后,就可访问自己的服务器地址或者域名,80端口进行测试访问,然后等待片刻观察流量是否经过雷池,如果经过雷池,那么雷池上会有请求流量的显示,以及nginx访问日志里面访问的IP地址也是自身服务器进行访问,因为这里雷池做了转发,搞了SNAT,从而看不到源地址。

5、防护测试

这里可以自行测试,也可使用官方提供的测试,看防护效果。这里主要是手动模拟攻击。

以 https://chaitin.com 为例,然后尝试访问来模拟黑客攻击。
用你的网站地址替换下方的 https://chaitin.com/

  • 模拟 SQL 注入攻击: https://chaitin.com/?id=1+and+1=2+union+select+1
  • 模拟 XSS 攻击: https://chaitin.com/?id=<img+src=x+οnerrοr=alert()>
  • 模拟路径穿越攻击: https://chaitin.com/?id=…/…/…/…/etc/passwd
  • 模拟代码注入攻击: https://chaitin.com/?id=phpinfo();system(‘id’)
  • 模拟 XXE 攻击: https://chaitin.com/?id=<?xml+version="1.0"?><!DOCTYPE+foo+SYSTEM+“”>

不出意外的话,这些攻击都将被雷池拦截,如下图所示。
在这里插入图片描述

6、拦截效果

在这里插入图片描述
这里是使用开源WAF测试工具测出来的结果,具体可以自行使用https://github.com/chaitin/blazehttp去搭建,然后测试,我参考以上结果,使用Modsecurity-L4贴合了源站,雷池为二次防护对于80端口来说,可以看到modsecurity的检出率还是很高的,而雷池免费版的检出率一般,但是误报率相对低很多,所以二者搭配使用,达成联动,效果之后可以自行测试。
下面是我最近几天使用雷池的拦截情况:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以上可以看到效果还是很好的,这里防护强度使用的高强度(推荐高强度)。
在这里插入图片描述

四、系统加固

1、iptables放通端口

本篇我使用的防火墙为iptables,所以这里包含了去放通8080端口以及9443端口,步骤:

  1. 检查iptables的状态,使用命令 iptables -L -n
  2. 添加开放端口的规则,使用命令 iptables -I INPUT -p tcp --dport 端口号 -j ACCEPT,例如,要开放80端口,使用命令 iptables -I INPUT -p tcp --dport 80 -j ACCEPT
  3. 保存配置,使用命令 service iptables saveiptables-save > /etc/iptables.rules
  4. 重启防火墙,使用命令 service iptables restart
  5. 查看状态,使用命令 service iptables status

2、iptables拦截IP

iptables -A INPUT -s IP地址 -j DROP
service iptables save
systemctl restart iptables
iptables -nvxL --line

在这里插入图片描述

以上便是我对于几个IP地址封禁的策略查看,可以看到对于45.148.10.174的IP地址发的包已经拦截了。

五、深度防御实现

在这里插入图片描述
这里使用modsecurity与雷池WAF联动的效果,配合iptables对外部端口的控制从而实现更加安全的防护。之所以使用双WAF进行联动,是因为经过雷池官方提供的自动化WAF检测工具最终的数据产出对比可以看到,modsecurity的检出率也就是拦截数量还是很高的,但是误报太多,同时没有图形化界面,对运维以及流量审计有一定的难度。所以配合误报率低的雷池WAF,拥有图形化界面,从而更加便捷的让用户看到拦截程度以及拦截的攻击类型等等。

1、配置雷池上游服务器地址

在这里插入图片描述
这里我们将上游服务器设置为127.0.0.1,设置为本机,之后我们将除了127.0.0.1的流量屏蔽掉。

2、设置云服务器安全组规则

在这里插入图片描述
这里我们只设置来源为127.0.0.1的IP地址访问8080端口是允许的就成。

3、iptables制定策略

这里由于我之前放开了对8080端口的限制,所以:

[root@VM-8-11-centos ~]# iptables -nxvL --line

在这里插入图片描述
可以看到,这里8080端口对所有IP地址都没有进行限制,下面我们设置规则,只有127.0.0.1的IP地址可以进行访问。

[root@VM-8-11-centos ~]# iptables -A INPUT -i lo -p tcp --dport 8080 -s 127.0.0.1 -j ACCEPT
[root@VM-8-11-centos ~]# iptables -A INPUT -i lo -p tcp --dport 8080 -j DROP
[root@VM-8-11-centos ~]# iptables -D INPUT 2

下面对以上命令进行解读:

iptables -A INPUT -i lo -p tcp --dport 8080 -s 127.0.0.1 -j ACCEPT
  • -A INPUT: 将规则添加到INPUT链(即入站流量)。
  • -i lo: 匹配本地回环接口(lo)。
  • -p tcp: 指定协议为TCP。
  • –dport 8080: 指定目标端口为8080。
  • -s 127.0.0.1: 指定源IP地址为127.0.0.1。
  • -j ACCEPT: 如果匹配,则接受连接。
iptables -A INPUT -i lo -p tcp --dport 8080 -j DROP

这个命令则代表,如果IP地址不是127.0.0.1,那么直接丢掉(与上一条配合使用,也就是如果上一条规则没有被匹配,那么匹配这个也就是直接丢掉)。

iptables -D INPUT 2

这条命令则代表删掉规则2,因为我端口放通在规则num=2,这里删掉。

六、遇到的问题及解决

1、nginx: [alert] kill(30127, 1) failed (3: No such process)

在这里插入图片描述
解决问题的命令:

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
  • /usr/local/nginx/sbin/nginx:这是nginx服务器的可执行文件路径。在大多数安装中,nginx可执行文件通常位于 /usr/local/nginx/sbin/nginx。这个路径指定了nginx服务器的实际二进制文件所在的目录。
  • -c /usr/local/nginx/conf/nginx.conf:这是nginx启动时指定的配置文件路径。在这里,-c 选项表示后面紧跟着nginx的配置文件路径。/usr/local/nginx/conf/nginx.conf 指定了nginx的主配置文件的位置。nginx在启动时需要加载这个配置文件来确定如何处理请求、监听端口、设定虚拟主机等等。

2、nginx: [error] open() “/usr/local/nginx/logs/nginx.pid“ failed (2: No such file or directory)

在这里插入图片描述

这里我们依旧使用上一个问题的命令即可看到生成了nginx.pid,如果再次nginx -s reload出现此报错,那么说明pid里面内容与端口的PID不对应。这里我们需要使用netstat -ntlp命令进行查看nginxPID,这里从截图可以看出来为5570,然后去nginx.pid里面将pid改为5570即可,再次重启即可没有此报错。

3、雷池常见问题排查

在这里插入图片描述
这里放上官方排查手册,涵盖面非常广,可以进行查阅:
常见故障排查手册

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

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

相关文章

flex布局中子元素内容超出时,子元素本身出现滚动条实现方法

flex布局中子元素宽度平均分配&#xff0c;并且当子元素内容超出时&#xff0c;子元素本身出现滚动条实现方法&#xff1a; 将父元素设置为display: flex&#xff0c;以启用Flexbox布局。将每个子元素的flex属性设置为1&#xff0c;以使其宽度平均分配。设置子元素的overflow属…

《Linux开发笔记》C语言编译过程

C语言编译过程 编译过程主要分为四步&#xff1a;预处理、编译、汇编、链接 预处理&#xff1a;主要用于查找头文件、展开宏 编译&#xff1a;把.i文件编译成.s文件 汇编&#xff1a;把.s文件汇编为.o文件 链接&#xff1a;把多个.o文件链接成一个app 以上四个步骤主要由3个命…

MySQL常用操作命令大全

文章目录 一、连接与断开数据库1.1 连接数据库1.2 选择数据库1.3 断开数据库 二、数据库操作2.1 创建数据库2.2 查看数据库列表2.3 删除数据库 三、表操作3.1 创建表3.2 查看表结构3.3 修改表结构3.3.1 添加列3.3.2 删除列3.3.3 修改列数据类型 3.4 删除表 四、数据操作4.1 插入…

一文讲懂npm link

前言 在本地开发npm模块的时候&#xff0c;我们可以使用npm link命令&#xff0c;将npm 模块链接到对应的运行项目中去&#xff0c;方便地对模块进行调试和测试 用法 包链接是一个两步过程&#xff1a; 1.为依赖项创建全局软链npm link。一个符号链接&#xff0c;简称软链&a…

DataWhale-吃瓜教程学习笔记 (六)

学习视频**&#xff1a;第4章-决策树_哔哩哔哩_bilibili 西瓜书对应章节&#xff1a; 第五章 5.1&#xff1b;5.2&#xff1b;5.3 文章目录 MP 神经元- 感知机模型 &#xff08;分类模型&#xff09;-- 损失函数定义--- 感知机学习算法 - 随机梯度下降法 - 神经网络需要解决的问…

electron教程(一)创建项目

一、方式① 根据官网描述将electron/electron-quick-start项目克隆下来并启动 electron/electron-quick-start地址&#xff1a; GitHub - electron/electron-quick-start: Clone to try a simple Electron app git clone https://github.com/electron/electron-quick-start…

HBM是什么?因AI而崛起,它有哪些优势?

南韩存储大厂SK海力士宣布&#xff0c;将与台积电公司密切合作&#xff0c;联手生产下一代HBM——即预计在2026年投产的第六代HBM产品HBM4&#xff0c;双方并于近期签署合作备忘录&#xff08;MOU&#xff09;。 SK海力士以往的HBM产品&#xff0c;包括HBM3E&#xff08;第五代…

感动的短视频:成都柏煜文化传媒有限公司

感动的短视频&#xff1a;瞬间触动心灵的温暖力量 在这个快节奏、高压力的时代&#xff0c;我们常常在忙碌与喧嚣中穿梭&#xff0c;心灵深处那份最纯粹的感动似乎变得愈发珍贵而难得。然而&#xff0c;就在这样一个数字化盛行的今天&#xff0c;短视频以其独特的魅力&#xf…

LLM学习记录

概述 语言模型的发展 语言模型经历过四个阶段的发展&#xff0c;依次从统计语言模型到神经网络语言模型&#xff08;NLM&#xff09;&#xff0c;到出现以 BERT 和 Transformer 架构为代表的预训练语言模型&#xff08;PLM&#xff09;&#xff0c;最终到大型语言模型阶段&am…

第一后裔怎么绑定NEXON账号 NEXON账号绑定Steam第一后裔教程

刚上线就特别好评的多人刷榜刚上线就特别好评的多人刷宝射击爽游《第一后裔》免费上线了&#xff0c;快和小伙伴们一起来闯荡这个神秘的世界吧&#xff0c;整体还是mmo的玩法&#xff0c;开放世界任意探索&#xff0c;全新虚幻五引擎带来的不俗的画面表现&#xff0c;在游戏中扮…

Sharding-JDBC分库分表的基本使用

前言 传统的小型应用通常一个项目一个数据库&#xff0c;单表的数据量在百万以内&#xff0c;对于数据库的操作不会成为系统性能的瓶颈。但是对于互联网应用&#xff0c;单表的数据量动辄上千万、上亿&#xff0c;此时通过数据库优化、索引优化等手段&#xff0c;对数据库操作…

昇思25天学习打卡营第04天 | 数据集 Dataset

昇思25天学习打卡营第04天 | 数据集 Dataset 文章目录 昇思25天学习打卡营第04天 | 数据集 Dataset数据集加载数据集迭代数据集的变换shufflemapbatch 自定义数据集可随机访问数据集对象可迭代数据集生成器 总结打卡 数据集Dataset对原始数据进行封装、变换&#xff0c;为神经网…

OpenSSH漏洞扫描(CVE-2024-6387、CVE-2006-5051、CVE-2008-4109)

目录 POC&#xff1a;ssh_poc.py 使用方法 github CVE-2024-6387 漏洞信息 补丁 POC&#xff1a;ssh_poc.py import sys import socket import argparse import threading import queue import os from datetime import datetime from urllib.parse import urlparse from…

全年免费!环信发布出海创新版,助力泛娱乐创业者扬帆起航

目前&#xff0c;以陌生人社交、直播、语聊、电商等热门场景为代表的社交泛娱乐出海正发展得如火如荼&#xff0c;成为企业新的增长曲线。但随着出海企业增多&#xff0c;海外市场争夺、资源竞争与技术博弈也愈加激烈。 为了让更多创业者与创新者获得支持&#xff0c;快速高效…

宠物博主亲测养宠好物安利,口碑好的狗毛空气净化器推荐

作为一名6年资深铲屎官&#xff0c;一到春季换季就开始各种疯狂打喷嚏、全身过敏红肿&#xff0c;这是因为宠物在换季的时候就疯狂掉毛&#xff0c;家里就想下雪一样&#xff0c;空气中都是宠物浮毛。而宠物毛上附带的细菌会跟随浮毛被人吸入人体&#xff0c;从而产生打喷嚏、过…

VBA字典与数组第十六讲:行、列数不相同的数组间运算规律

《VBA数组与字典方案》教程&#xff08;10144533&#xff09;是我推出的第三套教程&#xff0c;目前已经是第二版修订了。这套教程定位于中级&#xff0c;字典是VBA的精华&#xff0c;我要求学员必学。7.1.3.9教程和手册掌握后&#xff0c;可以解决大多数工作中遇到的实际问题。…

云服务器中的地域和可用区是什么意思?

一、地域介绍 1、概念 地域&#xff08;Region&#xff09;&#xff1a;从地理位置和网络时延维度划分&#xff0c;同一个地域内共享弹性计算、块存储、对象存储、VPC网络、弹性公网IP、镜像等公共服务。不同地域之间完全隔离&#xff0c;保证不同地域间最大程度的稳定性和容…

0628_ARM4

练习&#xff1a; stm32流水灯 .text .global _start _start: 使能GPIOE外设时钟 0X50000A28 RCC_MP_AHB4ENSETR[4]->1 LDR R0,0x50000a28 指定操作的内存地址 LDR R1,[R0] 将R0对应的地址空间中的值读取出来 ORR R1,R1,#(0x3<<4) 将第4,5位设置为1 STR…

ForkJoinPool与ThreadPoolExecutor

ThreadPoolExecutor不多介绍&#xff0c;重点介绍ForkJoinPool&#xff0c;以及二者的区别 ForkJoinPool ForkJoinPool 是 Java 7 引入的一种用于并行计算的框架&#xff0c;特别适合处理递归任务。它是 java.util.concurrent 包的一部分&#xff0c;基于工作窃取算法&#x…

【Qwen2部署实战】Qwen2初体验:用Transformers打造智能聊天机器人

系列篇章&#x1f4a5; No.文章1【Qwen部署实战】探索Qwen-7B-Chat&#xff1a;阿里云大型语言模型的对话实践2【Qwen2部署实战】Qwen2初体验&#xff1a;用Transformers打造智能聊天机器人3【Qwen2部署实战】探索Qwen2-7B&#xff1a;通过FastApi框架实现API的部署与调用4【Q…