如何做网站逻辑结构图/企业seo排名优化

如何做网站逻辑结构图,企业seo排名优化,wordpress 介绍插件,德阳网站建设网站PostgreSQL10 逻辑复制实战:打造高可用数据同步架构! 概述 PostgreSQL 10 引入了逻辑复制(Logical Replication),为数据库高可用和数据同步提供了更灵活的选择。PostgreSQL 复制机制主要分为物理复制和逻辑复制两种&…

PostgreSQL10 逻辑复制实战:打造高可用数据同步架构!

概述

PostgreSQL 10 引入了逻辑复制(Logical Replication),为数据库高可用和数据同步提供了更灵活的选择。PostgreSQL 复制机制主要分为物理复制和逻辑复制两种:物理复制(又称流复制/物理块复制)在实例级别同步数据,而逻辑复制则支持更精细的复制粒度。逻辑复制通过逻辑解码插件解析 WAL 日志,提取 DML 语句并在订阅端执行,从而实现表级别的数据同步,适用于分库分表、实时数据同步、异构数据同步等高可用场景。

具备特性

逻辑复制过程中使用限制:

1. 不支持复制DDL。
2. 不支持复制序列、索引。
3. 不支持双向复制。
4. 发布节点和订阅节点表的模式名、表名必须一致,订阅节点允许表有额外字段。

逻辑复制与物理复制区别:

1. 物理复制不能垮操作系统(Linux-Windows),而逻辑复制可以。
2. 无法在不同的PG版本之间进行物理复制(例如10-12),逻辑复制可以支持。因此PostgreSQL大版本升级可以使用逻辑复制。
3. 物理复制是实例级别的复制,而逻辑复制可以基于对象级别(具体到某个表)。
4. 物理复制备库只能读,逻辑复制的备库可以写入。

应用场景

可基于表级别复制,是一种粒度可细的复制,主要用在以下场景

1. 满足业务上需求,实现某些指定表数据同步。
2. PostgreSQL 跨版本数据同步。
3. PostgreSQL 大版本升级。

具体流程

逻辑复制的流程图

在这里插入图片描述

PostgreSQL数据库逻辑复制使用发布者/订阅者模型,使用订阅复制槽技术,可并行的传输WAL日志,通过在订阅端回放WAL日志中的逻辑条目,保持复制表的数据同步,订阅端通过逻辑解码对数据进行REDO。

PUBLICATION对象

CREATE PUBLICATION 名称
[ FOR TABLE [ ONLY ] 表名 [ * ] [, ...]
| FOR ALL TABLES ]
[ WITH ( publication_parameter [= 值] [, ... ] ) ]

参数说明

FOR TABLE:表示要复制的表,可以通过’,’定义多个表。
FOR ALL TABLES:表示数据库的所有表都要复制。
WITH:表的DML操作行为,忽略表示全部DML操作。

一个PUBLICATION对象可以注册一个或多个表,也可以选择DML操作进行复制,一个表同时也可以被多个PUBLICATION注册。

SUBSCRIPTION对象

CREATE SUBSCRIPTION subscription_name
CONNECTION 'conninfo'
PUBLICATION publication_name [, ...]
[ WITH ( subscription_parameter [= 值] [, ... ] ) ]

参数说明

CONNECTION:连接master节点的字符串信息。eg. 'host=ip port=5432 user=xxx dbname=xxx'
PUBLICATION:对应发布端的PUBLICATION对象
WITH:表示DML操作,忽略表示全部DML操作

SUBSCRIPTION对象是逻辑复制过程汇总,由订阅节点创建的对象,用于连接发布节点的PUBLICATION对象。

逻辑解码

逻辑解码是使用一个输出插件将 Postgres 的预写日志 (WAL) 转换为可读格式。逻辑解码过程如图:

在这里插入图片描述

当 Postgres 数据库表中的一行发生更改时,该更改会记录在 WAL 中。如果启用了逻辑解码,则该更改的记录将传递给输出插件。输出插件将记录从 WAL 格式更改为插件的格式(例如 JSON 对象)。然后重新格式化的更改通过复制槽退出 Postgres。最后是消费者。消费者是您选择的任何连接到 Postgres 并接收逻辑解码输出的应用程序。

pgout插件解码wal后效果:

testdb=# select * from pg_logical_slot_get_changes('test', pg_current_wal_lsn(), 10); lsn     |  xid   |                                                 data                                                 
------------+--------+------------------------------------------------------------------------------------------------------0/3DAE5178 | 377183 | BEGIN 3771830/3DAE5178 | 377183 | table public.users: UPDATE: id[character varying]:'4' name[character varying]:'anna' age[integer]:210/3DAE5348 | 377183 | COMMIT 3771830/3DAE65F0 | 377184 | BEGIN 3771840/3DAE65F0 | 377184 | table public.users: INSERT: id[character varying]:'5' name[character varying]:'5' age[integer]:550/3DAE6728 | 377184 | COMMIT 377184
(6 rows)

wal2json 插件可解码为json格式。

https://docs.microsoft.com/zh-cn/azure/postgresql/concepts-logical

使用示例

测试构建PostgreSQL10的逻辑复制环境。

角色数据库操作系统版本和数据库版本复制用户
发布节点:172.168.98.107testdbCentos 7/ PostgreSQL 10replication
订阅节点:172.168.98.115testdbCentos 7/ PostgreSQL 10replication

1、首先需要在发布角色节点设置 postgresql.conf 相关参数。

wal_level = logical

2、配置主和复制节点的pg_hba.conf文件配置replication用户连接不受限

host replication all 0.0.0.0/0 trust

3、主库和复制库上都创建replication角色并具有复制权限

[root@localhost ~]# su postgres
bash-4.2$ psql
postgres=# CREATE ROLE replication WITH replication PASSWORD '123456' LOGIN;

4、主库和复制库上都创建测试库和测试表

postgres=# CREATE USER testdb WITH ENCRYPTED PASSWORD 'testdb!123';
postgres=# CREATE DATABASE testdb OWNER testdb;

执行\c命令切换至testdb数据库

postgres=# \c testdb testdb
You are now connected to database "testdb" as user "testdb".
testdb=>

继续执行创建测试表

CREATE TABLE users (id varchar(10) NOT NULL,name varchar(35) NOT NULL,age integer
) ;
ALTER TABLE public.users ADD CONSTRAINT users_id_pkey PRIMARY KEY ("id");

主库插入测试数据

INSERT INTO public.users (id, name, age) VALUES ('1', 'zhangsan', 20);
INSERT INTO public.users (id, name, age) VALUES ('2', 'lisi', 30);
INSERT INTO public.users (id, name, age) VALUES ('3', 'wangwu', 21);

5、主库和复制库上都给replication用户授权数据库权限

testdb=> GRANT SELECT ON ALL tables IN SCHEMA PUBLIC TO replication;

6、在主库上创建发布并指定users表

testdb=> CREATE PUBLICATION testpub FOR TABLE users;
CREATE PUBLICATION
testdb=> \dRpList of publicationsName   | Owner  | All tables | Inserts | Updates | Deletes 
---------+--------+------------+---------+---------+---------testpub | testdb | f          | t       | t       | t
(1 row)testdb=>

7、在复制库上创建订阅

创建订阅,指定连接到主库上的发布。使用superuser来创建订阅,通过命令\c切换至postgres用户。

testdb=> \c testdb postgres
You are now connected to database "testdb" as user "postgres".
testdb=# CREATE SUBSCRIPTION testsub CONNECTION 'host=172.168.98.107 port=5432 dbname=testdb user=replication password=123456' PUBLICATION testpub;
NOTICE:  created replication slot "testsub" on publisher
CREATE SUBSCRIPTION

创建订阅时可指定已经存在的slot

CREATE SUBSCRIPTION testsub CONNECTION 'host=172.168.98.107 port=5432 dbname=testdb user=replication password=123456' PUBLICATION testpub WITH (slot_name=test, create_slot=false);

复制库上面查看订阅情况

testdb=# \dRsList of subscriptionsName   |  Owner   | Enabled | Publication 
---------+----------+---------+-------------testsub | postgres | t       | {testpub}
(1 row)

创建成功之后数据会自动复制过来。

testdb=# SELECT * FROM users;id |   name   | age 
----+----------+-----1  | zhangsan |  202  | lisi     |  303  | wangwu   |  21(3 rows)

8、测试增删改

-- 主库插入记录
testdb=> INSERT INTO users VALUES('4','anna', 17);
INSERT 0 1-- 从库查询,记录'anna'已插入。
testdb=> select * from users;id |   name   | age 
----+----------+-----1  | zhangsan |  202  | lisi     |  303  | wangwu   |  214  | anna     |  17
(4 rows)-- 主库修改'anna'
testdb=> update users set age=18 where id='4';
-- 从库查询'anna'age已经同步修改...-- 主库删除'anna'
testdb=> delete from users where id='4';
-- 从库查询'anna'这行数据同步删除...

常用命令

查看当前数据库已有发布

SELECT * FROM pg_publication;

查看当前数据库已有订阅

SELECT * FROM pg_subscription;

删除发布

DROP PUBLICATION testpub;

删除订阅

DROP SUBSCRIPTION testsub;

禁用订阅

ALTER SUBSCRIPTION testsub disable;

启动订阅

ALTER SUBSCRIPTION testsub enable;

如果逻辑复制操作中一张表缺少主键,就需要执行这条语句,代表使用整行作为标识

ALTER TABLE table REPLICA IDENTITY FULL;

解除复制槽与订阅的关联

ALTER SUBSCRIPTION testsub disable;
ALTER SUBSCRIPTION testsub SET (slot_name = NONE);
DROP SUBSCRIPTION testsub;

显示当前服务的所有复制连接(发布端执行)

SELECT * FROM pg_stat_replication;

显示订阅者的状态信息

SELECT * FROM pg_stat_subscription;

显示所有复制槽(发布端执行)

SELECT * FROM pg_replication_slots;

创建复制槽

select pg_create_logical_replication_slot('test','test_decoding');

创建复制槽

SELECT pg_create_logical_replication_slot('sub_iuser', 'pgoutput');

在这个示例中:

  • ‘sub_iuser’ 是要创建的复制槽的名称。
  • ‘pgoutput’ 是指定的输出插件名称,它用于将逻辑复制的 WAL 记录转换为适合于逻辑复制的格式。

执行上述 SQL 命令后,将创建名为 sub_iuser 的逻辑复制槽。

请确保在创建复制槽之前,已经启用了逻辑复制,并且已经将逻辑复制参数配置为允许创建复制槽。

删除复制槽

SELECT * FROM pg_drop_replication_slot('test');

脚本实践

使用脚本发布订阅相关数据库和相关表

逻辑复制发布脚本

#!/bin/sh# DB密码
PASSWORD=PG_PWD
# 查询所有数据库
database_name_result=$(PGPASSWORD=$PASSWORD psql -h 127.0.0.1 -p 5432 -U iuser -t -c "
SELECT d.datname AS database_name FROM pg_database d JOIN pg_user u ON d.datdba = u.usesysid WHERE u.usename = 'iuser';")
if [ -z "$database_name_result" ]; then# 查询结果为空exit 1
fiwhile IFS= read -r database_name; dodatabase_name=$(echo "$database_name" | sed 's/ //g')# 删除可能存在的发布、订阅关系PGPASSWORD=$PASSWORD psql -h 127.0.0.1 -p 5432 -U iuser -t -c "DROP PUBLICATION IF EXISTS pub_$database_name;"PGPASSWORD=$PASSWORD psql -h 127.0.0.1 -p 5432 -U iuser -t -c "DROP SUBSCRIPTION IF EXISTS sub_$database_name;"# 重新创建发布关系table_names=""# 主备需要排除表(例如排除日志表)table_names=$(PGPASSWORD=$PASSWORD psql -h 127.0.0.1 -p 5432 -U iuser -t -c "SELECT string_agg(table_name, ',') AS table_namesFROM information_schema.tablesWHERE table_schema = 'public'AND table_type = 'BASE TABLE'AND table_name NOT LIKE 't_log%'AND table_name != 't_xxx';")# 获取要发布的表清单信息PGPASSWORD=$PASSWORD psql -h 127.0.0.1 -p 5432 -U iuser -t -c "CREATE PUBLICATION pub_$database_name FOR TABLE $table_names;"PGPASSWORD=$PASSWORD psql -h 127.0.0.1 -p 5432 -U iuser -t -c "SELECT * FROM pg_publication;"echo "PUBLICATION $database_name done."
echo "PUBLICATION done."

逻辑复制订阅脚本

注意:需要传参主库服务器ip和主库数据库密码。

#!/bin/sh
# 主机
MASTER_HOST=$1
# 主机数据库密码
MASTER_PASSWORD=$2
# 当前备机旧密码
PASSWORD=PG_PWD
# 查询iuser用户下的所有数据库
database_name_result=$(PGPASSWORD=$PASSWORD psql -h 127.0.0.1 -p 5432 -U iuser -t -c "
SELECT d.datname AS database_name FROM pg_database d JOIN pg_user u ON d.datdba = u.usesysid WHERE u.usename = 'iuser';")
if [ -z "$database_name_result" ]; then
# 查询结果为空exit 1
fi
# 遍历每个数据库
while IFS= read -r database_name; dodatabase_name=$(echo "$database_name" | sed 's/ //g')# 删除存在的发布、订阅关系PGPASSWORD=$PASSWORD psql -h 127.0.0.1 -p 5432 -U iuser -t -c "DROP PUBLICATION IF EXISTS pub_$database_name;"PGPASSWORD=$PASSWORD psql -h 127.0.0.1 -p 5432 -U iuser -t -c "DROP SUBSCRIPTION IF EXISTS sub_$database_name;"# 尝试连接数据库echo "尝试连接主机数据库[$database_name]..."PGPASSWORD=$MASTER_PASSWORD psql -h $MASTER_HOST -p 5432 -U iuser -d $database_name -c "SELECT 1;"if [ $? -eq 0 ]; thenecho "主机数据库连接[$database_name]成功..."elseecho "主机数据库连接[$database_name]失败..."continuefi# 清空表数据# 主备需要排除表(例如排除日志表)table_name_result=$(PGPASSWORD=$PASSWORD psql -h 127.0.0.1 -p 5432 -U iuser -t -c "SELECT table_nameFROM information_schema.tablesWHERE table_schema = 'public'AND table_type = 'BASE TABLE'AND table_name NOT LIKE 't_log%'AND table_name != 't_xxx';")while IFS= read -r table_name; doecho "Processing table: $table_name"# 清空表数据PGPASSWORD=$PASSWORD psql -h 127.0.0.1 -p 5432 -U iuser -t -c "TRUNCATE TABLE $table_name;"# 重新创建订阅关系PGPASSWORD=$PASSWORD psql -h 127.0.0.1 -p 5432 -U iuser -t -c "CREATE SUBSCRIPTION sub_$database_nameCONNECTION 'host=$MASTER_HOST port=5432 user=iuser password=$MASTER_PASSWORD dbname=$database_name'PUBLICATION pub_$database_name;"# 查询订阅情况echo "SELECT SUBSCRIPTION"PGPASSWORD=$PASSWORD psql -h 127.0.0.1 -p 5432 -U iuser -t -c "SELECT * FROM pg_subscription;"echo "SUBSCRIPTION $database_name done."
done <<< "$database_name_result"
echo "SUBSCRIPTION done."

逻辑复制停止脚本

#!/bin/sh
# 本机密码
PASSWORD=PG_PWD
# 查询iuser用户下的所有数据库
database_name_result=$(PGPASSWORD=$PASSWORD psql -h 127.0.0.1 -p 5432 -U iuser -t -c "
SELECT d.datname AS database_name FROM pg_database d JOIN pg_user u ON d.datdba = u.usesysid WHERE u.usename = 'iuser';")
# 检查查询结果是否为空
if [ -z "$database_name_result" ]; then# 查询结果为空exit 1
fi
# 遍历每个数据库
while IFS= read -r database_name; dodatabase_name=$(echo "$database_name" | sed 's/ //g')echo "DROP PUBLICATION&SUBSCRIPTION"# 删除之前可能存在的发布、订阅关系PGPASSWORD=$PASSWORD psql -h 127.0.0.1 -p 5432 -U iuser -t -c "DROP PUBLICATION IF EXISTS pub_$database_name;"PGPASSWORD=$PASSWORD psql -h 127.0.0.1 -p 5432 -U iuser -t -c "DROP SUBSCRIPTION IF EXISTS sub_$database_name;"echo "DROP $database_name PUBLICATION&SUBSCRIPTION done."
done <<< "$database_name_result"
echo "PUBLICATION done."

延迟测试

100w测试

delete from users;
insert into users select generate_series(1,1000000), 'anna', 18;
delete from users;
> Affected rows: 1000000
> 时间: 2.024s

删除100w行需要时间2s,观测延迟

select * from users limit 1;  
\watch 1  开始时间
2022年02月18日 星期五 18时18分03秒 (每 1s)id | name | age 
----+------+-----1  | anna |  18
(1 行记录)
结束时间  
2022年02月18日 星期五 18时18分25秒 (每 1s)id | name | age 
----+------+-----
(0 行记录)

延迟20s左右

10w测试

insert into users select generate_series(1,100000), 'anna', 18;
delete from users;
> Affected rows: 100000
> 时间: 0.229s

删除10w行需要时间0.2s,观测延迟

select * from users limit 1;  
\watch 1  开始时间
2022年02月18日 星期五 18时29分20秒 (每 1s)id | name | age 
----+------+-----1  | anna |  18
(1 行记录)结束时间  2022年02月18日 星期五 18时29分22秒 (每 1s)id | name | age 
----+------+-----
(0 行记录)

延迟2s左右,取决于一次性事务大小。

相关问题

逻辑复制配置双向复制WAL循环

-- 正向发布
CREATE TABLE t(a SERIAL, b CHAR);
create publication testpub1 FOR table t; 
-- 正向订阅
CREATE TABLE t(a SERIAL, b CHAR);
create subscription testsub1 connection 'host=172.168.98.107 port=5432 dbname=testdb user=replication' publication testpub1;
-- 反向发布
create publication testpub2 FOR table t; 
-- 反正订阅
create subscription testsub2 connection 'host=172.168.98.115 port=5432 dbname=testdb user=replication' publication testpub2;

至此已经创建了一个双向循环复制,如图所示。

在这里插入图片描述

此时我在发布端插入一条数据就会出现环绕现像。此时就会出现循环。不停的从A复制到B,再从B复制到A,直到把数据库搞崩。双向复制需要使用不同的表来实现。使用同样的表会产生WAL循环。

相关链接

1. PostgreSQL10官网文档
https://www.postgresql.org/docs/10/index.html
2. PostgreSQL10逻辑特性
https://www.postgresql.org/docs/10/logical-replication.html
3. 逻辑解码
https://docs.microsoft.com/zh-cn/azure/postgresql/concepts-logical

总结

逻辑复制是PostgreSQL10引入的重要特性,为数据库提供了更灵活的同步方式。在高可用架构中,逻辑复制可用于数据同步、灾备切换、实时分析等场景,提升数据库的可扩展性和业务连续性。合理规划依然可以打造稳定高效的高可用架构。💡 想让你的数据库更可靠?逻辑复制值得一试!🚀

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

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

相关文章

原生家庭独立的艺术:找到自我与家庭的平衡点

原生家庭独立的艺术&#xff1a;找到自我与家庭的平衡点 &#x1f331; 引言 &#x1f308; 小林刚刚和父母结束了一次激烈的电话对峙。父母坚持认为他应该回到家乡工作&#xff0c;“这样我们也能照顾你”&#xff0c;而他则努力解释自己在大城市的职业规划。挂掉电话后&…

DeepSeek 15天指导手册——从入门到精通 PDF(附下载)

DeepSeek使用教程系列--DeepSeek 15天指导手册——从入门到精通pdf下载&#xff1a; https://pan.baidu.com/s/1PrIo0Xo0h5s6Plcc_smS8w?pwd1234 提取码: 1234 或 https://pan.quark.cn/s/2e8de75027d3 《DeepSeek 15天指导手册——从入门到精通》以系统化学习路径为核心&…

【智能音频新风尚】智能音频眼镜+FPC,打造极致听觉享受!【新立电子】

智能音频眼镜&#xff0c;作为一款将时尚元素与前沿科技精妙融合的智能设备&#xff0c;这种将音频技术与眼镜形态完美结合的可穿戴设备&#xff0c;不仅解放了用户的双手&#xff0c;更为人们提供了一种全新的音频交互体验。新立电子FPC在智能音频眼镜中的应用&#xff0c;为音…

常用的 pip 命令

pip 是 Python 的包管理工具&#xff0c;可用于安装、卸载、更新和管理 Python 包。以下是一些常用的 pip 命令&#xff1a; 1. 安装包 安装最新版本的包 pip install package_namepackage_name 是你要安装的 Python 包的名称&#xff0c;例如 pip install requests 可以安装…

学习threejs,使用ShaderMaterial自定义着色器材质

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.ShaderMaterial1.1.1…

Typora的Github主题美化

[!note] Typora的Github主题进行一些自己喜欢的修改&#xff0c;主要包括&#xff1a;字体、代码块、表格样式 美化前&#xff1a; 美化后&#xff1a; 一、字体更换 之前便看上了「中文网字计划」的「朱雀仿宋」字体&#xff0c;于是一直想更换字体&#xff0c;奈何自己拖延症…

神经网络 - 激活函数(Sigmoid 型函数)

激活函数在神经元中非常重要的。为了增强网络的表示能力和学习能力&#xff0c;激活函数需要具备以下几点性质: (1) 连续并可导(允许少数点上不可导)的非线性函数。可导的激活函数可以直接利用数值优化的方法来学习网络参数. (2) 激活函数及其导函数要尽可能的简单&#xff0…

Docker容器日常维护常用命令大全

友情提示&#xff1a;本文内容由银河易创&#xff08;https://ai.eaigx.com&#xff09;AI创作平台deepseek-v3模型生成&#xff0c;文中所有命令未进行验证&#xff0c;仅供参考。请根据具体情况和需求进行适当的调整和验证。 引言 Docker作为当前最流行的容器化技术&#xf…

Pytest测试用例执行跳过的3种方式

文章目录 1.前言2.使用 pytest.mark.skip 标记无条件跳过3.使用 pytest.mark.skipif 标记根据条件跳过4. 执行pytest.skip()方法跳过测试用例 1.前言 在实际场景中&#xff0c;我们可能某条测试用例没写完&#xff0c;代码执行时会报错&#xff0c;或者是在一些条件下不让某些…

GitHub 语析 - 基于大模型的知识库与知识图谱问答平台

语析 - 基于大模型的知识库与知识图谱问答平台 GitHub 地址&#xff1a;https://github.com/xerrors/Yuxi-Know &#x1f4dd; 项目概述 语析是一个强大的问答平台&#xff0c;结合了大模型 RAG 知识库与知识图谱技术&#xff0c;基于 Llamaindex VueJS FastAPI Neo4j 构…

【Prometheus】prometheus服务发现与relabel原理解析与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

004-利用Docker安装Mysql

利用Docker安装Mysql 一、在镜像仓库找到 Mysql1.镜像仓库地址2.复制命令3.下载Mysql镜像4.查看镜像 二、创建实例并启动三、用本地工具连接数据库四、设置 Mysql 配置 一、在镜像仓库找到 Mysql 1.镜像仓库地址 https://hub.docker.com 2.复制命令 docker pull mysql:8.0…

当JMeter遇见AI:性能测试进入智能时代(附实战案例)

性能测试作为软件开发中的关键环节&#xff0c;确保系统在高负载下仍能高效运行。JMeter 是一种广泛使用的开源工具&#xff0c;用于负载测试和性能测量&#xff0c;但传统方法往往效率低下。AI 的引入&#xff0c;为性能测试带来了智能化升级。本文将探讨 JMeter 与 AI 的结合…

DeepSeek R1 + 飞书机器人实现AI智能助手

效果 TFChat项目地址 https://github.com/fish2018/TFChat 腾讯大模型知识引擎用的是DeepSeek R1&#xff0c;项目为sanic和redis实现&#xff0c;利用httpx异步处理流式响应&#xff0c;同时使用buffer来避免频繁调用飞书接口更新卡片的网络耗时。为了进一步减少网络IO消耗&…

多样化的化学结构式表示法

化学结构式是用元素符号和短线表示化合物&#xff08;或单质&#xff09;分子中原子的排列和结合方式的式子&#xff0c;它具有多方面的重要含义&#xff0c;具体如下&#xff1a; 表示原子组成及种类体现原子的连接顺序和方式反映分子的空间构型揭示化学性质和反应机理用于化…

Vmvare虚拟机使用代理

1. 宿主机配置 宿主机配置好网络&#xff0c;能访问google&#xff0c;然后开启局域网代理 记录下宿主机的真实网卡的ip地址及代理服务的端口号 例如 192.168.101.120:52209 2. 虚拟机配置 vmvare网络连接设置 虚拟机网络连接选择nat模式 终端环境变量设置 终端只需设置以下…

Claude 3.7 Sonnet深度解析:混合推理模型如何重塑AI编程能力

引言 2025年2月25日&#xff0c;人工智能领域领先企业Anthropic正式发布了新一代大语言模型Claude 3.7 Sonnet。作为全球首个混合推理AI模型&#xff0c;Claude 3.7 Sonnet在编程开发、逻辑推理以及任务处理效率等方面实现了突破性进展。本文将从核心特性、性能评测、竞品对比…

USRP6330-通用软件无线电平台

1、产品描述 USRP6330平台以XILINX XCZU15EG SOC处理器为核心&#xff0c;搭配两片ADI ADRV9026射频集成芯片&#xff0c;提供了瞬时带宽高达200MHz的8收8发射频通道。通过驯服的高精度GPSDO时钟参考方案&#xff0c;USRP可以支持高性能的MIMO通信系统&#xff0c;提供了部署大…

26.[前端开发-JavaScript基础]Day03-循环语句

一、JavaScript循环语句 1 认识循环语句 认识循环 2 while循环 while循环 while循环的练习 3 do..while循环 do..while循环 4 for循环(循环嵌套 ) for循环 for循环的练习 for循环的嵌套 5 break 、continue 循环控制 6 综合案例练习 猜数字游戏 循环的总结

一文弄懂TCP断开连接时候的四次挥手

部分内容来源&#xff1a;小林coding TCP四次挥手过程是怎样的 天下没有不散的宴席&#xff0c;对于 TCP 连接也是这样&#xff0c; TCP 断开连接是通过四次挥手方式 双方都可以主动断开连接&#xff0c;断开连接后主机中的「资源」将被释放&#xff0c;四次挥手的过程如下图…