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

LVS+Keepalived+dns高可用项目架构

一、搭建DNS服务

配置主服务器

1.修改核心配置文件

[root@DNS-master ~]# vim /etc/named.conf 

options {
        listen-on port 53 { 192.168.111.107;192.168.111.100; };
        directory       "/var/named";
};

zone "haha.com" IN {
        type master;
        file "haha.com";
        allow-transfer { 192.168.111.108; };
};
zone "111.168.192.in-addr.arpa" IN {
        type master;
        file "haha.fanxiang";
        allow-transfer { 192.168.111.108; };
};
 

2.编写正向区域数据文件

[root@DNS-master ~]# cat /var/named/haha.com 
$TTL   1D
@    IN    SOA    ns1.haha.com. root.haha.com (0 1H 1H 1H 2D)
        IN    NS      ns1
        IN    NS    ns2
ns1   IN    A    192.168.111.107
ns2    IN    A    192.168.111.108
www  IN    A    192.168.111.200
txt      IN    TXT     "AaBbCcDdEeFf"
 

3.编写反向区域数据文件

[root@DNS-master ~]# cat /var/named/haha.fanxiang 
$TTL    1D
@    IN    SOA    ns1.haha.com.    root.haha.com. (0 1H 1H 1H 2D)
        IN    NS    ns1
         IN    NS    ns2
ns1   IN    A    192.168.111.107
ns2   IN    A    192.168.111.108
200   IN    PTR    www.haha.com.
txt     IN    TXT    "AaBbCcDdEeFf"
 

4.功能测试

[root@DNS-master ~]# dig -t A www.haha.com @192.168.111.107

; <<>> DiG 9.16.23-RH <<>> -t A www.haha.com @192.168.111.107
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13434
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 89b0d8539659c6b70100000067fa382166d0738782ee7997 (good)
;; QUESTION SECTION:
;www.haha.com.            IN    A

;; ANSWER SECTION:
www.haha.com.        86400    IN    A    192.168.111.200

;; Query time: 2 msec
;; SERVER: 192.168.111.107#53(192.168.111.107)
;; WHEN: Sat Apr 12 17:53:37 CST 2025
;; MSG SIZE  rcvd: 85

配置从服务器

1.修改核心配置文件

[root@DNS-slave ~]# cat /etc/named.conf 
options {
    listen-on port 53 { 192.168.111.108;192.168.111.100; };
    directory     "/var/named";
};
zone "haha.com" IN {
    type slave;
    file "slaves/haha.com";
    masters { 192.168.111.107; };
    allow-transfer { none; };
};

zone  "111.168.192.in-addr.arpa" IN {
    type slave;
    file "slaves/haha.fanxiang";
    masters { 192.168.111.107; };
    allow-transfer { none; };
};
 

2.功能测试

[root@DNS-slave ~]# systemctl restart named

[root@DNS-slave ~]# dig -t A www.haha.com @192.168.111.108

; <<>> DiG 9.16.23-RH <<>> -t A www.haha.com @192.168.111.108
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53862
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 98940855eb1f6e400100000067fa385dd1f147c06a630f38 (good)
;; QUESTION SECTION:
;www.haha.com.            IN    A

;; ANSWER SECTION:
www.haha.com.        86400    IN    A    192.168.111.200

;; Query time: 1 msec
;; SERVER: 192.168.111.108#53(192.168.111.108)
;; WHEN: Sat Apr 12 17:54:37 CST 2025
;; MSG SIZE  rcvd: 85

二、搭建 Web服务器

1、配置nginx

[root@web01 ~]# cat /etc/nginx/conf.d/haha.conf 
server{
    listen 80;
    server_name www.haha.com;
    root /usr/share/nginx/html;
    access_log /var/log/nginx/haha_access.log;
    error_log /var/log/nginx/haha_error.log;
}
 

2、修改DNS

[root@web01 ~]# nmcli c modify ens160 ipv4.dns 192.168.111.100
[root@web01 ~]# nmcli c up ens160 
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
 

3、编写欢迎页面

[root@web01 ~]# echo "welcome web01" > /usr/share/nginx/html/index.html

4、测试服务

[root@web01 ~]# curl 192.168.111.201
welcome web01

5、复制配置文件到web02和web03中

[root@web01 ~]# scp /etc/nginx/conf.d/haha.conf  root@192.168.111.202:/etc/nginx/conf.d/haha.conf
root@192.168.111.202's password: 
haha.conf                                                                                     100%  165   106.4KB/s   00:00    
[root@web01 ~]# scp /etc/nginx/conf.d/haha.conf  root@192.168.111.203:/etc/nginx/conf.d/haha.conf
root@192.168.111.203's password: 
haha.conf                                                                                     100%  165   101.4KB/s   00:00                              

6、修改web02和web03欢迎页面

[root@web02 ~]# echo "welcome web02" > /usr/share/nginx/html/index.html
[root@web03 ~]# echo "welcome web03" > /usr/share/nginx/html/index.html
 

7、修改web02和web03的DNS

8、启动服务并测试

[root@web02 ~]# curl 192.168.111.202
welcome web02
[root@web03 ~]# curl 192.168.111.203
welcome web03

三、搭建Keepalived+Lvs

1.安装keepalived和ipvsadm

2、配置keepalived

[root@LB-master ~]# cat /etc/keepalived/keepalived.conf 
global_defs {
   router_id LVS_MASTER
}

vrrp_instance VI_1 {
    state MASTER
    interface ens160
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.111.100
    }
}

vrrp_instance VI_2 {
    state MASTER
    interface ens160
    virtual_router_id 50
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.111.200
    }
}
virtual_server 192.168.111.100 53 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    persistence_timeout 10
    protocol UDP

    real_server 192.168.111.107 53 {
        weight 1
        MISC_CHECK {
            connect_timeout 3
          misc_path "/etc/keepalived/haha.sh -h 192.168.111.107 txt.haha.com"
        }
    }
    real_server 192.168.111.108 53 {
        weight 1
        MISC_CHECK {
            connect_timeout 3
          misc_path "/etc/keepalived/haha.sh -h 192.168.111.108 txt.haha.com"
        }
    }
}

virtual_server 192.168.111.200 80 {
    delay_loop 6
    lb_algo wrr
    lb_kind DR
    persistence_timeout 10
    protocol TCP

    real_server 192.168.111.201 80 {
        weight 3
        TCP_CHECK {
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
    real_server 192.168.111.202 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
    real_server 192.168.111.203 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
}
 

3、编写执行脚本

[root@LB-master ~]# cat /etc/keepalived/haha.sh 
#!/bin/bash
[ $# -le 2 ] && { echo "usage: $0 -h <ip>"; exit 2; }
domain=$3
while getopts "h:" OPT; do
case $OPT in
h)
host=$OPTARG
;;
*)
echo "usage: $0 -h <ip>" && exit 1
;;
esac
done
dig @${host} txt ${domain} +time=1 | grep "\<AaBbCcDdEeFf\>" >/dev/null
exit $?
[root@LB-

4、将配置文件复制到backup中并修改

[root@LB-backup ~]# cat /etc/keepalived/keepalived.conf 
global_defs {
   router_id LVS_MASTER
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens160
    virtual_router_id 51
    priority 80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.111.100
    }
}

vrrp_instance VI_2 {
    state BACKUP
    interface ens160
    virtual_router_id 50
    priority 80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.111.200
    }
}
virtual_server 192.168.111.100 53 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    persistence_timeout 10
    protocol UDP

    real_server 192.168.111.107 53 {
        weight 1
        MISC_CHECK {
            connect_timeout 3
          misc_path "/etc/keepalived/haha.sh -h 192.168.111.107 txt.haha.com"
        }
    }
    real_server 192.168.111.108 53 {
        weight 1
        MISC_CHECK {
            connect_timeout 3
          misc_path "/etc/keepalived/haha.sh -h 192.168.111.108 txt.haha.com"
        }
    }
}

virtual_server 192.168.111.200 80 {
    delay_loop 6
    lb_algo wrr
    lb_kind DR
    persistence_timeout 10
    protocol TCP

    real_server 192.168.111.201 80 {
        weight 3
        TCP_CHECK {
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
    real_server 192.168.111.202 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
    real_server 192.168.111.203 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
}
 

5、重启服务

[root@LB-master ~]# systemctl restart keepalived.service  ipvsadm.service

[root@LB-backup ~]# systemctl restart keepalived.service  ipvsadm.service 

6、查看LVS规则

[root@LB-master ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.111.200:80 wrr persistent 10
  -> 192.168.111.201:80           Route   3      0          0         
  -> 192.168.111.202:80           Route   1      0          0         
  -> 192.168.111.203:80           Route   1      0          0         
UDP  192.168.111.100:53 rr persistent 10
  -> 192.168.111.107:53           Masq    1      0          0         
  -> 192.168.111.108:53           Masq    1      0          0  

四、修改DNS

主DNS

1、增加虚拟ip

[root@DNS-master ~]# ifconfig lo:1 192.168.111.100 netmask 255.255.255.255  up

2、配置内核参数
[root@DNS-master ~]# cat /etc/sysctl.conf
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
net.ipv4.ip_forward= 1
[root@DNS-master ~]# sysctl -p
net.ipv4.ip_forward = 1

3、增加路由

[root@DNS-master ~]# route add -host 192.168.111.100  dev lo:1

从DNS

与主DNS配置一样

五、修改Web服务(三台web配置一样)

1、添加虚拟ip

[root@web01 ~]# ifconfig lo:1 192.168.111.200 netmask 255.255.255.255  up

2、配置内核参数

[root@web01 ~]# vim /etc/sysctl.conf
[root@web01 ~]# sysctl -p
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

3、增加路由

[root@web01 ~]# route add -host 192.168.111.200 dev lo:1

4.重启服务,测试功能

[root@web01 ~]# curl www.haha.com
welcome web01

六、测试V

IP地址可以轮询访问写的web界面,证明我们的服务已经写好了。

七、扩展

这个项目还可以融入tomcat、时间服务器以及NFS来搭建一个更加完整的架构!!

相关文章:

LVS+Keepalived+dns高可用项目架构

一、搭建DNS服务 配置主服务器 1.修改核心配置文件 [rootDNS-master ~]# vim /etc/named.conf options { listen-on port 53 { 192.168.111.107;192.168.111.100; }; directory "/var/named"; }; zone "haha.com" IN { ty…...

C#日志辅助类(Log4Net)实现

一、Log4Net类库安装 在解决方案中项目上右键单击,选择“管理NuGet程序包”,在浏览窗口的搜索框输入log4net进行搜索,安装搜索出的第一项,如下图。 二、辅助类实现(Log4NetHelper) using log4net.Appender; using log4net.Config; using log4net.Layout; using log4net…...

【FFmpeg从入门到精通】第二章-FFmpeg工具使用基础

1 ffmpeg常用命令 ffmpeg在做音视频编解码时非常方便&#xff0c;所以在很多场景下转码使用的是ffmpeg&#xff0c;通过 ffmpeg --help可以看到 ffmpeg 常见的命令大概分为6个部分&#xff0c;具体如下。 ffmpeg信息查询部分公共操作参数部分文件主要操作参数部分视频操作参数…...

论文阅读:2022 ACL TruthfulQA: Measuring How Models Mimic Human Falsehoods

总目录 大模型安全相关研究&#xff1a;https://blog.csdn.net/WhiffeYF/article/details/142132328 TruthfulQA: Measuring How Models Mimic Human Falsehoods https://arxiv.org/pdf/2109.07958 https://www.doubao.com/chat/3130551217163266 https://github.com/sylin…...

基于C++(MFC)实现的文件管理系统

基于 MFC 的文件管理系统 第一章 题目解读与要求分析 1 实习题目 实现一个文件系统。 2 功能要求 界面上显示树形目录结构 a&#xff09;根节点是“我的电脑” b&#xff09;“我的电脑”下有几个盘符&#xff08;C、D、E 等&#xff09;就有几个子节点&#xff0c;递归…...

selenium 实现模拟登录中的滑块验证功能

用python在做数据采集过程中&#xff0c;经常需要用到模拟登录&#xff0c;经常遇到各种图片、文字甚至短信等验证&#xff0c;如果能通过脚本的方便实现验证&#xff0c;就可以自动帮我更高效地收集数据。Selenium 是一个开源的 Web 自动化测试工具&#xff0c;最初是为网站自…...

Oracle 19c部署之数据库软件安装(二)

在完成了Oracle Linux 9的初始化配置之后&#xff0c;我们准备安装Oracle 19c数据库软件。 Oracle数据库支持两种主要的安装方式&#xff1a;图形化安装和静默安装。这两种方法各有优缺点&#xff0c;选择哪种取决于你的具体需求、环境配置以及个人偏好。 图形化安装 图形化安…...

Paramiko 使用教程

目录 简介安装 Paramiko连接到远程服务器执行远程命令文件传输示例 简介 Paramiko 是一个基于 Python 的 SSH 客户端库&#xff0c;它提供了在网络上安全传输文件和执行远程命令的功能。本教程将介绍 Paramiko 的基本用法&#xff0c;包括连接到远程服务器、执行命令、文件传输…...

从EOF到REOF:如何用旋转经验正交函数提升时空数据分析精度?

目录 1. 基本概念与原理2. 应用场景3. 与传统EOF的区别4. 技术实现5. 其他领域中的“REOF”参考资料 REOF 的输入是多个地区在不同时间的气候数据&#xff08;如温度或降雨量&#xff09;&#xff0c;它的作用是通过旋转计算找出这些数据中最主要的变化规律&#xff0c;输出则是…...

VS-Code创建Vue3项目

1 创建工程文件 创建一个做工程项目的文件夹 如&#xff1a;h5vue 2 cmd 进入文件 h5vue 3 输入如下命令 npm create vuelatest 也可以输入 npm create vitelatest 4 输入项目名称 项目名称&#xff1a;自已输入 回车 可以按键盘 a (全选) 回车&#xff1a; Playwright…...

JESD204B接收器核心实现和系统级关键细节

目录 1.通道偏移 2.弹性缓冲器的实现 3.接受延迟 4.RX端到端延迟 5.计算端到端延迟 6.实现可重复的延迟 1.通道偏移 JESD204B接收器核心已经过验证,其功能具有高达8个字节的通道到通道偏斜。 2.弹性缓冲器的实现 在JESD204B设备中,接收通道对齐弹性缓冲区是在分布式…...

NLP高频面试题(四十七)——探讨Transformer中的注意力机制:MHA、MQA与GQA

MHA、MQA和GQA基本概念与区别 1. 多头注意力(MHA) 多头注意力(Multi-Head Attention,MHA)通过多个独立的注意力头同时处理信息,每个头有各自的键(Key)、查询(Query)和值(Value)。这种机制允许模型并行关注不同的子空间上下文信息,捕捉复杂的交互关系。然而,MHA…...

k230学习笔记-疑难点(1)

1.出现boot failed with exit code 19: 需要将k230开发板的btoot0拨到ON 2.出现boot failed with exit code 13: 说明k230开发板的固件烧录已经丢失&#xff0c;需要重新烧录 *** 注意重新烧录时需要将btoot0重新拨到OFF&#xff0c;才会弹出加载固件需要的通用串行总线&…...

JavaScript性能优化实战:让你的Web应用飞起来

JavaScript性能优化实战&#xff1a;让你的Web应用飞起来 在前端开发中&#xff0c;JavaScript性能优化是提升用户体验的关键。一个性能良好的应用不仅能吸引用户&#xff0c;还能提高转化率和用户留存率。今天&#xff0c;我们就来深入探讨JavaScript性能优化的实战技巧&…...

金融数据库转型实战读后感

荣幸收到老友太保科技有限公司数智研究院首席专家林春的签名赠书。 这是国内第一本关于OceanBase数据库实际替换过程总结的的实战书。打个比方可以说是从战场上下来分享战斗经验。读后感受颇深。我在这里讲讲我的感受。 第三章中提到的应用改造如何降本。应用改造是国产化替换…...

血脂代谢通路(医学-计算机系统对照方式)

血脂代谢通路(医学-计算机系统对照方式) 整合所有类比&#xff0c;用医学-计算机系统对照的方式完整描述血脂代谢通路&#xff0c;采用分步骤的对照结构&#xff1a; 1. 食物摄入&#xff08;数据输入层&#xff09; # 医学术语: 膳食脂肪摄入 → 计算机类比: 原始数据输入 …...

git更新的bug

文章目录 1. 问题2. 分析 1. 问题 拉取了一个项目后遇到了这个问题&#xff0c; nvocation failed Server returned invalid Response. java.lang.RuntimeException: Invocation failed Server returned invalid Response. at git4idea.GitAppUtil.sendXmlRequest(GitAppUtil…...

直流电源基本原理

整流电路 在构建整流电路时&#xff0c;要选择合适参数的二极管 If是二极管能够通过电流的能力&#xff0c;也是最大整流的平均电流。 还要考虑二极管的反向截至电压。 脉动系数电压交流幅值/直流平均电压&#xff08;越小越好&#xff09; 三相整流电路优点&#xff1a; …...

Git -> git merge --no-ff 和 git merge的区别

git merge --no-ff <branch> 与 git merge <branch> 的区别 核心区别 git merge <branch>: 默认使用Fast-forward模式&#xff08;若可行&#xff09;不创建额外的合并提交记录合并后看不出曾经存在过分支 git merge --no-ff <branch>:强制创建一个…...

名胜古迹传承与保护系统(springboot+ssm+vue+mysql)含运行文档

名胜古迹传承与保护系统(springbootssmvuemysql)含运行文档 名胜古迹传承与保护系统是一个专注于文化遗产保护和管理的综合性平台。系统提供了一系列功能模块&#xff0c;包括名胜古迹管理、古迹预约管理、古迹故事管理、举报信息管理、保护措施管理、古迹讨论、管理员管理、版…...

windows资源管理器左边导航窗格增加2个项,windows10/11有效

下面文档存为.reg文件&#xff0c; Windows Registry Editor Version 5.00; 根 CLSID —— 名称、图标、固定到导航窗格 [HKEY_CURRENT_USER\Software\Classes\CLSID\{C1A3F2D2-BD2D-4D60-82C5-394F01753A5F}] "手机系统" "System.IsPinnedToNamespaceTree&quo…...

【八股文】基于源码聊聊ConcurrentHashmap的设计

版本演进 jdk 1.7中是分段锁的设计&#xff0c;将哈希表划分为多个segment&#xff0c;每个段独立加锁&#xff0c;锁粒度为段级别。 操作需两次哈希&#xff0c;第一次定位段&#xff0c;第二次定位桶内链表。这种实现方式的缺点就是段数量固定&#xff0c;扩容复杂&#xf…...

Mysql--基础知识点--93--两阶段提交

1 两阶段提交 以update语句的具体执行过程为例&#xff1a; 具体更新一条记录 UPDATE t_user SET name ‘xiaolin’ WHERE id 1;的流程如下&#xff1a; 1.执行器负责具体执行&#xff0c;会调用存储引擎的接口&#xff0c;通过主键索引树搜索获取 id 1 这一行记录&#…...

数字化招标采购系统怎么让招采协同更高效?

招标采购领域的数智化转型正在引发行业革命性变革。从传统线下模式到全流程电子化&#xff0c;再到当前数智化阶段的超时空协同&#xff0c;行业的演进路径清晰展现了技术与管理的深度融合。郑州信源信息数智化招采系统作为行业标杆&#xff0c;其创新实践为未来协同工作方式的…...

池塘计数(BFS)

题目描述 由于最近的降雨&#xff0c;光头强的田地里的各个地方都积水了&#xff0c;用 NM(1≤N≤100&#xff1b;1≤M≤100)NM(1≤N≤100&#xff1b;1≤M≤100) 的正方形的矩形表示。每个广场都有水 W 或旱地 .。光头强想知道他的田地里形成了多少池塘。池塘是指一组相邻的有…...

《Science》观点解读:AI无法创造真正的智能体(AI Agent)

无论是想要学习人工智能当做主业营收&#xff0c;还是像我一样作为开发工程师但依然要运用这个颠覆开发的时代宠儿&#xff0c;都有必要了解、学习一下人工智能。 近期发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;入行门槛低&#x…...

从零开始学A2A四:A2A 协议的安全性与多模态支持

文章目录 A2A 协议的安全性与多模态支持一、A2A 协议安全机制1. 认证机制2. 授权机制3. 数据加密 二、多模态交互支持1. 文本交互2. 音频支持3. 视频与图像处理4. 复合数据格式 三、安全与多模态最佳实践1. 安全性实践2. 多模态实践 四、与 MCP 的对比1. 安全机制对比2. 多模态…...

一种大位宽加减法器的时序优化

平台&#xff1a;vivado2018.3 芯片&#xff1a;xc7a100tfgg484-2 (active) 在FPGA中实现超高位宽加减法器&#xff08;如256&#xff09;时&#xff0c;时序收敛常成为瓶颈。由于进位链&#xff08;Carry Chain&#xff09;跨越多级逻辑单元&#xff0c;关键路径延迟会随位宽…...

【专业解读:Semantic Kernel(SK)】大语言模型与传统编程的桥梁

目录 Start:什么是Semantic Kernel&#xff1f; 一、Semantic Kernel的本质&#xff1a;AI时代的操作系统内核 1.1 重新定义LLM的应用边界 1.2 技术定位对比 二、SK框架的六大核心组件与技术实现 2.1 内核&#xff08;Kernel&#xff09;&#xff1a;智能任务调度中心 2…...

InfiniBand与RoCEv2负载均衡机制的技术梳理与优化实践

AI技术的高速迭代正驱动全球算力格局进入全新纪元。据IDC预测&#xff0c;未来五年中国智能算力规模将以超50%的年复合增长率爆发式扩张&#xff0c;数据中心全面迈入“智能算力时代”。然而&#xff0c;海量AI训练、实时推理等高并发场景对底层网络提出了更严苛的挑战——超大…...

Vue与React组件化设计对比

组件化是现代前端开发的核心思想之一&#xff0c;而Vue和React作为两大主流框架&#xff0c;在组件化设计上既有相似之处&#xff0c;也存在显著差异。本文将从语法设计、数据管理、组件通信、性能优化、生态系统等多个方向&#xff0c;结合实例详细对比两者的特点。 一、模板…...

UE中通过AAIController::MoveTo函数巡逻至目标点后没法正常更新巡逻目标点

敌人巡逻的逻辑如下&#xff1a; 敌人在游戏一开始的时候就通过moveto函数先前往首先设定的patroltarget目标&#xff0c;在距离patroltarget距离为patroradius&#xff08;200unit)之内时就可以通过checkpatroltarget函数更新新的patroltarget目标&#xff0c;随后前往新的pat…...

Python-细节知识点range函数的详解

在 Python 中&#xff0c;range 是一个内置函数&#xff0c;用于生成一个不可变的整数序列&#xff0c;通常用于控制循环次数或生成数值范围。以下是详细说明&#xff1a; 基本语法 range(stop) # 生成 [0, stop) 的整数&#xff0c;步长为1 range(start, stop) …...

git rebase的使用

我的使用 git checkout feature # 本地分支 git pull origin main --rebase # 目标分支 git pull origin feature --rebase git push origin featuregit rebase 是 Git 中用于重写提交历史的强大工具&#xff0c;可将分支的提交移动到新的基点上&#xff0c;使历史更线性。以…...

CMake Error at build/_deps/glog-src/CMakeLists.txt:1 (cmake_minimum_required):

这个错误提示意思是你当前系统上安装的 CMake 版本过低&#xff0c;不满足项目的要求。根据错误信息&#xff1a; CMake Error at build/_deps/glog-src/CMakeLists.txt:1 (cmake_minimum_required): CMake 3.22 or higher is required. You are running version 3.16.3 项目…...

MATLAB 控制系统设计与仿真 - 34

多变量系统知识回顾 - MIMO system 这一章对深入理解多变量系统以及鲁棒分析至关重要 首先&#xff0c;对于如下系统&#xff1a; 当G(s)为单输入&#xff0c;单输出系统时&#xff1a; 如果&#xff1a; 则&#xff1a; 所以 当G(s)为MIMO时&#xff0c;例如2X2时&#xff…...

【Unity】JSON数据的存取

这段代码的结构是为了实现 数据的封装和管理&#xff0c;特别是在 Unity 中保存和加载玩家数据时。以下是对代码设计的逐步解释&#xff1a; 1. PlayerCoin 类 PlayerCoin 是一个简单的数据类&#xff0c;用于表示单个玩家的硬币信息。它包含以下字段&#xff1a; count&…...

利用 Java 爬虫按关键字搜索淘宝商品

在电商领域&#xff0c;通过关键字搜索商品是常见的需求。淘宝作为国内知名的电商平台&#xff0c;提供了丰富的商品搜索功能。本文将详细介绍如何使用 Java 爬虫技术按关键字搜索淘宝商品&#xff0c;并获取搜索结果的详细信息。 一、准备工作 1. 注册淘宝开放平台账号 要使…...

【C】初阶数据结构11 -- 选择排序

本篇文章主要讲解经典排序算法 -- 选择排序 目录 1 算法思想 2 代码 3 时间复杂度与空间复杂度分析 1&#xff09; 时间复杂度 2&#xff09; 空间复杂度 1 算法思想 选择排序是一种在一段区间里面选择最小的元素和最大的元素的一种排序算法。假设这里排升序&#…...

【Semantic Kernel核心组件】Plugin:连接AI与业务逻辑的桥梁

目录 一、Plugin是什么&#xff1f;为什么它是SK的核心&#xff1f; 一、Plugin的核心机制与Python实现 1. 插件类型&#xff1a;语义函数与本地函数 语义函数&#xff08;Semantic Function&#xff09; 本地函数&#xff08;Native Function&#xff09; 2. Plugin的注…...

《基于神经网络实现手写数字分类》

《基于神经网络实现手写数字分类》 一、主要内容&#xff1a; 1、通过B站陈云霁老师的网课&#xff0c;配合书本资料&#xff0c;了解神经网络的基本组成和数学原理。 2、申请云平台搭建实验环境 3、基于5个不同的实验模块逐步理解实验操作步骤&#xff0c;并实现不同模块代码…...

车载诊断架构 --- 车载诊断概念的深度解读

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 周末洗了一个澡,换了一身衣服,出了门却不知道去哪儿,不知道去找谁,漫无目的走着,大概这就是成年人最深的孤独吧! 旧人不知我近况,新人不知我过…...

四、探索LangChain:连接语言模型与外部世界的桥梁

一、什么是 LangChain LangChain 是一个开源的软件框架,旨在帮助开发者高效构建和部署基于**大型语言模型(LLM)**的应用程序。它通过提供一系列工具、组件和接口,简化了从模型调用、提示工程到复杂应用开发的全流程,使得开发者能够快速将 LLM 集成到实际场景中。 1. 核心…...

LangChain4j中的Chat与语言模型API详解:构建高效对话系统的利器

LangChain4j中的Chat与语言模型API详解&#xff1a;构建高效对话系统的利器 引言&#xff1a;大模型时代的开发利器 在人工智能快速发展的今天&#xff0c;大型语言模型&#xff08;LLM&#xff09;已成为构建智能应用的核心组件。LangChain4j作为Java生态中领先的LLM集成框架…...

C++中const与constexpr的区别

在C中&#xff0c;const和constexpr都用于定义常量&#xff0c;但它们的用途和行为有显著区别&#xff1a; ### 1. **初始化时机** - **const**&#xff1a;表示变量是只读的&#xff0c;但其值可以在**编译时或运行时**初始化。 cpp const int a 5; // 编译…...

长亭2月公开赛Web-ssrfme

环境部署 拉取环境报错&#xff1a; 可以尝试拉取一下ubuntu:16.04&#xff0c;看是否能拉取成功 将wersion&#xff1a;"3"删掉 我拉去成功之后&#xff0c;再去拉取环境&#xff0c;成功&#xff01; 访问环境 测试ssrf 源码 <?php highlight_file(__file__…...

AI日报 - 2025年4月18日

&#x1f31f; 今日概览(60秒速览) ▎&#x1f916; AGI探讨 | 专家激辩AGI定义与实现时间点&#xff0c;Causal AI被视为关键一步&#xff0c;o3模型预测2027年实现引关注。 Causal AI强调因果关系而非模式&#xff1b;专家清单推荐不同模型适用场景&#xff1b;AGI定义及何时…...

Spring IoC 详解

在 Spring IoC& DI 详解 中对 IoC已经有了介绍&#xff0c;下面对 IoC 进行详细介绍。 IoC&#xff0c;即控制反转&#xff0c;在之前我们编写程序的时候&#xff0c;我们都是自己 new 出来一个对象&#xff0c;然后自己去管理这个对象&#xff0c;但是这有时候有些麻烦&a…...

oracle查询当前用户所有字段和表

在 Oracle 数据库中&#xff0c;可以通过查询数据字典视图来获取某个表的字段&#xff08;列&#xff09;信息。以下是常用的查询方法&#xff1a; 查询当前用户下的表字段 如果您想查看当前用户下某个表的字段信息&#xff0c;可以查询 USER_TAB_COLUMNS 视图&#xff1a; SE…...

ACL(访问控制列表)

ACL(访问控制列表&#xff09; 1、基础内容 访问控制列表ACL(Access ControlList)是由一条或多条规则组成的集合。所谓规则&#xff0c;是指描述报文匹配条件的判断语句&#xff0c;这些条件可以是报文的源地址、目的地址、端口号等。通过一系列规则来匹配报文&#xff0c;如…...