负载均衡集群——LVS-DR配置
一、简介
1.1 什么是集群?
两台及以上的计算机完成一个任务的模式称为集群。
常见的集群类型包括:
LB(负载均衡)集群:按照不同的算法将前端的访问转发给后端计算点,使节点负载相对平衡。提高并发能力
缺点:负载节点只有一个,容易访问瓶颈,可能存在单点故障
解决方法:增加多个节点,选举主节点(master),访问的IP称为VIP,正常情况下绑定在master上。节点之间有一条心跳检测的线路,若master心跳检测不到了,重新选举master,VIP漂移到新的节点上。
HA(高可用性)集群:保障应用持久、不间断的提供服务,出现故障时应用可以自动快速的切换节点
重切换节点方式称为漂移
HPC(高性能计算)集群:软硬件协同工作的系统,通过集群架构、并行算法等实现单台计算机无法达到的运行速度。(科研居多)
1.2 基于Linux的负载均衡集群软件
LVS——开源的四层(传输层)负载均衡软件
Nginx——支持四层和七层(应用层)负载均衡
HAProxy——支持四层和七层负载均衡
1.3 基于Linux的高可用集群软件
Keepalived:轻量级高可用集群部署软件,为LVS设计,可实现集群的心跳检测、虚拟IP漂移等功能
Hearbeat:与keepalived类似,但不控制虚拟IP的漂移,配置也比较复杂。更擅长资源服务的控制(NFS)
Pacemaker:开源集群资源管理器,不具备心跳检测,需依赖Corosync或Hearbeat,应用广泛,可同时适用于任何规模的集群
集群常见概念
VIP:虚拟IP,一般使用VIP向外提供服务,避免切换master后引起的业务访问IP变化
地址漂移:VIP从一台主机切换到另一台主机
心跳:机制、在高可用集群中,主机之间相互监控彼此状态,以决定哪台主机提供服务
脑裂:现象、如果节点之间心跳中断或不正常,会导致彼此之间争夺资源
代理:正向代理和反向代理。相对与被代理者来说的,正向代理被代理的是客户端(客户需要什么),反向代理被代理的是服务端(商店提供什么)

1.4 LVS相关术语
为了方便大家探讨LVS技术,LVS社区提供了一个命名的约定,内容如下表

1.5 LVS调度算法
调度方法决定了如何在这些集群节点之间分布工作负荷。
当Director收到来自客户端计算机访问她的VIP上的集群服务的入站请求时,Director必须决定那个集
群节点应该获得请求。Director可用于做出该决定的调度方法分成两个基本类别:
固定调度算法:rr,wrr,dh,sh
动态调度算法:wlc,lblc,lblcr,SED,NQ(后两种官方站点没提到)
| 算法 | 说明 |
| rr | 轮循调度(Round-Robin), 它将请求依次分配不同的RS,也就是在RS中均摊请求。这种算法简单,但是只适合于处理性能相差不大的情况 |
| wrr | 加权轮循调度(Weighted Round-Robin) 它将依据不同RS的权值分配任务。权值较高的RS将优先获得任务,并且分配到的连接数将比权值较低的RS更多。相同权值的RS得到相同数目的连接数。 |
| dh | 目的哈希调度(Destination Hashing) 以目的地址为关键字查找一个静态hash表来获得需要的RS。 |
| sh | 源地址哈希调度(source hashing) 以源地址为关键字查找一个静态hash表来获得需要的RS。 |
| wlc | 加权最小连接数调度(weighted leastconnection) 假设各台RS的权值依次为wi(i=1..n),当前的TCP连接数依次为Ti(i=1..n),依次选取Ti/Wi为最小的RS作为下一个分配的RS。 |
| lc | 最小连接数调度(Least-Connection), IPVS表存储了所有的活动的连接。把心的连接请求发送到当前连接数最小的RS。 |
| lblc | 基于地址的最小连接数调度(locality-Based Least-Connection) 将来自同一目的地址的请求分配给同一台RS如果这台服务器尚未满负荷,否则分配给连接数最小的RS,并以它为下一次分配的首先考虑。 |
| lblcr | 基于地址带重复最小连接数调度(Locality-Based Least-Connection with Replication) 对于某一目的地址,对应有一个RS子集。 对此地址请求,为它分配子集中连接数最小RS;如果服务器中所有子集均已满负荷,则从集群中选择一个连接数较小服务器,将它加入到此子集并分配连接;若一定时间内,未被做任何修改,则将子集中负载最大的节点从子集删除。 |
| SED | 最短期望的延迟(shortest expected delay scheduling SED)(SED) 基于wlc算法。 举例: ABC三台机器分别权重123,连接数也分别是123.那么如果使用wlc算法的话一个新请求进入时它可能会分给ABC中的任意一个。使用sed算法后会进这样一个运算 A(1+1)/1 B(1+2)/2 C(1+3)/3 根据运算结果,把连接交给C。 |
| NQ | 最少队列调度(Never Queue Scheduling NQ)(NQ) 无需队列。如果有台realserver的连接数=0就直接分配过去,不需要在进行sed运算 |
二、负载均衡集群
2.1 LVS工作模式——DR配置
在DR模式中,所有的RS(真实的服务器)都需要配置两个地址:RIP和VIP
环境:四台虚拟机 一台配置为LVS服务器 两台用于Nginx服务器的搭建 剩余一台为Client.
LVS仅需要一个网卡可用,两台Nginx服务器和LVS服务器处于同一子网中,客户端位于另一个子网 ,思路如下

实际配置自己方便区分即可,但是VIP必须是该网段里没用过的
LB : 192.168.1.111
(RS)nginx1 : 192.168.1.112
(RS)nginx2 : 192.168.1.113
Client : 192.168.1.11
VIP: 192.168.1.10(后续单独配置)
2.1.1 nginx服务器配置
1.RS下载nginx服务
(两个nginx服务器都尝试相同的操作)
yum install nginx -y
会提供一个默认主页

尝试访问主页
向主页输入内容:
[root@openeuler-1 ~]# echo "web test page,ip is `hostname -I`." > /usr/share/nginx/html/index.html 设置开机自启动,将输入的内容覆盖原有页面:
[root@openeuler-1 ~]# systemctl enable --now nginx
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.访问页面,覆盖成功:
[root@openeuler-1 ~]# curl localhost
web test page,ip is 192.168.1.113 .
注意: `hostname -I` 表示输入当前主机IP, 两台机器ip不一样,所以访问出来的页面IP也不一样
纠错提醒:如果输入时内容输错,重新输入重启服务即可覆盖
如果输错了文件夹,将其移动到正确的文件即可,不用重启: mv /错误的文件 /正确的文件
2.绑定VIP
[root@openeuler-1 ~]# nmcli con add type dummy ifname dummy1 ipv4.method manual ipv4.addresses 192.168.1.10/32
Connection 'dummy-dummy1' (231b9ead-7b44-4daf-b8b1-2a9a6d864dfb) successfully added.
[root@openeuler-1 ~]# ip a
3.arp抑制
在文件最后加入如下配置
[root@openeuler-1 ~]# vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.dummy1.arp_ignore = 1
net.ipv4.conf.dummy1.arp_announce = 2使文件生效:
[root@openeuler-1 ~]# sysctl -p查看是否生效:
[root@openeuler-1 ~]# ip a
...
3: dummy1: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
...
到此,nginx服务器就配置完成了。
2.1.2 LB服务器配置
1)绑定VIP
nmcli con add type dummy ifname dummy1 ipv4.method manual ipv4.addresses 192.168.1.10/32
2)安装工具ipvsadm
yum install ipvsadm -y
3)LVS配置
手工执行配置添加LVS服务并增加两台RS
[root@Directory ~]# ipvsadm -C 清除当前配置
[root@Directory ~]# ipvsadm --set 30 5 60
因为此前没有配置过,所以这两步可省略,直接添加LVS服务
添加LVS服务:
[root@Directory ~]# ipvsadm -At 192.168.1.10:80 -s rr增加真实的服务器RS:
[root@Directory ~]# ipvsadm -at 192.168.1.10:80 -r 192.168.1.112:80 -g
[root@Directory ~]# ipvsadm -at 192.168.1.10:80 -r 192.168.1.113:80 -g 查看配置[root@Directory ~]# ipvsadm -L -nIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConnTCP 192.168.1.10:80 rr-> 192.168.1.112:80 Route 1 0 0 -> 192.168.1.113:80 Route 1 0 0
rr:轮询算法 轮流提供服务
-g:DR模式
-At = -A -t 两种写法,可分开也可合并
[相关参数说明]
[root@Directory ~]# ipvsadm –help
-A 添加虚拟服务器
-t 设置群集地址(VIP,Virtual IP)
-s 指定负载调度算法
-a 添加真实服务器
-d 删除真实服务器
-r 指定真实服务器(Real Server)的地址
-m 使用NAT模式;-g、-i分别对应DR、TUN模式
-w 为节点服务器设置权重,默认为1
[删除方法]
# ipvsadm -D -t 192.168.79.110:80 -s wrr
# ipvsadm -d -t 192.168.79.110:80 -r 192.168.79.118:80
2.1.3 client客户机测试
1)测试连通性
访问nginx服务器,113服务器无法访问可能是该服务器防火墙有限制, 阻止了对目标端口(如 80 端口)的访问
[root@openeuler-1 ~]# curl 192.168.1.112
web test page,ip is 192.168.1.112 .
[root@openeuler-1 ~]# curl 192.168.1.113
curl: (7) Failed to connect to 192.168.1.113 port 80 after 0 ms: No route to host
开放nginx113服务器80端口
[root@openeuler-1 ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent
success
[root@openeuler-1 ~]# firewall-cmd --reload
success
再次访问
[root@openeuler-1 ~]# curl 192.168.1.113
web test page,ip is 192.168.1.113 .
2)关闭服务器和客户机的防火墙和SElinux
ps:每台都要关
[root@openeuler-1 ~]# systemctl stop firewalld
[root@openeuler-1 ~]# setenforce 0
setenforce: SELinux is disabled
[root@openeuler-1 ~]# for ((i=1;i<=6;i++)); do curl 192.168.1.10; done
web test page,ip is 192.168.1.113 .
web test page,ip is 192.168.1.112 .
web test page,ip is 192.168.1.113 .
web test page,ip is 192.168.1.112 .
web test page,ip is 192.168.1.113 .
web test page,ip is 192.168.1.112 .
2.1.4自动配置脚本
每次都要手动配置较为麻烦,为了方便可以做一个启动脚本
1)清除之前的配置
ipvsadm -C #清除配置ipvsadm -Ln #查看nmcli connection delete dummy-dummy1 #删除网络ip a
2)LB代理服务器 上的脚本:
注意:脚本内容需要根据自身ip、网段、端口不同更改相应配置
vim /etc/init.d/lvs_dr
#!/bin/sh
#
# Startup script handle the initialisation of LVS
# chkconfig: - 28 72
# description: Initialise the Linux Virtual Server for DR
#
### BEGIN INIT INFO
# Provides: ipvsadm
# Required-Start: $local_fs $network $named
# Required-Stop: $local_fs $remote_fs $network
# Short-Description: Initialise the Linux Virtual Server
# Description: The Linux Virtual Server is a highly scalable and highly
# available server built on a cluster of real servers, with the load
# balancer running on Linux.
# description: start LVS of DR
LOCK=/var/lock/ipvsadm.lock
VIP=192.168.95.10
RIP1=192.168.95.11
RIP2=192.168.95.12
DipName=ens33
. /etc/rc.d/init.d/functions
start() {PID=`ipvsadm -Ln | grep ${VIP} | wc -l`if [ $PID -gt 0 ];thenecho "The LVS-DR Server is already running !"else#Set the Virtual IP Address/sbin/ifconfig ${DipName}:10 $VIP broadcast $VIP netmask
255.255.255.255 up/sbin/route add -host $VIP dev ${DipName}:10#Clear IPVS Table/sbin/ipvsadm -C#Set Lvs/sbin/ipvsadm -At $VIP:80 -s rr/sbin/ipvsadm -at $VIP:80 -r $RIP1:80 -g/sbin/ipvsadm -at $VIP:80 -r $RIP2:80 -g/bin/touch $LOCK#Run Lvsecho "starting LVS-DR Server is ok !" fi
}
stop() {#clear Lvs and vip/sbin/ipvsadm -C/sbin/route del -host $VIP dev ${DipName}:10/sbin/ifconfig ${DipName}:10 down >/dev/nullrm -rf $LOCKecho "stopping LVS-DR server is ok !"
}
status() {if [ -e $LOCK ];thenecho "The LVS-DR Server is already running !"elseecho "The LVS-DR Server is not running !"fi
}
case "$1" instart)start;;stop)stop;;restart)stopstart;;
status)status;;
*)echo "Usage: $1 {start|stop|restart|status}"exit 1
esac
exit 0
3)RS上的脚本
vim /etc/init.d/rs_dr
#!/bin/sh
#
# Startup script handle the initialisation of LVS
# chkconfig: - 28 72
# description: Initialise the Linux Virtual Server for DR
#
### BEGIN INIT INFO
# Provides: ipvsadm
# Required-Start: $local_fs $network $named
# Required-Stop: $local_fs $remote_fs $network
# Short-Description: Initialise the Linux Virtual Server
# Description: The Linux Virtual Server is a highly scalable and highly
# available server built on a cluster of real servers, with the load
# balancer running on Linux.
# description: start LVS of DR-RIP
LOCK=/var/lock/ipvsadm.lock
VIP=192.168.95.10
. /etc/rc.d/init.d/functions
start() {PID=`ifconfig | grep lo:10 | wc -l`if [ $PID -ne 0 ];thenecho "The LVS-DR-RIP Server is already running !"else/sbin/ifconfig lo:10 $VIP netmask 255.255.255.255 broadcast $VIP up/sbin/route add -host $VIP dev lo:10echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "1" >/proc/sys/net/ipv4/conf/eth0/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/eth0/arp_announceecho "1" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/all/arp_announce/bin/touch $LOCKecho "starting LVS-DR-RIP server is ok !"fi
}
stop() {/sbin/route del -host $VIP dev lo:10/sbin/ifconfig lo:10 down >/dev/nullecho "0" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "0" >/proc/sys/net/ipv4/conf/eth0/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/eth0/arp_announceecho "0" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/all/arp_announcerm -rf $LOCKecho "stopping LVS-DR-RIP server is ok !"
}
status() {if [ -e $LOCK ];thenecho "The LVS-DR-RIP Server is already running !"elseecho "The LVS-DR-RIP Server is not running !"fi
}
case "$1" instart)start;;stop)stop;;restart)stopstart;;
status)status;;
*)echo "Usage: $1 {start|stop|restart|status}"exit 1
esac
exit 0
两个脚本都设置开机自启,这里以LB服务器的为例
chkonfig --add lvs_drchkconfig lvs_dr onsystemctl start lvs_dr
然后在客户机上测试即可
相关文章:
负载均衡集群——LVS-DR配置
一、简介 1.1 什么是集群? 两台及以上的计算机完成一个任务的模式称为集群。 常见的集群类型包括: LB(负载均衡)集群:按照不同的算法将前端的访问转发给后端计算点,使节点负载相对平衡。提高并发能力 缺…...
数据结构篇
链表 用数组模拟链表,看该链表结构,有几个域则用几个数组分别存储 单链表是只知道下一个元素位置,双链表还知道上一个链表位置 单链表 双向链表 左移右移 栈 模拟栈 判断括号序列 队列 模拟队列 递归 集合和哈希 集合就是哈希表 哈希表的实现…...
「软件设计模式」建造者模式(Builder)
深入解析建造者模式:用C打造灵活对象构建流水线 引言:当对象构建遇上排列组合 在开发复杂业务系统时,你是否经常面对这样的类:它有20个成员变量,其中5个是必填项,15个是可选项。当用户需要创建豪华套餐A&…...
Matlab 机器人 雅可比矩阵
工业机器人运动学与Matlab正逆解算法学习笔记(用心总结一文全会)(四)——雅可比矩阵_staubli机器人正逆向运动学实例验证matlab-CSDN博客 matlab求雅可比矩阵_六轴机械臂 矢量积法求解雅可比矩阵-CSDN博客 (63 封私信 / 80 条消息…...
DeepSeek 助力 Vue 开发:打造丝滑的面包屑导航(Breadcrumbs)
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…...
IntelliJ IDEA 2024.1.4版无Tomcat配置
IntelliJ IDEA 2024.1.4 (Ultimate Edition) 安装完成后,调试项目发现找不到Tomcat服务: 按照常规操作添加,发现服务插件中没有Tomcat。。。 解决方法 1、找到IDE设置窗口 2、点击Plugins按钮,进入插件窗口,搜索T…...
chrome://version/
浏览器输入: chrome://version/ Google浏览器版本号以及安装路径 Google Chrome131.0.6778.205 (正式版本) (64 位) (cohort: Stable) 修订版本81b36b9535e3e3b610a52df3da48cd81362ec860-refs/branch-heads/6778_155{#8}操作系统Windows…...
知识图谱数据库 Neo4j in Docker笔记
下载 docker pull neo4j:community官方说明 https://neo4j.com/docs/operations-manual/2025.01/docker/introduction/ 启动 docker run \--restart always \--publish7474:7474 --publish7687:7687 \--env NEO4J_AUTHneo4j/your_password \--volumeD:\files\knowledgegrap…...
【动手学强化学习】02多臂老虎机
问题定义 强化学习关注的是在于环境交互中学习,是一种试错学习的范式。在正式进入强化学习之前,我们先来了解多臂老虎机问题。该问题也被看作简化版的强化学习,帮助我们更快地过度到强化学习阶段。 有一个拥有 K K K 根拉杆的老虎机&#…...
【网络编程】之Udp网络通信步骤
【网络编程】之Udp网络通信步骤 TCP网络通信TCP网络通信的步骤对于服务器端对于客户端 TCP实现echo功能代码实现服务器端getsockname函数介绍 客户端效果展示 对比两组函数 TCP网络通信 TCP网络通信的步骤 对于服务器端 创建监听套接字。(调用socket函数ÿ…...
Java 基于 SpringBoot+Vue 的家政服务管理平台设计与实现
博主介绍:✌程序员徐师兄、8年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战*✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…...
架构——Nginx功能、职责、原理、配置示例、应用场景
以下是关于 Nginx 的功能、职责、原理、配置示例、应用场景及其高性能原因的详细说明: 一、Nginx 的核心功能 1. 静态资源服务 功能:直接返回静态文件(如 HTML、CSS、JS、图片、视频等)。配置示例:server {listen 80…...
Spring Boot中使用Flyway进行数据库迁移
文章目录 概要Spring Boot 集成 FlywayFlyway 其他用法bug错误Flyway版本不兼容数据库存在表了Flyway 的校验和(Checksum)不匹配 概要 在 Spring Boot 项目开发中,数据库的变更不可避免。手动执行 SQL 脚本不仅容易出错,也难以维…...
CAS单点登录(第7版)9.属性
如有疑问,请看视频:CAS单点登录(第7版) 属性 属性定义 概述 属性定义 从身份验证或属性存储库源获取和解析 CAS 中属性的定义时,往往使用其名称进行定义和引用,而无需任何其他元数据或修饰。例如&#…...
137,【4】 buuctf web [SCTF2019]Flag Shop
进入靶场 都点击看看 发现点击work会增加¥ 但肯定不能一直点下去 抓包看看 这看起来是一个 JWT(JSON Web Token)字符串。JWT 通常由三部分组成,通过点(.)分隔,分别是头部(Header&…...
P9853 [入门赛 #17] 方程求解
P9853 [入门赛 #17] 方程求解 - 洛谷 题目描述 小A有n个关于x的方程,第i个方程形如aixibici。方程的解x均为正整数,例如下面几个方程都是符合要求的方程: 2x 4 10 -3x 13 10 4x - 8 16 其中,第一组方程的解为x1…...
【网络安全 | 漏洞挖掘】跨子域账户合并导致的账户劫持与删除
未经许可,不得转载。 文章目录 概述正文漏洞成因概述 在对目标系统进行安全测试时,发现其运行着两个独立的域名——一个用于司机用户,一个用于开发者/企业用户。表面上看,这两个域名各自独立管理账户,但测试表明它们在处理电子邮件变更时存在严重的逻辑漏洞。该漏洞允许攻…...
spring集成activiti流程引擎(源码)
前言 activiti工作流引擎项目,企业erp、oa、hr、crm等企事业办公系统轻松落地,请假审批demo从流程绘制到审批结束实例。 源码获取:本文末个人名片直接获取。 一、项目形式 springbootvueactiviti集成了activiti在线编辑器,流行…...
ROS基本功能
1.Topic话题与Message消息(主要通讯方式) 基本规则 发布消息的步骤 常用工具 话题的订阅 使用launch启动多个节点...
C++基础系列【13】类的成员初始化
博主介绍:程序喵大人 35- 资深C/C/Rust/Android/iOS客户端开发10年大厂工作经验嵌入式/人工智能/自动驾驶/音视频/游戏开发入门级选手《C20高级编程》《C23高级编程》等多本书籍著译者更多原创精品文章,首发gzh,见文末👇…...
Python代码实现原理深度解析:从基础语法到高级特性
Python代码实现原理深度解析:从基础语法到高级特性 【免费下载链接】code ActiveState Code Recipes 项目地址: https://gitcode.com/gh_mirrors/code1/code 一、Python代码执行的基本流程 Python作为一门解释型语言,其代码实现原理主要围绕解释…...
为Claude Code配置Taotoken密钥与聚合地址避免封号困扰
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为Claude Code配置Taotoken密钥与聚合地址避免封号困扰 如果你正在使用Claude Code作为编程助手,可能会遇到官方渠道的…...
【AIAgent框架终极选型指南】:奇点智能大会一线实测对比,5大框架性能、扩展性、落地成本全维度拆解(2024最新权威报告)
更多请点击: https://intelliparadigm.com 第一章:AIAgent框架对比:奇点智能大会专题 在2024年奇点智能大会上,主流AI Agent框架的工程化能力成为焦点议题。LlamaIndex、LangChain、Semantic Kernel 与 AutoGen 四大框架被深度剖…...
Agency框架实战:构建自主协作的多智能体AI系统
1. 项目概述:当AI学会“自主思考”与“团队协作”最近在AI应用开发圈里,一个名为“neurocult/agency”的开源项目热度持续攀升。简单来说,它不是一个单一的AI模型,而是一个智能体(Agent)编排与协作框架。你…...
从执行者到规划者:测试经理必须经历的5次思维升级
从“做事”到“谋局”的跨越在软件测试行业,许多测试经理都是从一线测试工程师成长而来。他们凭借扎实的测试技术、严谨的工作态度,在执行层面交出了亮眼的答卷。然而,当角色转变为测试经理后,管理半径扩大、责任维度多元…...
为什么92%的PR团队在2026 AI大会媒体申报中首轮被拒?——解密评审委员会内部打分表(含权重分配与否决红线)
更多请点击: https://intelliparadigm.com 第一章:2026 AI技术大会媒体合作全景图谱 2026 AI技术大会已正式启动全球媒体合作生态共建计划,覆盖技术媒体、垂直产业平台、学术传播渠道及新兴AIGC内容分发网络四大支柱。本次合作不再局限于传统…...
开源免费的WPS AI 软件 察元AI文档助手:链路 038:runChunkedPlainDocumentExecution 多块 chatCompletion
链路 038:runChunkedPlainDocumentExecution 多块 chatCompletion 总体链路图 下图在全系列各篇保持一致,仅通过高亮样式标示本篇所覆盖的环节;箭头表示主成功路径,点线为异常或可选路径。阅读任意一篇时都应能回到本图定位&…...
并发编程之并发容器原理分析
一、JUC包下的并发容器 Java的集合容器框架中,主要有四大类别:List、Set、Queue、Map,这些集合类ArrayList、LinkedList、HashMap这些容器都是非线程安全的。 所以,Java先提供了同步容器供用户使用。同步容器可以简单地理解为通…...
如何第一次使用嘎嘎降AI:零基础注册充值上传下载全流程免费图文教程
如何第一次使用嘎嘎降AI:零基础注册充值上传下载全流程免费图文教程 帮三个不同学校的同学处理过论文降AI问题,每次情况不完全一样,但流程基本是固定的。 主推工具:嘎嘎降AI(www.aigcleaner.com)…...
如何用NVIDIA Profile Inspector解锁显卡隐藏性能:5分钟快速上手指南
如何用NVIDIA Profile Inspector解锁显卡隐藏性能:5分钟快速上手指南 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 还在为游戏卡顿、画面撕裂而烦恼吗?NVIDIA Profile Inspect…...
